<?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>224469</bug_id>
          
          <creation_ts>2021-04-12 20:38:46 -0700</creation_ts>
          <short_desc>[GPUP] WebContent process should not create AVOutputContext instances when media in GPU Process is enabled</short_desc>
          <delta_ts>2021-04-16 15:54:27 -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>Media</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=224328</see_also>
          <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>224653</dependson>
          <blocked>224649</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Peng Liu">peng.liu6</reporter>
          <assigned_to name="Peng Liu">peng.liu6</assigned_to>
          <cc>annulen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>ramtinbeheshti</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>1749515</commentid>
    <comment_count>0</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-04-12 20:38:46 -0700</bug_when>
    <thetext>We enabled the access to CoreMedia routing service in order to fix bug 224328. Ideally, the access to the CoreMedia routing service should be disabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749516</commentid>
    <comment_count>1</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-04-12 20:39:07 -0700</bug_when>
    <thetext>&lt;rdar://76403302&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749806</commentid>
    <comment_count>2</comment_count>
      <attachid>425902</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-04-13 12:43:04 -0700</bug_when>
    <thetext>Created attachment 425902
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749821</commentid>
    <comment_count>3</comment_count>
      <attachid>425904</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-04-13 12:59:41 -0700</bug_when>
    <thetext>Created attachment 425904
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749979</commentid>
    <comment_count>4</comment_count>
      <attachid>425943</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-04-13 20:14:23 -0700</bug_when>
    <thetext>Created attachment 425943
Fix layout test failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750000</commentid>
    <comment_count>5</comment_count>
      <attachid>425950</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-04-13 21:26:09 -0700</bug_when>
    <thetext>Created attachment 425950
Rebase the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750017</commentid>
    <comment_count>6</comment_count>
      <attachid>425955</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-04-13 23:32:46 -0700</bug_when>
    <thetext>Created attachment 425955
Fix issues found in manual tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750146</commentid>
    <comment_count>7</comment_count>
      <attachid>425955</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-04-14 09:03:20 -0700</bug_when>
    <thetext>Comment on attachment 425955
Fix issues found in manual tests

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

&gt; Source/WebCore/platform/graphics/cocoa/MediaPlaybackTargetContext.h:63
&gt; +        , m_hasActiveRoute(hasActiveRoute)
&gt; +        , m_supportsRemoteVideoPlayback(supportsRemoteVideoPlayback)

There is no guarantee that this state won&apos;t change while the output context is serialized, so we shouldn&apos;t cache it. See my comment below about how to handle it.

&gt; Source/WebCore/platform/graphics/cocoa/MediaPlaybackTargetContext.mm:79
&gt; +    if (![m_outputContext supportsMultipleOutputDevices])
&gt; +        m_deviceName = [m_outputContext deviceName];
&gt; +    else {
&gt; +        auto outputDeviceNames = adoptNS([[NSMutableArray alloc] init]);
&gt; +        for (AVOutputDevice *outputDevice in [m_outputContext outputDevices])
&gt; +            [outputDeviceNames addObject:[outputDevice deviceName]];
&gt; +
&gt; +        m_deviceName = [outputDeviceNames componentsJoinedByString:@&quot; + &quot;];
&gt; +    }
&gt; +
&gt; +    if ([m_outputContext respondsToSelector:@selector(supportsMultipleOutputDevices)] &amp;&amp; [m_outputContext supportsMultipleOutputDevices] &amp;&amp; [m_outputContext respondsToSelector:@selector(outputDevices)]) {
&gt; +        for (AVOutputDevice *outputDevice in [m_outputContext outputDevices]) {
&gt; +            if (outputDevice.deviceFeatures &amp; (AVOutputDeviceFeatureVideo | AVOutputDeviceFeatureAudio))
&gt; +                m_hasActiveRoute = true;
&gt; +        }
&gt; +    } else if ([m_outputContext respondsToSelector:@selector(outputDevice)]) {
&gt; +        if (auto *outputDevice = [m_outputContext outputDevice])
&gt; +            m_hasActiveRoute = outputDevice.deviceFeatures &amp; (AVOutputDeviceFeatureVideo | AVOutputDeviceFeatureAudio);
&gt; +    } else
&gt; +        m_hasActiveRoute = m_outputContext.get().deviceName;
&gt; +
&gt; +    if (![m_outputContext respondsToSelector:@selector(supportsMultipleOutputDevices)] || ![m_outputContext supportsMultipleOutputDevices] || ![m_outputContext respondsToSelector:@selector(outputDevices)]) {
&gt; +        if (auto *outputDevice = [m_outputContext outputDevice]) {
&gt; +            if (outputDevice.deviceFeatures &amp; AVOutputDeviceFeatureVideo)
&gt; +                m_supportsRemoteVideoPlayback = true;
&gt; +        }
&gt; +    } else {
&gt; +        for (AVOutputDevice *outputDevice in [m_outputContext outputDevices]) {
&gt; +            if (outputDevice.deviceFeatures &amp; AVOutputDeviceFeatureVideo)
&gt; +                m_supportsRemoteVideoPlayback = true;
&gt; +        }
&gt; +    }

I don&apos;t think we should do this work in the constructor, as we don&apos;t know if this information will ever be accessed. I would put it in the accessor methods instead, and ASSERT if they are called on an object with a serialized context.

&gt; Source/WebCore/platform/graphics/cocoa/MediaPlaybackTargetContext.mm:112
&gt; +        ASSERT(!result || [result conformsToProtocol:@protocol(NSSecureCoding)]);

Shouldn&apos;t this fail in a release build if it would assert in a debug build?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750288</commentid>
    <comment_count>8</comment_count>
      <attachid>426035</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-04-14 12:39:27 -0700</bug_when>
    <thetext>Created attachment 426035
Fix issues on iPad</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750433</commentid>
    <comment_count>9</comment_count>
      <attachid>425955</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-04-14 18:25:08 -0700</bug_when>
    <thetext>Comment on attachment 425955
Fix issues found in manual tests

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

&gt;&gt; Source/WebCore/platform/graphics/cocoa/MediaPlaybackTargetContext.h:63
&gt;&gt; +        , m_supportsRemoteVideoPlayback(supportsRemoteVideoPlayback)
&gt; 
&gt; There is no guarantee that this state won&apos;t change while the output context is serialized, so we shouldn&apos;t cache it. See my comment below about how to handle it.

Based on an offline discussion, only caching &quot;hasActiveRoute&quot; seems a reasonable approach. Because `HTMLMediaElement::setWirelessPlaybackTarget()` will access that property of a serialized `AVOutputContext`.

&gt;&gt; Source/WebCore/platform/graphics/cocoa/MediaPlaybackTargetContext.mm:112
&gt;&gt; +        ASSERT(!result || [result conformsToProtocol:@protocol(NSSecureCoding)]);
&gt; 
&gt; Shouldn&apos;t this fail in a release build if it would assert in a debug build?

Agree. Will fix it. And actually, we need to assert that result is not nil.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750438</commentid>
    <comment_count>10</comment_count>
      <attachid>426066</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-04-14 18:44:33 -0700</bug_when>
    <thetext>Created attachment 426066
Revise the patch after a discussion with Eric</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750619</commentid>
    <comment_count>11</comment_count>
      <attachid>426066</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-04-15 08:29:11 -0700</bug_when>
    <thetext>Comment on attachment 426066
Revise the patch after a discussion with Eric

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

&gt; Source/WebCore/platform/graphics/cocoa/MediaPlaybackTargetContext.mm:41
&gt; +    if (m_outputContext)

If the context us null m_type will be ‘unknown’, which doesn’t seem right. I think we should always set m_type or assert if it isn’t valid to have a null context

&gt; Source/WebCore/platform/graphics/cocoa/MediaPlaybackTargetContext.mm:97
&gt; +    ASSERT(m_type == MediaPlaybackTargetContext::Type::AVOutputContext);

This same assertion is done above

&gt; Source/WebCore/platform/mock/MediaPlaybackTargetMock.h:46
&gt; +    bool hasActiveRoute() const final { return m_context.hasActiveRoute(); }

If we did this in the base class, the two derived classes wouldn’t have to do anything

&gt; Source/WebCore/platform/mock/MediaPlaybackTargetMock.h:47
&gt; +    String deviceName() const final { return m_context.deviceName(); }

Ditto

&gt; Source/WebCore/platform/mock/MediaPlaybackTargetMock.h:48
&gt; +    bool supportsRemoteVideoPlayback() const final { return m_context.supportsRemoteVideoPlayback(); }

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750673</commentid>
    <comment_count>12</comment_count>
      <attachid>426117</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-04-15 10:56:55 -0700</bug_when>
    <thetext>Created attachment 426117
Revise the patch based on Eric&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750705</commentid>
    <comment_count>13</comment_count>
      <attachid>426123</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-04-15 11:58:25 -0700</bug_when>
    <thetext>Created attachment 426123
Rebase the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750706</commentid>
    <comment_count>14</comment_count>
      <attachid>426066</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-04-15 12:01:54 -0700</bug_when>
    <thetext>Comment on attachment 426066
Revise the patch after a discussion with Eric

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

&gt;&gt; Source/WebCore/platform/graphics/cocoa/MediaPlaybackTargetContext.mm:41
&gt;&gt; +    if (m_outputContext)
&gt; 
&gt; If the context us null m_type will be ‘unknown’, which doesn’t seem right. I think we should always set m_type or assert if it isn’t valid to have a null context

Agree, fixed!

&gt;&gt; Source/WebCore/platform/graphics/cocoa/MediaPlaybackTargetContext.mm:97
&gt;&gt; +    ASSERT(m_type == MediaPlaybackTargetContext::Type::AVOutputContext);
&gt; 
&gt; This same assertion is done above

Fixed.

&gt;&gt; Source/WebCore/platform/mock/MediaPlaybackTargetMock.h:46
&gt;&gt; +    bool hasActiveRoute() const final { return m_context.hasActiveRoute(); }
&gt; 
&gt; If we did this in the base class, the two derived classes wouldn’t have to do anything

Good point! And these virtual methods can be removed.
Fixed this one the following ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750718</commentid>
    <comment_count>15</comment_count>
      <attachid>426123</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-04-15 12:19:23 -0700</bug_when>
    <thetext>Comment on attachment 426123
Rebase the patch

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

&gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:2470
&gt; +    encoder &lt;&lt; static_cast&lt;uint8_t&gt;(target.mockState());

The cast shouldn&apos;t be necessary.

&gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:2495
&gt; +    uint8_t mockState;
&gt;      if (!decoder.decode(mockState))
&gt;          return false;
&gt;  
&gt; -    target = MediaPlaybackTargetContext(mockDeviceName, static_cast&lt;MediaPlaybackTargetContext::State&gt;(mockState));
&gt; +    target = MediaPlaybackTargetContext(deviceName, static_cast&lt;MediaPlaybackTargetContext::MockState&gt;(mockState));

Ditto

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:9413
&gt; +    if (preferences().useGPUProcessForMediaEnabled() &amp;&amp; context.type() == MediaPlaybackTargetContext::Type::AVOutputContext &amp;&amp; !context.serializeOutputContext())
&gt; +        return;

I don&apos;t think this ever happen, can it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750734</commentid>
    <comment_count>16</comment_count>
      <attachid>426123</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-04-15 12:50:05 -0700</bug_when>
    <thetext>Comment on attachment 426123
Rebase the patch

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

&gt;&gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:2470
&gt;&gt; +    encoder &lt;&lt; static_cast&lt;uint8_t&gt;(target.mockState());
&gt; 
&gt; The cast shouldn&apos;t be necessary.

Ah, you are right! Fixed.

&gt;&gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:2495
&gt;&gt; +    target = MediaPlaybackTargetContext(deviceName, static_cast&lt;MediaPlaybackTargetContext::MockState&gt;(mockState));
&gt; 
&gt; Ditto

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:9413
&gt;&gt; +        return;
&gt; 
&gt; I don&apos;t think this ever happen, can it?

Hmm, in the current implementation of `MediaPlaybackTargetContext::serializeOutputContext()`, it won&apos;t happen because we check &quot;context.type() == MediaPlaybackTargetContext::Type::AVOutputContext&quot; before calling it. Maybe we can remove one of the two protections?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750750</commentid>
    <comment_count>17</comment_count>
      <attachid>426130</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-04-15 13:11:17 -0700</bug_when>
    <thetext>Created attachment 426130
[fast-cq] Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750751</commentid>
    <comment_count>18</comment_count>
      <attachid>426123</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-04-15 13:12:54 -0700</bug_when>
    <thetext>Comment on attachment 426123
Rebase the patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:9413
&gt;&gt;&gt; +        return;
&gt;&gt; 
&gt;&gt; I don&apos;t think this ever happen, can it?
&gt; 
&gt; Hmm, in the current implementation of `MediaPlaybackTargetContext::serializeOutputContext()`, it won&apos;t happen because we check &quot;context.type() == MediaPlaybackTargetContext::Type::AVOutputContext&quot; before calling it. Maybe we can remove one of the two protections?

Fixed by removing &quot;context.type() == MediaPlaybackTargetContext::Type::AVOutputContext&quot; here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750780</commentid>
    <comment_count>19</comment_count>
      <attachid>426123</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-04-15 14:29:14 -0700</bug_when>
    <thetext>Comment on attachment 426123
Rebase the patch

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

&gt;&gt;&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:9413
&gt;&gt;&gt;&gt; +        return;
&gt;&gt;&gt; 
&gt;&gt;&gt; I don&apos;t think this ever happen, can it?
&gt;&gt; 
&gt;&gt; Hmm, in the current implementation of `MediaPlaybackTargetContext::serializeOutputContext()`, it won&apos;t happen because we check &quot;context.type() == MediaPlaybackTargetContext::Type::AVOutputContext&quot; before calling it. Maybe we can remove one of the two protections?
&gt; 
&gt; Fixed by removing &quot;context.type() == MediaPlaybackTargetContext::Type::AVOutputContext&quot; here.

Oops, just found that we need a protection here to avoid serializing a mock context for test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750826</commentid>
    <comment_count>20</comment_count>
      <attachid>426149</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-04-15 16:02:30 -0700</bug_when>
    <thetext>Created attachment 426149
[fast-cq] Patch for landing (v2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750900</commentid>
    <comment_count>21</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-15 19:20:09 -0700</bug_when>
    <thetext>Committed r276107 (236607@main): &lt;https://commits.webkit.org/236607@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 426149.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750947</commentid>
    <comment_count>22</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-04-15 23:19:03 -0700</bug_when>
    <thetext>This breaks non-Cocoa ports.
Filed: Bug 224649 – WebCoreArgumentCoders.h: error: &apos;WebCore/MediaPlaybackTargetContext.h&apos; file not found since r276107</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750958</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-04-15 23:47:03 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 224653</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750979</commentid>
    <comment_count>24</comment_count>
      <attachid>426194</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-04-16 01:17:08 -0700</bug_when>
    <thetext>Created attachment 426194
Patch for landing (v3): fix clean build failures on some ports</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750988</commentid>
    <comment_count>25</comment_count>
      <attachid>426194</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-04-16 02:00:26 -0700</bug_when>
    <thetext>Comment on attachment 426194
Patch for landing (v3): fix clean build failures on some ports

WinCairo clean build fails. Looks like the same failure of bug #224649 comment #3.

&gt; FAILED: Source/WebKit/CMakeFiles/WebKit.dir/__/__/WebKit/DerivedSources/WebPageProxyMessageReceiver.cpp.obj
&gt; C:\PROGRA~2\MIB055~1\2019\PROFES~1\VC\Tools\MSVC\1428~1.299\bin\Hostx64\x64\cl.exe  (...) -c WebKit\DerivedSources\WebPageProxyMessageReceiver.cpp
&gt; C:\home\webkit\gb\WebKitBuild\Debug\WebKit\DerivedSources\WebPageProxyMessages.h(65): fatal error C1083: Cannot open include file: &apos;WebCore/MediaPlaybackTargetContext.h&apos;: No such file or directory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751108</commentid>
    <comment_count>26</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-04-16 09:38:40 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #25)
&gt; Comment on attachment 426194 [details]
&gt; Patch for landing (v3): fix clean build failures on some ports
&gt; 
&gt; WinCairo clean build fails. Looks like the same failure of bug #224649
&gt; comment #3.
&gt; 
&gt; &gt; FAILED: Source/WebKit/CMakeFiles/WebKit.dir/__/__/WebKit/DerivedSources/WebPageProxyMessageReceiver.cpp.obj
&gt; &gt; C:\PROGRA~2\MIB055~1\2019\PROFES~1\VC\Tools\MSVC\1428~1.299\bin\Hostx64\x64\cl.exe  (...) -c WebKit\DerivedSources\WebPageProxyMessageReceiver.cpp
&gt; &gt; C:\home\webkit\gb\WebKitBuild\Debug\WebKit\DerivedSources\WebPageProxyMessages.h(65): fatal error C1083: Cannot open include file: &apos;WebCore/MediaPlaybackTargetContext.h&apos;: No such file or directory

Thanks for your help!

Looks like we need a change like below:

--- a/Source/WebKit/Scripts/webkit/messages.py
+++ b/Source/WebKit/Scripts/webkit/messages.py
@@ -352,6 +352,7 @@ def conditions_for_header(header):
         &apos;&quot;InputMethodState.h&quot;&apos;: [&quot;PLATFORM(GTK)&quot;, &quot;PLATFORM(WPE)&quot;],
         &apos;&quot;LayerHostingContext.h&quot;&apos;: [&quot;PLATFORM(COCOA)&quot;, ],
         &apos;&quot;GestureTypes.h&quot;&apos;: [&quot;PLATFORM(IOS_FAMILY)&quot;],
+        &apos;&lt;WebCore/MediaPlaybackTargetContext.h&gt;&apos;: [&quot;ENABLE(WIRELESS_PLAYBACK_TARGET)&quot;],
     }
     if not header in conditions:
         return None</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751112</commentid>
    <comment_count>27</comment_count>
      <attachid>426242</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-04-16 09:47:10 -0700</bug_when>
    <thetext>Created attachment 426242
[fast-cq] Patch for landing (v4): fix clean build failures on the WinCairo port</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751233</commentid>
    <comment_count>28</comment_count>
      <attachid>426242</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-04-16 14:09:22 -0700</bug_when>
    <thetext>Comment on attachment 426242
[fast-cq] Patch for landing (v4): fix clean build failures on the WinCairo port

Verified that this patch works fine with a clean WinCairo build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751237</commentid>
    <comment_count>29</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-16 14:16:18 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 426242 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751241</commentid>
    <comment_count>30</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-16 14:18:22 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 426242 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751244</commentid>
    <comment_count>31</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-16 14:22:13 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 426242 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751249</commentid>
    <comment_count>32</comment_count>
      <attachid>426272</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-04-16 14:28:22 -0700</bug_when>
    <thetext>Created attachment 426272
[fast-cq] Rebase the patch again for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751302</commentid>
    <comment_count>33</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-16 15:54:24 -0700</bug_when>
    <thetext>Committed r276177 (236661@main): &lt;https://commits.webkit.org/236661@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 426272.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425902</attachid>
            <date>2021-04-13 12:43:04 -0700</date>
            <delta_ts>2021-04-13 13:02:08 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-224469-20210413124303.patch</filename>
            <type>text/plain</type>
            <size>82503</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1ODA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTM3ZTM2YWE4MmQ5YzYx
N2VkZjE5NGJkZWQzOTliMzk5N2RhNjNmYi4uMDNkYjljODdlODY3NTY2MmQ5NzNkYTI0M2ZhNzdl
NjExZDU4ZjViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDIxLTA0LTEzICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIFdlYkNvbnRlbnQg
cHJvY2VzcyBzaG91bGQgbm90IGNyZWF0ZSBBVk91dHB1dENvbnRleHQgaW5zdGFuY2VzIHdoZW4g
bWVkaWEgaW4gR1BVIFByb2Nlc3MgaXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtb2RpZmllcyBgTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHRgIHRvIHByb3ZpZGUgaW50ZXJmYWNlcyB0byBzZXJpYWxpemUvZGVzZXJp
YWxpemUKKyAgICAgICAgYEFWT3V0cHV0Q29udGV4dGAgYW5kIG1vZGlmaWVzIGBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29jb2FgIHRvIHVzZSBgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHRgIHRvCisg
ICAgICAgIG1hbmFnZSBpdHMgYEFWT3V0cHV0Q29udGV4dGAuIFdpdGggdGhlc2UgY2hhbmdlcywg
YSBXZWJDb250ZW50IHByb2Nlc3MgY2FuIGFjY2VzcyB0aGUgcHJvcGVydGllcyBvZgorICAgICAg
ICBhbiBgQVZPdXRwdXRDb250ZXh0YCBvYmplY3QgYW5kIGZvcndhcmQgaXQgdG8gb3RoZXIgcHJv
Y2VzcyAoZS5nLiwgdGhlIEdQVSBwcm9jZXNzKSB3aXRob3V0CisgICAgICAgIGRlc2VyaWFsaXpp
bmcgdGhlIGBBVk91dHB1dENvbnRleHRgIG9iamVjdC4KKworICAgICAgICAqIE1vZHVsZXMvYWly
cGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUp
OgorICAgICAgICAqIE1vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmg6CisK
KyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgTW9kaWZ5IHRoZSBwcm9qZWN0IGZpbGUgYmVjYXVz
ZSBgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHRgIGlzIHVzZWQgaW4gQ29jb2EgcG9ydHMgb25s
eS4KKworICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWVDbGllbnQ6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgorICAg
ICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRNb2NrTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXQuaDoKKyAgICAg
ICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQuaDogUmVtb3ZlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6b3V0cHV0Q29udGV4dCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJh
Y2tUYXJnZXRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b2NvYTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2Nv
YTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb2NvYTo6c3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6dGFyZ2V0Q29udGV4dCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6Omhhc0Fj
dGl2ZVJvdXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b2NvYTo6ZGV2aWNlTmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjp0b01lZGlhUGxheWJh
Y2tUYXJnZXRDb2NvYSk6CisgICAgICAgIERvbid0IGRpcmVjdGx5IHVzZSBgQVZPdXRwdXRDb250
ZXh0YCBpbiB0aGlzIGNsYXNzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmlzQ3VycmVu
dFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpz
ZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6ZGV2aWNlTmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6aGFzQWN0aXZlUm91dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OnN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjayBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6bW9ja1N0
YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpvdXRwdXRDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpzZXJpYWxpemVkT3V0cHV0Q29udGV4dCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6ZW5jb2RpbmdSZXF1aXJlc1BsYXRm
b3JtRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpzZXJpYWxpemVPdXRwdXRD
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Ojpk
ZXNlcmlhbGl6ZU91dHB1dENvbnRleHQpOgorCisgICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRp
YVBsYXliYWNrVGFyZ2V0TW9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0TW9jazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXRNb2NrOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0TW9jazo6dGFyZ2V0Q29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjp0b01lZGlhUGxheWJhY2tUYXJnZXRNb2NrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXli
YWNrVGFyZ2V0TW9jazo6c3RhdGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1vY2s6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpzdGFydGlu
Z01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlck1vY2s6OmludmFsaWRhdGVQbGF5YmFja1RhcmdldHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnNldFN0YXRlKToKKwor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaDoK
KworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgorCiAyMDIxLTA0
LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lv
bihyMjc1NjY4KSBQb3RlbnRpYWwgbnVsbCBwb2ludGVyIGRlcmVmIGluIEF1ZGlvUGFyYW06OmV4
cG9uZW50aWFsUmFtcFRvVmFsdWVBdFRpbWUoZmxvYXQsIGRvdWJsZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzBh
OWZhYjFlMzc5YTFkMGFkZmJmNzRlYmMxYmMxNGFlZGJhYWRhNS4uNTIyY2M1YjE5ZDhmZmM2MmU3
ZjcxMjUxNzViNDViZjIwMDdlODJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAyMS0w
NC0xMyAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBX
ZWJDb250ZW50IHByb2Nlc3Mgc2hvdWxkIG5vdCBjcmVhdGUgQVZPdXRwdXRDb250ZXh0IGluc3Rh
bmNlcyB3aGVuIG1lZGlhIGluIEdQVSBQcm9jZXNzIGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDQ2OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldCk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lmg6CisKKyAgICAgICAgKiBTaGFyZWQvQ29j
b2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjplbmNvZGVQbGF0Zm9y
bURhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGUpOgorICAgICAgICAq
IFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL1dl
YkNvcmVBcmd1bWVudENvZGVyc01hYy5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29kZVBsYXRmb3JtRGF0YSk6
IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOiBEZWxldGVkLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1lZGlh
UmVsYXRlZElPS2l0Q2xhc3Nlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3Jl
YXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRNb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzZXRQbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJLaXQ6OnRlbXBvcmFyeU1h
Y2hTZXJ2aWNlcyk6IERlbGV0ZWQuIFJlbW92ZSB0aGUgZml4ICh3b3JrYXJvdW5kKSBmb3IgYnVn
IDIyNDMyOC4KKyAgICAgICAgV2l0aCB0aGlzIHBhdGNoLCB0aGF0IHdvcmthcm91bmQgaXMgbm90
IG5lY2Vzc2FyeS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFjdGl2ZVZpZGVvUm91dGVEaWRD
aGFuZ2UpOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnNldE1vY2tNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxheWJhY2tUYXJnZXRTZWxlY3RlZCBj
b25zdCk6CisKIDIwMjEtMDQtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVc2UgV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiBpbnN0
ZWFkIG9mIEhhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5Kj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwppbmRleCBlNTdjY2IyYzBmYWNmOTc0NzhjMjkzODQ0ZTdiZDBjNGIwODE1NzEzLi5mYWNjY2I3
ZjQ2ZDA4MDkyOTQwYmY4M2E4Mjk0MDY5NDc1MWNmZjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEtMDQtMTMgIFBlbmcgTGl1ICA8cGVuZy5saXU2
QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gV2ViQ29udGVudCBwcm9jZXNzIHNob3VsZCBu
b3QgY3JlYXRlIEFWT3V0cHV0Q29udGV4dCBpbnN0YW5jZXMgd2hlbiBtZWRpYSBpbiBHUFUgUHJv
Y2VzcyBpcyBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjQ0NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVu
dDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmg6CisgICAgICAgICogV2ViVmlldy9X
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tOgorICAgICAgICAoV2ViTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9zZXRNb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck5hbWU6c3RhdGU6XSk6CisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3SW50ZXJuYWwuaDoKKwogMjAyMS0wNC0wMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgVXNlIEhhc2hlciBtb3JlLCByZW1vdmUgSW50ZWdlckhhc2hl
ciwgZml4IGhhc2hpbmctcmVsYXRlZCBtaXN0YWtlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCmluZGV4IDZj
NmFiMGU3YTYyZWM0ZGE0NWVkM2RiYzk0MTQ1NTE3NWNkNDRkNWEuLmQ1YjU5NWE0YWM0OWZmMGVm
ZmU2MmI0NTJlYzM0MmI3ZDM4MzA0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKQEAgLTE2MSw3ICsx
NjEsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyRW5hYmxlZChib29sIGVuYWJsZQogICAgIG1fbW9ja1BpY2tlckVuYWJsZWQg
PSBlbmFibGVkOwogfQogCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCit2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBu
YW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKQogewogICAg
IEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CiAgICAgbW9ja1BpY2tl
cigpLnNldFN0YXRlKG5hbWUsIHN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oCmluZGV4IGQ3ZjI4Y2NiNzVl
NWQ3NTVkYWY0MzM0ZWY2NTZjYjE0MTkwZmFiNTQuLjFiYTEyODRmMjMzM2M3ODQ2YWI4MGQ0ZTEx
ZGIyYmY0ZjAyMDY2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxh
eS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
aXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXImIHNoYXJl
ZCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlckVuYWJsZWQoYm9vbCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW9ja01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgYWRkUGxheWJhY2tUYXJn
ZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYsIFBsYXliYWNrVGFy
Z2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXgg
ZWNlNDZjZmE0MTE5ODM0NTE3OGE1ZDI3Zjc3MjdkYjkwNzM1OGNjOS4uMWFiN2YyMDQ4NTRmODFl
MTQ3OTUwMDM2YzNjNWZjNWU2MDNhYTQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0z
NjksNiArMzY5LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2VQb29sQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFF
bmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTc3MGIwODQwMjI5MjQwMjgwNWE2Mzcx
NzRkMzY5ZTZjZDM1NDE3MC4uZGZlNTU0NDdlYzdhNTI3NzE2YTI3MDA1MDZjNmQ4NmYxZTRiYWM2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNjQ0LDggKzY0NCw4IEBACiAJCTFDQUY1NkRCMjUzMDFBQzgwMDE3QjQ3MiAvKiBE
aXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjU2RDgyNTMwMTQ1NzAwMTdCNDcyIC8qIERpc3BsYXlM
aXN0RHJhd0dseXBoc1JlY29yZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMUNDRDgxNTAyMjMxRjgzRTAwNjVGQzJCIC8qIFdlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTI1NTE0MTZGRDIzNEYwMDNEN0FEQiAvKiBX
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gKi87IH07CiAJ
CTFDQ0RGNUJFMTk5MDMzMjQwMEJDRUJBRCAvKiBTVkdUb09URkZvbnRDb252ZXJzaW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0NERjVCQzE5OTAz
MzI0MDBCQ0VCQUQgLyogU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oICovOyB9OwotCQkxQ0U4RDEy
NzI2MTg1QzBFMDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNFOEQxMjUyNjE4
NUJEODAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQ0U4ODY0MTI2MTA1
QkYyMDAwQzgxNkMgLyogSW5NZW1vcnlEaXNwbGF5TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNFODg2M0YyNjEwNUE1RjAwMEM4MTZDIC8qIElu
TWVtb3J5RGlzcGxheUxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkxQ0U4RDEyNzI2MTg1QzBFMDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVt
QnVmZmVySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUNFOEQxMjUyNjE4NUJEODAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZl
cklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkxQ0ZBRTMyMzBBNkQ2QTNGMDAzMjU5M0QgLyogbGlib2JqYy5keWxpYiBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRkFFMzIyMEE2RDZB
M0YwMDMyNTkzRCAvKiBsaWJvYmpjLmR5bGliICovOyB9OwogCQkxRDAwMjZBNDIzNzRENjI0MDBD
QTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRDAwMjZBMjIzNzRENjIzMDBDQTZDREYgLyogSlNQ
aWN0dXJlSW5QaWN0dXJlV2luZG93LmggKi87IH07CiAJCTFEMDAyNkFBMjM3NEY5RUEwMENBNkNE
RiAvKiBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRDAwMjZBODIzNzRGOUQ5MDBDQTZDREYgLyogSlNF
bnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5oICovOyB9OwpAQCAtNjk0OSw5ICs2OTQ5LDkgQEAK
IAkJMUNERDQ1RTQwQkE5Qzg0NjAwRjkwMTQ3IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDREQ0NUU1MEJBOUM4NDYwMEY5MDE0NyAvKiBXZWJD
b3JlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFdlYkNvcmUueGNj
b25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDREQ0NUU2MEJBOUM4NDYwMEY5
MDE0NyAvKiBCYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJh
c2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRThEMTI1MjYxODVC
RDgwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUNFODg2M0UyNjEwNUE1RjAwMEM4MTZDIC8qIEluTWVtb3J5RGlzcGxh
eUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRTg4NjNGMjYxMDVBNUYwMDBDODE2QyAvKiBJ
bk1lbW9yeURpc3BsYXlMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluTWVtb3J5RGlzcGxheUxpc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNFOEQxMjUyNjE4NUJEODAwRkMzQUVG
IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlz
cGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQ0VDQjNBODIxRjJCNjczMDBGNDQ1NDIgLyogV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNo
ZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFQ0IzQTkyMUYyQjY3MzAwRjQ0NTQyIC8q
IFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdI
TFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUNFQ0IzQUYyMUYyQjk4NDAwRjQ0NTQyIC8qIFdITFNMRnVuY3Rpb25Xcml0ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xGdW5jdGlvbldyaXRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC02OTcyLDYgKzY5NzIsNyBAQAogCQkxRDAwMjZBMzIzNzRENjI0
MDBDQTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGljdHVyZUluUGljdHVyZVdpbmRvdy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEMDAyNkE4MjM3NEY5RDkwMENBNkNERiAvKiBKU0Vu
dGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUQwMDI2QTkyMzc0RjlEOTAwQ0E2Q0RGIC8qIEpTRW50ZXJQaWN0dXJlSW5QaWN0
dXJlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFbnRl
clBpY3R1cmVJblBpY3R1cmVFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFEMDA4QUE1MjYyMTA4QzAwMEVFM0FERSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDJDODJCNjIzNkEzRjZBMDA1NUQ2QzUgLyog
UGljdHVyZUluUGljdHVyZVN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGljdHVyZUluUGljdHVy
ZVN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUQ0NzY1OEQyNUNDQTc3
ODAwN0FGMzEyIC8qIEltYWdlRGVjb2RlcklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1h
Z2VEZWNvZGVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxREFC
MzExMzI1MUQ3MjVDMDBGQzk0ODUgLyogVmlkZW9MYXllck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVmlkZW9MYXllck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2
OTQ3LDcgKzI2OTQ4LDYgQEAKIAkJCQlDRERFMDJFOTE4QjNERkM3MDBDRjdGRjEgLyogTGVnYWN5
Q0RNU2Vzc2lvbi5oICovLAogCQkJCTA3RTNERkQwMUE5RTc4NjUwMDc2NENBOCAvKiBNZWRpYVBs
YXliYWNrVGFyZ2V0LmggKi8sCiAJCQkJMDc5MjE2NTMxQUE1NjBBQTAwQTNDMDQ5IC8qIE1lZGlh
UGxheWJhY2tUYXJnZXRDbGllbnQuaCAqLywKLQkJCQkwN0Y4NzY4MzFBRDRBOTQ1MDA5MDU4NDkg
LyogTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaCAqLywKIAkJCQkwNzhFNDNENzFBQkI2QzdF
MDAxQzJGQTYgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5jcHAgKi8sCiAJCQkJMDc4RTQz
RDgxQUJCNkM3RTAwMUMyRkE2IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaCAqLywKIAkJ
CQlFNEI0MUUwQzBDQkY5MEJEMDBBRjJFQ0UgLyogTWVkaWFQbGF5ZXIuY3BwICovLApAQCAtMjcx
NjMsNiArMjcxNjMsOCBAQAogCQkJCUFEOUZGNkUwMTkwODM5MUQwMDNCNjFFMCAvKiBJT1N1cmZh
Y2VQb29sQ29jb2EubW0gKi8sCiAJCQkJQ0RDNDhBQzgyMTQ5Q0YyQTAwMjRGRDU5IC8qIE1lZGlh
RW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAgKi8sCiAJCQkJQ0RDNDhBQzcyMTQ5
Q0YyQTAwMjRGRDU5IC8qIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5oICov
LAorCQkJCTA3Rjg3NjgzMUFENEE5NDUwMDkwNTg0OSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dC5oICovLAorCQkJCTFEMDA4QUE1MjYyMTA4QzAwMEVFM0FERSAvKiBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dC5tbSAqLywKIAkJCQkzMTY0N0ZBODI1MTYxNkJEMDAxMEY4RkIgLyogT3Bl
bkdMU29mdExpbmtDb2NvYS5oICovLAogCQkJCTMxNjQ3RkE5MjUxNjE2QkQwMDEwRjhGQiAvKiBP
cGVuR0xTb2Z0TGlua0NvY29hLm1tICovLAogCQkJCTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRBRiAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZDBiYzM1NTBkNGQwODM1YzMzM2UxZjQ4M2Y1ZjI1YWRk
MDQ4MzNjZS4uZGY0YzljMWY4NGVjYTIwZTdiMWZiZDM3YzE0MzhjNWUwYWJiMGQ1OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC01MTMsNyArNTEzLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoUGxheWJhY2tUYXJnZXRDbGll
bnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgSW50UG9pbnQmLCBib29sIC8qaXNWaWRlbyovKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENo
YW5nZShQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBNZWRpYVByb2R1Y2Vy
OjpNZWRpYVN0YXRlRmxhZ3MpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRNb2NrTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCkgIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRN
b2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldE1vY2tN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIG1vY2tNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCkgeyB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKaW5kZXggZWFmNTZjZGUyMzA2NjUzODM5ODU1NTI2MTVlMTI1ODAwMjU4YTg2Yy4u
ODg4OThhYWNjMDIzM2ZiZTBlZTYwNjRkYmIwODdkZGFmZjY2NTJkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCkBAIC0yOTQ3LDcgKzI5NDcsNyBAQCB2b2lkIFBhZ2U6OnNldE1vY2tNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgY2hyb21lKCkuY2xpZW50KCku
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGVuYWJsZWQpOwogfQogCi12
b2lkIFBhZ2U6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCit2b2lk
IFBhZ2U6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5n
JiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKQogewog
ICAgIGNocm9tZSgpLmNsaWVudCgpLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3Rh
dGUobmFtZSwgc3RhdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBkNDgyODE2OTA1NTNlMDQ2ZjQ3
MDM0N2VkNmJiNDUyMTVlMjA2NDlkLi43NzAxYjA4YzFlM2M5Yjk0YjBiMGNkYjA2NjE5MDljMjIy
MjJmNDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNzMxLDcgKzczMSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJ
ZGVudGlmaWVyLCBjb25zdCBJbnRQb2ludCYsIGJvb2wsIFJvdXRlU2hhcmluZ1BvbGljeSwgY29u
c3QgU3RyaW5nJik7CiAgICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tlckNsaWVudFN0YXRlRGlk
Q2hhbmdlKFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIE1lZGlhUHJvZHVj
ZXI6Ok1lZGlhU3RhdGVGbGFncyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYs
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYs
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgbW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGxheWJhY2tUYXJnZXQoUGxheWJhY2tUYXJnZXRD
bGllbnRDb250ZXh0SWRlbnRpZmllciwgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1Rh
cmdldC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1Rh
cmdldC5oCmluZGV4IDZhZGZhOTM3ZjczZjU3M2Q5NWM5ZmNkNzRkNmQyMWI4NzNhMmY3ODguLjMx
ZDQ4ODRhZGE4YzUxN2RjZmVkMmRmZmFlMjY1ZmU0ZGI5NGZmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0LmgKQEAg
LTM4LDcgKzM4LDcgQEAgY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPE1lZGlhUGxheWJhY2tUYXJnZXQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRpYVBs
YXliYWNrVGFyZ2V0KCkgPSBkZWZhdWx0OwogCi0gICAgZW51bSBUYXJnZXRUeXBlIHsgQVZGb3Vu
ZGF0aW9uLCBNb2NrIH07CisgICAgZW51bSBjbGFzcyBUYXJnZXRUeXBlIDogdWludDhfdCB7IEFW
Rm91bmRhdGlvbiwgTW9jayB9OwogICAgIHZpcnR1YWwgVGFyZ2V0VHlwZSB0YXJnZXRUeXBlKCkg
Y29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dCYgdGFyZ2V0Q29udGV4dCgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxY2U0YTNlYzMwMWU5ZDllOTc0NGRjYmYyOWI3
YTdhMTBiZjRiMzRiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0X2gKLSNkZWZpbmUgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHRfaAotCi0jaWYg
RU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgotCi1PQkpDX0NMQVNTIEFWT3V0cHV0Q29udGV4dDsKLQotI2lmIFBMQVRGT1JN
KENPQ09BKQotT0JKQ19DTEFTUyBOU0tleWVkQXJjaGl2ZXI7Ci1PQkpDX0NMQVNTIE5TS2V5ZWRV
bmFyY2hpdmVyOwotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQgewotcHVibGljOgotICAgIGVudW0gVHlwZSA6IGludDMyX3Qg
ewotICAgICAgICBOb25lLAotICAgICAgICBBVk91dHB1dENvbnRleHRUeXBlLAotICAgICAgICBN
b2NrVHlwZSwKLSAgICB9OwotCi0gICAgZW51bSBDb250ZXh0U3RhdGUgewotICAgICAgICBVbmtu
b3duID0gMCwKLSAgICAgICAgT3V0cHV0RGV2aWNlVW5hdmFpbGFibGUgPSAxLAotICAgICAgICBP
dXRwdXREZXZpY2VBdmFpbGFibGUgPSAyLAotICAgIH07Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBT
dGF0ZTsKLQotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KCkKLSAgICAgICAgOiBtX3R5
cGUoTm9uZSkKLSAgICB7Ci0gICAgfQotCi0gICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQo
QVZPdXRwdXRDb250ZXh0ICpvdXRwdXRDb250ZXh0KQotICAgICAgICA6IG1fdHlwZShBVk91dHB1
dENvbnRleHRUeXBlKQotICAgICAgICAsIG1fb3V0cHV0Q29udGV4dChvdXRwdXRDb250ZXh0KQot
ICAgIHsKLSAgICB9Ci0KLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChjb25zdCBTdHJp
bmcmIG5hbWUsIFN0YXRlIHN0YXRlKQotICAgICAgICA6IG1fdHlwZShNb2NrVHlwZSkKLSAgICAg
ICAgLCBtX25hbWUobmFtZSkKLSAgICAgICAgLCBtX3N0YXRlKHN0YXRlKQotICAgIHsKLSAgICB9
Ci0KLSAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLQotICAgIGNvbnN0
IFN0cmluZyYgbW9ja0RldmljZU5hbWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBNb2NrVHlwZSk7Ci0gICAgICAgIHJldHVybiBtX25hbWU7Ci0gICAgfQotCi0gICAg
U3RhdGUgbW9ja1N0YXRlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
TW9ja1R5cGUpOwotICAgICAgICByZXR1cm4gbV9zdGF0ZTsKLSAgICB9Ci0KLSAgICBBVk91dHB1
dENvbnRleHQgKmF2T3V0cHV0Q29udGV4dCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQo
bV90eXBlID09IEFWT3V0cHV0Q29udGV4dFR5cGUpOwotICAgICAgICByZXR1cm4gbV9vdXRwdXRD
b250ZXh0OwotICAgIH0KLQotICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBBVk91dHB1dENvbnRleHRUeXBlOyB9Ci0gICAgCi1w
cml2YXRlOgotICAgIFR5cGUgbV90eXBlIHsgTm9uZSB9OwotICAgIEFWT3V0cHV0Q29udGV4dCAq
bV9vdXRwdXRDb250ZXh0IHsgbnVsbHB0ciB9OwotICAgIFN0cmluZyBtX25hbWU7Ci0gICAgU3Rh
dGUgbV9zdGF0ZSB7IFVua25vd24gfTsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpCi0KLSNlbmRpZiAvLyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaAppbmRl
eCA2YThlMTk0NzZhMzQ3ZDhlNzQ4NDFmZjY5ZmJkNDhiMDkyMjNjODg5Li42MWQxZmFjZTE0ODZj
MTAwYzgyZjM4MTc5NTEyYzk1YzZiMzk3ZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlh
UGxheWJhY2tUYXJnZXRDb2NvYS5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSA6IHB1YmxpYyBNZWRpYVBsYXliYWNr
VGFyZ2V0IHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1lZGlhUGxh
eWJhY2tUYXJnZXQ+IGNyZWF0ZShBVk91dHB1dENvbnRleHQgKik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBjcmVhdGUoTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQmJik7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0o
SU9TX0ZBTUlMWV9TSU1VTEFUT1IpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBzdGF0
aWMgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IGNyZWF0ZSgpOwpAQCAtNDMsMjEgKzQ0LDE4IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfk1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSgpOwogCi0g
ICAgVGFyZ2V0VHlwZSB0YXJnZXRUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQVZGb3VuZGF0
aW9uOyB9CisgICAgVGFyZ2V0VHlwZSB0YXJnZXRUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
VGFyZ2V0VHlwZTo6QVZGb3VuZGF0aW9uOyB9CiAKICAgICBjb25zdCBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dCYgdGFyZ2V0Q29udGV4dCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaGFzQWN0
aXZlUm91dGUoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgZGV2aWNlTmFtZSgpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrKCkgY29uc3QgZmluYWw7
CiAKLSAgICBBVk91dHB1dENvbnRleHQgKm91dHB1dENvbnRleHQoKSBjb25zdCB7IHJldHVybiBt
X291dHB1dENvbnRleHQuZ2V0KCk7IH0KLQogcHJvdGVjdGVkOgotICAgIE1lZGlhUGxheWJhY2tU
YXJnZXRDb2NvYShBVk91dHB1dENvbnRleHQgKik7CisgICAgZXhwbGljaXQgTWVkaWFQbGF5YmFj
a1RhcmdldENvY29hKEFWT3V0cHV0Q29udGV4dCAqKTsKKyAgICBleHBsaWNpdCBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29jb2EoTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmJik7CiAKLSAgICBSZXRh
aW5QdHI8QVZPdXRwdXRDb250ZXh0PiBtX291dHB1dENvbnRleHQ7Ci0gICAgbXV0YWJsZSBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dCBtX2NvbnRleHQ7Ci0gICAgU3RyaW5nIG1fZGV2aWNlTmFt
ZTsKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCBtX2NvbnRleHQ7CiB9OwogCiBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29jb2EqIHRvTWVkaWFQbGF5YmFja1RhcmdldENvY29hKE1lZGlhUGxh
eWJhY2tUYXJnZXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENv
Y29hLm1tCmluZGV4IGRhYzhjYzQ4MTU2YzJjN2U3NGVhYWM3YjRkZGU0YmMyMTc3NTE5YWEuLmIz
ODJiYTdhMGIwMGIzZjE1M2QxOTI0M2UwMmVmYzdlOTBkZDYyODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFy
Z2V0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5tbQpAQCAtMzQsMTQgKzM0LDIzIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKEFWT3V0cHV0Q29udGV4dCAqY29udGV4dCkKK1JlZjxN
ZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZShBVk91
dHB1dENvbnRleHQgKm91dHB1dENvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TWVkaWFQbGF5YmFja1RhcmdldENvY29hKGNvbnRleHQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2Eob3V0cHV0Q29udGV4dCkpOwogfQogCi1NZWRp
YVBsYXliYWNrVGFyZ2V0Q29jb2E6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShBVk91dHB1dENv
bnRleHQgKmNvbnRleHQpCi0gICAgOiBNZWRpYVBsYXliYWNrVGFyZ2V0KCkKLSAgICAsIG1fb3V0
cHV0Q29udGV4dChjb250ZXh0KQorUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IE1lZGlhUGxheWJh
Y2tUYXJnZXRDb2NvYTo6Y3JlYXRlKE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiYgY29udGV4
dCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2Eo
V1RGTW92ZShjb250ZXh0KSkpOworfQorCitNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb2NvYShBVk91dHB1dENvbnRleHQgKm91dHB1dENvbnRleHQpCisgICAg
OiBtX2NvbnRleHQob3V0cHV0Q29udGV4dCkKK3sKK30KKworTWVkaWFQbGF5YmFja1RhcmdldENv
Y29hOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQm
JiBjb250ZXh0KQorICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCiB7CiB9CiAKQEAg
LTU1LDI0ICs2NCw3IEBAIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29jb2E6OmNyZWF0ZSgpCiAKIGJvb2wgTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpzdXBw
b3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKSBjb25zdAogewotICAgIGlmICghbV9vdXRwdXRDb250
ZXh0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIVttX291dHB1dENvbnRleHQg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNl
cyldIHx8ICFbbV9vdXRwdXRDb250ZXh0IHN1cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2VzXSB8
fCAhW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dERl
dmljZXMpXSkgewotICAgICAgICBpZiAoYXV0byAqb3V0cHV0RGV2aWNlID0gW21fb3V0cHV0Q29u
dGV4dCBvdXRwdXREZXZpY2VdKSB7Ci0gICAgICAgICAgICBpZiAob3V0cHV0RGV2aWNlLmRldmlj
ZUZlYXR1cmVzICYgQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8pCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgZm9yIChBVk91dHB1dERldmljZSAqb3V0cHV0RGV2aWNlIGluIFttX291dHB1dENvbnRl
eHQgb3V0cHV0RGV2aWNlc10pIHsKLSAgICAgICAgaWYgKG91dHB1dERldmljZS5kZXZpY2VGZWF0
dXJlcyAmIEFWT3V0cHV0RGV2aWNlRmVhdHVyZVZpZGVvKQotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2NvbnRleHQuc3Vw
cG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrKCk7CiB9CiAKIE1lZGlhUGxheWJhY2tUYXJnZXRDb2Nv
YTo6fk1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSgpCkBAIC04MSw0NSArNzMsMTcgQEAgTWVkaWFQ
bGF5YmFja1RhcmdldENvY29hOjp+TWVkaWFQbGF5YmFja1RhcmdldENvY29hKCkKIAogY29uc3Qg
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6dGFy
Z2V0Q29udGV4dCgpIGNvbnN0CiB7Ci0gICAgbV9jb250ZXh0ID0gTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQobV9vdXRwdXRDb250ZXh0LmdldCgpKTsKICAgICByZXR1cm4gbV9jb250ZXh0Owog
fQogCiBib29sIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6aGFzQWN0aXZlUm91dGUoKSBjb25z
dAogewotICAgIGlmICghbV9vdXRwdXRDb250ZXh0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBpZiAoW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN1
cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2VzKV0gJiYgW21fb3V0cHV0Q29udGV4dCBzdXBwb3J0
c011bHRpcGxlT3V0cHV0RGV2aWNlc10gJiYgW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKG91dHB1dERldmljZXMpXSkgewotICAgICAgICBmb3IgKEFWT3V0cHV0
RGV2aWNlICpvdXRwdXREZXZpY2UgaW4gW21fb3V0cHV0Q29udGV4dCBvdXRwdXREZXZpY2VzXSkg
ewotICAgICAgICAgICAgaWYgKG91dHB1dERldmljZS5kZXZpY2VGZWF0dXJlcyAmIChBVk91dHB1
dERldmljZUZlYXR1cmVWaWRlbyB8IEFWT3V0cHV0RGV2aWNlRmVhdHVyZUF1ZGlvKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0KLSAgICBpZiAoW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKG91dHB1dERldmljZSldKSB7Ci0gICAgICAgIGlmIChhdXRvICpvdXRwdXREZXZp
Y2UgPSBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmljZV0pCi0gICAgICAgICAgICByZXR1cm4g
b3V0cHV0RGV2aWNlLmRldmljZUZlYXR1cmVzICYgKEFWT3V0cHV0RGV2aWNlRmVhdHVyZVZpZGVv
IHwgQVZPdXRwdXREZXZpY2VGZWF0dXJlQXVkaW8pOwotICAgIH0KLQotICAgIHJldHVybiBtX291
dHB1dENvbnRleHQuZ2V0KCkuZGV2aWNlTmFtZTsKKyAgICByZXR1cm4gbV9jb250ZXh0Lmhhc0Fj
dGl2ZVJvdXRlKCk7CiB9CiAKIFN0cmluZyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmRldmlj
ZU5hbWUoKSBjb25zdAogewotICAgIGlmICghbV9vdXRwdXRDb250ZXh0KQotICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIGlmICghW21fb3V0cHV0Q29udGV4dCBzdXBwb3J0c011
bHRpcGxlT3V0cHV0RGV2aWNlc10pCi0gICAgICAgIHJldHVybiBbbV9vdXRwdXRDb250ZXh0IGRl
dmljZU5hbWVdOwotCi0gICAgYXV0byBvdXRwdXREZXZpY2VOYW1lcyA9IGFkb3B0TlMoW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotICAgIGZvciAoQVZPdXRwdXREZXZpY2UgKm91dHB1
dERldmljZSBpbiBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmljZXNdKQotICAgICAgICBbb3V0
cHV0RGV2aWNlTmFtZXMgYWRkT2JqZWN0OltvdXRwdXREZXZpY2UgZGV2aWNlTmFtZV1dOwotCi0g
ICAgcmV0dXJuIFtvdXRwdXREZXZpY2VOYW1lcyBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6QCIg
KyAiXTsKKyAgICByZXR1cm4gbV9jb250ZXh0LmRldmljZU5hbWUoKTsKIH0KIAogTWVkaWFQbGF5
YmFja1RhcmdldENvY29hKiB0b01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShNZWRpYVBsYXliYWNr
VGFyZ2V0KiByZXApCkBAIC0xMjksNyArOTMsNyBAQCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2Eq
IHRvTWVkaWFQbGF5YmFja1RhcmdldENvY29hKE1lZGlhUGxheWJhY2tUYXJnZXQqIHJlcCkKIAog
Y29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENvY29hKiB0b01lZGlhUGxheWJhY2tUYXJnZXRDb2Nv
YShjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0KiByZXApCiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04ocmVwLT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1Rhcmdl
dDo6QVZGb3VuZGF0aW9uKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKHJlcC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6OlRhcmdldFR5
cGU6OkFWRm91bmRhdGlvbik7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb2NvYSo+KHJlcCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4
IDIwYjI0MTJmMTEzNjYzYzFmMzg2MmYyN2I2NjI0MDBmNmNkYjA3MmIuLjBhYzA5M2U1MGNhMjk4
MGM1OWEzMjdhMmMyZTg4MWVjZGZiMWJiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAt
MjgyNCw3ICsyODI0LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojppc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKCkgY29uc3QKIAogI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGlmIChtX3BsYXliYWNrVGFyZ2V0KSB7Ci0gICAgICAgIGlmICht
X3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldDo6QVZG
b3VuZGF0aW9uKQorICAgICAgICBpZiAobV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09
IE1lZGlhUGxheWJhY2tUYXJnZXQ6OlRhcmdldFR5cGU6OkFWRm91bmRhdGlvbikKICAgICAgICAg
ICAgIHdpcmVsZXNzVGFyZ2V0ID0gbV9hdlBsYXllciAmJiBtX2F2UGxheWVyLmdldCgpLmV4dGVy
bmFsUGxheWJhY2tBY3RpdmU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHdpcmVsZXNzVGFy
Z2V0ID0gbV9zaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCAmJiBtX3BsYXliYWNrVGFyZ2V0LT5o
YXNBY3RpdmVSb3V0ZSgpOwpAQCAtMjk2OCw3ICsyOTY4LDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRp
YVBsYXkKIHsKICAgICBtX3BsYXliYWNrVGFyZ2V0ID0gV1RGTW92ZSh0YXJnZXQpOwogCi0gICAg
bV9vdXRwdXRDb250ZXh0ID0gbV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09IE1lZGlh
UGxheWJhY2tUYXJnZXQ6OkFWRm91bmRhdGlvbiA/IHRvTWVkaWFQbGF5YmFja1RhcmdldENvY29h
KG1fcGxheWJhY2tUYXJnZXQuZ2V0KCkpLT5vdXRwdXRDb250ZXh0KCkgOiBudWxscHRyOworICAg
IG1fb3V0cHV0Q29udGV4dCA9IG1fcGxheWJhY2tUYXJnZXQtPnRhcmdldFR5cGUoKSA9PSBNZWRp
YVBsYXliYWNrVGFyZ2V0OjpUYXJnZXRUeXBlOjpBVkZvdW5kYXRpb24gPyB0b01lZGlhUGxheWJh
Y2tUYXJnZXRDb2NvYShtX3BsYXliYWNrVGFyZ2V0LmdldCgpKS0+dGFyZ2V0Q29udGV4dCgpLm91
dHB1dENvbnRleHQoKSA6IG51bGxwdHI7CiAKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsK
IApAQCAtMjk4OCw3ICsyOTg4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sIHNob3UKIAogICAgIElO
Rk9fTE9HKExPR0lERU5USUZJRVIsIHNob3VsZFBsYXkpOwogCi0gICAgaWYgKG1fcGxheWJhY2tU
YXJnZXQtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpBVkZvdW5kYXRpb24p
IHsKKyAgICBpZiAobV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJh
Y2tUYXJnZXQ6OlRhcmdldFR5cGU6OkFWRm91bmRhdGlvbikgewogICAgICAgICBBVk91dHB1dENv
bnRleHQgKm5ld0NvbnRleHQgPSBzaG91bGRQbGF5ID8gbV9vdXRwdXRDb250ZXh0LmdldCgpIDog
bmlsOwogCiAgICAgICAgIGlmICghbV9hdlBsYXllcikKQEAgLTMwMDUsNyArMzAwNSw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0U2hvdWxkUGxheVRvUGxh
eWJhY2tUYXJnZXQoYm9vbCBzaG91CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NF
UlQobV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6
Ok1vY2spOworICAgIEFTU0VSVChtX3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVk
aWFQbGF5YmFja1RhcmdldDo6VGFyZ2V0VHlwZTo6TW9jayk7CiAKICAgICBzZXREZWxheUNhbGxi
YWNrcyh0cnVlKTsKICAgICBhdXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTdjZTMzNTBkYThk
ZTJkMTM1ZTM2YTE5NDQyZTAzMGNlZjM1ZjU1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
LmgKQEAgLTAsMCArMSwxNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKK09CSkNfQ0xBU1MgQVZP
dXRwdXRDb250ZXh0OworT0JKQ19DTEFTUyBOU0RhdGE7CisjZW5kaWYKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCB7CitwdWJsaWM6Cisg
ICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7CisgICAgICAgIE5vbmUsCisgICAgICAgIEFW
T3V0cHV0Q29udGV4dCwKKyAgICAgICAgU2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCwKKyAgICAg
ICAgTW9jaywKKyAgICB9OworCisgICAgZW51bSBjbGFzcyBNb2NrU3RhdGUgOiB1aW50OF90IHsK
KyAgICAgICAgVW5rbm93biA9IDAsCisgICAgICAgIE91dHB1dERldmljZVVuYXZhaWxhYmxlID0g
MSwKKyAgICAgICAgT3V0cHV0RGV2aWNlQXZhaWxhYmxlID0gMiwKKyAgICB9OworCisgICAgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQoUmV0YWluUHRyPEFWT3V0cHV0Q29u
dGV4dD4mJik7CisKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChSZXRhaW5QdHI8TlNE
YXRhPiYmIHNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0LCBjb25zdCBTdHJpbmcmIGRldmljZU5hbWUs
IGJvb2wgaGFzQWN0aXZlUm91dGUsIGJvb2wgc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrKQor
ICAgICAgICA6IG1fdHlwZShUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0KQorICAgICAg
ICAsIG1fc2VyaWFsaXplZE91dHB1dENvbnRleHQoV1RGTW92ZShzZXJpYWxpemVkT3V0cHV0Q29u
dGV4dCkpCisgICAgICAgICwgbV9kZXZpY2VOYW1lKGRldmljZU5hbWUpCisgICAgICAgICwgbV9o
YXNBY3RpdmVSb3V0ZShoYXNBY3RpdmVSb3V0ZSkKKyAgICAgICAgLCBtX3N1cHBvcnRzUmVtb3Rl
VmlkZW9QbGF5YmFjayhzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2spCisgICAgeworICAgICAg
ICBBU1NFUlQoc2VyaWFsaXplZE91dHB1dENvbnRleHQpOworICAgIH0KKworICAgIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0KGNvbnN0IFN0cmluZyYgZGV2aWNlTmFtZSwgTW9ja1N0YXRlIHN0
YXRlKQorICAgICAgICA6IG1fdHlwZShUeXBlOjpNb2NrKQorICAgICAgICAsIG1fZGV2aWNlTmFt
ZShkZXZpY2VOYW1lKQorICAgICAgICAsIG1faGFzQWN0aXZlUm91dGUodHJ1ZSkKKyAgICAgICAg
LCBtX3N1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjayh0cnVlKQorICAgICAgICAsIG1fbW9ja1N0
YXRlKHN0YXRlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpNb2NrKTsK
KyAgICB9CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBj
b25zdCBTdHJpbmcmIGRldmljZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2RldmljZU5hbWU7IH0K
KyAgICBib29sIGhhc0FjdGl2ZVJvdXRlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBY3RpdmVSb3V0
ZTsgfQorICAgIGJvb2wgc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrKCkgY29uc3QgeyByZXR1
cm4gbV9zdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2s7IH0KKworICAgIE1vY2tTdGF0ZSBtb2Nr
U3RhdGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpNb2Nr
KTsKKyAgICAgICAgcmV0dXJuIG1fbW9ja1N0YXRlOworICAgIH0KKworICAgIFJldGFpblB0cjxB
Vk91dHB1dENvbnRleHQ+IG91dHB1dENvbnRleHQoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBUeXBlOjpBVk91dHB1dENvbnRleHQpOworICAgICAgICByZXR1cm4gbV9v
dXRwdXRDb250ZXh0OworICAgIH0KKworICAgIFJldGFpblB0cjxOU0RhdGE+IHNlcmlhbGl6ZWRP
dXRwdXRDb250ZXh0KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlw
ZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCk7CisgICAgICAgIHJldHVybiBtX3NlcmlhbGl6
ZWRPdXRwdXRDb250ZXh0OworICAgIH0KKworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2VyaWFs
aXplT3V0cHV0Q29udGV4dCgpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZGVzZXJpYWxpemVP
dXRwdXRDb250ZXh0KCk7CisKKyAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEo
KSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6QVZPdXRwdXRDb250ZXh0IHx8IG1fdHlw
ZSA9PSBUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0OyB9CisKK3ByaXZhdGU6CisgICAg
VHlwZSBtX3R5cGUgeyBUeXBlOjpOb25lIH07CisgICAgUmV0YWluUHRyPEFWT3V0cHV0Q29udGV4
dD4gbV9vdXRwdXRDb250ZXh0OworICAgIFJldGFpblB0cjxOU0RhdGE+IG1fc2VyaWFsaXplZE91
dHB1dENvbnRleHQ7CisKKyAgICBTdHJpbmcgbV9kZXZpY2VOYW1lOworICAgIGJvb2wgbV9oYXNB
Y3RpdmVSb3V0ZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX3N1cHBvcnRzUmVtb3RlVmlkZW9QbGF5
YmFjayB7IGZhbHNlIH07CisKKyAgICBNb2NrU3RhdGUgbV9tb2NrU3RhdGUgeyBNb2NrU3RhdGU6
OlVua25vd24gfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdU
RiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6OlR5cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAor
ICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZSwKKyAgICAg
ICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok5vbmUsCisgICAg
ICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENv
bnRleHQsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBl
OjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0LAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6TW9jaworICAgID47Cit9OworCit0ZW1wbGF0ZTw+IHN0
cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2Nr
U3RhdGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlLAorICAgICAgICBXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpVbmtub3duLAorICAgICAg
ICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpPdXRwdXRE
ZXZpY2VVbmF2YWlsYWJsZSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6Ok1vY2tTdGF0ZTo6T3V0cHV0RGV2aWNlQXZhaWxhYmxlCisgICAgPjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDYyYTE1ZmM2YzE3OWNkNDUwYzA0NDUyN2E2OWU1MmYyMzY3MWU4MAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0Lm1tCkBAIC0wLDAgKzEsMTI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgiCisKKyNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorCisjaW1wb3J0IDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8cGFsL3Nw
aS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRp
b25Tb2Z0TGluay5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChSZXRhaW5QdHI8QVZPdXRwdXRD
b250ZXh0PiYmIG91dHB1dENvbnRleHQpCisgICAgOiBtX291dHB1dENvbnRleHQob3V0cHV0Q29u
dGV4dCkKK3sKKyAgICBpZiAoIW1fb3V0cHV0Q29udGV4dCkgeworICAgICAgICBtX3R5cGUgPSBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6Tm9uZTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIG1fdHlwZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpB
Vk91dHB1dENvbnRleHQ7CisKKyAgICBpZiAoIVttX291dHB1dENvbnRleHQgc3VwcG9ydHNNdWx0
aXBsZU91dHB1dERldmljZXNdKQorICAgICAgICBtX2RldmljZU5hbWUgPSBbbV9vdXRwdXRDb250
ZXh0IGRldmljZU5hbWVdOworICAgIGVsc2UgeworICAgICAgICBhdXRvIG91dHB1dERldmljZU5h
bWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgICAgIGZv
ciAoQVZPdXRwdXREZXZpY2UgKm91dHB1dERldmljZSBpbiBbbV9vdXRwdXRDb250ZXh0IG91dHB1
dERldmljZXNdKQorICAgICAgICAgICAgW291dHB1dERldmljZU5hbWVzIGFkZE9iamVjdDpbb3V0
cHV0RGV2aWNlIGRldmljZU5hbWVdXTsKKworICAgICAgICBtX2RldmljZU5hbWUgPSBbb3V0cHV0
RGV2aWNlTmFtZXMgY29tcG9uZW50c0pvaW5lZEJ5U3RyaW5nOkAiICsgIl07CisgICAgfQorCisg
ICAgaWYgKFttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzdXBw
b3J0c011bHRpcGxlT3V0cHV0RGV2aWNlcyldICYmIFttX291dHB1dENvbnRleHQgc3VwcG9ydHNN
dWx0aXBsZU91dHB1dERldmljZXNdICYmIFttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihvdXRwdXREZXZpY2VzKV0pIHsKKyAgICAgICAgZm9yIChBVk91dHB1dERl
dmljZSAqb3V0cHV0RGV2aWNlIGluIFttX291dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlc10pIHsK
KyAgICAgICAgICAgIGlmIChvdXRwdXREZXZpY2UuZGV2aWNlRmVhdHVyZXMgJiAoQVZPdXRwdXRE
ZXZpY2VGZWF0dXJlVmlkZW8gfCBBVk91dHB1dERldmljZUZlYXR1cmVBdWRpbykpCisgICAgICAg
ICAgICAgICAgbV9oYXNBY3RpdmVSb3V0ZSA9IHRydWU7CisgICAgICAgIH0KKyAgICB9IGVsc2Ug
aWYgKFttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdXRwdXRE
ZXZpY2UpXSkgeworICAgICAgICBpZiAoYXV0byAqb3V0cHV0RGV2aWNlID0gW21fb3V0cHV0Q29u
dGV4dCBvdXRwdXREZXZpY2VdKQorICAgICAgICAgICAgbV9oYXNBY3RpdmVSb3V0ZSA9IG91dHB1
dERldmljZS5kZXZpY2VGZWF0dXJlcyAmIChBVk91dHB1dERldmljZUZlYXR1cmVWaWRlbyB8IEFW
T3V0cHV0RGV2aWNlRmVhdHVyZUF1ZGlvKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9oYXNBY3Rp
dmVSb3V0ZSA9IG1fb3V0cHV0Q29udGV4dC5nZXQoKS5kZXZpY2VOYW1lOworCisgICAgaWYgKCFb
bV9vdXRwdXRDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc3VwcG9ydHNNdWx0
aXBsZU91dHB1dERldmljZXMpXSB8fCAhW21fb3V0cHV0Q29udGV4dCBzdXBwb3J0c011bHRpcGxl
T3V0cHV0RGV2aWNlc10gfHwgIVttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihvdXRwdXREZXZpY2VzKV0pIHsKKyAgICAgICAgaWYgKGF1dG8gKm91dHB1dERldmlj
ZSA9IFttX291dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlXSkgeworICAgICAgICAgICAgaWYgKG91
dHB1dERldmljZS5kZXZpY2VGZWF0dXJlcyAmIEFWT3V0cHV0RGV2aWNlRmVhdHVyZVZpZGVvKQor
ICAgICAgICAgICAgICAgIG1fc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrID0gdHJ1ZTsKKyAg
ICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAoQVZPdXRwdXREZXZpY2UgKm91dHB1
dERldmljZSBpbiBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmljZXNdKSB7CisgICAgICAgICAg
ICBpZiAob3V0cHV0RGV2aWNlLmRldmljZUZlYXR1cmVzICYgQVZPdXRwdXREZXZpY2VGZWF0dXJl
VmlkZW8pCisgICAgICAgICAgICAgICAgbV9zdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2sgPSB0
cnVlOworICAgICAgICB9CisgICAgfQorfQorCitib29sIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpzZXJpYWxpemVPdXRwdXRDb250ZXh0KCkKK3sKKyAgICBBU1NFUlQobV90eXBlID09IE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQpOworICAgIGlm
IChtX3R5cGUgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29u
dGV4dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBhcmNoaXZlciA9IGFkb3B0
TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRSZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVT
XSk7CisgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDptX291dHB1dENvbnRleHQuZ2V0KCkgZm9y
S2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CisgICAgW2FyY2hpdmVyIGZpbmlzaEVu
Y29kaW5nXTsKKworICAgIG1fc2VyaWFsaXplZE91dHB1dENvbnRleHQgPSBbYXJjaGl2ZXIgZW5j
b2RlZERhdGFdOworICAgIG1fdHlwZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBl
OjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0OworICAgIG1fb3V0cHV0Q29udGV4dC5jbGVhcigp
OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6OmRlc2VyaWFsaXplT3V0cHV0Q29udGV4dCgpCit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4
dCk7CisgICAgaWYgKG1fdHlwZSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6
U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ym9vbCBzdWNjZXNzID0gZmFsc2U7CisgICAgYXV0byB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05T
S2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ0Zyb21EYXRhOm1fc2VyaWFsaXpl
ZE91dHB1dENvbnRleHQuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pOworICAgIHVuYXJjaGl2ZXIuZ2V0
KCkuZGVjb2RpbmdGYWlsdXJlUG9saWN5ID0gTlNEZWNvZGluZ0ZhaWx1cmVQb2xpY3lSYWlzZUV4
Y2VwdGlvbjsKKyAgICBhdXRvIGFsbG93ZWRDbGFzc1NldCA9IGFkb3B0TlMoW1tOU1NldCBhbGxv
Y10gaW5pdFdpdGhBcnJheTpAWyBQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgXV0pOwor
CisgICAgQHRyeSB7CisgICAgICAgIGlkIHJlc3VsdCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVj
dE9mQ2xhc3NlczphbGxvd2VkQ2xhc3NTZXQuZ2V0KCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9v
dE9iamVjdEtleV07CisgICAgICAgIEFTU0VSVCghcmVzdWx0IHx8IFtyZXN1bHQgY29uZm9ybXNU
b1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKTsKKyAgICAgICAgbV9vdXRwdXRD
b250ZXh0ID0gcmVzdWx0OworICAgICAgICBtX3R5cGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0OworICAgICAgICBtX3NlcmlhbGl6ZWRPdXRwdXRD
b250ZXh0LmNsZWFyKCk7CisgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOworICAgIH0gQGNhdGNoIChO
U0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRl
Y29kZSBvYmplY3Qgb2YgY2xhc3MgQVZPdXRwdXRDb250ZXh0IDogJUAiLCBleGNlcHRpb24pOwor
ICAgIH0gQGZpbmFsbHkgeworICAgICAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107Cisg
ICAgICAgIHVuYXJjaGl2ZXIuZ2V0KCkuZGVsZWdhdGUgPSBuaWw7CisgICAgfQorCisgICAgcmV0
dXJuIHN1Y2Nlc3M7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suY3BwCmluZGV4IDQ1NWNl
ZmM5ZjZmMGRmNDE5Njc3OGY3NTE5ZmI4YmI3MWY1NWQ1MjEuLjA0MGYzZWUwZmY3NjVmMzk2YWE4
ZmQ3NjJiNWI5NDQ1ZWY0ODY4ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suY3BwCkBAIC0zMCwxNSArMzAsMTMg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gTWVk
aWFQbGF5YmFja1RhcmdldE1vY2s6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKK1JlZjxNZWRpYVBsYXliYWNrVGFyZ2V0
PiBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSkKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhuYW1lLCBzdGF0ZSkpOwogfQog
Ci1NZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6TWVkaWFQbGF5YmFja1RhcmdldE1vY2soY29uc3Qg
U3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCi0g
ICAgOiBNZWRpYVBsYXliYWNrVGFyZ2V0KCkKLSAgICAsIG1fbmFtZShuYW1lKQotICAgICwgbV9z
dGF0ZShzdGF0ZSkKK01lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpNZWRpYVBsYXliYWNrVGFyZ2V0
TW9jayhjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2Nr
U3RhdGUgc3RhdGUpCisgICAgOiBtX2NvbnRleHQobmFtZSwgc3RhdGUpCiB7CiB9CiAKQEAgLTQ2
LDcgKzQ0LDYgQEAgTWVkaWFQbGF5YmFja1RhcmdldE1vY2s6On5NZWRpYVBsYXliYWNrVGFyZ2V0
TW9jaygpID0gZGVmYXVsdDsKIAogY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIE1l
ZGlhUGxheWJhY2tUYXJnZXRNb2NrOjp0YXJnZXRDb250ZXh0KCkgY29uc3QKIHsKLSAgICBtX2Nv
bnRleHQgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChtX25hbWUsIG1fc3RhdGUpOwogICAg
IHJldHVybiBtX2NvbnRleHQ7CiB9CiAKQEAgLTU3LDcgKzU0LDcgQEAgTWVkaWFQbGF5YmFja1Rh
cmdldE1vY2sqIHRvTWVkaWFQbGF5YmFja1RhcmdldE1vY2soTWVkaWFQbGF5YmFja1RhcmdldCog
cmVwKQogCiBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayogdG9NZWRpYVBsYXliYWNrVGFy
Z2V0TW9jayhjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0KiByZXApCiB7Ci0gICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04ocmVwLT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFj
a1RhcmdldDo6TW9jayk7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihyZXAtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpUYXJnZXRUeXBl
OjpNb2NrKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTWVkaWFQbGF5YmFja1Rhcmdl
dE1vY2sqPihyZXApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmgKaW5kZXggY2Q0NDliMDNjMTEzMTA2NjUyOTRj
Yjg5MjRkZjBlNGVlYWExM2Y0Yy4uMDcyYzhkZDA0ODRlMzUxNmI1MmZmMDI5MDA0YzFmMDRlNTMw
NWE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXli
YWNrVGFyZ2V0TW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQ
bGF5YmFja1RhcmdldE1vY2suaApAQCAtMzYsMjYgKzM2LDIyIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldE1vY2sgOiBwdWJsaWMgTWVkaWFQbGF5YmFj
a1RhcmdldCB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNZWRpYVBs
YXliYWNrVGFyZ2V0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OlN0YXRlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1lZGlhUGxheWJh
Y2tUYXJnZXQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6TW9ja1N0YXRlKTsKIAogICAgIHZpcnR1YWwgfk1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKCk7
CiAKLSAgICBUYXJnZXRUeXBlIHRhcmdldFR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNb2Nr
OyB9CisgICAgVGFyZ2V0VHlwZSB0YXJnZXRUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVk
aWFQbGF5YmFja1RhcmdldDo6VGFyZ2V0VHlwZTo6TW9jazsgfQogCiAgICAgY29uc3QgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldENvbnRleHQoKSBjb25zdCBmaW5hbDsKKyAgICBi
b29sIGhhc0FjdGl2ZVJvdXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb250ZXh0Lmhhc0Fj
dGl2ZVJvdXRlKCk7IH0KKyAgICBTdHJpbmcgZGV2aWNlTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fY29udGV4dC5kZXZpY2VOYW1lKCk7IH0KKyAgICBib29sIHN1cHBvcnRzUmVtb3RlVmlk
ZW9QbGF5YmFjaygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29udGV4dC5zdXBwb3J0c1JlbW90
ZVZpZGVvUGxheWJhY2soKTsgfQogCi0gICAgYm9vbCBoYXNBY3RpdmVSb3V0ZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuICFtX25hbWUuaXNFbXB0eSgpOyB9Ci0gICAgYm9vbCBzdXBwb3J0c1JlbW90
ZVZpZGVvUGxheWJhY2soKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9uYW1lLmlzRW1wdHkoKTsg
fQotCi0gICAgU3RyaW5nIGRldmljZU5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX25hbWU7
IH0KLQotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSgpIGNvbnN0
OworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRleHQubW9ja1N0YXRlKCk7IH0KIAogcHJvdGVjdGVkOgotICAgIE1l
ZGlhUGxheWJhY2tUYXJnZXRNb2NrKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpTdGF0ZSk7CisgICAgTWVkaWFQbGF5YmFja1RhcmdldE1vY2soY29uc3QgU3RyaW5n
JiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSk7CiAKLSAgICBTdHJpbmcg
bV9uYW1lOwotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBtX3N0YXRlIHsg
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlVua25vd24gfTsKICAgICBtdXRhYmxlIE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0IG1fY29udGV4dDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
TW9jay5jcHAKaW5kZXggNDRmNDE0N2ExOTE4MDc1NDcyZWRjM2ExMjE4OTkyN2Q3ZTkyNWVmMS4u
M2IwY2E2YTc4MzcyM2Y4Zjk4ZDIyNjBhYWI2YWI1YTU2MWVlMWM0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyTW9jay5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ck1vY2s6On5NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jaygpCiBib29sIE1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJNb2NrOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSgpCiB7CiAg
ICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OmV4dGVybmFsT3V0
cHV0RGV2aWNlQXZhaWxhYmxlIik7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6Ok91dHB1dERldmljZUF2YWlsYWJsZTsKKyAgICByZXR1cm4gbV9zdGF0
ZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpPdXRwdXREZXZpY2VB
dmFpbGFibGU7CiB9CiAKIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTW9jazo6cGxheWJhY2tUYXJnZXQoKQpAQCAtODUsMTAgKzg1LDEwIEBAIHZvaWQg
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNr
VGFyZ2V0cygpCiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6
OnN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cyIpOwogCiAgICAgbV90YXNrUXVldWUu
ZW5xdWV1ZVRhc2soW3RoaXNdIHsKLSAgICAgICAgaWYgKG1fc3RhdGUgPT0gTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6Ok91dHB1dERldmljZUF2YWlsYWJsZSkKKyAgICAgICAgaWYgKG1fc3Rh
dGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6T3V0cHV0RGV2aWNl
QXZhaWxhYmxlKQogICAgICAgICAgICAgYXZhaWxhYmxlRGV2aWNlc0RpZENoYW5nZSgpOwogCi0g
ICAgICAgIGlmICghbV9kZXZpY2VOYW1lLmlzRW1wdHkoKSAmJiBtX3N0YXRlICE9IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpVbmtub3duKQorICAgICAgICBpZiAoIW1fZGV2aWNlTmFtZS5p
c0VtcHR5KCkgJiYgbV9zdGF0ZSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0
YXRlOjpVbmtub3duKQogICAgICAgICAgICAgY3VycmVudERldmljZURpZENoYW5nZSgpOwogICAg
IH0pOwogfQpAQCAtMTAxLDE1ICsxMDEsMTUgQEAgdm9pZCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyTW9jazo6c3RvcE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKQogdm9pZCBNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyTW9jazo6aW52YWxpZGF0ZVBsYXliYWNrVGFyZ2V0cygpCiB7CiAgICAg
TE9HKE1lZGlhLCAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OmludmFsaWRhdGVQbGF5
YmFja1RhcmdldHMiKTsKLSAgICBzZXRTdGF0ZShlbXB0eVN0cmluZygpLCBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dDo6VW5rbm93bik7CisgICAgc2V0U3RhdGUoZW1wdHlTdHJpbmcoKSwgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93bik7CiB9CiAKLXZvaWQg
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnNldFN0YXRlKGNvbnN0IFN0cmluZyYgZGV2
aWNlTmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQordm9pZCBN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6c2V0U3RhdGUoY29uc3QgU3RyaW5nJiBkZXZp
Y2VOYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKQogewog
ICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpzZXRTdGF0ZSAt
IG5hbWUgPSAlcywgc3RhdGUgPSAweCV4IiwgZGV2aWNlTmFtZS51dGY4KCkuZGF0YSgpLCAodW5z
aWduZWQpc3RhdGUpOwogCiAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3RoaXMsIHN0YXRl
LCBkZXZpY2VOYW1lXSB7Ci0gICAgICAgIGlmIChkZXZpY2VOYW1lICE9IG1fZGV2aWNlTmFtZSAm
JiBzdGF0ZSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VW5rbm93bikgeworICAgICAg
ICBpZiAoZGV2aWNlTmFtZSAhPSBtX2RldmljZU5hbWUgJiYgc3RhdGUgIT0gTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93bikgewogICAgICAgICAgICAgbV9kZXZp
Y2VOYW1lID0gZGV2aWNlTmFtZTsKICAgICAgICAgICAgIGN1cnJlbnREZXZpY2VEaWRDaGFuZ2Uo
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oCmluZGV4IGRlMDk2Y2I4ODFmODI0
MjExMTY1OGI4ZDIxODM5ZjljODg1ZDRiY2UuLjNlNzQzOTViZjE2YjhlN2M4Y2U5Zjk3MjBlNzU5
NGU0ZjJjODdlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgKQEAgLTQ4LDcgKzQ4LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc3RvcE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKSBvdmVycmlk
ZTsKICAgICB2b2lkIGludmFsaWRhdGVQbGF5YmFja1RhcmdldHMoKSBvdmVycmlkZTsKIAotICAg
IHZvaWQgc2V0U3RhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
OlN0YXRlKTsKKyAgICB2b2lkIHNldFN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpOwogICAgIHZvaWQgZGlzbWlzc1BvcHVwKCk7CiAKIHBy
aXZhdGU6CkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgbV9kZXZpY2VO
YW1lOwogICAgIEdlbmVyaWNUYXNrUXVldWU8VGltZXI+IG1fdGFza1F1ZXVlOwotICAgIE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBtX3N0YXRlIHsgTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6OlVua25vd24gfTsKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9j
a1N0YXRlIG1fc3RhdGUgeyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpV
bmtub3duIH07CiAgICAgYm9vbCBtX3Nob3dpbmdNZW51IHsgZmFsc2UgfTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAzNDQ5MmJhZjgxMTRjOTQ2ZDYzMDFhMGY2
MDA2ZDVkZjE5MzQ2Y2EzLi5jMzgwMTE2OTRiYWZhY2M4YTFmNjdmZjA4NWFmZTQ0YWJiYmMyYWZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC01NTksNyArNTU5LDcgQEAg
dm9pZCBJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoUGFnZSYgcGFnZSkKIAogI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgcGFnZS5zZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQodHJ1ZSk7Ci0gICAgcGFnZS5zZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGVtcHR5U3RyaW5nKCksIE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpVbmtub3duKTsKKyAgICBwYWdlLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyU3RhdGUoZW1wdHlTdHJpbmcoKSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1v
Y2tTdGF0ZTo6VW5rbm93bik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFTykKQEAgLTQ1MTAs
MTQgKzQ1MTAsMTQgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpzZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYKICAgICBQYWdlKiBwYWdlID0g
Y29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPnBhZ2UoKTsKICAgICBBU1NFUlQocGFnZSk7CiAK
LSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUgPSBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6VW5rbm93bjsKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6TW9ja1N0YXRlIHN0YXRlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0
ZTo6VW5rbm93bjsKIAogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkZXZp
Y2VTdGF0ZSwgImRldmljZWF2YWlsYWJsZSIpKQotICAgICAgICBzdGF0ZSA9IE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpPdXRwdXREZXZpY2VBdmFpbGFibGU7CisgICAgICAgIHN0YXRlID0g
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6T3V0cHV0RGV2aWNlQXZhaWxh
YmxlOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRldmljZVN0
YXRlLCAiZGV2aWNldW5hdmFpbGFibGUiKSkKLSAgICAgICAgc3RhdGUgPSBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dDo6T3V0cHV0RGV2aWNlVW5hdmFpbGFibGU7CisgICAgICAgIHN0YXRlID0g
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6T3V0cHV0RGV2aWNlVW5hdmFp
bGFibGU7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGV2aWNl
U3RhdGUsICJ1bmtub3duIikpCi0gICAgICAgIHN0YXRlID0gTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OlVua25vd247CisgICAgICAgIHN0YXRlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6Ok1vY2tTdGF0ZTo6VW5rbm93bjsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCmluZGV4IGJkMTkx
ZTU3MWQ3MWYyMTA3ZGZmZWM1ZGZiMjRiMGQ0NDZkY2NlNjcuLjc0YTRiYWZmN2MyNWZlZTA0OTNj
Yjg0OTMwNjlmZjFiM2IxMmY0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKQEAgLTU5LDYgKzU5LDcg
QEAKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAjaW5jbHVkZSA8V2Vi
Q29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNr
VGFyZ2V0TW9jay5oPgogI2VuZGlmCiAKQEAgLTY5NywyMCArNjk4LDIzIEBAIHZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eTo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCBzaG91
bGRQbGF5KQogICAgIG1fcGxheWVyLT5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChzaG91
bGRQbGF5KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRXaXJlbGVzc1Bs
YXliYWNrVGFyZ2V0KGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0
YXJnZXRDb250ZXh0KQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRXaXJlbGVzc1Bs
YXliYWNrVGFyZ2V0KE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiYgdGFyZ2V0Q29udGV4dCkK
IHsKICAgICBzd2l0Y2ggKHRhcmdldENvbnRleHQudHlwZSgpKSB7Ci0gICAgY2FzZSBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6QVZPdXRwdXRDb250ZXh0VHlwZToKLSAgICAgICAgbV9wbGF5
ZXItPnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hOjpjcmVhdGUodGFyZ2V0Q29udGV4dC5hdk91dHB1dENvbnRleHQoKSkpOworICAgIGNh
c2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENv
bnRleHQ6IHsKKyAgICAgICAgaWYgKHRhcmdldENvbnRleHQuZGVzZXJpYWxpemVPdXRwdXRDb250
ZXh0KCkpCisgICAgICAgICAgICBtX3BsYXllci0+c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZShXVEZNb3ZlKHRhcmdldENvbnRleHQpKSk7
CiAgICAgICAgIGJyZWFrOworICAgIH0KICNpZiBQTEFURk9STShNQUMpCi0gICAgY2FzZSBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1R5cGU6Ci0gICAgICAgIG1fcGxheWVyLT5zZXRX
aXJlbGVzc1BsYXliYWNrVGFyZ2V0KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpj
cmVhdGUodGFyZ2V0Q29udGV4dC5tb2NrRGV2aWNlTmFtZSgpLCB0YXJnZXRDb250ZXh0Lm1vY2tT
dGF0ZSgpKSk7CisgICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6TW9j
azoKKyAgICAgICAgbV9wbGF5ZXItPnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoTWVkaWFQbGF5
YmFja1RhcmdldE1vY2s6OmNyZWF0ZSh0YXJnZXRDb250ZXh0LmRldmljZU5hbWUoKSwgdGFyZ2V0
Q29udGV4dC5tb2NrU3RhdGUoKSkpOwogICAgICAgICBicmVhazsKICNlbHNlCi0gICAgY2FzZSBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1R5cGU6CisgICAgY2FzZSBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dFR5cGU6Ok1vY2s6CiAjZW5kaWYKLSAgICBjYXNlIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpOb25lOgorICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dDoKKyAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpUeXBlOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggMjRiNjY0MWFlNGY1ZjFlN2RmYzEw
NTM3NDEzZjBlOWNmZDI1ZTIzZi4uYmRhZWU4YWUwNWYxMGZhNDY1NzMzNDNmNDc5YzQyOTNkNDdk
ZjZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBAIC0xNTIsNyArMTUyLDcgQEAgcHVibGljOgogI2lmIEVO
QUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgdm9pZCBzZXRXaXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZChib29sKTsKICAgICB2b2lkIHNldFNob3VsZFBsYXlUb1BsYXliYWNr
VGFyZ2V0KGJvb2wpOwotICAgIHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChjb25zdCBX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYpOworICAgIHZvaWQgc2V0V2lyZWxl
c3NQbGF5YmFja1RhcmdldChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmKTsK
ICAgICB2b2lkIG1lZGlhUGxheWVyQ3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5n
ZWQoYm9vbCkgZmluYWw7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCBiZjg4YWI2MTdi
ZTEyMWI0YWY3YmM0Y2QzYzRmYzE5N2RkYTU5NzgyLi4yOThkODVkMmEwNjRjYTRhYWNlOWFlZTNi
ZGQ0NTk4MzhjNzBiNmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtNDEsMTQgKzQxLDIzIEBACiAj
aW1wb3J0IDxVSUtpdC9VSUZvbnQuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkKKyNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQuaD4KKyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2VuZGlmCisKKyNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9XZWJDb3JlQXJndW1lbnRD
b2RlcnNDb2NvYUFkZGl0aW9ucy5tbT4KKyNlbmRpZgorCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkK
ICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXMuaD4KICNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4K
ICNlbmRpZgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRB
ZGRpdGlvbnMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2FBZGRpdGlvbnMubW0+CisjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5k
YXRpb25Tb2Z0TGluay5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtNjA2LDQgKzYx
NSw0NSBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVj
b2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZQogICAgIHJldHVybiB0cnVlOwogfQogCisj
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKK3ZvaWQgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29kZVBsYXRmb3JtRGF0YShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0
KQoreworICAgIGlmICh0YXJnZXQudHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpUeXBlOjpBVk91dHB1dENvbnRleHQpIHsKKyAgICAgICAgaWYgKFtQQUw6OmdldEFWT3V0cHV0
Q29udGV4dENsYXNzKCkgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGlu
ZyldKQorICAgICAgICAgICAgZW5jb2RlciA8PCB0YXJnZXQub3V0cHV0Q29udGV4dCgpOworICAg
IH0gZWxzZSBpZiAodGFyZ2V0LnR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
VHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCkKKyAgICAgICAgZW5jb2RlciA8PCB0YXJn
ZXQuc2VyaWFsaXplZE91dHB1dENvbnRleHQoKTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworfQorCitib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2Rlciwg
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGUgY29udGV4dFR5cGUsIGNvbnN0IFN0cmlu
ZyYgZGV2aWNlTmFtZSwgYm9vbCBoYXNBY3RpdmVSb3V0ZSwgYm9vbCBzdXBwb3J0c1JlbW90ZVZp
ZGVvUGxheWJhY2ssIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCit7CisgICAg
QVNTRVJUKGNvbnRleHRUeXBlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpN
b2NrKTsKKworICAgIGlmIChjb250ZXh0VHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0KSB7CisgICAgICAgIGlmICghW1BBTDo6Z2V0QVZPdXRw
dXRDb250ZXh0Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29k
aW5nKV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgYXV0byBvdXRwdXRD
b250ZXh0ID0gSVBDOjpkZWNvZGU8QVZPdXRwdXRDb250ZXh0PihkZWNvZGVyLCBQQUw6OmdldEFW
T3V0cHV0Q29udGV4dENsYXNzKCkpOworICAgICAgICBpZiAoIW91dHB1dENvbnRleHQpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdGFyZ2V0ID0gV2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQgeyBXVEZNb3ZlKCpvdXRwdXRDb250ZXh0KSB9OworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoY29udGV4dFR5cGUgPT0gTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQpIHsKKyAg
ICAgICAgUmV0YWluUHRyPE5TRGF0YT4gc2VyaWFsaXplZE91dHB1dENvbnRleHQ7CisgICAgICAg
IGlmICghSVBDOjpkZWNvZGUoZGVjb2Rlciwgc2VyaWFsaXplZE91dHB1dENvbnRleHQpIHx8ICFz
ZXJpYWxpemVkT3V0cHV0Q29udGV4dCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICB0YXJnZXQgPSBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCB7IFdURk1v
dmUoc2VyaWFsaXplZE91dHB1dENvbnRleHQpLCBkZXZpY2VOYW1lLCBoYXNBY3RpdmVSb3V0ZSwg
c3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrIH07CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4
IDI1NWEyY2JjNmM3N2NlZjFlNjA3MGVhNDIwZjZiZGU5MGIyNDBhNzEuLjk1Yjk0OWU1YjFhZWE0
Y2I3ODFkZDdjODhmNjI5NTIwNjFhNDFmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjQ1NywxNyArMjQ1NywyMCBAQCB2b2lkIEFy
Z3VtZW50Q29kZXI8TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgTQogICAgIGJvb2wgaGFzUGxhdGZvcm1EYXRhID0gdGFyZ2V0LmVuY29k
aW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKTsKICAgICBlbmNvZGVyIDw8IGhhc1BsYXRmb3JtRGF0
YTsKIAotICAgIGludDMyX3QgdGFyZ2V0VHlwZSA9IHRhcmdldC50eXBlKCk7Ci0gICAgZW5jb2Rl
ciA8PCB0YXJnZXRUeXBlOworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlIGNv
bnRleHRUeXBlID0gdGFyZ2V0LnR5cGUoKTsKKyAgICBlbmNvZGVyIDw8IGNvbnRleHRUeXBlOwor
CisgICAgZW5jb2RlciA8PCB0YXJnZXQuZGV2aWNlTmFtZSgpOworICAgIGVuY29kZXIgPDwgdGFy
Z2V0Lmhhc0FjdGl2ZVJvdXRlKCk7CisgICAgZW5jb2RlciA8PCB0YXJnZXQuc3VwcG9ydHNSZW1v
dGVWaWRlb1BsYXliYWNrKCk7CiAKICAgICBpZiAodGFyZ2V0LmVuY29kaW5nUmVxdWlyZXNQbGF0
Zm9ybURhdGEoKSkgewogICAgICAgICBlbmNvZGVQbGF0Zm9ybURhdGEoZW5jb2RlciwgdGFyZ2V0
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVCh0YXJnZXRUeXBlID09IE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrVHlwZSk7Ci0gICAgZW5jb2RlciA8PCB0YXJn
ZXQubW9ja0RldmljZU5hbWUoKTsKLSAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGludDMyX3Q+
KHRhcmdldC5tb2NrU3RhdGUoKSk7CisgICAgQVNTRVJUKGNvbnRleHRUeXBlID09IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KHRhcmdldC5tb2NrU3RhdGUoKSk7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2Rl
cjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0KQpAQCAtMjQ3NiwyNCArMjQ3OSwzMSBA
QCBib29sIEFyZ3VtZW50Q29kZXI8TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgTWVkaWFQbAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzUGxh
dGZvcm1EYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaW50MzJfdCB0YXJnZXRU
eXBlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGFyZ2V0VHlwZSkpCisgICAgTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OlR5cGUgY29udGV4dFR5cGU7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShjb250ZXh0VHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChoYXNQ
bGF0Zm9ybURhdGEpCi0gICAgICAgIHJldHVybiBkZWNvZGVQbGF0Zm9ybURhdGEoZGVjb2Rlciwg
dGFyZ2V0KTsKKyAgICBTdHJpbmcgZGV2aWNlTmFtZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGRldmljZU5hbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBBU1NFUlQodGFyZ2V0
VHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1R5cGUpOworICAgIGJvb2wg
aGFzQWN0aXZlUm91dGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNBY3RpdmVSb3V0ZSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFN0cmluZyBtb2NrRGV2aWNlTmFtZTsKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKG1vY2tEZXZpY2VOYW1lKSkKKyAgICBib29sIHN1cHBvcnRz
UmVtb3RlVmlkZW9QbGF5YmFjazsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN1cHBvcnRzUmVt
b3RlVmlkZW9QbGF5YmFjaykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGludDMyX3Qg
bW9ja1N0YXRlOworICAgIGlmIChoYXNQbGF0Zm9ybURhdGEpCisgICAgICAgIHJldHVybiBkZWNv
ZGVQbGF0Zm9ybURhdGEoZGVjb2RlciwgY29udGV4dFR5cGUsIGRldmljZU5hbWUsIGhhc0FjdGl2
ZVJvdXRlLCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2ssIHRhcmdldCk7CisKKyAgICBBU1NF
UlQoY29udGV4dFR5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2sp
OworICAgIHVpbnQ4X3QgbW9ja1N0YXRlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobW9ja1N0
YXRlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdGFyZ2V0ID0gTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQobW9ja0RldmljZU5hbWUsIHN0YXRpY19jYXN0PE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpTdGF0ZT4obW9ja1N0YXRlKSk7CisgICAgdGFyZ2V0ID0gTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQoZGV2aWNlTmFtZSwgc3RhdGljX2Nhc3Q8TWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6Ok1vY2tTdGF0ZT4obW9ja1N0YXRlKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
aW5kZXggYmIzMjQ5MDc5MzRmMzBmYTRiNzdmMzJiYzczYmEzMmY0OTg0MjhmMy4uNzQ4ZWIyZWIw
NmEyZjNiMTJiNWYyZWFhOTI5NzRlOGI4YjgwMjMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0ltYWdlRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5kZXhlZERCLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnB1dE1vZGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlbGVjdGlvbk9wdGlv
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05ldHdvcmtMb2FkTWV0cmljcy5oPgpAQCAtMTk1LDEwICsxOTYsNiBAQCBzdHJ1Y3QgUGFzdGVi
b2FyZFdlYkNvbnRlbnQ7CiBjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CiAjZW5k
aWYKIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi1jbGFzcyBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
IHN0cnVjdCBNZWRpYUNvbnN0cmFpbnRzOwogI2VuZGlmCkBAIC02NDQsNyArNjQxLDcgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmKTsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dCYpOwogICAgIHN0YXRpYyB2b2lkIGVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiwg
Y29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmKTsKLSAgICBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImLCBXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYpOworICAgIHN0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYsIFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlLCBjb25zdCBTdHJpbmcmIGRldmljZU5hbWUsIGJv
b2wgaGFzQWN0aXZlUm91dGUsIGJvb2wgc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrLCBXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYpOwogfTsKICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQpp
bmRleCAxODZiN2JiMmRiNmZjNGUyYmMxMzNmNzE3NWNjZjljMzc2Mzg5MjMwLi45MjVmNWE0ZDVh
NDg4ZDQ4ODQwNGVjNjI5NTJkOGEyNDlhM2YwMDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KQEAgLTQyLDEyICs0Miw2
IEBACiAjaW1wb3J0IDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2ltcG9ydCA8d3RmL2NmL1R5cGVD
YXN0c0NGLmg+CiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotI2ltcG9y
dCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oPgotI2ltcG9ydCA8b2JqYy9y
dW50aW1lLmg+Ci0jaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KLSNl
bmRpZgotCiBuYW1lc3BhY2UgSVBDIHsKIAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNl
cnRpZmljYXRlSW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKQEAgLTQwMywyOSArMzk3LDYgQEAgYm9v
bCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcj46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGUKIAogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQotCi12b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldCkKLXsKLSAgICBp
ZiAoW1BBTDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHBy
b3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCi0gICAgICAgIGVuY29kZXIgPDwgdGFyZ2V0LmF2T3V0
cHV0Q29udGV4dCgpOwotfQotCi1ib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2Rlciwg
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldCkKLXsKLSAgICBpZiAo
IVtQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90
b2NvbChOU1NlY3VyZUNvZGluZyldKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRv
IGNvbnRleHQgPSBJUEM6OmRlY29kZTxBVk91dHB1dENvbnRleHQ+KGRlY29kZXIsIFBBTDo6Z2V0
QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICB0YXJnZXQgPSBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dCB7IGNvbnRleHQtPmdldCgpIH07Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLSNlbmRpZgot
CiAjaWYgRU5BQkxFKFZJREVPKQogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6
ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWUmIHZhbHVl
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNmZiY2Iz
YmI2ODMzZjk4MDc1Y2E2MmE1YjdmZDU3ZmMzNzMwZDc4My4uYjE5ODBkNWUzZDNhZTQ1MzM3NWIy
N2FmMTg2MWU0OWJlZDI0ZDcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCkBAIC03Nzc4LDE0ICs3Nzc4LDYgQEAgc3RhdGljIGNvbnN0IFZlY3RvcjxBU0NJSUxp
dGVyYWw+JiBtZWRpYVJlbGF0ZWRJT0tpdENsYXNzZXMoKQogICAgIH0pOwogICAgIHJldHVybiBz
ZXJ2aWNlczsKIH0KLQotc3RhdGljIGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVyYWw+JiB0ZW1wb3Jh
cnlNYWNoU2VydmljZXMoKQotewotICAgIHN0YXRpYyBjb25zdCBhdXRvIHNlcnZpY2VzID0gbWFr
ZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxBU0NJSUxpdGVyYWw+IHsKLSAgICAgICAgImNvbS5hcHBs
ZS5jb3JlbWVkaWEucm91dGluZ2NvbnRleHQueHBjIl9zIC8vIFJlbW92ZSBhZnRlciA8cmRhcjov
Lzc2NDAzMzAyPiBpcyBmaXhlZC4KLSAgICB9KTsKLSAgICByZXR1cm4gc2VydmljZXM7Ci19CiAj
ZW5kaWYKIAogV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9u
UGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIERyYXdpbmdBcmVhUHJveHkmIGRy
YXdpbmdBcmVhLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVz
KQpAQCAtNzg4MSw5ICs3ODczLDYgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdl
UHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICAgICAg
Ly8gRklYTUUoMjA3NzE2KTogVGhlIGZvbGxvd2luZyBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIHRo
ZSBHUFUgcHJvY2VzcyBpcyBjb21wbGV0ZS4KICAgICAgICAgcGFyYW1ldGVycy5tZWRpYUV4dGVu
c2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1
cChtZWRpYVJlbGF0ZWRNYWNoU2VydmljZXMoKSwgV1RGOjpudWxsb3B0KTsKICAgICAgICAgcGFy
YW1ldGVycy5tZWRpYUlPS2l0RXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9ucyhtZWRpYVJlbGF0ZWRJT0tpdENsYXNz
ZXMoKSwgV1RGOjpudWxsb3B0KTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBGSVhNRSgyMjQz
MjcpOiBSZW1vdmUgdGhpcyBlbHNlIGNsYXVzZSBvbmNlIDxyZGFyOi8vNzY0MDMzMDI+IGlzIGZp
eGVkLgotICAgICAgICBwYXJhbWV0ZXJzLm1lZGlhRXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHRlbXBvcmFyeU1hY2hTZXJ2aWNl
cygpLCBXVEY6Om51bGxvcHQpOwogICAgIH0KIAogICAgIGlmICghcHJlZmVyZW5jZXMoKS51c2VH
UFVQcm9jZXNzRm9yTWVkaWFFbmFibGVkKCkKQEAgLTkzNDksNyArOTMzOCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBl
bmFibGVkKQogICAgIHBhZ2VDbGllbnQoKS5tZWRpYVNlc3Npb25NYW5hZ2VyKCkuc2V0TW9ja01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGVuYWJsZWQpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJp
bmcmIG5hbWUsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0
ZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0
YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6Ok1vY2tTdGF0ZSBzdGF0ZSkKIHsKICAgICBwYWdlQ2xpZW50KCkubWVkaWFTZXNzaW9uTWFu
YWdlcigpLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUobmFtZSwgc3RhdGUp
OwogfQpAQCAtOTM2NCw3ICs5MzUzLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBsYXliYWNr
VGFyZ2V0KFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGUKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQoY29udGV4dElkLCB0YXJnZXQt
PnRhcmdldENvbnRleHQoKSkpOworICAgIGF1dG8gY29udGV4dCA9IHRhcmdldC0+dGFyZ2V0Q29u
dGV4dCgpOworICAgIGlmIChjb250ZXh0LnNlcmlhbGl6ZU91dHB1dENvbnRleHQoKSkKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRTZWxlY3RlZChjb250ZXh0
SWQsIGNvbnRleHQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmV4dGVybmFsT3V0cHV0RGV2
aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIgY29udGV4dElkLCBib29sIGF2YWlsYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggYWFlNWZjZjA1YWIxYzEyMmRjMzY1Yjg5OWFjY2QzYjBjMDdlYWM0NC4u
ZmVkY2M4ZGZkZTExOWVhODQyNjY3ZGNkYjc1YzM5OGNkZjU5YmRiOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE1NTYsNyArMTU1Niw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJDb3JlOjpQbGF5YmFja1RhcmdldENs
aWVudENvbnRleHRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBib29sIGhh
c1ZpZGVvKTsKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFu
Z2UoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgV2ViQ29y
ZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsKICAgICB2b2lkIHNldE1vY2tNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sKTsKLSAgICB2b2lkIHNldE1vY2tNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKTsKKyAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSk7CiAgICAgdm9pZCBtb2NrTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlckRpc21pc3NQb3B1cCgpOwogCiAgICAgLy8gV2ViTWVkaWFTZXNzaW9uTWFuYWdl
ckNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCmluZGV4IGYwMWQ4YTA1ZGJhMGNlNzYyY2MzMGQ4OGQwYWI2ZWJmNzExNTYxOWIuLmI5
ZDFkZjQ1MTkyMDM3YmQ2ZDQxMTU5MzYwOTU5NjRiMjUzZDIzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTQ3Niw3ICs0NzYs
NyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFNob3dQbGF5YmFja1RhcmdldFBp
Y2tlcihXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRl
eHRJZCwgV2ViQ29yZTo6RmxvYXRSZWN0IHBpY2tlckxvY2F0aW9uLCBib29sIGhhc1ZpZGVvKQog
ICAgIFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6UGxh
eWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIHVuc2lnbmVkIG1l
ZGlhU3RhdGUpCiAgICAgU2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJv
b2wgZW5hYmxlZCkKLSAgICBTZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKFN0
cmluZyBuYW1lLCB1bnNpZ25lZCBwaWNrZXJTdGF0ZSkKKyAgICBTZXRNb2NrTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclN0YXRlKFN0cmluZyBuYW1lLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBwaWNrZXJTdGF0ZSkKICAgICBNb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCgpCiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9z
L1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAKaW5kZXggY2IyOTZjMDM3MjU2OTBjOGU5Yjk4
Nzg1Mzg5Njc1MDI2N2U5YjYxMC4uNmIwNTE1NzViOTZhMzE5ZjhmNGI0MDQwOGUzZTNhMTQ4MGYw
OGEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3Mv
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwCkBAIC04NCwxMiAr
ODQsMTIgQEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnByb3ZpZGVQcmVzZW50aW5n
QXBwbGljYXRpb25QSUQoaW50IHBpZCkKIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6
OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9ydHNBaXJQbGF5VmlkZW8gc3VwcG9ydHNB
aXJQbGF5VmlkZW8sIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiYgdGFyZ2V0Q29udGV4dCkK
IHsKLSAgICBpZiAodGFyZ2V0Q29udGV4dC50eXBlKCkgIT0gTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OkFWT3V0cHV0Q29udGV4dFR5cGUpIHsKKyAgICBpZiAodGFyZ2V0Q29udGV4dC50eXBl
KCkgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCkg
ewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENo
YW5nZShzdXBwb3J0c0FpclBsYXlWaWRlbywgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENv
Y29hOjpjcmVhdGUodGFyZ2V0Q29udGV4dC5hdk91dHB1dENvbnRleHQoKSkpOworICAgIFdlYkNv
cmU6Ok1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShzdXBwb3J0
c0FpclBsYXlWaWRlbywgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUo
V1RGTW92ZSh0YXJnZXRDb250ZXh0KSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmlu
ZGV4IDE5MmFkOGQxNTE2ZTBkMmRiZjFlNzAzYmM5YTc3NmEzMGQzM2ViY2UuLjZmY2NmNWNlZDI4
ZTkzNjU5ZWExZTBiMmNjMjA5OGZkY2I3ZTFkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBA
IC0xMzUyLDcgKzEzNTIsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX3BhZ2Uuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVu
YWJsZWQoZW5hYmxlZCkpOwogfQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRN
b2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSkKIHsKICAgICBtX3BhZ2Uu
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlclN0YXRlKG5hbWUsIHN0YXRlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMGI4ZDE4
MWM0YzllZGUxOTFiMmViOGQ5NjAzZGE4ZTdjMzU3NWUxZS4uMGFjNzNhNTM0MmU4ZTc0YWFlODFl
N2Q3OWI1YWZlY2Q0YjJlZjQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMzc4LDcgKzM3OCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViQ29yZTo6
UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmLCBib29sKSBmaW5hbDsKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50
U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRp
ZmllciwgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKSBmaW5hbDsKICAg
ICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sKSBmaW5h
bDsKLSAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3Qg
U3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKSBmaW5h
bDsKKyAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3Qg
U3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSkg
ZmluYWw7CiAgICAgdm9pZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1
cCgpIGZpbmFsOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCA4YjY5YzgzMzBjMjhjODU3YjEyNTQwNWMzMWMwMTE2MzQ5NjcxZTc2Li5i
NTM2OWRhZmNmYWViOWMzOTYzN2IzMWYzNzU2Y2Q5OWM0YmZiZThkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNzgxLDcgKzE3ODEsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKGJvb2wg
ZGlzcGF0Y2gpIHsgbV9zaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMgPSBkaXNwYXRj
aDsgfQogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCi0gICAgdm9pZCBwbGF5YmFja1RhcmdldFNlbGVjdGVkKFdlYkNvcmU6OlBs
YXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0JiBvdXRwdXREZXZpY2UpIGNvbnN0OworICAgIHZvaWQgcGxh
eWJhY2tUYXJnZXRTZWxlY3RlZChXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmKSBjb25zdDsK
ICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKFdlYkNvcmU6OlBs
YXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGJvb2wpOwogICAgIHZvaWQgc2V0
U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRD
b250ZXh0SWRlbnRpZmllciwgYm9vbCk7CiAgICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tlcldh
c0Rpc21pc3NlZChXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW0KaW5kZXggNzRkYTYzNTc4ODJjZDAxMzAyMDg0MDk3ZjA2NGQyMWMzYjkxNWQwNC4uZjhi
ODBjNmM0ZDU0NWE2NTZhYmE3ZGMzYzgzOWI2Y2RhMWNmZTJiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTM1LDcgKzM1
LDYgQEAKICNpbXBvcnQgIkZvbnRJbmZvLmgiCiAjaW1wb3J0ICJGcmFtZUluZm9EYXRhLmgiCiAj
aW1wb3J0ICJJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaCIKLSNpbXBvcnQgIlBERktpdFNv
ZnRMaW5rLmgiCiAjaW1wb3J0ICJQREZQbHVnaW4uaCIKICNpbXBvcnQgIlBhZ2VCYW5uZXIuaCIK
ICNpbXBvcnQgIlBsdWdpblZpZXcuaCIKQEAgLTk5LDkgKzk4LDEyIEBACiAKICNpZiBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNr
VGFyZ2V0Q29jb2EuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaD4KICNlbmRp
ZgogCisjaW1wb3J0ICJQREZLaXRTb2Z0TGluay5oIgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xMDQyLDE2ICsxMDQ0LDE3IEBAIHZvaWQgV2Vi
UGFnZTo6ZGlkVXBkYXRlUmVuZGVyaW5nKCkKIH0KIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQotdm9pZCBXZWJQYWdlOjpwbGF5
YmFja1RhcmdldFNlbGVjdGVkKFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIg
Y29udGV4dElkLCBjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFy
Z2V0Q29udGV4dCkgY29uc3QKK3ZvaWQgV2ViUGFnZTo6cGxheWJhY2tUYXJnZXRTZWxlY3RlZChQ
bGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmJiB0YXJnZXRDb250ZXh0KSBjb25zdAogewogICAg
IHN3aXRjaCAodGFyZ2V0Q29udGV4dC50eXBlKCkpIHsKLSAgICBjYXNlIE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpBVk91dHB1dENvbnRleHRUeXBlOgotICAgICAgICBtX3BhZ2UtPnNldFBs
YXliYWNrVGFyZ2V0KGNvbnRleHRJZCwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29h
OjpjcmVhdGUodGFyZ2V0Q29udGV4dC5hdk91dHB1dENvbnRleHQoKSkpOworICAgIGNhc2UgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQ6
CisgICAgICAgIG1fcGFnZS0+c2V0UGxheWJhY2tUYXJnZXQoY29udGV4dElkLCBXZWJDb3JlOjpN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZShXVEZNb3ZlKHRhcmdldENvbnRleHQpKSk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1v
Y2tUeXBlOgotICAgICAgICBtX3BhZ2UtPnNldFBsYXliYWNrVGFyZ2V0KGNvbnRleHRJZCwgV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldE1vY2s6OmNyZWF0ZSh0YXJnZXRDb250ZXh0Lm1vY2tE
ZXZpY2VOYW1lKCksIHRhcmdldENvbnRleHQubW9ja1N0YXRlKCkpKTsKKyAgICBjYXNlIE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrOgorICAgICAgICBtX3BhZ2UtPnNldFBs
YXliYWNrVGFyZ2V0KGNvbnRleHRJZCwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldE1vY2s6
OmNyZWF0ZSh0YXJnZXRDb250ZXh0LmRldmljZU5hbWUoKSwgdGFyZ2V0Q29udGV4dC5tb2NrU3Rh
dGUoKSkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpOb25lOgorICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFW
T3V0cHV0Q29udGV4dDoKKyAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBl
OjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBiODliMjY2YzNkNzlhY2QyNDFkZjM2YjVmY2UyZjFk
MmVkOGRiNzQ4Li5mM2Q0NzE2YTg5MzNkOWYyNDJmOGVmMTIxNWE4NjYyMzQwZjg5N2E1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaApAQCAtMjQzLDcgKzI0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzaG93
UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29sIC8qIGhhc1ZpZGVvICov
KSBmaW5hbDsKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFu
Z2UoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgV2ViQ29y
ZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKSBmaW5hbDsKICAgICB2b2lkIHNldE1v
Y2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sKSBmaW5hbDsKLSAgICB2b2lk
IHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKSBmaW5hbDsKKyAgICB2b2lk
IHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSkgZmluYWw7CiAgICAg
dm9pZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCgpIG92ZXJyaWRl
OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQppbmRleCBiMzRlOGQ5ZDhlZTkxNWM2MWEwYzQ5
ZmY0MGUyZDY2ZmVkMjRhMDRlLi5jOTY0ODNmZjk2ZWI3ZmQ4Y2MxOTUyN2MzNTQ1ZDliODNiMTRh
OWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC0xMTI5LDcgKzExMjksNyBAQCB2b2lkIFdlYkNo
cm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wg
ZW5hYmxlZCkKICAgICBbbV93ZWJWaWV3IF9zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ckVuYWJsZWQ6ZW5hYmxlZF07CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRNb2NrTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNl
dE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKQogewogICAgIFttX3dl
YlZpZXcgX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTmFtZTpuYW1lIHN0YXRlOnN0
YXRlXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgKaW5kZXggMGI5MjM4MzVlOWUxNWI2
YjgwNDViNDlhZmUyOWU2YWFiMDNlY2ZjYS4uOGNhMzI5NDdhNWI0NmUwNjdiOGU4YmFlNDQ2Mzkz
ZWJiOTBlODZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgKQEAgLTUzLDcgKzUzLDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKFdlYkNvcmU6OlBs
YXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYsIGJvb2wgaGFzVmlkZW8pOwogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJDbGll
bnRTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVu
dGlmaWVyLCBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpOwogICAgIHZv
aWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpOwotICAgIHZv
aWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpOworICAgIHZvaWQgc2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKTsKICAgICB2b2lkIG1vY2tN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCk7CiAKICAgICB2b2lkIGludmFs
aWRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbQppbmRleCA3MzQ0MzU2NzVhYjgw
OWI1MGVjNWVmMzhhYjlmNzdjYTE0OGIzMWYxLi43ZGJkNTg5NDc1NDA1YTE2ZWJkZDBmYTliY2Zh
NjJjMzM3ZTc0MTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tCkBAIC02OCw3ICs2
OCw3IEBAIHZvaWQgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6c2V0TW9ja01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wKICAgICBXZWJDb3JlOjpXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyOjpzaGFyZWQoKS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJs
ZWQoZW5hYmxlZCk7CiB9CiAKLXZvaWQgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6c2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKK3ZvaWQgV2Vi
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCiB7CiAgICAgV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9u
TWFuYWdlcjo6c2hhcmVkKCkuc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShu
YW1lLCBzdGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KaW5kZXggNWIwZWU4YTNhYzhjMzMzYjZlZTM0NGNkZDljM2I1NTc2NWMyNmZmMC4uNDkyYWY2
MDFjZjdhYzRkZjQ2NDUwYjA4YWFhNWMzMjBlYTJlNmU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtOTIzMiw3ICs5MjMyLDcgQEAgYm9vbCBMYXll
ckZsdXNoQ29udHJvbGxlcjo6Zmx1c2hMYXllcnMoKQogICAgIFtzZWxmIF9kZXZpY2VQaWNrZXJd
LT5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoZW5hYmxlZCk7CiB9CiAK
LS0gKHZvaWQpX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTmFtZTooTlNTdHJpbmcg
KiluYW1lIHN0YXRlOihXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUp
c3RhdGUKKy0gKHZvaWQpX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTmFtZTooTlNT
dHJpbmcgKiluYW1lIHN0YXRlOihXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
TW9ja1N0YXRlKXN0YXRlCiB7CiAgICAgW3NlbGYgX2RldmljZVBpY2tlcl0tPnNldE1vY2tNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUobmFtZSwgc3RhdGUpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKaW5kZXggM2FlMGQz
YWEyNjJkOTUyMzMwYzFjODJjMzI1NTBkOWEyMWE1MDE0Zi4uMDRiOGMzNjhjY2FmODUyNGQwODU5
MzcyZDYwNThmNDhmMTdhNmYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCkBAIC0zMjcsNyArMzI3LDcgQEAgV2ViTGF5b3V0TWls
ZXN0b25lcyBraXRMYXlvdXRNaWxlc3RvbmVzKE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxl
c3RvbmU+KTsKIC0gKHZvaWQpX3Nob3dQbGF5YmFja1RhcmdldFBpY2tlcjooV2ViQ29yZTo6UGxh
eWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciljb250ZXh0SWQgbG9jYXRpb246KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50Jilsb2NhdGlvbiBoYXNWaWRlbzooQk9PTCloYXNWaWRlbzsK
IC0gKHZvaWQpX3BsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2U6KFdlYkNv
cmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIpY29udGV4dElkIHN0YXRl
OihXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3Mpc3RhdGU7CiAtICh2b2lk
KV9zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQ6KGJvb2wpZW5hYmxlZDsK
LS0gKHZvaWQpX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTmFtZTooTlNTdHJpbmcg
KiluYW1lIHN0YXRlOihXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUp
c3RhdGU7CistICh2b2lkKV9zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck5hbWU6KE5T
U3RyaW5nICopbmFtZSBzdGF0ZTooV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
Ok1vY2tTdGF0ZSlzdGF0ZTsKIC0gKHZvaWQpX21vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
RGlzbWlzc1BvcHVwOwogI2VuZGlmCiAK
</data>
<flag name="commit-queue"
          id="446002"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425904</attachid>
            <date>2021-04-13 12:59:41 -0700</date>
            <delta_ts>2021-04-13 20:14:21 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-224469-20210413125940.patch</filename>
            <type>text/plain</type>
            <size>83097</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1ODA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTM3ZTM2YWE4MmQ5YzYx
N2VkZjE5NGJkZWQzOTliMzk5N2RhNjNmYi4uZjFkMzA3ZDBhMWI0YjA0MjU1YThhMjJmNTQ4N2Nj
ZGE3NjNiZTQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDIxLTA0LTEzICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIFdlYkNvbnRlbnQg
cHJvY2VzcyBzaG91bGQgbm90IGNyZWF0ZSBBVk91dHB1dENvbnRleHQgaW5zdGFuY2VzIHdoZW4g
bWVkaWEgaW4gR1BVIFByb2Nlc3MgaXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtb2RpZmllcyBgTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHRgIHRvIHByb3ZpZGUgaW50ZXJmYWNlcyB0byBzZXJpYWxpemUvZGVzZXJp
YWxpemUKKyAgICAgICAgYEFWT3V0cHV0Q29udGV4dGAgYW5kIG1vZGlmaWVzIGBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29jb2FgIHRvIHVzZSBgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHRgIHRvCisg
ICAgICAgIG1hbmFnZSBpdHMgYEFWT3V0cHV0Q29udGV4dGAuIFdpdGggdGhlc2UgY2hhbmdlcywg
YSBXZWJDb250ZW50IHByb2Nlc3MgY2FuIGFjY2VzcyB0aGUgcHJvcGVydGllcyBvZgorICAgICAg
ICBhbiBgQVZPdXRwdXRDb250ZXh0YCBvYmplY3QgYW5kIGZvcndhcmQgaXQgdG8gb3RoZXIgcHJv
Y2VzcyAoZS5nLiwgdGhlIEdQVSBwcm9jZXNzKSB3aXRob3V0CisgICAgICAgIGRlc2VyaWFsaXpp
bmcgdGhlIGBBVk91dHB1dENvbnRleHRgIG9iamVjdC4KKworICAgICAgICAqIE1vZHVsZXMvYWly
cGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUp
OgorICAgICAgICAqIE1vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmg6CisK
KyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBNb2Rp
ZnkgdGhlIHByb2plY3QgZmlsZSBiZWNhdXNlIGBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dGAg
aXMgdXNlZCBpbiBDb2NvYSBwb3J0cyBvbmx5LgorCisgICAgICAgICogcGFnZS9DaHJvbWVDbGll
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJTdGF0ZSk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgor
ICAgICAgICAqIHBhZ2UvUGFnZS5oOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5YmFja1RhcmdldC5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oOiBSZW1vdmVkLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJn
ZXRDb2NvYS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpv
dXRwdXRDb250ZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpzdXBwb3J0c1JlbW90
ZVZpZGVvUGxheWJhY2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldENvY29hOjp0YXJnZXRDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb2NvYTo6aGFzQWN0aXZlUm91dGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpkZXZpY2VOYW1lIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvTWVkaWFQbGF5YmFja1RhcmdldENvY29hKToKKyAgICAgICAgRG9uJ3Qg
ZGlyZWN0bHkgdXNlIGBBVk91dHB1dENvbnRleHRgIGluIHRoaXMgY2xhc3MuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6aXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpz
ZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KToK
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpkZXZpY2VOYW1lIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpoYXNBY3RpdmVSb3V0ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6c3VwcG9y
dHNSZW1vdGVWaWRlb1BsYXliYWNrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0Ojptb2NrU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Om91dHB1dENvbnRleHQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OnNlcmlhbGl6ZWRPdXRwdXRD
b250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjplbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5tbTogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6OnNlcmlhbGl6ZU91dHB1dENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OmRlc2VyaWFsaXplT3V0cHV0Q29udGV4dCk6CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldE1vY2s6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2Nr
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjp0YXJnZXRDb250
ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnRvTWVkaWFQbGF5YmFja1RhcmdldE1vY2sp
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpzdGF0ZSBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6ZXh0ZXJu
YWxPdXRwdXREZXZpY2VBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlck1vY2s6OnN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6aW52YWxpZGF0
ZVBsYXliYWNrVGFyZ2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyTW9jazo6c2V0U3RhdGUpOgorCisgICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyTW9jay5oOgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJTdGF0ZSk6CisKIDIwMjEtMDQtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBSZWdyZXNzaW9uKHIyNzU2NjgpIFBvdGVudGlhbCBudWxsIHBvaW50
ZXIgZGVyZWYgaW4gQXVkaW9QYXJhbTo6ZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZShmbG9h
dCwgZG91YmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA3MGE5ZmFiMWUzNzlhMWQwYWRmYmY3NGViYzFiYzE0YWVk
YmFhZGE1Li41MjJjYzViMTlkOGZmYzYyZTdmNzEyNTE3NWI0NWJmMjAwN2U4MmM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTA0LTEzICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0dQVVBdIFdlYkNvbnRlbnQgcHJvY2VzcyBzaG91bGQgbm90IGNy
ZWF0ZSBBVk91dHB1dENvbnRleHQgaW5zdGFuY2VzIHdoZW4gbWVkaWEgaW4gR1BVIFByb2Nlc3Mg
aXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI0NDY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFy
Z2V0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHku
aDoKKworICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5t
bToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dD46OmVuY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0Zm9y
bURhdGEpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5j
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dD46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
OgorICAgICAgICAqIFNoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZVBsYXRm
b3JtRGF0YSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6bWVkaWFSZWxhdGVkSU9LaXRDbGFzc2VzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFBsYXliYWNrVGFyZ2V0KToKKyAg
ICAgICAgKFdlYktpdDo6dGVtcG9yYXJ5TWFjaFNlcnZpY2VzKTogRGVsZXRlZC4gUmVtb3ZlIHRo
ZSBmaXggKHdvcmthcm91bmQpIGZvciBidWcgMjI0MzI4LgorICAgICAgICBXaXRoIHRoaXMgcGF0
Y2gsIHRoYXQgd29ya2Fyb3VuZCBpcyBub3QgbmVjZXNzYXJ5LgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZSk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpwbGF5YmFja1RhcmdldFNlbGVjdGVkIGNvbnN0KToKKwogMjAyMS0wNC0xMCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBXZWFrSGFz
aFNldDxXZWJQcm9jZXNzUHJveHk+IGluc3RlYWQgb2YgSGFzaFNldDxXZWJQcm9jZXNzUHJveHkq
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGU1N2NjYjJjMGZhY2Y5NzQ3OGMyOTM4
NDRlN2JkMGM0YjA4MTU3MTMuLmZhY2NjYjdmNDZkMDgwOTI5NDBiZjgzYTgyOTQwNjk0NzUxY2Zm
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0w
NC0xMyAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBX
ZWJDb250ZW50IHByb2Nlc3Mgc2hvdWxkIG5vdCBjcmVhdGUgQVZPdXRwdXRDb250ZXh0IGluc3Rh
bmNlcyB3aGVuIG1lZGlhIGluIEdQVSBQcm9jZXNzIGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDQ2OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlclN0YXRlKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXIuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW06
CisgICAgICAgIChXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpzZXRNb2NrTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlclN0YXRlKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06Cisg
ICAgICAgICgtW1dlYlZpZXcgX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTmFtZTpz
dGF0ZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgorCiAyMDIxLTA0
LTAyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgSGFzaGVy
IG1vcmUsIHJlbW92ZSBJbnRlZ2VySGFzaGVyLCBmaXggaGFzaGluZy1yZWxhdGVkIG1pc3Rha2Vz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQppbmRleCA1N2NhNjhmNzNhODE0M2Y4YTAwNmZiNzg1YWIwMjI3OGRh
ZDNmMGIxLi5kM2M2M2YxNmUzNWZmZjE3NDYxYjEzN2E5ZmU0NmEzM2RmMjBkYWEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKQEAgLTEyNjYsNyArMTI2Niw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0LmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0Q2xpZW50LmgKLSAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXIuY3BwCmluZGV4IDZjNmFiMGU3YTYyZWM0ZGE0NWVkM2RiYzk0MTQ1NTE3NWNkNDRkNWEuLmQ1
YjU5NWE0YWM0OWZmMGVmZmU2MmI0NTJlYzM0MmI3ZDM4MzA0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5j
cHAKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1v
Y2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sIGVuYWJsZQogICAgIG1fbW9j
a1BpY2tlckVuYWJsZWQgPSBlbmFibGVkOwogfQogCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBu
YW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCit2b2lkIFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRl
IHN0YXRlKQogewogICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7
CiAgICAgbW9ja1BpY2tlcigpLnNldFN0YXRlKG5hbWUsIHN0YXRlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oCmlu
ZGV4IGQ3ZjI4Y2NiNzVlNWQ3NTVkYWY0MzM0ZWY2NTZjYjE0MTkwZmFiNTQuLjFiYTEyODRmMjMz
M2M3ODQ2YWI4MGQ0ZTExZGIyYmY0ZjAyMDY2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaApAQCAtNTEsNyAr
NTEsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFdlYk1lZGlhU2Vzc2lv
bk1hbmFnZXImIHNoYXJlZCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYs
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYs
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgbW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIg
YWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVu
dCYsIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQKaW5kZXggZWNlNDZjZmE0MTE5ODM0NTE3OGE1ZDI3Zjc3MjdkYjkwNzM1OGNjOS4u
MWFiN2YyMDQ4NTRmODFlMTQ3OTUwMDM2YzNjNWZjNWU2MDNhYTQyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0CkBAIC0zNjksNiArMzY5LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9T
dXJmYWNlLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2VQb29sQ29jb2EubW0K
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcAorcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW0KIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0K
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTc3MGIwODQw
MjI5MjQwMjgwNWE2MzcxNzRkMzY5ZTZjZDM1NDE3MC4uZGZlNTU0NDdlYzdhNTI3NzE2YTI3MDA1
MDZjNmQ4NmYxZTRiYWM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjQ0LDggKzY0NCw4IEBACiAJCTFDQUY1NkRCMjUzMDFB
QzgwMDE3QjQ3MiAvKiBEaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjU2RDgyNTMwMTQ1NzAwMTdC
NDcyIC8qIERpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUNDRDgxNTAyMjMxRjgzRTAwNjVGQzJC
IC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTI1NTE0MTZGRDIz
NEYwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUubW0gKi87IH07CiAJCTFDQ0RGNUJFMTk5MDMzMjQwMEJDRUJBRCAvKiBTVkdUb09URkZvbnRD
b252ZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQ0NERjVCQzE5OTAzMzI0MDBCQ0VCQUQgLyogU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oICov
OyB9OwotCQkxQ0U4RDEyNzI2MTg1QzBFMDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVy
SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUNFOEQxMjUyNjE4NUJEODAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50
aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkxQ0U4ODY0MTI2MTA1QkYyMDAwQzgxNkMgLyogSW5NZW1vcnlEaXNwbGF5TGlzdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNFODg2M0YyNjEwNUE1
RjAwMEM4MTZDIC8qIEluTWVtb3J5RGlzcGxheUxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxQ0U4RDEyNzI2MTg1QzBFMDBGQzNBRUYgLyog
RGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNFOEQxMjUyNjE4NUJEODAwRkMzQUVGIC8qIERpc3Bs
YXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkxQ0ZBRTMyMzBBNkQ2QTNGMDAzMjU5M0QgLyogbGlib2Jq
Yy5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDRkFFMzIyMEE2RDZBM0YwMDMyNTkzRCAvKiBsaWJvYmpjLmR5bGliICovOyB9OwogCQkxRDAw
MjZBNDIzNzRENjI0MDBDQTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRDAwMjZBMjIzNzRENjIz
MDBDQTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93LmggKi87IH07CiAJCTFEMDAyNkFB
MjM3NEY5RUEwMENBNkNERiAvKiBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRDAwMjZBODIzNzRGOUQ5
MDBDQTZDREYgLyogSlNFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5oICovOyB9OwpAQCAtNjk0
OSw5ICs2OTQ5LDkgQEAKIAkJMUNERDQ1RTQwQkE5Qzg0NjAwRjkwMTQ3IC8qIERlYnVnUmVsZWFz
ZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2Uu
eGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDREQ0NUU1MEJBOUM4NDYw
MEY5MDE0NyAvKiBXZWJDb3JlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0
aCA9IFdlYkNvcmUueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDREQ0
NUU2MEJBOUM4NDYwMEY5MDE0NyAvKiBCYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2Nv
bmZpZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTFDRThEMTI1MjYxODVCRDgwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlm
aWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFODg2M0UyNjEwNUE1RjAwMEM4MTZDIC8q
IEluTWVtb3J5RGlzcGxheUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5NZW1vcnlEaXNw
bGF5TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRTg4NjNGMjYxMDVB
NUYwMDBDODE2QyAvKiBJbk1lbW9yeURpc3BsYXlMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluTWVt
b3J5RGlzcGxheUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNFOEQxMjUy
NjE4NUJEODAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQ0VDQjNBODIxRjJCNjczMDBGNDQ1NDIgLyogV0hMU0xTdGF0
ZW1lbnRCZWhhdmlvckNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTdGF0ZW1lbnRCZWhh
dmlvckNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFQ0IzQTkyMUYy
QjY3MzAwRjQ0NTQyIC8qIFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFQ0IzQUYyMUYyQjk4NDAwRjQ0NTQyIC8qIFdITFNMRnVu
Y3Rpb25Xcml0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xGdW5jdGlvbldyaXRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02OTcyLDYgKzY5NzIsNyBAQAogCQkx
RDAwMjZBMzIzNzRENjI0MDBDQTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGljdHVyZUluUGljdHVyZVdp
bmRvdy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEMDAyNkE4MjM3NEY5RDkw
MENBNkNERiAvKiBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUQwMDI2QTkyMzc0RjlEOTAwQ0E2Q0RGIC8qIEpTRW50
ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFEMDA4QUE1MjYyMTA4QzAwMEVFM0FERSAvKiBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDJDODJCNjIzNkEz
RjZBMDA1NUQ2QzUgLyogUGljdHVyZUluUGljdHVyZVN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGljdHVyZUluUGljdHVyZVN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUQ0NzY1OEQyNUNDQTc3ODAwN0FGMzEyIC8qIEltYWdlRGVjb2RlcklkZW50aWZpZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW1hZ2VEZWNvZGVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxREFCMzExMzI1MUQ3MjVDMDBGQzk0ODUgLyogVmlkZW9MYXllck1hbmFnZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9MYXllck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI2OTQ3LDcgKzI2OTQ4LDYgQEAKIAkJCQlDRERFMDJFOTE4QjNERkM3MDBD
RjdGRjEgLyogTGVnYWN5Q0RNU2Vzc2lvbi5oICovLAogCQkJCTA3RTNERkQwMUE5RTc4NjUwMDc2
NENBOCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0LmggKi8sCiAJCQkJMDc5MjE2NTMxQUE1NjBBQTAw
QTNDMDQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDbGllbnQuaCAqLywKLQkJCQkwN0Y4NzY4MzFB
RDRBOTQ1MDA5MDU4NDkgLyogTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaCAqLywKIAkJCQkw
NzhFNDNENzFBQkI2QzdFMDAxQzJGQTYgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5jcHAg
Ki8sCiAJCQkJMDc4RTQzRDgxQUJCNkM3RTAwMUMyRkE2IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXIuaCAqLywKIAkJCQlFNEI0MUUwQzBDQkY5MEJEMDBBRjJFQ0UgLyogTWVkaWFQbGF5ZXIu
Y3BwICovLApAQCAtMjcxNjMsNiArMjcxNjMsOCBAQAogCQkJCUFEOUZGNkUwMTkwODM5MUQwMDNC
NjFFMCAvKiBJT1N1cmZhY2VQb29sQ29jb2EubW0gKi8sCiAJCQkJQ0RDNDhBQzgyMTQ5Q0YyQTAw
MjRGRDU5IC8qIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAgKi8sCiAJ
CQkJQ0RDNDhBQzcyMTQ5Q0YyQTAwMjRGRDU5IC8qIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZh
Y3RvcnlDb2NvYS5oICovLAorCQkJCTA3Rjg3NjgzMUFENEE5NDUwMDkwNTg0OSAvKiBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dC5oICovLAorCQkJCTFEMDA4QUE1MjYyMTA4QzAwMEVFM0FERSAv
KiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5tbSAqLywKIAkJCQkzMTY0N0ZBODI1MTYxNkJE
MDAxMEY4RkIgLyogT3BlbkdMU29mdExpbmtDb2NvYS5oICovLAogCQkJCTMxNjQ3RkE5MjUxNjE2
QkQwMDEwRjhGQiAvKiBPcGVuR0xTb2Z0TGlua0NvY29hLm1tICovLAogCQkJCTdCNjRDMEI0MjU0
QzNCMTYwMDA2QjRBRiAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1t
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZDBiYzM1NTBkNGQwODM1YzMz
M2UxZjQ4M2Y1ZjI1YWRkMDQ4MzNjZS4uZGY0YzljMWY4NGVjYTIwZTdiMWZiZDM3YzE0MzhjNWUw
YWJiMGQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC01MTMsNyArNTEzLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoUGxh
eWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgSW50UG9pbnQmLCBib29s
IC8qaXNWaWRlbyovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJD
bGllbnRTdGF0ZURpZENoYW5nZShQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVy
LCBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCkgIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0
cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSkgeyB9CisgICAgdmlydHVh
bCB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5n
JiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCkgeyB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggZWFmNTZjZGUyMzA2NjUzODM5ODU1NTI2MTVl
MTI1ODAwMjU4YTg2Yy4uODg4OThhYWNjMDIzM2ZiZTBlZTYwNjRkYmIwODdkZGFmZjY2NTJkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yOTQ3LDcgKzI5NDcsNyBAQCB2b2lkIFBhZ2U6OnNldE1v
Y2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgY2hy
b21lKCkuY2xpZW50KCkuc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGVu
YWJsZWQpOwogfQogCi12b2lkIFBhZ2U6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
U3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3Rh
dGUgc3RhdGUpCit2b2lkIFBhZ2U6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3Rh
dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0
YXRlIHN0YXRlKQogewogICAgIGNocm9tZSgpLmNsaWVudCgpLnNldE1vY2tNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyU3RhdGUobmFtZSwgc3RhdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBkNDgy
ODE2OTA1NTNlMDQ2ZjQ3MDM0N2VkNmJiNDUyMTVlMjA2NDlkLi43NzAxYjA4YzFlM2M5Yjk0YjBi
MGNkYjA2NjE5MDljMjIyMjJmNDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNzMxLDcgKzczMSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihQbGF5YmFja1Rhcmdl
dENsaWVudENvbnRleHRJZGVudGlmaWVyLCBjb25zdCBJbnRQb2ludCYsIGJvb2wsIFJvdXRlU2hh
cmluZ1BvbGljeSwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tl
ckNsaWVudFN0YXRlRGlkQ2hhbmdlKFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIsIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRl
KGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRl
KGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNt
aXNzUG9wdXAoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGxheWJhY2tUYXJnZXQo
UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgUmVmPE1lZGlhUGxheWJhY2tU
YXJnZXQ+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5YmFja1RhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5YmFja1RhcmdldC5oCmluZGV4IDZhZGZhOTM3ZjczZjU3M2Q5NWM5ZmNkNzRkNmQy
MWI4NzNhMmY3ODguLjMxZDQ4ODRhZGE4YzUxN2RjZmVkMmRmZmFlMjY1ZmU0ZGI5NGZmY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tU
YXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXli
YWNrVGFyZ2V0LmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldCA6
IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhUGxheWJhY2tUYXJnZXQ+IHsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5NZWRpYVBsYXliYWNrVGFyZ2V0KCkgPSBkZWZhdWx0OwogCi0gICAgZW51bSBUYXJn
ZXRUeXBlIHsgQVZGb3VuZGF0aW9uLCBNb2NrIH07CisgICAgZW51bSBjbGFzcyBUYXJnZXRUeXBl
IDogdWludDhfdCB7IEFWRm91bmRhdGlvbiwgTW9jayB9OwogICAgIHZpcnR1YWwgVGFyZ2V0VHlw
ZSB0YXJnZXRUeXBlKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBjb25zdCBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0Q29udGV4dCgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxY2U0YTNlYzMwMWU5
ZDllOTc0NGRjYmYyOWI3YTdhMTBiZjRiMzRiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0X2gKLSNkZWZpbmUgTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHRfaAotCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLQotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1PQkpDX0NMQVNTIEFWT3V0cHV0Q29udGV4dDsK
LQotI2lmIFBMQVRGT1JNKENPQ09BKQotT0JKQ19DTEFTUyBOU0tleWVkQXJjaGl2ZXI7Ci1PQkpD
X0NMQVNTIE5TS2V5ZWRVbmFyY2hpdmVyOwotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQgewotcHVibGljOgotICAgIGVudW0g
VHlwZSA6IGludDMyX3QgewotICAgICAgICBOb25lLAotICAgICAgICBBVk91dHB1dENvbnRleHRU
eXBlLAotICAgICAgICBNb2NrVHlwZSwKLSAgICB9OwotCi0gICAgZW51bSBDb250ZXh0U3RhdGUg
ewotICAgICAgICBVbmtub3duID0gMCwKLSAgICAgICAgT3V0cHV0RGV2aWNlVW5hdmFpbGFibGUg
PSAxLAotICAgICAgICBPdXRwdXREZXZpY2VBdmFpbGFibGUgPSAyLAotICAgIH07Ci0gICAgdHlw
ZWRlZiB1bnNpZ25lZCBTdGF0ZTsKLQotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KCkK
LSAgICAgICAgOiBtX3R5cGUoTm9uZSkKLSAgICB7Ci0gICAgfQotCi0gICAgTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQoQVZPdXRwdXRDb250ZXh0ICpvdXRwdXRDb250ZXh0KQotICAgICAgICA6
IG1fdHlwZShBVk91dHB1dENvbnRleHRUeXBlKQotICAgICAgICAsIG1fb3V0cHV0Q29udGV4dChv
dXRwdXRDb250ZXh0KQotICAgIHsKLSAgICB9Ci0KLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dChjb25zdCBTdHJpbmcmIG5hbWUsIFN0YXRlIHN0YXRlKQotICAgICAgICA6IG1fdHlwZShN
b2NrVHlwZSkKLSAgICAgICAgLCBtX25hbWUobmFtZSkKLSAgICAgICAgLCBtX3N0YXRlKHN0YXRl
KQotICAgIHsKLSAgICB9Ci0KLSAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7
IH0KLQotICAgIGNvbnN0IFN0cmluZyYgbW9ja0RldmljZU5hbWUoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBNb2NrVHlwZSk7Ci0gICAgICAgIHJldHVybiBtX25hbWU7
Ci0gICAgfQotCi0gICAgU3RhdGUgbW9ja1N0YXRlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gTW9ja1R5cGUpOwotICAgICAgICByZXR1cm4gbV9zdGF0ZTsKLSAgICB9
Ci0KLSAgICBBVk91dHB1dENvbnRleHQgKmF2T3V0cHV0Q29udGV4dCgpIGNvbnN0Ci0gICAgewot
ICAgICAgICBBU1NFUlQobV90eXBlID09IEFWT3V0cHV0Q29udGV4dFR5cGUpOwotICAgICAgICBy
ZXR1cm4gbV9vdXRwdXRDb250ZXh0OwotICAgIH0KLQotICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJl
c1BsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBBVk91dHB1dENvbnRleHRU
eXBlOyB9Ci0gICAgCi1wcml2YXRlOgotICAgIFR5cGUgbV90eXBlIHsgTm9uZSB9OwotICAgIEFW
T3V0cHV0Q29udGV4dCAqbV9vdXRwdXRDb250ZXh0IHsgbnVsbHB0ciB9OwotICAgIFN0cmluZyBt
X25hbWU7Ci0gICAgU3RhdGUgbV9zdGF0ZSB7IFVua25vd24gfTsKLX07Ci0KLX0KLQotI2VuZGlm
IC8vIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0KLSNlbmRpZiAvLyBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFy
Z2V0Q29jb2EuaAppbmRleCA2YThlMTk0NzZhMzQ3ZDhlNzQ4NDFmZjY5ZmJkNDhiMDkyMjNjODg5
Li42MWQxZmFjZTE0ODZjMTAwYzgyZjM4MTc5NTEyYzk1YzZiMzk3ZTc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFj
a1RhcmdldENvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oCkBAIC0zNiw2ICszNiw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSA6IHB1Ymxp
YyBNZWRpYVBsYXliYWNrVGFyZ2V0IHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IGNyZWF0ZShBVk91dHB1dENvbnRleHQgKik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBjcmVhdGUo
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmJik7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpICYmICFQTEFURk9STShNQUNDQVRB
TFlTVCkKICAgICBzdGF0aWMgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IGNyZWF0ZSgpOwpAQCAt
NDMsMjEgKzQ0LDE4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfk1lZGlhUGxheWJhY2tUYXJn
ZXRDb2NvYSgpOwogCi0gICAgVGFyZ2V0VHlwZSB0YXJnZXRUeXBlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gQVZGb3VuZGF0aW9uOyB9CisgICAgVGFyZ2V0VHlwZSB0YXJnZXRUeXBlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gVGFyZ2V0VHlwZTo6QVZGb3VuZGF0aW9uOyB9CiAKICAgICBjb25zdCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0Q29udGV4dCgpIGNvbnN0IGZpbmFsOwog
ICAgIGJvb2wgaGFzQWN0aXZlUm91dGUoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgZGV2aWNl
TmFtZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNr
KCkgY29uc3QgZmluYWw7CiAKLSAgICBBVk91dHB1dENvbnRleHQgKm91dHB1dENvbnRleHQoKSBj
b25zdCB7IHJldHVybiBtX291dHB1dENvbnRleHQuZ2V0KCk7IH0KLQogcHJvdGVjdGVkOgotICAg
IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShBVk91dHB1dENvbnRleHQgKik7CisgICAgZXhwbGlj
aXQgTWVkaWFQbGF5YmFja1RhcmdldENvY29hKEFWT3V0cHV0Q29udGV4dCAqKTsKKyAgICBleHBs
aWNpdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQm
Jik7CiAKLSAgICBSZXRhaW5QdHI8QVZPdXRwdXRDb250ZXh0PiBtX291dHB1dENvbnRleHQ7Ci0g
ICAgbXV0YWJsZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCBtX2NvbnRleHQ7Ci0gICAgU3Ry
aW5nIG1fZGV2aWNlTmFtZTsKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCBtX2NvbnRl
eHQ7CiB9OwogCiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EqIHRvTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hKE1lZGlhUGxheWJhY2tUYXJnZXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQ
bGF5YmFja1RhcmdldENvY29hLm1tCmluZGV4IGRhYzhjYzQ4MTU2YzJjN2U3NGVhYWM3YjRkZGU0
YmMyMTc3NTE5YWEuLmIzODJiYTdhMGIwMGIzZjE1M2QxOTI0M2UwMmVmYzdlOTBkZDYyODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9N
ZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5tbQpAQCAtMzQs
MTQgKzM0LDIzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1lZGlhUGxheWJhY2tU
YXJnZXQ+IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKEFWT3V0cHV0Q29udGV4dCAq
Y29udGV4dCkKK1JlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29j
b2E6OmNyZWF0ZShBVk91dHB1dENvbnRleHQgKm91dHB1dENvbnRleHQpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTWVkaWFQbGF5YmFja1RhcmdldENvY29hKGNvbnRleHQpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2Eob3V0cHV0Q29udGV4
dCkpOwogfQogCi1NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b2NvYShBVk91dHB1dENvbnRleHQgKmNvbnRleHQpCi0gICAgOiBNZWRpYVBsYXliYWNrVGFyZ2V0
KCkKLSAgICAsIG1fb3V0cHV0Q29udGV4dChjb250ZXh0KQorUmVmPE1lZGlhUGxheWJhY2tUYXJn
ZXQ+IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0JiYgY29udGV4dCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29jb2EoV1RGTW92ZShjb250ZXh0KSkpOworfQorCitNZWRpYVBsYXliYWNrVGFy
Z2V0Q29jb2E6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShBVk91dHB1dENvbnRleHQgKm91dHB1
dENvbnRleHQpCisgICAgOiBtX2NvbnRleHQob3V0cHV0Q29udGV4dCkKK3sKK30KKworTWVkaWFQ
bGF5YmFja1RhcmdldENvY29hOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQmJiBjb250ZXh0KQorICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4
dCkpCiB7CiB9CiAKQEAgLTU1LDI0ICs2NCw3IEBAIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZSgpCiAKIGJvb2wgTWVkaWFQbGF5YmFja1Rh
cmdldENvY29hOjpzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKSBjb25zdAogewotICAgIGlm
ICghbV9vdXRwdXRDb250ZXh0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIVtt
X291dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzdXBwb3J0c011bHRp
cGxlT3V0cHV0RGV2aWNlcyldIHx8ICFbbV9vdXRwdXRDb250ZXh0IHN1cHBvcnRzTXVsdGlwbGVP
dXRwdXREZXZpY2VzXSB8fCAhW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKG91dHB1dERldmljZXMpXSkgewotICAgICAgICBpZiAoYXV0byAqb3V0cHV0RGV2aWNl
ID0gW21fb3V0cHV0Q29udGV4dCBvdXRwdXREZXZpY2VdKSB7Ci0gICAgICAgICAgICBpZiAob3V0
cHV0RGV2aWNlLmRldmljZUZlYXR1cmVzICYgQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8pCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCi0gICAgZm9yIChBVk91dHB1dERldmljZSAqb3V0cHV0RGV2aWNlIGlu
IFttX291dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlc10pIHsKLSAgICAgICAgaWYgKG91dHB1dERl
dmljZS5kZXZpY2VGZWF0dXJlcyAmIEFWT3V0cHV0RGV2aWNlRmVhdHVyZVZpZGVvKQotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biBtX2NvbnRleHQuc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrKCk7CiB9CiAKIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb2NvYTo6fk1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSgpCkBAIC04MSw0NSAr
NzMsMTcgQEAgTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjp+TWVkaWFQbGF5YmFja1RhcmdldENv
Y29hKCkKIAogY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIE1lZGlhUGxheWJhY2tU
YXJnZXRDb2NvYTo6dGFyZ2V0Q29udGV4dCgpIGNvbnN0CiB7Ci0gICAgbV9jb250ZXh0ID0gTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQobV9vdXRwdXRDb250ZXh0LmdldCgpKTsKICAgICByZXR1
cm4gbV9jb250ZXh0OwogfQogCiBib29sIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6aGFzQWN0
aXZlUm91dGUoKSBjb25zdAogewotICAgIGlmICghbV9vdXRwdXRDb250ZXh0KQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHN1cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2VzKV0gJiYgW21fb3V0cHV0
Q29udGV4dCBzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNlc10gJiYgW21fb3V0cHV0Q29udGV4
dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dERldmljZXMpXSkgewotICAgICAg
ICBmb3IgKEFWT3V0cHV0RGV2aWNlICpvdXRwdXREZXZpY2UgaW4gW21fb3V0cHV0Q29udGV4dCBv
dXRwdXREZXZpY2VzXSkgewotICAgICAgICAgICAgaWYgKG91dHB1dERldmljZS5kZXZpY2VGZWF0
dXJlcyAmIChBVk91dHB1dERldmljZUZlYXR1cmVWaWRlbyB8IEFWT3V0cHV0RGV2aWNlRmVhdHVy
ZUF1ZGlvKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoW21fb3V0cHV0Q29udGV4dCByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dERldmljZSldKSB7Ci0gICAgICAgIGlmIChh
dXRvICpvdXRwdXREZXZpY2UgPSBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmljZV0pCi0gICAg
ICAgICAgICByZXR1cm4gb3V0cHV0RGV2aWNlLmRldmljZUZlYXR1cmVzICYgKEFWT3V0cHV0RGV2
aWNlRmVhdHVyZVZpZGVvIHwgQVZPdXRwdXREZXZpY2VGZWF0dXJlQXVkaW8pOwotICAgIH0KLQot
ICAgIHJldHVybiBtX291dHB1dENvbnRleHQuZ2V0KCkuZGV2aWNlTmFtZTsKKyAgICByZXR1cm4g
bV9jb250ZXh0Lmhhc0FjdGl2ZVJvdXRlKCk7CiB9CiAKIFN0cmluZyBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29jb2E6OmRldmljZU5hbWUoKSBjb25zdAogewotICAgIGlmICghbV9vdXRwdXRDb250ZXh0
KQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIGlmICghW21fb3V0cHV0Q29u
dGV4dCBzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNlc10pCi0gICAgICAgIHJldHVybiBbbV9v
dXRwdXRDb250ZXh0IGRldmljZU5hbWVdOwotCi0gICAgYXV0byBvdXRwdXREZXZpY2VOYW1lcyA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotICAgIGZvciAoQVZPdXRw
dXREZXZpY2UgKm91dHB1dERldmljZSBpbiBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmljZXNd
KQotICAgICAgICBbb3V0cHV0RGV2aWNlTmFtZXMgYWRkT2JqZWN0OltvdXRwdXREZXZpY2UgZGV2
aWNlTmFtZV1dOwotCi0gICAgcmV0dXJuIFtvdXRwdXREZXZpY2VOYW1lcyBjb21wb25lbnRzSm9p
bmVkQnlTdHJpbmc6QCIgKyAiXTsKKyAgICByZXR1cm4gbV9jb250ZXh0LmRldmljZU5hbWUoKTsK
IH0KIAogTWVkaWFQbGF5YmFja1RhcmdldENvY29hKiB0b01lZGlhUGxheWJhY2tUYXJnZXRDb2Nv
YShNZWRpYVBsYXliYWNrVGFyZ2V0KiByZXApCkBAIC0xMjksNyArOTMsNyBAQCBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29jb2EqIHRvTWVkaWFQbGF5YmFja1RhcmdldENvY29hKE1lZGlhUGxheWJhY2tU
YXJnZXQqIHJlcCkKIAogY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENvY29hKiB0b01lZGlhUGxh
eWJhY2tUYXJnZXRDb2NvYShjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0KiByZXApCiB7Ci0gICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ocmVwLT50YXJnZXRUeXBlKCkgPT0gTWVk
aWFQbGF5YmFja1RhcmdldDo6QVZGb3VuZGF0aW9uKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHJlcC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJhY2tU
YXJnZXQ6OlRhcmdldFR5cGU6OkFWRm91bmRhdGlvbik7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSo+KHJlcCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCmluZGV4IDIwYjI0MTJmMTEzNjYzYzFmMzg2MmYyN2I2NjI0MDBmNmNkYjA3MmIu
LjBhYzA5M2U1MGNhMjk4MGM1OWEzMjdhMmMyZTg4MWVjZGZiMWJiZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQpAQCAtMjgyNCw3ICsyODI0LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjppc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKCkgY29uc3QK
IAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtX3BsYXliYWNrVGFyZ2V0KSB7
Ci0gICAgICAgIGlmIChtX3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5
YmFja1RhcmdldDo6QVZGb3VuZGF0aW9uKQorICAgICAgICBpZiAobV9wbGF5YmFja1RhcmdldC0+
dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6OlRhcmdldFR5cGU6OkFWRm91bmRh
dGlvbikKICAgICAgICAgICAgIHdpcmVsZXNzVGFyZ2V0ID0gbV9hdlBsYXllciAmJiBtX2F2UGxh
eWVyLmdldCgpLmV4dGVybmFsUGxheWJhY2tBY3RpdmU7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHdpcmVsZXNzVGFyZ2V0ID0gbV9zaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCAmJiBtX3Bs
YXliYWNrVGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpOwpAQCAtMjk2OCw3ICsyOTY4LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRXaXJlbGVzc1BsYXliYWNr
VGFyZ2V0KFJlZjxNZWRpYVBsYXkKIHsKICAgICBtX3BsYXliYWNrVGFyZ2V0ID0gV1RGTW92ZSh0
YXJnZXQpOwogCi0gICAgbV9vdXRwdXRDb250ZXh0ID0gbV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0
VHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6OkFWRm91bmRhdGlvbiA/IHRvTWVkaWFQbGF5
YmFja1RhcmdldENvY29hKG1fcGxheWJhY2tUYXJnZXQuZ2V0KCkpLT5vdXRwdXRDb250ZXh0KCkg
OiBudWxscHRyOworICAgIG1fb3V0cHV0Q29udGV4dCA9IG1fcGxheWJhY2tUYXJnZXQtPnRhcmdl
dFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpUYXJnZXRUeXBlOjpBVkZvdW5kYXRpb24g
PyB0b01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShtX3BsYXliYWNrVGFyZ2V0LmdldCgpKS0+dGFy
Z2V0Q29udGV4dCgpLm91dHB1dENvbnRleHQoKSA6IG51bGxwdHI7CiAKICAgICBJTkZPX0xPRyhM
T0dJREVOVElGSUVSKTsKIApAQCAtMjk4OCw3ICsyOTg4LDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29s
IHNob3UKIAogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsIHNob3VsZFBsYXkpOwogCi0gICAg
aWYgKG1fcGxheWJhY2tUYXJnZXQtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0
OjpBVkZvdW5kYXRpb24pIHsKKyAgICBpZiAobV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgp
ID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6OlRhcmdldFR5cGU6OkFWRm91bmRhdGlvbikgewogICAg
ICAgICBBVk91dHB1dENvbnRleHQgKm5ld0NvbnRleHQgPSBzaG91bGRQbGF5ID8gbV9vdXRwdXRD
b250ZXh0LmdldCgpIDogbmlsOwogCiAgICAgICAgIGlmICghbV9hdlBsYXllcikKQEAgLTMwMDUs
NyArMzAwNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0
U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCBzaG91CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBBU1NFUlQobV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09IE1lZGlh
UGxheWJhY2tUYXJnZXQ6Ok1vY2spOworICAgIEFTU0VSVChtX3BsYXliYWNrVGFyZ2V0LT50YXJn
ZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldDo6VGFyZ2V0VHlwZTo6TW9jayk7CiAKICAg
ICBzZXREZWxheUNhbGxiYWNrcyh0cnVlKTsKICAgICBhdXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTdjZTMzNTBkYThkZTJkMTM1ZTM2YTE5NDQyZTAzMGNlZjM1ZjU1NwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0LmgKQEAgLTAsMCArMSwxNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkK
K09CSkNfQ0xBU1MgQVZPdXRwdXRDb250ZXh0OworT0JKQ19DTEFTUyBOU0RhdGE7CisjZW5kaWYK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dCB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7CisgICAgICAgIE5v
bmUsCisgICAgICAgIEFWT3V0cHV0Q29udGV4dCwKKyAgICAgICAgU2VyaWFsaXplZEFWT3V0cHV0
Q29udGV4dCwKKyAgICAgICAgTW9jaywKKyAgICB9OworCisgICAgZW51bSBjbGFzcyBNb2NrU3Rh
dGUgOiB1aW50OF90IHsKKyAgICAgICAgVW5rbm93biA9IDAsCisgICAgICAgIE91dHB1dERldmlj
ZVVuYXZhaWxhYmxlID0gMSwKKyAgICAgICAgT3V0cHV0RGV2aWNlQXZhaWxhYmxlID0gMiwKKyAg
ICB9OworCisgICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQoKSA9IGRlZmF1bHQ7CisgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQoUmV0YWlu
UHRyPEFWT3V0cHV0Q29udGV4dD4mJik7CisKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dChSZXRhaW5QdHI8TlNEYXRhPiYmIHNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0LCBjb25zdCBTdHJp
bmcmIGRldmljZU5hbWUsIGJvb2wgaGFzQWN0aXZlUm91dGUsIGJvb2wgc3VwcG9ydHNSZW1vdGVW
aWRlb1BsYXliYWNrKQorICAgICAgICA6IG1fdHlwZShUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRD
b250ZXh0KQorICAgICAgICAsIG1fc2VyaWFsaXplZE91dHB1dENvbnRleHQoV1RGTW92ZShzZXJp
YWxpemVkT3V0cHV0Q29udGV4dCkpCisgICAgICAgICwgbV9kZXZpY2VOYW1lKGRldmljZU5hbWUp
CisgICAgICAgICwgbV9oYXNBY3RpdmVSb3V0ZShoYXNBY3RpdmVSb3V0ZSkKKyAgICAgICAgLCBt
X3N1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjayhzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2sp
CisgICAgeworICAgICAgICBBU1NFUlQoc2VyaWFsaXplZE91dHB1dENvbnRleHQpOworICAgIH0K
KworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KGNvbnN0IFN0cmluZyYgZGV2aWNlTmFt
ZSwgTW9ja1N0YXRlIHN0YXRlKQorICAgICAgICA6IG1fdHlwZShUeXBlOjpNb2NrKQorICAgICAg
ICAsIG1fZGV2aWNlTmFtZShkZXZpY2VOYW1lKQorICAgICAgICAsIG1faGFzQWN0aXZlUm91dGUo
dHJ1ZSkKKyAgICAgICAgLCBtX3N1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjayh0cnVlKQorICAg
ICAgICAsIG1fbW9ja1N0YXRlKHN0YXRlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBUeXBlOjpNb2NrKTsKKyAgICB9CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGU7IH0KKyAgICBjb25zdCBTdHJpbmcmIGRldmljZU5hbWUoKSBjb25zdCB7IHJldHVybiBt
X2RldmljZU5hbWU7IH0KKyAgICBib29sIGhhc0FjdGl2ZVJvdXRlKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNBY3RpdmVSb3V0ZTsgfQorICAgIGJvb2wgc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNr
KCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2s7IH0KKworICAg
IE1vY2tTdGF0ZSBtb2NrU3RhdGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBUeXBlOjpNb2NrKTsKKyAgICAgICAgcmV0dXJuIG1fbW9ja1N0YXRlOworICAgIH0KKwor
ICAgIFJldGFpblB0cjxBVk91dHB1dENvbnRleHQ+IG91dHB1dENvbnRleHQoKSBjb25zdAorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpBVk91dHB1dENvbnRleHQpOworICAg
ICAgICByZXR1cm4gbV9vdXRwdXRDb250ZXh0OworICAgIH0KKworICAgIFJldGFpblB0cjxOU0Rh
dGE+IHNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gVHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCk7CisgICAgICAgIHJl
dHVybiBtX3NlcmlhbGl6ZWRPdXRwdXRDb250ZXh0OworICAgIH0KKworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgc2VyaWFsaXplT3V0cHV0Q29udGV4dCgpOworICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgZGVzZXJpYWxpemVPdXRwdXRDb250ZXh0KCk7CisKKyAgICBib29sIGVuY29kaW5nUmVxdWly
ZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6QVZPdXRwdXRD
b250ZXh0IHx8IG1fdHlwZSA9PSBUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0OyB9CisK
K3ByaXZhdGU6CisgICAgVHlwZSBtX3R5cGUgeyBUeXBlOjpOb25lIH07CisgICAgUmV0YWluUHRy
PEFWT3V0cHV0Q29udGV4dD4gbV9vdXRwdXRDb250ZXh0OworICAgIFJldGFpblB0cjxOU0RhdGE+
IG1fc2VyaWFsaXplZE91dHB1dENvbnRleHQ7CisKKyAgICBTdHJpbmcgbV9kZXZpY2VOYW1lOwor
ICAgIGJvb2wgbV9oYXNBY3RpdmVSb3V0ZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX3N1cHBvcnRz
UmVtb3RlVmlkZW9QbGF5YmFjayB7IGZhbHNlIH07CisKKyAgICBNb2NrU3RhdGUgbV9tb2NrU3Rh
dGUgeyBNb2NrU3RhdGU6OlVua25vd24gfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMg
PSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6VHlwZSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5
cGU6Ok5vbmUsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpU
eXBlOjpBVk91dHB1dENvbnRleHQsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0LAorICAgICAgICBXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6TW9jaworICAgID47Cit9Owor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpNb2NrU3RhdGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAor
ICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlLAor
ICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpV
bmtub3duLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9j
a1N0YXRlOjpPdXRwdXREZXZpY2VVbmF2YWlsYWJsZSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6T3V0cHV0RGV2aWNlQXZhaWxhYmxlCisg
ICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDYyYTE1ZmM2YzE3OWNkNDUwYzA0NDUyN2E2OWU1MmYyMzY3MWU4MAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lm1tCkBAIC0wLDAgKzEsMTI5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0LmgiCisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorCisjaW1w
b3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgor
I2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaD4KKyNpbXBvcnQgPHBhbC9j
b2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChSZXRh
aW5QdHI8QVZPdXRwdXRDb250ZXh0PiYmIG91dHB1dENvbnRleHQpCisgICAgOiBtX291dHB1dENv
bnRleHQob3V0cHV0Q29udGV4dCkKK3sKKyAgICBpZiAoIW1fb3V0cHV0Q29udGV4dCkgeworICAg
ICAgICBtX3R5cGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6Tm9uZTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fdHlwZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQ7CisKKyAgICBpZiAoIVttX291dHB1dENvbnRl
eHQgc3VwcG9ydHNNdWx0aXBsZU91dHB1dERldmljZXNdKQorICAgICAgICBtX2RldmljZU5hbWUg
PSBbbV9vdXRwdXRDb250ZXh0IGRldmljZU5hbWVdOworICAgIGVsc2UgeworICAgICAgICBhdXRv
IG91dHB1dERldmljZU5hbWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
XSk7CisgICAgICAgIGZvciAoQVZPdXRwdXREZXZpY2UgKm91dHB1dERldmljZSBpbiBbbV9vdXRw
dXRDb250ZXh0IG91dHB1dERldmljZXNdKQorICAgICAgICAgICAgW291dHB1dERldmljZU5hbWVz
IGFkZE9iamVjdDpbb3V0cHV0RGV2aWNlIGRldmljZU5hbWVdXTsKKworICAgICAgICBtX2Rldmlj
ZU5hbWUgPSBbb3V0cHV0RGV2aWNlTmFtZXMgY29tcG9uZW50c0pvaW5lZEJ5U3RyaW5nOkAiICsg
Il07CisgICAgfQorCisgICAgaWYgKFttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNlcyldICYmIFttX291dHB1dENv
bnRleHQgc3VwcG9ydHNNdWx0aXBsZU91dHB1dERldmljZXNdICYmIFttX291dHB1dENvbnRleHQg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdXRwdXREZXZpY2VzKV0pIHsKKyAgICAgICAg
Zm9yIChBVk91dHB1dERldmljZSAqb3V0cHV0RGV2aWNlIGluIFttX291dHB1dENvbnRleHQgb3V0
cHV0RGV2aWNlc10pIHsKKyAgICAgICAgICAgIGlmIChvdXRwdXREZXZpY2UuZGV2aWNlRmVhdHVy
ZXMgJiAoQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8gfCBBVk91dHB1dERldmljZUZlYXR1cmVB
dWRpbykpCisgICAgICAgICAgICAgICAgbV9oYXNBY3RpdmVSb3V0ZSA9IHRydWU7CisgICAgICAg
IH0KKyAgICB9IGVsc2UgaWYgKFttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihvdXRwdXREZXZpY2UpXSkgeworICAgICAgICBpZiAoYXV0byAqb3V0cHV0RGV2aWNl
ID0gW21fb3V0cHV0Q29udGV4dCBvdXRwdXREZXZpY2VdKQorICAgICAgICAgICAgbV9oYXNBY3Rp
dmVSb3V0ZSA9IG91dHB1dERldmljZS5kZXZpY2VGZWF0dXJlcyAmIChBVk91dHB1dERldmljZUZl
YXR1cmVWaWRlbyB8IEFWT3V0cHV0RGV2aWNlRmVhdHVyZUF1ZGlvKTsKKyAgICB9IGVsc2UKKyAg
ICAgICAgbV9oYXNBY3RpdmVSb3V0ZSA9IG1fb3V0cHV0Q29udGV4dC5nZXQoKS5kZXZpY2VOYW1l
OworCisgICAgaWYgKCFbbV9vdXRwdXRDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3Ioc3VwcG9ydHNNdWx0aXBsZU91dHB1dERldmljZXMpXSB8fCAhW21fb3V0cHV0Q29udGV4dCBz
dXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNlc10gfHwgIVttX291dHB1dENvbnRleHQgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdXRwdXREZXZpY2VzKV0pIHsKKyAgICAgICAgaWYgKGF1
dG8gKm91dHB1dERldmljZSA9IFttX291dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlXSkgeworICAg
ICAgICAgICAgaWYgKG91dHB1dERldmljZS5kZXZpY2VGZWF0dXJlcyAmIEFWT3V0cHV0RGV2aWNl
RmVhdHVyZVZpZGVvKQorICAgICAgICAgICAgICAgIG1fc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXli
YWNrID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAoQVZPdXRw
dXREZXZpY2UgKm91dHB1dERldmljZSBpbiBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmljZXNd
KSB7CisgICAgICAgICAgICBpZiAob3V0cHV0RGV2aWNlLmRldmljZUZlYXR1cmVzICYgQVZPdXRw
dXREZXZpY2VGZWF0dXJlVmlkZW8pCisgICAgICAgICAgICAgICAgbV9zdXBwb3J0c1JlbW90ZVZp
ZGVvUGxheWJhY2sgPSB0cnVlOworICAgICAgICB9CisgICAgfQorfQorCitib29sIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpzZXJpYWxpemVPdXRwdXRDb250ZXh0KCkKK3sKKyAgICBBU1NF
UlQobV90eXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENv
bnRleHQpOworICAgIGlmIChtX3R5cGUgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5
cGU6OkFWT3V0cHV0Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBh
cmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRSZXF1aXJpbmdT
ZWN1cmVDb2Rpbmc6WUVTXSk7CisgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDptX291dHB1dENv
bnRleHQuZ2V0KCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CisgICAgW2Fy
Y2hpdmVyIGZpbmlzaEVuY29kaW5nXTsKKworICAgIG1fc2VyaWFsaXplZE91dHB1dENvbnRleHQg
PSBbYXJjaGl2ZXIgZW5jb2RlZERhdGFdOworICAgIG1fdHlwZSA9IE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0OworICAgIG1fb3V0cHV0
Q29udGV4dC5jbGVhcigpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OmRlc2VyaWFsaXplT3V0cHV0Q29udGV4dCgpCit7CisgICAgQVNT
RVJUKG1fdHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6U2VyaWFsaXpl
ZEFWT3V0cHV0Q29udGV4dCk7CisgICAgaWYgKG1fdHlwZSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CisgICAgYXV0byB1bmFyY2hpdmVy
ID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ0Zyb21E
YXRhOm1fc2VyaWFsaXplZE91dHB1dENvbnRleHQuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pOworICAg
IHVuYXJjaGl2ZXIuZ2V0KCkuZGVjb2RpbmdGYWlsdXJlUG9saWN5ID0gTlNEZWNvZGluZ0ZhaWx1
cmVQb2xpY3lSYWlzZUV4Y2VwdGlvbjsKKyAgICBhdXRvIGFsbG93ZWRDbGFzc1NldCA9IGFkb3B0
TlMoW1tOU1NldCBhbGxvY10gaW5pdFdpdGhBcnJheTpAWyBQQUw6OmdldEFWT3V0cHV0Q29udGV4
dENsYXNzKCkgXV0pOworCisgICAgQHRyeSB7CisgICAgICAgIGlkIHJlc3VsdCA9IFt1bmFyY2hp
dmVyIGRlY29kZU9iamVjdE9mQ2xhc3NlczphbGxvd2VkQ2xhc3NTZXQuZ2V0KCkgZm9yS2V5Ok5T
S2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CisgICAgICAgIEFTU0VSVCghcmVzdWx0IHx8IFty
ZXN1bHQgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKTsKKyAg
ICAgICAgbV9vdXRwdXRDb250ZXh0ID0gcmVzdWx0OworICAgICAgICBtX3R5cGUgPSBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0OworICAgICAgICBtX3Nl
cmlhbGl6ZWRPdXRwdXRDb250ZXh0LmNsZWFyKCk7CisgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwor
ICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CisgICAgICAgIExPR19FUlJP
UigiRmFpbGVkIHRvIGRlY29kZSBvYmplY3Qgb2YgY2xhc3MgQVZPdXRwdXRDb250ZXh0IDogJUAi
LCBleGNlcHRpb24pOworICAgIH0gQGZpbmFsbHkgeworICAgICAgICBbdW5hcmNoaXZlciBmaW5p
c2hEZWNvZGluZ107CisgICAgICAgIHVuYXJjaGl2ZXIuZ2V0KCkuZGVsZWdhdGUgPSBuaWw7Cisg
ICAgfQorCisgICAgcmV0dXJuIHN1Y2Nlc3M7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2su
Y3BwCmluZGV4IDQ1NWNlZmM5ZjZmMGRmNDE5Njc3OGY3NTE5ZmI4YmI3MWY1NWQ1MjEuLjA0MGYz
ZWUwZmY3NjVmMzk2YWE4ZmQ3NjJiNWI5NDQ1ZWY0ODY4ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suY3BwCkBA
IC0zMCwxNSArMzAsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TWVkaWFQbGF5
YmFja1RhcmdldD4gTWVkaWFQbGF5YmFja1RhcmdldE1vY2s6OmNyZWF0ZShjb25zdCBTdHJpbmcm
IG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKK1JlZjxNZWRp
YVBsYXliYWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhuYW1l
LCBzdGF0ZSkpOwogfQogCi1NZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6TWVkaWFQbGF5YmFja1Rh
cmdldE1vY2soY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
U3RhdGUgc3RhdGUpCi0gICAgOiBNZWRpYVBsYXliYWNrVGFyZ2V0KCkKLSAgICAsIG1fbmFtZShu
YW1lKQotICAgICwgbV9zdGF0ZShzdGF0ZSkKK01lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpNZWRp
YVBsYXliYWNrVGFyZ2V0TW9jayhjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCisgICAgOiBtX2NvbnRleHQobmFtZSwgc3RhdGUp
CiB7CiB9CiAKQEAgLTQ2LDcgKzQ0LDYgQEAgTWVkaWFQbGF5YmFja1RhcmdldE1vY2s6On5NZWRp
YVBsYXliYWNrVGFyZ2V0TW9jaygpID0gZGVmYXVsdDsKIAogY29uc3QgTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQmIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjp0YXJnZXRDb250ZXh0KCkgY29u
c3QKIHsKLSAgICBtX2NvbnRleHQgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChtX25hbWUs
IG1fc3RhdGUpOwogICAgIHJldHVybiBtX2NvbnRleHQ7CiB9CiAKQEAgLTU3LDcgKzU0LDcgQEAg
TWVkaWFQbGF5YmFja1RhcmdldE1vY2sqIHRvTWVkaWFQbGF5YmFja1RhcmdldE1vY2soTWVkaWFQ
bGF5YmFja1RhcmdldCogcmVwKQogCiBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayogdG9N
ZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0KiByZXApCiB7
Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ocmVwLT50YXJnZXRUeXBlKCkg
PT0gTWVkaWFQbGF5YmFja1RhcmdldDo6TW9jayk7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihyZXAtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFy
Z2V0OjpUYXJnZXRUeXBlOjpNb2NrKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTWVk
aWFQbGF5YmFja1RhcmdldE1vY2sqPihyZXApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmgKaW5kZXggY2Q0NDli
MDNjMTEzMTA2NjUyOTRjYjg5MjRkZjBlNGVlYWExM2Y0Yy4uMDcyYzhkZDA0ODRlMzUxNmI1MmZm
MDI5MDA0YzFmMDRlNTMwNWE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaApAQCAtMzYsMjYgKzM2LDIyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldE1vY2sgOiBwdWJs
aWMgTWVkaWFQbGF5YmFja1RhcmdldCB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKTsKIAogICAgIHZpcnR1YWwgfk1lZGlhUGxheWJh
Y2tUYXJnZXRNb2NrKCk7CiAKLSAgICBUYXJnZXRUeXBlIHRhcmdldFR5cGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBNb2NrOyB9CisgICAgVGFyZ2V0VHlwZSB0YXJnZXRUeXBlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gTWVkaWFQbGF5YmFja1RhcmdldDo6VGFyZ2V0VHlwZTo6TW9jazsgfQogCiAg
ICAgY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldENvbnRleHQoKSBjb25z
dCBmaW5hbDsKKyAgICBib29sIGhhc0FjdGl2ZVJvdXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9jb250ZXh0Lmhhc0FjdGl2ZVJvdXRlKCk7IH0KKyAgICBTdHJpbmcgZGV2aWNlTmFtZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fY29udGV4dC5kZXZpY2VOYW1lKCk7IH0KKyAgICBib29sIHN1
cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29udGV4
dC5zdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKTsgfQogCi0gICAgYm9vbCBoYXNBY3RpdmVS
b3V0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX25hbWUuaXNFbXB0eSgpOyB9Ci0gICAgYm9v
bCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9u
YW1lLmlzRW1wdHkoKTsgfQotCi0gICAgU3RyaW5nIGRldmljZU5hbWUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX25hbWU7IH0KLQotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0
ZSBzdGF0ZSgpIGNvbnN0OworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3Rh
dGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQubW9ja1N0YXRlKCk7IH0KIAogcHJv
dGVjdGVkOgotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKGNvbnN0IFN0cmluZyYsIE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgTWVkaWFQbGF5YmFja1RhcmdldE1v
Y2soY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSk7
CiAKLSAgICBTdHJpbmcgbV9uYW1lOwotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpT
dGF0ZSBtX3N0YXRlIHsgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlVua25vd24gfTsKICAg
ICBtdXRhYmxlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IG1fY29udGV4dDsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlck1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyTW9jay5jcHAKaW5kZXggNDRmNDE0N2ExOTE4MDc1NDcyZWRjM2ExMjE4
OTkyN2Q3ZTkyNWVmMS4uM2IwY2E2YTc4MzcyM2Y4Zjk4ZDIyNjBhYWI2YWI1YTU2MWVlMWM0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlck1vY2s6On5NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jaygpCiBi
b29sIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpleHRlcm5hbE91dHB1dERldmljZUF2
YWlsYWJsZSgpCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1v
Y2s6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlIik7Ci0gICAgcmV0dXJuIG1fc3RhdGUg
PT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok91dHB1dERldmljZUF2YWlsYWJsZTsKKyAg
ICByZXR1cm4gbV9zdGF0ZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRl
OjpPdXRwdXREZXZpY2VBdmFpbGFibGU7CiB9CiAKIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6cGxheWJhY2tUYXJnZXQoKQpAQCAtODUsMTAg
Kzg1LDEwIEBAIHZvaWQgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnN0YXJ0aW5nTW9u
aXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpCiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlck1vY2s6OnN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cyIpOwogCiAg
ICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3RoaXNdIHsKLSAgICAgICAgaWYgKG1fc3RhdGUg
PT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok91dHB1dERldmljZUF2YWlsYWJsZSkKKyAg
ICAgICAgaWYgKG1fc3RhdGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0
ZTo6T3V0cHV0RGV2aWNlQXZhaWxhYmxlKQogICAgICAgICAgICAgYXZhaWxhYmxlRGV2aWNlc0Rp
ZENoYW5nZSgpOwogCi0gICAgICAgIGlmICghbV9kZXZpY2VOYW1lLmlzRW1wdHkoKSAmJiBtX3N0
YXRlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpVbmtub3duKQorICAgICAgICBpZiAo
IW1fZGV2aWNlTmFtZS5pc0VtcHR5KCkgJiYgbV9zdGF0ZSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6TW9ja1N0YXRlOjpVbmtub3duKQogICAgICAgICAgICAgY3VycmVudERldmljZURp
ZENoYW5nZSgpOwogICAgIH0pOwogfQpAQCAtMTAxLDE1ICsxMDEsMTUgQEAgdm9pZCBNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyTW9jazo6c3RvcE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKQog
dm9pZCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6aW52YWxpZGF0ZVBsYXliYWNrVGFy
Z2V0cygpCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6
OmludmFsaWRhdGVQbGF5YmFja1RhcmdldHMiKTsKLSAgICBzZXRTdGF0ZShlbXB0eVN0cmluZygp
LCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VW5rbm93bik7CisgICAgc2V0U3RhdGUoZW1w
dHlTdHJpbmcoKSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93
bik7CiB9CiAKLXZvaWQgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnNldFN0YXRlKGNv
bnN0IFN0cmluZyYgZGV2aWNlTmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRl
IHN0YXRlKQordm9pZCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6c2V0U3RhdGUoY29u
c3QgU3RyaW5nJiBkZXZpY2VOYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0
YXRlIHN0YXRlKQogewogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJN
b2NrOjpzZXRTdGF0ZSAtIG5hbWUgPSAlcywgc3RhdGUgPSAweCV4IiwgZGV2aWNlTmFtZS51dGY4
KCkuZGF0YSgpLCAodW5zaWduZWQpc3RhdGUpOwogCiAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRh
c2soW3RoaXMsIHN0YXRlLCBkZXZpY2VOYW1lXSB7Ci0gICAgICAgIGlmIChkZXZpY2VOYW1lICE9
IG1fZGV2aWNlTmFtZSAmJiBzdGF0ZSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VW5r
bm93bikgeworICAgICAgICBpZiAoZGV2aWNlTmFtZSAhPSBtX2RldmljZU5hbWUgJiYgc3RhdGUg
IT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93bikgewogICAg
ICAgICAgICAgbV9kZXZpY2VOYW1lID0gZGV2aWNlTmFtZTsKICAgICAgICAgICAgIGN1cnJlbnRE
ZXZpY2VEaWRDaGFuZ2UoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oCmluZGV4
IGRlMDk2Y2I4ODFmODI0MjExMTY1OGI4ZDIxODM5ZjljODg1ZDRiY2UuLjNlNzQzOTViZjE2Yjhl
N2M4Y2U5Zjk3MjBlNzU5NGU0ZjJjODdlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgKQEAg
LTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcE1vbml0b3JpbmdQbGF5YmFja1Rh
cmdldHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGludmFsaWRhdGVQbGF5YmFja1RhcmdldHMoKSBv
dmVycmlkZTsKIAotICAgIHZvaWQgc2V0U3RhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6OlN0YXRlKTsKKyAgICB2b2lkIHNldFN0YXRlKGNvbnN0IFN0cmluZyYs
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpOwogICAgIHZvaWQgZGlzbWlz
c1BvcHVwKCk7CiAKIHByaXZhdGU6CkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAKICAgICBT
dHJpbmcgbV9kZXZpY2VOYW1lOwogICAgIEdlbmVyaWNUYXNrUXVldWU8VGltZXI+IG1fdGFza1F1
ZXVlOwotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBtX3N0YXRlIHsgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlVua25vd24gfTsKKyAgICBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6TW9ja1N0YXRlIG1fc3RhdGUgeyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6TW9ja1N0YXRlOjpVbmtub3duIH07CiAgICAgYm9vbCBtX3Nob3dpbmdNZW51IHsgZmFsc2Ug
fTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAzNDQ5MmJhZjgx
MTRjOTQ2ZDYzMDFhMGY2MDA2ZDVkZjE5MzQ2Y2EzLi5jMzgwMTE2OTRiYWZhY2M4YTFmNjdmZjA4
NWFmZTQ0YWJiYmMyYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC01
NTksNyArNTU5LDcgQEAgdm9pZCBJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoUGFn
ZSYgcGFnZSkKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgcGFn
ZS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQodHJ1ZSk7Ci0gICAgcGFn
ZS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGVtcHR5U3RyaW5nKCksIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpVbmtub3duKTsKKyAgICBwYWdlLnNldE1vY2tNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoZW1wdHlTdHJpbmcoKSwgTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93bik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShW
SURFTykKQEAgLTQ1MTAsMTQgKzQ1MTAsMTQgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxz
OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYKICAg
ICBQYWdlKiBwYWdlID0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPnBhZ2UoKTsKICAgICBB
U1NFUlQocGFnZSk7CiAKLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3Rh
dGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VW5rbm93bjsKKyAgICBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlID0gTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93bjsKIAogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShkZXZpY2VTdGF0ZSwgImRldmljZWF2YWlsYWJsZSIpKQotICAgICAgICBzdGF0
ZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpPdXRwdXREZXZpY2VBdmFpbGFibGU7Cisg
ICAgICAgIHN0YXRlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6T3V0
cHV0RGV2aWNlQXZhaWxhYmxlOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKGRldmljZVN0YXRlLCAiZGV2aWNldW5hdmFpbGFibGUiKSkKLSAgICAgICAgc3RhdGUg
PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6T3V0cHV0RGV2aWNlVW5hdmFpbGFibGU7Cisg
ICAgICAgIHN0YXRlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6T3V0
cHV0RGV2aWNlVW5hdmFpbGFibGU7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZGV2aWNlU3RhdGUsICJ1bmtub3duIikpCi0gICAgICAgIHN0YXRlID0gTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OlVua25vd247CisgICAgICAgIHN0YXRlID0gTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93bjsKICAgICBlbHNlCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHku
Y3BwCmluZGV4IGJkMTkxZTU3MWQ3MWYyMTA3ZGZmZWM1ZGZiMjRiMGQ0NDZkY2NlNjcuLjE4OGZi
MGMzMTNmZmFmMGMyNWVjY2RhNzQ2ZDY3YzFhYzJhN2Y3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAK
QEAgLTU5LDYgKzU5LDcgQEAKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oPgogI2VuZGlmCiAKQEAgLTY5NywyMCArNjk4LDIx
IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tU
YXJnZXQoYm9vbCBzaG91bGRQbGF5KQogICAgIG1fcGxheWVyLT5zZXRTaG91bGRQbGF5VG9QbGF5
YmFja1RhcmdldChzaG91bGRQbGF5KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5
OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0JiB0YXJnZXRDb250ZXh0KQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5
OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiYg
dGFyZ2V0Q29udGV4dCkKIHsKICAgICBzd2l0Y2ggKHRhcmdldENvbnRleHQudHlwZSgpKSB7Ci0g
ICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6QVZPdXRwdXRDb250ZXh0VHlwZToK
LSAgICAgICAgbV9wbGF5ZXItPnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUodGFyZ2V0Q29udGV4dC5hdk91dHB1dENvbnRl
eHQoKSkpOworICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlh
bGl6ZWRBVk91dHB1dENvbnRleHQ6IHsKKyAgICAgICAgaWYgKHRhcmdldENvbnRleHQuZGVzZXJp
YWxpemVPdXRwdXRDb250ZXh0KCkpCisgICAgICAgICAgICBtX3BsYXllci0+c2V0V2lyZWxlc3NQ
bGF5YmFja1RhcmdldChNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZShXVEZNb3ZlKHRh
cmdldENvbnRleHQpKSk7CiAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrOgogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBj
YXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrVHlwZToKLSAgICAgICAgbV9wbGF5
ZXItPnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dE1vY2s6OmNyZWF0ZSh0YXJnZXRDb250ZXh0Lm1vY2tEZXZpY2VOYW1lKCksIHRhcmdldENvbnRl
eHQubW9ja1N0YXRlKCkpKTsKKyAgICAgICAgbV9wbGF5ZXItPnNldFdpcmVsZXNzUGxheWJhY2tU
YXJnZXQoTWVkaWFQbGF5YmFja1RhcmdldE1vY2s6OmNyZWF0ZSh0YXJnZXRDb250ZXh0LmRldmlj
ZU5hbWUoKSwgdGFyZ2V0Q29udGV4dC5tb2NrU3RhdGUoKSkpOwogICAgICAgICBicmVhazsKLSNl
bHNlCi0gICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1R5cGU6CiAjZW5k
aWYKLSAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpOb25lOgorICAgIGNhc2Ug
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dDoKKyAgICBj
YXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpOb25lOgogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5k
ZXggMjRiNjY0MWFlNGY1ZjFlN2RmYzEwNTM3NDEzZjBlOWNmZDI1ZTIzZi4uYmRhZWU4YWUwNWYx
MGZhNDY1NzMzNDNmNDc5YzQyOTNkNDdkZjZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBAIC0xNTIsNyAr
MTUyLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAg
ICAgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sKTsKICAgICB2b2lk
IHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpOwotICAgIHZvaWQgc2V0V2lyZWxl
c3NQbGF5YmFja1RhcmdldChjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dCYpOworICAgIHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChXZWJDb3JlOjpNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dCYmKTsKICAgICB2b2lkIG1lZGlhUGxheWVyQ3VycmVudFBsYXli
YWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoYm9vbCkgZmluYWw7CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnND
b2NvYS5tbQppbmRleCBiZjg4YWI2MTdiZTEyMWI0YWY3YmM0Y2QzYzRmYzE5N2RkYTU5NzgyLi4y
OThkODVkMmEwNjRjYTRhYWNlOWFlZTNiZGQ0NTk4MzhjNzBiNmUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5t
bQpAQCAtNDEsMTQgKzQxLDIzIEBACiAjaW1wb3J0IDxVSUtpdC9VSUZvbnQuaD4KICNlbmRpZgog
CisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyNpbXBvcnQgPFdlYkNvcmUv
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4KKyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgor
I2VuZGlmCisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2luY2x1ZGUgPFdlYktpdEFk
ZGl0aW9ucy9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYUFkZGl0aW9ucy5tbT4KKyNlbmRpZgor
CiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBv
cnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaD4KICNpbXBvcnQgPHBhbC9j
b2NvYS9QYXNzS2l0U29mdExpbmsuaD4KICNlbmRpZgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29j
b2FBZGRpdGlvbnMubW0+CisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyNp
bXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgogI2VuZGlmCiAKIG5hbWVz
cGFjZSBJUEMgewpAQCAtNjA2LDQgKzYxNSw0NSBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZQog
ICAgIHJldHVybiB0cnVlOwogfQogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dD46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0KQoreworICAgIGlmICh0YXJnZXQudHlwZSgpID09IE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQpIHsKKyAgICAg
ICAgaWYgKFtQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgY29uZm9ybXNUb1Byb3RvY29s
OkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQorICAgICAgICAgICAgZW5jb2RlciA8PCB0YXJn
ZXQub3V0cHV0Q29udGV4dCgpOworICAgIH0gZWxzZSBpZiAodGFyZ2V0LnR5cGUoKSA9PSBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCkK
KyAgICAgICAgZW5jb2RlciA8PCB0YXJnZXQuc2VyaWFsaXplZE91dHB1dENvbnRleHQoKTsKKyAg
ICBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitib29sIEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0Zm9y
bURhdGEoRGVjb2RlciYgZGVjb2RlciwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGUg
Y29udGV4dFR5cGUsIGNvbnN0IFN0cmluZyYgZGV2aWNlTmFtZSwgYm9vbCBoYXNBY3RpdmVSb3V0
ZSwgYm9vbCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2ssIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0JiB0YXJnZXQpCit7CisgICAgQVNTRVJUKGNvbnRleHRUeXBlICE9IE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrKTsKKworICAgIGlmIChjb250ZXh0VHlwZSA9PSBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0KSB7CisgICAg
ICAgIGlmICghW1BBTDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9j
b2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgYXV0byBvdXRwdXRDb250ZXh0ID0gSVBDOjpkZWNvZGU8QVZPdXRwdXRDb250
ZXh0PihkZWNvZGVyLCBQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkpOworICAgICAgICBp
ZiAoIW91dHB1dENvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
dGFyZ2V0ID0gV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQgeyBXVEZNb3ZlKCpv
dXRwdXRDb250ZXh0KSB9OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAo
Y29udGV4dFR5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6
ZWRBVk91dHB1dENvbnRleHQpIHsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gc2VyaWFsaXpl
ZE91dHB1dENvbnRleHQ7CisgICAgICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2Rlciwgc2VyaWFs
aXplZE91dHB1dENvbnRleHQpIHx8ICFzZXJpYWxpemVkT3V0cHV0Q29udGV4dCkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB0YXJnZXQgPSBXZWJDb3JlOjpNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dCB7IFdURk1vdmUoc2VyaWFsaXplZE91dHB1dENvbnRleHQpLCBkZXZp
Y2VOYW1lLCBoYXNBY3RpdmVSb3V0ZSwgc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrIH07Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDI1NWEyY2JjNmM3N2NlZjFlNjA3MGVhNDIwZjZiZGU5
MGIyNDBhNzEuLjk1Yjk0OWU1YjFhZWE0Y2I3ODFkZDdjODhmNjI5NTIwNjFhNDFmMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjQ1
NywxNyArMjQ1NywyMCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8TWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTQogICAgIGJvb2wgaGFzUGxh
dGZvcm1EYXRhID0gdGFyZ2V0LmVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKTsKICAgICBl
bmNvZGVyIDw8IGhhc1BsYXRmb3JtRGF0YTsKIAotICAgIGludDMyX3QgdGFyZ2V0VHlwZSA9IHRh
cmdldC50eXBlKCk7Ci0gICAgZW5jb2RlciA8PCB0YXJnZXRUeXBlOworICAgIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpUeXBlIGNvbnRleHRUeXBlID0gdGFyZ2V0LnR5cGUoKTsKKyAgICBl
bmNvZGVyIDw8IGNvbnRleHRUeXBlOworCisgICAgZW5jb2RlciA8PCB0YXJnZXQuZGV2aWNlTmFt
ZSgpOworICAgIGVuY29kZXIgPDwgdGFyZ2V0Lmhhc0FjdGl2ZVJvdXRlKCk7CisgICAgZW5jb2Rl
ciA8PCB0YXJnZXQuc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrKCk7CiAKICAgICBpZiAodGFy
Z2V0LmVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSkgewogICAgICAgICBlbmNvZGVQbGF0
Zm9ybURhdGEoZW5jb2RlciwgdGFyZ2V0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IEFTU0VSVCh0YXJnZXRUeXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrVHlw
ZSk7Ci0gICAgZW5jb2RlciA8PCB0YXJnZXQubW9ja0RldmljZU5hbWUoKTsKLSAgICBlbmNvZGVy
IDw8IHN0YXRpY19jYXN0PGludDMyX3Q+KHRhcmdldC5tb2NrU3RhdGUoKSk7CisgICAgQVNTRVJU
KGNvbnRleHRUeXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrKTsK
KyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHRhcmdldC5tb2NrU3RhdGUoKSk7
CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0
KQpAQCAtMjQ3NiwyNCArMjQ3OSwzMSBAQCBib29sIEFyZ3VtZW50Q29kZXI8TWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTWVkaWFQbAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaGFzUGxhdGZvcm1EYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgaW50MzJfdCB0YXJnZXRUeXBlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGFy
Z2V0VHlwZSkpCisgICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGUgY29udGV4dFR5
cGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb250ZXh0VHlwZSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGlmIChoYXNQbGF0Zm9ybURhdGEpCi0gICAgICAgIHJldHVybiBkZWNv
ZGVQbGF0Zm9ybURhdGEoZGVjb2RlciwgdGFyZ2V0KTsKKyAgICBTdHJpbmcgZGV2aWNlTmFtZTsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmljZU5hbWUpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBBU1NFUlQodGFyZ2V0VHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6TW9ja1R5cGUpOworICAgIGJvb2wgaGFzQWN0aXZlUm91dGU7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShoYXNBY3RpdmVSb3V0ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFN0
cmluZyBtb2NrRGV2aWNlTmFtZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1vY2tEZXZpY2VO
YW1lKSkKKyAgICBib29sIHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjazsKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGludDMyX3QgbW9ja1N0YXRlOworICAgIGlmIChoYXNQbGF0Zm9ybURh
dGEpCisgICAgICAgIHJldHVybiBkZWNvZGVQbGF0Zm9ybURhdGEoZGVjb2RlciwgY29udGV4dFR5
cGUsIGRldmljZU5hbWUsIGhhc0FjdGl2ZVJvdXRlLCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJh
Y2ssIHRhcmdldCk7CisKKyAgICBBU1NFUlQoY29udGV4dFR5cGUgPT0gTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6OlR5cGU6Ok1vY2spOworICAgIHVpbnQ4X3QgbW9ja1N0YXRlOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUobW9ja1N0YXRlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgdGFyZ2V0ID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQobW9ja0RldmljZU5hbWUsIHN0
YXRpY19jYXN0PE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZT4obW9ja1N0YXRlKSk7
CisgICAgdGFyZ2V0ID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQoZGV2aWNlTmFtZSwgc3Rh
dGljX2Nhc3Q8TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZT4obW9ja1N0YXRl
KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggYmIzMjQ5MDc5MzRmMzBmYTRiNzdmMzJiYzcz
YmEzMmY0OTg0MjhmMy4uNzQ4ZWIyZWIwNmEyZjNiMTJiNWYyZWFhOTI5NzRlOGI4YjgwMjMwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlRGF0YS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSW5kZXhlZERCLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnB1dE1vZGUuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1h
Z2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkTWV0cmljcy5oPgpAQCAtMTk1LDEw
ICsxOTYsNiBAQCBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CiBjbGFzcyBDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXI7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpCi1jbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDsKLSNlbmRpZgotCiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIHN0cnVjdCBNZWRpYUNvbnN0cmFpbnRzOwogI2VuZGlm
CkBAIC02NDQsNyArNjQxLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmKTsK
ICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYpOwogICAgIHN0YXRpYyB2b2lkIGVuY29k
ZVBsYXRmb3JtRGF0YShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQmKTsKLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlUGxh
dGZvcm1EYXRhKERlY29kZXImLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYp
OworICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVQbGF0Zm9ybURhdGEo
RGVjb2RlciYsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlLCBjb25z
dCBTdHJpbmcmIGRldmljZU5hbWUsIGJvb2wgaGFzQWN0aXZlUm91dGUsIGJvb2wgc3VwcG9ydHNS
ZW1vdGVWaWRlb1BsYXliYWNrLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYp
OwogfTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNv
cmVBcmd1bWVudENvZGVyc01hYy5tbQppbmRleCAxODZiN2JiMmRiNmZjNGUyYmMxMzNmNzE3NWNj
ZjljMzc2Mzg5MjMwLi45MjVmNWE0ZDVhNDg4ZDQ4ODQwNGVjNjI5NTJkOGEyNDlhM2YwMDFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNNYWMubW0KQEAgLTQyLDEyICs0Miw2IEBACiAjaW1wb3J0IDx3dGYvTWFjaFNlbmRSaWdodC5o
PgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAKLSNpZiBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKQotI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dC5oPgotI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+Ci0jaW1wb3J0IDxwYWwvY29jb2EvQVZG
b3VuZGF0aW9uU29mdExpbmsuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgSVBDIHsKIAogdm9pZCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykK
QEAgLTQwMywyOSArMzk3LDYgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlcj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGUKIAogI2VuZGlmCiAK
LSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotCi12b2lkIEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjplbmNvZGVQbGF0Zm9ybURh
dGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQmIHRhcmdldCkKLXsKLSAgICBpZiAoW1BBTDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3Mo
KSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCi0gICAgICAg
IGVuY29kZXIgPDwgdGFyZ2V0LmF2T3V0cHV0Q29udGV4dCgpOwotfQotCi1ib29sIEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0Zm9y
bURhdGEoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQmIHRhcmdldCkKLXsKLSAgICBpZiAoIVtQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkg
Y29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIGNvbnRleHQgPSBJUEM6OmRlY29kZTxBVk91dHB1dENv
bnRleHQ+KGRlY29kZXIsIFBBTDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSk7Ci0gICAgaWYg
KCFjb250ZXh0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB0YXJnZXQgPSBXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCB7IGNvbnRleHQtPmdldCgpIH07Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKFZJREVPKQogdm9pZCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT46OmVuY29kZVBs
YXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpTZXJpYWxpemVkUGxh
dGZvcm1EYXRhQ3VlVmFsdWUmIHZhbHVlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggNmZiY2IzYmI2ODMzZjk4MDc1Y2E2MmE1YjdmZDU3ZmMzNzMwZDc4
My4uYjE5ODBkNWUzZDNhZTQ1MzM3NWIyN2FmMTg2MWU0OWJlZDI0ZDcyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03Nzc4LDE0ICs3Nzc4LDYgQEAgc3Rh
dGljIGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVyYWw+JiBtZWRpYVJlbGF0ZWRJT0tpdENsYXNzZXMo
KQogICAgIH0pOwogICAgIHJldHVybiBzZXJ2aWNlczsKIH0KLQotc3RhdGljIGNvbnN0IFZlY3Rv
cjxBU0NJSUxpdGVyYWw+JiB0ZW1wb3JhcnlNYWNoU2VydmljZXMoKQotewotICAgIHN0YXRpYyBj
b25zdCBhdXRvIHNlcnZpY2VzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxBU0NJSUxpdGVy
YWw+IHsKLSAgICAgICAgImNvbS5hcHBsZS5jb3JlbWVkaWEucm91dGluZ2NvbnRleHQueHBjIl9z
IC8vIFJlbW92ZSBhZnRlciA8cmRhcjovLzc2NDAzMzAyPiBpcyBmaXhlZC4KLSAgICB9KTsKLSAg
ICByZXR1cm4gc2VydmljZXM7Ci19CiAjZW5kaWYKIAogV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2Nl
c3MsIERyYXdpbmdBcmVhUHJveHkmIGRyYXdpbmdBcmVhLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9s
aWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVzKQpAQCAtNzg4MSw5ICs3ODczLDYgQEAgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9j
ZXNzUHJveHkmIHByb2MKICAgICAgICAgLy8gRklYTUUoMjA3NzE2KTogVGhlIGZvbGxvd2luZyBz
aG91bGQgYmUgcmVtb3ZlZCB3aGVuIHRoZSBHUFUgcHJvY2VzcyBpcyBjb21wbGV0ZS4KICAgICAg
ICAgcGFyYW1ldGVycy5tZWRpYUV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChtZWRpYVJlbGF0ZWRNYWNoU2VydmljZXMoKSwgV1RG
OjpudWxsb3B0KTsKICAgICAgICAgcGFyYW1ldGVycy5tZWRpYUlPS2l0RXh0ZW5zaW9uSGFuZGxl
cyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9u
cyhtZWRpYVJlbGF0ZWRJT0tpdENsYXNzZXMoKSwgV1RGOjpudWxsb3B0KTsKLSAgICB9IGVsc2Ug
ewotICAgICAgICAvLyBGSVhNRSgyMjQzMjcpOiBSZW1vdmUgdGhpcyBlbHNlIGNsYXVzZSBvbmNl
IDxyZGFyOi8vNzY0MDMzMDI+IGlzIGZpeGVkLgotICAgICAgICBwYXJhbWV0ZXJzLm1lZGlhRXh0
ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9v
a3VwKHRlbXBvcmFyeU1hY2hTZXJ2aWNlcygpLCBXVEY6Om51bGxvcHQpOwogICAgIH0KIAogICAg
IGlmICghcHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yTWVkaWFFbmFibGVkKCkKQEAgLTkz
NDksNyArOTMzOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNb2NrTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlckVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIHBhZ2VDbGllbnQoKS5tZWRpYVNl
c3Npb25NYW5hZ2VyKCkuc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGVu
YWJsZWQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRNb2NrTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSkKIHsKICAgICBwYWdl
Q2xpZW50KCkubWVkaWFTZXNzaW9uTWFuYWdlcigpLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyU3RhdGUobmFtZSwgc3RhdGUpOwogfQpAQCAtOTM2NCw3ICs5MzUzLDkgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNldFBsYXliYWNrVGFyZ2V0KFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4
dElkZW50aWZpZXIgY29udGUKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBsYXliYWNrVGFyZ2V0U2Vs
ZWN0ZWQoY29udGV4dElkLCB0YXJnZXQtPnRhcmdldENvbnRleHQoKSkpOworICAgIGF1dG8gY29u
dGV4dCA9IHRhcmdldC0+dGFyZ2V0Q29udGV4dCgpOworICAgIGlmIChjb250ZXh0LnNlcmlhbGl6
ZU91dHB1dENvbnRleHQoKSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGxheWJh
Y2tUYXJnZXRTZWxlY3RlZChjb250ZXh0SWQsIGNvbnRleHQpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKFBsYXliYWNrVGFy
Z2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBib29sIGF2YWlsYWJsZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYWFlNWZjZjA1YWIxYzEyMmRj
MzY1Yjg5OWFjY2QzYjBjMDdlYWM0NC4uZmVkY2M4ZGZkZTExOWVhODQyNjY3ZGNkYjc1YzM5OGNk
ZjU5YmRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE1NTYs
NyArMTU1Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihX
ZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmLCBib29sIGhhc1ZpZGVvKTsKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0
UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRD
b250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdz
KTsKICAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29s
KTsKLSAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3Qg
U3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKTsKKyAg
ICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5n
JiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSk7CiAgICAg
dm9pZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCgpOwogCiAgICAg
Ly8gV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGYwMWQ4YTA1ZGJhMGNlNzYyY2Mz
MGQ4OGQwYWI2ZWJmNzExNTYxOWIuLmI5ZDFkZjQ1MTkyMDM3YmQ2ZDQxMTU5MzYwOTU5NjRiMjUz
ZDIzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KQEAgLTQ3Niw3ICs0NzYsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewog
ICAgIFNob3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6RmxvYXRSZWN0IHBpY2tlckxv
Y2F0aW9uLCBib29sIGhhc1ZpZGVvKQogICAgIFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3Rh
dGVEaWRDaGFuZ2UoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmll
ciBjb250ZXh0SWQsIHVuc2lnbmVkIG1lZGlhU3RhdGUpCiAgICAgU2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wgZW5hYmxlZCkKLSAgICBTZXRNb2NrTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlclN0YXRlKFN0cmluZyBuYW1lLCB1bnNpZ25lZCBwaWNrZXJTdGF0ZSkK
KyAgICBTZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKFN0cmluZyBuYW1lLCBl
bnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0
ZSBwaWNrZXJTdGF0ZSkKICAgICBNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQ
b3B1cCgpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAKaW5k
ZXggY2IyOTZjMDM3MjU2OTBjOGU5Yjk4Nzg1Mzg5Njc1MDI2N2U5YjYxMC4uNmIwNTE1NzViOTZh
MzE5ZjhmNGI0MDQwOGUzZTNhMTQ4MGYwOGEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXIuY3BwCkBAIC04NCwxMiArODQsMTIgQEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXI6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoaW50IHBpZCkKIAogdm9pZCBS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9y
dHNBaXJQbGF5VmlkZW8gc3VwcG9ydHNBaXJQbGF5VmlkZW8sIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0JiYgdGFyZ2V0Q29udGV4dCkKIHsKLSAgICBpZiAodGFyZ2V0Q29udGV4dC50eXBlKCkg
IT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OkFWT3V0cHV0Q29udGV4dFR5cGUpIHsKKyAg
ICBpZiAodGFyZ2V0Q29udGV4dC50eXBlKCkgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
OlR5cGU6OkFWT3V0cHV0Q29udGV4dCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkhlbHBl
cjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShzdXBwb3J0c0FpclBsYXlWaWRlbywgV2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUodGFyZ2V0Q29udGV4dC5hdk91dHB1
dENvbnRleHQoKSkpOworICAgIFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlVmlk
ZW9Sb3V0ZURpZENoYW5nZShzdXBwb3J0c0FpclBsYXlWaWRlbywgV2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldENvY29hOjpjcmVhdGUoV1RGTW92ZSh0YXJnZXRDb250ZXh0KSkpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDE5MmFkOGQxNTE2ZTBkMmRiZjFlNzAzYmM5YTc3
NmEzMGQzM2ViY2UuLjZmY2NmNWNlZDI4ZTkzNjU5ZWExZTBiMmNjMjA5OGZkY2I3ZTFkZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xMzUyLDcgKzEzNTIsNyBAQCB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wgZW5h
YmxlZCkKICAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRNb2NrTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoZW5hYmxlZCkpOwogfQogCi12b2lkIFdlYkNo
cm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBT
dHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKK3Zv
aWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRl
KGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0
ZSBzdGF0ZSkKIHsKICAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRN
b2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKG5hbWUsIHN0YXRlKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgKaW5kZXggMGI4ZDE4MWM0YzllZGUxOTFiMmViOGQ5NjAzZGE4ZTdjMzU3NWUx
ZS4uMGFjNzNhNTM0MmU4ZTc0YWFlODFlN2Q3OWI1YWZlY2Q0YjJlZjQxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaApAQCAtMzc4LDcgKzM3OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzaG93UGxheWJh
Y2tUYXJnZXRQaWNrZXIoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29sKSBmaW5hbDsKICAgICB2b2lkIHBs
YXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6UGxheWJhY2tU
YXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVk
aWFTdGF0ZUZsYWdzKSBmaW5hbDsKICAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyRW5hYmxlZChib29sKSBmaW5hbDsKLSAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6OlN0YXRlKSBmaW5hbDsKKyAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6Ok1vY2tTdGF0ZSkgZmluYWw7CiAgICAgdm9pZCBtb2NrTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCgpIGZpbmFsOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA4YjY5YzgzMzBjMjhjODU3YjEy
NTQwNWMzMWMwMTE2MzQ5NjcxZTc2Li5iNTM2OWRhZmNmYWViOWMzOTYzN2IzMWYzNzU2Y2Q5OWM0
YmZiZThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBA
IC0xNzgxLDcgKzE3ODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0U2hvdWxkRGlzcGF0Y2hG
YWtlTW91c2VNb3ZlRXZlbnRzKGJvb2wgZGlzcGF0Y2gpIHsgbV9zaG91bGREaXNwYXRjaEZha2VN
b3VzZU1vdmVFdmVudHMgPSBkaXNwYXRjaDsgfQogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCBwbGF5YmFja1Rh
cmdldFNlbGVjdGVkKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiBvdXRwdXREZXZp
Y2UpIGNvbnN0OworICAgIHZvaWQgcGxheWJhY2tUYXJnZXRTZWxlY3RlZChXZWJDb3JlOjpQbGF5
YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dCYmKSBjb25zdDsKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0QXZhaWxhYmls
aXR5RGlkQ2hhbmdlKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIsIGJvb2wpOwogICAgIHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoV2ViQ29y
ZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgYm9vbCk7CiAgICAgdm9p
ZCBwbGF5YmFja1RhcmdldFBpY2tlcldhc0Rpc21pc3NlZChXZWJDb3JlOjpQbGF5YmFja1Rhcmdl
dENsaWVudENvbnRleHRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggNzRkYTYzNTc4ODJjZDAxMzAyMDg0
MDk3ZjA2NGQyMWMzYjkxNWQwNC4uZjhiODBjNmM0ZDU0NWE2NTZhYmE3ZGMzYzgzOWI2Y2RhMWNm
ZTJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0KQEAgLTM1LDcgKzM1LDYgQEAKICNpbXBvcnQgIkZvbnRJbmZvLmgiCiAjaW1w
b3J0ICJGcmFtZUluZm9EYXRhLmgiCiAjaW1wb3J0ICJJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1
bHQuaCIKLSNpbXBvcnQgIlBERktpdFNvZnRMaW5rLmgiCiAjaW1wb3J0ICJQREZQbHVnaW4uaCIK
ICNpbXBvcnQgIlBhZ2VCYW5uZXIuaCIKICNpbXBvcnQgIlBsdWdpblZpZXcuaCIKQEAgLTk5LDkg
Kzk4LDEyIEBACiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogI2ltcG9y
dCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5
YmFja1RhcmdldE1vY2suaD4KICNlbmRpZgogCisjaW1wb3J0ICJQREZLaXRTb2Z0TGluay5oIgor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xMDQy
LDE2ICsxMDQ0LDE3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkVXBkYXRlUmVuZGVyaW5nKCkKIH0KIAog
I2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFN
SUxZKQotdm9pZCBXZWJQYWdlOjpwbGF5YmFja1RhcmdldFNlbGVjdGVkKFBsYXliYWNrVGFyZ2V0
Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBjb25zdCBXZWJDb3JlOjpNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0Q29udGV4dCkgY29uc3QKK3ZvaWQgV2ViUGFnZTo6
cGxheWJhY2tUYXJnZXRTZWxlY3RlZChQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlm
aWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmJiB0YXJn
ZXRDb250ZXh0KSBjb25zdAogewogICAgIHN3aXRjaCAodGFyZ2V0Q29udGV4dC50eXBlKCkpIHsK
LSAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpBVk91dHB1dENvbnRleHRUeXBl
OgotICAgICAgICBtX3BhZ2UtPnNldFBsYXliYWNrVGFyZ2V0KGNvbnRleHRJZCwgV2ViQ29yZTo6
TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUodGFyZ2V0Q29udGV4dC5hdk91dHB1dENv
bnRleHQoKSkpOworICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OlNl
cmlhbGl6ZWRBVk91dHB1dENvbnRleHQ6CisgICAgICAgIG1fcGFnZS0+c2V0UGxheWJhY2tUYXJn
ZXQoY29udGV4dElkLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZShX
VEZNb3ZlKHRhcmdldENvbnRleHQpKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tUeXBlOgotICAgICAgICBtX3BhZ2UtPnNldFBsYXli
YWNrVGFyZ2V0KGNvbnRleHRJZCwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldE1vY2s6OmNy
ZWF0ZSh0YXJnZXRDb250ZXh0Lm1vY2tEZXZpY2VOYW1lKCksIHRhcmdldENvbnRleHQubW9ja1N0
YXRlKCkpKTsKKyAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2Nr
OgorICAgICAgICBtX3BhZ2UtPnNldFBsYXliYWNrVGFyZ2V0KGNvbnRleHRJZCwgV2ViQ29yZTo6
TWVkaWFQbGF5YmFja1RhcmdldE1vY2s6OmNyZWF0ZSh0YXJnZXRDb250ZXh0LmRldmljZU5hbWUo
KSwgdGFyZ2V0Q29udGV4dC5tb2NrU3RhdGUoKSkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpOb25lOgorICAgIGNhc2UgTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dDoKKyAgICBjYXNlIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBiODliMjY2
YzNkNzlhY2QyNDFkZjM2YjVmY2UyZjFkMmVkOGRiNzQ4Li5mM2Q0NzE2YTg5MzNkOWYyNDJmOGVm
MTIxNWE4NjYyMzQwZjg5N2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMjQzLDcgKzI0Myw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViQ29yZTo6UGxh
eWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCBib29sIC8qIGhhc1ZpZGVvICovKSBmaW5hbDsKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0
UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRD
b250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdz
KSBmaW5hbDsKICAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxl
ZChib29sKSBmaW5hbDsKLSAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
U3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
OlN0YXRlKSBmaW5hbDsKKyAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
U3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
Ok1vY2tTdGF0ZSkgZmluYWw7CiAgICAgdm9pZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ckRpc21pc3NQb3B1cCgpIG92ZXJyaWRlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQppbmRl
eCBiMzRlOGQ5ZDhlZTkxNWM2MWEwYzQ5ZmY0MGUyZDY2ZmVkMjRhMDRlLi5jOTY0ODNmZjk2ZWI3
ZmQ4Y2MxOTUyN2MzNTQ1ZDliODNiMTRhOWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC0xMTI5
LDcgKzExMjksNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBbbV93ZWJWaWV3IF9zZXRNb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQ6ZW5hYmxlZF07CiB9CiAKLXZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0
IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQor
dm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3Rh
dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0
YXRlIHN0YXRlKQogewogICAgIFttX3dlYlZpZXcgX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyTmFtZTpuYW1lIHN0YXRlOnN0YXRlXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
LmgKaW5kZXggMGI5MjM4MzVlOWUxNWI2YjgwNDViNDlhZmUyOWU2YWFiMDNlY2ZjYS4uOGNhMzI5
NDdhNWI0NmUwNjdiOGU4YmFlNDQ2MzkzZWJiOTBlODZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2hvd1BsYXliYWNr
VGFyZ2V0UGlja2VyKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGJvb2wgaGFzVmlkZW8pOwogICAgIHZvaWQg
cGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpQbGF5YmFj
a1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpN
ZWRpYVN0YXRlRmxhZ3MpOwogICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJFbmFibGVkKGJvb2wpOwotICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6U3RhdGUpOworICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0
ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9j
a1N0YXRlKTsKICAgICB2b2lkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1Bv
cHVwKCk7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ci5tbQppbmRleCA3MzQ0MzU2NzVhYjgwOWI1MGVjNWVmMzhhYjlmNzdjYTE0OGIzMWYxLi43ZGJk
NTg5NDc1NDA1YTE2ZWJkZDBmYTliY2ZhNjJjMzM3ZTc0MTUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyLm1tCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgV2ViTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wKICAg
ICBXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWQoKS5zZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKLXZvaWQgV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0
ZShjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpTdGF0ZSBzdGF0ZSkKK3ZvaWQgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6c2V0TW9j
a01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCiB7CiAgICAg
V2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkKCkuc2V0TW9ja01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShuYW1lLCBzdGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNWIwZWU4YTNhYzhjMzMzYjZlZTM0NGNk
ZDljM2I1NTc2NWMyNmZmMC4uNDkyYWY2MDFjZjdhYzRkZjQ2NDUwYjA4YWFhNWMzMjBlYTJlNmU3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtOTIz
Miw3ICs5MjMyLDcgQEAgYm9vbCBMYXllckZsdXNoQ29udHJvbGxlcjo6Zmx1c2hMYXllcnMoKQog
ICAgIFtzZWxmIF9kZXZpY2VQaWNrZXJdLT5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ckVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKLS0gKHZvaWQpX3NldE1vY2tNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTmFtZTooTlNTdHJpbmcgKiluYW1lIHN0YXRlOihXZWJDb3JlOjpNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpc3RhdGUKKy0gKHZvaWQpX3NldE1vY2tNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyTmFtZTooTlNTdHJpbmcgKiluYW1lIHN0YXRlOihXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKXN0YXRlCiB7CiAgICAgW3NlbGYgX2Rl
dmljZVBpY2tlcl0tPnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUobmFtZSwg
c3RhdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
d0ludGVybmFsLmgKaW5kZXggM2FlMGQzYWEyNjJkOTUyMzMwYzFjODJjMzI1NTBkOWEyMWE1MDE0
Zi4uMDRiOGMzNjhjY2FmODUyNGQwODU5MzcyZDYwNThmNDhmMTdhNmYyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCkBAIC0zMjcs
NyArMzI3LDcgQEAgV2ViTGF5b3V0TWlsZXN0b25lcyBraXRMYXlvdXRNaWxlc3RvbmVzKE9wdGlv
blNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+KTsKIC0gKHZvaWQpX3Nob3dQbGF5YmFja1Rh
cmdldFBpY2tlcjooV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmll
ciljb250ZXh0SWQgbG9jYXRpb246KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jilsb2NhdGlvbiBo
YXNWaWRlbzooQk9PTCloYXNWaWRlbzsKIC0gKHZvaWQpX3BsYXliYWNrVGFyZ2V0UGlja2VyQ2xp
ZW50U3RhdGVEaWRDaGFuZ2U6KFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElk
ZW50aWZpZXIpY29udGV4dElkIHN0YXRlOihXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0
YXRlRmxhZ3Mpc3RhdGU7CiAtICh2b2lkKV9zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ckVuYWJsZWQ6KGJvb2wpZW5hYmxlZDsKLS0gKHZvaWQpX3NldE1vY2tNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTmFtZTooTlNTdHJpbmcgKiluYW1lIHN0YXRlOihXZWJDb3JlOjpNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpc3RhdGU7CistICh2b2lkKV9zZXRNb2NrTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlck5hbWU6KE5TU3RyaW5nICopbmFtZSBzdGF0ZTooV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSlzdGF0ZTsKIC0gKHZvaWQpX21vY2tN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwOwogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425943</attachid>
            <date>2021-04-13 20:14:23 -0700</date>
            <delta_ts>2021-04-13 20:23:49 -0700</delta_ts>
            <desc>Fix layout test failures</desc>
            <filename>bug-224469-20210413201422.patch</filename>
            <type>text/plain</type>
            <size>83474</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1ODA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTM3ZTM2YWE4MmQ5YzYx
N2VkZjE5NGJkZWQzOTliMzk5N2RhNjNmYi4uYjgzOGIyYzNjNGNhMzEyZTJkNDAzMDk0MDI3NGRj
ZTRjODk4NGM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDIxLTA0LTEzICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIFdlYkNvbnRlbnQg
cHJvY2VzcyBzaG91bGQgbm90IGNyZWF0ZSBBVk91dHB1dENvbnRleHQgaW5zdGFuY2VzIHdoZW4g
bWVkaWEgaW4gR1BVIFByb2Nlc3MgaXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtb2RpZmllcyBgTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHRgIHRvIHByb3ZpZGUgaW50ZXJmYWNlcyB0byBzZXJpYWxpemUvZGVzZXJp
YWxpemUKKyAgICAgICAgYEFWT3V0cHV0Q29udGV4dGAgYW5kIG1vZGlmaWVzIGBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29jb2FgIHRvIHVzZSBgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHRgIHRvCisg
ICAgICAgIG1hbmFnZSBpdHMgYEFWT3V0cHV0Q29udGV4dGAgaW5zdGVhZCBvZiBrZWVwaW5nIGEg
cG9pbnRlciB0byB0aGUgYEFWT3V0cHV0Q29udGV4dGAgb2JqZWN0LgorICAgICAgICBXaXRoIHRo
ZXNlIGNoYW5nZXMsIGEgV2ViQ29udGVudCBwcm9jZXNzIGNhbiBhY2Nlc3MgdGhlIHByb3BlcnRp
ZXMgb2YgYSBzZXJpYWxpemVkCisgICAgICAgIGBBVk91dHB1dENvbnRleHRgIG9iamVjdCBhbmQg
Zm9yd2FyZCBpdCB0byBvdGhlciBwcm9jZXNzIChlLmcuLCB0aGUgR1BVIHByb2Nlc3MpIHdpdGhv
dXQKKyAgICAgICAgZGVzZXJpYWxpemluZyB0aGUgYEFWT3V0cHV0Q29udGV4dGAgb2JqZWN0LiBU
aGVyZWZvcmUsIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZG9lcyBub3QgbmVlZAorICAgICAgICBh
Y2Nlc3MgdG8gdGhlIENvcmVNZWRpYSByb3V0aW5nIHNlcnZpY2UuIFNvIHdlIGNhbiByZW1vdmUg
dGhlIGZpeCAocjI3NTY2OSkgZm9yIGJ1ZyAyMjQzMjguCisKKyAgICAgICAgQ292ZXJlZCBieSBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgorICAgICAgICAqIE1vZHVs
ZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmg6CisKKyAgICAgICAgKiBIZWFkZXJz
LmNtYWtlOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBNb2RpZnkgdGhlIHByb2plY3QgZmls
ZSBiZWNhdXNlIGBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dGAgaXMgdXNlZCBpbiBDb2NvYSBw
b3J0cyBvbmx5LgorCisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0
ZSk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNl
dE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgorICAgICAgICAqIHBhZ2UvUGFn
ZS5oOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldC5o
OgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oOiBSZW1vdmVkLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpvdXRwdXRDb250ZXh0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVk
aWFQbGF5YmFja1RhcmdldENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvY29hOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldENvY29hOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2sgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjp0YXJnZXRD
b250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2Nv
YTo6aGFzQWN0aXZlUm91dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvY29hOjpkZXZpY2VOYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnRvTWVk
aWFQbGF5YmFja1RhcmdldENvY29hKToKKyAgICAgICAgRG9uJ3QgZGlyZWN0bHkgdXNlIGBBVk91
dHB1dENvbnRleHRgIGluIHRoaXMgY2xhc3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
aXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRXaXJlbGVzc1BsYXliYWNr
VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KToKKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpkZXZpY2VOYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpoYXNBY3RpdmVSb3V0ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6c3VwcG9ydHNSZW1vdGVWaWRlb1BsYXli
YWNrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
Ojptb2NrU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6Om91dHB1dENvbnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OnNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjplbmNvZGluZ1JlcXVp
cmVzUGxhdGZvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OnNlcmlhbGl6
ZU91dHB1dENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OmRlc2VyaWFsaXplT3V0cHV0Q29udGV4dCk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9t
b2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRNb2NrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldE1vY2s6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjp0YXJnZXRDb250ZXh0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvTWVkaWFQbGF5YmFja1RhcmdldE1vY2spOgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpzdGF0ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
bW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFp
bGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6
OnN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6aW52YWxpZGF0ZVBsYXliYWNrVGFyZ2V0cyk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6c2V0U3Rh
dGUpOgorCisgICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
TW9jay5oOgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSk6CisK
IDIwMjEtMDQtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZWdyZXNzaW9uKHIyNzU2NjgpIFBvdGVudGlhbCBudWxsIHBvaW50ZXIgZGVyZWYgaW4gQXVkaW9Q
YXJhbTo6ZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZShmbG9hdCwgZG91YmxlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA3MGE5ZmFiMWUzNzlhMWQwYWRmYmY3NGViYzFiYzE0YWVkYmFhZGE1Li4wN2M4NDI5YmY0
MTAzMmEyZDY5MTYxNjQ4NzQyNzgzZTlhY2M0MGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBA
CisyMDIxLTA0LTEzICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAg
W0dQVVBdIFdlYkNvbnRlbnQgcHJvY2VzcyBzaG91bGQgbm90IGNyZWF0ZSBBVk91dHB1dENvbnRl
eHQgaW5zdGFuY2VzIHdoZW4gbWVkaWEgaW4gR1BVIFByb2Nlc3MgaXMgZW5hYmxlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDY5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVN
ZWRpYVBsYXllclByb3h5OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaDoKKworICAgICAgICAqIFNo
YXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29k
ZVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAq
IFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJl
ZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZv
cm1EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZVBsYXRmb3JtRGF0YSk6IERlbGV0ZWQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6bWVkaWFSZWxhdGVkSU9LaXRDbGFzc2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNldFBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYktpdDo6dGVt
cG9yYXJ5TWFjaFNlcnZpY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoK
KworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFj
dGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UpOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxheWJh
Y2tUYXJnZXRTZWxlY3RlZCBjb25zdCk6CisKIDIwMjEtMDQtMTAgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgV2Vha0hhc2hTZXQ8V2Vi
UHJvY2Vzc1Byb3h5PiBpbnN0ZWFkIG9mIEhhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5Kj4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlNTdjY2IyYzBmYWNmOTc0NzhjMjkzODQ0ZTdiZDBj
NGIwODE1NzEzLi5mYWNjY2I3ZjQ2ZDA4MDkyOTQwYmY4M2E4Mjk0MDY5NDc1MWNmZjhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEtMDQtMTMgIFBl
bmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gV2ViQ29udGVu
dCBwcm9jZXNzIHNob3VsZCBub3QgY3JlYXRlIEFWT3V0cHV0Q29udGV4dCBpbnN0YW5jZXMgd2hl
biBtZWRpYSBpbiBHUFUgUHJvY2VzcyBpcyBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ0NjkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbToKKyAgICAg
ICAgKFdlYkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0
ZSk6CisgICAgICAgICogV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmg6Cisg
ICAgICAgICogV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tOgorICAgICAg
ICAoV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJTdGF0ZSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAo
LVtXZWJWaWV3IF9zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck5hbWU6c3RhdGU6XSk6
CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaDoKKwogMjAyMS0wNC0wMiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIEhhc2hlciBtb3JlLCBy
ZW1vdmUgSW50ZWdlckhhc2hlciwgZml4IGhhc2hpbmctcmVsYXRlZCBtaXN0YWtlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKaW5kZXggNTdjYTY4ZjczYTgxNDNmOGEwMDZmYjc4NWFiMDIyNzhkYWQzZjBiMS4u
ZDNjNjNmMTZlMzVmZmYxNzQ2MWIxMzdhOWZlNDZhMzNkZjIwZGFhMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCkBAIC0xMjY2LDcgKzEyNjYsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5cGVDYWNoZS5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5YmFja1RhcmdldENsaWVudC5oCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllckVudW1zLmgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcApp
bmRleCA2YzZhYjBlN2E2MmVjNGRhNDVlZDNkYmM5NDE0NTUxNzVjZDQ0ZDVhLi5kNWI1OTVhNGFj
NDlmZjBlZmZlNjJiNDUyZWMzNDJiN2QzODMwNDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCkBAIC0x
NjEsNyArMTYxLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBlbmFibGUKICAgICBtX21vY2tQaWNrZXJF
bmFibGVkID0gZW5hYmxlZDsKIH0KIAotdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRN
b2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQordm9pZCBXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0
cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSkK
IHsKICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwogICAgIG1v
Y2tQaWNrZXIoKS5zZXRTdGF0ZShuYW1lLCBzdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaAppbmRleCBkN2Yy
OGNjYjc1ZTVkNzU1ZGFmNDMzNGVmNjU2Y2IxNDE5MGZhYjU0Li4xYmExMjg0ZjIzMzNjNzg0NmFi
ODBkNGUxMWRiMmJmNGYwMjA2NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgKQEAgLTUxLDcgKzUxLDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBXZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
JiBzaGFyZWQoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCk7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGFkZFBsYXli
YWNrVGFyZ2V0UGlja2VyQ2xpZW50KFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmLCBQbGF5
YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CmluZGV4IGVjZTQ2Y2ZhNDExOTgzNDUxNzhhNWQyN2Y3NzI3ZGI5MDczNThjYzkuLjFhYjdmMjA0
ODU0ZjgxZTE0Nzk1MDAzNmMzYzVmYzVlNjAzYWE0MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dApAQCAtMzY5LDYgKzM2OSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5t
bQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlUG9vbENvY29hLm1tCiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKK3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tCiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3NzBiMDg0MDIyOTI0MDI4
MDVhNjM3MTc0ZDM2OWU2Y2QzNTQxNzAuLmRmZTU1NDQ3ZWM3YTUyNzcxNmEyNzAwNTA2YzZkODZm
MWU0YmFjNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTY0NCw4ICs2NDQsOCBAQAogCQkxQ0FGNTZEQjI1MzAxQUM4MDAxN0I0
NzIgLyogRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQUY1NkQ4MjUzMDE0NTcwMDE3QjQ3MiAvKiBE
aXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDQ0Q4MTUwMjIzMUY4M0UwMDY1RkMyQiAvKiBXZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTUyNTUxNDE2RkQyMzRGMDAzRDdB
REIgLyogV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tICov
OyB9OwogCQkxQ0NERjVCRTE5OTAzMzI0MDBCQ0VCQUQgLyogU1ZHVG9PVEZGb250Q29udmVyc2lv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNDREY1
QkMxOTkwMzMyNDAwQkNFQkFEIC8qIFNWR1RvT1RGRm9udENvbnZlcnNpb24uaCAqLzsgfTsKLQkJ
MUNFOEQxMjcyNjE4NUMwRTAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRThE
MTI1MjYxODVCRDgwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUNFODg2
NDEyNjEwNUJGMjAwMEM4MTZDIC8qIEluTWVtb3J5RGlzcGxheUxpc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRTg4NjNGMjYxMDVBNUYwMDBDODE2
QyAvKiBJbk1lbW9yeURpc3BsYXlMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUNFOEQxMjcyNjE4NUMwRTAwRkMzQUVGIC8qIERpc3BsYXlM
aXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDRThEMTI1MjYxODVCRDgwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0
ZW1CdWZmZXJJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMUNGQUUzMjMwQTZENkEzRjAwMzI1OTNEIC8qIGxpYm9iamMuZHlsaWIg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0ZBRTMy
MjBBNkQ2QTNGMDAzMjU5M0QgLyogbGlib2JqYy5keWxpYiAqLzsgfTsKIAkJMUQwMDI2QTQyMzc0
RDYyNDAwQ0E2Q0RGIC8qIEpTUGljdHVyZUluUGljdHVyZVdpbmRvdy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUQwMDI2QTIyMzc0RDYyMzAwQ0E2Q0RG
IC8qIEpTUGljdHVyZUluUGljdHVyZVdpbmRvdy5oICovOyB9OwogCQkxRDAwMjZBQTIzNzRGOUVB
MDBDQTZDREYgLyogSlNFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUQwMDI2QTgyMzc0RjlEOTAwQ0E2Q0RG
IC8qIEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuaCAqLzsgfTsKQEAgLTY5NDksOSArNjk0
OSw5IEBACiAJCTFDREQ0NUU0MEJBOUM4NDYwMEY5MDE0NyAvKiBEZWJ1Z1JlbGVhc2UueGNjb25m
aWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRGVidWdSZWxlYXNlLnhjY29uZmln
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0RENDVFNTBCQTlDODQ2MDBGOTAxNDcg
LyogV2ViQ29yZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBXZWJD
b3JlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0RENDVFNjBCQTlD
ODQ2MDBGOTAxNDcgLyogQmFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBh
dGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0U4RDEy
NTI2MTg1QkQ4MDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRTg4NjNFMjYxMDVBNUYwMDBDODE2QyAvKiBJbk1lbW9y
eURpc3BsYXlMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluTWVtb3J5RGlzcGxheUxpc3Qu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0U4ODYzRjI2MTA1QTVGMDAwQzgx
NkMgLyogSW5NZW1vcnlEaXNwbGF5TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbk1lbW9yeURpc3Bs
YXlMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDRThEMTI1MjYxODVCRDgw
MEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUNFQ0IzQTgyMUYyQjY3MzAwRjQ0NTQyIC8qIFdITFNMU3RhdGVtZW50QmVo
YXZpb3JDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVj
a2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRUNCM0E5MjFGMkI2NzMwMEY0
NDU0MiAvKiBXSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDRUNCM0FGMjFGMkI5ODQwMEY0NDU0MiAvKiBXSExTTEZ1bmN0aW9uV3Jp
dGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMRnVuY3Rpb25Xcml0ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjk3Miw2ICs2OTcyLDcgQEAKIAkJMUQwMDI2QTMy
Mzc0RDYyNDAwQ0E2Q0RGIC8qIEpTUGljdHVyZUluUGljdHVyZVdpbmRvdy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1BpY3R1cmVJblBpY3R1cmVXaW5kb3cuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDAwMjZBODIzNzRGOUQ5MDBDQTZDREYg
LyogSlNFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFEMDAyNkE5MjM3NEY5RDkwMENBNkNERiAvKiBKU0VudGVyUGljdHVy
ZUluUGljdHVyZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxRDAwOEFBNTI2MjEwOEMwMDBFRTNBREUgLyogTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUQyQzgyQjYyMzZBM0Y2QTAwNTVE
NkM1IC8qIFBpY3R1cmVJblBpY3R1cmVTdXBwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBpY3R1cmVJ
blBpY3R1cmVTdXBwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFENDc2NThE
MjVDQ0E3NzgwMDdBRjMxMiAvKiBJbWFnZURlY29kZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEltYWdlRGVjb2RlcklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMURBQjMxMTMyNTFENzI1QzAwRkM5NDg1IC8qIFZpZGVvTGF5ZXJNYW5hZ2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFZpZGVvTGF5ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yNjk0Nyw3ICsyNjk0OCw2IEBACiAJCQkJQ0RERTAyRTkxOEIzREZDNzAwQ0Y3RkYxIC8q
IExlZ2FjeUNETVNlc3Npb24uaCAqLywKIAkJCQkwN0UzREZEMDFBOUU3ODY1MDA3NjRDQTggLyog
TWVkaWFQbGF5YmFja1RhcmdldC5oICovLAogCQkJCTA3OTIxNjUzMUFBNTYwQUEwMEEzQzA0OSAv
KiBNZWRpYVBsYXliYWNrVGFyZ2V0Q2xpZW50LmggKi8sCi0JCQkJMDdGODc2ODMxQUQ0QTk0NTAw
OTA1ODQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmggKi8sCiAJCQkJMDc4RTQzRDcx
QUJCNkM3RTAwMUMyRkE2IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuY3BwICovLAogCQkJ
CTA3OEU0M0Q4MUFCQjZDN0UwMDFDMkZBNiAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgg
Ki8sCiAJCQkJRTRCNDFFMEMwQ0JGOTBCRDAwQUYyRUNFIC8qIE1lZGlhUGxheWVyLmNwcCAqLywK
QEAgLTI3MTYzLDYgKzI3MTYzLDggQEAKIAkJCQlBRDlGRjZFMDE5MDgzOTFEMDAzQjYxRTAgLyog
SU9TdXJmYWNlUG9vbENvY29hLm1tICovLAogCQkJCUNEQzQ4QUM4MjE0OUNGMkEwMDI0RkQ1OSAv
KiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwICovLAogCQkJCUNEQzQ4
QUM3MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29j
b2EuaCAqLywKKwkJCQkwN0Y4NzY4MzFBRDRBOTQ1MDA5MDU4NDkgLyogTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQuaCAqLywKKwkJCQkxRDAwOEFBNTI2MjEwOEMwMDBFRTNBREUgLyogTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQubW0gKi8sCiAJCQkJMzE2NDdGQTgyNTE2MTZCRDAwMTBGOEZC
IC8qIE9wZW5HTFNvZnRMaW5rQ29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBOTI1MTYxNkJEMDAxMEY4
RkIgLyogT3BlbkdMU29mdExpbmtDb2NvYS5tbSAqLywKIAkJCQk3QjY0QzBCNDI1NEMzQjE2MDAw
NkI0QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IGQwYmMzNTUwZDRkMDgzNWMzMzNlMWY0ODNm
NWYyNWFkZDA0ODMzY2UuLmRmNGM5YzFmODRlY2EyMGU3YjFmYmQzN2MxNDM4YzVlMGFiYjBkNTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtNTEzLDcgKzUxMyw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKFBsYXliYWNrVGFy
Z2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGNvbnN0IEludFBvaW50JiwgYm9vbCAvKmlzVmlk
ZW8qLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3Rh
dGVEaWRDaGFuZ2UoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgTWVkaWFQ
cm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TW9ja01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpICB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBt
b2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCgpIHsgfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGVhZjU2Y2RlMjMwNjY1MzgzOTg1NTUyNjE1ZTEyNTgwMDI1
OGE4NmMuLjg4ODk4YWFjYzAyMzNmYmUwZWU2MDY0ZGJiMDg3ZGRhZmY2NjUyZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcApAQCAtMjk0Nyw3ICsyOTQ3LDcgQEAgdm9pZCBQYWdlOjpzZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIGNocm9tZSgpLmNs
aWVudCgpLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChlbmFibGVkKTsK
IH0KIAotdm9pZCBQYWdlOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNv
bnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRl
KQordm9pZCBQYWdlOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0
IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0
ZSkKIHsKICAgICBjaHJvbWUoKS5jbGllbnQoKS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlclN0YXRlKG5hbWUsIHN0YXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggZDQ4MjgxNjkwNTUz
ZTA0NmY0NzAzNDdlZDZiYjQ1MjE1ZTIwNjQ5ZC4uNzcwMWIwOGMxZTNjOWI5NGIwYjBjZGIwNjYx
OTA5YzIyMjIyZjQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTczMSw3ICs3MzEsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoUGxheWJhY2tUYXJnZXRDbGllbnRD
b250ZXh0SWRlbnRpZmllciwgY29uc3QgSW50UG9pbnQmLCBib29sLCBSb3V0ZVNoYXJpbmdQb2xp
Y3ksIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRT
dGF0ZURpZENoYW5nZShQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBNZWRp
YVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBT
dHJpbmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBT
dHJpbmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVw
KCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFBsYXliYWNrVGFyZ2V0KFBsYXliYWNr
VGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWJhY2tUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWJhY2tUYXJnZXQuaAppbmRleCA2YWRmYTkzN2Y3M2Y1NzNkOTVjOWZjZDc0ZDZkMjFiODczYTJm
Nzg4Li4zMWQ0ODg0YWRhOGM1MTdkY2ZlZDJkZmZhZTI2NWZlNGRiOTRmZmNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1Rhcmdl
dC5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQgOiBwdWJsaWMg
UmVmQ291bnRlZDxNZWRpYVBsYXliYWNrVGFyZ2V0PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
TWVkaWFQbGF5YmFja1RhcmdldCgpID0gZGVmYXVsdDsKIAotICAgIGVudW0gVGFyZ2V0VHlwZSB7
IEFWRm91bmRhdGlvbiwgTW9jayB9OworICAgIGVudW0gY2xhc3MgVGFyZ2V0VHlwZSA6IHVpbnQ4
X3QgeyBBVkZvdW5kYXRpb24sIE1vY2sgfTsKICAgICB2aXJ0dWFsIFRhcmdldFR5cGUgdGFyZ2V0
VHlwZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgY29uc3QgTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQmIHRhcmdldENvbnRleHQoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWNlNGEzZWMzMDFlOWQ5ZTk3NDRk
Y2JmMjliN2E3YTEwYmY0YjM0Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dF9oCi0jZGVmaW5lIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0X2gK
LQotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0KLSNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KLQotT0JKQ19DTEFTUyBBVk91dHB1dENvbnRleHQ7Ci0KLSNpZiBQ
TEFURk9STShDT0NPQSkKLU9CSkNfQ0xBU1MgTlNLZXllZEFyY2hpdmVyOwotT0JKQ19DTEFTUyBO
U0tleWVkVW5hcmNoaXZlcjsKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IHsKLXB1YmxpYzoKLSAgICBlbnVtIFR5cGUgOiBp
bnQzMl90IHsKLSAgICAgICAgTm9uZSwKLSAgICAgICAgQVZPdXRwdXRDb250ZXh0VHlwZSwKLSAg
ICAgICAgTW9ja1R5cGUsCi0gICAgfTsKLQotICAgIGVudW0gQ29udGV4dFN0YXRlIHsKLSAgICAg
ICAgVW5rbm93biA9IDAsCi0gICAgICAgIE91dHB1dERldmljZVVuYXZhaWxhYmxlID0gMSwKLSAg
ICAgICAgT3V0cHV0RGV2aWNlQXZhaWxhYmxlID0gMiwKLSAgICB9OwotICAgIHR5cGVkZWYgdW5z
aWduZWQgU3RhdGU7Ci0KLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCgpCi0gICAgICAg
IDogbV90eXBlKE5vbmUpCi0gICAgewotICAgIH0KLQotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0KEFWT3V0cHV0Q29udGV4dCAqb3V0cHV0Q29udGV4dCkKLSAgICAgICAgOiBtX3R5cGUo
QVZPdXRwdXRDb250ZXh0VHlwZSkKLSAgICAgICAgLCBtX291dHB1dENvbnRleHQob3V0cHV0Q29u
dGV4dCkKLSAgICB7Ci0gICAgfQotCi0gICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQoY29u
c3QgU3RyaW5nJiBuYW1lLCBTdGF0ZSBzdGF0ZSkKLSAgICAgICAgOiBtX3R5cGUoTW9ja1R5cGUp
Ci0gICAgICAgICwgbV9uYW1lKG5hbWUpCi0gICAgICAgICwgbV9zdGF0ZShzdGF0ZSkKLSAgICB7
Ci0gICAgfQotCi0gICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0KLSAg
ICBjb25zdCBTdHJpbmcmIG1vY2tEZXZpY2VOYW1lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gTW9ja1R5cGUpOwotICAgICAgICByZXR1cm4gbV9uYW1lOwotICAgIH0K
LQotICAgIFN0YXRlIG1vY2tTdGF0ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90
eXBlID09IE1vY2tUeXBlKTsKLSAgICAgICAgcmV0dXJuIG1fc3RhdGU7Ci0gICAgfQotCi0gICAg
QVZPdXRwdXRDb250ZXh0ICphdk91dHB1dENvbnRleHQoKSBjb25zdAotICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBBVk91dHB1dENvbnRleHRUeXBlKTsKLSAgICAgICAgcmV0dXJuIG1f
b3V0cHV0Q29udGV4dDsKLSAgICB9Ci0KLSAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9y
bURhdGEoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gQVZPdXRwdXRDb250ZXh0VHlwZTsgfQot
ICAgIAotcHJpdmF0ZToKLSAgICBUeXBlIG1fdHlwZSB7IE5vbmUgfTsKLSAgICBBVk91dHB1dENv
bnRleHQgKm1fb3V0cHV0Q29udGV4dCB7IG51bGxwdHIgfTsKLSAgICBTdHJpbmcgbV9uYW1lOwot
ICAgIFN0YXRlIG1fc3RhdGUgeyBVbmtub3duIH07Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotCi0jZW5kaWYgLy8gTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29h
LmgKaW5kZXggNmE4ZTE5NDc2YTM0N2Q4ZTc0ODQxZmY2OWZiZDQ4YjA5MjIzYzg4OS4uNjFkMWZh
Y2UxNDg2YzEwMGM4MmYzODE3OTUxMmM5NWM2YjM5N2U3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRD
b2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EgOiBwdWJsaWMgTWVkaWFQ
bGF5YmFja1RhcmdldCB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxN
ZWRpYVBsYXliYWNrVGFyZ2V0PiBjcmVhdGUoQVZPdXRwdXRDb250ZXh0ICopOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gY3JlYXRlKE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0JiYpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBM
QVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAg
ICAgc3RhdGljIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBjcmVhdGUoKTsKQEAgLTQzLDIxICs0
NCwxOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2Eo
KTsKIAotICAgIFRhcmdldFR5cGUgdGFyZ2V0VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFW
Rm91bmRhdGlvbjsgfQorICAgIFRhcmdldFR5cGUgdGFyZ2V0VHlwZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIFRhcmdldFR5cGU6OkFWRm91bmRhdGlvbjsgfQogCiAgICAgY29uc3QgTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQmIHRhcmdldENvbnRleHQoKSBjb25zdCBmaW5hbDsKICAgICBib29s
IGhhc0FjdGl2ZVJvdXRlKCkgY29uc3QgZmluYWw7CiAgICAgU3RyaW5nIGRldmljZU5hbWUoKSBj
b25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygpIGNvbnN0
IGZpbmFsOwogCi0gICAgQVZPdXRwdXRDb250ZXh0ICpvdXRwdXRDb250ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV9vdXRwdXRDb250ZXh0LmdldCgpOyB9Ci0KIHByb3RlY3RlZDoKLSAgICBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29jb2EoQVZPdXRwdXRDb250ZXh0ICopOworICAgIGV4cGxpY2l0IE1lZGlh
UGxheWJhY2tUYXJnZXRDb2NvYShBVk91dHB1dENvbnRleHQgKik7CisgICAgZXhwbGljaXQgTWVk
aWFQbGF5YmFja1RhcmdldENvY29hKE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiYpOwogCi0g
ICAgUmV0YWluUHRyPEFWT3V0cHV0Q29udGV4dD4gbV9vdXRwdXRDb250ZXh0OwotICAgIG11dGFi
bGUgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQgbV9jb250ZXh0OwotICAgIFN0cmluZyBtX2Rl
dmljZU5hbWU7CisgICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQgbV9jb250ZXh0OwogfTsK
IAogTWVkaWFQbGF5YmFja1RhcmdldENvY29hKiB0b01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShN
ZWRpYVBsYXliYWNrVGFyZ2V0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tU
YXJnZXRDb2NvYS5tbQppbmRleCBkYWM4Y2M0ODE1NmMyYzdlNzRlYWFjN2I0ZGRlNGJjMjE3NzUx
OWFhLi5iMzgyYmE3YTBiMDBiM2YxNTNkMTkyNDNlMDJlZmM3ZTkwZGQ2Mjg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5
YmFja1RhcmdldENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EubW0KQEAgLTM0LDE0ICszNCwy
MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZShBVk91dHB1dENvbnRleHQgKmNvbnRleHQp
CitSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVh
dGUoQVZPdXRwdXRDb250ZXh0ICpvdXRwdXRDb250ZXh0KQogewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShjb250ZXh0KSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgTWVkaWFQbGF5YmFja1RhcmdldENvY29hKG91dHB1dENvbnRleHQpKTsKIH0K
IAotTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoQVZP
dXRwdXRDb250ZXh0ICpjb250ZXh0KQotICAgIDogTWVkaWFQbGF5YmFja1RhcmdldCgpCi0gICAg
LCBtX291dHB1dENvbnRleHQoY29udGV4dCkKK1JlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZShNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYm
IGNvbnRleHQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hKFdURk1vdmUoY29udGV4dCkpKTsKK30KKworTWVkaWFQbGF5YmFja1RhcmdldENvY29h
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoQVZPdXRwdXRDb250ZXh0ICpvdXRwdXRDb250ZXh0
KQorICAgIDogbV9jb250ZXh0KG91dHB1dENvbnRleHQpCit7Cit9CisKK01lZGlhUGxheWJhY2tU
YXJnZXRDb2NvYTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hKE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0JiYgY29udGV4dCkKKyAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQogewog
fQogCkBAIC01NSwyNCArNjQsNyBAQCBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gTWVkaWFQbGF5
YmFja1RhcmdldENvY29hOjpjcmVhdGUoKQogCiBib29sIE1lZGlhUGxheWJhY2tUYXJnZXRDb2Nv
YTo6c3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fb3V0
cHV0Q29udGV4dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFbbV9vdXRwdXRD
b250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc3VwcG9ydHNNdWx0aXBsZU91dHB1
dERldmljZXMpXSB8fCAhW21fb3V0cHV0Q29udGV4dCBzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2
aWNlc10gfHwgIVttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihv
dXRwdXREZXZpY2VzKV0pIHsKLSAgICAgICAgaWYgKGF1dG8gKm91dHB1dERldmljZSA9IFttX291
dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlXSkgewotICAgICAgICAgICAgaWYgKG91dHB1dERldmlj
ZS5kZXZpY2VGZWF0dXJlcyAmIEFWT3V0cHV0RGV2aWNlRmVhdHVyZVZpZGVvKQotICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQotICAgIGZvciAoQVZPdXRwdXREZXZpY2UgKm91dHB1dERldmljZSBpbiBbbV9vdXRw
dXRDb250ZXh0IG91dHB1dERldmljZXNdKSB7Ci0gICAgICAgIGlmIChvdXRwdXREZXZpY2UuZGV2
aWNlRmVhdHVyZXMgJiBBVk91dHB1dERldmljZUZlYXR1cmVWaWRlbykKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9jb250
ZXh0LnN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygpOwogfQogCiBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29jb2E6On5NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoKQpAQCAtODEsNDUgKzczLDE3IEBA
IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6fk1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSgpCiAK
IGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29j
b2E6OnRhcmdldENvbnRleHQoKSBjb25zdAogewotICAgIG1fY29udGV4dCA9IE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0KG1fb3V0cHV0Q29udGV4dC5nZXQoKSk7CiAgICAgcmV0dXJuIG1fY29u
dGV4dDsKIH0KIAogYm9vbCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6Omhhc0FjdGl2ZVJvdXRl
KCkgY29uc3QKIHsKLSAgICBpZiAoIW1fb3V0cHV0Q29udGV4dCkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgaWYgKFttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNlcyldICYmIFttX291dHB1dENvbnRleHQg
c3VwcG9ydHNNdWx0aXBsZU91dHB1dERldmljZXNdICYmIFttX291dHB1dENvbnRleHQgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdXRwdXREZXZpY2VzKV0pIHsKLSAgICAgICAgZm9yIChB
Vk91dHB1dERldmljZSAqb3V0cHV0RGV2aWNlIGluIFttX291dHB1dENvbnRleHQgb3V0cHV0RGV2
aWNlc10pIHsKLSAgICAgICAgICAgIGlmIChvdXRwdXREZXZpY2UuZGV2aWNlRmVhdHVyZXMgJiAo
QVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8gfCBBVk91dHB1dERldmljZUZlYXR1cmVBdWRpbykp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKFttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihvdXRwdXREZXZpY2UpXSkgewotICAgICAgICBpZiAoYXV0byAqb3V0
cHV0RGV2aWNlID0gW21fb3V0cHV0Q29udGV4dCBvdXRwdXREZXZpY2VdKQotICAgICAgICAgICAg
cmV0dXJuIG91dHB1dERldmljZS5kZXZpY2VGZWF0dXJlcyAmIChBVk91dHB1dERldmljZUZlYXR1
cmVWaWRlbyB8IEFWT3V0cHV0RGV2aWNlRmVhdHVyZUF1ZGlvKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gbV9vdXRwdXRDb250ZXh0LmdldCgpLmRldmljZU5hbWU7CisgICAgcmV0dXJuIG1fY29udGV4
dC5oYXNBY3RpdmVSb3V0ZSgpOwogfQogCiBTdHJpbmcgTWVkaWFQbGF5YmFja1RhcmdldENvY29h
OjpkZXZpY2VOYW1lKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fb3V0cHV0Q29udGV4dCkKLSAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICBpZiAoIVttX291dHB1dENvbnRleHQgc3Vw
cG9ydHNNdWx0aXBsZU91dHB1dERldmljZXNdKQotICAgICAgICByZXR1cm4gW21fb3V0cHV0Q29u
dGV4dCBkZXZpY2VOYW1lXTsKLQotICAgIGF1dG8gb3V0cHV0RGV2aWNlTmFtZXMgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLSAgICBmb3IgKEFWT3V0cHV0RGV2aWNl
ICpvdXRwdXREZXZpY2UgaW4gW21fb3V0cHV0Q29udGV4dCBvdXRwdXREZXZpY2VzXSkKLSAgICAg
ICAgW291dHB1dERldmljZU5hbWVzIGFkZE9iamVjdDpbb3V0cHV0RGV2aWNlIGRldmljZU5hbWVd
XTsKLQotICAgIHJldHVybiBbb3V0cHV0RGV2aWNlTmFtZXMgY29tcG9uZW50c0pvaW5lZEJ5U3Ry
aW5nOkAiICsgIl07CisgICAgcmV0dXJuIG1fY29udGV4dC5kZXZpY2VOYW1lKCk7CiB9CiAKIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb2NvYSogdG9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoTWVkaWFQ
bGF5YmFja1RhcmdldCogcmVwKQpAQCAtMTI5LDcgKzkzLDcgQEAgTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hKiB0b01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShNZWRpYVBsYXliYWNrVGFyZ2V0KiBy
ZXApCiAKIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSogdG9NZWRpYVBsYXliYWNrVGFy
Z2V0Q29jb2EoY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldCogcmVwKQogewotICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHJlcC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJh
Y2tUYXJnZXQ6OkFWRm91bmRhdGlvbik7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihyZXAtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpU
YXJnZXRUeXBlOjpBVkZvdW5kYXRpb24pOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EqPihyZXApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQppbmRleCAyMGIyNDEyZjExMzY2M2MxZjM4NjJmMjdiNjYyNDAwZjZjZGIwNzJiLi4wYWMwOTNl
NTBjYTI5ODBjNTlhMzI3YTJjMmU4ODFlY2RmYjFiYmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KQEAgLTI4MjQsNyArMjgyNCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6aXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcygpIGNvbnN0CiAKICNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9wbGF5YmFja1RhcmdldCkgewotICAgICAg
ICBpZiAobV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJn
ZXQ6OkFWRm91bmRhdGlvbikKKyAgICAgICAgaWYgKG1fcGxheWJhY2tUYXJnZXQtPnRhcmdldFR5
cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpUYXJnZXRUeXBlOjpBVkZvdW5kYXRpb24pCiAg
ICAgICAgICAgICB3aXJlbGVzc1RhcmdldCA9IG1fYXZQbGF5ZXIgJiYgbV9hdlBsYXllci5nZXQo
KS5leHRlcm5hbFBsYXliYWNrQWN0aXZlOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB3aXJl
bGVzc1RhcmdldCA9IG1fc2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQgJiYgbV9wbGF5YmFja1Rh
cmdldC0+aGFzQWN0aXZlUm91dGUoKTsKQEAgLTI5NjgsNyArMjk2OCw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChS
ZWY8TWVkaWFQbGF5CiB7CiAgICAgbV9wbGF5YmFja1RhcmdldCA9IFdURk1vdmUodGFyZ2V0KTsK
IAotICAgIG1fb3V0cHV0Q29udGV4dCA9IG1fcGxheWJhY2tUYXJnZXQtPnRhcmdldFR5cGUoKSA9
PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpBVkZvdW5kYXRpb24gPyB0b01lZGlhUGxheWJhY2tUYXJn
ZXRDb2NvYShtX3BsYXliYWNrVGFyZ2V0LmdldCgpKS0+b3V0cHV0Q29udGV4dCgpIDogbnVsbHB0
cjsKKyAgICBtX291dHB1dENvbnRleHQgPSBtX3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkg
PT0gTWVkaWFQbGF5YmFja1RhcmdldDo6VGFyZ2V0VHlwZTo6QVZGb3VuZGF0aW9uID8gdG9NZWRp
YVBsYXliYWNrVGFyZ2V0Q29jb2EobV9wbGF5YmFja1RhcmdldC5nZXQoKSktPnRhcmdldENvbnRl
eHQoKS5vdXRwdXRDb250ZXh0KCkgOiBudWxscHRyOwogCiAgICAgSU5GT19MT0coTE9HSURFTlRJ
RklFUik7CiAKQEAgLTI5ODgsNyArMjk4OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCBzaG91CiAK
ICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCBzaG91bGRQbGF5KTsKIAotICAgIGlmIChtX3Bs
YXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldDo6QVZGb3Vu
ZGF0aW9uKSB7CisgICAgaWYgKG1fcGxheWJhY2tUYXJnZXQtPnRhcmdldFR5cGUoKSA9PSBNZWRp
YVBsYXliYWNrVGFyZ2V0OjpUYXJnZXRUeXBlOjpBVkZvdW5kYXRpb24pIHsKICAgICAgICAgQVZP
dXRwdXRDb250ZXh0ICpuZXdDb250ZXh0ID0gc2hvdWxkUGxheSA/IG1fb3V0cHV0Q29udGV4dC5n
ZXQoKSA6IG5pbDsKIAogICAgICAgICBpZiAoIW1fYXZQbGF5ZXIpCkBAIC0zMDA1LDcgKzMwMDUs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFNob3VsZFBs
YXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wgc2hvdQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgQVNTRVJUKG1fcGxheWJhY2tUYXJnZXQtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNr
VGFyZ2V0OjpNb2NrKTsKKyAgICBBU1NFUlQobV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgp
ID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6OlRhcmdldFR5cGU6Ok1vY2spOwogCiAgICAgc2V0RGVs
YXlDYWxsYmFja3ModHJ1ZSk7CiAgICAgYXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkMTVh
NWUyZDkwMDEzYWM5YTA3YjMxMTIzYjY2ZDhiY2YxOWUwYjkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dC5oCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKQorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgUExBVEZPUk0oQ09DT0EpCitPQkpDX0NM
QVNTIEFWT3V0cHV0Q29udGV4dDsKK09CSkNfQ0xBU1MgTlNEYXRhOworI2VuZGlmCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQgeworcHVi
bGljOgorICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeworICAgICAgICBOb25lLAorICAg
ICAgICBBVk91dHB1dENvbnRleHQsCisgICAgICAgIFNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQs
CisgICAgICAgIE1vY2ssCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgTW9ja1N0YXRlIDogdWlu
dDhfdCB7CisgICAgICAgIFVua25vd24gPSAwLAorICAgICAgICBPdXRwdXREZXZpY2VVbmF2YWls
YWJsZSA9IDEsCisgICAgICAgIE91dHB1dERldmljZUF2YWlsYWJsZSA9IDIsCisgICAgfTsKKwor
ICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KFJldGFpblB0cjxBVk91
dHB1dENvbnRleHQ+JiYpOworCisgICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQoUmV0YWlu
UHRyPE5TRGF0YT4mJiBzZXJpYWxpemVkT3V0cHV0Q29udGV4dCwgY29uc3QgU3RyaW5nJiBkZXZp
Y2VOYW1lLCBib29sIGhhc0FjdGl2ZVJvdXRlLCBib29sIHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5
YmFjaykKKyAgICAgICAgOiBtX3R5cGUoVHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCkK
KyAgICAgICAgLCBtX3NlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KFdURk1vdmUoc2VyaWFsaXplZE91
dHB1dENvbnRleHQpKQorICAgICAgICAsIG1fZGV2aWNlTmFtZShkZXZpY2VOYW1lKQorICAgICAg
ICAsIG1faGFzQWN0aXZlUm91dGUoaGFzQWN0aXZlUm91dGUpCisgICAgICAgICwgbV9zdXBwb3J0
c1JlbW90ZVZpZGVvUGxheWJhY2soc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKHNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KTsKKyAgICB9CisKKyAgICBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChjb25zdCBTdHJpbmcmIGRldmljZU5hbWUsIE1vY2tT
dGF0ZSBzdGF0ZSkKKyAgICAgICAgOiBtX3R5cGUoVHlwZTo6TW9jaykKKyAgICAgICAgLCBtX2Rl
dmljZU5hbWUoZGV2aWNlTmFtZSkKKyAgICAgICAgLCBtX2hhc0FjdGl2ZVJvdXRlKCFkZXZpY2VO
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgLCBtX3N1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygh
ZGV2aWNlTmFtZS5pc0VtcHR5KCkpCisgICAgICAgICwgbV9tb2NrU3RhdGUoc3RhdGUpCisgICAg
eworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6Ok1vY2spOworICAgIH0KKworICAgIFR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIGNvbnN0IFN0cmluZyYgZGV2
aWNlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlTmFtZTsgfQorICAgIGJvb2wgaGFzQWN0
aXZlUm91dGUoKSBjb25zdCB7IHJldHVybiBtX2hhc0FjdGl2ZVJvdXRlOyB9CisgICAgYm9vbCBz
dXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRzUmVt
b3RlVmlkZW9QbGF5YmFjazsgfQorCisgICAgTW9ja1N0YXRlIG1vY2tTdGF0ZSgpIGNvbnN0Cisg
ICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6Ok1vY2spOworICAgICAgICByZXR1
cm4gbV9tb2NrU3RhdGU7CisgICAgfQorCisgICAgUmV0YWluUHRyPEFWT3V0cHV0Q29udGV4dD4g
b3V0cHV0Q29udGV4dCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5
cGU6OkFWT3V0cHV0Q29udGV4dCk7CisgICAgICAgIHJldHVybiBtX291dHB1dENvbnRleHQ7Cisg
ICAgfQorCisgICAgUmV0YWluUHRyPE5TRGF0YT4gc2VyaWFsaXplZE91dHB1dENvbnRleHQoKSBj
b25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpTZXJpYWxpemVkQVZP
dXRwdXRDb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIG1fc2VyaWFsaXplZE91dHB1dENvbnRleHQ7
CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXJpYWxpemVPdXRwdXRDb250ZXh0
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBkZXNlcmlhbGl6ZU91dHB1dENvbnRleHQoKTsK
KworICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZSA9PSBUeXBlOjpBVk91dHB1dENvbnRleHQgfHwgbV90eXBlID09IFR5cGU6OlNlcmlh
bGl6ZWRBVk91dHB1dENvbnRleHQ7IH0KKworcHJpdmF0ZToKKyAgICBUeXBlIG1fdHlwZSB7IFR5
cGU6Ok5vbmUgfTsKKyAgICBSZXRhaW5QdHI8QVZPdXRwdXRDb250ZXh0PiBtX291dHB1dENvbnRl
eHQ7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gbV9zZXJpYWxpemVkT3V0cHV0Q29udGV4dDsKKwor
ICAgIFN0cmluZyBtX2RldmljZU5hbWU7CisgICAgYm9vbCBtX2hhc0FjdGl2ZVJvdXRlIHsgZmFs
c2UgfTsKKyAgICBib29sIG1fc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrIHsgZmFsc2UgfTsK
KworICAgIE1vY2tTdGF0ZSBtX21vY2tTdGF0ZSB7IE1vY2tTdGF0ZTo6VW5rbm93biB9OworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
VHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlLAorICAgICAgICBXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6Tm9uZSwKKyAgICAgICAgV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCwKKyAgICAgICAg
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRBVk91
dHB1dENvbnRleHQsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpUeXBlOjpNb2NrCisgICAgPjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZT4geworICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpNb2NrU3RhdGUsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6OlVua25vd24sCisgICAgICAgIFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6Ok91dHB1dERldmljZVVuYXZhaWxhYmxl
LAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRl
OjpPdXRwdXREZXZpY2VBdmFpbGFibGUKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RG
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9N
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjJhMTVmYzZjMTc5Y2Q0
NTBjMDQ0NTI3YTY5ZTUyZjIzNjcxZTgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW0K
QEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaCIKKworI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgor
I2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWRm91bmRh
dGlvblNQSS5oPgorI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0KFJldGFpblB0cjxBVk91dHB1dENvbnRleHQ+JiYgb3V0cHV0
Q29udGV4dCkKKyAgICA6IG1fb3V0cHV0Q29udGV4dChvdXRwdXRDb250ZXh0KQoreworICAgIGlm
ICghbV9vdXRwdXRDb250ZXh0KSB7CisgICAgICAgIG1fdHlwZSA9IE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpUeXBlOjpOb25lOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV90
eXBlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dDsK
KworICAgIGlmICghW21fb3V0cHV0Q29udGV4dCBzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNl
c10pCisgICAgICAgIG1fZGV2aWNlTmFtZSA9IFttX291dHB1dENvbnRleHQgZGV2aWNlTmFtZV07
CisgICAgZWxzZSB7CisgICAgICAgIGF1dG8gb3V0cHV0RGV2aWNlTmFtZXMgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgZm9yIChBVk91dHB1dERldmlj
ZSAqb3V0cHV0RGV2aWNlIGluIFttX291dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlc10pCisgICAg
ICAgICAgICBbb3V0cHV0RGV2aWNlTmFtZXMgYWRkT2JqZWN0OltvdXRwdXREZXZpY2UgZGV2aWNl
TmFtZV1dOworCisgICAgICAgIG1fZGV2aWNlTmFtZSA9IFtvdXRwdXREZXZpY2VOYW1lcyBjb21w
b25lbnRzSm9pbmVkQnlTdHJpbmc6QCIgKyAiXTsKKyAgICB9CisKKyAgICBpZiAoW21fb3V0cHV0
Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN1cHBvcnRzTXVsdGlwbGVPdXRw
dXREZXZpY2VzKV0gJiYgW21fb3V0cHV0Q29udGV4dCBzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2
aWNlc10gJiYgW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91
dHB1dERldmljZXMpXSkgeworICAgICAgICBmb3IgKEFWT3V0cHV0RGV2aWNlICpvdXRwdXREZXZp
Y2UgaW4gW21fb3V0cHV0Q29udGV4dCBvdXRwdXREZXZpY2VzXSkgeworICAgICAgICAgICAgaWYg
KG91dHB1dERldmljZS5kZXZpY2VGZWF0dXJlcyAmIChBVk91dHB1dERldmljZUZlYXR1cmVWaWRl
byB8IEFWT3V0cHV0RGV2aWNlRmVhdHVyZUF1ZGlvKSkKKyAgICAgICAgICAgICAgICBtX2hhc0Fj
dGl2ZVJvdXRlID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoW21fb3V0cHV0Q29u
dGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dERldmljZSldKSB7CisgICAg
ICAgIGlmIChhdXRvICpvdXRwdXREZXZpY2UgPSBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmlj
ZV0pCisgICAgICAgICAgICBtX2hhc0FjdGl2ZVJvdXRlID0gb3V0cHV0RGV2aWNlLmRldmljZUZl
YXR1cmVzICYgKEFWT3V0cHV0RGV2aWNlRmVhdHVyZVZpZGVvIHwgQVZPdXRwdXREZXZpY2VGZWF0
dXJlQXVkaW8pOworICAgIH0gZWxzZQorICAgICAgICBtX2hhc0FjdGl2ZVJvdXRlID0gbV9vdXRw
dXRDb250ZXh0LmdldCgpLmRldmljZU5hbWU7CisKKyAgICBpZiAoIVttX291dHB1dENvbnRleHQg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNl
cyldIHx8ICFbbV9vdXRwdXRDb250ZXh0IHN1cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2VzXSB8
fCAhW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dERl
dmljZXMpXSkgeworICAgICAgICBpZiAoYXV0byAqb3V0cHV0RGV2aWNlID0gW21fb3V0cHV0Q29u
dGV4dCBvdXRwdXREZXZpY2VdKSB7CisgICAgICAgICAgICBpZiAob3V0cHV0RGV2aWNlLmRldmlj
ZUZlYXR1cmVzICYgQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8pCisgICAgICAgICAgICAgICAg
bV9zdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2sgPSB0cnVlOworICAgICAgICB9CisgICAgfSBl
bHNlIHsKKyAgICAgICAgZm9yIChBVk91dHB1dERldmljZSAqb3V0cHV0RGV2aWNlIGluIFttX291
dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlc10pIHsKKyAgICAgICAgICAgIGlmIChvdXRwdXREZXZp
Y2UuZGV2aWNlRmVhdHVyZXMgJiBBVk91dHB1dERldmljZUZlYXR1cmVWaWRlbykKKyAgICAgICAg
ICAgICAgICBtX3N1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjayA9IHRydWU7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK2Jvb2wgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OnNlcmlhbGl6ZU91
dHB1dENvbnRleHQoKQoreworICAgIEFTU0VSVChtX3R5cGUgPT0gTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCk7CisgICAgaWYgKG1fdHlwZSAhPSBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNo
aXZlciBhbGxvY10gaW5pdFJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVNdKTsKKyAgICBbYXJjaGl2
ZXIgZW5jb2RlT2JqZWN0Om1fb3V0cHV0Q29udGV4dC5nZXQoKSBmb3JLZXk6TlNLZXllZEFyY2hp
dmVSb290T2JqZWN0S2V5XTsKKyAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOworCisgICAg
bV9zZXJpYWxpemVkT3V0cHV0Q29udGV4dCA9IFthcmNoaXZlciBlbmNvZGVkRGF0YV07CisgICAg
bV90eXBlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRBVk91
dHB1dENvbnRleHQ7CisgICAgbV9vdXRwdXRDb250ZXh0LmNsZWFyKCk7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6ZGVzZXJpYWxpemVP
dXRwdXRDb250ZXh0KCkKK3sKKyAgICBBU1NFUlQobV90eXBlID09IE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0KTsKKyAgICBpZiAobV90
eXBlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRw
dXRDb250ZXh0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHN1Y2Nlc3MgPSBm
YWxzZTsKKyAgICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIg
YWxsb2NdIGluaXRGb3JSZWFkaW5nRnJvbURhdGE6bV9zZXJpYWxpemVkT3V0cHV0Q29udGV4dC5n
ZXQoKSBlcnJvcjpudWxscHRyXSk7CisgICAgdW5hcmNoaXZlci5nZXQoKS5kZWNvZGluZ0ZhaWx1
cmVQb2xpY3kgPSBOU0RlY29kaW5nRmFpbHVyZVBvbGljeVJhaXNlRXhjZXB0aW9uOworICAgIGF1
dG8gYWxsb3dlZENsYXNzU2V0ID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0aEFycmF5
OkBbIFBBTDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBdXSk7CisKKyAgICBAdHJ5IHsKKyAg
ICAgICAgaWQgcmVzdWx0ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOmFsbG93
ZWRDbGFzc1NldC5nZXQoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKKyAg
ICAgICAgQVNTRVJUKCFyZXN1bHQgfHwgW3Jlc3VsdCBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3Rv
Y29sKE5TU2VjdXJlQ29kaW5nKV0pOworICAgICAgICBtX291dHB1dENvbnRleHQgPSByZXN1bHQ7
CisgICAgICAgIG1fdHlwZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91
dHB1dENvbnRleHQ7CisgICAgICAgIG1fc2VyaWFsaXplZE91dHB1dENvbnRleHQuY2xlYXIoKTsK
KyAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNl
cHRpb24pIHsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIG9iamVjdCBvZiBj
bGFzcyBBVk91dHB1dENvbnRleHQgOiAlQCIsIGV4Y2VwdGlvbik7CisgICAgfSBAZmluYWxseSB7
CisgICAgICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAgICAgICAgdW5hcmNoaXZl
ci5nZXQoKS5kZWxlZ2F0ZSA9IG5pbDsKKyAgICB9CisKKyAgICByZXR1cm4gc3VjY2VzczsKK30K
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TWVkaWFQbGF5YmFja1RhcmdldE1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5jcHAKaW5kZXggNDU1Y2VmYzlmNmYwZGY0MTk2Nzc4
Zjc1MTlmYjhiYjcxZjU1ZDUyMS4uMDQwZjNlZTBmZjc2NWYzOTZhYThmZDc2MmI1Yjk0NDVlZjQ4
NjhmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXli
YWNrVGFyZ2V0TW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRp
YVBsYXliYWNrVGFyZ2V0TW9jay5jcHAKQEAgLTMwLDE1ICszMCwxMyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFyZ2V0
TW9jazo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6OlN0YXRlIHN0YXRlKQorUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IE1lZGlhUGxheWJhY2tU
YXJnZXRNb2NrOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1l
ZGlhUGxheWJhY2tUYXJnZXRNb2NrKG5hbWUsIHN0YXRlKSk7CiB9CiAKLU1lZGlhUGxheWJhY2tU
YXJnZXRNb2NrOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhjb25zdCBTdHJpbmcmIG5hbWUsIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKLSAgICA6IE1lZGlhUGxheWJh
Y2tUYXJnZXQoKQotICAgICwgbV9uYW1lKG5hbWUpCi0gICAgLCBtX3N0YXRlKHN0YXRlKQorTWVk
aWFQbGF5YmFja1RhcmdldE1vY2s6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSkKKyAg
ICA6IG1fY29udGV4dChuYW1lLCBzdGF0ZSkKIHsKIH0KIApAQCAtNDYsNyArNDQsNiBAQCBNZWRp
YVBsYXliYWNrVGFyZ2V0TW9jazo6fk1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKCkgPSBkZWZhdWx0
OwogCiBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgTWVkaWFQbGF5YmFja1Rhcmdl
dE1vY2s6OnRhcmdldENvbnRleHQoKSBjb25zdAogewotICAgIG1fY29udGV4dCA9IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0KG1fbmFtZSwgbV9zdGF0ZSk7CiAgICAgcmV0dXJuIG1fY29udGV4
dDsKIH0KIApAQCAtNTcsNyArNTQsNyBAQCBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayogdG9NZWRp
YVBsYXliYWNrVGFyZ2V0TW9jayhNZWRpYVBsYXliYWNrVGFyZ2V0KiByZXApCiAKIGNvbnN0IE1l
ZGlhUGxheWJhY2tUYXJnZXRNb2NrKiB0b01lZGlhUGxheWJhY2tUYXJnZXRNb2NrKGNvbnN0IE1l
ZGlhUGxheWJhY2tUYXJnZXQqIHJlcCkKIHsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihyZXAtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpNb2NrKTsK
KyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHJlcC0+dGFyZ2V0
VHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6OlRhcmdldFR5cGU6Ok1vY2spOwogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayo+KHJlcCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFj
a1RhcmdldE1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFj
a1RhcmdldE1vY2suaAppbmRleCBjZDQ0OWIwM2MxMTMxMDY2NTI5NGNiODkyNGRmMGU0ZWVhYTEz
ZjRjLi4wNzJjOGRkMDQ4NGUzNTE2YjUyZmYwMjkwMDRjMWYwNGU1MzA1YTQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9j
ay5oCkBAIC0zNiwyNiArMzYsMjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRp
YVBsYXliYWNrVGFyZ2V0TW9jayA6IHB1YmxpYyBNZWRpYVBsYXliYWNrVGFyZ2V0IHsKIHB1Ymxp
YzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gY3JlYXRl
KGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpOwog
CiAgICAgdmlydHVhbCB+TWVkaWFQbGF5YmFja1RhcmdldE1vY2soKTsKIAotICAgIFRhcmdldFR5
cGUgdGFyZ2V0VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1vY2s7IH0KKyAgICBUYXJnZXRU
eXBlIHRhcmdldFR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXliYWNrVGFyZ2V0
OjpUYXJnZXRUeXBlOjpNb2NrOyB9CiAKICAgICBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dCYgdGFyZ2V0Q29udGV4dCgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaGFzQWN0aXZlUm91
dGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbnRleHQuaGFzQWN0aXZlUm91dGUoKTsgfQor
ICAgIFN0cmluZyBkZXZpY2VOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb250ZXh0LmRl
dmljZU5hbWUoKTsgfQorICAgIGJvb2wgc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9jb250ZXh0LnN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygp
OyB9CiAKLSAgICBib29sIGhhc0FjdGl2ZVJvdXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1f
bmFtZS5pc0VtcHR5KCk7IH0KLSAgICBib29sIHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX25hbWUuaXNFbXB0eSgpOyB9Ci0KLSAgICBTdHJpbmcg
ZGV2aWNlTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbmFtZTsgfQotCi0gICAgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKCkgY29uc3Q7CisgICAgTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGV4dC5tb2NrU3RhdGUoKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgTWVkaWFQbGF5YmFja1Rhcmdl
dE1vY2soY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKTsK
KyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKTsKIAotICAgIFN0cmluZyBtX25hbWU7Ci0gICAgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIG1fc3RhdGUgeyBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6VW5rbm93biB9OwogICAgIG11dGFibGUgTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQgbV9jb250ZXh0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmNwcAppbmRleCA0
NGY0MTQ3YTE5MTgwNzU0NzJlZGMzYTEyMTg5OTI3ZDdlOTI1ZWYxLi4zYjBjYTZhNzgzNzIzZjhm
OThkMjI2MGFhYjZhYjVhNTYxZWUxYzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmNwcApA
QCAtNTIsNyArNTIsNyBAQCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6fk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJNb2NrKCkKIGJvb2wgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1v
Y2s6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKCkKIHsKICAgICBMT0coTWVkaWEsICJN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGUiKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
T3V0cHV0RGV2aWNlQXZhaWxhYmxlOworICAgIHJldHVybiBtX3N0YXRlID09IE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6Ok91dHB1dERldmljZUF2YWlsYWJsZTsKIH0KIAog
UmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpw
bGF5YmFja1RhcmdldCgpCkBAIC04NSwxMCArODUsMTAgQEAgdm9pZCBNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTW9jazo6c3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkKICAgICBM
T0coTWVkaWEsICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6c3RhcnRpbmdNb25pdG9y
aW5nUGxheWJhY2tUYXJnZXRzIik7CiAKICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbdGhp
c10gewotICAgICAgICBpZiAobV9zdGF0ZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
T3V0cHV0RGV2aWNlQXZhaWxhYmxlKQorICAgICAgICBpZiAobV9zdGF0ZSA9PSBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpPdXRwdXREZXZpY2VBdmFpbGFibGUpCiAgICAg
ICAgICAgICBhdmFpbGFibGVEZXZpY2VzRGlkQ2hhbmdlKCk7CiAKLSAgICAgICAgaWYgKCFtX2Rl
dmljZU5hbWUuaXNFbXB0eSgpICYmIG1fc3RhdGUgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6OlVua25vd24pCisgICAgICAgIGlmICghbV9kZXZpY2VOYW1lLmlzRW1wdHkoKSAmJiBtX3N0
YXRlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6OlVua25vd24pCiAg
ICAgICAgICAgICBjdXJyZW50RGV2aWNlRGlkQ2hhbmdlKCk7CiAgICAgfSk7CiB9CkBAIC0xMDEs
MTUgKzEwMSwxNSBAQCB2b2lkIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpzdG9wTW9u
aXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpCiB2b2lkIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJN
b2NrOjppbnZhbGlkYXRlUGxheWJhY2tUYXJnZXRzKCkKIHsKICAgICBMT0coTWVkaWEsICJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6aW52YWxpZGF0ZVBsYXliYWNrVGFyZ2V0cyIpOwot
ICAgIHNldFN0YXRlKGVtcHR5U3RyaW5nKCksIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpV
bmtub3duKTsKKyAgICBzZXRTdGF0ZShlbXB0eVN0cmluZygpLCBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6TW9ja1N0YXRlOjpVbmtub3duKTsKIH0KIAotdm9pZCBNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTW9jazo6c2V0U3RhdGUoY29uc3QgU3RyaW5nJiBkZXZpY2VOYW1lLCBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCit2b2lkIE1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJNb2NrOjpzZXRTdGF0ZShjb25zdCBTdHJpbmcmIGRldmljZU5hbWUsIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCiB7CiAgICAgTE9HKE1lZGlhLCAi
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnNldFN0YXRlIC0gbmFtZSA9ICVzLCBzdGF0
ZSA9IDB4JXgiLCBkZXZpY2VOYW1lLnV0ZjgoKS5kYXRhKCksICh1bnNpZ25lZClzdGF0ZSk7CiAK
ICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbdGhpcywgc3RhdGUsIGRldmljZU5hbWVdIHsK
LSAgICAgICAgaWYgKGRldmljZU5hbWUgIT0gbV9kZXZpY2VOYW1lICYmIHN0YXRlICE9IE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpVbmtub3duKSB7CisgICAgICAgIGlmIChkZXZpY2VOYW1l
ICE9IG1fZGV2aWNlTmFtZSAmJiBzdGF0ZSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
TW9ja1N0YXRlOjpVbmtub3duKSB7CiAgICAgICAgICAgICBtX2RldmljZU5hbWUgPSBkZXZpY2VO
YW1lOwogICAgICAgICAgICAgY3VycmVudERldmljZURpZENoYW5nZSgpOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJNb2NrLmgKaW5kZXggZGUwOTZjYjg4MWY4MjQyMTExNjU4YjhkMjE4Mzlm
OWM4ODVkNGJjZS4uM2U3NDM5NWJmMTZiOGU3YzhjZTlmOTcyMGU3NTk0ZTRmMmM4N2VlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyTW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlck1vY2suaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpIG92ZXJyaWRlOwogICAgIHZvaWQgaW52
YWxpZGF0ZVBsYXliYWNrVGFyZ2V0cygpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBzZXRTdGF0ZShj
b25zdCBTdHJpbmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpOworICAgIHZv
aWQgc2V0U3RhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1v
Y2tTdGF0ZSk7CiAgICAgdm9pZCBkaXNtaXNzUG9wdXAoKTsKIAogcHJpdmF0ZToKQEAgLTU3LDcg
KzU3LDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBtX2RldmljZU5hbWU7CiAgICAgR2VuZXJp
Y1Rhc2tRdWV1ZTxUaW1lcj4gbV90YXNrUXVldWU7Ci0gICAgTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OlN0YXRlIG1fc3RhdGUgeyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VW5rbm93
biB9OworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgbV9zdGF0ZSB7
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6OlVua25vd24gfTsKICAgICBi
b29sIG1fc2hvd2luZ01lbnUgeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCmluZGV4IDM0NDkyYmFmODExNGM5NDZkNjMwMWEwZjYwMDZkNWRmMTkzNDZjYTMu
LmMzODAxMTY5NGJhZmFjYzhhMWY2N2ZmMDg1YWZlNDRhYmJiYzJhZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTU1OSw3ICs1NTksNyBAQCB2b2lkIEludGVybmFsczo6
cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdlKQogCiAjaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkKICAgICBwYWdlLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyRW5hYmxlZCh0cnVlKTsKLSAgICBwYWdlLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyU3RhdGUoZW1wdHlTdHJpbmcoKSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlVua25v
d24pOworICAgIHBhZ2Uuc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShlbXB0
eVN0cmluZygpLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpVbmtub3du
KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPKQpAQCAtNDUxMCwxNCArNDUxMCwxNCBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyU3RhdGUoY29uc3QgU3RyaW5nJgogICAgIFBhZ2UqIHBhZ2UgPSBjb250ZXh0RG9jdW1lbnQo
KS0+ZnJhbWUoKS0+cGFnZSgpOwogICAgIEFTU0VSVChwYWdlKTsKIAotICAgIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpVbmtub3duOworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3Rh
dGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpVbmtub3duOwogCiAg
ICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRldmljZVN0YXRlLCAiZGV2aWNl
YXZhaWxhYmxlIikpCi0gICAgICAgIHN0YXRlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
Ok91dHB1dERldmljZUF2YWlsYWJsZTsKKyAgICAgICAgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6TW9ja1N0YXRlOjpPdXRwdXREZXZpY2VBdmFpbGFibGU7CiAgICAgZWxzZSBp
ZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGV2aWNlU3RhdGUsICJkZXZpY2V1bmF2
YWlsYWJsZSIpKQotICAgICAgICBzdGF0ZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpP
dXRwdXREZXZpY2VVbmF2YWlsYWJsZTsKKyAgICAgICAgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6TW9ja1N0YXRlOjpPdXRwdXREZXZpY2VVbmF2YWlsYWJsZTsKICAgICBlbHNl
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkZXZpY2VTdGF0ZSwgInVua25vd24i
KSkKLSAgICAgICAgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VW5rbm93bjsK
KyAgICAgICAgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpV
bmtub3duOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nl
c3NFcnJvciB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKaW5kZXggYmQxOTFlNTcxZDcxZjIxMDdkZmZl
YzVkZmIyNGIwZDQ0NmRjY2U2Ny4uMTg4ZmIwYzMxM2ZmYWYwYzI1ZWNjZGE3NDZkNjdjMWFjMmE3
ZjdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAtNTksNiArNTksNyBAQAogCiAjaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWJh
Y2tUYXJnZXRDb2NvYS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmg+CiAj
ZW5kaWYKIApAQCAtNjk3LDIwICs2OTgsMjEgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5
OjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sIHNob3VsZFBsYXkpCiAgICAgbV9w
bGF5ZXItPnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHNob3VsZFBsYXkpOwogfQogCi12
b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoY29u
c3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldENvbnRleHQpCit2
b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQmJiB0YXJnZXRDb250ZXh0KQogewogICAgIHN3aXRjaCAo
dGFyZ2V0Q29udGV4dC50eXBlKCkpIHsKLSAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpBVk91dHB1dENvbnRleHRUeXBlOgotICAgICAgICBtX3BsYXllci0+c2V0V2lyZWxlc3NQ
bGF5YmFja1RhcmdldChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZSh0
YXJnZXRDb250ZXh0LmF2T3V0cHV0Q29udGV4dCgpKSk7CisgICAgY2FzZSBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dDogeworICAgICAg
ICBpZiAodGFyZ2V0Q29udGV4dC5kZXNlcmlhbGl6ZU91dHB1dENvbnRleHQoKSkKKyAgICAgICAg
ICAgIG1fcGxheWVyLT5zZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KE1lZGlhUGxheWJhY2tUYXJn
ZXRDb2NvYTo6Y3JlYXRlKFdURk1vdmUodGFyZ2V0Q29udGV4dCkpKTsKICAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2s6
CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
Ok1vY2tUeXBlOgotICAgICAgICBtX3BsYXllci0+c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6Y3JlYXRlKHRhcmdldENvbnRleHQubW9j
a0RldmljZU5hbWUoKSwgdGFyZ2V0Q29udGV4dC5tb2NrU3RhdGUoKSkpOworICAgICAgICBtX3Bs
YXllci0+c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6
Y3JlYXRlKHRhcmdldENvbnRleHQuZGV2aWNlTmFtZSgpLCB0YXJnZXRDb250ZXh0Lm1vY2tTdGF0
ZSgpKSk7CiAgICAgICAgIGJyZWFrOwotI2Vsc2UKLSAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpNb2NrVHlwZToKICNlbmRpZgotICAgIGNhc2UgTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6Ok5vbmU6CisgICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlw
ZTo6QVZPdXRwdXRDb250ZXh0OgorICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
OlR5cGU6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVh
azsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkuaAppbmRleCAyNGI2NjQxYWU0ZjVmMWU3ZGZjMTA1Mzc0MTNm
MGU5Y2ZkMjVlMjNmLi5iZGFlZThhZTA1ZjEwZmE0NjU3MzM0M2Y0NzljNDI5M2Q0N2RmNmM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5LmgKQEAgLTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB2b2lkIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFj
a0Rpc2FibGVkKGJvb2wpOwogICAgIHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQo
Ym9vbCk7Ci0gICAgdm9pZCBzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Jik7CisgICAgdm9pZCBzZXRXaXJlbGVzc1BsYXli
YWNrVGFyZ2V0KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiYpOwogICAgIHZv
aWQgbWVkaWFQbGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZChib29s
KSBmaW5hbDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IGJmODhhYjYxN2JlMTIxYjRh
ZjdiYzRjZDNjNGZjMTk3ZGRhNTk3ODIuLjI5OGQ4NWQyYTA2NGNhNGFhY2U5YWVlM2JkZDQ1OTgz
OGM3MGI2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVB
cmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dl
YkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC00MSwxNCArNDEsMjMgQEAKICNpbXBvcnQg
PFVJS2l0L1VJRm9udC5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQorI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oPgor
I2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CisjZW5kaWYKKworI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1dlYkNvcmVBcmd1bWVudENvZGVyc0Nv
Y29hQWRkaXRpb25zLm1tPgorI2VuZGlmCisKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogI2ltcG9y
dCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50QXV0aG9yaXphdGlv
blN0YXR1cy5oPgogI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogI2VuZGlm
CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9u
cy9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYUFkZGl0aW9ucy5tbT4KKyNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNv
ZnRMaW5rLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIElQQyB7CkBAIC02MDYsNCArNjE1LDQ1IEBA
IGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0
Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQordm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCit7Cisg
ICAgaWYgKHRhcmdldC50eXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6
OkFWT3V0cHV0Q29udGV4dCkgeworICAgICAgICBpZiAoW1BBTDo6Z2V0QVZPdXRwdXRDb250ZXh0
Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCisg
ICAgICAgICAgICBlbmNvZGVyIDw8IHRhcmdldC5vdXRwdXRDb250ZXh0KCk7CisgICAgfSBlbHNl
IGlmICh0YXJnZXQudHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpT
ZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0KQorICAgICAgICBlbmNvZGVyIDw8IHRhcmdldC5zZXJp
YWxpemVkT3V0cHV0Q29udGV4dCgpOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZSBjb250ZXh0VHlwZSwgY29uc3QgU3RyaW5nJiBkZXZp
Y2VOYW1lLCBib29sIGhhc0FjdGl2ZVJvdXRlLCBib29sIHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5
YmFjaywgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldCkKK3sKKyAgICBBU1NFUlQo
Y29udGV4dFR5cGUgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2spOwor
CisgICAgaWYgKGNvbnRleHRUeXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBl
OjpBVk91dHB1dENvbnRleHQpIHsKKyAgICAgICAgaWYgKCFbUEFMOjpnZXRBVk91dHB1dENvbnRl
eHRDbGFzcygpIGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woTlNTZWN1cmVDb2RpbmcpXSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBhdXRvIG91dHB1dENvbnRleHQg
PSBJUEM6OmRlY29kZTxBVk91dHB1dENvbnRleHQ+KGRlY29kZXIsIFBBTDo6Z2V0QVZPdXRwdXRD
b250ZXh0Q2xhc3MoKSk7CisgICAgICAgIGlmICghb3V0cHV0Q29udGV4dCkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICB0YXJnZXQgPSBXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dCB7IFdURk1vdmUoKm91dHB1dENvbnRleHQpIH07CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIGlmIChjb250ZXh0VHlwZSA9PSBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCkgeworICAgICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBzZXJpYWxpemVkT3V0cHV0Q29udGV4dDsKKyAgICAgICAgaWYgKCFJ
UEM6OmRlY29kZShkZWNvZGVyLCBzZXJpYWxpemVkT3V0cHV0Q29udGV4dCkgfHwgIXNlcmlhbGl6
ZWRPdXRwdXRDb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHRh
cmdldCA9IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IHsgV1RGTW92ZShzZXJp
YWxpemVkT3V0cHV0Q29udGV4dCksIGRldmljZU5hbWUsIGhhc0FjdGl2ZVJvdXRlLCBzdXBwb3J0
c1JlbW90ZVZpZGVvUGxheWJhY2sgfTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggMjU1YTJj
YmM2Yzc3Y2VmMWU2MDcwZWE0MjBmNmJkZTkwYjI0MGE3MS4uOTViOTQ5ZTViMWFlYTRjYjc4MWRk
N2M4OGY2Mjk1MjA2MWE0MWYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCkBAIC0yNDU3LDE3ICsyNDU3LDIwIEBAIHZvaWQgQXJndW1lbnRD
b2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBNCiAgICAgYm9vbCBoYXNQbGF0Zm9ybURhdGEgPSB0YXJnZXQuZW5jb2RpbmdSZXF1
aXJlc1BsYXRmb3JtRGF0YSgpOwogICAgIGVuY29kZXIgPDwgaGFzUGxhdGZvcm1EYXRhOwogCi0g
ICAgaW50MzJfdCB0YXJnZXRUeXBlID0gdGFyZ2V0LnR5cGUoKTsKLSAgICBlbmNvZGVyIDw8IHRh
cmdldFR5cGU7CisgICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGUgY29udGV4dFR5
cGUgPSB0YXJnZXQudHlwZSgpOworICAgIGVuY29kZXIgPDwgY29udGV4dFR5cGU7CisKKyAgICBl
bmNvZGVyIDw8IHRhcmdldC5kZXZpY2VOYW1lKCk7CisgICAgZW5jb2RlciA8PCB0YXJnZXQuaGFz
QWN0aXZlUm91dGUoKTsKKyAgICBlbmNvZGVyIDw8IHRhcmdldC5zdXBwb3J0c1JlbW90ZVZpZGVv
UGxheWJhY2soKTsKIAogICAgIGlmICh0YXJnZXQuZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0
YSgpKSB7CiAgICAgICAgIGVuY29kZVBsYXRmb3JtRGF0YShlbmNvZGVyLCB0YXJnZXQpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKHRhcmdldFR5cGUgPT0gTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6Ok1vY2tUeXBlKTsKLSAgICBlbmNvZGVyIDw8IHRhcmdldC5tb2Nr
RGV2aWNlTmFtZSgpOwotICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8aW50MzJfdD4odGFyZ2V0
Lm1vY2tTdGF0ZSgpKTsKKyAgICBBU1NFUlQoY29udGV4dFR5cGUgPT0gTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6OlR5cGU6Ok1vY2spOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWlu
dDhfdD4odGFyZ2V0Lm1vY2tTdGF0ZSgpKTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCkBAIC0yNDc2LDI0ICsyNDc5LDMxIEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBNZWRpYVBsCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNQbGF0Zm9ybURh
dGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpbnQzMl90IHRhcmdldFR5cGU7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0YXJnZXRUeXBlKSkKKyAgICBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6VHlwZSBjb250ZXh0VHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNv
bnRleHRUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGhhc1BsYXRmb3Jt
RGF0YSkKLSAgICAgICAgcmV0dXJuIGRlY29kZVBsYXRmb3JtRGF0YShkZWNvZGVyLCB0YXJnZXQp
OworICAgIFN0cmluZyBkZXZpY2VOYW1lOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGV2aWNl
TmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEFTU0VSVCh0YXJnZXRUeXBlID09
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrVHlwZSk7CisgICAgYm9vbCBoYXNBY3Rp
dmVSb3V0ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0FjdGl2ZVJvdXRlKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3RyaW5nIG1vY2tEZXZpY2VOYW1lOwotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUobW9ja0RldmljZU5hbWUpKQorICAgIGJvb2wgc3VwcG9ydHNSZW1vdGVW
aWRlb1BsYXliYWNrOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3VwcG9ydHNSZW1vdGVWaWRl
b1BsYXliYWNrKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaW50MzJfdCBtb2NrU3Rh
dGU7CisgICAgaWYgKGhhc1BsYXRmb3JtRGF0YSkKKyAgICAgICAgcmV0dXJuIGRlY29kZVBsYXRm
b3JtRGF0YShkZWNvZGVyLCBjb250ZXh0VHlwZSwgZGV2aWNlTmFtZSwgaGFzQWN0aXZlUm91dGUs
IHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaywgdGFyZ2V0KTsKKworICAgIEFTU0VSVChjb250
ZXh0VHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6TW9jayk7CisgICAg
dWludDhfdCBtb2NrU3RhdGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtb2NrU3RhdGUpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB0YXJnZXQgPSBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dChtb2NrRGV2aWNlTmFtZSwgc3RhdGljX2Nhc3Q8TWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OlN0YXRlPihtb2NrU3RhdGUpKTsKKyAgICB0YXJnZXQgPSBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dChkZXZpY2VOYW1lLCBzdGF0aWNfY2FzdDxNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6TW9ja1N0YXRlPihtb2NrU3RhdGUpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBi
YjMyNDkwNzkzNGYzMGZhNGI3N2YzMmJjNzNiYTMyZjQ5ODQyOGYzLi43NDhlYjJlYjA2YTJmM2Ix
MmI1ZjJlYWE5Mjk3NGU4YjhiODAyMzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
SW1hZ2VEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbmRleGVkREIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0lucHV0TW9kZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2VsZWN0aW9uT3B0aW9uLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29y
a0xvYWRNZXRyaWNzLmg+CkBAIC0xOTUsMTAgKzE5Niw2IEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2Vi
Q29udGVudDsKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKICNlbmRpZgogCi0j
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLWNsYXNzIE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OwotI2VuZGlmCi0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogc3RydWN0
IE1lZGlhQ29uc3RyYWludHM7CiAjZW5kaWYKQEAgLTY0NCw3ICs2NDEsNyBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dCYpOwogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
Jik7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImLCBjb25zdCBX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYpOwotICAgIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYsIFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Jik7CisgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6OlR5cGUsIGNvbnN0IFN0cmluZyYgZGV2aWNlTmFtZSwgYm9vbCBoYXNB
Y3RpdmVSb3V0ZSwgYm9vbCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2ssIFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Jik7CiB9OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCmluZGV4IDE4
NmI3YmIyZGI2ZmM0ZTJiYzEzM2Y3MTc1Y2NmOWMzNzYzODkyMzAuLjkyNWY1YTRkNWE0ODhkNDg4
NDA0ZWM2Mjk1MmQ4YTI0OWEzZjAwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQpAQCAtNDIsMTIgKzQyLDYgQEAKICNp
bXBvcnQgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CiAjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0Yu
aD4KIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0jaW1wb3J0IDxXZWJD
b3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+Ci0jaW1wb3J0IDxvYmpjL3J1bnRpbWUu
aD4KLSNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgotI2VuZGlmCi0K
IG5hbWVzcGFjZSBJUEMgewogCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q2VydGlmaWNh
dGVJbmZvPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvKQpAQCAtNDAzLDI5ICszOTcsNiBAQCBib29sIEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZQogCiAjZW5kaWYKIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpCi0KLXZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dD46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0KQotewotICAgIGlmIChbUEFM
OjpnZXRBVk91dHB1dENvbnRleHRDbGFzcygpIGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2wo
TlNTZWN1cmVDb2RpbmcpXSkKLSAgICAgICAgZW5jb2RlciA8PCB0YXJnZXQuYXZPdXRwdXRDb250
ZXh0KCk7Ci19Ci0KLWJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0KQotewotICAgIGlmICghW1BBTDo6
Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5T
U2VjdXJlQ29kaW5nKV0pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gY29udGV4
dCA9IElQQzo6ZGVjb2RlPEFWT3V0cHV0Q29udGV4dD4oZGVjb2RlciwgUEFMOjpnZXRBVk91dHB1
dENvbnRleHRDbGFzcygpKTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIHRhcmdldCA9IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IHsg
Y29udGV4dC0+Z2V0KCkgfTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotI2VuZGlmCi0KICNpZiBF
TkFCTEUoVklERU8pCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1ZVZhbHVlPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZSYgdmFsdWUpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA2ZmJjYjNiYjY4MzNm
OTgwNzVjYTYyYTViN2ZkNTdmYzM3MzBkNzgzLi4yMjg4YmFhNWFlZTAxYTYyMThlYjRjMjg4NmY1
ZDNiZWEzODNlYWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
QEAgLTc3NzgsMTQgKzc3NzgsNiBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4m
IG1lZGlhUmVsYXRlZElPS2l0Q2xhc3NlcygpCiAgICAgfSk7CiAgICAgcmV0dXJuIHNlcnZpY2Vz
OwogfQotCi1zdGF0aWMgY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIHRlbXBvcmFyeU1hY2hT
ZXJ2aWNlcygpCi17Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gc2VydmljZXMgPSBtYWtlTmV2ZXJE
ZXN0cm95ZWQoVmVjdG9yPEFTQ0lJTGl0ZXJhbD4gewotICAgICAgICAiY29tLmFwcGxlLmNvcmVt
ZWRpYS5yb3V0aW5nY29udGV4dC54cGMiX3MgLy8gUmVtb3ZlIGFmdGVyIDxyZGFyOi8vNzY0MDMz
MDI+IGlzIGZpeGVkLgotICAgIH0pOwotICAgIHJldHVybiBzZXJ2aWNlczsKLX0KICNlbmRpZgog
CiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0
ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgRHJhd2luZ0FyZWFQcm94eSYgZHJhd2luZ0Fy
ZWEsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9saWNpZXMpCkBAIC03
ODgxLDkgKzc4NzMsNiBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6
Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogICAgICAgICAvLyBGSVhN
RSgyMDc3MTYpOiBUaGUgZm9sbG93aW5nIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gdGhlIEdQVSBw
cm9jZXNzIGlzIGNvbXBsZXRlLgogICAgICAgICBwYXJhbWV0ZXJzLm1lZGlhRXh0ZW5zaW9uSGFu
ZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKG1lZGlh
UmVsYXRlZE1hY2hTZXJ2aWNlcygpLCBXVEY6Om51bGxvcHQpOwogICAgICAgICBwYXJhbWV0ZXJz
Lm1lZGlhSU9LaXRFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlc0ZvcklPS2l0Q2xhc3NFeHRlbnNpb25zKG1lZGlhUmVsYXRlZElPS2l0Q2xhc3NlcygpLCBX
VEY6Om51bGxvcHQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIEZJWE1FKDIyNDMyNyk6IFJl
bW92ZSB0aGlzIGVsc2UgY2xhdXNlIG9uY2UgPHJkYXI6Ly83NjQwMzMwMj4gaXMgZml4ZWQuCi0g
ICAgICAgIHBhcmFtZXRlcnMubWVkaWFFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAodGVtcG9yYXJ5TWFjaFNlcnZpY2VzKCksIFdU
Rjo6bnVsbG9wdCk7CiAgICAgfQogCiAgICAgaWYgKCFwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nl
c3NGb3JNZWRpYUVuYWJsZWQoKQpAQCAtOTM0OSw3ICs5MzM4LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sIGVuYWJsZWQp
CiAgICAgcGFnZUNsaWVudCgpLm1lZGlhU2Vzc2lvbk1hbmFnZXIoKS5zZXRNb2NrTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlckVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQordm9p
ZCBXZWJQYWdlUHJveHk6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29u
c3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9j
a1N0YXRlIHN0YXRlKQogewogICAgIHBhZ2VDbGllbnQoKS5tZWRpYVNlc3Npb25NYW5hZ2VyKCku
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShuYW1lLCBzdGF0ZSk7CiB9CkBA
IC05MzY0LDcgKzkzNTMsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBsYXliYWNrVGFyZ2V0
KFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGUKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQoY29udGV4dElkLCB0YXJnZXQtPnRhcmdl
dENvbnRleHQoKSkpOworICAgIGF1dG8gY29udGV4dCA9IHRhcmdldC0+dGFyZ2V0Q29udGV4dCgp
OworICAgIEFTU0VSVChjb250ZXh0LnR5cGUoKSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCk7CisgICAgaWYgKGNvbnRleHQudHlw
ZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQg
JiYgIWNvbnRleHQuc2VyaWFsaXplT3V0cHV0Q29udGV4dCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFja1RhcmdldFNlbGVjdGVkKGNvbnRl
eHRJZCwgY29udGV4dCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXh0ZXJuYWxPdXRwdXRE
ZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRp
ZmllciBjb250ZXh0SWQsIGJvb2wgYXZhaWxhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCBhYWU1ZmNmMDVhYjFjMTIyZGMzNjViODk5YWNjZDNiMGMwN2VhYzQ0
Li5mZWRjYzhkZmRlMTE5ZWE4NDI2NjdkY2RiNzVjMzk4Y2RmNTliZGI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTU1Niw3ICsxNTU2LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0
Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGJvb2wg
aGFzVmlkZW8pOwogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENo
YW5nZShXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBXZWJD
b3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpOwogICAgIHZvaWQgc2V0TW9ja01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpOwotICAgIHZvaWQgc2V0TW9ja01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpOworICAgIHZvaWQgc2V0TW9ja01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKTsKICAgICB2b2lkIG1vY2tNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCk7CiAKICAgICAvLyBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyQ2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KaW5kZXggZjAxZDhhMDVkYmEwY2U3NjJjYzMwZDg4ZDBhYjZlYmY3MTE1NjE5Yi4u
YjlkMWRmNDUxOTIwMzdiZDZkNDExNTkzNjA5NTk2NGIyNTNkMjMyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNDc2LDcgKzQ3
Niw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU2hvd1BsYXliYWNrVGFyZ2V0
UGlja2VyKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29u
dGV4dElkLCBXZWJDb3JlOjpGbG9hdFJlY3QgcGlja2VyTG9jYXRpb24sIGJvb2wgaGFzVmlkZW8p
CiAgICAgUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpQ
bGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgdW5zaWduZWQg
bWVkaWFTdGF0ZSkKICAgICBTZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQo
Ym9vbCBlbmFibGVkKQotICAgIFNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUo
U3RyaW5nIG5hbWUsIHVuc2lnbmVkIHBpY2tlclN0YXRlKQorICAgIFNldE1vY2tNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyU3RhdGUoU3RyaW5nIG5hbWUsIGVudW06dWludDhfdCBXZWJDb3JlOjpN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHBpY2tlclN0YXRlKQogICAgIE1v
Y2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCkKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9p
b3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcAppbmRleCBjYjI5NmMwMzcyNTY5MGM4ZTli
OTg3ODUzODk2NzUwMjY3ZTliNjEwLi42YjA1MTU3NWI5NmEzMTlmOGY0YjQwNDA4ZTNlM2ExNDgw
ZjA4YTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lv
cy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAKQEAgLTg0LDEy
ICs4NCwxMiBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6cHJvdmlkZVByZXNlbnRp
bmdBcHBsaWNhdGlvblBJRChpbnQgcGlkKQogCiB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
cjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0c0FpclBsYXlWaWRlbyBzdXBwb3J0
c0FpclBsYXlWaWRlbywgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmJiB0YXJnZXRDb250ZXh0
KQogewotICAgIGlmICh0YXJnZXRDb250ZXh0LnR5cGUoKSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6QVZPdXRwdXRDb250ZXh0VHlwZSkgeworICAgIGlmICh0YXJnZXRDb250ZXh0LnR5
cGUoKSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0
KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVWaWRlb1JvdXRlRGlk
Q2hhbmdlKHN1cHBvcnRzQWlyUGxheVZpZGVvLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29jb2E6OmNyZWF0ZSh0YXJnZXRDb250ZXh0LmF2T3V0cHV0Q29udGV4dCgpKSk7CisgICAgV2Vi
Q29yZTo6TWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKHN1cHBv
cnRzQWlyUGxheVZpZGVvLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0
ZShXVEZNb3ZlKHRhcmdldENvbnRleHQpKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
aW5kZXggMTkyYWQ4ZDE1MTZlMGQyZGJmMWU3MDNiYzlhNzc2YTMwZDMzZWJjZS4uNmZjY2Y1Y2Vk
MjhlOTM2NTllYTFlMGIyY2MyMDk4ZmRjYjdlMWRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
QEAgLTEzNTIsNyArMTM1Miw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIG1fcGFnZS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
RW5hYmxlZChlbmFibGVkKSk7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRNb2NrTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNl
dE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKQogewogICAgIG1fcGFn
ZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyU3RhdGUobmFtZSwgc3RhdGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCAwYjhk
MTgxYzRjOWVkZTE5MWIyZWI4ZDk2MDNkYThlN2MzNTc1ZTFlLi4wYWM3M2E1MzQyZThlNzRhYWU4
MWU3ZDc5YjVhZmVjZDRiMmVmNDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zNzgsNyArMzc4
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJDb3Jl
OjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIGJvb2wpIGZpbmFsOwogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJDbGll
bnRTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVu
dGlmaWVyLCBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpIGZpbmFsOwog
ICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpIGZp
bmFsOwotICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25z
dCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpIGZp
bmFsOworICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25z
dCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRl
KSBmaW5hbDsKICAgICB2b2lkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1Bv
cHVwKCkgZmluYWw7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IDhiNjljODMzMGMyOGM4NTdiMTI1NDA1YzMxYzAxMTYzNDk2NzFlNzYu
LmI1MzY5ZGFmY2ZhZWI5YzM5NjM3YjMxZjM3NTZjZDk5YzRiZmJlOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE3ODEsNyArMTc4MSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXRTaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMoYm9v
bCBkaXNwYXRjaCkgeyBtX3Nob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyA9IGRpc3Bh
dGNoOyB9CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIHBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQoV2ViQ29yZTo6
UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQmIG91dHB1dERldmljZSkgY29uc3Q7CisgICAgdm9pZCBw
bGF5YmFja1RhcmdldFNlbGVjdGVkKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4
dElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiYpIGNvbnN0
OwogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoV2ViQ29yZTo6
UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgYm9vbCk7CiAgICAgdm9pZCBz
ZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyLCBib29sKTsKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0UGlja2Vy
V2FzRGlzbWlzc2VkKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQppbmRleCA3NGRhNjM1Nzg4MmNkMDEzMDIwODQwOTdmMDY0ZDIxYzNiOTE1ZDA0Li5m
OGI4MGM2YzRkNTQ1YTY1NmFiYTdkYzNjODM5YjZjZGExY2ZlMmI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMzUsNyAr
MzUsNiBAQAogI2ltcG9ydCAiRm9udEluZm8uaCIKICNpbXBvcnQgIkZyYW1lSW5mb0RhdGEuaCIK
ICNpbXBvcnQgIkluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oIgotI2ltcG9ydCAiUERGS2l0
U29mdExpbmsuaCIKICNpbXBvcnQgIlBERlBsdWdpbi5oIgogI2ltcG9ydCAiUGFnZUJhbm5lci5o
IgogI2ltcG9ydCAiUGx1Z2luVmlldy5oIgpAQCAtOTksOSArOTgsMTIgQEAKIAogI2lmIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAjaW1wb3J0IDxXZWJDb3JlL01lZGlhUGxheWJh
Y2tUYXJnZXRDb2NvYS5oPgorI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oPgogI2Vu
ZGlmCiAKKyNpbXBvcnQgIlBERktpdFNvZnRMaW5rLmgiCisKIG5hbWVzcGFjZSBXZWJLaXQgewog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTEwNDIsMTYgKzEwNDQsMTcgQEAgdm9pZCBX
ZWJQYWdlOjpkaWRVcGRhdGVSZW5kZXJpbmcoKQogfQogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi12b2lkIFdlYlBhZ2U6OnBs
YXliYWNrVGFyZ2V0U2VsZWN0ZWQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmll
ciBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0
YXJnZXRDb250ZXh0KSBjb25zdAordm9pZCBXZWJQYWdlOjpwbGF5YmFja1RhcmdldFNlbGVjdGVk
KFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmIHRhcmdldENvbnRleHQpIGNvbnN0CiB7CiAg
ICAgc3dpdGNoICh0YXJnZXRDb250ZXh0LnR5cGUoKSkgewotICAgIGNhc2UgTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6OkFWT3V0cHV0Q29udGV4dFR5cGU6Ci0gICAgICAgIG1fcGFnZS0+c2V0
UGxheWJhY2tUYXJnZXQoY29udGV4dElkLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29j
b2E6OmNyZWF0ZSh0YXJnZXRDb250ZXh0LmF2T3V0cHV0Q29udGV4dCgpKSk7CisgICAgY2FzZSBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4
dDoKKyAgICAgICAgbV9wYWdlLT5zZXRQbGF5YmFja1RhcmdldChjb250ZXh0SWQsIFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKFdURk1vdmUodGFyZ2V0Q29udGV4dCkp
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
TW9ja1R5cGU6Ci0gICAgICAgIG1fcGFnZS0+c2V0UGxheWJhY2tUYXJnZXQoY29udGV4dElkLCBX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6Y3JlYXRlKHRhcmdldENvbnRleHQubW9j
a0RldmljZU5hbWUoKSwgdGFyZ2V0Q29udGV4dC5tb2NrU3RhdGUoKSkpOworICAgIGNhc2UgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2s6CisgICAgICAgIG1fcGFnZS0+c2V0
UGxheWJhY2tUYXJnZXQoY29udGV4dElkLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9j
azo6Y3JlYXRlKHRhcmdldENvbnRleHQuZGV2aWNlTmFtZSgpLCB0YXJnZXRDb250ZXh0Lm1vY2tT
dGF0ZSgpKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6Ok5vbmU6CisgICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6
QVZPdXRwdXRDb250ZXh0OgorICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5
cGU6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGI4OWIyNjZjM2Q3OWFjZDI0MWRmMzZiNWZjZTJm
MWQyZWQ4ZGI3NDguLmYzZDQ3MTZhODkzM2Q5ZjI0MmY4ZWYxMjE1YTg2NjIzNDBmODk3YTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCkBAIC0yNDMsNyArMjQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNo
b3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRl
eHRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgLyogaGFzVmlkZW8g
Ki8pIGZpbmFsOwogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENo
YW5nZShXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBXZWJD
b3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpIGZpbmFsOwogICAgIHZvaWQgc2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpIGZpbmFsOwotICAgIHZv
aWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpIGZpbmFsOworICAgIHZv
aWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKSBmaW5hbDsKICAg
ICB2b2lkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCkgb3ZlcnJp
ZGU7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IGIzNGU4ZDlkOGVlOTE1YzYxYTBj
NDlmZjQwZTJkNjZmZWQyNGEwNGUuLmM5NjQ4M2ZmOTZlYjdmZDhjYzE5NTI3YzM1NDVkOWI4M2Ix
NGE5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KQEAgLTExMjksNyArMTEyOSw3IEBAIHZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9v
bCBlbmFibGVkKQogICAgIFttX3dlYlZpZXcgX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyRW5hYmxlZDplbmFibGVkXTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldE1vY2tN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCit2b2lkIFdlYkNocm9tZUNsaWVudDo6
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUs
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCiB7CiAgICAgW21f
d2ViVmlldyBfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOm5hbWUgc3RhdGU6
c3RhdGVdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaAppbmRleCAwYjkyMzgzNWU5ZTE1
YjZiODA0NWI0OWFmZTI5ZTZhYWIwM2VjZmNhLi44Y2EzMjk0N2E1YjQ2ZTA2N2I4ZThiYWU0NDYz
OTNlYmI5MGU4NmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaApAQCAtNTMsNyArNTMs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViQ29yZTo6
UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiwgYm9vbCBoYXNWaWRlbyk7CiAgICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tlckNs
aWVudFN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElk
ZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyk7CiAgICAg
dm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCk7Ci0gICAg
dm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYs
IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgdm9pZCBz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpOwogICAgIHZvaWQgbW9j
a01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsKIAogICAgIHZvaWQgaW52
YWxpZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tCmluZGV4IDczNDQzNTY3NWFi
ODA5YjUwZWM1ZWYzOGFiOWY3N2NhMTQ4YjMxZjEuLjdkYmQ1ODk0NzU0MDVhMTZlYmRkMGZhOWJj
ZmE2MmMzMzdlNzQxNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0KQEAgLTY4LDcg
KzY4LDcgQEAgdm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpzZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbAogICAgIFdlYkNvcmU6OldlYk1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNoYXJlZCgpLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5h
YmxlZChlbmFibGVkKTsKIH0KIAotdm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwg
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQordm9pZCBX
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSkKIHsKICAgICBXZWJDb3JlOjpXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyOjpzaGFyZWQoKS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRl
KG5hbWUsIHN0YXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQppbmRleCA1YjBlZThhM2FjOGMzMzNiNmVlMzQ0Y2RkOWMzYjU1NzY1YzI2ZmYwLi40OTJh
ZjYwMWNmN2FjNGRmNDY0NTBiMDhhYWE1YzMyMGVhMmU2ZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC05MjMyLDcgKzkyMzIsNyBAQCBib29sIExh
eWVyRmx1c2hDb250cm9sbGVyOjpmbHVzaExheWVycygpCiAgICAgW3NlbGYgX2RldmljZVBpY2tl
cl0tPnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChlbmFibGVkKTsKIH0K
IAotLSAodm9pZClfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOihOU1N0cmlu
ZyAqKW5hbWUgc3RhdGU6KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0
ZSlzdGF0ZQorLSAodm9pZClfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOihO
U1N0cmluZyAqKW5hbWUgc3RhdGU6KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpNb2NrU3RhdGUpc3RhdGUKIHsKICAgICBbc2VsZiBfZGV2aWNlUGlja2VyXS0+c2V0TW9ja01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShuYW1lLCBzdGF0ZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCAzYWUw
ZDNhYTI2MmQ5NTIzMzBjMWM4MmMzMjU1MGQ5YTIxYTUwMTRmLi4wNGI4YzM2OGNjYWY4NTI0ZDA4
NTkzNzJkNjA1OGY0OGYxN2E2ZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKQEAgLTMyNyw3ICszMjcsNyBAQCBXZWJMYXlvdXRN
aWxlc3RvbmVzIGtpdExheW91dE1pbGVzdG9uZXMoT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1p
bGVzdG9uZT4pOwogLSAodm9pZClfc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyOihXZWJDb3JlOjpQ
bGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyKWNvbnRleHRJZCBsb2NhdGlvbjoo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKWxvY2F0aW9uIGhhc1ZpZGVvOihCT09MKWhhc1ZpZGVv
OwogLSAodm9pZClfcGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5nZTooV2Vi
Q29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciljb250ZXh0SWQgc3Rh
dGU6KFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncylzdGF0ZTsKIC0gKHZv
aWQpX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZDooYm9vbCllbmFibGVk
OwotLSAodm9pZClfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOihOU1N0cmlu
ZyAqKW5hbWUgc3RhdGU6KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0
ZSlzdGF0ZTsKKy0gKHZvaWQpX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTmFtZToo
TlNTdHJpbmcgKiluYW1lIHN0YXRlOihXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6TW9ja1N0YXRlKXN0YXRlOwogLSAodm9pZClfbW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJEaXNtaXNzUG9wdXA7CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425950</attachid>
            <date>2021-04-13 21:26:09 -0700</date>
            <delta_ts>2021-04-13 23:32:44 -0700</delta_ts>
            <desc>Rebase the patch</desc>
            <filename>bug-224469-20210413212608.patch</filename>
            <type>text/plain</type>
            <size>81707</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1OTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQ5YzVhZmFhOTRiNzc1
Zjg0NmU5ZTIwYjJkZjAxOGQyNTRkMDhhZi4uNTVjMmRhMzgxNmQ3ZjAzNWExMGJhMDVjM2NhNjFk
OTg2OTZhNjY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDIxLTA0LTEzICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIFdlYkNvbnRlbnQg
cHJvY2VzcyBzaG91bGQgbm90IGNyZWF0ZSBBVk91dHB1dENvbnRleHQgaW5zdGFuY2VzIHdoZW4g
bWVkaWEgaW4gR1BVIFByb2Nlc3MgaXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtb2RpZmllcyBgTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHRgIHRvIHByb3ZpZGUgaW50ZXJmYWNlcyB0byBzZXJpYWxpemUvZGVzZXJp
YWxpemUKKyAgICAgICAgYEFWT3V0cHV0Q29udGV4dGAgYW5kIG1vZGlmaWVzIGBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29jb2FgIHRvIHVzZSBgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHRgIHRvCisg
ICAgICAgIG1hbmFnZSBpdHMgYEFWT3V0cHV0Q29udGV4dGAgaW5zdGVhZCBvZiBrZWVwaW5nIGEg
cG9pbnRlciB0byB0aGUgYEFWT3V0cHV0Q29udGV4dGAgb2JqZWN0LgorICAgICAgICBXaXRoIHRo
ZXNlIGNoYW5nZXMsIGEgV2ViQ29udGVudCBwcm9jZXNzIGNhbiBhY2Nlc3MgdGhlIHByb3BlcnRp
ZXMgb2YgYSBzZXJpYWxpemVkCisgICAgICAgIGBBVk91dHB1dENvbnRleHRgIG9iamVjdCBhbmQg
Zm9yd2FyZCBpdCB0byBvdGhlciBwcm9jZXNzIChlLmcuLCB0aGUgR1BVIHByb2Nlc3MpIHdpdGhv
dXQKKyAgICAgICAgZGVzZXJpYWxpemluZyB0aGUgYEFWT3V0cHV0Q29udGV4dGAgb2JqZWN0LiBU
aGVyZWZvcmUsIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZG9lcyBub3QgbmVlZAorICAgICAgICBh
Y2Nlc3MgdG8gdGhlIENvcmVNZWRpYSByb3V0aW5nIHNlcnZpY2UuIFNvIHdlIGNhbiByZW1vdmUg
dGhlIGZpeCAocjI3NTY2OSkgZm9yIGJ1ZyAyMjQzMjguCisKKyAgICAgICAgQ292ZXJlZCBieSBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgorICAgICAgICAqIE1vZHVs
ZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmg6CisKKyAgICAgICAgKiBIZWFkZXJz
LmNtYWtlOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBNb2RpZnkgdGhlIHByb2plY3QgZmls
ZSBiZWNhdXNlIGBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dGAgaXMgdXNlZCBpbiBDb2NvYSBw
b3J0cyBvbmx5LgorCisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0
ZSk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNl
dE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgorICAgICAgICAqIHBhZ2UvUGFn
ZS5oOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldC5o
OgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oOiBSZW1vdmVkLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpvdXRwdXRDb250ZXh0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVk
aWFQbGF5YmFja1RhcmdldENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvY29hOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldENvY29hOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2sgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjp0YXJnZXRD
b250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2Nv
YTo6aGFzQWN0aXZlUm91dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvY29hOjpkZXZpY2VOYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnRvTWVk
aWFQbGF5YmFja1RhcmdldENvY29hKToKKyAgICAgICAgRG9uJ3QgZGlyZWN0bHkgdXNlIGBBVk91
dHB1dENvbnRleHRgIGluIHRoaXMgY2xhc3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
aXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRXaXJlbGVzc1BsYXliYWNr
VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KToKKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpkZXZpY2VOYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpoYXNBY3RpdmVSb3V0ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6c3VwcG9ydHNSZW1vdGVWaWRlb1BsYXli
YWNrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
Ojptb2NrU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6Om91dHB1dENvbnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OnNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjplbmNvZGluZ1JlcXVp
cmVzUGxhdGZvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OnNlcmlhbGl6
ZU91dHB1dENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OmRlc2VyaWFsaXplT3V0cHV0Q29udGV4dCk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9t
b2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRNb2NrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldE1vY2s6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjp0YXJnZXRDb250ZXh0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvTWVkaWFQbGF5YmFja1RhcmdldE1vY2spOgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpzdGF0ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
bW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFp
bGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6
OnN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6aW52YWxpZGF0ZVBsYXliYWNrVGFyZ2V0cyk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6c2V0U3Rh
dGUpOgorCisgICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
TW9jay5oOgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSk6CisK
IDIwMjEtMDQtMTMgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbR1BVIFByb2Nlc3NdIFNpbXBsaWZ5IERpc3BsYXlMaXN0OjpJdGVyYXRvciBwYXJ0
IDQ6IE1vdmUgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHRvIGl0cyBvd24gLmgvLmNwcCBmaWxlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA4NmExYWVmYTUxOWRiZTljYjM1MGQ0NzdiOGJhNmVmMDRhYTE0MGExLi4xYTAy
NjM4NGU4MTAyNjNlNDEyMWIxNmIwMmNjMGU4NjU3NDIwMGRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ1IEBACisyMDIxLTA0LTEzICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0dQVVBdIFdlYkNvbnRlbnQgcHJvY2VzcyBzaG91bGQgbm90IGNyZWF0ZSBBVk91dHB1
dENvbnRleHQgaW5zdGFuY2VzIHdoZW4gbWVkaWEgaW4gR1BVIFByb2Nlc3MgaXMgZW5hYmxlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDY5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaDoKKworICAgICAg
ICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46
OmVuY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAq
IFNoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2Rl
UGxhdGZvcm1EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZVBsYXRmb3JtRGF0YSk6IERl
bGV0ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6bWVkaWFSZWxhdGVkSU9LaXRDbGFzc2VzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYktp
dDo6dGVtcG9yYXJ5TWFjaFNlcnZpY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbjoKKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXI6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UpOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJD
aHJvbWVDbGllbnQ6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
cGxheWJhY2tUYXJnZXRTZWxlY3RlZCBjb25zdCk6CisKIDIwMjEtMDQtMTMgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkgc2hvdWxkIG9ubHkgcmVsYXVuY2ggdGhlIEdQVVByb2Nlc3MgaWYgaXQgYWN0dWFsbHkgbmVl
ZHMgaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA2ZjFmMDI5NDAxYzBjOTI2NGU0
ZjA2YTE5MzE4NjRlZGE1ZWZhMjcwLi4wODhmNDkyZmJiZmNjMmZkMmE5OGQ1ZmI3OGE5ZWRmMzM3
N2E1YWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIw
MjEtMDQtMTMgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BV
UF0gV2ViQ29udGVudCBwcm9jZXNzIHNob3VsZCBub3QgY3JlYXRlIEFWT3V0cHV0Q29udGV4dCBp
bnN0YW5jZXMgd2hlbiBtZWRpYSBpbiBHUFUgUHJvY2VzcyBpcyBlbmFibGVkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ0NjkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5tbToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJTdGF0ZSk6CisgICAgICAgICogV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyLmg6CisgICAgICAgICogV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
Lm1tOgorICAgICAgICAoV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6c2V0TW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXZWJWaWV3IF9zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck5h
bWU6c3RhdGU6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaDoKKwogMjAy
MS0wNC0xMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciBOUEFQSSBwbHVnaW5zIGluIFdlYlZpZXcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCmluZGV4IGUxMTUwNWNkZDBmOGU0M2IyODczZGI3YTFkNTgxZjhkZjk4NGZlYjMu
LmMwNGY4MDRlZDkzN2M2NzBhZGVmN2IzYjY4OWQ4OTVkZmE3ZTdiMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQpAQCAtMTI2OSw3ICsxMjY5LDYgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01JTUVUeXBlQ2FjaGUuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWJhY2tUYXJnZXRDbGllbnQuaAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAK
aW5kZXggNmM2YWIwZTdhNjJlYzRkYTQ1ZWQzZGJjOTQxNDU1MTc1Y2Q0NGQ1YS4uZDViNTk1YTRh
YzQ5ZmYwZWZmZTYyYjQ1MmVjMzQyYjdkMzgzMDQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcApAQCAt
MTYxLDcgKzE2MSw3IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0TW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wgZW5hYmxlCiAgICAgbV9tb2NrUGlja2Vy
RW5hYmxlZCA9IGVuYWJsZWQ7CiB9CiAKLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKK3ZvaWQgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBT
dHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUp
CiB7CiAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fKTsKICAgICBt
b2NrUGlja2VyKCkuc2V0U3RhdGUobmFtZSwgc3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgKaW5kZXggZDdm
MjhjY2I3NWU1ZDc1NWRhZjQzMzRlZjY1NmNiMTQxOTBmYWI1NC4uMWJhMTI4NGYyMzMzYzc4NDZh
YjgwZDRlMTFkYjJiZjRmMDIwNjZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oCkBAIC01MSw3ICs1MSw3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgV2ViTWVkaWFTZXNzaW9uTWFuYWdl
ciYgc2hhcmVkKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1vY2tNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCgpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBhZGRQbGF5
YmFja1RhcmdldFBpY2tlckNsaWVudChXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiwgUGxh
eWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dAppbmRleCBlY2U0NmNmYTQxMTk4MzQ1MTc4YTVkMjdmNzcyN2RiOTA3MzU4Y2M5Li4xYWI3ZjIw
NDg1NGY4MWUxNDc5NTAwMzZjM2M1ZmM1ZTYwM2FhNDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQKQEAgLTM2OSw2ICszNjksNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2Uu
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwCitwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5tbQogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbQogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1ZjhlZTU5YjcxZWU1NjQx
OGFiMTU2MTQ4ODg5NjEzN2JjNDJjNzc2Li42MjA0M2YyY2FlYzcwMjgzZDE2MjdiZjQzODkyYzhm
Yjc5ZGIxYTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC02OTUzLDkgKzY5NTMsOSBAQAogCQkxQ0RENDVFNDBCQTlDODQ2MDBG
OTAxNDcgLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsg
cGF0aCA9IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUNERDQ1RTUwQkE5Qzg0NjAwRjkwMTQ3IC8qIFdlYkNvcmUueGNjb25maWcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gV2ViQ29yZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUNERDQ1RTYwQkE5Qzg0NjAwRjkwMTQ3IC8qIEJhc2UueGNjb25maWcg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNFOEQxMjUyNjE4NUJEODAwRkMzQUVGIC8qIERpc3BsYXlM
aXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RJdGVt
QnVmZmVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0U4ODYz
RTI2MTA1QTVGMDAwQzgxNkMgLyogSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbk1lbW9yeURpc3BsYXlMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUNFODg2M0YyNjEwNUE1RjAwMEM4MTZDIC8qIEluTWVtb3J5RGlzcGxheUxpc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5NZW1vcnlEaXNwbGF5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQ0U4RDEyNTI2MTg1QkQ4MDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVtQnVm
ZmVySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVu
dGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRUNCM0E4MjFGMkI2NzMw
MEY0NDU0MiAvKiBXSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQ0U4RDEyQjI2MTg2MTY0MDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVyYXRvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFOEQxMkMyNjE4NjE2NDAwRkMzQUVGIC8qIERpc3BsYXlM
aXN0SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RJdGVyYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjk3OCw2ICs2OTc4LDcgQEAKIAkJMUQwMDI2QTMy
Mzc0RDYyNDAwQ0E2Q0RGIC8qIEpTUGljdHVyZUluUGljdHVyZVdpbmRvdy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1BpY3R1cmVJblBpY3R1cmVXaW5kb3cuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDAwMjZBODIzNzRGOUQ5MDBDQTZDREYg
LyogSlNFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFEMDAyNkE5MjM3NEY5RDkwMENBNkNERiAvKiBKU0VudGVyUGljdHVy
ZUluUGljdHVyZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxRDAwOEFBNTI2MjEwOEMwMDBFRTNBREUgLyogTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUQyQzgyQjYyMzZBM0Y2QTAwNTVE
NkM1IC8qIFBpY3R1cmVJblBpY3R1cmVTdXBwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBpY3R1cmVJ
blBpY3R1cmVTdXBwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFENDc2NThE
MjVDQ0E3NzgwMDdBRjMxMiAvKiBJbWFnZURlY29kZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEltYWdlRGVjb2RlcklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMURBQjMxMTMyNTFENzI1QzAwRkM5NDg1IC8qIFZpZGVvTGF5ZXJNYW5hZ2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFZpZGVvTGF5ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yNjk2MCw3ICsyNjk2MSw2IEBACiAJCQkJQ0RERTAyRTkxOEIzREZDNzAwQ0Y3RkYxIC8q
IExlZ2FjeUNETVNlc3Npb24uaCAqLywKIAkJCQkwN0UzREZEMDFBOUU3ODY1MDA3NjRDQTggLyog
TWVkaWFQbGF5YmFja1RhcmdldC5oICovLAogCQkJCTA3OTIxNjUzMUFBNTYwQUEwMEEzQzA0OSAv
KiBNZWRpYVBsYXliYWNrVGFyZ2V0Q2xpZW50LmggKi8sCi0JCQkJMDdGODc2ODMxQUQ0QTk0NTAw
OTA1ODQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmggKi8sCiAJCQkJMDc4RTQzRDcx
QUJCNkM3RTAwMUMyRkE2IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuY3BwICovLAogCQkJ
CTA3OEU0M0Q4MUFCQjZDN0UwMDFDMkZBNiAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgg
Ki8sCiAJCQkJRTRCNDFFMEMwQ0JGOTBCRDAwQUYyRUNFIC8qIE1lZGlhUGxheWVyLmNwcCAqLywK
QEAgLTI3MTc2LDYgKzI3MTc2LDggQEAKIAkJCQlBRDlGRjZFMDE5MDgzOTFEMDAzQjYxRTAgLyog
SU9TdXJmYWNlUG9vbENvY29hLm1tICovLAogCQkJCUNEQzQ4QUM4MjE0OUNGMkEwMDI0RkQ1OSAv
KiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwICovLAogCQkJCUNEQzQ4
QUM3MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29j
b2EuaCAqLywKKwkJCQkwN0Y4NzY4MzFBRDRBOTQ1MDA5MDU4NDkgLyogTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQuaCAqLywKKwkJCQkxRDAwOEFBNTI2MjEwOEMwMDBFRTNBREUgLyogTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQubW0gKi8sCiAJCQkJMzE2NDdGQTgyNTE2MTZCRDAwMTBGOEZC
IC8qIE9wZW5HTFNvZnRMaW5rQ29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBOTI1MTYxNkJEMDAxMEY4
RkIgLyogT3BlbkdMU29mdExpbmtDb2NvYS5tbSAqLywKIAkJCQk3QjY0QzBCNDI1NEMzQjE2MDAw
NkI0QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IGQwYmMzNTUwZDRkMDgzNWMzMzNlMWY0ODNm
NWYyNWFkZDA0ODMzY2UuLmRmNGM5YzFmODRlY2EyMGU3YjFmYmQzN2MxNDM4YzVlMGFiYjBkNTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtNTEzLDcgKzUxMyw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKFBsYXliYWNrVGFy
Z2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGNvbnN0IEludFBvaW50JiwgYm9vbCAvKmlzVmlk
ZW8qLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3Rh
dGVEaWRDaGFuZ2UoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgTWVkaWFQ
cm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TW9ja01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpICB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBt
b2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCgpIHsgfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGJkOWU1MzgyYmM5ZGNjYmFmZmVjNmIzOTQyMjI0YzhkNWVh
NjZiOWEuLmNkYmZmYTBjNmEwNTJiMGUxZmEwMWNkMWZkOTMxZGJjYmZkZGY1NjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcApAQCAtMjk1Miw3ICsyOTUyLDcgQEAgdm9pZCBQYWdlOjpzZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIGNocm9tZSgpLmNs
aWVudCgpLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChlbmFibGVkKTsK
IH0KIAotdm9pZCBQYWdlOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNv
bnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRl
KQordm9pZCBQYWdlOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0
IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0
ZSkKIHsKICAgICBjaHJvbWUoKS5jbGllbnQoKS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlclN0YXRlKG5hbWUsIHN0YXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggZDQ4MjgxNjkwNTUz
ZTA0NmY0NzAzNDdlZDZiYjQ1MjE1ZTIwNjQ5ZC4uNzcwMWIwOGMxZTNjOWI5NGIwYjBjZGIwNjYx
OTA5YzIyMjIyZjQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTczMSw3ICs3MzEsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoUGxheWJhY2tUYXJnZXRDbGllbnRD
b250ZXh0SWRlbnRpZmllciwgY29uc3QgSW50UG9pbnQmLCBib29sLCBSb3V0ZVNoYXJpbmdQb2xp
Y3ksIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRT
dGF0ZURpZENoYW5nZShQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBNZWRp
YVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBT
dHJpbmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBT
dHJpbmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVw
KCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFBsYXliYWNrVGFyZ2V0KFBsYXliYWNr
VGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWJhY2tUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWJhY2tUYXJnZXQuaAppbmRleCA2YWRmYTkzN2Y3M2Y1NzNkOTVjOWZjZDc0ZDZkMjFiODczYTJm
Nzg4Li4zMWQ0ODg0YWRhOGM1MTdkY2ZlZDJkZmZhZTI2NWZlNGRiOTRmZmNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1Rhcmdl
dC5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQgOiBwdWJsaWMg
UmVmQ291bnRlZDxNZWRpYVBsYXliYWNrVGFyZ2V0PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
TWVkaWFQbGF5YmFja1RhcmdldCgpID0gZGVmYXVsdDsKIAotICAgIGVudW0gVGFyZ2V0VHlwZSB7
IEFWRm91bmRhdGlvbiwgTW9jayB9OworICAgIGVudW0gY2xhc3MgVGFyZ2V0VHlwZSA6IHVpbnQ4
X3QgeyBBVkZvdW5kYXRpb24sIE1vY2sgfTsKICAgICB2aXJ0dWFsIFRhcmdldFR5cGUgdGFyZ2V0
VHlwZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgY29uc3QgTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQmIHRhcmdldENvbnRleHQoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWNlNGEzZWMzMDFlOWQ5ZTk3NDRk
Y2JmMjliN2E3YTEwYmY0YjM0Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dF9oCi0jZGVmaW5lIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0X2gK
LQotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0KLSNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KLQotT0JKQ19DTEFTUyBBVk91dHB1dENvbnRleHQ7Ci0KLSNpZiBQ
TEFURk9STShDT0NPQSkKLU9CSkNfQ0xBU1MgTlNLZXllZEFyY2hpdmVyOwotT0JKQ19DTEFTUyBO
U0tleWVkVW5hcmNoaXZlcjsKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IHsKLXB1YmxpYzoKLSAgICBlbnVtIFR5cGUgOiBp
bnQzMl90IHsKLSAgICAgICAgTm9uZSwKLSAgICAgICAgQVZPdXRwdXRDb250ZXh0VHlwZSwKLSAg
ICAgICAgTW9ja1R5cGUsCi0gICAgfTsKLQotICAgIGVudW0gQ29udGV4dFN0YXRlIHsKLSAgICAg
ICAgVW5rbm93biA9IDAsCi0gICAgICAgIE91dHB1dERldmljZVVuYXZhaWxhYmxlID0gMSwKLSAg
ICAgICAgT3V0cHV0RGV2aWNlQXZhaWxhYmxlID0gMiwKLSAgICB9OwotICAgIHR5cGVkZWYgdW5z
aWduZWQgU3RhdGU7Ci0KLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCgpCi0gICAgICAg
IDogbV90eXBlKE5vbmUpCi0gICAgewotICAgIH0KLQotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0KEFWT3V0cHV0Q29udGV4dCAqb3V0cHV0Q29udGV4dCkKLSAgICAgICAgOiBtX3R5cGUo
QVZPdXRwdXRDb250ZXh0VHlwZSkKLSAgICAgICAgLCBtX291dHB1dENvbnRleHQob3V0cHV0Q29u
dGV4dCkKLSAgICB7Ci0gICAgfQotCi0gICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQoY29u
c3QgU3RyaW5nJiBuYW1lLCBTdGF0ZSBzdGF0ZSkKLSAgICAgICAgOiBtX3R5cGUoTW9ja1R5cGUp
Ci0gICAgICAgICwgbV9uYW1lKG5hbWUpCi0gICAgICAgICwgbV9zdGF0ZShzdGF0ZSkKLSAgICB7
Ci0gICAgfQotCi0gICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0KLSAg
ICBjb25zdCBTdHJpbmcmIG1vY2tEZXZpY2VOYW1lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gTW9ja1R5cGUpOwotICAgICAgICByZXR1cm4gbV9uYW1lOwotICAgIH0K
LQotICAgIFN0YXRlIG1vY2tTdGF0ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90
eXBlID09IE1vY2tUeXBlKTsKLSAgICAgICAgcmV0dXJuIG1fc3RhdGU7Ci0gICAgfQotCi0gICAg
QVZPdXRwdXRDb250ZXh0ICphdk91dHB1dENvbnRleHQoKSBjb25zdAotICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBBVk91dHB1dENvbnRleHRUeXBlKTsKLSAgICAgICAgcmV0dXJuIG1f
b3V0cHV0Q29udGV4dDsKLSAgICB9Ci0KLSAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9y
bURhdGEoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gQVZPdXRwdXRDb250ZXh0VHlwZTsgfQot
ICAgIAotcHJpdmF0ZToKLSAgICBUeXBlIG1fdHlwZSB7IE5vbmUgfTsKLSAgICBBVk91dHB1dENv
bnRleHQgKm1fb3V0cHV0Q29udGV4dCB7IG51bGxwdHIgfTsKLSAgICBTdHJpbmcgbV9uYW1lOwot
ICAgIFN0YXRlIG1fc3RhdGUgeyBVbmtub3duIH07Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotCi0jZW5kaWYgLy8gTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29h
LmgKaW5kZXggNmE4ZTE5NDc2YTM0N2Q4ZTc0ODQxZmY2OWZiZDQ4YjA5MjIzYzg4OS4uNjFkMWZh
Y2UxNDg2YzEwMGM4MmYzODE3OTUxMmM5NWM2YjM5N2U3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRD
b2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EgOiBwdWJsaWMgTWVkaWFQ
bGF5YmFja1RhcmdldCB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxN
ZWRpYVBsYXliYWNrVGFyZ2V0PiBjcmVhdGUoQVZPdXRwdXRDb250ZXh0ICopOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gY3JlYXRlKE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0JiYpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBM
QVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAg
ICAgc3RhdGljIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBjcmVhdGUoKTsKQEAgLTQzLDIxICs0
NCwxOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2Eo
KTsKIAotICAgIFRhcmdldFR5cGUgdGFyZ2V0VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFW
Rm91bmRhdGlvbjsgfQorICAgIFRhcmdldFR5cGUgdGFyZ2V0VHlwZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIFRhcmdldFR5cGU6OkFWRm91bmRhdGlvbjsgfQogCiAgICAgY29uc3QgTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQmIHRhcmdldENvbnRleHQoKSBjb25zdCBmaW5hbDsKICAgICBib29s
IGhhc0FjdGl2ZVJvdXRlKCkgY29uc3QgZmluYWw7CiAgICAgU3RyaW5nIGRldmljZU5hbWUoKSBj
b25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygpIGNvbnN0
IGZpbmFsOwogCi0gICAgQVZPdXRwdXRDb250ZXh0ICpvdXRwdXRDb250ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV9vdXRwdXRDb250ZXh0LmdldCgpOyB9Ci0KIHByb3RlY3RlZDoKLSAgICBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29jb2EoQVZPdXRwdXRDb250ZXh0ICopOworICAgIGV4cGxpY2l0IE1lZGlh
UGxheWJhY2tUYXJnZXRDb2NvYShBVk91dHB1dENvbnRleHQgKik7CisgICAgZXhwbGljaXQgTWVk
aWFQbGF5YmFja1RhcmdldENvY29hKE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiYpOwogCi0g
ICAgUmV0YWluUHRyPEFWT3V0cHV0Q29udGV4dD4gbV9vdXRwdXRDb250ZXh0OwotICAgIG11dGFi
bGUgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQgbV9jb250ZXh0OwotICAgIFN0cmluZyBtX2Rl
dmljZU5hbWU7CisgICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQgbV9jb250ZXh0OwogfTsK
IAogTWVkaWFQbGF5YmFja1RhcmdldENvY29hKiB0b01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShN
ZWRpYVBsYXliYWNrVGFyZ2V0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tU
YXJnZXRDb2NvYS5tbQppbmRleCBkYWM4Y2M0ODE1NmMyYzdlNzRlYWFjN2I0ZGRlNGJjMjE3NzUx
OWFhLi5iMzgyYmE3YTBiMDBiM2YxNTNkMTkyNDNlMDJlZmM3ZTkwZGQ2Mjg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5
YmFja1RhcmdldENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EubW0KQEAgLTM0LDE0ICszNCwy
MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZShBVk91dHB1dENvbnRleHQgKmNvbnRleHQp
CitSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVh
dGUoQVZPdXRwdXRDb250ZXh0ICpvdXRwdXRDb250ZXh0KQogewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShjb250ZXh0KSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgTWVkaWFQbGF5YmFja1RhcmdldENvY29hKG91dHB1dENvbnRleHQpKTsKIH0K
IAotTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoQVZP
dXRwdXRDb250ZXh0ICpjb250ZXh0KQotICAgIDogTWVkaWFQbGF5YmFja1RhcmdldCgpCi0gICAg
LCBtX291dHB1dENvbnRleHQoY29udGV4dCkKK1JlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZShNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYm
IGNvbnRleHQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hKFdURk1vdmUoY29udGV4dCkpKTsKK30KKworTWVkaWFQbGF5YmFja1RhcmdldENvY29h
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoQVZPdXRwdXRDb250ZXh0ICpvdXRwdXRDb250ZXh0
KQorICAgIDogbV9jb250ZXh0KG91dHB1dENvbnRleHQpCit7Cit9CisKK01lZGlhUGxheWJhY2tU
YXJnZXRDb2NvYTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hKE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0JiYgY29udGV4dCkKKyAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQogewog
fQogCkBAIC01NSwyNCArNjQsNyBAQCBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gTWVkaWFQbGF5
YmFja1RhcmdldENvY29hOjpjcmVhdGUoKQogCiBib29sIE1lZGlhUGxheWJhY2tUYXJnZXRDb2Nv
YTo6c3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fb3V0
cHV0Q29udGV4dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFbbV9vdXRwdXRD
b250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc3VwcG9ydHNNdWx0aXBsZU91dHB1
dERldmljZXMpXSB8fCAhW21fb3V0cHV0Q29udGV4dCBzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2
aWNlc10gfHwgIVttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihv
dXRwdXREZXZpY2VzKV0pIHsKLSAgICAgICAgaWYgKGF1dG8gKm91dHB1dERldmljZSA9IFttX291
dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlXSkgewotICAgICAgICAgICAgaWYgKG91dHB1dERldmlj
ZS5kZXZpY2VGZWF0dXJlcyAmIEFWT3V0cHV0RGV2aWNlRmVhdHVyZVZpZGVvKQotICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQotICAgIGZvciAoQVZPdXRwdXREZXZpY2UgKm91dHB1dERldmljZSBpbiBbbV9vdXRw
dXRDb250ZXh0IG91dHB1dERldmljZXNdKSB7Ci0gICAgICAgIGlmIChvdXRwdXREZXZpY2UuZGV2
aWNlRmVhdHVyZXMgJiBBVk91dHB1dERldmljZUZlYXR1cmVWaWRlbykKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9jb250
ZXh0LnN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygpOwogfQogCiBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29jb2E6On5NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoKQpAQCAtODEsNDUgKzczLDE3IEBA
IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6fk1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSgpCiAK
IGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29j
b2E6OnRhcmdldENvbnRleHQoKSBjb25zdAogewotICAgIG1fY29udGV4dCA9IE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0KG1fb3V0cHV0Q29udGV4dC5nZXQoKSk7CiAgICAgcmV0dXJuIG1fY29u
dGV4dDsKIH0KIAogYm9vbCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6Omhhc0FjdGl2ZVJvdXRl
KCkgY29uc3QKIHsKLSAgICBpZiAoIW1fb3V0cHV0Q29udGV4dCkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgaWYgKFttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNlcyldICYmIFttX291dHB1dENvbnRleHQg
c3VwcG9ydHNNdWx0aXBsZU91dHB1dERldmljZXNdICYmIFttX291dHB1dENvbnRleHQgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdXRwdXREZXZpY2VzKV0pIHsKLSAgICAgICAgZm9yIChB
Vk91dHB1dERldmljZSAqb3V0cHV0RGV2aWNlIGluIFttX291dHB1dENvbnRleHQgb3V0cHV0RGV2
aWNlc10pIHsKLSAgICAgICAgICAgIGlmIChvdXRwdXREZXZpY2UuZGV2aWNlRmVhdHVyZXMgJiAo
QVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8gfCBBVk91dHB1dERldmljZUZlYXR1cmVBdWRpbykp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKFttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihvdXRwdXREZXZpY2UpXSkgewotICAgICAgICBpZiAoYXV0byAqb3V0
cHV0RGV2aWNlID0gW21fb3V0cHV0Q29udGV4dCBvdXRwdXREZXZpY2VdKQotICAgICAgICAgICAg
cmV0dXJuIG91dHB1dERldmljZS5kZXZpY2VGZWF0dXJlcyAmIChBVk91dHB1dERldmljZUZlYXR1
cmVWaWRlbyB8IEFWT3V0cHV0RGV2aWNlRmVhdHVyZUF1ZGlvKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gbV9vdXRwdXRDb250ZXh0LmdldCgpLmRldmljZU5hbWU7CisgICAgcmV0dXJuIG1fY29udGV4
dC5oYXNBY3RpdmVSb3V0ZSgpOwogfQogCiBTdHJpbmcgTWVkaWFQbGF5YmFja1RhcmdldENvY29h
OjpkZXZpY2VOYW1lKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fb3V0cHV0Q29udGV4dCkKLSAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICBpZiAoIVttX291dHB1dENvbnRleHQgc3Vw
cG9ydHNNdWx0aXBsZU91dHB1dERldmljZXNdKQotICAgICAgICByZXR1cm4gW21fb3V0cHV0Q29u
dGV4dCBkZXZpY2VOYW1lXTsKLQotICAgIGF1dG8gb3V0cHV0RGV2aWNlTmFtZXMgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLSAgICBmb3IgKEFWT3V0cHV0RGV2aWNl
ICpvdXRwdXREZXZpY2UgaW4gW21fb3V0cHV0Q29udGV4dCBvdXRwdXREZXZpY2VzXSkKLSAgICAg
ICAgW291dHB1dERldmljZU5hbWVzIGFkZE9iamVjdDpbb3V0cHV0RGV2aWNlIGRldmljZU5hbWVd
XTsKLQotICAgIHJldHVybiBbb3V0cHV0RGV2aWNlTmFtZXMgY29tcG9uZW50c0pvaW5lZEJ5U3Ry
aW5nOkAiICsgIl07CisgICAgcmV0dXJuIG1fY29udGV4dC5kZXZpY2VOYW1lKCk7CiB9CiAKIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb2NvYSogdG9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoTWVkaWFQ
bGF5YmFja1RhcmdldCogcmVwKQpAQCAtMTI5LDcgKzkzLDcgQEAgTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hKiB0b01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShNZWRpYVBsYXliYWNrVGFyZ2V0KiBy
ZXApCiAKIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSogdG9NZWRpYVBsYXliYWNrVGFy
Z2V0Q29jb2EoY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldCogcmVwKQogewotICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHJlcC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJh
Y2tUYXJnZXQ6OkFWRm91bmRhdGlvbik7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihyZXAtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpU
YXJnZXRUeXBlOjpBVkZvdW5kYXRpb24pOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EqPihyZXApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQppbmRleCAyMGIyNDEyZjExMzY2M2MxZjM4NjJmMjdiNjYyNDAwZjZjZGIwNzJiLi4wYWMwOTNl
NTBjYTI5ODBjNTlhMzI3YTJjMmU4ODFlY2RmYjFiYmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KQEAgLTI4MjQsNyArMjgyNCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6aXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcygpIGNvbnN0CiAKICNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9wbGF5YmFja1RhcmdldCkgewotICAgICAg
ICBpZiAobV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJn
ZXQ6OkFWRm91bmRhdGlvbikKKyAgICAgICAgaWYgKG1fcGxheWJhY2tUYXJnZXQtPnRhcmdldFR5
cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpUYXJnZXRUeXBlOjpBVkZvdW5kYXRpb24pCiAg
ICAgICAgICAgICB3aXJlbGVzc1RhcmdldCA9IG1fYXZQbGF5ZXIgJiYgbV9hdlBsYXllci5nZXQo
KS5leHRlcm5hbFBsYXliYWNrQWN0aXZlOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB3aXJl
bGVzc1RhcmdldCA9IG1fc2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQgJiYgbV9wbGF5YmFja1Rh
cmdldC0+aGFzQWN0aXZlUm91dGUoKTsKQEAgLTI5NjgsNyArMjk2OCw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChS
ZWY8TWVkaWFQbGF5CiB7CiAgICAgbV9wbGF5YmFja1RhcmdldCA9IFdURk1vdmUodGFyZ2V0KTsK
IAotICAgIG1fb3V0cHV0Q29udGV4dCA9IG1fcGxheWJhY2tUYXJnZXQtPnRhcmdldFR5cGUoKSA9
PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpBVkZvdW5kYXRpb24gPyB0b01lZGlhUGxheWJhY2tUYXJn
ZXRDb2NvYShtX3BsYXliYWNrVGFyZ2V0LmdldCgpKS0+b3V0cHV0Q29udGV4dCgpIDogbnVsbHB0
cjsKKyAgICBtX291dHB1dENvbnRleHQgPSBtX3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkg
PT0gTWVkaWFQbGF5YmFja1RhcmdldDo6VGFyZ2V0VHlwZTo6QVZGb3VuZGF0aW9uID8gdG9NZWRp
YVBsYXliYWNrVGFyZ2V0Q29jb2EobV9wbGF5YmFja1RhcmdldC5nZXQoKSktPnRhcmdldENvbnRl
eHQoKS5vdXRwdXRDb250ZXh0KCkgOiBudWxscHRyOwogCiAgICAgSU5GT19MT0coTE9HSURFTlRJ
RklFUik7CiAKQEAgLTI5ODgsNyArMjk4OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCBzaG91CiAK
ICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCBzaG91bGRQbGF5KTsKIAotICAgIGlmIChtX3Bs
YXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldDo6QVZGb3Vu
ZGF0aW9uKSB7CisgICAgaWYgKG1fcGxheWJhY2tUYXJnZXQtPnRhcmdldFR5cGUoKSA9PSBNZWRp
YVBsYXliYWNrVGFyZ2V0OjpUYXJnZXRUeXBlOjpBVkZvdW5kYXRpb24pIHsKICAgICAgICAgQVZP
dXRwdXRDb250ZXh0ICpuZXdDb250ZXh0ID0gc2hvdWxkUGxheSA/IG1fb3V0cHV0Q29udGV4dC5n
ZXQoKSA6IG5pbDsKIAogICAgICAgICBpZiAoIW1fYXZQbGF5ZXIpCkBAIC0zMDA1LDcgKzMwMDUs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFNob3VsZFBs
YXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wgc2hvdQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgQVNTRVJUKG1fcGxheWJhY2tUYXJnZXQtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNr
VGFyZ2V0OjpNb2NrKTsKKyAgICBBU1NFUlQobV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgp
ID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6OlRhcmdldFR5cGU6Ok1vY2spOwogCiAgICAgc2V0RGVs
YXlDYWxsYmFja3ModHJ1ZSk7CiAgICAgYXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkMTVh
NWUyZDkwMDEzYWM5YTA3YjMxMTIzYjY2ZDhiY2YxOWUwYjkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dC5oCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKQorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgUExBVEZPUk0oQ09DT0EpCitPQkpDX0NM
QVNTIEFWT3V0cHV0Q29udGV4dDsKK09CSkNfQ0xBU1MgTlNEYXRhOworI2VuZGlmCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQgeworcHVi
bGljOgorICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeworICAgICAgICBOb25lLAorICAg
ICAgICBBVk91dHB1dENvbnRleHQsCisgICAgICAgIFNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQs
CisgICAgICAgIE1vY2ssCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgTW9ja1N0YXRlIDogdWlu
dDhfdCB7CisgICAgICAgIFVua25vd24gPSAwLAorICAgICAgICBPdXRwdXREZXZpY2VVbmF2YWls
YWJsZSA9IDEsCisgICAgICAgIE91dHB1dERldmljZUF2YWlsYWJsZSA9IDIsCisgICAgfTsKKwor
ICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KFJldGFpblB0cjxBVk91
dHB1dENvbnRleHQ+JiYpOworCisgICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQoUmV0YWlu
UHRyPE5TRGF0YT4mJiBzZXJpYWxpemVkT3V0cHV0Q29udGV4dCwgY29uc3QgU3RyaW5nJiBkZXZp
Y2VOYW1lLCBib29sIGhhc0FjdGl2ZVJvdXRlLCBib29sIHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5
YmFjaykKKyAgICAgICAgOiBtX3R5cGUoVHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCkK
KyAgICAgICAgLCBtX3NlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KFdURk1vdmUoc2VyaWFsaXplZE91
dHB1dENvbnRleHQpKQorICAgICAgICAsIG1fZGV2aWNlTmFtZShkZXZpY2VOYW1lKQorICAgICAg
ICAsIG1faGFzQWN0aXZlUm91dGUoaGFzQWN0aXZlUm91dGUpCisgICAgICAgICwgbV9zdXBwb3J0
c1JlbW90ZVZpZGVvUGxheWJhY2soc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKHNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KTsKKyAgICB9CisKKyAgICBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChjb25zdCBTdHJpbmcmIGRldmljZU5hbWUsIE1vY2tT
dGF0ZSBzdGF0ZSkKKyAgICAgICAgOiBtX3R5cGUoVHlwZTo6TW9jaykKKyAgICAgICAgLCBtX2Rl
dmljZU5hbWUoZGV2aWNlTmFtZSkKKyAgICAgICAgLCBtX2hhc0FjdGl2ZVJvdXRlKCFkZXZpY2VO
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgLCBtX3N1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygh
ZGV2aWNlTmFtZS5pc0VtcHR5KCkpCisgICAgICAgICwgbV9tb2NrU3RhdGUoc3RhdGUpCisgICAg
eworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6Ok1vY2spOworICAgIH0KKworICAgIFR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIGNvbnN0IFN0cmluZyYgZGV2
aWNlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlTmFtZTsgfQorICAgIGJvb2wgaGFzQWN0
aXZlUm91dGUoKSBjb25zdCB7IHJldHVybiBtX2hhc0FjdGl2ZVJvdXRlOyB9CisgICAgYm9vbCBz
dXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRzUmVt
b3RlVmlkZW9QbGF5YmFjazsgfQorCisgICAgTW9ja1N0YXRlIG1vY2tTdGF0ZSgpIGNvbnN0Cisg
ICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6Ok1vY2spOworICAgICAgICByZXR1
cm4gbV9tb2NrU3RhdGU7CisgICAgfQorCisgICAgUmV0YWluUHRyPEFWT3V0cHV0Q29udGV4dD4g
b3V0cHV0Q29udGV4dCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5
cGU6OkFWT3V0cHV0Q29udGV4dCk7CisgICAgICAgIHJldHVybiBtX291dHB1dENvbnRleHQ7Cisg
ICAgfQorCisgICAgUmV0YWluUHRyPE5TRGF0YT4gc2VyaWFsaXplZE91dHB1dENvbnRleHQoKSBj
b25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpTZXJpYWxpemVkQVZP
dXRwdXRDb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIG1fc2VyaWFsaXplZE91dHB1dENvbnRleHQ7
CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXJpYWxpemVPdXRwdXRDb250ZXh0
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBkZXNlcmlhbGl6ZU91dHB1dENvbnRleHQoKTsK
KworICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZSA9PSBUeXBlOjpBVk91dHB1dENvbnRleHQgfHwgbV90eXBlID09IFR5cGU6OlNlcmlh
bGl6ZWRBVk91dHB1dENvbnRleHQ7IH0KKworcHJpdmF0ZToKKyAgICBUeXBlIG1fdHlwZSB7IFR5
cGU6Ok5vbmUgfTsKKyAgICBSZXRhaW5QdHI8QVZPdXRwdXRDb250ZXh0PiBtX291dHB1dENvbnRl
eHQ7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gbV9zZXJpYWxpemVkT3V0cHV0Q29udGV4dDsKKwor
ICAgIFN0cmluZyBtX2RldmljZU5hbWU7CisgICAgYm9vbCBtX2hhc0FjdGl2ZVJvdXRlIHsgZmFs
c2UgfTsKKyAgICBib29sIG1fc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrIHsgZmFsc2UgfTsK
KworICAgIE1vY2tTdGF0ZSBtX21vY2tTdGF0ZSB7IE1vY2tTdGF0ZTo6VW5rbm93biB9OworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
VHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlLAorICAgICAgICBXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6Tm9uZSwKKyAgICAgICAgV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCwKKyAgICAgICAg
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRBVk91
dHB1dENvbnRleHQsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpUeXBlOjpNb2NrCisgICAgPjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZT4geworICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpNb2NrU3RhdGUsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6OlVua25vd24sCisgICAgICAgIFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6Ok91dHB1dERldmljZVVuYXZhaWxhYmxl
LAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRl
OjpPdXRwdXREZXZpY2VBdmFpbGFibGUKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RG
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9N
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjJhMTVmYzZjMTc5Y2Q0
NTBjMDQ0NTI3YTY5ZTUyZjIzNjcxZTgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW0K
QEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaCIKKworI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgor
I2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWRm91bmRh
dGlvblNQSS5oPgorI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0KFJldGFpblB0cjxBVk91dHB1dENvbnRleHQ+JiYgb3V0cHV0
Q29udGV4dCkKKyAgICA6IG1fb3V0cHV0Q29udGV4dChvdXRwdXRDb250ZXh0KQoreworICAgIGlm
ICghbV9vdXRwdXRDb250ZXh0KSB7CisgICAgICAgIG1fdHlwZSA9IE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpUeXBlOjpOb25lOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV90
eXBlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dDsK
KworICAgIGlmICghW21fb3V0cHV0Q29udGV4dCBzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNl
c10pCisgICAgICAgIG1fZGV2aWNlTmFtZSA9IFttX291dHB1dENvbnRleHQgZGV2aWNlTmFtZV07
CisgICAgZWxzZSB7CisgICAgICAgIGF1dG8gb3V0cHV0RGV2aWNlTmFtZXMgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgZm9yIChBVk91dHB1dERldmlj
ZSAqb3V0cHV0RGV2aWNlIGluIFttX291dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlc10pCisgICAg
ICAgICAgICBbb3V0cHV0RGV2aWNlTmFtZXMgYWRkT2JqZWN0OltvdXRwdXREZXZpY2UgZGV2aWNl
TmFtZV1dOworCisgICAgICAgIG1fZGV2aWNlTmFtZSA9IFtvdXRwdXREZXZpY2VOYW1lcyBjb21w
b25lbnRzSm9pbmVkQnlTdHJpbmc6QCIgKyAiXTsKKyAgICB9CisKKyAgICBpZiAoW21fb3V0cHV0
Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN1cHBvcnRzTXVsdGlwbGVPdXRw
dXREZXZpY2VzKV0gJiYgW21fb3V0cHV0Q29udGV4dCBzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2
aWNlc10gJiYgW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91
dHB1dERldmljZXMpXSkgeworICAgICAgICBmb3IgKEFWT3V0cHV0RGV2aWNlICpvdXRwdXREZXZp
Y2UgaW4gW21fb3V0cHV0Q29udGV4dCBvdXRwdXREZXZpY2VzXSkgeworICAgICAgICAgICAgaWYg
KG91dHB1dERldmljZS5kZXZpY2VGZWF0dXJlcyAmIChBVk91dHB1dERldmljZUZlYXR1cmVWaWRl
byB8IEFWT3V0cHV0RGV2aWNlRmVhdHVyZUF1ZGlvKSkKKyAgICAgICAgICAgICAgICBtX2hhc0Fj
dGl2ZVJvdXRlID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoW21fb3V0cHV0Q29u
dGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dERldmljZSldKSB7CisgICAg
ICAgIGlmIChhdXRvICpvdXRwdXREZXZpY2UgPSBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmlj
ZV0pCisgICAgICAgICAgICBtX2hhc0FjdGl2ZVJvdXRlID0gb3V0cHV0RGV2aWNlLmRldmljZUZl
YXR1cmVzICYgKEFWT3V0cHV0RGV2aWNlRmVhdHVyZVZpZGVvIHwgQVZPdXRwdXREZXZpY2VGZWF0
dXJlQXVkaW8pOworICAgIH0gZWxzZQorICAgICAgICBtX2hhc0FjdGl2ZVJvdXRlID0gbV9vdXRw
dXRDb250ZXh0LmdldCgpLmRldmljZU5hbWU7CisKKyAgICBpZiAoIVttX291dHB1dENvbnRleHQg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNl
cyldIHx8ICFbbV9vdXRwdXRDb250ZXh0IHN1cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2VzXSB8
fCAhW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dERl
dmljZXMpXSkgeworICAgICAgICBpZiAoYXV0byAqb3V0cHV0RGV2aWNlID0gW21fb3V0cHV0Q29u
dGV4dCBvdXRwdXREZXZpY2VdKSB7CisgICAgICAgICAgICBpZiAob3V0cHV0RGV2aWNlLmRldmlj
ZUZlYXR1cmVzICYgQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8pCisgICAgICAgICAgICAgICAg
bV9zdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2sgPSB0cnVlOworICAgICAgICB9CisgICAgfSBl
bHNlIHsKKyAgICAgICAgZm9yIChBVk91dHB1dERldmljZSAqb3V0cHV0RGV2aWNlIGluIFttX291
dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlc10pIHsKKyAgICAgICAgICAgIGlmIChvdXRwdXREZXZp
Y2UuZGV2aWNlRmVhdHVyZXMgJiBBVk91dHB1dERldmljZUZlYXR1cmVWaWRlbykKKyAgICAgICAg
ICAgICAgICBtX3N1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjayA9IHRydWU7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK2Jvb2wgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OnNlcmlhbGl6ZU91
dHB1dENvbnRleHQoKQoreworICAgIEFTU0VSVChtX3R5cGUgPT0gTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCk7CisgICAgaWYgKG1fdHlwZSAhPSBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNo
aXZlciBhbGxvY10gaW5pdFJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVNdKTsKKyAgICBbYXJjaGl2
ZXIgZW5jb2RlT2JqZWN0Om1fb3V0cHV0Q29udGV4dC5nZXQoKSBmb3JLZXk6TlNLZXllZEFyY2hp
dmVSb290T2JqZWN0S2V5XTsKKyAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOworCisgICAg
bV9zZXJpYWxpemVkT3V0cHV0Q29udGV4dCA9IFthcmNoaXZlciBlbmNvZGVkRGF0YV07CisgICAg
bV90eXBlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRBVk91
dHB1dENvbnRleHQ7CisgICAgbV9vdXRwdXRDb250ZXh0LmNsZWFyKCk7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6ZGVzZXJpYWxpemVP
dXRwdXRDb250ZXh0KCkKK3sKKyAgICBBU1NFUlQobV90eXBlID09IE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0KTsKKyAgICBpZiAobV90
eXBlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRw
dXRDb250ZXh0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHN1Y2Nlc3MgPSBm
YWxzZTsKKyAgICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIg
YWxsb2NdIGluaXRGb3JSZWFkaW5nRnJvbURhdGE6bV9zZXJpYWxpemVkT3V0cHV0Q29udGV4dC5n
ZXQoKSBlcnJvcjpudWxscHRyXSk7CisgICAgdW5hcmNoaXZlci5nZXQoKS5kZWNvZGluZ0ZhaWx1
cmVQb2xpY3kgPSBOU0RlY29kaW5nRmFpbHVyZVBvbGljeVJhaXNlRXhjZXB0aW9uOworICAgIGF1
dG8gYWxsb3dlZENsYXNzU2V0ID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0aEFycmF5
OkBbIFBBTDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBdXSk7CisKKyAgICBAdHJ5IHsKKyAg
ICAgICAgaWQgcmVzdWx0ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOmFsbG93
ZWRDbGFzc1NldC5nZXQoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKKyAg
ICAgICAgQVNTRVJUKCFyZXN1bHQgfHwgW3Jlc3VsdCBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3Rv
Y29sKE5TU2VjdXJlQ29kaW5nKV0pOworICAgICAgICBtX291dHB1dENvbnRleHQgPSByZXN1bHQ7
CisgICAgICAgIG1fdHlwZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91
dHB1dENvbnRleHQ7CisgICAgICAgIG1fc2VyaWFsaXplZE91dHB1dENvbnRleHQuY2xlYXIoKTsK
KyAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNl
cHRpb24pIHsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIG9iamVjdCBvZiBj
bGFzcyBBVk91dHB1dENvbnRleHQgOiAlQCIsIGV4Y2VwdGlvbik7CisgICAgfSBAZmluYWxseSB7
CisgICAgICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAgICAgICAgdW5hcmNoaXZl
ci5nZXQoKS5kZWxlZ2F0ZSA9IG5pbDsKKyAgICB9CisKKyAgICByZXR1cm4gc3VjY2VzczsKK30K
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TWVkaWFQbGF5YmFja1RhcmdldE1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5jcHAKaW5kZXggNDU1Y2VmYzlmNmYwZGY0MTk2Nzc4
Zjc1MTlmYjhiYjcxZjU1ZDUyMS4uMDQwZjNlZTBmZjc2NWYzOTZhYThmZDc2MmI1Yjk0NDVlZjQ4
NjhmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXli
YWNrVGFyZ2V0TW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRp
YVBsYXliYWNrVGFyZ2V0TW9jay5jcHAKQEAgLTMwLDE1ICszMCwxMyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFyZ2V0
TW9jazo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6OlN0YXRlIHN0YXRlKQorUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IE1lZGlhUGxheWJhY2tU
YXJnZXRNb2NrOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1l
ZGlhUGxheWJhY2tUYXJnZXRNb2NrKG5hbWUsIHN0YXRlKSk7CiB9CiAKLU1lZGlhUGxheWJhY2tU
YXJnZXRNb2NrOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhjb25zdCBTdHJpbmcmIG5hbWUsIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKLSAgICA6IE1lZGlhUGxheWJh
Y2tUYXJnZXQoKQotICAgICwgbV9uYW1lKG5hbWUpCi0gICAgLCBtX3N0YXRlKHN0YXRlKQorTWVk
aWFQbGF5YmFja1RhcmdldE1vY2s6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSkKKyAg
ICA6IG1fY29udGV4dChuYW1lLCBzdGF0ZSkKIHsKIH0KIApAQCAtNDYsNyArNDQsNiBAQCBNZWRp
YVBsYXliYWNrVGFyZ2V0TW9jazo6fk1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKCkgPSBkZWZhdWx0
OwogCiBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgTWVkaWFQbGF5YmFja1Rhcmdl
dE1vY2s6OnRhcmdldENvbnRleHQoKSBjb25zdAogewotICAgIG1fY29udGV4dCA9IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0KG1fbmFtZSwgbV9zdGF0ZSk7CiAgICAgcmV0dXJuIG1fY29udGV4
dDsKIH0KIApAQCAtNTcsNyArNTQsNyBAQCBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayogdG9NZWRp
YVBsYXliYWNrVGFyZ2V0TW9jayhNZWRpYVBsYXliYWNrVGFyZ2V0KiByZXApCiAKIGNvbnN0IE1l
ZGlhUGxheWJhY2tUYXJnZXRNb2NrKiB0b01lZGlhUGxheWJhY2tUYXJnZXRNb2NrKGNvbnN0IE1l
ZGlhUGxheWJhY2tUYXJnZXQqIHJlcCkKIHsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihyZXAtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpNb2NrKTsK
KyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHJlcC0+dGFyZ2V0
VHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6OlRhcmdldFR5cGU6Ok1vY2spOwogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayo+KHJlcCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFj
a1RhcmdldE1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFj
a1RhcmdldE1vY2suaAppbmRleCBjZDQ0OWIwM2MxMTMxMDY2NTI5NGNiODkyNGRmMGU0ZWVhYTEz
ZjRjLi4wNzJjOGRkMDQ4NGUzNTE2YjUyZmYwMjkwMDRjMWYwNGU1MzA1YTQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9j
ay5oCkBAIC0zNiwyNiArMzYsMjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRp
YVBsYXliYWNrVGFyZ2V0TW9jayA6IHB1YmxpYyBNZWRpYVBsYXliYWNrVGFyZ2V0IHsKIHB1Ymxp
YzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gY3JlYXRl
KGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpOwog
CiAgICAgdmlydHVhbCB+TWVkaWFQbGF5YmFja1RhcmdldE1vY2soKTsKIAotICAgIFRhcmdldFR5
cGUgdGFyZ2V0VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1vY2s7IH0KKyAgICBUYXJnZXRU
eXBlIHRhcmdldFR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXliYWNrVGFyZ2V0
OjpUYXJnZXRUeXBlOjpNb2NrOyB9CiAKICAgICBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dCYgdGFyZ2V0Q29udGV4dCgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaGFzQWN0aXZlUm91
dGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbnRleHQuaGFzQWN0aXZlUm91dGUoKTsgfQor
ICAgIFN0cmluZyBkZXZpY2VOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb250ZXh0LmRl
dmljZU5hbWUoKTsgfQorICAgIGJvb2wgc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9jb250ZXh0LnN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygp
OyB9CiAKLSAgICBib29sIGhhc0FjdGl2ZVJvdXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1f
bmFtZS5pc0VtcHR5KCk7IH0KLSAgICBib29sIHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX25hbWUuaXNFbXB0eSgpOyB9Ci0KLSAgICBTdHJpbmcg
ZGV2aWNlTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbmFtZTsgfQotCi0gICAgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKCkgY29uc3Q7CisgICAgTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGV4dC5tb2NrU3RhdGUoKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgTWVkaWFQbGF5YmFja1Rhcmdl
dE1vY2soY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKTsK
KyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKTsKIAotICAgIFN0cmluZyBtX25hbWU7Ci0gICAgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIG1fc3RhdGUgeyBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6VW5rbm93biB9OwogICAgIG11dGFibGUgTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQgbV9jb250ZXh0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmNwcAppbmRleCA0
NGY0MTQ3YTE5MTgwNzU0NzJlZGMzYTEyMTg5OTI3ZDdlOTI1ZWYxLi4zYjBjYTZhNzgzNzIzZjhm
OThkMjI2MGFhYjZhYjVhNTYxZWUxYzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmNwcApA
QCAtNTIsNyArNTIsNyBAQCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6fk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJNb2NrKCkKIGJvb2wgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1v
Y2s6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKCkKIHsKICAgICBMT0coTWVkaWEsICJN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGUiKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
T3V0cHV0RGV2aWNlQXZhaWxhYmxlOworICAgIHJldHVybiBtX3N0YXRlID09IE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6Ok91dHB1dERldmljZUF2YWlsYWJsZTsKIH0KIAog
UmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpw
bGF5YmFja1RhcmdldCgpCkBAIC04NSwxMCArODUsMTAgQEAgdm9pZCBNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTW9jazo6c3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkKICAgICBM
T0coTWVkaWEsICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6c3RhcnRpbmdNb25pdG9y
aW5nUGxheWJhY2tUYXJnZXRzIik7CiAKICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbdGhp
c10gewotICAgICAgICBpZiAobV9zdGF0ZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
T3V0cHV0RGV2aWNlQXZhaWxhYmxlKQorICAgICAgICBpZiAobV9zdGF0ZSA9PSBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpPdXRwdXREZXZpY2VBdmFpbGFibGUpCiAgICAg
ICAgICAgICBhdmFpbGFibGVEZXZpY2VzRGlkQ2hhbmdlKCk7CiAKLSAgICAgICAgaWYgKCFtX2Rl
dmljZU5hbWUuaXNFbXB0eSgpICYmIG1fc3RhdGUgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6OlVua25vd24pCisgICAgICAgIGlmICghbV9kZXZpY2VOYW1lLmlzRW1wdHkoKSAmJiBtX3N0
YXRlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6OlVua25vd24pCiAg
ICAgICAgICAgICBjdXJyZW50RGV2aWNlRGlkQ2hhbmdlKCk7CiAgICAgfSk7CiB9CkBAIC0xMDEs
MTUgKzEwMSwxNSBAQCB2b2lkIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpzdG9wTW9u
aXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpCiB2b2lkIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJN
b2NrOjppbnZhbGlkYXRlUGxheWJhY2tUYXJnZXRzKCkKIHsKICAgICBMT0coTWVkaWEsICJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6aW52YWxpZGF0ZVBsYXliYWNrVGFyZ2V0cyIpOwot
ICAgIHNldFN0YXRlKGVtcHR5U3RyaW5nKCksIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpV
bmtub3duKTsKKyAgICBzZXRTdGF0ZShlbXB0eVN0cmluZygpLCBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6TW9ja1N0YXRlOjpVbmtub3duKTsKIH0KIAotdm9pZCBNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTW9jazo6c2V0U3RhdGUoY29uc3QgU3RyaW5nJiBkZXZpY2VOYW1lLCBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCit2b2lkIE1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJNb2NrOjpzZXRTdGF0ZShjb25zdCBTdHJpbmcmIGRldmljZU5hbWUsIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCiB7CiAgICAgTE9HKE1lZGlhLCAi
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnNldFN0YXRlIC0gbmFtZSA9ICVzLCBzdGF0
ZSA9IDB4JXgiLCBkZXZpY2VOYW1lLnV0ZjgoKS5kYXRhKCksICh1bnNpZ25lZClzdGF0ZSk7CiAK
ICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbdGhpcywgc3RhdGUsIGRldmljZU5hbWVdIHsK
LSAgICAgICAgaWYgKGRldmljZU5hbWUgIT0gbV9kZXZpY2VOYW1lICYmIHN0YXRlICE9IE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpVbmtub3duKSB7CisgICAgICAgIGlmIChkZXZpY2VOYW1l
ICE9IG1fZGV2aWNlTmFtZSAmJiBzdGF0ZSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
TW9ja1N0YXRlOjpVbmtub3duKSB7CiAgICAgICAgICAgICBtX2RldmljZU5hbWUgPSBkZXZpY2VO
YW1lOwogICAgICAgICAgICAgY3VycmVudERldmljZURpZENoYW5nZSgpOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJNb2NrLmgKaW5kZXggZGUwOTZjYjg4MWY4MjQyMTExNjU4YjhkMjE4Mzlm
OWM4ODVkNGJjZS4uM2U3NDM5NWJmMTZiOGU3YzhjZTlmOTcyMGU3NTk0ZTRmMmM4N2VlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyTW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlck1vY2suaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpIG92ZXJyaWRlOwogICAgIHZvaWQgaW52
YWxpZGF0ZVBsYXliYWNrVGFyZ2V0cygpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBzZXRTdGF0ZShj
b25zdCBTdHJpbmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpOworICAgIHZv
aWQgc2V0U3RhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1v
Y2tTdGF0ZSk7CiAgICAgdm9pZCBkaXNtaXNzUG9wdXAoKTsKIAogcHJpdmF0ZToKQEAgLTU3LDcg
KzU3LDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBtX2RldmljZU5hbWU7CiAgICAgR2VuZXJp
Y1Rhc2tRdWV1ZTxUaW1lcj4gbV90YXNrUXVldWU7Ci0gICAgTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OlN0YXRlIG1fc3RhdGUgeyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VW5rbm93
biB9OworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgbV9zdGF0ZSB7
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6OlVua25vd24gfTsKICAgICBi
b29sIG1fc2hvd2luZ01lbnUgeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCmluZGV4IDM0NDkyYmFmODExNGM5NDZkNjMwMWEwZjYwMDZkNWRmMTkzNDZjYTMu
LmMzODAxMTY5NGJhZmFjYzhhMWY2N2ZmMDg1YWZlNDRhYmJiYzJhZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTU1OSw3ICs1NTksNyBAQCB2b2lkIEludGVybmFsczo6
cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdlKQogCiAjaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkKICAgICBwYWdlLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyRW5hYmxlZCh0cnVlKTsKLSAgICBwYWdlLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyU3RhdGUoZW1wdHlTdHJpbmcoKSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlVua25v
d24pOworICAgIHBhZ2Uuc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShlbXB0
eVN0cmluZygpLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpVbmtub3du
KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPKQpAQCAtNDUxMCwxNCArNDUxMCwxNCBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyU3RhdGUoY29uc3QgU3RyaW5nJgogICAgIFBhZ2UqIHBhZ2UgPSBjb250ZXh0RG9jdW1lbnQo
KS0+ZnJhbWUoKS0+cGFnZSgpOwogICAgIEFTU0VSVChwYWdlKTsKIAotICAgIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpVbmtub3duOworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3Rh
dGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpVbmtub3duOwogCiAg
ICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRldmljZVN0YXRlLCAiZGV2aWNl
YXZhaWxhYmxlIikpCi0gICAgICAgIHN0YXRlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
Ok91dHB1dERldmljZUF2YWlsYWJsZTsKKyAgICAgICAgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6TW9ja1N0YXRlOjpPdXRwdXREZXZpY2VBdmFpbGFibGU7CiAgICAgZWxzZSBp
ZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGV2aWNlU3RhdGUsICJkZXZpY2V1bmF2
YWlsYWJsZSIpKQotICAgICAgICBzdGF0ZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpP
dXRwdXREZXZpY2VVbmF2YWlsYWJsZTsKKyAgICAgICAgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6TW9ja1N0YXRlOjpPdXRwdXREZXZpY2VVbmF2YWlsYWJsZTsKICAgICBlbHNl
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkZXZpY2VTdGF0ZSwgInVua25vd24i
KSkKLSAgICAgICAgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VW5rbm93bjsK
KyAgICAgICAgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpV
bmtub3duOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nl
c3NFcnJvciB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKaW5kZXggYmQxOTFlNTcxZDcxZjIxMDdkZmZl
YzVkZmIyNGIwZDQ0NmRjY2U2Ny4uMTg4ZmIwYzMxM2ZmYWYwYzI1ZWNjZGE3NDZkNjdjMWFjMmE3
ZjdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAtNTksNiArNTksNyBAQAogCiAjaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWJh
Y2tUYXJnZXRDb2NvYS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmg+CiAj
ZW5kaWYKIApAQCAtNjk3LDIwICs2OTgsMjEgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5
OjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sIHNob3VsZFBsYXkpCiAgICAgbV9w
bGF5ZXItPnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHNob3VsZFBsYXkpOwogfQogCi12
b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoY29u
c3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldENvbnRleHQpCit2
b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQmJiB0YXJnZXRDb250ZXh0KQogewogICAgIHN3aXRjaCAo
dGFyZ2V0Q29udGV4dC50eXBlKCkpIHsKLSAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpBVk91dHB1dENvbnRleHRUeXBlOgotICAgICAgICBtX3BsYXllci0+c2V0V2lyZWxlc3NQ
bGF5YmFja1RhcmdldChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZSh0
YXJnZXRDb250ZXh0LmF2T3V0cHV0Q29udGV4dCgpKSk7CisgICAgY2FzZSBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dDogeworICAgICAg
ICBpZiAodGFyZ2V0Q29udGV4dC5kZXNlcmlhbGl6ZU91dHB1dENvbnRleHQoKSkKKyAgICAgICAg
ICAgIG1fcGxheWVyLT5zZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KE1lZGlhUGxheWJhY2tUYXJn
ZXRDb2NvYTo6Y3JlYXRlKFdURk1vdmUodGFyZ2V0Q29udGV4dCkpKTsKICAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2s6
CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
Ok1vY2tUeXBlOgotICAgICAgICBtX3BsYXllci0+c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6Y3JlYXRlKHRhcmdldENvbnRleHQubW9j
a0RldmljZU5hbWUoKSwgdGFyZ2V0Q29udGV4dC5tb2NrU3RhdGUoKSkpOworICAgICAgICBtX3Bs
YXllci0+c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6
Y3JlYXRlKHRhcmdldENvbnRleHQuZGV2aWNlTmFtZSgpLCB0YXJnZXRDb250ZXh0Lm1vY2tTdGF0
ZSgpKSk7CiAgICAgICAgIGJyZWFrOwotI2Vsc2UKLSAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpNb2NrVHlwZToKICNlbmRpZgotICAgIGNhc2UgTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6Ok5vbmU6CisgICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlw
ZTo6QVZPdXRwdXRDb250ZXh0OgorICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
OlR5cGU6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVh
azsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkuaAppbmRleCAyNGI2NjQxYWU0ZjVmMWU3ZGZjMTA1Mzc0MTNm
MGU5Y2ZkMjVlMjNmLi5iZGFlZThhZTA1ZjEwZmE0NjU3MzM0M2Y0NzljNDI5M2Q0N2RmNmM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5LmgKQEAgLTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB2b2lkIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFj
a0Rpc2FibGVkKGJvb2wpOwogICAgIHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQo
Ym9vbCk7Ci0gICAgdm9pZCBzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Jik7CisgICAgdm9pZCBzZXRXaXJlbGVzc1BsYXli
YWNrVGFyZ2V0KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiYpOwogICAgIHZv
aWQgbWVkaWFQbGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZChib29s
KSBmaW5hbDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IGJmODhhYjYxN2JlMTIxYjRh
ZjdiYzRjZDNjNGZjMTk3ZGRhNTk3ODIuLjI5OGQ4NWQyYTA2NGNhNGFhY2U5YWVlM2JkZDQ1OTgz
OGM3MGI2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVB
cmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dl
YkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC00MSwxNCArNDEsMjMgQEAKICNpbXBvcnQg
PFVJS2l0L1VJRm9udC5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQorI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oPgor
I2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CisjZW5kaWYKKworI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1dlYkNvcmVBcmd1bWVudENvZGVyc0Nv
Y29hQWRkaXRpb25zLm1tPgorI2VuZGlmCisKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogI2ltcG9y
dCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50QXV0aG9yaXphdGlv
blN0YXR1cy5oPgogI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogI2VuZGlm
CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9u
cy9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYUFkZGl0aW9ucy5tbT4KKyNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNv
ZnRMaW5rLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIElQQyB7CkBAIC02MDYsNCArNjE1LDQ1IEBA
IGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0
Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQordm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCit7Cisg
ICAgaWYgKHRhcmdldC50eXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6
OkFWT3V0cHV0Q29udGV4dCkgeworICAgICAgICBpZiAoW1BBTDo6Z2V0QVZPdXRwdXRDb250ZXh0
Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCisg
ICAgICAgICAgICBlbmNvZGVyIDw8IHRhcmdldC5vdXRwdXRDb250ZXh0KCk7CisgICAgfSBlbHNl
IGlmICh0YXJnZXQudHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpT
ZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0KQorICAgICAgICBlbmNvZGVyIDw8IHRhcmdldC5zZXJp
YWxpemVkT3V0cHV0Q29udGV4dCgpOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZSBjb250ZXh0VHlwZSwgY29uc3QgU3RyaW5nJiBkZXZp
Y2VOYW1lLCBib29sIGhhc0FjdGl2ZVJvdXRlLCBib29sIHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5
YmFjaywgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldCkKK3sKKyAgICBBU1NFUlQo
Y29udGV4dFR5cGUgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2spOwor
CisgICAgaWYgKGNvbnRleHRUeXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBl
OjpBVk91dHB1dENvbnRleHQpIHsKKyAgICAgICAgaWYgKCFbUEFMOjpnZXRBVk91dHB1dENvbnRl
eHRDbGFzcygpIGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woTlNTZWN1cmVDb2RpbmcpXSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBhdXRvIG91dHB1dENvbnRleHQg
PSBJUEM6OmRlY29kZTxBVk91dHB1dENvbnRleHQ+KGRlY29kZXIsIFBBTDo6Z2V0QVZPdXRwdXRD
b250ZXh0Q2xhc3MoKSk7CisgICAgICAgIGlmICghb3V0cHV0Q29udGV4dCkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICB0YXJnZXQgPSBXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dCB7IFdURk1vdmUoKm91dHB1dENvbnRleHQpIH07CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIGlmIChjb250ZXh0VHlwZSA9PSBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCkgeworICAgICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBzZXJpYWxpemVkT3V0cHV0Q29udGV4dDsKKyAgICAgICAgaWYgKCFJ
UEM6OmRlY29kZShkZWNvZGVyLCBzZXJpYWxpemVkT3V0cHV0Q29udGV4dCkgfHwgIXNlcmlhbGl6
ZWRPdXRwdXRDb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHRh
cmdldCA9IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IHsgV1RGTW92ZShzZXJp
YWxpemVkT3V0cHV0Q29udGV4dCksIGRldmljZU5hbWUsIGhhc0FjdGl2ZVJvdXRlLCBzdXBwb3J0
c1JlbW90ZVZpZGVvUGxheWJhY2sgfTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggMjU1YTJj
YmM2Yzc3Y2VmMWU2MDcwZWE0MjBmNmJkZTkwYjI0MGE3MS4uOTViOTQ5ZTViMWFlYTRjYjc4MWRk
N2M4OGY2Mjk1MjA2MWE0MWYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCkBAIC0yNDU3LDE3ICsyNDU3LDIwIEBAIHZvaWQgQXJndW1lbnRD
b2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBNCiAgICAgYm9vbCBoYXNQbGF0Zm9ybURhdGEgPSB0YXJnZXQuZW5jb2RpbmdSZXF1
aXJlc1BsYXRmb3JtRGF0YSgpOwogICAgIGVuY29kZXIgPDwgaGFzUGxhdGZvcm1EYXRhOwogCi0g
ICAgaW50MzJfdCB0YXJnZXRUeXBlID0gdGFyZ2V0LnR5cGUoKTsKLSAgICBlbmNvZGVyIDw8IHRh
cmdldFR5cGU7CisgICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGUgY29udGV4dFR5
cGUgPSB0YXJnZXQudHlwZSgpOworICAgIGVuY29kZXIgPDwgY29udGV4dFR5cGU7CisKKyAgICBl
bmNvZGVyIDw8IHRhcmdldC5kZXZpY2VOYW1lKCk7CisgICAgZW5jb2RlciA8PCB0YXJnZXQuaGFz
QWN0aXZlUm91dGUoKTsKKyAgICBlbmNvZGVyIDw8IHRhcmdldC5zdXBwb3J0c1JlbW90ZVZpZGVv
UGxheWJhY2soKTsKIAogICAgIGlmICh0YXJnZXQuZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0
YSgpKSB7CiAgICAgICAgIGVuY29kZVBsYXRmb3JtRGF0YShlbmNvZGVyLCB0YXJnZXQpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKHRhcmdldFR5cGUgPT0gTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6Ok1vY2tUeXBlKTsKLSAgICBlbmNvZGVyIDw8IHRhcmdldC5tb2Nr
RGV2aWNlTmFtZSgpOwotICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8aW50MzJfdD4odGFyZ2V0
Lm1vY2tTdGF0ZSgpKTsKKyAgICBBU1NFUlQoY29udGV4dFR5cGUgPT0gTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6OlR5cGU6Ok1vY2spOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWlu
dDhfdD4odGFyZ2V0Lm1vY2tTdGF0ZSgpKTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCkBAIC0yNDc2LDI0ICsyNDc5LDMxIEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBNZWRpYVBsCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNQbGF0Zm9ybURh
dGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpbnQzMl90IHRhcmdldFR5cGU7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0YXJnZXRUeXBlKSkKKyAgICBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6VHlwZSBjb250ZXh0VHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNv
bnRleHRUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGhhc1BsYXRmb3Jt
RGF0YSkKLSAgICAgICAgcmV0dXJuIGRlY29kZVBsYXRmb3JtRGF0YShkZWNvZGVyLCB0YXJnZXQp
OworICAgIFN0cmluZyBkZXZpY2VOYW1lOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGV2aWNl
TmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEFTU0VSVCh0YXJnZXRUeXBlID09
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrVHlwZSk7CisgICAgYm9vbCBoYXNBY3Rp
dmVSb3V0ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0FjdGl2ZVJvdXRlKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3RyaW5nIG1vY2tEZXZpY2VOYW1lOwotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUobW9ja0RldmljZU5hbWUpKQorICAgIGJvb2wgc3VwcG9ydHNSZW1vdGVW
aWRlb1BsYXliYWNrOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3VwcG9ydHNSZW1vdGVWaWRl
b1BsYXliYWNrKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaW50MzJfdCBtb2NrU3Rh
dGU7CisgICAgaWYgKGhhc1BsYXRmb3JtRGF0YSkKKyAgICAgICAgcmV0dXJuIGRlY29kZVBsYXRm
b3JtRGF0YShkZWNvZGVyLCBjb250ZXh0VHlwZSwgZGV2aWNlTmFtZSwgaGFzQWN0aXZlUm91dGUs
IHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaywgdGFyZ2V0KTsKKworICAgIEFTU0VSVChjb250
ZXh0VHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6TW9jayk7CisgICAg
dWludDhfdCBtb2NrU3RhdGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtb2NrU3RhdGUpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB0YXJnZXQgPSBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dChtb2NrRGV2aWNlTmFtZSwgc3RhdGljX2Nhc3Q8TWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OlN0YXRlPihtb2NrU3RhdGUpKTsKKyAgICB0YXJnZXQgPSBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dChkZXZpY2VOYW1lLCBzdGF0aWNfY2FzdDxNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6TW9ja1N0YXRlPihtb2NrU3RhdGUpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA2
MTk3MDg3ODI1MTE1NDhiNjJmMjcxNTZiZDNmNDdkNzFhMzFlYWMyLi4zMTA3MTg1YWZjN2JiNWI0
ZGY1Y2MyYTgxYzZkMWUyYmYwMzMxZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
SW1hZ2VEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbmRleGVkREIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0lucHV0TW9kZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2VsZWN0aW9uT3B0aW9uLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29y
a0xvYWRNZXRyaWNzLmg+CkBAIC0xOTUsMTAgKzE5Niw2IEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2Vi
Q29udGVudDsKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKICNlbmRpZgogCi0j
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLWNsYXNzIE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OwotI2VuZGlmCi0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogc3RydWN0
IE1lZGlhQ29uc3RyYWludHM7CiAjZW5kaWYKQEAgLTY0NCw3ICs2NDEsNyBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dCYpOwogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
Jik7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImLCBjb25zdCBX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYpOwotICAgIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYsIFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Jik7CisgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6OlR5cGUsIGNvbnN0IFN0cmluZyYgZGV2aWNlTmFtZSwgYm9vbCBoYXNB
Y3RpdmVSb3V0ZSwgYm9vbCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2ssIFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Jik7CiB9OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCmluZGV4IDE4
NmI3YmIyZGI2ZmM0ZTJiYzEzM2Y3MTc1Y2NmOWMzNzYzODkyMzAuLjkyNWY1YTRkNWE0ODhkNDg4
NDA0ZWM2Mjk1MmQ4YTI0OWEzZjAwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQpAQCAtNDIsMTIgKzQyLDYgQEAKICNp
bXBvcnQgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CiAjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0Yu
aD4KIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0jaW1wb3J0IDxXZWJD
b3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+Ci0jaW1wb3J0IDxvYmpjL3J1bnRpbWUu
aD4KLSNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgotI2VuZGlmCi0K
IG5hbWVzcGFjZSBJUEMgewogCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q2VydGlmaWNh
dGVJbmZvPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvKQpAQCAtNDAzLDI5ICszOTcsNiBAQCBib29sIEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZQogCiAjZW5kaWYKIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpCi0KLXZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dD46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0KQotewotICAgIGlmIChbUEFM
OjpnZXRBVk91dHB1dENvbnRleHRDbGFzcygpIGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2wo
TlNTZWN1cmVDb2RpbmcpXSkKLSAgICAgICAgZW5jb2RlciA8PCB0YXJnZXQuYXZPdXRwdXRDb250
ZXh0KCk7Ci19Ci0KLWJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0KQotewotICAgIGlmICghW1BBTDo6
Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5T
U2VjdXJlQ29kaW5nKV0pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gY29udGV4
dCA9IElQQzo6ZGVjb2RlPEFWT3V0cHV0Q29udGV4dD4oZGVjb2RlciwgUEFMOjpnZXRBVk91dHB1
dENvbnRleHRDbGFzcygpKTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIHRhcmdldCA9IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IHsg
Y29udGV4dC0+Z2V0KCkgfTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotI2VuZGlmCi0KICNpZiBF
TkFCTEUoVklERU8pCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1ZVZhbHVlPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZSYgdmFsdWUpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBhMmYzOWM5NWUzYmM0
ZDgyMDUxYmFjZDM3MTM4MDMwNzNjNDMzNzkyLi5lZjJkYjQxMDM4MjRiNjVkYWNkNjAyNjdiNjk4
ZGZkZmRiOWU2YTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
QEAgLTc4MzIsMTQgKzc4MzIsNiBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4m
IG1lZGlhUmVsYXRlZElPS2l0Q2xhc3NlcygpCiAgICAgfSk7CiAgICAgcmV0dXJuIHNlcnZpY2Vz
OwogfQotCi1zdGF0aWMgY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIHRlbXBvcmFyeU1hY2hT
ZXJ2aWNlcygpCi17Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gc2VydmljZXMgPSBtYWtlTmV2ZXJE
ZXN0cm95ZWQoVmVjdG9yPEFTQ0lJTGl0ZXJhbD4gewotICAgICAgICAiY29tLmFwcGxlLmNvcmVt
ZWRpYS5yb3V0aW5nY29udGV4dC54cGMiX3MgLy8gUmVtb3ZlIGFmdGVyIDxyZGFyOi8vNzY0MDMz
MDI+IGlzIGZpeGVkLgotICAgIH0pOwotICAgIHJldHVybiBzZXJ2aWNlczsKLX0KICNlbmRpZgog
CiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0
ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgRHJhd2luZ0FyZWFQcm94eSYgZHJhd2luZ0Fy
ZWEsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9saWNpZXMpCkBAIC03
OTM1LDkgKzc5MjcsNiBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6
Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogICAgICAgICAvLyBGSVhN
RSgyMDc3MTYpOiBUaGUgZm9sbG93aW5nIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gdGhlIEdQVSBw
cm9jZXNzIGlzIGNvbXBsZXRlLgogICAgICAgICBwYXJhbWV0ZXJzLm1lZGlhRXh0ZW5zaW9uSGFu
ZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKG1lZGlh
UmVsYXRlZE1hY2hTZXJ2aWNlcygpLCBXVEY6Om51bGxvcHQpOwogICAgICAgICBwYXJhbWV0ZXJz
Lm1lZGlhSU9LaXRFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlc0ZvcklPS2l0Q2xhc3NFeHRlbnNpb25zKG1lZGlhUmVsYXRlZElPS2l0Q2xhc3NlcygpLCBX
VEY6Om51bGxvcHQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIEZJWE1FKDIyNDMyNyk6IFJl
bW92ZSB0aGlzIGVsc2UgY2xhdXNlIG9uY2UgPHJkYXI6Ly83NjQwMzMwMj4gaXMgZml4ZWQuCi0g
ICAgICAgIHBhcmFtZXRlcnMubWVkaWFFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAodGVtcG9yYXJ5TWFjaFNlcnZpY2VzKCksIFdU
Rjo6bnVsbG9wdCk7CiAgICAgfQogCiAgICAgaWYgKCFwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nl
c3NGb3JNZWRpYUVuYWJsZWQoKQpAQCAtOTQwMyw3ICs5MzkyLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sIGVuYWJsZWQp
CiAgICAgcGFnZUNsaWVudCgpLm1lZGlhU2Vzc2lvbk1hbmFnZXIoKS5zZXRNb2NrTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlckVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQordm9p
ZCBXZWJQYWdlUHJveHk6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29u
c3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9j
a1N0YXRlIHN0YXRlKQogewogICAgIHBhZ2VDbGllbnQoKS5tZWRpYVNlc3Npb25NYW5hZ2VyKCku
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShuYW1lLCBzdGF0ZSk7CiB9CkBA
IC05NDE4LDcgKzk0MDcsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBsYXliYWNrVGFyZ2V0
KFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGUKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQoY29udGV4dElkLCB0YXJnZXQtPnRhcmdl
dENvbnRleHQoKSkpOworICAgIGF1dG8gY29udGV4dCA9IHRhcmdldC0+dGFyZ2V0Q29udGV4dCgp
OworICAgIEFTU0VSVChjb250ZXh0LnR5cGUoKSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCk7CisgICAgaWYgKGNvbnRleHQudHlw
ZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQg
JiYgIWNvbnRleHQuc2VyaWFsaXplT3V0cHV0Q29udGV4dCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFja1RhcmdldFNlbGVjdGVkKGNvbnRl
eHRJZCwgY29udGV4dCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXh0ZXJuYWxPdXRwdXRE
ZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRp
ZmllciBjb250ZXh0SWQsIGJvb2wgYXZhaWxhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCA5YjdkYzA2ZjYxZmJjNDczMmViYjliYmY1NGQ1ODUyODlmNDcxZDYw
Li41ZjE2ODJlNTI5M2QxMzMwNmUwYmMzNDMwODI3ZGE3M2M5OTE3NWZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTU2Nyw3ICsxNTY3LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0
Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGJvb2wg
aGFzVmlkZW8pOwogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENo
YW5nZShXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBXZWJD
b3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpOwogICAgIHZvaWQgc2V0TW9ja01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpOwotICAgIHZvaWQgc2V0TW9ja01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpOworICAgIHZvaWQgc2V0TW9ja01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKTsKICAgICB2b2lkIG1vY2tNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCk7CiAKICAgICAvLyBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyQ2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KaW5kZXggMmNhYzNmMWNiMDVkMWNkN2I1Zjc3MWVlMTJjMGU3MjllMWYxZDhjZi4u
N2U5OGIwODhkOTIyZWUxMTQ0OTczMGEwZTU1ODEyYmUyNjQ0NzUzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNDc2LDcgKzQ3
Niw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU2hvd1BsYXliYWNrVGFyZ2V0
UGlja2VyKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29u
dGV4dElkLCBXZWJDb3JlOjpGbG9hdFJlY3QgcGlja2VyTG9jYXRpb24sIGJvb2wgaGFzVmlkZW8p
CiAgICAgUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpQ
bGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgdW5zaWduZWQg
bWVkaWFTdGF0ZSkKICAgICBTZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQo
Ym9vbCBlbmFibGVkKQotICAgIFNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUo
U3RyaW5nIG5hbWUsIHVuc2lnbmVkIHBpY2tlclN0YXRlKQorICAgIFNldE1vY2tNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyU3RhdGUoU3RyaW5nIG5hbWUsIGVudW06dWludDhfdCBXZWJDb3JlOjpN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHBpY2tlclN0YXRlKQogICAgIE1v
Y2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCkKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9p
b3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcAppbmRleCAyYWI1ZjkxM2NkZTgzY2VkYzU0
YTdhOGZlMGVlMDk1M2JjZTQ0OTViLi44NzBhZDEyOWNkZmRhYTM4MzgxY2UxYTU5ZjIzYjJkMGJj
NjY4NDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lv
cy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAKQEAgLTgxLDEy
ICs4MSwxMiBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6cHJvdmlkZVByZXNlbnRp
bmdBcHBsaWNhdGlvblBJRChpbnQgcGlkKQogCiB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
cjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0c0FpclBsYXlWaWRlbyBzdXBwb3J0
c0FpclBsYXlWaWRlbywgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmJiB0YXJnZXRDb250ZXh0
KQogewotICAgIGlmICh0YXJnZXRDb250ZXh0LnR5cGUoKSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6QVZPdXRwdXRDb250ZXh0VHlwZSkgeworICAgIGlmICh0YXJnZXRDb250ZXh0LnR5
cGUoKSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0
KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVWaWRlb1JvdXRlRGlk
Q2hhbmdlKHN1cHBvcnRzQWlyUGxheVZpZGVvLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29jb2E6OmNyZWF0ZSh0YXJnZXRDb250ZXh0LmF2T3V0cHV0Q29udGV4dCgpKSk7CisgICAgV2Vi
Q29yZTo6TWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKHN1cHBv
cnRzQWlyUGxheVZpZGVvLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0
ZShXVEZNb3ZlKHRhcmdldENvbnRleHQpKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
aW5kZXggYmNjNGMxN2FjMjk1MjEyY2JhNjRkZWRkMWM5YjNhOTA2Y2EwNTEwMS4uNWZjODU1NjM3
NjBlYTc1ZWMxMmVkMTRhOWUyNzM2ODFmMjUxYzA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
QEAgLTEzNTIsNyArMTM1Miw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIG1fcGFnZS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
RW5hYmxlZChlbmFibGVkKSk7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRNb2NrTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNl
dE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKQogewogICAgIG1fcGFn
ZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyU3RhdGUobmFtZSwgc3RhdGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA2ODEy
ZTY0MmZlY2RjYWE3YjFmNTFmZTA3MTI1ODBhN2Q0MmM0ZWYwLi41NmNmNmI5MmVkOWExMDM2ZGJk
N2QwNjQ4NjNjNGU3NjgxNDJjZGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zNzgsNyArMzc4
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJDb3Jl
OjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIGJvb2wpIGZpbmFsOwogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJDbGll
bnRTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVu
dGlmaWVyLCBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpIGZpbmFsOwog
ICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpIGZp
bmFsOwotICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25z
dCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpIGZp
bmFsOworICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25z
dCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRl
KSBmaW5hbDsKICAgICB2b2lkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1Bv
cHVwKCkgZmluYWw7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IGFlYjI1ZGFiODQyMDY4NGE5NTAyMzg2YWJmODNhZTZiZTM4Y2U5ODYu
LjFlNjMzNzljYWY4NzdiNTkyNjZiZmM3MDM3MDkxNjAwOTYwMzZlYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE3OTEsNyArMTc5MSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXRTaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMoYm9v
bCBkaXNwYXRjaCkgeyBtX3Nob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyA9IGRpc3Bh
dGNoOyB9CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIHBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQoV2ViQ29yZTo6
UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQmIG91dHB1dERldmljZSkgY29uc3Q7CisgICAgdm9pZCBw
bGF5YmFja1RhcmdldFNlbGVjdGVkKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4
dElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiYpIGNvbnN0
OwogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoV2ViQ29yZTo6
UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgYm9vbCk7CiAgICAgdm9pZCBz
ZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyLCBib29sKTsKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0UGlja2Vy
V2FzRGlzbWlzc2VkKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQppbmRleCA3NGRhNjM1Nzg4MmNkMDEzMDIwODQwOTdmMDY0ZDIxYzNiOTE1ZDA0Li5m
OGI4MGM2YzRkNTQ1YTY1NmFiYTdkYzNjODM5YjZjZGExY2ZlMmI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMzUsNyAr
MzUsNiBAQAogI2ltcG9ydCAiRm9udEluZm8uaCIKICNpbXBvcnQgIkZyYW1lSW5mb0RhdGEuaCIK
ICNpbXBvcnQgIkluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oIgotI2ltcG9ydCAiUERGS2l0
U29mdExpbmsuaCIKICNpbXBvcnQgIlBERlBsdWdpbi5oIgogI2ltcG9ydCAiUGFnZUJhbm5lci5o
IgogI2ltcG9ydCAiUGx1Z2luVmlldy5oIgpAQCAtOTksOSArOTgsMTIgQEAKIAogI2lmIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAjaW1wb3J0IDxXZWJDb3JlL01lZGlhUGxheWJh
Y2tUYXJnZXRDb2NvYS5oPgorI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oPgogI2Vu
ZGlmCiAKKyNpbXBvcnQgIlBERktpdFNvZnRMaW5rLmgiCisKIG5hbWVzcGFjZSBXZWJLaXQgewog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTEwNDIsMTYgKzEwNDQsMTcgQEAgdm9pZCBX
ZWJQYWdlOjpkaWRVcGRhdGVSZW5kZXJpbmcoKQogfQogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi12b2lkIFdlYlBhZ2U6OnBs
YXliYWNrVGFyZ2V0U2VsZWN0ZWQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmll
ciBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0
YXJnZXRDb250ZXh0KSBjb25zdAordm9pZCBXZWJQYWdlOjpwbGF5YmFja1RhcmdldFNlbGVjdGVk
KFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmIHRhcmdldENvbnRleHQpIGNvbnN0CiB7CiAg
ICAgc3dpdGNoICh0YXJnZXRDb250ZXh0LnR5cGUoKSkgewotICAgIGNhc2UgTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6OkFWT3V0cHV0Q29udGV4dFR5cGU6Ci0gICAgICAgIG1fcGFnZS0+c2V0
UGxheWJhY2tUYXJnZXQoY29udGV4dElkLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29j
b2E6OmNyZWF0ZSh0YXJnZXRDb250ZXh0LmF2T3V0cHV0Q29udGV4dCgpKSk7CisgICAgY2FzZSBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4
dDoKKyAgICAgICAgbV9wYWdlLT5zZXRQbGF5YmFja1RhcmdldChjb250ZXh0SWQsIFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKFdURk1vdmUodGFyZ2V0Q29udGV4dCkp
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
TW9ja1R5cGU6Ci0gICAgICAgIG1fcGFnZS0+c2V0UGxheWJhY2tUYXJnZXQoY29udGV4dElkLCBX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6Y3JlYXRlKHRhcmdldENvbnRleHQubW9j
a0RldmljZU5hbWUoKSwgdGFyZ2V0Q29udGV4dC5tb2NrU3RhdGUoKSkpOworICAgIGNhc2UgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2s6CisgICAgICAgIG1fcGFnZS0+c2V0
UGxheWJhY2tUYXJnZXQoY29udGV4dElkLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9j
azo6Y3JlYXRlKHRhcmdldENvbnRleHQuZGV2aWNlTmFtZSgpLCB0YXJnZXRDb250ZXh0Lm1vY2tT
dGF0ZSgpKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6Ok5vbmU6CisgICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6
QVZPdXRwdXRDb250ZXh0OgorICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5
cGU6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGI4OWIyNjZjM2Q3OWFjZDI0MWRmMzZiNWZjZTJm
MWQyZWQ4ZGI3NDguLmYzZDQ3MTZhODkzM2Q5ZjI0MmY4ZWYxMjE1YTg2NjIzNDBmODk3YTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCkBAIC0yNDMsNyArMjQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNo
b3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRl
eHRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgLyogaGFzVmlkZW8g
Ki8pIGZpbmFsOwogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENo
YW5nZShXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBXZWJD
b3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpIGZpbmFsOwogICAgIHZvaWQgc2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpIGZpbmFsOwotICAgIHZv
aWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpIGZpbmFsOworICAgIHZv
aWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKSBmaW5hbDsKICAg
ICB2b2lkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCkgb3ZlcnJp
ZGU7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IGIzNGU4ZDlkOGVlOTE1YzYxYTBj
NDlmZjQwZTJkNjZmZWQyNGEwNGUuLmM5NjQ4M2ZmOTZlYjdmZDhjYzE5NTI3YzM1NDVkOWI4M2Ix
NGE5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KQEAgLTExMjksNyArMTEyOSw3IEBAIHZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9v
bCBlbmFibGVkKQogICAgIFttX3dlYlZpZXcgX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyRW5hYmxlZDplbmFibGVkXTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldE1vY2tN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCit2b2lkIFdlYkNocm9tZUNsaWVudDo6
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUs
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCiB7CiAgICAgW21f
d2ViVmlldyBfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOm5hbWUgc3RhdGU6
c3RhdGVdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaAppbmRleCAwYjkyMzgzNWU5ZTE1
YjZiODA0NWI0OWFmZTI5ZTZhYWIwM2VjZmNhLi44Y2EzMjk0N2E1YjQ2ZTA2N2I4ZThiYWU0NDYz
OTNlYmI5MGU4NmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaApAQCAtNTMsNyArNTMs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViQ29yZTo6
UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiwgYm9vbCBoYXNWaWRlbyk7CiAgICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tlckNs
aWVudFN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElk
ZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyk7CiAgICAg
dm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCk7Ci0gICAg
dm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYs
IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgdm9pZCBz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpOwogICAgIHZvaWQgbW9j
a01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsKIAogICAgIHZvaWQgaW52
YWxpZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tCmluZGV4IDczNDQzNTY3NWFi
ODA5YjUwZWM1ZWYzOGFiOWY3N2NhMTQ4YjMxZjEuLjdkYmQ1ODk0NzU0MDVhMTZlYmRkMGZhOWJj
ZmE2MmMzMzdlNzQxNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0KQEAgLTY4LDcg
KzY4LDcgQEAgdm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpzZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbAogICAgIFdlYkNvcmU6OldlYk1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNoYXJlZCgpLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5h
YmxlZChlbmFibGVkKTsKIH0KIAotdm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwg
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQordm9pZCBX
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSkKIHsKICAgICBXZWJDb3JlOjpXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyOjpzaGFyZWQoKS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRl
KG5hbWUsIHN0YXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQppbmRleCA1YjBlZThhM2FjOGMzMzNiNmVlMzQ0Y2RkOWMzYjU1NzY1YzI2ZmYwLi40OTJh
ZjYwMWNmN2FjNGRmNDY0NTBiMDhhYWE1YzMyMGVhMmU2ZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC05MjMyLDcgKzkyMzIsNyBAQCBib29sIExh
eWVyRmx1c2hDb250cm9sbGVyOjpmbHVzaExheWVycygpCiAgICAgW3NlbGYgX2RldmljZVBpY2tl
cl0tPnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChlbmFibGVkKTsKIH0K
IAotLSAodm9pZClfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOihOU1N0cmlu
ZyAqKW5hbWUgc3RhdGU6KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0
ZSlzdGF0ZQorLSAodm9pZClfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOihO
U1N0cmluZyAqKW5hbWUgc3RhdGU6KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpNb2NrU3RhdGUpc3RhdGUKIHsKICAgICBbc2VsZiBfZGV2aWNlUGlja2VyXS0+c2V0TW9ja01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShuYW1lLCBzdGF0ZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCAzYWUw
ZDNhYTI2MmQ5NTIzMzBjMWM4MmMzMjU1MGQ5YTIxYTUwMTRmLi4wNGI4YzM2OGNjYWY4NTI0ZDA4
NTkzNzJkNjA1OGY0OGYxN2E2ZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKQEAgLTMyNyw3ICszMjcsNyBAQCBXZWJMYXlvdXRN
aWxlc3RvbmVzIGtpdExheW91dE1pbGVzdG9uZXMoT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1p
bGVzdG9uZT4pOwogLSAodm9pZClfc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyOihXZWJDb3JlOjpQ
bGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyKWNvbnRleHRJZCBsb2NhdGlvbjoo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKWxvY2F0aW9uIGhhc1ZpZGVvOihCT09MKWhhc1ZpZGVv
OwogLSAodm9pZClfcGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5nZTooV2Vi
Q29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciljb250ZXh0SWQgc3Rh
dGU6KFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncylzdGF0ZTsKIC0gKHZv
aWQpX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZDooYm9vbCllbmFibGVk
OwotLSAodm9pZClfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOihOU1N0cmlu
ZyAqKW5hbWUgc3RhdGU6KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0
ZSlzdGF0ZTsKKy0gKHZvaWQpX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTmFtZToo
TlNTdHJpbmcgKiluYW1lIHN0YXRlOihXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6TW9ja1N0YXRlKXN0YXRlOwogLSAodm9pZClfbW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJEaXNtaXNzUG9wdXA7CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425955</attachid>
            <date>2021-04-13 23:32:46 -0700</date>
            <delta_ts>2021-04-14 12:39:24 -0700</delta_ts>
            <desc>Fix issues found in manual tests</desc>
            <filename>bug-224469-20210413233245.patch</filename>
            <type>text/plain</type>
            <size>82894</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1OTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQ5YzVhZmFhOTRiNzc1
Zjg0NmU5ZTIwYjJkZjAxOGQyNTRkMDhhZi4uNTVjMmRhMzgxNmQ3ZjAzNWExMGJhMDVjM2NhNjFk
OTg2OTZhNjY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDIxLTA0LTEzICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIFdlYkNvbnRlbnQg
cHJvY2VzcyBzaG91bGQgbm90IGNyZWF0ZSBBVk91dHB1dENvbnRleHQgaW5zdGFuY2VzIHdoZW4g
bWVkaWEgaW4gR1BVIFByb2Nlc3MgaXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtb2RpZmllcyBgTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHRgIHRvIHByb3ZpZGUgaW50ZXJmYWNlcyB0byBzZXJpYWxpemUvZGVzZXJp
YWxpemUKKyAgICAgICAgYEFWT3V0cHV0Q29udGV4dGAgYW5kIG1vZGlmaWVzIGBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29jb2FgIHRvIHVzZSBgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHRgIHRvCisg
ICAgICAgIG1hbmFnZSBpdHMgYEFWT3V0cHV0Q29udGV4dGAgaW5zdGVhZCBvZiBrZWVwaW5nIGEg
cG9pbnRlciB0byB0aGUgYEFWT3V0cHV0Q29udGV4dGAgb2JqZWN0LgorICAgICAgICBXaXRoIHRo
ZXNlIGNoYW5nZXMsIGEgV2ViQ29udGVudCBwcm9jZXNzIGNhbiBhY2Nlc3MgdGhlIHByb3BlcnRp
ZXMgb2YgYSBzZXJpYWxpemVkCisgICAgICAgIGBBVk91dHB1dENvbnRleHRgIG9iamVjdCBhbmQg
Zm9yd2FyZCBpdCB0byBvdGhlciBwcm9jZXNzIChlLmcuLCB0aGUgR1BVIHByb2Nlc3MpIHdpdGhv
dXQKKyAgICAgICAgZGVzZXJpYWxpemluZyB0aGUgYEFWT3V0cHV0Q29udGV4dGAgb2JqZWN0LiBU
aGVyZWZvcmUsIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZG9lcyBub3QgbmVlZAorICAgICAgICBh
Y2Nlc3MgdG8gdGhlIENvcmVNZWRpYSByb3V0aW5nIHNlcnZpY2UuIFNvIHdlIGNhbiByZW1vdmUg
dGhlIGZpeCAocjI3NTY2OSkgZm9yIGJ1ZyAyMjQzMjguCisKKyAgICAgICAgQ292ZXJlZCBieSBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgorICAgICAgICAqIE1vZHVs
ZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmg6CisKKyAgICAgICAgKiBIZWFkZXJz
LmNtYWtlOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBNb2RpZnkgdGhlIHByb2plY3QgZmls
ZSBiZWNhdXNlIGBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dGAgaXMgdXNlZCBpbiBDb2NvYSBw
b3J0cyBvbmx5LgorCisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0
ZSk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNl
dE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgorICAgICAgICAqIHBhZ2UvUGFn
ZS5oOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldC5o
OgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oOiBSZW1vdmVkLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpvdXRwdXRDb250ZXh0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVk
aWFQbGF5YmFja1RhcmdldENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvY29hOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldENvY29hOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2sgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjp0YXJnZXRD
b250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2Nv
YTo6aGFzQWN0aXZlUm91dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvY29hOjpkZXZpY2VOYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnRvTWVk
aWFQbGF5YmFja1RhcmdldENvY29hKToKKyAgICAgICAgRG9uJ3QgZGlyZWN0bHkgdXNlIGBBVk91
dHB1dENvbnRleHRgIGluIHRoaXMgY2xhc3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
aXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRXaXJlbGVzc1BsYXliYWNr
VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KToKKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpkZXZpY2VOYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpoYXNBY3RpdmVSb3V0ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6c3VwcG9ydHNSZW1vdGVWaWRlb1BsYXli
YWNrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
Ojptb2NrU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6Om91dHB1dENvbnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OnNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjplbmNvZGluZ1JlcXVp
cmVzUGxhdGZvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OnNlcmlhbGl6
ZU91dHB1dENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OmRlc2VyaWFsaXplT3V0cHV0Q29udGV4dCk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9t
b2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRNb2NrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldE1vY2s6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjp0YXJnZXRDb250ZXh0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvTWVkaWFQbGF5YmFja1RhcmdldE1vY2spOgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpzdGF0ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
bW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFp
bGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6
OnN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6aW52YWxpZGF0ZVBsYXliYWNrVGFyZ2V0cyk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6c2V0U3Rh
dGUpOgorCisgICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
TW9jay5oOgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSk6CisK
IDIwMjEtMDQtMTMgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbR1BVIFByb2Nlc3NdIFNpbXBsaWZ5IERpc3BsYXlMaXN0OjpJdGVyYXRvciBwYXJ0
IDQ6IE1vdmUgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHRvIGl0cyBvd24gLmgvLmNwcCBmaWxlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA2MDkwZjdjMWYyYjAyNDcxNGZjNWNhMDM3NTYzY2YzYmQwNjdmN2VhLi5kNGJk
ZWFmODQ0NWRmMDVlMmNkZTNjNDFhNTU1ZjYzYTJkMTg2ZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ1IEBACisyMDIxLTA0LTEzICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0dQVVBdIFdlYkNvbnRlbnQgcHJvY2VzcyBzaG91bGQgbm90IGNyZWF0ZSBBVk91dHB1
dENvbnRleHQgaW5zdGFuY2VzIHdoZW4gbWVkaWEgaW4gR1BVIFByb2Nlc3MgaXMgZW5hYmxlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDY5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaDoKKworICAgICAg
ICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46
OmVuY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAq
IFNoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2Rl
UGxhdGZvcm1EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZVBsYXRmb3JtRGF0YSk6IERl
bGV0ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6bWVkaWFSZWxhdGVkSU9LaXRDbGFzc2VzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYktp
dDo6dGVtcG9yYXJ5TWFjaFNlcnZpY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbjoKKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXI6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UpOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJD
aHJvbWVDbGllbnQ6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
cGxheWJhY2tUYXJnZXRTZWxlY3RlZCBjb25zdCk6CisKIDIwMjEtMDQtMTMgIEFkYSBDaGFuICA8
YWRhLmNoYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBQbGF0Zm9ybVhSU3lzdGVt
Ojp4ckNvb3JkaW5hdG9yKCkgZm9yIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKaW5kZXggNmYxZjAyOTQwMWMwYzkyNjRlNGYwNmExOTMxODY0ZWRhNWVm
YTI3MC4uMDg4ZjQ5MmZiYmZjYzJmZDJhOThkNWZiNzhhOWVkZjMzNzdhNWFjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA0LTEzICBQZW5nIExp
dSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIFdlYkNvbnRlbnQgcHJv
Y2VzcyBzaG91bGQgbm90IGNyZWF0ZSBBVk91dHB1dENvbnRleHQgaW5zdGFuY2VzIHdoZW4gbWVk
aWEgaW4gR1BVIFByb2Nlc3MgaXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChX
ZWJDaHJvbWVDbGllbnQ6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbToKKyAgICAgICAgKFdl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyU3RhdGUpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2Vi
VmlldyBfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOnN0YXRlOl0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlld0ludGVybmFsLmg6CisKIDIwMjEtMDQtMTMgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgc3Vw
cG9ydCBmb3IgTlBBUEkgcGx1Z2lucyBpbiBXZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBl
MTE1MDVjZGQwZjhlNDNiMjg3M2RiN2ExZDU4MWY4ZGY5ODRmZWIzLi5jMDRmODA0ZWQ5MzdjNjcw
YWRlZjdiM2I2ODlkODk1ZGZhN2U3YjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyNjksNyAr
MTI2OSw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXliYWNrVGFyZ2V0LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFy
Z2V0Q2xpZW50LmgKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5o
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyRW51bXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCmluZGV4IDZjNmFiMGU3YTYy
ZWM0ZGE0NWVkM2RiYzk0MTQ1NTE3NWNkNDRkNWEuLmQ1YjU5NWE0YWM0OWZmMGVmZmU2MmI0NTJl
YzM0MmI3ZDM4MzA0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxh
eS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCB2
b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyRW5hYmxlZChib29sIGVuYWJsZQogICAgIG1fbW9ja1BpY2tlckVuYWJsZWQgPSBlbmFibGVk
OwogfQogCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6U3RhdGUgc3RhdGUpCit2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1v
Y2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKQogewogICAgIEFMV0FZU19M
T0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CiAgICAgbW9ja1BpY2tlcigpLnNldFN0
YXRlKG5hbWUsIHN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWly
cGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fp
cnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oCmluZGV4IGQ3ZjI4Y2NiNzVlNWQ3NTVkYWY0
MzM0ZWY2NTZjYjE0MTkwZmFiNTQuLjFiYTEyODRmMjMzM2M3ODQ2YWI4MGQ0ZTExZGIyYmY0ZjAy
MDY2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRp
YVNlc3Npb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXIuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXImIHNoYXJlZCgpOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVu
YWJsZWQoYm9vbCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpTdGF0ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpNb2NrU3RhdGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgYWRkUGxheWJhY2tUYXJnZXRQaWNrZXJD
bGllbnQoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYsIFBsYXliYWNrVGFyZ2V0Q2xpZW50
Q29udGV4dElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZWNlNDZjZmE0
MTE5ODM0NTE3OGE1ZDI3Zjc3MjdkYjkwNzM1OGNjOS4uMWFiN2YyMDQ4NTRmODFlMTQ3OTUwMDM2
YzNjNWZjNWU2MDNhYTQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zNjksNiArMzY5
LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9JT1N1cmZhY2VQb29sQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ludFJlY3RDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25m
aWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlcldlYk0uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWY4ZWU1OWI3MWVlNTY0MThhYjE1NjE0ODg4OTYxMzdi
YzQyYzc3Ni4uNjIwNDNmMmNhZWM3MDI4M2QxNjI3YmY0Mzg5MmM4ZmI3OWRiMWE5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
Njk1Myw5ICs2OTUzLDkgQEAKIAkJMUNERDQ1RTQwQkE5Qzg0NjAwRjkwMTQ3IC8qIERlYnVnUmVs
ZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVh
c2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDREQ0NUU1MEJBOUM4
NDYwMEY5MDE0NyAvKiBXZWJDb3JlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsg
cGF0aCA9IFdlYkNvcmUueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
REQ0NUU2MEJBOUM4NDYwMEY5MDE0NyAvKiBCYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54
Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTFDRThEMTI1MjYxODVCRDgwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVu
dGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFODg2M0UyNjEwNUE1RjAwMEM4MTZD
IC8qIEluTWVtb3J5RGlzcGxheUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5NZW1vcnlE
aXNwbGF5TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRTg4NjNGMjYx
MDVBNUYwMDBDODE2QyAvKiBJbk1lbW9yeURpc3BsYXlMaXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
TWVtb3J5RGlzcGxheUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNFOEQx
MjUyNjE4NUJEODAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0VDQjNBODIxRjJCNjczMDBGNDQ1NDIgLyogV0hMU0xT
dGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTdGF0ZW1lbnRC
ZWhhdmlvckNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFOEQxMkIy
NjE4NjE2NDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRGlzcGxheUxpc3RJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDRThEMTJDMjYxODYxNjQwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTY5NzgsNiArNjk3OCw3IEBACiAJCTFEMDAyNkEzMjM3NEQ2MjQwMENBNkNERiAv
KiBKU1BpY3R1cmVJblBpY3R1cmVXaW5kb3cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUQwMDI2QTgyMzc0RjlEOTAwQ0E2Q0RGIC8qIEpTRW50ZXJQaWN0dXJl
SW5QaWN0dXJlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFbnRl
clBpY3R1cmVJblBpY3R1cmVFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
RDAwMjZBOTIzNzRGOUQ5MDBDQTZDREYgLyogSlNFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0VudGVyUGljdHVyZUlu
UGljdHVyZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUQwMDhBQTUy
NjIxMDhDMDAwRUUzQURFIC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFEMkM4MkI2MjM2QTNGNkEwMDU1RDZDNSAvKiBQaWN0dXJlSW5Q
aWN0dXJlU3VwcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDQ3NjU4RDI1Q0NBNzc4MDA3QUYzMTIg
LyogSW1hZ2VEZWNvZGVySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZURlY29kZXJJ
ZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQUIzMTEzMjUxRDcy
NUMwMEZDOTQ4NSAvKiBWaWRlb0xheWVyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0xh
eWVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY5NjAsNyArMjY5
NjEsNiBAQAogCQkJCUNEREUwMkU5MThCM0RGQzcwMENGN0ZGMSAvKiBMZWdhY3lDRE1TZXNzaW9u
LmggKi8sCiAJCQkJMDdFM0RGRDAxQTlFNzg2NTAwNzY0Q0E4IC8qIE1lZGlhUGxheWJhY2tUYXJn
ZXQuaCAqLywKIAkJCQkwNzkyMTY1MzFBQTU2MEFBMDBBM0MwNDkgLyogTWVkaWFQbGF5YmFja1Rh
cmdldENsaWVudC5oICovLAotCQkJCTA3Rjg3NjgzMUFENEE5NDUwMDkwNTg0OSAvKiBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dC5oICovLAogCQkJCTA3OEU0M0Q3MUFCQjZDN0UwMDFDMkZBNiAv
KiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmNwcCAqLywKIAkJCQkwNzhFNDNEODFBQkI2QzdF
MDAxQzJGQTYgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oICovLAogCQkJCUU0QjQxRTBD
MENCRjkwQkQwMEFGMkVDRSAvKiBNZWRpYVBsYXllci5jcHAgKi8sCkBAIC0yNzE3Niw2ICsyNzE3
Niw4IEBACiAJCQkJQUQ5RkY2RTAxOTA4MzkxRDAwM0I2MUUwIC8qIElPU3VyZmFjZVBvb2xDb2Nv
YS5tbSAqLywKIAkJCQlDREM0OEFDODIxNDlDRjJBMDAyNEZENTkgLyogTWVkaWFFbmdpbmVDb25m
aWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcCAqLywKIAkJCQlDREM0OEFDNzIxNDlDRjJBMDAyNEZE
NTkgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmggKi8sCisJCQkJMDdG
ODc2ODMxQUQ0QTk0NTAwOTA1ODQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmggKi8s
CisJCQkJMUQwMDhBQTUyNjIxMDhDMDAwRUUzQURFIC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0Lm1tICovLAogCQkJCTMxNjQ3RkE4MjUxNjE2QkQwMDEwRjhGQiAvKiBPcGVuR0xTb2Z0TGlu
a0NvY29hLmggKi8sCiAJCQkJMzE2NDdGQTkyNTE2MTZCRDAwMTBGOEZCIC8qIE9wZW5HTFNvZnRM
aW5rQ29jb2EubW0gKi8sCiAJCQkJN0I2NEMwQjQyNTRDM0IxNjAwMDZCNEFGIC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0gKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaAppbmRleCBkMGJjMzU1MGQ0ZDA4MzVjMzMzZTFmNDgzZjVmMjVhZGQwNDgzM2NlLi5k
ZjRjOWMxZjg0ZWNhMjBlN2IxZmJkMzdjMTQzOGM1ZTBhYmIwZDU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lQ2xpZW50LmgKQEAgLTUxMyw3ICs1MTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJ
ZGVudGlmaWVyLCBjb25zdCBJbnRQb2ludCYsIGJvb2wgLyppc1ZpZGVvKi8pIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tlckNsaWVudFN0YXRlRGlkQ2hhbmdlKFBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3Rh
dGVGbGFncykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyRW5hYmxlZChib29sKSAgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldE1vY2tNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6OlN0YXRlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6TW9ja1N0YXRlKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbW9ja01lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKSB7IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApp
bmRleCBiZDllNTM4MmJjOWRjY2JhZmZlYzZiMzk0MjIyNGM4ZDVlYTY2YjlhLi5jZGJmZmEwYzZh
MDUyYjBlMWZhMDFjZDFmZDkzMWRiY2JmZGRmNTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTI5
NTIsNyArMjk1Miw3IEBAIHZvaWQgUGFnZTo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBjaHJvbWUoKS5jbGllbnQoKS5zZXRNb2NrTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKLXZvaWQgUGFnZTo6
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUs
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKK3ZvaWQgUGFnZTo6c2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCiB7CiAgICAgY2hyb21l
KCkuY2xpZW50KCkuc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShuYW1lLCBz
dGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGQ0ODI4MTY5MDU1M2UwNDZmNDcwMzQ3ZWQ2YmI0
NTIxNWUyMDY0OWQuLjc3MDFiMDhjMWUzYzliOTRiMGIwY2RiMDY2MTkwOWMyMjIyMmY0NDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCkBAIC03MzEsNyArNzMxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2hvd1Bs
YXliYWNrVGFyZ2V0UGlja2VyKFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIs
IGNvbnN0IEludFBvaW50JiwgYm9vbCwgUm91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcm
KTsKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2UoUGxh
eWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgTWVkaWFQcm9kdWNlcjo6TWVkaWFT
dGF0ZUZsYWdzKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyRW5hYmxlZChib29sKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1v
Y2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1v
Y2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBt
b2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCgpOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRQbGF5YmFja1RhcmdldChQbGF5YmFja1RhcmdldENsaWVudENvbnRl
eHRJZGVudGlmaWVyLCBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0LmgKaW5k
ZXggNmFkZmE5MzdmNzNmNTczZDk1YzlmY2Q3NGQ2ZDIxYjg3M2EyZjc4OC4uMzFkNDg4NGFkYThj
NTE3ZGNmZWQyZGZmYWUyNjVmZTRkYjk0ZmZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXQuaApAQCAtMzgsNyArMzgs
NyBAQCBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0IDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFQ
bGF5YmFja1RhcmdldD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhUGxheWJhY2tUYXJn
ZXQoKSA9IGRlZmF1bHQ7CiAKLSAgICBlbnVtIFRhcmdldFR5cGUgeyBBVkZvdW5kYXRpb24sIE1v
Y2sgfTsKKyAgICBlbnVtIGNsYXNzIFRhcmdldFR5cGUgOiB1aW50OF90IHsgQVZGb3VuZGF0aW9u
LCBNb2NrIH07CiAgICAgdmlydHVhbCBUYXJnZXRUeXBlIHRhcmdldFR5cGUoKSBjb25zdCA9IDA7
CiAKICAgICB2aXJ0dWFsIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXRD
b250ZXh0KCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDFjZTRhM2VjMzAxZTlkOWU5NzQ0ZGNiZjI5YjdhN2ExMGJmNGIz
NGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaAor
KysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHRf
aAotI2RlZmluZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dF9oCi0KLSNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
Ci0KLU9CSkNfQ0xBU1MgQVZPdXRwdXRDb250ZXh0OwotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi1P
QkpDX0NMQVNTIE5TS2V5ZWRBcmNoaXZlcjsKLU9CSkNfQ0xBU1MgTlNLZXllZFVuYXJjaGl2ZXI7
Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dCB7Ci1wdWJsaWM6Ci0gICAgZW51bSBUeXBlIDogaW50MzJfdCB7Ci0gICAgICAg
IE5vbmUsCi0gICAgICAgIEFWT3V0cHV0Q29udGV4dFR5cGUsCi0gICAgICAgIE1vY2tUeXBlLAot
ICAgIH07Ci0KLSAgICBlbnVtIENvbnRleHRTdGF0ZSB7Ci0gICAgICAgIFVua25vd24gPSAwLAot
ICAgICAgICBPdXRwdXREZXZpY2VVbmF2YWlsYWJsZSA9IDEsCi0gICAgICAgIE91dHB1dERldmlj
ZUF2YWlsYWJsZSA9IDIsCi0gICAgfTsKLSAgICB0eXBlZGVmIHVuc2lnbmVkIFN0YXRlOwotCi0g
ICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQoKQotICAgICAgICA6IG1fdHlwZShOb25lKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChBVk91dHB1dENv
bnRleHQgKm91dHB1dENvbnRleHQpCi0gICAgICAgIDogbV90eXBlKEFWT3V0cHV0Q29udGV4dFR5
cGUpCi0gICAgICAgICwgbV9vdXRwdXRDb250ZXh0KG91dHB1dENvbnRleHQpCi0gICAgewotICAg
IH0KLQotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KGNvbnN0IFN0cmluZyYgbmFtZSwg
U3RhdGUgc3RhdGUpCi0gICAgICAgIDogbV90eXBlKE1vY2tUeXBlKQotICAgICAgICAsIG1fbmFt
ZShuYW1lKQotICAgICAgICAsIG1fc3RhdGUoc3RhdGUpCi0gICAgewotICAgIH0KLQotICAgIFR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBt
b2NrRGV2aWNlTmFtZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IE1v
Y2tUeXBlKTsKLSAgICAgICAgcmV0dXJuIG1fbmFtZTsKLSAgICB9Ci0KLSAgICBTdGF0ZSBtb2Nr
U3RhdGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBNb2NrVHlwZSk7
Ci0gICAgICAgIHJldHVybiBtX3N0YXRlOwotICAgIH0KLQotICAgIEFWT3V0cHV0Q29udGV4dCAq
YXZPdXRwdXRDb250ZXh0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
QVZPdXRwdXRDb250ZXh0VHlwZSk7Ci0gICAgICAgIHJldHVybiBtX291dHB1dENvbnRleHQ7Ci0g
ICAgfQotCi0gICAgYm9vbCBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlID09IEFWT3V0cHV0Q29udGV4dFR5cGU7IH0KLSAgICAKLXByaXZhdGU6Ci0g
ICAgVHlwZSBtX3R5cGUgeyBOb25lIH07Ci0gICAgQVZPdXRwdXRDb250ZXh0ICptX291dHB1dENv
bnRleHQgeyBudWxscHRyIH07Ci0gICAgU3RyaW5nIG1fbmFtZTsKLSAgICBTdGF0ZSBtX3N0YXRl
IHsgVW5rbm93biB9OwotfTsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkKLQotI2VuZGlmIC8vIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oCmluZGV4IDZhOGUxOTQ3
NmEzNDdkOGU3NDg0MWZmNjlmYmQ0OGIwOTIyM2M4ODkuLjYxZDFmYWNlMTQ4NmMxMDBjODJmMzgx
Nzk1MTJjOTVjNmIzOTdlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1Rh
cmdldENvY29hLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
TWVkaWFQbGF5YmFja1RhcmdldENvY29hIDogcHVibGljIE1lZGlhUGxheWJhY2tUYXJnZXQgewog
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TWVkaWFQbGF5YmFja1Rhcmdl
dD4gY3JlYXRlKEFWT3V0cHV0Q29udGV4dCAqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IGNyZWF0ZShNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dCYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NfRkFNSUxZ
X1NJTVVMQVRPUikgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIHN0YXRpYyBSZWY8TWVk
aWFQbGF5YmFja1RhcmdldD4gY3JlYXRlKCk7CkBAIC00MywyMSArNDQsMTggQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB+TWVkaWFQbGF5YmFja1RhcmdldENvY29hKCk7CiAKLSAgICBUYXJnZXRU
eXBlIHRhcmdldFR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBBVkZvdW5kYXRpb247IH0KKyAg
ICBUYXJnZXRUeXBlIHRhcmdldFR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBUYXJnZXRUeXBl
OjpBVkZvdW5kYXRpb247IH0KIAogICAgIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
JiB0YXJnZXRDb250ZXh0KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBoYXNBY3RpdmVSb3V0ZSgp
IGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyBkZXZpY2VOYW1lKCkgY29uc3QgZmluYWw7CiAgICAg
Ym9vbCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKSBjb25zdCBmaW5hbDsKIAotICAgIEFW
T3V0cHV0Q29udGV4dCAqb3V0cHV0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fb3V0cHV0Q29u
dGV4dC5nZXQoKTsgfQotCiBwcm90ZWN0ZWQ6Ci0gICAgTWVkaWFQbGF5YmFja1RhcmdldENvY29h
KEFWT3V0cHV0Q29udGV4dCAqKTsKKyAgICBleHBsaWNpdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29j
b2EoQVZPdXRwdXRDb250ZXh0ICopOworICAgIGV4cGxpY2l0IE1lZGlhUGxheWJhY2tUYXJnZXRD
b2NvYShNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmKTsKIAotICAgIFJldGFpblB0cjxBVk91
dHB1dENvbnRleHQ+IG1fb3V0cHV0Q29udGV4dDsKLSAgICBtdXRhYmxlIE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0IG1fY29udGV4dDsKLSAgICBTdHJpbmcgbV9kZXZpY2VOYW1lOworICAgIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IG1fY29udGV4dDsKIH07CiAKIE1lZGlhUGxheWJhY2tU
YXJnZXRDb2NvYSogdG9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoTWVkaWFQbGF5YmFja1Rhcmdl
dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EubW0KaW5k
ZXggZGFjOGNjNDgxNTZjMmM3ZTc0ZWFhYzdiNGRkZTRiYzIxNzc1MTlhYS4uYjM4MmJhN2EwYjAw
YjNmMTUzZDE5MjQzZTAyZWZjN2U5MGRkNjI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVk
aWFQbGF5YmFja1RhcmdldENvY29hLm1tCkBAIC0zNCwxNCArMzQsMjMgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hOjpjcmVhdGUoQVZPdXRwdXRDb250ZXh0ICpjb250ZXh0KQorUmVmPE1lZGlhUGxheWJh
Y2tUYXJnZXQ+IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKEFWT3V0cHV0Q29udGV4
dCAqb3V0cHV0Q29udGV4dCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29jb2EoY29udGV4dCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlh
UGxheWJhY2tUYXJnZXRDb2NvYShvdXRwdXRDb250ZXh0KSk7CiB9CiAKLU1lZGlhUGxheWJhY2tU
YXJnZXRDb2NvYTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hKEFWT3V0cHV0Q29udGV4dCAqY29u
dGV4dCkKLSAgICA6IE1lZGlhUGxheWJhY2tUYXJnZXQoKQotICAgICwgbV9vdXRwdXRDb250ZXh0
KGNvbnRleHQpCitSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gTWVkaWFQbGF5YmFja1RhcmdldENv
Y29hOjpjcmVhdGUoTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmJiBjb250ZXh0KQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShXVEZNb3ZlKGNv
bnRleHQpKSk7Cit9CisKK01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6TWVkaWFQbGF5YmFja1Rh
cmdldENvY29hKEFWT3V0cHV0Q29udGV4dCAqb3V0cHV0Q29udGV4dCkKKyAgICA6IG1fY29udGV4
dChvdXRwdXRDb250ZXh0KQoreworfQorCitNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb2NvYShNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmIGNvbnRleHQp
CisgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKIHsKIH0KIApAQCAtNTUsMjQgKzY0
LDcgQEAgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6
Y3JlYXRlKCkKIAogYm9vbCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OnN1cHBvcnRzUmVtb3Rl
VmlkZW9QbGF5YmFjaygpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX291dHB1dENvbnRleHQpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKHN1cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2VzKV0gfHwgIVtt
X291dHB1dENvbnRleHQgc3VwcG9ydHNNdWx0aXBsZU91dHB1dERldmljZXNdIHx8ICFbbV9vdXRw
dXRDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob3V0cHV0RGV2aWNlcyldKSB7
Ci0gICAgICAgIGlmIChhdXRvICpvdXRwdXREZXZpY2UgPSBbbV9vdXRwdXRDb250ZXh0IG91dHB1
dERldmljZV0pIHsKLSAgICAgICAgICAgIGlmIChvdXRwdXREZXZpY2UuZGV2aWNlRmVhdHVyZXMg
JiBBVk91dHB1dERldmljZUZlYXR1cmVWaWRlbykKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBmb3Ig
KEFWT3V0cHV0RGV2aWNlICpvdXRwdXREZXZpY2UgaW4gW21fb3V0cHV0Q29udGV4dCBvdXRwdXRE
ZXZpY2VzXSkgewotICAgICAgICBpZiAob3V0cHV0RGV2aWNlLmRldmljZUZlYXR1cmVzICYgQVZP
dXRwdXREZXZpY2VGZWF0dXJlVmlkZW8pCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fY29udGV4dC5zdXBwb3J0c1JlbW90
ZVZpZGVvUGxheWJhY2soKTsKIH0KIAogTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjp+TWVkaWFQ
bGF5YmFja1RhcmdldENvY29hKCkKQEAgLTgxLDQ1ICs3MywxNyBAQCBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29jb2E6On5NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoKQogCiBjb25zdCBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dCYgTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjp0YXJnZXRDb250ZXh0
KCkgY29uc3QKIHsKLSAgICBtX2NvbnRleHQgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCht
X291dHB1dENvbnRleHQuZ2V0KCkpOwogICAgIHJldHVybiBtX2NvbnRleHQ7CiB9CiAKIGJvb2wg
TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpoYXNBY3RpdmVSb3V0ZSgpIGNvbnN0CiB7Ci0gICAg
aWYgKCFtX291dHB1dENvbnRleHQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChb
bV9vdXRwdXRDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc3VwcG9ydHNNdWx0
aXBsZU91dHB1dERldmljZXMpXSAmJiBbbV9vdXRwdXRDb250ZXh0IHN1cHBvcnRzTXVsdGlwbGVP
dXRwdXREZXZpY2VzXSAmJiBbbV9vdXRwdXRDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3Iob3V0cHV0RGV2aWNlcyldKSB7Ci0gICAgICAgIGZvciAoQVZPdXRwdXREZXZpY2UgKm91
dHB1dERldmljZSBpbiBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmljZXNdKSB7Ci0gICAgICAg
ICAgICBpZiAob3V0cHV0RGV2aWNlLmRldmljZUZlYXR1cmVzICYgKEFWT3V0cHV0RGV2aWNlRmVh
dHVyZVZpZGVvIHwgQVZPdXRwdXREZXZpY2VGZWF0dXJlQXVkaW8pKQotICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIGlmIChbbV9vdXRwdXRDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
b3V0cHV0RGV2aWNlKV0pIHsKLSAgICAgICAgaWYgKGF1dG8gKm91dHB1dERldmljZSA9IFttX291
dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlXSkKLSAgICAgICAgICAgIHJldHVybiBvdXRwdXREZXZp
Y2UuZGV2aWNlRmVhdHVyZXMgJiAoQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8gfCBBVk91dHB1
dERldmljZUZlYXR1cmVBdWRpbyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1fb3V0cHV0Q29udGV4
dC5nZXQoKS5kZXZpY2VOYW1lOworICAgIHJldHVybiBtX2NvbnRleHQuaGFzQWN0aXZlUm91dGUo
KTsKIH0KIAogU3RyaW5nIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6ZGV2aWNlTmFtZSgpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX291dHB1dENvbnRleHQpCi0gICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOwotCi0gICAgaWYgKCFbbV9vdXRwdXRDb250ZXh0IHN1cHBvcnRzTXVsdGlwbGVPdXRw
dXREZXZpY2VzXSkKLSAgICAgICAgcmV0dXJuIFttX291dHB1dENvbnRleHQgZGV2aWNlTmFtZV07
Ci0KLSAgICBhdXRvIG91dHB1dERldmljZU5hbWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0XSk7Ci0gICAgZm9yIChBVk91dHB1dERldmljZSAqb3V0cHV0RGV2aWNlIGlu
IFttX291dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlc10pCi0gICAgICAgIFtvdXRwdXREZXZpY2VO
YW1lcyBhZGRPYmplY3Q6W291dHB1dERldmljZSBkZXZpY2VOYW1lXV07Ci0KLSAgICByZXR1cm4g
W291dHB1dERldmljZU5hbWVzIGNvbXBvbmVudHNKb2luZWRCeVN0cmluZzpAIiArICJdOworICAg
IHJldHVybiBtX2NvbnRleHQuZGV2aWNlTmFtZSgpOwogfQogCiBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29jb2EqIHRvTWVkaWFQbGF5YmFja1RhcmdldENvY29hKE1lZGlhUGxheWJhY2tUYXJnZXQqIHJl
cCkKQEAgLTEyOSw3ICs5Myw3IEBAIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSogdG9NZWRpYVBs
YXliYWNrVGFyZ2V0Q29jb2EoTWVkaWFQbGF5YmFja1RhcmdldCogcmVwKQogCiBjb25zdCBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29jb2EqIHRvTWVkaWFQbGF5YmFja1RhcmdldENvY29hKGNvbnN0IE1l
ZGlhUGxheWJhY2tUYXJnZXQqIHJlcCkKIHsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihyZXAtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpBVkZvdW5k
YXRpb24pOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ocmVw
LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldDo6VGFyZ2V0VHlwZTo6QVZGb3Vu
ZGF0aW9uKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hKj4ocmVwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggMjBiMjQxMmYx
MTM2NjNjMWYzODYyZjI3YjY2MjQwMGY2Y2RiMDcyYi4uMGFjMDkzZTUwY2EyOTgwYzU5YTMyN2Ey
YzJlODgxZWNkZmIxYmJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0yODI0LDcgKzI4
MjQsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmlzQ3VycmVu
dFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MoKSBjb25zdAogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgaWYgKG1fcGxheWJhY2tUYXJnZXQpIHsKLSAgICAgICAgaWYgKG1fcGxheWJhY2tU
YXJnZXQtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpBVkZvdW5kYXRpb24p
CisgICAgICAgIGlmIChtX3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5
YmFja1RhcmdldDo6VGFyZ2V0VHlwZTo6QVZGb3VuZGF0aW9uKQogICAgICAgICAgICAgd2lyZWxl
c3NUYXJnZXQgPSBtX2F2UGxheWVyICYmIG1fYXZQbGF5ZXIuZ2V0KCkuZXh0ZXJuYWxQbGF5YmFj
a0FjdGl2ZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgd2lyZWxlc3NUYXJnZXQgPSBtX3No
b3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0ICYmIG1fcGxheWJhY2tUYXJnZXQtPmhhc0FjdGl2ZVJv
dXRlKCk7CkBAIC0yOTY4LDcgKzI5NjgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheQogewog
ICAgIG1fcGxheWJhY2tUYXJnZXQgPSBXVEZNb3ZlKHRhcmdldCk7CiAKLSAgICBtX291dHB1dENv
bnRleHQgPSBtX3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1Rh
cmdldDo6QVZGb3VuZGF0aW9uID8gdG9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EobV9wbGF5YmFj
a1RhcmdldC5nZXQoKSktPm91dHB1dENvbnRleHQoKSA6IG51bGxwdHI7CisgICAgbV9vdXRwdXRD
b250ZXh0ID0gbV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJhY2tU
YXJnZXQ6OlRhcmdldFR5cGU6OkFWRm91bmRhdGlvbiA/IHRvTWVkaWFQbGF5YmFja1RhcmdldENv
Y29hKG1fcGxheWJhY2tUYXJnZXQuZ2V0KCkpLT50YXJnZXRDb250ZXh0KCkub3V0cHV0Q29udGV4
dCgpIDogbnVsbHB0cjsKIAogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogCkBAIC0yOTg4
LDcgKzI5ODgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wgc2hvdQogCiAgICAgSU5GT19MT0coTE9H
SURFTlRJRklFUiwgc2hvdWxkUGxheSk7CiAKLSAgICBpZiAobV9wbGF5YmFja1RhcmdldC0+dGFy
Z2V0VHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6OkFWRm91bmRhdGlvbikgeworICAgIGlm
IChtX3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldDo6
VGFyZ2V0VHlwZTo6QVZGb3VuZGF0aW9uKSB7CiAgICAgICAgIEFWT3V0cHV0Q29udGV4dCAqbmV3
Q29udGV4dCA9IHNob3VsZFBsYXkgPyBtX291dHB1dENvbnRleHQuZ2V0KCkgOiBuaWw7CiAKICAg
ICAgICAgaWYgKCFtX2F2UGxheWVyKQpAQCAtMzAwNSw3ICszMDA1LDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rhcmdl
dChib29sIHNob3UKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChtX3BsYXli
YWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldDo6TW9jayk7Cisg
ICAgQVNTRVJUKG1fcGxheWJhY2tUYXJnZXQtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNr
VGFyZ2V0OjpUYXJnZXRUeXBlOjpNb2NrKTsKIAogICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUp
OwogICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDE1YTVlMmQ5MDAxM2FjOWEwN2Iz
MTEyM2I2NmQ4YmNmMTllMGI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaApAQCAtMCww
ICsxLDE0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorT0JKQ19DTEFTUyBBVk91dHB1dENvbnRl
eHQ7CitPQkpDX0NMQVNTIE5TRGF0YTsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IHsKK3B1YmxpYzoKKyAgICBlbnVtIGNs
YXNzIFR5cGUgOiB1aW50OF90IHsKKyAgICAgICAgTm9uZSwKKyAgICAgICAgQVZPdXRwdXRDb250
ZXh0LAorICAgICAgICBTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0LAorICAgICAgICBNb2NrLAor
ICAgIH07CisKKyAgICBlbnVtIGNsYXNzIE1vY2tTdGF0ZSA6IHVpbnQ4X3QgeworICAgICAgICBV
bmtub3duID0gMCwKKyAgICAgICAgT3V0cHV0RGV2aWNlVW5hdmFpbGFibGUgPSAxLAorICAgICAg
ICBPdXRwdXREZXZpY2VBdmFpbGFibGUgPSAyLAorICAgIH07CisKKyAgICBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dCgpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChSZXRhaW5QdHI8QVZPdXRwdXRDb250ZXh0PiYmKTsK
KworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KFJldGFpblB0cjxOU0RhdGE+JiYgc2Vy
aWFsaXplZE91dHB1dENvbnRleHQsIGNvbnN0IFN0cmluZyYgZGV2aWNlTmFtZSwgYm9vbCBoYXNB
Y3RpdmVSb3V0ZSwgYm9vbCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2spCisgICAgICAgIDog
bV90eXBlKFR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQpCisgICAgICAgICwgbV9zZXJp
YWxpemVkT3V0cHV0Q29udGV4dChXVEZNb3ZlKHNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KSkKKyAg
ICAgICAgLCBtX2RldmljZU5hbWUoZGV2aWNlTmFtZSkKKyAgICAgICAgLCBtX2hhc0FjdGl2ZVJv
dXRlKGhhc0FjdGl2ZVJvdXRlKQorICAgICAgICAsIG1fc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXli
YWNrKHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaykKKyAgICB7CisgICAgICAgIEFTU0VSVChz
ZXJpYWxpemVkT3V0cHV0Q29udGV4dCk7CisgICAgfQorCisgICAgTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQoY29uc3QgU3RyaW5nJiBkZXZpY2VOYW1lLCBNb2NrU3RhdGUgc3RhdGUpCisgICAg
ICAgIDogbV90eXBlKFR5cGU6Ok1vY2spCisgICAgICAgICwgbV9kZXZpY2VOYW1lKGRldmljZU5h
bWUpCisgICAgICAgICwgbV9oYXNBY3RpdmVSb3V0ZSghZGV2aWNlTmFtZS5pc0VtcHR5KCkpCisg
ICAgICAgICwgbV9zdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soIWRldmljZU5hbWUuaXNFbXB0
eSgpKQorICAgICAgICAsIG1fbW9ja1N0YXRlKHN0YXRlKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBUeXBlOjpNb2NrKTsKKyAgICB9CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3R5cGU7IH0KKyAgICBjb25zdCBTdHJpbmcmIGRldmljZU5hbWUoKSBjb25zdCB7
IHJldHVybiBtX2RldmljZU5hbWU7IH0KKyAgICBib29sIGhhc0FjdGl2ZVJvdXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNBY3RpdmVSb3V0ZTsgfQorICAgIGJvb2wgc3VwcG9ydHNSZW1vdGVWaWRl
b1BsYXliYWNrKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2s7
IH0KKworICAgIE1vY2tTdGF0ZSBtb2NrU3RhdGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBUeXBlOjpNb2NrKTsKKyAgICAgICAgcmV0dXJuIG1fbW9ja1N0YXRlOwor
ICAgIH0KKworICAgIFJldGFpblB0cjxBVk91dHB1dENvbnRleHQ+IG91dHB1dENvbnRleHQoKSBj
b25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpBVk91dHB1dENvbnRl
eHQpOworICAgICAgICByZXR1cm4gbV9vdXRwdXRDb250ZXh0OworICAgIH0KKworICAgIFJldGFp
blB0cjxOU0RhdGE+IHNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KCkgY29uc3QKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCk7Cisg
ICAgICAgIHJldHVybiBtX3NlcmlhbGl6ZWRPdXRwdXRDb250ZXh0OworICAgIH0KKworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgc2VyaWFsaXplT3V0cHV0Q29udGV4dCgpOworICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgZGVzZXJpYWxpemVPdXRwdXRDb250ZXh0KCk7CisKKyAgICBib29sIGVuY29k
aW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6
QVZPdXRwdXRDb250ZXh0IHx8IG1fdHlwZSA9PSBUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250
ZXh0OyB9CisKK3ByaXZhdGU6CisgICAgVHlwZSBtX3R5cGUgeyBUeXBlOjpOb25lIH07CisgICAg
UmV0YWluUHRyPEFWT3V0cHV0Q29udGV4dD4gbV9vdXRwdXRDb250ZXh0OworICAgIFJldGFpblB0
cjxOU0RhdGE+IG1fc2VyaWFsaXplZE91dHB1dENvbnRleHQ7CisKKyAgICBTdHJpbmcgbV9kZXZp
Y2VOYW1lOworICAgIGJvb2wgbV9oYXNBY3RpdmVSb3V0ZSB7IGZhbHNlIH07CisgICAgYm9vbCBt
X3N1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjayB7IGZhbHNlIH07CisKKyAgICBNb2NrU3RhdGUg
bV9tb2NrU3RhdGUgeyBNb2NrU3RhdGU6OlVua25vd24gfTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU+IHsKKyAgICB1c2lu
ZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6VHlwZSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OlR5cGU6Ok5vbmUsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0LAorICAg
ICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6TW9jaworICAg
ID47Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVt
VmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9j
a1N0YXRlLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9j
a1N0YXRlOjpVbmtub3duLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6TW9ja1N0YXRlOjpPdXRwdXREZXZpY2VVbmF2YWlsYWJsZSwKKyAgICAgICAgV2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6T3V0cHV0RGV2aWNlQXZh
aWxhYmxlCisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDYyYTE1ZmM2YzE3OWNkNDUwYzA0NDUyN2E2OWU1MmYy
MzY3MWU4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lm1tCkBAIC0wLDAgKzEsMTI5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0LmgiCisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPG9iamMvcnVu
dGltZS5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaD4KKyNpbXBv
cnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dChSZXRhaW5QdHI8QVZPdXRwdXRDb250ZXh0PiYmIG91dHB1dENvbnRleHQpCisgICAgOiBt
X291dHB1dENvbnRleHQob3V0cHV0Q29udGV4dCkKK3sKKyAgICBpZiAoIW1fb3V0cHV0Q29udGV4
dCkgeworICAgICAgICBtX3R5cGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6
Tm9uZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fdHlwZSA9IE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQ7CisKKyAgICBpZiAoIVttX291
dHB1dENvbnRleHQgc3VwcG9ydHNNdWx0aXBsZU91dHB1dERldmljZXNdKQorICAgICAgICBtX2Rl
dmljZU5hbWUgPSBbbV9vdXRwdXRDb250ZXh0IGRldmljZU5hbWVdOworICAgIGVsc2UgeworICAg
ICAgICBhdXRvIG91dHB1dERldmljZU5hbWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0XSk7CisgICAgICAgIGZvciAoQVZPdXRwdXREZXZpY2UgKm91dHB1dERldmljZSBp
biBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmljZXNdKQorICAgICAgICAgICAgW291dHB1dERl
dmljZU5hbWVzIGFkZE9iamVjdDpbb3V0cHV0RGV2aWNlIGRldmljZU5hbWVdXTsKKworICAgICAg
ICBtX2RldmljZU5hbWUgPSBbb3V0cHV0RGV2aWNlTmFtZXMgY29tcG9uZW50c0pvaW5lZEJ5U3Ry
aW5nOkAiICsgIl07CisgICAgfQorCisgICAgaWYgKFttX291dHB1dENvbnRleHQgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNlcyldICYmIFtt
X291dHB1dENvbnRleHQgc3VwcG9ydHNNdWx0aXBsZU91dHB1dERldmljZXNdICYmIFttX291dHB1
dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdXRwdXREZXZpY2VzKV0pIHsK
KyAgICAgICAgZm9yIChBVk91dHB1dERldmljZSAqb3V0cHV0RGV2aWNlIGluIFttX291dHB1dENv
bnRleHQgb3V0cHV0RGV2aWNlc10pIHsKKyAgICAgICAgICAgIGlmIChvdXRwdXREZXZpY2UuZGV2
aWNlRmVhdHVyZXMgJiAoQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8gfCBBVk91dHB1dERldmlj
ZUZlYXR1cmVBdWRpbykpCisgICAgICAgICAgICAgICAgbV9oYXNBY3RpdmVSb3V0ZSA9IHRydWU7
CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKFttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihvdXRwdXREZXZpY2UpXSkgeworICAgICAgICBpZiAoYXV0byAqb3V0
cHV0RGV2aWNlID0gW21fb3V0cHV0Q29udGV4dCBvdXRwdXREZXZpY2VdKQorICAgICAgICAgICAg
bV9oYXNBY3RpdmVSb3V0ZSA9IG91dHB1dERldmljZS5kZXZpY2VGZWF0dXJlcyAmIChBVk91dHB1
dERldmljZUZlYXR1cmVWaWRlbyB8IEFWT3V0cHV0RGV2aWNlRmVhdHVyZUF1ZGlvKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgbV9oYXNBY3RpdmVSb3V0ZSA9IG1fb3V0cHV0Q29udGV4dC5nZXQoKS5k
ZXZpY2VOYW1lOworCisgICAgaWYgKCFbbV9vdXRwdXRDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3Ioc3VwcG9ydHNNdWx0aXBsZU91dHB1dERldmljZXMpXSB8fCAhW21fb3V0cHV0
Q29udGV4dCBzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNlc10gfHwgIVttX291dHB1dENvbnRl
eHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdXRwdXREZXZpY2VzKV0pIHsKKyAgICAg
ICAgaWYgKGF1dG8gKm91dHB1dERldmljZSA9IFttX291dHB1dENvbnRleHQgb3V0cHV0RGV2aWNl
XSkgeworICAgICAgICAgICAgaWYgKG91dHB1dERldmljZS5kZXZpY2VGZWF0dXJlcyAmIEFWT3V0
cHV0RGV2aWNlRmVhdHVyZVZpZGVvKQorICAgICAgICAgICAgICAgIG1fc3VwcG9ydHNSZW1vdGVW
aWRlb1BsYXliYWNrID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGZv
ciAoQVZPdXRwdXREZXZpY2UgKm91dHB1dERldmljZSBpbiBbbV9vdXRwdXRDb250ZXh0IG91dHB1
dERldmljZXNdKSB7CisgICAgICAgICAgICBpZiAob3V0cHV0RGV2aWNlLmRldmljZUZlYXR1cmVz
ICYgQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8pCisgICAgICAgICAgICAgICAgbV9zdXBwb3J0
c1JlbW90ZVZpZGVvUGxheWJhY2sgPSB0cnVlOworICAgICAgICB9CisgICAgfQorfQorCitib29s
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpzZXJpYWxpemVPdXRwdXRDb250ZXh0KCkKK3sK
KyAgICBBU1NFUlQobV90eXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpB
Vk91dHB1dENvbnRleHQpOworICAgIGlmIChtX3R5cGUgIT0gTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgYXV0byBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRS
ZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTXSk7CisgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpt
X291dHB1dENvbnRleHQuZ2V0KCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07
CisgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsKKworICAgIG1fc2VyaWFsaXplZE91dHB1
dENvbnRleHQgPSBbYXJjaGl2ZXIgZW5jb2RlZERhdGFdOworICAgIG1fdHlwZSA9IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0OworICAg
IG1fb3V0cHV0Q29udGV4dC5jbGVhcigpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OmRlc2VyaWFsaXplT3V0cHV0Q29udGV4dCgpCit7
CisgICAgQVNTRVJUKG1fdHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6
U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCk7CisgICAgaWYgKG1fdHlwZSAhPSBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CisgICAgYXV0byB1
bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVh
ZGluZ0Zyb21EYXRhOm1fc2VyaWFsaXplZE91dHB1dENvbnRleHQuZ2V0KCkgZXJyb3I6bnVsbHB0
cl0pOworICAgIHVuYXJjaGl2ZXIuZ2V0KCkuZGVjb2RpbmdGYWlsdXJlUG9saWN5ID0gTlNEZWNv
ZGluZ0ZhaWx1cmVQb2xpY3lSYWlzZUV4Y2VwdGlvbjsKKyAgICBhdXRvIGFsbG93ZWRDbGFzc1Nl
dCA9IGFkb3B0TlMoW1tOU1NldCBhbGxvY10gaW5pdFdpdGhBcnJheTpAWyBQQUw6OmdldEFWT3V0
cHV0Q29udGV4dENsYXNzKCkgXV0pOworCisgICAgQHRyeSB7CisgICAgICAgIGlkIHJlc3VsdCA9
IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3NlczphbGxvd2VkQ2xhc3NTZXQuZ2V0KCkg
Zm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CisgICAgICAgIEFTU0VSVCghcmVz
dWx0IHx8IFtyZXN1bHQgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGlu
ZyldKTsKKyAgICAgICAgbV9vdXRwdXRDb250ZXh0ID0gcmVzdWx0OworICAgICAgICBtX3R5cGUg
PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0OworICAg
ICAgICBtX3NlcmlhbGl6ZWRPdXRwdXRDb250ZXh0LmNsZWFyKCk7CisgICAgICAgIHN1Y2Nlc3Mg
PSB0cnVlOworICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CisgICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBvYmplY3Qgb2YgY2xhc3MgQVZPdXRwdXRDb250
ZXh0IDogJUAiLCBleGNlcHRpb24pOworICAgIH0gQGZpbmFsbHkgeworICAgICAgICBbdW5hcmNo
aXZlciBmaW5pc2hEZWNvZGluZ107CisgICAgICAgIHVuYXJjaGl2ZXIuZ2V0KCkuZGVsZWdhdGUg
PSBuaWw7CisgICAgfQorCisgICAgcmV0dXJuIHN1Y2Nlc3M7Cit9CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJn
ZXRNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1Rh
cmdldE1vY2suY3BwCmluZGV4IDQ1NWNlZmM5ZjZmMGRmNDE5Njc3OGY3NTE5ZmI4YmI3MWY1NWQ1
MjEuLjA0MGYzZWUwZmY3NjVmMzk2YWE4ZmQ3NjJiNWI5NDQ1ZWY0ODY4ZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1v
Y2suY3BwCkBAIC0zMCwxNSArMzAsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8
TWVkaWFQbGF5YmFja1RhcmdldD4gTWVkaWFQbGF5YmFja1RhcmdldE1vY2s6OmNyZWF0ZShjb25z
dCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkK
K1JlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6Y3JlYXRl
KGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0
ZSBzdGF0ZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVBsYXliYWNrVGFyZ2V0
TW9jayhuYW1lLCBzdGF0ZSkpOwogfQogCi1NZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6TWVkaWFQ
bGF5YmFja1RhcmdldE1vY2soY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6U3RhdGUgc3RhdGUpCi0gICAgOiBNZWRpYVBsYXliYWNrVGFyZ2V0KCkKLSAgICAs
IG1fbmFtZShuYW1lKQotICAgICwgbV9zdGF0ZShzdGF0ZSkKK01lZGlhUGxheWJhY2tUYXJnZXRN
b2NrOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCisgICAgOiBtX2NvbnRleHQobmFt
ZSwgc3RhdGUpCiB7CiB9CiAKQEAgLTQ2LDcgKzQ0LDYgQEAgTWVkaWFQbGF5YmFja1RhcmdldE1v
Y2s6On5NZWRpYVBsYXliYWNrVGFyZ2V0TW9jaygpID0gZGVmYXVsdDsKIAogY29uc3QgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQmIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjp0YXJnZXRDb250
ZXh0KCkgY29uc3QKIHsKLSAgICBtX2NvbnRleHQgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dChtX25hbWUsIG1fc3RhdGUpOwogICAgIHJldHVybiBtX2NvbnRleHQ7CiB9CiAKQEAgLTU3LDcg
KzU0LDcgQEAgTWVkaWFQbGF5YmFja1RhcmdldE1vY2sqIHRvTWVkaWFQbGF5YmFja1RhcmdldE1v
Y2soTWVkaWFQbGF5YmFja1RhcmdldCogcmVwKQogCiBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0
TW9jayogdG9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0
KiByZXApCiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ocmVwLT50YXJn
ZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldDo6TW9jayk7CisgICAgUkVMRUFTRV9BU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihyZXAtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBs
YXliYWNrVGFyZ2V0OjpUYXJnZXRUeXBlOjpNb2NrKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgTWVkaWFQbGF5YmFja1RhcmdldE1vY2sqPihyZXApOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmgKaW5k
ZXggY2Q0NDliMDNjMTEzMTA2NjUyOTRjYjg5MjRkZjBlNGVlYWExM2Y0Yy4uMDcyYzhkZDA0ODRl
MzUxNmI1MmZmMDI5MDA0YzFmMDRlNTMwNWE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaApAQCAtMzYsMjYgKzM2
LDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldE1v
Y2sgOiBwdWJsaWMgTWVkaWFQbGF5YmFja1RhcmdldCB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBjcmVhdGUoY29uc3QgU3RyaW5n
JiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmLCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKTsKIAogICAgIHZpcnR1YWwgfk1l
ZGlhUGxheWJhY2tUYXJnZXRNb2NrKCk7CiAKLSAgICBUYXJnZXRUeXBlIHRhcmdldFR5cGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBNb2NrOyB9CisgICAgVGFyZ2V0VHlwZSB0YXJnZXRUeXBlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFQbGF5YmFja1RhcmdldDo6VGFyZ2V0VHlwZTo6TW9j
azsgfQogCiAgICAgY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldENvbnRl
eHQoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGhhc0FjdGl2ZVJvdXRlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9jb250ZXh0Lmhhc0FjdGl2ZVJvdXRlKCk7IH0KKyAgICBTdHJpbmcgZGV2aWNl
TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29udGV4dC5kZXZpY2VOYW1lKCk7IH0KKyAg
ICBib29sIHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fY29udGV4dC5zdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKTsgfQogCi0gICAgYm9vbCBo
YXNBY3RpdmVSb3V0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX25hbWUuaXNFbXB0eSgpOyB9
Ci0gICAgYm9vbCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAhbV9uYW1lLmlzRW1wdHkoKTsgfQotCi0gICAgU3RyaW5nIGRldmljZU5hbWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX25hbWU7IH0KLQotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpTdGF0ZSBzdGF0ZSgpIGNvbnN0OworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpNb2NrU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQubW9ja1N0YXRlKCk7
IH0KIAogcHJvdGVjdGVkOgotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKGNvbnN0IFN0cmlu
ZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgTWVkaWFQbGF5YmFj
a1RhcmdldE1vY2soY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1v
Y2tTdGF0ZSk7CiAKLSAgICBTdHJpbmcgbV9uYW1lOwotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpTdGF0ZSBtX3N0YXRlIHsgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlVua25v
d24gfTsKICAgICBtdXRhYmxlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IG1fY29udGV4dDsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlck1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5jcHAKaW5kZXggNDRmNDE0N2ExOTE4MDc1NDcy
ZWRjM2ExMjE4OTkyN2Q3ZTkyNWVmMS4uM2IwY2E2YTc4MzcyM2Y4Zjk4ZDIyNjBhYWI2YWI1YTU2
MWVlMWM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5jcHAKQEAgLTUyLDcgKzUyLDcgQEAg
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6On5NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
TW9jaygpCiBib29sIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpleHRlcm5hbE91dHB1
dERldmljZUF2YWlsYWJsZSgpCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlck1vY2s6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlIik7Ci0gICAgcmV0dXJu
IG1fc3RhdGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok91dHB1dERldmljZUF2YWls
YWJsZTsKKyAgICByZXR1cm4gbV9zdGF0ZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
TW9ja1N0YXRlOjpPdXRwdXREZXZpY2VBdmFpbGFibGU7CiB9CiAKIFJlZjxNZWRpYVBsYXliYWNr
VGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6cGxheWJhY2tUYXJnZXQoKQpA
QCAtODUsMTAgKzg1LDEwIEBAIHZvaWQgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnN0
YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpCiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0
cyIpOwogCiAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3RoaXNdIHsKLSAgICAgICAgaWYg
KG1fc3RhdGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok91dHB1dERldmljZUF2YWls
YWJsZSkKKyAgICAgICAgaWYgKG1fc3RhdGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
Ok1vY2tTdGF0ZTo6T3V0cHV0RGV2aWNlQXZhaWxhYmxlKQogICAgICAgICAgICAgYXZhaWxhYmxl
RGV2aWNlc0RpZENoYW5nZSgpOwogCi0gICAgICAgIGlmICghbV9kZXZpY2VOYW1lLmlzRW1wdHko
KSAmJiBtX3N0YXRlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpVbmtub3duKQorICAg
ICAgICBpZiAoIW1fZGV2aWNlTmFtZS5pc0VtcHR5KCkgJiYgbV9zdGF0ZSAhPSBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpVbmtub3duKQogICAgICAgICAgICAgY3VycmVu
dERldmljZURpZENoYW5nZSgpOwogICAgIH0pOwogfQpAQCAtMTAxLDE1ICsxMDEsMTUgQEAgdm9p
ZCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6c3RvcE1vbml0b3JpbmdQbGF5YmFja1Rh
cmdldHMoKQogdm9pZCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6aW52YWxpZGF0ZVBs
YXliYWNrVGFyZ2V0cygpCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlck1vY2s6OmludmFsaWRhdGVQbGF5YmFja1RhcmdldHMiKTsKLSAgICBzZXRTdGF0ZShlbXB0
eVN0cmluZygpLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VW5rbm93bik7CisgICAgc2V0
U3RhdGUoZW1wdHlTdHJpbmcoKSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0
ZTo6VW5rbm93bik7CiB9CiAKLXZvaWQgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnNl
dFN0YXRlKGNvbnN0IFN0cmluZyYgZGV2aWNlTmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6OlN0YXRlIHN0YXRlKQordm9pZCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6c2V0
U3RhdGUoY29uc3QgU3RyaW5nJiBkZXZpY2VOYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6TW9ja1N0YXRlIHN0YXRlKQogewogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJNb2NrOjpzZXRTdGF0ZSAtIG5hbWUgPSAlcywgc3RhdGUgPSAweCV4IiwgZGV2aWNl
TmFtZS51dGY4KCkuZGF0YSgpLCAodW5zaWduZWQpc3RhdGUpOwogCiAgICAgbV90YXNrUXVldWUu
ZW5xdWV1ZVRhc2soW3RoaXMsIHN0YXRlLCBkZXZpY2VOYW1lXSB7Ci0gICAgICAgIGlmIChkZXZp
Y2VOYW1lICE9IG1fZGV2aWNlTmFtZSAmJiBzdGF0ZSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6VW5rbm93bikgeworICAgICAgICBpZiAoZGV2aWNlTmFtZSAhPSBtX2RldmljZU5hbWUg
JiYgc3RhdGUgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93
bikgewogICAgICAgICAgICAgbV9kZXZpY2VOYW1lID0gZGV2aWNlTmFtZTsKICAgICAgICAgICAg
IGN1cnJlbnREZXZpY2VEaWRDaGFuZ2UoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9j
ay5oCmluZGV4IGRlMDk2Y2I4ODFmODI0MjExMTY1OGI4ZDIxODM5ZjljODg1ZDRiY2UuLjNlNzQz
OTViZjE2YjhlN2M4Y2U5Zjk3MjBlNzU5NGU0ZjJjODdlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJN
b2NrLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcE1vbml0b3JpbmdQ
bGF5YmFja1RhcmdldHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGludmFsaWRhdGVQbGF5YmFja1Rh
cmdldHMoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgc2V0U3RhdGUoY29uc3QgU3RyaW5nJiwgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKTsKKyAgICB2b2lkIHNldFN0YXRlKGNvbnN0
IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpOwogICAgIHZv
aWQgZGlzbWlzc1BvcHVwKCk7CiAKIHByaXZhdGU6CkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6
CiAKICAgICBTdHJpbmcgbV9kZXZpY2VOYW1lOwogICAgIEdlbmVyaWNUYXNrUXVldWU8VGltZXI+
IG1fdGFza1F1ZXVlOwotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBtX3N0
YXRlIHsgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlVua25vd24gfTsKKyAgICBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIG1fc3RhdGUgeyBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6TW9ja1N0YXRlOjpVbmtub3duIH07CiAgICAgYm9vbCBtX3Nob3dpbmdNZW51
IHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAz
NDQ5MmJhZjgxMTRjOTQ2ZDYzMDFhMGY2MDA2ZDVkZjE5MzQ2Y2EzLi5jMzgwMTE2OTRiYWZhY2M4
YTFmNjdmZjA4NWFmZTQ0YWJiYmMyYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50
U3RhdGUoUGFnZSYgcGFnZSkKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
CiAgICAgcGFnZS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQodHJ1ZSk7
Ci0gICAgcGFnZS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGVtcHR5U3Ry
aW5nKCksIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpVbmtub3duKTsKKyAgICBwYWdlLnNl
dE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoZW1wdHlTdHJpbmcoKSwgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93bik7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShWSURFTykKQEAgLTQ1MTAsMTQgKzQ1MTAsMTQgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
SW50ZXJuYWxzOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0
cmluZyYKICAgICBQYWdlKiBwYWdlID0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPnBhZ2Uo
KTsKICAgICBBU1NFUlQocGFnZSk7CiAKLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
U3RhdGUgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VW5rbm93bjsKKyAgICBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlID0gTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93bjsKIAogICAgIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShkZXZpY2VTdGF0ZSwgImRldmljZWF2YWlsYWJsZSIpKQotICAg
ICAgICBzdGF0ZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpPdXRwdXREZXZpY2VBdmFp
bGFibGU7CisgICAgICAgIHN0YXRlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tT
dGF0ZTo6T3V0cHV0RGV2aWNlQXZhaWxhYmxlOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGRldmljZVN0YXRlLCAiZGV2aWNldW5hdmFpbGFibGUiKSkKLSAgICAg
ICAgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6T3V0cHV0RGV2aWNlVW5hdmFp
bGFibGU7CisgICAgICAgIHN0YXRlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tT
dGF0ZTo6T3V0cHV0RGV2aWNlVW5hdmFpbGFibGU7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UoZGV2aWNlU3RhdGUsICJ1bmtub3duIikpCi0gICAgICAgIHN0YXRl
ID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlVua25vd247CisgICAgICAgIHN0YXRlID0g
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93bjsKICAgICBlbHNl
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHkuY3BwCmluZGV4IGJkMTkxZTU3MWQ3MWYyMTA3ZGZmZWM1ZGZiMjRiMGQ0NDZkY2Nl
NjcuLjE4OGZiMGMzMTNmZmFmMGMyNWVjY2RhNzQ2ZDY3YzFhYzJhN2Y3ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpCiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oPgogI2VuZGlmCiAKQEAgLTY5Nywy
MCArNjk4LDIxIEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQoYm9vbCBzaG91bGRQbGF5KQogICAgIG1fcGxheWVyLT5zZXRTaG91bGRQ
bGF5VG9QbGF5YmFja1RhcmdldChzaG91bGRQbGF5KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBs
YXllclByb3h5OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXRDb250ZXh0KQordm9pZCBSZW1vdGVNZWRpYVBs
YXllclByb3h5OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0JiYgdGFyZ2V0Q29udGV4dCkKIHsKICAgICBzd2l0Y2ggKHRhcmdldENvbnRleHQudHlw
ZSgpKSB7Ci0gICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6QVZPdXRwdXRDb250
ZXh0VHlwZToKLSAgICAgICAgbV9wbGF5ZXItPnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUodGFyZ2V0Q29udGV4dC5hdk91
dHB1dENvbnRleHQoKSkpOworICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5
cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQ6IHsKKyAgICAgICAgaWYgKHRhcmdldENvbnRl
eHQuZGVzZXJpYWxpemVPdXRwdXRDb250ZXh0KCkpCisgICAgICAgICAgICBtX3BsYXllci0+c2V0
V2lyZWxlc3NQbGF5YmFja1RhcmdldChNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZShX
VEZNb3ZlKHRhcmdldENvbnRleHQpKSk7CiAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrOgogI2lmIFBMQVRGT1JNKE1B
QykKLSAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrVHlwZToKLSAgICAg
ICAgbV9wbGF5ZXItPnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoV2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldE1vY2s6OmNyZWF0ZSh0YXJnZXRDb250ZXh0Lm1vY2tEZXZpY2VOYW1lKCksIHRh
cmdldENvbnRleHQubW9ja1N0YXRlKCkpKTsKKyAgICAgICAgbV9wbGF5ZXItPnNldFdpcmVsZXNz
UGxheWJhY2tUYXJnZXQoTWVkaWFQbGF5YmFja1RhcmdldE1vY2s6OmNyZWF0ZSh0YXJnZXRDb250
ZXh0LmRldmljZU5hbWUoKSwgdGFyZ2V0Q29udGV4dC5tb2NrU3RhdGUoKSkpOwogICAgICAgICBi
cmVhazsKLSNlbHNlCi0gICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1R5
cGU6CiAjZW5kaWYKLSAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpOb25lOgor
ICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4
dDoKKyAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpOb25lOgogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclBy
b3h5LmgKaW5kZXggMjRiNjY0MWFlNGY1ZjFlN2RmYzEwNTM3NDEzZjBlOWNmZDI1ZTIzZi4uYmRh
ZWU4YWUwNWYxMGZhNDY1NzMzNDNmNDc5YzQyOTNkNDdkZjZjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBA
IC0xNTIsNyArMTUyLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpCiAgICAgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sKTsK
ICAgICB2b2lkIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpOwotICAgIHZvaWQg
c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dCYpOworICAgIHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmKTsKICAgICB2b2lkIG1lZGlhUGxheWVyQ3Vy
cmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoYm9vbCkgZmluYWw7CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcAppbmRleCA5ZTZiYzk0NjZi
NTM5OWIyNGY1ODQwMDliOTAwYmQwN2QwMDgyMTE2Li5iZWQzMGUyOWNlNGI5YzVmNmFmNDAxYWMx
Y2M4ZjI2ZmEyYzQ2MWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNw
cApAQCAtMTA4LDcgKzEwOCwxMSBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5
OjphY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKFNob3VsZFBhdXNlIHNob3VsZAogCiB2b2lkIFJl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFN1
cHBvcnRzQWlyUGxheVZpZGVvIHN1cHBvcnRzQWlyUGxheVZpZGVvLCBSZWY8V2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldD4mJiB0YXJnZXQpCiB7Ci0gICAgbV9ncHVDb25uZWN0aW9uLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OkFjdGl2ZVZp
ZGVvUm91dGVEaWRDaGFuZ2Uoc3VwcG9ydHNBaXJQbGF5VmlkZW8sIHRhcmdldC0+dGFyZ2V0Q29u
dGV4dCgpKSwgeyB9KTsKKyAgICBhdXRvIGNvbnRleHQgPSB0YXJnZXQtPnRhcmdldENvbnRleHQo
KTsKKyAgICBpZiAoIWNvbnRleHQuc2VyaWFsaXplT3V0cHV0Q29udGV4dCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2dwdUNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6QWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShzdXBw
b3J0c0FpclBsYXlWaWRlbywgY29udGV4dCksIHsgfSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0K
aW5kZXggYmY4OGFiNjE3YmUxMjFiNGFmN2JjNGNkM2M0ZmMxOTdkZGE1OTc4Mi4uMjk4ZDg1ZDJh
MDY0Y2E0YWFjZTlhZWUzYmRkNDU5ODM4YzcwYjZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTQx
LDE0ICs0MSwyMyBAQAogI2ltcG9ydCA8VUlLaXQvVUlGb250Lmg+CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisjaW1wb3J0IDxXZWJDb3JlL01lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0Lmg+CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNlbmRpZgor
CisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2FBZGRpdGlvbnMubW0+CisjZW5kaWYKKwogI2lmIEVO
QUJMRShBUFBMRV9QQVkpCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0IDxXZWJD
b3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLmg+CiAjaW1wb3J0IDxwYWwvY29jb2EvUGFz
c0tpdFNvZnRMaW5rLmg+CiAjZW5kaWYKIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0j
aW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hQWRkaXRp
b25zLm1tPgorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisjaW1wb3J0IDxw
YWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgSVBD
IHsKQEAgLTYwNiw0ICs2MTUsNDUgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGUKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCit2b2lk
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjplbmNv
ZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQmIHRhcmdldCkKK3sKKyAgICBpZiAodGFyZ2V0LnR5cGUoKSA9PSBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0KSB7CisgICAgICAgIGlmIChb
UEFMOjpnZXRBVk91dHB1dENvbnRleHRDbGFzcygpIGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9j
b2woTlNTZWN1cmVDb2RpbmcpXSkKKyAgICAgICAgICAgIGVuY29kZXIgPDwgdGFyZ2V0Lm91dHB1
dENvbnRleHQoKTsKKyAgICB9IGVsc2UgaWYgKHRhcmdldC50eXBlKCkgPT0gTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQpCisgICAgICAg
IGVuY29kZXIgPDwgdGFyZ2V0LnNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KCk7CisgICAgZWxzZQor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworYm9vbCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERl
Y29kZXImIGRlY29kZXIsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlIGNvbnRleHRU
eXBlLCBjb25zdCBTdHJpbmcmIGRldmljZU5hbWUsIGJvb2wgaGFzQWN0aXZlUm91dGUsIGJvb2wg
c3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYg
dGFyZ2V0KQoreworICAgIEFTU0VSVChjb250ZXh0VHlwZSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6VHlwZTo6TW9jayk7CisKKyAgICBpZiAoY29udGV4dFR5cGUgPT0gTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCkgeworICAgICAgICBpZiAo
IVtQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90
b2NvbChOU1NlY3VyZUNvZGluZyldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgIGF1dG8gb3V0cHV0Q29udGV4dCA9IElQQzo6ZGVjb2RlPEFWT3V0cHV0Q29udGV4dD4oZGVj
b2RlciwgUEFMOjpnZXRBVk91dHB1dENvbnRleHRDbGFzcygpKTsKKyAgICAgICAgaWYgKCFvdXRw
dXRDb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHRhcmdldCA9
IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IHsgV1RGTW92ZSgqb3V0cHV0Q29u
dGV4dCkgfTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGNvbnRleHRU
eXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRw
dXRDb250ZXh0KSB7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IHNlcmlhbGl6ZWRPdXRwdXRD
b250ZXh0OworICAgICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIHNlcmlhbGl6ZWRPdXRw
dXRDb250ZXh0KSB8fCAhc2VyaWFsaXplZE91dHB1dENvbnRleHQpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgdGFyZ2V0ID0gV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQgeyBXVEZNb3ZlKHNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KSwgZGV2aWNlTmFtZSwg
aGFzQWN0aXZlUm91dGUsIHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjayB9OworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogfSAv
LyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcAppbmRleCAyNTVhMmNiYzZjNzdjZWYxZTYwNzBlYTQyMGY2YmRlOTBiMjQwYTcx
Li45NWI5NDllNWIxYWVhNGNiNzgxZGQ3Yzg4ZjYyOTUyMDYxYTQxZjBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTI0NTcsMTcgKzI0
NTcsMjAgQEAgdm9pZCBBcmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE0KICAgICBib29sIGhhc1BsYXRmb3JtRGF0
YSA9IHRhcmdldC5lbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKCk7CiAgICAgZW5jb2RlciA8
PCBoYXNQbGF0Zm9ybURhdGE7CiAKLSAgICBpbnQzMl90IHRhcmdldFR5cGUgPSB0YXJnZXQudHlw
ZSgpOwotICAgIGVuY29kZXIgPDwgdGFyZ2V0VHlwZTsKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6VHlwZSBjb250ZXh0VHlwZSA9IHRhcmdldC50eXBlKCk7CisgICAgZW5jb2RlciA8
PCBjb250ZXh0VHlwZTsKKworICAgIGVuY29kZXIgPDwgdGFyZ2V0LmRldmljZU5hbWUoKTsKKyAg
ICBlbmNvZGVyIDw8IHRhcmdldC5oYXNBY3RpdmVSb3V0ZSgpOworICAgIGVuY29kZXIgPDwgdGFy
Z2V0LnN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygpOwogCiAgICAgaWYgKHRhcmdldC5lbmNv
ZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkpIHsKICAgICAgICAgZW5jb2RlUGxhdGZvcm1EYXRh
KGVuY29kZXIsIHRhcmdldCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQo
dGFyZ2V0VHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1R5cGUpOwotICAg
IGVuY29kZXIgPDwgdGFyZ2V0Lm1vY2tEZXZpY2VOYW1lKCk7Ci0gICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDxpbnQzMl90Pih0YXJnZXQubW9ja1N0YXRlKCkpOworICAgIEFTU0VSVChjb250ZXh0
VHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6TW9jayk7CisgICAgZW5j
b2RlciA8PCBzdGF0aWNfY2FzdDx1aW50OF90Pih0YXJnZXQubW9ja1N0YXRlKCkpOwogfQogCiBi
b29sIEFyZ3VtZW50Q29kZXI8TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldCkKQEAgLTI0
NzYsMjQgKzI0NzksMzEgQEAgYm9vbCBBcmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE1lZGlhUGwKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGhhc1BsYXRmb3JtRGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGludDMyX3QgdGFyZ2V0VHlwZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRhcmdldFR5cGUp
KQorICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlIGNvbnRleHRUeXBlOworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoY29udGV4dFR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBpZiAoaGFzUGxhdGZvcm1EYXRhKQotICAgICAgICByZXR1cm4gZGVjb2RlUGxhdGZv
cm1EYXRhKGRlY29kZXIsIHRhcmdldCk7CisgICAgU3RyaW5nIGRldmljZU5hbWU7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShkZXZpY2VOYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgQVNTRVJUKHRhcmdldFR5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tU
eXBlKTsKKyAgICBib29sIGhhc0FjdGl2ZVJvdXRlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aGFzQWN0aXZlUm91dGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTdHJpbmcgbW9j
a0RldmljZU5hbWU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShtb2NrRGV2aWNlTmFtZSkpCisg
ICAgYm9vbCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2s7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2spKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBpbnQzMl90IG1vY2tTdGF0ZTsKKyAgICBpZiAoaGFzUGxhdGZvcm1EYXRhKQorICAg
ICAgICByZXR1cm4gZGVjb2RlUGxhdGZvcm1EYXRhKGRlY29kZXIsIGNvbnRleHRUeXBlLCBkZXZp
Y2VOYW1lLCBoYXNBY3RpdmVSb3V0ZSwgc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrLCB0YXJn
ZXQpOworCisgICAgQVNTRVJUKGNvbnRleHRUeXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpUeXBlOjpNb2NrKTsKKyAgICB1aW50OF90IG1vY2tTdGF0ZTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKG1vY2tTdGF0ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHRhcmdl
dCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KG1vY2tEZXZpY2VOYW1lLCBzdGF0aWNfY2Fz
dDxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGU+KG1vY2tTdGF0ZSkpOworICAgIHRh
cmdldCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KGRldmljZU5hbWUsIHN0YXRpY19jYXN0
PE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU+KG1vY2tTdGF0ZSkpOwogICAg
IHJldHVybiB0cnVlOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCmluZGV4IDYxOTcwODc4MjUxMTU0OGI2MmYyNzE1NmJkM2Y0N2Q3MWEz
MWVhYzIuLjMxMDcxODVhZmM3YmI1YjRkZjVjYzJhODFjNmQxZTJiZjAzMzFkOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZURhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lu
ZGV4ZWREQi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2RlLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVk
aWFTZWxlY3Rpb25PcHRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05hdGl2ZUltYWdlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4KQEAgLTE5NSwxMCArMTk2LDYg
QEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50OwogY2xhc3MgQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQotY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ7Ci0jZW5kaWYKLQogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiBzdHJ1Y3QgTWVkaWFDb25zdHJhaW50czsKICNlbmRpZgpAQCAtNjQ0
LDcgKzY0MSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Jik7CiAgICAgc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQmKTsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGVQbGF0Zm9y
bURhdGEoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
Jik7Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVBsYXRmb3JtRGF0
YShEZWNvZGVyJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmKTsKKyAgICBz
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXIm
LCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZSwgY29uc3QgU3RyaW5n
JiBkZXZpY2VOYW1lLCBib29sIGhhc0FjdGl2ZVJvdXRlLCBib29sIHN1cHBvcnRzUmVtb3RlVmlk
ZW9QbGF5YmFjaywgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmKTsKIH07CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1
bWVudENvZGVyc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1l
bnRDb2RlcnNNYWMubW0KaW5kZXggMTg2YjdiYjJkYjZmYzRlMmJjMTMzZjcxNzVjY2Y5YzM3NjM4
OTIzMC4uOTI1ZjVhNGQ1YTQ4OGQ0ODg0MDRlYzYyOTUyZDhhMjQ5YTNmMDAxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1t
CkBAIC00MiwxMiArNDIsNiBAQAogI2ltcG9ydCA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNpbXBv
cnQgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKLSNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4K
LSNpbXBvcnQgPG9iamMvcnVudGltZS5oPgotI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlv
blNvZnRMaW5rLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIElQQyB7CiAKIHZvaWQgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8pCkBAIC00MDMs
MjkgKzM5Nyw2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXI+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlCiAKICNlbmRpZgogCi0jaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLQotdm9pZCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0
YXJnZXQpCi17Ci0gICAgaWYgKFtQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgY29uZm9y
bXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQotICAgICAgICBlbmNvZGVy
IDw8IHRhcmdldC5hdk91dHB1dENvbnRleHQoKTsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERl
Y29kZXImIGRlY29kZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJn
ZXQpCi17Ci0gICAgaWYgKCFbUEFMOjpnZXRBVk91dHB1dENvbnRleHRDbGFzcygpIGNvbmZvcm1z
VG9Qcm90b2NvbDpAcHJvdG9jb2woTlNTZWN1cmVDb2RpbmcpXSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgYXV0byBjb250ZXh0ID0gSVBDOjpkZWNvZGU8QVZPdXRwdXRDb250ZXh0Pihk
ZWNvZGVyLCBQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkpOwotICAgIGlmICghY29udGV4
dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgdGFyZ2V0ID0gV2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQgeyBjb250ZXh0LT5nZXQoKSB9OwotICAgIHJldHVybiB0cnVl
OwotfQotCi0jZW5kaWYKLQogI2lmIEVOQUJMRShWSURFTykKIHZvaWQgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+OjplbmNvZGVQbGF0Zm9ybURh
dGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0
YUN1ZVZhbHVlJiB2YWx1ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IGEyZjM5Yzk1ZTNiYzRkODIwNTFiYWNkMzcxMzgwMzA3M2M0MzM3OTIuLmY3OWVl
OTNkMmQwZGNlNTU1MjI5NzI1YTJkM2E4NjQyNjkyNjIxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzgzMiwxNCArNzgzMiw2IEBAIHN0YXRpYyBjb25z
dCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgbWVkaWFSZWxhdGVkSU9LaXRDbGFzc2VzKCkKICAgICB9
KTsKICAgICByZXR1cm4gc2VydmljZXM7CiB9Ci0KLXN0YXRpYyBjb25zdCBWZWN0b3I8QVNDSUlM
aXRlcmFsPiYgdGVtcG9yYXJ5TWFjaFNlcnZpY2VzKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgYXV0
byBzZXJ2aWNlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8QVNDSUlMaXRlcmFsPiB7Ci0g
ICAgICAgICJjb20uYXBwbGUuY29yZW1lZGlhLnJvdXRpbmdjb250ZXh0LnhwYyJfcyAvLyBSZW1v
dmUgYWZ0ZXIgPHJkYXI6Ly83NjQwMzMwMj4gaXMgZml4ZWQuCi0gICAgfSk7Ci0gICAgcmV0dXJu
IHNlcnZpY2VzOwotfQogI2VuZGlmCiAKIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFn
ZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBEcmF3
aW5nQXJlYVByb3h5JiBkcmF3aW5nQXJlYSwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYm
IHdlYnNpdGVQb2xpY2llcykKQEAgLTc5MzUsOSArNzkyNyw2IEBAIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5
JiBwcm9jCiAgICAgICAgIC8vIEZJWE1FKDIwNzcxNik6IFRoZSBmb2xsb3dpbmcgc2hvdWxkIGJl
IHJlbW92ZWQgd2hlbiB0aGUgR1BVIHByb2Nlc3MgaXMgY29tcGxldGUuCiAgICAgICAgIHBhcmFt
ZXRlcnMubWVkaWFFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlc0Zvck1hY2hMb29rdXAobWVkaWFSZWxhdGVkTWFjaFNlcnZpY2VzKCksIFdURjo6bnVsbG9w
dCk7CiAgICAgICAgIHBhcmFtZXRlcnMubWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMobWVkaWFS
ZWxhdGVkSU9LaXRDbGFzc2VzKCksIFdURjo6bnVsbG9wdCk7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgLy8gRklYTUUoMjI0MzI3KTogUmVtb3ZlIHRoaXMgZWxzZSBjbGF1c2Ugb25jZSA8cmRhcjov
Lzc2NDAzMzAyPiBpcyBmaXhlZC4KLSAgICAgICAgcGFyYW1ldGVycy5tZWRpYUV4dGVuc2lvbkhh
bmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCh0ZW1w
b3JhcnlNYWNoU2VydmljZXMoKSwgV1RGOjpudWxsb3B0KTsKICAgICB9CiAKICAgICBpZiAoIXBy
ZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0Zvck1lZGlhRW5hYmxlZCgpCkBAIC05NDAzLDcgKzkz
OTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBwYWdlQ2xpZW50KCkubWVkaWFTZXNzaW9uTWFu
YWdlcigpLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChlbmFibGVkKTsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
U3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6U3RhdGUgc3RhdGUpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCiB7CiAgICAgcGFnZUNsaWVudCgp
Lm1lZGlhU2Vzc2lvbk1hbmFnZXIoKS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0
YXRlKG5hbWUsIHN0YXRlKTsKIH0KQEAgLTk0MTgsNyArOTQwNywxMiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0UGxheWJhY2tUYXJnZXQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRp
ZmllciBjb250ZQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRTZWxlY3RlZChj
b250ZXh0SWQsIHRhcmdldC0+dGFyZ2V0Q29udGV4dCgpKSk7CisgICAgYXV0byBjb250ZXh0ID0g
dGFyZ2V0LT50YXJnZXRDb250ZXh0KCk7CisgICAgQVNTRVJUKGNvbnRleHQudHlwZSgpICE9IE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0
KTsKKyAgICBpZiAocHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yTWVkaWFFbmFibGVkKCkg
JiYgY29udGV4dC50eXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFW
T3V0cHV0Q29udGV4dCAmJiAhY29udGV4dC5zZXJpYWxpemVPdXRwdXRDb250ZXh0KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBsYXliYWNrVGFyZ2V0
U2VsZWN0ZWQoY29udGV4dElkLCBjb250ZXh0KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpl
eHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgYm9vbCBhdmFpbGFibGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDliN2RjMDZmNjFmYmM0NzMyZWJiOWJiZjU0
ZDU4NTI4OWY0NzFkNjAuLjVmMTY4MmU1MjkzZDEzMzA2ZTBiYzM0MzA4MjdkYTczYzk5MTc1ZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNTY3LDcgKzE1Njcs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViQ29yZTo6
UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiwgYm9vbCBoYXNWaWRlbyk7CiAgICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tlckNs
aWVudFN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElk
ZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyk7CiAgICAg
dm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCk7Ci0gICAg
dm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYs
IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgdm9pZCBz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpOwogICAgIHZvaWQgbW9j
a01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsKIAogICAgIC8vIFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCAyY2FjM2YxY2IwNWQxY2Q3YjVmNzcxZWUxMmMw
ZTcyOWUxZjFkOGNmLi43ZTk4YjA4OGQ5MjJlZTExNDQ5NzMwYTBlNTU4MTJiZTI2NDQ3NTM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC00NzYsNyArNDc2LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBTaG93
UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0
SWRlbnRpZmllciBjb250ZXh0SWQsIFdlYkNvcmU6OkZsb2F0UmVjdCBwaWNrZXJMb2NhdGlvbiwg
Ym9vbCBoYXNWaWRlbykKICAgICBQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudFN0YXRlRGlkQ2hh
bmdlKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4
dElkLCB1bnNpZ25lZCBtZWRpYVN0YXRlKQogICAgIFNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyRW5hYmxlZChib29sIGVuYWJsZWQpCi0gICAgU2V0TW9ja01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJTdGF0ZShTdHJpbmcgbmFtZSwgdW5zaWduZWQgcGlja2VyU3RhdGUpCisgICAgU2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShTdHJpbmcgbmFtZSwgZW51bTp1aW50
OF90IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgcGlja2Vy
U3RhdGUpCiAgICAgTW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
aW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwCmluZGV4IDJhYjVm
OTEzY2RlODNjZWRjNTRhN2E4ZmUwZWUwOTUzYmNlNDQ5NWIuLmYzN2M2NWVmZDU0ZTVjMjc5ZmJi
YWYxZGQyNWU4MjQzYzU1NzJjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
LmNwcApAQCAtODEsMTIgKzgxLDExIEBAIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpw
cm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKGludCBwaWQpCiAKIHZvaWQgUmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFN1cHBvcnRzQWlyUGxh
eVZpZGVvIHN1cHBvcnRzQWlyUGxheVZpZGVvLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYm
IHRhcmdldENvbnRleHQpCiB7Ci0gICAgaWYgKHRhcmdldENvbnRleHQudHlwZSgpICE9IE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpBVk91dHB1dENvbnRleHRUeXBlKSB7Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIEFTU0VSVCh0YXJnZXRDb250ZXh0LnR5cGUoKSAhPSBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0KTsKKyAgICBp
ZiAodGFyZ2V0Q29udGV4dC50eXBlKCkgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5
cGU6OkFWT3V0cHV0Q29udGV4dCkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIFdlYkNv
cmU6Ok1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShzdXBwb3J0
c0FpclBsYXlWaWRlbywgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUo
dGFyZ2V0Q29udGV4dC5hdk91dHB1dENvbnRleHQoKSkpOworICAgIFdlYkNvcmU6Ok1lZGlhU2Vz
c2lvbkhlbHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShzdXBwb3J0c0FpclBsYXlWaWRl
bywgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUoV1RGTW92ZSh0YXJn
ZXRDb250ZXh0KSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGJjYzRjMTdh
YzI5NTIxMmNiYTY0ZGVkZDFjOWIzYTkwNmNhMDUxMDEuLjVmYzg1NTYzNzYwZWE3NWVjMTJlZDE0
YTllMjczNjgxZjI1MWMwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xMzUyLDcgKzEz
NTIsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpTZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoZW5hYmxl
ZCkpOwogfQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpTdGF0ZSBzdGF0ZSkKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSkKIHsKICAgICBtX3BhZ2Uuc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKG5h
bWUsIHN0YXRlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggNjgxMmU2NDJmZWNkY2FhN2Ix
ZjUxZmUwNzEyNTgwYTdkNDJjNGVmMC4uNTZjZjZiOTJlZDlhMTAzNmRiZDdkMDY0ODYzYzRlNzY4
MTQyY2RlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMzc4LDcgKzM3OCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViQ29yZTo6UGxheWJhY2tUYXJn
ZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29s
KSBmaW5hbDsKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFu
Z2UoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgV2ViQ29y
ZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKSBmaW5hbDsKICAgICB2b2lkIHNldE1v
Y2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sKSBmaW5hbDsKLSAgICB2b2lk
IHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKSBmaW5hbDsKKyAgICB2b2lk
IHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSkgZmluYWw7CiAgICAg
dm9pZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCgpIGZpbmFsOwog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRl
eCBhZWIyNWRhYjg0MjA2ODRhOTUwMjM4NmFiZjgzYWU2YmUzOGNlOTg2Li4xZTYzMzc5Y2FmODc3
YjU5MjY2YmZjNzAzNzA5MTYwMDk2MDM2ZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNzkxLDcgKzE3OTEsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKGJvb2wgZGlzcGF0Y2gpIHsg
bV9zaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMgPSBkaXNwYXRjaDsgfQogCiAjaWYg
RU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgdm9pZCBwbGF5YmFja1RhcmdldFNlbGVjdGVkKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0
Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0JiBvdXRwdXREZXZpY2UpIGNvbnN0OworICAgIHZvaWQgcGxheWJhY2tUYXJnZXRT
ZWxlY3RlZChXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmKSBjb25zdDsKICAgICB2b2lkIHBs
YXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0
Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGJvb2wpOwogICAgIHZvaWQgc2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRp
ZmllciwgYm9vbCk7CiAgICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tlcldhc0Rpc21pc3NlZChX
ZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXgg
NzRkYTYzNTc4ODJjZDAxMzAyMDg0MDk3ZjA2NGQyMWMzYjkxNWQwNC4uNjJlNzk4ZmU0Y2Q1ZDcw
YjliMjNmMDA4NjdiNThkYTRhMjc1OGYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTM1LDcgKzM1LDYgQEAKICNpbXBv
cnQgIkZvbnRJbmZvLmgiCiAjaW1wb3J0ICJGcmFtZUluZm9EYXRhLmgiCiAjaW1wb3J0ICJJbmpl
Y3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaCIKLSNpbXBvcnQgIlBERktpdFNvZnRMaW5rLmgiCiAj
aW1wb3J0ICJQREZQbHVnaW4uaCIKICNpbXBvcnQgIlBhZ2VCYW5uZXIuaCIKICNpbXBvcnQgIlBs
dWdpblZpZXcuaCIKQEAgLTk5LDkgKzk4LDEyIEBACiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2Eu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaD4KICNlbmRpZgogCisjaW1wb3J0
ICJQREZLaXRTb2Z0TGluay5oIgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCkBAIC0xMDQyLDE2ICsxMDQ0LDE3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkVXBk
YXRlUmVuZGVyaW5nKCkKIH0KIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
ICYmICFQTEFURk9STShJT1NfRkFNSUxZKQotdm9pZCBXZWJQYWdlOjpwbGF5YmFja1RhcmdldFNl
bGVjdGVkKFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBj
b25zdCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0Q29udGV4dCkg
Y29uc3QKK3ZvaWQgV2ViUGFnZTo6cGxheWJhY2tUYXJnZXRTZWxlY3RlZChQbGF5YmFja1Rhcmdl
dENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQmJiB0YXJnZXRDb250ZXh0KSBjb25zdAogewogICAgIHN3aXRjaCAodGFy
Z2V0Q29udGV4dC50eXBlKCkpIHsKLSAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpBVk91dHB1dENvbnRleHRUeXBlOgotICAgICAgICBtX3BhZ2UtPnNldFBsYXliYWNrVGFyZ2V0
KGNvbnRleHRJZCwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUodGFy
Z2V0Q29udGV4dC5hdk91dHB1dENvbnRleHQoKSkpOworICAgIGNhc2UgTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dDoKKyAgICBjYXNlIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0OgorICAgICAg
ICBtX3BhZ2UtPnNldFBsYXliYWNrVGFyZ2V0KGNvbnRleHRJZCwgTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hOjpjcmVhdGUoV1RGTW92ZSh0YXJnZXRDb250ZXh0KSkpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrVHlwZToKLSAgICAgICAg
bV9wYWdlLT5zZXRQbGF5YmFja1RhcmdldChjb250ZXh0SWQsIFdlYkNvcmU6Ok1lZGlhUGxheWJh
Y2tUYXJnZXRNb2NrOjpjcmVhdGUodGFyZ2V0Q29udGV4dC5tb2NrRGV2aWNlTmFtZSgpLCB0YXJn
ZXRDb250ZXh0Lm1vY2tTdGF0ZSgpKSk7CisgICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6VHlwZTo6TW9jazoKKyAgICAgICAgbV9wYWdlLT5zZXRQbGF5YmFja1RhcmdldChjb250
ZXh0SWQsIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpjcmVhdGUodGFyZ2V0Q29udGV4dC5kZXZp
Y2VOYW1lKCksIHRhcmdldENvbnRleHQubW9ja1N0YXRlKCkpKTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6Tm9uZToKKyAgICBjYXNlIE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBiODli
MjY2YzNkNzlhY2QyNDFkZjM2YjVmY2UyZjFkMmVkOGRiNzQ4Li5mM2Q0NzE2YTg5MzNkOWYyNDJm
OGVmMTIxNWE4NjYyMzQwZjg5N2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMjQzLDcgKzI0Myw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViQ29yZTo6
UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmLCBib29sIC8qIGhhc1ZpZGVvICovKSBmaW5hbDsKICAgICB2b2lkIHBsYXliYWNrVGFy
Z2V0UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGll
bnRDb250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZs
YWdzKSBmaW5hbDsKICAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5h
YmxlZChib29sKSBmaW5hbDsKLSAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6OlN0YXRlKSBmaW5hbDsKKyAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6Ok1vY2tTdGF0ZSkgZmluYWw7CiAgICAgdm9pZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlckRpc21pc3NQb3B1cCgpIG92ZXJyaWRlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQpp
bmRleCBiMzRlOGQ5ZDhlZTkxNWM2MWEwYzQ5ZmY0MGUyZDY2ZmVkMjRhMDRlLi5jOTY0ODNmZjk2
ZWI3ZmQ4Y2MxOTUyN2MzNTQ1ZDliODNiMTRhOWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC0x
MTI5LDcgKzExMjksNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBbbV93ZWJWaWV3IF9zZXRN
b2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQ6ZW5hYmxlZF07CiB9CiAKLXZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNv
bnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRl
KQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
U3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9j
a1N0YXRlIHN0YXRlKQogewogICAgIFttX3dlYlZpZXcgX3NldE1vY2tNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTmFtZTpuYW1lIHN0YXRlOnN0YXRlXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyLmgKaW5kZXggMGI5MjM4MzVlOWUxNWI2YjgwNDViNDlhZmUyOWU2YWFiMDNlY2ZjYS4uOGNh
MzI5NDdhNWI0NmUwNjdiOGU4YmFlNDQ2MzkzZWJiOTBlODZlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2hvd1BsYXli
YWNrVGFyZ2V0UGlja2VyKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGJvb2wgaGFzVmlkZW8pOwogICAgIHZv
aWQgcGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpQbGF5
YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVByb2R1Y2Vy
OjpNZWRpYVN0YXRlRmxhZ3MpOwogICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJFbmFibGVkKGJvb2wpOwotICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6U3RhdGUpOworICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJT
dGF0ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
TW9ja1N0YXRlKTsKICAgICB2b2lkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlz
c1BvcHVwKCk7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlci5tbQppbmRleCA3MzQ0MzU2NzVhYjgwOWI1MGVjNWVmMzhhYjlmNzdjYTE0OGIzMWYxLi43
ZGJkNTg5NDc1NDA1YTE2ZWJkZDBmYTliY2ZhNjJjMzM3ZTc0MTUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyLm1tCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgV2ViTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wK
ICAgICBXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWQoKS5zZXRNb2NrTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKLXZvaWQgV2ViTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJT
dGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpTdGF0ZSBzdGF0ZSkKK3ZvaWQgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6c2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCiB7CiAg
ICAgV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkKCkuc2V0TW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShuYW1lLCBzdGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNWIwZWU4YTNhYzhjMzMzYjZlZTM0
NGNkZDljM2I1NTc2NWMyNmZmMC4uNDkyYWY2MDFjZjdhYzRkZjQ2NDUwYjA4YWFhNWMzMjBlYTJl
NmU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAt
OTIzMiw3ICs5MjMyLDcgQEAgLSAodm9pZClfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJFbmFibGVkOihib29sKWVuYWJsZWQKICAgICBbc2VsZiBfZGV2aWNlUGlja2VyXS0+c2V0TW9j
a01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGVuYWJsZWQpOwogfQogCi0tICh2b2lk
KV9zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck5hbWU6KE5TU3RyaW5nICopbmFtZSBz
dGF0ZTooV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKXN0YXRlCist
ICh2b2lkKV9zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck5hbWU6KE5TU3RyaW5nICop
bmFtZSBzdGF0ZTooV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0
ZSlzdGF0ZQogewogICAgIFtzZWxmIF9kZXZpY2VQaWNrZXJdLT5zZXRNb2NrTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclN0YXRlKG5hbWUsIHN0YXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDNhZTBkM2FhMjYyZDk1
MjMzMGMxYzgyYzMyNTUwZDlhMjFhNTAxNGYuLjA0YjhjMzY4Y2NhZjg1MjRkMDg1OTM3MmQ2MDU4
ZjQ4ZjE3YTZmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3SW50ZXJuYWwuaApAQCAtMzI3LDcgKzMyNyw3IEBAIFdlYkxheW91dE1pbGVzdG9uZXMg
a2l0TGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPik7
CiAtICh2b2lkKV9zaG93UGxheWJhY2tUYXJnZXRQaWNrZXI6KFdlYkNvcmU6OlBsYXliYWNrVGFy
Z2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIpY29udGV4dElkIGxvY2F0aW9uOihjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYpbG9jYXRpb24gaGFzVmlkZW86KEJPT0wpaGFzVmlkZW87CiAtICh2b2lk
KV9wbGF5YmFja1RhcmdldFBpY2tlckNsaWVudFN0YXRlRGlkQ2hhbmdlOihXZWJDb3JlOjpQbGF5
YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyKWNvbnRleHRJZCBzdGF0ZTooV2ViQ29y
ZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKXN0YXRlOwogLSAodm9pZClfc2V0TW9j
a01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkOihib29sKWVuYWJsZWQ7Ci0tICh2b2lk
KV9zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck5hbWU6KE5TU3RyaW5nICopbmFtZSBz
dGF0ZTooV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKXN0YXRlOwor
LSAodm9pZClfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOihOU1N0cmluZyAq
KW5hbWUgc3RhdGU6KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3Rh
dGUpc3RhdGU7CiAtICh2b2lkKV9tb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQ
b3B1cDsKICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426035</attachid>
            <date>2021-04-14 12:39:27 -0700</date>
            <delta_ts>2021-04-14 18:44:31 -0700</delta_ts>
            <desc>Fix issues on iPad</desc>
            <filename>bug-224469-20210414123926.patch</filename>
            <type>text/plain</type>
            <size>82894</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1OTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQ5YzVhZmFhOTRiNzc1
Zjg0NmU5ZTIwYjJkZjAxOGQyNTRkMDhhZi4uNTVjMmRhMzgxNmQ3ZjAzNWExMGJhMDVjM2NhNjFk
OTg2OTZhNjY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDIxLTA0LTEzICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIFdlYkNvbnRlbnQg
cHJvY2VzcyBzaG91bGQgbm90IGNyZWF0ZSBBVk91dHB1dENvbnRleHQgaW5zdGFuY2VzIHdoZW4g
bWVkaWEgaW4gR1BVIFByb2Nlc3MgaXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtb2RpZmllcyBgTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHRgIHRvIHByb3ZpZGUgaW50ZXJmYWNlcyB0byBzZXJpYWxpemUvZGVzZXJp
YWxpemUKKyAgICAgICAgYEFWT3V0cHV0Q29udGV4dGAgYW5kIG1vZGlmaWVzIGBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29jb2FgIHRvIHVzZSBgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHRgIHRvCisg
ICAgICAgIG1hbmFnZSBpdHMgYEFWT3V0cHV0Q29udGV4dGAgaW5zdGVhZCBvZiBrZWVwaW5nIGEg
cG9pbnRlciB0byB0aGUgYEFWT3V0cHV0Q29udGV4dGAgb2JqZWN0LgorICAgICAgICBXaXRoIHRo
ZXNlIGNoYW5nZXMsIGEgV2ViQ29udGVudCBwcm9jZXNzIGNhbiBhY2Nlc3MgdGhlIHByb3BlcnRp
ZXMgb2YgYSBzZXJpYWxpemVkCisgICAgICAgIGBBVk91dHB1dENvbnRleHRgIG9iamVjdCBhbmQg
Zm9yd2FyZCBpdCB0byBvdGhlciBwcm9jZXNzIChlLmcuLCB0aGUgR1BVIHByb2Nlc3MpIHdpdGhv
dXQKKyAgICAgICAgZGVzZXJpYWxpemluZyB0aGUgYEFWT3V0cHV0Q29udGV4dGAgb2JqZWN0LiBU
aGVyZWZvcmUsIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZG9lcyBub3QgbmVlZAorICAgICAgICBh
Y2Nlc3MgdG8gdGhlIENvcmVNZWRpYSByb3V0aW5nIHNlcnZpY2UuIFNvIHdlIGNhbiByZW1vdmUg
dGhlIGZpeCAocjI3NTY2OSkgZm9yIGJ1ZyAyMjQzMjguCisKKyAgICAgICAgQ292ZXJlZCBieSBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgorICAgICAgICAqIE1vZHVs
ZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmg6CisKKyAgICAgICAgKiBIZWFkZXJz
LmNtYWtlOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBNb2RpZnkgdGhlIHByb2plY3QgZmls
ZSBiZWNhdXNlIGBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dGAgaXMgdXNlZCBpbiBDb2NvYSBw
b3J0cyBvbmx5LgorCisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0
ZSk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNl
dE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgorICAgICAgICAqIHBhZ2UvUGFn
ZS5oOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldC5o
OgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oOiBSZW1vdmVkLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpvdXRwdXRDb250ZXh0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVk
aWFQbGF5YmFja1RhcmdldENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvY29hOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldENvY29hOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2sgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjp0YXJnZXRD
b250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2Nv
YTo6aGFzQWN0aXZlUm91dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvY29hOjpkZXZpY2VOYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnRvTWVk
aWFQbGF5YmFja1RhcmdldENvY29hKToKKyAgICAgICAgRG9uJ3QgZGlyZWN0bHkgdXNlIGBBVk91
dHB1dENvbnRleHRgIGluIHRoaXMgY2xhc3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
aXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRXaXJlbGVzc1BsYXliYWNr
VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KToKKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpkZXZpY2VOYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpoYXNBY3RpdmVSb3V0ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6c3VwcG9ydHNSZW1vdGVWaWRlb1BsYXli
YWNrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
Ojptb2NrU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6Om91dHB1dENvbnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OnNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjplbmNvZGluZ1JlcXVp
cmVzUGxhdGZvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OnNlcmlhbGl6
ZU91dHB1dENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OmRlc2VyaWFsaXplT3V0cHV0Q29udGV4dCk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9t
b2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRNb2NrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldE1vY2s6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjp0YXJnZXRDb250ZXh0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvTWVkaWFQbGF5YmFja1RhcmdldE1vY2spOgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpzdGF0ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
bW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFp
bGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6
OnN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6aW52YWxpZGF0ZVBsYXliYWNrVGFyZ2V0cyk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6c2V0U3Rh
dGUpOgorCisgICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
TW9jay5oOgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSk6CisK
IDIwMjEtMDQtMTMgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbR1BVIFByb2Nlc3NdIFNpbXBsaWZ5IERpc3BsYXlMaXN0OjpJdGVyYXRvciBwYXJ0
IDQ6IE1vdmUgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHRvIGl0cyBvd24gLmgvLmNwcCBmaWxlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA2MDkwZjdjMWYyYjAyNDcxNGZjNWNhMDM3NTYzY2YzYmQwNjdmN2VhLi5kNGJk
ZWFmODQ0NWRmMDVlMmNkZTNjNDFhNTU1ZjYzYTJkMTg2ZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ1IEBACisyMDIxLTA0LTEzICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0dQVVBdIFdlYkNvbnRlbnQgcHJvY2VzcyBzaG91bGQgbm90IGNyZWF0ZSBBVk91dHB1
dENvbnRleHQgaW5zdGFuY2VzIHdoZW4gbWVkaWEgaW4gR1BVIFByb2Nlc3MgaXMgZW5hYmxlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDY5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaDoKKworICAgICAg
ICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46
OmVuY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAq
IFNoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2Rl
UGxhdGZvcm1EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZVBsYXRmb3JtRGF0YSk6IERl
bGV0ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6bWVkaWFSZWxhdGVkSU9LaXRDbGFzc2VzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYktp
dDo6dGVtcG9yYXJ5TWFjaFNlcnZpY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbjoKKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXI6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UpOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJD
aHJvbWVDbGllbnQ6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
cGxheWJhY2tUYXJnZXRTZWxlY3RlZCBjb25zdCk6CisKIDIwMjEtMDQtMTMgIEFkYSBDaGFuICA8
YWRhLmNoYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBQbGF0Zm9ybVhSU3lzdGVt
Ojp4ckNvb3JkaW5hdG9yKCkgZm9yIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKaW5kZXggNmYxZjAyOTQwMWMwYzkyNjRlNGYwNmExOTMxODY0ZWRhNWVm
YTI3MC4uMDg4ZjQ5MmZiYmZjYzJmZDJhOThkNWZiNzhhOWVkZjMzNzdhNWFjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA0LTEzICBQZW5nIExp
dSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIFdlYkNvbnRlbnQgcHJv
Y2VzcyBzaG91bGQgbm90IGNyZWF0ZSBBVk91dHB1dENvbnRleHQgaW5zdGFuY2VzIHdoZW4gbWVk
aWEgaW4gR1BVIFByb2Nlc3MgaXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChX
ZWJDaHJvbWVDbGllbnQ6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbToKKyAgICAgICAgKFdl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyU3RhdGUpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2Vi
VmlldyBfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOnN0YXRlOl0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlld0ludGVybmFsLmg6CisKIDIwMjEtMDQtMTMgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgc3Vw
cG9ydCBmb3IgTlBBUEkgcGx1Z2lucyBpbiBXZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBl
MTE1MDVjZGQwZjhlNDNiMjg3M2RiN2ExZDU4MWY4ZGY5ODRmZWIzLi5jMDRmODA0ZWQ5MzdjNjcw
YWRlZjdiM2I2ODlkODk1ZGZhN2U3YjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyNjksNyAr
MTI2OSw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXliYWNrVGFyZ2V0LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFy
Z2V0Q2xpZW50LmgKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5o
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyRW51bXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCmluZGV4IDZjNmFiMGU3YTYy
ZWM0ZGE0NWVkM2RiYzk0MTQ1NTE3NWNkNDRkNWEuLmQ1YjU5NWE0YWM0OWZmMGVmZmU2MmI0NTJl
YzM0MmI3ZDM4MzA0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxh
eS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCB2
b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyRW5hYmxlZChib29sIGVuYWJsZQogICAgIG1fbW9ja1BpY2tlckVuYWJsZWQgPSBlbmFibGVk
OwogfQogCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6U3RhdGUgc3RhdGUpCit2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1v
Y2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKQogewogICAgIEFMV0FZU19M
T0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CiAgICAgbW9ja1BpY2tlcigpLnNldFN0
YXRlKG5hbWUsIHN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWly
cGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fp
cnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oCmluZGV4IGQ3ZjI4Y2NiNzVlNWQ3NTVkYWY0
MzM0ZWY2NTZjYjE0MTkwZmFiNTQuLjFiYTEyODRmMjMzM2M3ODQ2YWI4MGQ0ZTExZGIyYmY0ZjAy
MDY2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRp
YVNlc3Npb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXIuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXImIHNoYXJlZCgpOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVu
YWJsZWQoYm9vbCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpTdGF0ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpNb2NrU3RhdGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgYWRkUGxheWJhY2tUYXJnZXRQaWNrZXJD
bGllbnQoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYsIFBsYXliYWNrVGFyZ2V0Q2xpZW50
Q29udGV4dElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZWNlNDZjZmE0
MTE5ODM0NTE3OGE1ZDI3Zjc3MjdkYjkwNzM1OGNjOS4uMWFiN2YyMDQ4NTRmODFlMTQ3OTUwMDM2
YzNjNWZjNWU2MDNhYTQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zNjksNiArMzY5
LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9JT1N1cmZhY2VQb29sQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ludFJlY3RDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25m
aWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlcldlYk0uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWY4ZWU1OWI3MWVlNTY0MThhYjE1NjE0ODg4OTYxMzdi
YzQyYzc3Ni4uNjIwNDNmMmNhZWM3MDI4M2QxNjI3YmY0Mzg5MmM4ZmI3OWRiMWE5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
Njk1Myw5ICs2OTUzLDkgQEAKIAkJMUNERDQ1RTQwQkE5Qzg0NjAwRjkwMTQ3IC8qIERlYnVnUmVs
ZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVh
c2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDREQ0NUU1MEJBOUM4
NDYwMEY5MDE0NyAvKiBXZWJDb3JlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsg
cGF0aCA9IFdlYkNvcmUueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
REQ0NUU2MEJBOUM4NDYwMEY5MDE0NyAvKiBCYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54
Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTFDRThEMTI1MjYxODVCRDgwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVu
dGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFODg2M0UyNjEwNUE1RjAwMEM4MTZD
IC8qIEluTWVtb3J5RGlzcGxheUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5NZW1vcnlE
aXNwbGF5TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRTg4NjNGMjYx
MDVBNUYwMDBDODE2QyAvKiBJbk1lbW9yeURpc3BsYXlMaXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
TWVtb3J5RGlzcGxheUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNFOEQx
MjUyNjE4NUJEODAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0VDQjNBODIxRjJCNjczMDBGNDQ1NDIgLyogV0hMU0xT
dGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTdGF0ZW1lbnRC
ZWhhdmlvckNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFOEQxMkIy
NjE4NjE2NDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRGlzcGxheUxpc3RJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDRThEMTJDMjYxODYxNjQwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTY5NzgsNiArNjk3OCw3IEBACiAJCTFEMDAyNkEzMjM3NEQ2MjQwMENBNkNERiAv
KiBKU1BpY3R1cmVJblBpY3R1cmVXaW5kb3cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUQwMDI2QTgyMzc0RjlEOTAwQ0E2Q0RGIC8qIEpTRW50ZXJQaWN0dXJl
SW5QaWN0dXJlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFbnRl
clBpY3R1cmVJblBpY3R1cmVFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
RDAwMjZBOTIzNzRGOUQ5MDBDQTZDREYgLyogSlNFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0VudGVyUGljdHVyZUlu
UGljdHVyZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUQwMDhBQTUy
NjIxMDhDMDAwRUUzQURFIC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFEMkM4MkI2MjM2QTNGNkEwMDU1RDZDNSAvKiBQaWN0dXJlSW5Q
aWN0dXJlU3VwcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDQ3NjU4RDI1Q0NBNzc4MDA3QUYzMTIg
LyogSW1hZ2VEZWNvZGVySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZURlY29kZXJJ
ZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQUIzMTEzMjUxRDcy
NUMwMEZDOTQ4NSAvKiBWaWRlb0xheWVyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0xh
eWVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY5NjAsNyArMjY5
NjEsNiBAQAogCQkJCUNEREUwMkU5MThCM0RGQzcwMENGN0ZGMSAvKiBMZWdhY3lDRE1TZXNzaW9u
LmggKi8sCiAJCQkJMDdFM0RGRDAxQTlFNzg2NTAwNzY0Q0E4IC8qIE1lZGlhUGxheWJhY2tUYXJn
ZXQuaCAqLywKIAkJCQkwNzkyMTY1MzFBQTU2MEFBMDBBM0MwNDkgLyogTWVkaWFQbGF5YmFja1Rh
cmdldENsaWVudC5oICovLAotCQkJCTA3Rjg3NjgzMUFENEE5NDUwMDkwNTg0OSAvKiBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dC5oICovLAogCQkJCTA3OEU0M0Q3MUFCQjZDN0UwMDFDMkZBNiAv
KiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmNwcCAqLywKIAkJCQkwNzhFNDNEODFBQkI2QzdF
MDAxQzJGQTYgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oICovLAogCQkJCUU0QjQxRTBD
MENCRjkwQkQwMEFGMkVDRSAvKiBNZWRpYVBsYXllci5jcHAgKi8sCkBAIC0yNzE3Niw2ICsyNzE3
Niw4IEBACiAJCQkJQUQ5RkY2RTAxOTA4MzkxRDAwM0I2MUUwIC8qIElPU3VyZmFjZVBvb2xDb2Nv
YS5tbSAqLywKIAkJCQlDREM0OEFDODIxNDlDRjJBMDAyNEZENTkgLyogTWVkaWFFbmdpbmVDb25m
aWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcCAqLywKIAkJCQlDREM0OEFDNzIxNDlDRjJBMDAyNEZE
NTkgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmggKi8sCisJCQkJMDdG
ODc2ODMxQUQ0QTk0NTAwOTA1ODQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmggKi8s
CisJCQkJMUQwMDhBQTUyNjIxMDhDMDAwRUUzQURFIC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0Lm1tICovLAogCQkJCTMxNjQ3RkE4MjUxNjE2QkQwMDEwRjhGQiAvKiBPcGVuR0xTb2Z0TGlu
a0NvY29hLmggKi8sCiAJCQkJMzE2NDdGQTkyNTE2MTZCRDAwMTBGOEZCIC8qIE9wZW5HTFNvZnRM
aW5rQ29jb2EubW0gKi8sCiAJCQkJN0I2NEMwQjQyNTRDM0IxNjAwMDZCNEFGIC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0gKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaAppbmRleCBkMGJjMzU1MGQ0ZDA4MzVjMzMzZTFmNDgzZjVmMjVhZGQwNDgzM2NlLi5k
ZjRjOWMxZjg0ZWNhMjBlN2IxZmJkMzdjMTQzOGM1ZTBhYmIwZDU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lQ2xpZW50LmgKQEAgLTUxMyw3ICs1MTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJ
ZGVudGlmaWVyLCBjb25zdCBJbnRQb2ludCYsIGJvb2wgLyppc1ZpZGVvKi8pIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tlckNsaWVudFN0YXRlRGlkQ2hhbmdlKFBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3Rh
dGVGbGFncykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyRW5hYmxlZChib29sKSAgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldE1vY2tNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6OlN0YXRlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6TW9ja1N0YXRlKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbW9ja01lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKSB7IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApp
bmRleCBiZDllNTM4MmJjOWRjY2JhZmZlYzZiMzk0MjIyNGM4ZDVlYTY2YjlhLi5jZGJmZmEwYzZh
MDUyYjBlMWZhMDFjZDFmZDkzMWRiY2JmZGRmNTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTI5
NTIsNyArMjk1Miw3IEBAIHZvaWQgUGFnZTo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBjaHJvbWUoKS5jbGllbnQoKS5zZXRNb2NrTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKLXZvaWQgUGFnZTo6
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUs
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKK3ZvaWQgUGFnZTo6c2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCiB7CiAgICAgY2hyb21l
KCkuY2xpZW50KCkuc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShuYW1lLCBz
dGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGQ0ODI4MTY5MDU1M2UwNDZmNDcwMzQ3ZWQ2YmI0
NTIxNWUyMDY0OWQuLjc3MDFiMDhjMWUzYzliOTRiMGIwY2RiMDY2MTkwOWMyMjIyMmY0NDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCkBAIC03MzEsNyArNzMxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2hvd1Bs
YXliYWNrVGFyZ2V0UGlja2VyKFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIs
IGNvbnN0IEludFBvaW50JiwgYm9vbCwgUm91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcm
KTsKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2UoUGxh
eWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgTWVkaWFQcm9kdWNlcjo6TWVkaWFT
dGF0ZUZsYWdzKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyRW5hYmxlZChib29sKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1v
Y2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1v
Y2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBt
b2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCgpOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRQbGF5YmFja1RhcmdldChQbGF5YmFja1RhcmdldENsaWVudENvbnRl
eHRJZGVudGlmaWVyLCBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0LmgKaW5k
ZXggNmFkZmE5MzdmNzNmNTczZDk1YzlmY2Q3NGQ2ZDIxYjg3M2EyZjc4OC4uMzFkNDg4NGFkYThj
NTE3ZGNmZWQyZGZmYWUyNjVmZTRkYjk0ZmZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXQuaApAQCAtMzgsNyArMzgs
NyBAQCBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0IDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFQ
bGF5YmFja1RhcmdldD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhUGxheWJhY2tUYXJn
ZXQoKSA9IGRlZmF1bHQ7CiAKLSAgICBlbnVtIFRhcmdldFR5cGUgeyBBVkZvdW5kYXRpb24sIE1v
Y2sgfTsKKyAgICBlbnVtIGNsYXNzIFRhcmdldFR5cGUgOiB1aW50OF90IHsgQVZGb3VuZGF0aW9u
LCBNb2NrIH07CiAgICAgdmlydHVhbCBUYXJnZXRUeXBlIHRhcmdldFR5cGUoKSBjb25zdCA9IDA7
CiAKICAgICB2aXJ0dWFsIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXRD
b250ZXh0KCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDFjZTRhM2VjMzAxZTlkOWU5NzQ0ZGNiZjI5YjdhN2ExMGJmNGIz
NGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaAor
KysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHRf
aAotI2RlZmluZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dF9oCi0KLSNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
Ci0KLU9CSkNfQ0xBU1MgQVZPdXRwdXRDb250ZXh0OwotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi1P
QkpDX0NMQVNTIE5TS2V5ZWRBcmNoaXZlcjsKLU9CSkNfQ0xBU1MgTlNLZXllZFVuYXJjaGl2ZXI7
Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dCB7Ci1wdWJsaWM6Ci0gICAgZW51bSBUeXBlIDogaW50MzJfdCB7Ci0gICAgICAg
IE5vbmUsCi0gICAgICAgIEFWT3V0cHV0Q29udGV4dFR5cGUsCi0gICAgICAgIE1vY2tUeXBlLAot
ICAgIH07Ci0KLSAgICBlbnVtIENvbnRleHRTdGF0ZSB7Ci0gICAgICAgIFVua25vd24gPSAwLAot
ICAgICAgICBPdXRwdXREZXZpY2VVbmF2YWlsYWJsZSA9IDEsCi0gICAgICAgIE91dHB1dERldmlj
ZUF2YWlsYWJsZSA9IDIsCi0gICAgfTsKLSAgICB0eXBlZGVmIHVuc2lnbmVkIFN0YXRlOwotCi0g
ICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQoKQotICAgICAgICA6IG1fdHlwZShOb25lKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChBVk91dHB1dENv
bnRleHQgKm91dHB1dENvbnRleHQpCi0gICAgICAgIDogbV90eXBlKEFWT3V0cHV0Q29udGV4dFR5
cGUpCi0gICAgICAgICwgbV9vdXRwdXRDb250ZXh0KG91dHB1dENvbnRleHQpCi0gICAgewotICAg
IH0KLQotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KGNvbnN0IFN0cmluZyYgbmFtZSwg
U3RhdGUgc3RhdGUpCi0gICAgICAgIDogbV90eXBlKE1vY2tUeXBlKQotICAgICAgICAsIG1fbmFt
ZShuYW1lKQotICAgICAgICAsIG1fc3RhdGUoc3RhdGUpCi0gICAgewotICAgIH0KLQotICAgIFR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBt
b2NrRGV2aWNlTmFtZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IE1v
Y2tUeXBlKTsKLSAgICAgICAgcmV0dXJuIG1fbmFtZTsKLSAgICB9Ci0KLSAgICBTdGF0ZSBtb2Nr
U3RhdGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBNb2NrVHlwZSk7
Ci0gICAgICAgIHJldHVybiBtX3N0YXRlOwotICAgIH0KLQotICAgIEFWT3V0cHV0Q29udGV4dCAq
YXZPdXRwdXRDb250ZXh0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
QVZPdXRwdXRDb250ZXh0VHlwZSk7Ci0gICAgICAgIHJldHVybiBtX291dHB1dENvbnRleHQ7Ci0g
ICAgfQotCi0gICAgYm9vbCBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlID09IEFWT3V0cHV0Q29udGV4dFR5cGU7IH0KLSAgICAKLXByaXZhdGU6Ci0g
ICAgVHlwZSBtX3R5cGUgeyBOb25lIH07Ci0gICAgQVZPdXRwdXRDb250ZXh0ICptX291dHB1dENv
bnRleHQgeyBudWxscHRyIH07Ci0gICAgU3RyaW5nIG1fbmFtZTsKLSAgICBTdGF0ZSBtX3N0YXRl
IHsgVW5rbm93biB9OwotfTsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkKLQotI2VuZGlmIC8vIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oCmluZGV4IDZhOGUxOTQ3
NmEzNDdkOGU3NDg0MWZmNjlmYmQ0OGIwOTIyM2M4ODkuLjYxZDFmYWNlMTQ4NmMxMDBjODJmMzgx
Nzk1MTJjOTVjNmIzOTdlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1Rh
cmdldENvY29hLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
TWVkaWFQbGF5YmFja1RhcmdldENvY29hIDogcHVibGljIE1lZGlhUGxheWJhY2tUYXJnZXQgewog
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TWVkaWFQbGF5YmFja1Rhcmdl
dD4gY3JlYXRlKEFWT3V0cHV0Q29udGV4dCAqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IGNyZWF0ZShNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dCYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NfRkFNSUxZ
X1NJTVVMQVRPUikgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIHN0YXRpYyBSZWY8TWVk
aWFQbGF5YmFja1RhcmdldD4gY3JlYXRlKCk7CkBAIC00MywyMSArNDQsMTggQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB+TWVkaWFQbGF5YmFja1RhcmdldENvY29hKCk7CiAKLSAgICBUYXJnZXRU
eXBlIHRhcmdldFR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBBVkZvdW5kYXRpb247IH0KKyAg
ICBUYXJnZXRUeXBlIHRhcmdldFR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBUYXJnZXRUeXBl
OjpBVkZvdW5kYXRpb247IH0KIAogICAgIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
JiB0YXJnZXRDb250ZXh0KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBoYXNBY3RpdmVSb3V0ZSgp
IGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyBkZXZpY2VOYW1lKCkgY29uc3QgZmluYWw7CiAgICAg
Ym9vbCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKSBjb25zdCBmaW5hbDsKIAotICAgIEFW
T3V0cHV0Q29udGV4dCAqb3V0cHV0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fb3V0cHV0Q29u
dGV4dC5nZXQoKTsgfQotCiBwcm90ZWN0ZWQ6Ci0gICAgTWVkaWFQbGF5YmFja1RhcmdldENvY29h
KEFWT3V0cHV0Q29udGV4dCAqKTsKKyAgICBleHBsaWNpdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29j
b2EoQVZPdXRwdXRDb250ZXh0ICopOworICAgIGV4cGxpY2l0IE1lZGlhUGxheWJhY2tUYXJnZXRD
b2NvYShNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmKTsKIAotICAgIFJldGFpblB0cjxBVk91
dHB1dENvbnRleHQ+IG1fb3V0cHV0Q29udGV4dDsKLSAgICBtdXRhYmxlIE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0IG1fY29udGV4dDsKLSAgICBTdHJpbmcgbV9kZXZpY2VOYW1lOworICAgIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IG1fY29udGV4dDsKIH07CiAKIE1lZGlhUGxheWJhY2tU
YXJnZXRDb2NvYSogdG9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoTWVkaWFQbGF5YmFja1Rhcmdl
dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EubW0KaW5k
ZXggZGFjOGNjNDgxNTZjMmM3ZTc0ZWFhYzdiNGRkZTRiYzIxNzc1MTlhYS4uYjM4MmJhN2EwYjAw
YjNmMTUzZDE5MjQzZTAyZWZjN2U5MGRkNjI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVk
aWFQbGF5YmFja1RhcmdldENvY29hLm1tCkBAIC0zNCwxNCArMzQsMjMgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hOjpjcmVhdGUoQVZPdXRwdXRDb250ZXh0ICpjb250ZXh0KQorUmVmPE1lZGlhUGxheWJh
Y2tUYXJnZXQ+IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKEFWT3V0cHV0Q29udGV4
dCAqb3V0cHV0Q29udGV4dCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29jb2EoY29udGV4dCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlh
UGxheWJhY2tUYXJnZXRDb2NvYShvdXRwdXRDb250ZXh0KSk7CiB9CiAKLU1lZGlhUGxheWJhY2tU
YXJnZXRDb2NvYTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hKEFWT3V0cHV0Q29udGV4dCAqY29u
dGV4dCkKLSAgICA6IE1lZGlhUGxheWJhY2tUYXJnZXQoKQotICAgICwgbV9vdXRwdXRDb250ZXh0
KGNvbnRleHQpCitSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gTWVkaWFQbGF5YmFja1RhcmdldENv
Y29hOjpjcmVhdGUoTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmJiBjb250ZXh0KQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShXVEZNb3ZlKGNv
bnRleHQpKSk7Cit9CisKK01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6TWVkaWFQbGF5YmFja1Rh
cmdldENvY29hKEFWT3V0cHV0Q29udGV4dCAqb3V0cHV0Q29udGV4dCkKKyAgICA6IG1fY29udGV4
dChvdXRwdXRDb250ZXh0KQoreworfQorCitNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb2NvYShNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmIGNvbnRleHQp
CisgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKIHsKIH0KIApAQCAtNTUsMjQgKzY0
LDcgQEAgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6
Y3JlYXRlKCkKIAogYm9vbCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OnN1cHBvcnRzUmVtb3Rl
VmlkZW9QbGF5YmFjaygpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX291dHB1dENvbnRleHQpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKHN1cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2VzKV0gfHwgIVtt
X291dHB1dENvbnRleHQgc3VwcG9ydHNNdWx0aXBsZU91dHB1dERldmljZXNdIHx8ICFbbV9vdXRw
dXRDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob3V0cHV0RGV2aWNlcyldKSB7
Ci0gICAgICAgIGlmIChhdXRvICpvdXRwdXREZXZpY2UgPSBbbV9vdXRwdXRDb250ZXh0IG91dHB1
dERldmljZV0pIHsKLSAgICAgICAgICAgIGlmIChvdXRwdXREZXZpY2UuZGV2aWNlRmVhdHVyZXMg
JiBBVk91dHB1dERldmljZUZlYXR1cmVWaWRlbykKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBmb3Ig
KEFWT3V0cHV0RGV2aWNlICpvdXRwdXREZXZpY2UgaW4gW21fb3V0cHV0Q29udGV4dCBvdXRwdXRE
ZXZpY2VzXSkgewotICAgICAgICBpZiAob3V0cHV0RGV2aWNlLmRldmljZUZlYXR1cmVzICYgQVZP
dXRwdXREZXZpY2VGZWF0dXJlVmlkZW8pCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fY29udGV4dC5zdXBwb3J0c1JlbW90
ZVZpZGVvUGxheWJhY2soKTsKIH0KIAogTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjp+TWVkaWFQ
bGF5YmFja1RhcmdldENvY29hKCkKQEAgLTgxLDQ1ICs3MywxNyBAQCBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29jb2E6On5NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoKQogCiBjb25zdCBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dCYgTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjp0YXJnZXRDb250ZXh0
KCkgY29uc3QKIHsKLSAgICBtX2NvbnRleHQgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCht
X291dHB1dENvbnRleHQuZ2V0KCkpOwogICAgIHJldHVybiBtX2NvbnRleHQ7CiB9CiAKIGJvb2wg
TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpoYXNBY3RpdmVSb3V0ZSgpIGNvbnN0CiB7Ci0gICAg
aWYgKCFtX291dHB1dENvbnRleHQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChb
bV9vdXRwdXRDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc3VwcG9ydHNNdWx0
aXBsZU91dHB1dERldmljZXMpXSAmJiBbbV9vdXRwdXRDb250ZXh0IHN1cHBvcnRzTXVsdGlwbGVP
dXRwdXREZXZpY2VzXSAmJiBbbV9vdXRwdXRDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3Iob3V0cHV0RGV2aWNlcyldKSB7Ci0gICAgICAgIGZvciAoQVZPdXRwdXREZXZpY2UgKm91
dHB1dERldmljZSBpbiBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmljZXNdKSB7Ci0gICAgICAg
ICAgICBpZiAob3V0cHV0RGV2aWNlLmRldmljZUZlYXR1cmVzICYgKEFWT3V0cHV0RGV2aWNlRmVh
dHVyZVZpZGVvIHwgQVZPdXRwdXREZXZpY2VGZWF0dXJlQXVkaW8pKQotICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIGlmIChbbV9vdXRwdXRDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
b3V0cHV0RGV2aWNlKV0pIHsKLSAgICAgICAgaWYgKGF1dG8gKm91dHB1dERldmljZSA9IFttX291
dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlXSkKLSAgICAgICAgICAgIHJldHVybiBvdXRwdXREZXZp
Y2UuZGV2aWNlRmVhdHVyZXMgJiAoQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8gfCBBVk91dHB1
dERldmljZUZlYXR1cmVBdWRpbyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1fb3V0cHV0Q29udGV4
dC5nZXQoKS5kZXZpY2VOYW1lOworICAgIHJldHVybiBtX2NvbnRleHQuaGFzQWN0aXZlUm91dGUo
KTsKIH0KIAogU3RyaW5nIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6ZGV2aWNlTmFtZSgpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX291dHB1dENvbnRleHQpCi0gICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOwotCi0gICAgaWYgKCFbbV9vdXRwdXRDb250ZXh0IHN1cHBvcnRzTXVsdGlwbGVPdXRw
dXREZXZpY2VzXSkKLSAgICAgICAgcmV0dXJuIFttX291dHB1dENvbnRleHQgZGV2aWNlTmFtZV07
Ci0KLSAgICBhdXRvIG91dHB1dERldmljZU5hbWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0XSk7Ci0gICAgZm9yIChBVk91dHB1dERldmljZSAqb3V0cHV0RGV2aWNlIGlu
IFttX291dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlc10pCi0gICAgICAgIFtvdXRwdXREZXZpY2VO
YW1lcyBhZGRPYmplY3Q6W291dHB1dERldmljZSBkZXZpY2VOYW1lXV07Ci0KLSAgICByZXR1cm4g
W291dHB1dERldmljZU5hbWVzIGNvbXBvbmVudHNKb2luZWRCeVN0cmluZzpAIiArICJdOworICAg
IHJldHVybiBtX2NvbnRleHQuZGV2aWNlTmFtZSgpOwogfQogCiBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29jb2EqIHRvTWVkaWFQbGF5YmFja1RhcmdldENvY29hKE1lZGlhUGxheWJhY2tUYXJnZXQqIHJl
cCkKQEAgLTEyOSw3ICs5Myw3IEBAIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSogdG9NZWRpYVBs
YXliYWNrVGFyZ2V0Q29jb2EoTWVkaWFQbGF5YmFja1RhcmdldCogcmVwKQogCiBjb25zdCBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29jb2EqIHRvTWVkaWFQbGF5YmFja1RhcmdldENvY29hKGNvbnN0IE1l
ZGlhUGxheWJhY2tUYXJnZXQqIHJlcCkKIHsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihyZXAtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpBVkZvdW5k
YXRpb24pOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ocmVw
LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldDo6VGFyZ2V0VHlwZTo6QVZGb3Vu
ZGF0aW9uKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hKj4ocmVwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggMjBiMjQxMmYx
MTM2NjNjMWYzODYyZjI3YjY2MjQwMGY2Y2RiMDcyYi4uMGFjMDkzZTUwY2EyOTgwYzU5YTMyN2Ey
YzJlODgxZWNkZmIxYmJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0yODI0LDcgKzI4
MjQsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmlzQ3VycmVu
dFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MoKSBjb25zdAogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgaWYgKG1fcGxheWJhY2tUYXJnZXQpIHsKLSAgICAgICAgaWYgKG1fcGxheWJhY2tU
YXJnZXQtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpBVkZvdW5kYXRpb24p
CisgICAgICAgIGlmIChtX3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5
YmFja1RhcmdldDo6VGFyZ2V0VHlwZTo6QVZGb3VuZGF0aW9uKQogICAgICAgICAgICAgd2lyZWxl
c3NUYXJnZXQgPSBtX2F2UGxheWVyICYmIG1fYXZQbGF5ZXIuZ2V0KCkuZXh0ZXJuYWxQbGF5YmFj
a0FjdGl2ZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgd2lyZWxlc3NUYXJnZXQgPSBtX3No
b3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0ICYmIG1fcGxheWJhY2tUYXJnZXQtPmhhc0FjdGl2ZVJv
dXRlKCk7CkBAIC0yOTY4LDcgKzI5NjgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheQogewog
ICAgIG1fcGxheWJhY2tUYXJnZXQgPSBXVEZNb3ZlKHRhcmdldCk7CiAKLSAgICBtX291dHB1dENv
bnRleHQgPSBtX3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1Rh
cmdldDo6QVZGb3VuZGF0aW9uID8gdG9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EobV9wbGF5YmFj
a1RhcmdldC5nZXQoKSktPm91dHB1dENvbnRleHQoKSA6IG51bGxwdHI7CisgICAgbV9vdXRwdXRD
b250ZXh0ID0gbV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJhY2tU
YXJnZXQ6OlRhcmdldFR5cGU6OkFWRm91bmRhdGlvbiA/IHRvTWVkaWFQbGF5YmFja1RhcmdldENv
Y29hKG1fcGxheWJhY2tUYXJnZXQuZ2V0KCkpLT50YXJnZXRDb250ZXh0KCkub3V0cHV0Q29udGV4
dCgpIDogbnVsbHB0cjsKIAogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogCkBAIC0yOTg4
LDcgKzI5ODgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wgc2hvdQogCiAgICAgSU5GT19MT0coTE9H
SURFTlRJRklFUiwgc2hvdWxkUGxheSk7CiAKLSAgICBpZiAobV9wbGF5YmFja1RhcmdldC0+dGFy
Z2V0VHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6OkFWRm91bmRhdGlvbikgeworICAgIGlm
IChtX3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldDo6
VGFyZ2V0VHlwZTo6QVZGb3VuZGF0aW9uKSB7CiAgICAgICAgIEFWT3V0cHV0Q29udGV4dCAqbmV3
Q29udGV4dCA9IHNob3VsZFBsYXkgPyBtX291dHB1dENvbnRleHQuZ2V0KCkgOiBuaWw7CiAKICAg
ICAgICAgaWYgKCFtX2F2UGxheWVyKQpAQCAtMzAwNSw3ICszMDA1LDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rhcmdl
dChib29sIHNob3UKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChtX3BsYXli
YWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldDo6TW9jayk7Cisg
ICAgQVNTRVJUKG1fcGxheWJhY2tUYXJnZXQtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNr
VGFyZ2V0OjpUYXJnZXRUeXBlOjpNb2NrKTsKIAogICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUp
OwogICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDE1YTVlMmQ5MDAxM2FjOWEwN2Iz
MTEyM2I2NmQ4YmNmMTllMGI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaApAQCAtMCww
ICsxLDE0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorT0JKQ19DTEFTUyBBVk91dHB1dENvbnRl
eHQ7CitPQkpDX0NMQVNTIE5TRGF0YTsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IHsKK3B1YmxpYzoKKyAgICBlbnVtIGNs
YXNzIFR5cGUgOiB1aW50OF90IHsKKyAgICAgICAgTm9uZSwKKyAgICAgICAgQVZPdXRwdXRDb250
ZXh0LAorICAgICAgICBTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0LAorICAgICAgICBNb2NrLAor
ICAgIH07CisKKyAgICBlbnVtIGNsYXNzIE1vY2tTdGF0ZSA6IHVpbnQ4X3QgeworICAgICAgICBV
bmtub3duID0gMCwKKyAgICAgICAgT3V0cHV0RGV2aWNlVW5hdmFpbGFibGUgPSAxLAorICAgICAg
ICBPdXRwdXREZXZpY2VBdmFpbGFibGUgPSAyLAorICAgIH07CisKKyAgICBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dCgpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChSZXRhaW5QdHI8QVZPdXRwdXRDb250ZXh0PiYmKTsK
KworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KFJldGFpblB0cjxOU0RhdGE+JiYgc2Vy
aWFsaXplZE91dHB1dENvbnRleHQsIGNvbnN0IFN0cmluZyYgZGV2aWNlTmFtZSwgYm9vbCBoYXNB
Y3RpdmVSb3V0ZSwgYm9vbCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2spCisgICAgICAgIDog
bV90eXBlKFR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQpCisgICAgICAgICwgbV9zZXJp
YWxpemVkT3V0cHV0Q29udGV4dChXVEZNb3ZlKHNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KSkKKyAg
ICAgICAgLCBtX2RldmljZU5hbWUoZGV2aWNlTmFtZSkKKyAgICAgICAgLCBtX2hhc0FjdGl2ZVJv
dXRlKGhhc0FjdGl2ZVJvdXRlKQorICAgICAgICAsIG1fc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXli
YWNrKHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaykKKyAgICB7CisgICAgICAgIEFTU0VSVChz
ZXJpYWxpemVkT3V0cHV0Q29udGV4dCk7CisgICAgfQorCisgICAgTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQoY29uc3QgU3RyaW5nJiBkZXZpY2VOYW1lLCBNb2NrU3RhdGUgc3RhdGUpCisgICAg
ICAgIDogbV90eXBlKFR5cGU6Ok1vY2spCisgICAgICAgICwgbV9kZXZpY2VOYW1lKGRldmljZU5h
bWUpCisgICAgICAgICwgbV9oYXNBY3RpdmVSb3V0ZSghZGV2aWNlTmFtZS5pc0VtcHR5KCkpCisg
ICAgICAgICwgbV9zdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soIWRldmljZU5hbWUuaXNFbXB0
eSgpKQorICAgICAgICAsIG1fbW9ja1N0YXRlKHN0YXRlKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBUeXBlOjpNb2NrKTsKKyAgICB9CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3R5cGU7IH0KKyAgICBjb25zdCBTdHJpbmcmIGRldmljZU5hbWUoKSBjb25zdCB7
IHJldHVybiBtX2RldmljZU5hbWU7IH0KKyAgICBib29sIGhhc0FjdGl2ZVJvdXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNBY3RpdmVSb3V0ZTsgfQorICAgIGJvb2wgc3VwcG9ydHNSZW1vdGVWaWRl
b1BsYXliYWNrKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2s7
IH0KKworICAgIE1vY2tTdGF0ZSBtb2NrU3RhdGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBUeXBlOjpNb2NrKTsKKyAgICAgICAgcmV0dXJuIG1fbW9ja1N0YXRlOwor
ICAgIH0KKworICAgIFJldGFpblB0cjxBVk91dHB1dENvbnRleHQ+IG91dHB1dENvbnRleHQoKSBj
b25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpBVk91dHB1dENvbnRl
eHQpOworICAgICAgICByZXR1cm4gbV9vdXRwdXRDb250ZXh0OworICAgIH0KKworICAgIFJldGFp
blB0cjxOU0RhdGE+IHNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KCkgY29uc3QKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCk7Cisg
ICAgICAgIHJldHVybiBtX3NlcmlhbGl6ZWRPdXRwdXRDb250ZXh0OworICAgIH0KKworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgc2VyaWFsaXplT3V0cHV0Q29udGV4dCgpOworICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgZGVzZXJpYWxpemVPdXRwdXRDb250ZXh0KCk7CisKKyAgICBib29sIGVuY29k
aW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6
QVZPdXRwdXRDb250ZXh0IHx8IG1fdHlwZSA9PSBUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250
ZXh0OyB9CisKK3ByaXZhdGU6CisgICAgVHlwZSBtX3R5cGUgeyBUeXBlOjpOb25lIH07CisgICAg
UmV0YWluUHRyPEFWT3V0cHV0Q29udGV4dD4gbV9vdXRwdXRDb250ZXh0OworICAgIFJldGFpblB0
cjxOU0RhdGE+IG1fc2VyaWFsaXplZE91dHB1dENvbnRleHQ7CisKKyAgICBTdHJpbmcgbV9kZXZp
Y2VOYW1lOworICAgIGJvb2wgbV9oYXNBY3RpdmVSb3V0ZSB7IGZhbHNlIH07CisgICAgYm9vbCBt
X3N1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjayB7IGZhbHNlIH07CisKKyAgICBNb2NrU3RhdGUg
bV9tb2NrU3RhdGUgeyBNb2NrU3RhdGU6OlVua25vd24gfTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU+IHsKKyAgICB1c2lu
ZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6VHlwZSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OlR5cGU6Ok5vbmUsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0LAorICAg
ICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6TW9jaworICAg
ID47Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVt
VmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9j
a1N0YXRlLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9j
a1N0YXRlOjpVbmtub3duLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6TW9ja1N0YXRlOjpPdXRwdXREZXZpY2VVbmF2YWlsYWJsZSwKKyAgICAgICAgV2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6T3V0cHV0RGV2aWNlQXZh
aWxhYmxlCisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDYyYTE1ZmM2YzE3OWNkNDUwYzA0NDUyN2E2OWU1MmYy
MzY3MWU4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lm1tCkBAIC0wLDAgKzEsMTI5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0LmgiCisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPG9iamMvcnVu
dGltZS5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaD4KKyNpbXBv
cnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dChSZXRhaW5QdHI8QVZPdXRwdXRDb250ZXh0PiYmIG91dHB1dENvbnRleHQpCisgICAgOiBt
X291dHB1dENvbnRleHQob3V0cHV0Q29udGV4dCkKK3sKKyAgICBpZiAoIW1fb3V0cHV0Q29udGV4
dCkgeworICAgICAgICBtX3R5cGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6
Tm9uZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fdHlwZSA9IE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQ7CisKKyAgICBpZiAoIVttX291
dHB1dENvbnRleHQgc3VwcG9ydHNNdWx0aXBsZU91dHB1dERldmljZXNdKQorICAgICAgICBtX2Rl
dmljZU5hbWUgPSBbbV9vdXRwdXRDb250ZXh0IGRldmljZU5hbWVdOworICAgIGVsc2UgeworICAg
ICAgICBhdXRvIG91dHB1dERldmljZU5hbWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0XSk7CisgICAgICAgIGZvciAoQVZPdXRwdXREZXZpY2UgKm91dHB1dERldmljZSBp
biBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmljZXNdKQorICAgICAgICAgICAgW291dHB1dERl
dmljZU5hbWVzIGFkZE9iamVjdDpbb3V0cHV0RGV2aWNlIGRldmljZU5hbWVdXTsKKworICAgICAg
ICBtX2RldmljZU5hbWUgPSBbb3V0cHV0RGV2aWNlTmFtZXMgY29tcG9uZW50c0pvaW5lZEJ5U3Ry
aW5nOkAiICsgIl07CisgICAgfQorCisgICAgaWYgKFttX291dHB1dENvbnRleHQgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNlcyldICYmIFtt
X291dHB1dENvbnRleHQgc3VwcG9ydHNNdWx0aXBsZU91dHB1dERldmljZXNdICYmIFttX291dHB1
dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdXRwdXREZXZpY2VzKV0pIHsK
KyAgICAgICAgZm9yIChBVk91dHB1dERldmljZSAqb3V0cHV0RGV2aWNlIGluIFttX291dHB1dENv
bnRleHQgb3V0cHV0RGV2aWNlc10pIHsKKyAgICAgICAgICAgIGlmIChvdXRwdXREZXZpY2UuZGV2
aWNlRmVhdHVyZXMgJiAoQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8gfCBBVk91dHB1dERldmlj
ZUZlYXR1cmVBdWRpbykpCisgICAgICAgICAgICAgICAgbV9oYXNBY3RpdmVSb3V0ZSA9IHRydWU7
CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKFttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihvdXRwdXREZXZpY2UpXSkgeworICAgICAgICBpZiAoYXV0byAqb3V0
cHV0RGV2aWNlID0gW21fb3V0cHV0Q29udGV4dCBvdXRwdXREZXZpY2VdKQorICAgICAgICAgICAg
bV9oYXNBY3RpdmVSb3V0ZSA9IG91dHB1dERldmljZS5kZXZpY2VGZWF0dXJlcyAmIChBVk91dHB1
dERldmljZUZlYXR1cmVWaWRlbyB8IEFWT3V0cHV0RGV2aWNlRmVhdHVyZUF1ZGlvKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgbV9oYXNBY3RpdmVSb3V0ZSA9IG1fb3V0cHV0Q29udGV4dC5nZXQoKS5k
ZXZpY2VOYW1lOworCisgICAgaWYgKCFbbV9vdXRwdXRDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3Ioc3VwcG9ydHNNdWx0aXBsZU91dHB1dERldmljZXMpXSB8fCAhW21fb3V0cHV0
Q29udGV4dCBzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNlc10gfHwgIVttX291dHB1dENvbnRl
eHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdXRwdXREZXZpY2VzKV0pIHsKKyAgICAg
ICAgaWYgKGF1dG8gKm91dHB1dERldmljZSA9IFttX291dHB1dENvbnRleHQgb3V0cHV0RGV2aWNl
XSkgeworICAgICAgICAgICAgaWYgKG91dHB1dERldmljZS5kZXZpY2VGZWF0dXJlcyAmIEFWT3V0
cHV0RGV2aWNlRmVhdHVyZVZpZGVvKQorICAgICAgICAgICAgICAgIG1fc3VwcG9ydHNSZW1vdGVW
aWRlb1BsYXliYWNrID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGZv
ciAoQVZPdXRwdXREZXZpY2UgKm91dHB1dERldmljZSBpbiBbbV9vdXRwdXRDb250ZXh0IG91dHB1
dERldmljZXNdKSB7CisgICAgICAgICAgICBpZiAob3V0cHV0RGV2aWNlLmRldmljZUZlYXR1cmVz
ICYgQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8pCisgICAgICAgICAgICAgICAgbV9zdXBwb3J0
c1JlbW90ZVZpZGVvUGxheWJhY2sgPSB0cnVlOworICAgICAgICB9CisgICAgfQorfQorCitib29s
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpzZXJpYWxpemVPdXRwdXRDb250ZXh0KCkKK3sK
KyAgICBBU1NFUlQobV90eXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpB
Vk91dHB1dENvbnRleHQpOworICAgIGlmIChtX3R5cGUgIT0gTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgYXV0byBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRS
ZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTXSk7CisgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpt
X291dHB1dENvbnRleHQuZ2V0KCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07
CisgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsKKworICAgIG1fc2VyaWFsaXplZE91dHB1
dENvbnRleHQgPSBbYXJjaGl2ZXIgZW5jb2RlZERhdGFdOworICAgIG1fdHlwZSA9IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0OworICAg
IG1fb3V0cHV0Q29udGV4dC5jbGVhcigpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OmRlc2VyaWFsaXplT3V0cHV0Q29udGV4dCgpCit7
CisgICAgQVNTRVJUKG1fdHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6
U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCk7CisgICAgaWYgKG1fdHlwZSAhPSBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CisgICAgYXV0byB1
bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVh
ZGluZ0Zyb21EYXRhOm1fc2VyaWFsaXplZE91dHB1dENvbnRleHQuZ2V0KCkgZXJyb3I6bnVsbHB0
cl0pOworICAgIHVuYXJjaGl2ZXIuZ2V0KCkuZGVjb2RpbmdGYWlsdXJlUG9saWN5ID0gTlNEZWNv
ZGluZ0ZhaWx1cmVQb2xpY3lSYWlzZUV4Y2VwdGlvbjsKKyAgICBhdXRvIGFsbG93ZWRDbGFzc1Nl
dCA9IGFkb3B0TlMoW1tOU1NldCBhbGxvY10gaW5pdFdpdGhBcnJheTpAWyBQQUw6OmdldEFWT3V0
cHV0Q29udGV4dENsYXNzKCkgXV0pOworCisgICAgQHRyeSB7CisgICAgICAgIGlkIHJlc3VsdCA9
IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3NlczphbGxvd2VkQ2xhc3NTZXQuZ2V0KCkg
Zm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CisgICAgICAgIEFTU0VSVCghcmVz
dWx0IHx8IFtyZXN1bHQgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGlu
ZyldKTsKKyAgICAgICAgbV9vdXRwdXRDb250ZXh0ID0gcmVzdWx0OworICAgICAgICBtX3R5cGUg
PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0OworICAg
ICAgICBtX3NlcmlhbGl6ZWRPdXRwdXRDb250ZXh0LmNsZWFyKCk7CisgICAgICAgIHN1Y2Nlc3Mg
PSB0cnVlOworICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CisgICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBvYmplY3Qgb2YgY2xhc3MgQVZPdXRwdXRDb250
ZXh0IDogJUAiLCBleGNlcHRpb24pOworICAgIH0gQGZpbmFsbHkgeworICAgICAgICBbdW5hcmNo
aXZlciBmaW5pc2hEZWNvZGluZ107CisgICAgICAgIHVuYXJjaGl2ZXIuZ2V0KCkuZGVsZWdhdGUg
PSBuaWw7CisgICAgfQorCisgICAgcmV0dXJuIHN1Y2Nlc3M7Cit9CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJn
ZXRNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1Rh
cmdldE1vY2suY3BwCmluZGV4IDQ1NWNlZmM5ZjZmMGRmNDE5Njc3OGY3NTE5ZmI4YmI3MWY1NWQ1
MjEuLjA0MGYzZWUwZmY3NjVmMzk2YWE4ZmQ3NjJiNWI5NDQ1ZWY0ODY4ZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1v
Y2suY3BwCkBAIC0zMCwxNSArMzAsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8
TWVkaWFQbGF5YmFja1RhcmdldD4gTWVkaWFQbGF5YmFja1RhcmdldE1vY2s6OmNyZWF0ZShjb25z
dCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkK
K1JlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6Y3JlYXRl
KGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0
ZSBzdGF0ZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVBsYXliYWNrVGFyZ2V0
TW9jayhuYW1lLCBzdGF0ZSkpOwogfQogCi1NZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6TWVkaWFQ
bGF5YmFja1RhcmdldE1vY2soY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6U3RhdGUgc3RhdGUpCi0gICAgOiBNZWRpYVBsYXliYWNrVGFyZ2V0KCkKLSAgICAs
IG1fbmFtZShuYW1lKQotICAgICwgbV9zdGF0ZShzdGF0ZSkKK01lZGlhUGxheWJhY2tUYXJnZXRN
b2NrOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCisgICAgOiBtX2NvbnRleHQobmFt
ZSwgc3RhdGUpCiB7CiB9CiAKQEAgLTQ2LDcgKzQ0LDYgQEAgTWVkaWFQbGF5YmFja1RhcmdldE1v
Y2s6On5NZWRpYVBsYXliYWNrVGFyZ2V0TW9jaygpID0gZGVmYXVsdDsKIAogY29uc3QgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQmIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjp0YXJnZXRDb250
ZXh0KCkgY29uc3QKIHsKLSAgICBtX2NvbnRleHQgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dChtX25hbWUsIG1fc3RhdGUpOwogICAgIHJldHVybiBtX2NvbnRleHQ7CiB9CiAKQEAgLTU3LDcg
KzU0LDcgQEAgTWVkaWFQbGF5YmFja1RhcmdldE1vY2sqIHRvTWVkaWFQbGF5YmFja1RhcmdldE1v
Y2soTWVkaWFQbGF5YmFja1RhcmdldCogcmVwKQogCiBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0
TW9jayogdG9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0
KiByZXApCiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ocmVwLT50YXJn
ZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldDo6TW9jayk7CisgICAgUkVMRUFTRV9BU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihyZXAtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBs
YXliYWNrVGFyZ2V0OjpUYXJnZXRUeXBlOjpNb2NrKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgTWVkaWFQbGF5YmFja1RhcmdldE1vY2sqPihyZXApOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmgKaW5k
ZXggY2Q0NDliMDNjMTEzMTA2NjUyOTRjYjg5MjRkZjBlNGVlYWExM2Y0Yy4uMDcyYzhkZDA0ODRl
MzUxNmI1MmZmMDI5MDA0YzFmMDRlNTMwNWE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaApAQCAtMzYsMjYgKzM2
LDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldE1v
Y2sgOiBwdWJsaWMgTWVkaWFQbGF5YmFja1RhcmdldCB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBjcmVhdGUoY29uc3QgU3RyaW5n
JiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmLCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKTsKIAogICAgIHZpcnR1YWwgfk1l
ZGlhUGxheWJhY2tUYXJnZXRNb2NrKCk7CiAKLSAgICBUYXJnZXRUeXBlIHRhcmdldFR5cGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBNb2NrOyB9CisgICAgVGFyZ2V0VHlwZSB0YXJnZXRUeXBlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFQbGF5YmFja1RhcmdldDo6VGFyZ2V0VHlwZTo6TW9j
azsgfQogCiAgICAgY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldENvbnRl
eHQoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGhhc0FjdGl2ZVJvdXRlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9jb250ZXh0Lmhhc0FjdGl2ZVJvdXRlKCk7IH0KKyAgICBTdHJpbmcgZGV2aWNl
TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29udGV4dC5kZXZpY2VOYW1lKCk7IH0KKyAg
ICBib29sIHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fY29udGV4dC5zdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKTsgfQogCi0gICAgYm9vbCBo
YXNBY3RpdmVSb3V0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX25hbWUuaXNFbXB0eSgpOyB9
Ci0gICAgYm9vbCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAhbV9uYW1lLmlzRW1wdHkoKTsgfQotCi0gICAgU3RyaW5nIGRldmljZU5hbWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX25hbWU7IH0KLQotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpTdGF0ZSBzdGF0ZSgpIGNvbnN0OworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpNb2NrU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQubW9ja1N0YXRlKCk7
IH0KIAogcHJvdGVjdGVkOgotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKGNvbnN0IFN0cmlu
ZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgTWVkaWFQbGF5YmFj
a1RhcmdldE1vY2soY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1v
Y2tTdGF0ZSk7CiAKLSAgICBTdHJpbmcgbV9uYW1lOwotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpTdGF0ZSBtX3N0YXRlIHsgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlVua25v
d24gfTsKICAgICBtdXRhYmxlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IG1fY29udGV4dDsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlck1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5jcHAKaW5kZXggNDRmNDE0N2ExOTE4MDc1NDcy
ZWRjM2ExMjE4OTkyN2Q3ZTkyNWVmMS4uM2IwY2E2YTc4MzcyM2Y4Zjk4ZDIyNjBhYWI2YWI1YTU2
MWVlMWM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5jcHAKQEAgLTUyLDcgKzUyLDcgQEAg
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6On5NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
TW9jaygpCiBib29sIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpleHRlcm5hbE91dHB1
dERldmljZUF2YWlsYWJsZSgpCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlck1vY2s6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlIik7Ci0gICAgcmV0dXJu
IG1fc3RhdGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok91dHB1dERldmljZUF2YWls
YWJsZTsKKyAgICByZXR1cm4gbV9zdGF0ZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
TW9ja1N0YXRlOjpPdXRwdXREZXZpY2VBdmFpbGFibGU7CiB9CiAKIFJlZjxNZWRpYVBsYXliYWNr
VGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6cGxheWJhY2tUYXJnZXQoKQpA
QCAtODUsMTAgKzg1LDEwIEBAIHZvaWQgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnN0
YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpCiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0
cyIpOwogCiAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3RoaXNdIHsKLSAgICAgICAgaWYg
KG1fc3RhdGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok91dHB1dERldmljZUF2YWls
YWJsZSkKKyAgICAgICAgaWYgKG1fc3RhdGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
Ok1vY2tTdGF0ZTo6T3V0cHV0RGV2aWNlQXZhaWxhYmxlKQogICAgICAgICAgICAgYXZhaWxhYmxl
RGV2aWNlc0RpZENoYW5nZSgpOwogCi0gICAgICAgIGlmICghbV9kZXZpY2VOYW1lLmlzRW1wdHko
KSAmJiBtX3N0YXRlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpVbmtub3duKQorICAg
ICAgICBpZiAoIW1fZGV2aWNlTmFtZS5pc0VtcHR5KCkgJiYgbV9zdGF0ZSAhPSBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpVbmtub3duKQogICAgICAgICAgICAgY3VycmVu
dERldmljZURpZENoYW5nZSgpOwogICAgIH0pOwogfQpAQCAtMTAxLDE1ICsxMDEsMTUgQEAgdm9p
ZCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6c3RvcE1vbml0b3JpbmdQbGF5YmFja1Rh
cmdldHMoKQogdm9pZCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6aW52YWxpZGF0ZVBs
YXliYWNrVGFyZ2V0cygpCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlck1vY2s6OmludmFsaWRhdGVQbGF5YmFja1RhcmdldHMiKTsKLSAgICBzZXRTdGF0ZShlbXB0
eVN0cmluZygpLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VW5rbm93bik7CisgICAgc2V0
U3RhdGUoZW1wdHlTdHJpbmcoKSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0
ZTo6VW5rbm93bik7CiB9CiAKLXZvaWQgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnNl
dFN0YXRlKGNvbnN0IFN0cmluZyYgZGV2aWNlTmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6OlN0YXRlIHN0YXRlKQordm9pZCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6c2V0
U3RhdGUoY29uc3QgU3RyaW5nJiBkZXZpY2VOYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6TW9ja1N0YXRlIHN0YXRlKQogewogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJNb2NrOjpzZXRTdGF0ZSAtIG5hbWUgPSAlcywgc3RhdGUgPSAweCV4IiwgZGV2aWNl
TmFtZS51dGY4KCkuZGF0YSgpLCAodW5zaWduZWQpc3RhdGUpOwogCiAgICAgbV90YXNrUXVldWUu
ZW5xdWV1ZVRhc2soW3RoaXMsIHN0YXRlLCBkZXZpY2VOYW1lXSB7Ci0gICAgICAgIGlmIChkZXZp
Y2VOYW1lICE9IG1fZGV2aWNlTmFtZSAmJiBzdGF0ZSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6VW5rbm93bikgeworICAgICAgICBpZiAoZGV2aWNlTmFtZSAhPSBtX2RldmljZU5hbWUg
JiYgc3RhdGUgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93
bikgewogICAgICAgICAgICAgbV9kZXZpY2VOYW1lID0gZGV2aWNlTmFtZTsKICAgICAgICAgICAg
IGN1cnJlbnREZXZpY2VEaWRDaGFuZ2UoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9j
ay5oCmluZGV4IGRlMDk2Y2I4ODFmODI0MjExMTY1OGI4ZDIxODM5ZjljODg1ZDRiY2UuLjNlNzQz
OTViZjE2YjhlN2M4Y2U5Zjk3MjBlNzU5NGU0ZjJjODdlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJN
b2NrLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcE1vbml0b3JpbmdQ
bGF5YmFja1RhcmdldHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGludmFsaWRhdGVQbGF5YmFja1Rh
cmdldHMoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgc2V0U3RhdGUoY29uc3QgU3RyaW5nJiwgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKTsKKyAgICB2b2lkIHNldFN0YXRlKGNvbnN0
IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpOwogICAgIHZv
aWQgZGlzbWlzc1BvcHVwKCk7CiAKIHByaXZhdGU6CkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6
CiAKICAgICBTdHJpbmcgbV9kZXZpY2VOYW1lOwogICAgIEdlbmVyaWNUYXNrUXVldWU8VGltZXI+
IG1fdGFza1F1ZXVlOwotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBtX3N0
YXRlIHsgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlVua25vd24gfTsKKyAgICBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIG1fc3RhdGUgeyBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6TW9ja1N0YXRlOjpVbmtub3duIH07CiAgICAgYm9vbCBtX3Nob3dpbmdNZW51
IHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAz
NDQ5MmJhZjgxMTRjOTQ2ZDYzMDFhMGY2MDA2ZDVkZjE5MzQ2Y2EzLi5jMzgwMTE2OTRiYWZhY2M4
YTFmNjdmZjA4NWFmZTQ0YWJiYmMyYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50
U3RhdGUoUGFnZSYgcGFnZSkKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
CiAgICAgcGFnZS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQodHJ1ZSk7
Ci0gICAgcGFnZS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGVtcHR5U3Ry
aW5nKCksIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpVbmtub3duKTsKKyAgICBwYWdlLnNl
dE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoZW1wdHlTdHJpbmcoKSwgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93bik7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShWSURFTykKQEAgLTQ1MTAsMTQgKzQ1MTAsMTQgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
SW50ZXJuYWxzOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0
cmluZyYKICAgICBQYWdlKiBwYWdlID0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPnBhZ2Uo
KTsKICAgICBBU1NFUlQocGFnZSk7CiAKLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
U3RhdGUgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VW5rbm93bjsKKyAgICBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlID0gTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93bjsKIAogICAgIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShkZXZpY2VTdGF0ZSwgImRldmljZWF2YWlsYWJsZSIpKQotICAg
ICAgICBzdGF0ZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpPdXRwdXREZXZpY2VBdmFp
bGFibGU7CisgICAgICAgIHN0YXRlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tT
dGF0ZTo6T3V0cHV0RGV2aWNlQXZhaWxhYmxlOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGRldmljZVN0YXRlLCAiZGV2aWNldW5hdmFpbGFibGUiKSkKLSAgICAg
ICAgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6T3V0cHV0RGV2aWNlVW5hdmFp
bGFibGU7CisgICAgICAgIHN0YXRlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tT
dGF0ZTo6T3V0cHV0RGV2aWNlVW5hdmFpbGFibGU7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UoZGV2aWNlU3RhdGUsICJ1bmtub3duIikpCi0gICAgICAgIHN0YXRl
ID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlVua25vd247CisgICAgICAgIHN0YXRlID0g
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93bjsKICAgICBlbHNl
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHkuY3BwCmluZGV4IGJkMTkxZTU3MWQ3MWYyMTA3ZGZmZWM1ZGZiMjRiMGQ0NDZkY2Nl
NjcuLjE4OGZiMGMzMTNmZmFmMGMyNWVjY2RhNzQ2ZDY3YzFhYzJhN2Y3ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpCiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oPgogI2VuZGlmCiAKQEAgLTY5Nywy
MCArNjk4LDIxIEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQoYm9vbCBzaG91bGRQbGF5KQogICAgIG1fcGxheWVyLT5zZXRTaG91bGRQ
bGF5VG9QbGF5YmFja1RhcmdldChzaG91bGRQbGF5KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBs
YXllclByb3h5OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXRDb250ZXh0KQordm9pZCBSZW1vdGVNZWRpYVBs
YXllclByb3h5OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0JiYgdGFyZ2V0Q29udGV4dCkKIHsKICAgICBzd2l0Y2ggKHRhcmdldENvbnRleHQudHlw
ZSgpKSB7Ci0gICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6QVZPdXRwdXRDb250
ZXh0VHlwZToKLSAgICAgICAgbV9wbGF5ZXItPnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUodGFyZ2V0Q29udGV4dC5hdk91
dHB1dENvbnRleHQoKSkpOworICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5
cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQ6IHsKKyAgICAgICAgaWYgKHRhcmdldENvbnRl
eHQuZGVzZXJpYWxpemVPdXRwdXRDb250ZXh0KCkpCisgICAgICAgICAgICBtX3BsYXllci0+c2V0
V2lyZWxlc3NQbGF5YmFja1RhcmdldChNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZShX
VEZNb3ZlKHRhcmdldENvbnRleHQpKSk7CiAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrOgogI2lmIFBMQVRGT1JNKE1B
QykKLSAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrVHlwZToKLSAgICAg
ICAgbV9wbGF5ZXItPnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoV2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldE1vY2s6OmNyZWF0ZSh0YXJnZXRDb250ZXh0Lm1vY2tEZXZpY2VOYW1lKCksIHRh
cmdldENvbnRleHQubW9ja1N0YXRlKCkpKTsKKyAgICAgICAgbV9wbGF5ZXItPnNldFdpcmVsZXNz
UGxheWJhY2tUYXJnZXQoTWVkaWFQbGF5YmFja1RhcmdldE1vY2s6OmNyZWF0ZSh0YXJnZXRDb250
ZXh0LmRldmljZU5hbWUoKSwgdGFyZ2V0Q29udGV4dC5tb2NrU3RhdGUoKSkpOwogICAgICAgICBi
cmVhazsKLSNlbHNlCi0gICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1R5
cGU6CiAjZW5kaWYKLSAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpOb25lOgor
ICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4
dDoKKyAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpOb25lOgogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclBy
b3h5LmgKaW5kZXggMjRiNjY0MWFlNGY1ZjFlN2RmYzEwNTM3NDEzZjBlOWNmZDI1ZTIzZi4uYmRh
ZWU4YWUwNWYxMGZhNDY1NzMzNDNmNDc5YzQyOTNkNDdkZjZjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBA
IC0xNTIsNyArMTUyLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpCiAgICAgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sKTsK
ICAgICB2b2lkIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpOwotICAgIHZvaWQg
c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dCYpOworICAgIHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmKTsKICAgICB2b2lkIG1lZGlhUGxheWVyQ3Vy
cmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoYm9vbCkgZmluYWw7CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcAppbmRleCA5ZTZiYzk0NjZi
NTM5OWIyNGY1ODQwMDliOTAwYmQwN2QwMDgyMTE2Li5iZWQzMGUyOWNlNGI5YzVmNmFmNDAxYWMx
Y2M4ZjI2ZmEyYzQ2MWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNw
cApAQCAtMTA4LDcgKzEwOCwxMSBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5
OjphY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKFNob3VsZFBhdXNlIHNob3VsZAogCiB2b2lkIFJl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFN1
cHBvcnRzQWlyUGxheVZpZGVvIHN1cHBvcnRzQWlyUGxheVZpZGVvLCBSZWY8V2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldD4mJiB0YXJnZXQpCiB7Ci0gICAgbV9ncHVDb25uZWN0aW9uLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OkFjdGl2ZVZp
ZGVvUm91dGVEaWRDaGFuZ2Uoc3VwcG9ydHNBaXJQbGF5VmlkZW8sIHRhcmdldC0+dGFyZ2V0Q29u
dGV4dCgpKSwgeyB9KTsKKyAgICBhdXRvIGNvbnRleHQgPSB0YXJnZXQtPnRhcmdldENvbnRleHQo
KTsKKyAgICBpZiAoIWNvbnRleHQuc2VyaWFsaXplT3V0cHV0Q29udGV4dCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2dwdUNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6QWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShzdXBw
b3J0c0FpclBsYXlWaWRlbywgY29udGV4dCksIHsgfSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0K
aW5kZXggYmY4OGFiNjE3YmUxMjFiNGFmN2JjNGNkM2M0ZmMxOTdkZGE1OTc4Mi4uMjk4ZDg1ZDJh
MDY0Y2E0YWFjZTlhZWUzYmRkNDU5ODM4YzcwYjZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTQx
LDE0ICs0MSwyMyBAQAogI2ltcG9ydCA8VUlLaXQvVUlGb250Lmg+CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisjaW1wb3J0IDxXZWJDb3JlL01lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0Lmg+CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNlbmRpZgor
CisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2FBZGRpdGlvbnMubW0+CisjZW5kaWYKKwogI2lmIEVO
QUJMRShBUFBMRV9QQVkpCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0IDxXZWJD
b3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLmg+CiAjaW1wb3J0IDxwYWwvY29jb2EvUGFz
c0tpdFNvZnRMaW5rLmg+CiAjZW5kaWYKIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0j
aW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hQWRkaXRp
b25zLm1tPgorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisjaW1wb3J0IDxw
YWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgSVBD
IHsKQEAgLTYwNiw0ICs2MTUsNDUgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGUKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCit2b2lk
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjplbmNv
ZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQmIHRhcmdldCkKK3sKKyAgICBpZiAodGFyZ2V0LnR5cGUoKSA9PSBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0KSB7CisgICAgICAgIGlmIChb
UEFMOjpnZXRBVk91dHB1dENvbnRleHRDbGFzcygpIGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9j
b2woTlNTZWN1cmVDb2RpbmcpXSkKKyAgICAgICAgICAgIGVuY29kZXIgPDwgdGFyZ2V0Lm91dHB1
dENvbnRleHQoKTsKKyAgICB9IGVsc2UgaWYgKHRhcmdldC50eXBlKCkgPT0gTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQpCisgICAgICAg
IGVuY29kZXIgPDwgdGFyZ2V0LnNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KCk7CisgICAgZWxzZQor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworYm9vbCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERl
Y29kZXImIGRlY29kZXIsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlIGNvbnRleHRU
eXBlLCBjb25zdCBTdHJpbmcmIGRldmljZU5hbWUsIGJvb2wgaGFzQWN0aXZlUm91dGUsIGJvb2wg
c3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYg
dGFyZ2V0KQoreworICAgIEFTU0VSVChjb250ZXh0VHlwZSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6VHlwZTo6TW9jayk7CisKKyAgICBpZiAoY29udGV4dFR5cGUgPT0gTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCkgeworICAgICAgICBpZiAo
IVtQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90
b2NvbChOU1NlY3VyZUNvZGluZyldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgIGF1dG8gb3V0cHV0Q29udGV4dCA9IElQQzo6ZGVjb2RlPEFWT3V0cHV0Q29udGV4dD4oZGVj
b2RlciwgUEFMOjpnZXRBVk91dHB1dENvbnRleHRDbGFzcygpKTsKKyAgICAgICAgaWYgKCFvdXRw
dXRDb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHRhcmdldCA9
IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IHsgV1RGTW92ZSgqb3V0cHV0Q29u
dGV4dCkgfTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGNvbnRleHRU
eXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRw
dXRDb250ZXh0KSB7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IHNlcmlhbGl6ZWRPdXRwdXRD
b250ZXh0OworICAgICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIHNlcmlhbGl6ZWRPdXRw
dXRDb250ZXh0KSB8fCAhc2VyaWFsaXplZE91dHB1dENvbnRleHQpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgdGFyZ2V0ID0gV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQgeyBXVEZNb3ZlKHNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KSwgZGV2aWNlTmFtZSwg
aGFzQWN0aXZlUm91dGUsIHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjayB9OworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogfSAv
LyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcAppbmRleCAyNTVhMmNiYzZjNzdjZWYxZTYwNzBlYTQyMGY2YmRlOTBiMjQwYTcx
Li45NWI5NDllNWIxYWVhNGNiNzgxZGQ3Yzg4ZjYyOTUyMDYxYTQxZjBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTI0NTcsMTcgKzI0
NTcsMjAgQEAgdm9pZCBBcmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE0KICAgICBib29sIGhhc1BsYXRmb3JtRGF0
YSA9IHRhcmdldC5lbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKCk7CiAgICAgZW5jb2RlciA8
PCBoYXNQbGF0Zm9ybURhdGE7CiAKLSAgICBpbnQzMl90IHRhcmdldFR5cGUgPSB0YXJnZXQudHlw
ZSgpOwotICAgIGVuY29kZXIgPDwgdGFyZ2V0VHlwZTsKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6VHlwZSBjb250ZXh0VHlwZSA9IHRhcmdldC50eXBlKCk7CisgICAgZW5jb2RlciA8
PCBjb250ZXh0VHlwZTsKKworICAgIGVuY29kZXIgPDwgdGFyZ2V0LmRldmljZU5hbWUoKTsKKyAg
ICBlbmNvZGVyIDw8IHRhcmdldC5oYXNBY3RpdmVSb3V0ZSgpOworICAgIGVuY29kZXIgPDwgdGFy
Z2V0LnN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygpOwogCiAgICAgaWYgKHRhcmdldC5lbmNv
ZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkpIHsKICAgICAgICAgZW5jb2RlUGxhdGZvcm1EYXRh
KGVuY29kZXIsIHRhcmdldCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQo
dGFyZ2V0VHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1R5cGUpOwotICAg
IGVuY29kZXIgPDwgdGFyZ2V0Lm1vY2tEZXZpY2VOYW1lKCk7Ci0gICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDxpbnQzMl90Pih0YXJnZXQubW9ja1N0YXRlKCkpOworICAgIEFTU0VSVChjb250ZXh0
VHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6TW9jayk7CisgICAgZW5j
b2RlciA8PCBzdGF0aWNfY2FzdDx1aW50OF90Pih0YXJnZXQubW9ja1N0YXRlKCkpOwogfQogCiBi
b29sIEFyZ3VtZW50Q29kZXI8TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldCkKQEAgLTI0
NzYsMjQgKzI0NzksMzEgQEAgYm9vbCBBcmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE1lZGlhUGwKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGhhc1BsYXRmb3JtRGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGludDMyX3QgdGFyZ2V0VHlwZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRhcmdldFR5cGUp
KQorICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlIGNvbnRleHRUeXBlOworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoY29udGV4dFR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBpZiAoaGFzUGxhdGZvcm1EYXRhKQotICAgICAgICByZXR1cm4gZGVjb2RlUGxhdGZv
cm1EYXRhKGRlY29kZXIsIHRhcmdldCk7CisgICAgU3RyaW5nIGRldmljZU5hbWU7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShkZXZpY2VOYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgQVNTRVJUKHRhcmdldFR5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tU
eXBlKTsKKyAgICBib29sIGhhc0FjdGl2ZVJvdXRlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aGFzQWN0aXZlUm91dGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTdHJpbmcgbW9j
a0RldmljZU5hbWU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShtb2NrRGV2aWNlTmFtZSkpCisg
ICAgYm9vbCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2s7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2spKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBpbnQzMl90IG1vY2tTdGF0ZTsKKyAgICBpZiAoaGFzUGxhdGZvcm1EYXRhKQorICAg
ICAgICByZXR1cm4gZGVjb2RlUGxhdGZvcm1EYXRhKGRlY29kZXIsIGNvbnRleHRUeXBlLCBkZXZp
Y2VOYW1lLCBoYXNBY3RpdmVSb3V0ZSwgc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrLCB0YXJn
ZXQpOworCisgICAgQVNTRVJUKGNvbnRleHRUeXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpUeXBlOjpNb2NrKTsKKyAgICB1aW50OF90IG1vY2tTdGF0ZTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKG1vY2tTdGF0ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHRhcmdl
dCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KG1vY2tEZXZpY2VOYW1lLCBzdGF0aWNfY2Fz
dDxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGU+KG1vY2tTdGF0ZSkpOworICAgIHRh
cmdldCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KGRldmljZU5hbWUsIHN0YXRpY19jYXN0
PE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU+KG1vY2tTdGF0ZSkpOwogICAg
IHJldHVybiB0cnVlOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCmluZGV4IDYxOTcwODc4MjUxMTU0OGI2MmYyNzE1NmJkM2Y0N2Q3MWEz
MWVhYzIuLjMxMDcxODVhZmM3YmI1YjRkZjVjYzJhODFjNmQxZTJiZjAzMzFkOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZURhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lu
ZGV4ZWREQi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2RlLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVk
aWFTZWxlY3Rpb25PcHRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05hdGl2ZUltYWdlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4KQEAgLTE5NSwxMCArMTk2LDYg
QEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50OwogY2xhc3MgQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQotY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ7Ci0jZW5kaWYKLQogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiBzdHJ1Y3QgTWVkaWFDb25zdHJhaW50czsKICNlbmRpZgpAQCAtNjQ0
LDcgKzY0MSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Jik7CiAgICAgc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQmKTsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGVQbGF0Zm9y
bURhdGEoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
Jik7Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVBsYXRmb3JtRGF0
YShEZWNvZGVyJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmKTsKKyAgICBz
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXIm
LCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZSwgY29uc3QgU3RyaW5n
JiBkZXZpY2VOYW1lLCBib29sIGhhc0FjdGl2ZVJvdXRlLCBib29sIHN1cHBvcnRzUmVtb3RlVmlk
ZW9QbGF5YmFjaywgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmKTsKIH07CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1
bWVudENvZGVyc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1l
bnRDb2RlcnNNYWMubW0KaW5kZXggMTg2YjdiYjJkYjZmYzRlMmJjMTMzZjcxNzVjY2Y5YzM3NjM4
OTIzMC4uOTI1ZjVhNGQ1YTQ4OGQ0ODg0MDRlYzYyOTUyZDhhMjQ5YTNmMDAxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1t
CkBAIC00MiwxMiArNDIsNiBAQAogI2ltcG9ydCA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNpbXBv
cnQgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKLSNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4K
LSNpbXBvcnQgPG9iamMvcnVudGltZS5oPgotI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlv
blNvZnRMaW5rLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIElQQyB7CiAKIHZvaWQgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8pCkBAIC00MDMs
MjkgKzM5Nyw2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXI+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlCiAKICNlbmRpZgogCi0jaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLQotdm9pZCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0
YXJnZXQpCi17Ci0gICAgaWYgKFtQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgY29uZm9y
bXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQotICAgICAgICBlbmNvZGVy
IDw8IHRhcmdldC5hdk91dHB1dENvbnRleHQoKTsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERl
Y29kZXImIGRlY29kZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJn
ZXQpCi17Ci0gICAgaWYgKCFbUEFMOjpnZXRBVk91dHB1dENvbnRleHRDbGFzcygpIGNvbmZvcm1z
VG9Qcm90b2NvbDpAcHJvdG9jb2woTlNTZWN1cmVDb2RpbmcpXSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgYXV0byBjb250ZXh0ID0gSVBDOjpkZWNvZGU8QVZPdXRwdXRDb250ZXh0Pihk
ZWNvZGVyLCBQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkpOwotICAgIGlmICghY29udGV4
dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgdGFyZ2V0ID0gV2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQgeyBjb250ZXh0LT5nZXQoKSB9OwotICAgIHJldHVybiB0cnVl
OwotfQotCi0jZW5kaWYKLQogI2lmIEVOQUJMRShWSURFTykKIHZvaWQgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+OjplbmNvZGVQbGF0Zm9ybURh
dGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0
YUN1ZVZhbHVlJiB2YWx1ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IGEyZjM5Yzk1ZTNiYzRkODIwNTFiYWNkMzcxMzgwMzA3M2M0MzM3OTIuLmY3OWVl
OTNkMmQwZGNlNTU1MjI5NzI1YTJkM2E4NjQyNjkyNjIxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzgzMiwxNCArNzgzMiw2IEBAIHN0YXRpYyBjb25z
dCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgbWVkaWFSZWxhdGVkSU9LaXRDbGFzc2VzKCkKICAgICB9
KTsKICAgICByZXR1cm4gc2VydmljZXM7CiB9Ci0KLXN0YXRpYyBjb25zdCBWZWN0b3I8QVNDSUlM
aXRlcmFsPiYgdGVtcG9yYXJ5TWFjaFNlcnZpY2VzKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgYXV0
byBzZXJ2aWNlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8QVNDSUlMaXRlcmFsPiB7Ci0g
ICAgICAgICJjb20uYXBwbGUuY29yZW1lZGlhLnJvdXRpbmdjb250ZXh0LnhwYyJfcyAvLyBSZW1v
dmUgYWZ0ZXIgPHJkYXI6Ly83NjQwMzMwMj4gaXMgZml4ZWQuCi0gICAgfSk7Ci0gICAgcmV0dXJu
IHNlcnZpY2VzOwotfQogI2VuZGlmCiAKIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFn
ZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBEcmF3
aW5nQXJlYVByb3h5JiBkcmF3aW5nQXJlYSwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYm
IHdlYnNpdGVQb2xpY2llcykKQEAgLTc5MzUsOSArNzkyNyw2IEBAIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5
JiBwcm9jCiAgICAgICAgIC8vIEZJWE1FKDIwNzcxNik6IFRoZSBmb2xsb3dpbmcgc2hvdWxkIGJl
IHJlbW92ZWQgd2hlbiB0aGUgR1BVIHByb2Nlc3MgaXMgY29tcGxldGUuCiAgICAgICAgIHBhcmFt
ZXRlcnMubWVkaWFFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlc0Zvck1hY2hMb29rdXAobWVkaWFSZWxhdGVkTWFjaFNlcnZpY2VzKCksIFdURjo6bnVsbG9w
dCk7CiAgICAgICAgIHBhcmFtZXRlcnMubWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMobWVkaWFS
ZWxhdGVkSU9LaXRDbGFzc2VzKCksIFdURjo6bnVsbG9wdCk7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgLy8gRklYTUUoMjI0MzI3KTogUmVtb3ZlIHRoaXMgZWxzZSBjbGF1c2Ugb25jZSA8cmRhcjov
Lzc2NDAzMzAyPiBpcyBmaXhlZC4KLSAgICAgICAgcGFyYW1ldGVycy5tZWRpYUV4dGVuc2lvbkhh
bmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCh0ZW1w
b3JhcnlNYWNoU2VydmljZXMoKSwgV1RGOjpudWxsb3B0KTsKICAgICB9CiAKICAgICBpZiAoIXBy
ZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0Zvck1lZGlhRW5hYmxlZCgpCkBAIC05NDAzLDcgKzkz
OTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBwYWdlQ2xpZW50KCkubWVkaWFTZXNzaW9uTWFu
YWdlcigpLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChlbmFibGVkKTsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
U3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6U3RhdGUgc3RhdGUpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCiB7CiAgICAgcGFnZUNsaWVudCgp
Lm1lZGlhU2Vzc2lvbk1hbmFnZXIoKS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0
YXRlKG5hbWUsIHN0YXRlKTsKIH0KQEAgLTk0MTgsNyArOTQwNywxMiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0UGxheWJhY2tUYXJnZXQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRp
ZmllciBjb250ZQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRTZWxlY3RlZChj
b250ZXh0SWQsIHRhcmdldC0+dGFyZ2V0Q29udGV4dCgpKSk7CisgICAgYXV0byBjb250ZXh0ID0g
dGFyZ2V0LT50YXJnZXRDb250ZXh0KCk7CisgICAgQVNTRVJUKGNvbnRleHQudHlwZSgpICE9IE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0
KTsKKyAgICBpZiAocHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yTWVkaWFFbmFibGVkKCkg
JiYgY29udGV4dC50eXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFW
T3V0cHV0Q29udGV4dCAmJiAhY29udGV4dC5zZXJpYWxpemVPdXRwdXRDb250ZXh0KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBsYXliYWNrVGFyZ2V0
U2VsZWN0ZWQoY29udGV4dElkLCBjb250ZXh0KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpl
eHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgYm9vbCBhdmFpbGFibGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDliN2RjMDZmNjFmYmM0NzMyZWJiOWJiZjU0
ZDU4NTI4OWY0NzFkNjAuLjVmMTY4MmU1MjkzZDEzMzA2ZTBiYzM0MzA4MjdkYTczYzk5MTc1ZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNTY3LDcgKzE1Njcs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViQ29yZTo6
UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiwgYm9vbCBoYXNWaWRlbyk7CiAgICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tlckNs
aWVudFN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElk
ZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyk7CiAgICAg
dm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCk7Ci0gICAg
dm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYs
IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgdm9pZCBz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpOwogICAgIHZvaWQgbW9j
a01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsKIAogICAgIC8vIFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCAyY2FjM2YxY2IwNWQxY2Q3YjVmNzcxZWUxMmMw
ZTcyOWUxZjFkOGNmLi43ZTk4YjA4OGQ5MjJlZTExNDQ5NzMwYTBlNTU4MTJiZTI2NDQ3NTM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC00NzYsNyArNDc2LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBTaG93
UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0
SWRlbnRpZmllciBjb250ZXh0SWQsIFdlYkNvcmU6OkZsb2F0UmVjdCBwaWNrZXJMb2NhdGlvbiwg
Ym9vbCBoYXNWaWRlbykKICAgICBQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudFN0YXRlRGlkQ2hh
bmdlKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4
dElkLCB1bnNpZ25lZCBtZWRpYVN0YXRlKQogICAgIFNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyRW5hYmxlZChib29sIGVuYWJsZWQpCi0gICAgU2V0TW9ja01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJTdGF0ZShTdHJpbmcgbmFtZSwgdW5zaWduZWQgcGlja2VyU3RhdGUpCisgICAgU2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShTdHJpbmcgbmFtZSwgZW51bTp1aW50
OF90IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgcGlja2Vy
U3RhdGUpCiAgICAgTW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
aW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwCmluZGV4IDJhYjVm
OTEzY2RlODNjZWRjNTRhN2E4ZmUwZWUwOTUzYmNlNDQ5NWIuLjQ4NjJhZjc2NDU2N2Q2YmY2YWZm
NjhkMjg3OGY4Zjk0ZTE5NThmMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
LmNwcApAQCAtODEsMTIgKzgxLDExIEBAIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpw
cm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKGludCBwaWQpCiAKIHZvaWQgUmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFN1cHBvcnRzQWlyUGxh
eVZpZGVvIHN1cHBvcnRzQWlyUGxheVZpZGVvLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYm
IHRhcmdldENvbnRleHQpCiB7Ci0gICAgaWYgKHRhcmdldENvbnRleHQudHlwZSgpICE9IE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpBVk91dHB1dENvbnRleHRUeXBlKSB7Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIEFTU0VSVCh0YXJnZXRDb250ZXh0LnR5cGUoKSAhPSBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0KTsKKyAgICBp
ZiAodGFyZ2V0Q29udGV4dC50eXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5
cGU6OkFWT3V0cHV0Q29udGV4dCkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIFdlYkNv
cmU6Ok1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShzdXBwb3J0
c0FpclBsYXlWaWRlbywgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUo
dGFyZ2V0Q29udGV4dC5hdk91dHB1dENvbnRleHQoKSkpOworICAgIFdlYkNvcmU6Ok1lZGlhU2Vz
c2lvbkhlbHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShzdXBwb3J0c0FpclBsYXlWaWRl
bywgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUoV1RGTW92ZSh0YXJn
ZXRDb250ZXh0KSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGJjYzRjMTdh
YzI5NTIxMmNiYTY0ZGVkZDFjOWIzYTkwNmNhMDUxMDEuLjVmYzg1NTYzNzYwZWE3NWVjMTJlZDE0
YTllMjczNjgxZjI1MWMwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xMzUyLDcgKzEz
NTIsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpTZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoZW5hYmxl
ZCkpOwogfQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpTdGF0ZSBzdGF0ZSkKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSkKIHsKICAgICBtX3BhZ2Uuc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKG5h
bWUsIHN0YXRlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggNjgxMmU2NDJmZWNkY2FhN2Ix
ZjUxZmUwNzEyNTgwYTdkNDJjNGVmMC4uNTZjZjZiOTJlZDlhMTAzNmRiZDdkMDY0ODYzYzRlNzY4
MTQyY2RlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMzc4LDcgKzM3OCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViQ29yZTo6UGxheWJhY2tUYXJn
ZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29s
KSBmaW5hbDsKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFu
Z2UoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgV2ViQ29y
ZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKSBmaW5hbDsKICAgICB2b2lkIHNldE1v
Y2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sKSBmaW5hbDsKLSAgICB2b2lk
IHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKSBmaW5hbDsKKyAgICB2b2lk
IHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSkgZmluYWw7CiAgICAg
dm9pZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCgpIGZpbmFsOwog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRl
eCBhZWIyNWRhYjg0MjA2ODRhOTUwMjM4NmFiZjgzYWU2YmUzOGNlOTg2Li4xZTYzMzc5Y2FmODc3
YjU5MjY2YmZjNzAzNzA5MTYwMDk2MDM2ZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNzkxLDcgKzE3OTEsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKGJvb2wgZGlzcGF0Y2gpIHsg
bV9zaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMgPSBkaXNwYXRjaDsgfQogCiAjaWYg
RU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgdm9pZCBwbGF5YmFja1RhcmdldFNlbGVjdGVkKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0
Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0JiBvdXRwdXREZXZpY2UpIGNvbnN0OworICAgIHZvaWQgcGxheWJhY2tUYXJnZXRT
ZWxlY3RlZChXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmKSBjb25zdDsKICAgICB2b2lkIHBs
YXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0
Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGJvb2wpOwogICAgIHZvaWQgc2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRp
ZmllciwgYm9vbCk7CiAgICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tlcldhc0Rpc21pc3NlZChX
ZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXgg
NzRkYTYzNTc4ODJjZDAxMzAyMDg0MDk3ZjA2NGQyMWMzYjkxNWQwNC4uNjJlNzk4ZmU0Y2Q1ZDcw
YjliMjNmMDA4NjdiNThkYTRhMjc1OGYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTM1LDcgKzM1LDYgQEAKICNpbXBv
cnQgIkZvbnRJbmZvLmgiCiAjaW1wb3J0ICJGcmFtZUluZm9EYXRhLmgiCiAjaW1wb3J0ICJJbmpl
Y3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaCIKLSNpbXBvcnQgIlBERktpdFNvZnRMaW5rLmgiCiAj
aW1wb3J0ICJQREZQbHVnaW4uaCIKICNpbXBvcnQgIlBhZ2VCYW5uZXIuaCIKICNpbXBvcnQgIlBs
dWdpblZpZXcuaCIKQEAgLTk5LDkgKzk4LDEyIEBACiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2Eu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaD4KICNlbmRpZgogCisjaW1wb3J0
ICJQREZLaXRTb2Z0TGluay5oIgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCkBAIC0xMDQyLDE2ICsxMDQ0LDE3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkVXBk
YXRlUmVuZGVyaW5nKCkKIH0KIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
ICYmICFQTEFURk9STShJT1NfRkFNSUxZKQotdm9pZCBXZWJQYWdlOjpwbGF5YmFja1RhcmdldFNl
bGVjdGVkKFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBj
b25zdCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0Q29udGV4dCkg
Y29uc3QKK3ZvaWQgV2ViUGFnZTo6cGxheWJhY2tUYXJnZXRTZWxlY3RlZChQbGF5YmFja1Rhcmdl
dENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQmJiB0YXJnZXRDb250ZXh0KSBjb25zdAogewogICAgIHN3aXRjaCAodGFy
Z2V0Q29udGV4dC50eXBlKCkpIHsKLSAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpBVk91dHB1dENvbnRleHRUeXBlOgotICAgICAgICBtX3BhZ2UtPnNldFBsYXliYWNrVGFyZ2V0
KGNvbnRleHRJZCwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUodGFy
Z2V0Q29udGV4dC5hdk91dHB1dENvbnRleHQoKSkpOworICAgIGNhc2UgTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dDoKKyAgICBjYXNlIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0OgorICAgICAg
ICBtX3BhZ2UtPnNldFBsYXliYWNrVGFyZ2V0KGNvbnRleHRJZCwgTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hOjpjcmVhdGUoV1RGTW92ZSh0YXJnZXRDb250ZXh0KSkpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrVHlwZToKLSAgICAgICAg
bV9wYWdlLT5zZXRQbGF5YmFja1RhcmdldChjb250ZXh0SWQsIFdlYkNvcmU6Ok1lZGlhUGxheWJh
Y2tUYXJnZXRNb2NrOjpjcmVhdGUodGFyZ2V0Q29udGV4dC5tb2NrRGV2aWNlTmFtZSgpLCB0YXJn
ZXRDb250ZXh0Lm1vY2tTdGF0ZSgpKSk7CisgICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6VHlwZTo6TW9jazoKKyAgICAgICAgbV9wYWdlLT5zZXRQbGF5YmFja1RhcmdldChjb250
ZXh0SWQsIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpjcmVhdGUodGFyZ2V0Q29udGV4dC5kZXZp
Y2VOYW1lKCksIHRhcmdldENvbnRleHQubW9ja1N0YXRlKCkpKTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6Tm9uZToKKyAgICBjYXNlIE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBiODli
MjY2YzNkNzlhY2QyNDFkZjM2YjVmY2UyZjFkMmVkOGRiNzQ4Li5mM2Q0NzE2YTg5MzNkOWYyNDJm
OGVmMTIxNWE4NjYyMzQwZjg5N2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMjQzLDcgKzI0Myw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViQ29yZTo6
UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmLCBib29sIC8qIGhhc1ZpZGVvICovKSBmaW5hbDsKICAgICB2b2lkIHBsYXliYWNrVGFy
Z2V0UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGll
bnRDb250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZs
YWdzKSBmaW5hbDsKICAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5h
YmxlZChib29sKSBmaW5hbDsKLSAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6OlN0YXRlKSBmaW5hbDsKKyAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6Ok1vY2tTdGF0ZSkgZmluYWw7CiAgICAgdm9pZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlckRpc21pc3NQb3B1cCgpIG92ZXJyaWRlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQpp
bmRleCBiMzRlOGQ5ZDhlZTkxNWM2MWEwYzQ5ZmY0MGUyZDY2ZmVkMjRhMDRlLi5jOTY0ODNmZjk2
ZWI3ZmQ4Y2MxOTUyN2MzNTQ1ZDliODNiMTRhOWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC0x
MTI5LDcgKzExMjksNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBbbV93ZWJWaWV3IF9zZXRN
b2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQ6ZW5hYmxlZF07CiB9CiAKLXZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNv
bnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRl
KQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
U3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9j
a1N0YXRlIHN0YXRlKQogewogICAgIFttX3dlYlZpZXcgX3NldE1vY2tNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTmFtZTpuYW1lIHN0YXRlOnN0YXRlXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyLmgKaW5kZXggMGI5MjM4MzVlOWUxNWI2YjgwNDViNDlhZmUyOWU2YWFiMDNlY2ZjYS4uOGNh
MzI5NDdhNWI0NmUwNjdiOGU4YmFlNDQ2MzkzZWJiOTBlODZlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2hvd1BsYXli
YWNrVGFyZ2V0UGlja2VyKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGJvb2wgaGFzVmlkZW8pOwogICAgIHZv
aWQgcGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpQbGF5
YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVByb2R1Y2Vy
OjpNZWRpYVN0YXRlRmxhZ3MpOwogICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJFbmFibGVkKGJvb2wpOwotICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6U3RhdGUpOworICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJT
dGF0ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
TW9ja1N0YXRlKTsKICAgICB2b2lkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlz
c1BvcHVwKCk7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlci5tbQppbmRleCA3MzQ0MzU2NzVhYjgwOWI1MGVjNWVmMzhhYjlmNzdjYTE0OGIzMWYxLi43
ZGJkNTg5NDc1NDA1YTE2ZWJkZDBmYTliY2ZhNjJjMzM3ZTc0MTUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyLm1tCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgV2ViTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wK
ICAgICBXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWQoKS5zZXRNb2NrTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKLXZvaWQgV2ViTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJT
dGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpTdGF0ZSBzdGF0ZSkKK3ZvaWQgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6c2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCiB7CiAg
ICAgV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkKCkuc2V0TW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShuYW1lLCBzdGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNWIwZWU4YTNhYzhjMzMzYjZlZTM0
NGNkZDljM2I1NTc2NWMyNmZmMC4uNDkyYWY2MDFjZjdhYzRkZjQ2NDUwYjA4YWFhNWMzMjBlYTJl
NmU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAt
OTIzMiw3ICs5MjMyLDcgQEAgLSAodm9pZClfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJFbmFibGVkOihib29sKWVuYWJsZWQKICAgICBbc2VsZiBfZGV2aWNlUGlja2VyXS0+c2V0TW9j
a01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGVuYWJsZWQpOwogfQogCi0tICh2b2lk
KV9zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck5hbWU6KE5TU3RyaW5nICopbmFtZSBz
dGF0ZTooV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKXN0YXRlCist
ICh2b2lkKV9zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck5hbWU6KE5TU3RyaW5nICop
bmFtZSBzdGF0ZTooV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0
ZSlzdGF0ZQogewogICAgIFtzZWxmIF9kZXZpY2VQaWNrZXJdLT5zZXRNb2NrTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclN0YXRlKG5hbWUsIHN0YXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDNhZTBkM2FhMjYyZDk1
MjMzMGMxYzgyYzMyNTUwZDlhMjFhNTAxNGYuLjA0YjhjMzY4Y2NhZjg1MjRkMDg1OTM3MmQ2MDU4
ZjQ4ZjE3YTZmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3SW50ZXJuYWwuaApAQCAtMzI3LDcgKzMyNyw3IEBAIFdlYkxheW91dE1pbGVzdG9uZXMg
a2l0TGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPik7
CiAtICh2b2lkKV9zaG93UGxheWJhY2tUYXJnZXRQaWNrZXI6KFdlYkNvcmU6OlBsYXliYWNrVGFy
Z2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIpY29udGV4dElkIGxvY2F0aW9uOihjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYpbG9jYXRpb24gaGFzVmlkZW86KEJPT0wpaGFzVmlkZW87CiAtICh2b2lk
KV9wbGF5YmFja1RhcmdldFBpY2tlckNsaWVudFN0YXRlRGlkQ2hhbmdlOihXZWJDb3JlOjpQbGF5
YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyKWNvbnRleHRJZCBzdGF0ZTooV2ViQ29y
ZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKXN0YXRlOwogLSAodm9pZClfc2V0TW9j
a01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkOihib29sKWVuYWJsZWQ7Ci0tICh2b2lk
KV9zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck5hbWU6KE5TU3RyaW5nICopbmFtZSBz
dGF0ZTooV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKXN0YXRlOwor
LSAodm9pZClfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOihOU1N0cmluZyAq
KW5hbWUgc3RhdGU6KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3Rh
dGUpc3RhdGU7CiAtICh2b2lkKV9tb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQ
b3B1cDsKICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426066</attachid>
            <date>2021-04-14 18:44:33 -0700</date>
            <delta_ts>2021-04-15 08:29:11 -0700</delta_ts>
            <desc>Revise the patch after a discussion with Eric</desc>
            <filename>bug-224469-20210414184432.patch</filename>
            <type>text/plain</type>
            <size>83285</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1OTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGUyMzdiMmVhNjU2MzVj
ZmYxYzIyM2Y4ZWI0M2U3Y2RiYWVlNDEwZC4uZDE0MDA1NTJjOTNiYWJjZWMyN2Y1ODJkYTRhNjA5
ZjlhNjNlMzlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDIxLTA0LTE0ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIFdlYkNvbnRlbnQg
cHJvY2VzcyBzaG91bGQgbm90IGNyZWF0ZSBBVk91dHB1dENvbnRleHQgaW5zdGFuY2VzIHdoZW4g
bWVkaWEgaW4gR1BVIFByb2Nlc3MgaXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtb2RpZmllcyBgTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHRgIHRvIHByb3ZpZGUgaW50ZXJmYWNlcyB0byBzZXJpYWxpemUvZGVzZXJp
YWxpemUKKyAgICAgICAgYEFWT3V0cHV0Q29udGV4dGAgYW5kIG1vZGlmaWVzIGBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29jb2FgIHRvIHVzZSBgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHRgIHRvCisg
ICAgICAgIG1hbmFnZSBpdHMgYEFWT3V0cHV0Q29udGV4dGAgaW5zdGVhZCBvZiBrZWVwaW5nIGEg
cG9pbnRlciB0byB0aGUgYEFWT3V0cHV0Q29udGV4dGAgb2JqZWN0LgorICAgICAgICBXaXRoIHRo
ZXNlIGNoYW5nZXMsIGEgV2ViQ29udGVudCBwcm9jZXNzIGNhbiBmb3J3YXJkIGEgc2VyaWFsaXpl
ZCBgQVZPdXRwdXRDb250ZXh0YCBvYmplY3QKKyAgICAgICAgdG8gb3RoZXIgcHJvY2Vzc2VzIChl
LmcuLCB0aGUgR1BVIHByb2Nlc3MpIHdpdGhvdXQgZGVzZXJpYWxpemluZyBpdC4gVGhlcmVmb3Jl
LCB0aGUgV2ViQ29udGVudAorICAgICAgICBwcm9jZXNzIGRvZXMgbm90IG5lZWQgYWNjZXNzIHRv
IHRoZSBDb3JlTWVkaWEgcm91dGluZyBzZXJ2aWNlLiBTbyB3ZSBjYW4gcmVtb3ZlIHRoZSBmaXgg
KHIyNzU2NjkpCisgICAgICAgIGZvciBidWcgMjI0MzI4LgorCisgICAgICAgIENvdmVyZWQgYnkg
ZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNz
aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKToKKyAgICAgICAgKiBNb2R1
bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oOgorCisgICAgICAgICogSGVhZGVy
cy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgTW9kaWZ5IHRoZSBwcm9qZWN0IGZp
bGUgYmVjYXVzZSBgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHRgIGlzIHVzZWQgaW4gQ29jb2Eg
cG9ydHMgb25seS4KKworICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3Rh
dGUpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKToKKyAgICAgICAgKiBwYWdlL1Bh
Z2UuaDoKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXQu
aDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQuaDogUmVtb3ZlZC4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6b3V0cHV0Q29udGV4dCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJh
Y2tUYXJnZXRDb2NvYTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb2NvYTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6c3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6dGFyZ2V0
Q29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29j
b2E6Omhhc0FjdGl2ZVJvdXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJh
Y2tUYXJnZXRDb2NvYTo6ZGV2aWNlTmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjp0b01l
ZGlhUGxheWJhY2tUYXJnZXRDb2NvYSk6CisgICAgICAgIERvbid0IGRpcmVjdGx5IHVzZSBgQVZP
dXRwdXRDb250ZXh0YCBpbiB0aGlzIGNsYXNzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0V2lyZWxlc3NQbGF5YmFj
a1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCk6CisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6ZGV2aWNlTmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6aGFzQWN0aXZlUm91dGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OnN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5
YmFjayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6bW9ja1N0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpvdXRwdXRDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpzZXJpYWxpemVkT3V0cHV0Q29udGV4dCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6ZW5jb2RpbmdSZXF1
aXJlc1BsYXRmb3JtRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpzZXJpYWxp
emVPdXRwdXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpkZXNlcmlhbGl6ZU91dHB1dENvbnRleHQpOgorCisgICAgICAgICogcGxhdGZvcm0v
bW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0TW9jazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRNb2NrOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6dGFyZ2V0Q29udGV4dCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjp0b01lZGlhUGxheWJhY2tUYXJnZXRNb2NrKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6c3RhdGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2Nr
OjpzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OmludmFsaWRhdGVQbGF5YmFja1RhcmdldHMp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnNldFN0
YXRlKToKKworICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ck1vY2suaDoKKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbHM6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgor
CiAyMDIxLTA0LTE0ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgog
CiAgICAgICAgIFNlcnZpY2Ugd29ya2VyIHNvZnQtdXBkYXRlIGxvYWRzIG5vdCBiZWluZyBtYXJr
ZWQgYXBwLWJvdW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA1MDM2Y2U0ZTY4NDM4NTBmNmI4ZjVmOTlmNWU5ZWM3
ZmYzMWU0MjEuLjg4NzAxYTM5NDA3ODczODU2MGYxNDI2NGExOWNkZjk5YTNiMTAyY2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjEtMDQtMTQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFw
cGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gV2ViQ29udGVudCBwcm9jZXNzIHNob3VsZCBub3Qg
Y3JlYXRlIEFWT3V0cHV0Q29udGV4dCBpbnN0YW5jZXMgd2hlbiBtZWRpYSBpbiBHUFUgUHJvY2Vz
cyBpcyBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjQ0NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldFdpcmVsZXNzUGxheWJhY2tU
YXJnZXQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5oOgorCisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29h
Lm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZVBsYXRm
b3JtRGF0YSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+Ojpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW06Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ+OjplbmNvZGVQbGF0Zm9ybURhdGEpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlUGxh
dGZvcm1EYXRhKTogRGVsZXRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjptZWRpYVJlbGF0ZWRJT0tpdENsYXNzZXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0UGxheWJhY2tUYXJnZXQpOgor
ICAgICAgICAoV2ViS2l0Ojp0ZW1wb3JhcnlNYWNoU2VydmljZXMpOiBEZWxldGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9z
L1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZSk6CisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpwbGF5YmFja1RhcmdldFNlbGVjdGVkIGNvbnN0KToKKwogMjAyMS0wNC0x
NCAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBT
ZXJ2aWNlIHdvcmtlciBzb2Z0LXVwZGF0ZSBsb2FkcyBub3QgYmVpbmcgbWFya2VkIGFwcC1ib3Vu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDZmMWYwMjk0MDFjMGM5MjY0ZTRmMDZh
MTkzMTg2NGVkYTVlZmEyNzAuLmM0ODQ2MTc5OGY3ZDI0NzJkZmQ2MDQ5NDcyNmE0NGFiZGJhZTgz
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0w
NC0xNCAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBX
ZWJDb250ZW50IHByb2Nlc3Mgc2hvdWxkIG5vdCBjcmVhdGUgQVZPdXRwdXRDb250ZXh0IGluc3Rh
bmNlcyB3aGVuIG1lZGlhIGluIEdQVSBQcm9jZXNzIGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDQ2OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlclN0YXRlKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXIuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW06
CisgICAgICAgIChXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpzZXRNb2NrTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlclN0YXRlKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06Cisg
ICAgICAgICgtW1dlYlZpZXcgX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTmFtZTpz
dGF0ZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgorCiAyMDIxLTA0
LTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmVtb3ZlIHN1cHBvcnQgZm9yIE5QQVBJIHBsdWdpbnMgaW4gV2ViVmlldwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKaW5kZXggZTExNTA1Y2RkMGY4ZTQzYjI4NzNkYjdhMWQ1ODFmOGRmOTg0ZmViMy4uYzA0
ZjgwNGVkOTM3YzY3MGFkZWY3YjNiNjg5ZDg5NWRmYTdlN2IwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
CkBAIC0xMjY5LDcgKzEyNjksNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5cGVDYWNoZS5oCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5YmFja1RhcmdldENsaWVudC5oCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllckVudW1zLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAppbmRl
eCA2YzZhYjBlN2E2MmVjNGRhNDVlZDNkYmM5NDE0NTUxNzVjZDQ0ZDVhLi5kNWI1OTVhNGFjNDlm
ZjBlZmZlNjJiNDUyZWMzNDJiN2QzODMwNDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCkBAIC0xNjEs
NyArMTYxLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRNb2NrTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBlbmFibGUKICAgICBtX21vY2tQaWNrZXJFbmFi
bGVkID0gZW5hYmxlZDsKIH0KIAotdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRNb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQordm9pZCBXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSkKIHsK
ICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwogICAgIG1vY2tQ
aWNrZXIoKS5zZXRTdGF0ZShuYW1lLCBzdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaAppbmRleCBkN2YyOGNj
Yjc1ZTVkNzU1ZGFmNDMzNGVmNjU2Y2IxNDE5MGZhYjU0Li4xYmExMjg0ZjIzMzNjNzg0NmFiODBk
NGUxMWRiMmJmNGYwMjA2NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fp
cnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyJiBz
aGFyZWQoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TW9j
a01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TW9j
a01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1v
Y2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCk7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGFkZFBsYXliYWNr
VGFyZ2V0UGlja2VyQ2xpZW50KFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmLCBQbGF5YmFj
a1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IGVjZTQ2Y2ZhNDExOTgzNDUxNzhhNWQyN2Y3NzI3ZGI5MDczNThjYzkuLjFhYjdmMjA0ODU0
ZjgxZTE0Nzk1MDAzNmMzYzVmYzVlNjAzYWE0MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApA
QCAtMzY5LDYgKzM2OSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlUG9vbENvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01l
ZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVmOGVlNTliNzFlZTU2NDE4YWIx
NTYxNDg4ODk2MTM3YmM0MmM3NzYuLjYyMDQzZjJjYWVjNzAyODNkMTYyN2JmNDM4OTJjOGZiNzlk
YjFhOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTY5NTMsOSArNjk1Myw5IEBACiAJCTFDREQ0NUU0MEJBOUM4NDYwMEY5MDE0
NyAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRo
ID0gRGVidWdSZWxlYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
Q0RENDVFNTBCQTlDODQ2MDBGOTAxNDcgLyogV2ViQ29yZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQueGNjb25maWc7IHBhdGggPSBXZWJDb3JlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQ0RENDVFNjBCQTlDODQ2MDBGOTAxNDcgLyogQmFzZS54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkxQ0U4RDEyNTI2MTg1QkQ4MDBGQzNBRUYgLyogRGlzcGxheUxpc3RJ
dGVtQnVmZmVySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1CdWZm
ZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRTg4NjNFMjYx
MDVBNUYwMDBDODE2QyAvKiBJbk1lbW9yeURpc3BsYXlMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEluTWVtb3J5RGlzcGxheUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQ0U4ODYzRjI2MTA1QTVGMDAwQzgxNkMgLyogSW5NZW1vcnlEaXNwbGF5TGlzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbk1lbW9yeURpc3BsYXlMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDRThEMTI1MjYxODVCRDgwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJ
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZp
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFQ0IzQTgyMUYyQjY3MzAwRjQ0
NTQyIC8qIFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdI
TFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDRThEMTJCMjYxODYxNjQwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQ0U4RDEyQzI2MTg2MTY0MDBGQzNBRUYgLyogRGlzcGxheUxpc3RJ
dGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZXJhdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02OTc4LDYgKzY5NzgsNyBAQAogCQkxRDAwMjZBMzIzNzRE
NjI0MDBDQTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGljdHVyZUluUGljdHVyZVdpbmRvdy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEMDAyNkE4MjM3NEY5RDkwMENBNkNERiAvKiBK
U0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUQwMDI2QTkyMzc0RjlEOTAwQ0E2Q0RGIC8qIEpTRW50ZXJQaWN0dXJlSW5Q
aWN0dXJlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNF
bnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFEMDA4QUE1MjYyMTA4QzAwMEVFM0FERSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDJDODJCNjIzNkEzRjZBMDA1NUQ2QzUg
LyogUGljdHVyZUluUGljdHVyZVN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGljdHVyZUluUGlj
dHVyZVN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUQ0NzY1OEQyNUND
QTc3ODAwN0FGMzEyIC8qIEltYWdlRGVjb2RlcklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW1hZ2VEZWNvZGVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
REFCMzExMzI1MUQ3MjVDMDBGQzk0ODUgLyogVmlkZW9MYXllck1hbmFnZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVmlkZW9MYXllck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI2OTYwLDcgKzI2OTYxLDYgQEAKIAkJCQlDRERFMDJFOTE4QjNERkM3MDBDRjdGRjEgLyogTGVn
YWN5Q0RNU2Vzc2lvbi5oICovLAogCQkJCTA3RTNERkQwMUE5RTc4NjUwMDc2NENBOCAvKiBNZWRp
YVBsYXliYWNrVGFyZ2V0LmggKi8sCiAJCQkJMDc5MjE2NTMxQUE1NjBBQTAwQTNDMDQ5IC8qIE1l
ZGlhUGxheWJhY2tUYXJnZXRDbGllbnQuaCAqLywKLQkJCQkwN0Y4NzY4MzFBRDRBOTQ1MDA5MDU4
NDkgLyogTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaCAqLywKIAkJCQkwNzhFNDNENzFBQkI2
QzdFMDAxQzJGQTYgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5jcHAgKi8sCiAJCQkJMDc4
RTQzRDgxQUJCNkM3RTAwMUMyRkE2IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaCAqLywK
IAkJCQlFNEI0MUUwQzBDQkY5MEJEMDBBRjJFQ0UgLyogTWVkaWFQbGF5ZXIuY3BwICovLApAQCAt
MjcxNzYsNiArMjcxNzYsOCBAQAogCQkJCUFEOUZGNkUwMTkwODM5MUQwMDNCNjFFMCAvKiBJT1N1
cmZhY2VQb29sQ29jb2EubW0gKi8sCiAJCQkJQ0RDNDhBQzgyMTQ5Q0YyQTAwMjRGRDU5IC8qIE1l
ZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAgKi8sCiAJCQkJQ0RDNDhBQzcy
MTQ5Q0YyQTAwMjRGRDU5IC8qIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5o
ICovLAorCQkJCTA3Rjg3NjgzMUFENEE5NDUwMDkwNTg0OSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dC5oICovLAorCQkJCTFEMDA4QUE1MjYyMTA4QzAwMEVFM0FERSAvKiBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dC5tbSAqLywKIAkJCQkzMTY0N0ZBODI1MTYxNkJEMDAxMEY4RkIgLyog
T3BlbkdMU29mdExpbmtDb2NvYS5oICovLAogCQkJCTMxNjQ3RkE5MjUxNjE2QkQwMDEwRjhGQiAv
KiBPcGVuR0xTb2Z0TGlua0NvY29hLm1tICovLAogCQkJCTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRB
RiAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZDBiYzM1NTBkNGQwODM1YzMzM2UxZjQ4M2Y1ZjI1
YWRkMDQ4MzNjZS4uZGY0YzljMWY4NGVjYTIwZTdiMWZiZDM3YzE0MzhjNWUwYWJiMGQ1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC01MTMsNyArNTEzLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoUGxheWJhY2tUYXJnZXRD
bGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgSW50UG9pbnQmLCBib29sIC8qaXNWaWRlbyov
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURp
ZENoYW5nZShQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBNZWRpYVByb2R1
Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCkgIHsgfQotICAgIHZpcnR1YWwgdm9pZCBz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldE1v
Y2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIG1vY2tN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCkgeyB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKaW5kZXggYmQ5ZTUzODJiYzlkY2NiYWZmZWM2YjM5NDIyMjRjOGQ1ZWE2NmI5
YS4uY2RiZmZhMGM2YTA1MmIwZTFmYTAxY2QxZmQ5MzFkYmNiZmRkZjU2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCkBAIC0yOTUyLDcgKzI5NTIsNyBAQCB2b2lkIFBhZ2U6OnNldE1vY2tNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgY2hyb21lKCkuY2xpZW50
KCkuc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGVuYWJsZWQpOwogfQog
Ci12b2lkIFBhZ2U6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCit2
b2lkIFBhZ2U6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKQog
ewogICAgIGNocm9tZSgpLmNsaWVudCgpLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
U3RhdGUobmFtZSwgc3RhdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBkNDgyODE2OTA1NTNlMDQ2
ZjQ3MDM0N2VkNmJiNDUyMTVlMjA2NDlkLi43NzAxYjA4YzFlM2M5Yjk0YjBiMGNkYjA2NjE5MDlj
MjIyMjJmNDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNzMxLDcgKzczMSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihQbGF5YmFja1RhcmdldENsaWVudENvbnRl
eHRJZGVudGlmaWVyLCBjb25zdCBJbnRQb2ludCYsIGJvb2wsIFJvdXRlU2hhcmluZ1BvbGljeSwg
Y29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tlckNsaWVudFN0YXRl
RGlkQ2hhbmdlKFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIE1lZGlhUHJv
ZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmlu
ZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmlu
ZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgbW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGxheWJhY2tUYXJnZXQoUGxheWJhY2tUYXJn
ZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFj
a1RhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFj
a1RhcmdldC5oCmluZGV4IDZhZGZhOTM3ZjczZjU3M2Q5NWM5ZmNkNzRkNmQyMWI4NzNhMmY3ODgu
LjMxZDQ4ODRhZGE4YzUxN2RjZmVkMmRmZmFlMjY1ZmU0ZGI5NGZmY2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0LmgK
QEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldCA6IHB1YmxpYyBSZWZD
b3VudGVkPE1lZGlhUGxheWJhY2tUYXJnZXQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRp
YVBsYXliYWNrVGFyZ2V0KCkgPSBkZWZhdWx0OwogCi0gICAgZW51bSBUYXJnZXRUeXBlIHsgQVZG
b3VuZGF0aW9uLCBNb2NrIH07CisgICAgZW51bSBjbGFzcyBUYXJnZXRUeXBlIDogdWludDhfdCB7
IEFWRm91bmRhdGlvbiwgTW9jayB9OwogICAgIHZpcnR1YWwgVGFyZ2V0VHlwZSB0YXJnZXRUeXBl
KCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dCYgdGFyZ2V0Q29udGV4dCgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxY2U0YTNlYzMwMWU5ZDllOTc0NGRjYmYy
OWI3YTdhMTBiZjRiMzRiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0X2gKLSNkZWZpbmUgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHRfaAotCi0j
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLQotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgotCi1PQkpDX0NMQVNTIEFWT3V0cHV0Q29udGV4dDsKLQotI2lmIFBMQVRG
T1JNKENPQ09BKQotT0JKQ19DTEFTUyBOU0tleWVkQXJjaGl2ZXI7Ci1PQkpDX0NMQVNTIE5TS2V5
ZWRVbmFyY2hpdmVyOwotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQgewotcHVibGljOgotICAgIGVudW0gVHlwZSA6IGludDMy
X3QgewotICAgICAgICBOb25lLAotICAgICAgICBBVk91dHB1dENvbnRleHRUeXBlLAotICAgICAg
ICBNb2NrVHlwZSwKLSAgICB9OwotCi0gICAgZW51bSBDb250ZXh0U3RhdGUgewotICAgICAgICBV
bmtub3duID0gMCwKLSAgICAgICAgT3V0cHV0RGV2aWNlVW5hdmFpbGFibGUgPSAxLAotICAgICAg
ICBPdXRwdXREZXZpY2VBdmFpbGFibGUgPSAyLAotICAgIH07Ci0gICAgdHlwZWRlZiB1bnNpZ25l
ZCBTdGF0ZTsKLQotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KCkKLSAgICAgICAgOiBt
X3R5cGUoTm9uZSkKLSAgICB7Ci0gICAgfQotCi0gICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQoQVZPdXRwdXRDb250ZXh0ICpvdXRwdXRDb250ZXh0KQotICAgICAgICA6IG1fdHlwZShBVk91
dHB1dENvbnRleHRUeXBlKQotICAgICAgICAsIG1fb3V0cHV0Q29udGV4dChvdXRwdXRDb250ZXh0
KQotICAgIHsKLSAgICB9Ci0KLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChjb25zdCBT
dHJpbmcmIG5hbWUsIFN0YXRlIHN0YXRlKQotICAgICAgICA6IG1fdHlwZShNb2NrVHlwZSkKLSAg
ICAgICAgLCBtX25hbWUobmFtZSkKLSAgICAgICAgLCBtX3N0YXRlKHN0YXRlKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLQotICAgIGNv
bnN0IFN0cmluZyYgbW9ja0RldmljZU5hbWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBNb2NrVHlwZSk7Ci0gICAgICAgIHJldHVybiBtX25hbWU7Ci0gICAgfQotCi0g
ICAgU3RhdGUgbW9ja1N0YXRlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gTW9ja1R5cGUpOwotICAgICAgICByZXR1cm4gbV9zdGF0ZTsKLSAgICB9Ci0KLSAgICBBVk91
dHB1dENvbnRleHQgKmF2T3V0cHV0Q29udGV4dCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NF
UlQobV90eXBlID09IEFWT3V0cHV0Q29udGV4dFR5cGUpOwotICAgICAgICByZXR1cm4gbV9vdXRw
dXRDb250ZXh0OwotICAgIH0KLQotICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBBVk91dHB1dENvbnRleHRUeXBlOyB9Ci0gICAg
Ci1wcml2YXRlOgotICAgIFR5cGUgbV90eXBlIHsgTm9uZSB9OwotICAgIEFWT3V0cHV0Q29udGV4
dCAqbV9vdXRwdXRDb250ZXh0IHsgbnVsbHB0ciB9OwotICAgIFN0cmluZyBtX25hbWU7Ci0gICAg
U3RhdGUgbV9zdGF0ZSB7IFVua25vd24gfTsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShX
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0KLSNlbmRpZiAvLyBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaApp
bmRleCA2YThlMTk0NzZhMzQ3ZDhlNzQ4NDFmZjY5ZmJkNDhiMDkyMjNjODg5Li42MWQxZmFjZTE0
ODZjMTAwYzgyZjM4MTc5NTEyYzk1YzZiMzk3ZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29h
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSA6IHB1YmxpYyBNZWRpYVBsYXli
YWNrVGFyZ2V0IHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1lZGlh
UGxheWJhY2tUYXJnZXQ+IGNyZWF0ZShBVk91dHB1dENvbnRleHQgKik7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBjcmVhdGUoTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQmJik7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBz
dGF0aWMgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IGNyZWF0ZSgpOwpAQCAtNDMsMjEgKzQ0LDE4
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfk1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSgpOwog
Ci0gICAgVGFyZ2V0VHlwZSB0YXJnZXRUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQVZGb3Vu
ZGF0aW9uOyB9CisgICAgVGFyZ2V0VHlwZSB0YXJnZXRUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gVGFyZ2V0VHlwZTo6QVZGb3VuZGF0aW9uOyB9CiAKICAgICBjb25zdCBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dCYgdGFyZ2V0Q29udGV4dCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaGFz
QWN0aXZlUm91dGUoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgZGV2aWNlTmFtZSgpIGNvbnN0
IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrKCkgY29uc3QgZmlu
YWw7CiAKLSAgICBBVk91dHB1dENvbnRleHQgKm91dHB1dENvbnRleHQoKSBjb25zdCB7IHJldHVy
biBtX291dHB1dENvbnRleHQuZ2V0KCk7IH0KLQogcHJvdGVjdGVkOgotICAgIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb2NvYShBVk91dHB1dENvbnRleHQgKik7CisgICAgZXhwbGljaXQgTWVkaWFQbGF5
YmFja1RhcmdldENvY29hKEFWT3V0cHV0Q29udGV4dCAqKTsKKyAgICBleHBsaWNpdCBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29jb2EoTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmJik7CiAKLSAgICBS
ZXRhaW5QdHI8QVZPdXRwdXRDb250ZXh0PiBtX291dHB1dENvbnRleHQ7Ci0gICAgbXV0YWJsZSBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCBtX2NvbnRleHQ7Ci0gICAgU3RyaW5nIG1fZGV2aWNl
TmFtZTsKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCBtX2NvbnRleHQ7CiB9OwogCiBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EqIHRvTWVkaWFQbGF5YmFja1RhcmdldENvY29hKE1lZGlh
UGxheWJhY2tUYXJnZXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hLm1tCmluZGV4IGRhYzhjYzQ4MTU2YzJjN2U3NGVhYWM3YjRkZGU0YmMyMTc3NTE5YWEu
LmIzODJiYTdhMGIwMGIzZjE1M2QxOTI0M2UwMmVmYzdlOTBkZDYyODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNr
VGFyZ2V0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5tbQpAQCAtMzQsMTQgKzM0LDIzIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IE1lZGlh
UGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKEFWT3V0cHV0Q29udGV4dCAqY29udGV4dCkKK1Jl
ZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZShB
Vk91dHB1dENvbnRleHQgKm91dHB1dENvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgTWVkaWFQbGF5YmFja1RhcmdldENvY29hKGNvbnRleHQpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2Eob3V0cHV0Q29udGV4dCkpOwogfQogCi1N
ZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShBVk91dHB1
dENvbnRleHQgKmNvbnRleHQpCi0gICAgOiBNZWRpYVBsYXliYWNrVGFyZ2V0KCkKLSAgICAsIG1f
b3V0cHV0Q29udGV4dChjb250ZXh0KQorUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiYgY29u
dGV4dCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29j
b2EoV1RGTW92ZShjb250ZXh0KSkpOworfQorCitNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRDb2NvYShBVk91dHB1dENvbnRleHQgKm91dHB1dENvbnRleHQpCisg
ICAgOiBtX2NvbnRleHQob3V0cHV0Q29udGV4dCkKK3sKK30KKworTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQmJiBjb250ZXh0KQorICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCiB7CiB9CiAK
QEAgLTU1LDI0ICs2NCw3IEBAIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29jb2E6OmNyZWF0ZSgpCiAKIGJvb2wgTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpz
dXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKSBjb25zdAogewotICAgIGlmICghbV9vdXRwdXRD
b250ZXh0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIVttX291dHB1dENvbnRl
eHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2
aWNlcyldIHx8ICFbbV9vdXRwdXRDb250ZXh0IHN1cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2Vz
XSB8fCAhW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1
dERldmljZXMpXSkgewotICAgICAgICBpZiAoYXV0byAqb3V0cHV0RGV2aWNlID0gW21fb3V0cHV0
Q29udGV4dCBvdXRwdXREZXZpY2VdKSB7Ci0gICAgICAgICAgICBpZiAob3V0cHV0RGV2aWNlLmRl
dmljZUZlYXR1cmVzICYgQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8pCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotCi0gICAgZm9yIChBVk91dHB1dERldmljZSAqb3V0cHV0RGV2aWNlIGluIFttX291dHB1dENv
bnRleHQgb3V0cHV0RGV2aWNlc10pIHsKLSAgICAgICAgaWYgKG91dHB1dERldmljZS5kZXZpY2VG
ZWF0dXJlcyAmIEFWT3V0cHV0RGV2aWNlRmVhdHVyZVZpZGVvKQotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2NvbnRleHQu
c3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrKCk7CiB9CiAKIE1lZGlhUGxheWJhY2tUYXJnZXRD
b2NvYTo6fk1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSgpCkBAIC04MSw0NSArNzMsMTcgQEAgTWVk
aWFQbGF5YmFja1RhcmdldENvY29hOjp+TWVkaWFQbGF5YmFja1RhcmdldENvY29hKCkKIAogY29u
c3QgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6
dGFyZ2V0Q29udGV4dCgpIGNvbnN0CiB7Ci0gICAgbV9jb250ZXh0ID0gTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQobV9vdXRwdXRDb250ZXh0LmdldCgpKTsKICAgICByZXR1cm4gbV9jb250ZXh0
OwogfQogCiBib29sIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6aGFzQWN0aXZlUm91dGUoKSBj
b25zdAogewotICAgIGlmICghbV9vdXRwdXRDb250ZXh0KQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBpZiAoW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHN1cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2VzKV0gJiYgW21fb3V0cHV0Q29udGV4dCBzdXBw
b3J0c011bHRpcGxlT3V0cHV0RGV2aWNlc10gJiYgW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dERldmljZXMpXSkgewotICAgICAgICBmb3IgKEFWT3V0
cHV0RGV2aWNlICpvdXRwdXREZXZpY2UgaW4gW21fb3V0cHV0Q29udGV4dCBvdXRwdXREZXZpY2Vz
XSkgewotICAgICAgICAgICAgaWYgKG91dHB1dERldmljZS5kZXZpY2VGZWF0dXJlcyAmIChBVk91
dHB1dERldmljZUZlYXR1cmVWaWRlbyB8IEFWT3V0cHV0RGV2aWNlRmVhdHVyZUF1ZGlvKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKG91dHB1dERldmljZSldKSB7Ci0gICAgICAgIGlmIChhdXRvICpvdXRwdXRE
ZXZpY2UgPSBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmljZV0pCi0gICAgICAgICAgICByZXR1
cm4gb3V0cHV0RGV2aWNlLmRldmljZUZlYXR1cmVzICYgKEFWT3V0cHV0RGV2aWNlRmVhdHVyZVZp
ZGVvIHwgQVZPdXRwdXREZXZpY2VGZWF0dXJlQXVkaW8pOwotICAgIH0KLQotICAgIHJldHVybiBt
X291dHB1dENvbnRleHQuZ2V0KCkuZGV2aWNlTmFtZTsKKyAgICByZXR1cm4gbV9jb250ZXh0Lmhh
c0FjdGl2ZVJvdXRlKCk7CiB9CiAKIFN0cmluZyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmRl
dmljZU5hbWUoKSBjb25zdAogewotICAgIGlmICghbV9vdXRwdXRDb250ZXh0KQotICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIGlmICghW21fb3V0cHV0Q29udGV4dCBzdXBwb3J0
c011bHRpcGxlT3V0cHV0RGV2aWNlc10pCi0gICAgICAgIHJldHVybiBbbV9vdXRwdXRDb250ZXh0
IGRldmljZU5hbWVdOwotCi0gICAgYXV0byBvdXRwdXREZXZpY2VOYW1lcyA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotICAgIGZvciAoQVZPdXRwdXREZXZpY2UgKm91
dHB1dERldmljZSBpbiBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmljZXNdKQotICAgICAgICBb
b3V0cHV0RGV2aWNlTmFtZXMgYWRkT2JqZWN0OltvdXRwdXREZXZpY2UgZGV2aWNlTmFtZV1dOwot
Ci0gICAgcmV0dXJuIFtvdXRwdXREZXZpY2VOYW1lcyBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6
QCIgKyAiXTsKKyAgICByZXR1cm4gbV9jb250ZXh0LmRldmljZU5hbWUoKTsKIH0KIAogTWVkaWFQ
bGF5YmFja1RhcmdldENvY29hKiB0b01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShNZWRpYVBsYXli
YWNrVGFyZ2V0KiByZXApCkBAIC0xMjksNyArOTMsNyBAQCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29j
b2EqIHRvTWVkaWFQbGF5YmFja1RhcmdldENvY29hKE1lZGlhUGxheWJhY2tUYXJnZXQqIHJlcCkK
IAogY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENvY29hKiB0b01lZGlhUGxheWJhY2tUYXJnZXRD
b2NvYShjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0KiByZXApCiB7Ci0gICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04ocmVwLT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1Rh
cmdldDo6QVZGb3VuZGF0aW9uKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKHJlcC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6OlRhcmdl
dFR5cGU6OkFWRm91bmRhdGlvbik7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE1lZGlh
UGxheWJhY2tUYXJnZXRDb2NvYSo+KHJlcCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmlu
ZGV4IDIwYjI0MTJmMTEzNjYzYzFmMzg2MmYyN2I2NjI0MDBmNmNkYjA3MmIuLjBhYzA5M2U1MGNh
Mjk4MGM1OWEzMjdhMmMyZTg4MWVjZGZiMWJiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpA
QCAtMjgyNCw3ICsyODI0LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjppc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKCkgY29uc3QKIAogI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtX3BsYXliYWNrVGFyZ2V0KSB7Ci0gICAgICAgIGlm
IChtX3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldDo6
QVZGb3VuZGF0aW9uKQorICAgICAgICBpZiAobV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgp
ID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6OlRhcmdldFR5cGU6OkFWRm91bmRhdGlvbikKICAgICAg
ICAgICAgIHdpcmVsZXNzVGFyZ2V0ID0gbV9hdlBsYXllciAmJiBtX2F2UGxheWVyLmdldCgpLmV4
dGVybmFsUGxheWJhY2tBY3RpdmU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHdpcmVsZXNz
VGFyZ2V0ID0gbV9zaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCAmJiBtX3BsYXliYWNrVGFyZ2V0
LT5oYXNBY3RpdmVSb3V0ZSgpOwpAQCAtMjk2OCw3ICsyOTY4LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxN
ZWRpYVBsYXkKIHsKICAgICBtX3BsYXliYWNrVGFyZ2V0ID0gV1RGTW92ZSh0YXJnZXQpOwogCi0g
ICAgbV9vdXRwdXRDb250ZXh0ID0gbV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09IE1l
ZGlhUGxheWJhY2tUYXJnZXQ6OkFWRm91bmRhdGlvbiA/IHRvTWVkaWFQbGF5YmFja1RhcmdldENv
Y29hKG1fcGxheWJhY2tUYXJnZXQuZ2V0KCkpLT5vdXRwdXRDb250ZXh0KCkgOiBudWxscHRyOwor
ICAgIG1fb3V0cHV0Q29udGV4dCA9IG1fcGxheWJhY2tUYXJnZXQtPnRhcmdldFR5cGUoKSA9PSBN
ZWRpYVBsYXliYWNrVGFyZ2V0OjpUYXJnZXRUeXBlOjpBVkZvdW5kYXRpb24gPyB0b01lZGlhUGxh
eWJhY2tUYXJnZXRDb2NvYShtX3BsYXliYWNrVGFyZ2V0LmdldCgpKS0+dGFyZ2V0Q29udGV4dCgp
Lm91dHB1dENvbnRleHQoKSA6IG51bGxwdHI7CiAKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVS
KTsKIApAQCAtMjk4OCw3ICsyOTg4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sIHNob3UKIAogICAg
IElORk9fTE9HKExPR0lERU5USUZJRVIsIHNob3VsZFBsYXkpOwogCi0gICAgaWYgKG1fcGxheWJh
Y2tUYXJnZXQtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpBVkZvdW5kYXRp
b24pIHsKKyAgICBpZiAobV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxh
eWJhY2tUYXJnZXQ6OlRhcmdldFR5cGU6OkFWRm91bmRhdGlvbikgewogICAgICAgICBBVk91dHB1
dENvbnRleHQgKm5ld0NvbnRleHQgPSBzaG91bGRQbGF5ID8gbV9vdXRwdXRDb250ZXh0LmdldCgp
IDogbmlsOwogCiAgICAgICAgIGlmICghbV9hdlBsYXllcikKQEAgLTMwMDUsNyArMzAwNSw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQoYm9vbCBzaG91CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBB
U1NFUlQobV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJn
ZXQ6Ok1vY2spOworICAgIEFTU0VSVChtX3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0g
TWVkaWFQbGF5YmFja1RhcmdldDo6VGFyZ2V0VHlwZTo6TW9jayk7CiAKICAgICBzZXREZWxheUNh
bGxiYWNrcyh0cnVlKTsKICAgICBhdXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDZhNTBiMDA2
ZWVhMGE4YjIzNjI5NjE3NWZiZGY1YTg0Yzk3ZWMwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0LmgKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKK09CSkNfQ0xBU1Mg
QVZPdXRwdXRDb250ZXh0OworT0JKQ19DTEFTUyBOU0RhdGE7CisjZW5kaWYKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCB7CitwdWJsaWM6
CisgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7CisgICAgICAgIE5vbmUsCisgICAgICAg
IEFWT3V0cHV0Q29udGV4dCwKKyAgICAgICAgU2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCwKKyAg
ICAgICAgTW9jaywKKyAgICB9OworCisgICAgZW51bSBjbGFzcyBNb2NrU3RhdGUgOiB1aW50OF90
IHsKKyAgICAgICAgVW5rbm93biA9IDAsCisgICAgICAgIE91dHB1dERldmljZVVuYXZhaWxhYmxl
ID0gMSwKKyAgICAgICAgT3V0cHV0RGV2aWNlQXZhaWxhYmxlID0gMiwKKyAgICB9OworCisgICAg
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQoUmV0YWluUHRyPEFWT3V0cHV0
Q29udGV4dD4mJik7CisKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChSZXRhaW5QdHI8
TlNEYXRhPiYmIHNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0LCBib29sIGhhc0FjdGl2ZVJvdXRlKQor
ICAgICAgICA6IG1fdHlwZShUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0KQorICAgICAg
ICAsIG1fc2VyaWFsaXplZE91dHB1dENvbnRleHQoV1RGTW92ZShzZXJpYWxpemVkT3V0cHV0Q29u
dGV4dCkpCisgICAgICAgICwgbV9jYWNoZWRIYXNBY3RpdmVSb3V0ZShoYXNBY3RpdmVSb3V0ZSkK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX3NlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KTsKKyAgICB9
CisKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChjb25zdCBTdHJpbmcmIG1vY2tEZXZp
Y2VOYW1lLCBNb2NrU3RhdGUgc3RhdGUpCisgICAgICAgIDogbV90eXBlKFR5cGU6Ok1vY2spCisg
ICAgICAgICwgbV9tb2NrRGV2aWNlTmFtZShtb2NrRGV2aWNlTmFtZSkKKyAgICAgICAgLCBtX21v
Y2tTdGF0ZShzdGF0ZSkKKyAgICB7CisgICAgfQorCisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGRldmljZU5hbWUoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0FjdGl2ZVJvdXRlKCkgY29uc3Q7Cisg
ICAgYm9vbCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKSBjb25zdDsKKworICAgIE1vY2tT
dGF0ZSBtb2NrU3RhdGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBU
eXBlOjpNb2NrKTsKKyAgICAgICAgcmV0dXJuIG1fbW9ja1N0YXRlOworICAgIH0KKworICAgIFJl
dGFpblB0cjxBVk91dHB1dENvbnRleHQ+IG91dHB1dENvbnRleHQoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpBVk91dHB1dENvbnRleHQpOworICAgICAgICBy
ZXR1cm4gbV9vdXRwdXRDb250ZXh0OworICAgIH0KKworICAgIFJldGFpblB0cjxOU0RhdGE+IHNl
cmlhbGl6ZWRPdXRwdXRDb250ZXh0KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gVHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCk7CisgICAgICAgIHJldHVybiBt
X3NlcmlhbGl6ZWRPdXRwdXRDb250ZXh0OworICAgIH0KKworICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgc2VyaWFsaXplT3V0cHV0Q29udGV4dCgpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZGVz
ZXJpYWxpemVPdXRwdXRDb250ZXh0KCk7CisKKyAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0
Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6QVZPdXRwdXRDb250ZXh0
IHx8IG1fdHlwZSA9PSBUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0OyB9CisKK3ByaXZh
dGU6CisgICAgVHlwZSBtX3R5cGUgeyBUeXBlOjpOb25lIH07CisgICAgUmV0YWluUHRyPEFWT3V0
cHV0Q29udGV4dD4gbV9vdXRwdXRDb250ZXh0OworICAgIFJldGFpblB0cjxOU0RhdGE+IG1fc2Vy
aWFsaXplZE91dHB1dENvbnRleHQ7CisgICAgYm9vbCBtX2NhY2hlZEhhc0FjdGl2ZVJvdXRlIHsg
ZmFsc2UgfTsKKworICAgIFN0cmluZyBtX21vY2tEZXZpY2VOYW1lOworICAgIE1vY2tTdGF0ZSBt
X21vY2tTdGF0ZSB7IE1vY2tTdGF0ZTo6VW5rbm93biB9OworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0
czxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZT4geworICAgIHVzaW5n
IHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpUeXBlLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6VHlwZTo6Tm9uZSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQsCisgICAg
ICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrCisgICAg
PjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1W
YWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2Nr
U3RhdGUsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2Nr
U3RhdGU6OlVua25vd24sCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpNb2NrU3RhdGU6Ok91dHB1dERldmljZVVuYXZhaWxhYmxlLAorICAgICAgICBXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpPdXRwdXREZXZpY2VBdmFp
bGFibGUKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTM4ZDdhYjIyNTY0Y2Y0NGEyNWM4MDhlZGNhZTk5MjQ3
MjI4ODA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW0KQEAgLTAsMCArMSwxNjMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQuaCIKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
CisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8b2JqYy9ydW50
aW1lLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oPgorI2ltcG9y
dCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0KFJldGFpblB0cjxBVk91dHB1dENvbnRleHQ+JiYgb3V0cHV0Q29udGV4dCkKKyAgICA6IG1f
b3V0cHV0Q29udGV4dChvdXRwdXRDb250ZXh0KQoreworICAgIGlmIChtX291dHB1dENvbnRleHQp
CisgICAgICAgIG1fdHlwZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91
dHB1dENvbnRleHQ7Cit9CisKK1N0cmluZyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6ZGV2
aWNlTmFtZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6VHlwZTo6TW9jayB8fCBtX3R5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCk7CisKKyAgICBpZiAobV90eXBlID09IE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrKQorICAgICAgICByZXR1cm4gbV9tb2Nr
RGV2aWNlTmFtZTsKKworICAgIEFTU0VSVChtX3R5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCk7CisgICAgU3RyaW5nIGRldmljZU5hbWU7Cisg
ICAgaWYgKCFbbV9vdXRwdXRDb250ZXh0IHN1cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2VzXSkK
KyAgICAgICAgZGV2aWNlTmFtZSA9IFttX291dHB1dENvbnRleHQgZGV2aWNlTmFtZV07CisgICAg
ZWxzZSB7CisgICAgICAgIGF1dG8gb3V0cHV0RGV2aWNlTmFtZXMgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgZm9yIChBVk91dHB1dERldmljZSAqb3V0
cHV0RGV2aWNlIGluIFttX291dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlc10pCisgICAgICAgICAg
ICBbb3V0cHV0RGV2aWNlTmFtZXMgYWRkT2JqZWN0OltvdXRwdXREZXZpY2UgZGV2aWNlTmFtZV1d
OworCisgICAgICAgIGRldmljZU5hbWUgPSBbb3V0cHV0RGV2aWNlTmFtZXMgY29tcG9uZW50c0pv
aW5lZEJ5U3RyaW5nOkAiICsgIl07CisgICAgfQorCisgICAgcmV0dXJuIGRldmljZU5hbWU7Cit9
Citib29sIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpoYXNBY3RpdmVSb3V0ZSgpIGNvbnN0
Cit7CisgICAgQVNTRVJUKG1fdHlwZSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlw
ZTo6Tm9uZSk7CisgICAgaWYgKG1fdHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
VHlwZTo6TW9jaykKKyAgICAgICAgcmV0dXJuICFtX21vY2tEZXZpY2VOYW1lLmlzRW1wdHkoKTsK
KworICAgIC8vIEZJWE1FOiBJdCBtYXkgbm90IGJlIHNhZmUgdG8gdXNlIHRoZSBjYWNoZWQgYGhh
c0FjdGl2ZVJvdXRlYCBvZiBhIHNlcmlhbGl6ZWQgQVZPdXRwdXRDb250ZXh0CisgICAgaWYgKG1f
dHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0
cHV0Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIG1fY2FjaGVkSGFzQWN0aXZlUm91dGU7CisKKyAg
ICBBU1NFUlQobV90eXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91
dHB1dENvbnRleHQpOworICAgIGJvb2wgaGFzQWN0aXZlUm91dGUgPSBmYWxzZTsKKyAgICBpZiAo
W21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN1cHBvcnRzTXVs
dGlwbGVPdXRwdXREZXZpY2VzKV0gJiYgW21fb3V0cHV0Q29udGV4dCBzdXBwb3J0c011bHRpcGxl
T3V0cHV0RGV2aWNlc10gJiYgW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKG91dHB1dERldmljZXMpXSkgeworICAgICAgICBmb3IgKEFWT3V0cHV0RGV2aWNlICpv
dXRwdXREZXZpY2UgaW4gW21fb3V0cHV0Q29udGV4dCBvdXRwdXREZXZpY2VzXSkgeworICAgICAg
ICAgICAgaWYgKG91dHB1dERldmljZS5kZXZpY2VGZWF0dXJlcyAmIChBVk91dHB1dERldmljZUZl
YXR1cmVWaWRlbyB8IEFWT3V0cHV0RGV2aWNlRmVhdHVyZUF1ZGlvKSkKKyAgICAgICAgICAgICAg
ICBoYXNBY3RpdmVSb3V0ZSA9IHRydWU7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKFttX291
dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdXRwdXREZXZpY2UpXSkg
eworICAgICAgICBpZiAoYXV0byAqb3V0cHV0RGV2aWNlID0gW21fb3V0cHV0Q29udGV4dCBvdXRw
dXREZXZpY2VdKQorICAgICAgICAgICAgaGFzQWN0aXZlUm91dGUgPSBvdXRwdXREZXZpY2UuZGV2
aWNlRmVhdHVyZXMgJiAoQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8gfCBBVk91dHB1dERldmlj
ZUZlYXR1cmVBdWRpbyk7CisgICAgfSBlbHNlCisgICAgICAgIGhhc0FjdGl2ZVJvdXRlID0gbV9v
dXRwdXRDb250ZXh0LmdldCgpLmRldmljZU5hbWU7CisKKyAgICByZXR1cm4gaGFzQWN0aXZlUm91
dGU7Cit9Citib29sIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpzdXBwb3J0c1JlbW90ZVZp
ZGVvUGxheWJhY2soKSBjb25zdAoreworICAgIEFTU0VSVChtX3R5cGUgPT0gTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2sgfHwgbV90eXBlID09IE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQpOworICAgIGlmIChtX3R5cGUgPT0gTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2spCisgICAgICAgIHJldHVybiAhbV9t
b2NrRGV2aWNlTmFtZS5pc0VtcHR5KCk7CisKKyAgICBBU1NFUlQobV90eXBlID09IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQpOworICAgIGJvb2wgc3Vw
cG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrID0gZmFsc2U7CisgICAgaWYgKCFbbV9vdXRwdXRDb250
ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc3VwcG9ydHNNdWx0aXBsZU91dHB1dERl
dmljZXMpXSB8fCAhW21fb3V0cHV0Q29udGV4dCBzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNl
c10gfHwgIVttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdXRw
dXREZXZpY2VzKV0pIHsKKyAgICAgICAgaWYgKGF1dG8gKm91dHB1dERldmljZSA9IFttX291dHB1
dENvbnRleHQgb3V0cHV0RGV2aWNlXSkgeworICAgICAgICAgICAgaWYgKG91dHB1dERldmljZS5k
ZXZpY2VGZWF0dXJlcyAmIEFWT3V0cHV0RGV2aWNlRmVhdHVyZVZpZGVvKQorICAgICAgICAgICAg
ICAgIHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjayA9IHRydWU7CisgICAgICAgIH0KKyAgICB9
IGVsc2UgeworICAgICAgICBmb3IgKEFWT3V0cHV0RGV2aWNlICpvdXRwdXREZXZpY2UgaW4gW21f
b3V0cHV0Q29udGV4dCBvdXRwdXREZXZpY2VzXSkgeworICAgICAgICAgICAgaWYgKG91dHB1dERl
dmljZS5kZXZpY2VGZWF0dXJlcyAmIEFWT3V0cHV0RGV2aWNlRmVhdHVyZVZpZGVvKQorICAgICAg
ICAgICAgICAgIHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjayA9IHRydWU7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICByZXR1cm4gc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrOworfQorCiti
b29sIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpzZXJpYWxpemVPdXRwdXRDb250ZXh0KCkK
K3sKKyAgICBBU1NFUlQobV90eXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBl
OjpBVk91dHB1dENvbnRleHQpOworICAgIGlmIChtX3R5cGUgIT0gTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgYXV0byBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGlu
aXRSZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTXSk7CisgICAgW2FyY2hpdmVyIGVuY29kZU9iamVj
dDptX291dHB1dENvbnRleHQuZ2V0KCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtl
eV07CisgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsKKworICAgIG1fc2VyaWFsaXplZE91
dHB1dENvbnRleHQgPSBbYXJjaGl2ZXIgZW5jb2RlZERhdGFdOworICAgIG1fdHlwZSA9IE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0Owor
ICAgIG1fb3V0cHV0Q29udGV4dC5jbGVhcigpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OmRlc2VyaWFsaXplT3V0cHV0Q29udGV4dCgp
Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlw
ZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCk7CisgICAgaWYgKG1fdHlwZSAhPSBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CisgICAgYXV0
byB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9y
UmVhZGluZ0Zyb21EYXRhOm1fc2VyaWFsaXplZE91dHB1dENvbnRleHQuZ2V0KCkgZXJyb3I6bnVs
bHB0cl0pOworICAgIHVuYXJjaGl2ZXIuZ2V0KCkuZGVjb2RpbmdGYWlsdXJlUG9saWN5ID0gTlNE
ZWNvZGluZ0ZhaWx1cmVQb2xpY3lSYWlzZUV4Y2VwdGlvbjsKKyAgICBhdXRvIGFsbG93ZWRDbGFz
c1NldCA9IGFkb3B0TlMoW1tOU1NldCBhbGxvY10gaW5pdFdpdGhBcnJheTpAWyBQQUw6OmdldEFW
T3V0cHV0Q29udGV4dENsYXNzKCkgXV0pOworCisgICAgQHRyeSB7CisgICAgICAgIGlkIHJlc3Vs
dCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3NlczphbGxvd2VkQ2xhc3NTZXQuZ2V0
KCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CisgICAgICAgIEFTU0VSVChy
ZXN1bHQpOworICAgICAgICBpZiAocmVzdWx0KSB7CisgICAgICAgICAgICBtX291dHB1dENvbnRl
eHQgPSByZXN1bHQ7CisgICAgICAgICAgICBtX3R5cGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0OworICAgICAgICAgICAgbV9zZXJpYWxpemVkT3V0
cHV0Q29udGV4dC5jbGVhcigpOworICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgICAg
IH0KKyAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgeworICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBkZWNvZGUgb2JqZWN0IG9mIGNsYXNzIEFWT3V0cHV0Q29udGV4dCA6
ICVAIiwgZXhjZXB0aW9uKTsKKyAgICB9IEBmaW5hbGx5IHsKKyAgICAgICAgW3VuYXJjaGl2ZXIg
ZmluaXNoRGVjb2RpbmddOworICAgICAgICB1bmFyY2hpdmVyLmdldCgpLmRlbGVnYXRlID0gbmls
OworICAgIH0KKworICAgIHJldHVybiBzdWNjZXNzOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9j
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRN
b2NrLmNwcAppbmRleCA0NTVjZWZjOWY2ZjBkZjQxOTY3NzhmNzUxOWZiOGJiNzFmNTVkNTIxLi4w
NDBmM2VlMGZmNzY1ZjM5NmFhOGZkNzYyYjViOTQ0NWVmNDg2OGZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmNw
cApAQCAtMzAsMTUgKzMwLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1lZGlh
UGxheWJhY2tUYXJnZXQ+IE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpjcmVhdGUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCitSZWY8
TWVkaWFQbGF5YmFja1RhcmdldD4gTWVkaWFQbGF5YmFja1RhcmdldE1vY2s6OmNyZWF0ZShjb25z
dCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3Rh
dGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFQbGF5YmFja1RhcmdldE1vY2so
bmFtZSwgc3RhdGUpKTsKIH0KIAotTWVkaWFQbGF5YmFja1RhcmdldE1vY2s6Ok1lZGlhUGxheWJh
Y2tUYXJnZXRNb2NrKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6OlN0YXRlIHN0YXRlKQotICAgIDogTWVkaWFQbGF5YmFja1RhcmdldCgpCi0gICAgLCBtX25h
bWUobmFtZSkKLSAgICAsIG1fc3RhdGUoc3RhdGUpCitNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6
TWVkaWFQbGF5YmFja1RhcmdldE1vY2soY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKQorICAgIDogbV9jb250ZXh0KG5hbWUsIHN0
YXRlKQogewogfQogCkBAIC00Niw3ICs0NCw2IEBAIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjp+
TWVkaWFQbGF5YmFja1RhcmdldE1vY2soKSA9IGRlZmF1bHQ7CiAKIGNvbnN0IE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0JiBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6dGFyZ2V0Q29udGV4dCgp
IGNvbnN0CiB7Ci0gICAgbV9jb250ZXh0ID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQobV9u
YW1lLCBtX3N0YXRlKTsKICAgICByZXR1cm4gbV9jb250ZXh0OwogfQogCkBAIC01Nyw3ICs1NCw3
IEBAIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKiB0b01lZGlhUGxheWJhY2tUYXJnZXRNb2NrKE1l
ZGlhUGxheWJhY2tUYXJnZXQqIHJlcCkKIAogY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldE1vY2sq
IHRvTWVkaWFQbGF5YmFja1RhcmdldE1vY2soY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldCogcmVw
KQogewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHJlcC0+dGFyZ2V0VHlw
ZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6Ok1vY2spOworICAgIFJFTEVBU0VfQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04ocmVwLT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFj
a1RhcmdldDo6VGFyZ2V0VHlwZTo6TW9jayk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKj4ocmVwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oCmluZGV4IGNk
NDQ5YjAzYzExMzEwNjY1Mjk0Y2I4OTI0ZGYwZTRlZWFhMTNmNGMuLjA3MmM4ZGQwNDg0ZTM1MTZi
NTJmZjAyOTAwNGMxZjA0ZTUzMDVhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmgKQEAgLTM2LDI2ICszNiwyMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrIDog
cHVibGljIE1lZGlhUGxheWJhY2tUYXJnZXQgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gY3JlYXRlKGNvbnN0IFN0cmluZyYsIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSk7CiAKICAgICB2aXJ0dWFsIH5NZWRpYVBs
YXliYWNrVGFyZ2V0TW9jaygpOwogCi0gICAgVGFyZ2V0VHlwZSB0YXJnZXRUeXBlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gTW9jazsgfQorICAgIFRhcmdldFR5cGUgdGFyZ2V0VHlwZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWJhY2tUYXJnZXQ6OlRhcmdldFR5cGU6Ok1vY2s7IH0K
IAogICAgIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXRDb250ZXh0KCkg
Y29uc3QgZmluYWw7CisgICAgYm9vbCBoYXNBY3RpdmVSb3V0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fY29udGV4dC5oYXNBY3RpdmVSb3V0ZSgpOyB9CisgICAgU3RyaW5nIGRldmljZU5hbWUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbnRleHQuZGV2aWNlTmFtZSgpOyB9CisgICAgYm9v
bCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Nv
bnRleHQuc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrKCk7IH0KIAotICAgIGJvb2wgaGFzQWN0
aXZlUm91dGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9uYW1lLmlzRW1wdHkoKTsgfQotICAg
IGJvb2wgc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
IW1fbmFtZS5pc0VtcHR5KCk7IH0KLQotICAgIFN0cmluZyBkZXZpY2VOYW1lKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9uYW1lOyB9Ci0KLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
U3RhdGUgc3RhdGUoKSBjb25zdDsKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9j
a1N0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0Lm1vY2tTdGF0ZSgpOyB9CiAK
IHByb3RlY3RlZDoKLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhjb25zdCBTdHJpbmcmLCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpOworICAgIE1lZGlhUGxheWJhY2tUYXJn
ZXRNb2NrKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3Rh
dGUpOwogCi0gICAgU3RyaW5nIG1fbmFtZTsKLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6U3RhdGUgbV9zdGF0ZSB7IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpVbmtub3duIH07
CiAgICAgbXV0YWJsZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCBtX2NvbnRleHQ7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwCmluZGV4IDQ0ZjQxNDdhMTkxODA3NTQ3MmVkYzNh
MTIxODk5MjdkN2U5MjVlZjEuLjNiMGNhNmE3ODM3MjNmOGY5OGQyMjYwYWFiNmFiNWE1NjFlZTFj
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlck1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwCkBAIC01Miw3ICs1Miw3IEBAIE1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjp+TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2so
KQogYm9vbCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6ZXh0ZXJuYWxPdXRwdXREZXZp
Y2VBdmFpbGFibGUoKQogewogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJNb2NrOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSIpOwotICAgIHJldHVybiBtX3N0
YXRlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpPdXRwdXREZXZpY2VBdmFpbGFibGU7
CisgICAgcmV0dXJuIG1fc3RhdGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tT
dGF0ZTo6T3V0cHV0RGV2aWNlQXZhaWxhYmxlOwogfQogCiBSZWY8TWVkaWFQbGF5YmFja1Rhcmdl
dD4gTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnBsYXliYWNrVGFyZ2V0KCkKQEAgLTg1
LDEwICs4NSwxMCBAQCB2b2lkIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpzdGFydGlu
Z01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKQogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJNb2NrOjpzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMiKTsK
IAogICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFt0aGlzXSB7Ci0gICAgICAgIGlmIChtX3N0
YXRlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpPdXRwdXREZXZpY2VBdmFpbGFibGUp
CisgICAgICAgIGlmIChtX3N0YXRlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2Nr
U3RhdGU6Ok91dHB1dERldmljZUF2YWlsYWJsZSkKICAgICAgICAgICAgIGF2YWlsYWJsZURldmlj
ZXNEaWRDaGFuZ2UoKTsKIAotICAgICAgICBpZiAoIW1fZGV2aWNlTmFtZS5pc0VtcHR5KCkgJiYg
bV9zdGF0ZSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VW5rbm93bikKKyAgICAgICAg
aWYgKCFtX2RldmljZU5hbWUuaXNFbXB0eSgpICYmIG1fc3RhdGUgIT0gTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93bikKICAgICAgICAgICAgIGN1cnJlbnREZXZp
Y2VEaWRDaGFuZ2UoKTsKICAgICB9KTsKIH0KQEAgLTEwMSwxNSArMTAxLDE1IEBAIHZvaWQgTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRz
KCkKIHZvaWQgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OmludmFsaWRhdGVQbGF5YmFj
a1RhcmdldHMoKQogewogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJN
b2NrOjppbnZhbGlkYXRlUGxheWJhY2tUYXJnZXRzIik7Ci0gICAgc2V0U3RhdGUoZW1wdHlTdHJp
bmcoKSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlVua25vd24pOworICAgIHNldFN0YXRl
KGVtcHR5U3RyaW5nKCksIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6OlVu
a25vd24pOwogfQogCi12b2lkIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpzZXRTdGF0
ZShjb25zdCBTdHJpbmcmIGRldmljZU5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpT
dGF0ZSBzdGF0ZSkKK3ZvaWQgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnNldFN0YXRl
KGNvbnN0IFN0cmluZyYgZGV2aWNlTmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1v
Y2tTdGF0ZSBzdGF0ZSkKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyTW9jazo6c2V0U3RhdGUgLSBuYW1lID0gJXMsIHN0YXRlID0gMHgleCIsIGRldmljZU5hbWUu
dXRmOCgpLmRhdGEoKSwgKHVuc2lnbmVkKXN0YXRlKTsKIAogICAgIG1fdGFza1F1ZXVlLmVucXVl
dWVUYXNrKFt0aGlzLCBzdGF0ZSwgZGV2aWNlTmFtZV0gewotICAgICAgICBpZiAoZGV2aWNlTmFt
ZSAhPSBtX2RldmljZU5hbWUgJiYgc3RhdGUgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
OlVua25vd24pIHsKKyAgICAgICAgaWYgKGRldmljZU5hbWUgIT0gbV9kZXZpY2VOYW1lICYmIHN0
YXRlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6OlVua25vd24pIHsK
ICAgICAgICAgICAgIG1fZGV2aWNlTmFtZSA9IGRldmljZU5hbWU7CiAgICAgICAgICAgICBjdXJy
ZW50RGV2aWNlRGlkQ2hhbmdlKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaApp
bmRleCBkZTA5NmNiODgxZjgyNDIxMTE2NThiOGQyMTgzOWY5Yzg4NWQ0YmNlLi4zZTc0Mzk1YmYx
NmI4ZTdjOGNlOWY5NzIwZTc1OTRlNGYyYzg3ZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5o
CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3BNb25pdG9yaW5nUGxheWJh
Y2tUYXJnZXRzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbnZhbGlkYXRlUGxheWJhY2tUYXJnZXRz
KCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHNldFN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgdm9pZCBzZXRTdGF0ZShjb25zdCBTdHJp
bmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKTsKICAgICB2b2lkIGRp
c21pc3NQb3B1cCgpOwogCiBwcml2YXRlOgpAQCAtNTcsNyArNTcsNyBAQCBwcml2YXRlOgogCiAg
ICAgU3RyaW5nIG1fZGV2aWNlTmFtZTsKICAgICBHZW5lcmljVGFza1F1ZXVlPFRpbWVyPiBtX3Rh
c2tRdWV1ZTsKLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgbV9zdGF0ZSB7
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpVbmtub3duIH07CisgICAgTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBtX3N0YXRlIHsgTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93biB9OwogICAgIGJvb2wgbV9zaG93aW5nTWVudSB7IGZh
bHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMzQ0OTJi
YWY4MTE0Yzk0NmQ2MzAxYTBmNjAwNmQ1ZGYxOTM0NmNhMy4uYzM4MDExNjk0YmFmYWNjOGExZjY3
ZmYwODVhZmU0NGFiYmJjMmFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApA
QCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRl
KFBhZ2UmIHBhZ2UpCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAg
IHBhZ2Uuc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKHRydWUpOwotICAg
IHBhZ2Uuc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShlbXB0eVN0cmluZygp
LCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VW5rbm93bik7CisgICAgcGFnZS5zZXRNb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGVtcHR5U3RyaW5nKCksIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6OlVua25vd24pOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoVklERU8pCkBAIC00NTEwLDE0ICs0NTEwLDE0IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEludGVy
bmFsczo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcm
CiAgICAgUGFnZSogcGFnZSA9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCk7CiAg
ICAgQVNTRVJUKHBhZ2UpOwogCi0gICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRl
IHN0YXRlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlVua25vd247CisgICAgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSA9IE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpNb2NrU3RhdGU6OlVua25vd247CiAKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoZGV2aWNlU3RhdGUsICJkZXZpY2VhdmFpbGFibGUiKSkKLSAgICAgICAg
c3RhdGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6T3V0cHV0RGV2aWNlQXZhaWxhYmxl
OworICAgICAgICBzdGF0ZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6
Ok91dHB1dERldmljZUF2YWlsYWJsZTsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShkZXZpY2VTdGF0ZSwgImRldmljZXVuYXZhaWxhYmxlIikpCi0gICAgICAgIHN0
YXRlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok91dHB1dERldmljZVVuYXZhaWxhYmxl
OworICAgICAgICBzdGF0ZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6
Ok91dHB1dERldmljZVVuYXZhaWxhYmxlOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGRldmljZVN0YXRlLCAidW5rbm93biIpKQotICAgICAgICBzdGF0ZSA9IE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpVbmtub3duOworICAgICAgICBzdGF0ZSA9IE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6OlVua25vd247CiAgICAgZWxzZQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclBy
b3h5LmNwcAppbmRleCBiZDE5MWU1NzFkNzFmMjEwN2RmZmVjNWRmYjI0YjBkNDQ2ZGNjZTY3Li4x
ODhmYjBjMzEzZmZhZjBjMjVlY2NkYTc0NmQ2N2MxYWMyYTdmN2Q1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHku
Y3BwCkBAIC01OSw2ICs1OSw3IEBACiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKQogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaD4KICNlbmRpZgogCkBAIC02OTcsMjAgKzY5
OCwyMSBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldFNob3VsZFBsYXlUb1BsYXli
YWNrVGFyZ2V0KGJvb2wgc2hvdWxkUGxheSkKICAgICBtX3BsYXllci0+c2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQoc2hvdWxkUGxheSk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0Q29udGV4dCkKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dCYmIHRhcmdldENvbnRleHQpCiB7CiAgICAgc3dpdGNoICh0YXJnZXRDb250ZXh0LnR5cGUoKSkg
ewotICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OkFWT3V0cHV0Q29udGV4dFR5
cGU6Ci0gICAgICAgIG1fcGxheWVyLT5zZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKHRhcmdldENvbnRleHQuYXZPdXRwdXRD
b250ZXh0KCkpKTsKKyAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpT
ZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0OiB7CisgICAgICAgIGlmICh0YXJnZXRDb250ZXh0LmRl
c2VyaWFsaXplT3V0cHV0Q29udGV4dCgpKQorICAgICAgICAgICAgbV9wbGF5ZXItPnNldFdpcmVs
ZXNzUGxheWJhY2tUYXJnZXQoTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUoV1RGTW92
ZSh0YXJnZXRDb250ZXh0KSkpOwogICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6TW9jazoKICNpZiBQTEFURk9STShNQUMpCi0g
ICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1R5cGU6Ci0gICAgICAgIG1f
cGxheWVyLT5zZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRNb2NrOjpjcmVhdGUodGFyZ2V0Q29udGV4dC5tb2NrRGV2aWNlTmFtZSgpLCB0YXJnZXRD
b250ZXh0Lm1vY2tTdGF0ZSgpKSk7CisgICAgICAgIG1fcGxheWVyLT5zZXRXaXJlbGVzc1BsYXli
YWNrVGFyZ2V0KE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpjcmVhdGUodGFyZ2V0Q29udGV4dC5k
ZXZpY2VOYW1lKCksIHRhcmdldENvbnRleHQubW9ja1N0YXRlKCkpKTsKICAgICAgICAgYnJlYWs7
Ci0jZWxzZQotICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tUeXBlOgog
I2VuZGlmCi0gICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6Tm9uZToKKyAgICBj
YXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQ6Cisg
ICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6Tm9uZToKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5o
CmluZGV4IDI0YjY2NDFhZTRmNWYxZTdkZmMxMDUzNzQxM2YwZTljZmQyNWUyM2YuLmJkYWVlOGFl
MDVmMTBmYTQ2NTczMzQzZjQ3OWM0MjkzZDQ3ZGY2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaApAQCAtMTUy
LDcgKzE1Miw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQogICAgIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCk7CiAgICAg
dm9pZCBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sKTsKLSAgICB2b2lkIHNldFdp
cmVsZXNzUGxheWJhY2tUYXJnZXQoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQmKTsKKyAgICB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQmJik7CiAgICAgdm9pZCBtZWRpYVBsYXllckN1cnJlbnRQ
bGF5YmFja1RhcmdldElzV2lyZWxlc3NDaGFuZ2VkKGJvb2wpIGZpbmFsOwogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lv
cy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHAKaW5kZXggOWU2YmM5NDY2YjUzOTli
MjRmNTg0MDA5YjkwMGJkMDdkMDA4MjExNi4uYmVkMzBlMjljZTRiOWM1ZjZhZjQwMWFjMWNjOGYy
NmZhMmM0NjFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lv
cy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHAKQEAg
LTEwOCw3ICsxMDgsMTEgQEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6YWN0
aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShTaG91bGRQYXVzZSBzaG91bGQKIAogdm9pZCBSZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0
c0FpclBsYXlWaWRlbyBzdXBwb3J0c0FpclBsYXlWaWRlbywgUmVmPFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXQ+JiYgdGFyZ2V0KQogewotICAgIG1fZ3B1Q29ubmVjdGlvbi5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpBY3RpdmVWaWRlb1Jv
dXRlRGlkQ2hhbmdlKHN1cHBvcnRzQWlyUGxheVZpZGVvLCB0YXJnZXQtPnRhcmdldENvbnRleHQo
KSksIHsgfSk7CisgICAgYXV0byBjb250ZXh0ID0gdGFyZ2V0LT50YXJnZXRDb250ZXh0KCk7Cisg
ICAgaWYgKCFjb250ZXh0LnNlcmlhbGl6ZU91dHB1dENvbnRleHQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9ncHVDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXI6OkFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2Uoc3VwcG9ydHNB
aXJQbGF5VmlkZW8sIGNvbnRleHQpLCB7IH0pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4
IGJmODhhYjYxN2JlMTIxYjRhZjdiYzRjZDNjNGZjMTk3ZGRhNTk3ODIuLjUwMzQ0MWNiNmVhMzVm
ZDNlY2FmOTY3NmY5MjY0ZDMyODEzNWIzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC00MSwxNCAr
NDEsMjMgQEAKICNpbXBvcnQgPFVJS2l0L1VJRm9udC5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dC5oPgorI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CisjZW5kaWYKKworI2lm
IFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1dlYkNv
cmVBcmd1bWVudENvZGVyc0NvY29hQWRkaXRpb25zLm1tPgorI2VuZGlmCisKICNpZiBFTkFCTEUo
QVBQTEVfUEFZKQogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9Q
YXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5oPgogI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRT
b2Z0TGluay5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1
ZGUgPFdlYktpdEFkZGl0aW9ucy9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYUFkZGl0aW9ucy5t
bT4KKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorI2ltcG9ydCA8cGFsL2Nv
Y29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIElQQyB7CkBA
IC02MDYsNCArNjE1LDUwIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQordm9pZCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxh
dGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0JiB0YXJnZXQpCit7CisgICAgaWYgKHRhcmdldC50eXBlKCkgPT0gTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCkgeworICAgICAgICBpZiAoW1BBTDo6
Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5T
U2VjdXJlQ29kaW5nKV0pCisgICAgICAgICAgICBlbmNvZGVyIDw8IHRhcmdldC5vdXRwdXRDb250
ZXh0KCk7CisgICAgfSBlbHNlIGlmICh0YXJnZXQudHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0KSB7CisgICAgICAgIGVu
Y29kZXIgPDwgdGFyZ2V0LnNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KCk7CisgICAgICAgIGVuY29k
ZXIgPDwgdGFyZ2V0Lmhhc0FjdGl2ZVJvdXRlKCk7CisgICAgfSBlbHNlCisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworfQorCitib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2Rl
ciwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGUgY29udGV4dFR5cGUsIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCit7CisgICAgQVNTRVJUKGNvbnRleHRUeXBlICE9
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrKTsKKworICAgIGlmIChjb250
ZXh0VHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250
ZXh0KSB7CisgICAgICAgIGlmICghW1BBTDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBjb25m
b3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgYXV0byBvdXRwdXRDb250ZXh0ID0gSVBDOjpkZWNvZGU8
QVZPdXRwdXRDb250ZXh0PihkZWNvZGVyLCBQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkp
OworICAgICAgICBpZiAoIW91dHB1dENvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgdGFyZ2V0ID0gV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQg
eyBXVEZNb3ZlKCpvdXRwdXRDb250ZXh0KSB9OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICBpZiAoY29udGV4dFR5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5
cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQpIHsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0
YT4gc2VyaWFsaXplZE91dHB1dENvbnRleHQ7CisgICAgICAgIGlmICghSVBDOjpkZWNvZGUoZGVj
b2Rlciwgc2VyaWFsaXplZE91dHB1dENvbnRleHQpIHx8ICFzZXJpYWxpemVkT3V0cHV0Q29udGV4
dCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBib29sIGhhc0FjdGl2ZVJv
dXRlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0FjdGl2ZVJvdXRlKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB0YXJnZXQgPSBXZWJDb3JlOjpNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dCB7IFdURk1vdmUoc2VyaWFsaXplZE91dHB1dENvbnRleHQpLCBo
YXNBY3RpdmVSb3V0ZSB9OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCAyNTVhMmNiYzZjNzdj
ZWYxZTYwNzBlYTQyMGY2YmRlOTBiMjQwYTcxLi5iMjUwNjNjMTcyMDIxZTdlNDUxZDQ2MjYwODE1
Zjg3ZjExODEzZjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKQEAgLTI0NTcsMTcgKzI0NTcsMTcgQEAgdm9pZCBBcmd1bWVudENvZGVyPE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IE0KICAgICBib29sIGhhc1BsYXRmb3JtRGF0YSA9IHRhcmdldC5lbmNvZGluZ1JlcXVpcmVzUGxh
dGZvcm1EYXRhKCk7CiAgICAgZW5jb2RlciA8PCBoYXNQbGF0Zm9ybURhdGE7CiAKLSAgICBpbnQz
Ml90IHRhcmdldFR5cGUgPSB0YXJnZXQudHlwZSgpOwotICAgIGVuY29kZXIgPDwgdGFyZ2V0VHlw
ZTsKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZSBjb250ZXh0VHlwZSA9IHRh
cmdldC50eXBlKCk7CisgICAgZW5jb2RlciA8PCBjb250ZXh0VHlwZTsKIAogICAgIGlmICh0YXJn
ZXQuZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgpKSB7CiAgICAgICAgIGVuY29kZVBsYXRm
b3JtRGF0YShlbmNvZGVyLCB0YXJnZXQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
QVNTRVJUKHRhcmdldFR5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tUeXBl
KTsKLSAgICBlbmNvZGVyIDw8IHRhcmdldC5tb2NrRGV2aWNlTmFtZSgpOwotICAgIGVuY29kZXIg
PDwgc3RhdGljX2Nhc3Q8aW50MzJfdD4odGFyZ2V0Lm1vY2tTdGF0ZSgpKTsKKyAgICBBU1NFUlQo
Y29udGV4dFR5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2spOwor
ICAgIGVuY29kZXIgPDwgdGFyZ2V0LmRldmljZU5hbWUoKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KHRhcmdldC5tb2NrU3RhdGUoKSk7CiB9CiAKIGJvb2wgQXJndW1lbnRD
b2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0KQpAQCAtMjQ3NiwyNCArMjQ3Niwy
NCBAQCBib29sIEFyZ3VtZW50Q29kZXI8TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgTWVkaWFQbAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFz
UGxhdGZvcm1EYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaW50MzJfdCB0YXJn
ZXRUeXBlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGFyZ2V0VHlwZSkpCisgICAgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGUgY29udGV4dFR5cGU7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShjb250ZXh0VHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICho
YXNQbGF0Zm9ybURhdGEpCi0gICAgICAgIHJldHVybiBkZWNvZGVQbGF0Zm9ybURhdGEoZGVjb2Rl
ciwgdGFyZ2V0KTsKKyAgICAgICAgcmV0dXJuIGRlY29kZVBsYXRmb3JtRGF0YShkZWNvZGVyLCBj
b250ZXh0VHlwZSwgdGFyZ2V0KTsKIAotICAgIEFTU0VSVCh0YXJnZXRUeXBlID09IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrVHlwZSk7Ci0KLSAgICBTdHJpbmcgbW9ja0RldmljZU5h
bWU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShtb2NrRGV2aWNlTmFtZSkpCisgICAgQVNTRVJU
KGNvbnRleHRUeXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrKTsK
KyAgICBTdHJpbmcgZGV2aWNlTmFtZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmljZU5h
bWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpbnQzMl90IG1vY2tTdGF0ZTsKKyAg
ICB1aW50OF90IG1vY2tTdGF0ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1vY2tTdGF0ZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHRhcmdldCA9IE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0KG1vY2tEZXZpY2VOYW1lLCBzdGF0aWNfY2FzdDxNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6U3RhdGU+KG1vY2tTdGF0ZSkpOworICAgIHRhcmdldCA9IE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0KGRldmljZU5hbWUsIHN0YXRpY19jYXN0PE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpNb2NrU3RhdGU+KG1vY2tTdGF0ZSkpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5k
ZXggNjE5NzA4NzgyNTExNTQ4YjYyZjI3MTU2YmQzZjQ3ZDcxYTMxZWFjMi4uNjQ3NmUzOTBiZmM3
NzhkN2ViN2NkZmIzZGMyYWQ1NGMyY2U3ZmU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0ltYWdlRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5kZXhlZERCLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9JbnB1dE1vZGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05l
dHdvcmtMb2FkTWV0cmljcy5oPgpAQCAtMTk1LDEwICsxOTYsNiBAQCBzdHJ1Y3QgUGFzdGVib2Fy
ZFdlYkNvbnRlbnQ7CiBjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CiAjZW5kaWYK
IAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi1jbGFzcyBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIHN0
cnVjdCBNZWRpYUNvbnN0cmFpbnRzOwogI2VuZGlmCkBAIC02NDQsNyArNjQxLDcgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmKTsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dCYpOwogICAgIHN0YXRpYyB2b2lkIGVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiwgY29u
c3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmKTsKLSAgICBzdGF0aWMgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImLCBXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYpOworICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYsIFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dCYpOwogfTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQppbmRleCAxODZiN2JiMmRiNmZjNGUyYmMxMzNm
NzE3NWNjZjljMzc2Mzg5MjMwLi45MjVmNWE0ZDVhNDg4ZDQ4ODQwNGVjNjI5NTJkOGEyNDlhM2Yw
MDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1l
bnRDb2RlcnNNYWMubW0KQEAgLTQyLDEyICs0Miw2IEBACiAjaW1wb3J0IDx3dGYvTWFjaFNlbmRS
aWdodC5oPgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAKLSNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dC5oPgotI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+Ci0jaW1wb3J0IDxwYWwvY29j
b2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgSVBDIHsKIAog
dm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRl
SW5mbykKQEAgLTQwMywyOSArMzk3LDYgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGUKIAogI2Vu
ZGlmCiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotCi12b2lkIEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjplbmNvZGVQbGF0
Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQmIHRhcmdldCkKLXsKLSAgICBpZiAoW1BBTDo6Z2V0QVZPdXRwdXRDb250ZXh0
Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCi0g
ICAgICAgIGVuY29kZXIgPDwgdGFyZ2V0LmF2T3V0cHV0Q29udGV4dCgpOwotfQotCi1ib29sIEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQ
bGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQmIHRhcmdldCkKLXsKLSAgICBpZiAoIVtQQUw6OmdldEFWT3V0cHV0Q29udGV4dENs
YXNzKCkgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIGNvbnRleHQgPSBJUEM6OmRlY29kZTxBVk91
dHB1dENvbnRleHQ+KGRlY29kZXIsIFBBTDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSk7Ci0g
ICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB0YXJnZXQgPSBX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCB7IGNvbnRleHQtPmdldCgpIH07Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKFZJREVPKQogdm9pZCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT46OmVu
Y29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpTZXJpYWxp
emVkUGxhdGZvcm1EYXRhQ3VlVmFsdWUmIHZhbHVlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYTJmMzljOTVlM2JjNGQ4MjA1MWJhY2QzNzEzODAzMDcz
YzQzMzc5Mi4uZjc5ZWU5M2QyZDBkY2U1NTUyMjk3MjVhMmQzYTg2NDI2OTI2MjFlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03ODMyLDE0ICs3ODMyLDYg
QEAgc3RhdGljIGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVyYWw+JiBtZWRpYVJlbGF0ZWRJT0tpdENs
YXNzZXMoKQogICAgIH0pOwogICAgIHJldHVybiBzZXJ2aWNlczsKIH0KLQotc3RhdGljIGNvbnN0
IFZlY3RvcjxBU0NJSUxpdGVyYWw+JiB0ZW1wb3JhcnlNYWNoU2VydmljZXMoKQotewotICAgIHN0
YXRpYyBjb25zdCBhdXRvIHNlcnZpY2VzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxBU0NJ
SUxpdGVyYWw+IHsKLSAgICAgICAgImNvbS5hcHBsZS5jb3JlbWVkaWEucm91dGluZ2NvbnRleHQu
eHBjIl9zIC8vIFJlbW92ZSBhZnRlciA8cmRhcjovLzc2NDAzMzAyPiBpcyBmaXhlZC4KLSAgICB9
KTsKLSAgICByZXR1cm4gc2VydmljZXM7Ci19CiAjZW5kaWYKIAogV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MsIERyYXdpbmdBcmVhUHJveHkmIGRyYXdpbmdBcmVhLCBSZWZQdHI8QVBJOjpXZWJz
aXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVzKQpAQCAtNzkzNSw5ICs3OTI3LDYgQEAgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhX
ZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICAgICAgLy8gRklYTUUoMjA3NzE2KTogVGhlIGZvbGxv
d2luZyBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIHRoZSBHUFUgcHJvY2VzcyBpcyBjb21wbGV0ZS4K
ICAgICAgICAgcGFyYW1ldGVycy5tZWRpYUV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChtZWRpYVJlbGF0ZWRNYWNoU2VydmljZXMo
KSwgV1RGOjpudWxsb3B0KTsKICAgICAgICAgcGFyYW1ldGVycy5tZWRpYUlPS2l0RXh0ZW5zaW9u
SGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0
ZW5zaW9ucyhtZWRpYVJlbGF0ZWRJT0tpdENsYXNzZXMoKSwgV1RGOjpudWxsb3B0KTsKLSAgICB9
IGVsc2UgewotICAgICAgICAvLyBGSVhNRSgyMjQzMjcpOiBSZW1vdmUgdGhpcyBlbHNlIGNsYXVz
ZSBvbmNlIDxyZGFyOi8vNzY0MDMzMDI+IGlzIGZpeGVkLgotICAgICAgICBwYXJhbWV0ZXJzLm1l
ZGlhRXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JN
YWNoTG9va3VwKHRlbXBvcmFyeU1hY2hTZXJ2aWNlcygpLCBXVEY6Om51bGxvcHQpOwogICAgIH0K
IAogICAgIGlmICghcHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yTWVkaWFFbmFibGVkKCkK
QEAgLTk0MDMsNyArOTM5Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNb2NrTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIHBhZ2VDbGllbnQoKS5t
ZWRpYVNlc3Npb25NYW5hZ2VyKCkuc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFi
bGVkKGVuYWJsZWQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRN
b2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSkKIHsKICAg
ICBwYWdlQ2xpZW50KCkubWVkaWFTZXNzaW9uTWFuYWdlcigpLnNldE1vY2tNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyU3RhdGUobmFtZSwgc3RhdGUpOwogfQpAQCAtOTQxOCw3ICs5NDA3LDEyIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQbGF5YmFja1RhcmdldChQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyIGNvbnRlCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFja1Rh
cmdldFNlbGVjdGVkKGNvbnRleHRJZCwgdGFyZ2V0LT50YXJnZXRDb250ZXh0KCkpKTsKKyAgICBh
dXRvIGNvbnRleHQgPSB0YXJnZXQtPnRhcmdldENvbnRleHQoKTsKKyAgICBBU1NFUlQoY29udGV4
dC50eXBlKCkgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRB
Vk91dHB1dENvbnRleHQpOworICAgIGlmIChwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JN
ZWRpYUVuYWJsZWQoKSAmJiBjb250ZXh0LnR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0ICYmICFjb250ZXh0LnNlcmlhbGl6ZU91dHB1dENv
bnRleHQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UGxheWJhY2tUYXJnZXRTZWxlY3RlZChjb250ZXh0SWQsIGNvbnRleHQpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKFBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBib29sIGF2YWlsYWJs
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggOWI3ZGMwNmY2MWZi
YzQ3MzJlYmI5YmJmNTRkNTg1Mjg5ZjQ3MWQ2MC4uNWYxNjgyZTUyOTNkMTMzMDZlMGJjMzQzMDgy
N2RhNzNjOTkxNzVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAg
LTE1NjcsNyArMTU2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBp
Y2tlcihXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBib29sIGhhc1ZpZGVvKTsKICAgICB2b2lkIHBsYXliYWNr
VGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRD
bGllbnRDb250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0
ZUZsYWdzKTsKICAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxl
ZChib29sKTsKLSAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUo
Y29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRl
KTsKKyAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3Qg
U3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSk7
CiAgICAgdm9pZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCgpOwog
CiAgICAgLy8gV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDJjYWMzZjFjYjA1ZDFj
ZDdiNWY3NzFlZTEyYzBlNzI5ZTFmMWQ4Y2YuLjdlOThiMDg4ZDkyMmVlMTE0NDk3MzBhMGU1NTgx
MmJlMjY0NDc1MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTQ3Niw3ICs0NzYsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJv
eHkgewogICAgIFNob3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJDb3JlOjpQbGF5YmFja1Rhcmdl
dENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6RmxvYXRSZWN0IHBp
Y2tlckxvY2F0aW9uLCBib29sIGhhc1ZpZGVvKQogICAgIFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xp
ZW50U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRl
bnRpZmllciBjb250ZXh0SWQsIHVuc2lnbmVkIG1lZGlhU3RhdGUpCiAgICAgU2V0TW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wgZW5hYmxlZCkKLSAgICBTZXRNb2NrTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKFN0cmluZyBuYW1lLCB1bnNpZ25lZCBwaWNrZXJT
dGF0ZSkKKyAgICBTZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKFN0cmluZyBu
YW1lLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1v
Y2tTdGF0ZSBwaWNrZXJTdGF0ZSkKICAgICBNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRp
c21pc3NQb3B1cCgpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5j
cHAKaW5kZXggMmFiNWY5MTNjZGU4M2NlZGM1NGE3YThmZTBlZTA5NTNiY2U0NDk1Yi4uNDg2MmFm
NzY0NTY3ZDZiZjZhZmY2OGQyODc4ZjhmOTRlMTk1OGYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXIuY3BwCkBAIC04MSwxMiArODEsMTEgQEAgdm9pZCBSZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXI6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoaW50IHBpZCkKIAog
dm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2Uo
U3VwcG9ydHNBaXJQbGF5VmlkZW8gc3VwcG9ydHNBaXJQbGF5VmlkZW8sIE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0JiYgdGFyZ2V0Q29udGV4dCkKIHsKLSAgICBpZiAodGFyZ2V0Q29udGV4dC50
eXBlKCkgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OkFWT3V0cHV0Q29udGV4dFR5cGUp
IHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgQVNTRVJUKHRhcmdldENvbnRl
eHQudHlwZSgpICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENv
bnRleHQpOworICAgIGlmICh0YXJnZXRDb250ZXh0LnR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0KQogICAgICAgICByZXR1cm47Ci0gICAg
fQogCi0gICAgV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVWaWRlb1JvdXRlRGlk
Q2hhbmdlKHN1cHBvcnRzQWlyUGxheVZpZGVvLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29jb2E6OmNyZWF0ZSh0YXJnZXRDb250ZXh0LmF2T3V0cHV0Q29udGV4dCgpKSk7CisgICAgV2Vi
Q29yZTo6TWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKHN1cHBv
cnRzQWlyUGxheVZpZGVvLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0
ZShXVEZNb3ZlKHRhcmdldENvbnRleHQpKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
aW5kZXggYmNjNGMxN2FjMjk1MjEyY2JhNjRkZWRkMWM5YjNhOTA2Y2EwNTEwMS4uNWZjODU1NjM3
NjBlYTc1ZWMxMmVkMTRhOWUyNzM2ODFmMjUxYzA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
QEAgLTEzNTIsNyArMTM1Miw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIG1fcGFnZS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
RW5hYmxlZChlbmFibGVkKSk7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRNb2NrTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNl
dE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKQogewogICAgIG1fcGFn
ZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyU3RhdGUobmFtZSwgc3RhdGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA2ODEy
ZTY0MmZlY2RjYWE3YjFmNTFmZTA3MTI1ODBhN2Q0MmM0ZWYwLi41NmNmNmI5MmVkOWExMDM2ZGJk
N2QwNjQ4NjNjNGU3NjgxNDJjZGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zNzgsNyArMzc4
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJDb3Jl
OjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIGJvb2wpIGZpbmFsOwogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJDbGll
bnRTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVu
dGlmaWVyLCBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpIGZpbmFsOwog
ICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpIGZp
bmFsOwotICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25z
dCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpIGZp
bmFsOworICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25z
dCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRl
KSBmaW5hbDsKICAgICB2b2lkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1Bv
cHVwKCkgZmluYWw7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IGFlYjI1ZGFiODQyMDY4NGE5NTAyMzg2YWJmODNhZTZiZTM4Y2U5ODYu
LjFlNjMzNzljYWY4NzdiNTkyNjZiZmM3MDM3MDkxNjAwOTYwMzZlYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE3OTEsNyArMTc5MSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXRTaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMoYm9v
bCBkaXNwYXRjaCkgeyBtX3Nob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyA9IGRpc3Bh
dGNoOyB9CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIHBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQoV2ViQ29yZTo6
UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQmIG91dHB1dERldmljZSkgY29uc3Q7CisgICAgdm9pZCBw
bGF5YmFja1RhcmdldFNlbGVjdGVkKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4
dElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiYpIGNvbnN0
OwogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoV2ViQ29yZTo6
UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgYm9vbCk7CiAgICAgdm9pZCBz
ZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyLCBib29sKTsKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0UGlja2Vy
V2FzRGlzbWlzc2VkKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQppbmRleCA3NGRhNjM1Nzg4MmNkMDEzMDIwODQwOTdmMDY0ZDIxYzNiOTE1ZDA0Li42
MmU3OThmZTRjZDVkNzBiOWIyM2YwMDg2N2I1OGRhNGEyNzU4ZjE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMzUsNyAr
MzUsNiBAQAogI2ltcG9ydCAiRm9udEluZm8uaCIKICNpbXBvcnQgIkZyYW1lSW5mb0RhdGEuaCIK
ICNpbXBvcnQgIkluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oIgotI2ltcG9ydCAiUERGS2l0
U29mdExpbmsuaCIKICNpbXBvcnQgIlBERlBsdWdpbi5oIgogI2ltcG9ydCAiUGFnZUJhbm5lci5o
IgogI2ltcG9ydCAiUGx1Z2luVmlldy5oIgpAQCAtOTksOSArOTgsMTIgQEAKIAogI2lmIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAjaW1wb3J0IDxXZWJDb3JlL01lZGlhUGxheWJh
Y2tUYXJnZXRDb2NvYS5oPgorI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oPgogI2Vu
ZGlmCiAKKyNpbXBvcnQgIlBERktpdFNvZnRMaW5rLmgiCisKIG5hbWVzcGFjZSBXZWJLaXQgewog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTEwNDIsMTYgKzEwNDQsMTcgQEAgdm9pZCBX
ZWJQYWdlOjpkaWRVcGRhdGVSZW5kZXJpbmcoKQogfQogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi12b2lkIFdlYlBhZ2U6OnBs
YXliYWNrVGFyZ2V0U2VsZWN0ZWQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmll
ciBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0
YXJnZXRDb250ZXh0KSBjb25zdAordm9pZCBXZWJQYWdlOjpwbGF5YmFja1RhcmdldFNlbGVjdGVk
KFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmIHRhcmdldENvbnRleHQpIGNvbnN0CiB7CiAg
ICAgc3dpdGNoICh0YXJnZXRDb250ZXh0LnR5cGUoKSkgewotICAgIGNhc2UgTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6OkFWT3V0cHV0Q29udGV4dFR5cGU6Ci0gICAgICAgIG1fcGFnZS0+c2V0
UGxheWJhY2tUYXJnZXQoY29udGV4dElkLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29j
b2E6OmNyZWF0ZSh0YXJnZXRDb250ZXh0LmF2T3V0cHV0Q29udGV4dCgpKSk7CisgICAgY2FzZSBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0OgorICAgIGNh
c2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENv
bnRleHQ6CisgICAgICAgIG1fcGFnZS0+c2V0UGxheWJhY2tUYXJnZXQoY29udGV4dElkLCBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZShXVEZNb3ZlKHRhcmdldENvbnRleHQpKSk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tU
eXBlOgotICAgICAgICBtX3BhZ2UtPnNldFBsYXliYWNrVGFyZ2V0KGNvbnRleHRJZCwgV2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldE1vY2s6OmNyZWF0ZSh0YXJnZXRDb250ZXh0Lm1vY2tEZXZp
Y2VOYW1lKCksIHRhcmdldENvbnRleHQubW9ja1N0YXRlKCkpKTsKKyAgICBjYXNlIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrOgorICAgICAgICBtX3BhZ2UtPnNldFBsYXli
YWNrVGFyZ2V0KGNvbnRleHRJZCwgTWVkaWFQbGF5YmFja1RhcmdldE1vY2s6OmNyZWF0ZSh0YXJn
ZXRDb250ZXh0LmRldmljZU5hbWUoKSwgdGFyZ2V0Q29udGV4dC5tb2NrU3RhdGUoKSkpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpOb25lOgor
ICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok5vbmU6CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCmluZGV4IGI4OWIyNjZjM2Q3OWFjZDI0MWRmMzZiNWZjZTJmMWQyZWQ4ZGI3NDguLmYzZDQ3
MTZhODkzM2Q5ZjI0MmY4ZWYxMjE1YTg2NjIzNDBmODk3YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBA
IC0yNDMsNyArMjQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBp
Y2tlcihXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgLyogaGFzVmlkZW8gKi8pIGZpbmFsOwogICAgIHZv
aWQgcGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpQbGF5
YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVByb2R1Y2Vy
OjpNZWRpYVN0YXRlRmxhZ3MpIGZpbmFsOwogICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpIGZpbmFsOwotICAgIHZvaWQgc2V0TW9ja01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpIGZpbmFsOworICAgIHZvaWQgc2V0TW9ja01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKSBmaW5hbDsKICAgICB2b2lkIG1vY2tNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50Lm1tCmluZGV4IGIzNGU4ZDlkOGVlOTE1YzYxYTBjNDlmZjQwZTJkNjZmZWQyNGEw
NGUuLmM5NjQ4M2ZmOTZlYjdmZDhjYzE5NTI3YzM1NDVkOWI4M2IxNGE5YjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQubW0KQEAgLTExMjksNyArMTEyOSw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRN
b2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIFtt
X3dlYlZpZXcgX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZDplbmFibGVk
XTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6U3RhdGUgc3RhdGUpCit2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCiB7CiAgICAgW21fd2ViVmlldyBfc2V0TW9ja01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOm5hbWUgc3RhdGU6c3RhdGVdOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXIuaAppbmRleCAwYjkyMzgzNWU5ZTE1YjZiODA0NWI0OWFmZTI5ZTZh
YWIwM2VjZmNhLi44Y2EzMjk0N2E1YjQ2ZTA2N2I4ZThiYWU0NDYzOTNlYmI5MGU4NmVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGll
bnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgYm9vbCBoYXNW
aWRlbyk7CiAgICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tlckNsaWVudFN0YXRlRGlkQ2hhbmdl
KFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIFdlYkNvcmU6
Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyk7CiAgICAgdm9pZCBzZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCk7Ci0gICAgdm9pZCBzZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpOwogICAgIHZvaWQgbW9ja01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyLm1tCmluZGV4IDczNDQzNTY3NWFiODA5YjUwZWM1ZWYzOGFiOWY3
N2NhMTQ4YjMxZjEuLjdkYmQ1ODk0NzU0MDVhMTZlYmRkMGZhOWJjZmE2MmMzMzdlNzQxNTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0KQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBXZWJN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ckVuYWJsZWQoYm9vbAogICAgIFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJl
ZCgpLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChlbmFibGVkKTsKIH0K
IAotdm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQordm9pZCBXZWJNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0
cmluZyYgbmFtZSwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0
ZSBzdGF0ZSkKIHsKICAgICBXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWQo
KS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKG5hbWUsIHN0YXRlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA1YjBlZThh
M2FjOGMzMzNiNmVlMzQ0Y2RkOWMzYjU1NzY1YzI2ZmYwLi40OTJhZjYwMWNmN2FjNGRmNDY0NTBi
MDhhYWE1YzMyMGVhMmU2ZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCkBAIC05MjMyLDcgKzkyMzIsNyBAQCBib29sIExheWVyRmx1c2hDb250cm9sbGVy
OjpmbHVzaExheWVycygpCiAgICAgW3NlbGYgX2RldmljZVBpY2tlcl0tPnNldE1vY2tNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChlbmFibGVkKTsKIH0KIAotLSAodm9pZClfc2V0TW9j
a01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOihOU1N0cmluZyAqKW5hbWUgc3RhdGU6KFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSlzdGF0ZQorLSAodm9pZClf
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOihOU1N0cmluZyAqKW5hbWUgc3Rh
dGU6KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpc3RhdGUK
IHsKICAgICBbc2VsZiBfZGV2aWNlUGlja2VyXS0+c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJTdGF0ZShuYW1lLCBzdGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCAzYWUwZDNhYTI2MmQ5NTIzMzBjMWM4
MmMzMjU1MGQ5YTIxYTUwMTRmLi4wNGI4YzM2OGNjYWY4NTI0ZDA4NTkzNzJkNjA1OGY0OGYxN2E2
ZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJ
bnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0lu
dGVybmFsLmgKQEAgLTMyNyw3ICszMjcsNyBAQCBXZWJMYXlvdXRNaWxlc3RvbmVzIGtpdExheW91
dE1pbGVzdG9uZXMoT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4pOwogLSAodm9p
ZClfc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyOihXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyKWNvbnRleHRJZCBsb2NhdGlvbjooY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmKWxvY2F0aW9uIGhhc1ZpZGVvOihCT09MKWhhc1ZpZGVvOwogLSAodm9pZClfcGxheWJh
Y2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5nZTooV2ViQ29yZTo6UGxheWJhY2tUYXJn
ZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciljb250ZXh0SWQgc3RhdGU6KFdlYkNvcmU6Ok1lZGlh
UHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncylzdGF0ZTsKIC0gKHZvaWQpX3NldE1vY2tNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZDooYm9vbCllbmFibGVkOwotLSAodm9pZClfc2V0TW9j
a01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOihOU1N0cmluZyAqKW5hbWUgc3RhdGU6KFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSlzdGF0ZTsKKy0gKHZvaWQp
X3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTmFtZTooTlNTdHJpbmcgKiluYW1lIHN0
YXRlOihXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKXN0YXRl
OwogLSAodm9pZClfbW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXA7CiAj
ZW5kaWYKIAo=
</data>
<flag name="review"
          id="446249"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426117</attachid>
            <date>2021-04-15 10:56:55 -0700</date>
            <delta_ts>2021-04-15 11:58:39 -0700</delta_ts>
            <desc>Revise the patch based on Eric&apos;s comments</desc>
            <filename>bug-224469-20210415105654.patch</filename>
            <type>text/plain</type>
            <size>85354</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1OTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQ5YzVhZmFhOTRiNzc1
Zjg0NmU5ZTIwYjJkZjAxOGQyNTRkMDhhZi4uMzg1ODYxN2JkNTU2YTQ3YWQwZmZiMDQ2NjYzZWVh
YjA1N2Q5M2M3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDIxLTA0LTE0ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIFdlYkNvbnRlbnQg
cHJvY2VzcyBzaG91bGQgbm90IGNyZWF0ZSBBVk91dHB1dENvbnRleHQgaW5zdGFuY2VzIHdoZW4g
bWVkaWEgaW4gR1BVIFByb2Nlc3MgaXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtb2RpZmllcyBgTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHRgIHRvIHByb3ZpZGUgaW50ZXJmYWNlcyB0byBzZXJpYWxpemUvZGVzZXJp
YWxpemUKKyAgICAgICAgYEFWT3V0cHV0Q29udGV4dGAgYW5kIG1vZGlmaWVzIGBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29jb2FgIHRvIHVzZSBgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHRgIHRvCisg
ICAgICAgIG1hbmFnZSBpdHMgYEFWT3V0cHV0Q29udGV4dGAgaW5zdGVhZCBvZiBrZWVwaW5nIGEg
cG9pbnRlciB0byB0aGUgYEFWT3V0cHV0Q29udGV4dGAgb2JqZWN0LgorICAgICAgICBXaXRoIHRo
ZXNlIGNoYW5nZXMsIGEgV2ViQ29udGVudCBwcm9jZXNzIGNhbiBmb3J3YXJkIGEgc2VyaWFsaXpl
ZCBgQVZPdXRwdXRDb250ZXh0YCBvYmplY3QKKyAgICAgICAgdG8gb3RoZXIgcHJvY2Vzc2VzIChl
LmcuLCB0aGUgR1BVIHByb2Nlc3MpIHdpdGhvdXQgZGVzZXJpYWxpemluZyBpdC4gVGhlcmVmb3Jl
LCB0aGUgV2ViQ29udGVudAorICAgICAgICBwcm9jZXNzIGRvZXMgbm90IG5lZWQgYWNjZXNzIHRv
IHRoZSBDb3JlTWVkaWEgcm91dGluZyBzZXJ2aWNlLiBTbyB3ZSBjYW4gcmVtb3ZlIHRoZSBmaXgg
KHIyNzU2NjkpCisgICAgICAgIGZvciBidWcgMjI0MzI4LgorCisgICAgICAgIENvdmVyZWQgYnkg
ZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNz
aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKToKKyAgICAgICAgKiBNb2R1
bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oOgorCisgICAgICAgICogSGVhZGVy
cy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgTW9kaWZ5IHRoZSBwcm9qZWN0IGZp
bGUgYmVjYXVzZSBgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHRgIGlzIHVzZWQgaW4gQ29jb2Eg
cG9ydHMgb25seS4KKworICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3Rh
dGUpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKToKKyAgICAgICAgKiBwYWdlL1Bh
Z2UuaDoKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXQu
aDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQuaDogUmVtb3ZlZC4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6b3V0cHV0Q29udGV4dCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJh
Y2tUYXJnZXRDb2NvYTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb2NvYTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6c3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6dGFyZ2V0
Q29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29j
b2E6Omhhc0FjdGl2ZVJvdXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJh
Y2tUYXJnZXRDb2NvYTo6ZGV2aWNlTmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjp0b01l
ZGlhUGxheWJhY2tUYXJnZXRDb2NvYSk6CisgICAgICAgIERvbid0IGRpcmVjdGx5IHVzZSBgQVZP
dXRwdXRDb250ZXh0YCBpbiB0aGlzIGNsYXNzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0V2lyZWxlc3NQbGF5YmFj
a1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCk6CisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6ZGV2aWNlTmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6aGFzQWN0aXZlUm91dGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OnN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5
YmFjayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6bW9ja1N0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpvdXRwdXRDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpzZXJpYWxpemVkT3V0cHV0Q29udGV4dCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6ZW5jb2RpbmdSZXF1
aXJlc1BsYXRmb3JtRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpzZXJpYWxp
emVPdXRwdXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpkZXNlcmlhbGl6ZU91dHB1dENvbnRleHQpOgorCisgICAgICAgICogcGxhdGZvcm0v
bW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0TW9jazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRNb2NrOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6dGFyZ2V0Q29udGV4dCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjp0b01lZGlhUGxheWJhY2tUYXJnZXRNb2NrKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6c3RhdGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2Nr
OjpzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OmludmFsaWRhdGVQbGF5YmFja1RhcmdldHMp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnNldFN0
YXRlKToKKworICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ck1vY2suaDoKKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbHM6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgor
CiAyMDIxLTA0LTEzICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0dQVSBQcm9jZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IgcGFy
dCA0OiBNb3ZlIERpc3BsYXlMaXN0OjpJdGVyYXRvciB0byBpdHMgb3duIC5oLy5jcHAgZmlsZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggNjA5MGY3YzFmMmIwMjQ3MTRmYzVjYTAzNzU2M2NmM2JkMDY3ZjdlYS4uNTdm
YTU3NzY0ZTMxZTRjYTg4ZWRiZWU0NTU4OTljOTU1NGY1MDdmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0NSBAQAorMjAyMS0wNC0xNCAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisg
ICAgICAgIFtHUFVQXSBXZWJDb250ZW50IHByb2Nlc3Mgc2hvdWxkIG5vdCBjcmVhdGUgQVZPdXRw
dXRDb250ZXh0IGluc3RhbmNlcyB3aGVuIG1lZGlhIGluIEdQVSBQcm9jZXNzIGlzIGVuYWJsZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDQ2OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldCk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lmg6CisKKyAgICAg
ICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+
OjplbmNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAg
ICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAg
KiBTaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29k
ZVBsYXRmb3JtRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOiBE
ZWxldGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Om1lZGlhUmVsYXRlZElPS2l0Q2xhc3Nlcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJL
aXQ6OnRlbXBvcmFyeU1hY2hTZXJ2aWNlcyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKToKKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQgY29uc3QpOgorCiAyMDIxLTA0LTEzICBBZGEgQ2hhbiAg
PGFkYS5jaGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgUGxhdGZvcm1YUlN5c3Rl
bTo6eHJDb29yZGluYXRvcigpIGZvciBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IDZmMWYwMjk0MDFjMGM5MjY0ZTRmMDZhMTkzMTg2NGVkYTVl
ZmEyNzAuLmM0ODQ2MTc5OGY3ZDI0NzJkZmQ2MDQ5NDcyNmE0NGFiZGJhZTgzZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0wNC0xNCAgUGVuZyBM
aXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBXZWJDb250ZW50IHBy
b2Nlc3Mgc2hvdWxkIG5vdCBjcmVhdGUgQVZPdXRwdXRDb250ZXh0IGluc3RhbmNlcyB3aGVuIG1l
ZGlhIGluIEdQVSBQcm9jZXNzIGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDQ2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAo
V2ViQ2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaDoKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW06CisgICAgICAgIChX
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlclN0YXRlKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dl
YlZpZXcgX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTmFtZTpzdGF0ZTpdKToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgorCiAyMDIxLTA0LTEzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHN1
cHBvcnQgZm9yIE5QQVBJIHBsdWdpbnMgaW4gV2ViVmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXgg
ZTExNTA1Y2RkMGY4ZTQzYjI4NzNkYjdhMWQ1ODFmOGRmOTg0ZmViMy4uYzA0ZjgwNGVkOTM3YzY3
MGFkZWY3YjNiNjg5ZDg5NWRmYTdlN2IwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMjY5LDcg
KzEyNjksNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvTUlNRVR5cGVDYWNoZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5YmFja1RhcmdldC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1Rh
cmdldENsaWVudC5oCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllckVudW1zLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAppbmRleCA2YzZhYjBlN2E2
MmVjNGRhNDVlZDNkYmM5NDE0NTUxNzVjZDQ0ZDVhLi5kNWI1OTVhNGFjNDlmZjBlZmZlNjJiNDUy
ZWMzNDJiN2QzODMwNDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBs
YXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAg
dm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlckVuYWJsZWQoYm9vbCBlbmFibGUKICAgICBtX21vY2tQaWNrZXJFbmFibGVkID0gZW5hYmxl
ZDsKIH0KIAotdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6OlN0YXRlIHN0YXRlKQordm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRN
b2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSkKIHsKICAgICBBTFdBWVNf
TE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwogICAgIG1vY2tQaWNrZXIoKS5zZXRT
dGF0ZShuYW1lLCBzdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fp
cnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
aXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaAppbmRleCBkN2YyOGNjYjc1ZTVkNzU1ZGFm
NDMzNGVmNjU2Y2IxNDE5MGZhYjU0Li4xYmExMjg0ZjIzMzNjNzg0NmFiODBkNGUxMWRiMmJmNGYw
MjA2NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVk
aWFTZXNzaW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9X
ZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyJiBzaGFyZWQoKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJF
bmFibGVkKGJvb2wpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6U3RhdGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6TW9ja1N0YXRlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vY2tNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF5
YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGFkZFBsYXliYWNrVGFyZ2V0UGlja2Vy
Q2xpZW50KFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmLCBQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGVjZTQ2Y2Zh
NDExOTgzNDUxNzhhNWQyN2Y3NzI3ZGI5MDczNThjYzkuLjFhYjdmMjA0ODU0ZjgxZTE0Nzk1MDAz
NmMzYzVmYzVlNjAzYWE0MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzY5LDYgKzM2
OSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSU9TdXJmYWNlUG9vbENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9JbnRSZWN0Q29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhRW5naW5lQ29u
ZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVmOGVlNTliNzFlZTU2NDE4YWIxNTYxNDg4ODk2MTM3
YmM0MmM3NzYuLjYyMDQzZjJjYWVjNzAyODNkMTYyN2JmNDM4OTJjOGZiNzlkYjFhOWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTY5NTMsOSArNjk1Myw5IEBACiAJCTFDREQ0NUU0MEJBOUM4NDYwMEY5MDE0NyAvKiBEZWJ1Z1Jl
bGVhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRGVidWdSZWxl
YXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0RENDVFNTBCQTlD
ODQ2MDBGOTAxNDcgLyogV2ViQ29yZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7
IHBhdGggPSBXZWJDb3JlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
Q0RENDVFNjBCQTlDODQ2MDBGOTAxNDcgLyogQmFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
eGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkxQ0U4RDEyNTI2MTg1QkQ4MDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRl
bnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRTg4NjNFMjYxMDVBNUYwMDBDODE2
QyAvKiBJbk1lbW9yeURpc3BsYXlMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluTWVtb3J5
RGlzcGxheUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0U4ODYzRjI2
MTA1QTVGMDAwQzgxNkMgLyogSW5NZW1vcnlEaXNwbGF5TGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bk1lbW9yeURpc3BsYXlMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDRThE
MTI1MjYxODVCRDgwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFQ0IzQTgyMUYyQjY3MzAwRjQ0NTQyIC8qIFdITFNM
U3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3RhdGVtZW50
QmVoYXZpb3JDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRThEMTJC
MjYxODYxNjQwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERpc3BsYXlMaXN0SXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQ0U4RDEyQzI2MTg2MTY0MDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVyYXRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02OTc4LDYgKzY5NzgsNyBAQAogCQkxRDAwMjZBMzIzNzRENjI0MDBDQTZDREYg
LyogSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTUGljdHVyZUluUGljdHVyZVdpbmRvdy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFEMDAyNkE4MjM3NEY5RDkwMENBNkNERiAvKiBKU0VudGVyUGljdHVy
ZUluUGljdHVyZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRW50
ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUQwMDI2QTkyMzc0RjlEOTAwQ0E2Q0RGIC8qIEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFbnRlclBpY3R1cmVJ
blBpY3R1cmVFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFEMDA4QUE1
MjYyMTA4QzAwMEVFM0FERSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxRDJDODJCNjIzNkEzRjZBMDA1NUQ2QzUgLyogUGljdHVyZUlu
UGljdHVyZVN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGljdHVyZUluUGljdHVyZVN1cHBvcnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUQ0NzY1OEQyNUNDQTc3ODAwN0FGMzEy
IC8qIEltYWdlRGVjb2RlcklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VEZWNvZGVy
SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxREFCMzExMzI1MUQ3
MjVDMDBGQzk0ODUgLyogVmlkZW9MYXllck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9M
YXllck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2OTYwLDcgKzI2
OTYxLDYgQEAKIAkJCQlDRERFMDJFOTE4QjNERkM3MDBDRjdGRjEgLyogTGVnYWN5Q0RNU2Vzc2lv
bi5oICovLAogCQkJCTA3RTNERkQwMUE5RTc4NjUwMDc2NENBOCAvKiBNZWRpYVBsYXliYWNrVGFy
Z2V0LmggKi8sCiAJCQkJMDc5MjE2NTMxQUE1NjBBQTAwQTNDMDQ5IC8qIE1lZGlhUGxheWJhY2tU
YXJnZXRDbGllbnQuaCAqLywKLQkJCQkwN0Y4NzY4MzFBRDRBOTQ1MDA5MDU4NDkgLyogTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQuaCAqLywKIAkJCQkwNzhFNDNENzFBQkI2QzdFMDAxQzJGQTYg
LyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5jcHAgKi8sCiAJCQkJMDc4RTQzRDgxQUJCNkM3
RTAwMUMyRkE2IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaCAqLywKIAkJCQlFNEI0MUUw
QzBDQkY5MEJEMDBBRjJFQ0UgLyogTWVkaWFQbGF5ZXIuY3BwICovLApAQCAtMjcxNzYsNiArMjcx
NzYsOCBAQAogCQkJCUFEOUZGNkUwMTkwODM5MUQwMDNCNjFFMCAvKiBJT1N1cmZhY2VQb29sQ29j
b2EubW0gKi8sCiAJCQkJQ0RDNDhBQzgyMTQ5Q0YyQTAwMjRGRDU5IC8qIE1lZGlhRW5naW5lQ29u
ZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAgKi8sCiAJCQkJQ0RDNDhBQzcyMTQ5Q0YyQTAwMjRG
RDU5IC8qIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5oICovLAorCQkJCTA3
Rjg3NjgzMUFENEE5NDUwMDkwNTg0OSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oICov
LAorCQkJCTFEMDA4QUE1MjYyMTA4QzAwMEVFM0FERSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dC5tbSAqLywKIAkJCQkzMTY0N0ZBODI1MTYxNkJEMDAxMEY4RkIgLyogT3BlbkdMU29mdExp
bmtDb2NvYS5oICovLAogCQkJCTMxNjQ3RkE5MjUxNjE2QkQwMDEwRjhGQiAvKiBPcGVuR0xTb2Z0
TGlua0NvY29hLm1tICovLAogCQkJCTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRBRiAvKiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
Q2xpZW50LmgKaW5kZXggZDBiYzM1NTBkNGQwODM1YzMzM2UxZjQ4M2Y1ZjI1YWRkMDQ4MzNjZS4u
ZGY0YzljMWY4NGVjYTIwZTdiMWZiZDM3YzE0MzhjNWUwYWJiMGQ1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCkBAIC01MTMsNyArNTEzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0
SWRlbnRpZmllciwgY29uc3QgSW50UG9pbnQmLCBib29sIC8qaXNWaWRlbyovKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5nZShQbGF5
YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0
YXRlRmxhZ3MpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlckVuYWJsZWQoYm9vbCkgIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpTdGF0ZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldE1vY2tNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6Ok1vY2tTdGF0ZSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIG1vY2tNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCkgeyB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
aW5kZXggYmQ5ZTUzODJiYzlkY2NiYWZmZWM2YjM5NDIyMjRjOGQ1ZWE2NmI5YS4uY2RiZmZhMGM2
YTA1MmIwZTFmYTAxY2QxZmQ5MzFkYmNiZmRkZjU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0y
OTUyLDcgKzI5NTIsNyBAQCB2b2lkIFBhZ2U6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgY2hyb21lKCkuY2xpZW50KCkuc2V0TW9ja01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGVuYWJsZWQpOwogfQogCi12b2lkIFBhZ2U6
OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1l
LCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCit2b2lkIFBhZ2U6OnNl
dE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKQogewogICAgIGNocm9t
ZSgpLmNsaWVudCgpLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUobmFtZSwg
c3RhdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBkNDgyODE2OTA1NTNlMDQ2ZjQ3MDM0N2VkNmJi
NDUyMTVlMjA2NDlkLi43NzAxYjA4YzFlM2M5Yjk0YjBiMGNkYjA2NjE5MDljMjIyMjJmNDQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaApAQCAtNzMxLDcgKzczMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3dQ
bGF5YmFja1RhcmdldFBpY2tlcihQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVy
LCBjb25zdCBJbnRQb2ludCYsIGJvb2wsIFJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5n
Jik7CiAgICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tlckNsaWVudFN0YXRlRGlkQ2hhbmdlKFBs
YXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIE1lZGlhUHJvZHVjZXI6Ok1lZGlh
U3RhdGVGbGFncyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRN
b2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRN
b2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
bW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0UGxheWJhY2tUYXJnZXQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllciwgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldC5oCmlu
ZGV4IDZhZGZhOTM3ZjczZjU3M2Q5NWM5ZmNkNzRkNmQyMWI4NzNhMmY3ODguLjYxMjgwODUwMWYw
NGYyZmE1ZDRmYmRkODI2YTVlYTA5NmYyYTNjNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0LmgKQEAgLTI3LDI0ICsy
NywyMyBAQAogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKIAorI2luY2x1
ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OwotCiBjbGFzcyBNZWRpYVBsYXliYWNr
VGFyZ2V0IDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFQbGF5YmFja1RhcmdldD4gewogcHVibGlj
OgogICAgIHZpcnR1YWwgfk1lZGlhUGxheWJhY2tUYXJnZXQoKSA9IGRlZmF1bHQ7CiAKLSAgICBl
bnVtIFRhcmdldFR5cGUgeyBBVkZvdW5kYXRpb24sIE1vY2sgfTsKKyAgICBlbnVtIGNsYXNzIFRh
cmdldFR5cGUgOiB1aW50OF90IHsgQVZGb3VuZGF0aW9uLCBNb2NrIH07CiAgICAgdmlydHVhbCBU
YXJnZXRUeXBlIHRhcmdldFR5cGUoKSBjb25zdCA9IDA7Ci0KICAgICB2aXJ0dWFsIGNvbnN0IE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXRDb250ZXh0KCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBoYXNBY3RpdmVSb3V0ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFN0
cmluZyBkZXZpY2VOYW1lKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Jl
bW90ZVZpZGVvUGxheWJhY2soKSBjb25zdCA9IDA7CisKKyAgICBib29sIGhhc0FjdGl2ZVJvdXRl
KCkgY29uc3QgeyByZXR1cm4gdGFyZ2V0Q29udGV4dCgpLmhhc0FjdGl2ZVJvdXRlKCk7IH0KKyAg
ICBTdHJpbmcgZGV2aWNlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIHRhcmdldENvbnRleHQoKS5kZXZp
Y2VOYW1lKCk7IH0KKyAgICBib29sIHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygpIHsgcmV0
dXJuIHRhcmdldENvbnRleHQoKS5zdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKTsgfQogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDFjZTRhM2VjMzAxZTlkOWU5NzQ0ZGNiZjI5YjdhN2ExMGJmNGIzNGIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaAorKysgL2Rldi9udWxsCkBA
IC0xLDEwOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLSNpZm5kZWYgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHRfaAotI2RlZmluZSBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dF9oCi0KLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQotCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLU9CSkNfQ0xBU1Mg
QVZPdXRwdXRDb250ZXh0OwotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi1PQkpDX0NMQVNTIE5TS2V5
ZWRBcmNoaXZlcjsKLU9CSkNfQ0xBU1MgTlNLZXllZFVuYXJjaGl2ZXI7Ci0jZW5kaWYKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCB7Ci1w
dWJsaWM6Ci0gICAgZW51bSBUeXBlIDogaW50MzJfdCB7Ci0gICAgICAgIE5vbmUsCi0gICAgICAg
IEFWT3V0cHV0Q29udGV4dFR5cGUsCi0gICAgICAgIE1vY2tUeXBlLAotICAgIH07Ci0KLSAgICBl
bnVtIENvbnRleHRTdGF0ZSB7Ci0gICAgICAgIFVua25vd24gPSAwLAotICAgICAgICBPdXRwdXRE
ZXZpY2VVbmF2YWlsYWJsZSA9IDEsCi0gICAgICAgIE91dHB1dERldmljZUF2YWlsYWJsZSA9IDIs
Ci0gICAgfTsKLSAgICB0eXBlZGVmIHVuc2lnbmVkIFN0YXRlOwotCi0gICAgTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQoKQotICAgICAgICA6IG1fdHlwZShOb25lKQotICAgIHsKLSAgICB9Ci0K
LSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChBVk91dHB1dENvbnRleHQgKm91dHB1dENv
bnRleHQpCi0gICAgICAgIDogbV90eXBlKEFWT3V0cHV0Q29udGV4dFR5cGUpCi0gICAgICAgICwg
bV9vdXRwdXRDb250ZXh0KG91dHB1dENvbnRleHQpCi0gICAgewotICAgIH0KLQotICAgIE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0KGNvbnN0IFN0cmluZyYgbmFtZSwgU3RhdGUgc3RhdGUpCi0g
ICAgICAgIDogbV90eXBlKE1vY2tUeXBlKQotICAgICAgICAsIG1fbmFtZShuYW1lKQotICAgICAg
ICAsIG1fc3RhdGUoc3RhdGUpCi0gICAgewotICAgIH0KLQotICAgIFR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBtb2NrRGV2aWNlTmFtZSgp
IGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IE1vY2tUeXBlKTsKLSAgICAg
ICAgcmV0dXJuIG1fbmFtZTsKLSAgICB9Ci0KLSAgICBTdGF0ZSBtb2NrU3RhdGUoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBNb2NrVHlwZSk7Ci0gICAgICAgIHJldHVy
biBtX3N0YXRlOwotICAgIH0KLQotICAgIEFWT3V0cHV0Q29udGV4dCAqYXZPdXRwdXRDb250ZXh0
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQVZPdXRwdXRDb250ZXh0
VHlwZSk7Ci0gICAgICAgIHJldHVybiBtX291dHB1dENvbnRleHQ7Ci0gICAgfQotCi0gICAgYm9v
bCBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09
IEFWT3V0cHV0Q29udGV4dFR5cGU7IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgVHlwZSBtX3R5cGUg
eyBOb25lIH07Ci0gICAgQVZPdXRwdXRDb250ZXh0ICptX291dHB1dENvbnRleHQgeyBudWxscHRy
IH07Ci0gICAgU3RyaW5nIG1fbmFtZTsKLSAgICBTdGF0ZSBtX3N0YXRlIHsgVW5rbm93biB9Owot
fTsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLQot
I2VuZGlmIC8vIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJn
ZXRDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oCmluZGV4IDZhOGUxOTQ3NmEzNDdkOGU3NDg0MWZm
NjlmYmQ0OGIwOTIyM2M4ODkuLjY4ZTM1MmNhMDhjOThiYmYxYzk5ZGZhMjVhNDkwMzVkYWJmMzRi
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmgKQEAg
LTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogCiAj
aW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldC5oIgotI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0zNiw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb2NvYSA6IHB1YmxpYyBNZWRpYVBsYXliYWNrVGFyZ2V0IHsKIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+
IGNyZWF0ZShBVk91dHB1dENvbnRleHQgKik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBjcmVhdGUoTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQm
Jik7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9T
SU1VTEFUT1IpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBzdGF0aWMgUmVmPE1lZGlh
UGxheWJhY2tUYXJnZXQ+IGNyZWF0ZSgpOwpAQCAtNDMsMjEgKzQzLDE0IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgfk1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSgpOwogCi0gICAgVGFyZ2V0VHlw
ZSB0YXJnZXRUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQVZGb3VuZGF0aW9uOyB9Ci0KLSAg
ICBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0Q29udGV4dCgpIGNvbnN0
IGZpbmFsOwotICAgIGJvb2wgaGFzQWN0aXZlUm91dGUoKSBjb25zdCBmaW5hbDsKLSAgICBTdHJp
bmcgZGV2aWNlTmFtZSgpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNSZW1vdGVWaWRl
b1BsYXliYWNrKCkgY29uc3QgZmluYWw7Ci0KLSAgICBBVk91dHB1dENvbnRleHQgKm91dHB1dENv
bnRleHQoKSBjb25zdCB7IHJldHVybiBtX291dHB1dENvbnRleHQuZ2V0KCk7IH0KKyAgICBUYXJn
ZXRUeXBlIHRhcmdldFR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBUYXJnZXRUeXBlOjpBVkZv
dW5kYXRpb247IH0KKyAgICBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0
Q29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29udGV4dDsgfQogCiBwcm90ZWN0ZWQ6
Ci0gICAgTWVkaWFQbGF5YmFja1RhcmdldENvY29hKEFWT3V0cHV0Q29udGV4dCAqKTsKKyAgICBl
eHBsaWNpdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoQVZPdXRwdXRDb250ZXh0ICopOworICAg
IGV4cGxpY2l0IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dCYmKTsKIAotICAgIFJldGFpblB0cjxBVk91dHB1dENvbnRleHQ+IG1fb3V0cHV0Q29udGV4
dDsKLSAgICBtdXRhYmxlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IG1fY29udGV4dDsKLSAg
ICBTdHJpbmcgbV9kZXZpY2VOYW1lOworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IG1f
Y29udGV4dDsKIH07CiAKIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSogdG9NZWRpYVBsYXliYWNr
VGFyZ2V0Q29jb2EoTWVkaWFQbGF5YmFja1RhcmdldCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9N
ZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EubW0KaW5kZXggZGFjOGNjNDgxNTZjMmM3ZTc0ZWFhYzdi
NGRkZTRiYzIxNzc1MTlhYS4uNmY1YzI3ZTM5NDBlM2EwODdiZjIxYjhmNDAwNDFiNDc1MGRkZGEz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1tCkBA
IC0zNCw5MiArMzQsMzYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TWVkaWFQbGF5
YmFja1RhcmdldD4gTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUoQVZPdXRwdXRDb250
ZXh0ICpjb250ZXh0KQorUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IE1lZGlhUGxheWJhY2tUYXJn
ZXRDb2NvYTo6Y3JlYXRlKEFWT3V0cHV0Q29udGV4dCAqb3V0cHV0Q29udGV4dCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoY29udGV4dCkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShvdXRwdXRD
b250ZXh0KSk7CiB9CiAKLU1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6TWVkaWFQbGF5YmFja1Rh
cmdldENvY29hKEFWT3V0cHV0Q29udGV4dCAqY29udGV4dCkKLSAgICA6IE1lZGlhUGxheWJhY2tU
YXJnZXQoKQotICAgICwgbV9vdXRwdXRDb250ZXh0KGNvbnRleHQpCitSZWY8TWVkaWFQbGF5YmFj
a1RhcmdldD4gTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUoTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQmJiBjb250ZXh0KQogeworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlh
UGxheWJhY2tUYXJnZXRDb2NvYShXVEZNb3ZlKGNvbnRleHQpKSk7CiB9CiAKLSNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpICYmICFQTEFU
Rk9STShNQUNDQVRBTFlTVCkKLVJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29jb2E6OmNyZWF0ZSgpCitNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb2NvYShBVk91dHB1dENvbnRleHQgKm91dHB1dENvbnRleHQpCisgICAgOiBt
X2NvbnRleHQob3V0cHV0Q29udGV4dCkKIHsKLSAgICBhdXRvICpyb3V0aW5nQ29udGV4dFVJRCA9
IFtbUEFMOjpnZXRBVkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5zdGFuY2VdIHJvdXRpbmdD
b250ZXh0VUlEXTsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29jb2EoW1BBTDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBvdXRwdXRDb250ZXh0Rm9ySUQ6
cm91dGluZ0NvbnRleHRVSURdKSk7CiB9Ci0jZW5kaWYKIAotYm9vbCBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29jb2E6OnN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygpIGNvbnN0CitNZWRpYVBsYXli
YWNrVGFyZ2V0Q29jb2E6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dCYmIGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkK
IHsKLSAgICBpZiAoIW1fb3V0cHV0Q29udGV4dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgaWYgKCFbbV9vdXRwdXRDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc3Vw
cG9ydHNNdWx0aXBsZU91dHB1dERldmljZXMpXSB8fCAhW21fb3V0cHV0Q29udGV4dCBzdXBwb3J0
c011bHRpcGxlT3V0cHV0RGV2aWNlc10gfHwgIVttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihvdXRwdXREZXZpY2VzKV0pIHsKLSAgICAgICAgaWYgKGF1dG8gKm91
dHB1dERldmljZSA9IFttX291dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlXSkgewotICAgICAgICAg
ICAgaWYgKG91dHB1dERldmljZS5kZXZpY2VGZWF0dXJlcyAmIEFWT3V0cHV0RGV2aWNlRmVhdHVy
ZVZpZGVvKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGZvciAoQVZPdXRwdXREZXZpY2UgKm91dHB1
dERldmljZSBpbiBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmljZXNdKSB7Ci0gICAgICAgIGlm
IChvdXRwdXREZXZpY2UuZGV2aWNlRmVhdHVyZXMgJiBBVk91dHB1dERldmljZUZlYXR1cmVWaWRl
bykKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsK
IH0KIAotTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjp+TWVkaWFQbGF5YmFja1RhcmdldENvY29h
KCkKLXsKLX0KLQotY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb2NvYTo6dGFyZ2V0Q29udGV4dCgpIGNvbnN0Ci17Ci0gICAgbV9jb250ZXh0ID0g
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQobV9vdXRwdXRDb250ZXh0LmdldCgpKTsKLSAgICBy
ZXR1cm4gbV9jb250ZXh0OwotfQotCi1ib29sIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6aGFz
QWN0aXZlUm91dGUoKSBjb25zdAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9S
TShJT1NfRkFNSUxZX1NJTVVMQVRPUikgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorUmVmPE1l
ZGlhUGxheWJhY2tUYXJnZXQ+IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKCkKIHsK
LSAgICBpZiAoIW1fb3V0cHV0Q29udGV4dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
aWYgKFttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzdXBwb3J0
c011bHRpcGxlT3V0cHV0RGV2aWNlcyldICYmIFttX291dHB1dENvbnRleHQgc3VwcG9ydHNNdWx0
aXBsZU91dHB1dERldmljZXNdICYmIFttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihvdXRwdXREZXZpY2VzKV0pIHsKLSAgICAgICAgZm9yIChBVk91dHB1dERldmlj
ZSAqb3V0cHV0RGV2aWNlIGluIFttX291dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlc10pIHsKLSAg
ICAgICAgICAgIGlmIChvdXRwdXREZXZpY2UuZGV2aWNlRmVhdHVyZXMgJiAoQVZPdXRwdXREZXZp
Y2VGZWF0dXJlVmlkZW8gfCBBVk91dHB1dERldmljZUZlYXR1cmVBdWRpbykpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgaWYgKFttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihvdXRwdXREZXZpY2UpXSkgewotICAgICAgICBpZiAoYXV0byAqb3V0cHV0RGV2aWNlID0g
W21fb3V0cHV0Q29udGV4dCBvdXRwdXREZXZpY2VdKQotICAgICAgICAgICAgcmV0dXJuIG91dHB1
dERldmljZS5kZXZpY2VGZWF0dXJlcyAmIChBVk91dHB1dERldmljZUZlYXR1cmVWaWRlbyB8IEFW
T3V0cHV0RGV2aWNlRmVhdHVyZUF1ZGlvKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbV9vdXRwdXRD
b250ZXh0LmdldCgpLmRldmljZU5hbWU7CisgICAgYXV0byAqcm91dGluZ0NvbnRleHRVSUQgPSBb
W1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXSByb3V0aW5nQ29u
dGV4dFVJRF07CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFQbGF5YmFja1RhcmdldENv
Y29hKFtQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgb3V0cHV0Q29udGV4dEZvcklEOnJv
dXRpbmdDb250ZXh0VUlEXSkpOwogfQorI2VuZGlmCiAKLVN0cmluZyBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29jb2E6OmRldmljZU5hbWUoKSBjb25zdAorTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjp+
TWVkaWFQbGF5YmFja1RhcmdldENvY29hKCkKIHsKLSAgICBpZiAoIW1fb3V0cHV0Q29udGV4dCkK
LSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICBpZiAoIVttX291dHB1dENvbnRl
eHQgc3VwcG9ydHNNdWx0aXBsZU91dHB1dERldmljZXNdKQotICAgICAgICByZXR1cm4gW21fb3V0
cHV0Q29udGV4dCBkZXZpY2VOYW1lXTsKLQotICAgIGF1dG8gb3V0cHV0RGV2aWNlTmFtZXMgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLSAgICBmb3IgKEFWT3V0cHV0
RGV2aWNlICpvdXRwdXREZXZpY2UgaW4gW21fb3V0cHV0Q29udGV4dCBvdXRwdXREZXZpY2VzXSkK
LSAgICAgICAgW291dHB1dERldmljZU5hbWVzIGFkZE9iamVjdDpbb3V0cHV0RGV2aWNlIGRldmlj
ZU5hbWVdXTsKLQotICAgIHJldHVybiBbb3V0cHV0RGV2aWNlTmFtZXMgY29tcG9uZW50c0pvaW5l
ZEJ5U3RyaW5nOkAiICsgIl07CiB9CiAKIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSogdG9NZWRp
YVBsYXliYWNrVGFyZ2V0Q29jb2EoTWVkaWFQbGF5YmFja1RhcmdldCogcmVwKQpAQCAtMTI5LDcg
KzczLDcgQEAgTWVkaWFQbGF5YmFja1RhcmdldENvY29hKiB0b01lZGlhUGxheWJhY2tUYXJnZXRD
b2NvYShNZWRpYVBsYXliYWNrVGFyZ2V0KiByZXApCiAKIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJn
ZXRDb2NvYSogdG9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoY29uc3QgTWVkaWFQbGF5YmFja1Rh
cmdldCogcmVwKQogewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHJlcC0+
dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6OkFWRm91bmRhdGlvbik7CisgICAg
UkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihyZXAtPnRhcmdldFR5cGUo
KSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpUYXJnZXRUeXBlOjpBVkZvdW5kYXRpb24pOwogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EqPihyZXAp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCAyMGIyNDEyZjExMzY2M2MxZjM4NjJm
MjdiNjYyNDAwZjZjZGIwNzJiLi4wYWMwOTNlNTBjYTI5ODBjNTlhMzI3YTJjMmU4ODFlY2RmYjFi
YmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTI4MjQsNyArMjgyNCw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aXNDdXJyZW50UGxheWJhY2tUYXJn
ZXRXaXJlbGVzcygpIGNvbnN0CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAo
bV9wbGF5YmFja1RhcmdldCkgewotICAgICAgICBpZiAobV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0
VHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6OkFWRm91bmRhdGlvbikKKyAgICAgICAgaWYg
KG1fcGxheWJhY2tUYXJnZXQtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpU
YXJnZXRUeXBlOjpBVkZvdW5kYXRpb24pCiAgICAgICAgICAgICB3aXJlbGVzc1RhcmdldCA9IG1f
YXZQbGF5ZXIgJiYgbV9hdlBsYXllci5nZXQoKS5leHRlcm5hbFBsYXliYWNrQWN0aXZlOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICB3aXJlbGVzc1RhcmdldCA9IG1fc2hvdWxkUGxheVRvUGxh
eWJhY2tUYXJnZXQgJiYgbV9wbGF5YmFja1RhcmdldC0+aGFzQWN0aXZlUm91dGUoKTsKQEAgLTI5
NjgsNyArMjk2OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5CiB7CiAgICAgbV9wbGF5YmFj
a1RhcmdldCA9IFdURk1vdmUodGFyZ2V0KTsKIAotICAgIG1fb3V0cHV0Q29udGV4dCA9IG1fcGxh
eWJhY2tUYXJnZXQtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpBVkZvdW5k
YXRpb24gPyB0b01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShtX3BsYXliYWNrVGFyZ2V0LmdldCgp
KS0+b3V0cHV0Q29udGV4dCgpIDogbnVsbHB0cjsKKyAgICBtX291dHB1dENvbnRleHQgPSBtX3Bs
YXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldDo6VGFyZ2V0
VHlwZTo6QVZGb3VuZGF0aW9uID8gdG9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EobV9wbGF5YmFj
a1RhcmdldC5nZXQoKSktPnRhcmdldENvbnRleHQoKS5vdXRwdXRDb250ZXh0KCkgOiBudWxscHRy
OwogCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAKQEAgLTI5ODgsNyArMjk4OCw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQoYm9vbCBzaG91CiAKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCBz
aG91bGRQbGF5KTsKIAotICAgIGlmIChtX3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0g
TWVkaWFQbGF5YmFja1RhcmdldDo6QVZGb3VuZGF0aW9uKSB7CisgICAgaWYgKG1fcGxheWJhY2tU
YXJnZXQtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpUYXJnZXRUeXBlOjpB
VkZvdW5kYXRpb24pIHsKICAgICAgICAgQVZPdXRwdXRDb250ZXh0ICpuZXdDb250ZXh0ID0gc2hv
dWxkUGxheSA/IG1fb3V0cHV0Q29udGV4dC5nZXQoKSA6IG5pbDsKIAogICAgICAgICBpZiAoIW1f
YXZQbGF5ZXIpCkBAIC0zMDA1LDcgKzMwMDUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wgc2hvdQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKG1fcGxheWJhY2tUYXJnZXQtPnRh
cmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpNb2NrKTsKKyAgICBBU1NFUlQobV9w
bGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6OlRhcmdl
dFR5cGU6Ok1vY2spOwogCiAgICAgc2V0RGVsYXlDYWxsYmFja3ModHJ1ZSk7CiAgICAgYXV0byB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2YTUwYjAwNmVlYTBhOGIyMzYyOTYxNzVmYmRmNWE4NGM5
N2VjMDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oCkBAIC0wLDAgKzEsMTM2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorCisjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisj
aWYgUExBVEZPUk0oQ09DT0EpCitPQkpDX0NMQVNTIEFWT3V0cHV0Q29udGV4dDsKK09CSkNfQ0xB
U1MgTlNEYXRhOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQgeworcHVibGljOgorICAgIGVudW0gY2xhc3MgVHlwZSA6IHVp
bnQ4X3QgeworICAgICAgICBOb25lLAorICAgICAgICBBVk91dHB1dENvbnRleHQsCisgICAgICAg
IFNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQsCisgICAgICAgIE1vY2ssCisgICAgfTsKKworICAg
IGVudW0gY2xhc3MgTW9ja1N0YXRlIDogdWludDhfdCB7CisgICAgICAgIFVua25vd24gPSAwLAor
ICAgICAgICBPdXRwdXREZXZpY2VVbmF2YWlsYWJsZSA9IDEsCisgICAgICAgIE91dHB1dERldmlj
ZUF2YWlsYWJsZSA9IDIsCisgICAgfTsKKworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
KCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0KFJldGFpblB0cjxBVk91dHB1dENvbnRleHQ+JiYpOworCisgICAgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQoUmV0YWluUHRyPE5TRGF0YT4mJiBzZXJpYWxpemVkT3V0cHV0
Q29udGV4dCwgYm9vbCBoYXNBY3RpdmVSb3V0ZSkKKyAgICAgICAgOiBtX3R5cGUoVHlwZTo6U2Vy
aWFsaXplZEFWT3V0cHV0Q29udGV4dCkKKyAgICAgICAgLCBtX3NlcmlhbGl6ZWRPdXRwdXRDb250
ZXh0KFdURk1vdmUoc2VyaWFsaXplZE91dHB1dENvbnRleHQpKQorICAgICAgICAsIG1fY2FjaGVk
SGFzQWN0aXZlUm91dGUoaGFzQWN0aXZlUm91dGUpCisgICAgeworICAgICAgICBBU1NFUlQobV9z
ZXJpYWxpemVkT3V0cHV0Q29udGV4dCk7CisgICAgfQorCisgICAgTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQoY29uc3QgU3RyaW5nJiBtb2NrRGV2aWNlTmFtZSwgTW9ja1N0YXRlIHN0YXRlKQor
ICAgICAgICA6IG1fdHlwZShUeXBlOjpNb2NrKQorICAgICAgICAsIG1fbW9ja0RldmljZU5hbWUo
bW9ja0RldmljZU5hbWUpCisgICAgICAgICwgbV9tb2NrU3RhdGUoc3RhdGUpCisgICAgeworICAg
IH0KKworICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBkZXZpY2VOYW1lKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBoYXNBY3RpdmVSb3V0ZSgpIGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNSZW1vdGVWaWRl
b1BsYXliYWNrKCkgY29uc3Q7CisKKyAgICBNb2NrU3RhdGUgbW9ja1N0YXRlKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6TW9jayk7CisgICAgICAgIHJldHVy
biBtX21vY2tTdGF0ZTsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8QVZPdXRwdXRDb250ZXh0PiBv
dXRwdXRDb250ZXh0KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlw
ZTo6QVZPdXRwdXRDb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIG1fb3V0cHV0Q29udGV4dDsKKyAg
ICB9CisKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBzZXJpYWxpemVkT3V0cHV0Q29udGV4dCgpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OlNlcmlhbGl6ZWRBVk91
dHB1dENvbnRleHQpOworICAgICAgICByZXR1cm4gbV9zZXJpYWxpemVkT3V0cHV0Q29udGV4dDsK
KyAgICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNlcmlhbGl6ZU91dHB1dENvbnRleHQo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGRlc2VyaWFsaXplT3V0cHV0Q29udGV4dCgpOwor
CisgICAgYm9vbCBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlID09IFR5cGU6OkFWT3V0cHV0Q29udGV4dCB8fCBtX3R5cGUgPT0gVHlwZTo6U2VyaWFs
aXplZEFWT3V0cHV0Q29udGV4dDsgfQorCitwcml2YXRlOgorICAgIFR5cGUgbV90eXBlIHsgVHlw
ZTo6Tm9uZSB9OworICAgIFJldGFpblB0cjxBVk91dHB1dENvbnRleHQ+IG1fb3V0cHV0Q29udGV4
dDsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBtX3NlcmlhbGl6ZWRPdXRwdXRDb250ZXh0OworICAg
IGJvb2wgbV9jYWNoZWRIYXNBY3RpdmVSb3V0ZSB7IGZhbHNlIH07CisKKyAgICBTdHJpbmcgbV9t
b2NrRGV2aWNlTmFtZTsKKyAgICBNb2NrU3RhdGUgbV9tb2NrU3RhdGUgeyBNb2NrU3RhdGU6OlVu
a25vd24gfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7
CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6OlR5cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAg
ICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZSwKKyAgICAgICAg
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok5vbmUsCisgICAgICAg
IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRl
eHQsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpT
ZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0LAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dDo6VHlwZTo6TW9jaworICAgID47Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVj
dCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3Rh
dGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlLAorICAgICAgICBXZWJDb3JlOjpN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpVbmtub3duLAorICAgICAgICBX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpPdXRwdXREZXZp
Y2VVbmF2YWlsYWJsZSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6Ok1vY2tTdGF0ZTo6T3V0cHV0RGV2aWNlQXZhaWxhYmxlCisgICAgPjsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWQ5
ZDU1OGIzY2MyN2I5M2FjYzFjOTMxZjE2NGM2ZGVhMWJiNDcxMgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0Lm1tCkBAIC0wLDAgKzEsMTYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgiCisKKyNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaD4KKyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8cGFsL3NwaS9j
b2NvYS9BVkZvdW5kYXRpb25TUEkuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25T
b2Z0TGluay5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChSZXRhaW5QdHI8QVZPdXRwdXRDb250
ZXh0PiYmIG91dHB1dENvbnRleHQpCisgICAgOiBtX291dHB1dENvbnRleHQob3V0cHV0Q29udGV4
dCkKK3sKKyAgICBBU1NFUlQobV9vdXRwdXRDb250ZXh0KTsKKyAgICBtX3R5cGUgPSBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0OworfQorCitTdHJpbmcg
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OmRldmljZU5hbWUoKSBjb25zdAoreworICAgIEFT
U0VSVChtX3R5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2sgfHwg
bV90eXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRl
eHQpOworCisgICAgaWYgKG1fdHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlw
ZTo6TW9jaykKKyAgICAgICAgcmV0dXJuIG1fbW9ja0RldmljZU5hbWU7CisKKyAgICBBU1NFUlQo
bV90eXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRl
eHQpOworICAgIFN0cmluZyBkZXZpY2VOYW1lOworICAgIGlmICghW21fb3V0cHV0Q29udGV4dCBz
dXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNlc10pCisgICAgICAgIGRldmljZU5hbWUgPSBbbV9v
dXRwdXRDb250ZXh0IGRldmljZU5hbWVdOworICAgIGVsc2UgeworICAgICAgICBhdXRvIG91dHB1
dERldmljZU5hbWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Cisg
ICAgICAgIGZvciAoQVZPdXRwdXREZXZpY2UgKm91dHB1dERldmljZSBpbiBbbV9vdXRwdXRDb250
ZXh0IG91dHB1dERldmljZXNdKQorICAgICAgICAgICAgW291dHB1dERldmljZU5hbWVzIGFkZE9i
amVjdDpbb3V0cHV0RGV2aWNlIGRldmljZU5hbWVdXTsKKworICAgICAgICBkZXZpY2VOYW1lID0g
W291dHB1dERldmljZU5hbWVzIGNvbXBvbmVudHNKb2luZWRCeVN0cmluZzpAIiArICJdOworICAg
IH0KKworICAgIHJldHVybiBkZXZpY2VOYW1lOworfQorYm9vbCBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6aGFzQWN0aXZlUm91dGUoKSBjb25zdAoreworICAgIEFTU0VSVChtX3R5cGUgIT0g
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok5vbmUpOworICAgIGlmIChtX3R5cGUg
PT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2spCisgICAgICAgIHJldHVy
biAhbV9tb2NrRGV2aWNlTmFtZS5pc0VtcHR5KCk7CisKKyAgICAvLyBGSVhNRTogSXQgbWF5IG5v
dCBiZSBzYWZlIHRvIHVzZSB0aGUgY2FjaGVkIGBoYXNBY3RpdmVSb3V0ZWAgb2YgYSBzZXJpYWxp
emVkIEFWT3V0cHV0Q29udGV4dAorICAgIGlmIChtX3R5cGUgPT0gTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQpCisgICAgICAgIHJldHVy
biBtX2NhY2hlZEhhc0FjdGl2ZVJvdXRlOworCisgICAgQVNTRVJUKG1fdHlwZSA9PSBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0KTsKKyAgICBib29sIGhh
c0FjdGl2ZVJvdXRlID0gZmFsc2U7CisgICAgaWYgKFttX291dHB1dENvbnRleHQgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNlcyldICYmIFtt
X291dHB1dENvbnRleHQgc3VwcG9ydHNNdWx0aXBsZU91dHB1dERldmljZXNdICYmIFttX291dHB1
dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdXRwdXREZXZpY2VzKV0pIHsK
KyAgICAgICAgZm9yIChBVk91dHB1dERldmljZSAqb3V0cHV0RGV2aWNlIGluIFttX291dHB1dENv
bnRleHQgb3V0cHV0RGV2aWNlc10pIHsKKyAgICAgICAgICAgIGlmIChvdXRwdXREZXZpY2UuZGV2
aWNlRmVhdHVyZXMgJiAoQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8gfCBBVk91dHB1dERldmlj
ZUZlYXR1cmVBdWRpbykpCisgICAgICAgICAgICAgICAgaGFzQWN0aXZlUm91dGUgPSB0cnVlOwor
ICAgICAgICB9CisgICAgfSBlbHNlIGlmIChbbV9vdXRwdXRDb250ZXh0IHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Iob3V0cHV0RGV2aWNlKV0pIHsKKyAgICAgICAgaWYgKGF1dG8gKm91dHB1
dERldmljZSA9IFttX291dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlXSkKKyAgICAgICAgICAgIGhh
c0FjdGl2ZVJvdXRlID0gb3V0cHV0RGV2aWNlLmRldmljZUZlYXR1cmVzICYgKEFWT3V0cHV0RGV2
aWNlRmVhdHVyZVZpZGVvIHwgQVZPdXRwdXREZXZpY2VGZWF0dXJlQXVkaW8pOworICAgIH0gZWxz
ZQorICAgICAgICBoYXNBY3RpdmVSb3V0ZSA9IG1fb3V0cHV0Q29udGV4dC5nZXQoKS5kZXZpY2VO
YW1lOworCisgICAgcmV0dXJuIGhhc0FjdGl2ZVJvdXRlOworfQorYm9vbCBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dDo6c3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrKCkgY29uc3QKK3sKKyAg
ICBBU1NFUlQobV90eXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2Nr
IHx8IG1fdHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRD
b250ZXh0KTsKKyAgICBpZiAobV90eXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpU
eXBlOjpNb2NrKQorICAgICAgICByZXR1cm4gIW1fbW9ja0RldmljZU5hbWUuaXNFbXB0eSgpOwor
CisgICAgYm9vbCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2sgPSBmYWxzZTsKKyAgICBpZiAo
IVttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzdXBwb3J0c011
bHRpcGxlT3V0cHV0RGV2aWNlcyldIHx8ICFbbV9vdXRwdXRDb250ZXh0IHN1cHBvcnRzTXVsdGlw
bGVPdXRwdXREZXZpY2VzXSB8fCAhW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKG91dHB1dERldmljZXMpXSkgeworICAgICAgICBpZiAoYXV0byAqb3V0cHV0RGV2
aWNlID0gW21fb3V0cHV0Q29udGV4dCBvdXRwdXREZXZpY2VdKSB7CisgICAgICAgICAgICBpZiAo
b3V0cHV0RGV2aWNlLmRldmljZUZlYXR1cmVzICYgQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8p
CisgICAgICAgICAgICAgICAgc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrID0gdHJ1ZTsKKyAg
ICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAoQVZPdXRwdXREZXZpY2UgKm91dHB1
dERldmljZSBpbiBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmljZXNdKSB7CisgICAgICAgICAg
ICBpZiAob3V0cHV0RGV2aWNlLmRldmljZUZlYXR1cmVzICYgQVZPdXRwdXREZXZpY2VGZWF0dXJl
VmlkZW8pCisgICAgICAgICAgICAgICAgc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrID0gdHJ1
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBzdXBwb3J0c1JlbW90ZVZpZGVvUGxh
eWJhY2s7Cit9CisKK2Jvb2wgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OnNlcmlhbGl6ZU91
dHB1dENvbnRleHQoKQoreworICAgIEFTU0VSVChtX3R5cGUgPT0gTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCk7CisgICAgaWYgKG1fdHlwZSAhPSBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNo
aXZlciBhbGxvY10gaW5pdFJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVNdKTsKKyAgICBbYXJjaGl2
ZXIgZW5jb2RlT2JqZWN0Om1fb3V0cHV0Q29udGV4dC5nZXQoKSBmb3JLZXk6TlNLZXllZEFyY2hp
dmVSb290T2JqZWN0S2V5XTsKKyAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOworCisgICAg
bV9zZXJpYWxpemVkT3V0cHV0Q29udGV4dCA9IFthcmNoaXZlciBlbmNvZGVkRGF0YV07CisgICAg
bV90eXBlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRBVk91
dHB1dENvbnRleHQ7CisgICAgbV9vdXRwdXRDb250ZXh0LmNsZWFyKCk7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6ZGVzZXJpYWxpemVP
dXRwdXRDb250ZXh0KCkKK3sKKyAgICBBU1NFUlQobV90eXBlID09IE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0KTsKKyAgICBpZiAobV90
eXBlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRw
dXRDb250ZXh0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHN1Y2Nlc3MgPSBm
YWxzZTsKKyAgICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIg
YWxsb2NdIGluaXRGb3JSZWFkaW5nRnJvbURhdGE6bV9zZXJpYWxpemVkT3V0cHV0Q29udGV4dC5n
ZXQoKSBlcnJvcjpudWxscHRyXSk7CisgICAgdW5hcmNoaXZlci5nZXQoKS5kZWNvZGluZ0ZhaWx1
cmVQb2xpY3kgPSBOU0RlY29kaW5nRmFpbHVyZVBvbGljeVJhaXNlRXhjZXB0aW9uOworICAgIGF1
dG8gYWxsb3dlZENsYXNzU2V0ID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0aEFycmF5
OkBbIFBBTDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBdXSk7CisKKyAgICBAdHJ5IHsKKyAg
ICAgICAgaWQgcmVzdWx0ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOmFsbG93
ZWRDbGFzc1NldC5nZXQoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKKyAg
ICAgICAgQVNTRVJUKHJlc3VsdCk7CisgICAgICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgICAg
IG1fb3V0cHV0Q29udGV4dCA9IHJlc3VsdDsKKyAgICAgICAgICAgIG1fdHlwZSA9IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQ7CisgICAgICAgICAgICBt
X3NlcmlhbGl6ZWRPdXRwdXRDb250ZXh0LmNsZWFyKCk7CisgICAgICAgICAgICBzdWNjZXNzID0g
dHJ1ZTsKKyAgICAgICAgfQorICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7
CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBvYmplY3Qgb2YgY2xhc3MgQVZP
dXRwdXRDb250ZXh0IDogJUAiLCBleGNlcHRpb24pOworICAgIH0gQGZpbmFsbHkgeworICAgICAg
ICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107CisgICAgICAgIHVuYXJjaGl2ZXIuZ2V0KCku
ZGVsZWdhdGUgPSBuaWw7CisgICAgfQorCisgICAgcmV0dXJuIHN1Y2Nlc3M7Cit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxh
eWJhY2tUYXJnZXRNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQ
bGF5YmFja1RhcmdldE1vY2suY3BwCmluZGV4IDQ1NWNlZmM5ZjZmMGRmNDE5Njc3OGY3NTE5ZmI4
YmI3MWY1NWQ1MjEuLjJhMmE4ZDBiY2YxNjVhZDBiMjFmNWM5ZDJhODQ3MTc3MzVmYjRjOTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1Rhcmdl
dE1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFj
a1RhcmdldE1vY2suY3BwCkBAIC0zMCwyNiArMzAsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1SZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gTWVkaWFQbGF5YmFja1RhcmdldE1vY2s6OmNy
ZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0
ZSBzdGF0ZSkKK1JlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFyZ2V0TW9j
azo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
Ok1vY2tTdGF0ZSBzdGF0ZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVBsYXli
YWNrVGFyZ2V0TW9jayhuYW1lLCBzdGF0ZSkpOwogfQogCi1NZWRpYVBsYXliYWNrVGFyZ2V0TW9j
azo6TWVkaWFQbGF5YmFja1RhcmdldE1vY2soY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCi0gICAgOiBNZWRpYVBsYXliYWNrVGFyZ2V0
KCkKLSAgICAsIG1fbmFtZShuYW1lKQotICAgICwgbV9zdGF0ZShzdGF0ZSkKK01lZGlhUGxheWJh
Y2tUYXJnZXRNb2NrOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhjb25zdCBTdHJpbmcmIG5hbWUs
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCisgICAgOiBtX2Nv
bnRleHQobmFtZSwgc3RhdGUpCiB7CiB9CiAKIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjp+TWVk
aWFQbGF5YmFja1RhcmdldE1vY2soKSA9IGRlZmF1bHQ7CiAKLWNvbnN0IE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0JiBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6dGFyZ2V0Q29udGV4dCgpIGNv
bnN0Ci17Ci0gICAgbV9jb250ZXh0ID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQobV9uYW1l
LCBtX3N0YXRlKTsKLSAgICByZXR1cm4gbV9jb250ZXh0OwotfQotCiBNZWRpYVBsYXliYWNrVGFy
Z2V0TW9jayogdG9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhNZWRpYVBsYXliYWNrVGFyZ2V0KiBy
ZXApCiB7CiAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8TWVkaWFQbGF5YmFja1RhcmdldE1vY2sqPih0
b01lZGlhUGxheWJhY2tUYXJnZXRNb2NrKGNvbnN0X2Nhc3Q8Y29uc3QgTWVkaWFQbGF5YmFja1Rh
cmdldCo+KHJlcCkpKTsKQEAgLTU3LDcgKzQ5LDcgQEAgTWVkaWFQbGF5YmFja1RhcmdldE1vY2sq
IHRvTWVkaWFQbGF5YmFja1RhcmdldE1vY2soTWVkaWFQbGF5YmFja1RhcmdldCogcmVwKQogCiBj
b25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayogdG9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhj
b25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0KiByZXApCiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04ocmVwLT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldDo6
TW9jayk7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihyZXAt
PnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpUYXJnZXRUeXBlOjpNb2NrKTsK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTWVkaWFQbGF5YmFja1RhcmdldE1vY2sqPihy
ZXApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlh
UGxheWJhY2tUYXJnZXRNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlh
UGxheWJhY2tUYXJnZXRNb2NrLmgKaW5kZXggY2Q0NDliMDNjMTEzMTA2NjUyOTRjYjg5MjRkZjBl
NGVlYWExM2Y0Yy4uMzk4YTQ1OWRlOTkyZjRlMmI1Yzk5ZDk4ZmZiNzQ3Mjg5NjdmMDllMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0
TW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1Rh
cmdldE1vY2suaApAQCAtMjMsNDAgKzIzLDMwIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0j
aWZuZGVmIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrX2gKLSNkZWZpbmUgTWVkaWFQbGF5YmFja1Rh
cmdldE1vY2tfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1ZGUgIk1lZGlhUGxheWJh
Y2tUYXJnZXQuaCIKLSNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oIgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrIDogcHVibGljIE1lZGlhUGxheWJhY2tUYXJnZXQg
ewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TWVkaWFQbGF5YmFja1Rh
cmdldD4gY3JlYXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpT
dGF0ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0
PiBjcmVhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tT
dGF0ZSk7CiAKICAgICB2aXJ0dWFsIH5NZWRpYVBsYXliYWNrVGFyZ2V0TW9jaygpOwogCi0gICAg
VGFyZ2V0VHlwZSB0YXJnZXRUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTW9jazsgfQorICAg
IFRhcmdldFR5cGUgdGFyZ2V0VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWJh
Y2tUYXJnZXQ6OlRhcmdldFR5cGU6Ok1vY2s7IH0KKyAgICBjb25zdCBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dCYgdGFyZ2V0Q29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29udGV4
dDsgfQogCi0gICAgY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldENvbnRl
eHQoKSBjb25zdCBmaW5hbDsKLQotICAgIGJvb2wgaGFzQWN0aXZlUm91dGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAhbV9uYW1lLmlzRW1wdHkoKTsgfQotICAgIGJvb2wgc3VwcG9ydHNSZW1vdGVW
aWRlb1BsYXliYWNrKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1fbmFtZS5pc0VtcHR5KCk7IH0K
LQotICAgIFN0cmluZyBkZXZpY2VOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9uYW1lOyB9
Ci0KLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUoKSBjb25zdDsK
KyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9jb250ZXh0Lm1vY2tTdGF0ZSgpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBNZWRp
YVBsYXliYWNrVGFyZ2V0TW9jayhjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6U3RhdGUpOworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKGNvbnN0IFN0cmluZyYs
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpOwogCi0gICAgU3RyaW5nIG1f
bmFtZTsKLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgbV9zdGF0ZSB7IE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpVbmtub3duIH07Ci0gICAgbXV0YWJsZSBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dCBtX2NvbnRleHQ7CisgICAgTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQgbV9jb250ZXh0OwogfTsKIAogTWVkaWFQbGF5YmFja1RhcmdldE1vY2sqIHRvTWVkaWFQ
bGF5YmFja1RhcmdldE1vY2soTWVkaWFQbGF5YmFja1RhcmdldCopOwpAQCAtNjUsNSArNTUsMyBA
QCBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayogdG9NZWRpYVBsYXliYWNrVGFyZ2V0TW9j
ayhjb25zdCBNZWRpYVBsYXliYWNrVGFyZwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJNb2NrLmNwcAppbmRleCA0NGY0MTQ3YTE5MTgwNzU0NzJlZGMzYTEyMTg5
OTI3ZDdlOTI1ZWYxLi4zYjBjYTZhNzgzNzIzZjhmOThkMjI2MGFhYjZhYjVhNTYxZWUxYzQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmNwcApAQCAtNTIsNyArNTIsNyBAQCBNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyTW9jazo6fk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrKCkKIGJv
b2wgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlKCkKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9j
azo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUiKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9
PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6T3V0cHV0RGV2aWNlQXZhaWxhYmxlOworICAg
IHJldHVybiBtX3N0YXRlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6
Ok91dHB1dERldmljZUF2YWlsYWJsZTsKIH0KIAogUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IE1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpwbGF5YmFja1RhcmdldCgpCkBAIC04NSwxMCAr
ODUsMTAgQEAgdm9pZCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6c3RhcnRpbmdNb25p
dG9yaW5nUGxheWJhY2tUYXJnZXRzKCkKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTW9jazo6c3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzIik7CiAKICAg
ICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbdGhpc10gewotICAgICAgICBpZiAobV9zdGF0ZSA9
PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6T3V0cHV0RGV2aWNlQXZhaWxhYmxlKQorICAg
ICAgICBpZiAobV9zdGF0ZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRl
OjpPdXRwdXREZXZpY2VBdmFpbGFibGUpCiAgICAgICAgICAgICBhdmFpbGFibGVEZXZpY2VzRGlk
Q2hhbmdlKCk7CiAKLSAgICAgICAgaWYgKCFtX2RldmljZU5hbWUuaXNFbXB0eSgpICYmIG1fc3Rh
dGUgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlVua25vd24pCisgICAgICAgIGlmICgh
bV9kZXZpY2VOYW1lLmlzRW1wdHkoKSAmJiBtX3N0YXRlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpNb2NrU3RhdGU6OlVua25vd24pCiAgICAgICAgICAgICBjdXJyZW50RGV2aWNlRGlk
Q2hhbmdlKCk7CiAgICAgfSk7CiB9CkBAIC0xMDEsMTUgKzEwMSwxNSBAQCB2b2lkIE1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpzdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpCiB2
b2lkIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjppbnZhbGlkYXRlUGxheWJhY2tUYXJn
ZXRzKCkKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6
aW52YWxpZGF0ZVBsYXliYWNrVGFyZ2V0cyIpOwotICAgIHNldFN0YXRlKGVtcHR5U3RyaW5nKCks
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpVbmtub3duKTsKKyAgICBzZXRTdGF0ZShlbXB0
eVN0cmluZygpLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpVbmtub3du
KTsKIH0KIAotdm9pZCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6c2V0U3RhdGUoY29u
c3QgU3RyaW5nJiBkZXZpY2VOYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUg
c3RhdGUpCit2b2lkIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpzZXRTdGF0ZShjb25z
dCBTdHJpbmcmIGRldmljZU5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3Rh
dGUgc3RhdGUpCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1v
Y2s6OnNldFN0YXRlIC0gbmFtZSA9ICVzLCBzdGF0ZSA9IDB4JXgiLCBkZXZpY2VOYW1lLnV0Zjgo
KS5kYXRhKCksICh1bnNpZ25lZClzdGF0ZSk7CiAKICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFz
ayhbdGhpcywgc3RhdGUsIGRldmljZU5hbWVdIHsKLSAgICAgICAgaWYgKGRldmljZU5hbWUgIT0g
bV9kZXZpY2VOYW1lICYmIHN0YXRlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpVbmtu
b3duKSB7CisgICAgICAgIGlmIChkZXZpY2VOYW1lICE9IG1fZGV2aWNlTmFtZSAmJiBzdGF0ZSAh
PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpVbmtub3duKSB7CiAgICAg
ICAgICAgICBtX2RldmljZU5hbWUgPSBkZXZpY2VOYW1lOwogICAgICAgICAgICAgY3VycmVudERl
dmljZURpZENoYW5nZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgKaW5kZXgg
ZGUwOTZjYjg4MWY4MjQyMTExNjU4YjhkMjE4MzlmOWM4ODVkNGJjZS4uM2U3NDM5NWJmMTZiOGU3
YzhjZTlmOTcyMGU3NTk0ZTRmMmM4N2VlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaApAQCAt
NDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFy
Z2V0cygpIG92ZXJyaWRlOwogICAgIHZvaWQgaW52YWxpZGF0ZVBsYXliYWNrVGFyZ2V0cygpIG92
ZXJyaWRlOwogCi0gICAgdm9pZCBzZXRTdGF0ZShjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dDo6U3RhdGUpOworICAgIHZvaWQgc2V0U3RhdGUoY29uc3QgU3RyaW5nJiwg
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSk7CiAgICAgdm9pZCBkaXNtaXNz
UG9wdXAoKTsKIAogcHJpdmF0ZToKQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKIAogICAgIFN0
cmluZyBtX2RldmljZU5hbWU7CiAgICAgR2VuZXJpY1Rhc2tRdWV1ZTxUaW1lcj4gbV90YXNrUXVl
dWU7Ci0gICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIG1fc3RhdGUgeyBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VW5rbm93biB9OworICAgIE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpNb2NrU3RhdGUgbV9zdGF0ZSB7IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpNb2NrU3RhdGU6OlVua25vd24gfTsKICAgICBib29sIG1fc2hvd2luZ01lbnUgeyBmYWxzZSB9
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDM0NDkyYmFmODEx
NGM5NDZkNjMwMWEwZjYwMDZkNWRmMTkzNDZjYTMuLmMzODAxMTY5NGJhZmFjYzhhMWY2N2ZmMDg1
YWZlNDRhYmJiYzJhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTU1
OSw3ICs1NTksNyBAQCB2b2lkIEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdl
JiBwYWdlKQogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBwYWdl
LnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZCh0cnVlKTsKLSAgICBwYWdl
LnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoZW1wdHlTdHJpbmcoKSwgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlVua25vd24pOworICAgIHBhZ2Uuc2V0TW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShlbXB0eVN0cmluZygpLCBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6TW9ja1N0YXRlOjpVbmtub3duKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJ
REVPKQpAQCAtNDUxMCwxNCArNDUxMCwxNCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6
OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJgogICAg
IFBhZ2UqIHBhZ2UgPSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpOwogICAgIEFT
U0VSVChwYWdlKTsKIAotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0
ZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpVbmtub3duOworICAgIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6TW9ja1N0YXRlOjpVbmtub3duOwogCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGRldmljZVN0YXRlLCAiZGV2aWNlYXZhaWxhYmxlIikpCi0gICAgICAgIHN0YXRl
ID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok91dHB1dERldmljZUF2YWlsYWJsZTsKKyAg
ICAgICAgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpPdXRw
dXREZXZpY2VBdmFpbGFibGU7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UoZGV2aWNlU3RhdGUsICJkZXZpY2V1bmF2YWlsYWJsZSIpKQotICAgICAgICBzdGF0ZSA9
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpPdXRwdXREZXZpY2VVbmF2YWlsYWJsZTsKKyAg
ICAgICAgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpPdXRw
dXREZXZpY2VVbmF2YWlsYWJsZTsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShkZXZpY2VTdGF0ZSwgInVua25vd24iKSkKLSAgICAgICAgc3RhdGUgPSBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6VW5rbm93bjsKKyAgICAgICAgc3RhdGUgPSBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpVbmtub3duOwogICAgIGVsc2UKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5j
cHAKaW5kZXggYmQxOTFlNTcxZDcxZjIxMDdkZmZlYzVkZmIyNGIwZDQ0NmRjY2U2Ny4uMTg4ZmIw
YzMxM2ZmYWYwYzI1ZWNjZGE3NDZkNjdjMWFjMmE3ZjdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApA
QCAtNTksNiArNTksNyBAQAogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkK
ICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmg+CiAjZW5kaWYKIApAQCAtNjk3LDIwICs2OTgsMjEg
QEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rh
cmdldChib29sIHNob3VsZFBsYXkpCiAgICAgbV9wbGF5ZXItPnNldFNob3VsZFBsYXlUb1BsYXli
YWNrVGFyZ2V0KHNob3VsZFBsYXkpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6
OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQmIHRhcmdldENvbnRleHQpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6
OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmJiB0
YXJnZXRDb250ZXh0KQogewogICAgIHN3aXRjaCAodGFyZ2V0Q29udGV4dC50eXBlKCkpIHsKLSAg
ICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpBVk91dHB1dENvbnRleHRUeXBlOgot
ICAgICAgICBtX3BsYXllci0+c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZSh0YXJnZXRDb250ZXh0LmF2T3V0cHV0Q29udGV4
dCgpKSk7CisgICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6U2VyaWFs
aXplZEFWT3V0cHV0Q29udGV4dDogeworICAgICAgICBpZiAodGFyZ2V0Q29udGV4dC5kZXNlcmlh
bGl6ZU91dHB1dENvbnRleHQoKSkKKyAgICAgICAgICAgIG1fcGxheWVyLT5zZXRXaXJlbGVzc1Bs
YXliYWNrVGFyZ2V0KE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKFdURk1vdmUodGFy
Z2V0Q29udGV4dCkpKTsKICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2s6CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGNh
c2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tUeXBlOgotICAgICAgICBtX3BsYXll
ci0+c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
TW9jazo6Y3JlYXRlKHRhcmdldENvbnRleHQubW9ja0RldmljZU5hbWUoKSwgdGFyZ2V0Q29udGV4
dC5tb2NrU3RhdGUoKSkpOworICAgICAgICBtX3BsYXllci0+c2V0V2lyZWxlc3NQbGF5YmFja1Rh
cmdldChNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6Y3JlYXRlKHRhcmdldENvbnRleHQuZGV2aWNl
TmFtZSgpLCB0YXJnZXRDb250ZXh0Lm1vY2tTdGF0ZSgpKSk7CiAgICAgICAgIGJyZWFrOwotI2Vs
c2UKLSAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrVHlwZToKICNlbmRp
ZgotICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok5vbmU6CisgICAgY2FzZSBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0OgorICAgIGNh
c2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok5vbmU6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAppbmRl
eCAyNGI2NjQxYWU0ZjVmMWU3ZGZjMTA1Mzc0MTNmMGU5Y2ZkMjVlMjNmLi5iZGFlZThhZTA1ZjEw
ZmE0NjU3MzM0M2Y0NzljNDI5M2Q0N2RmNmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKQEAgLTE1Miw3ICsx
NTIsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAg
ICB2b2lkIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wpOwogICAgIHZvaWQg
c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCk7Ci0gICAgdm9pZCBzZXRXaXJlbGVz
c1BsYXliYWNrVGFyZ2V0KGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
Jik7CisgICAgdm9pZCBzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0JiYpOwogICAgIHZvaWQgbWVkaWFQbGF5ZXJDdXJyZW50UGxheWJh
Y2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZChib29sKSBmaW5hbDsKICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuY3BwCmluZGV4IDllNmJjOTQ2NmI1Mzk5YjI0ZjU4
NDAwOWI5MDBiZDA3ZDAwODIxMTYuLmJlZDMwZTI5Y2U0YjljNWY2YWY0MDFhYzFjYzhmMjZmYTJj
NDYxYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuY3BwCkBAIC0xMDgs
NyArMTA4LDExIEBAIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmFjdGl2ZUF1
ZGlvUm91dGVEaWRDaGFuZ2UoU2hvdWxkUGF1c2Ugc2hvdWxkCiAKIHZvaWQgUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyUHJveHk6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9ydHNBaXJQ
bGF5VmlkZW8gc3VwcG9ydHNBaXJQbGF5VmlkZW8sIFJlZjxXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0PiYmIHRhcmdldCkKIHsKLSAgICBtX2dwdUNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6QWN0aXZlVmlkZW9Sb3V0ZURp
ZENoYW5nZShzdXBwb3J0c0FpclBsYXlWaWRlbywgdGFyZ2V0LT50YXJnZXRDb250ZXh0KCkpLCB7
IH0pOworICAgIGF1dG8gY29udGV4dCA9IHRhcmdldC0+dGFyZ2V0Q29udGV4dCgpOworICAgIGlm
ICghY29udGV4dC5zZXJpYWxpemVPdXRwdXRDb250ZXh0KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fZ3B1Q29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyOjpBY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKHN1cHBvcnRzQWlyUGxh
eVZpZGVvLCBjb250ZXh0KSwgeyB9KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCBiZjg4
YWI2MTdiZTEyMWI0YWY3YmM0Y2QzYzRmYzE5N2RkYTU5NzgyLi41MDM0NDFjYjZlYTM1ZmQzZWNh
Zjk2NzZmOTI2NGQzMjgxMzViMzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtNDEsMTQgKzQxLDIz
IEBACiAjaW1wb3J0IDxVSUtpdC9VSUZvbnQuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKKyNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQuaD4KKyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2VuZGlmCisKKyNpZiBVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKQorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNDb2NvYUFkZGl0aW9ucy5tbT4KKyNlbmRpZgorCiAjaWYgRU5BQkxFKEFQUExF
X1BBWSkKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXMuaD4KICNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExp
bmsuaD4KICNlbmRpZgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxX
ZWJLaXRBZGRpdGlvbnMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2FBZGRpdGlvbnMubW0+Cisj
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyNpbXBvcnQgPHBhbC9jb2NvYS9B
VkZvdW5kYXRpb25Tb2Z0TGluay5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtNjA2
LDQgKzYxNSw1MCBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZQogICAgIHJldHVybiB0cnVlOwog
fQogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKK3ZvaWQgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29kZVBsYXRmb3Jt
RGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYg
dGFyZ2V0KQoreworICAgIGlmICh0YXJnZXQudHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQpIHsKKyAgICAgICAgaWYgKFtQQUw6OmdldEFW
T3V0cHV0Q29udGV4dENsYXNzKCkgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3Vy
ZUNvZGluZyldKQorICAgICAgICAgICAgZW5jb2RlciA8PCB0YXJnZXQub3V0cHV0Q29udGV4dCgp
OworICAgIH0gZWxzZSBpZiAodGFyZ2V0LnR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCkgeworICAgICAgICBlbmNvZGVy
IDw8IHRhcmdldC5zZXJpYWxpemVkT3V0cHV0Q29udGV4dCgpOworICAgICAgICBlbmNvZGVyIDw8
IHRhcmdldC5oYXNBY3RpdmVSb3V0ZSgpOworICAgIH0gZWxzZQorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKworYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlIGNvbnRleHRUeXBlLCBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dCYgdGFyZ2V0KQoreworICAgIEFTU0VSVChjb250ZXh0VHlwZSAhPSBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6TW9jayk7CisKKyAgICBpZiAoY29udGV4dFR5
cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCkg
eworICAgICAgICBpZiAoIVtQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgY29uZm9ybXNU
b1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIGF1dG8gb3V0cHV0Q29udGV4dCA9IElQQzo6ZGVjb2RlPEFWT3V0
cHV0Q29udGV4dD4oZGVjb2RlciwgUEFMOjpnZXRBVk91dHB1dENvbnRleHRDbGFzcygpKTsKKyAg
ICAgICAgaWYgKCFvdXRwdXRDb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgIHRhcmdldCA9IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IHsgV1RG
TW92ZSgqb3V0cHV0Q29udGV4dCkgfTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgaWYgKGNvbnRleHRUeXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpT
ZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0KSB7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IHNl
cmlhbGl6ZWRPdXRwdXRDb250ZXh0OworICAgICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIs
IHNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KSB8fCAhc2VyaWFsaXplZE91dHB1dENvbnRleHQpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgYm9vbCBoYXNBY3RpdmVSb3V0ZTsK
KyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNBY3RpdmVSb3V0ZSkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdGFyZ2V0ID0gV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQgeyBXVEZNb3ZlKHNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KSwgaGFzQWN0
aXZlUm91dGUgfTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZh
bHNlOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggMjU1YTJjYmM2Yzc3Y2VmMWU2
MDcwZWE0MjBmNmJkZTkwYjI0MGE3MS4uYjI1MDYzYzE3MjAyMWU3ZTQ1MWQ0NjI2MDgxNWY4N2Yx
MTgxM2Y2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCkBAIC0yNDU3LDE3ICsyNDU3LDE3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBNCiAg
ICAgYm9vbCBoYXNQbGF0Zm9ybURhdGEgPSB0YXJnZXQuZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3Jt
RGF0YSgpOwogICAgIGVuY29kZXIgPDwgaGFzUGxhdGZvcm1EYXRhOwogCi0gICAgaW50MzJfdCB0
YXJnZXRUeXBlID0gdGFyZ2V0LnR5cGUoKTsKLSAgICBlbmNvZGVyIDw8IHRhcmdldFR5cGU7Cisg
ICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGUgY29udGV4dFR5cGUgPSB0YXJnZXQu
dHlwZSgpOworICAgIGVuY29kZXIgPDwgY29udGV4dFR5cGU7CiAKICAgICBpZiAodGFyZ2V0LmVu
Y29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSkgewogICAgICAgICBlbmNvZGVQbGF0Zm9ybURh
dGEoZW5jb2RlciwgdGFyZ2V0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VS
VCh0YXJnZXRUeXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrVHlwZSk7Ci0g
ICAgZW5jb2RlciA8PCB0YXJnZXQubW9ja0RldmljZU5hbWUoKTsKLSAgICBlbmNvZGVyIDw8IHN0
YXRpY19jYXN0PGludDMyX3Q+KHRhcmdldC5tb2NrU3RhdGUoKSk7CisgICAgQVNTRVJUKGNvbnRl
eHRUeXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrKTsKKyAgICBl
bmNvZGVyIDw8IHRhcmdldC5kZXZpY2VOYW1lKCk7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2Fz
dDx1aW50OF90Pih0YXJnZXQubW9ja1N0YXRlKCkpOwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldCkKQEAgLTI0NzYsMjQgKzI0NzYsMjQgQEAg
Ym9vbCBBcmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIE1lZGlhUGwKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc1BsYXRm
b3JtRGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGludDMyX3QgdGFyZ2V0VHlw
ZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRhcmdldFR5cGUpKQorICAgIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpUeXBlIGNvbnRleHRUeXBlOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoY29udGV4dFR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzUGxh
dGZvcm1EYXRhKQotICAgICAgICByZXR1cm4gZGVjb2RlUGxhdGZvcm1EYXRhKGRlY29kZXIsIHRh
cmdldCk7CisgICAgICAgIHJldHVybiBkZWNvZGVQbGF0Zm9ybURhdGEoZGVjb2RlciwgY29udGV4
dFR5cGUsIHRhcmdldCk7CiAKLSAgICBBU1NFUlQodGFyZ2V0VHlwZSA9PSBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dDo6TW9ja1R5cGUpOwotCi0gICAgU3RyaW5nIG1vY2tEZXZpY2VOYW1lOwot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUobW9ja0RldmljZU5hbWUpKQorICAgIEFTU0VSVChjb250
ZXh0VHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6TW9jayk7CisgICAg
U3RyaW5nIGRldmljZU5hbWU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZpY2VOYW1lKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaW50MzJfdCBtb2NrU3RhdGU7CisgICAgdWlu
dDhfdCBtb2NrU3RhdGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtb2NrU3RhdGUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB0YXJnZXQgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dChtb2NrRGV2aWNlTmFtZSwgc3RhdGljX2Nhc3Q8TWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6OlN0YXRlPihtb2NrU3RhdGUpKTsKKyAgICB0YXJnZXQgPSBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dChkZXZpY2VOYW1lLCBzdGF0aWNfY2FzdDxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6TW9ja1N0YXRlPihtb2NrU3RhdGUpKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDYx
OTcwODc4MjUxMTU0OGI2MmYyNzE1NmJkM2Y0N2Q3MWEzMWVhYzIuLjY0NzZlMzkwYmZjNzc4ZDdl
YjdjZGZiM2RjMmFkNTRjMmNlN2ZlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9J
bWFnZURhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luZGV4ZWREQi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSW5wdXRNb2RlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZWxlY3Rpb25PcHRpb24uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL05hdGl2ZUltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3Jr
TG9hZE1ldHJpY3MuaD4KQEAgLTE5NSwxMCArMTk2LDYgQEAgc3RydWN0IFBhc3RlYm9hcmRXZWJD
b250ZW50OwogY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOwogI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotY2xhc3MgTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBzdHJ1Y3Qg
TWVkaWFDb25zdHJhaW50czsKICNlbmRpZgpAQCAtNjQ0LDcgKzY0MSw3IEBAIHRlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+
IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0Jik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQm
KTsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYsIGNvbnN0IFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Jik7Ci0gICAgc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiwgV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQmKTsKKyAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dDo6VHlwZSwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQm
KTsKIH07CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dl
YkNvcmVBcmd1bWVudENvZGVyc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJD
b3JlQXJndW1lbnRDb2RlcnNNYWMubW0KaW5kZXggMTg2YjdiYjJkYjZmYzRlMmJjMTMzZjcxNzVj
Y2Y5YzM3NjM4OTIzMC4uOTI1ZjVhNGQ1YTQ4OGQ0ODg0MDRlYzYyOTUyZDhhMjQ5YTNmMDAxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVy
c01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzTWFjLm1tCkBAIC00MiwxMiArNDIsNiBAQAogI2ltcG9ydCA8d3RmL01hY2hTZW5kUmlnaHQu
aD4KICNpbXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogCi0jaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkKLSNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQuaD4KLSNpbXBvcnQgPG9iamMvcnVudGltZS5oPgotI2ltcG9ydCA8cGFsL2NvY29hL0FW
Rm91bmRhdGlvblNvZnRMaW5rLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIElQQyB7CiAKIHZvaWQg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8p
CkBAIC00MDMsMjkgKzM5Nyw2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXI+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlCiAKICNlbmRpZgog
Ci0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLQotdm9pZCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1E
YXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0JiB0YXJnZXQpCi17Ci0gICAgaWYgKFtQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNz
KCkgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQotICAgICAg
ICBlbmNvZGVyIDw8IHRhcmdldC5hdk91dHB1dENvbnRleHQoKTsKLX0KLQotYm9vbCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlUGxhdGZv
cm1EYXRhKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0JiB0YXJnZXQpCi17Ci0gICAgaWYgKCFbUEFMOjpnZXRBVk91dHB1dENvbnRleHRDbGFzcygp
IGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woTlNTZWN1cmVDb2RpbmcpXSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBjb250ZXh0ID0gSVBDOjpkZWNvZGU8QVZPdXRwdXRD
b250ZXh0PihkZWNvZGVyLCBQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkpOwotICAgIGlm
ICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgdGFyZ2V0ID0gV2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQgeyBjb250ZXh0LT5nZXQoKSB9OwotICAgIHJl
dHVybiB0cnVlOwotfQotCi0jZW5kaWYKLQogI2lmIEVOQUJMRShWSURFTykKIHZvaWQgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+OjplbmNvZGVQ
bGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6U2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZVZhbHVlJiB2YWx1ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IGEyZjM5Yzk1ZTNiYzRkODIwNTFiYWNkMzcxMzgwMzA3M2M0MzM3
OTIuLmY3OWVlOTNkMmQwZGNlNTU1MjI5NzI1YTJkM2E4NjQyNjkyNjIxZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzgzMiwxNCArNzgzMiw2IEBAIHN0
YXRpYyBjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgbWVkaWFSZWxhdGVkSU9LaXRDbGFzc2Vz
KCkKICAgICB9KTsKICAgICByZXR1cm4gc2VydmljZXM7CiB9Ci0KLXN0YXRpYyBjb25zdCBWZWN0
b3I8QVNDSUlMaXRlcmFsPiYgdGVtcG9yYXJ5TWFjaFNlcnZpY2VzKCkKLXsKLSAgICBzdGF0aWMg
Y29uc3QgYXV0byBzZXJ2aWNlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8QVNDSUlMaXRl
cmFsPiB7Ci0gICAgICAgICJjb20uYXBwbGUuY29yZW1lZGlhLnJvdXRpbmdjb250ZXh0LnhwYyJf
cyAvLyBSZW1vdmUgYWZ0ZXIgPHJkYXI6Ly83NjQwMzMwMj4gaXMgZml4ZWQuCi0gICAgfSk7Ci0g
ICAgcmV0dXJuIHNlcnZpY2VzOwotfQogI2VuZGlmCiAKIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9j
ZXNzLCBEcmF3aW5nQXJlYVByb3h5JiBkcmF3aW5nQXJlYSwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBv
bGljaWVzPiYmIHdlYnNpdGVQb2xpY2llcykKQEAgLTc5MzUsOSArNzkyNyw2IEBAIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJv
Y2Vzc1Byb3h5JiBwcm9jCiAgICAgICAgIC8vIEZJWE1FKDIwNzcxNik6IFRoZSBmb2xsb3dpbmcg
c2hvdWxkIGJlIHJlbW92ZWQgd2hlbiB0aGUgR1BVIHByb2Nlc3MgaXMgY29tcGxldGUuCiAgICAg
ICAgIHBhcmFtZXRlcnMubWVkaWFFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAobWVkaWFSZWxhdGVkTWFjaFNlcnZpY2VzKCksIFdU
Rjo6bnVsbG9wdCk7CiAgICAgICAgIHBhcmFtZXRlcnMubWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRs
ZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lv
bnMobWVkaWFSZWxhdGVkSU9LaXRDbGFzc2VzKCksIFdURjo6bnVsbG9wdCk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgLy8gRklYTUUoMjI0MzI3KTogUmVtb3ZlIHRoaXMgZWxzZSBjbGF1c2Ugb25j
ZSA8cmRhcjovLzc2NDAzMzAyPiBpcyBmaXhlZC4KLSAgICAgICAgcGFyYW1ldGVycy5tZWRpYUV4
dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExv
b2t1cCh0ZW1wb3JhcnlNYWNoU2VydmljZXMoKSwgV1RGOjpudWxsb3B0KTsKICAgICB9CiAKICAg
ICBpZiAoIXByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0Zvck1lZGlhRW5hYmxlZCgpCkBAIC05
NDAzLDcgKzkzOTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TW9ja01lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBwYWdlQ2xpZW50KCkubWVkaWFT
ZXNzaW9uTWFuYWdlcigpLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChl
bmFibGVkKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TW9ja01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCiB7CiAgICAgcGFn
ZUNsaWVudCgpLm1lZGlhU2Vzc2lvbk1hbmFnZXIoKS5zZXRNb2NrTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclN0YXRlKG5hbWUsIHN0YXRlKTsKIH0KQEAgLTk0MTgsNyArOTQwNywxMiBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0UGxheWJhY2tUYXJnZXQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllciBjb250ZQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRT
ZWxlY3RlZChjb250ZXh0SWQsIHRhcmdldC0+dGFyZ2V0Q29udGV4dCgpKSk7CisgICAgYXV0byBj
b250ZXh0ID0gdGFyZ2V0LT50YXJnZXRDb250ZXh0KCk7CisgICAgQVNTRVJUKGNvbnRleHQudHlw
ZSgpICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRw
dXRDb250ZXh0KTsKKyAgICBpZiAocHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yTWVkaWFF
bmFibGVkKCkgJiYgY29udGV4dC50eXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
OlR5cGU6OkFWT3V0cHV0Q29udGV4dCAmJiAhY29udGV4dC5zZXJpYWxpemVPdXRwdXRDb250ZXh0
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBsYXli
YWNrVGFyZ2V0U2VsZWN0ZWQoY29udGV4dElkLCBjb250ZXh0KSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShQbGF5YmFja1Rh
cmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgYm9vbCBhdmFpbGFibGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDliN2RjMDZmNjFmYmM0NzMy
ZWJiOWJiZjU0ZDU4NTI4OWY0NzFkNjAuLjVmMTY4MmU1MjkzZDEzMzA2ZTBiYzM0MzA4MjdkYTcz
Yzk5MTc1ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNTY3
LDcgKzE1NjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIo
V2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiwgYm9vbCBoYXNWaWRlbyk7CiAgICAgdm9pZCBwbGF5YmFja1Rhcmdl
dFBpY2tlckNsaWVudFN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50
Q29udGV4dElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFn
cyk7CiAgICAgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9v
bCk7Ci0gICAgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0
IFN0cmluZyYsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7Cisg
ICAgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmlu
ZyYsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpOwogICAg
IHZvaWQgbW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsKIAogICAg
IC8vIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCAyY2FjM2YxY2IwNWQxY2Q3YjVm
NzcxZWUxMmMwZTcyOWUxZjFkOGNmLi43ZTk4YjA4OGQ5MjJlZTExNDQ5NzMwYTBlNTU4MTJiZTI2
NDQ3NTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCkBAIC00NzYsNyArNDc2LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsK
ICAgICBTaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGll
bnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIFdlYkNvcmU6OkZsb2F0UmVjdCBwaWNrZXJM
b2NhdGlvbiwgYm9vbCBoYXNWaWRlbykKICAgICBQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudFN0
YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIgY29udGV4dElkLCB1bnNpZ25lZCBtZWRpYVN0YXRlKQogICAgIFNldE1vY2tNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sIGVuYWJsZWQpCi0gICAgU2V0TW9ja01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShTdHJpbmcgbmFtZSwgdW5zaWduZWQgcGlja2VyU3RhdGUp
CisgICAgU2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShTdHJpbmcgbmFtZSwg
ZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3Rh
dGUgcGlja2VyU3RhdGUpCiAgICAgTW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNz
UG9wdXAoKQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwCmlu
ZGV4IDJhYjVmOTEzY2RlODNjZWRjNTRhN2E4ZmUwZWUwOTUzYmNlNDQ5NWIuLjQ4NjJhZjc2NDU2
N2Q2YmY2YWZmNjhkMjg3OGY4Zjk0ZTE5NThmMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyLmNwcApAQCAtODEsMTIgKzgxLDExIEBAIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9u
SGVscGVyOjpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKGludCBwaWQpCiAKIHZvaWQg
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFN1cHBv
cnRzQWlyUGxheVZpZGVvIHN1cHBvcnRzQWlyUGxheVZpZGVvLCBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dCYmIHRhcmdldENvbnRleHQpCiB7Ci0gICAgaWYgKHRhcmdldENvbnRleHQudHlwZSgp
ICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpBVk91dHB1dENvbnRleHRUeXBlKSB7Ci0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIEFTU0VSVCh0YXJnZXRDb250ZXh0LnR5
cGUoKSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0
KTsKKyAgICBpZiAodGFyZ2V0Q29udGV4dC50eXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAot
ICAgIFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5n
ZShzdXBwb3J0c0FpclBsYXlWaWRlbywgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29h
OjpjcmVhdGUodGFyZ2V0Q29udGV4dC5hdk91dHB1dENvbnRleHQoKSkpOworICAgIFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShzdXBwb3J0c0Fp
clBsYXlWaWRlbywgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUoV1RG
TW92ZSh0YXJnZXRDb250ZXh0KSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4
IGJjYzRjMTdhYzI5NTIxMmNiYTY0ZGVkZDFjOWIzYTkwNmNhMDUxMDEuLjVmYzg1NTYzNzYwZWE3
NWVjMTJlZDE0YTllMjczNjgxZjI1MWMwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0x
MzUyLDcgKzEzNTIsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX3BhZ2Uuc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpTZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJs
ZWQoZW5hYmxlZCkpOwogfQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRNb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSkKIHsKICAgICBtX3BhZ2Uuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
clN0YXRlKG5hbWUsIHN0YXRlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggNjgxMmU2NDJm
ZWNkY2FhN2IxZjUxZmUwNzEyNTgwYTdkNDJjNGVmMC4uNTZjZjZiOTJlZDlhMTAzNmRiZDdkMDY0
ODYzYzRlNzY4MTQyY2RlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMzc4LDcgKzM3OCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViQ29yZTo6UGxh
eWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCBib29sKSBmaW5hbDsKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3Rh
dGVEaWRDaGFuZ2UoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmll
ciwgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKSBmaW5hbDsKICAgICB2
b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sKSBmaW5hbDsK
LSAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3Ry
aW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKSBmaW5hbDsK
KyAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3Ry
aW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSkgZmlu
YWw7CiAgICAgdm9pZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCgp
IGZpbmFsOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAppbmRleCBhZWIyNWRhYjg0MjA2ODRhOTUwMjM4NmFiZjgzYWU2YmUzOGNlOTg2Li4xZTYz
Mzc5Y2FmODc3YjU5MjY2YmZjNzAzNzA5MTYwMDk2MDM2ZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNzkxLDcgKzE3OTEsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKGJvb2wgZGlz
cGF0Y2gpIHsgbV9zaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMgPSBkaXNwYXRjaDsg
fQogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgdm9pZCBwbGF5YmFja1RhcmdldFNlbGVjdGVkKFdlYkNvcmU6OlBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0JiBvdXRwdXREZXZpY2UpIGNvbnN0OworICAgIHZvaWQgcGxheWJh
Y2tUYXJnZXRTZWxlY3RlZChXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVu
dGlmaWVyLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmKSBjb25zdDsKICAg
ICB2b2lkIHBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKFdlYkNvcmU6OlBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGJvb2wpOwogICAgIHZvaWQgc2V0U2hv
dWxkUGxheVRvUGxheWJhY2tUYXJnZXQoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllciwgYm9vbCk7CiAgICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tlcldhc0Rp
c21pc3NlZChXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KaW5kZXggNzRkYTYzNTc4ODJjZDAxMzAyMDg0MDk3ZjA2NGQyMWMzYjkxNWQwNC4uNjJlNzk4
ZmU0Y2Q1ZDcwYjliMjNmMDA4NjdiNThkYTRhMjc1OGYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTM1LDcgKzM1LDYg
QEAKICNpbXBvcnQgIkZvbnRJbmZvLmgiCiAjaW1wb3J0ICJGcmFtZUluZm9EYXRhLmgiCiAjaW1w
b3J0ICJJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaCIKLSNpbXBvcnQgIlBERktpdFNvZnRM
aW5rLmgiCiAjaW1wb3J0ICJQREZQbHVnaW4uaCIKICNpbXBvcnQgIlBhZ2VCYW5uZXIuaCIKICNp
bXBvcnQgIlBsdWdpblZpZXcuaCIKQEAgLTk5LDkgKzk4LDEyIEBACiAKICNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFy
Z2V0Q29jb2EuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaD4KICNlbmRpZgog
CisjaW1wb3J0ICJQREZLaXRTb2Z0TGluay5oIgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xMDQyLDE2ICsxMDQ0LDE3IEBAIHZvaWQgV2ViUGFn
ZTo6ZGlkVXBkYXRlUmVuZGVyaW5nKCkKIH0KIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQotdm9pZCBXZWJQYWdlOjpwbGF5YmFj
a1RhcmdldFNlbGVjdGVkKFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29u
dGV4dElkLCBjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0
Q29udGV4dCkgY29uc3QKK3ZvaWQgV2ViUGFnZTo6cGxheWJhY2tUYXJnZXRTZWxlY3RlZChQbGF5
YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQmJiB0YXJnZXRDb250ZXh0KSBjb25zdAogewogICAgIHN3
aXRjaCAodGFyZ2V0Q29udGV4dC50eXBlKCkpIHsKLSAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpBVk91dHB1dENvbnRleHRUeXBlOgotICAgICAgICBtX3BhZ2UtPnNldFBsYXli
YWNrVGFyZ2V0KGNvbnRleHRJZCwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpj
cmVhdGUodGFyZ2V0Q29udGV4dC5hdk91dHB1dENvbnRleHQoKSkpOworICAgIGNhc2UgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dDoKKyAgICBjYXNlIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0
OgorICAgICAgICBtX3BhZ2UtPnNldFBsYXliYWNrVGFyZ2V0KGNvbnRleHRJZCwgTWVkaWFQbGF5
YmFja1RhcmdldENvY29hOjpjcmVhdGUoV1RGTW92ZSh0YXJnZXRDb250ZXh0KSkpOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrVHlwZToK
LSAgICAgICAgbV9wYWdlLT5zZXRQbGF5YmFja1RhcmdldChjb250ZXh0SWQsIFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpjcmVhdGUodGFyZ2V0Q29udGV4dC5tb2NrRGV2aWNlTmFt
ZSgpLCB0YXJnZXRDb250ZXh0Lm1vY2tTdGF0ZSgpKSk7CisgICAgY2FzZSBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dDo6VHlwZTo6TW9jazoKKyAgICAgICAgbV9wYWdlLT5zZXRQbGF5YmFja1Rh
cmdldChjb250ZXh0SWQsIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpjcmVhdGUodGFyZ2V0Q29u
dGV4dC5kZXZpY2VOYW1lKCksIHRhcmdldENvbnRleHQubW9ja1N0YXRlKCkpKTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6Tm9uZToKKyAgICBj
YXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpOb25lOgogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApp
bmRleCBiODliMjY2YzNkNzlhY2QyNDFkZjM2YjVmY2UyZjFkMmVkOGRiNzQ4Li5mM2Q0NzE2YTg5
MzNkOWYyNDJmOGVmMTIxNWE4NjYyMzQwZjg5N2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMjQz
LDcgKzI0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIo
V2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmLCBib29sIC8qIGhhc1ZpZGVvICovKSBmaW5hbDsKICAgICB2b2lkIHBs
YXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6UGxheWJhY2tU
YXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVk
aWFTdGF0ZUZsYWdzKSBmaW5hbDsKICAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyRW5hYmxlZChib29sKSBmaW5hbDsKLSAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6OlN0YXRlKSBmaW5hbDsKKyAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6Ok1vY2tTdGF0ZSkgZmluYWw7CiAgICAgdm9pZCBtb2NrTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCgpIG92ZXJyaWRlOwogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5tbQppbmRleCBiMzRlOGQ5ZDhlZTkxNWM2MWEwYzQ5ZmY0MGUyZDY2ZmVkMjRhMDRlLi5j
OTY0ODNmZjk2ZWI3ZmQ4Y2MxOTUyN2MzNTQ1ZDliODNiMTRhOWI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
Lm1tCkBAIC0xMTI5LDcgKzExMjksNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0TW9ja01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBbbV93ZWJW
aWV3IF9zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQ6ZW5hYmxlZF07CiB9
CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
clN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0
YXRlIHN0YXRlKQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6TW9ja1N0YXRlIHN0YXRlKQogewogICAgIFttX3dlYlZpZXcgX3NldE1vY2tNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyTmFtZTpuYW1lIHN0YXRlOnN0YXRlXTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyLmgKaW5kZXggMGI5MjM4MzVlOWUxNWI2YjgwNDViNDlhZmUyOWU2YWFiMDNl
Y2ZjYS4uOGNhMzI5NDdhNWI0NmUwNjdiOGU4YmFlNDQ2MzkzZWJiOTBlODZlZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29u
dGV4dElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGJvb2wgaGFzVmlkZW8p
OwogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5nZShXZWJD
b3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRp
YVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpOwogICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpOwotICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dDo6U3RhdGUpOworICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6TW9ja1N0YXRlKTsKICAgICB2b2lkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyRGlzbWlzc1BvcHVwKCk7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlci5tbQppbmRleCA3MzQ0MzU2NzVhYjgwOWI1MGVjNWVmMzhhYjlmNzdjYTE0
OGIzMWYxLi43ZGJkNTg5NDc1NDA1YTE2ZWJkZDBmYTliY2ZhNjJjMzM3ZTc0MTUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFi
bGVkKGJvb2wKICAgICBXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWQoKS5z
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKLXZv
aWQgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKK3ZvaWQgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcm
IG5hbWUsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3Rh
dGUpCiB7CiAgICAgV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkKCkuc2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShuYW1lLCBzdGF0ZSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNWIwZWU4YTNhYzhj
MzMzYjZlZTM0NGNkZDljM2I1NTc2NWMyNmZmMC4uNDkyYWY2MDFjZjdhYzRkZjQ2NDUwYjA4YWFh
NWMzMjBlYTJlNmU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQpAQCAtOTIzMiw3ICs5MjMyLDcgQEAgLSAodm9pZClfc2V0TW9ja01lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJFbmFibGVkOihib29sKWVuYWJsZWQKICAgICBbc2VsZiBfZGV2aWNlUGlja2Vy
XS0+c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGVuYWJsZWQpOwogfQog
Ci0tICh2b2lkKV9zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck5hbWU6KE5TU3RyaW5n
ICopbmFtZSBzdGF0ZTooV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRl
KXN0YXRlCistICh2b2lkKV9zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck5hbWU6KE5T
U3RyaW5nICopbmFtZSBzdGF0ZTooV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
Ok1vY2tTdGF0ZSlzdGF0ZQogewogICAgIFtzZWxmIF9kZXZpY2VQaWNrZXJdLT5zZXRNb2NrTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKG5hbWUsIHN0YXRlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDNhZTBk
M2FhMjYyZDk1MjMzMGMxYzgyYzMyNTUwZDlhMjFhNTAxNGYuLjA0YjhjMzY4Y2NhZjg1MjRkMDg1
OTM3MmQ2MDU4ZjQ4ZjE3YTZmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtMzI3LDcgKzMyNyw3IEBAIFdlYkxheW91dE1p
bGVzdG9uZXMga2l0TGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWls
ZXN0b25lPik7CiAtICh2b2lkKV9zaG93UGxheWJhY2tUYXJnZXRQaWNrZXI6KFdlYkNvcmU6OlBs
YXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIpY29udGV4dElkIGxvY2F0aW9uOihj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYpbG9jYXRpb24gaGFzVmlkZW86KEJPT0wpaGFzVmlkZW87
CiAtICh2b2lkKV9wbGF5YmFja1RhcmdldFBpY2tlckNsaWVudFN0YXRlRGlkQ2hhbmdlOihXZWJD
b3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyKWNvbnRleHRJZCBzdGF0
ZTooV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKXN0YXRlOwogLSAodm9p
ZClfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkOihib29sKWVuYWJsZWQ7
Ci0tICh2b2lkKV9zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck5hbWU6KE5TU3RyaW5n
ICopbmFtZSBzdGF0ZTooV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRl
KXN0YXRlOworLSAodm9pZClfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOihO
U1N0cmluZyAqKW5hbWUgc3RhdGU6KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpNb2NrU3RhdGUpc3RhdGU7CiAtICh2b2lkKV9tb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ckRpc21pc3NQb3B1cDsKICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426123</attachid>
            <date>2021-04-15 11:58:25 -0700</date>
            <delta_ts>2021-04-16 14:29:06 -0700</delta_ts>
            <desc>Rebase the patch</desc>
            <filename>bug-224469-20210415115824.patch</filename>
            <type>text/plain</type>
            <size>84962</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWYwNTRjZDJlYzJlNTNk
MGYxNDZkOGI1OTIwNTlkNmRiNDMxNDgzZC4uOGI1ZWQzNDI0Zjk1NjM2YjBmZjQzM2Q4NWU1Y2Qw
NGJjMDA4NjE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDIxLTA0LTE1ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIFdlYkNvbnRlbnQg
cHJvY2VzcyBzaG91bGQgbm90IGNyZWF0ZSBBVk91dHB1dENvbnRleHQgaW5zdGFuY2VzIHdoZW4g
bWVkaWEgaW4gR1BVIFByb2Nlc3MgaXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtb2RpZmllcyBgTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHRgIHRvIHByb3ZpZGUgaW50ZXJmYWNlcyB0byBzZXJpYWxpemUvZGVzZXJp
YWxpemUKKyAgICAgICAgYEFWT3V0cHV0Q29udGV4dGAgYW5kIG1vZGlmaWVzIGBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29jb2FgIHRvIHVzZSBgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHRgIHRvCisg
ICAgICAgIG1hbmFnZSBpdHMgYEFWT3V0cHV0Q29udGV4dGAgaW5zdGVhZCBvZiBrZWVwaW5nIGEg
cG9pbnRlciB0byB0aGUgYEFWT3V0cHV0Q29udGV4dGAgb2JqZWN0LgorICAgICAgICBXaXRoIHRo
ZXNlIGNoYW5nZXMsIGEgV2ViQ29udGVudCBwcm9jZXNzIGNhbiBmb3J3YXJkIGEgc2VyaWFsaXpl
ZCBgQVZPdXRwdXRDb250ZXh0YCBvYmplY3QKKyAgICAgICAgdG8gb3RoZXIgcHJvY2Vzc2VzIChl
LmcuLCB0aGUgR1BVIHByb2Nlc3MpIHdpdGhvdXQgZGVzZXJpYWxpemluZyBpdC4gVGhlcmVmb3Jl
LCB0aGUgV2ViQ29udGVudAorICAgICAgICBwcm9jZXNzIGRvZXMgbm90IG5lZWQgYWNjZXNzIHRv
IHRoZSBDb3JlTWVkaWEgcm91dGluZyBzZXJ2aWNlLiBTbyB3ZSBjYW4gcmVtb3ZlIHRoZSBmaXgg
KHIyNzU2NjkpCisgICAgICAgIGZvciBidWcgMjI0MzI4LgorCisgICAgICAgIENvdmVyZWQgYnkg
ZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNz
aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKToKKyAgICAgICAgKiBNb2R1
bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oOgorCisgICAgICAgICogSGVhZGVy
cy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgTW9kaWZ5IHRoZSBwcm9qZWN0IGZp
bGUgYmVjYXVzZSBgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHRgIGlzIHVzZWQgaW4gQ29jb2Eg
cG9ydHMgb25seS4KKworICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3Rh
dGUpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKToKKyAgICAgICAgKiBwYWdlL1Bh
Z2UuaDoKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXQu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQ6Omhhc0FjdGl2ZVJvdXRl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQ6OmRldmljZU5h
bWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldDo6c3VwcG9y
dHNSZW1vdGVWaWRlb1BsYXliYWNrKToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1Rh
cmdldENvY29hLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6
Om91dHB1dENvbnRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6On5NZWRpYVBsYXli
YWNrVGFyZ2V0Q29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6dG9NZWRpYVBsYXliYWNrVGFyZ2V0
Q29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpzdXBw
b3J0c1JlbW90ZVZpZGVvUGxheWJhY2sgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjp0YXJnZXRDb250ZXh0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6aGFzQWN0aXZl
Um91dGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldENvY29hOjpkZXZpY2VOYW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgRG9uJ3QgZGly
ZWN0bHkgdXNlIGBBVk91dHB1dENvbnRleHRgIGluIHRoaXMgY2xhc3MuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6aXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRX
aXJlbGVzc1BsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KToKKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Ojptb2NrU3RhdGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Om91dHB1dENvbnRleHQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OnNlcmlhbGl6ZWRP
dXRwdXRDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjplbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5tbTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6OmRldmljZU5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6Omhhc0FjdGl2ZVJvdXRlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpzdXBwb3J0c1JlbW90ZVZpZGVv
UGxheWJhY2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OnNlcmlhbGl6ZU91dHB1dENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OmRlc2VyaWFsaXplT3V0cHV0Q29udGV4dCk6CisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldE1vY2s6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvTWVkaWFQbGF5YmFja1RhcmdldE1vY2spOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldE1vY2s6OnRhcmdldENvbnRleHQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2su
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpzdGF0ZSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9j
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6
ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0
cyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6aW52
YWxpZGF0ZVBsYXliYWNrVGFyZ2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyTW9jazo6c2V0U3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaDoKKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldE1vY2tNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyU3RhdGUpOgorCiAyMDIxLTA0LTE1ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNlIFdURjo6RnVuY3Rpb24gaW5zdGVh
ZCBvZiBzdGQ6OmZ1bmN0aW9uIGluIFNWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5OjphdHRyaWJ1
dGVBbmltYXRvckNyZWF0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjRmYzcyN2QyM2E2YjBmMzJiMDFmNTJlMmY0
ZWQyODlkOWY3NDkyMi4uNWYwNTkxNjIzZmNkNzNiYjFkNjQzMTQzN2I5YjA2YzdmYzJkMzBjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAyMS0wNC0xNSAgUGVuZyBMaXUgIDxwZW5nLmxp
dTZAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBXZWJDb250ZW50IHByb2Nlc3Mgc2hvdWxk
IG5vdCBjcmVhdGUgQVZPdXRwdXRDb250ZXh0IGluc3RhbmNlcyB3aGVuIG1lZGlhIGluIEdQVSBQ
cm9jZXNzIGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNDQ2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0V2lyZWxlc3NQbGF5
YmFja1RhcmdldCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5Lmg6CisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlclByb3h5OjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKToKKworICAgICAgICAqIFNo
YXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29k
ZVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAq
IFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJl
ZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZv
cm1EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZVBsYXRmb3JtRGF0YSk6IERlbGV0ZWQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6bWVkaWFSZWxhdGVkSU9LaXRDbGFzc2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNldFBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYktpdDo6dGVt
cG9yYXJ5TWFjaFNlcnZpY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoK
KworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFj
dGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UpOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxheWJh
Y2tUYXJnZXRTZWxlY3RlZCBjb25zdCk6CisKIDIwMjEtMDQtMTUgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBCcmluZyBiYWNrIHRo
ZSBjYWxsIHRvIFJlc291cmNlUmVzcG9uc2U6OnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJp
Y3MgYWZ0ZXIgcjI3NjAwOApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDZmMWYwMjk0
MDFjMGM5MjY0ZTRmMDZhMTkzMTg2NGVkYTVlZmEyNzAuLmRmZDBkYTQyMzRlNThiNzYxOTgxNjM1
YjM3M2IzOGM2MTZkNmE0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMCBAQAorMjAyMS0wNC0xNSAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisg
ICAgICAgIFtHUFVQXSBXZWJDb250ZW50IHByb2Nlc3Mgc2hvdWxkIG5vdCBjcmVhdGUgQVZPdXRw
dXRDb250ZXh0IGluc3RhbmNlcyB3aGVuIG1lZGlhIGluIEdQVSBQcm9jZXNzIGlzIGVuYWJsZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDQ2OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclN0YXRlKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXIuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXIubW06CisgICAgICAgIChXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKToKKyAgICAgICAgKiBXZWJWaWV3
L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX3NldE1vY2tNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTmFtZTpzdGF0ZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5h
bC5oOgorCiAyMDIxLTA0LTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIE5QQVBJIHBsdWdpbnMgaW4gV2Vi
VmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZTExNTA1Y2RkMGY4ZTQzYjI4NzNkYjdhMWQ1ODFm
OGRmOTg0ZmViMy4uYzA0ZjgwNGVkOTM3YzY3MGFkZWY3YjNiNjg5ZDg5NWRmYTdlN2IwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCkBAIC0xMjY5LDcgKzEyNjksNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRF
X0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5cGVDYWNoZS5o
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldC5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldENsaWVudC5oCi0gICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllckVudW1zLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25N
YW5hZ2VyLmNwcAppbmRleCA2YzZhYjBlN2E2MmVjNGRhNDVlZDNkYmM5NDE0NTUxNzVjZDQ0ZDVh
Li5kNWI1OTVhNGFjNDlmZjBlZmZlNjJiNDUyZWMzNDJiN2QzODMwNDg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXIuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBlbmFibGUKICAgICBt
X21vY2tQaWNrZXJFbmFibGVkID0gZW5hYmxlZDsKIH0KIAotdm9pZCBXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQordm9pZCBX
ZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0
YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tT
dGF0ZSBzdGF0ZSkKIHsKICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5j
X18pOwogICAgIG1vY2tQaWNrZXIoKS5zZXRTdGF0ZShuYW1lLCBzdGF0ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIu
aAppbmRleCBkN2YyOGNjYjc1ZTVkNzU1ZGFmNDMzNGVmNjU2Y2IxNDE5MGZhYjU0Li4xYmExMjg0
ZjIzMzNjNzg0NmFiODBkNGUxMWRiMmJmNGYwMjA2NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgKQEAgLTUx
LDcgKzUxLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBXZWJNZWRpYVNl
c3Npb25NYW5hZ2VyJiBzaGFyZWQoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TW9j
a01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJp
bmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJp
bmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCk7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlm
aWVyIGFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJD
bGllbnQmLCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CmluZGV4IGVjZTQ2Y2ZhNDExOTgzNDUxNzhhNWQyN2Y3NzI3ZGI5MDczNThj
YzkuLjFhYjdmMjA0ODU0ZjgxZTE0Nzk1MDAzNmMzYzVmYzVlNjAzYWE0MjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dApAQCAtMzY5LDYgKzM2OSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0lPU3VyZmFjZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlUG9vbENvY29h
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW0KIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKK3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lm1tCiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29h
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGEzODA1
MzUzNjc4NmYwMDBhYzgzOWEzYjgwNjljNzE0ZTQyMjZjMTUuLjU3MjViMjdjYzAwMDgwM2Q4MGFj
ZDU3ODhlY2QzOGI0MDA3MGEzODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY5ODEsNiArNjk4MSw3IEBACiAJCTFEMDAyNkEz
MjM3NEQ2MjQwMENBNkNERiAvKiBKU1BpY3R1cmVJblBpY3R1cmVXaW5kb3cuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUQwMDI2QTgyMzc0RjlEOTAwQ0E2Q0RG
IC8qIEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxRDAwMjZBOTIzNzRGOUQ5MDBDQTZDREYgLyogSlNFbnRlclBpY3R1
cmVJblBpY3R1cmVFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUQwMDhBQTUyNjIxMDhDMDAwRUUzQURFIC8qIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEMkM4MkI2MjM2QTNGNkEwMDU1
RDZDNSAvKiBQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQaWN0dXJl
SW5QaWN0dXJlU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDQ3NjU4
RDI1Q0NBNzc4MDA3QUYzMTIgLyogSW1hZ2VEZWNvZGVySWRlbnRpZmllci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbWFnZURlY29kZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFEQUIzMTEzMjUxRDcyNUMwMEZDOTQ4NSAvKiBWaWRlb0xheWVyTWFuYWdlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWaWRlb0xheWVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjY5NzEsNyArMjY5NzIsNiBAQAogCQkJCUNEREUwMkU5MThCM0RGQzcwMENGN0ZGMSAv
KiBMZWdhY3lDRE1TZXNzaW9uLmggKi8sCiAJCQkJMDdFM0RGRDAxQTlFNzg2NTAwNzY0Q0E4IC8q
IE1lZGlhUGxheWJhY2tUYXJnZXQuaCAqLywKIAkJCQkwNzkyMTY1MzFBQTU2MEFBMDBBM0MwNDkg
LyogTWVkaWFQbGF5YmFja1RhcmdldENsaWVudC5oICovLAotCQkJCTA3Rjg3NjgzMUFENEE5NDUw
MDkwNTg0OSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oICovLAogCQkJCTA3OEU0M0Q3
MUFCQjZDN0UwMDFDMkZBNiAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmNwcCAqLywKIAkJ
CQkwNzhFNDNEODFBQkI2QzdFMDAxQzJGQTYgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5o
ICovLAogCQkJCUU0QjQxRTBDMENCRjkwQkQwMEFGMkVDRSAvKiBNZWRpYVBsYXllci5jcHAgKi8s
CkBAIC0yNzE4Nyw2ICsyNzE4Nyw4IEBACiAJCQkJQUQ5RkY2RTAxOTA4MzkxRDAwM0I2MUUwIC8q
IElPU3VyZmFjZVBvb2xDb2NvYS5tbSAqLywKIAkJCQlDREM0OEFDODIxNDlDRjJBMDAyNEZENTkg
LyogTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcCAqLywKIAkJCQlDREM0
OEFDNzIxNDlDRjJBMDAyNEZENTkgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNv
Y29hLmggKi8sCisJCQkJMDdGODc2ODMxQUQ0QTk0NTAwOTA1ODQ5IC8qIE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0LmggKi8sCisJCQkJMUQwMDhBQTUyNjIxMDhDMDAwRUUzQURFIC8qIE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0Lm1tICovLAogCQkJCTMxNjQ3RkE4MjUxNjE2QkQwMDEwRjhG
QiAvKiBPcGVuR0xTb2Z0TGlua0NvY29hLmggKi8sCiAJCQkJMzE2NDdGQTkyNTE2MTZCRDAwMTBG
OEZCIC8qIE9wZW5HTFNvZnRMaW5rQ29jb2EubW0gKi8sCiAJCQkJN0I2NEMwQjQyNTRDM0IxNjAw
MDZCNEFGIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0gKi8sCkBA
IC0zMjEyMCw2ICszMjEyMiw3IEBACiAJCQkJNDE2MkE0NTExMDExNDVBRTAwREZGM0VEIC8qIERl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUEzRDU4RjEw
MUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRDA2REZBNjEzNEE0REVGMDA2RjVEN0QgLyogRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25O
b2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEYzOEQxQjI2MjZGMTNCMDA3QjEwNjQgLyogRGVm
YXVsdFJlc291cmNlTG9hZFByaW9yaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDgzRDM2MjIx
MTIyQTIxMDA3NkUxMUMgLyogRGVmZXJyYWJsZVRhc2suaCBpbiBIZWFkZXJzICovLAogCQkJCUZE
MzE2MDJDMTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxheURTUEtlcm5lbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQzMTYwMkUxMkIwMjY3NjAwQzFBMzU5IC8qIERlbGF5Tm9kZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zNDYxOSw3ICszNDYyMiw2IEBACiAJCQkJQjU5NUZGNDcxODI0Q0VFMzAwRkY1MUNE
IC8qIFJlbmRlckl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VBNDg3QTA5N0Q5MzAy
MDA5NEM5RTQgLyogUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTgwQ0ZGMEYx
MkRFOUIwMDUxRDY4OSAvKiBSZW5kZXJMYXllckJhY2tpbmcuaCBpbiBIZWFkZXJzICovLAotCQkJ
CUU0RjM4RDFCMjYyNkYxM0IwMDdCMTA2NCAvKiBEZWZhdWx0UmVzb3VyY2VMb2FkUHJpb3JpdHku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTgwQ0ZEMEYxMkRFOUIwMDUxRDY4OSAvKiBSZW5kZXJM
YXllckNvbXBvc2l0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTNDMjQ0RkVBQTM3NUFDNjMzRjg4
QkU2RiAvKiBSZW5kZXJMYXllck1vZGVsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjUz
RkI4NDIxM0I3QTY0MDBDNDBEMzQgLyogUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCBkMGJjMzU1MGQ0ZDA4
MzVjMzMzZTFmNDgzZjVmMjVhZGQwNDgzM2NlLi5kZjRjOWMxZjg0ZWNhMjBlN2IxZmJkMzdjMTQz
OGM1ZTBhYmIwZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTUxMyw3ICs1
MTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tl
cihQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBjb25zdCBJbnRQb2ludCYs
IGJvb2wgLyppc1ZpZGVvKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwbGF5YmFja1RhcmdldFBp
Y2tlckNsaWVudFN0YXRlRGlkQ2hhbmdlKFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50
aWZpZXIsIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncykgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sKSAgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29u
c3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBT
dHJpbmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgbW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKSB7
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBiZDllNTM4MmJjOWRjY2JhZmZlYzZi
Mzk0MjIyNGM4ZDVlYTY2YjlhLi5jZGJmZmEwYzZhMDUyYjBlMWZhMDFjZDFmZDkzMWRiY2JmZGRm
NTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTI5NTIsNyArMjk1Miw3IEBAIHZvaWQgUGFnZTo6
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAg
ICBjaHJvbWUoKS5jbGllbnQoKS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJs
ZWQoZW5hYmxlZCk7CiB9CiAKLXZvaWQgUGFnZTo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpTdGF0ZSBzdGF0ZSkKK3ZvaWQgUGFnZTo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpN
b2NrU3RhdGUgc3RhdGUpCiB7CiAgICAgY2hyb21lKCkuY2xpZW50KCkuc2V0TW9ja01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShuYW1lLCBzdGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4
IGQ0ODI4MTY5MDU1M2UwNDZmNDcwMzQ3ZWQ2YmI0NTIxNWUyMDY0OWQuLjc3MDFiMDhjMWUzYzli
OTRiMGIwY2RiMDY2MTkwOWMyMjIyMmY0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC03MzEsNyArNzMx
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKFBsYXliYWNr
VGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGNvbnN0IEludFBvaW50JiwgYm9vbCwgUm91
dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0
UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2UoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRl
bnRpZmllciwgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
U3RhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
U3RhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0
ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ckRpc21pc3NQb3B1cCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQbGF5YmFja1Rh
cmdldChQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBSZWY8TWVkaWFQbGF5
YmFja1RhcmdldD4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0LmgKaW5kZXggNmFkZmE5MzdmNzNmNTczZDk1YzlmY2Q3
NGQ2ZDIxYjg3M2EyZjc4OC4uNjEyODA4NTAxZjA0ZjJmYTVkNGZiZGQ4MjZhNWVhMDk2ZjJhM2M3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
YmFja1RhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWJhY2tUYXJnZXQuaApAQCAtMjcsMjQgKzI3LDIzIEBACiAKICNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKQogCisjaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ7Ci0KIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxN
ZWRpYVBsYXliYWNrVGFyZ2V0PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFQbGF5YmFj
a1RhcmdldCgpID0gZGVmYXVsdDsKIAotICAgIGVudW0gVGFyZ2V0VHlwZSB7IEFWRm91bmRhdGlv
biwgTW9jayB9OworICAgIGVudW0gY2xhc3MgVGFyZ2V0VHlwZSA6IHVpbnQ4X3QgeyBBVkZvdW5k
YXRpb24sIE1vY2sgfTsKICAgICB2aXJ0dWFsIFRhcmdldFR5cGUgdGFyZ2V0VHlwZSgpIGNvbnN0
ID0gMDsKLQogICAgIHZpcnR1YWwgY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRh
cmdldENvbnRleHQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGhhc0FjdGl2ZVJvdXRl
KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIGRldmljZU5hbWUoKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygpIGNvbnN0ID0g
MDsKKworICAgIGJvb2wgaGFzQWN0aXZlUm91dGUoKSBjb25zdCB7IHJldHVybiB0YXJnZXRDb250
ZXh0KCkuaGFzQWN0aXZlUm91dGUoKTsgfQorICAgIFN0cmluZyBkZXZpY2VOYW1lKCkgY29uc3Qg
eyByZXR1cm4gdGFyZ2V0Q29udGV4dCgpLmRldmljZU5hbWUoKTsgfQorICAgIGJvb2wgc3VwcG9y
dHNSZW1vdGVWaWRlb1BsYXliYWNrKCkgeyByZXR1cm4gdGFyZ2V0Q29udGV4dCgpLnN1cHBvcnRz
UmVtb3RlVmlkZW9QbGF5YmFjaygpOyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWNlNGEzZWMzMDFlOWQ5ZTk3NDRkY2Jm
MjliN2E3YTEwYmY0YjM0Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dF9oCi0jZGVmaW5lIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0X2gKLQot
I2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0KLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KLQotT0JKQ19DTEFTUyBBVk91dHB1dENvbnRleHQ7Ci0KLSNpZiBQTEFU
Rk9STShDT0NPQSkKLU9CSkNfQ0xBU1MgTlNLZXllZEFyY2hpdmVyOwotT0JKQ19DTEFTUyBOU0tl
eWVkVW5hcmNoaXZlcjsKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IHsKLXB1YmxpYzoKLSAgICBlbnVtIFR5cGUgOiBpbnQz
Ml90IHsKLSAgICAgICAgTm9uZSwKLSAgICAgICAgQVZPdXRwdXRDb250ZXh0VHlwZSwKLSAgICAg
ICAgTW9ja1R5cGUsCi0gICAgfTsKLQotICAgIGVudW0gQ29udGV4dFN0YXRlIHsKLSAgICAgICAg
VW5rbm93biA9IDAsCi0gICAgICAgIE91dHB1dERldmljZVVuYXZhaWxhYmxlID0gMSwKLSAgICAg
ICAgT3V0cHV0RGV2aWNlQXZhaWxhYmxlID0gMiwKLSAgICB9OwotICAgIHR5cGVkZWYgdW5zaWdu
ZWQgU3RhdGU7Ci0KLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCgpCi0gICAgICAgIDog
bV90eXBlKE5vbmUpCi0gICAgewotICAgIH0KLQotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0KEFWT3V0cHV0Q29udGV4dCAqb3V0cHV0Q29udGV4dCkKLSAgICAgICAgOiBtX3R5cGUoQVZP
dXRwdXRDb250ZXh0VHlwZSkKLSAgICAgICAgLCBtX291dHB1dENvbnRleHQob3V0cHV0Q29udGV4
dCkKLSAgICB7Ci0gICAgfQotCi0gICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQoY29uc3Qg
U3RyaW5nJiBuYW1lLCBTdGF0ZSBzdGF0ZSkKLSAgICAgICAgOiBtX3R5cGUoTW9ja1R5cGUpCi0g
ICAgICAgICwgbV9uYW1lKG5hbWUpCi0gICAgICAgICwgbV9zdGF0ZShzdGF0ZSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0KLSAgICBj
b25zdCBTdHJpbmcmIG1vY2tEZXZpY2VOYW1lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gTW9ja1R5cGUpOwotICAgICAgICByZXR1cm4gbV9uYW1lOwotICAgIH0KLQot
ICAgIFN0YXRlIG1vY2tTdGF0ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBl
ID09IE1vY2tUeXBlKTsKLSAgICAgICAgcmV0dXJuIG1fc3RhdGU7Ci0gICAgfQotCi0gICAgQVZP
dXRwdXRDb250ZXh0ICphdk91dHB1dENvbnRleHQoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBBVk91dHB1dENvbnRleHRUeXBlKTsKLSAgICAgICAgcmV0dXJuIG1fb3V0
cHV0Q29udGV4dDsKLSAgICB9Ci0KLSAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURh
dGEoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gQVZPdXRwdXRDb250ZXh0VHlwZTsgfQotICAg
IAotcHJpdmF0ZToKLSAgICBUeXBlIG1fdHlwZSB7IE5vbmUgfTsKLSAgICBBVk91dHB1dENvbnRl
eHQgKm1fb3V0cHV0Q29udGV4dCB7IG51bGxwdHIgfTsKLSAgICBTdHJpbmcgbV9uYW1lOwotICAg
IFN0YXRlIG1fc3RhdGUgeyBVbmtub3duIH07Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotCi0jZW5kaWYgLy8gTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmgK
aW5kZXggNmE4ZTE5NDc2YTM0N2Q4ZTc0ODQxZmY2OWZiZDQ4YjA5MjIzYzg4OS4uNjhlMzUyY2Ew
OGM5OGJiZjFjOTlkZmEyNWE0OTAzNWRhYmYzNGI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb2Nv
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9N
ZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShX
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAKICNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0
LmgiCi0jaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaCIKICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM2LDYgKzM1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldENvY29hIDogcHVi
bGljIE1lZGlhUGxheWJhY2tUYXJnZXQgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gY3JlYXRlKEFWT3V0cHV0Q29udGV4dCAqKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IGNyZWF0
ZShNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpICYmICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikgJiYgIVBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQogICAgIHN0YXRpYyBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gY3JlYXRlKCk7CkBA
IC00MywyMSArNDMsMTQgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+TWVkaWFQbGF5YmFja1Rh
cmdldENvY29hKCk7CiAKLSAgICBUYXJnZXRUeXBlIHRhcmdldFR5cGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBBVkZvdW5kYXRpb247IH0KLQotICAgIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0JiB0YXJnZXRDb250ZXh0KCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBoYXNBY3RpdmVS
b3V0ZSgpIGNvbnN0IGZpbmFsOwotICAgIFN0cmluZyBkZXZpY2VOYW1lKCkgY29uc3QgZmluYWw7
Ci0gICAgYm9vbCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKSBjb25zdCBmaW5hbDsKLQot
ICAgIEFWT3V0cHV0Q29udGV4dCAqb3V0cHV0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fb3V0
cHV0Q29udGV4dC5nZXQoKTsgfQorICAgIFRhcmdldFR5cGUgdGFyZ2V0VHlwZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIFRhcmdldFR5cGU6OkFWRm91bmRhdGlvbjsgfQorICAgIGNvbnN0IE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXRDb250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9jb250ZXh0OyB9CiAKIHByb3RlY3RlZDoKLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29j
b2EoQVZPdXRwdXRDb250ZXh0ICopOworICAgIGV4cGxpY2l0IE1lZGlhUGxheWJhY2tUYXJnZXRD
b2NvYShBVk91dHB1dENvbnRleHQgKik7CisgICAgZXhwbGljaXQgTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hKE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiYpOwogCi0gICAgUmV0YWluUHRyPEFW
T3V0cHV0Q29udGV4dD4gbV9vdXRwdXRDb250ZXh0OwotICAgIG11dGFibGUgTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQgbV9jb250ZXh0OwotICAgIFN0cmluZyBtX2RldmljZU5hbWU7CisgICAg
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQgbV9jb250ZXh0OwogfTsKIAogTWVkaWFQbGF5YmFj
a1RhcmdldENvY29hKiB0b01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShNZWRpYVBsYXliYWNrVGFy
Z2V0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5tbQpp
bmRleCBkYWM4Y2M0ODE1NmMyYzdlNzRlYWFjN2I0ZGRlNGJjMjE3NzUxOWFhLi42ZjVjMjdlMzk0
MGUzYTA4N2JmMjFiOGY0MDA0MWI0NzUwZGRkYTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9N
ZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EubW0KQEAgLTM0LDkyICszNCwzNiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29jb2E6OmNyZWF0ZShBVk91dHB1dENvbnRleHQgKmNvbnRleHQpCitSZWY8TWVkaWFQbGF5
YmFja1RhcmdldD4gTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUoQVZPdXRwdXRDb250
ZXh0ICpvdXRwdXRDb250ZXh0KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb2NvYShjb250ZXh0KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVk
aWFQbGF5YmFja1RhcmdldENvY29hKG91dHB1dENvbnRleHQpKTsKIH0KIAotTWVkaWFQbGF5YmFj
a1RhcmdldENvY29hOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoQVZPdXRwdXRDb250ZXh0ICpj
b250ZXh0KQotICAgIDogTWVkaWFQbGF5YmFja1RhcmdldCgpCi0gICAgLCBtX291dHB1dENvbnRl
eHQoY29udGV4dCkKK1JlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29jb2E6OmNyZWF0ZShNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmIGNvbnRleHQpCiB7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFQbGF5YmFja1RhcmdldENvY29hKFdURk1vdmUo
Y29udGV4dCkpKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJ
T1NfRkFNSUxZX1NJTVVMQVRPUikgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotUmVmPE1lZGlh
UGxheWJhY2tUYXJnZXQ+IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKCkKK01lZGlh
UGxheWJhY2tUYXJnZXRDb2NvYTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hKEFWT3V0cHV0Q29u
dGV4dCAqb3V0cHV0Q29udGV4dCkKKyAgICA6IG1fY29udGV4dChvdXRwdXRDb250ZXh0KQogewot
ICAgIGF1dG8gKnJvdXRpbmdDb250ZXh0VUlEID0gW1tQQUw6OmdldEFWQXVkaW9TZXNzaW9uQ2xh
c3MoKSBzaGFyZWRJbnN0YW5jZV0gcm91dGluZ0NvbnRleHRVSURdOwotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShbUEFMOjpnZXRBVk91dHB1dENvbnRl
eHRDbGFzcygpIG91dHB1dENvbnRleHRGb3JJRDpyb3V0aW5nQ29udGV4dFVJRF0pKTsKIH0KLSNl
bmRpZgogCi1ib29sIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6c3VwcG9ydHNSZW1vdGVWaWRl
b1BsYXliYWNrKCkgY29uc3QKK01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvY29hKE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiYgY29udGV4dCkKKyAgICA6
IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQogewotICAgIGlmICghbV9vdXRwdXRDb250ZXh0
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIVttX291dHB1dENvbnRleHQgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNlcyld
IHx8ICFbbV9vdXRwdXRDb250ZXh0IHN1cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2VzXSB8fCAh
W21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dERldmlj
ZXMpXSkgewotICAgICAgICBpZiAoYXV0byAqb3V0cHV0RGV2aWNlID0gW21fb3V0cHV0Q29udGV4
dCBvdXRwdXREZXZpY2VdKSB7Ci0gICAgICAgICAgICBpZiAob3V0cHV0RGV2aWNlLmRldmljZUZl
YXR1cmVzICYgQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8pCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0g
ICAgZm9yIChBVk91dHB1dERldmljZSAqb3V0cHV0RGV2aWNlIGluIFttX291dHB1dENvbnRleHQg
b3V0cHV0RGV2aWNlc10pIHsKLSAgICAgICAgaWYgKG91dHB1dERldmljZS5kZXZpY2VGZWF0dXJl
cyAmIEFWT3V0cHV0RGV2aWNlRmVhdHVyZVZpZGVvKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwogfQogCi1NZWRpYVBsYXliYWNrVGFyZ2V0Q29j
b2E6On5NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoKQotewotfQotCi1jb25zdCBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dCYgTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjp0YXJnZXRDb250ZXh0
KCkgY29uc3QKLXsKLSAgICBtX2NvbnRleHQgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCht
X291dHB1dENvbnRleHQuZ2V0KCkpOwotICAgIHJldHVybiBtX2NvbnRleHQ7Ci19Ci0KLWJvb2wg
TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpoYXNBY3RpdmVSb3V0ZSgpIGNvbnN0CisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKSAmJiAh
UExBVEZPUk0oTUFDQ0FUQUxZU1QpCitSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gTWVkaWFQbGF5
YmFja1RhcmdldENvY29hOjpjcmVhdGUoKQogewotICAgIGlmICghbV9vdXRwdXRDb250ZXh0KQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoW21fb3V0cHV0Q29udGV4dCByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN1cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2VzKV0gJiYg
W21fb3V0cHV0Q29udGV4dCBzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNlc10gJiYgW21fb3V0
cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dERldmljZXMpXSkg
ewotICAgICAgICBmb3IgKEFWT3V0cHV0RGV2aWNlICpvdXRwdXREZXZpY2UgaW4gW21fb3V0cHV0
Q29udGV4dCBvdXRwdXREZXZpY2VzXSkgewotICAgICAgICAgICAgaWYgKG91dHB1dERldmljZS5k
ZXZpY2VGZWF0dXJlcyAmIChBVk91dHB1dERldmljZUZlYXR1cmVWaWRlbyB8IEFWT3V0cHV0RGV2
aWNlRmVhdHVyZUF1ZGlvKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
fQotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoW21fb3V0cHV0Q29u
dGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dERldmljZSldKSB7Ci0gICAg
ICAgIGlmIChhdXRvICpvdXRwdXREZXZpY2UgPSBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmlj
ZV0pCi0gICAgICAgICAgICByZXR1cm4gb3V0cHV0RGV2aWNlLmRldmljZUZlYXR1cmVzICYgKEFW
T3V0cHV0RGV2aWNlRmVhdHVyZVZpZGVvIHwgQVZPdXRwdXREZXZpY2VGZWF0dXJlQXVkaW8pOwot
ICAgIH0KLQotICAgIHJldHVybiBtX291dHB1dENvbnRleHQuZ2V0KCkuZGV2aWNlTmFtZTsKKyAg
ICBhdXRvICpyb3V0aW5nQ29udGV4dFVJRCA9IFtbUEFMOjpnZXRBVkF1ZGlvU2Vzc2lvbkNsYXNz
KCkgc2hhcmVkSW5zdGFuY2VdIHJvdXRpbmdDb250ZXh0VUlEXTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoW1BBTDo6Z2V0QVZPdXRwdXRDb250ZXh0
Q2xhc3MoKSBvdXRwdXRDb250ZXh0Rm9ySUQ6cm91dGluZ0NvbnRleHRVSURdKSk7CiB9CisjZW5k
aWYKIAotU3RyaW5nIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6ZGV2aWNlTmFtZSgpIGNvbnN0
CitNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6On5NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoKQog
ewotICAgIGlmICghbV9vdXRwdXRDb250ZXh0KQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKLQotICAgIGlmICghW21fb3V0cHV0Q29udGV4dCBzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2
aWNlc10pCi0gICAgICAgIHJldHVybiBbbV9vdXRwdXRDb250ZXh0IGRldmljZU5hbWVdOwotCi0g
ICAgYXV0byBvdXRwdXREZXZpY2VOYW1lcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdF0pOwotICAgIGZvciAoQVZPdXRwdXREZXZpY2UgKm91dHB1dERldmljZSBpbiBbbV9v
dXRwdXRDb250ZXh0IG91dHB1dERldmljZXNdKQotICAgICAgICBbb3V0cHV0RGV2aWNlTmFtZXMg
YWRkT2JqZWN0OltvdXRwdXREZXZpY2UgZGV2aWNlTmFtZV1dOwotCi0gICAgcmV0dXJuIFtvdXRw
dXREZXZpY2VOYW1lcyBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6QCIgKyAiXTsKIH0KIAogTWVk
aWFQbGF5YmFja1RhcmdldENvY29hKiB0b01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShNZWRpYVBs
YXliYWNrVGFyZ2V0KiByZXApCkBAIC0xMjksNyArNzMsNyBAQCBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29jb2EqIHRvTWVkaWFQbGF5YmFja1RhcmdldENvY29hKE1lZGlhUGxheWJhY2tUYXJnZXQqIHJl
cCkKIAogY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENvY29hKiB0b01lZGlhUGxheWJhY2tUYXJn
ZXRDb2NvYShjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0KiByZXApCiB7Ci0gICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04ocmVwLT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFj
a1RhcmdldDo6QVZGb3VuZGF0aW9uKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKHJlcC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6OlRh
cmdldFR5cGU6OkFWRm91bmRhdGlvbik7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE1l
ZGlhUGxheWJhY2tUYXJnZXRDb2NvYSo+KHJlcCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CmluZGV4IDIwYjI0MTJmMTEzNjYzYzFmMzg2MmYyN2I2NjI0MDBmNmNkYjA3MmIuLjBhYzA5M2U1
MGNhMjk4MGM1OWEzMjdhMmMyZTg4MWVjZGZiMWJiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQpAQCAtMjgyNCw3ICsyODI0LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjppc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKCkgY29uc3QKIAogI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtX3BsYXliYWNrVGFyZ2V0KSB7Ci0gICAgICAg
IGlmIChtX3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1Rhcmdl
dDo6QVZGb3VuZGF0aW9uKQorICAgICAgICBpZiAobV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlw
ZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6OlRhcmdldFR5cGU6OkFWRm91bmRhdGlvbikKICAg
ICAgICAgICAgIHdpcmVsZXNzVGFyZ2V0ID0gbV9hdlBsYXllciAmJiBtX2F2UGxheWVyLmdldCgp
LmV4dGVybmFsUGxheWJhY2tBY3RpdmU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHdpcmVs
ZXNzVGFyZ2V0ID0gbV9zaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCAmJiBtX3BsYXliYWNrVGFy
Z2V0LT5oYXNBY3RpdmVSb3V0ZSgpOwpAQCAtMjk2OCw3ICsyOTY4LDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJl
ZjxNZWRpYVBsYXkKIHsKICAgICBtX3BsYXliYWNrVGFyZ2V0ID0gV1RGTW92ZSh0YXJnZXQpOwog
Ci0gICAgbV9vdXRwdXRDb250ZXh0ID0gbV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09
IE1lZGlhUGxheWJhY2tUYXJnZXQ6OkFWRm91bmRhdGlvbiA/IHRvTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hKG1fcGxheWJhY2tUYXJnZXQuZ2V0KCkpLT5vdXRwdXRDb250ZXh0KCkgOiBudWxscHRy
OworICAgIG1fb3V0cHV0Q29udGV4dCA9IG1fcGxheWJhY2tUYXJnZXQtPnRhcmdldFR5cGUoKSA9
PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpUYXJnZXRUeXBlOjpBVkZvdW5kYXRpb24gPyB0b01lZGlh
UGxheWJhY2tUYXJnZXRDb2NvYShtX3BsYXliYWNrVGFyZ2V0LmdldCgpKS0+dGFyZ2V0Q29udGV4
dCgpLm91dHB1dENvbnRleHQoKSA6IG51bGxwdHI7CiAKICAgICBJTkZPX0xPRyhMT0dJREVOVElG
SUVSKTsKIApAQCAtMjk4OCw3ICsyOTg4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sIHNob3UKIAog
ICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsIHNob3VsZFBsYXkpOwogCi0gICAgaWYgKG1fcGxh
eWJhY2tUYXJnZXQtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpBVkZvdW5k
YXRpb24pIHsKKyAgICBpZiAobV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09IE1lZGlh
UGxheWJhY2tUYXJnZXQ6OlRhcmdldFR5cGU6OkFWRm91bmRhdGlvbikgewogICAgICAgICBBVk91
dHB1dENvbnRleHQgKm5ld0NvbnRleHQgPSBzaG91bGRQbGF5ID8gbV9vdXRwdXRDb250ZXh0Lmdl
dCgpIDogbmlsOwogCiAgICAgICAgIGlmICghbV9hdlBsYXllcikKQEAgLTMwMDUsNyArMzAwNSw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0U2hvdWxkUGxh
eVRvUGxheWJhY2tUYXJnZXQoYm9vbCBzaG91CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBBU1NFUlQobV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJhY2tU
YXJnZXQ6Ok1vY2spOworICAgIEFTU0VSVChtX3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkg
PT0gTWVkaWFQbGF5YmFja1RhcmdldDo6VGFyZ2V0VHlwZTo6TW9jayk7CiAKICAgICBzZXREZWxh
eUNhbGxiYWNrcyh0cnVlKTsKICAgICBhdXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDZhNTBi
MDA2ZWVhMGE4YjIzNjI5NjE3NWZiZGY1YTg0Yzk3ZWMwNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0LmgKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKK09CSkNfQ0xB
U1MgQVZPdXRwdXRDb250ZXh0OworT0JKQ19DTEFTUyBOU0RhdGE7CisjZW5kaWYKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCB7CitwdWJs
aWM6CisgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7CisgICAgICAgIE5vbmUsCisgICAg
ICAgIEFWT3V0cHV0Q29udGV4dCwKKyAgICAgICAgU2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCwK
KyAgICAgICAgTW9jaywKKyAgICB9OworCisgICAgZW51bSBjbGFzcyBNb2NrU3RhdGUgOiB1aW50
OF90IHsKKyAgICAgICAgVW5rbm93biA9IDAsCisgICAgICAgIE91dHB1dERldmljZVVuYXZhaWxh
YmxlID0gMSwKKyAgICAgICAgT3V0cHV0RGV2aWNlQXZhaWxhYmxlID0gMiwKKyAgICB9OworCisg
ICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQoUmV0YWluUHRyPEFWT3V0
cHV0Q29udGV4dD4mJik7CisKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChSZXRhaW5Q
dHI8TlNEYXRhPiYmIHNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0LCBib29sIGhhc0FjdGl2ZVJvdXRl
KQorICAgICAgICA6IG1fdHlwZShUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0KQorICAg
ICAgICAsIG1fc2VyaWFsaXplZE91dHB1dENvbnRleHQoV1RGTW92ZShzZXJpYWxpemVkT3V0cHV0
Q29udGV4dCkpCisgICAgICAgICwgbV9jYWNoZWRIYXNBY3RpdmVSb3V0ZShoYXNBY3RpdmVSb3V0
ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3NlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KTsKKyAg
ICB9CisKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChjb25zdCBTdHJpbmcmIG1vY2tE
ZXZpY2VOYW1lLCBNb2NrU3RhdGUgc3RhdGUpCisgICAgICAgIDogbV90eXBlKFR5cGU6Ok1vY2sp
CisgICAgICAgICwgbV9tb2NrRGV2aWNlTmFtZShtb2NrRGV2aWNlTmFtZSkKKyAgICAgICAgLCBt
X21vY2tTdGF0ZShzdGF0ZSkKKyAgICB7CisgICAgfQorCisgICAgVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGRldmljZU5hbWUo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0FjdGl2ZVJvdXRlKCkgY29uc3Q7
CisgICAgYm9vbCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKSBjb25zdDsKKworICAgIE1v
Y2tTdGF0ZSBtb2NrU3RhdGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBUeXBlOjpNb2NrKTsKKyAgICAgICAgcmV0dXJuIG1fbW9ja1N0YXRlOworICAgIH0KKworICAg
IFJldGFpblB0cjxBVk91dHB1dENvbnRleHQ+IG91dHB1dENvbnRleHQoKSBjb25zdAorICAgIHsK
KyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpBVk91dHB1dENvbnRleHQpOworICAgICAg
ICByZXR1cm4gbV9vdXRwdXRDb250ZXh0OworICAgIH0KKworICAgIFJldGFpblB0cjxOU0RhdGE+
IHNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X3R5cGUgPT0gVHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCk7CisgICAgICAgIHJldHVy
biBtX3NlcmlhbGl6ZWRPdXRwdXRDb250ZXh0OworICAgIH0KKworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgc2VyaWFsaXplT3V0cHV0Q29udGV4dCgpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
ZGVzZXJpYWxpemVPdXRwdXRDb250ZXh0KCk7CisKKyAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQ
bGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6QVZPdXRwdXRDb250
ZXh0IHx8IG1fdHlwZSA9PSBUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0OyB9CisKK3By
aXZhdGU6CisgICAgVHlwZSBtX3R5cGUgeyBUeXBlOjpOb25lIH07CisgICAgUmV0YWluUHRyPEFW
T3V0cHV0Q29udGV4dD4gbV9vdXRwdXRDb250ZXh0OworICAgIFJldGFpblB0cjxOU0RhdGE+IG1f
c2VyaWFsaXplZE91dHB1dENvbnRleHQ7CisgICAgYm9vbCBtX2NhY2hlZEhhc0FjdGl2ZVJvdXRl
IHsgZmFsc2UgfTsKKworICAgIFN0cmluZyBtX21vY2tEZXZpY2VOYW1lOworICAgIE1vY2tTdGF0
ZSBtX21vY2tTdGF0ZSB7IE1vY2tTdGF0ZTo6VW5rbm93biB9OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRy
YWl0czxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZT4geworICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpUeXBlLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6VHlwZTo6Tm9uZSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQsCisg
ICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrCisg
ICAgPjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVu
dW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpN
b2NrU3RhdGUsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpN
b2NrU3RhdGU6OlVua25vd24sCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpNb2NrU3RhdGU6Ok91dHB1dERldmljZVVuYXZhaWxhYmxlLAorICAgICAgICBXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpPdXRwdXREZXZpY2VB
dmFpbGFibGUKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZDlkNTU4YjNjYzI3YjkzYWNjMWM5MzFmMTY0YzZk
ZWExYmI0NzEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW0KQEAgLTAsMCArMSwxNjIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQuaCIKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8b2JqYy9y
dW50aW1lLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oPgorI2lt
cG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0KFJldGFpblB0cjxBVk91dHB1dENvbnRleHQ+JiYgb3V0cHV0Q29udGV4dCkKKyAgICA6
IG1fb3V0cHV0Q29udGV4dChvdXRwdXRDb250ZXh0KQoreworICAgIEFTU0VSVChtX291dHB1dENv
bnRleHQpOworICAgIG1fdHlwZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpB
Vk91dHB1dENvbnRleHQ7Cit9CisKK1N0cmluZyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
ZGV2aWNlTmFtZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dDo6VHlwZTo6TW9jayB8fCBtX3R5cGUgPT0gTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCk7CisKKyAgICBpZiAobV90eXBlID09IE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrKQorICAgICAgICByZXR1cm4gbV9t
b2NrRGV2aWNlTmFtZTsKKworICAgIEFTU0VSVChtX3R5cGUgPT0gTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCk7CisgICAgU3RyaW5nIGRldmljZU5hbWU7
CisgICAgaWYgKCFbbV9vdXRwdXRDb250ZXh0IHN1cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2Vz
XSkKKyAgICAgICAgZGV2aWNlTmFtZSA9IFttX291dHB1dENvbnRleHQgZGV2aWNlTmFtZV07Cisg
ICAgZWxzZSB7CisgICAgICAgIGF1dG8gb3V0cHV0RGV2aWNlTmFtZXMgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgZm9yIChBVk91dHB1dERldmljZSAq
b3V0cHV0RGV2aWNlIGluIFttX291dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlc10pCisgICAgICAg
ICAgICBbb3V0cHV0RGV2aWNlTmFtZXMgYWRkT2JqZWN0OltvdXRwdXREZXZpY2UgZGV2aWNlTmFt
ZV1dOworCisgICAgICAgIGRldmljZU5hbWUgPSBbb3V0cHV0RGV2aWNlTmFtZXMgY29tcG9uZW50
c0pvaW5lZEJ5U3RyaW5nOkAiICsgIl07CisgICAgfQorCisgICAgcmV0dXJuIGRldmljZU5hbWU7
Cit9Citib29sIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpoYXNBY3RpdmVSb3V0ZSgpIGNv
bnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
VHlwZTo6Tm9uZSk7CisgICAgaWYgKG1fdHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6VHlwZTo6TW9jaykKKyAgICAgICAgcmV0dXJuICFtX21vY2tEZXZpY2VOYW1lLmlzRW1wdHko
KTsKKworICAgIC8vIEZJWE1FOiBJdCBtYXkgbm90IGJlIHNhZmUgdG8gdXNlIHRoZSBjYWNoZWQg
YGhhc0FjdGl2ZVJvdXRlYCBvZiBhIHNlcmlhbGl6ZWQgQVZPdXRwdXRDb250ZXh0CisgICAgaWYg
KG1fdHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6U2VyaWFsaXplZEFW
T3V0cHV0Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIG1fY2FjaGVkSGFzQWN0aXZlUm91dGU7CisK
KyAgICBBU1NFUlQobV90eXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpB
Vk91dHB1dENvbnRleHQpOworICAgIGJvb2wgaGFzQWN0aXZlUm91dGUgPSBmYWxzZTsKKyAgICBp
ZiAoW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN1cHBvcnRz
TXVsdGlwbGVPdXRwdXREZXZpY2VzKV0gJiYgW21fb3V0cHV0Q29udGV4dCBzdXBwb3J0c011bHRp
cGxlT3V0cHV0RGV2aWNlc10gJiYgW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKG91dHB1dERldmljZXMpXSkgeworICAgICAgICBmb3IgKEFWT3V0cHV0RGV2aWNl
ICpvdXRwdXREZXZpY2UgaW4gW21fb3V0cHV0Q29udGV4dCBvdXRwdXREZXZpY2VzXSkgeworICAg
ICAgICAgICAgaWYgKG91dHB1dERldmljZS5kZXZpY2VGZWF0dXJlcyAmIChBVk91dHB1dERldmlj
ZUZlYXR1cmVWaWRlbyB8IEFWT3V0cHV0RGV2aWNlRmVhdHVyZUF1ZGlvKSkKKyAgICAgICAgICAg
ICAgICBoYXNBY3RpdmVSb3V0ZSA9IHRydWU7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKFtt
X291dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdXRwdXREZXZpY2Up
XSkgeworICAgICAgICBpZiAoYXV0byAqb3V0cHV0RGV2aWNlID0gW21fb3V0cHV0Q29udGV4dCBv
dXRwdXREZXZpY2VdKQorICAgICAgICAgICAgaGFzQWN0aXZlUm91dGUgPSBvdXRwdXREZXZpY2Uu
ZGV2aWNlRmVhdHVyZXMgJiAoQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8gfCBBVk91dHB1dERl
dmljZUZlYXR1cmVBdWRpbyk7CisgICAgfSBlbHNlCisgICAgICAgIGhhc0FjdGl2ZVJvdXRlID0g
bV9vdXRwdXRDb250ZXh0LmdldCgpLmRldmljZU5hbWU7CisKKyAgICByZXR1cm4gaGFzQWN0aXZl
Um91dGU7Cit9Citib29sIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpzdXBwb3J0c1JlbW90
ZVZpZGVvUGxheWJhY2soKSBjb25zdAoreworICAgIEFTU0VSVChtX3R5cGUgPT0gTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2sgfHwgbV90eXBlID09IE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQpOworICAgIGlmIChtX3R5cGUgPT0g
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2spCisgICAgICAgIHJldHVybiAh
bV9tb2NrRGV2aWNlTmFtZS5pc0VtcHR5KCk7CisKKyAgICBib29sIHN1cHBvcnRzUmVtb3RlVmlk
ZW9QbGF5YmFjayA9IGZhbHNlOworICAgIGlmICghW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKHN1cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2VzKV0gfHwgIVtt
X291dHB1dENvbnRleHQgc3VwcG9ydHNNdWx0aXBsZU91dHB1dERldmljZXNdIHx8ICFbbV9vdXRw
dXRDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob3V0cHV0RGV2aWNlcyldKSB7
CisgICAgICAgIGlmIChhdXRvICpvdXRwdXREZXZpY2UgPSBbbV9vdXRwdXRDb250ZXh0IG91dHB1
dERldmljZV0pIHsKKyAgICAgICAgICAgIGlmIChvdXRwdXREZXZpY2UuZGV2aWNlRmVhdHVyZXMg
JiBBVk91dHB1dERldmljZUZlYXR1cmVWaWRlbykKKyAgICAgICAgICAgICAgICBzdXBwb3J0c1Jl
bW90ZVZpZGVvUGxheWJhY2sgPSB0cnVlOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgZm9yIChBVk91dHB1dERldmljZSAqb3V0cHV0RGV2aWNlIGluIFttX291dHB1dENvbnRleHQg
b3V0cHV0RGV2aWNlc10pIHsKKyAgICAgICAgICAgIGlmIChvdXRwdXREZXZpY2UuZGV2aWNlRmVh
dHVyZXMgJiBBVk91dHB1dERldmljZUZlYXR1cmVWaWRlbykKKyAgICAgICAgICAgICAgICBzdXBw
b3J0c1JlbW90ZVZpZGVvUGxheWJhY2sgPSB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAg
cmV0dXJuIHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjazsKK30KKworYm9vbCBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6c2VyaWFsaXplT3V0cHV0Q29udGV4dCgpCit7CisgICAgQVNTRVJU
KG1fdHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250
ZXh0KTsKKyAgICBpZiAobV90eXBlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBl
OjpBVk91dHB1dENvbnRleHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gYXJj
aGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0UmVxdWlyaW5nU2Vj
dXJlQ29kaW5nOllFU10pOworICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6bV9vdXRwdXRDb250
ZXh0LmdldCgpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOworICAgIFthcmNo
aXZlciBmaW5pc2hFbmNvZGluZ107CisKKyAgICBtX3NlcmlhbGl6ZWRPdXRwdXRDb250ZXh0ID0g
W2FyY2hpdmVyIGVuY29kZWREYXRhXTsKKyAgICBtX3R5cGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dDsKKyAgICBtX291dHB1dENv
bnRleHQuY2xlYXIoKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpkZXNlcmlhbGl6ZU91dHB1dENvbnRleHQoKQoreworICAgIEFTU0VS
VChtX3R5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRB
Vk91dHB1dENvbnRleHQpOworICAgIGlmIChtX3R5cGUgIT0gTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOworICAgIGF1dG8gdW5hcmNoaXZlciA9
IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdGcm9tRGF0
YTptX3NlcmlhbGl6ZWRPdXRwdXRDb250ZXh0LmdldCgpIGVycm9yOm51bGxwdHJdKTsKKyAgICB1
bmFyY2hpdmVyLmdldCgpLmRlY29kaW5nRmFpbHVyZVBvbGljeSA9IE5TRGVjb2RpbmdGYWlsdXJl
UG9saWN5UmFpc2VFeGNlcHRpb247CisgICAgYXV0byBhbGxvd2VkQ2xhc3NTZXQgPSBhZG9wdE5T
KFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6QFsgUEFMOjpnZXRBVk91dHB1dENvbnRleHRD
bGFzcygpIF1dKTsKKworICAgIEB0cnkgeworICAgICAgICBpZCByZXN1bHQgPSBbdW5hcmNoaXZl
ciBkZWNvZGVPYmplY3RPZkNsYXNzZXM6YWxsb3dlZENsYXNzU2V0LmdldCgpIGZvcktleTpOU0tl
eWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOworICAgICAgICBBU1NFUlQocmVzdWx0KTsKKyAgICAg
ICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgbV9vdXRwdXRDb250ZXh0ID0gcmVzdWx0Owor
ICAgICAgICAgICAgbV90eXBlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFW
T3V0cHV0Q29udGV4dDsKKyAgICAgICAgICAgIG1fc2VyaWFsaXplZE91dHB1dENvbnRleHQuY2xl
YXIoKTsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOworICAgICAgICB9CisgICAgfSBAY2F0
Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQg
dG8gZGVjb2RlIG9iamVjdCBvZiBjbGFzcyBBVk91dHB1dENvbnRleHQgOiAlQCIsIGV4Y2VwdGlv
bik7CisgICAgfSBAZmluYWxseSB7CisgICAgICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5n
XTsKKyAgICAgICAgdW5hcmNoaXZlci5nZXQoKS5kZWxlZ2F0ZSA9IG5pbDsKKyAgICB9CisKKyAg
ICByZXR1cm4gc3VjY2VzczsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5jcHAKaW5kZXgg
NDU1Y2VmYzlmNmYwZGY0MTk2Nzc4Zjc1MTlmYjhiYjcxZjU1ZDUyMS4uMmEyYThkMGJjZjE2NWFk
MGIyMWY1YzlkMmE4NDcxNzczNWZiNGM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5jcHAKQEAgLTMwLDI2ICsz
MCwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0
PiBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQorUmVmPE1lZGlhUGxheWJhY2tU
YXJnZXQ+IE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1l
LCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKQogewogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKG5hbWUsIHN0YXRlKSk7
CiB9CiAKLU1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhj
b25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0
ZSkKLSAgICA6IE1lZGlhUGxheWJhY2tUYXJnZXQoKQotICAgICwgbV9uYW1lKG5hbWUpCi0gICAg
LCBtX3N0YXRlKHN0YXRlKQorTWVkaWFQbGF5YmFja1RhcmdldE1vY2s6Ok1lZGlhUGxheWJhY2tU
YXJnZXRNb2NrKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
Ok1vY2tTdGF0ZSBzdGF0ZSkKKyAgICA6IG1fY29udGV4dChuYW1lLCBzdGF0ZSkKIHsKIH0KIAog
TWVkaWFQbGF5YmFja1RhcmdldE1vY2s6On5NZWRpYVBsYXliYWNrVGFyZ2V0TW9jaygpID0gZGVm
YXVsdDsKIAotY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIE1lZGlhUGxheWJhY2tU
YXJnZXRNb2NrOjp0YXJnZXRDb250ZXh0KCkgY29uc3QKLXsKLSAgICBtX2NvbnRleHQgPSBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dChtX25hbWUsIG1fc3RhdGUpOwotICAgIHJldHVybiBtX2Nv
bnRleHQ7Ci19Ci0KIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKiB0b01lZGlhUGxheWJhY2tUYXJn
ZXRNb2NrKE1lZGlhUGxheWJhY2tUYXJnZXQqIHJlcCkKIHsKICAgICByZXR1cm4gY29uc3RfY2Fz
dDxNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayo+KHRvTWVkaWFQbGF5YmFja1RhcmdldE1vY2soY29u
c3RfY2FzdDxjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Kj4ocmVwKSkpOwpAQCAtNTcsNyArNDks
NyBAQCBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayogdG9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhN
ZWRpYVBsYXliYWNrVGFyZ2V0KiByZXApCiAKIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRNb2Nr
KiB0b01lZGlhUGxheWJhY2tUYXJnZXRNb2NrKGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQqIHJl
cCkKIHsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihyZXAtPnRhcmdldFR5
cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpNb2NrKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHJlcC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJh
Y2tUYXJnZXQ6OlRhcmdldFR5cGU6Ok1vY2spOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayo+KHJlcCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaAppbmRleCBj
ZDQ0OWIwM2MxMTMxMDY2NTI5NGNiODkyNGRmMGU0ZWVhYTEzZjRjLi4zOThhNDU5ZGU5OTJmNGUy
YjVjOTlkOThmZmI3NDcyODk2N2YwOWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oCkBAIC0yMyw0MCArMjMsMzAg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgTWVkaWFQbGF5YmFja1RhcmdldE1v
Y2tfaAotI2RlZmluZSBNZWRpYVBsYXliYWNrVGFyZ2V0TW9ja19oCisjcHJhZ21hIG9uY2UKIAog
I2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFN
SUxZKQogCiAjaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldC5oIgotI2luY2x1ZGUgIk1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldE1vY2sg
OiBwdWJsaWMgTWVkaWFQbGF5YmFja1RhcmdldCB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiwg
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmLCBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKTsKIAogICAgIHZpcnR1YWwgfk1lZGlh
UGxheWJhY2tUYXJnZXRNb2NrKCk7CiAKLSAgICBUYXJnZXRUeXBlIHRhcmdldFR5cGUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBNb2NrOyB9CisgICAgVGFyZ2V0VHlwZSB0YXJnZXRUeXBlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gTWVkaWFQbGF5YmFja1RhcmdldDo6VGFyZ2V0VHlwZTo6TW9jazsg
fQorICAgIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXRDb250ZXh0KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9jb250ZXh0OyB9CiAKLSAgICBjb25zdCBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0Q29udGV4dCgpIGNvbnN0IGZpbmFsOwotCi0gICAgYm9v
bCBoYXNBY3RpdmVSb3V0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX25hbWUuaXNFbXB0eSgp
OyB9Ci0gICAgYm9vbCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKSBjb25zdCBmaW5hbCB7
IHJldHVybiAhbV9uYW1lLmlzRW1wdHkoKTsgfQotCi0gICAgU3RyaW5nIGRldmljZU5hbWUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX25hbWU7IH0KLQotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpTdGF0ZSBzdGF0ZSgpIGNvbnN0OworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpNb2NrU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQubW9ja1N0YXRl
KCk7IH0KIAogcHJvdGVjdGVkOgotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKGNvbnN0IFN0
cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgTWVkaWFQbGF5
YmFja1RhcmdldE1vY2soY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
Ok1vY2tTdGF0ZSk7CiAKLSAgICBTdHJpbmcgbV9uYW1lOwotICAgIE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpTdGF0ZSBtX3N0YXRlIHsgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlVu
a25vd24gfTsKLSAgICBtdXRhYmxlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IG1fY29udGV4
dDsKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCBtX2NvbnRleHQ7CiB9OwogCiBNZWRp
YVBsYXliYWNrVGFyZ2V0TW9jayogdG9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhNZWRpYVBsYXli
YWNrVGFyZ2V0Kik7CkBAIC02NSw1ICs1NSwzIEBAIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRN
b2NrKiB0b01lZGlhUGxheWJhY2tUYXJnZXRNb2NrKGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnCiB9
CiAKICNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwCmluZGV4
IDQ0ZjQxNDdhMTkxODA3NTQ3MmVkYzNhMTIxODk5MjdkN2U5MjVlZjEuLjNiMGNhNmE3ODM3MjNm
OGY5OGQyMjYwYWFiNmFiNWE1NjFlZTFjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suY3Bw
CkBAIC01Miw3ICs1Miw3IEBAIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjp+TWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1vY2soKQogYm9vbCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
TW9jazo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUoKQogewogICAgIExPRyhNZWRpYSwg
Ik1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpleHRlcm5hbE91dHB1dERldmljZUF2YWls
YWJsZSIpOwotICAgIHJldHVybiBtX3N0YXRlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpPdXRwdXREZXZpY2VBdmFpbGFibGU7CisgICAgcmV0dXJuIG1fc3RhdGUgPT0gTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6T3V0cHV0RGV2aWNlQXZhaWxhYmxlOwogfQog
CiBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6
OnBsYXliYWNrVGFyZ2V0KCkKQEAgLTg1LDEwICs4NSwxMCBAQCB2b2lkIE1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJNb2NrOjpzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKQogICAg
IExPRyhNZWRpYSwgIk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpzdGFydGluZ01vbml0
b3JpbmdQbGF5YmFja1RhcmdldHMiKTsKIAogICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFt0
aGlzXSB7Ci0gICAgICAgIGlmIChtX3N0YXRlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpPdXRwdXREZXZpY2VBdmFpbGFibGUpCisgICAgICAgIGlmIChtX3N0YXRlID09IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6Ok91dHB1dERldmljZUF2YWlsYWJsZSkKICAg
ICAgICAgICAgIGF2YWlsYWJsZURldmljZXNEaWRDaGFuZ2UoKTsKIAotICAgICAgICBpZiAoIW1f
ZGV2aWNlTmFtZS5pc0VtcHR5KCkgJiYgbV9zdGF0ZSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6VW5rbm93bikKKyAgICAgICAgaWYgKCFtX2RldmljZU5hbWUuaXNFbXB0eSgpICYmIG1f
c3RhdGUgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93bikK
ICAgICAgICAgICAgIGN1cnJlbnREZXZpY2VEaWRDaGFuZ2UoKTsKICAgICB9KTsKIH0KQEAgLTEw
MSwxNSArMTAxLDE1IEBAIHZvaWQgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnN0b3BN
b25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkKIHZvaWQgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ck1vY2s6OmludmFsaWRhdGVQbGF5YmFja1RhcmdldHMoKQogewogICAgIExPRyhNZWRpYSwgIk1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjppbnZhbGlkYXRlUGxheWJhY2tUYXJnZXRzIik7
Ci0gICAgc2V0U3RhdGUoZW1wdHlTdHJpbmcoKSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
OlVua25vd24pOworICAgIHNldFN0YXRlKGVtcHR5U3RyaW5nKCksIE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpNb2NrU3RhdGU6OlVua25vd24pOwogfQogCi12b2lkIE1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJNb2NrOjpzZXRTdGF0ZShjb25zdCBTdHJpbmcmIGRldmljZU5hbWUsIE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKK3ZvaWQgTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlck1vY2s6OnNldFN0YXRlKGNvbnN0IFN0cmluZyYgZGV2aWNlTmFtZSwgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSkKIHsKICAgICBMT0coTWVkaWEs
ICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6c2V0U3RhdGUgLSBuYW1lID0gJXMsIHN0
YXRlID0gMHgleCIsIGRldmljZU5hbWUudXRmOCgpLmRhdGEoKSwgKHVuc2lnbmVkKXN0YXRlKTsK
IAogICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFt0aGlzLCBzdGF0ZSwgZGV2aWNlTmFtZV0g
ewotICAgICAgICBpZiAoZGV2aWNlTmFtZSAhPSBtX2RldmljZU5hbWUgJiYgc3RhdGUgIT0gTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKGRldmljZU5h
bWUgIT0gbV9kZXZpY2VOYW1lICYmIHN0YXRlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpNb2NrU3RhdGU6OlVua25vd24pIHsKICAgICAgICAgICAgIG1fZGV2aWNlTmFtZSA9IGRldmlj
ZU5hbWU7CiAgICAgICAgICAgICBjdXJyZW50RGV2aWNlRGlkQ2hhbmdlKCk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlck1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlck1vY2suaAppbmRleCBkZTA5NmNiODgxZjgyNDIxMTE2NThiOGQyMTgz
OWY5Yzg4NWQ0YmNlLi4zZTc0Mzk1YmYxNmI4ZTdjOGNlOWY5NzIwZTc1OTRlNGYyYzg3ZWUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyTW9jay5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBp
bnZhbGlkYXRlUGxheWJhY2tUYXJnZXRzKCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHNldFN0YXRl
KGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAg
dm9pZCBzZXRTdGF0ZShjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
TW9ja1N0YXRlKTsKICAgICB2b2lkIGRpc21pc3NQb3B1cCgpOwogCiBwcml2YXRlOgpAQCAtNTcs
NyArNTcsNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIG1fZGV2aWNlTmFtZTsKICAgICBHZW5l
cmljVGFza1F1ZXVlPFRpbWVyPiBtX3Rhc2tRdWV1ZTsKLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6U3RhdGUgbV9zdGF0ZSB7IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpVbmtu
b3duIH07CisgICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBtX3N0YXRl
IHsgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93biB9OwogICAg
IGJvb2wgbV9zaG93aW5nTWVudSB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKaW5kZXggMzQ0OTJiYWY4MTE0Yzk0NmQ2MzAxYTBmNjAwNmQ1ZGYxOTM0NmNh
My4uYzM4MDExNjk0YmFmYWNjOGExZjY3ZmYwODVhZmU0NGFiYmJjMmFmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgSW50ZXJuYWxz
OjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAKICNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHBhZ2Uuc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJFbmFibGVkKHRydWUpOwotICAgIHBhZ2Uuc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJTdGF0ZShlbXB0eVN0cmluZygpLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VW5r
bm93bik7CisgICAgcGFnZS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGVt
cHR5U3RyaW5nKCksIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6OlVua25v
d24pOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU8pCkBAIC00NTEwLDE0ICs0NTEwLDE0IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsczo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmCiAgICAgUGFnZSogcGFnZSA9IGNvbnRleHREb2N1bWVu
dCgpLT5mcmFtZSgpLT5wYWdlKCk7CiAgICAgQVNTRVJUKHBhZ2UpOwogCi0gICAgTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6OlVua25vd247CisgICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBz
dGF0ZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6OlVua25vd247CiAK
ICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGV2aWNlU3RhdGUsICJkZXZp
Y2VhdmFpbGFibGUiKSkKLSAgICAgICAgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6T3V0cHV0RGV2aWNlQXZhaWxhYmxlOworICAgICAgICBzdGF0ZSA9IE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6Ok91dHB1dERldmljZUF2YWlsYWJsZTsKICAgICBlbHNl
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkZXZpY2VTdGF0ZSwgImRldmljZXVu
YXZhaWxhYmxlIikpCi0gICAgICAgIHN0YXRlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
Ok91dHB1dERldmljZVVuYXZhaWxhYmxlOworICAgICAgICBzdGF0ZSA9IE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6Ok91dHB1dERldmljZVVuYXZhaWxhYmxlOwogICAgIGVs
c2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRldmljZVN0YXRlLCAidW5rbm93
biIpKQotICAgICAgICBzdGF0ZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpVbmtub3du
OworICAgICAgICBzdGF0ZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6
OlVua25vd247CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFj
Y2Vzc0Vycm9yIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCBiZDE5MWU1NzFkNzFmMjEwN2Rm
ZmVjNWRmYjI0YjBkNDQ2ZGNjZTY3Li4xODhmYjBjMzEzZmZhZjBjMjVlY2NkYTc0NmQ2N2MxYWMy
YTdmN2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAKICNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5
YmFja1RhcmdldENvY29hLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaD4K
ICNlbmRpZgogCkBAIC02OTcsMjAgKzY5OCwyMSBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJv
eHk6OnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wgc2hvdWxkUGxheSkKICAgICBt
X3BsYXllci0+c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoc2hvdWxkUGxheSk7CiB9CiAK
LXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChj
b25zdCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0Q29udGV4dCkK
K3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmIHRhcmdldENvbnRleHQpCiB7CiAgICAgc3dpdGNo
ICh0YXJnZXRDb250ZXh0LnR5cGUoKSkgewotICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OkFWT3V0cHV0Q29udGV4dFR5cGU6Ci0gICAgICAgIG1fcGxheWVyLT5zZXRXaXJlbGVz
c1BsYXliYWNrVGFyZ2V0KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRl
KHRhcmdldENvbnRleHQuYXZPdXRwdXRDb250ZXh0KCkpKTsKKyAgICBjYXNlIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0OiB7CisgICAg
ICAgIGlmICh0YXJnZXRDb250ZXh0LmRlc2VyaWFsaXplT3V0cHV0Q29udGV4dCgpKQorICAgICAg
ICAgICAgbV9wbGF5ZXItPnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoTWVkaWFQbGF5YmFja1Rh
cmdldENvY29hOjpjcmVhdGUoV1RGTW92ZSh0YXJnZXRDb250ZXh0KSkpOwogICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6TW9j
azoKICNpZiBQTEFURk9STShNQUMpCi0gICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6TW9ja1R5cGU6Ci0gICAgICAgIG1fcGxheWVyLT5zZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0
KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpjcmVhdGUodGFyZ2V0Q29udGV4dC5t
b2NrRGV2aWNlTmFtZSgpLCB0YXJnZXRDb250ZXh0Lm1vY2tTdGF0ZSgpKSk7CisgICAgICAgIG1f
cGxheWVyLT5zZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KE1lZGlhUGxheWJhY2tUYXJnZXRNb2Nr
OjpjcmVhdGUodGFyZ2V0Q29udGV4dC5kZXZpY2VOYW1lKCksIHRhcmdldENvbnRleHQubW9ja1N0
YXRlKCkpKTsKICAgICAgICAgYnJlYWs7Ci0jZWxzZQotICAgIGNhc2UgTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6Ok1vY2tUeXBlOgogI2VuZGlmCi0gICAgY2FzZSBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6Tm9uZToKKyAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpU
eXBlOjpBVk91dHB1dENvbnRleHQ6CisgICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6VHlwZTo6Tm9uZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IDI0YjY2NDFhZTRmNWYxZTdkZmMxMDUzNzQx
M2YwZTljZmQyNWUyM2YuLmJkYWVlOGFlMDVmMTBmYTQ2NTczMzQzZjQ3OWM0MjkzZDQ3ZGY2YzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuaApAQCAtMTUyLDcgKzE1Miw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXli
YWNrRGlzYWJsZWQoYm9vbCk7CiAgICAgdm9pZCBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rhcmdl
dChib29sKTsKLSAgICB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoY29uc3QgV2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmKTsKKyAgICB2b2lkIHNldFdpcmVsZXNzUGxh
eWJhY2tUYXJnZXQoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmJik7CiAgICAg
dm9pZCBtZWRpYVBsYXllckN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3NDaGFuZ2VkKGJv
b2wpIGZpbmFsOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5j
cHAKaW5kZXggOWU2YmM5NDY2YjUzOTliMjRmNTg0MDA5YjkwMGJkMDdkMDA4MjExNi4uYmVkMzBl
MjljZTRiOWM1ZjZhZjQwMWFjMWNjOGYyNmZhMmM0NjFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXJQcm94eS5jcHAKQEAgLTEwOCw3ICsxMDgsMTEgQEAgdm9pZCBSZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXJQcm94eTo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShTaG91bGRQYXVz
ZSBzaG91bGQKIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6YWN0aXZlVmlk
ZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0c0FpclBsYXlWaWRlbyBzdXBwb3J0c0FpclBsYXlWaWRl
bywgUmVmPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgdGFyZ2V0KQogewotICAgIG1f
Z3B1Q29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyOjpBY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKHN1cHBvcnRzQWlyUGxheVZpZGVv
LCB0YXJnZXQtPnRhcmdldENvbnRleHQoKSksIHsgfSk7CisgICAgYXV0byBjb250ZXh0ID0gdGFy
Z2V0LT50YXJnZXRDb250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0LnNlcmlhbGl6ZU91dHB1dENv
bnRleHQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9ncHVDb25uZWN0aW9uLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OkFjdGl2ZVZpZGVv
Um91dGVEaWRDaGFuZ2Uoc3VwcG9ydHNBaXJQbGF5VmlkZW8sIGNvbnRleHQpLCB7IH0pOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1l
bnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1
bWVudENvZGVyc0NvY29hLm1tCmluZGV4IGJmODhhYjYxN2JlMTIxYjRhZjdiYzRjZDNjNGZjMTk3
ZGRhNTk3ODIuLjUwMzQ0MWNiNmVhMzVmZDNlY2FmOTY3NmY5MjY0ZDMyODEzNWIzNjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0Nv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tCkBAIC00MSwxNCArNDEsMjMgQEAKICNpbXBvcnQgPFVJS2l0L1VJRm9udC5o
PgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorI2ltcG9y
dCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oPgorI2ltcG9ydCA8b2JqYy9y
dW50aW1lLmg+CisjZW5kaWYKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW5jbHVk
ZSA8V2ViS2l0QWRkaXRpb25zL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hQWRkaXRpb25zLm1t
PgorI2VuZGlmCisKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogI2ltcG9ydCAiRGF0YVJlZmVyZW5j
ZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5oPgogI2lt
cG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9XZWJDb3JlQXJndW1l
bnRDb2RlcnNDb2NvYUFkZGl0aW9ucy5tbT4KKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQorI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CiAjZW5k
aWYKIAogbmFtZXNwYWNlIElQQyB7CkBAIC02MDYsNCArNjE1LDUwIEBAIGJvb2wgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2Rl
ciYgZGVjb2RlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQordm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCit7CisgICAgaWYgKHRhcmdldC50
eXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4
dCkgeworICAgICAgICBpZiAoW1BBTDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBjb25mb3Jt
c1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCisgICAgICAgICAgICBlbmNv
ZGVyIDw8IHRhcmdldC5vdXRwdXRDb250ZXh0KCk7CisgICAgfSBlbHNlIGlmICh0YXJnZXQudHlw
ZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRw
dXRDb250ZXh0KSB7CisgICAgICAgIGVuY29kZXIgPDwgdGFyZ2V0LnNlcmlhbGl6ZWRPdXRwdXRD
b250ZXh0KCk7CisgICAgICAgIGVuY29kZXIgPDwgdGFyZ2V0Lmhhc0FjdGl2ZVJvdXRlKCk7Cisg
ICAgfSBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitib29sIEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0
Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5
cGUgY29udGV4dFR5cGUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCit7Cisg
ICAgQVNTRVJUKGNvbnRleHRUeXBlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBl
OjpNb2NrKTsKKworICAgIGlmIChjb250ZXh0VHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0KSB7CisgICAgICAgIGlmICghW1BBTDo6Z2V0QVZP
dXRwdXRDb250ZXh0Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJl
Q29kaW5nKV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgYXV0byBvdXRw
dXRDb250ZXh0ID0gSVBDOjpkZWNvZGU8QVZPdXRwdXRDb250ZXh0PihkZWNvZGVyLCBQQUw6Omdl
dEFWT3V0cHV0Q29udGV4dENsYXNzKCkpOworICAgICAgICBpZiAoIW91dHB1dENvbnRleHQpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdGFyZ2V0ID0gV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQgeyBXVEZNb3ZlKCpvdXRwdXRDb250ZXh0KSB9OworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoY29udGV4dFR5cGUgPT0gTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQpIHsK
KyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gc2VyaWFsaXplZE91dHB1dENvbnRleHQ7CisgICAg
ICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2Rlciwgc2VyaWFsaXplZE91dHB1dENvbnRleHQpIHx8
ICFzZXJpYWxpemVkT3V0cHV0Q29udGV4dCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICBib29sIGhhc0FjdGl2ZVJvdXRlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGhhc0FjdGl2ZVJvdXRlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB0
YXJnZXQgPSBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCB7IFdURk1vdmUoc2Vy
aWFsaXplZE91dHB1dENvbnRleHQpLCBoYXNBY3RpdmVSb3V0ZSB9OworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1l
c3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcAppbmRleCAyNTVhMmNiYzZjNzdjZWYxZTYwNzBlYTQyMGY2YmRlOTBiMjQwYTcxLi5iMjUw
NjNjMTcyMDIxZTdlNDUxZDQ2MjYwODE1Zjg3ZjExODEzZjYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTI0NTcsMTcgKzI0NTcsMTcg
QEAgdm9pZCBBcmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE0KICAgICBib29sIGhhc1BsYXRmb3JtRGF0YSA9IHRh
cmdldC5lbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKCk7CiAgICAgZW5jb2RlciA8PCBoYXNQ
bGF0Zm9ybURhdGE7CiAKLSAgICBpbnQzMl90IHRhcmdldFR5cGUgPSB0YXJnZXQudHlwZSgpOwot
ICAgIGVuY29kZXIgPDwgdGFyZ2V0VHlwZTsKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6VHlwZSBjb250ZXh0VHlwZSA9IHRhcmdldC50eXBlKCk7CisgICAgZW5jb2RlciA8PCBjb250
ZXh0VHlwZTsKIAogICAgIGlmICh0YXJnZXQuZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgp
KSB7CiAgICAgICAgIGVuY29kZVBsYXRmb3JtRGF0YShlbmNvZGVyLCB0YXJnZXQpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKHRhcmdldFR5cGUgPT0gTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6Ok1vY2tUeXBlKTsKLSAgICBlbmNvZGVyIDw8IHRhcmdldC5tb2NrRGV2
aWNlTmFtZSgpOwotICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8aW50MzJfdD4odGFyZ2V0Lm1v
Y2tTdGF0ZSgpKTsKKyAgICBBU1NFUlQoY29udGV4dFR5cGUgPT0gTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6OlR5cGU6Ok1vY2spOworICAgIGVuY29kZXIgPDwgdGFyZ2V0LmRldmljZU5hbWUo
KTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHRhcmdldC5tb2NrU3RhdGUo
KSk7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFy
Z2V0KQpAQCAtMjQ3NiwyNCArMjQ3NiwyNCBAQCBib29sIEFyZ3VtZW50Q29kZXI8TWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTWVkaWFQbAogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaGFzUGxhdGZvcm1EYXRhKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgaW50MzJfdCB0YXJnZXRUeXBlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
dGFyZ2V0VHlwZSkpCisgICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGUgY29udGV4
dFR5cGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb250ZXh0VHlwZSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNQbGF0Zm9ybURhdGEpCi0gICAgICAgIHJldHVybiBk
ZWNvZGVQbGF0Zm9ybURhdGEoZGVjb2RlciwgdGFyZ2V0KTsKKyAgICAgICAgcmV0dXJuIGRlY29k
ZVBsYXRmb3JtRGF0YShkZWNvZGVyLCBjb250ZXh0VHlwZSwgdGFyZ2V0KTsKIAotICAgIEFTU0VS
VCh0YXJnZXRUeXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrVHlwZSk7Ci0K
LSAgICBTdHJpbmcgbW9ja0RldmljZU5hbWU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShtb2Nr
RGV2aWNlTmFtZSkpCisgICAgQVNTRVJUKGNvbnRleHRUeXBlID09IE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpUeXBlOjpNb2NrKTsKKyAgICBTdHJpbmcgZGV2aWNlTmFtZTsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGRldmljZU5hbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBpbnQzMl90IG1vY2tTdGF0ZTsKKyAgICB1aW50OF90IG1vY2tTdGF0ZTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKG1vY2tTdGF0ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHRh
cmdldCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KG1vY2tEZXZpY2VOYW1lLCBzdGF0aWNf
Y2FzdDxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGU+KG1vY2tTdGF0ZSkpOworICAg
IHRhcmdldCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KGRldmljZU5hbWUsIHN0YXRpY19j
YXN0PE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU+KG1vY2tTdGF0ZSkpOwor
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggNjE5NzA4NzgyNTExNTQ4YjYyZjI3MTU2YmQzZjQ3
ZDcxYTMxZWFjMi4uNjQ3NmUzOTBiZmM3NzhkN2ViN2NkZmIzZGMyYWQ1NGMyY2U3ZmU1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTMzLDYg
KzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSW5kZXhlZERCLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnB1dE1vZGUuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2Uu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkTWV0cmljcy5oPgpAQCAtMTk1LDEwICsx
OTYsNiBAQCBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CiBjbGFzcyBDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXI7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpCi1jbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDsKLSNlbmRpZgotCiAjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKIHN0cnVjdCBNZWRpYUNvbnN0cmFpbnRzOwogI2VuZGlmCkBA
IC02NDQsNyArNjQxLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmKTsKICAg
ICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYpOwogICAgIHN0YXRpYyB2b2lkIGVuY29kZVBs
YXRmb3JtRGF0YShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQmKTsKLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlUGxhdGZv
cm1EYXRhKERlY29kZXImLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYpOwor
ICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVQbGF0Zm9ybURhdGEoRGVj
b2RlciYsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlLCBXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYpOwogfTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQppbmRl
eCAxODZiN2JiMmRiNmZjNGUyYmMxMzNmNzE3NWNjZjljMzc2Mzg5MjMwLi45MjVmNWE0ZDVhNDg4
ZDQ4ODQwNGVjNjI5NTJkOGEyNDlhM2YwMDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KQEAgLTQyLDEyICs0Miw2IEBA
CiAjaW1wb3J0IDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0
c0NGLmg+CiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotI2ltcG9ydCA8
V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oPgotI2ltcG9ydCA8b2JqYy9ydW50
aW1lLmg+Ci0jaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KLSNlbmRp
ZgotCiBuYW1lc3BhY2UgSVBDIHsKIAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNlcnRp
ZmljYXRlSW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpDZXJ0
aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKQEAgLTQwMywyOSArMzk3LDYgQEAgYm9vbCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcj46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGUKIAogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKQotCi12b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldCkKLXsKLSAgICBpZiAo
W1BBTDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3Rv
Y29sKE5TU2VjdXJlQ29kaW5nKV0pCi0gICAgICAgIGVuY29kZXIgPDwgdGFyZ2V0LmF2T3V0cHV0
Q29udGV4dCgpOwotfQotCi1ib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwgV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldCkKLXsKLSAgICBpZiAoIVtQ
QUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2Nv
bChOU1NlY3VyZUNvZGluZyldKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIGNv
bnRleHQgPSBJUEM6OmRlY29kZTxBVk91dHB1dENvbnRleHQ+KGRlY29kZXIsIFBBTDo6Z2V0QVZP
dXRwdXRDb250ZXh0Q2xhc3MoKSk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICB0YXJnZXQgPSBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dCB7IGNvbnRleHQtPmdldCgpIH07Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLSNlbmRpZgotCiAj
aWYgRU5BQkxFKFZJREVPKQogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRQ
bGF0Zm9ybURhdGFDdWVWYWx1ZT46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWUmIHZhbHVlKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYTJmMzljOTVl
M2JjNGQ4MjA1MWJhY2QzNzEzODAzMDczYzQzMzc5Mi4uZjc5ZWU5M2QyZDBkY2U1NTUyMjk3MjVh
MmQzYTg2NDI2OTI2MjFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC03ODMyLDE0ICs3ODMyLDYgQEAgc3RhdGljIGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVy
YWw+JiBtZWRpYVJlbGF0ZWRJT0tpdENsYXNzZXMoKQogICAgIH0pOwogICAgIHJldHVybiBzZXJ2
aWNlczsKIH0KLQotc3RhdGljIGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVyYWw+JiB0ZW1wb3JhcnlN
YWNoU2VydmljZXMoKQotewotICAgIHN0YXRpYyBjb25zdCBhdXRvIHNlcnZpY2VzID0gbWFrZU5l
dmVyRGVzdHJveWVkKFZlY3RvcjxBU0NJSUxpdGVyYWw+IHsKLSAgICAgICAgImNvbS5hcHBsZS5j
b3JlbWVkaWEucm91dGluZ2NvbnRleHQueHBjIl9zIC8vIFJlbW92ZSBhZnRlciA8cmRhcjovLzc2
NDAzMzAyPiBpcyBmaXhlZC4KLSAgICB9KTsKLSAgICByZXR1cm4gc2VydmljZXM7Ci19CiAjZW5k
aWYKIAogV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFy
YW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIERyYXdpbmdBcmVhUHJveHkmIGRyYXdp
bmdBcmVhLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVzKQpA
QCAtNzkzNSw5ICs3OTI3LDYgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJv
eHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICAgICAgLy8g
RklYTUUoMjA3NzE2KTogVGhlIGZvbGxvd2luZyBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIHRoZSBH
UFUgcHJvY2VzcyBpcyBjb21wbGV0ZS4KICAgICAgICAgcGFyYW1ldGVycy5tZWRpYUV4dGVuc2lv
bkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCht
ZWRpYVJlbGF0ZWRNYWNoU2VydmljZXMoKSwgV1RGOjpudWxsb3B0KTsKICAgICAgICAgcGFyYW1l
dGVycy5tZWRpYUlPS2l0RXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9ucyhtZWRpYVJlbGF0ZWRJT0tpdENsYXNzZXMo
KSwgV1RGOjpudWxsb3B0KTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBGSVhNRSgyMjQzMjcp
OiBSZW1vdmUgdGhpcyBlbHNlIGNsYXVzZSBvbmNlIDxyZGFyOi8vNzY0MDMzMDI+IGlzIGZpeGVk
LgotICAgICAgICBwYXJhbWV0ZXJzLm1lZGlhRXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHRlbXBvcmFyeU1hY2hTZXJ2aWNlcygp
LCBXVEY6Om51bGxvcHQpOwogICAgIH0KIAogICAgIGlmICghcHJlZmVyZW5jZXMoKS51c2VHUFVQ
cm9jZXNzRm9yTWVkaWFFbmFibGVkKCkKQEAgLTk0MDMsNyArOTM5Miw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBlbmFi
bGVkKQogICAgIHBhZ2VDbGllbnQoKS5tZWRpYVNlc3Npb25NYW5hZ2VyKCkuc2V0TW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGVuYWJsZWQpOwogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcm
IG5hbWUsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRl
KGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
Ok1vY2tTdGF0ZSBzdGF0ZSkKIHsKICAgICBwYWdlQ2xpZW50KCkubWVkaWFTZXNzaW9uTWFuYWdl
cigpLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUobmFtZSwgc3RhdGUpOwog
fQpAQCAtOTQxOCw3ICs5NDA3LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQbGF5YmFja1Rh
cmdldChQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRlCiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpQbGF5YmFja1RhcmdldFNlbGVjdGVkKGNvbnRleHRJZCwgdGFyZ2V0LT50
YXJnZXRDb250ZXh0KCkpKTsKKyAgICBhdXRvIGNvbnRleHQgPSB0YXJnZXQtPnRhcmdldENvbnRl
eHQoKTsKKyAgICBBU1NFUlQoY29udGV4dC50eXBlKCkgIT0gTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQpOworICAgIGlmIChwcmVmZXJl
bmNlcygpLnVzZUdQVVByb2Nlc3NGb3JNZWRpYUVuYWJsZWQoKSAmJiBjb250ZXh0LnR5cGUoKSA9
PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0ICYmICFj
b250ZXh0LnNlcmlhbGl6ZU91dHB1dENvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRTZWxlY3RlZChjb250ZXh0SWQs
IGNvbnRleHQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmV4dGVybmFsT3V0cHV0RGV2aWNl
QXZhaWxhYmxlRGlkQ2hhbmdlKFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIg
Y29udGV4dElkLCBib29sIGF2YWlsYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggOWI3ZGMwNmY2MWZiYzQ3MzJlYmI5YmJmNTRkNTg1Mjg5ZjQ3MWQ2MC4uNWYx
NjgyZTUyOTNkMTMzMDZlMGJjMzQzMDgyN2RhNzNjOTkxNzVmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE1NjcsNyArMTU2Nyw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBib29sIGhhc1Zp
ZGVvKTsKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2Uo
V2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6
TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsKICAgICB2b2lkIHNldE1vY2tNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sKTsKLSAgICB2b2lkIHNldE1vY2tNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKTsKKyAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6Ok1vY2tTdGF0ZSk7CiAgICAgdm9pZCBtb2NrTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlckRpc21pc3NQb3B1cCgpOwogCiAgICAgLy8gV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNs
aWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IDJjYWMzZjFjYjA1ZDFjZDdiNWY3NzFlZTEyYzBlNzI5ZTFmMWQ4Y2YuLjdlOThi
MDg4ZDkyMmVlMTE0NDk3MzBhMGU1NTgxMmJlMjY0NDc1MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTQ3Niw3ICs0NzYsNyBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFNob3dQbGF5YmFja1RhcmdldFBpY2tl
cihXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJ
ZCwgV2ViQ29yZTo6RmxvYXRSZWN0IHBpY2tlckxvY2F0aW9uLCBib29sIGhhc1ZpZGVvKQogICAg
IFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6UGxheWJh
Y2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIHVuc2lnbmVkIG1lZGlh
U3RhdGUpCiAgICAgU2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wg
ZW5hYmxlZCkKLSAgICBTZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKFN0cmlu
ZyBuYW1lLCB1bnNpZ25lZCBwaWNrZXJTdGF0ZSkKKyAgICBTZXRNb2NrTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlclN0YXRlKFN0cmluZyBuYW1lLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBwaWNrZXJTdGF0ZSkKICAgICBNb2NrTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCgpCiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1Jl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAKaW5kZXggMmFiNWY5MTNjZGU4M2NlZGM1NGE3YThm
ZTBlZTA5NTNiY2U0NDk1Yi4uNDg2MmFmNzY0NTY3ZDZiZjZhZmY2OGQyODc4ZjhmOTRlMTk1OGYy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwCkBAIC04MSwxMiArODEs
MTEgQEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnByb3ZpZGVQcmVzZW50aW5nQXBw
bGljYXRpb25QSUQoaW50IHBpZCkKIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFj
dGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9ydHNBaXJQbGF5VmlkZW8gc3VwcG9ydHNBaXJQ
bGF5VmlkZW8sIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiYgdGFyZ2V0Q29udGV4dCkKIHsK
LSAgICBpZiAodGFyZ2V0Q29udGV4dC50eXBlKCkgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6OkFWT3V0cHV0Q29udGV4dFR5cGUpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgQVNTRVJUKHRhcmdldENvbnRleHQudHlwZSgpICE9IE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQpOworICAgIGlmICh0YXJnZXRDb250ZXh0LnR5
cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0
KQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVs
cGVyOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKHN1cHBvcnRzQWlyUGxheVZpZGVvLCBXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZSh0YXJnZXRDb250ZXh0LmF2T3V0
cHV0Q29udGV4dCgpKSk7CisgICAgV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVW
aWRlb1JvdXRlRGlkQ2hhbmdlKHN1cHBvcnRzQWlyUGxheVZpZGVvLCBXZWJDb3JlOjpNZWRpYVBs
YXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZShXVEZNb3ZlKHRhcmdldENvbnRleHQpKSk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggYmNjNGMxN2FjMjk1MjEyY2JhNjRkZWRkMWM5
YjNhOTA2Y2EwNTEwMS4uNWZjODU1NjM3NjBlYTc1ZWMxMmVkMTRhOWUyNzM2ODFmMjUxYzA5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTEzNTIsNyArMTM1Miw3IEBAIHZvaWQgV2ViQ2hy
b21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBl
bmFibGVkKQogICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldE1vY2tN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChlbmFibGVkKSk7CiB9CiAKLXZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0
IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQor
dm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3Rh
dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0
YXRlIHN0YXRlKQogewogICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNl
dE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUobmFtZSwgc3RhdGUpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaAppbmRleCA2ODEyZTY0MmZlY2RjYWE3YjFmNTFmZTA3MTI1ODBhN2Q0MmM0
ZWYwLi41NmNmNmI5MmVkOWExMDM2ZGJkN2QwNjQ4NjNjNGU3NjgxNDJjZGVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCkBAIC0zNzgsNyArMzc4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNob3dQbGF5
YmFja1RhcmdldFBpY2tlcihXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wpIGZpbmFsOwogICAgIHZvaWQg
cGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpQbGF5YmFj
a1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpN
ZWRpYVN0YXRlRmxhZ3MpIGZpbmFsOwogICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJFbmFibGVkKGJvb2wpIGZpbmFsOwotICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dDo6U3RhdGUpIGZpbmFsOworICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKSBmaW5hbDsKICAgICB2b2lkIG1vY2tNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCkgZmluYWw7CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGFlYjI1ZGFiODQyMDY4NGE5
NTAyMzg2YWJmODNhZTZiZTM4Y2U5ODYuLjFlNjMzNzljYWY4NzdiNTkyNjZiZmM3MDM3MDkxNjAw
OTYwMzZlYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
QEAgLTE3OTEsNyArMTc5MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRTaG91bGREaXNwYXRj
aEZha2VNb3VzZU1vdmVFdmVudHMoYm9vbCBkaXNwYXRjaCkgeyBtX3Nob3VsZERpc3BhdGNoRmFr
ZU1vdXNlTW92ZUV2ZW50cyA9IGRpc3BhdGNoOyB9CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIHBsYXliYWNr
VGFyZ2V0U2VsZWN0ZWQoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIG91dHB1dERl
dmljZSkgY29uc3Q7CisgICAgdm9pZCBwbGF5YmFja1RhcmdldFNlbGVjdGVkKFdlYkNvcmU6OlBs
YXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0JiYpIGNvbnN0OwogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRBdmFpbGFi
aWxpdHlEaWRDaGFuZ2UoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRp
ZmllciwgYm9vbCk7CiAgICAgdm9pZCBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChXZWJD
b3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBib29sKTsKICAgICB2
b2lkIHBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2VkKFdlYkNvcmU6OlBsYXliYWNrVGFy
Z2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCA3NGRhNjM1Nzg4MmNkMDEzMDIw
ODQwOTdmMDY0ZDIxYzNiOTE1ZDA0Li42MmU3OThmZTRjZDVkNzBiOWIyM2YwMDg2N2I1OGRhNGEy
NzU4ZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbQpAQCAtMzUsNyArMzUsNiBAQAogI2ltcG9ydCAiRm9udEluZm8uaCIKICNp
bXBvcnQgIkZyYW1lSW5mb0RhdGEuaCIKICNpbXBvcnQgIkluamVjdGVkQnVuZGxlSGl0VGVzdFJl
c3VsdC5oIgotI2ltcG9ydCAiUERGS2l0U29mdExpbmsuaCIKICNpbXBvcnQgIlBERlBsdWdpbi5o
IgogI2ltcG9ydCAiUGFnZUJhbm5lci5oIgogI2ltcG9ydCAiUGx1Z2luVmlldy5oIgpAQCAtOTks
OSArOTgsMTIgQEAKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAjaW1w
b3J0IDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBs
YXliYWNrVGFyZ2V0TW9jay5oPgogI2VuZGlmCiAKKyNpbXBvcnQgIlBERktpdFNvZnRMaW5rLmgi
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTEw
NDIsMTYgKzEwNDQsMTcgQEAgdm9pZCBXZWJQYWdlOjpkaWRVcGRhdGVSZW5kZXJpbmcoKQogfQog
CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCi12b2lkIFdlYlBhZ2U6OnBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQoUGxheWJhY2tUYXJn
ZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXRDb250ZXh0KSBjb25zdAordm9pZCBXZWJQYWdl
OjpwbGF5YmFja1RhcmdldFNlbGVjdGVkKFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50
aWZpZXIgY29udGV4dElkLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmIHRh
cmdldENvbnRleHQpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0YXJnZXRDb250ZXh0LnR5cGUoKSkg
ewotICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OkFWT3V0cHV0Q29udGV4dFR5
cGU6Ci0gICAgICAgIG1fcGFnZS0+c2V0UGxheWJhY2tUYXJnZXQoY29udGV4dElkLCBXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZSh0YXJnZXRDb250ZXh0LmF2T3V0cHV0
Q29udGV4dCgpKSk7CisgICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6
QVZPdXRwdXRDb250ZXh0OgorICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5
cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQ6CisgICAgICAgIG1fcGFnZS0+c2V0UGxheWJh
Y2tUYXJnZXQoY29udGV4dElkLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZShXVEZN
b3ZlKHRhcmdldENvbnRleHQpKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6Ok1vY2tUeXBlOgotICAgICAgICBtX3BhZ2UtPnNldFBsYXliYWNr
VGFyZ2V0KGNvbnRleHRJZCwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldE1vY2s6OmNyZWF0
ZSh0YXJnZXRDb250ZXh0Lm1vY2tEZXZpY2VOYW1lKCksIHRhcmdldENvbnRleHQubW9ja1N0YXRl
KCkpKTsKKyAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrOgor
ICAgICAgICBtX3BhZ2UtPnNldFBsYXliYWNrVGFyZ2V0KGNvbnRleHRJZCwgTWVkaWFQbGF5YmFj
a1RhcmdldE1vY2s6OmNyZWF0ZSh0YXJnZXRDb250ZXh0LmRldmljZU5hbWUoKSwgdGFyZ2V0Q29u
dGV4dC5tb2NrU3RhdGUoKSkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpOb25lOgorICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6OlR5cGU6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBi
cmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGI4OWIyNjZjM2Q3OWFjZDI0MWRmMzZi
NWZjZTJmMWQyZWQ4ZGI3NDguLmYzZDQ3MTZhODkzM2Q5ZjI0MmY4ZWYxMjE1YTg2NjIzNDBmODk3
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yNDMsNyArMjQzLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgLyogaGFz
VmlkZW8gKi8pIGZpbmFsOwogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0
ZURpZENoYW5nZShXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVy
LCBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpIGZpbmFsOwogICAgIHZv
aWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpIGZpbmFsOwot
ICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJp
bmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpIGZpbmFsOwor
ICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJp
bmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKSBmaW5h
bDsKICAgICB2b2lkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCkg
b3ZlcnJpZGU7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IGIzNGU4ZDlkOGVlOTE1
YzYxYTBjNDlmZjQwZTJkNjZmZWQyNGEwNGUuLmM5NjQ4M2ZmOTZlYjdmZDhjYzE5NTI3YzM1NDVk
OWI4M2IxNGE5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KQEAgLTExMjksNyArMTEyOSw3IEBAIHZv
aWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJs
ZWQoYm9vbCBlbmFibGVkKQogICAgIFttX3dlYlZpZXcgX3NldE1vY2tNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyRW5hYmxlZDplbmFibGVkXTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNl
dE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCit2b2lkIFdlYkNocm9tZUNs
aWVudDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcm
IG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCiB7CiAg
ICAgW21fd2ViVmlldyBfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOm5hbWUg
c3RhdGU6c3RhdGVdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaAppbmRleCAwYjkyMzgz
NWU5ZTE1YjZiODA0NWI0OWFmZTI5ZTZhYWIwM2VjZmNhLi44Y2EzMjk0N2E1YjQ2ZTA2N2I4ZThi
YWU0NDYzOTNlYmI5MGU4NmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaApAQCAtNTMs
NyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoV2Vi
Q29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiwgYm9vbCBoYXNWaWRlbyk7CiAgICAgdm9pZCBwbGF5YmFja1RhcmdldFBp
Y2tlckNsaWVudFN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29u
dGV4dElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyk7
CiAgICAgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCk7
Ci0gICAgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0
cmluZyYsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAg
dm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYs
IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpOwogICAgIHZv
aWQgbW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsKIAogICAgIHZv
aWQgaW52YWxpZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tCmluZGV4IDczNDQz
NTY3NWFiODA5YjUwZWM1ZWYzOGFiOWY3N2NhMTQ4YjMxZjEuLjdkYmQ1ODk0NzU0MDVhMTZlYmRk
MGZhOWJjZmE2MmMzMzdlNzQxNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0KQEAg
LTY4LDcgKzY4LDcgQEAgdm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpzZXRNb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbAogICAgIFdlYkNvcmU6OldlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZCgpLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyRW5hYmxlZChlbmFibGVkKTsKIH0KIAotdm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYg
bmFtZSwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQor
dm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSkKIHsKICAgICBXZWJDb3JlOjpXZWJNZWRp
YVNlc3Npb25NYW5hZ2VyOjpzaGFyZWQoKS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
clN0YXRlKG5hbWUsIHN0YXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQppbmRleCA1YjBlZThhM2FjOGMzMzNiNmVlMzQ0Y2RkOWMzYjU1NzY1YzI2ZmYw
Li40OTJhZjYwMWNmN2FjNGRmNDY0NTBiMDhhYWE1YzMyMGVhMmU2ZTc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC05MjMyLDcgKzkyMzIsNyBAQCBi
b29sIExheWVyRmx1c2hDb250cm9sbGVyOjpmbHVzaExheWVycygpCiAgICAgW3NlbGYgX2Rldmlj
ZVBpY2tlcl0tPnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChlbmFibGVk
KTsKIH0KIAotLSAodm9pZClfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOihO
U1N0cmluZyAqKW5hbWUgc3RhdGU6KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpTdGF0ZSlzdGF0ZQorLSAodm9pZClfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJO
YW1lOihOU1N0cmluZyAqKW5hbWUgc3RhdGU6KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpNb2NrU3RhdGUpc3RhdGUKIHsKICAgICBbc2VsZiBfZGV2aWNlUGlja2VyXS0+c2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShuYW1lLCBzdGF0ZSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRl
eCAzYWUwZDNhYTI2MmQ5NTIzMzBjMWM4MmMzMjU1MGQ5YTIxYTUwMTRmLi4wNGI4YzM2OGNjYWY4
NTI0ZDA4NTkzNzJkNjA1OGY0OGYxN2E2ZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKQEAgLTMyNyw3ICszMjcsNyBAQCBXZWJM
YXlvdXRNaWxlc3RvbmVzIGtpdExheW91dE1pbGVzdG9uZXMoT3B0aW9uU2V0PFdlYkNvcmU6Okxh
eW91dE1pbGVzdG9uZT4pOwogLSAodm9pZClfc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyOihXZWJD
b3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyKWNvbnRleHRJZCBsb2Nh
dGlvbjooY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKWxvY2F0aW9uIGhhc1ZpZGVvOihCT09MKWhh
c1ZpZGVvOwogLSAodm9pZClfcGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5n
ZTooV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciljb250ZXh0
SWQgc3RhdGU6KFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncylzdGF0ZTsK
IC0gKHZvaWQpX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZDooYm9vbCll
bmFibGVkOwotLSAodm9pZClfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOihO
U1N0cmluZyAqKW5hbWUgc3RhdGU6KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpTdGF0ZSlzdGF0ZTsKKy0gKHZvaWQpX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
TmFtZTooTlNTdHJpbmcgKiluYW1lIHN0YXRlOihXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6TW9ja1N0YXRlKXN0YXRlOwogLSAodm9pZClfbW9ja01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJEaXNtaXNzUG9wdXA7CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426130</attachid>
            <date>2021-04-15 13:11:17 -0700</date>
            <delta_ts>2021-04-15 16:03:15 -0700</delta_ts>
            <desc>[fast-cq] Patch for landing</desc>
            <filename>bug-224469-20210415131116.patch</filename>
            <type>text/plain</type>
            <size>84841</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWYwNTRjZDJlYzJlNTNk
MGYxNDZkOGI1OTIwNTlkNmRiNDMxNDgzZC4uZDVjOWJkZmIyMGM4MDkzZWEyNjM1Y2RmNzg2OTk5
ZTk0ZmU2NWU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDIxLTA0LTE1ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIFdlYkNvbnRlbnQg
cHJvY2VzcyBzaG91bGQgbm90IGNyZWF0ZSBBVk91dHB1dENvbnRleHQgaW5zdGFuY2VzIHdoZW4g
bWVkaWEgaW4gR1BVIFByb2Nlc3MgaXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBDYXJsc29uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbW9kaWZpZXMgYE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0YCB0byBwcm92aWRlIGludGVyZmFjZXMgdG8gc2VyaWFsaXplL2Rlc2VyaWFs
aXplCisgICAgICAgIGBBVk91dHB1dENvbnRleHRgIGFuZCBtb2RpZmllcyBgTWVkaWFQbGF5YmFj
a1RhcmdldENvY29hYCB0byB1c2UgYE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0YCB0bworICAg
ICAgICBtYW5hZ2UgaXRzIGBBVk91dHB1dENvbnRleHRgIGluc3RlYWQgb2Yga2VlcGluZyBhIHBv
aW50ZXIgdG8gdGhlIGBBVk91dHB1dENvbnRleHRgIG9iamVjdC4KKyAgICAgICAgV2l0aCB0aGVz
ZSBjaGFuZ2VzLCBhIFdlYkNvbnRlbnQgcHJvY2VzcyBjYW4gZm9yd2FyZCBhIHNlcmlhbGl6ZWQg
YEFWT3V0cHV0Q29udGV4dGAgb2JqZWN0CisgICAgICAgIHRvIG90aGVyIHByb2Nlc3NlcyAoZS5n
LiwgdGhlIEdQVSBwcm9jZXNzKSB3aXRob3V0IGRlc2VyaWFsaXppbmcgaXQuIFRoZXJlZm9yZSwg
dGhlIFdlYkNvbnRlbnQKKyAgICAgICAgcHJvY2VzcyBkb2VzIG5vdCBuZWVkIGFjY2VzcyB0byB0
aGUgQ29yZU1lZGlhIHJvdXRpbmcgc2VydmljZS4gU28gd2UgY2FuIHJlbW92ZSB0aGUgZml4IChy
Mjc1NjY5KQorICAgICAgICBmb3IgYnVnIDIyNDMyOC4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4
aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lv
bk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSk6CisgICAgICAgICogTW9kdWxl
cy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaDoKKworICAgICAgICAqIEhlYWRlcnMu
Y21ha2U6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIE1vZGlmeSB0aGUgcHJvamVjdCBmaWxl
IGJlY2F1c2UgYE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0YCBpcyB1c2VkIGluIENvY29hIHBv
cnRzIG9ubHkuCisKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRl
KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSk6CisgICAgICAgICogcGFnZS9QYWdl
Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0OjpoYXNBY3RpdmVSb3V0ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0OjpkZXZpY2VOYW1l
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQ6OnN1cHBvcnRz
UmVtb3RlVmlkZW9QbGF5YmFjayk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJn
ZXRDb2NvYS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpv
dXRwdXRDb250ZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjp+TWVkaWFQbGF5YmFj
a1RhcmdldENvY29hKToKKyAgICAgICAgKFdlYkNvcmU6OnRvTWVkaWFQbGF5YmFja1RhcmdldENv
Y29hKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6c3VwcG9y
dHNSZW1vdGVWaWRlb1BsYXliYWNrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6dGFyZ2V0Q29udGV4dCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6Omhhc0FjdGl2ZVJv
dXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXRDb2NvYTo6ZGV2aWNlTmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIERvbid0IGRpcmVj
dGx5IHVzZSBgQVZPdXRwdXRDb250ZXh0YCBpbiB0aGlzIGNsYXNzLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0V2ly
ZWxlc3NQbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCk6CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6bW9ja1N0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpvdXRwdXRDb250ZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpzZXJpYWxpemVkT3V0
cHV0Q29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6ZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW06IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpkZXZpY2VOYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpoYXNBY3RpdmVSb3V0ZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6c3VwcG9ydHNSZW1vdGVWaWRlb1Bs
YXliYWNrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpzZXJpYWxpemVPdXRwdXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpkZXNlcmlhbGl6ZU91dHB1dENvbnRleHQpOgorCisgICAgICAg
ICogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayk6Cisg
ICAgICAgIChXZWJDb3JlOjp0b01lZGlhUGxheWJhY2tUYXJnZXRNb2NrKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjp0YXJnZXRDb250ZXh0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmg6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6c3RhdGUgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OmV4
dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OmludmFs
aWRhdGVQbGF5YmFja1RhcmdldHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlck1vY2s6OnNldFN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmg6CisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRNb2NrTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlclN0YXRlKToKKwogMjAyMS0wNC0xNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBXVEY6OkZ1bmN0aW9uIGluc3RlYWQg
b2Ygc3RkOjpmdW5jdGlvbiBpbiBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeTo6YXR0cmlidXRl
QW5pbWF0b3JDcmVhdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY0ZmM3MjdkMjNhNmIwZjMyYjAxZjUyZTJmNGVk
Mjg5ZDlmNzQ5MjIuLjAyNDYzMjY3NWNmYmM2Y2U1NzdkYTk4MGRkMTkxZDVmMGQzYTRjN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjEtMDQtMTUgIFBlbmcgTGl1ICA8cGVuZy5saXU2
QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gV2ViQ29udGVudCBwcm9jZXNzIHNob3VsZCBu
b3QgY3JlYXRlIEFWT3V0cHV0Q29udGV4dCBpbnN0YW5jZXMgd2hlbiBtZWRpYSBpbiBHUFUgUHJv
Y2VzcyBpcyBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjQ0NjkKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRXaXJlbGVzc1BsYXliYWNr
VGFyZ2V0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuaDoKKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyUHJveHk6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UpOgorCisgICAgICAgICogU2hhcmVk
L0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxh
dGZvcm1EYXRhKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL21h
Yy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjplbmNvZGVQbGF0Zm9ybURh
dGEpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKTogRGVsZXRlZC4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0Ojpt
ZWRpYVJlbGF0ZWRJT0tpdENsYXNzZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c2V0UGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViS2l0Ojp0ZW1wb3Jh
cnlNYWNoU2VydmljZXMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZl
VmlkZW9Sb3V0ZURpZENoYW5nZSk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVu
dDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbGF5YmFja1Rh
cmdldFNlbGVjdGVkIGNvbnN0KToKKwogMjAyMS0wNC0xNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1NPVVBdIEJyaW5nIGJhY2sgdGhlIGNh
bGwgdG8gUmVzb3VyY2VSZXNwb25zZTo6c2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyBh
ZnRlciByMjc2MDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNmYxZjAyOTQwMWMw
YzkyNjRlNGYwNmExOTMxODY0ZWRhNWVmYTI3MC4uMzgyMzc4ZDcxOWEzZTYxZDNiMTJmNjNkOTk0
NWI0YzcyOTRiNjg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDIxLTA0LTE1ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0dQVVBdIFdlYkNvbnRlbnQgcHJvY2VzcyBzaG91bGQgbm90IGNyZWF0ZSBBVk91dHB1dENv
bnRleHQgaW5zdGFuY2VzIHdoZW4gbWVkaWEgaW4gR1BVIFByb2Nlc3MgaXMgZW5hYmxlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDY5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclN0YXRlKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXIuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXIubW06CisgICAgICAgIChXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpzZXRNb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZp
ZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyTmFtZTpzdGF0ZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgor
CiAyMDIxLTA0LTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIE5QQVBJIHBsdWdpbnMgaW4gV2ViVmlldwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKaW5kZXggZTExNTA1Y2RkMGY4ZTQzYjI4NzNkYjdhMWQ1ODFmOGRmOTg0
ZmViMy4uYzA0ZjgwNGVkOTM3YzY3MGFkZWY3YjNiNjg5ZDg5NWRmYTdlN2IwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCkBAIC0xMjY5LDcgKzEyNjksNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5cGVDYWNoZS5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldC5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldENsaWVudC5oCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllckVudW1zLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
LmNwcAppbmRleCA2YzZhYjBlN2E2MmVjNGRhNDVlZDNkYmM5NDE0NTUxNzVjZDQ0ZDVhLi5kNWI1
OTVhNGFjNDlmZjBlZmZlNjJiNDUyZWMzNDJiN2QzODMwNDg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3Bw
CkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRNb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBlbmFibGUKICAgICBtX21vY2tQ
aWNrZXJFbmFibGVkID0gZW5hYmxlZDsKIH0KIAotdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQordm9pZCBXZWJNZWRp
YVNlc3Npb25NYW5hZ2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNv
bnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBz
dGF0ZSkKIHsKICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwog
ICAgIG1vY2tQaWNrZXIoKS5zZXRTdGF0ZShuYW1lLCBzdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaAppbmRl
eCBkN2YyOGNjYjc1ZTVkNzU1ZGFmNDMzNGVmNjU2Y2IxNDE5MGZhYjU0Li4xYmExMjg0ZjIzMzNj
Nzg0NmFiODBkNGUxMWRiMmJmNGYwMjA2NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgKQEAgLTUxLDcgKzUx
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyJiBzaGFyZWQoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCk7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGFk
ZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQm
LCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IGVjZTQ2Y2ZhNDExOTgzNDUxNzhhNWQyN2Y3NzI3ZGI5MDczNThjYzkuLjFh
YjdmMjA0ODU0ZjgxZTE0Nzk1MDAzNmMzYzVmYzVlNjAzYWE0MjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dApAQCAtMzY5LDYgKzM2OSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlUG9vbENvY29hLm1tCiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKK3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tCiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGEzODA1MzUzNjc4
NmYwMDBhYzgzOWEzYjgwNjljNzE0ZTQyMjZjMTUuLjU3MjViMjdjYzAwMDgwM2Q4MGFjZDU3ODhl
Y2QzOGI0MDA3MGEzODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTY5ODEsNiArNjk4MSw3IEBACiAJCTFEMDAyNkEzMjM3NEQ2
MjQwMENBNkNERiAvKiBKU1BpY3R1cmVJblBpY3R1cmVXaW5kb3cuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUQwMDI2QTgyMzc0RjlEOTAwQ0E2Q0RGIC8qIEpT
RW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxRDAwMjZBOTIzNzRGOUQ5MDBDQTZDREYgLyogSlNFbnRlclBpY3R1cmVJblBp
Y3R1cmVFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Vu
dGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUQwMDhBQTUyNjIxMDhDMDAwRUUzQURFIC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEMkM4MkI2MjM2QTNGNkEwMDU1RDZDNSAv
KiBQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQaWN0dXJlSW5QaWN0
dXJlU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDQ3NjU4RDI1Q0NB
Nzc4MDA3QUYzMTIgLyogSW1hZ2VEZWNvZGVySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bWFnZURlY29kZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFE
QUIzMTEzMjUxRDcyNUMwMEZDOTQ4NSAvKiBWaWRlb0xheWVyTWFuYWdlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBWaWRlb0xheWVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjY5NzEsNyArMjY5NzIsNiBAQAogCQkJCUNEREUwMkU5MThCM0RGQzcwMENGN0ZGMSAvKiBMZWdh
Y3lDRE1TZXNzaW9uLmggKi8sCiAJCQkJMDdFM0RGRDAxQTlFNzg2NTAwNzY0Q0E4IC8qIE1lZGlh
UGxheWJhY2tUYXJnZXQuaCAqLywKIAkJCQkwNzkyMTY1MzFBQTU2MEFBMDBBM0MwNDkgLyogTWVk
aWFQbGF5YmFja1RhcmdldENsaWVudC5oICovLAotCQkJCTA3Rjg3NjgzMUFENEE5NDUwMDkwNTg0
OSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oICovLAogCQkJCTA3OEU0M0Q3MUFCQjZD
N0UwMDFDMkZBNiAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmNwcCAqLywKIAkJCQkwNzhF
NDNEODFBQkI2QzdFMDAxQzJGQTYgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oICovLAog
CQkJCUU0QjQxRTBDMENCRjkwQkQwMEFGMkVDRSAvKiBNZWRpYVBsYXllci5jcHAgKi8sCkBAIC0y
NzE4Nyw2ICsyNzE4Nyw4IEBACiAJCQkJQUQ5RkY2RTAxOTA4MzkxRDAwM0I2MUUwIC8qIElPU3Vy
ZmFjZVBvb2xDb2NvYS5tbSAqLywKIAkJCQlDREM0OEFDODIxNDlDRjJBMDAyNEZENTkgLyogTWVk
aWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcCAqLywKIAkJCQlDREM0OEFDNzIx
NDlDRjJBMDAyNEZENTkgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmgg
Ki8sCisJCQkJMDdGODc2ODMxQUQ0QTk0NTAwOTA1ODQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0LmggKi8sCisJCQkJMUQwMDhBQTUyNjIxMDhDMDAwRUUzQURFIC8qIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0Lm1tICovLAogCQkJCTMxNjQ3RkE4MjUxNjE2QkQwMDEwRjhGQiAvKiBP
cGVuR0xTb2Z0TGlua0NvY29hLmggKi8sCiAJCQkJMzE2NDdGQTkyNTE2MTZCRDAwMTBGOEZCIC8q
IE9wZW5HTFNvZnRMaW5rQ29jb2EubW0gKi8sCiAJCQkJN0I2NEMwQjQyNTRDM0IxNjAwMDZCNEFG
IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0gKi8sCkBAIC0zMjEy
MCw2ICszMjEyMiw3IEBACiAJCQkJNDE2MkE0NTExMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUEzRDU4RjEwMUMxNTJE
MDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RDA2REZBNjEzNEE0REVGMDA2RjVEN0QgLyogRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFNEYzOEQxQjI2MjZGMTNCMDA3QjEwNjQgLyogRGVmYXVsdFJl
c291cmNlTG9hZFByaW9yaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDgzRDM2MjIxMTIyQTIx
MDA3NkUxMUMgLyogRGVmZXJyYWJsZVRhc2suaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDJD
MTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxheURTUEtlcm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkQzMTYwMkUxMkIwMjY3NjAwQzFBMzU5IC8qIERlbGF5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zNDYxOSw3ICszNDYyMiw2IEBACiAJCQkJQjU5NUZGNDcxODI0Q0VFMzAwRkY1MUNEIC8qIFJl
bmRlckl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VBNDg3QTA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTgwQ0ZGMEYxMkRFOUIw
MDUxRDY4OSAvKiBSZW5kZXJMYXllckJhY2tpbmcuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0RjM4
RDFCMjYyNkYxM0IwMDdCMTA2NCAvKiBEZWZhdWx0UmVzb3VyY2VMb2FkUHJpb3JpdHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGNTgwQ0ZEMEYxMkRFOUIwMDUxRDY4OSAvKiBSZW5kZXJMYXllckNv
bXBvc2l0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTNDMjQ0RkVBQTM3NUFDNjMzRjg4QkU2RiAv
KiBSZW5kZXJMYXllck1vZGVsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjUzRkI4NDIx
M0I3QTY0MDBDNDBEMzQgLyogUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCBkMGJjMzU1MGQ0ZDA4MzVjMzMz
ZTFmNDgzZjVmMjVhZGQwNDgzM2NlLi5kZjRjOWMxZjg0ZWNhMjBlN2IxZmJkMzdjMTQzOGM1ZTBh
YmIwZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTUxMyw3ICs1MTMsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihQbGF5
YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBjb25zdCBJbnRQb2ludCYsIGJvb2wg
Lyppc1ZpZGVvKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tlckNs
aWVudFN0YXRlRGlkQ2hhbmdlKFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIs
IE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNl
dE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sKSAgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3Ry
aW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcm
LCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgbW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKSB7IH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBiZDllNTM4MmJjOWRjY2JhZmZlYzZiMzk0MjIy
NGM4ZDVlYTY2YjlhLi5jZGJmZmEwYzZhMDUyYjBlMWZhMDFjZDFmZDkzMWRiY2JmZGRmNTY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTI5NTIsNyArMjk1Miw3IEBAIHZvaWQgUGFnZTo6c2V0TW9j
a01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBjaHJv
bWUoKS5jbGllbnQoKS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoZW5h
YmxlZCk7CiB9CiAKLXZvaWQgUGFnZTo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJT
dGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0
ZSBzdGF0ZSkKK3ZvaWQgUGFnZTo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0
ZShjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3Rh
dGUgc3RhdGUpCiB7CiAgICAgY2hyb21lKCkuY2xpZW50KCkuc2V0TW9ja01lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJTdGF0ZShuYW1lLCBzdGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGQ0ODI4
MTY5MDU1M2UwNDZmNDcwMzQ3ZWQ2YmI0NTIxNWUyMDY0OWQuLjc3MDFiMDhjMWUzYzliOTRiMGIw
Y2RiMDY2MTkwOWMyMjIyMmY0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC03MzEsNyArNzMxLDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKFBsYXliYWNrVGFyZ2V0
Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGNvbnN0IEludFBvaW50JiwgYm9vbCwgUm91dGVTaGFy
aW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0UGlja2Vy
Q2xpZW50U3RhdGVEaWRDaGFuZ2UoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmll
ciwgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUo
Y29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUo
Y29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21p
c3NQb3B1cCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQbGF5YmFja1RhcmdldChQ
bGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBSZWY8TWVkaWFQbGF5YmFja1Rh
cmdldD4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXliYWNrVGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXliYWNrVGFyZ2V0LmgKaW5kZXggNmFkZmE5MzdmNzNmNTczZDk1YzlmY2Q3NGQ2ZDIx
Yjg3M2EyZjc4OC4uNjEyODA4NTAxZjA0ZjJmYTVkNGZiZGQ4MjZhNWVhMDk2ZjJhM2M3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1Rh
cmdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJh
Y2tUYXJnZXQuaApAQCAtMjcsMjQgKzI3LDIzIEBACiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQogCisjaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ7
Ci0KIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVBs
YXliYWNrVGFyZ2V0PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFQbGF5YmFja1Rhcmdl
dCgpID0gZGVmYXVsdDsKIAotICAgIGVudW0gVGFyZ2V0VHlwZSB7IEFWRm91bmRhdGlvbiwgTW9j
ayB9OworICAgIGVudW0gY2xhc3MgVGFyZ2V0VHlwZSA6IHVpbnQ4X3QgeyBBVkZvdW5kYXRpb24s
IE1vY2sgfTsKICAgICB2aXJ0dWFsIFRhcmdldFR5cGUgdGFyZ2V0VHlwZSgpIGNvbnN0ID0gMDsK
LQogICAgIHZpcnR1YWwgY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldENv
bnRleHQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGhhc0FjdGl2ZVJvdXRlKCkgY29u
c3QgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIGRldmljZU5hbWUoKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCBib29sIHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygpIGNvbnN0ID0gMDsKKwor
ICAgIGJvb2wgaGFzQWN0aXZlUm91dGUoKSBjb25zdCB7IHJldHVybiB0YXJnZXRDb250ZXh0KCku
aGFzQWN0aXZlUm91dGUoKTsgfQorICAgIFN0cmluZyBkZXZpY2VOYW1lKCkgY29uc3QgeyByZXR1
cm4gdGFyZ2V0Q29udGV4dCgpLmRldmljZU5hbWUoKTsgfQorICAgIGJvb2wgc3VwcG9ydHNSZW1v
dGVWaWRlb1BsYXliYWNrKCkgeyByZXR1cm4gdGFyZ2V0Q29udGV4dCgpLnN1cHBvcnRzUmVtb3Rl
VmlkZW9QbGF5YmFjaygpOyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWNlNGEzZWMzMDFlOWQ5ZTk3NDRkY2JmMjliN2E3
YTEwYmY0YjM0Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dF9oCi0jZGVmaW5lIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0X2gKLQotI2lmIEVO
QUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KLQotT0JKQ19DTEFTUyBBVk91dHB1dENvbnRleHQ7Ci0KLSNpZiBQTEFURk9STShD
T0NPQSkKLU9CSkNfQ0xBU1MgTlNLZXllZEFyY2hpdmVyOwotT0JKQ19DTEFTUyBOU0tleWVkVW5h
cmNoaXZlcjsKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0IHsKLXB1YmxpYzoKLSAgICBlbnVtIFR5cGUgOiBpbnQzMl90IHsK
LSAgICAgICAgTm9uZSwKLSAgICAgICAgQVZPdXRwdXRDb250ZXh0VHlwZSwKLSAgICAgICAgTW9j
a1R5cGUsCi0gICAgfTsKLQotICAgIGVudW0gQ29udGV4dFN0YXRlIHsKLSAgICAgICAgVW5rbm93
biA9IDAsCi0gICAgICAgIE91dHB1dERldmljZVVuYXZhaWxhYmxlID0gMSwKLSAgICAgICAgT3V0
cHV0RGV2aWNlQXZhaWxhYmxlID0gMiwKLSAgICB9OwotICAgIHR5cGVkZWYgdW5zaWduZWQgU3Rh
dGU7Ci0KLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCgpCi0gICAgICAgIDogbV90eXBl
KE5vbmUpCi0gICAgewotICAgIH0KLQotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KEFW
T3V0cHV0Q29udGV4dCAqb3V0cHV0Q29udGV4dCkKLSAgICAgICAgOiBtX3R5cGUoQVZPdXRwdXRD
b250ZXh0VHlwZSkKLSAgICAgICAgLCBtX291dHB1dENvbnRleHQob3V0cHV0Q29udGV4dCkKLSAg
ICB7Ci0gICAgfQotCi0gICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQoY29uc3QgU3RyaW5n
JiBuYW1lLCBTdGF0ZSBzdGF0ZSkKLSAgICAgICAgOiBtX3R5cGUoTW9ja1R5cGUpCi0gICAgICAg
ICwgbV9uYW1lKG5hbWUpCi0gICAgICAgICwgbV9zdGF0ZShzdGF0ZSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0KLSAgICBjb25zdCBT
dHJpbmcmIG1vY2tEZXZpY2VOYW1lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gTW9ja1R5cGUpOwotICAgICAgICByZXR1cm4gbV9uYW1lOwotICAgIH0KLQotICAgIFN0
YXRlIG1vY2tTdGF0ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IE1v
Y2tUeXBlKTsKLSAgICAgICAgcmV0dXJuIG1fc3RhdGU7Ci0gICAgfQotCi0gICAgQVZPdXRwdXRD
b250ZXh0ICphdk91dHB1dENvbnRleHQoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBBVk91dHB1dENvbnRleHRUeXBlKTsKLSAgICAgICAgcmV0dXJuIG1fb3V0cHV0Q29u
dGV4dDsKLSAgICB9Ci0KLSAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBj
b25zdCB7IHJldHVybiBtX3R5cGUgPT0gQVZPdXRwdXRDb250ZXh0VHlwZTsgfQotICAgIAotcHJp
dmF0ZToKLSAgICBUeXBlIG1fdHlwZSB7IE5vbmUgfTsKLSAgICBBVk91dHB1dENvbnRleHQgKm1f
b3V0cHV0Q29udGV4dCB7IG51bGxwdHIgfTsKLSAgICBTdHJpbmcgbV9uYW1lOwotICAgIFN0YXRl
IG1fc3RhdGUgeyBVbmtub3duIH07Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKQotCi0jZW5kaWYgLy8gTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmgKaW5kZXgg
NmE4ZTE5NDc2YTM0N2Q4ZTc0ODQxZmY2OWZiZDQ4YjA5MjIzYzg4OS4uNjhlMzUyY2EwOGM5OGJi
ZjFjOTlkZmEyNWE0OTAzNWRhYmYzNGI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBs
YXliYWNrVGFyZ2V0Q29jb2EuaApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpCiAKICNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0LmgiCi0j
aW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM2LDYgKzM1LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldENvY29hIDogcHVibGljIE1l
ZGlhUGxheWJhY2tUYXJnZXQgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gY3JlYXRlKEFWT3V0cHV0Q29udGV4dCAqKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IGNyZWF0ZShNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYm
ICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNU
KQogICAgIHN0YXRpYyBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gY3JlYXRlKCk7CkBAIC00Mywy
MSArNDMsMTQgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+TWVkaWFQbGF5YmFja1RhcmdldENv
Y29hKCk7CiAKLSAgICBUYXJnZXRUeXBlIHRhcmdldFR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBBVkZvdW5kYXRpb247IH0KLQotICAgIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
JiB0YXJnZXRDb250ZXh0KCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBoYXNBY3RpdmVSb3V0ZSgp
IGNvbnN0IGZpbmFsOwotICAgIFN0cmluZyBkZXZpY2VOYW1lKCkgY29uc3QgZmluYWw7Ci0gICAg
Ym9vbCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKSBjb25zdCBmaW5hbDsKLQotICAgIEFW
T3V0cHV0Q29udGV4dCAqb3V0cHV0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fb3V0cHV0Q29u
dGV4dC5nZXQoKTsgfQorICAgIFRhcmdldFR5cGUgdGFyZ2V0VHlwZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIFRhcmdldFR5cGU6OkFWRm91bmRhdGlvbjsgfQorICAgIGNvbnN0IE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0JiB0YXJnZXRDb250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9j
b250ZXh0OyB9CiAKIHByb3RlY3RlZDoKLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoQVZP
dXRwdXRDb250ZXh0ICopOworICAgIGV4cGxpY2l0IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShB
Vk91dHB1dENvbnRleHQgKik7CisgICAgZXhwbGljaXQgTWVkaWFQbGF5YmFja1RhcmdldENvY29h
KE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiYpOwogCi0gICAgUmV0YWluUHRyPEFWT3V0cHV0
Q29udGV4dD4gbV9vdXRwdXRDb250ZXh0OwotICAgIG11dGFibGUgTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQgbV9jb250ZXh0OwotICAgIFN0cmluZyBtX2RldmljZU5hbWU7CisgICAgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQgbV9jb250ZXh0OwogfTsKIAogTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hKiB0b01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShNZWRpYVBsYXliYWNrVGFyZ2V0Kik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5tbQppbmRleCBk
YWM4Y2M0ODE1NmMyYzdlNzRlYWFjN2I0ZGRlNGJjMjE3NzUxOWFhLi42ZjVjMjdlMzk0MGUzYTA4
N2JmMjFiOGY0MDA0MWI0NzUwZGRkYTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBs
YXliYWNrVGFyZ2V0Q29jb2EubW0KQEAgLTM0LDkyICszNCwzNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29j
b2E6OmNyZWF0ZShBVk91dHB1dENvbnRleHQgKmNvbnRleHQpCitSZWY8TWVkaWFQbGF5YmFja1Rh
cmdldD4gTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUoQVZPdXRwdXRDb250ZXh0ICpv
dXRwdXRDb250ZXh0KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhUGxheWJhY2tU
YXJnZXRDb2NvYShjb250ZXh0KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFQbGF5
YmFja1RhcmdldENvY29hKG91dHB1dENvbnRleHQpKTsKIH0KIAotTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoQVZPdXRwdXRDb250ZXh0ICpjb250ZXh0
KQotICAgIDogTWVkaWFQbGF5YmFja1RhcmdldCgpCi0gICAgLCBtX291dHB1dENvbnRleHQoY29u
dGV4dCkKK1JlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6
OmNyZWF0ZShNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmIGNvbnRleHQpCiB7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFQbGF5YmFja1RhcmdldENvY29hKFdURk1vdmUoY29udGV4
dCkpKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NfRkFN
SUxZX1NJTVVMQVRPUikgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotUmVmPE1lZGlhUGxheWJh
Y2tUYXJnZXQ+IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKCkKK01lZGlhUGxheWJh
Y2tUYXJnZXRDb2NvYTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hKEFWT3V0cHV0Q29udGV4dCAq
b3V0cHV0Q29udGV4dCkKKyAgICA6IG1fY29udGV4dChvdXRwdXRDb250ZXh0KQogewotICAgIGF1
dG8gKnJvdXRpbmdDb250ZXh0VUlEID0gW1tQQUw6OmdldEFWQXVkaW9TZXNzaW9uQ2xhc3MoKSBz
aGFyZWRJbnN0YW5jZV0gcm91dGluZ0NvbnRleHRVSURdOwotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShbUEFMOjpnZXRBVk91dHB1dENvbnRleHRDbGFz
cygpIG91dHB1dENvbnRleHRGb3JJRDpyb3V0aW5nQ29udGV4dFVJRF0pKTsKIH0KLSNlbmRpZgog
Ci1ib29sIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6c3VwcG9ydHNSZW1vdGVWaWRlb1BsYXli
YWNrKCkgY29uc3QKK01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6TWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hKE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiYgY29udGV4dCkKKyAgICA6IG1fY29u
dGV4dChXVEZNb3ZlKGNvbnRleHQpKQogewotICAgIGlmICghbV9vdXRwdXRDb250ZXh0KQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIVttX291dHB1dENvbnRleHQgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNlcyldIHx8ICFb
bV9vdXRwdXRDb250ZXh0IHN1cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2VzXSB8fCAhW21fb3V0
cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dERldmljZXMpXSkg
ewotICAgICAgICBpZiAoYXV0byAqb3V0cHV0RGV2aWNlID0gW21fb3V0cHV0Q29udGV4dCBvdXRw
dXREZXZpY2VdKSB7Ci0gICAgICAgICAgICBpZiAob3V0cHV0RGV2aWNlLmRldmljZUZlYXR1cmVz
ICYgQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8pCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgZm9y
IChBVk91dHB1dERldmljZSAqb3V0cHV0RGV2aWNlIGluIFttX291dHB1dENvbnRleHQgb3V0cHV0
RGV2aWNlc10pIHsKLSAgICAgICAgaWYgKG91dHB1dERldmljZS5kZXZpY2VGZWF0dXJlcyAmIEFW
T3V0cHV0RGV2aWNlRmVhdHVyZVZpZGVvKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotCi0gICAgcmV0dXJuIGZhbHNlOwogfQogCi1NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6On5N
ZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoKQotewotfQotCi1jb25zdCBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dCYgTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjp0YXJnZXRDb250ZXh0KCkgY29u
c3QKLXsKLSAgICBtX2NvbnRleHQgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChtX291dHB1
dENvbnRleHQuZ2V0KCkpOwotICAgIHJldHVybiBtX2NvbnRleHQ7Ci19Ci0KLWJvb2wgTWVkaWFQ
bGF5YmFja1RhcmdldENvY29hOjpoYXNBY3RpdmVSb3V0ZSgpIGNvbnN0CisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKSAmJiAhUExBVEZP
Uk0oTUFDQ0FUQUxZU1QpCitSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gTWVkaWFQbGF5YmFja1Rh
cmdldENvY29hOjpjcmVhdGUoKQogewotICAgIGlmICghbV9vdXRwdXRDb250ZXh0KQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHN1cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2VzKV0gJiYgW21fb3V0
cHV0Q29udGV4dCBzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNlc10gJiYgW21fb3V0cHV0Q29u
dGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dERldmljZXMpXSkgewotICAg
ICAgICBmb3IgKEFWT3V0cHV0RGV2aWNlICpvdXRwdXREZXZpY2UgaW4gW21fb3V0cHV0Q29udGV4
dCBvdXRwdXREZXZpY2VzXSkgewotICAgICAgICAgICAgaWYgKG91dHB1dERldmljZS5kZXZpY2VG
ZWF0dXJlcyAmIChBVk91dHB1dERldmljZUZlYXR1cmVWaWRlbyB8IEFWT3V0cHV0RGV2aWNlRmVh
dHVyZUF1ZGlvKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoW21fb3V0cHV0Q29udGV4dCBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dERldmljZSldKSB7Ci0gICAgICAgIGlm
IChhdXRvICpvdXRwdXREZXZpY2UgPSBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmljZV0pCi0g
ICAgICAgICAgICByZXR1cm4gb3V0cHV0RGV2aWNlLmRldmljZUZlYXR1cmVzICYgKEFWT3V0cHV0
RGV2aWNlRmVhdHVyZVZpZGVvIHwgQVZPdXRwdXREZXZpY2VGZWF0dXJlQXVkaW8pOwotICAgIH0K
LQotICAgIHJldHVybiBtX291dHB1dENvbnRleHQuZ2V0KCkuZGV2aWNlTmFtZTsKKyAgICBhdXRv
ICpyb3V0aW5nQ29udGV4dFVJRCA9IFtbUEFMOjpnZXRBVkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hh
cmVkSW5zdGFuY2VdIHJvdXRpbmdDb250ZXh0VUlEXTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoW1BBTDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3Mo
KSBvdXRwdXRDb250ZXh0Rm9ySUQ6cm91dGluZ0NvbnRleHRVSURdKSk7CiB9CisjZW5kaWYKIAot
U3RyaW5nIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6ZGV2aWNlTmFtZSgpIGNvbnN0CitNZWRp
YVBsYXliYWNrVGFyZ2V0Q29jb2E6On5NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoKQogewotICAg
IGlmICghbV9vdXRwdXRDb250ZXh0KQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQot
ICAgIGlmICghW21fb3V0cHV0Q29udGV4dCBzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNlc10p
Ci0gICAgICAgIHJldHVybiBbbV9vdXRwdXRDb250ZXh0IGRldmljZU5hbWVdOwotCi0gICAgYXV0
byBvdXRwdXREZXZpY2VOYW1lcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dF0pOwotICAgIGZvciAoQVZPdXRwdXREZXZpY2UgKm91dHB1dERldmljZSBpbiBbbV9vdXRwdXRD
b250ZXh0IG91dHB1dERldmljZXNdKQotICAgICAgICBbb3V0cHV0RGV2aWNlTmFtZXMgYWRkT2Jq
ZWN0OltvdXRwdXREZXZpY2UgZGV2aWNlTmFtZV1dOwotCi0gICAgcmV0dXJuIFtvdXRwdXREZXZp
Y2VOYW1lcyBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6QCIgKyAiXTsKIH0KIAogTWVkaWFQbGF5
YmFja1RhcmdldENvY29hKiB0b01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShNZWRpYVBsYXliYWNr
VGFyZ2V0KiByZXApCkBAIC0xMjksNyArNzMsNyBAQCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2Eq
IHRvTWVkaWFQbGF5YmFja1RhcmdldENvY29hKE1lZGlhUGxheWJhY2tUYXJnZXQqIHJlcCkKIAog
Y29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENvY29hKiB0b01lZGlhUGxheWJhY2tUYXJnZXRDb2Nv
YShjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0KiByZXApCiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04ocmVwLT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1Rhcmdl
dDo6QVZGb3VuZGF0aW9uKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKHJlcC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6OlRhcmdldFR5
cGU6OkFWRm91bmRhdGlvbik7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb2NvYSo+KHJlcCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4
IDIwYjI0MTJmMTEzNjYzYzFmMzg2MmYyN2I2NjI0MDBmNmNkYjA3MmIuLjBhYzA5M2U1MGNhMjk4
MGM1OWEzMjdhMmMyZTg4MWVjZGZiMWJiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAt
MjgyNCw3ICsyODI0LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojppc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKCkgY29uc3QKIAogI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGlmIChtX3BsYXliYWNrVGFyZ2V0KSB7Ci0gICAgICAgIGlmICht
X3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldDo6QVZG
b3VuZGF0aW9uKQorICAgICAgICBpZiAobV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09
IE1lZGlhUGxheWJhY2tUYXJnZXQ6OlRhcmdldFR5cGU6OkFWRm91bmRhdGlvbikKICAgICAgICAg
ICAgIHdpcmVsZXNzVGFyZ2V0ID0gbV9hdlBsYXllciAmJiBtX2F2UGxheWVyLmdldCgpLmV4dGVy
bmFsUGxheWJhY2tBY3RpdmU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHdpcmVsZXNzVGFy
Z2V0ID0gbV9zaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCAmJiBtX3BsYXliYWNrVGFyZ2V0LT5o
YXNBY3RpdmVSb3V0ZSgpOwpAQCAtMjk2OCw3ICsyOTY4LDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRp
YVBsYXkKIHsKICAgICBtX3BsYXliYWNrVGFyZ2V0ID0gV1RGTW92ZSh0YXJnZXQpOwogCi0gICAg
bV9vdXRwdXRDb250ZXh0ID0gbV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09IE1lZGlh
UGxheWJhY2tUYXJnZXQ6OkFWRm91bmRhdGlvbiA/IHRvTWVkaWFQbGF5YmFja1RhcmdldENvY29h
KG1fcGxheWJhY2tUYXJnZXQuZ2V0KCkpLT5vdXRwdXRDb250ZXh0KCkgOiBudWxscHRyOworICAg
IG1fb3V0cHV0Q29udGV4dCA9IG1fcGxheWJhY2tUYXJnZXQtPnRhcmdldFR5cGUoKSA9PSBNZWRp
YVBsYXliYWNrVGFyZ2V0OjpUYXJnZXRUeXBlOjpBVkZvdW5kYXRpb24gPyB0b01lZGlhUGxheWJh
Y2tUYXJnZXRDb2NvYShtX3BsYXliYWNrVGFyZ2V0LmdldCgpKS0+dGFyZ2V0Q29udGV4dCgpLm91
dHB1dENvbnRleHQoKSA6IG51bGxwdHI7CiAKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsK
IApAQCAtMjk4OCw3ICsyOTg4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sIHNob3UKIAogICAgIElO
Rk9fTE9HKExPR0lERU5USUZJRVIsIHNob3VsZFBsYXkpOwogCi0gICAgaWYgKG1fcGxheWJhY2tU
YXJnZXQtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpBVkZvdW5kYXRpb24p
IHsKKyAgICBpZiAobV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJh
Y2tUYXJnZXQ6OlRhcmdldFR5cGU6OkFWRm91bmRhdGlvbikgewogICAgICAgICBBVk91dHB1dENv
bnRleHQgKm5ld0NvbnRleHQgPSBzaG91bGRQbGF5ID8gbV9vdXRwdXRDb250ZXh0LmdldCgpIDog
bmlsOwogCiAgICAgICAgIGlmICghbV9hdlBsYXllcikKQEAgLTMwMDUsNyArMzAwNSw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0U2hvdWxkUGxheVRvUGxh
eWJhY2tUYXJnZXQoYm9vbCBzaG91CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NF
UlQobV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6
Ok1vY2spOworICAgIEFTU0VSVChtX3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVk
aWFQbGF5YmFja1RhcmdldDo6VGFyZ2V0VHlwZTo6TW9jayk7CiAKICAgICBzZXREZWxheUNhbGxi
YWNrcyh0cnVlKTsKICAgICBhdXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDZhNTBiMDA2ZWVh
MGE4YjIzNjI5NjE3NWZiZGY1YTg0Yzk3ZWMwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
LmgKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKK09CSkNfQ0xBU1MgQVZP
dXRwdXRDb250ZXh0OworT0JKQ19DTEFTUyBOU0RhdGE7CisjZW5kaWYKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCB7CitwdWJsaWM6Cisg
ICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7CisgICAgICAgIE5vbmUsCisgICAgICAgIEFW
T3V0cHV0Q29udGV4dCwKKyAgICAgICAgU2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCwKKyAgICAg
ICAgTW9jaywKKyAgICB9OworCisgICAgZW51bSBjbGFzcyBNb2NrU3RhdGUgOiB1aW50OF90IHsK
KyAgICAgICAgVW5rbm93biA9IDAsCisgICAgICAgIE91dHB1dERldmljZVVuYXZhaWxhYmxlID0g
MSwKKyAgICAgICAgT3V0cHV0RGV2aWNlQXZhaWxhYmxlID0gMiwKKyAgICB9OworCisgICAgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQoUmV0YWluUHRyPEFWT3V0cHV0Q29u
dGV4dD4mJik7CisKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChSZXRhaW5QdHI8TlNE
YXRhPiYmIHNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0LCBib29sIGhhc0FjdGl2ZVJvdXRlKQorICAg
ICAgICA6IG1fdHlwZShUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0KQorICAgICAgICAs
IG1fc2VyaWFsaXplZE91dHB1dENvbnRleHQoV1RGTW92ZShzZXJpYWxpemVkT3V0cHV0Q29udGV4
dCkpCisgICAgICAgICwgbV9jYWNoZWRIYXNBY3RpdmVSb3V0ZShoYXNBY3RpdmVSb3V0ZSkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX3NlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KTsKKyAgICB9CisK
KyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChjb25zdCBTdHJpbmcmIG1vY2tEZXZpY2VO
YW1lLCBNb2NrU3RhdGUgc3RhdGUpCisgICAgICAgIDogbV90eXBlKFR5cGU6Ok1vY2spCisgICAg
ICAgICwgbV9tb2NrRGV2aWNlTmFtZShtb2NrRGV2aWNlTmFtZSkKKyAgICAgICAgLCBtX21vY2tT
dGF0ZShzdGF0ZSkKKyAgICB7CisgICAgfQorCisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGRldmljZU5hbWUoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0FjdGl2ZVJvdXRlKCkgY29uc3Q7CisgICAg
Ym9vbCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKSBjb25zdDsKKworICAgIE1vY2tTdGF0
ZSBtb2NrU3RhdGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBl
OjpNb2NrKTsKKyAgICAgICAgcmV0dXJuIG1fbW9ja1N0YXRlOworICAgIH0KKworICAgIFJldGFp
blB0cjxBVk91dHB1dENvbnRleHQ+IG91dHB1dENvbnRleHQoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpBVk91dHB1dENvbnRleHQpOworICAgICAgICByZXR1
cm4gbV9vdXRwdXRDb250ZXh0OworICAgIH0KKworICAgIFJldGFpblB0cjxOU0RhdGE+IHNlcmlh
bGl6ZWRPdXRwdXRDb250ZXh0KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gVHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCk7CisgICAgICAgIHJldHVybiBtX3Nl
cmlhbGl6ZWRPdXRwdXRDb250ZXh0OworICAgIH0KKworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
c2VyaWFsaXplT3V0cHV0Q29udGV4dCgpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZGVzZXJp
YWxpemVPdXRwdXRDb250ZXh0KCk7CisKKyAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9y
bURhdGEoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6QVZPdXRwdXRDb250ZXh0IHx8
IG1fdHlwZSA9PSBUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0OyB9CisKK3ByaXZhdGU6
CisgICAgVHlwZSBtX3R5cGUgeyBUeXBlOjpOb25lIH07CisgICAgUmV0YWluUHRyPEFWT3V0cHV0
Q29udGV4dD4gbV9vdXRwdXRDb250ZXh0OworICAgIFJldGFpblB0cjxOU0RhdGE+IG1fc2VyaWFs
aXplZE91dHB1dENvbnRleHQ7CisgICAgYm9vbCBtX2NhY2hlZEhhc0FjdGl2ZVJvdXRlIHsgZmFs
c2UgfTsKKworICAgIFN0cmluZyBtX21vY2tEZXZpY2VOYW1lOworICAgIE1vY2tTdGF0ZSBtX21v
Y2tTdGF0ZSB7IE1vY2tTdGF0ZTo6VW5rbm93biB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZT4geworICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpUeXBlLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6VHlwZTo6Tm9uZSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQsCisgICAgICAg
IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrCisgICAgPjsK
K307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3Rh
dGUsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3Rh
dGU6OlVua25vd24sCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpNb2NrU3RhdGU6Ok91dHB1dERldmljZVVuYXZhaWxhYmxlLAorICAgICAgICBXZWJDb3JlOjpN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpPdXRwdXREZXZpY2VBdmFpbGFi
bGUKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lZDlkNTU4YjNjYzI3YjkzYWNjMWM5MzFmMTY0YzZkZWExYmI0
NzEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW0KQEAgLTAsMCArMSwxNjIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQuaCIKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisK
KyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8b2JqYy9ydW50aW1l
Lmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oPgorI2ltcG9ydCA8
cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
KFJldGFpblB0cjxBVk91dHB1dENvbnRleHQ+JiYgb3V0cHV0Q29udGV4dCkKKyAgICA6IG1fb3V0
cHV0Q29udGV4dChvdXRwdXRDb250ZXh0KQoreworICAgIEFTU0VSVChtX291dHB1dENvbnRleHQp
OworICAgIG1fdHlwZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1
dENvbnRleHQ7Cit9CisKK1N0cmluZyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6ZGV2aWNl
TmFtZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6VHlwZTo6TW9jayB8fCBtX3R5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCk7CisKKyAgICBpZiAobV90eXBlID09IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrKQorICAgICAgICByZXR1cm4gbV9tb2NrRGV2
aWNlTmFtZTsKKworICAgIEFTU0VSVChtX3R5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCk7CisgICAgU3RyaW5nIGRldmljZU5hbWU7CisgICAg
aWYgKCFbbV9vdXRwdXRDb250ZXh0IHN1cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2VzXSkKKyAg
ICAgICAgZGV2aWNlTmFtZSA9IFttX291dHB1dENvbnRleHQgZGV2aWNlTmFtZV07CisgICAgZWxz
ZSB7CisgICAgICAgIGF1dG8gb3V0cHV0RGV2aWNlTmFtZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgZm9yIChBVk91dHB1dERldmljZSAqb3V0cHV0
RGV2aWNlIGluIFttX291dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlc10pCisgICAgICAgICAgICBb
b3V0cHV0RGV2aWNlTmFtZXMgYWRkT2JqZWN0OltvdXRwdXREZXZpY2UgZGV2aWNlTmFtZV1dOwor
CisgICAgICAgIGRldmljZU5hbWUgPSBbb3V0cHV0RGV2aWNlTmFtZXMgY29tcG9uZW50c0pvaW5l
ZEJ5U3RyaW5nOkAiICsgIl07CisgICAgfQorCisgICAgcmV0dXJuIGRldmljZU5hbWU7Cit9Citi
b29sIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpoYXNBY3RpdmVSb3V0ZSgpIGNvbnN0Cit7
CisgICAgQVNTRVJUKG1fdHlwZSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6
Tm9uZSk7CisgICAgaWYgKG1fdHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlw
ZTo6TW9jaykKKyAgICAgICAgcmV0dXJuICFtX21vY2tEZXZpY2VOYW1lLmlzRW1wdHkoKTsKKwor
ICAgIC8vIEZJWE1FOiBJdCBtYXkgbm90IGJlIHNhZmUgdG8gdXNlIHRoZSBjYWNoZWQgYGhhc0Fj
dGl2ZVJvdXRlYCBvZiBhIHNlcmlhbGl6ZWQgQVZPdXRwdXRDb250ZXh0CisgICAgaWYgKG1fdHlw
ZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0
Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIG1fY2FjaGVkSGFzQWN0aXZlUm91dGU7CisKKyAgICBB
U1NFUlQobV90eXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1
dENvbnRleHQpOworICAgIGJvb2wgaGFzQWN0aXZlUm91dGUgPSBmYWxzZTsKKyAgICBpZiAoW21f
b3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN1cHBvcnRzTXVsdGlw
bGVPdXRwdXREZXZpY2VzKV0gJiYgW21fb3V0cHV0Q29udGV4dCBzdXBwb3J0c011bHRpcGxlT3V0
cHV0RGV2aWNlc10gJiYgW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKG91dHB1dERldmljZXMpXSkgeworICAgICAgICBmb3IgKEFWT3V0cHV0RGV2aWNlICpvdXRw
dXREZXZpY2UgaW4gW21fb3V0cHV0Q29udGV4dCBvdXRwdXREZXZpY2VzXSkgeworICAgICAgICAg
ICAgaWYgKG91dHB1dERldmljZS5kZXZpY2VGZWF0dXJlcyAmIChBVk91dHB1dERldmljZUZlYXR1
cmVWaWRlbyB8IEFWT3V0cHV0RGV2aWNlRmVhdHVyZUF1ZGlvKSkKKyAgICAgICAgICAgICAgICBo
YXNBY3RpdmVSb3V0ZSA9IHRydWU7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKFttX291dHB1
dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdXRwdXREZXZpY2UpXSkgewor
ICAgICAgICBpZiAoYXV0byAqb3V0cHV0RGV2aWNlID0gW21fb3V0cHV0Q29udGV4dCBvdXRwdXRE
ZXZpY2VdKQorICAgICAgICAgICAgaGFzQWN0aXZlUm91dGUgPSBvdXRwdXREZXZpY2UuZGV2aWNl
RmVhdHVyZXMgJiAoQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8gfCBBVk91dHB1dERldmljZUZl
YXR1cmVBdWRpbyk7CisgICAgfSBlbHNlCisgICAgICAgIGhhc0FjdGl2ZVJvdXRlID0gbV9vdXRw
dXRDb250ZXh0LmdldCgpLmRldmljZU5hbWU7CisKKyAgICByZXR1cm4gaGFzQWN0aXZlUm91dGU7
Cit9Citib29sIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpzdXBwb3J0c1JlbW90ZVZpZGVv
UGxheWJhY2soKSBjb25zdAoreworICAgIEFTU0VSVChtX3R5cGUgPT0gTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6OlR5cGU6Ok1vY2sgfHwgbV90eXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQpOworICAgIGlmIChtX3R5cGUgPT0gTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2spCisgICAgICAgIHJldHVybiAhbV9tb2Nr
RGV2aWNlTmFtZS5pc0VtcHR5KCk7CisKKyAgICBib29sIHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5
YmFjayA9IGZhbHNlOworICAgIGlmICghW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHN1cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2VzKV0gfHwgIVttX291dHB1
dENvbnRleHQgc3VwcG9ydHNNdWx0aXBsZU91dHB1dERldmljZXNdIHx8ICFbbV9vdXRwdXRDb250
ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob3V0cHV0RGV2aWNlcyldKSB7CisgICAg
ICAgIGlmIChhdXRvICpvdXRwdXREZXZpY2UgPSBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmlj
ZV0pIHsKKyAgICAgICAgICAgIGlmIChvdXRwdXREZXZpY2UuZGV2aWNlRmVhdHVyZXMgJiBBVk91
dHB1dERldmljZUZlYXR1cmVWaWRlbykKKyAgICAgICAgICAgICAgICBzdXBwb3J0c1JlbW90ZVZp
ZGVvUGxheWJhY2sgPSB0cnVlOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9y
IChBVk91dHB1dERldmljZSAqb3V0cHV0RGV2aWNlIGluIFttX291dHB1dENvbnRleHQgb3V0cHV0
RGV2aWNlc10pIHsKKyAgICAgICAgICAgIGlmIChvdXRwdXREZXZpY2UuZGV2aWNlRmVhdHVyZXMg
JiBBVk91dHB1dERldmljZUZlYXR1cmVWaWRlbykKKyAgICAgICAgICAgICAgICBzdXBwb3J0c1Jl
bW90ZVZpZGVvUGxheWJhY2sgPSB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJu
IHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjazsKK30KKworYm9vbCBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6c2VyaWFsaXplT3V0cHV0Q29udGV4dCgpCit7CisgICAgQVNTRVJUKG1fdHlw
ZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0KTsK
KyAgICBpZiAobV90eXBlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91
dHB1dENvbnRleHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gYXJjaGl2ZXIg
PSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0UmVxdWlyaW5nU2VjdXJlQ29k
aW5nOllFU10pOworICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6bV9vdXRwdXRDb250ZXh0Lmdl
dCgpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOworICAgIFthcmNoaXZlciBm
aW5pc2hFbmNvZGluZ107CisKKyAgICBtX3NlcmlhbGl6ZWRPdXRwdXRDb250ZXh0ID0gW2FyY2hp
dmVyIGVuY29kZWREYXRhXTsKKyAgICBtX3R5cGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dDsKKyAgICBtX291dHB1dENvbnRleHQu
Y2xlYXIoKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpkZXNlcmlhbGl6ZU91dHB1dENvbnRleHQoKQoreworICAgIEFTU0VSVChtX3R5
cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1
dENvbnRleHQpOworICAgIGlmIChtX3R5cGUgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
OlR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOworICAgIGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0
TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdGcm9tRGF0YTptX3Nl
cmlhbGl6ZWRPdXRwdXRDb250ZXh0LmdldCgpIGVycm9yOm51bGxwdHJdKTsKKyAgICB1bmFyY2hp
dmVyLmdldCgpLmRlY29kaW5nRmFpbHVyZVBvbGljeSA9IE5TRGVjb2RpbmdGYWlsdXJlUG9saWN5
UmFpc2VFeGNlcHRpb247CisgICAgYXV0byBhbGxvd2VkQ2xhc3NTZXQgPSBhZG9wdE5TKFtbTlNT
ZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6QFsgUEFMOjpnZXRBVk91dHB1dENvbnRleHRDbGFzcygp
IF1dKTsKKworICAgIEB0cnkgeworICAgICAgICBpZCByZXN1bHQgPSBbdW5hcmNoaXZlciBkZWNv
ZGVPYmplY3RPZkNsYXNzZXM6YWxsb3dlZENsYXNzU2V0LmdldCgpIGZvcktleTpOU0tleWVkQXJj
aGl2ZVJvb3RPYmplY3RLZXldOworICAgICAgICBBU1NFUlQocmVzdWx0KTsKKyAgICAgICAgaWYg
KHJlc3VsdCkgeworICAgICAgICAgICAgbV9vdXRwdXRDb250ZXh0ID0gcmVzdWx0OworICAgICAg
ICAgICAgbV90eXBlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0
Q29udGV4dDsKKyAgICAgICAgICAgIG1fc2VyaWFsaXplZE91dHB1dENvbnRleHQuY2xlYXIoKTsK
KyAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOworICAgICAgICB9CisgICAgfSBAY2F0Y2ggKE5T
RXhjZXB0aW9uICpleGNlcHRpb24pIHsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVj
b2RlIG9iamVjdCBvZiBjbGFzcyBBVk91dHB1dENvbnRleHQgOiAlQCIsIGV4Y2VwdGlvbik7Cisg
ICAgfSBAZmluYWxseSB7CisgICAgICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAg
ICAgICAgdW5hcmNoaXZlci5nZXQoKS5kZWxlZ2F0ZSA9IG5pbDsKKyAgICB9CisKKyAgICByZXR1
cm4gc3VjY2VzczsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5jcHAKaW5kZXggNDU1Y2Vm
YzlmNmYwZGY0MTk2Nzc4Zjc1MTlmYjhiYjcxZjU1ZDUyMS4uMmEyYThkMGJjZjE2NWFkMGIyMWY1
YzlkMmE4NDcxNzczNWZiNGM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5jcHAKQEAgLTMwLDI2ICszMCwxOCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRp
YVBsYXliYWNrVGFyZ2V0TW9jazo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQorUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+
IE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKQogewogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKG5hbWUsIHN0YXRlKSk7CiB9CiAK
LU1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhjb25zdCBT
dHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKLSAg
ICA6IE1lZGlhUGxheWJhY2tUYXJnZXQoKQotICAgICwgbV9uYW1lKG5hbWUpCi0gICAgLCBtX3N0
YXRlKHN0YXRlKQorTWVkaWFQbGF5YmFja1RhcmdldE1vY2s6Ok1lZGlhUGxheWJhY2tUYXJnZXRN
b2NrKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tT
dGF0ZSBzdGF0ZSkKKyAgICA6IG1fY29udGV4dChuYW1lLCBzdGF0ZSkKIHsKIH0KIAogTWVkaWFQ
bGF5YmFja1RhcmdldE1vY2s6On5NZWRpYVBsYXliYWNrVGFyZ2V0TW9jaygpID0gZGVmYXVsdDsK
IAotY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIE1lZGlhUGxheWJhY2tUYXJnZXRN
b2NrOjp0YXJnZXRDb250ZXh0KCkgY29uc3QKLXsKLSAgICBtX2NvbnRleHQgPSBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dChtX25hbWUsIG1fc3RhdGUpOwotICAgIHJldHVybiBtX2NvbnRleHQ7
Ci19Ci0KIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKiB0b01lZGlhUGxheWJhY2tUYXJnZXRNb2Nr
KE1lZGlhUGxheWJhY2tUYXJnZXQqIHJlcCkKIHsKICAgICByZXR1cm4gY29uc3RfY2FzdDxNZWRp
YVBsYXliYWNrVGFyZ2V0TW9jayo+KHRvTWVkaWFQbGF5YmFja1RhcmdldE1vY2soY29uc3RfY2Fz
dDxjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Kj4ocmVwKSkpOwpAQCAtNTcsNyArNDksNyBAQCBN
ZWRpYVBsYXliYWNrVGFyZ2V0TW9jayogdG9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhNZWRpYVBs
YXliYWNrVGFyZ2V0KiByZXApCiAKIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKiB0b01l
ZGlhUGxheWJhY2tUYXJnZXRNb2NrKGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQqIHJlcCkKIHsK
LSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihyZXAtPnRhcmdldFR5cGUoKSA9
PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpNb2NrKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKHJlcC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJn
ZXQ6OlRhcmdldFR5cGU6Ok1vY2spOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBNZWRp
YVBsYXliYWNrVGFyZ2V0TW9jayo+KHJlcCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaAppbmRleCBjZDQ0OWIw
M2MxMTMxMDY2NTI5NGNiODkyNGRmMGU0ZWVhYTEzZjRjLi4zOThhNDU5ZGU5OTJmNGUyYjVjOTlk
OThmZmI3NDcyODk2N2YwOWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oCkBAIC0yMyw0MCArMjMsMzAgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgTWVkaWFQbGF5YmFja1RhcmdldE1vY2tfaAot
I2RlZmluZSBNZWRpYVBsYXliYWNrVGFyZ2V0TW9ja19oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVO
QUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldC5oIgotI2luY2x1ZGUgIk1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldE1vY2sgOiBwdWJs
aWMgTWVkaWFQbGF5YmFja1RhcmdldCB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKTsKIAogICAgIHZpcnR1YWwgfk1lZGlhUGxheWJh
Y2tUYXJnZXRNb2NrKCk7CiAKLSAgICBUYXJnZXRUeXBlIHRhcmdldFR5cGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBNb2NrOyB9CisgICAgVGFyZ2V0VHlwZSB0YXJnZXRUeXBlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gTWVkaWFQbGF5YmFja1RhcmdldDo6VGFyZ2V0VHlwZTo6TW9jazsgfQorICAg
IGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXRDb250ZXh0KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9jb250ZXh0OyB9CiAKLSAgICBjb25zdCBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dCYgdGFyZ2V0Q29udGV4dCgpIGNvbnN0IGZpbmFsOwotCi0gICAgYm9vbCBoYXNB
Y3RpdmVSb3V0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX25hbWUuaXNFbXB0eSgpOyB9Ci0g
ICAgYm9vbCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKSBjb25zdCBmaW5hbCB7IHJldHVy
biAhbV9uYW1lLmlzRW1wdHkoKTsgfQotCi0gICAgU3RyaW5nIGRldmljZU5hbWUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX25hbWU7IH0KLQotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpTdGF0ZSBzdGF0ZSgpIGNvbnN0OworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpN
b2NrU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQubW9ja1N0YXRlKCk7IH0K
IAogcHJvdGVjdGVkOgotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKGNvbnN0IFN0cmluZyYs
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgTWVkaWFQbGF5YmFja1Rh
cmdldE1vY2soY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tT
dGF0ZSk7CiAKLSAgICBTdHJpbmcgbV9uYW1lOwotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpTdGF0ZSBtX3N0YXRlIHsgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlVua25vd24g
fTsKLSAgICBtdXRhYmxlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IG1fY29udGV4dDsKKyAg
ICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCBtX2NvbnRleHQ7CiB9OwogCiBNZWRpYVBsYXli
YWNrVGFyZ2V0TW9jayogdG9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhNZWRpYVBsYXliYWNrVGFy
Z2V0Kik7CkBAIC02NSw1ICs1NSwzIEBAIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKiB0
b01lZGlhUGxheWJhY2tUYXJnZXRNb2NrKGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnCiB9CiAKICNl
bmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwCmluZGV4IDQ0ZjQx
NDdhMTkxODA3NTQ3MmVkYzNhMTIxODk5MjdkN2U5MjVlZjEuLjNiMGNhNmE3ODM3MjNmOGY5OGQy
MjYwYWFiNmFiNWE1NjFlZTFjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwCkBAIC01
Miw3ICs1Miw3IEBAIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjp+TWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlck1vY2soKQogYm9vbCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6
ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUoKQogewogICAgIExPRyhNZWRpYSwgIk1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSIp
OwotICAgIHJldHVybiBtX3N0YXRlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpPdXRw
dXREZXZpY2VBdmFpbGFibGU7CisgICAgcmV0dXJuIG1fc3RhdGUgPT0gTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6T3V0cHV0RGV2aWNlQXZhaWxhYmxlOwogfQogCiBSZWY8
TWVkaWFQbGF5YmFja1RhcmdldD4gTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnBsYXli
YWNrVGFyZ2V0KCkKQEAgLTg1LDEwICs4NSwxMCBAQCB2b2lkIE1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJNb2NrOjpzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKQogICAgIExPRyhN
ZWRpYSwgIk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpzdGFydGluZ01vbml0b3JpbmdQ
bGF5YmFja1RhcmdldHMiKTsKIAogICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFt0aGlzXSB7
Ci0gICAgICAgIGlmIChtX3N0YXRlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpPdXRw
dXREZXZpY2VBdmFpbGFibGUpCisgICAgICAgIGlmIChtX3N0YXRlID09IE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6Ok91dHB1dERldmljZUF2YWlsYWJsZSkKICAgICAgICAg
ICAgIGF2YWlsYWJsZURldmljZXNEaWRDaGFuZ2UoKTsKIAotICAgICAgICBpZiAoIW1fZGV2aWNl
TmFtZS5pc0VtcHR5KCkgJiYgbV9zdGF0ZSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
VW5rbm93bikKKyAgICAgICAgaWYgKCFtX2RldmljZU5hbWUuaXNFbXB0eSgpICYmIG1fc3RhdGUg
IT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93bikKICAgICAg
ICAgICAgIGN1cnJlbnREZXZpY2VEaWRDaGFuZ2UoKTsKICAgICB9KTsKIH0KQEAgLTEwMSwxNSAr
MTAxLDE1IEBAIHZvaWQgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnN0b3BNb25pdG9y
aW5nUGxheWJhY2tUYXJnZXRzKCkKIHZvaWQgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6
OmludmFsaWRhdGVQbGF5YmFja1RhcmdldHMoKQogewogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJNb2NrOjppbnZhbGlkYXRlUGxheWJhY2tUYXJnZXRzIik7Ci0gICAg
c2V0U3RhdGUoZW1wdHlTdHJpbmcoKSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlVua25v
d24pOworICAgIHNldFN0YXRlKGVtcHR5U3RyaW5nKCksIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpNb2NrU3RhdGU6OlVua25vd24pOwogfQogCi12b2lkIE1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJNb2NrOjpzZXRTdGF0ZShjb25zdCBTdHJpbmcmIGRldmljZU5hbWUsIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKK3ZvaWQgTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlck1vY2s6OnNldFN0YXRlKGNvbnN0IFN0cmluZyYgZGV2aWNlTmFtZSwgTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSkKIHsKICAgICBMT0coTWVkaWEsICJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6c2V0U3RhdGUgLSBuYW1lID0gJXMsIHN0YXRlID0g
MHgleCIsIGRldmljZU5hbWUudXRmOCgpLmRhdGEoKSwgKHVuc2lnbmVkKXN0YXRlKTsKIAogICAg
IG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFt0aGlzLCBzdGF0ZSwgZGV2aWNlTmFtZV0gewotICAg
ICAgICBpZiAoZGV2aWNlTmFtZSAhPSBtX2RldmljZU5hbWUgJiYgc3RhdGUgIT0gTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKGRldmljZU5hbWUgIT0g
bV9kZXZpY2VOYW1lICYmIHN0YXRlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2Nr
U3RhdGU6OlVua25vd24pIHsKICAgICAgICAgICAgIG1fZGV2aWNlTmFtZSA9IGRldmljZU5hbWU7
CiAgICAgICAgICAgICBjdXJyZW50RGV2aWNlRGlkQ2hhbmdlKCk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlck1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlck1vY2suaAppbmRleCBkZTA5NmNiODgxZjgyNDIxMTE2NThiOGQyMTgzOWY5Yzg4
NWQ0YmNlLi4zZTc0Mzk1YmYxNmI4ZTdjOGNlOWY5NzIwZTc1OTRlNGYyYzg3ZWUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyTW9jay5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0
b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbnZhbGlk
YXRlUGxheWJhY2tUYXJnZXRzKCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHNldFN0YXRlKGNvbnN0
IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgdm9pZCBz
ZXRTdGF0ZShjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0
YXRlKTsKICAgICB2b2lkIGRpc21pc3NQb3B1cCgpOwogCiBwcml2YXRlOgpAQCAtNTcsNyArNTcs
NyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIG1fZGV2aWNlTmFtZTsKICAgICBHZW5lcmljVGFz
a1F1ZXVlPFRpbWVyPiBtX3Rhc2tRdWV1ZTsKLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6U3RhdGUgbV9zdGF0ZSB7IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpVbmtub3duIH07
CisgICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBtX3N0YXRlIHsgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93biB9OwogICAgIGJvb2wg
bV9zaG93aW5nTWVudSB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKaW5kZXggMzQ0OTJiYWY4MTE0Yzk0NmQ2MzAxYTBmNjAwNmQ1ZGYxOTM0NmNhMy4uYzM4
MDExNjk0YmFmYWNjOGExZjY3ZmYwODVhZmU0NGFiYmJjMmFmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcApAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNl
dFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQogICAgIHBhZ2Uuc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJF
bmFibGVkKHRydWUpOwotICAgIHBhZ2Uuc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJT
dGF0ZShlbXB0eVN0cmluZygpLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VW5rbm93bik7
CisgICAgcGFnZS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGVtcHR5U3Ry
aW5nKCksIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6OlVua25vd24pOwog
I2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU8pCkBAIC00NTEwLDE0ICs0NTEwLDE0IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IEludGVybmFsczo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJT
dGF0ZShjb25zdCBTdHJpbmcmCiAgICAgUGFnZSogcGFnZSA9IGNvbnRleHREb2N1bWVudCgpLT5m
cmFtZSgpLT5wYWdlKCk7CiAgICAgQVNTRVJUKHBhZ2UpOwogCi0gICAgTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6OlN0YXRlIHN0YXRlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlVu
a25vd247CisgICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSA9
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6OlVua25vd247CiAKICAgICBp
ZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGV2aWNlU3RhdGUsICJkZXZpY2VhdmFp
bGFibGUiKSkKLSAgICAgICAgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6T3V0
cHV0RGV2aWNlQXZhaWxhYmxlOworICAgICAgICBzdGF0ZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpNb2NrU3RhdGU6Ok91dHB1dERldmljZUF2YWlsYWJsZTsKICAgICBlbHNlIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkZXZpY2VTdGF0ZSwgImRldmljZXVuYXZhaWxh
YmxlIikpCi0gICAgICAgIHN0YXRlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok91dHB1
dERldmljZVVuYXZhaWxhYmxlOworICAgICAgICBzdGF0ZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpNb2NrU3RhdGU6Ok91dHB1dERldmljZVVuYXZhaWxhYmxlOwogICAgIGVsc2UgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRldmljZVN0YXRlLCAidW5rbm93biIpKQot
ICAgICAgICBzdGF0ZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpVbmtub3duOworICAg
ICAgICBzdGF0ZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6OlVua25v
d247CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vy
cm9yIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCBiZDE5MWU1NzFkNzFmMjEwN2RmZmVjNWRm
YjI0YjBkNDQ2ZGNjZTY3Li4xODhmYjBjMzEzZmZhZjBjMjVlY2NkYTc0NmQ2N2MxYWMyYTdmN2Q1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAKICNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1Rh
cmdldENvY29hLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaD4KICNlbmRp
ZgogCkBAIC02OTcsMjAgKzY5OCwyMSBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wgc2hvdWxkUGxheSkKICAgICBtX3BsYXll
ci0+c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoc2hvdWxkUGxheSk7CiB9CiAKLXZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChjb25zdCBX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0Q29udGV4dCkKK3ZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dCYmIHRhcmdldENvbnRleHQpCiB7CiAgICAgc3dpdGNoICh0YXJn
ZXRDb250ZXh0LnR5cGUoKSkgewotICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
OkFWT3V0cHV0Q29udGV4dFR5cGU6Ci0gICAgICAgIG1fcGxheWVyLT5zZXRXaXJlbGVzc1BsYXli
YWNrVGFyZ2V0KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKHRhcmdl
dENvbnRleHQuYXZPdXRwdXRDb250ZXh0KCkpKTsKKyAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0OiB7CisgICAgICAgIGlm
ICh0YXJnZXRDb250ZXh0LmRlc2VyaWFsaXplT3V0cHV0Q29udGV4dCgpKQorICAgICAgICAgICAg
bV9wbGF5ZXItPnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoTWVkaWFQbGF5YmFja1RhcmdldENv
Y29hOjpjcmVhdGUoV1RGTW92ZSh0YXJnZXRDb250ZXh0KSkpOwogICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6TW9jazoKICNp
ZiBQTEFURk9STShNQUMpCi0gICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9j
a1R5cGU6Ci0gICAgICAgIG1fcGxheWVyLT5zZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpjcmVhdGUodGFyZ2V0Q29udGV4dC5tb2NrRGV2
aWNlTmFtZSgpLCB0YXJnZXRDb250ZXh0Lm1vY2tTdGF0ZSgpKSk7CisgICAgICAgIG1fcGxheWVy
LT5zZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpjcmVh
dGUodGFyZ2V0Q29udGV4dC5kZXZpY2VOYW1lKCksIHRhcmdldENvbnRleHQubW9ja1N0YXRlKCkp
KTsKICAgICAgICAgYnJlYWs7Ci0jZWxzZQotICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6Ok1vY2tUeXBlOgogI2VuZGlmCi0gICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6Tm9uZToKKyAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpB
Vk91dHB1dENvbnRleHQ6CisgICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlw
ZTo6Tm9uZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IDI0YjY2NDFhZTRmNWYxZTdkZmMxMDUzNzQxM2YwZTlj
ZmQyNWUyM2YuLmJkYWVlOGFlMDVmMTBmYTQ2NTczMzQzZjQ3OWM0MjkzZDQ3ZGY2YzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHkuaApAQCAtMTUyLDcgKzE1Miw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlz
YWJsZWQoYm9vbCk7CiAgICAgdm9pZCBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29s
KTsKLSAgICB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoY29uc3QgV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQmKTsKKyAgICB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tU
YXJnZXQoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmJik7CiAgICAgdm9pZCBt
ZWRpYVBsYXllckN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3NDaGFuZ2VkKGJvb2wpIGZp
bmFsOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHAKaW5k
ZXggOWU2YmM5NDY2YjUzOTliMjRmNTg0MDA5YjkwMGJkMDdkMDA4MjExNi4uYmVkMzBlMjljZTRi
OWM1ZjZhZjQwMWFjMWNjOGYyNmZhMmM0NjFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXJQcm94eS5jcHAKQEAgLTEwOCw3ICsxMDgsMTEgQEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXJQcm94eTo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShTaG91bGRQYXVzZSBzaG91
bGQKIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6YWN0aXZlVmlkZW9Sb3V0
ZURpZENoYW5nZShTdXBwb3J0c0FpclBsYXlWaWRlbyBzdXBwb3J0c0FpclBsYXlWaWRlbywgUmVm
PFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgdGFyZ2V0KQogewotICAgIG1fZ3B1Q29u
bmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyOjpBY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKHN1cHBvcnRzQWlyUGxheVZpZGVvLCB0YXJn
ZXQtPnRhcmdldENvbnRleHQoKSksIHsgfSk7CisgICAgYXV0byBjb250ZXh0ID0gdGFyZ2V0LT50
YXJnZXRDb250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0LnNlcmlhbGl6ZU91dHB1dENvbnRleHQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9ncHVDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OkFjdGl2ZVZpZGVvUm91dGVE
aWRDaGFuZ2Uoc3VwcG9ydHNBaXJQbGF5VmlkZW8sIGNvbnRleHQpLCB7IH0pOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tCmluZGV4IGJmODhhYjYxN2JlMTIxYjRhZjdiYzRjZDNjNGZjMTk3ZGRhNTk3
ODIuLjUwMzQ0MWNiNmVhMzVmZDNlY2FmOTY3NmY5MjY0ZDMyODEzNWIzNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0Nv
Y29hLm1tCkBAIC00MSwxNCArNDEsMjMgQEAKICNpbXBvcnQgPFVJS2l0L1VJRm9udC5oPgogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorI2ltcG9ydCA8V2Vi
Q29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oPgorI2ltcG9ydCA8b2JqYy9ydW50aW1l
Lmg+CisjZW5kaWYKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW5jbHVkZSA8V2Vi
S2l0QWRkaXRpb25zL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hQWRkaXRpb25zLm1tPgorI2Vu
ZGlmCisKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgog
I2ltcG9ydCA8V2ViQ29yZS9QYXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5oPgogI2ltcG9ydCA8
cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNDb2NvYUFkZGl0aW9ucy5tbT4KKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQorI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CiAjZW5kaWYKIAog
bmFtZXNwYWNlIElQQyB7CkBAIC02MDYsNCArNjE1LDUwIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVj
b2RlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQordm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCit7CisgICAgaWYgKHRhcmdldC50eXBlKCkg
PT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCkgewor
ICAgICAgICBpZiAoW1BBTDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBjb25mb3Jtc1RvUHJv
dG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCisgICAgICAgICAgICBlbmNvZGVyIDw8
IHRhcmdldC5vdXRwdXRDb250ZXh0KCk7CisgICAgfSBlbHNlIGlmICh0YXJnZXQudHlwZSgpID09
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250
ZXh0KSB7CisgICAgICAgIGVuY29kZXIgPDwgdGFyZ2V0LnNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0
KCk7CisgICAgICAgIGVuY29kZXIgPDwgdGFyZ2V0Lmhhc0FjdGl2ZVJvdXRlKCk7CisgICAgfSBl
bHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitib29sIEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0Zm9ybURh
dGEoRGVjb2RlciYgZGVjb2RlciwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGUgY29u
dGV4dFR5cGUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCit7CisgICAgQVNT
RVJUKGNvbnRleHRUeXBlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2Nr
KTsKKworICAgIGlmIChjb250ZXh0VHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
VHlwZTo6QVZPdXRwdXRDb250ZXh0KSB7CisgICAgICAgIGlmICghW1BBTDo6Z2V0QVZPdXRwdXRD
b250ZXh0Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5n
KV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgYXV0byBvdXRwdXRDb250
ZXh0ID0gSVBDOjpkZWNvZGU8QVZPdXRwdXRDb250ZXh0PihkZWNvZGVyLCBQQUw6OmdldEFWT3V0
cHV0Q29udGV4dENsYXNzKCkpOworICAgICAgICBpZiAoIW91dHB1dENvbnRleHQpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdGFyZ2V0ID0gV2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQgeyBXVEZNb3ZlKCpvdXRwdXRDb250ZXh0KSB9OworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoY29udGV4dFR5cGUgPT0gTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQpIHsKKyAgICAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gc2VyaWFsaXplZE91dHB1dENvbnRleHQ7CisgICAgICAgIGlm
ICghSVBDOjpkZWNvZGUoZGVjb2Rlciwgc2VyaWFsaXplZE91dHB1dENvbnRleHQpIHx8ICFzZXJp
YWxpemVkT3V0cHV0Q29udGV4dCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg
ICBib29sIGhhc0FjdGl2ZVJvdXRlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0Fj
dGl2ZVJvdXRlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB0YXJnZXQg
PSBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCB7IFdURk1vdmUoc2VyaWFsaXpl
ZE91dHB1dENvbnRleHQpLCBoYXNBY3RpdmVSb3V0ZSB9OworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2Ug
SVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApp
bmRleCAyNTVhMmNiYzZjNzdjZWYxZTYwNzBlYTQyMGY2YmRlOTBiMjQwYTcxLi5mNjUxMTZmZjlk
NmIwM2IxYTMzMzFjZGJmMzZlNDdkOGE0MTE4Y2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTI0NTcsMTcgKzI0NTcsMTcgQEAgdm9p
ZCBBcmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IE0KICAgICBib29sIGhhc1BsYXRmb3JtRGF0YSA9IHRhcmdldC5l
bmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKCk7CiAgICAgZW5jb2RlciA8PCBoYXNQbGF0Zm9y
bURhdGE7CiAKLSAgICBpbnQzMl90IHRhcmdldFR5cGUgPSB0YXJnZXQudHlwZSgpOwotICAgIGVu
Y29kZXIgPDwgdGFyZ2V0VHlwZTsKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlw
ZSBjb250ZXh0VHlwZSA9IHRhcmdldC50eXBlKCk7CisgICAgZW5jb2RlciA8PCBjb250ZXh0VHlw
ZTsKIAogICAgIGlmICh0YXJnZXQuZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgpKSB7CiAg
ICAgICAgIGVuY29kZVBsYXRmb3JtRGF0YShlbmNvZGVyLCB0YXJnZXQpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgQVNTRVJUKHRhcmdldFR5cGUgPT0gTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6Ok1vY2tUeXBlKTsKLSAgICBlbmNvZGVyIDw8IHRhcmdldC5tb2NrRGV2aWNlTmFt
ZSgpOwotICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8aW50MzJfdD4odGFyZ2V0Lm1vY2tTdGF0
ZSgpKTsKKyAgICBBU1NFUlQoY29udGV4dFR5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6OlR5cGU6Ok1vY2spOworICAgIGVuY29kZXIgPDwgdGFyZ2V0LmRldmljZU5hbWUoKTsKKyAg
ICBlbmNvZGVyIDw8IHRhcmdldC5tb2NrU3RhdGUoKTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVy
PE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCkBAIC0yNDc2LDI0ICsyNDc2LDI0IEBA
IGJvb2wgQXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyLCBNZWRpYVBsCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNQbGF0
Zm9ybURhdGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpbnQzMl90IHRhcmdldFR5
cGU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0YXJnZXRUeXBlKSkKKyAgICBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6VHlwZSBjb250ZXh0VHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGNvbnRleHRUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGhhc1Bs
YXRmb3JtRGF0YSkKLSAgICAgICAgcmV0dXJuIGRlY29kZVBsYXRmb3JtRGF0YShkZWNvZGVyLCB0
YXJnZXQpOworICAgICAgICByZXR1cm4gZGVjb2RlUGxhdGZvcm1EYXRhKGRlY29kZXIsIGNvbnRl
eHRUeXBlLCB0YXJnZXQpOwogCi0gICAgQVNTRVJUKHRhcmdldFR5cGUgPT0gTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6Ok1vY2tUeXBlKTsKLQotICAgIFN0cmluZyBtb2NrRGV2aWNlTmFtZTsK
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1vY2tEZXZpY2VOYW1lKSkKKyAgICBBU1NFUlQoY29u
dGV4dFR5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2spOworICAg
IFN0cmluZyBkZXZpY2VOYW1lOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlTmFtZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGludDMyX3QgbW9ja1N0YXRlOworICAgIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgbW9ja1N0YXRlOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUobW9ja1N0YXRlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
dGFyZ2V0ID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQobW9ja0RldmljZU5hbWUsIHN0YXRp
Y19jYXN0PE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZT4obW9ja1N0YXRlKSk7Cisg
ICAgdGFyZ2V0ID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQoZGV2aWNlTmFtZSwgbW9ja1N0
YXRlKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDYxOTcwODc4MjUxMTU0OGI2MmYyNzE1
NmJkM2Y0N2Q3MWEzMWVhYzIuLjY0NzZlMzkwYmZjNzc4ZDdlYjdjZGZiM2RjMmFkNTRjMmNlN2Zl
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZURhdGEuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0luZGV4ZWREQi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2RlLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvTWVkaWFTZWxlY3Rpb25PcHRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05hdGl2
ZUltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4KQEAgLTE5
NSwxMCArMTk2LDYgQEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50OwogY2xhc3MgQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQotY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ7Ci0jZW5kaWYK
LQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBzdHJ1Y3QgTWVkaWFDb25zdHJhaW50czsKICNl
bmRpZgpAQCAtNjQ0LDcgKzY0MSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+IHsKICAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
Jik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwg
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmKTsKICAgICBzdGF0aWMgdm9pZCBl
bmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0Jik7Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29k
ZVBsYXRmb3JtRGF0YShEZWNvZGVyJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQmKTsKKyAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlUGxhdGZvcm1E
YXRhKERlY29kZXImLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZSwg
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmKTsKIH07CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMu
bW0KaW5kZXggMTg2YjdiYjJkYjZmYzRlMmJjMTMzZjcxNzVjY2Y5YzM3NjM4OTIzMC4uOTI1ZjVh
NGQ1YTQ4OGQ0ODg0MDRlYzYyOTUyZDhhMjQ5YTNmMDAxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCkBAIC00MiwxMiAr
NDIsNiBAQAogI2ltcG9ydCA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNpbXBvcnQgPHd0Zi9jZi9U
eXBlQ2FzdHNDRi5oPgogCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSNp
bXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4KLSNpbXBvcnQgPG9i
amMvcnVudGltZS5oPgotI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+
Ci0jZW5kaWYKLQogbmFtZXNwYWNlIElQQyB7CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpDZXJ0aWZpY2F0ZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29y
ZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8pCkBAIC00MDMsMjkgKzM5Nyw2IEBA
IGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlCiAKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkKLQotdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCi17Ci0g
ICAgaWYgKFtQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgY29uZm9ybXNUb1Byb3RvY29s
OkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQotICAgICAgICBlbmNvZGVyIDw8IHRhcmdldC5h
dk91dHB1dENvbnRleHQoKTsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29k
ZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCi17Ci0gICAg
aWYgKCFbUEFMOjpnZXRBVk91dHB1dENvbnRleHRDbGFzcygpIGNvbmZvcm1zVG9Qcm90b2NvbDpA
cHJvdG9jb2woTlNTZWN1cmVDb2RpbmcpXSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
YXV0byBjb250ZXh0ID0gSVBDOjpkZWNvZGU8QVZPdXRwdXRDb250ZXh0PihkZWNvZGVyLCBQQUw6
OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkpOwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgdGFyZ2V0ID0gV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQgeyBjb250ZXh0LT5nZXQoKSB9OwotICAgIHJldHVybiB0cnVlOwotfQotCi0jZW5k
aWYKLQogI2lmIEVOQUJMRShWSURFTykKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJp
YWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlJiB2
YWx1ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGEy
ZjM5Yzk1ZTNiYzRkODIwNTFiYWNkMzcxMzgwMzA3M2M0MzM3OTIuLmNhYzRjZmE2ZGI1MTNhODBj
NDI4ODRjYjZjZWE5MmI3YWRmNjZlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtNzgzMiwxNCArNzgzMiw2IEBAIHN0YXRpYyBjb25zdCBWZWN0b3I8QVND
SUlMaXRlcmFsPiYgbWVkaWFSZWxhdGVkSU9LaXRDbGFzc2VzKCkKICAgICB9KTsKICAgICByZXR1
cm4gc2VydmljZXM7CiB9Ci0KLXN0YXRpYyBjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgdGVt
cG9yYXJ5TWFjaFNlcnZpY2VzKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBzZXJ2aWNlcyA9
IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8QVNDSUlMaXRlcmFsPiB7Ci0gICAgICAgICJjb20u
YXBwbGUuY29yZW1lZGlhLnJvdXRpbmdjb250ZXh0LnhwYyJfcyAvLyBSZW1vdmUgYWZ0ZXIgPHJk
YXI6Ly83NjQwMzMwMj4gaXMgZml4ZWQuCi0gICAgfSk7Ci0gICAgcmV0dXJuIHNlcnZpY2VzOwot
fQogI2VuZGlmCiAKIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVh
dGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBEcmF3aW5nQXJlYVByb3h5
JiBkcmF3aW5nQXJlYSwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNpdGVQb2xp
Y2llcykKQEAgLTc5MzUsOSArNzkyNyw2IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2Vi
UGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAgICAg
ICAgIC8vIEZJWE1FKDIwNzcxNik6IFRoZSBmb2xsb3dpbmcgc2hvdWxkIGJlIHJlbW92ZWQgd2hl
biB0aGUgR1BVIHByb2Nlc3MgaXMgY29tcGxldGUuCiAgICAgICAgIHBhcmFtZXRlcnMubWVkaWFF
eHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hM
b29rdXAobWVkaWFSZWxhdGVkTWFjaFNlcnZpY2VzKCksIFdURjo6bnVsbG9wdCk7CiAgICAgICAg
IHBhcmFtZXRlcnMubWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMobWVkaWFSZWxhdGVkSU9LaXRD
bGFzc2VzKCksIFdURjo6bnVsbG9wdCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gRklYTUUo
MjI0MzI3KTogUmVtb3ZlIHRoaXMgZWxzZSBjbGF1c2Ugb25jZSA8cmRhcjovLzc2NDAzMzAyPiBp
cyBmaXhlZC4KLSAgICAgICAgcGFyYW1ldGVycy5tZWRpYUV4dGVuc2lvbkhhbmRsZXMgPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCh0ZW1wb3JhcnlNYWNoU2Vy
dmljZXMoKSwgV1RGOjpudWxsb3B0KTsKICAgICB9CiAKICAgICBpZiAoIXByZWZlcmVuY2VzKCku
dXNlR1BVUHJvY2Vzc0Zvck1lZGlhRW5hYmxlZCgpCkBAIC05NDAzLDcgKzkzOTIsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJv
b2wgZW5hYmxlZCkKICAgICBwYWdlQ2xpZW50KCkubWVkaWFTZXNzaW9uTWFuYWdlcigpLnNldE1v
Y2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChlbmFibGVkKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUg
c3RhdGUpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCiB7CiAgICAgcGFnZUNsaWVudCgpLm1lZGlhU2Vzc2lv
bk1hbmFnZXIoKS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKG5hbWUsIHN0
YXRlKTsKIH0KQEAgLTk0MTgsNyArOTQwNywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGxh
eWJhY2tUYXJnZXQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBjb250ZQog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRTZWxlY3RlZChjb250ZXh0SWQsIHRh
cmdldC0+dGFyZ2V0Q29udGV4dCgpKSk7CisgICAgYXV0byBjb250ZXh0ID0gdGFyZ2V0LT50YXJn
ZXRDb250ZXh0KCk7CisgICAgQVNTRVJUKGNvbnRleHQudHlwZSgpICE9IE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0KTsKKyAgICBpZiAo
cHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yTWVkaWFFbmFibGVkKCkgJiYgIWNvbnRleHQu
c2VyaWFsaXplT3V0cHV0Q29udGV4dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFja1RhcmdldFNlbGVjdGVkKGNvbnRleHRJZCwgY29udGV4
dCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGVEaWRDaGFuZ2UoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0
SWQsIGJvb2wgYXZhaWxhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApp
bmRleCA5YjdkYzA2ZjYxZmJjNDczMmViYjliYmY1NGQ1ODUyODlmNDcxZDYwLi41ZjE2ODJlNTI5
M2QxMzMwNmUwYmMzNDMwODI3ZGE3M2M5OTE3NWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtMTU2Nyw3ICsxNTY3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2hv
d1BsYXliYWNrVGFyZ2V0UGlja2VyKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4
dElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGJvb2wgaGFzVmlkZW8pOwog
ICAgIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5nZShXZWJDb3Jl
OjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVBy
b2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpOwogICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpOwotICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6U3RhdGUpOworICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6TW9ja1N0YXRlKTsKICAgICB2b2lkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
RGlzbWlzc1BvcHVwKCk7CiAKICAgICAvLyBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggMmNhYzNmMWNiMDVkMWNkN2I1Zjc3MWVlMTJjMGU3MjllMWYxZDhjZi4uN2U5OGIwODhkOTIy
ZWUxMTQ0OTczMGEwZTU1ODEyYmUyNjQ0NzUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNDc2LDcgKzQ3Niw3IEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKFdlYkNv
cmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBXZWJD
b3JlOjpGbG9hdFJlY3QgcGlja2VyTG9jYXRpb24sIGJvb2wgaGFzVmlkZW8pCiAgICAgUGxheWJh
Y2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpQbGF5YmFja1Rhcmdl
dENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgdW5zaWduZWQgbWVkaWFTdGF0ZSkK
ICAgICBTZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBlbmFibGVk
KQotICAgIFNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoU3RyaW5nIG5hbWUs
IHVuc2lnbmVkIHBpY2tlclN0YXRlKQorICAgIFNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyU3RhdGUoU3RyaW5nIG5hbWUsIGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHBpY2tlclN0YXRlKQogICAgIE1vY2tNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCkKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyLmNwcAppbmRleCAyYWI1ZjkxM2NkZTgzY2VkYzU0YTdhOGZlMGVlMDk1
M2JjZTQ0OTViLi40ODYyYWY3NjQ1NjdkNmJmNmFmZjY4ZDI4NzhmOGY5NGUxOTU4ZjI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAKQEAgLTgxLDEyICs4MSwxMSBAQCB2
b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6cHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlv
blBJRChpbnQgcGlkKQogCiB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlVmlk
ZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0c0FpclBsYXlWaWRlbyBzdXBwb3J0c0FpclBsYXlWaWRl
bywgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmJiB0YXJnZXRDb250ZXh0KQogewotICAgIGlm
ICh0YXJnZXRDb250ZXh0LnR5cGUoKSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6QVZP
dXRwdXRDb250ZXh0VHlwZSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBB
U1NFUlQodGFyZ2V0Q29udGV4dC50eXBlKCkgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
OlR5cGU6OkFWT3V0cHV0Q29udGV4dCk7CisgICAgaWYgKHRhcmdldENvbnRleHQudHlwZSgpID09
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQpCiAgICAg
ICAgIHJldHVybjsKLSAgICB9CiAKLSAgICBXZWJDb3JlOjpNZWRpYVNlc3Npb25IZWxwZXI6OmFj
dGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2Uoc3VwcG9ydHNBaXJQbGF5VmlkZW8sIFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKHRhcmdldENvbnRleHQuYXZPdXRwdXRDb250
ZXh0KCkpKTsKKyAgICBXZWJDb3JlOjpNZWRpYVNlc3Npb25IZWxwZXI6OmFjdGl2ZVZpZGVvUm91
dGVEaWRDaGFuZ2Uoc3VwcG9ydHNBaXJQbGF5VmlkZW8sIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb2NvYTo6Y3JlYXRlKFdURk1vdmUodGFyZ2V0Q29udGV4dCkpKTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcAppbmRleCBiY2M0YzE3YWMyOTUyMTJjYmE2NGRlZGQxYzliM2E5MDZj
YTA1MTAxLi41ZmM4NTU2Mzc2MGVhNzVlYzEyZWQxNGE5ZTI3MzY4MWYyNTFjMDkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcApAQCAtMTM1Miw3ICsxMzUyLDcgQEAgdm9pZCBXZWJDaHJvbWVDbGll
bnQ6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sIGVuYWJsZWQp
CiAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0TW9ja01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGVuYWJsZWQpKTsKIH0KIAotdm9pZCBXZWJDaHJvbWVD
bGllbnQ6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5n
JiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCit2b2lkIFdl
YkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25z
dCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3Rh
dGUpCiB7CiAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0TW9ja01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShuYW1lLCBzdGF0ZSkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCmluZGV4IDY4MTJlNjQyZmVjZGNhYTdiMWY1MWZlMDcxMjU4MGE3ZDQyYzRlZjAuLjU2
Y2Y2YjkyZWQ5YTEwMzZkYmQ3ZDA2NDg2M2M0ZTc2ODE0MmNkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKQEAgLTM3OCw3ICszNzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFy
Z2V0UGlja2VyKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgYm9vbCkgZmluYWw7CiAgICAgdm9pZCBwbGF5YmFj
a1RhcmdldFBpY2tlckNsaWVudFN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0
Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3Rh
dGVGbGFncykgZmluYWw7CiAgICAgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ckVuYWJsZWQoYm9vbCkgZmluYWw7Ci0gICAgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpTdGF0ZSkgZmluYWw7CisgICAgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpNb2NrU3RhdGUpIGZpbmFsOwogICAgIHZvaWQgbW9ja01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJEaXNtaXNzUG9wdXAoKSBmaW5hbDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYWViMjVkYWI4NDIwNjg0YTk1MDIzODZh
YmY4M2FlNmJlMzhjZTk4Ni4uMWU2MzM3OWNhZjg3N2I1OTI2NmJmYzcwMzcwOTE2MDA5NjAzNmVh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTc5
MSw3ICsxNzkxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFNob3VsZERpc3BhdGNoRmFrZU1v
dXNlTW92ZUV2ZW50cyhib29sIGRpc3BhdGNoKSB7IG1fc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VN
b3ZlRXZlbnRzID0gZGlzcGF0Y2g7IH0KIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHZvaWQgcGxheWJhY2tUYXJnZXRT
ZWxlY3RlZChXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgb3V0cHV0RGV2aWNlKSBj
b25zdDsKKyAgICB2b2lkIHBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQoV2ViQ29yZTo6UGxheWJhY2tU
YXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQmJikgY29uc3Q7CiAgICAgdm9pZCBwbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eURp
ZENoYW5nZShXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBi
b29sKTsKICAgICB2b2lkIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KFdlYkNvcmU6OlBs
YXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGJvb2wpOwogICAgIHZvaWQgcGxh
eWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGll
bnRDb250ZXh0SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDc0ZGE2MzU3ODgyY2QwMTMwMjA4NDA5N2Yw
NjRkMjFjM2I5MTVkMDQuLjYyZTc5OGZlNGNkNWQ3MGI5YjIzZjAwODY3YjU4ZGE0YTI3NThmMTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tCkBAIC0zNSw3ICszNSw2IEBACiAjaW1wb3J0ICJGb250SW5mby5oIgogI2ltcG9ydCAi
RnJhbWVJbmZvRGF0YS5oIgogI2ltcG9ydCAiSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Lmgi
Ci0jaW1wb3J0ICJQREZLaXRTb2Z0TGluay5oIgogI2ltcG9ydCAiUERGUGx1Z2luLmgiCiAjaW1w
b3J0ICJQYWdlQmFubmVyLmgiCiAjaW1wb3J0ICJQbHVnaW5WaWV3LmgiCkBAIC05OSw5ICs5OCwx
MiBAQAogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICNpbXBvcnQgPFdl
YkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmg+CisjaW1wb3J0IDxXZWJDb3JlL01lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL01lZGlhUGxheWJhY2tU
YXJnZXRNb2NrLmg+CiAjZW5kaWYKIAorI2ltcG9ydCAiUERGS2l0U29mdExpbmsuaCIKKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTA0MiwxNiAr
MTA0NCwxNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZFVwZGF0ZVJlbmRlcmluZygpCiB9CiAKICNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LXZvaWQgV2ViUGFnZTo6cGxheWJhY2tUYXJnZXRTZWxlY3RlZChQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQmIHRhcmdldENvbnRleHQpIGNvbnN0Cit2b2lkIFdlYlBhZ2U6OnBsYXli
YWNrVGFyZ2V0U2VsZWN0ZWQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBj
b250ZXh0SWQsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiYgdGFyZ2V0Q29u
dGV4dCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKHRhcmdldENvbnRleHQudHlwZSgpKSB7Ci0gICAg
Y2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6QVZPdXRwdXRDb250ZXh0VHlwZToKLSAg
ICAgICAgbV9wYWdlLT5zZXRQbGF5YmFja1RhcmdldChjb250ZXh0SWQsIFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKHRhcmdldENvbnRleHQuYXZPdXRwdXRDb250ZXh0
KCkpKTsKKyAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1
dENvbnRleHQ6CisgICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6U2Vy
aWFsaXplZEFWT3V0cHV0Q29udGV4dDoKKyAgICAgICAgbV9wYWdlLT5zZXRQbGF5YmFja1Rhcmdl
dChjb250ZXh0SWQsIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKFdURk1vdmUodGFy
Z2V0Q29udGV4dCkpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6TW9ja1R5cGU6Ci0gICAgICAgIG1fcGFnZS0+c2V0UGxheWJhY2tUYXJnZXQo
Y29udGV4dElkLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6Y3JlYXRlKHRhcmdl
dENvbnRleHQubW9ja0RldmljZU5hbWUoKSwgdGFyZ2V0Q29udGV4dC5tb2NrU3RhdGUoKSkpOwor
ICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2s6CisgICAgICAg
IG1fcGFnZS0+c2V0UGxheWJhY2tUYXJnZXQoY29udGV4dElkLCBNZWRpYVBsYXliYWNrVGFyZ2V0
TW9jazo6Y3JlYXRlKHRhcmdldENvbnRleHQuZGV2aWNlTmFtZSgpLCB0YXJnZXRDb250ZXh0Lm1v
Y2tTdGF0ZSgpKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6Ok5vbmU6CisgICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlw
ZTo6Tm9uZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggYjg5YjI2NmMzZDc5YWNkMjQxZGYzNmI1ZmNlMmYx
ZDJlZDhkYjc0OC4uZjNkNDcxNmE4OTMzZDlmMjQyZjhlZjEyMTVhODY2MjM0MGY4OTdhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKQEAgLTI0Myw3ICsyNDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2hv
d1BsYXliYWNrVGFyZ2V0UGlja2VyKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4
dElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgYm9vbCAvKiBoYXNWaWRlbyAq
LykgZmluYWw7CiAgICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tlckNsaWVudFN0YXRlRGlkQ2hh
bmdlKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIFdlYkNv
cmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncykgZmluYWw7CiAgICAgdm9pZCBzZXRN
b2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCkgZmluYWw7Ci0gICAgdm9p
ZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSkgZmluYWw7CisgICAgdm9p
ZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpIGZpbmFsOwogICAg
IHZvaWQgbW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKSBvdmVycmlk
ZTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KaW5kZXggYjM0ZThkOWQ4ZWU5MTVjNjFhMGM0
OWZmNDBlMmQ2NmZlZDI0YTA0ZS4uYzk2NDgzZmY5NmViN2ZkOGNjMTk1MjdjMzU0NWQ5YjgzYjE0
YTliOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQpAQCAtMTEyOSw3ICsxMTI5LDcgQEAgdm9pZCBXZWJD
aHJvbWVDbGllbnQ6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29s
IGVuYWJsZWQpCiAgICAgW21fd2ViVmlldyBfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJFbmFibGVkOmVuYWJsZWRdOwogfQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0TW9ja01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwg
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSkKIHsKICAgICBbbV93
ZWJWaWV3IF9zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck5hbWU6bmFtZSBzdGF0ZTpz
dGF0ZV07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oCmluZGV4IDBiOTIzODM1ZTllMTVi
NmI4MDQ1YjQ5YWZlMjllNmFhYjAzZWNmY2EuLjhjYTMyOTQ3YTViNDZlMDY3YjhlOGJhZTQ0NjM5
M2ViYjkwZTg2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oCkBAIC01Myw3ICs1Myw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJDb3JlOjpQ
bGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmLCBib29sIGhhc1ZpZGVvKTsKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0UGlja2VyQ2xp
ZW50U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRl
bnRpZmllciwgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsKICAgICB2
b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sKTsKLSAgICB2
b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwg
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKTsKKyAgICB2b2lkIHNl
dE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSk7CiAgICAgdm9pZCBtb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCgpOwogCiAgICAgdm9pZCBpbnZh
bGlkYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0KaW5kZXggNzM0NDM1Njc1YWI4
MDliNTBlYzVlZjM4YWI5Zjc3Y2ExNDhiMzFmMS4uN2RiZDU4OTQ3NTQwNWExNmViZGQwZmE5YmNm
YTYyYzMzN2U3NDE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbQpAQCAtNjgsNyAr
NjgsNyBAQCB2b2lkIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OnNldE1vY2tNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sCiAgICAgV2ViQ29yZTo6V2ViTWVkaWFTZXNz
aW9uTWFuYWdlcjo6c2hhcmVkKCkuc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFi
bGVkKGVuYWJsZWQpOwogfQogCi12b2lkIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OnNl
dE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCit2b2lkIFdl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKQogewogICAgIFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnNoYXJlZCgpLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUo
bmFtZSwgc3RhdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCmluZGV4IDViMGVlOGEzYWM4YzMzM2I2ZWUzNDRjZGQ5YzNiNTU3NjVjMjZmZjAuLjQ5MmFm
NjAxY2Y3YWM0ZGY0NjQ1MGIwOGFhYTVjMzIwZWEyZTZlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTkyMzIsNyArOTIzMiw3IEBAIGJvb2wgTGF5
ZXJGbHVzaENvbnRyb2xsZXI6OmZsdXNoTGF5ZXJzKCkKICAgICBbc2VsZiBfZGV2aWNlUGlja2Vy
XS0+c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGVuYWJsZWQpOwogfQog
Ci0tICh2b2lkKV9zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck5hbWU6KE5TU3RyaW5n
ICopbmFtZSBzdGF0ZTooV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRl
KXN0YXRlCistICh2b2lkKV9zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck5hbWU6KE5T
U3RyaW5nICopbmFtZSBzdGF0ZTooV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
Ok1vY2tTdGF0ZSlzdGF0ZQogewogICAgIFtzZWxmIF9kZXZpY2VQaWNrZXJdLT5zZXRNb2NrTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKG5hbWUsIHN0YXRlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDNhZTBk
M2FhMjYyZDk1MjMzMGMxYzgyYzMyNTUwZDlhMjFhNTAxNGYuLjA0YjhjMzY4Y2NhZjg1MjRkMDg1
OTM3MmQ2MDU4ZjQ4ZjE3YTZmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtMzI3LDcgKzMyNyw3IEBAIFdlYkxheW91dE1p
bGVzdG9uZXMga2l0TGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWls
ZXN0b25lPik7CiAtICh2b2lkKV9zaG93UGxheWJhY2tUYXJnZXRQaWNrZXI6KFdlYkNvcmU6OlBs
YXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIpY29udGV4dElkIGxvY2F0aW9uOihj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYpbG9jYXRpb24gaGFzVmlkZW86KEJPT0wpaGFzVmlkZW87
CiAtICh2b2lkKV9wbGF5YmFja1RhcmdldFBpY2tlckNsaWVudFN0YXRlRGlkQ2hhbmdlOihXZWJD
b3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyKWNvbnRleHRJZCBzdGF0
ZTooV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKXN0YXRlOwogLSAodm9p
ZClfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkOihib29sKWVuYWJsZWQ7
Ci0tICh2b2lkKV9zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck5hbWU6KE5TU3RyaW5n
ICopbmFtZSBzdGF0ZTooV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRl
KXN0YXRlOworLSAodm9pZClfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOihO
U1N0cmluZyAqKW5hbWUgc3RhdGU6KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpNb2NrU3RhdGUpc3RhdGU7CiAtICh2b2lkKV9tb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ckRpc21pc3NQb3B1cDsKICNlbmRpZgogCg==
</data>
<flag name="commit-queue"
          id="446349"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426149</attachid>
            <date>2021-04-15 16:02:30 -0700</date>
            <delta_ts>2021-04-15 19:20:10 -0700</delta_ts>
            <desc>[fast-cq] Patch for landing (v2)</desc>
            <filename>bug-224469-20210415160229.patch</filename>
            <type>text/plain</type>
            <size>84830</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWYwNTRjZDJlYzJlNTNk
MGYxNDZkOGI1OTIwNTlkNmRiNDMxNDgzZC4uZDVjOWJkZmIyMGM4MDkzZWEyNjM1Y2RmNzg2OTk5
ZTk0ZmU2NWU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDIxLTA0LTE1ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIFdlYkNvbnRlbnQg
cHJvY2VzcyBzaG91bGQgbm90IGNyZWF0ZSBBVk91dHB1dENvbnRleHQgaW5zdGFuY2VzIHdoZW4g
bWVkaWEgaW4gR1BVIFByb2Nlc3MgaXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBDYXJsc29uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbW9kaWZpZXMgYE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0YCB0byBwcm92aWRlIGludGVyZmFjZXMgdG8gc2VyaWFsaXplL2Rlc2VyaWFs
aXplCisgICAgICAgIGBBVk91dHB1dENvbnRleHRgIGFuZCBtb2RpZmllcyBgTWVkaWFQbGF5YmFj
a1RhcmdldENvY29hYCB0byB1c2UgYE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0YCB0bworICAg
ICAgICBtYW5hZ2UgaXRzIGBBVk91dHB1dENvbnRleHRgIGluc3RlYWQgb2Yga2VlcGluZyBhIHBv
aW50ZXIgdG8gdGhlIGBBVk91dHB1dENvbnRleHRgIG9iamVjdC4KKyAgICAgICAgV2l0aCB0aGVz
ZSBjaGFuZ2VzLCBhIFdlYkNvbnRlbnQgcHJvY2VzcyBjYW4gZm9yd2FyZCBhIHNlcmlhbGl6ZWQg
YEFWT3V0cHV0Q29udGV4dGAgb2JqZWN0CisgICAgICAgIHRvIG90aGVyIHByb2Nlc3NlcyAoZS5n
LiwgdGhlIEdQVSBwcm9jZXNzKSB3aXRob3V0IGRlc2VyaWFsaXppbmcgaXQuIFRoZXJlZm9yZSwg
dGhlIFdlYkNvbnRlbnQKKyAgICAgICAgcHJvY2VzcyBkb2VzIG5vdCBuZWVkIGFjY2VzcyB0byB0
aGUgQ29yZU1lZGlhIHJvdXRpbmcgc2VydmljZS4gU28gd2UgY2FuIHJlbW92ZSB0aGUgZml4IChy
Mjc1NjY5KQorICAgICAgICBmb3IgYnVnIDIyNDMyOC4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4
aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lv
bk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSk6CisgICAgICAgICogTW9kdWxl
cy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaDoKKworICAgICAgICAqIEhlYWRlcnMu
Y21ha2U6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIE1vZGlmeSB0aGUgcHJvamVjdCBmaWxl
IGJlY2F1c2UgYE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0YCBpcyB1c2VkIGluIENvY29hIHBv
cnRzIG9ubHkuCisKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRl
KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSk6CisgICAgICAgICogcGFnZS9QYWdl
Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0OjpoYXNBY3RpdmVSb3V0ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0OjpkZXZpY2VOYW1l
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQ6OnN1cHBvcnRz
UmVtb3RlVmlkZW9QbGF5YmFjayk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJn
ZXRDb2NvYS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpv
dXRwdXRDb250ZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjp+TWVkaWFQbGF5YmFj
a1RhcmdldENvY29hKToKKyAgICAgICAgKFdlYkNvcmU6OnRvTWVkaWFQbGF5YmFja1RhcmdldENv
Y29hKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6c3VwcG9y
dHNSZW1vdGVWaWRlb1BsYXliYWNrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6dGFyZ2V0Q29udGV4dCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6Omhhc0FjdGl2ZVJv
dXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXRDb2NvYTo6ZGV2aWNlTmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIERvbid0IGRpcmVj
dGx5IHVzZSBgQVZPdXRwdXRDb250ZXh0YCBpbiB0aGlzIGNsYXNzLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0V2ly
ZWxlc3NQbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCk6CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6bW9ja1N0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpvdXRwdXRDb250ZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpzZXJpYWxpemVkT3V0
cHV0Q29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6ZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW06IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpkZXZpY2VOYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpoYXNBY3RpdmVSb3V0ZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6c3VwcG9ydHNSZW1vdGVWaWRlb1Bs
YXliYWNrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpzZXJpYWxpemVPdXRwdXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpkZXNlcmlhbGl6ZU91dHB1dENvbnRleHQpOgorCisgICAgICAg
ICogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayk6Cisg
ICAgICAgIChXZWJDb3JlOjp0b01lZGlhUGxheWJhY2tUYXJnZXRNb2NrKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjp0YXJnZXRDb250ZXh0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmg6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6c3RhdGUgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OmV4
dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OmludmFs
aWRhdGVQbGF5YmFja1RhcmdldHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlck1vY2s6OnNldFN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmg6CisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRNb2NrTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlclN0YXRlKToKKwogMjAyMS0wNC0xNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBXVEY6OkZ1bmN0aW9uIGluc3RlYWQg
b2Ygc3RkOjpmdW5jdGlvbiBpbiBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeTo6YXR0cmlidXRl
QW5pbWF0b3JDcmVhdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY0ZmM3MjdkMjNhNmIwZjMyYjAxZjUyZTJmNGVk
Mjg5ZDlmNzQ5MjIuLjAyNDYzMjY3NWNmYmM2Y2U1NzdkYTk4MGRkMTkxZDVmMGQzYTRjN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjEtMDQtMTUgIFBlbmcgTGl1ICA8cGVuZy5saXU2
QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gV2ViQ29udGVudCBwcm9jZXNzIHNob3VsZCBu
b3QgY3JlYXRlIEFWT3V0cHV0Q29udGV4dCBpbnN0YW5jZXMgd2hlbiBtZWRpYSBpbiBHUFUgUHJv
Y2VzcyBpcyBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjQ0NjkKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRXaXJlbGVzc1BsYXliYWNr
VGFyZ2V0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuaDoKKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyUHJveHk6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UpOgorCisgICAgICAgICogU2hhcmVk
L0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxh
dGZvcm1EYXRhKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL21h
Yy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjplbmNvZGVQbGF0Zm9ybURh
dGEpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKTogRGVsZXRlZC4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0Ojpt
ZWRpYVJlbGF0ZWRJT0tpdENsYXNzZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c2V0UGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViS2l0Ojp0ZW1wb3Jh
cnlNYWNoU2VydmljZXMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZl
VmlkZW9Sb3V0ZURpZENoYW5nZSk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVu
dDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbGF5YmFja1Rh
cmdldFNlbGVjdGVkIGNvbnN0KToKKwogMjAyMS0wNC0xNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1NPVVBdIEJyaW5nIGJhY2sgdGhlIGNh
bGwgdG8gUmVzb3VyY2VSZXNwb25zZTo6c2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyBh
ZnRlciByMjc2MDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNmYxZjAyOTQwMWMw
YzkyNjRlNGYwNmExOTMxODY0ZWRhNWVmYTI3MC4uMzgyMzc4ZDcxOWEzZTYxZDNiMTJmNjNkOTk0
NWI0YzcyOTRiNjg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDIxLTA0LTE1ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0dQVVBdIFdlYkNvbnRlbnQgcHJvY2VzcyBzaG91bGQgbm90IGNyZWF0ZSBBVk91dHB1dENv
bnRleHQgaW5zdGFuY2VzIHdoZW4gbWVkaWEgaW4gR1BVIFByb2Nlc3MgaXMgZW5hYmxlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDY5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclN0YXRlKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXIuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXIubW06CisgICAgICAgIChXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpzZXRNb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZp
ZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyTmFtZTpzdGF0ZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgor
CiAyMDIxLTA0LTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIE5QQVBJIHBsdWdpbnMgaW4gV2ViVmlldwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKaW5kZXggZTExNTA1Y2RkMGY4ZTQzYjI4NzNkYjdhMWQ1ODFmOGRmOTg0
ZmViMy4uYzA0ZjgwNGVkOTM3YzY3MGFkZWY3YjNiNjg5ZDg5NWRmYTdlN2IwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCkBAIC0xMjY5LDcgKzEyNjksNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5cGVDYWNoZS5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldC5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldENsaWVudC5oCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllckVudW1zLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
LmNwcAppbmRleCA2YzZhYjBlN2E2MmVjNGRhNDVlZDNkYmM5NDE0NTUxNzVjZDQ0ZDVhLi5kNWI1
OTVhNGFjNDlmZjBlZmZlNjJiNDUyZWMzNDJiN2QzODMwNDg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3Bw
CkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRNb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBlbmFibGUKICAgICBtX21vY2tQ
aWNrZXJFbmFibGVkID0gZW5hYmxlZDsKIH0KIAotdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQordm9pZCBXZWJNZWRp
YVNlc3Npb25NYW5hZ2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNv
bnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBz
dGF0ZSkKIHsKICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwog
ICAgIG1vY2tQaWNrZXIoKS5zZXRTdGF0ZShuYW1lLCBzdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaAppbmRl
eCBkN2YyOGNjYjc1ZTVkNzU1ZGFmNDMzNGVmNjU2Y2IxNDE5MGZhYjU0Li4xYmExMjg0ZjIzMzNj
Nzg0NmFiODBkNGUxMWRiMmJmNGYwMjA2NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgKQEAgLTUxLDcgKzUx
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyJiBzaGFyZWQoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCk7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGFk
ZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQm
LCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IGVjZTQ2Y2ZhNDExOTgzNDUxNzhhNWQyN2Y3NzI3ZGI5MDczNThjYzkuLjFh
YjdmMjA0ODU0ZjgxZTE0Nzk1MDAzNmMzYzVmYzVlNjAzYWE0MjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dApAQCAtMzY5LDYgKzM2OSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlUG9vbENvY29hLm1tCiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JbnRSZWN0Q29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKK3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tCiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGEzODA1MzUzNjc4
NmYwMDBhYzgzOWEzYjgwNjljNzE0ZTQyMjZjMTUuLjU3MjViMjdjYzAwMDgwM2Q4MGFjZDU3ODhl
Y2QzOGI0MDA3MGEzODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTY5ODEsNiArNjk4MSw3IEBACiAJCTFEMDAyNkEzMjM3NEQ2
MjQwMENBNkNERiAvKiBKU1BpY3R1cmVJblBpY3R1cmVXaW5kb3cuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUQwMDI2QTgyMzc0RjlEOTAwQ0E2Q0RGIC8qIEpT
RW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxRDAwMjZBOTIzNzRGOUQ5MDBDQTZDREYgLyogSlNFbnRlclBpY3R1cmVJblBp
Y3R1cmVFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Vu
dGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUQwMDhBQTUyNjIxMDhDMDAwRUUzQURFIC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEMkM4MkI2MjM2QTNGNkEwMDU1RDZDNSAv
KiBQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQaWN0dXJlSW5QaWN0
dXJlU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDQ3NjU4RDI1Q0NB
Nzc4MDA3QUYzMTIgLyogSW1hZ2VEZWNvZGVySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bWFnZURlY29kZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFE
QUIzMTEzMjUxRDcyNUMwMEZDOTQ4NSAvKiBWaWRlb0xheWVyTWFuYWdlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBWaWRlb0xheWVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjY5NzEsNyArMjY5NzIsNiBAQAogCQkJCUNEREUwMkU5MThCM0RGQzcwMENGN0ZGMSAvKiBMZWdh
Y3lDRE1TZXNzaW9uLmggKi8sCiAJCQkJMDdFM0RGRDAxQTlFNzg2NTAwNzY0Q0E4IC8qIE1lZGlh
UGxheWJhY2tUYXJnZXQuaCAqLywKIAkJCQkwNzkyMTY1MzFBQTU2MEFBMDBBM0MwNDkgLyogTWVk
aWFQbGF5YmFja1RhcmdldENsaWVudC5oICovLAotCQkJCTA3Rjg3NjgzMUFENEE5NDUwMDkwNTg0
OSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oICovLAogCQkJCTA3OEU0M0Q3MUFCQjZD
N0UwMDFDMkZBNiAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmNwcCAqLywKIAkJCQkwNzhF
NDNEODFBQkI2QzdFMDAxQzJGQTYgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oICovLAog
CQkJCUU0QjQxRTBDMENCRjkwQkQwMEFGMkVDRSAvKiBNZWRpYVBsYXllci5jcHAgKi8sCkBAIC0y
NzE4Nyw2ICsyNzE4Nyw4IEBACiAJCQkJQUQ5RkY2RTAxOTA4MzkxRDAwM0I2MUUwIC8qIElPU3Vy
ZmFjZVBvb2xDb2NvYS5tbSAqLywKIAkJCQlDREM0OEFDODIxNDlDRjJBMDAyNEZENTkgLyogTWVk
aWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcCAqLywKIAkJCQlDREM0OEFDNzIx
NDlDRjJBMDAyNEZENTkgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmgg
Ki8sCisJCQkJMDdGODc2ODMxQUQ0QTk0NTAwOTA1ODQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0LmggKi8sCisJCQkJMUQwMDhBQTUyNjIxMDhDMDAwRUUzQURFIC8qIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0Lm1tICovLAogCQkJCTMxNjQ3RkE4MjUxNjE2QkQwMDEwRjhGQiAvKiBP
cGVuR0xTb2Z0TGlua0NvY29hLmggKi8sCiAJCQkJMzE2NDdGQTkyNTE2MTZCRDAwMTBGOEZCIC8q
IE9wZW5HTFNvZnRMaW5rQ29jb2EubW0gKi8sCiAJCQkJN0I2NEMwQjQyNTRDM0IxNjAwMDZCNEFG
IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0gKi8sCkBAIC0zMjEy
MCw2ICszMjEyMiw3IEBACiAJCQkJNDE2MkE0NTExMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUEzRDU4RjEwMUMxNTJE
MDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RDA2REZBNjEzNEE0REVGMDA2RjVEN0QgLyogRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFNEYzOEQxQjI2MjZGMTNCMDA3QjEwNjQgLyogRGVmYXVsdFJl
c291cmNlTG9hZFByaW9yaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDgzRDM2MjIxMTIyQTIx
MDA3NkUxMUMgLyogRGVmZXJyYWJsZVRhc2suaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDJD
MTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxheURTUEtlcm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkQzMTYwMkUxMkIwMjY3NjAwQzFBMzU5IC8qIERlbGF5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zNDYxOSw3ICszNDYyMiw2IEBACiAJCQkJQjU5NUZGNDcxODI0Q0VFMzAwRkY1MUNEIC8qIFJl
bmRlckl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VBNDg3QTA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTgwQ0ZGMEYxMkRFOUIw
MDUxRDY4OSAvKiBSZW5kZXJMYXllckJhY2tpbmcuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0RjM4
RDFCMjYyNkYxM0IwMDdCMTA2NCAvKiBEZWZhdWx0UmVzb3VyY2VMb2FkUHJpb3JpdHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGNTgwQ0ZEMEYxMkRFOUIwMDUxRDY4OSAvKiBSZW5kZXJMYXllckNv
bXBvc2l0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTNDMjQ0RkVBQTM3NUFDNjMzRjg4QkU2RiAv
KiBSZW5kZXJMYXllck1vZGVsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjUzRkI4NDIx
M0I3QTY0MDBDNDBEMzQgLyogUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCBkMGJjMzU1MGQ0ZDA4MzVjMzMz
ZTFmNDgzZjVmMjVhZGQwNDgzM2NlLi5kZjRjOWMxZjg0ZWNhMjBlN2IxZmJkMzdjMTQzOGM1ZTBh
YmIwZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTUxMyw3ICs1MTMsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihQbGF5
YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBjb25zdCBJbnRQb2ludCYsIGJvb2wg
Lyppc1ZpZGVvKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tlckNs
aWVudFN0YXRlRGlkQ2hhbmdlKFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIs
IE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNl
dE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sKSAgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3Ry
aW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcm
LCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgbW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKSB7IH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBiZDllNTM4MmJjOWRjY2JhZmZlYzZiMzk0MjIy
NGM4ZDVlYTY2YjlhLi5jZGJmZmEwYzZhMDUyYjBlMWZhMDFjZDFmZDkzMWRiY2JmZGRmNTY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTI5NTIsNyArMjk1Miw3IEBAIHZvaWQgUGFnZTo6c2V0TW9j
a01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBjaHJv
bWUoKS5jbGllbnQoKS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoZW5h
YmxlZCk7CiB9CiAKLXZvaWQgUGFnZTo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJT
dGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0
ZSBzdGF0ZSkKK3ZvaWQgUGFnZTo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0
ZShjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3Rh
dGUgc3RhdGUpCiB7CiAgICAgY2hyb21lKCkuY2xpZW50KCkuc2V0TW9ja01lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJTdGF0ZShuYW1lLCBzdGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGQ0ODI4
MTY5MDU1M2UwNDZmNDcwMzQ3ZWQ2YmI0NTIxNWUyMDY0OWQuLjc3MDFiMDhjMWUzYzliOTRiMGIw
Y2RiMDY2MTkwOWMyMjIyMmY0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC03MzEsNyArNzMxLDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKFBsYXliYWNrVGFyZ2V0
Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGNvbnN0IEludFBvaW50JiwgYm9vbCwgUm91dGVTaGFy
aW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0UGlja2Vy
Q2xpZW50U3RhdGVEaWRDaGFuZ2UoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmll
ciwgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUo
Y29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUo
Y29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21p
c3NQb3B1cCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQbGF5YmFja1RhcmdldChQ
bGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBSZWY8TWVkaWFQbGF5YmFja1Rh
cmdldD4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXliYWNrVGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXliYWNrVGFyZ2V0LmgKaW5kZXggNmFkZmE5MzdmNzNmNTczZDk1YzlmY2Q3NGQ2ZDIx
Yjg3M2EyZjc4OC4uNjEyODA4NTAxZjA0ZjJmYTVkNGZiZGQ4MjZhNWVhMDk2ZjJhM2M3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1Rh
cmdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJh
Y2tUYXJnZXQuaApAQCAtMjcsMjQgKzI3LDIzIEBACiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQogCisjaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ7
Ci0KIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVBs
YXliYWNrVGFyZ2V0PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFQbGF5YmFja1Rhcmdl
dCgpID0gZGVmYXVsdDsKIAotICAgIGVudW0gVGFyZ2V0VHlwZSB7IEFWRm91bmRhdGlvbiwgTW9j
ayB9OworICAgIGVudW0gY2xhc3MgVGFyZ2V0VHlwZSA6IHVpbnQ4X3QgeyBBVkZvdW5kYXRpb24s
IE1vY2sgfTsKICAgICB2aXJ0dWFsIFRhcmdldFR5cGUgdGFyZ2V0VHlwZSgpIGNvbnN0ID0gMDsK
LQogICAgIHZpcnR1YWwgY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldENv
bnRleHQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGhhc0FjdGl2ZVJvdXRlKCkgY29u
c3QgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIGRldmljZU5hbWUoKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCBib29sIHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygpIGNvbnN0ID0gMDsKKwor
ICAgIGJvb2wgaGFzQWN0aXZlUm91dGUoKSBjb25zdCB7IHJldHVybiB0YXJnZXRDb250ZXh0KCku
aGFzQWN0aXZlUm91dGUoKTsgfQorICAgIFN0cmluZyBkZXZpY2VOYW1lKCkgY29uc3QgeyByZXR1
cm4gdGFyZ2V0Q29udGV4dCgpLmRldmljZU5hbWUoKTsgfQorICAgIGJvb2wgc3VwcG9ydHNSZW1v
dGVWaWRlb1BsYXliYWNrKCkgeyByZXR1cm4gdGFyZ2V0Q29udGV4dCgpLnN1cHBvcnRzUmVtb3Rl
VmlkZW9QbGF5YmFjaygpOyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWNlNGEzZWMzMDFlOWQ5ZTk3NDRkY2JmMjliN2E3
YTEwYmY0YjM0Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dF9oCi0jZGVmaW5lIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0X2gKLQotI2lmIEVO
QUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KLQotT0JKQ19DTEFTUyBBVk91dHB1dENvbnRleHQ7Ci0KLSNpZiBQTEFURk9STShD
T0NPQSkKLU9CSkNfQ0xBU1MgTlNLZXllZEFyY2hpdmVyOwotT0JKQ19DTEFTUyBOU0tleWVkVW5h
cmNoaXZlcjsKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0IHsKLXB1YmxpYzoKLSAgICBlbnVtIFR5cGUgOiBpbnQzMl90IHsK
LSAgICAgICAgTm9uZSwKLSAgICAgICAgQVZPdXRwdXRDb250ZXh0VHlwZSwKLSAgICAgICAgTW9j
a1R5cGUsCi0gICAgfTsKLQotICAgIGVudW0gQ29udGV4dFN0YXRlIHsKLSAgICAgICAgVW5rbm93
biA9IDAsCi0gICAgICAgIE91dHB1dERldmljZVVuYXZhaWxhYmxlID0gMSwKLSAgICAgICAgT3V0
cHV0RGV2aWNlQXZhaWxhYmxlID0gMiwKLSAgICB9OwotICAgIHR5cGVkZWYgdW5zaWduZWQgU3Rh
dGU7Ci0KLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCgpCi0gICAgICAgIDogbV90eXBl
KE5vbmUpCi0gICAgewotICAgIH0KLQotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KEFW
T3V0cHV0Q29udGV4dCAqb3V0cHV0Q29udGV4dCkKLSAgICAgICAgOiBtX3R5cGUoQVZPdXRwdXRD
b250ZXh0VHlwZSkKLSAgICAgICAgLCBtX291dHB1dENvbnRleHQob3V0cHV0Q29udGV4dCkKLSAg
ICB7Ci0gICAgfQotCi0gICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQoY29uc3QgU3RyaW5n
JiBuYW1lLCBTdGF0ZSBzdGF0ZSkKLSAgICAgICAgOiBtX3R5cGUoTW9ja1R5cGUpCi0gICAgICAg
ICwgbV9uYW1lKG5hbWUpCi0gICAgICAgICwgbV9zdGF0ZShzdGF0ZSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0KLSAgICBjb25zdCBT
dHJpbmcmIG1vY2tEZXZpY2VOYW1lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gTW9ja1R5cGUpOwotICAgICAgICByZXR1cm4gbV9uYW1lOwotICAgIH0KLQotICAgIFN0
YXRlIG1vY2tTdGF0ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IE1v
Y2tUeXBlKTsKLSAgICAgICAgcmV0dXJuIG1fc3RhdGU7Ci0gICAgfQotCi0gICAgQVZPdXRwdXRD
b250ZXh0ICphdk91dHB1dENvbnRleHQoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBBVk91dHB1dENvbnRleHRUeXBlKTsKLSAgICAgICAgcmV0dXJuIG1fb3V0cHV0Q29u
dGV4dDsKLSAgICB9Ci0KLSAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBj
b25zdCB7IHJldHVybiBtX3R5cGUgPT0gQVZPdXRwdXRDb250ZXh0VHlwZTsgfQotICAgIAotcHJp
dmF0ZToKLSAgICBUeXBlIG1fdHlwZSB7IE5vbmUgfTsKLSAgICBBVk91dHB1dENvbnRleHQgKm1f
b3V0cHV0Q29udGV4dCB7IG51bGxwdHIgfTsKLSAgICBTdHJpbmcgbV9uYW1lOwotICAgIFN0YXRl
IG1fc3RhdGUgeyBVbmtub3duIH07Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKQotCi0jZW5kaWYgLy8gTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmgKaW5kZXgg
NmE4ZTE5NDc2YTM0N2Q4ZTc0ODQxZmY2OWZiZDQ4YjA5MjIzYzg4OS4uNjhlMzUyY2EwOGM5OGJi
ZjFjOTlkZmEyNWE0OTAzNWRhYmYzNGI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBs
YXliYWNrVGFyZ2V0Q29jb2EuaApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpCiAKICNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0LmgiCi0j
aW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM2LDYgKzM1LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldENvY29hIDogcHVibGljIE1l
ZGlhUGxheWJhY2tUYXJnZXQgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gY3JlYXRlKEFWT3V0cHV0Q29udGV4dCAqKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IGNyZWF0ZShNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYm
ICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNU
KQogICAgIHN0YXRpYyBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gY3JlYXRlKCk7CkBAIC00Mywy
MSArNDMsMTQgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+TWVkaWFQbGF5YmFja1RhcmdldENv
Y29hKCk7CiAKLSAgICBUYXJnZXRUeXBlIHRhcmdldFR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBBVkZvdW5kYXRpb247IH0KLQotICAgIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
JiB0YXJnZXRDb250ZXh0KCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBoYXNBY3RpdmVSb3V0ZSgp
IGNvbnN0IGZpbmFsOwotICAgIFN0cmluZyBkZXZpY2VOYW1lKCkgY29uc3QgZmluYWw7Ci0gICAg
Ym9vbCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKSBjb25zdCBmaW5hbDsKLQotICAgIEFW
T3V0cHV0Q29udGV4dCAqb3V0cHV0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fb3V0cHV0Q29u
dGV4dC5nZXQoKTsgfQorICAgIFRhcmdldFR5cGUgdGFyZ2V0VHlwZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIFRhcmdldFR5cGU6OkFWRm91bmRhdGlvbjsgfQorICAgIGNvbnN0IE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0JiB0YXJnZXRDb250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9j
b250ZXh0OyB9CiAKIHByb3RlY3RlZDoKLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoQVZP
dXRwdXRDb250ZXh0ICopOworICAgIGV4cGxpY2l0IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShB
Vk91dHB1dENvbnRleHQgKik7CisgICAgZXhwbGljaXQgTWVkaWFQbGF5YmFja1RhcmdldENvY29h
KE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiYpOwogCi0gICAgUmV0YWluUHRyPEFWT3V0cHV0
Q29udGV4dD4gbV9vdXRwdXRDb250ZXh0OwotICAgIG11dGFibGUgTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQgbV9jb250ZXh0OwotICAgIFN0cmluZyBtX2RldmljZU5hbWU7CisgICAgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQgbV9jb250ZXh0OwogfTsKIAogTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hKiB0b01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShNZWRpYVBsYXliYWNrVGFyZ2V0Kik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5tbQppbmRleCBk
YWM4Y2M0ODE1NmMyYzdlNzRlYWFjN2I0ZGRlNGJjMjE3NzUxOWFhLi42ZjVjMjdlMzk0MGUzYTA4
N2JmMjFiOGY0MDA0MWI0NzUwZGRkYTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBs
YXliYWNrVGFyZ2V0Q29jb2EubW0KQEAgLTM0LDkyICszNCwzNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29j
b2E6OmNyZWF0ZShBVk91dHB1dENvbnRleHQgKmNvbnRleHQpCitSZWY8TWVkaWFQbGF5YmFja1Rh
cmdldD4gTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUoQVZPdXRwdXRDb250ZXh0ICpv
dXRwdXRDb250ZXh0KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhUGxheWJhY2tU
YXJnZXRDb2NvYShjb250ZXh0KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFQbGF5
YmFja1RhcmdldENvY29hKG91dHB1dENvbnRleHQpKTsKIH0KIAotTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoQVZPdXRwdXRDb250ZXh0ICpjb250ZXh0
KQotICAgIDogTWVkaWFQbGF5YmFja1RhcmdldCgpCi0gICAgLCBtX291dHB1dENvbnRleHQoY29u
dGV4dCkKK1JlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6
OmNyZWF0ZShNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmIGNvbnRleHQpCiB7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFQbGF5YmFja1RhcmdldENvY29hKFdURk1vdmUoY29udGV4
dCkpKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NfRkFN
SUxZX1NJTVVMQVRPUikgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotUmVmPE1lZGlhUGxheWJh
Y2tUYXJnZXQ+IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKCkKK01lZGlhUGxheWJh
Y2tUYXJnZXRDb2NvYTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hKEFWT3V0cHV0Q29udGV4dCAq
b3V0cHV0Q29udGV4dCkKKyAgICA6IG1fY29udGV4dChvdXRwdXRDb250ZXh0KQogewotICAgIGF1
dG8gKnJvdXRpbmdDb250ZXh0VUlEID0gW1tQQUw6OmdldEFWQXVkaW9TZXNzaW9uQ2xhc3MoKSBz
aGFyZWRJbnN0YW5jZV0gcm91dGluZ0NvbnRleHRVSURdOwotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShbUEFMOjpnZXRBVk91dHB1dENvbnRleHRDbGFz
cygpIG91dHB1dENvbnRleHRGb3JJRDpyb3V0aW5nQ29udGV4dFVJRF0pKTsKIH0KLSNlbmRpZgog
Ci1ib29sIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6c3VwcG9ydHNSZW1vdGVWaWRlb1BsYXli
YWNrKCkgY29uc3QKK01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6TWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hKE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiYgY29udGV4dCkKKyAgICA6IG1fY29u
dGV4dChXVEZNb3ZlKGNvbnRleHQpKQogewotICAgIGlmICghbV9vdXRwdXRDb250ZXh0KQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIVttX291dHB1dENvbnRleHQgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNlcyldIHx8ICFb
bV9vdXRwdXRDb250ZXh0IHN1cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2VzXSB8fCAhW21fb3V0
cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dERldmljZXMpXSkg
ewotICAgICAgICBpZiAoYXV0byAqb3V0cHV0RGV2aWNlID0gW21fb3V0cHV0Q29udGV4dCBvdXRw
dXREZXZpY2VdKSB7Ci0gICAgICAgICAgICBpZiAob3V0cHV0RGV2aWNlLmRldmljZUZlYXR1cmVz
ICYgQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8pCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgZm9y
IChBVk91dHB1dERldmljZSAqb3V0cHV0RGV2aWNlIGluIFttX291dHB1dENvbnRleHQgb3V0cHV0
RGV2aWNlc10pIHsKLSAgICAgICAgaWYgKG91dHB1dERldmljZS5kZXZpY2VGZWF0dXJlcyAmIEFW
T3V0cHV0RGV2aWNlRmVhdHVyZVZpZGVvKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotCi0gICAgcmV0dXJuIGZhbHNlOwogfQogCi1NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6On5N
ZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoKQotewotfQotCi1jb25zdCBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dCYgTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjp0YXJnZXRDb250ZXh0KCkgY29u
c3QKLXsKLSAgICBtX2NvbnRleHQgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChtX291dHB1
dENvbnRleHQuZ2V0KCkpOwotICAgIHJldHVybiBtX2NvbnRleHQ7Ci19Ci0KLWJvb2wgTWVkaWFQ
bGF5YmFja1RhcmdldENvY29hOjpoYXNBY3RpdmVSb3V0ZSgpIGNvbnN0CisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKSAmJiAhUExBVEZP
Uk0oTUFDQ0FUQUxZU1QpCitSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gTWVkaWFQbGF5YmFja1Rh
cmdldENvY29hOjpjcmVhdGUoKQogewotICAgIGlmICghbV9vdXRwdXRDb250ZXh0KQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHN1cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2VzKV0gJiYgW21fb3V0
cHV0Q29udGV4dCBzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNlc10gJiYgW21fb3V0cHV0Q29u
dGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dERldmljZXMpXSkgewotICAg
ICAgICBmb3IgKEFWT3V0cHV0RGV2aWNlICpvdXRwdXREZXZpY2UgaW4gW21fb3V0cHV0Q29udGV4
dCBvdXRwdXREZXZpY2VzXSkgewotICAgICAgICAgICAgaWYgKG91dHB1dERldmljZS5kZXZpY2VG
ZWF0dXJlcyAmIChBVk91dHB1dERldmljZUZlYXR1cmVWaWRlbyB8IEFWT3V0cHV0RGV2aWNlRmVh
dHVyZUF1ZGlvKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoW21fb3V0cHV0Q29udGV4dCBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dERldmljZSldKSB7Ci0gICAgICAgIGlm
IChhdXRvICpvdXRwdXREZXZpY2UgPSBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmljZV0pCi0g
ICAgICAgICAgICByZXR1cm4gb3V0cHV0RGV2aWNlLmRldmljZUZlYXR1cmVzICYgKEFWT3V0cHV0
RGV2aWNlRmVhdHVyZVZpZGVvIHwgQVZPdXRwdXREZXZpY2VGZWF0dXJlQXVkaW8pOwotICAgIH0K
LQotICAgIHJldHVybiBtX291dHB1dENvbnRleHQuZ2V0KCkuZGV2aWNlTmFtZTsKKyAgICBhdXRv
ICpyb3V0aW5nQ29udGV4dFVJRCA9IFtbUEFMOjpnZXRBVkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hh
cmVkSW5zdGFuY2VdIHJvdXRpbmdDb250ZXh0VUlEXTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoW1BBTDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3Mo
KSBvdXRwdXRDb250ZXh0Rm9ySUQ6cm91dGluZ0NvbnRleHRVSURdKSk7CiB9CisjZW5kaWYKIAot
U3RyaW5nIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6ZGV2aWNlTmFtZSgpIGNvbnN0CitNZWRp
YVBsYXliYWNrVGFyZ2V0Q29jb2E6On5NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoKQogewotICAg
IGlmICghbV9vdXRwdXRDb250ZXh0KQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQot
ICAgIGlmICghW21fb3V0cHV0Q29udGV4dCBzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNlc10p
Ci0gICAgICAgIHJldHVybiBbbV9vdXRwdXRDb250ZXh0IGRldmljZU5hbWVdOwotCi0gICAgYXV0
byBvdXRwdXREZXZpY2VOYW1lcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dF0pOwotICAgIGZvciAoQVZPdXRwdXREZXZpY2UgKm91dHB1dERldmljZSBpbiBbbV9vdXRwdXRD
b250ZXh0IG91dHB1dERldmljZXNdKQotICAgICAgICBbb3V0cHV0RGV2aWNlTmFtZXMgYWRkT2Jq
ZWN0OltvdXRwdXREZXZpY2UgZGV2aWNlTmFtZV1dOwotCi0gICAgcmV0dXJuIFtvdXRwdXREZXZp
Y2VOYW1lcyBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6QCIgKyAiXTsKIH0KIAogTWVkaWFQbGF5
YmFja1RhcmdldENvY29hKiB0b01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShNZWRpYVBsYXliYWNr
VGFyZ2V0KiByZXApCkBAIC0xMjksNyArNzMsNyBAQCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2Eq
IHRvTWVkaWFQbGF5YmFja1RhcmdldENvY29hKE1lZGlhUGxheWJhY2tUYXJnZXQqIHJlcCkKIAog
Y29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENvY29hKiB0b01lZGlhUGxheWJhY2tUYXJnZXRDb2Nv
YShjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0KiByZXApCiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04ocmVwLT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1Rhcmdl
dDo6QVZGb3VuZGF0aW9uKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKHJlcC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6OlRhcmdldFR5
cGU6OkFWRm91bmRhdGlvbik7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb2NvYSo+KHJlcCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4
IDIwYjI0MTJmMTEzNjYzYzFmMzg2MmYyN2I2NjI0MDBmNmNkYjA3MmIuLjBhYzA5M2U1MGNhMjk4
MGM1OWEzMjdhMmMyZTg4MWVjZGZiMWJiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAt
MjgyNCw3ICsyODI0LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojppc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKCkgY29uc3QKIAogI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGlmIChtX3BsYXliYWNrVGFyZ2V0KSB7Ci0gICAgICAgIGlmICht
X3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldDo6QVZG
b3VuZGF0aW9uKQorICAgICAgICBpZiAobV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09
IE1lZGlhUGxheWJhY2tUYXJnZXQ6OlRhcmdldFR5cGU6OkFWRm91bmRhdGlvbikKICAgICAgICAg
ICAgIHdpcmVsZXNzVGFyZ2V0ID0gbV9hdlBsYXllciAmJiBtX2F2UGxheWVyLmdldCgpLmV4dGVy
bmFsUGxheWJhY2tBY3RpdmU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHdpcmVsZXNzVGFy
Z2V0ID0gbV9zaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCAmJiBtX3BsYXliYWNrVGFyZ2V0LT5o
YXNBY3RpdmVSb3V0ZSgpOwpAQCAtMjk2OCw3ICsyOTY4LDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRp
YVBsYXkKIHsKICAgICBtX3BsYXliYWNrVGFyZ2V0ID0gV1RGTW92ZSh0YXJnZXQpOwogCi0gICAg
bV9vdXRwdXRDb250ZXh0ID0gbV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09IE1lZGlh
UGxheWJhY2tUYXJnZXQ6OkFWRm91bmRhdGlvbiA/IHRvTWVkaWFQbGF5YmFja1RhcmdldENvY29h
KG1fcGxheWJhY2tUYXJnZXQuZ2V0KCkpLT5vdXRwdXRDb250ZXh0KCkgOiBudWxscHRyOworICAg
IG1fb3V0cHV0Q29udGV4dCA9IG1fcGxheWJhY2tUYXJnZXQtPnRhcmdldFR5cGUoKSA9PSBNZWRp
YVBsYXliYWNrVGFyZ2V0OjpUYXJnZXRUeXBlOjpBVkZvdW5kYXRpb24gPyB0b01lZGlhUGxheWJh
Y2tUYXJnZXRDb2NvYShtX3BsYXliYWNrVGFyZ2V0LmdldCgpKS0+dGFyZ2V0Q29udGV4dCgpLm91
dHB1dENvbnRleHQoKSA6IG51bGxwdHI7CiAKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsK
IApAQCAtMjk4OCw3ICsyOTg4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sIHNob3UKIAogICAgIElO
Rk9fTE9HKExPR0lERU5USUZJRVIsIHNob3VsZFBsYXkpOwogCi0gICAgaWYgKG1fcGxheWJhY2tU
YXJnZXQtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpBVkZvdW5kYXRpb24p
IHsKKyAgICBpZiAobV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJh
Y2tUYXJnZXQ6OlRhcmdldFR5cGU6OkFWRm91bmRhdGlvbikgewogICAgICAgICBBVk91dHB1dENv
bnRleHQgKm5ld0NvbnRleHQgPSBzaG91bGRQbGF5ID8gbV9vdXRwdXRDb250ZXh0LmdldCgpIDog
bmlsOwogCiAgICAgICAgIGlmICghbV9hdlBsYXllcikKQEAgLTMwMDUsNyArMzAwNSw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0U2hvdWxkUGxheVRvUGxh
eWJhY2tUYXJnZXQoYm9vbCBzaG91CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NF
UlQobV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6
Ok1vY2spOworICAgIEFTU0VSVChtX3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVk
aWFQbGF5YmFja1RhcmdldDo6VGFyZ2V0VHlwZTo6TW9jayk7CiAKICAgICBzZXREZWxheUNhbGxi
YWNrcyh0cnVlKTsKICAgICBhdXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDZhNTBiMDA2ZWVh
MGE4YjIzNjI5NjE3NWZiZGY1YTg0Yzk3ZWMwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
LmgKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKK09CSkNfQ0xBU1MgQVZP
dXRwdXRDb250ZXh0OworT0JKQ19DTEFTUyBOU0RhdGE7CisjZW5kaWYKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCB7CitwdWJsaWM6Cisg
ICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7CisgICAgICAgIE5vbmUsCisgICAgICAgIEFW
T3V0cHV0Q29udGV4dCwKKyAgICAgICAgU2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCwKKyAgICAg
ICAgTW9jaywKKyAgICB9OworCisgICAgZW51bSBjbGFzcyBNb2NrU3RhdGUgOiB1aW50OF90IHsK
KyAgICAgICAgVW5rbm93biA9IDAsCisgICAgICAgIE91dHB1dERldmljZVVuYXZhaWxhYmxlID0g
MSwKKyAgICAgICAgT3V0cHV0RGV2aWNlQXZhaWxhYmxlID0gMiwKKyAgICB9OworCisgICAgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQoUmV0YWluUHRyPEFWT3V0cHV0Q29u
dGV4dD4mJik7CisKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChSZXRhaW5QdHI8TlNE
YXRhPiYmIHNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0LCBib29sIGhhc0FjdGl2ZVJvdXRlKQorICAg
ICAgICA6IG1fdHlwZShUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0KQorICAgICAgICAs
IG1fc2VyaWFsaXplZE91dHB1dENvbnRleHQoV1RGTW92ZShzZXJpYWxpemVkT3V0cHV0Q29udGV4
dCkpCisgICAgICAgICwgbV9jYWNoZWRIYXNBY3RpdmVSb3V0ZShoYXNBY3RpdmVSb3V0ZSkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX3NlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KTsKKyAgICB9CisK
KyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChjb25zdCBTdHJpbmcmIG1vY2tEZXZpY2VO
YW1lLCBNb2NrU3RhdGUgc3RhdGUpCisgICAgICAgIDogbV90eXBlKFR5cGU6Ok1vY2spCisgICAg
ICAgICwgbV9tb2NrRGV2aWNlTmFtZShtb2NrRGV2aWNlTmFtZSkKKyAgICAgICAgLCBtX21vY2tT
dGF0ZShzdGF0ZSkKKyAgICB7CisgICAgfQorCisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGRldmljZU5hbWUoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0FjdGl2ZVJvdXRlKCkgY29uc3Q7CisgICAg
Ym9vbCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKSBjb25zdDsKKworICAgIE1vY2tTdGF0
ZSBtb2NrU3RhdGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBl
OjpNb2NrKTsKKyAgICAgICAgcmV0dXJuIG1fbW9ja1N0YXRlOworICAgIH0KKworICAgIFJldGFp
blB0cjxBVk91dHB1dENvbnRleHQ+IG91dHB1dENvbnRleHQoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpBVk91dHB1dENvbnRleHQpOworICAgICAgICByZXR1
cm4gbV9vdXRwdXRDb250ZXh0OworICAgIH0KKworICAgIFJldGFpblB0cjxOU0RhdGE+IHNlcmlh
bGl6ZWRPdXRwdXRDb250ZXh0KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gVHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCk7CisgICAgICAgIHJldHVybiBtX3Nl
cmlhbGl6ZWRPdXRwdXRDb250ZXh0OworICAgIH0KKworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
c2VyaWFsaXplT3V0cHV0Q29udGV4dCgpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZGVzZXJp
YWxpemVPdXRwdXRDb250ZXh0KCk7CisKKyAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9y
bURhdGEoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6QVZPdXRwdXRDb250ZXh0IHx8
IG1fdHlwZSA9PSBUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0OyB9CisKK3ByaXZhdGU6
CisgICAgVHlwZSBtX3R5cGUgeyBUeXBlOjpOb25lIH07CisgICAgUmV0YWluUHRyPEFWT3V0cHV0
Q29udGV4dD4gbV9vdXRwdXRDb250ZXh0OworICAgIFJldGFpblB0cjxOU0RhdGE+IG1fc2VyaWFs
aXplZE91dHB1dENvbnRleHQ7CisgICAgYm9vbCBtX2NhY2hlZEhhc0FjdGl2ZVJvdXRlIHsgZmFs
c2UgfTsKKworICAgIFN0cmluZyBtX21vY2tEZXZpY2VOYW1lOworICAgIE1vY2tTdGF0ZSBtX21v
Y2tTdGF0ZSB7IE1vY2tTdGF0ZTo6VW5rbm93biB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZT4geworICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpUeXBlLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6VHlwZTo6Tm9uZSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQsCisgICAgICAg
IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrCisgICAgPjsK
K307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3Rh
dGUsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3Rh
dGU6OlVua25vd24sCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpNb2NrU3RhdGU6Ok91dHB1dERldmljZVVuYXZhaWxhYmxlLAorICAgICAgICBXZWJDb3JlOjpN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpPdXRwdXREZXZpY2VBdmFpbGFi
bGUKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40YmY4ZmFhYjAwMzkyNGI0NTRjMTQxYTcxNDU5OGU0MmE4N2Nj
OWYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW0KQEAgLTAsMCArMSwxNjIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQuaCIKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisK
KyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8b2JqYy9ydW50aW1l
Lmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oPgorI2ltcG9ydCA8
cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
KFJldGFpblB0cjxBVk91dHB1dENvbnRleHQ+JiYgb3V0cHV0Q29udGV4dCkKKyAgICA6IG1fb3V0
cHV0Q29udGV4dChvdXRwdXRDb250ZXh0KQoreworICAgIEFTU0VSVChtX291dHB1dENvbnRleHQp
OworICAgIG1fdHlwZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1
dENvbnRleHQ7Cit9CisKK1N0cmluZyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6ZGV2aWNl
TmFtZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6VHlwZTo6TW9jayB8fCBtX3R5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCk7CisKKyAgICBpZiAobV90eXBlID09IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrKQorICAgICAgICByZXR1cm4gbV9tb2NrRGV2
aWNlTmFtZTsKKworICAgIEFTU0VSVChtX3R5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCk7CisgICAgU3RyaW5nIGRldmljZU5hbWU7CisgICAg
aWYgKCFbbV9vdXRwdXRDb250ZXh0IHN1cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2VzXSkKKyAg
ICAgICAgZGV2aWNlTmFtZSA9IFttX291dHB1dENvbnRleHQgZGV2aWNlTmFtZV07CisgICAgZWxz
ZSB7CisgICAgICAgIGF1dG8gb3V0cHV0RGV2aWNlTmFtZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgZm9yIChBVk91dHB1dERldmljZSAqb3V0cHV0
RGV2aWNlIGluIFttX291dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlc10pCisgICAgICAgICAgICBb
b3V0cHV0RGV2aWNlTmFtZXMgYWRkT2JqZWN0OltvdXRwdXREZXZpY2UgZGV2aWNlTmFtZV1dOwor
CisgICAgICAgIGRldmljZU5hbWUgPSBbb3V0cHV0RGV2aWNlTmFtZXMgY29tcG9uZW50c0pvaW5l
ZEJ5U3RyaW5nOkAiICsgIl07CisgICAgfQorCisgICAgcmV0dXJuIGRldmljZU5hbWU7Cit9Citi
b29sIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpoYXNBY3RpdmVSb3V0ZSgpIGNvbnN0Cit7
CisgICAgQVNTRVJUKG1fdHlwZSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6
Tm9uZSk7CisgICAgaWYgKG1fdHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlw
ZTo6TW9jaykKKyAgICAgICAgcmV0dXJuICFtX21vY2tEZXZpY2VOYW1lLmlzRW1wdHkoKTsKKwor
ICAgIC8vIEZJWE1FOiBJdCBtYXkgbm90IGJlIHNhZmUgdG8gdXNlIHRoZSBjYWNoZWQgYGhhc0Fj
dGl2ZVJvdXRlYCBvZiBhIHNlcmlhbGl6ZWQgQVZPdXRwdXRDb250ZXh0CisgICAgaWYgKG1fdHlw
ZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0
Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIG1fY2FjaGVkSGFzQWN0aXZlUm91dGU7CisKKyAgICBB
U1NFUlQobV90eXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1
dENvbnRleHQpOworICAgIGJvb2wgaGFzQWN0aXZlUm91dGUgPSBmYWxzZTsKKyAgICBpZiAoW21f
b3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN1cHBvcnRzTXVsdGlw
bGVPdXRwdXREZXZpY2VzKV0gJiYgW21fb3V0cHV0Q29udGV4dCBzdXBwb3J0c011bHRpcGxlT3V0
cHV0RGV2aWNlc10gJiYgW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKG91dHB1dERldmljZXMpXSkgeworICAgICAgICBmb3IgKEFWT3V0cHV0RGV2aWNlICpvdXRw
dXREZXZpY2UgaW4gW21fb3V0cHV0Q29udGV4dCBvdXRwdXREZXZpY2VzXSkgeworICAgICAgICAg
ICAgaWYgKG91dHB1dERldmljZS5kZXZpY2VGZWF0dXJlcyAmIChBVk91dHB1dERldmljZUZlYXR1
cmVWaWRlbyB8IEFWT3V0cHV0RGV2aWNlRmVhdHVyZUF1ZGlvKSkKKyAgICAgICAgICAgICAgICBo
YXNBY3RpdmVSb3V0ZSA9IHRydWU7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKFttX291dHB1
dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdXRwdXREZXZpY2UpXSkgewor
ICAgICAgICBpZiAoYXV0byAqb3V0cHV0RGV2aWNlID0gW21fb3V0cHV0Q29udGV4dCBvdXRwdXRE
ZXZpY2VdKQorICAgICAgICAgICAgaGFzQWN0aXZlUm91dGUgPSBvdXRwdXREZXZpY2UuZGV2aWNl
RmVhdHVyZXMgJiAoQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8gfCBBVk91dHB1dERldmljZUZl
YXR1cmVBdWRpbyk7CisgICAgfSBlbHNlCisgICAgICAgIGhhc0FjdGl2ZVJvdXRlID0gbV9vdXRw
dXRDb250ZXh0LmdldCgpLmRldmljZU5hbWU7CisKKyAgICByZXR1cm4gaGFzQWN0aXZlUm91dGU7
Cit9Citib29sIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpzdXBwb3J0c1JlbW90ZVZpZGVv
UGxheWJhY2soKSBjb25zdAoreworICAgIEFTU0VSVChtX3R5cGUgPT0gTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6OlR5cGU6Ok1vY2sgfHwgbV90eXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQpOworICAgIGlmIChtX3R5cGUgPT0gTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2spCisgICAgICAgIHJldHVybiAhbV9tb2Nr
RGV2aWNlTmFtZS5pc0VtcHR5KCk7CisKKyAgICBib29sIHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5
YmFjayA9IGZhbHNlOworICAgIGlmICghW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHN1cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2VzKV0gfHwgIVttX291dHB1
dENvbnRleHQgc3VwcG9ydHNNdWx0aXBsZU91dHB1dERldmljZXNdIHx8ICFbbV9vdXRwdXRDb250
ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob3V0cHV0RGV2aWNlcyldKSB7CisgICAg
ICAgIGlmIChhdXRvICpvdXRwdXREZXZpY2UgPSBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmlj
ZV0pIHsKKyAgICAgICAgICAgIGlmIChvdXRwdXREZXZpY2UuZGV2aWNlRmVhdHVyZXMgJiBBVk91
dHB1dERldmljZUZlYXR1cmVWaWRlbykKKyAgICAgICAgICAgICAgICBzdXBwb3J0c1JlbW90ZVZp
ZGVvUGxheWJhY2sgPSB0cnVlOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9y
IChBVk91dHB1dERldmljZSAqb3V0cHV0RGV2aWNlIGluIFttX291dHB1dENvbnRleHQgb3V0cHV0
RGV2aWNlc10pIHsKKyAgICAgICAgICAgIGlmIChvdXRwdXREZXZpY2UuZGV2aWNlRmVhdHVyZXMg
JiBBVk91dHB1dERldmljZUZlYXR1cmVWaWRlbykKKyAgICAgICAgICAgICAgICBzdXBwb3J0c1Jl
bW90ZVZpZGVvUGxheWJhY2sgPSB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJu
IHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjazsKK30KKworYm9vbCBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6c2VyaWFsaXplT3V0cHV0Q29udGV4dCgpCit7CisgICAgQVNTRVJUKG1fdHlw
ZSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0
Q29udGV4dCk7CisgICAgaWYgKG1fdHlwZSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
VHlwZTo6QVZPdXRwdXRDb250ZXh0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRv
IGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdFJlcXVpcmlu
Z1NlY3VyZUNvZGluZzpZRVNdKTsKKyAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0Om1fb3V0cHV0
Q29udGV4dC5nZXQoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKKyAgICBb
YXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOworCisgICAgbV9zZXJpYWxpemVkT3V0cHV0Q29udGV4
dCA9IFthcmNoaXZlciBlbmNvZGVkRGF0YV07CisgICAgbV90eXBlID0gTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQ7CisgICAgbV9vdXRw
dXRDb250ZXh0LmNsZWFyKCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6ZGVzZXJpYWxpemVPdXRwdXRDb250ZXh0KCkKK3sKKyAgICBB
U1NFUlQobV90eXBlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1
dENvbnRleHQpOworICAgIGlmIChtX3R5cGUgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
OlR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOworICAgIGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0
TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdGcm9tRGF0YTptX3Nl
cmlhbGl6ZWRPdXRwdXRDb250ZXh0LmdldCgpIGVycm9yOm51bGxwdHJdKTsKKyAgICB1bmFyY2hp
dmVyLmdldCgpLmRlY29kaW5nRmFpbHVyZVBvbGljeSA9IE5TRGVjb2RpbmdGYWlsdXJlUG9saWN5
UmFpc2VFeGNlcHRpb247CisgICAgYXV0byBhbGxvd2VkQ2xhc3NTZXQgPSBhZG9wdE5TKFtbTlNT
ZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6QFsgUEFMOjpnZXRBVk91dHB1dENvbnRleHRDbGFzcygp
IF1dKTsKKworICAgIEB0cnkgeworICAgICAgICBpZCByZXN1bHQgPSBbdW5hcmNoaXZlciBkZWNv
ZGVPYmplY3RPZkNsYXNzZXM6YWxsb3dlZENsYXNzU2V0LmdldCgpIGZvcktleTpOU0tleWVkQXJj
aGl2ZVJvb3RPYmplY3RLZXldOworICAgICAgICBBU1NFUlQocmVzdWx0KTsKKyAgICAgICAgaWYg
KHJlc3VsdCkgeworICAgICAgICAgICAgbV9vdXRwdXRDb250ZXh0ID0gcmVzdWx0OworICAgICAg
ICAgICAgbV90eXBlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0
Q29udGV4dDsKKyAgICAgICAgICAgIG1fc2VyaWFsaXplZE91dHB1dENvbnRleHQuY2xlYXIoKTsK
KyAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOworICAgICAgICB9CisgICAgfSBAY2F0Y2ggKE5T
RXhjZXB0aW9uICpleGNlcHRpb24pIHsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVj
b2RlIG9iamVjdCBvZiBjbGFzcyBBVk91dHB1dENvbnRleHQgOiAlQCIsIGV4Y2VwdGlvbik7Cisg
ICAgfSBAZmluYWxseSB7CisgICAgICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAg
ICAgICAgdW5hcmNoaXZlci5nZXQoKS5kZWxlZ2F0ZSA9IG5pbDsKKyAgICB9CisKKyAgICByZXR1
cm4gc3VjY2VzczsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5jcHAKaW5kZXggNDU1Y2Vm
YzlmNmYwZGY0MTk2Nzc4Zjc1MTlmYjhiYjcxZjU1ZDUyMS4uMmEyYThkMGJjZjE2NWFkMGIyMWY1
YzlkMmE4NDcxNzczNWZiNGM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5jcHAKQEAgLTMwLDI2ICszMCwxOCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRp
YVBsYXliYWNrVGFyZ2V0TW9jazo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQorUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+
IE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKQogewogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKG5hbWUsIHN0YXRlKSk7CiB9CiAK
LU1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhjb25zdCBT
dHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKLSAg
ICA6IE1lZGlhUGxheWJhY2tUYXJnZXQoKQotICAgICwgbV9uYW1lKG5hbWUpCi0gICAgLCBtX3N0
YXRlKHN0YXRlKQorTWVkaWFQbGF5YmFja1RhcmdldE1vY2s6Ok1lZGlhUGxheWJhY2tUYXJnZXRN
b2NrKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tT
dGF0ZSBzdGF0ZSkKKyAgICA6IG1fY29udGV4dChuYW1lLCBzdGF0ZSkKIHsKIH0KIAogTWVkaWFQ
bGF5YmFja1RhcmdldE1vY2s6On5NZWRpYVBsYXliYWNrVGFyZ2V0TW9jaygpID0gZGVmYXVsdDsK
IAotY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIE1lZGlhUGxheWJhY2tUYXJnZXRN
b2NrOjp0YXJnZXRDb250ZXh0KCkgY29uc3QKLXsKLSAgICBtX2NvbnRleHQgPSBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dChtX25hbWUsIG1fc3RhdGUpOwotICAgIHJldHVybiBtX2NvbnRleHQ7
Ci19Ci0KIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKiB0b01lZGlhUGxheWJhY2tUYXJnZXRNb2Nr
KE1lZGlhUGxheWJhY2tUYXJnZXQqIHJlcCkKIHsKICAgICByZXR1cm4gY29uc3RfY2FzdDxNZWRp
YVBsYXliYWNrVGFyZ2V0TW9jayo+KHRvTWVkaWFQbGF5YmFja1RhcmdldE1vY2soY29uc3RfY2Fz
dDxjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Kj4ocmVwKSkpOwpAQCAtNTcsNyArNDksNyBAQCBN
ZWRpYVBsYXliYWNrVGFyZ2V0TW9jayogdG9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhNZWRpYVBs
YXliYWNrVGFyZ2V0KiByZXApCiAKIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKiB0b01l
ZGlhUGxheWJhY2tUYXJnZXRNb2NrKGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXQqIHJlcCkKIHsK
LSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihyZXAtPnRhcmdldFR5cGUoKSA9
PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpNb2NrKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKHJlcC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJn
ZXQ6OlRhcmdldFR5cGU6Ok1vY2spOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBNZWRp
YVBsYXliYWNrVGFyZ2V0TW9jayo+KHJlcCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaAppbmRleCBjZDQ0OWIw
M2MxMTMxMDY2NTI5NGNiODkyNGRmMGU0ZWVhYTEzZjRjLi4zOThhNDU5ZGU5OTJmNGUyYjVjOTlk
OThmZmI3NDcyODk2N2YwOWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oCkBAIC0yMyw0MCArMjMsMzAgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgTWVkaWFQbGF5YmFja1RhcmdldE1vY2tfaAot
I2RlZmluZSBNZWRpYVBsYXliYWNrVGFyZ2V0TW9ja19oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVO
QUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldC5oIgotI2luY2x1ZGUgIk1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldE1vY2sgOiBwdWJs
aWMgTWVkaWFQbGF5YmFja1RhcmdldCB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKTsKIAogICAgIHZpcnR1YWwgfk1lZGlhUGxheWJh
Y2tUYXJnZXRNb2NrKCk7CiAKLSAgICBUYXJnZXRUeXBlIHRhcmdldFR5cGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBNb2NrOyB9CisgICAgVGFyZ2V0VHlwZSB0YXJnZXRUeXBlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gTWVkaWFQbGF5YmFja1RhcmdldDo6VGFyZ2V0VHlwZTo6TW9jazsgfQorICAg
IGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXRDb250ZXh0KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9jb250ZXh0OyB9CiAKLSAgICBjb25zdCBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dCYgdGFyZ2V0Q29udGV4dCgpIGNvbnN0IGZpbmFsOwotCi0gICAgYm9vbCBoYXNB
Y3RpdmVSb3V0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX25hbWUuaXNFbXB0eSgpOyB9Ci0g
ICAgYm9vbCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKSBjb25zdCBmaW5hbCB7IHJldHVy
biAhbV9uYW1lLmlzRW1wdHkoKTsgfQotCi0gICAgU3RyaW5nIGRldmljZU5hbWUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX25hbWU7IH0KLQotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpTdGF0ZSBzdGF0ZSgpIGNvbnN0OworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpN
b2NrU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQubW9ja1N0YXRlKCk7IH0K
IAogcHJvdGVjdGVkOgotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKGNvbnN0IFN0cmluZyYs
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgTWVkaWFQbGF5YmFja1Rh
cmdldE1vY2soY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tT
dGF0ZSk7CiAKLSAgICBTdHJpbmcgbV9uYW1lOwotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpTdGF0ZSBtX3N0YXRlIHsgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlVua25vd24g
fTsKLSAgICBtdXRhYmxlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IG1fY29udGV4dDsKKyAg
ICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCBtX2NvbnRleHQ7CiB9OwogCiBNZWRpYVBsYXli
YWNrVGFyZ2V0TW9jayogdG9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhNZWRpYVBsYXliYWNrVGFy
Z2V0Kik7CkBAIC02NSw1ICs1NSwzIEBAIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKiB0
b01lZGlhUGxheWJhY2tUYXJnZXRNb2NrKGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnCiB9CiAKICNl
bmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwCmluZGV4IDQ0ZjQx
NDdhMTkxODA3NTQ3MmVkYzNhMTIxODk5MjdkN2U5MjVlZjEuLjNiMGNhNmE3ODM3MjNmOGY5OGQy
MjYwYWFiNmFiNWE1NjFlZTFjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwCkBAIC01
Miw3ICs1Miw3IEBAIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjp+TWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlck1vY2soKQogYm9vbCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6
ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUoKQogewogICAgIExPRyhNZWRpYSwgIk1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSIp
OwotICAgIHJldHVybiBtX3N0YXRlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpPdXRw
dXREZXZpY2VBdmFpbGFibGU7CisgICAgcmV0dXJuIG1fc3RhdGUgPT0gTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6T3V0cHV0RGV2aWNlQXZhaWxhYmxlOwogfQogCiBSZWY8
TWVkaWFQbGF5YmFja1RhcmdldD4gTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnBsYXli
YWNrVGFyZ2V0KCkKQEAgLTg1LDEwICs4NSwxMCBAQCB2b2lkIE1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJNb2NrOjpzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKQogICAgIExPRyhN
ZWRpYSwgIk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpzdGFydGluZ01vbml0b3JpbmdQ
bGF5YmFja1RhcmdldHMiKTsKIAogICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFt0aGlzXSB7
Ci0gICAgICAgIGlmIChtX3N0YXRlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpPdXRw
dXREZXZpY2VBdmFpbGFibGUpCisgICAgICAgIGlmIChtX3N0YXRlID09IE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6Ok91dHB1dERldmljZUF2YWlsYWJsZSkKICAgICAgICAg
ICAgIGF2YWlsYWJsZURldmljZXNEaWRDaGFuZ2UoKTsKIAotICAgICAgICBpZiAoIW1fZGV2aWNl
TmFtZS5pc0VtcHR5KCkgJiYgbV9zdGF0ZSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
VW5rbm93bikKKyAgICAgICAgaWYgKCFtX2RldmljZU5hbWUuaXNFbXB0eSgpICYmIG1fc3RhdGUg
IT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93bikKICAgICAg
ICAgICAgIGN1cnJlbnREZXZpY2VEaWRDaGFuZ2UoKTsKICAgICB9KTsKIH0KQEAgLTEwMSwxNSAr
MTAxLDE1IEBAIHZvaWQgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnN0b3BNb25pdG9y
aW5nUGxheWJhY2tUYXJnZXRzKCkKIHZvaWQgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6
OmludmFsaWRhdGVQbGF5YmFja1RhcmdldHMoKQogewogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJNb2NrOjppbnZhbGlkYXRlUGxheWJhY2tUYXJnZXRzIik7Ci0gICAg
c2V0U3RhdGUoZW1wdHlTdHJpbmcoKSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlVua25v
d24pOworICAgIHNldFN0YXRlKGVtcHR5U3RyaW5nKCksIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpNb2NrU3RhdGU6OlVua25vd24pOwogfQogCi12b2lkIE1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJNb2NrOjpzZXRTdGF0ZShjb25zdCBTdHJpbmcmIGRldmljZU5hbWUsIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKK3ZvaWQgTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlck1vY2s6OnNldFN0YXRlKGNvbnN0IFN0cmluZyYgZGV2aWNlTmFtZSwgTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSkKIHsKICAgICBMT0coTWVkaWEsICJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6c2V0U3RhdGUgLSBuYW1lID0gJXMsIHN0YXRlID0g
MHgleCIsIGRldmljZU5hbWUudXRmOCgpLmRhdGEoKSwgKHVuc2lnbmVkKXN0YXRlKTsKIAogICAg
IG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFt0aGlzLCBzdGF0ZSwgZGV2aWNlTmFtZV0gewotICAg
ICAgICBpZiAoZGV2aWNlTmFtZSAhPSBtX2RldmljZU5hbWUgJiYgc3RhdGUgIT0gTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OlVua25vd24pIHsKKyAgICAgICAgaWYgKGRldmljZU5hbWUgIT0g
bV9kZXZpY2VOYW1lICYmIHN0YXRlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2Nr
U3RhdGU6OlVua25vd24pIHsKICAgICAgICAgICAgIG1fZGV2aWNlTmFtZSA9IGRldmljZU5hbWU7
CiAgICAgICAgICAgICBjdXJyZW50RGV2aWNlRGlkQ2hhbmdlKCk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlck1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlck1vY2suaAppbmRleCBkZTA5NmNiODgxZjgyNDIxMTE2NThiOGQyMTgzOWY5Yzg4
NWQ0YmNlLi4zZTc0Mzk1YmYxNmI4ZTdjOGNlOWY5NzIwZTc1OTRlNGYyYzg3ZWUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyTW9jay5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0
b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbnZhbGlk
YXRlUGxheWJhY2tUYXJnZXRzKCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHNldFN0YXRlKGNvbnN0
IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgdm9pZCBz
ZXRTdGF0ZShjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0
YXRlKTsKICAgICB2b2lkIGRpc21pc3NQb3B1cCgpOwogCiBwcml2YXRlOgpAQCAtNTcsNyArNTcs
NyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIG1fZGV2aWNlTmFtZTsKICAgICBHZW5lcmljVGFz
a1F1ZXVlPFRpbWVyPiBtX3Rhc2tRdWV1ZTsKLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6U3RhdGUgbV9zdGF0ZSB7IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpVbmtub3duIH07
CisgICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBtX3N0YXRlIHsgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93biB9OwogICAgIGJvb2wg
bV9zaG93aW5nTWVudSB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKaW5kZXggMzQ0OTJiYWY4MTE0Yzk0NmQ2MzAxYTBmNjAwNmQ1ZGYxOTM0NmNhMy4uYzM4
MDExNjk0YmFmYWNjOGExZjY3ZmYwODVhZmU0NGFiYmJjMmFmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcApAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNl
dFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQogICAgIHBhZ2Uuc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJF
bmFibGVkKHRydWUpOwotICAgIHBhZ2Uuc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJT
dGF0ZShlbXB0eVN0cmluZygpLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VW5rbm93bik7
CisgICAgcGFnZS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGVtcHR5U3Ry
aW5nKCksIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6OlVua25vd24pOwog
I2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU8pCkBAIC00NTEwLDE0ICs0NTEwLDE0IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IEludGVybmFsczo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJT
dGF0ZShjb25zdCBTdHJpbmcmCiAgICAgUGFnZSogcGFnZSA9IGNvbnRleHREb2N1bWVudCgpLT5m
cmFtZSgpLT5wYWdlKCk7CiAgICAgQVNTRVJUKHBhZ2UpOwogCi0gICAgTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6OlN0YXRlIHN0YXRlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlVu
a25vd247CisgICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSA9
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6OlVua25vd247CiAKICAgICBp
ZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGV2aWNlU3RhdGUsICJkZXZpY2VhdmFp
bGFibGUiKSkKLSAgICAgICAgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6T3V0
cHV0RGV2aWNlQXZhaWxhYmxlOworICAgICAgICBzdGF0ZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpNb2NrU3RhdGU6Ok91dHB1dERldmljZUF2YWlsYWJsZTsKICAgICBlbHNlIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkZXZpY2VTdGF0ZSwgImRldmljZXVuYXZhaWxh
YmxlIikpCi0gICAgICAgIHN0YXRlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok91dHB1
dERldmljZVVuYXZhaWxhYmxlOworICAgICAgICBzdGF0ZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpNb2NrU3RhdGU6Ok91dHB1dERldmljZVVuYXZhaWxhYmxlOwogICAgIGVsc2UgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRldmljZVN0YXRlLCAidW5rbm93biIpKQot
ICAgICAgICBzdGF0ZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpVbmtub3duOworICAg
ICAgICBzdGF0ZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6OlVua25v
d247CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vy
cm9yIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCBiZDE5MWU1NzFkNzFmMjEwN2RmZmVjNWRm
YjI0YjBkNDQ2ZGNjZTY3Li4xODhmYjBjMzEzZmZhZjBjMjVlY2NkYTc0NmQ2N2MxYWMyYTdmN2Q1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAKICNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1Rh
cmdldENvY29hLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaD4KICNlbmRp
ZgogCkBAIC02OTcsMjAgKzY5OCwyMSBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wgc2hvdWxkUGxheSkKICAgICBtX3BsYXll
ci0+c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoc2hvdWxkUGxheSk7CiB9CiAKLXZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChjb25zdCBX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0Q29udGV4dCkKK3ZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dCYmIHRhcmdldENvbnRleHQpCiB7CiAgICAgc3dpdGNoICh0YXJn
ZXRDb250ZXh0LnR5cGUoKSkgewotICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
OkFWT3V0cHV0Q29udGV4dFR5cGU6Ci0gICAgICAgIG1fcGxheWVyLT5zZXRXaXJlbGVzc1BsYXli
YWNrVGFyZ2V0KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKHRhcmdl
dENvbnRleHQuYXZPdXRwdXRDb250ZXh0KCkpKTsKKyAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0OiB7CisgICAgICAgIGlm
ICh0YXJnZXRDb250ZXh0LmRlc2VyaWFsaXplT3V0cHV0Q29udGV4dCgpKQorICAgICAgICAgICAg
bV9wbGF5ZXItPnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoTWVkaWFQbGF5YmFja1RhcmdldENv
Y29hOjpjcmVhdGUoV1RGTW92ZSh0YXJnZXRDb250ZXh0KSkpOwogICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6TW9jazoKICNp
ZiBQTEFURk9STShNQUMpCi0gICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9j
a1R5cGU6Ci0gICAgICAgIG1fcGxheWVyLT5zZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpjcmVhdGUodGFyZ2V0Q29udGV4dC5tb2NrRGV2
aWNlTmFtZSgpLCB0YXJnZXRDb250ZXh0Lm1vY2tTdGF0ZSgpKSk7CisgICAgICAgIG1fcGxheWVy
LT5zZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpjcmVh
dGUodGFyZ2V0Q29udGV4dC5kZXZpY2VOYW1lKCksIHRhcmdldENvbnRleHQubW9ja1N0YXRlKCkp
KTsKICAgICAgICAgYnJlYWs7Ci0jZWxzZQotICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6Ok1vY2tUeXBlOgogI2VuZGlmCi0gICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6Tm9uZToKKyAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpB
Vk91dHB1dENvbnRleHQ6CisgICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlw
ZTo6Tm9uZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IDI0YjY2NDFhZTRmNWYxZTdkZmMxMDUzNzQxM2YwZTlj
ZmQyNWUyM2YuLmJkYWVlOGFlMDVmMTBmYTQ2NTczMzQzZjQ3OWM0MjkzZDQ3ZGY2YzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHkuaApAQCAtMTUyLDcgKzE1Miw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlz
YWJsZWQoYm9vbCk7CiAgICAgdm9pZCBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29s
KTsKLSAgICB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoY29uc3QgV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQmKTsKKyAgICB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tU
YXJnZXQoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmJik7CiAgICAgdm9pZCBt
ZWRpYVBsYXllckN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3NDaGFuZ2VkKGJvb2wpIGZp
bmFsOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHAKaW5k
ZXggOWU2YmM5NDY2YjUzOTliMjRmNTg0MDA5YjkwMGJkMDdkMDA4MjExNi4uYmVkMzBlMjljZTRi
OWM1ZjZhZjQwMWFjMWNjOGYyNmZhMmM0NjFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXJQcm94eS5jcHAKQEAgLTEwOCw3ICsxMDgsMTEgQEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXJQcm94eTo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShTaG91bGRQYXVzZSBzaG91
bGQKIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6YWN0aXZlVmlkZW9Sb3V0
ZURpZENoYW5nZShTdXBwb3J0c0FpclBsYXlWaWRlbyBzdXBwb3J0c0FpclBsYXlWaWRlbywgUmVm
PFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgdGFyZ2V0KQogewotICAgIG1fZ3B1Q29u
bmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyOjpBY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKHN1cHBvcnRzQWlyUGxheVZpZGVvLCB0YXJn
ZXQtPnRhcmdldENvbnRleHQoKSksIHsgfSk7CisgICAgYXV0byBjb250ZXh0ID0gdGFyZ2V0LT50
YXJnZXRDb250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0LnNlcmlhbGl6ZU91dHB1dENvbnRleHQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9ncHVDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OkFjdGl2ZVZpZGVvUm91dGVE
aWRDaGFuZ2Uoc3VwcG9ydHNBaXJQbGF5VmlkZW8sIGNvbnRleHQpLCB7IH0pOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tCmluZGV4IGJmODhhYjYxN2JlMTIxYjRhZjdiYzRjZDNjNGZjMTk3ZGRhNTk3
ODIuLjUwMzQ0MWNiNmVhMzVmZDNlY2FmOTY3NmY5MjY0ZDMyODEzNWIzNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0Nv
Y29hLm1tCkBAIC00MSwxNCArNDEsMjMgQEAKICNpbXBvcnQgPFVJS2l0L1VJRm9udC5oPgogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorI2ltcG9ydCA8V2Vi
Q29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oPgorI2ltcG9ydCA8b2JqYy9ydW50aW1l
Lmg+CisjZW5kaWYKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW5jbHVkZSA8V2Vi
S2l0QWRkaXRpb25zL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hQWRkaXRpb25zLm1tPgorI2Vu
ZGlmCisKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgog
I2ltcG9ydCA8V2ViQ29yZS9QYXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5oPgogI2ltcG9ydCA8
cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNDb2NvYUFkZGl0aW9ucy5tbT4KKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQorI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CiAjZW5kaWYKIAog
bmFtZXNwYWNlIElQQyB7CkBAIC02MDYsNCArNjE1LDUwIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVj
b2RlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQordm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCit7CisgICAgaWYgKHRhcmdldC50eXBlKCkg
PT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCkgewor
ICAgICAgICBpZiAoW1BBTDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBjb25mb3Jtc1RvUHJv
dG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCisgICAgICAgICAgICBlbmNvZGVyIDw8
IHRhcmdldC5vdXRwdXRDb250ZXh0KCk7CisgICAgfSBlbHNlIGlmICh0YXJnZXQudHlwZSgpID09
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250
ZXh0KSB7CisgICAgICAgIGVuY29kZXIgPDwgdGFyZ2V0LnNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0
KCk7CisgICAgICAgIGVuY29kZXIgPDwgdGFyZ2V0Lmhhc0FjdGl2ZVJvdXRlKCk7CisgICAgfSBl
bHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitib29sIEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0Zm9ybURh
dGEoRGVjb2RlciYgZGVjb2RlciwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGUgY29u
dGV4dFR5cGUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCit7CisgICAgQVNT
RVJUKGNvbnRleHRUeXBlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2Nr
KTsKKworICAgIGlmIChjb250ZXh0VHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
VHlwZTo6QVZPdXRwdXRDb250ZXh0KSB7CisgICAgICAgIGlmICghW1BBTDo6Z2V0QVZPdXRwdXRD
b250ZXh0Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5n
KV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgYXV0byBvdXRwdXRDb250
ZXh0ID0gSVBDOjpkZWNvZGU8QVZPdXRwdXRDb250ZXh0PihkZWNvZGVyLCBQQUw6OmdldEFWT3V0
cHV0Q29udGV4dENsYXNzKCkpOworICAgICAgICBpZiAoIW91dHB1dENvbnRleHQpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdGFyZ2V0ID0gV2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQgeyBXVEZNb3ZlKCpvdXRwdXRDb250ZXh0KSB9OworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoY29udGV4dFR5cGUgPT0gTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQpIHsKKyAgICAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gc2VyaWFsaXplZE91dHB1dENvbnRleHQ7CisgICAgICAgIGlm
ICghSVBDOjpkZWNvZGUoZGVjb2Rlciwgc2VyaWFsaXplZE91dHB1dENvbnRleHQpIHx8ICFzZXJp
YWxpemVkT3V0cHV0Q29udGV4dCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg
ICBib29sIGhhc0FjdGl2ZVJvdXRlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0Fj
dGl2ZVJvdXRlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB0YXJnZXQg
PSBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCB7IFdURk1vdmUoc2VyaWFsaXpl
ZE91dHB1dENvbnRleHQpLCBoYXNBY3RpdmVSb3V0ZSB9OworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2Ug
SVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApp
bmRleCAyNTVhMmNiYzZjNzdjZWYxZTYwNzBlYTQyMGY2YmRlOTBiMjQwYTcxLi5mNjUxMTZmZjlk
NmIwM2IxYTMzMzFjZGJmMzZlNDdkOGE0MTE4Y2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTI0NTcsMTcgKzI0NTcsMTcgQEAgdm9p
ZCBBcmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IE0KICAgICBib29sIGhhc1BsYXRmb3JtRGF0YSA9IHRhcmdldC5l
bmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKCk7CiAgICAgZW5jb2RlciA8PCBoYXNQbGF0Zm9y
bURhdGE7CiAKLSAgICBpbnQzMl90IHRhcmdldFR5cGUgPSB0YXJnZXQudHlwZSgpOwotICAgIGVu
Y29kZXIgPDwgdGFyZ2V0VHlwZTsKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlw
ZSBjb250ZXh0VHlwZSA9IHRhcmdldC50eXBlKCk7CisgICAgZW5jb2RlciA8PCBjb250ZXh0VHlw
ZTsKIAogICAgIGlmICh0YXJnZXQuZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgpKSB7CiAg
ICAgICAgIGVuY29kZVBsYXRmb3JtRGF0YShlbmNvZGVyLCB0YXJnZXQpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgQVNTRVJUKHRhcmdldFR5cGUgPT0gTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6Ok1vY2tUeXBlKTsKLSAgICBlbmNvZGVyIDw8IHRhcmdldC5tb2NrRGV2aWNlTmFt
ZSgpOwotICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8aW50MzJfdD4odGFyZ2V0Lm1vY2tTdGF0
ZSgpKTsKKyAgICBBU1NFUlQoY29udGV4dFR5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6OlR5cGU6Ok1vY2spOworICAgIGVuY29kZXIgPDwgdGFyZ2V0LmRldmljZU5hbWUoKTsKKyAg
ICBlbmNvZGVyIDw8IHRhcmdldC5tb2NrU3RhdGUoKTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVy
PE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCkBAIC0yNDc2LDI0ICsyNDc2LDI0IEBA
IGJvb2wgQXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyLCBNZWRpYVBsCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNQbGF0
Zm9ybURhdGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpbnQzMl90IHRhcmdldFR5
cGU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0YXJnZXRUeXBlKSkKKyAgICBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6VHlwZSBjb250ZXh0VHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGNvbnRleHRUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGhhc1Bs
YXRmb3JtRGF0YSkKLSAgICAgICAgcmV0dXJuIGRlY29kZVBsYXRmb3JtRGF0YShkZWNvZGVyLCB0
YXJnZXQpOworICAgICAgICByZXR1cm4gZGVjb2RlUGxhdGZvcm1EYXRhKGRlY29kZXIsIGNvbnRl
eHRUeXBlLCB0YXJnZXQpOwogCi0gICAgQVNTRVJUKHRhcmdldFR5cGUgPT0gTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6Ok1vY2tUeXBlKTsKLQotICAgIFN0cmluZyBtb2NrRGV2aWNlTmFtZTsK
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1vY2tEZXZpY2VOYW1lKSkKKyAgICBBU1NFUlQoY29u
dGV4dFR5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2spOworICAg
IFN0cmluZyBkZXZpY2VOYW1lOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlTmFtZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGludDMyX3QgbW9ja1N0YXRlOworICAgIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgbW9ja1N0YXRlOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUobW9ja1N0YXRlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
dGFyZ2V0ID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQobW9ja0RldmljZU5hbWUsIHN0YXRp
Y19jYXN0PE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZT4obW9ja1N0YXRlKSk7Cisg
ICAgdGFyZ2V0ID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQoZGV2aWNlTmFtZSwgbW9ja1N0
YXRlKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDYxOTcwODc4MjUxMTU0OGI2MmYyNzE1
NmJkM2Y0N2Q3MWEzMWVhYzIuLjY0NzZlMzkwYmZjNzc4ZDdlYjdjZGZiM2RjMmFkNTRjMmNlN2Zl
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZURhdGEuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0luZGV4ZWREQi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2RlLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvTWVkaWFTZWxlY3Rpb25PcHRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05hdGl2
ZUltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4KQEAgLTE5
NSwxMCArMTk2LDYgQEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50OwogY2xhc3MgQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQotY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ7Ci0jZW5kaWYK
LQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBzdHJ1Y3QgTWVkaWFDb25zdHJhaW50czsKICNl
bmRpZgpAQCAtNjQ0LDcgKzY0MSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+IHsKICAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
Jik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwg
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmKTsKICAgICBzdGF0aWMgdm9pZCBl
bmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0Jik7Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29k
ZVBsYXRmb3JtRGF0YShEZWNvZGVyJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQmKTsKKyAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlUGxhdGZvcm1E
YXRhKERlY29kZXImLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZSwg
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmKTsKIH07CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMu
bW0KaW5kZXggMTg2YjdiYjJkYjZmYzRlMmJjMTMzZjcxNzVjY2Y5YzM3NjM4OTIzMC4uOTI1ZjVh
NGQ1YTQ4OGQ0ODg0MDRlYzYyOTUyZDhhMjQ5YTNmMDAxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCkBAIC00MiwxMiAr
NDIsNiBAQAogI2ltcG9ydCA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNpbXBvcnQgPHd0Zi9jZi9U
eXBlQ2FzdHNDRi5oPgogCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSNp
bXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4KLSNpbXBvcnQgPG9i
amMvcnVudGltZS5oPgotI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+
Ci0jZW5kaWYKLQogbmFtZXNwYWNlIElQQyB7CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpDZXJ0aWZpY2F0ZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29y
ZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8pCkBAIC00MDMsMjkgKzM5Nyw2IEBA
IGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlCiAKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkKLQotdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCi17Ci0g
ICAgaWYgKFtQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgY29uZm9ybXNUb1Byb3RvY29s
OkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQotICAgICAgICBlbmNvZGVyIDw8IHRhcmdldC5h
dk91dHB1dENvbnRleHQoKTsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29k
ZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCi17Ci0gICAg
aWYgKCFbUEFMOjpnZXRBVk91dHB1dENvbnRleHRDbGFzcygpIGNvbmZvcm1zVG9Qcm90b2NvbDpA
cHJvdG9jb2woTlNTZWN1cmVDb2RpbmcpXSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
YXV0byBjb250ZXh0ID0gSVBDOjpkZWNvZGU8QVZPdXRwdXRDb250ZXh0PihkZWNvZGVyLCBQQUw6
OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkpOwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgdGFyZ2V0ID0gV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQgeyBjb250ZXh0LT5nZXQoKSB9OwotICAgIHJldHVybiB0cnVlOwotfQotCi0jZW5k
aWYKLQogI2lmIEVOQUJMRShWSURFTykKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJp
YWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlJiB2
YWx1ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGEy
ZjM5Yzk1ZTNiYzRkODIwNTFiYWNkMzcxMzgwMzA3M2M0MzM3OTIuLjBjM2UyMjllYWIwODMxMzQw
ZTk2MWM2NGY5YjE2NDQ1N2Y0Y2Y3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtNzgzMiwxNCArNzgzMiw2IEBAIHN0YXRpYyBjb25zdCBWZWN0b3I8QVND
SUlMaXRlcmFsPiYgbWVkaWFSZWxhdGVkSU9LaXRDbGFzc2VzKCkKICAgICB9KTsKICAgICByZXR1
cm4gc2VydmljZXM7CiB9Ci0KLXN0YXRpYyBjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgdGVt
cG9yYXJ5TWFjaFNlcnZpY2VzKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBzZXJ2aWNlcyA9
IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8QVNDSUlMaXRlcmFsPiB7Ci0gICAgICAgICJjb20u
YXBwbGUuY29yZW1lZGlhLnJvdXRpbmdjb250ZXh0LnhwYyJfcyAvLyBSZW1vdmUgYWZ0ZXIgPHJk
YXI6Ly83NjQwMzMwMj4gaXMgZml4ZWQuCi0gICAgfSk7Ci0gICAgcmV0dXJuIHNlcnZpY2VzOwot
fQogI2VuZGlmCiAKIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVh
dGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBEcmF3aW5nQXJlYVByb3h5
JiBkcmF3aW5nQXJlYSwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNpdGVQb2xp
Y2llcykKQEAgLTc5MzUsOSArNzkyNyw2IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2Vi
UGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAgICAg
ICAgIC8vIEZJWE1FKDIwNzcxNik6IFRoZSBmb2xsb3dpbmcgc2hvdWxkIGJlIHJlbW92ZWQgd2hl
biB0aGUgR1BVIHByb2Nlc3MgaXMgY29tcGxldGUuCiAgICAgICAgIHBhcmFtZXRlcnMubWVkaWFF
eHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hM
b29rdXAobWVkaWFSZWxhdGVkTWFjaFNlcnZpY2VzKCksIFdURjo6bnVsbG9wdCk7CiAgICAgICAg
IHBhcmFtZXRlcnMubWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMobWVkaWFSZWxhdGVkSU9LaXRD
bGFzc2VzKCksIFdURjo6bnVsbG9wdCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gRklYTUUo
MjI0MzI3KTogUmVtb3ZlIHRoaXMgZWxzZSBjbGF1c2Ugb25jZSA8cmRhcjovLzc2NDAzMzAyPiBp
cyBmaXhlZC4KLSAgICAgICAgcGFyYW1ldGVycy5tZWRpYUV4dGVuc2lvbkhhbmRsZXMgPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCh0ZW1wb3JhcnlNYWNoU2Vy
dmljZXMoKSwgV1RGOjpudWxsb3B0KTsKICAgICB9CiAKICAgICBpZiAoIXByZWZlcmVuY2VzKCku
dXNlR1BVUHJvY2Vzc0Zvck1lZGlhRW5hYmxlZCgpCkBAIC05NDAzLDcgKzkzOTIsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJv
b2wgZW5hYmxlZCkKICAgICBwYWdlQ2xpZW50KCkubWVkaWFTZXNzaW9uTWFuYWdlcigpLnNldE1v
Y2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChlbmFibGVkKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUg
c3RhdGUpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCiB7CiAgICAgcGFnZUNsaWVudCgpLm1lZGlhU2Vzc2lv
bk1hbmFnZXIoKS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKG5hbWUsIHN0
YXRlKTsKIH0KQEAgLTk0MTgsNyArOTQwNywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGxh
eWJhY2tUYXJnZXQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBjb250ZQog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRTZWxlY3RlZChjb250ZXh0SWQsIHRh
cmdldC0+dGFyZ2V0Q29udGV4dCgpKSk7CisgICAgYXV0byBjb250ZXh0ID0gdGFyZ2V0LT50YXJn
ZXRDb250ZXh0KCk7CisgICAgQVNTRVJUKGNvbnRleHQudHlwZSgpICE9IE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0KTsKKyAgICBpZiAo
cHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yTWVkaWFFbmFibGVkKCkpCisgICAgICAgIGNv
bnRleHQuc2VyaWFsaXplT3V0cHV0Q29udGV4dCgpOworCisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UGxheWJhY2tUYXJnZXRTZWxlY3RlZChjb250ZXh0SWQsIGNvbnRleHQpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdl
KFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBib29sIGF2
YWlsYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggOWI3ZGMw
NmY2MWZiYzQ3MzJlYmI5YmJmNTRkNTg1Mjg5ZjQ3MWQ2MC4uNWYxNjgyZTUyOTNkMTMzMDZlMGJj
MzQzMDgyN2RhNzNjOTkxNzVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTE1NjcsNyArMTU2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3dQbGF5YmFja1Rh
cmdldFBpY2tlcihXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBib29sIGhhc1ZpZGVvKTsKICAgICB2b2lkIHBs
YXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6UGxheWJhY2tU
YXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVk
aWFTdGF0ZUZsYWdzKTsKICAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
RW5hYmxlZChib29sKTsKLSAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
U3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
OlN0YXRlKTsKKyAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUo
Y29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tT
dGF0ZSk7CiAgICAgdm9pZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1
cCgpOwogCiAgICAgLy8gV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDJjYWMzZjFj
YjA1ZDFjZDdiNWY3NzFlZTEyYzBlNzI5ZTFmMWQ4Y2YuLjdlOThiMDg4ZDkyMmVlMTE0NDk3MzBh
MGU1NTgxMmJlMjY0NDc1MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTQ3Niw3ICs0NzYsNyBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlUHJveHkgewogICAgIFNob3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJDb3JlOjpQbGF5YmFj
a1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6RmxvYXRS
ZWN0IHBpY2tlckxvY2F0aW9uLCBib29sIGhhc1ZpZGVvKQogICAgIFBsYXliYWNrVGFyZ2V0UGlj
a2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIHVuc2lnbmVkIG1lZGlhU3RhdGUpCiAgICAgU2V0TW9j
a01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wgZW5hYmxlZCkKLSAgICBTZXRN
b2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKFN0cmluZyBuYW1lLCB1bnNpZ25lZCBw
aWNrZXJTdGF0ZSkKKyAgICBTZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKFN0
cmluZyBuYW1lLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6Ok1vY2tTdGF0ZSBwaWNrZXJTdGF0ZSkKICAgICBNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlckRpc21pc3NQb3B1cCgpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlci5jcHAKaW5kZXggMmFiNWY5MTNjZGU4M2NlZGM1NGE3YThmZTBlZTA5NTNiY2U0NDk1Yi4u
NDg2MmFmNzY0NTY3ZDZiZjZhZmY2OGQyODc4ZjhmOTRlMTk1OGYyNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwCkBAIC04MSwxMiArODEsMTEgQEAgdm9pZCBSZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXI6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoaW50IHBp
ZCkKIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFjdGl2ZVZpZGVvUm91dGVEaWRD
aGFuZ2UoU3VwcG9ydHNBaXJQbGF5VmlkZW8gc3VwcG9ydHNBaXJQbGF5VmlkZW8sIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0JiYgdGFyZ2V0Q29udGV4dCkKIHsKLSAgICBpZiAodGFyZ2V0Q29u
dGV4dC50eXBlKCkgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OkFWT3V0cHV0Q29udGV4
dFR5cGUpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgQVNTRVJUKHRhcmdl
dENvbnRleHQudHlwZSgpICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91
dHB1dENvbnRleHQpOworICAgIGlmICh0YXJnZXRDb250ZXh0LnR5cGUoKSA9PSBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0KQogICAgICAgICByZXR1cm47
Ci0gICAgfQogCi0gICAgV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVWaWRlb1Jv
dXRlRGlkQ2hhbmdlKHN1cHBvcnRzQWlyUGxheVZpZGVvLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0Q29jb2E6OmNyZWF0ZSh0YXJnZXRDb250ZXh0LmF2T3V0cHV0Q29udGV4dCgpKSk7Cisg
ICAgV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdl
KHN1cHBvcnRzQWlyUGxheVZpZGVvLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6
OmNyZWF0ZShXVEZNb3ZlKHRhcmdldENvbnRleHQpKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKaW5kZXggYmNjNGMxN2FjMjk1MjEyY2JhNjRkZWRkMWM5YjNhOTA2Y2EwNTEwMS4uNWZj
ODU1NjM3NjBlYTc1ZWMxMmVkMTRhOWUyNzM2ODFmMjUxYzA5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKQEAgLTEzNTIsNyArMTM1Miw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRNb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIG1fcGFn
ZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyRW5hYmxlZChlbmFibGVkKSk7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRN
b2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQordm9pZCBXZWJDaHJvbWVDbGll
bnQ6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBu
YW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKQogewogICAg
IG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldE1vY2tNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyU3RhdGUobmFtZSwgc3RhdGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRl
eCA2ODEyZTY0MmZlY2RjYWE3YjFmNTFmZTA3MTI1ODBhN2Q0MmM0ZWYwLi41NmNmNmI5MmVkOWEx
MDM2ZGJkN2QwNjQ4NjNjNGU3NjgxNDJjZGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zNzgs
NyArMzc4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihX
ZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYsIGJvb2wpIGZpbmFsOwogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNr
ZXJDbGllbnRTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRl
eHRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpIGZp
bmFsOwogICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJv
b2wpIGZpbmFsOwotICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0
ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3Rh
dGUpIGZpbmFsOworICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0
ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9j
a1N0YXRlKSBmaW5hbDsKICAgICB2b2lkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlz
bWlzc1BvcHVwKCkgZmluYWw7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IGFlYjI1ZGFiODQyMDY4NGE5NTAyMzg2YWJmODNhZTZiZTM4
Y2U5ODYuLjFlNjMzNzljYWY4NzdiNTkyNjZiZmM3MDM3MDkxNjAwOTYwMzZlYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE3OTEsNyArMTc5MSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRTaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVu
dHMoYm9vbCBkaXNwYXRjaCkgeyBtX3Nob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyA9
IGRpc3BhdGNoOyB9CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIHBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQoV2Vi
Q29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIG91dHB1dERldmljZSkgY29uc3Q7CisgICAg
dm9pZCBwbGF5YmFja1RhcmdldFNlbGVjdGVkKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50
Q29udGV4dElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiYp
IGNvbnN0OwogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoV2Vi
Q29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgYm9vbCk7CiAgICAg
dm9pZCBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChXZWJDb3JlOjpQbGF5YmFja1Rhcmdl
dENsaWVudENvbnRleHRJZGVudGlmaWVyLCBib29sKTsKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0
UGlja2VyV2FzRGlzbWlzc2VkKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElk
ZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbQppbmRleCA3NGRhNjM1Nzg4MmNkMDEzMDIwODQwOTdmMDY0ZDIxYzNiOTE1
ZDA0Li42MmU3OThmZTRjZDVkNzBiOWIyM2YwMDg2N2I1OGRhNGEyNzU4ZjE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAt
MzUsNyArMzUsNiBAQAogI2ltcG9ydCAiRm9udEluZm8uaCIKICNpbXBvcnQgIkZyYW1lSW5mb0Rh
dGEuaCIKICNpbXBvcnQgIkluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oIgotI2ltcG9ydCAi
UERGS2l0U29mdExpbmsuaCIKICNpbXBvcnQgIlBERlBsdWdpbi5oIgogI2ltcG9ydCAiUGFnZUJh
bm5lci5oIgogI2ltcG9ydCAiUGx1Z2luVmlldy5oIgpAQCAtOTksOSArOTgsMTIgQEAKIAogI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAjaW1wb3J0IDxXZWJDb3JlL01lZGlh
UGxheWJhY2tUYXJnZXRDb2NvYS5oPgorI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5o
PgogI2VuZGlmCiAKKyNpbXBvcnQgIlBERktpdFNvZnRMaW5rLmgiCisKIG5hbWVzcGFjZSBXZWJL
aXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTEwNDIsMTYgKzEwNDQsMTcgQEAg
dm9pZCBXZWJQYWdlOjpkaWRVcGRhdGVSZW5kZXJpbmcoKQogfQogCiAjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi12b2lkIFdlYlBh
Z2U6OnBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRl
bnRpZmllciBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0JiB0YXJnZXRDb250ZXh0KSBjb25zdAordm9pZCBXZWJQYWdlOjpwbGF5YmFja1RhcmdldFNl
bGVjdGVkKFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmIHRhcmdldENvbnRleHQpIGNvbnN0
CiB7CiAgICAgc3dpdGNoICh0YXJnZXRDb250ZXh0LnR5cGUoKSkgewotICAgIGNhc2UgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OkFWT3V0cHV0Q29udGV4dFR5cGU6Ci0gICAgICAgIG1fcGFn
ZS0+c2V0UGxheWJhY2tUYXJnZXQoY29udGV4dElkLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFy
Z2V0Q29jb2E6OmNyZWF0ZSh0YXJnZXRDb250ZXh0LmF2T3V0cHV0Q29udGV4dCgpKSk7CisgICAg
Y2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0Ogor
ICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRBVk91
dHB1dENvbnRleHQ6CisgICAgICAgIG1fcGFnZS0+c2V0UGxheWJhY2tUYXJnZXQoY29udGV4dElk
LCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZShXVEZNb3ZlKHRhcmdldENvbnRleHQp
KSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
Ok1vY2tUeXBlOgotICAgICAgICBtX3BhZ2UtPnNldFBsYXliYWNrVGFyZ2V0KGNvbnRleHRJZCwg
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldE1vY2s6OmNyZWF0ZSh0YXJnZXRDb250ZXh0Lm1v
Y2tEZXZpY2VOYW1lKCksIHRhcmdldENvbnRleHQubW9ja1N0YXRlKCkpKTsKKyAgICBjYXNlIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrOgorICAgICAgICBtX3BhZ2UtPnNl
dFBsYXliYWNrVGFyZ2V0KGNvbnRleHRJZCwgTWVkaWFQbGF5YmFja1RhcmdldE1vY2s6OmNyZWF0
ZSh0YXJnZXRDb250ZXh0LmRldmljZU5hbWUoKSwgdGFyZ2V0Q29udGV4dC5tb2NrU3RhdGUoKSkp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpO
b25lOgorICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok5vbmU6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCmluZGV4IGI4OWIyNjZjM2Q3OWFjZDI0MWRmMzZiNWZjZTJmMWQyZWQ4ZGI3NDgu
LmYzZDQ3MTZhODkzM2Q5ZjI0MmY4ZWYxMjE1YTg2NjIzNDBmODk3YTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCkBAIC0yNDMsNyArMjQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNob3dQbGF5YmFja1Rh
cmdldFBpY2tlcihXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgLyogaGFzVmlkZW8gKi8pIGZpbmFsOwog
ICAgIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5nZShXZWJDb3Jl
OjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVBy
b2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpIGZpbmFsOwogICAgIHZvaWQgc2V0TW9ja01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpIGZpbmFsOwotICAgIHZvaWQgc2V0TW9ja01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpIGZpbmFsOworICAgIHZvaWQgc2V0TW9ja01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKSBmaW5hbDsKICAgICB2b2lkIG1vY2tN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCkgb3ZlcnJpZGU7CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IGIzNGU4ZDlkOGVlOTE1YzYxYTBjNDlmZjQwZTJkNjZm
ZWQyNGEwNGUuLmM5NjQ4M2ZmOTZlYjdmZDhjYzE5NTI3YzM1NDVkOWI4M2IxNGE5YjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQubW0KQEAgLTExMjksNyArMTEyOSw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50
OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBlbmFibGVkKQog
ICAgIFttX3dlYlZpZXcgX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZDpl
bmFibGVkXTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldE1vY2tNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6U3RhdGUgc3RhdGUpCit2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCiB7CiAgICAgW21fd2ViVmlldyBfc2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOm5hbWUgc3RhdGU6c3RhdGVdOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaAppbmRleCAwYjkyMzgzNWU5ZTE1YjZiODA0NWI0OWFm
ZTI5ZTZhYWIwM2VjZmNhLi44Y2EzMjk0N2E1YjQ2ZTA2N2I4ZThiYWU0NDYzOTNlYmI5MGU4NmVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViQ29yZTo6UGxheWJhY2tUYXJn
ZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgYm9v
bCBoYXNWaWRlbyk7CiAgICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tlckNsaWVudFN0YXRlRGlk
Q2hhbmdlKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIFdl
YkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyk7CiAgICAgdm9pZCBzZXRNb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCk7Ci0gICAgdm9pZCBzZXRNb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgdm9pZCBzZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpOwogICAgIHZvaWQgbW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tCmluZGV4IDczNDQzNTY3NWFiODA5YjUwZWM1ZWYz
OGFiOWY3N2NhMTQ4YjMxZjEuLjdkYmQ1ODk0NzU0MDVhMTZlYmRkMGZhOWJjZmE2MmMzMzdlNzQx
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0KQEAgLTY4LDcgKzY4LDcgQEAgdm9p
ZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlckVuYWJsZWQoYm9vbAogICAgIFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNoYXJlZCgpLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChlbmFibGVk
KTsKIH0KIAotdm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpzZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQordm9pZCBXZWJNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNv
bnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1v
Y2tTdGF0ZSBzdGF0ZSkKIHsKICAgICBXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
aGFyZWQoKS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKG5hbWUsIHN0YXRl
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA1
YjBlZThhM2FjOGMzMzNiNmVlMzQ0Y2RkOWMzYjU1NzY1YzI2ZmYwLi40OTJhZjYwMWNmN2FjNGRm
NDY0NTBiMDhhYWE1YzMyMGVhMmU2ZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCkBAIC05MjMyLDcgKzkyMzIsNyBAQCBib29sIExheWVyRmx1c2hDb250
cm9sbGVyOjpmbHVzaExheWVycygpCiAgICAgW3NlbGYgX2RldmljZVBpY2tlcl0tPnNldE1vY2tN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChlbmFibGVkKTsKIH0KIAotLSAodm9pZClf
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOihOU1N0cmluZyAqKW5hbWUgc3Rh
dGU6KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSlzdGF0ZQorLSAo
dm9pZClfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOihOU1N0cmluZyAqKW5h
bWUgc3RhdGU6KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUp
c3RhdGUKIHsKICAgICBbc2VsZiBfZGV2aWNlUGlja2VyXS0+c2V0TW9ja01lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJTdGF0ZShuYW1lLCBzdGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCAzYWUwZDNhYTI2MmQ5NTIz
MzBjMWM4MmMzMjU1MGQ5YTIxYTUwMTRmLi4wNGI4YzM2OGNjYWY4NTI0ZDA4NTkzNzJkNjA1OGY0
OGYxN2E2ZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlld0ludGVybmFsLmgKQEAgLTMyNyw3ICszMjcsNyBAQCBXZWJMYXlvdXRNaWxlc3RvbmVzIGtp
dExheW91dE1pbGVzdG9uZXMoT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4pOwog
LSAodm9pZClfc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyOihXZWJDb3JlOjpQbGF5YmFja1Rhcmdl
dENsaWVudENvbnRleHRJZGVudGlmaWVyKWNvbnRleHRJZCBsb2NhdGlvbjooY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmKWxvY2F0aW9uIGhhc1ZpZGVvOihCT09MKWhhc1ZpZGVvOwogLSAodm9pZClf
cGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5nZTooV2ViQ29yZTo6UGxheWJh
Y2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciljb250ZXh0SWQgc3RhdGU6KFdlYkNvcmU6
Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncylzdGF0ZTsKIC0gKHZvaWQpX3NldE1vY2tN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZDooYm9vbCllbmFibGVkOwotLSAodm9pZClf
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOihOU1N0cmluZyAqKW5hbWUgc3Rh
dGU6KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSlzdGF0ZTsKKy0g
KHZvaWQpX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTmFtZTooTlNTdHJpbmcgKilu
YW1lIHN0YXRlOihXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRl
KXN0YXRlOwogLSAodm9pZClfbW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9w
dXA7CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426194</attachid>
            <date>2021-04-16 01:17:08 -0700</date>
            <delta_ts>2021-04-16 14:28:46 -0700</delta_ts>
            <desc>Patch for landing (v3): fix clean build failures on some ports</desc>
            <filename>bug-224469-20210416011707.patch</filename>
            <type>text/plain</type>
            <size>85228</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDEwODNmY2Q5NGYzYjAx
NTcyNzM3YWZiNzQzNGRlNTk5OWFhZmI0ZS4uOTE4MjkyNjNiMzRmNmEwNDMxMjY0YWIwZmFjNTk3
OGVmOWFmMmYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDIxLTA0LTE2ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIFdlYkNvbnRlbnQg
cHJvY2VzcyBzaG91bGQgbm90IGNyZWF0ZSBBVk91dHB1dENvbnRleHQgaW5zdGFuY2VzIHdoZW4g
bWVkaWEgaW4gR1BVIFByb2Nlc3MgaXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBDYXJsc29uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbW9kaWZpZXMgYE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0YCB0byBwcm92aWRlIGludGVyZmFjZXMgdG8gc2VyaWFsaXplL2Rlc2VyaWFs
aXplCisgICAgICAgIGBBVk91dHB1dENvbnRleHRgIGFuZCBtb2RpZmllcyBgTWVkaWFQbGF5YmFj
a1RhcmdldENvY29hYCB0byB1c2UgYE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0YCB0bworICAg
ICAgICBtYW5hZ2UgaXRzIGBBVk91dHB1dENvbnRleHRgIGluc3RlYWQgb2Yga2VlcGluZyBhIHBv
aW50ZXIgdG8gdGhlIGBBVk91dHB1dENvbnRleHRgIG9iamVjdC4KKyAgICAgICAgV2l0aCB0aGVz
ZSBjaGFuZ2VzLCBhIFdlYkNvbnRlbnQgcHJvY2VzcyBjYW4gZm9yd2FyZCBhIHNlcmlhbGl6ZWQg
YEFWT3V0cHV0Q29udGV4dGAgb2JqZWN0CisgICAgICAgIHRvIG90aGVyIHByb2Nlc3NlcyAoZS5n
LiwgdGhlIEdQVSBwcm9jZXNzKSB3aXRob3V0IGRlc2VyaWFsaXppbmcgaXQuIFRoZXJlZm9yZSwg
dGhlIFdlYkNvbnRlbnQKKyAgICAgICAgcHJvY2VzcyBkb2VzIG5vdCBuZWVkIGFjY2VzcyB0byB0
aGUgQ29yZU1lZGlhIHJvdXRpbmcgc2VydmljZS4gU28gd2UgY2FuIHJlbW92ZSB0aGUgZml4IChy
Mjc1NjY5KQorICAgICAgICBmb3IgYnVnIDIyNDMyOC4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4
aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lv
bk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSk6CisgICAgICAgICogTW9kdWxl
cy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaDoKKworICAgICAgICAqIEhlYWRlcnMu
Y21ha2U6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIE1vZGlmeSB0aGUgcHJvamVjdCBmaWxl
IGJlY2F1c2UgYE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0YCBpcyB1c2VkIGluIENvY29hIHBv
cnRzIG9ubHkuCisKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRl
KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSk6CisgICAgICAgICogcGFnZS9QYWdl
Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0OjpoYXNBY3RpdmVSb3V0ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0OjpkZXZpY2VOYW1l
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQ6OnN1cHBvcnRz
UmVtb3RlVmlkZW9QbGF5YmFjayk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJn
ZXRDb2NvYS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpv
dXRwdXRDb250ZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjp+TWVkaWFQbGF5YmFj
a1RhcmdldENvY29hKToKKyAgICAgICAgKFdlYkNvcmU6OnRvTWVkaWFQbGF5YmFja1RhcmdldENv
Y29hKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6c3VwcG9y
dHNSZW1vdGVWaWRlb1BsYXliYWNrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6dGFyZ2V0Q29udGV4dCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6Omhhc0FjdGl2ZVJv
dXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXRDb2NvYTo6ZGV2aWNlTmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIERvbid0IGRpcmVj
dGx5IHVzZSBgQVZPdXRwdXRDb250ZXh0YCBpbiB0aGlzIGNsYXNzLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0V2ly
ZWxlc3NQbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCk6CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6bW9ja1N0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpvdXRwdXRDb250ZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpzZXJpYWxpemVkT3V0
cHV0Q29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6ZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW06IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpkZXZpY2VOYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpoYXNBY3RpdmVSb3V0ZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6c3VwcG9ydHNSZW1vdGVWaWRlb1Bs
YXliYWNrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpzZXJpYWxpemVPdXRwdXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpkZXNlcmlhbGl6ZU91dHB1dENvbnRleHQpOgorCisgICAgICAg
ICogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayk6Cisg
ICAgICAgIChXZWJDb3JlOjp0b01lZGlhUGxheWJhY2tUYXJnZXRNb2NrKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjp0YXJnZXRDb250ZXh0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmg6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6c3RhdGUgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OmV4
dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OmludmFs
aWRhdGVQbGF5YmFja1RhcmdldHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlck1vY2s6OnNldFN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmg6CisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRNb2NrTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlclN0YXRlKToKKwogMjAyMS0wNC0xNSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1
ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzYxMDcu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDY5MWI0YTk1ZWMzZjEyN2VhMmQ5MzhkMTBiNDA1OGViNjQ1ZTg0NmUuLmVm
YmE0NGQ5M2Y5ZTM5ZGNlNDk0NGExMDM5OWE5YTEwNTZkOTgwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDggQEAKKzIwMjEtMDQtMTYgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKwor
ICAgICAgICBbR1BVUF0gV2ViQ29udGVudCBwcm9jZXNzIHNob3VsZCBub3QgY3JlYXRlIEFWT3V0
cHV0Q29udGV4dCBpbnN0YW5jZXMgd2hlbiBtZWRpYSBpbiBHUFUgUHJvY2VzcyBpcyBlbmFibGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ0NjkK
KworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaDoKKworICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmFjdGl2
ZVZpZGVvUm91dGVEaWRDaGFuZ2UpOgorCisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVB
cmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dD46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1l
bnRDb2RlcnNNYWMubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjplbmNvZGVQbGF0Zm9ybURhdGEpOiBEZWxldGVkLgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKTogRGVsZXRlZC4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjptZWRpYVJlbGF0ZWRJT0tp
dENsYXNzZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1l
dGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0
UGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViS2l0Ojp0ZW1wb3JhcnlNYWNoU2VydmljZXMp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENo
YW5nZSk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbGF5YmFja1RhcmdldFNlbGVjdGVkIGNv
bnN0KToKKwogMjAyMS0wNC0xNSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzYxMDcuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKaW5kZXggOWIzYzQ3ZTU4ZjQ4ZTY5MTFhZWY1ZDg1MjQxMTM4Mjc3Njli
NzkzNS4uYjc0MTM2MDBiYmE5YzI4YzY4Y2Y1NzRkZjZiMGQ4ZWI0MTRmYjUwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA0LTE2ICBQZW5nIExp
dSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIFdlYkNvbnRlbnQgcHJv
Y2VzcyBzaG91bGQgbm90IGNyZWF0ZSBBVk91dHB1dENvbnRleHQgaW5zdGFuY2VzIHdoZW4gbWVk
aWEgaW4gR1BVIFByb2Nlc3MgaXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAoV2Vi
Q2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaDoKKyAgICAgICAg
KiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW06CisgICAgICAgIChXZWJN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
clN0YXRlKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZp
ZXcgX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTmFtZTpzdGF0ZTpdKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgorCiAyMDIxLTA0LTE1ICBDb21taXQgUXVl
dWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZl
cnRpbmcgcjI3NjEwNy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGUxMTUwNWNkZDBmOGU0M2IyODcz
ZGI3YTFkNTgxZjhkZjk4NGZlYjMuLmMwNGY4MDRlZDkzN2M2NzBhZGVmN2IzYjY4OWQ4OTVkZmE3
ZTdiMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTI2OSw3ICsxMjY5LDYgQEAgc2V0KFdlYkNv
cmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01JTUVU
eXBlQ2FjaGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXQuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRDbGllbnQuaAotICAgIHBs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVt
cy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVk
aWFTZXNzaW9uTWFuYWdlci5jcHAKaW5kZXggNmM2YWIwZTdhNjJlYzRkYTQ1ZWQzZGJjOTQxNDU1
MTc1Y2Q0NGQ1YS4uZDViNTk1YTRhYzQ5ZmYwZWZmZTYyYjQ1MmVjMzQyYjdkMzgzMDQ4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNl
c3Npb25NYW5hZ2VyLmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9u
TWFuYWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wgZW5h
YmxlCiAgICAgbV9tb2NrUGlja2VyRW5hYmxlZCA9IGVuYWJsZWQ7CiB9CiAKLXZvaWQgV2ViTWVk
aWFTZXNzaW9uTWFuYWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShj
b25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0
ZSkKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCiB7CiAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5B
R0VSKF9fZnVuY19fKTsKICAgICBtb2NrUGlja2VyKCkuc2V0U3RhdGUobmFtZSwgc3RhdGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lv
bk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Np
b25NYW5hZ2VyLmgKaW5kZXggZDdmMjhjY2I3NWU1ZDc1NWRhZjQzMzRlZjY1NmNiMTQxOTBmYWI1
NC4uMWJhMTI4NGYyMzMzYzc4NDZhYjgwZDRlMTFkYjJiZjRmMDIwNjZiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdl
ci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
V2ViTWVkaWFTZXNzaW9uTWFuYWdlciYgc2hhcmVkKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUo
Y29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUo
Y29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21p
c3NQb3B1cCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllciBhZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudChXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyQ2xpZW50JiwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA4MjdjNTRkYTg5Y2VkZmU0OWZlZmNmNWY2ZTY5
NjdlM2E4MzcyY2M5Li4yYTI0YzJjNzRjMWY2OTg1OTVmNTJhNWNmM2MzOWM2ZjQ5Zjc3MzMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM2OSw2ICszNjksNyBAQCBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFj
ZVBvb2xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29j
b2EuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dC5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2VDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAyZDZhNDYxMDliZDU0Y2IzYmM5YjllYTI3MTk0MTBmMmEzYTVhNGM5Li41N2FiYWU2NDFi
MjZkMzFlYzAzNDllODczYmIyMWQzNWVmNDM4ZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02OTgwLDYgKzY5ODAsNyBAQAog
CQkxRDAwMjZBMzIzNzRENjI0MDBDQTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGljdHVyZUluUGljdHVy
ZVdpbmRvdy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEMDAyNkE4MjM3NEY5
RDkwMENBNkNERiAvKiBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUQwMDI2QTkyMzc0RjlEOTAwQ0E2Q0RGIC8qIEpT
RW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFEMDA4QUE1MjYyMTA4QzAwMEVFM0FERSAvKiBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDJDODJCNjIz
NkEzRjZBMDA1NUQ2QzUgLyogUGljdHVyZUluUGljdHVyZVN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUGljdHVyZUluUGljdHVyZVN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUQ0NzY1OEQyNUNDQTc3ODAwN0FGMzEyIC8qIEltYWdlRGVjb2RlcklkZW50aWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW1hZ2VEZWNvZGVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxREFCMzExMzI1MUQ3MjVDMDBGQzk0ODUgLyogVmlkZW9MYXllck1hbmFn
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9MYXllck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTI2OTY2LDcgKzI2OTY3LDYgQEAKIAkJCQlDRERFMDJFOTE4QjNERkM3
MDBDRjdGRjEgLyogTGVnYWN5Q0RNU2Vzc2lvbi5oICovLAogCQkJCTA3RTNERkQwMUE5RTc4NjUw
MDc2NENBOCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0LmggKi8sCiAJCQkJMDc5MjE2NTMxQUE1NjBB
QTAwQTNDMDQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDbGllbnQuaCAqLywKLQkJCQkwN0Y4NzY4
MzFBRDRBOTQ1MDA5MDU4NDkgLyogTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaCAqLywKIAkJ
CQkwNzhFNDNENzFBQkI2QzdFMDAxQzJGQTYgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5j
cHAgKi8sCiAJCQkJMDc4RTQzRDgxQUJCNkM3RTAwMUMyRkE2IC8qIE1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXIuaCAqLywKIAkJCQlFNEI0MUUwQzBDQkY5MEJEMDBBRjJFQ0UgLyogTWVkaWFQbGF5
ZXIuY3BwICovLApAQCAtMjcxODIsNiArMjcxODIsOCBAQAogCQkJCUFEOUZGNkUwMTkwODM5MUQw
MDNCNjFFMCAvKiBJT1N1cmZhY2VQb29sQ29jb2EubW0gKi8sCiAJCQkJQ0RDNDhBQzgyMTQ5Q0Yy
QTAwMjRGRDU5IC8qIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAgKi8s
CiAJCQkJQ0RDNDhBQzcyMTQ5Q0YyQTAwMjRGRDU5IC8qIE1lZGlhRW5naW5lQ29uZmlndXJhdGlv
bkZhY3RvcnlDb2NvYS5oICovLAorCQkJCTA3Rjg3NjgzMUFENEE5NDUwMDkwNTg0OSAvKiBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oICovLAorCQkJCTFEMDA4QUE1MjYyMTA4QzAwMEVFM0FE
RSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5tbSAqLywKIAkJCQkzMTY0N0ZBODI1MTYx
NkJEMDAxMEY4RkIgLyogT3BlbkdMU29mdExpbmtDb2NvYS5oICovLAogCQkJCTMxNjQ3RkE5MjUx
NjE2QkQwMDEwRjhGQiAvKiBPcGVuR0xTb2Z0TGlua0NvY29hLm1tICovLAogCQkJCTdCNjRDMEI0
MjU0QzNCMTYwMDA2QjRBRiAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29h
Lm1tICovLApAQCAtMzIxMTUsNiArMzIxMTcsNyBAQAogCQkJCTQxNjJBNDUxMTAxMTQ1QUUwMERG
RjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDFBM0Q1OEYxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkQwNkRGQTYxMzRBNERFRjAwNkY1RDdEIC8qIERlZmF1bHRBdWRpb0Rl
c3RpbmF0aW9uTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTRGMzhEMUIyNjI2RjEzQjAwN0Ix
MDY0IC8qIERlZmF1bHRSZXNvdXJjZUxvYWRQcmlvcml0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0Q4M0QzNjIyMTEyMkEyMTAwNzZFMTFDIC8qIERlZmVycmFibGVUYXNrLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRDMxNjAyQzEyQjAyNjc2MDBDMUEzNTkgLyogRGVsYXlEU1BLZXJuZWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZEMzE2MDJFMTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxheU5vZGUuaCBp
biBIZWFkZXJzICovLApAQCAtMzQ2MTQsNyArMzQ2MTcsNiBAQAogCQkJCUI1OTVGRjQ3MTgyNENF
RTMwMEZGNTFDRCAvKiBSZW5kZXJJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4
N0EwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjU4MENGRjBGMTJERTlCMDA1MUQ2ODkgLyogUmVuZGVyTGF5ZXJCYWNraW5nLmggaW4gSGVhZGVy
cyAqLywKLQkJCQlFNEYzOEQxQjI2MjZGMTNCMDA3QjEwNjQgLyogRGVmYXVsdFJlc291cmNlTG9h
ZFByaW9yaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MENGRDBGMTJERTlCMDA1MUQ2ODkg
LyogUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkzQzI0NEZFQUEz
NzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY1M0ZCODQyMTNCN0E2NDAwQzQwRDM0IC8qIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFy
ZWEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZDBi
YzM1NTBkNGQwODM1YzMzM2UxZjQ4M2Y1ZjI1YWRkMDQ4MzNjZS4uZGY0YzljMWY4NGVjYTIwZTdi
MWZiZDM3YzE0MzhjNWUwYWJiMGQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBA
IC01MTMsNyArNTEzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzaG93UGxheWJhY2tU
YXJnZXRQaWNrZXIoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3Qg
SW50UG9pbnQmLCBib29sIC8qaXNWaWRlbyovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGxheWJh
Y2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5nZShQbGF5YmFja1RhcmdldENsaWVudENv
bnRleHRJZGVudGlmaWVyLCBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9v
bCkgIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
clN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSkg
eyB9CisgICAgdmlydHVhbCB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3Rh
dGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlz
c1BvcHVwKCkgeyB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggYmQ5ZTUzODJiYzlk
Y2NiYWZmZWM2YjM5NDIyMjRjOGQ1ZWE2NmI5YS4uY2RiZmZhMGM2YTA1MmIwZTFmYTAxY2QxZmQ5
MzFkYmNiZmRkZjU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yOTUyLDcgKzI5NTIsNyBAQCB2
b2lkIFBhZ2U6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sIGVu
YWJsZWQpCiAgICAgY2hyb21lKCkuY2xpZW50KCkuc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJFbmFibGVkKGVuYWJsZWQpOwogfQogCi12b2lkIFBhZ2U6OnNldE1vY2tNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCit2b2lkIFBhZ2U6OnNldE1vY2tNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKQogewogICAgIGNocm9tZSgpLmNsaWVudCgpLnNldE1v
Y2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUobmFtZSwgc3RhdGUpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAppbmRleCA5MTAwMDMxNmU1MzQ0YmMzYWY3YmMzZTZmMmRiMjBkOGRmZWQyZDZlLi42Yjc2
Y2MxMTU4YzNmNmE0NDA4NzA0MDlmMTNmMGY3MjIxOTgzMjM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAt
NzMxLDcgKzczMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tl
cihQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBjb25zdCBJbnRQb2ludCYs
IGJvb2wsIFJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBwbGF5
YmFja1RhcmdldFBpY2tlckNsaWVudFN0YXRlRGlkQ2hhbmdlKFBsYXliYWNrVGFyZ2V0Q2xpZW50
Q29udGV4dElkZW50aWZpZXIsIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJs
ZWQoYm9vbCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpTdGF0ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpNb2NrU3RhdGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW9ja01lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
UGxheWJhY2tUYXJnZXQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgUmVm
PE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldC5oCmluZGV4IDZhZGZhOTM3ZjczZjU3
M2Q5NWM5ZmNkNzRkNmQyMWI4NzNhMmY3ODguLjYxMjgwODUwMWYwNGYyZmE1ZDRmYmRkODI2YTVl
YTA5NmYyYTNjNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWJhY2tUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0LmgKQEAgLTI3LDI0ICsyNywyMyBAQAogCiAjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKIAorI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OwotCiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0IDogcHVibGljIFJl
ZkNvdW50ZWQ8TWVkaWFQbGF5YmFja1RhcmdldD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfk1l
ZGlhUGxheWJhY2tUYXJnZXQoKSA9IGRlZmF1bHQ7CiAKLSAgICBlbnVtIFRhcmdldFR5cGUgeyBB
VkZvdW5kYXRpb24sIE1vY2sgfTsKKyAgICBlbnVtIGNsYXNzIFRhcmdldFR5cGUgOiB1aW50OF90
IHsgQVZGb3VuZGF0aW9uLCBNb2NrIH07CiAgICAgdmlydHVhbCBUYXJnZXRUeXBlIHRhcmdldFR5
cGUoKSBjb25zdCA9IDA7Ci0KICAgICB2aXJ0dWFsIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0JiB0YXJnZXRDb250ZXh0KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBoYXNB
Y3RpdmVSb3V0ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyBkZXZpY2VOYW1lKCkg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2so
KSBjb25zdCA9IDA7CisKKyAgICBib29sIGhhc0FjdGl2ZVJvdXRlKCkgY29uc3QgeyByZXR1cm4g
dGFyZ2V0Q29udGV4dCgpLmhhc0FjdGl2ZVJvdXRlKCk7IH0KKyAgICBTdHJpbmcgZGV2aWNlTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIHRhcmdldENvbnRleHQoKS5kZXZpY2VOYW1lKCk7IH0KKyAgICBi
b29sIHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygpIHsgcmV0dXJuIHRhcmdldENvbnRleHQo
KS5zdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKTsgfQogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjZTRhM2VjMzAxZTlk
OWU5NzQ0ZGNiZjI5YjdhN2ExMGJmNGIzNGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHRfaAotI2RlZmluZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dF9oCi0KLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotCi0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLU9CSkNfQ0xBU1MgQVZPdXRwdXRDb250ZXh0Owot
Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi1PQkpDX0NMQVNTIE5TS2V5ZWRBcmNoaXZlcjsKLU9CSkNf
Q0xBU1MgTlNLZXllZFVuYXJjaGl2ZXI7Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCB7Ci1wdWJsaWM6Ci0gICAgZW51bSBU
eXBlIDogaW50MzJfdCB7Ci0gICAgICAgIE5vbmUsCi0gICAgICAgIEFWT3V0cHV0Q29udGV4dFR5
cGUsCi0gICAgICAgIE1vY2tUeXBlLAotICAgIH07Ci0KLSAgICBlbnVtIENvbnRleHRTdGF0ZSB7
Ci0gICAgICAgIFVua25vd24gPSAwLAotICAgICAgICBPdXRwdXREZXZpY2VVbmF2YWlsYWJsZSA9
IDEsCi0gICAgICAgIE91dHB1dERldmljZUF2YWlsYWJsZSA9IDIsCi0gICAgfTsKLSAgICB0eXBl
ZGVmIHVuc2lnbmVkIFN0YXRlOwotCi0gICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQoKQot
ICAgICAgICA6IG1fdHlwZShOb25lKQotICAgIHsKLSAgICB9Ci0KLSAgICBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dChBVk91dHB1dENvbnRleHQgKm91dHB1dENvbnRleHQpCi0gICAgICAgIDog
bV90eXBlKEFWT3V0cHV0Q29udGV4dFR5cGUpCi0gICAgICAgICwgbV9vdXRwdXRDb250ZXh0KG91
dHB1dENvbnRleHQpCi0gICAgewotICAgIH0KLQotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0KGNvbnN0IFN0cmluZyYgbmFtZSwgU3RhdGUgc3RhdGUpCi0gICAgICAgIDogbV90eXBlKE1v
Y2tUeXBlKQotICAgICAgICAsIG1fbmFtZShuYW1lKQotICAgICAgICAsIG1fc3RhdGUoc3RhdGUp
Ci0gICAgewotICAgIH0KLQotICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsg
fQotCi0gICAgY29uc3QgU3RyaW5nJiBtb2NrRGV2aWNlTmFtZSgpIGNvbnN0Ci0gICAgewotICAg
ICAgICBBU1NFUlQobV90eXBlID09IE1vY2tUeXBlKTsKLSAgICAgICAgcmV0dXJuIG1fbmFtZTsK
LSAgICB9Ci0KLSAgICBTdGF0ZSBtb2NrU3RhdGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBNb2NrVHlwZSk7Ci0gICAgICAgIHJldHVybiBtX3N0YXRlOwotICAgIH0K
LQotICAgIEFWT3V0cHV0Q29udGV4dCAqYXZPdXRwdXRDb250ZXh0KCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQVZPdXRwdXRDb250ZXh0VHlwZSk7Ci0gICAgICAgIHJl
dHVybiBtX291dHB1dENvbnRleHQ7Ci0gICAgfQotCi0gICAgYm9vbCBlbmNvZGluZ1JlcXVpcmVz
UGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IEFWT3V0cHV0Q29udGV4dFR5
cGU7IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgVHlwZSBtX3R5cGUgeyBOb25lIH07Ci0gICAgQVZP
dXRwdXRDb250ZXh0ICptX291dHB1dENvbnRleHQgeyBudWxscHRyIH07Ci0gICAgU3RyaW5nIG1f
bmFtZTsKLSAgICBTdGF0ZSBtX3N0YXRlIHsgVW5rbm93biB9OwotfTsKLQotfQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLQotI2VuZGlmIC8vIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJn
ZXRDb2NvYS5oCmluZGV4IDZhOGUxOTQ3NmEzNDdkOGU3NDg0MWZmNjlmYmQ0OGIwOTIyM2M4ODku
LjY4ZTM1MmNhMDhjOThiYmYxYzk5ZGZhMjVhNDkwMzVkYWJmMzRiNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNr
VGFyZ2V0Q29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmgKQEAgLTI4LDcgKzI4LDYgQEAKICNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogCiAjaW5jbHVkZSAiTWVkaWFQbGF5
YmFja1RhcmdldC5oIgotI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgiCiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNiw2
ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXRD
b2NvYSA6IHB1YmxpYyBNZWRpYVBsYXliYWNrVGFyZ2V0IHsKIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IGNyZWF0ZShBVk91dHB1dENv
bnRleHQgKik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNZWRpYVBsYXliYWNrVGFy
Z2V0PiBjcmVhdGUoTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmJik7CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpICYmICFQTEFU
Rk9STShNQUNDQVRBTFlTVCkKICAgICBzdGF0aWMgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IGNy
ZWF0ZSgpOwpAQCAtNDMsMjEgKzQzLDE0IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfk1lZGlh
UGxheWJhY2tUYXJnZXRDb2NvYSgpOwogCi0gICAgVGFyZ2V0VHlwZSB0YXJnZXRUeXBlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gQVZGb3VuZGF0aW9uOyB9Ci0KLSAgICBjb25zdCBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0Q29udGV4dCgpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wg
aGFzQWN0aXZlUm91dGUoKSBjb25zdCBmaW5hbDsKLSAgICBTdHJpbmcgZGV2aWNlTmFtZSgpIGNv
bnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrKCkgY29uc3Qg
ZmluYWw7Ci0KLSAgICBBVk91dHB1dENvbnRleHQgKm91dHB1dENvbnRleHQoKSBjb25zdCB7IHJl
dHVybiBtX291dHB1dENvbnRleHQuZ2V0KCk7IH0KKyAgICBUYXJnZXRUeXBlIHRhcmdldFR5cGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBUYXJnZXRUeXBlOjpBVkZvdW5kYXRpb247IH0KKyAgICBj
b25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0Q29udGV4dCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fY29udGV4dDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgTWVkaWFQbGF5YmFj
a1RhcmdldENvY29hKEFWT3V0cHV0Q29udGV4dCAqKTsKKyAgICBleHBsaWNpdCBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29jb2EoQVZPdXRwdXRDb250ZXh0ICopOworICAgIGV4cGxpY2l0IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb2NvYShNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmKTsKIAotICAgIFJl
dGFpblB0cjxBVk91dHB1dENvbnRleHQ+IG1fb3V0cHV0Q29udGV4dDsKLSAgICBtdXRhYmxlIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IG1fY29udGV4dDsKLSAgICBTdHJpbmcgbV9kZXZpY2VO
YW1lOworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IG1fY29udGV4dDsKIH07CiAKIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb2NvYSogdG9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoTWVkaWFQ
bGF5YmFja1RhcmdldCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0
Q29jb2EubW0KaW5kZXggZGFjOGNjNDgxNTZjMmM3ZTc0ZWFhYzdiNGRkZTRiYzIxNzc1MTlhYS4u
NmY1YzI3ZTM5NDBlM2EwODdiZjIxYjhmNDAwNDFiNDc1MGRkZGEzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tU
YXJnZXRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1tCkBAIC0zNCw5MiArMzQsMzYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gTWVkaWFQ
bGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUoQVZPdXRwdXRDb250ZXh0ICpjb250ZXh0KQorUmVm
PE1lZGlhUGxheWJhY2tUYXJnZXQ+IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKEFW
T3V0cHV0Q29udGV4dCAqb3V0cHV0Q29udGV4dCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoY29udGV4dCkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShvdXRwdXRDb250ZXh0KSk7CiB9CiAKLU1l
ZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hKEFWT3V0cHV0
Q29udGV4dCAqY29udGV4dCkKLSAgICA6IE1lZGlhUGxheWJhY2tUYXJnZXQoKQotICAgICwgbV9v
dXRwdXRDb250ZXh0KGNvbnRleHQpCitSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gTWVkaWFQbGF5
YmFja1RhcmdldENvY29hOjpjcmVhdGUoTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmJiBjb250
ZXh0KQogeworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhUGxheWJhY2tUYXJnZXRDb2Nv
YShXVEZNb3ZlKGNvbnRleHQpKSk7CiB9CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAh
UExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkK
LVJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0
ZSgpCitNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShB
Vk91dHB1dENvbnRleHQgKm91dHB1dENvbnRleHQpCisgICAgOiBtX2NvbnRleHQob3V0cHV0Q29u
dGV4dCkKIHsKLSAgICBhdXRvICpyb3V0aW5nQ29udGV4dFVJRCA9IFtbUEFMOjpnZXRBVkF1ZGlv
U2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5zdGFuY2VdIHJvdXRpbmdDb250ZXh0VUlEXTsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoW1BBTDo6Z2V0QVZP
dXRwdXRDb250ZXh0Q2xhc3MoKSBvdXRwdXRDb250ZXh0Rm9ySUQ6cm91dGluZ0NvbnRleHRVSURd
KSk7CiB9Ci0jZW5kaWYKIAotYm9vbCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OnN1cHBvcnRz
UmVtb3RlVmlkZW9QbGF5YmFjaygpIGNvbnN0CitNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRDb2NvYShNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmIGNvbnRl
eHQpCisgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKIHsKLSAgICBpZiAoIW1fb3V0
cHV0Q29udGV4dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFbbV9vdXRwdXRD
b250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc3VwcG9ydHNNdWx0aXBsZU91dHB1
dERldmljZXMpXSB8fCAhW21fb3V0cHV0Q29udGV4dCBzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2
aWNlc10gfHwgIVttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihv
dXRwdXREZXZpY2VzKV0pIHsKLSAgICAgICAgaWYgKGF1dG8gKm91dHB1dERldmljZSA9IFttX291
dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlXSkgewotICAgICAgICAgICAgaWYgKG91dHB1dERldmlj
ZS5kZXZpY2VGZWF0dXJlcyAmIEFWT3V0cHV0RGV2aWNlRmVhdHVyZVZpZGVvKQotICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQotICAgIGZvciAoQVZPdXRwdXREZXZpY2UgKm91dHB1dERldmljZSBpbiBbbV9vdXRw
dXRDb250ZXh0IG91dHB1dERldmljZXNdKSB7Ci0gICAgICAgIGlmIChvdXRwdXREZXZpY2UuZGV2
aWNlRmVhdHVyZXMgJiBBVk91dHB1dERldmljZUZlYXR1cmVWaWRlbykKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKIH0KIAotTWVkaWFQbGF5YmFj
a1RhcmdldENvY29hOjp+TWVkaWFQbGF5YmFja1RhcmdldENvY29hKCkKLXsKLX0KLQotY29uc3Qg
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6dGFy
Z2V0Q29udGV4dCgpIGNvbnN0Ci17Ci0gICAgbV9jb250ZXh0ID0gTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQobV9vdXRwdXRDb250ZXh0LmdldCgpKTsKLSAgICByZXR1cm4gbV9jb250ZXh0Owot
fQotCi1ib29sIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6aGFzQWN0aXZlUm91dGUoKSBjb25z
dAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVM
QVRPUikgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+
IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKCkKIHsKLSAgICBpZiAoIW1fb3V0cHV0
Q29udGV4dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKFttX291dHB1dENvbnRl
eHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2
aWNlcyldICYmIFttX291dHB1dENvbnRleHQgc3VwcG9ydHNNdWx0aXBsZU91dHB1dERldmljZXNd
ICYmIFttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdXRwdXRE
ZXZpY2VzKV0pIHsKLSAgICAgICAgZm9yIChBVk91dHB1dERldmljZSAqb3V0cHV0RGV2aWNlIGlu
IFttX291dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlc10pIHsKLSAgICAgICAgICAgIGlmIChvdXRw
dXREZXZpY2UuZGV2aWNlRmVhdHVyZXMgJiAoQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8gfCBB
Vk91dHB1dERldmljZUZlYXR1cmVBdWRpbykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKFtt
X291dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdXRwdXREZXZpY2Up
XSkgewotICAgICAgICBpZiAoYXV0byAqb3V0cHV0RGV2aWNlID0gW21fb3V0cHV0Q29udGV4dCBv
dXRwdXREZXZpY2VdKQotICAgICAgICAgICAgcmV0dXJuIG91dHB1dERldmljZS5kZXZpY2VGZWF0
dXJlcyAmIChBVk91dHB1dERldmljZUZlYXR1cmVWaWRlbyB8IEFWT3V0cHV0RGV2aWNlRmVhdHVy
ZUF1ZGlvKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbV9vdXRwdXRDb250ZXh0LmdldCgpLmRldmlj
ZU5hbWU7CisgICAgYXV0byAqcm91dGluZ0NvbnRleHRVSUQgPSBbW1BBTDo6Z2V0QVZBdWRpb1Nl
c3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXSByb3V0aW5nQ29udGV4dFVJRF07CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFQbGF5YmFja1RhcmdldENvY29hKFtQQUw6OmdldEFWT3V0
cHV0Q29udGV4dENsYXNzKCkgb3V0cHV0Q29udGV4dEZvcklEOnJvdXRpbmdDb250ZXh0VUlEXSkp
OwogfQorI2VuZGlmCiAKLVN0cmluZyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmRldmljZU5h
bWUoKSBjb25zdAorTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjp+TWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hKCkKIHsKLSAgICBpZiAoIW1fb3V0cHV0Q29udGV4dCkKLSAgICAgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7Ci0KLSAgICBpZiAoIVttX291dHB1dENvbnRleHQgc3VwcG9ydHNNdWx0aXBs
ZU91dHB1dERldmljZXNdKQotICAgICAgICByZXR1cm4gW21fb3V0cHV0Q29udGV4dCBkZXZpY2VO
YW1lXTsKLQotICAgIGF1dG8gb3V0cHV0RGV2aWNlTmFtZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdKTsKLSAgICBmb3IgKEFWT3V0cHV0RGV2aWNlICpvdXRwdXREZXZp
Y2UgaW4gW21fb3V0cHV0Q29udGV4dCBvdXRwdXREZXZpY2VzXSkKLSAgICAgICAgW291dHB1dERl
dmljZU5hbWVzIGFkZE9iamVjdDpbb3V0cHV0RGV2aWNlIGRldmljZU5hbWVdXTsKLQotICAgIHJl
dHVybiBbb3V0cHV0RGV2aWNlTmFtZXMgY29tcG9uZW50c0pvaW5lZEJ5U3RyaW5nOkAiICsgIl07
CiB9CiAKIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSogdG9NZWRpYVBsYXliYWNrVGFyZ2V0Q29j
b2EoTWVkaWFQbGF5YmFja1RhcmdldCogcmVwKQpAQCAtMTI5LDcgKzczLDcgQEAgTWVkaWFQbGF5
YmFja1RhcmdldENvY29hKiB0b01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShNZWRpYVBsYXliYWNr
VGFyZ2V0KiByZXApCiAKIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSogdG9NZWRpYVBs
YXliYWNrVGFyZ2V0Q29jb2EoY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldCogcmVwKQogewotICAg
IEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHJlcC0+dGFyZ2V0VHlwZSgpID09IE1l
ZGlhUGxheWJhY2tUYXJnZXQ6OkFWRm91bmRhdGlvbik7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTihyZXAtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNr
VGFyZ2V0OjpUYXJnZXRUeXBlOjpBVkZvdW5kYXRpb24pOwogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EqPihyZXApOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQppbmRleCAyMGIyNDEyZjExMzY2M2MxZjM4NjJmMjdiNjYyNDAwZjZjZGIwNzJi
Li4wYWMwOTNlNTBjYTI5ODBjNTlhMzI3YTJjMmU4ODFlY2RmYjFiYmQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KQEAgLTI4MjQsNyArMjgyNCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6aXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcygpIGNvbnN0
CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9wbGF5YmFja1RhcmdldCkg
ewotICAgICAgICBpZiAobV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxh
eWJhY2tUYXJnZXQ6OkFWRm91bmRhdGlvbikKKyAgICAgICAgaWYgKG1fcGxheWJhY2tUYXJnZXQt
PnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpUYXJnZXRUeXBlOjpBVkZvdW5k
YXRpb24pCiAgICAgICAgICAgICB3aXJlbGVzc1RhcmdldCA9IG1fYXZQbGF5ZXIgJiYgbV9hdlBs
YXllci5nZXQoKS5leHRlcm5hbFBsYXliYWNrQWN0aXZlOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICB3aXJlbGVzc1RhcmdldCA9IG1fc2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQgJiYgbV9w
bGF5YmFja1RhcmdldC0+aGFzQWN0aXZlUm91dGUoKTsKQEAgLTI5NjgsNyArMjk2OCw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0V2lyZWxlc3NQbGF5YmFj
a1RhcmdldChSZWY8TWVkaWFQbGF5CiB7CiAgICAgbV9wbGF5YmFja1RhcmdldCA9IFdURk1vdmUo
dGFyZ2V0KTsKIAotICAgIG1fb3V0cHV0Q29udGV4dCA9IG1fcGxheWJhY2tUYXJnZXQtPnRhcmdl
dFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpBVkZvdW5kYXRpb24gPyB0b01lZGlhUGxh
eWJhY2tUYXJnZXRDb2NvYShtX3BsYXliYWNrVGFyZ2V0LmdldCgpKS0+b3V0cHV0Q29udGV4dCgp
IDogbnVsbHB0cjsKKyAgICBtX291dHB1dENvbnRleHQgPSBtX3BsYXliYWNrVGFyZ2V0LT50YXJn
ZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldDo6VGFyZ2V0VHlwZTo6QVZGb3VuZGF0aW9u
ID8gdG9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EobV9wbGF5YmFja1RhcmdldC5nZXQoKSktPnRh
cmdldENvbnRleHQoKS5vdXRwdXRDb250ZXh0KCkgOiBudWxscHRyOwogCiAgICAgSU5GT19MT0co
TE9HSURFTlRJRklFUik7CiAKQEAgLTI5ODgsNyArMjk4OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9v
bCBzaG91CiAKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCBzaG91bGRQbGF5KTsKIAotICAg
IGlmIChtX3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1Rhcmdl
dDo6QVZGb3VuZGF0aW9uKSB7CisgICAgaWYgKG1fcGxheWJhY2tUYXJnZXQtPnRhcmdldFR5cGUo
KSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpUYXJnZXRUeXBlOjpBVkZvdW5kYXRpb24pIHsKICAg
ICAgICAgQVZPdXRwdXRDb250ZXh0ICpuZXdDb250ZXh0ID0gc2hvdWxkUGxheSA/IG1fb3V0cHV0
Q29udGV4dC5nZXQoKSA6IG5pbDsKIAogICAgICAgICBpZiAoIW1fYXZQbGF5ZXIpCkBAIC0zMDA1
LDcgKzMwMDUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wgc2hvdQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgQVNTRVJUKG1fcGxheWJhY2tUYXJnZXQtPnRhcmdldFR5cGUoKSA9PSBNZWRp
YVBsYXliYWNrVGFyZ2V0OjpNb2NrKTsKKyAgICBBU1NFUlQobV9wbGF5YmFja1RhcmdldC0+dGFy
Z2V0VHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6OlRhcmdldFR5cGU6Ok1vY2spOwogCiAg
ICAgc2V0RGVsYXlDYWxsYmFja3ModHJ1ZSk7CiAgICAgYXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA2YTUwYjAwNmVlYTBhOGIyMzYyOTYxNzVmYmRmNWE4NGM5N2VjMDQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dC5oCkBAIC0wLDAgKzEsMTM2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgUExBVEZPUk0oQ09DT0Ep
CitPQkpDX0NMQVNTIEFWT3V0cHV0Q29udGV4dDsKK09CSkNfQ0xBU1MgTlNEYXRhOworI2VuZGlm
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQgeworcHVibGljOgorICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeworICAgICAgICBO
b25lLAorICAgICAgICBBVk91dHB1dENvbnRleHQsCisgICAgICAgIFNlcmlhbGl6ZWRBVk91dHB1
dENvbnRleHQsCisgICAgICAgIE1vY2ssCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgTW9ja1N0
YXRlIDogdWludDhfdCB7CisgICAgICAgIFVua25vd24gPSAwLAorICAgICAgICBPdXRwdXREZXZp
Y2VVbmF2YWlsYWJsZSA9IDEsCisgICAgICAgIE91dHB1dERldmljZUF2YWlsYWJsZSA9IDIsCisg
ICAgfTsKKworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KCkgPSBkZWZhdWx0OworICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KFJldGFp
blB0cjxBVk91dHB1dENvbnRleHQ+JiYpOworCisgICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQoUmV0YWluUHRyPE5TRGF0YT4mJiBzZXJpYWxpemVkT3V0cHV0Q29udGV4dCwgYm9vbCBoYXNB
Y3RpdmVSb3V0ZSkKKyAgICAgICAgOiBtX3R5cGUoVHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29u
dGV4dCkKKyAgICAgICAgLCBtX3NlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KFdURk1vdmUoc2VyaWFs
aXplZE91dHB1dENvbnRleHQpKQorICAgICAgICAsIG1fY2FjaGVkSGFzQWN0aXZlUm91dGUoaGFz
QWN0aXZlUm91dGUpCisgICAgeworICAgICAgICBBU1NFUlQobV9zZXJpYWxpemVkT3V0cHV0Q29u
dGV4dCk7CisgICAgfQorCisgICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQoY29uc3QgU3Ry
aW5nJiBtb2NrRGV2aWNlTmFtZSwgTW9ja1N0YXRlIHN0YXRlKQorICAgICAgICA6IG1fdHlwZShU
eXBlOjpNb2NrKQorICAgICAgICAsIG1fbW9ja0RldmljZU5hbWUobW9ja0RldmljZU5hbWUpCisg
ICAgICAgICwgbV9tb2NrU3RhdGUoc3RhdGUpCisgICAgeworICAgIH0KKworICAgIFR5cGUgdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBk
ZXZpY2VOYW1lKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNBY3RpdmVSb3V0
ZSgpIGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrKCkgY29uc3Q7
CisKKyAgICBNb2NrU3RhdGUgbW9ja1N0YXRlKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gVHlwZTo6TW9jayk7CisgICAgICAgIHJldHVybiBtX21vY2tTdGF0ZTsKKyAg
ICB9CisKKyAgICBSZXRhaW5QdHI8QVZPdXRwdXRDb250ZXh0PiBvdXRwdXRDb250ZXh0KCkgY29u
c3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6QVZPdXRwdXRDb250ZXh0
KTsKKyAgICAgICAgcmV0dXJuIG1fb3V0cHV0Q29udGV4dDsKKyAgICB9CisKKyAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBzZXJpYWxpemVkT3V0cHV0Q29udGV4dCgpIGNvbnN0CisgICAgeworICAgICAg
ICBBU1NFUlQobV90eXBlID09IFR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQpOworICAg
ICAgICByZXR1cm4gbV9zZXJpYWxpemVkT3V0cHV0Q29udGV4dDsKKyAgICB9CisKKyAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHNlcmlhbGl6ZU91dHB1dENvbnRleHQoKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGRlc2VyaWFsaXplT3V0cHV0Q29udGV4dCgpOworCisgICAgYm9vbCBlbmNvZGlu
Z1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OkFW
T3V0cHV0Q29udGV4dCB8fCBtX3R5cGUgPT0gVHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4
dDsgfQorCitwcml2YXRlOgorICAgIFR5cGUgbV90eXBlIHsgVHlwZTo6Tm9uZSB9OworICAgIFJl
dGFpblB0cjxBVk91dHB1dENvbnRleHQ+IG1fb3V0cHV0Q29udGV4dDsKKyAgICBSZXRhaW5QdHI8
TlNEYXRhPiBtX3NlcmlhbGl6ZWRPdXRwdXRDb250ZXh0OworICAgIGJvb2wgbV9jYWNoZWRIYXNB
Y3RpdmVSb3V0ZSB7IGZhbHNlIH07CisKKyAgICBTdHJpbmcgbV9tb2NrRGV2aWNlTmFtZTsKKyAg
ICBNb2NrU3RhdGUgbV9tb2NrU3RhdGUgeyBNb2NrU3RhdGU6OlVua25vd24gfTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU+
IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok5vbmUsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQsCisgICAgICAgIFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRD
b250ZXh0LAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlw
ZTo6TW9jaworICAgID47Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU+IHsKKyAgICB1c2luZyB2
YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6TW9ja1N0YXRlLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6TW9ja1N0YXRlOjpVbmtub3duLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpPdXRwdXREZXZpY2VVbmF2YWlsYWJsZSwKKyAg
ICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6T3V0
cHV0RGV2aWNlQXZhaWxhYmxlCisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisj
ZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGJmOGZhYWIwMDM5MjRiNDU0YzE0
MWE3MTQ1OThlNDJhODdjYzlmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lm1tCkBAIC0w
LDAgKzEsMTYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
Ik1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgiCisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBv
cnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9BVkZvdW5kYXRpb25T
UEkuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dChSZXRhaW5QdHI8QVZPdXRwdXRDb250ZXh0PiYmIG91dHB1dENvbnRl
eHQpCisgICAgOiBtX291dHB1dENvbnRleHQob3V0cHV0Q29udGV4dCkKK3sKKyAgICBBU1NFUlQo
bV9vdXRwdXRDb250ZXh0KTsKKyAgICBtX3R5cGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0OworfQorCitTdHJpbmcgTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6OmRldmljZU5hbWUoKSBjb25zdAoreworICAgIEFTU0VSVChtX3R5cGUgPT0gTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2sgfHwgbV90eXBlID09IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQpOworCisgICAgaWYgKG1f
dHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6TW9jaykKKyAgICAgICAg
cmV0dXJuIG1fbW9ja0RldmljZU5hbWU7CisKKyAgICBBU1NFUlQobV90eXBlID09IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQpOworICAgIFN0cmluZyBk
ZXZpY2VOYW1lOworICAgIGlmICghW21fb3V0cHV0Q29udGV4dCBzdXBwb3J0c011bHRpcGxlT3V0
cHV0RGV2aWNlc10pCisgICAgICAgIGRldmljZU5hbWUgPSBbbV9vdXRwdXRDb250ZXh0IGRldmlj
ZU5hbWVdOworICAgIGVsc2UgeworICAgICAgICBhdXRvIG91dHB1dERldmljZU5hbWVzID0gYWRv
cHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgICAgIGZvciAoQVZPdXRw
dXREZXZpY2UgKm91dHB1dERldmljZSBpbiBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmljZXNd
KQorICAgICAgICAgICAgW291dHB1dERldmljZU5hbWVzIGFkZE9iamVjdDpbb3V0cHV0RGV2aWNl
IGRldmljZU5hbWVdXTsKKworICAgICAgICBkZXZpY2VOYW1lID0gW291dHB1dERldmljZU5hbWVz
IGNvbXBvbmVudHNKb2luZWRCeVN0cmluZzpAIiArICJdOworICAgIH0KKworICAgIHJldHVybiBk
ZXZpY2VOYW1lOworfQorYm9vbCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6aGFzQWN0aXZl
Um91dGUoKSBjb25zdAoreworICAgIEFTU0VSVChtX3R5cGUgIT0gTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6OlR5cGU6Ok5vbmUpOworICAgIGlmIChtX3R5cGUgPT0gTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6OlR5cGU6Ok1vY2spCisgICAgICAgIHJldHVybiAhbV9tb2NrRGV2aWNlTmFt
ZS5pc0VtcHR5KCk7CisKKyAgICAvLyBGSVhNRTogSXQgbWF5IG5vdCBiZSBzYWZlIHRvIHVzZSB0
aGUgY2FjaGVkIGBoYXNBY3RpdmVSb3V0ZWAgb2YgYSBzZXJpYWxpemVkIEFWT3V0cHV0Q29udGV4
dAorICAgIGlmIChtX3R5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OlNl
cmlhbGl6ZWRBVk91dHB1dENvbnRleHQpCisgICAgICAgIHJldHVybiBtX2NhY2hlZEhhc0FjdGl2
ZVJvdXRlOworCisgICAgQVNTRVJUKG1fdHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0KTsKKyAgICBib29sIGhhc0FjdGl2ZVJvdXRlID0gZmFs
c2U7CisgICAgaWYgKFttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNlcyldICYmIFttX291dHB1dENvbnRleHQgc3Vw
cG9ydHNNdWx0aXBsZU91dHB1dERldmljZXNdICYmIFttX291dHB1dENvbnRleHQgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihvdXRwdXREZXZpY2VzKV0pIHsKKyAgICAgICAgZm9yIChBVk91
dHB1dERldmljZSAqb3V0cHV0RGV2aWNlIGluIFttX291dHB1dENvbnRleHQgb3V0cHV0RGV2aWNl
c10pIHsKKyAgICAgICAgICAgIGlmIChvdXRwdXREZXZpY2UuZGV2aWNlRmVhdHVyZXMgJiAoQVZP
dXRwdXREZXZpY2VGZWF0dXJlVmlkZW8gfCBBVk91dHB1dERldmljZUZlYXR1cmVBdWRpbykpCisg
ICAgICAgICAgICAgICAgaGFzQWN0aXZlUm91dGUgPSB0cnVlOworICAgICAgICB9CisgICAgfSBl
bHNlIGlmIChbbV9vdXRwdXRDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob3V0
cHV0RGV2aWNlKV0pIHsKKyAgICAgICAgaWYgKGF1dG8gKm91dHB1dERldmljZSA9IFttX291dHB1
dENvbnRleHQgb3V0cHV0RGV2aWNlXSkKKyAgICAgICAgICAgIGhhc0FjdGl2ZVJvdXRlID0gb3V0
cHV0RGV2aWNlLmRldmljZUZlYXR1cmVzICYgKEFWT3V0cHV0RGV2aWNlRmVhdHVyZVZpZGVvIHwg
QVZPdXRwdXREZXZpY2VGZWF0dXJlQXVkaW8pOworICAgIH0gZWxzZQorICAgICAgICBoYXNBY3Rp
dmVSb3V0ZSA9IG1fb3V0cHV0Q29udGV4dC5nZXQoKS5kZXZpY2VOYW1lOworCisgICAgcmV0dXJu
IGhhc0FjdGl2ZVJvdXRlOworfQorYm9vbCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6c3Vw
cG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrIHx8IG1fdHlwZSA9PSBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0KTsKKyAgICBpZiAo
bV90eXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrKQorICAgICAg
ICByZXR1cm4gIW1fbW9ja0RldmljZU5hbWUuaXNFbXB0eSgpOworCisgICAgYm9vbCBzdXBwb3J0
c1JlbW90ZVZpZGVvUGxheWJhY2sgPSBmYWxzZTsKKyAgICBpZiAoIVttX291dHB1dENvbnRleHQg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNl
cyldIHx8ICFbbV9vdXRwdXRDb250ZXh0IHN1cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2VzXSB8
fCAhW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dERl
dmljZXMpXSkgeworICAgICAgICBpZiAoYXV0byAqb3V0cHV0RGV2aWNlID0gW21fb3V0cHV0Q29u
dGV4dCBvdXRwdXREZXZpY2VdKSB7CisgICAgICAgICAgICBpZiAob3V0cHV0RGV2aWNlLmRldmlj
ZUZlYXR1cmVzICYgQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8pCisgICAgICAgICAgICAgICAg
c3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0gZWxz
ZSB7CisgICAgICAgIGZvciAoQVZPdXRwdXREZXZpY2UgKm91dHB1dERldmljZSBpbiBbbV9vdXRw
dXRDb250ZXh0IG91dHB1dERldmljZXNdKSB7CisgICAgICAgICAgICBpZiAob3V0cHV0RGV2aWNl
LmRldmljZUZlYXR1cmVzICYgQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8pCisgICAgICAgICAg
ICAgICAgc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrID0gdHJ1ZTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHJldHVybiBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2s7Cit9CisKK2Jvb2wg
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OnNlcmlhbGl6ZU91dHB1dENvbnRleHQoKQorewor
ICAgIEFTU0VSVChtX3R5cGUgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OlNl
cmlhbGl6ZWRBVk91dHB1dENvbnRleHQpOworICAgIGlmIChtX3R5cGUgIT0gTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgYXV0byBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxs
b2NdIGluaXRSZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTXSk7CisgICAgW2FyY2hpdmVyIGVuY29k
ZU9iamVjdDptX291dHB1dENvbnRleHQuZ2V0KCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9i
amVjdEtleV07CisgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsKKworICAgIG1fc2VyaWFs
aXplZE91dHB1dENvbnRleHQgPSBbYXJjaGl2ZXIgZW5jb2RlZERhdGFdOworICAgIG1fdHlwZSA9
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250
ZXh0OworICAgIG1fb3V0cHV0Q29udGV4dC5jbGVhcigpOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OmRlc2VyaWFsaXplT3V0cHV0Q29u
dGV4dCgpCit7CisgICAgQVNTRVJUKG1fdHlwZSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0KTsKKyAgICBpZiAobV90eXBlICE9IE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0KQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICBhdXRvIHVu
YXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFk
aW5nRnJvbURhdGE6bV9zZXJpYWxpemVkT3V0cHV0Q29udGV4dC5nZXQoKSBlcnJvcjpudWxscHRy
XSk7CisgICAgdW5hcmNoaXZlci5nZXQoKS5kZWNvZGluZ0ZhaWx1cmVQb2xpY3kgPSBOU0RlY29k
aW5nRmFpbHVyZVBvbGljeVJhaXNlRXhjZXB0aW9uOworICAgIGF1dG8gYWxsb3dlZENsYXNzU2V0
ID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0aEFycmF5OkBbIFBBTDo6Z2V0QVZPdXRw
dXRDb250ZXh0Q2xhc3MoKSBdXSk7CisKKyAgICBAdHJ5IHsKKyAgICAgICAgaWQgcmVzdWx0ID0g
W3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOmFsbG93ZWRDbGFzc1NldC5nZXQoKSBm
b3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKKyAgICAgICAgQVNTRVJUKHJlc3Vs
dCk7CisgICAgICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgICAgIG1fb3V0cHV0Q29udGV4dCA9
IHJlc3VsdDsKKyAgICAgICAgICAgIG1fdHlwZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpUeXBlOjpBVk91dHB1dENvbnRleHQ7CisgICAgICAgICAgICBtX3NlcmlhbGl6ZWRPdXRwdXRD
b250ZXh0LmNsZWFyKCk7CisgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgfQor
ICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CisgICAgICAgIExPR19FUlJP
UigiRmFpbGVkIHRvIGRlY29kZSBvYmplY3Qgb2YgY2xhc3MgQVZPdXRwdXRDb250ZXh0IDogJUAi
LCBleGNlcHRpb24pOworICAgIH0gQGZpbmFsbHkgeworICAgICAgICBbdW5hcmNoaXZlciBmaW5p
c2hEZWNvZGluZ107CisgICAgICAgIHVuYXJjaGl2ZXIuZ2V0KCkuZGVsZWdhdGUgPSBuaWw7Cisg
ICAgfQorCisgICAgcmV0dXJuIHN1Y2Nlc3M7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2su
Y3BwCmluZGV4IDQ1NWNlZmM5ZjZmMGRmNDE5Njc3OGY3NTE5ZmI4YmI3MWY1NWQ1MjEuLjJhMmE4
ZDBiY2YxNjVhZDBiMjFmNWM5ZDJhODQ3MTc3MzVmYjRjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suY3BwCkBA
IC0zMCwyNiArMzAsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TWVkaWFQbGF5
YmFja1RhcmdldD4gTWVkaWFQbGF5YmFja1RhcmdldE1vY2s6OmNyZWF0ZShjb25zdCBTdHJpbmcm
IG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKK1JlZjxNZWRp
YVBsYXliYWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhuYW1l
LCBzdGF0ZSkpOwogfQogCi1NZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6TWVkaWFQbGF5YmFja1Rh
cmdldE1vY2soY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
U3RhdGUgc3RhdGUpCi0gICAgOiBNZWRpYVBsYXliYWNrVGFyZ2V0KCkKLSAgICAsIG1fbmFtZShu
YW1lKQotICAgICwgbV9zdGF0ZShzdGF0ZSkKK01lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpNZWRp
YVBsYXliYWNrVGFyZ2V0TW9jayhjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCisgICAgOiBtX2NvbnRleHQobmFtZSwgc3RhdGUp
CiB7CiB9CiAKIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjp+TWVkaWFQbGF5YmFja1RhcmdldE1v
Y2soKSA9IGRlZmF1bHQ7CiAKLWNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiBNZWRp
YVBsYXliYWNrVGFyZ2V0TW9jazo6dGFyZ2V0Q29udGV4dCgpIGNvbnN0Ci17Ci0gICAgbV9jb250
ZXh0ID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQobV9uYW1lLCBtX3N0YXRlKTsKLSAgICBy
ZXR1cm4gbV9jb250ZXh0OwotfQotCiBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayogdG9NZWRpYVBs
YXliYWNrVGFyZ2V0TW9jayhNZWRpYVBsYXliYWNrVGFyZ2V0KiByZXApCiB7CiAgICAgcmV0dXJu
IGNvbnN0X2Nhc3Q8TWVkaWFQbGF5YmFja1RhcmdldE1vY2sqPih0b01lZGlhUGxheWJhY2tUYXJn
ZXRNb2NrKGNvbnN0X2Nhc3Q8Y29uc3QgTWVkaWFQbGF5YmFja1RhcmdldCo+KHJlcCkpKTsKQEAg
LTU3LDcgKzQ5LDcgQEAgTWVkaWFQbGF5YmFja1RhcmdldE1vY2sqIHRvTWVkaWFQbGF5YmFja1Rh
cmdldE1vY2soTWVkaWFQbGF5YmFja1RhcmdldCogcmVwKQogCiBjb25zdCBNZWRpYVBsYXliYWNr
VGFyZ2V0TW9jayogdG9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhjb25zdCBNZWRpYVBsYXliYWNr
VGFyZ2V0KiByZXApCiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ocmVw
LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldDo6TW9jayk7CisgICAgUkVMRUFT
RV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihyZXAtPnRhcmdldFR5cGUoKSA9PSBN
ZWRpYVBsYXliYWNrVGFyZ2V0OjpUYXJnZXRUeXBlOjpNb2NrKTsKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgTWVkaWFQbGF5YmFja1RhcmdldE1vY2sqPihyZXApOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2Nr
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2Nr
LmgKaW5kZXggY2Q0NDliMDNjMTEzMTA2NjUyOTRjYjg5MjRkZjBlNGVlYWExM2Y0Yy4uMzk4YTQ1
OWRlOTkyZjRlMmI1Yzk5ZDk4ZmZiNzQ3Mjg5NjdmMDllMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaApAQCAtMjMs
NDAgKzIzLDMwIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIE1lZGlhUGxheWJh
Y2tUYXJnZXRNb2NrX2gKLSNkZWZpbmUgTWVkaWFQbGF5YmFja1RhcmdldE1vY2tfaAorI3ByYWdt
YSBvbmNlCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXQuaCIKLSNpbmNs
dWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhUGxheWJhY2tU
YXJnZXRNb2NrIDogcHVibGljIE1lZGlhUGxheWJhY2tUYXJnZXQgewogcHVibGljOgotICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gY3JlYXRlKGNvbnN0
IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSk7CiAKICAgICB2aXJ0
dWFsIH5NZWRpYVBsYXliYWNrVGFyZ2V0TW9jaygpOwogCi0gICAgVGFyZ2V0VHlwZSB0YXJnZXRU
eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTW9jazsgfQorICAgIFRhcmdldFR5cGUgdGFyZ2V0
VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWJhY2tUYXJnZXQ6OlRhcmdldFR5
cGU6Ok1vY2s7IH0KKyAgICBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0
Q29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29udGV4dDsgfQogCi0gICAgY29uc3Qg
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldENvbnRleHQoKSBjb25zdCBmaW5hbDsK
LQotICAgIGJvb2wgaGFzQWN0aXZlUm91dGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9uYW1l
LmlzRW1wdHkoKTsgfQotICAgIGJvb2wgc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gIW1fbmFtZS5pc0VtcHR5KCk7IH0KLQotICAgIFN0cmluZyBkZXZp
Y2VOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9uYW1lOyB9Ci0KLSAgICBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUoKSBjb25zdDsKKyAgICBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0
Lm1vY2tTdGF0ZSgpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0TW9j
ayhjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpOworICAg
IE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpNb2NrU3RhdGUpOwogCi0gICAgU3RyaW5nIG1fbmFtZTsKLSAgICBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgbV9zdGF0ZSB7IE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpVbmtub3duIH07Ci0gICAgbXV0YWJsZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dCBtX2NvbnRleHQ7CisgICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQgbV9jb250ZXh0Owog
fTsKIAogTWVkaWFQbGF5YmFja1RhcmdldE1vY2sqIHRvTWVkaWFQbGF5YmFja1RhcmdldE1vY2so
TWVkaWFQbGF5YmFja1RhcmdldCopOwpAQCAtNjUsNSArNTUsMyBAQCBjb25zdCBNZWRpYVBsYXli
YWNrVGFyZ2V0TW9jayogdG9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhjb25zdCBNZWRpYVBsYXli
YWNrVGFyZwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkg
JiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2Nr
LmNwcAppbmRleCA0NGY0MTQ3YTE5MTgwNzU0NzJlZGMzYTEyMTg5OTI3ZDdlOTI1ZWYxLi4zYjBj
YTZhNzgzNzIzZjhmOThkMjI2MGFhYjZhYjVhNTYxZWUxYzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJNb2NrLmNwcApAQCAtNTIsNyArNTIsNyBAQCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9j
azo6fk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrKCkKIGJvb2wgTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlck1vY2s6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKCkKIHsKICAgICBM
T0coTWVkaWEsICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6ZXh0ZXJuYWxPdXRwdXRE
ZXZpY2VBdmFpbGFibGUiKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6T3V0cHV0RGV2aWNlQXZhaWxhYmxlOworICAgIHJldHVybiBtX3N0YXRlID09
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6Ok91dHB1dERldmljZUF2YWls
YWJsZTsKIH0KIAogUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IE1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJNb2NrOjpwbGF5YmFja1RhcmdldCgpCkBAIC04NSwxMCArODUsMTAgQEAgdm9pZCBNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6c3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJn
ZXRzKCkKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6c3Rh
cnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzIik7CiAKICAgICBtX3Rhc2tRdWV1ZS5lbnF1
ZXVlVGFzayhbdGhpc10gewotICAgICAgICBpZiAobV9zdGF0ZSA9PSBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6T3V0cHV0RGV2aWNlQXZhaWxhYmxlKQorICAgICAgICBpZiAobV9zdGF0ZSA9
PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpPdXRwdXREZXZpY2VBdmFp
bGFibGUpCiAgICAgICAgICAgICBhdmFpbGFibGVEZXZpY2VzRGlkQ2hhbmdlKCk7CiAKLSAgICAg
ICAgaWYgKCFtX2RldmljZU5hbWUuaXNFbXB0eSgpICYmIG1fc3RhdGUgIT0gTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6OlVua25vd24pCisgICAgICAgIGlmICghbV9kZXZpY2VOYW1lLmlzRW1w
dHkoKSAmJiBtX3N0YXRlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6
OlVua25vd24pCiAgICAgICAgICAgICBjdXJyZW50RGV2aWNlRGlkQ2hhbmdlKCk7CiAgICAgfSk7
CiB9CkBAIC0xMDEsMTUgKzEwMSwxNSBAQCB2b2lkIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJN
b2NrOjpzdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpCiB2b2lkIE1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJNb2NrOjppbnZhbGlkYXRlUGxheWJhY2tUYXJnZXRzKCkKIHsKICAgICBMT0co
TWVkaWEsICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6aW52YWxpZGF0ZVBsYXliYWNr
VGFyZ2V0cyIpOwotICAgIHNldFN0YXRlKGVtcHR5U3RyaW5nKCksIE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpVbmtub3duKTsKKyAgICBzZXRTdGF0ZShlbXB0eVN0cmluZygpLCBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpVbmtub3duKTsKIH0KIAotdm9pZCBNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6c2V0U3RhdGUoY29uc3QgU3RyaW5nJiBkZXZpY2VO
YW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCit2b2lkIE1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpzZXRTdGF0ZShjb25zdCBTdHJpbmcmIGRldmljZU5h
bWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCiB7CiAgICAg
TE9HKE1lZGlhLCAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnNldFN0YXRlIC0gbmFt
ZSA9ICVzLCBzdGF0ZSA9IDB4JXgiLCBkZXZpY2VOYW1lLnV0ZjgoKS5kYXRhKCksICh1bnNpZ25l
ZClzdGF0ZSk7CiAKICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbdGhpcywgc3RhdGUsIGRl
dmljZU5hbWVdIHsKLSAgICAgICAgaWYgKGRldmljZU5hbWUgIT0gbV9kZXZpY2VOYW1lICYmIHN0
YXRlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpVbmtub3duKSB7CisgICAgICAgIGlm
IChkZXZpY2VOYW1lICE9IG1fZGV2aWNlTmFtZSAmJiBzdGF0ZSAhPSBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6TW9ja1N0YXRlOjpVbmtub3duKSB7CiAgICAgICAgICAgICBtX2RldmljZU5h
bWUgPSBkZXZpY2VOYW1lOwogICAgICAgICAgICAgY3VycmVudERldmljZURpZENoYW5nZSgpOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgKaW5kZXggZGUwOTZjYjg4MWY4MjQyMTEx
NjU4YjhkMjE4MzlmOWM4ODVkNGJjZS4uM2U3NDM5NWJmMTZiOGU3YzhjZTlmOTcyMGU3NTk0ZTRm
MmM4N2VlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyTW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaApAQCAtNDgsNyArNDgsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpIG92ZXJyaWRlOwog
ICAgIHZvaWQgaW52YWxpZGF0ZVBsYXliYWNrVGFyZ2V0cygpIG92ZXJyaWRlOwogCi0gICAgdm9p
ZCBzZXRTdGF0ZShjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3Rh
dGUpOworICAgIHZvaWQgc2V0U3RhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6Ok1vY2tTdGF0ZSk7CiAgICAgdm9pZCBkaXNtaXNzUG9wdXAoKTsKIAogcHJpdmF0
ZToKQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBtX2RldmljZU5hbWU7
CiAgICAgR2VuZXJpY1Rhc2tRdWV1ZTxUaW1lcj4gbV90YXNrUXVldWU7Ci0gICAgTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIG1fc3RhdGUgeyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6VW5rbm93biB9OworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3Rh
dGUgbV9zdGF0ZSB7IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6OlVua25v
d24gfTsKICAgICBib29sIG1fc2hvd2luZ01lbnUgeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGNlODgxYmZlMGM2Yjk2YmExYTNmYmZmNjQxODI2
NTY0MGY3M2RlOWEuLmUyMzk3NTM4MjE4ZDY0NTU3YmFkYzNhNmJhYzg5NjYwM2M0NWNhYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTU1OSw3ICs1NTksNyBAQCB2b2lk
IEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdlKQogCiAjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBwYWdlLnNldE1vY2tNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyRW5hYmxlZCh0cnVlKTsKLSAgICBwYWdlLnNldE1vY2tNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyU3RhdGUoZW1wdHlTdHJpbmcoKSwgTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OlVua25vd24pOworICAgIHBhZ2Uuc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJTdGF0ZShlbXB0eVN0cmluZygpLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0
YXRlOjpVbmtub3duKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPKQpAQCAtNDUzMSwxNCAr
NDUzMSwxNCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnNldE1vY2tNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJgogICAgIFBhZ2UqIHBhZ2UgPSBjb250
ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpOwogICAgIEFTU0VSVChwYWdlKTsKIAotICAg
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSA9IE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpVbmtub3duOworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpN
b2NrU3RhdGUgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpV
bmtub3duOwogCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRldmljZVN0
YXRlLCAiZGV2aWNlYXZhaWxhYmxlIikpCi0gICAgICAgIHN0YXRlID0gTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6Ok91dHB1dERldmljZUF2YWlsYWJsZTsKKyAgICAgICAgc3RhdGUgPSBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpPdXRwdXREZXZpY2VBdmFpbGFibGU7
CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGV2aWNlU3RhdGUs
ICJkZXZpY2V1bmF2YWlsYWJsZSIpKQotICAgICAgICBzdGF0ZSA9IE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpPdXRwdXREZXZpY2VVbmF2YWlsYWJsZTsKKyAgICAgICAgc3RhdGUgPSBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpPdXRwdXREZXZpY2VVbmF2YWlsYWJs
ZTsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkZXZpY2VTdGF0
ZSwgInVua25vd24iKSkKLSAgICAgICAgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6VW5rbm93bjsKKyAgICAgICAgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
TW9ja1N0YXRlOjpVbmtub3duOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRBY2Nlc3NFcnJvciB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKaW5kZXggYmQxOTFlNTcx
ZDcxZjIxMDdkZmZlYzVkZmIyNGIwZDQ0NmRjY2U2Ny4uMTg4ZmIwYzMxM2ZmYWYwYzI1ZWNjZGE3
NDZkNjdjMWFjMmE3ZjdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAtNTksNiArNTksNyBAQAog
CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICNpbmNsdWRlIDxXZWJDb3Jl
L01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJn
ZXRNb2NrLmg+CiAjZW5kaWYKIApAQCAtNjk3LDIwICs2OTgsMjEgQEAgdm9pZCBSZW1vdGVNZWRp
YVBsYXllclByb3h5OjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sIHNob3VsZFBs
YXkpCiAgICAgbV9wbGF5ZXItPnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHNob3VsZFBs
YXkpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldFdpcmVsZXNzUGxheWJh
Y2tUYXJnZXQoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdl
dENvbnRleHQpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldFdpcmVsZXNzUGxheWJh
Y2tUYXJnZXQoTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmJiB0YXJnZXRDb250ZXh0KQogewog
ICAgIHN3aXRjaCAodGFyZ2V0Q29udGV4dC50eXBlKCkpIHsKLSAgICBjYXNlIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpBVk91dHB1dENvbnRleHRUeXBlOgotICAgICAgICBtX3BsYXllci0+
c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29j
b2E6OmNyZWF0ZSh0YXJnZXRDb250ZXh0LmF2T3V0cHV0Q29udGV4dCgpKSk7CisgICAgY2FzZSBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4
dDogeworICAgICAgICBpZiAodGFyZ2V0Q29udGV4dC5kZXNlcmlhbGl6ZU91dHB1dENvbnRleHQo
KSkKKyAgICAgICAgICAgIG1fcGxheWVyLT5zZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KE1lZGlh
UGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKFdURk1vdmUodGFyZ2V0Q29udGV4dCkpKTsKICAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
OlR5cGU6Ok1vY2s6CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGNhc2UgTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6Ok1vY2tUeXBlOgotICAgICAgICBtX3BsYXllci0+c2V0V2lyZWxlc3NQbGF5
YmFja1RhcmdldChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6Y3JlYXRlKHRhcmdl
dENvbnRleHQubW9ja0RldmljZU5hbWUoKSwgdGFyZ2V0Q29udGV4dC5tb2NrU3RhdGUoKSkpOwor
ICAgICAgICBtX3BsYXllci0+c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChNZWRpYVBsYXliYWNr
VGFyZ2V0TW9jazo6Y3JlYXRlKHRhcmdldENvbnRleHQuZGV2aWNlTmFtZSgpLCB0YXJnZXRDb250
ZXh0Lm1vY2tTdGF0ZSgpKSk7CiAgICAgICAgIGJyZWFrOwotI2Vsc2UKLSAgICBjYXNlIE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrVHlwZToKICNlbmRpZgotICAgIGNhc2UgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6Ok5vbmU6CisgICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0OgorICAgIGNhc2UgTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6OlR5cGU6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAppbmRleCAyNGI2NjQxYWU0ZjVmMWU3
ZGZjMTA1Mzc0MTNmMGU5Y2ZkMjVlMjNmLi5iZGFlZThhZTA1ZjEwZmE0NjU3MzM0M2Y0NzljNDI5
M2Q0N2RmNmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKQEAgLTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB2b2lkIHNldFdpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wpOwogICAgIHZvaWQgc2V0U2hvdWxkUGxheVRvUGxh
eWJhY2tUYXJnZXQoYm9vbCk7Ci0gICAgdm9pZCBzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNv
bnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Jik7CisgICAgdm9pZCBzZXRX
aXJlbGVzc1BsYXliYWNrVGFyZ2V0KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
JiYpOwogICAgIHZvaWQgbWVkaWFQbGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNz
Q2hhbmdlZChib29sKSBmaW5hbDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyUHJveHkuY3BwCmluZGV4IDllNmJjOTQ2NmI1Mzk5YjI0ZjU4NDAwOWI5MDBiZDA3ZDAwODIx
MTYuLmJlZDMwZTI5Y2U0YjljNWY2YWY0MDFhYzFjYzhmMjZmYTJjNDYxYjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuY3BwCkBAIC0xMDgsNyArMTA4LDExIEBAIHZvaWQg
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2Uo
U2hvdWxkUGF1c2Ugc2hvdWxkCiAKIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6
OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9ydHNBaXJQbGF5VmlkZW8gc3VwcG9ydHNB
aXJQbGF5VmlkZW8sIFJlZjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0PiYmIHRhcmdldCkK
IHsKLSAgICBtX2dwdUNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6QWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShzdXBwb3J0c0Fp
clBsYXlWaWRlbywgdGFyZ2V0LT50YXJnZXRDb250ZXh0KCkpLCB7IH0pOworICAgIGF1dG8gY29u
dGV4dCA9IHRhcmdldC0+dGFyZ2V0Q29udGV4dCgpOworICAgIGlmICghY29udGV4dC5zZXJpYWxp
emVPdXRwdXRDb250ZXh0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZ3B1Q29ubmVjdGlv
bi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpB
Y3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKHN1cHBvcnRzQWlyUGxheVZpZGVvLCBjb250ZXh0KSwg
eyB9KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCBiZjg4YWI2MTdiZTEyMWI0YWY3YmM0
Y2QzYzRmYzE5N2RkYTU5NzgyLi41MDM0NDFjYjZlYTM1ZmQzZWNhZjk2NzZmOTI2NGQzMjgxMzVi
MzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1l
bnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtNDEsMTQgKzQxLDIzIEBACiAjaW1wb3J0IDxVSUtp
dC9VSUZvbnQuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkKKyNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4KKyNpbXBv
cnQgPG9iamMvcnVudGltZS5oPgorI2VuZGlmCisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYUFk
ZGl0aW9ucy5tbT4KKyNlbmRpZgorCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKICNpbXBvcnQgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0
dXMuaD4KICNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KICNlbmRpZgogCi0j
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzQ29jb2FBZGRpdGlvbnMubW0+CisjaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkKKyNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGlu
ay5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtNjA2LDQgKzYxNSw1MCBAQCBib29s
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1E
YXRhKERlY29kZXImIGRlY29kZQogICAgIHJldHVybiB0cnVlOwogfQogCisjaWYgRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0KQoreworICAgIGlm
ICh0YXJnZXQudHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91
dHB1dENvbnRleHQpIHsKKyAgICAgICAgaWYgKFtQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNz
KCkgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQorICAgICAg
ICAgICAgZW5jb2RlciA8PCB0YXJnZXQub3V0cHV0Q29udGV4dCgpOworICAgIH0gZWxzZSBpZiAo
dGFyZ2V0LnR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6U2VyaWFs
aXplZEFWT3V0cHV0Q29udGV4dCkgeworICAgICAgICBlbmNvZGVyIDw8IHRhcmdldC5zZXJpYWxp
emVkT3V0cHV0Q29udGV4dCgpOworICAgICAgICBlbmNvZGVyIDw8IHRhcmdldC5oYXNBY3RpdmVS
b3V0ZSgpOworICAgIH0gZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwor
Ym9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6
ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpUeXBlIGNvbnRleHRUeXBlLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFy
Z2V0KQoreworICAgIEFTU0VSVChjb250ZXh0VHlwZSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6VHlwZTo6TW9jayk7CisKKyAgICBpZiAoY29udGV4dFR5cGUgPT0gTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCkgeworICAgICAgICBpZiAoIVtQ
QUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2Nv
bChOU1NlY3VyZUNvZGluZyldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IGF1dG8gb3V0cHV0Q29udGV4dCA9IElQQzo6ZGVjb2RlPEFWT3V0cHV0Q29udGV4dD4oZGVjb2Rl
ciwgUEFMOjpnZXRBVk91dHB1dENvbnRleHRDbGFzcygpKTsKKyAgICAgICAgaWYgKCFvdXRwdXRD
b250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHRhcmdldCA9IFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IHsgV1RGTW92ZSgqb3V0cHV0Q29udGV4
dCkgfTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGNvbnRleHRUeXBl
ID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRD
b250ZXh0KSB7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IHNlcmlhbGl6ZWRPdXRwdXRDb250
ZXh0OworICAgICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIHNlcmlhbGl6ZWRPdXRwdXRD
b250ZXh0KSB8fCAhc2VyaWFsaXplZE91dHB1dENvbnRleHQpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgYm9vbCBoYXNBY3RpdmVSb3V0ZTsKKyAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShoYXNBY3RpdmVSb3V0ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgdGFyZ2V0ID0gV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQgeyBX
VEZNb3ZlKHNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KSwgaGFzQWN0aXZlUm91dGUgfTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisK
IH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKaW5kZXggMjU1YTJjYmM2Yzc3Y2VmMWU2MDcwZWE0MjBmNmJkZTkwYjI0
MGE3MS4uZjY1MTE2ZmY5ZDZiMDNiMWEzMzMxY2RiZjM2ZTQ3ZDhhNDExOGNiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0yNDU3LDE3
ICsyNDU3LDE3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBNCiAgICAgYm9vbCBoYXNQbGF0Zm9y
bURhdGEgPSB0YXJnZXQuZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgpOwogICAgIGVuY29k
ZXIgPDwgaGFzUGxhdGZvcm1EYXRhOwogCi0gICAgaW50MzJfdCB0YXJnZXRUeXBlID0gdGFyZ2V0
LnR5cGUoKTsKLSAgICBlbmNvZGVyIDw8IHRhcmdldFR5cGU7CisgICAgTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6OlR5cGUgY29udGV4dFR5cGUgPSB0YXJnZXQudHlwZSgpOworICAgIGVuY29k
ZXIgPDwgY29udGV4dFR5cGU7CiAKICAgICBpZiAodGFyZ2V0LmVuY29kaW5nUmVxdWlyZXNQbGF0
Zm9ybURhdGEoKSkgewogICAgICAgICBlbmNvZGVQbGF0Zm9ybURhdGEoZW5jb2RlciwgdGFyZ2V0
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVCh0YXJnZXRUeXBlID09IE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrVHlwZSk7Ci0gICAgZW5jb2RlciA8PCB0YXJn
ZXQubW9ja0RldmljZU5hbWUoKTsKLSAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGludDMyX3Q+
KHRhcmdldC5tb2NrU3RhdGUoKSk7CisgICAgQVNTRVJUKGNvbnRleHRUeXBlID09IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrKTsKKyAgICBlbmNvZGVyIDw8IHRhcmdldC5k
ZXZpY2VOYW1lKCk7CisgICAgZW5jb2RlciA8PCB0YXJnZXQubW9ja1N0YXRlKCk7CiB9CiAKIGJv
b2wgQXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0KQpAQCAtMjQ3
NiwyNCArMjQ3NiwyNCBAQCBib29sIEFyZ3VtZW50Q29kZXI8TWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTWVkaWFQbAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoaGFzUGxhdGZvcm1EYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
aW50MzJfdCB0YXJnZXRUeXBlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGFyZ2V0VHlwZSkp
CisgICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGUgY29udGV4dFR5cGU7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShjb250ZXh0VHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmIChoYXNQbGF0Zm9ybURhdGEpCi0gICAgICAgIHJldHVybiBkZWNvZGVQbGF0Zm9y
bURhdGEoZGVjb2RlciwgdGFyZ2V0KTsKKyAgICAgICAgcmV0dXJuIGRlY29kZVBsYXRmb3JtRGF0
YShkZWNvZGVyLCBjb250ZXh0VHlwZSwgdGFyZ2V0KTsKIAotICAgIEFTU0VSVCh0YXJnZXRUeXBl
ID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrVHlwZSk7Ci0KLSAgICBTdHJpbmcg
bW9ja0RldmljZU5hbWU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShtb2NrRGV2aWNlTmFtZSkp
CisgICAgQVNTRVJUKGNvbnRleHRUeXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpU
eXBlOjpNb2NrKTsKKyAgICBTdHJpbmcgZGV2aWNlTmFtZTsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGRldmljZU5hbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpbnQzMl90IG1v
Y2tTdGF0ZTsKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIG1vY2tT
dGF0ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1vY2tTdGF0ZSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHRhcmdldCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KG1vY2tE
ZXZpY2VOYW1lLCBzdGF0aWNfY2FzdDxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGU+
KG1vY2tTdGF0ZSkpOworICAgIHRhcmdldCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KGRl
dmljZU5hbWUsIG1vY2tTdGF0ZSk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA2MTk3MDg3
ODI1MTE1NDhiNjJmMjcxNTZiZDNmNDdkNzFhMzFlYWMyLi4xNTkxYjA0OGFhNTcxNjFiNmJhODll
YTM2YzQzN2Y3NzY0NWNlNDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaApAQCAtNTQsNiArNTQsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0N1cmxQ
cm94eVNldHRpbmdzLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oPgor
I2VuZGlmCisKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogI2luY2x1ZGUgPFdlYkNvcmUv
Q0RNSW5zdGFuY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3RhbmNlU2Vzc2lvbi5oPgpA
QCAtMTk1LDEwICsxOTksNiBAQCBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CiBjbGFzcyBD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpCi1jbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDsKLSNl
bmRpZgotCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIHN0cnVjdCBNZWRpYUNvbnN0cmFpbnRz
OwogI2VuZGlmCkBAIC02NDQsNyArNjQ0LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD4gewogICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQmKTsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29k
ZXImLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYpOwogICAgIHN0YXRpYyB2
b2lkIGVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQmKTsKLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dCYpOworICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVQbGF0
Zm9ybURhdGEoRGVjb2RlciYsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpU
eXBlLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYpOwogfTsKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVy
c01hYy5tbQppbmRleCAxODZiN2JiMmRiNmZjNGUyYmMxMzNmNzE3NWNjZjljMzc2Mzg5MjMwLi45
MjVmNWE0ZDVhNDg4ZDQ4ODQwNGVjNjI5NTJkOGEyNDlhM2YwMDFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KQEAgLTQy
LDEyICs0Miw2IEBACiAjaW1wb3J0IDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2ltcG9ydCA8d3Rm
L2NmL1R5cGVDYXN0c0NGLmg+CiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQotI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oPgotI2ltcG9y
dCA8b2JqYy9ydW50aW1lLmg+Ci0jaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExp
bmsuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgSVBDIHsKIAogdm9pZCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OkNlcnRpZmljYXRlSW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBX
ZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKQEAgLTQwMywyOSArMzk3
LDYgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlcj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGUKIAogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotCi12b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldCkK
LXsKLSAgICBpZiAoW1BBTDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBjb25mb3Jtc1RvUHJv
dG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCi0gICAgICAgIGVuY29kZXIgPDwgdGFy
Z2V0LmF2T3V0cHV0Q29udGV4dCgpOwotfQotCi1ib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYg
ZGVjb2RlciwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldCkKLXsK
LSAgICBpZiAoIVtQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgY29uZm9ybXNUb1Byb3Rv
Y29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBhdXRvIGNvbnRleHQgPSBJUEM6OmRlY29kZTxBVk91dHB1dENvbnRleHQ+KGRlY29kZXIs
IFBBTDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB0YXJnZXQgPSBXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dCB7IGNvbnRleHQtPmdldCgpIH07Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LSNlbmRpZgotCiAjaWYgRU5BQkxFKFZJREVPKQogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFs
dWUmIHZhbHVlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggNzBmZWFhMDkzMjJkNjU0MDJhNzkzYzgyYWZiOTNhZmI1ZDBiNWJiNy4uNDVlMDNmNGViZDBi
ZTQ0NmRhYTdhOGM2OWU1MTViZjZlOTc0MDgwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC03ODQ0LDE0ICs3ODQ0LDYgQEAgc3RhdGljIGNvbnN0IFZlY3Rv
cjxBU0NJSUxpdGVyYWw+JiBtZWRpYVJlbGF0ZWRJT0tpdENsYXNzZXMoKQogICAgIH0pOwogICAg
IHJldHVybiBzZXJ2aWNlczsKIH0KLQotc3RhdGljIGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVyYWw+
JiB0ZW1wb3JhcnlNYWNoU2VydmljZXMoKQotewotICAgIHN0YXRpYyBjb25zdCBhdXRvIHNlcnZp
Y2VzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxBU0NJSUxpdGVyYWw+IHsKLSAgICAgICAg
ImNvbS5hcHBsZS5jb3JlbWVkaWEucm91dGluZ2NvbnRleHQueHBjIl9zIC8vIFJlbW92ZSBhZnRl
ciA8cmRhcjovLzc2NDAzMzAyPiBpcyBmaXhlZC4KLSAgICB9KTsKLSAgICByZXR1cm4gc2Vydmlj
ZXM7Ci19CiAjZW5kaWYKIAogV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6
OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIERyYXdpbmdBcmVh
UHJveHkmIGRyYXdpbmdBcmVhLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0
ZVBvbGljaWVzKQpAQCAtNzk0Nyw5ICs3OTM5LDYgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MK
ICAgICAgICAgLy8gRklYTUUoMjA3NzE2KTogVGhlIGZvbGxvd2luZyBzaG91bGQgYmUgcmVtb3Zl
ZCB3aGVuIHRoZSBHUFUgcHJvY2VzcyBpcyBjb21wbGV0ZS4KICAgICAgICAgcGFyYW1ldGVycy5t
ZWRpYUV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9y
TWFjaExvb2t1cChtZWRpYVJlbGF0ZWRNYWNoU2VydmljZXMoKSwgV1RGOjpudWxsb3B0KTsKICAg
ICAgICAgcGFyYW1ldGVycy5tZWRpYUlPS2l0RXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9ucyhtZWRpYVJlbGF0ZWRJ
T0tpdENsYXNzZXMoKSwgV1RGOjpudWxsb3B0KTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBG
SVhNRSgyMjQzMjcpOiBSZW1vdmUgdGhpcyBlbHNlIGNsYXVzZSBvbmNlIDxyZGFyOi8vNzY0MDMz
MDI+IGlzIGZpeGVkLgotICAgICAgICBwYXJhbWV0ZXJzLm1lZGlhRXh0ZW5zaW9uSGFuZGxlcyA9
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHRlbXBvcmFyeU1h
Y2hTZXJ2aWNlcygpLCBXVEY6Om51bGxvcHQpOwogICAgIH0KIAogICAgIGlmICghcHJlZmVyZW5j
ZXMoKS51c2VHUFVQcm9jZXNzRm9yTWVkaWFFbmFibGVkKCkKQEAgLTk0MTUsNyArOTQwNCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJs
ZWQoYm9vbCBlbmFibGVkKQogICAgIHBhZ2VDbGllbnQoKS5tZWRpYVNlc3Npb25NYW5hZ2VyKCku
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGVuYWJsZWQpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShj
b25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpT
dGF0ZSBzdGF0ZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRNb2NrTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSkKIHsKICAgICBwYWdlQ2xpZW50KCkubWVkaWFT
ZXNzaW9uTWFuYWdlcigpLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUobmFt
ZSwgc3RhdGUpOwogfQpAQCAtOTQzMCw3ICs5NDE5LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRQbGF5YmFja1RhcmdldChQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNv
bnRlCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFja1RhcmdldFNlbGVjdGVkKGNvbnRleHRJ
ZCwgdGFyZ2V0LT50YXJnZXRDb250ZXh0KCkpKTsKKyAgICBhdXRvIGNvbnRleHQgPSB0YXJnZXQt
PnRhcmdldENvbnRleHQoKTsKKyAgICBBU1NFUlQoY29udGV4dC50eXBlKCkgIT0gTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQpOworICAg
IGlmIChwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JNZWRpYUVuYWJsZWQoKSkKKyAgICAg
ICAgY29udGV4dC5zZXJpYWxpemVPdXRwdXRDb250ZXh0KCk7CisKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpQbGF5YmFja1RhcmdldFNlbGVjdGVkKGNvbnRleHRJZCwgY29udGV4dCkpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRD
aGFuZ2UoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGJv
b2wgYXZhaWxhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBi
ODUzM2NiYzc0M2FmOWFmNTQyMDU1M2U4MzdhZTcxYjA2ODcxY2IxLi5mZmQwZTdiNTg2NDJmNTNi
NGVhNzY4MjQxMjUzZDc3YzQ4NmY0N2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtOTQsNyArOTQsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTGF5b3V0UG9pbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01l
ZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW0uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVByb2R1Y2VyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UGxhdGZvcm1FdmVudC5oPgpAQCAtMTI5LDYgKzEyOCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dC5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1
ZGUgIkdlc3R1cmVUeXBlcy5oIgogI2luY2x1ZGUgIldlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5o
IgpAQCAtMTU2Nyw3ICsxNTcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFy
Z2V0UGlja2VyKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGJvb2wgaGFzVmlkZW8pOwogICAgIHZvaWQgcGxh
eWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpQbGF5YmFja1Rh
cmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRp
YVN0YXRlRmxhZ3MpOwogICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJF
bmFibGVkKGJvb2wpOwotICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJT
dGF0ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
U3RhdGUpOworICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShj
b25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0
YXRlKTsKICAgICB2b2lkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVw
KCk7CiAKICAgICAvLyBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMmNhYzNmMWNi
MDVkMWNkN2I1Zjc3MWVlMTJjMGU3MjllMWYxZDhjZi4uN2U5OGIwODhkOTIyZWUxMTQ0OTczMGEw
ZTU1ODEyYmUyNjQ0NzUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNDc2LDcgKzQ3Niw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2VQcm94eSB7CiAgICAgU2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKFdlYkNvcmU6OlBsYXliYWNr
VGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBXZWJDb3JlOjpGbG9hdFJl
Y3QgcGlja2VyTG9jYXRpb24sIGJvb2wgaGFzVmlkZW8pCiAgICAgUGxheWJhY2tUYXJnZXRQaWNr
ZXJDbGllbnRTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRl
eHRJZGVudGlmaWVyIGNvbnRleHRJZCwgdW5zaWduZWQgbWVkaWFTdGF0ZSkKICAgICBTZXRNb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBlbmFibGVkKQotICAgIFNldE1v
Y2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoU3RyaW5nIG5hbWUsIHVuc2lnbmVkIHBp
Y2tlclN0YXRlKQorICAgIFNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoU3Ry
aW5nIG5hbWUsIGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6TW9ja1N0YXRlIHBpY2tlclN0YXRlKQogICAgIE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyRGlzbWlzc1BvcHVwKCkKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyLmNwcAppbmRleCAyYWI1ZjkxM2NkZTgzY2VkYzU0YTdhOGZlMGVlMDk1M2JjZTQ0OTViLi40
ODYyYWY3NjQ1NjdkNmJmNmFmZjY4ZDI4NzhmOGY5NGUxOTU4ZjI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAKQEAgLTgxLDEyICs4MSwxMSBAQCB2b2lkIFJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlcjo6cHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRChpbnQgcGlk
KQogCiB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENo
YW5nZShTdXBwb3J0c0FpclBsYXlWaWRlbyBzdXBwb3J0c0FpclBsYXlWaWRlbywgTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQmJiB0YXJnZXRDb250ZXh0KQogewotICAgIGlmICh0YXJnZXRDb250
ZXh0LnR5cGUoKSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6QVZPdXRwdXRDb250ZXh0
VHlwZSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBBU1NFUlQodGFyZ2V0
Q29udGV4dC50eXBlKCkgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0
cHV0Q29udGV4dCk7CisgICAgaWYgKHRhcmdldENvbnRleHQudHlwZSgpID09IE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQpCiAgICAgICAgIHJldHVybjsK
LSAgICB9CiAKLSAgICBXZWJDb3JlOjpNZWRpYVNlc3Npb25IZWxwZXI6OmFjdGl2ZVZpZGVvUm91
dGVEaWRDaGFuZ2Uoc3VwcG9ydHNBaXJQbGF5VmlkZW8sIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb2NvYTo6Y3JlYXRlKHRhcmdldENvbnRleHQuYXZPdXRwdXRDb250ZXh0KCkpKTsKKyAg
ICBXZWJDb3JlOjpNZWRpYVNlc3Npb25IZWxwZXI6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2Uo
c3VwcG9ydHNBaXJQbGF5VmlkZW8sIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6
Y3JlYXRlKFdURk1vdmUodGFyZ2V0Q29udGV4dCkpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAppbmRleCBiY2M0YzE3YWMyOTUyMTJjYmE2NGRlZGQxYzliM2E5MDZjYTA1MTAxLi41ZmM4
NTU2Mzc2MGVhNzVlYzEyZWQxNGE5ZTI3MzY4MWYyNTFjMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcApAQCAtMTM1Miw3ICsxMzUyLDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldE1vY2tN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgbV9wYWdl
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJFbmFibGVkKGVuYWJsZWQpKTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldE1v
Y2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCit2b2lkIFdlYkNocm9tZUNsaWVu
dDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5h
bWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCiB7CiAgICAg
bV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0TW9ja01lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJTdGF0ZShuYW1lLCBzdGF0ZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4
IDY4MTJlNjQyZmVjZGNhYTdiMWY1MWZlMDcxMjU4MGE3ZDQyYzRlZjAuLjU2Y2Y2YjkyZWQ5YTEw
MzZkYmQ3ZDA2NDg2M2M0ZTc2ODE0MmNkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTM3OCw3
ICszNzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKFdl
YkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiwgYm9vbCkgZmluYWw7CiAgICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tl
ckNsaWVudFN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4
dElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncykgZmlu
YWw7CiAgICAgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9v
bCkgZmluYWw7Ci0gICAgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRl
KGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0
ZSkgZmluYWw7CisgICAgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRl
KGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2Nr
U3RhdGUpIGZpbmFsOwogICAgIHZvaWQgbW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNt
aXNzUG9wdXAoKSBmaW5hbDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKaW5kZXggYWViMjVkYWI4NDIwNjg0YTk1MDIzODZhYmY4M2FlNmJlMzhj
ZTk4Ni4uMWU2MzM3OWNhZjg3N2I1OTI2NmJmYzcwMzcwOTE2MDA5NjAzNmVhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTc5MSw3ICsxNzkxLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50
cyhib29sIGRpc3BhdGNoKSB7IG1fc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzID0g
ZGlzcGF0Y2g7IH0KIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQ
TEFURk9STShJT1NfRkFNSUxZKQotICAgIHZvaWQgcGxheWJhY2tUYXJnZXRTZWxlY3RlZChXZWJD
b3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgb3V0cHV0RGV2aWNlKSBjb25zdDsKKyAgICB2
b2lkIHBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRD
b250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmJikg
Y29uc3Q7CiAgICAgdm9pZCBwbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eURpZENoYW5nZShXZWJD
b3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBib29sKTsKICAgICB2
b2lkIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0
Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGJvb2wpOwogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRQ
aWNrZXJXYXNEaXNtaXNzZWQoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRl
bnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tCmluZGV4IDc0ZGE2MzU3ODgyY2QwMTMwMjA4NDA5N2YwNjRkMjFjM2I5MTVk
MDQuLjYyZTc5OGZlNGNkNWQ3MGI5YjIzZjAwODY3YjU4ZGE0YTI3NThmMTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0z
NSw3ICszNSw2IEBACiAjaW1wb3J0ICJGb250SW5mby5oIgogI2ltcG9ydCAiRnJhbWVJbmZvRGF0
YS5oIgogI2ltcG9ydCAiSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmgiCi0jaW1wb3J0ICJQ
REZLaXRTb2Z0TGluay5oIgogI2ltcG9ydCAiUERGUGx1Z2luLmgiCiAjaW1wb3J0ICJQYWdlQmFu
bmVyLmgiCiAjaW1wb3J0ICJQbHVnaW5WaWV3LmgiCkBAIC05OSw5ICs5OCwxMiBAQAogCiAjaWYg
RU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQ
bGF5YmFja1RhcmdldENvY29hLmg+CisjaW1wb3J0IDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmg+
CiAjZW5kaWYKIAorI2ltcG9ydCAiUERGS2l0U29mdExpbmsuaCIKKwogbmFtZXNwYWNlIFdlYktp
dCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTA0MiwxNiArMTA0NCwxNyBAQCB2
b2lkIFdlYlBhZ2U6OmRpZFVwZGF0ZVJlbmRlcmluZygpCiB9CiAKICNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLXZvaWQgV2ViUGFn
ZTo6cGxheWJhY2tUYXJnZXRTZWxlY3RlZChQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVu
dGlmaWVyIGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQmIHRhcmdldENvbnRleHQpIGNvbnN0Cit2b2lkIFdlYlBhZ2U6OnBsYXliYWNrVGFyZ2V0U2Vs
ZWN0ZWQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiYgdGFyZ2V0Q29udGV4dCkgY29uc3QK
IHsKICAgICBzd2l0Y2ggKHRhcmdldENvbnRleHQudHlwZSgpKSB7Ci0gICAgY2FzZSBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6QVZPdXRwdXRDb250ZXh0VHlwZToKLSAgICAgICAgbV9wYWdl
LT5zZXRQbGF5YmFja1RhcmdldChjb250ZXh0SWQsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXRDb2NvYTo6Y3JlYXRlKHRhcmdldENvbnRleHQuYXZPdXRwdXRDb250ZXh0KCkpKTsKKyAgICBj
YXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQ6Cisg
ICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0
cHV0Q29udGV4dDoKKyAgICAgICAgbV9wYWdlLT5zZXRQbGF5YmFja1RhcmdldChjb250ZXh0SWQs
IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKFdURk1vdmUodGFyZ2V0Q29udGV4dCkp
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
TW9ja1R5cGU6Ci0gICAgICAgIG1fcGFnZS0+c2V0UGxheWJhY2tUYXJnZXQoY29udGV4dElkLCBX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6Y3JlYXRlKHRhcmdldENvbnRleHQubW9j
a0RldmljZU5hbWUoKSwgdGFyZ2V0Q29udGV4dC5tb2NrU3RhdGUoKSkpOworICAgIGNhc2UgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2s6CisgICAgICAgIG1fcGFnZS0+c2V0
UGxheWJhY2tUYXJnZXQoY29udGV4dElkLCBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6Y3JlYXRl
KHRhcmdldENvbnRleHQuZGV2aWNlTmFtZSgpLCB0YXJnZXRDb250ZXh0Lm1vY2tTdGF0ZSgpKSk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok5v
bmU6CisgICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6Tm9uZToKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKaW5kZXggYjg5YjI2NmMzZDc5YWNkMjQxZGYzNmI1ZmNlMmYxZDJlZDhkYjc0OC4u
ZjNkNDcxNmE4OTMzZDlmMjQyZjhlZjEyMTVhODY2MjM0MGY4OTdhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKQEAgLTI0Myw3ICsyNDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFy
Z2V0UGlja2VyKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgYm9vbCAvKiBoYXNWaWRlbyAqLykgZmluYWw7CiAg
ICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tlckNsaWVudFN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6
OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUHJv
ZHVjZXI6Ok1lZGlhU3RhdGVGbGFncykgZmluYWw7CiAgICAgdm9pZCBzZXRNb2NrTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCkgZmluYWw7Ci0gICAgdm9pZCBzZXRNb2NrTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSkgZmluYWw7CisgICAgdm9pZCBzZXRNb2NrTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpIGZpbmFsOwogICAgIHZvaWQgbW9ja01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKSBvdmVycmlkZTsKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQubW0KaW5kZXggYjM0ZThkOWQ4ZWU5MTVjNjFhMGM0OWZmNDBlMmQ2NmZl
ZDI0YTA0ZS4uYzk2NDgzZmY5NmViN2ZkOGNjMTk1MjdjMzU0NWQ5YjgzYjE0YTliOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5tbQpAQCAtMTEyOSw3ICsxMTI5LDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6
OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sIGVuYWJsZWQpCiAg
ICAgW21fd2ViVmlldyBfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkOmVu
YWJsZWRdOwogfQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpTdGF0ZSBzdGF0ZSkKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSkKIHsKICAgICBbbV93ZWJWaWV3IF9zZXRN
b2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck5hbWU6bmFtZSBzdGF0ZTpzdGF0ZV07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlci5oCmluZGV4IDBiOTIzODM1ZTllMTViNmI4MDQ1YjQ5YWZl
MjllNmFhYjAzZWNmY2EuLjhjYTMyOTQ3YTViNDZlMDY3YjhlOGJhZTQ0NjM5M2ViYjkwZTg2ZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJDb3JlOjpQbGF5YmFja1Rhcmdl
dENsaWVudENvbnRleHRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBib29s
IGhhc1ZpZGVvKTsKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVEaWRD
aGFuZ2UoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgV2Vi
Q29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsKICAgICB2b2lkIHNldE1vY2tN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sKTsKLSAgICB2b2lkIHNldE1vY2tN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKTsKKyAgICB2b2lkIHNldE1vY2tNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSk7CiAgICAgdm9pZCBtb2NrTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCgpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0KaW5kZXggNzM0NDM1Njc1YWI4MDliNTBlYzVlZjM4
YWI5Zjc3Y2ExNDhiMzFmMS4uN2RiZDU4OTQ3NTQwNWExNmViZGQwZmE5YmNmYTYyYzMzN2U3NDE1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbQpAQCAtNjgsNyArNjgsNyBAQCB2b2lk
IFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyRW5hYmxlZChib29sCiAgICAgV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6
c2hhcmVkKCkuc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGVuYWJsZWQp
OwogfQogCi12b2lkIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OnNldE1vY2tNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCit2b2lkIFdlYk1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29u
c3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9j
a1N0YXRlIHN0YXRlKQogewogICAgIFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNo
YXJlZCgpLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUobmFtZSwgc3RhdGUp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDVi
MGVlOGEzYWM4YzMzM2I2ZWUzNDRjZGQ5YzNiNTU3NjVjMjZmZjAuLjQ5MmFmNjAxY2Y3YWM0ZGY0
NjQ1MGIwOGFhYTVjMzIwZWEyZTZlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KQEAgLTkyMzIsNyArOTIzMiw3IEBAIGJvb2wgTGF5ZXJGbHVzaENvbnRy
b2xsZXI6OmZsdXNoTGF5ZXJzKCkKICAgICBbc2VsZiBfZGV2aWNlUGlja2VyXS0+c2V0TW9ja01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGVuYWJsZWQpOwogfQogCi0tICh2b2lkKV9z
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck5hbWU6KE5TU3RyaW5nICopbmFtZSBzdGF0
ZTooV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKXN0YXRlCistICh2
b2lkKV9zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck5hbWU6KE5TU3RyaW5nICopbmFt
ZSBzdGF0ZTooV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSlz
dGF0ZQogewogICAgIFtzZWxmIF9kZXZpY2VQaWNrZXJdLT5zZXRNb2NrTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlclN0YXRlKG5hbWUsIHN0YXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDNhZTBkM2FhMjYyZDk1MjMz
MGMxYzgyYzMyNTUwZDlhMjFhNTAxNGYuLjA0YjhjMzY4Y2NhZjg1MjRkMDg1OTM3MmQ2MDU4ZjQ4
ZjE3YTZmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3SW50ZXJuYWwuaApAQCAtMzI3LDcgKzMyNyw3IEBAIFdlYkxheW91dE1pbGVzdG9uZXMga2l0
TGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPik7CiAt
ICh2b2lkKV9zaG93UGxheWJhY2tUYXJnZXRQaWNrZXI6KFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0
Q2xpZW50Q29udGV4dElkZW50aWZpZXIpY29udGV4dElkIGxvY2F0aW9uOihjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYpbG9jYXRpb24gaGFzVmlkZW86KEJPT0wpaGFzVmlkZW87CiAtICh2b2lkKV9w
bGF5YmFja1RhcmdldFBpY2tlckNsaWVudFN0YXRlRGlkQ2hhbmdlOihXZWJDb3JlOjpQbGF5YmFj
a1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyKWNvbnRleHRJZCBzdGF0ZTooV2ViQ29yZTo6
TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKXN0YXRlOwogLSAodm9pZClfc2V0TW9ja01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkOihib29sKWVuYWJsZWQ7Ci0tICh2b2lkKV9z
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck5hbWU6KE5TU3RyaW5nICopbmFtZSBzdGF0
ZTooV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKXN0YXRlOworLSAo
dm9pZClfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOihOU1N0cmluZyAqKW5h
bWUgc3RhdGU6KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUp
c3RhdGU7CiAtICh2b2lkKV9tb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1
cDsKICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426242</attachid>
            <date>2021-04-16 09:47:10 -0700</date>
            <delta_ts>2021-04-16 14:22:15 -0700</delta_ts>
            <desc>[fast-cq] Patch for landing (v4): fix clean build failures on the WinCairo port</desc>
            <filename>bug-224469-20210416094709.patch</filename>
            <type>text/plain</type>
            <size>85992</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDEwODNmY2Q5NGYzYjAx
NTcyNzM3YWZiNzQzNGRlNTk5OWFhZmI0ZS4uOTE4MjkyNjNiMzRmNmEwNDMxMjY0YWIwZmFjNTk3
OGVmOWFmMmYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDIxLTA0LTE2ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIFdlYkNvbnRlbnQg
cHJvY2VzcyBzaG91bGQgbm90IGNyZWF0ZSBBVk91dHB1dENvbnRleHQgaW5zdGFuY2VzIHdoZW4g
bWVkaWEgaW4gR1BVIFByb2Nlc3MgaXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBDYXJsc29uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbW9kaWZpZXMgYE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0YCB0byBwcm92aWRlIGludGVyZmFjZXMgdG8gc2VyaWFsaXplL2Rlc2VyaWFs
aXplCisgICAgICAgIGBBVk91dHB1dENvbnRleHRgIGFuZCBtb2RpZmllcyBgTWVkaWFQbGF5YmFj
a1RhcmdldENvY29hYCB0byB1c2UgYE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0YCB0bworICAg
ICAgICBtYW5hZ2UgaXRzIGBBVk91dHB1dENvbnRleHRgIGluc3RlYWQgb2Yga2VlcGluZyBhIHBv
aW50ZXIgdG8gdGhlIGBBVk91dHB1dENvbnRleHRgIG9iamVjdC4KKyAgICAgICAgV2l0aCB0aGVz
ZSBjaGFuZ2VzLCBhIFdlYkNvbnRlbnQgcHJvY2VzcyBjYW4gZm9yd2FyZCBhIHNlcmlhbGl6ZWQg
YEFWT3V0cHV0Q29udGV4dGAgb2JqZWN0CisgICAgICAgIHRvIG90aGVyIHByb2Nlc3NlcyAoZS5n
LiwgdGhlIEdQVSBwcm9jZXNzKSB3aXRob3V0IGRlc2VyaWFsaXppbmcgaXQuIFRoZXJlZm9yZSwg
dGhlIFdlYkNvbnRlbnQKKyAgICAgICAgcHJvY2VzcyBkb2VzIG5vdCBuZWVkIGFjY2VzcyB0byB0
aGUgQ29yZU1lZGlhIHJvdXRpbmcgc2VydmljZS4gU28gd2UgY2FuIHJlbW92ZSB0aGUgZml4IChy
Mjc1NjY5KQorICAgICAgICBmb3IgYnVnIDIyNDMyOC4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4
aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lv
bk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSk6CisgICAgICAgICogTW9kdWxl
cy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaDoKKworICAgICAgICAqIEhlYWRlcnMu
Y21ha2U6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIE1vZGlmeSB0aGUgcHJvamVjdCBmaWxl
IGJlY2F1c2UgYE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0YCBpcyB1c2VkIGluIENvY29hIHBv
cnRzIG9ubHkuCisKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRl
KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSk6CisgICAgICAgICogcGFnZS9QYWdl
Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0OjpoYXNBY3RpdmVSb3V0ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0OjpkZXZpY2VOYW1l
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQ6OnN1cHBvcnRz
UmVtb3RlVmlkZW9QbGF5YmFjayk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJn
ZXRDb2NvYS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpv
dXRwdXRDb250ZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjp+TWVkaWFQbGF5YmFj
a1RhcmdldENvY29hKToKKyAgICAgICAgKFdlYkNvcmU6OnRvTWVkaWFQbGF5YmFja1RhcmdldENv
Y29hKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6c3VwcG9y
dHNSZW1vdGVWaWRlb1BsYXliYWNrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6dGFyZ2V0Q29udGV4dCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6Omhhc0FjdGl2ZVJv
dXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXRDb2NvYTo6ZGV2aWNlTmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIERvbid0IGRpcmVj
dGx5IHVzZSBgQVZPdXRwdXRDb250ZXh0YCBpbiB0aGlzIGNsYXNzLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0V2ly
ZWxlc3NQbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCk6CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6bW9ja1N0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpvdXRwdXRDb250ZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpzZXJpYWxpemVkT3V0
cHV0Q29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6ZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW06IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpkZXZpY2VOYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpoYXNBY3RpdmVSb3V0ZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6c3VwcG9ydHNSZW1vdGVWaWRlb1Bs
YXliYWNrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpzZXJpYWxpemVPdXRwdXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpkZXNlcmlhbGl6ZU91dHB1dENvbnRleHQpOgorCisgICAgICAg
ICogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayk6Cisg
ICAgICAgIChXZWJDb3JlOjp0b01lZGlhUGxheWJhY2tUYXJnZXRNb2NrKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjp0YXJnZXRDb250ZXh0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmg6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6c3RhdGUgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OmV4
dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OmludmFs
aWRhdGVQbGF5YmFja1RhcmdldHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlck1vY2s6OnNldFN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmg6CisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRNb2NrTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlclN0YXRlKToKKwogMjAyMS0wNC0xNSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1
ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzYxMDcu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDY5MWI0YTk1ZWMzZjEyN2VhMmQ5MzhkMTBiNDA1OGViNjQ1ZTg0NmUuLjkx
YWJiMmY3Y2NiMWIwYWJiNzNjODVkYmI5ZTE2OTFmZWI3OWE2N2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTAgQEAKKzIwMjEtMDQtMTYgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKwor
ICAgICAgICBbR1BVUF0gV2ViQ29udGVudCBwcm9jZXNzIHNob3VsZCBub3QgY3JlYXRlIEFWT3V0
cHV0Q29udGV4dCBpbnN0YW5jZXMgd2hlbiBtZWRpYSBpbiBHUFUgUHJvY2VzcyBpcyBlbmFibGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ0NjkK
KworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weTogRml4IGNsZWFuIGJ1aWxkIGZhaWx1cmVzIG9uIHRoZSBXaW5D
YWlybyBwb3J0LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0
V2lyZWxlc3NQbGF5YmFja1RhcmdldCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5Lmg6CisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL2lvcy9S
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKToKKwor
ICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dD46OmVuY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0Zm9ybURhdGEp
OgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46
OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAg
ICAgICAqIFNoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6
ZW5jb2RlUGxhdGZvcm1EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZVBsYXRmb3JtRGF0
YSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6bWVkaWFSZWxhdGVkSU9LaXRDbGFzc2VzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAg
KFdlYktpdDo6dGVtcG9yYXJ5TWFjaFNlcnZpY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbjoKKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXI6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UpOgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDaHJvbWVDbGllbnQ6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6cGxheWJhY2tUYXJnZXRTZWxlY3RlZCBjb25zdCk6CisKIDIwMjEtMDQtMTUgIENvbW1p
dCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJldmVydGluZyByMjc2MTA3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDliM2M0
N2U1OGY0OGU2OTExYWVmNWQ4NTI0MTEzODI3NzY5Yjc5MzUuLmI3NDEzNjAwYmJhOWMyOGM2OGNm
NTc0ZGY2YjBkOGViNDE0ZmI1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMS0wNC0xNiAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgor
CisgICAgICAgIFtHUFVQXSBXZWJDb250ZW50IHByb2Nlc3Mgc2hvdWxkIG5vdCBjcmVhdGUgQVZP
dXRwdXRDb250ZXh0IGluc3RhbmNlcyB3aGVuIG1lZGlhIGluIEdQVSBQcm9jZXNzIGlzIGVuYWJs
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDQ2
OQorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSk6CisgICAgICAgICogV2ViVmlldy9XZWJNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyLmg6CisgICAgICAgICogV2ViVmlldy9XZWJNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyLm1tOgorICAgICAgICAoV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSk6CisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9zZXRNb2NrTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlck5hbWU6c3RhdGU6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3SW50ZXJu
YWwuaDoKKwogMjAyMS0wNC0xNSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzYxMDcuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCBlMTE1MDVjZGQwZjhlNDNiMjg3M2RiN2ExZDU4MWY4ZGY5ODRmZWIzLi5jMDRm
ODA0ZWQ5MzdjNjcwYWRlZjdiM2I2ODlkODk1ZGZhN2U3YjAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTEyNjksNyArMTI2OSw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXliYWNrVGFyZ2V0Q2xpZW50LmgKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCmluZGV4
IDZjNmFiMGU3YTYyZWM0ZGE0NWVkM2RiYzk0MTQ1NTE3NWNkNDRkNWEuLmQ1YjU5NWE0YWM0OWZm
MGVmZmU2MmI0NTJlYzM0MmI3ZDM4MzA0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKQEAgLTE2MSw3
ICsxNjEsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sIGVuYWJsZQogICAgIG1fbW9ja1BpY2tlckVuYWJs
ZWQgPSBlbmFibGVkOwogfQogCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCit2b2lkIFdlYk1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5n
JiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKQogewog
ICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CiAgICAgbW9ja1Bp
Y2tlcigpLnNldFN0YXRlKG5hbWUsIHN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oCmluZGV4IGQ3ZjI4Y2Ni
NzVlNWQ3NTVkYWY0MzM0ZWY2NTZjYjE0MTkwZmFiNTQuLjFiYTEyODRmMjMzM2M3ODQ2YWI4MGQ0
ZTExZGIyYmY0ZjAyMDY2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWly
cGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXImIHNo
YXJlZCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlckVuYWJsZWQoYm9vbCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW9j
a01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgYWRkUGxheWJhY2tU
YXJnZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYsIFBsYXliYWNr
VGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5k
ZXggODI3YzU0ZGE4OWNlZGZlNDlmZWZjZjVmNmU2OTY3ZTNhODM3MmNjOS4uMmEyNGMyYzc0YzFm
Njk4NTk1ZjUyYTVjZjNjMzljNmY0OWY3NzMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBA
IC0zNjksNiArMzY5LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2VQb29sQ29jb2EubW0KIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVk
aWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmQ2YTQ2MTA5YmQ1NGNiM2JjOWI5
ZWEyNzE5NDEwZjJhM2E1YTRjOS4uNTdhYmFlNjQxYjI2ZDMxZWMwMzQ5ZTg3M2JiMjFkMzVlZjQz
OGVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNjk4MCw2ICs2OTgwLDcgQEAKIAkJMUQwMDI2QTMyMzc0RDYyNDAwQ0E2Q0RG
IC8qIEpTUGljdHVyZUluUGljdHVyZVdpbmRvdy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1BpY3R1cmVJblBpY3R1cmVXaW5kb3cuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxRDAwMjZBODIzNzRGOUQ5MDBDQTZDREYgLyogSlNFbnRlclBpY3R1
cmVJblBpY3R1cmVFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Vu
dGVyUGljdHVyZUluUGljdHVyZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFEMDAyNkE5MjM3NEY5RDkwMENBNkNERiAvKiBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRW50ZXJQaWN0dXJl
SW5QaWN0dXJlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRDAwOEFB
NTI2MjEwOEMwMDBFRTNBREUgLyogTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUQyQzgyQjYyMzZBM0Y2QTAwNTVENkM1IC8qIFBpY3R1cmVJ
blBpY3R1cmVTdXBwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBpY3R1cmVJblBpY3R1cmVTdXBwb3J0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFENDc2NThEMjVDQ0E3NzgwMDdBRjMx
MiAvKiBJbWFnZURlY29kZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRGVjb2Rl
cklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURBQjMxMTMyNTFE
NzI1QzAwRkM5NDg1IC8qIFZpZGVvTGF5ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVv
TGF5ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjk2Niw3ICsy
Njk2Nyw2IEBACiAJCQkJQ0RERTAyRTkxOEIzREZDNzAwQ0Y3RkYxIC8qIExlZ2FjeUNETVNlc3Np
b24uaCAqLywKIAkJCQkwN0UzREZEMDFBOUU3ODY1MDA3NjRDQTggLyogTWVkaWFQbGF5YmFja1Rh
cmdldC5oICovLAogCQkJCTA3OTIxNjUzMUFBNTYwQUEwMEEzQzA0OSAvKiBNZWRpYVBsYXliYWNr
VGFyZ2V0Q2xpZW50LmggKi8sCi0JCQkJMDdGODc2ODMxQUQ0QTk0NTAwOTA1ODQ5IC8qIE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0LmggKi8sCiAJCQkJMDc4RTQzRDcxQUJCNkM3RTAwMUMyRkE2
IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuY3BwICovLAogCQkJCTA3OEU0M0Q4MUFCQjZD
N0UwMDFDMkZBNiAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmggKi8sCiAJCQkJRTRCNDFF
MEMwQ0JGOTBCRDAwQUYyRUNFIC8qIE1lZGlhUGxheWVyLmNwcCAqLywKQEAgLTI3MTgyLDYgKzI3
MTgyLDggQEAKIAkJCQlBRDlGRjZFMDE5MDgzOTFEMDAzQjYxRTAgLyogSU9TdXJmYWNlUG9vbENv
Y29hLm1tICovLAogCQkJCUNEQzQ4QUM4MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNv
bmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwICovLAogCQkJCUNEQzQ4QUM3MjE0OUNGMkEwMDI0
RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuaCAqLywKKwkJCQkw
N0Y4NzY4MzFBRDRBOTQ1MDA5MDU4NDkgLyogTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaCAq
LywKKwkJCQkxRDAwOEFBNTI2MjEwOEMwMDBFRTNBREUgLyogTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQubW0gKi8sCiAJCQkJMzE2NDdGQTgyNTE2MTZCRDAwMTBGOEZCIC8qIE9wZW5HTFNvZnRM
aW5rQ29jb2EuaCAqLywKIAkJCQkzMTY0N0ZBOTI1MTYxNkJEMDAxMEY4RkIgLyogT3BlbkdMU29m
dExpbmtDb2NvYS5tbSAqLywKIAkJCQk3QjY0QzBCNDI1NEMzQjE2MDAwNkI0QUYgLyogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSAqLywKQEAgLTMyMTE1LDYgKzMyMTE3
LDcgQEAKIAkJCQk0MTYyQTQ1MTEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQTNENThGMTAxQzE1MkQwMDMxNkQwNyAv
KiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMDZERkE2MTM0
QTRERUYwMDZGNUQ3RCAvKiBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUU0RjM4RDFCMjYyNkYxM0IwMDdCMTA2NCAvKiBEZWZhdWx0UmVzb3VyY2VMb2Fk
UHJpb3JpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEODNEMzYyMjExMjJBMjEwMDc2RTExQyAv
KiBEZWZlcnJhYmxlVGFzay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMkMxMkIwMjY3NjAw
QzFBMzU5IC8qIERlbGF5RFNQS2VybmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAyRTEy
QjAyNjc2MDBDMUEzNTkgLyogRGVsYXlOb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTM0NjE0LDcg
KzM0NjE3LDYgQEAKIAkJCQlCNTk1RkY0NzE4MjRDRUUzMDBGRjUxQ0QgLyogUmVuZGVySXRlcmF0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0ODdBMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5k
ZXJMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1ODBDRkYwRjEyREU5QjAwNTFENjg5IC8q
IFJlbmRlckxheWVyQmFja2luZy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTRGMzhEMUIyNjI2RjEz
QjAwN0IxMDY0IC8qIERlZmF1bHRSZXNvdXJjZUxvYWRQcmlvcml0eS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY1ODBDRkQwRjEyREU5QjAwNTFENjg5IC8qIFJlbmRlckxheWVyQ29tcG9zaXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJM0MyNDRGRUFBMzc1QUM2MzNGODhCRTZGIC8qIFJlbmRlckxh
eWVyTW9kZWxPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTNGQjg0MjEzQjdBNjQwMEM0
MEQzNCAvKiBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IGQwYmMzNTUwZDRkMDgzNWMzMzNlMWY0ODNmNWYy
NWFkZDA0ODMzY2UuLmRmNGM5YzFmODRlY2EyMGU3YjFmYmQzN2MxNDM4YzVlMGFiYjBkNTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtNTEzLDcgKzUxMyw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKFBsYXliYWNrVGFyZ2V0
Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGNvbnN0IEludFBvaW50JiwgYm9vbCAvKmlzVmlkZW8q
LykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVE
aWRDaGFuZ2UoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgTWVkaWFQcm9k
dWNlcjo6TWVkaWFTdGF0ZUZsYWdzKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpICB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRN
b2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBtb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCgpIHsgfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCmluZGV4IGJkOWU1MzgyYmM5ZGNjYmFmZmVjNmIzOTQyMjI0YzhkNWVhNjZi
OWEuLmNkYmZmYTBjNmEwNTJiMGUxZmEwMWNkMWZkOTMxZGJjYmZkZGY1NjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcApAQCAtMjk1Miw3ICsyOTUyLDcgQEAgdm9pZCBQYWdlOjpzZXRNb2NrTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIGNocm9tZSgpLmNsaWVu
dCgpLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChlbmFibGVkKTsKIH0K
IAotdm9pZCBQYWdlOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0
IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQor
dm9pZCBQYWdlOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0
cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBzdGF0ZSkK
IHsKICAgICBjaHJvbWUoKS5jbGllbnQoKS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
clN0YXRlKG5hbWUsIHN0YXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggOTEwMDAzMTZlNTM0NGJj
M2FmN2JjM2U2ZjJkYjIwZDhkZmVkMmQ2ZS4uNmI3NmNjMTE1OGMzZjZhNDQwODcwNDA5ZjEzZjBm
NzIyMTk4MzIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTczMSw3ICs3MzEsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoUGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllciwgY29uc3QgSW50UG9pbnQmLCBib29sLCBSb3V0ZVNoYXJpbmdQb2xpY3ks
IGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0
ZURpZENoYW5nZShQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBNZWRpYVBy
b2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TW9j
a01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJp
bmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJp
bmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCk7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFBsYXliYWNrVGFyZ2V0KFBsYXliYWNrVGFy
Z2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJh
Y2tUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJh
Y2tUYXJnZXQuaAppbmRleCA2YWRmYTkzN2Y3M2Y1NzNkOTVjOWZjZDc0ZDZkMjFiODczYTJmNzg4
Li42MTI4MDg1MDFmMDRmMmZhNWQ0ZmJkZDgyNmE1ZWEwOTZmMmEzYzc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldC5o
CkBAIC0yNywyNCArMjcsMjMgQEAKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpCiAKKyNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oIgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDsKLQogY2xhc3Mg
TWVkaWFQbGF5YmFja1RhcmdldCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhUGxheWJhY2tUYXJn
ZXQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRpYVBsYXliYWNrVGFyZ2V0KCkgPSBkZWZh
dWx0OwogCi0gICAgZW51bSBUYXJnZXRUeXBlIHsgQVZGb3VuZGF0aW9uLCBNb2NrIH07CisgICAg
ZW51bSBjbGFzcyBUYXJnZXRUeXBlIDogdWludDhfdCB7IEFWRm91bmRhdGlvbiwgTW9jayB9Owog
ICAgIHZpcnR1YWwgVGFyZ2V0VHlwZSB0YXJnZXRUeXBlKCkgY29uc3QgPSAwOwotCiAgICAgdmly
dHVhbCBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0Q29udGV4dCgpIGNv
bnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQWN0aXZlUm91dGUoKSBjb25zdCA9IDA7Ci0g
ICAgdmlydHVhbCBTdHJpbmcgZGV2aWNlTmFtZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrKCkgY29uc3QgPSAwOworCisgICAgYm9vbCBo
YXNBY3RpdmVSb3V0ZSgpIGNvbnN0IHsgcmV0dXJuIHRhcmdldENvbnRleHQoKS5oYXNBY3RpdmVS
b3V0ZSgpOyB9CisgICAgU3RyaW5nIGRldmljZU5hbWUoKSBjb25zdCB7IHJldHVybiB0YXJnZXRD
b250ZXh0KCkuZGV2aWNlTmFtZSgpOyB9CisgICAgYm9vbCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxh
eWJhY2soKSB7IHJldHVybiB0YXJnZXRDb250ZXh0KCkuc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXli
YWNrKCk7IH0KIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxY2U0YTNlYzMwMWU5ZDllOTc0NGRjYmYyOWI3YTdhMTBiZjRiMzRi
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgKKysr
IC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0X2gK
LSNkZWZpbmUgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHRfaAotCi0jaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgot
Ci1PQkpDX0NMQVNTIEFWT3V0cHV0Q29udGV4dDsKLQotI2lmIFBMQVRGT1JNKENPQ09BKQotT0JK
Q19DTEFTUyBOU0tleWVkQXJjaGl2ZXI7Ci1PQkpDX0NMQVNTIE5TS2V5ZWRVbmFyY2hpdmVyOwot
I2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQgewotcHVibGljOgotICAgIGVudW0gVHlwZSA6IGludDMyX3QgewotICAgICAgICBO
b25lLAotICAgICAgICBBVk91dHB1dENvbnRleHRUeXBlLAotICAgICAgICBNb2NrVHlwZSwKLSAg
ICB9OwotCi0gICAgZW51bSBDb250ZXh0U3RhdGUgewotICAgICAgICBVbmtub3duID0gMCwKLSAg
ICAgICAgT3V0cHV0RGV2aWNlVW5hdmFpbGFibGUgPSAxLAotICAgICAgICBPdXRwdXREZXZpY2VB
dmFpbGFibGUgPSAyLAotICAgIH07Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBTdGF0ZTsKLQotICAg
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KCkKLSAgICAgICAgOiBtX3R5cGUoTm9uZSkKLSAg
ICB7Ci0gICAgfQotCi0gICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQoQVZPdXRwdXRDb250
ZXh0ICpvdXRwdXRDb250ZXh0KQotICAgICAgICA6IG1fdHlwZShBVk91dHB1dENvbnRleHRUeXBl
KQotICAgICAgICAsIG1fb3V0cHV0Q29udGV4dChvdXRwdXRDb250ZXh0KQotICAgIHsKLSAgICB9
Ci0KLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChjb25zdCBTdHJpbmcmIG5hbWUsIFN0
YXRlIHN0YXRlKQotICAgICAgICA6IG1fdHlwZShNb2NrVHlwZSkKLSAgICAgICAgLCBtX25hbWUo
bmFtZSkKLSAgICAgICAgLCBtX3N0YXRlKHN0YXRlKQotICAgIHsKLSAgICB9Ci0KLSAgICBUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLQotICAgIGNvbnN0IFN0cmluZyYgbW9j
a0RldmljZU5hbWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBNb2Nr
VHlwZSk7Ci0gICAgICAgIHJldHVybiBtX25hbWU7Ci0gICAgfQotCi0gICAgU3RhdGUgbW9ja1N0
YXRlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gTW9ja1R5cGUpOwot
ICAgICAgICByZXR1cm4gbV9zdGF0ZTsKLSAgICB9Ci0KLSAgICBBVk91dHB1dENvbnRleHQgKmF2
T3V0cHV0Q29udGV4dCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEFW
T3V0cHV0Q29udGV4dFR5cGUpOwotICAgICAgICByZXR1cm4gbV9vdXRwdXRDb250ZXh0OwotICAg
IH0KLQotICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZSA9PSBBVk91dHB1dENvbnRleHRUeXBlOyB9Ci0gICAgCi1wcml2YXRlOgotICAg
IFR5cGUgbV90eXBlIHsgTm9uZSB9OwotICAgIEFWT3V0cHV0Q29udGV4dCAqbV9vdXRwdXRDb250
ZXh0IHsgbnVsbHB0ciB9OwotICAgIFN0cmluZyBtX25hbWU7Ci0gICAgU3RhdGUgbV9zdGF0ZSB7
IFVua25vd24gfTsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpCi0KLSNlbmRpZiAvLyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXliYWNrVGFyZ2V0Q29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaAppbmRleCA2YThlMTk0NzZh
MzQ3ZDhlNzQ4NDFmZjY5ZmJkNDhiMDkyMjNjODg5Li42OGUzNTJjYTA4Yzk4YmJmMWM5OWRmYTI1
YTQ5MDM1ZGFiZjM0YjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJn
ZXRDb2NvYS5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKIAogI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXQuaCIKLSNpbmNsdWRlICJN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzYsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EgOiBwdWJsaWMgTWVkaWFQbGF5YmFj
a1RhcmdldCB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNZWRpYVBs
YXliYWNrVGFyZ2V0PiBjcmVhdGUoQVZPdXRwdXRDb250ZXh0ICopOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gY3JlYXRlKE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0JiYpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JN
KElPU19GQU1JTFlfU0lNVUxBVE9SKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgc3Rh
dGljIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBjcmVhdGUoKTsKQEAgLTQzLDIxICs0MywxNCBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoKTsKIAot
ICAgIFRhcmdldFR5cGUgdGFyZ2V0VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFWRm91bmRh
dGlvbjsgfQotCi0gICAgY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldENv
bnRleHQoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIGhhc0FjdGl2ZVJvdXRlKCkgY29uc3QgZmlu
YWw7Ci0gICAgU3RyaW5nIGRldmljZU5hbWUoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBv
cnRzUmVtb3RlVmlkZW9QbGF5YmFjaygpIGNvbnN0IGZpbmFsOwotCi0gICAgQVZPdXRwdXRDb250
ZXh0ICpvdXRwdXRDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9vdXRwdXRDb250ZXh0LmdldCgp
OyB9CisgICAgVGFyZ2V0VHlwZSB0YXJnZXRUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gVGFy
Z2V0VHlwZTo6QVZGb3VuZGF0aW9uOyB9CisgICAgY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQmIHRhcmdldENvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbnRleHQ7IH0K
IAogcHJvdGVjdGVkOgotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShBVk91dHB1dENvbnRl
eHQgKik7CisgICAgZXhwbGljaXQgTWVkaWFQbGF5YmFja1RhcmdldENvY29hKEFWT3V0cHV0Q29u
dGV4dCAqKTsKKyAgICBleHBsaWNpdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQmJik7CiAKLSAgICBSZXRhaW5QdHI8QVZPdXRwdXRDb250ZXh0PiBt
X291dHB1dENvbnRleHQ7Ci0gICAgbXV0YWJsZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCBt
X2NvbnRleHQ7Ci0gICAgU3RyaW5nIG1fZGV2aWNlTmFtZTsKKyAgICBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dCBtX2NvbnRleHQ7CiB9OwogCiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EqIHRv
TWVkaWFQbGF5YmFja1RhcmdldENvY29hKE1lZGlhUGxheWJhY2tUYXJnZXQqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBs
YXliYWNrVGFyZ2V0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1tCmluZGV4IGRhYzhjYzQ4MTU2
YzJjN2U3NGVhYWM3YjRkZGU0YmMyMTc3NTE5YWEuLjZmNWMyN2UzOTQwZTNhMDg3YmYyMWI4ZjQw
MDQxYjQ3NTBkZGRhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJn
ZXRDb2NvYS5tbQpAQCAtMzQsOTIgKzM0LDM2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRl
KEFWT3V0cHV0Q29udGV4dCAqY29udGV4dCkKK1JlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZShBVk91dHB1dENvbnRleHQgKm91dHB1dENvbnRl
eHQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFQbGF5YmFja1RhcmdldENvY29h
KGNvbnRleHQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29jb2Eob3V0cHV0Q29udGV4dCkpOwogfQogCi1NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRDb2NvYShBVk91dHB1dENvbnRleHQgKmNvbnRleHQpCi0gICAgOiBN
ZWRpYVBsYXliYWNrVGFyZ2V0KCkKLSAgICAsIG1fb3V0cHV0Q29udGV4dChjb250ZXh0KQorUmVm
PE1lZGlhUGxheWJhY2tUYXJnZXQ+IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiYgY29udGV4dCkKIHsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoV1RGTW92ZShjb250ZXh0KSkpOwogfQog
Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxB
VE9SKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi1SZWY8TWVkaWFQbGF5YmFja1RhcmdldD4g
TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUoKQorTWVkaWFQbGF5YmFja1RhcmdldENv
Y29hOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoQVZPdXRwdXRDb250ZXh0ICpvdXRwdXRDb250
ZXh0KQorICAgIDogbV9jb250ZXh0KG91dHB1dENvbnRleHQpCiB7Ci0gICAgYXV0byAqcm91dGlu
Z0NvbnRleHRVSUQgPSBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3Rh
bmNlXSByb3V0aW5nQ29udGV4dFVJRF07Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFQ
bGF5YmFja1RhcmdldENvY29hKFtQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgb3V0cHV0
Q29udGV4dEZvcklEOnJvdXRpbmdDb250ZXh0VUlEXSkpOwogfQotI2VuZGlmCiAKLWJvb2wgTWVk
aWFQbGF5YmFja1RhcmdldENvY29hOjpzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKSBjb25z
dAorTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQmJiBjb250ZXh0KQorICAgIDogbV9jb250ZXh0KFdURk1v
dmUoY29udGV4dCkpCiB7Ci0gICAgaWYgKCFtX291dHB1dENvbnRleHQpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGlmICghW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKHN1cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2VzKV0gfHwgIVttX291dHB1dENv
bnRleHQgc3VwcG9ydHNNdWx0aXBsZU91dHB1dERldmljZXNdIHx8ICFbbV9vdXRwdXRDb250ZXh0
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob3V0cHV0RGV2aWNlcyldKSB7Ci0gICAgICAg
IGlmIChhdXRvICpvdXRwdXREZXZpY2UgPSBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmljZV0p
IHsKLSAgICAgICAgICAgIGlmIChvdXRwdXREZXZpY2UuZGV2aWNlRmVhdHVyZXMgJiBBVk91dHB1
dERldmljZUZlYXR1cmVWaWRlbykKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBmb3IgKEFWT3V0cHV0
RGV2aWNlICpvdXRwdXREZXZpY2UgaW4gW21fb3V0cHV0Q29udGV4dCBvdXRwdXREZXZpY2VzXSkg
ewotICAgICAgICBpZiAob3V0cHV0RGV2aWNlLmRldmljZUZlYXR1cmVzICYgQVZPdXRwdXREZXZp
Y2VGZWF0dXJlVmlkZW8pCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLU1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6fk1lZGlhUGxheWJh
Y2tUYXJnZXRDb2NvYSgpCi17Ci19Ci0KLWNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
JiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OnRhcmdldENvbnRleHQoKSBjb25zdAotewotICAg
IG1fY29udGV4dCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KG1fb3V0cHV0Q29udGV4dC5n
ZXQoKSk7Ci0gICAgcmV0dXJuIG1fY29udGV4dDsKLX0KLQotYm9vbCBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29jb2E6Omhhc0FjdGl2ZVJvdXRlKCkgY29uc3QKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpICYmICFQTEFURk9STShNQUNDQVRB
TFlTVCkKK1JlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6
OmNyZWF0ZSgpCiB7Ci0gICAgaWYgKCFtX291dHB1dENvbnRleHQpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGlmIChbbV9vdXRwdXRDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3Ioc3VwcG9ydHNNdWx0aXBsZU91dHB1dERldmljZXMpXSAmJiBbbV9vdXRwdXRDb250ZXh0
IHN1cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2VzXSAmJiBbbV9vdXRwdXRDb250ZXh0IHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob3V0cHV0RGV2aWNlcyldKSB7Ci0gICAgICAgIGZvciAo
QVZPdXRwdXREZXZpY2UgKm91dHB1dERldmljZSBpbiBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERl
dmljZXNdKSB7Ci0gICAgICAgICAgICBpZiAob3V0cHV0RGV2aWNlLmRldmljZUZlYXR1cmVzICYg
KEFWT3V0cHV0RGV2aWNlRmVhdHVyZVZpZGVvIHwgQVZPdXRwdXREZXZpY2VGZWF0dXJlQXVkaW8p
KQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChbbV9vdXRwdXRDb250ZXh0IHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3Iob3V0cHV0RGV2aWNlKV0pIHsKLSAgICAgICAgaWYgKGF1dG8gKm91
dHB1dERldmljZSA9IFttX291dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlXSkKLSAgICAgICAgICAg
IHJldHVybiBvdXRwdXREZXZpY2UuZGV2aWNlRmVhdHVyZXMgJiAoQVZPdXRwdXREZXZpY2VGZWF0
dXJlVmlkZW8gfCBBVk91dHB1dERldmljZUZlYXR1cmVBdWRpbyk7Ci0gICAgfQotCi0gICAgcmV0
dXJuIG1fb3V0cHV0Q29udGV4dC5nZXQoKS5kZXZpY2VOYW1lOworICAgIGF1dG8gKnJvdXRpbmdD
b250ZXh0VUlEID0gW1tQQUw6OmdldEFWQXVkaW9TZXNzaW9uQ2xhc3MoKSBzaGFyZWRJbnN0YW5j
ZV0gcm91dGluZ0NvbnRleHRVSURdOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb2NvYShbUEFMOjpnZXRBVk91dHB1dENvbnRleHRDbGFzcygpIG91dHB1dENv
bnRleHRGb3JJRDpyb3V0aW5nQ29udGV4dFVJRF0pKTsKIH0KKyNlbmRpZgogCi1TdHJpbmcgTWVk
aWFQbGF5YmFja1RhcmdldENvY29hOjpkZXZpY2VOYW1lKCkgY29uc3QKK01lZGlhUGxheWJhY2tU
YXJnZXRDb2NvYTo6fk1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSgpCiB7Ci0gICAgaWYgKCFtX291
dHB1dENvbnRleHQpCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotCi0gICAgaWYgKCFb
bV9vdXRwdXRDb250ZXh0IHN1cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2VzXSkKLSAgICAgICAg
cmV0dXJuIFttX291dHB1dENvbnRleHQgZGV2aWNlTmFtZV07Ci0KLSAgICBhdXRvIG91dHB1dERl
dmljZU5hbWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAg
Zm9yIChBVk91dHB1dERldmljZSAqb3V0cHV0RGV2aWNlIGluIFttX291dHB1dENvbnRleHQgb3V0
cHV0RGV2aWNlc10pCi0gICAgICAgIFtvdXRwdXREZXZpY2VOYW1lcyBhZGRPYmplY3Q6W291dHB1
dERldmljZSBkZXZpY2VOYW1lXV07Ci0KLSAgICByZXR1cm4gW291dHB1dERldmljZU5hbWVzIGNv
bXBvbmVudHNKb2luZWRCeVN0cmluZzpAIiArICJdOwogfQogCiBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29jb2EqIHRvTWVkaWFQbGF5YmFja1RhcmdldENvY29hKE1lZGlhUGxheWJhY2tUYXJnZXQqIHJl
cCkKQEAgLTEyOSw3ICs3Myw3IEBAIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSogdG9NZWRpYVBs
YXliYWNrVGFyZ2V0Q29jb2EoTWVkaWFQbGF5YmFja1RhcmdldCogcmVwKQogCiBjb25zdCBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29jb2EqIHRvTWVkaWFQbGF5YmFja1RhcmdldENvY29hKGNvbnN0IE1l
ZGlhUGxheWJhY2tUYXJnZXQqIHJlcCkKIHsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihyZXAtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpBVkZvdW5k
YXRpb24pOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ocmVw
LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldDo6VGFyZ2V0VHlwZTo6QVZGb3Vu
ZGF0aW9uKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hKj4ocmVwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggMjBiMjQxMmYx
MTM2NjNjMWYzODYyZjI3YjY2MjQwMGY2Y2RiMDcyYi4uMGFjMDkzZTUwY2EyOTgwYzU5YTMyN2Ey
YzJlODgxZWNkZmIxYmJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0yODI0LDcgKzI4
MjQsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmlzQ3VycmVu
dFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MoKSBjb25zdAogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgaWYgKG1fcGxheWJhY2tUYXJnZXQpIHsKLSAgICAgICAgaWYgKG1fcGxheWJhY2tU
YXJnZXQtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpBVkZvdW5kYXRpb24p
CisgICAgICAgIGlmIChtX3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5
YmFja1RhcmdldDo6VGFyZ2V0VHlwZTo6QVZGb3VuZGF0aW9uKQogICAgICAgICAgICAgd2lyZWxl
c3NUYXJnZXQgPSBtX2F2UGxheWVyICYmIG1fYXZQbGF5ZXIuZ2V0KCkuZXh0ZXJuYWxQbGF5YmFj
a0FjdGl2ZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgd2lyZWxlc3NUYXJnZXQgPSBtX3No
b3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0ICYmIG1fcGxheWJhY2tUYXJnZXQtPmhhc0FjdGl2ZVJv
dXRlKCk7CkBAIC0yOTY4LDcgKzI5NjgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheQogewog
ICAgIG1fcGxheWJhY2tUYXJnZXQgPSBXVEZNb3ZlKHRhcmdldCk7CiAKLSAgICBtX291dHB1dENv
bnRleHQgPSBtX3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1Rh
cmdldDo6QVZGb3VuZGF0aW9uID8gdG9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EobV9wbGF5YmFj
a1RhcmdldC5nZXQoKSktPm91dHB1dENvbnRleHQoKSA6IG51bGxwdHI7CisgICAgbV9vdXRwdXRD
b250ZXh0ID0gbV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJhY2tU
YXJnZXQ6OlRhcmdldFR5cGU6OkFWRm91bmRhdGlvbiA/IHRvTWVkaWFQbGF5YmFja1RhcmdldENv
Y29hKG1fcGxheWJhY2tUYXJnZXQuZ2V0KCkpLT50YXJnZXRDb250ZXh0KCkub3V0cHV0Q29udGV4
dCgpIDogbnVsbHB0cjsKIAogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogCkBAIC0yOTg4
LDcgKzI5ODgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wgc2hvdQogCiAgICAgSU5GT19MT0coTE9H
SURFTlRJRklFUiwgc2hvdWxkUGxheSk7CiAKLSAgICBpZiAobV9wbGF5YmFja1RhcmdldC0+dGFy
Z2V0VHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6OkFWRm91bmRhdGlvbikgeworICAgIGlm
IChtX3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldDo6
VGFyZ2V0VHlwZTo6QVZGb3VuZGF0aW9uKSB7CiAgICAgICAgIEFWT3V0cHV0Q29udGV4dCAqbmV3
Q29udGV4dCA9IHNob3VsZFBsYXkgPyBtX291dHB1dENvbnRleHQuZ2V0KCkgOiBuaWw7CiAKICAg
ICAgICAgaWYgKCFtX2F2UGxheWVyKQpAQCAtMzAwNSw3ICszMDA1LDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rhcmdl
dChib29sIHNob3UKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChtX3BsYXli
YWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldDo6TW9jayk7Cisg
ICAgQVNTRVJUKG1fcGxheWJhY2tUYXJnZXQtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNr
VGFyZ2V0OjpUYXJnZXRUeXBlOjpNb2NrKTsKIAogICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUp
OwogICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNmE1MGIwMDZlZWEwYThiMjM2Mjk2
MTc1ZmJkZjVhODRjOTdlYzA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaApAQCAtMCww
ICsxLDEzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorT0JKQ19DTEFTUyBBVk91dHB1dENvbnRl
eHQ7CitPQkpDX0NMQVNTIE5TRGF0YTsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IHsKK3B1YmxpYzoKKyAgICBlbnVtIGNs
YXNzIFR5cGUgOiB1aW50OF90IHsKKyAgICAgICAgTm9uZSwKKyAgICAgICAgQVZPdXRwdXRDb250
ZXh0LAorICAgICAgICBTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0LAorICAgICAgICBNb2NrLAor
ICAgIH07CisKKyAgICBlbnVtIGNsYXNzIE1vY2tTdGF0ZSA6IHVpbnQ4X3QgeworICAgICAgICBV
bmtub3duID0gMCwKKyAgICAgICAgT3V0cHV0RGV2aWNlVW5hdmFpbGFibGUgPSAxLAorICAgICAg
ICBPdXRwdXREZXZpY2VBdmFpbGFibGUgPSAyLAorICAgIH07CisKKyAgICBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dCgpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChSZXRhaW5QdHI8QVZPdXRwdXRDb250ZXh0PiYmKTsK
KworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KFJldGFpblB0cjxOU0RhdGE+JiYgc2Vy
aWFsaXplZE91dHB1dENvbnRleHQsIGJvb2wgaGFzQWN0aXZlUm91dGUpCisgICAgICAgIDogbV90
eXBlKFR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQpCisgICAgICAgICwgbV9zZXJpYWxp
emVkT3V0cHV0Q29udGV4dChXVEZNb3ZlKHNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KSkKKyAgICAg
ICAgLCBtX2NhY2hlZEhhc0FjdGl2ZVJvdXRlKGhhc0FjdGl2ZVJvdXRlKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fc2VyaWFsaXplZE91dHB1dENvbnRleHQpOworICAgIH0KKworICAgIE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0KGNvbnN0IFN0cmluZyYgbW9ja0RldmljZU5hbWUsIE1vY2tT
dGF0ZSBzdGF0ZSkKKyAgICAgICAgOiBtX3R5cGUoVHlwZTo6TW9jaykKKyAgICAgICAgLCBtX21v
Y2tEZXZpY2VOYW1lKG1vY2tEZXZpY2VOYW1lKQorICAgICAgICAsIG1fbW9ja1N0YXRlKHN0YXRl
KQorICAgIHsKKyAgICB9CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7
IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZGV2aWNlTmFtZSgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaGFzQWN0aXZlUm91dGUoKSBjb25zdDsKKyAgICBib29sIHN1cHBv
cnRzUmVtb3RlVmlkZW9QbGF5YmFjaygpIGNvbnN0OworCisgICAgTW9ja1N0YXRlIG1vY2tTdGF0
ZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6Ok1vY2spOwor
ICAgICAgICByZXR1cm4gbV9tb2NrU3RhdGU7CisgICAgfQorCisgICAgUmV0YWluUHRyPEFWT3V0
cHV0Q29udGV4dD4gb3V0cHV0Q29udGV4dCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQo
bV90eXBlID09IFR5cGU6OkFWT3V0cHV0Q29udGV4dCk7CisgICAgICAgIHJldHVybiBtX291dHB1
dENvbnRleHQ7CisgICAgfQorCisgICAgUmV0YWluUHRyPE5TRGF0YT4gc2VyaWFsaXplZE91dHB1
dENvbnRleHQoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpT
ZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIG1fc2VyaWFsaXplZE91
dHB1dENvbnRleHQ7CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXJpYWxpemVP
dXRwdXRDb250ZXh0KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBkZXNlcmlhbGl6ZU91dHB1
dENvbnRleHQoKTsKKworICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpBVk91dHB1dENvbnRleHQgfHwgbV90eXBlID09
IFR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQ7IH0KKworcHJpdmF0ZToKKyAgICBUeXBl
IG1fdHlwZSB7IFR5cGU6Ok5vbmUgfTsKKyAgICBSZXRhaW5QdHI8QVZPdXRwdXRDb250ZXh0PiBt
X291dHB1dENvbnRleHQ7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gbV9zZXJpYWxpemVkT3V0cHV0
Q29udGV4dDsKKyAgICBib29sIG1fY2FjaGVkSGFzQWN0aXZlUm91dGUgeyBmYWxzZSB9OworCisg
ICAgU3RyaW5nIG1fbW9ja0RldmljZU5hbWU7CisgICAgTW9ja1N0YXRlIG1fbW9ja1N0YXRlIHsg
TW9ja1N0YXRlOjpVbmtub3duIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25h
bWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51
bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5
cGUsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpO
b25lLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6
QVZPdXRwdXRDb250ZXh0LAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dCwKKyAgICAgICAgV2ViQ29yZTo6
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2sKKyAgICA+OworfTsKKwordGVt
cGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6TW9ja1N0YXRlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAg
ICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSwKKyAgICAg
ICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93
biwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0
ZTo6T3V0cHV0RGV2aWNlVW5hdmFpbGFibGUsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6Ok91dHB1dERldmljZUF2YWlsYWJsZQorICAgID47
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRiZjhmYWFiMDAzOTI0YjQ1NGMxNDFhNzE0NTk4ZTQyYTg3Y2M5ZjIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dC5tbQpAQCAtMCwwICsxLDE2MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dC5oIgorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKworI2ltcG9ydCA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmg+CisjaW1wb3J0IDxwYWwvY29jb2Ev
QVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQoUmV0YWluUHRy
PEFWT3V0cHV0Q29udGV4dD4mJiBvdXRwdXRDb250ZXh0KQorICAgIDogbV9vdXRwdXRDb250ZXh0
KG91dHB1dENvbnRleHQpCit7CisgICAgQVNTRVJUKG1fb3V0cHV0Q29udGV4dCk7CisgICAgbV90
eXBlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dDsK
K30KKworU3RyaW5nIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpkZXZpY2VOYW1lKCkgY29u
c3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpU
eXBlOjpNb2NrIHx8IG1fdHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6
QVZPdXRwdXRDb250ZXh0KTsKKworICAgIGlmIChtX3R5cGUgPT0gTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6OlR5cGU6Ok1vY2spCisgICAgICAgIHJldHVybiBtX21vY2tEZXZpY2VOYW1lOwor
CisgICAgQVNTRVJUKG1fdHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6
QVZPdXRwdXRDb250ZXh0KTsKKyAgICBTdHJpbmcgZGV2aWNlTmFtZTsKKyAgICBpZiAoIVttX291
dHB1dENvbnRleHQgc3VwcG9ydHNNdWx0aXBsZU91dHB1dERldmljZXNdKQorICAgICAgICBkZXZp
Y2VOYW1lID0gW21fb3V0cHV0Q29udGV4dCBkZXZpY2VOYW1lXTsKKyAgICBlbHNlIHsKKyAgICAg
ICAgYXV0byBvdXRwdXREZXZpY2VOYW1lcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdF0pOworICAgICAgICBmb3IgKEFWT3V0cHV0RGV2aWNlICpvdXRwdXREZXZpY2UgaW4g
W21fb3V0cHV0Q29udGV4dCBvdXRwdXREZXZpY2VzXSkKKyAgICAgICAgICAgIFtvdXRwdXREZXZp
Y2VOYW1lcyBhZGRPYmplY3Q6W291dHB1dERldmljZSBkZXZpY2VOYW1lXV07CisKKyAgICAgICAg
ZGV2aWNlTmFtZSA9IFtvdXRwdXREZXZpY2VOYW1lcyBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6
QCIgKyAiXTsKKyAgICB9CisKKyAgICByZXR1cm4gZGV2aWNlTmFtZTsKK30KK2Jvb2wgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6Omhhc0FjdGl2ZVJvdXRlKCkgY29uc3QKK3sKKyAgICBBU1NF
UlQobV90eXBlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpOb25lKTsKKyAg
ICBpZiAobV90eXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrKQor
ICAgICAgICByZXR1cm4gIW1fbW9ja0RldmljZU5hbWUuaXNFbXB0eSgpOworCisgICAgLy8gRklY
TUU6IEl0IG1heSBub3QgYmUgc2FmZSB0byB1c2UgdGhlIGNhY2hlZCBgaGFzQWN0aXZlUm91dGVg
IG9mIGEgc2VyaWFsaXplZCBBVk91dHB1dENvbnRleHQKKyAgICBpZiAobV90eXBlID09IE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0KQor
ICAgICAgICByZXR1cm4gbV9jYWNoZWRIYXNBY3RpdmVSb3V0ZTsKKworICAgIEFTU0VSVChtX3R5
cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCk7
CisgICAgYm9vbCBoYXNBY3RpdmVSb3V0ZSA9IGZhbHNlOworICAgIGlmIChbbV9vdXRwdXRDb250
ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc3VwcG9ydHNNdWx0aXBsZU91dHB1dERl
dmljZXMpXSAmJiBbbV9vdXRwdXRDb250ZXh0IHN1cHBvcnRzTXVsdGlwbGVPdXRwdXREZXZpY2Vz
XSAmJiBbbV9vdXRwdXRDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob3V0cHV0
RGV2aWNlcyldKSB7CisgICAgICAgIGZvciAoQVZPdXRwdXREZXZpY2UgKm91dHB1dERldmljZSBp
biBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmljZXNdKSB7CisgICAgICAgICAgICBpZiAob3V0
cHV0RGV2aWNlLmRldmljZUZlYXR1cmVzICYgKEFWT3V0cHV0RGV2aWNlRmVhdHVyZVZpZGVvIHwg
QVZPdXRwdXREZXZpY2VGZWF0dXJlQXVkaW8pKQorICAgICAgICAgICAgICAgIGhhc0FjdGl2ZVJv
dXRlID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoW21fb3V0cHV0Q29udGV4dCBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dERldmljZSldKSB7CisgICAgICAgIGlm
IChhdXRvICpvdXRwdXREZXZpY2UgPSBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmljZV0pCisg
ICAgICAgICAgICBoYXNBY3RpdmVSb3V0ZSA9IG91dHB1dERldmljZS5kZXZpY2VGZWF0dXJlcyAm
IChBVk91dHB1dERldmljZUZlYXR1cmVWaWRlbyB8IEFWT3V0cHV0RGV2aWNlRmVhdHVyZUF1ZGlv
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgaGFzQWN0aXZlUm91dGUgPSBtX291dHB1dENvbnRleHQu
Z2V0KCkuZGV2aWNlTmFtZTsKKworICAgIHJldHVybiBoYXNBY3RpdmVSb3V0ZTsKK30KK2Jvb2wg
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OnN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygp
IGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6VHlwZTo6TW9jayB8fCBtX3R5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5
cGU6OkFWT3V0cHV0Q29udGV4dCk7CisgICAgaWYgKG1fdHlwZSA9PSBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6VHlwZTo6TW9jaykKKyAgICAgICAgcmV0dXJuICFtX21vY2tEZXZpY2VOYW1l
LmlzRW1wdHkoKTsKKworICAgIGJvb2wgc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrID0gZmFs
c2U7CisgICAgaWYgKCFbbV9vdXRwdXRDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3Ioc3VwcG9ydHNNdWx0aXBsZU91dHB1dERldmljZXMpXSB8fCAhW21fb3V0cHV0Q29udGV4dCBz
dXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNlc10gfHwgIVttX291dHB1dENvbnRleHQgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdXRwdXREZXZpY2VzKV0pIHsKKyAgICAgICAgaWYgKGF1
dG8gKm91dHB1dERldmljZSA9IFttX291dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlXSkgeworICAg
ICAgICAgICAgaWYgKG91dHB1dERldmljZS5kZXZpY2VGZWF0dXJlcyAmIEFWT3V0cHV0RGV2aWNl
RmVhdHVyZVZpZGVvKQorICAgICAgICAgICAgICAgIHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFj
ayA9IHRydWU7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBmb3IgKEFWT3V0cHV0
RGV2aWNlICpvdXRwdXREZXZpY2UgaW4gW21fb3V0cHV0Q29udGV4dCBvdXRwdXREZXZpY2VzXSkg
eworICAgICAgICAgICAgaWYgKG91dHB1dERldmljZS5kZXZpY2VGZWF0dXJlcyAmIEFWT3V0cHV0
RGV2aWNlRmVhdHVyZVZpZGVvKQorICAgICAgICAgICAgICAgIHN1cHBvcnRzUmVtb3RlVmlkZW9Q
bGF5YmFjayA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gc3VwcG9ydHNS
ZW1vdGVWaWRlb1BsYXliYWNrOworfQorCitib29sIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpzZXJpYWxpemVPdXRwdXRDb250ZXh0KCkKK3sKKyAgICBBU1NFUlQobV90eXBlICE9IE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0KTsK
KyAgICBpZiAobV90eXBlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91
dHB1dENvbnRleHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gYXJjaGl2ZXIg
PSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0UmVxdWlyaW5nU2VjdXJlQ29k
aW5nOllFU10pOworICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6bV9vdXRwdXRDb250ZXh0Lmdl
dCgpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOworICAgIFthcmNoaXZlciBm
aW5pc2hFbmNvZGluZ107CisKKyAgICBtX3NlcmlhbGl6ZWRPdXRwdXRDb250ZXh0ID0gW2FyY2hp
dmVyIGVuY29kZWREYXRhXTsKKyAgICBtX3R5cGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0Q29udGV4dDsKKyAgICBtX291dHB1dENvbnRleHQu
Y2xlYXIoKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpkZXNlcmlhbGl6ZU91dHB1dENvbnRleHQoKQoreworICAgIEFTU0VSVChtX3R5
cGUgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCk7
CisgICAgaWYgKG1fdHlwZSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6U2Vy
aWFsaXplZEFWT3V0cHV0Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9v
bCBzdWNjZXNzID0gZmFsc2U7CisgICAgYXV0byB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5
ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ0Zyb21EYXRhOm1fc2VyaWFsaXplZE91
dHB1dENvbnRleHQuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pOworICAgIHVuYXJjaGl2ZXIuZ2V0KCku
ZGVjb2RpbmdGYWlsdXJlUG9saWN5ID0gTlNEZWNvZGluZ0ZhaWx1cmVQb2xpY3lSYWlzZUV4Y2Vw
dGlvbjsKKyAgICBhdXRvIGFsbG93ZWRDbGFzc1NldCA9IGFkb3B0TlMoW1tOU1NldCBhbGxvY10g
aW5pdFdpdGhBcnJheTpAWyBQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgXV0pOworCisg
ICAgQHRyeSB7CisgICAgICAgIGlkIHJlc3VsdCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9m
Q2xhc3NlczphbGxvd2VkQ2xhc3NTZXQuZ2V0KCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9i
amVjdEtleV07CisgICAgICAgIEFTU0VSVChyZXN1bHQpOworICAgICAgICBpZiAocmVzdWx0KSB7
CisgICAgICAgICAgICBtX291dHB1dENvbnRleHQgPSByZXN1bHQ7CisgICAgICAgICAgICBtX3R5
cGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0Owor
ICAgICAgICAgICAgbV9zZXJpYWxpemVkT3V0cHV0Q29udGV4dC5jbGVhcigpOworICAgICAgICAg
ICAgc3VjY2VzcyA9IHRydWU7CisgICAgICAgIH0KKyAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24g
KmV4Y2VwdGlvbikgeworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUgb2JqZWN0
IG9mIGNsYXNzIEFWT3V0cHV0Q29udGV4dCA6ICVAIiwgZXhjZXB0aW9uKTsKKyAgICB9IEBmaW5h
bGx5IHsKKyAgICAgICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOworICAgICAgICB1bmFy
Y2hpdmVyLmdldCgpLmRlbGVnYXRlID0gbmlsOworICAgIH0KKworICAgIHJldHVybiBzdWNjZXNz
OworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmNwcAppbmRleCA0NTVjZWZjOWY2ZjBkZjQx
OTY3NzhmNzUxOWZiOGJiNzFmNTVkNTIxLi4yYTJhOGQwYmNmMTY1YWQwYjIxZjVjOWQyYTg0NzE3
NzM1ZmI0Yzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlh
UGxheWJhY2tUYXJnZXRNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmNwcApAQCAtMzAsMjYgKzMwLDE4IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IE1lZGlhUGxheWJhY2tU
YXJnZXRNb2NrOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6U3RhdGUgc3RhdGUpCitSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gTWVkaWFQbGF5
YmFja1RhcmdldE1vY2s6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgTWVkaWFQbGF5YmFja1RhcmdldE1vY2sobmFtZSwgc3RhdGUpKTsKIH0KIAotTWVkaWFQbGF5
YmFja1RhcmdldE1vY2s6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKGNvbnN0IFN0cmluZyYgbmFt
ZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQotICAgIDogTWVkaWFQ
bGF5YmFja1RhcmdldCgpCi0gICAgLCBtX25hbWUobmFtZSkKLSAgICAsIG1fc3RhdGUoc3RhdGUp
CitNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6TWVkaWFQbGF5YmFja1RhcmdldE1vY2soY29uc3Qg
U3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRl
KQorICAgIDogbV9jb250ZXh0KG5hbWUsIHN0YXRlKQogewogfQogCiBNZWRpYVBsYXliYWNrVGFy
Z2V0TW9jazo6fk1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKCkgPSBkZWZhdWx0OwogCi1jb25zdCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgTWVkaWFQbGF5YmFja1RhcmdldE1vY2s6OnRhcmdl
dENvbnRleHQoKSBjb25zdAotewotICAgIG1fY29udGV4dCA9IE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0KG1fbmFtZSwgbV9zdGF0ZSk7Ci0gICAgcmV0dXJuIG1fY29udGV4dDsKLX0KLQogTWVk
aWFQbGF5YmFja1RhcmdldE1vY2sqIHRvTWVkaWFQbGF5YmFja1RhcmdldE1vY2soTWVkaWFQbGF5
YmFja1RhcmdldCogcmVwKQogewogICAgIHJldHVybiBjb25zdF9jYXN0PE1lZGlhUGxheWJhY2tU
YXJnZXRNb2NrKj4odG9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhjb25zdF9jYXN0PGNvbnN0IE1l
ZGlhUGxheWJhY2tUYXJnZXQqPihyZXApKSk7CkBAIC01Nyw3ICs0OSw3IEBAIE1lZGlhUGxheWJh
Y2tUYXJnZXRNb2NrKiB0b01lZGlhUGxheWJhY2tUYXJnZXRNb2NrKE1lZGlhUGxheWJhY2tUYXJn
ZXQqIHJlcCkKIAogY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldE1vY2sqIHRvTWVkaWFQbGF5YmFj
a1RhcmdldE1vY2soY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldCogcmVwKQogewotICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHJlcC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxh
eWJhY2tUYXJnZXQ6Ok1vY2spOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04ocmVwLT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldDo6VGFyZ2V0
VHlwZTo6TW9jayk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE1lZGlhUGxheWJhY2tU
YXJnZXRNb2NrKj4ocmVwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oCmluZGV4IGNkNDQ5YjAzYzExMzEwNjY1
Mjk0Y2I4OTI0ZGYwZTRlZWFhMTNmNGMuLjM5OGE0NTlkZTk5MmY0ZTJiNWM5OWQ5OGZmYjc0NzI4
OTY3ZjA5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQ
bGF5YmFja1RhcmdldE1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01l
ZGlhUGxheWJhY2tUYXJnZXRNb2NrLmgKQEAgLTIzLDQwICsyMywzMCBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCiAgKi8KIAotI2lmbmRlZiBNZWRpYVBsYXliYWNrVGFyZ2V0TW9ja19oCi0jZGVmaW5lIE1l
ZGlhUGxheWJhY2tUYXJnZXRNb2NrX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRl
ICJNZWRpYVBsYXliYWNrVGFyZ2V0LmgiCi0jaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayA6IHB1YmxpYyBNZWRpYVBs
YXliYWNrVGFyZ2V0IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1l
ZGlhUGxheWJhY2tUYXJnZXQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6U3RhdGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TWVkaWFQ
bGF5YmFja1RhcmdldD4gY3JlYXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpNb2NrU3RhdGUpOwogCiAgICAgdmlydHVhbCB+TWVkaWFQbGF5YmFja1RhcmdldE1v
Y2soKTsKIAotICAgIFRhcmdldFR5cGUgdGFyZ2V0VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IE1vY2s7IH0KKyAgICBUYXJnZXRUeXBlIHRhcmdldFR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBNZWRpYVBsYXliYWNrVGFyZ2V0OjpUYXJnZXRUeXBlOjpNb2NrOyB9CisgICAgY29uc3QgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldENvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2NvbnRleHQ7IH0KIAotICAgIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
JiB0YXJnZXRDb250ZXh0KCkgY29uc3QgZmluYWw7Ci0KLSAgICBib29sIGhhc0FjdGl2ZVJvdXRl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1fbmFtZS5pc0VtcHR5KCk7IH0KLSAgICBib29sIHN1
cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX25hbWUu
aXNFbXB0eSgpOyB9Ci0KLSAgICBTdHJpbmcgZGV2aWNlTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fbmFtZTsgfQotCi0gICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0
YXRlKCkgY29uc3Q7CisgICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBz
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5tb2NrU3RhdGUoKTsgfQogCiBwcm90ZWN0
ZWQ6Ci0gICAgTWVkaWFQbGF5YmFja1RhcmdldE1vY2soY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKTsKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhj
b25zdCBTdHJpbmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKTsKIAot
ICAgIFN0cmluZyBtX25hbWU7Ci0gICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRl
IG1fc3RhdGUgeyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VW5rbm93biB9OwotICAgIG11
dGFibGUgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQgbV9jb250ZXh0OworICAgIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0IG1fY29udGV4dDsKIH07CiAKIE1lZGlhUGxheWJhY2tUYXJnZXRN
b2NrKiB0b01lZGlhUGxheWJhY2tUYXJnZXRNb2NrKE1lZGlhUGxheWJhY2tUYXJnZXQqKTsKQEAg
LTY1LDUgKzU1LDMgQEAgY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldE1vY2sqIHRvTWVkaWFQbGF5
YmFja1RhcmdldE1vY2soY29uc3QgTWVkaWFQbGF5YmFja1RhcmcKIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQot
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5jcHAKaW5kZXggNDRmNDE0N2ExOTE4MDc1
NDcyZWRjM2ExMjE4OTkyN2Q3ZTkyNWVmMS4uM2IwY2E2YTc4MzcyM2Y4Zjk4ZDIyNjBhYWI2YWI1
YTU2MWVlMWM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5jcHAKQEAgLTUyLDcgKzUyLDcg
QEAgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6On5NZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyTW9jaygpCiBib29sIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpleHRlcm5hbE91
dHB1dERldmljZUF2YWlsYWJsZSgpCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlck1vY2s6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlIik7Ci0gICAgcmV0
dXJuIG1fc3RhdGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok91dHB1dERldmljZUF2
YWlsYWJsZTsKKyAgICByZXR1cm4gbV9zdGF0ZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6TW9ja1N0YXRlOjpPdXRwdXREZXZpY2VBdmFpbGFibGU7CiB9CiAKIFJlZjxNZWRpYVBsYXli
YWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6cGxheWJhY2tUYXJnZXQo
KQpAQCAtODUsMTAgKzg1LDEwIEBAIHZvaWQgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6
OnN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpCiAgICAgTE9HKE1lZGlhLCAiTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFy
Z2V0cyIpOwogCiAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3RoaXNdIHsKLSAgICAgICAg
aWYgKG1fc3RhdGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok91dHB1dERldmljZUF2
YWlsYWJsZSkKKyAgICAgICAgaWYgKG1fc3RhdGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6Ok1vY2tTdGF0ZTo6T3V0cHV0RGV2aWNlQXZhaWxhYmxlKQogICAgICAgICAgICAgYXZhaWxh
YmxlRGV2aWNlc0RpZENoYW5nZSgpOwogCi0gICAgICAgIGlmICghbV9kZXZpY2VOYW1lLmlzRW1w
dHkoKSAmJiBtX3N0YXRlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpVbmtub3duKQor
ICAgICAgICBpZiAoIW1fZGV2aWNlTmFtZS5pc0VtcHR5KCkgJiYgbV9zdGF0ZSAhPSBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpVbmtub3duKQogICAgICAgICAgICAgY3Vy
cmVudERldmljZURpZENoYW5nZSgpOwogICAgIH0pOwogfQpAQCAtMTAxLDE1ICsxMDEsMTUgQEAg
dm9pZCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6c3RvcE1vbml0b3JpbmdQbGF5YmFj
a1RhcmdldHMoKQogdm9pZCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6aW52YWxpZGF0
ZVBsYXliYWNrVGFyZ2V0cygpCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlck1vY2s6OmludmFsaWRhdGVQbGF5YmFja1RhcmdldHMiKTsKLSAgICBzZXRTdGF0ZShl
bXB0eVN0cmluZygpLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VW5rbm93bik7CisgICAg
c2V0U3RhdGUoZW1wdHlTdHJpbmcoKSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tT
dGF0ZTo6VW5rbm93bik7CiB9CiAKLXZvaWQgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6
OnNldFN0YXRlKGNvbnN0IFN0cmluZyYgZGV2aWNlTmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OlN0YXRlIHN0YXRlKQordm9pZCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6
c2V0U3RhdGUoY29uc3QgU3RyaW5nJiBkZXZpY2VOYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6TW9ja1N0YXRlIHN0YXRlKQogewogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJNb2NrOjpzZXRTdGF0ZSAtIG5hbWUgPSAlcywgc3RhdGUgPSAweCV4IiwgZGV2
aWNlTmFtZS51dGY4KCkuZGF0YSgpLCAodW5zaWduZWQpc3RhdGUpOwogCiAgICAgbV90YXNrUXVl
dWUuZW5xdWV1ZVRhc2soW3RoaXMsIHN0YXRlLCBkZXZpY2VOYW1lXSB7Ci0gICAgICAgIGlmIChk
ZXZpY2VOYW1lICE9IG1fZGV2aWNlTmFtZSAmJiBzdGF0ZSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6VW5rbm93bikgeworICAgICAgICBpZiAoZGV2aWNlTmFtZSAhPSBtX2RldmljZU5h
bWUgJiYgc3RhdGUgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6VW5r
bm93bikgewogICAgICAgICAgICAgbV9kZXZpY2VOYW1lID0gZGV2aWNlTmFtZTsKICAgICAgICAg
ICAgIGN1cnJlbnREZXZpY2VEaWRDaGFuZ2UoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
TW9jay5oCmluZGV4IGRlMDk2Y2I4ODFmODI0MjExMTY1OGI4ZDIxODM5ZjljODg1ZDRiY2UuLjNl
NzQzOTViZjE2YjhlN2M4Y2U5Zjk3MjBlNzU5NGU0ZjJjODdlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJNb2NrLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcE1vbml0b3Jp
bmdQbGF5YmFja1RhcmdldHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGludmFsaWRhdGVQbGF5YmFj
a1RhcmdldHMoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgc2V0U3RhdGUoY29uc3QgU3RyaW5nJiwg
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKTsKKyAgICB2b2lkIHNldFN0YXRlKGNv
bnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpOwogICAg
IHZvaWQgZGlzbWlzc1BvcHVwKCk7CiAKIHByaXZhdGU6CkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZh
dGU6CiAKICAgICBTdHJpbmcgbV9kZXZpY2VOYW1lOwogICAgIEdlbmVyaWNUYXNrUXVldWU8VGlt
ZXI+IG1fdGFza1F1ZXVlOwotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBt
X3N0YXRlIHsgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlVua25vd24gfTsKKyAgICBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIG1fc3RhdGUgeyBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpVbmtub3duIH07CiAgICAgYm9vbCBtX3Nob3dpbmdN
ZW51IHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRl
eCBjZTg4MWJmZTBjNmI5NmJhMWEzZmJmZjY0MTgyNjU2NDBmNzNkZTlhLi5lMjM5NzUzODIxOGQ2
NDU1N2JhZGMzYTZiYWM4OTY2MDNjNDVjYWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0
ZW50U3RhdGUoUGFnZSYgcGFnZSkKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpCiAgICAgcGFnZS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQodHJ1
ZSk7Ci0gICAgcGFnZS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGVtcHR5
U3RyaW5nKCksIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpVbmtub3duKTsKKyAgICBwYWdl
LnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoZW1wdHlTdHJpbmcoKSwgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93bik7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShWSURFTykKQEAgLTQ1MzEsMTQgKzQ1MzEsMTQgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gSW50ZXJuYWxzOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0
IFN0cmluZyYKICAgICBQYWdlKiBwYWdlID0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPnBh
Z2UoKTsKICAgICBBU1NFUlQocGFnZSk7CiAKLSAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6U3RhdGUgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VW5rbm93bjsKKyAg
ICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlID0gTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93bjsKIAogICAgIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkZXZpY2VTdGF0ZSwgImRldmljZWF2YWlsYWJsZSIpKQot
ICAgICAgICBzdGF0ZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpPdXRwdXREZXZpY2VB
dmFpbGFibGU7CisgICAgICAgIHN0YXRlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1v
Y2tTdGF0ZTo6T3V0cHV0RGV2aWNlQXZhaWxhYmxlOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKGRldmljZVN0YXRlLCAiZGV2aWNldW5hdmFpbGFibGUiKSkKLSAg
ICAgICAgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6T3V0cHV0RGV2aWNlVW5h
dmFpbGFibGU7CisgICAgICAgIHN0YXRlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1v
Y2tTdGF0ZTo6T3V0cHV0RGV2aWNlVW5hdmFpbGFibGU7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGV2aWNlU3RhdGUsICJ1bmtub3duIikpCi0gICAgICAgIHN0
YXRlID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlVua25vd247CisgICAgICAgIHN0YXRl
ID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZTo6VW5rbm93bjsKICAgICBl
bHNlCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkuY3BwCmluZGV4IGJkMTkxZTU3MWQ3MWYyMTA3ZGZmZWM1ZGZiMjRiMGQ0NDZk
Y2NlNjcuLjE4OGZiMGMzMTNmZmFmMGMyNWVjY2RhNzQ2ZDY3YzFhYzJhN2Y3ZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpCiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2Eu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oPgogI2VuZGlmCiAKQEAgLTY5
NywyMCArNjk4LDIxIEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2hvdWxkUGxh
eVRvUGxheWJhY2tUYXJnZXQoYm9vbCBzaG91bGRQbGF5KQogICAgIG1fcGxheWVyLT5zZXRTaG91
bGRQbGF5VG9QbGF5YmFja1RhcmdldChzaG91bGRQbGF5KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRp
YVBsYXllclByb3h5OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KGNvbnN0IFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXRDb250ZXh0KQordm9pZCBSZW1vdGVNZWRp
YVBsYXllclByb3h5OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0JiYgdGFyZ2V0Q29udGV4dCkKIHsKICAgICBzd2l0Y2ggKHRhcmdldENvbnRleHQu
dHlwZSgpKSB7Ci0gICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6QVZPdXRwdXRD
b250ZXh0VHlwZToKLSAgICAgICAgbV9wbGF5ZXItPnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQo
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUodGFyZ2V0Q29udGV4dC5h
dk91dHB1dENvbnRleHQoKSkpOworICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
OlR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQ6IHsKKyAgICAgICAgaWYgKHRhcmdldENv
bnRleHQuZGVzZXJpYWxpemVPdXRwdXRDb250ZXh0KCkpCisgICAgICAgICAgICBtX3BsYXllci0+
c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0
ZShXVEZNb3ZlKHRhcmdldENvbnRleHQpKSk7CiAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrOgogI2lmIFBMQVRGT1JN
KE1BQykKLSAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrVHlwZToKLSAg
ICAgICAgbV9wbGF5ZXItPnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoV2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldE1vY2s6OmNyZWF0ZSh0YXJnZXRDb250ZXh0Lm1vY2tEZXZpY2VOYW1lKCks
IHRhcmdldENvbnRleHQubW9ja1N0YXRlKCkpKTsKKyAgICAgICAgbV9wbGF5ZXItPnNldFdpcmVs
ZXNzUGxheWJhY2tUYXJnZXQoTWVkaWFQbGF5YmFja1RhcmdldE1vY2s6OmNyZWF0ZSh0YXJnZXRD
b250ZXh0LmRldmljZU5hbWUoKSwgdGFyZ2V0Q29udGV4dC5tb2NrU3RhdGUoKSkpOwogICAgICAg
ICBicmVhazsKLSNlbHNlCi0gICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9j
a1R5cGU6CiAjZW5kaWYKLSAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpOb25l
OgorICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29u
dGV4dDoKKyAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpOb25lOgog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5LmgKaW5kZXggMjRiNjY0MWFlNGY1ZjFlN2RmYzEwNTM3NDEzZjBlOWNmZDI1ZTIzZi4u
YmRhZWU4YWUwNWYxMGZhNDY1NzMzNDNmNDc5YzQyOTNkNDdkZjZjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5o
CkBAIC0xNTIsNyArMTUyLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpCiAgICAgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29s
KTsKICAgICB2b2lkIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpOwotICAgIHZv
aWQgc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dCYpOworICAgIHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmKTsKICAgICB2b2lkIG1lZGlhUGxheWVy
Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoYm9vbCkgZmluYWw7CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcAppbmRleCA5ZTZiYzk0
NjZiNTM5OWIyNGY1ODQwMDliOTAwYmQwN2QwMDgyMTE2Li5iZWQzMGUyOWNlNGI5YzVmNmFmNDAx
YWMxY2M4ZjI2ZmEyYzQ2MWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5
LmNwcApAQCAtMTA4LDcgKzEwOCwxMSBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclBy
b3h5OjphY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKFNob3VsZFBhdXNlIHNob3VsZAogCiB2b2lk
IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdl
KFN1cHBvcnRzQWlyUGxheVZpZGVvIHN1cHBvcnRzQWlyUGxheVZpZGVvLCBSZWY8V2ViQ29yZTo6
TWVkaWFQbGF5YmFja1RhcmdldD4mJiB0YXJnZXQpCiB7Ci0gICAgbV9ncHVDb25uZWN0aW9uLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OkFjdGl2
ZVZpZGVvUm91dGVEaWRDaGFuZ2Uoc3VwcG9ydHNBaXJQbGF5VmlkZW8sIHRhcmdldC0+dGFyZ2V0
Q29udGV4dCgpKSwgeyB9KTsKKyAgICBhdXRvIGNvbnRleHQgPSB0YXJnZXQtPnRhcmdldENvbnRl
eHQoKTsKKyAgICBpZiAoIWNvbnRleHQuc2VyaWFsaXplT3V0cHV0Q29udGV4dCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2dwdUNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6QWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShz
dXBwb3J0c0FpclBsYXlWaWRlbywgY29udGV4dCksIHsgfSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGVkMDc2MWU1ZTk2NjM4MmUwMDk1MzQ0
Y2I3NWY5NzVmZDllZjc3ZGQuLjk2NWFmNjNkZDAyOWE3OTY4ZGY4Y2E3OTExNDY5NWIxZTU5YjY5
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
KysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMzUyLDYg
KzM1Miw3IEBAIGRlZiBjb25kaXRpb25zX2Zvcl9oZWFkZXIoaGVhZGVyKToKICAgICAgICAgJyJJ
bnB1dE1ldGhvZFN0YXRlLmgiJzogWyJQTEFURk9STShHVEspIiwgIlBMQVRGT1JNKFdQRSkiXSwK
ICAgICAgICAgJyJMYXllckhvc3RpbmdDb250ZXh0LmgiJzogWyJQTEFURk9STShDT0NPQSkiLCBd
LAogICAgICAgICAnIkdlc3R1cmVUeXBlcy5oIic6IFsiUExBVEZPUk0oSU9TX0ZBTUlMWSkiXSwK
KyAgICAgICAgJzxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+JzogWyJFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSJdLAogICAgIH0KICAgICBpZiBub3QgaGVhZGVy
IGluIGNvbmRpdGlvbnM6CiAgICAgICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4
IGJmODhhYjYxN2JlMTIxYjRhZjdiYzRjZDNjNGZjMTk3ZGRhNTk3ODIuLjUwMzQ0MWNiNmVhMzVm
ZDNlY2FmOTY3NmY5MjY0ZDMyODEzNWIzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC00MSwxNCAr
NDEsMjMgQEAKICNpbXBvcnQgPFVJS2l0L1VJRm9udC5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dC5oPgorI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CisjZW5kaWYKKworI2lm
IFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1dlYkNv
cmVBcmd1bWVudENvZGVyc0NvY29hQWRkaXRpb25zLm1tPgorI2VuZGlmCisKICNpZiBFTkFCTEUo
QVBQTEVfUEFZKQogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9Q
YXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5oPgogI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRT
b2Z0TGluay5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1
ZGUgPFdlYktpdEFkZGl0aW9ucy9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYUFkZGl0aW9ucy5t
bT4KKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorI2ltcG9ydCA8cGFsL2Nv
Y29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIElQQyB7CkBA
IC02MDYsNCArNjE1LDUwIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQordm9pZCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxh
dGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0JiB0YXJnZXQpCit7CisgICAgaWYgKHRhcmdldC50eXBlKCkgPT0gTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCkgeworICAgICAgICBpZiAoW1BBTDo6
Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5T
U2VjdXJlQ29kaW5nKV0pCisgICAgICAgICAgICBlbmNvZGVyIDw8IHRhcmdldC5vdXRwdXRDb250
ZXh0KCk7CisgICAgfSBlbHNlIGlmICh0YXJnZXQudHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0KSB7CisgICAgICAgIGVu
Y29kZXIgPDwgdGFyZ2V0LnNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KCk7CisgICAgICAgIGVuY29k
ZXIgPDwgdGFyZ2V0Lmhhc0FjdGl2ZVJvdXRlKCk7CisgICAgfSBlbHNlCisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworfQorCitib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2Rl
ciwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGUgY29udGV4dFR5cGUsIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCit7CisgICAgQVNTRVJUKGNvbnRleHRUeXBlICE9
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrKTsKKworICAgIGlmIChjb250
ZXh0VHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250
ZXh0KSB7CisgICAgICAgIGlmICghW1BBTDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBjb25m
b3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgYXV0byBvdXRwdXRDb250ZXh0ID0gSVBDOjpkZWNvZGU8
QVZPdXRwdXRDb250ZXh0PihkZWNvZGVyLCBQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkp
OworICAgICAgICBpZiAoIW91dHB1dENvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgdGFyZ2V0ID0gV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQg
eyBXVEZNb3ZlKCpvdXRwdXRDb250ZXh0KSB9OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICBpZiAoY29udGV4dFR5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5
cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQpIHsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0
YT4gc2VyaWFsaXplZE91dHB1dENvbnRleHQ7CisgICAgICAgIGlmICghSVBDOjpkZWNvZGUoZGVj
b2Rlciwgc2VyaWFsaXplZE91dHB1dENvbnRleHQpIHx8ICFzZXJpYWxpemVkT3V0cHV0Q29udGV4
dCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBib29sIGhhc0FjdGl2ZVJv
dXRlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0FjdGl2ZVJvdXRlKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB0YXJnZXQgPSBXZWJDb3JlOjpNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dCB7IFdURk1vdmUoc2VyaWFsaXplZE91dHB1dENvbnRleHQpLCBo
YXNBY3RpdmVSb3V0ZSB9OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCAyNTVhMmNiYzZjNzdj
ZWYxZTYwNzBlYTQyMGY2YmRlOTBiMjQwYTcxLi5mNjUxMTZmZjlkNmIwM2IxYTMzMzFjZGJmMzZl
NDdkOGE0MTE4Y2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKQEAgLTI0NTcsMTcgKzI0NTcsMTcgQEAgdm9pZCBBcmd1bWVudENvZGVyPE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IE0KICAgICBib29sIGhhc1BsYXRmb3JtRGF0YSA9IHRhcmdldC5lbmNvZGluZ1JlcXVpcmVzUGxh
dGZvcm1EYXRhKCk7CiAgICAgZW5jb2RlciA8PCBoYXNQbGF0Zm9ybURhdGE7CiAKLSAgICBpbnQz
Ml90IHRhcmdldFR5cGUgPSB0YXJnZXQudHlwZSgpOwotICAgIGVuY29kZXIgPDwgdGFyZ2V0VHlw
ZTsKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZSBjb250ZXh0VHlwZSA9IHRh
cmdldC50eXBlKCk7CisgICAgZW5jb2RlciA8PCBjb250ZXh0VHlwZTsKIAogICAgIGlmICh0YXJn
ZXQuZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgpKSB7CiAgICAgICAgIGVuY29kZVBsYXRm
b3JtRGF0YShlbmNvZGVyLCB0YXJnZXQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
QVNTRVJUKHRhcmdldFR5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tUeXBl
KTsKLSAgICBlbmNvZGVyIDw8IHRhcmdldC5tb2NrRGV2aWNlTmFtZSgpOwotICAgIGVuY29kZXIg
PDwgc3RhdGljX2Nhc3Q8aW50MzJfdD4odGFyZ2V0Lm1vY2tTdGF0ZSgpKTsKKyAgICBBU1NFUlQo
Y29udGV4dFR5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2spOwor
ICAgIGVuY29kZXIgPDwgdGFyZ2V0LmRldmljZU5hbWUoKTsKKyAgICBlbmNvZGVyIDw8IHRhcmdl
dC5tb2NrU3RhdGUoKTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0JiB0YXJnZXQpCkBAIC0yNDc2LDI0ICsyNDc2LDI0IEBAIGJvb2wgQXJndW1lbnRDb2Rl
cjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBN
ZWRpYVBsCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNQbGF0Zm9ybURhdGEpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBpbnQzMl90IHRhcmdldFR5cGU7Ci0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZSh0YXJnZXRUeXBlKSkKKyAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
VHlwZSBjb250ZXh0VHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbnRleHRUeXBlKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGhhc1BsYXRmb3JtRGF0YSkKLSAgICAg
ICAgcmV0dXJuIGRlY29kZVBsYXRmb3JtRGF0YShkZWNvZGVyLCB0YXJnZXQpOworICAgICAgICBy
ZXR1cm4gZGVjb2RlUGxhdGZvcm1EYXRhKGRlY29kZXIsIGNvbnRleHRUeXBlLCB0YXJnZXQpOwog
Ci0gICAgQVNTRVJUKHRhcmdldFR5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1v
Y2tUeXBlKTsKLQotICAgIFN0cmluZyBtb2NrRGV2aWNlTmFtZTsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKG1vY2tEZXZpY2VOYW1lKSkKKyAgICBBU1NFUlQoY29udGV4dFR5cGUgPT0gTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2spOworICAgIFN0cmluZyBkZXZpY2VOYW1l
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlTmFtZSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGludDMyX3QgbW9ja1N0YXRlOworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpNb2NrU3RhdGUgbW9ja1N0YXRlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobW9j
a1N0YXRlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdGFyZ2V0ID0gTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQobW9ja0RldmljZU5hbWUsIHN0YXRpY19jYXN0PE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpTdGF0ZT4obW9ja1N0YXRlKSk7CisgICAgdGFyZ2V0ID0gTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQoZGV2aWNlTmFtZSwgbW9ja1N0YXRlKTsKKwogICAgIHJldHVy
biB0cnVlOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oCmluZGV4IDYxOTcwODc4MjUxMTU0OGI2MmYyNzE1NmJkM2Y0N2Q3MWEzMWVhYzIu
LjE1OTFiMDQ4YWE1NzE2MWI2YmE4OWVhMzZjNDM3Zjc3NjQ1Y2U0NGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC01NCw2ICs1NCwxMCBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvQ3VybFByb3h5U2V0dGluZ3MuaD4KICNlbmRpZgogCisjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0Lmg+CisjZW5kaWYKKwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCiAjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
Q0RNSW5zdGFuY2VTZXNzaW9uLmg+CkBAIC0xOTUsMTAgKzE5OSw2IEBAIHN0cnVjdCBQYXN0ZWJv
YXJkV2ViQ29udGVudDsKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKICNlbmRp
ZgogCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLWNsYXNzIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OwotI2VuZGlmCi0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQog
c3RydWN0IE1lZGlhQ29uc3RyYWludHM7CiAjZW5kaWYKQEAgLTY0NCw3ICs2NDQsNyBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYpOwogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0Jik7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImLCBj
b25zdCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYpOwotICAgIHN0YXRpYyBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYsIFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Jik7CisgICAgc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiwgV2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGUsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0Jik7CiB9OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCmluZGV4IDE4NmI3YmIyZGI2ZmM0ZTJiYzEz
M2Y3MTc1Y2NmOWMzNzYzODkyMzAuLjkyNWY1YTRkNWE0ODhkNDg4NDA0ZWM2Mjk1MmQ4YTI0OWEz
ZjAwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1l
bnRDb2RlcnNNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1
bWVudENvZGVyc01hYy5tbQpAQCAtNDIsMTIgKzQyLDYgQEAKICNpbXBvcnQgPHd0Zi9NYWNoU2Vu
ZFJpZ2h0Lmg+CiAjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KIAotI2lmIEVOQUJMRShX
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0jaW1wb3J0IDxXZWJDb3JlL01lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0Lmg+Ci0jaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KLSNpbXBvcnQgPHBhbC9j
b2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBJUEMgewog
CiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNh
dGVJbmZvKQpAQCAtNDAzLDI5ICszOTcsNiBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZQogCiAj
ZW5kaWYKIAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0KLXZvaWQgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29kZVBs
YXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dCYgdGFyZ2V0KQotewotICAgIGlmIChbUEFMOjpnZXRBVk91dHB1dENvbnRl
eHRDbGFzcygpIGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woTlNTZWN1cmVDb2RpbmcpXSkK
LSAgICAgICAgZW5jb2RlciA8PCB0YXJnZXQuYXZPdXRwdXRDb250ZXh0KCk7Ci19Ci0KLWJvb2wg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29k
ZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dCYgdGFyZ2V0KQotewotICAgIGlmICghW1BBTDo6Z2V0QVZPdXRwdXRDb250ZXh0
Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5nKV0pCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gY29udGV4dCA9IElQQzo6ZGVjb2RlPEFW
T3V0cHV0Q29udGV4dD4oZGVjb2RlciwgUEFMOjpnZXRBVk91dHB1dENvbnRleHRDbGFzcygpKTsK
LSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHRhcmdldCA9
IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IHsgY29udGV4dC0+Z2V0KCkgfTsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotI2VuZGlmCi0KICNpZiBFTkFCTEUoVklERU8pCiB2b2lk
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPjo6
ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlNlcmlh
bGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZSYgdmFsdWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA3MGZlYWEwOTMyMmQ2NTQwMmE3OTNjODJhZmI5M2Fm
YjVkMGI1YmI3Li40NWUwM2Y0ZWJkMGJlNDQ2ZGFhN2E4YzY5ZTUxNWJmNmU5NzQwODA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTc4NDQsMTQgKzc4NDQs
NiBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIG1lZGlhUmVsYXRlZElPS2l0
Q2xhc3NlcygpCiAgICAgfSk7CiAgICAgcmV0dXJuIHNlcnZpY2VzOwogfQotCi1zdGF0aWMgY29u
c3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIHRlbXBvcmFyeU1hY2hTZXJ2aWNlcygpCi17Ci0gICAg
c3RhdGljIGNvbnN0IGF1dG8gc2VydmljZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPEFT
Q0lJTGl0ZXJhbD4gewotICAgICAgICAiY29tLmFwcGxlLmNvcmVtZWRpYS5yb3V0aW5nY29udGV4
dC54cGMiX3MgLy8gUmVtb3ZlIGFmdGVyIDxyZGFyOi8vNzY0MDMzMDI+IGlzIGZpeGVkLgotICAg
IH0pOwotICAgIHJldHVybiBzZXJ2aWNlczsKLX0KICNlbmRpZgogCiBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94
eSYgcHJvY2VzcywgRHJhd2luZ0FyZWFQcm94eSYgZHJhd2luZ0FyZWEsIFJlZlB0cjxBUEk6Oldl
YnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9saWNpZXMpCkBAIC03OTQ3LDkgKzc5MzksNiBAQCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJz
KFdlYlByb2Nlc3NQcm94eSYgcHJvYwogICAgICAgICAvLyBGSVhNRSgyMDc3MTYpOiBUaGUgZm9s
bG93aW5nIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gdGhlIEdQVSBwcm9jZXNzIGlzIGNvbXBsZXRl
LgogICAgICAgICBwYXJhbWV0ZXJzLm1lZGlhRXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKG1lZGlhUmVsYXRlZE1hY2hTZXJ2aWNl
cygpLCBXVEY6Om51bGxvcHQpOwogICAgICAgICBwYXJhbWV0ZXJzLm1lZGlhSU9LaXRFeHRlbnNp
b25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0ZvcklPS2l0Q2xhc3NF
eHRlbnNpb25zKG1lZGlhUmVsYXRlZElPS2l0Q2xhc3NlcygpLCBXVEY6Om51bGxvcHQpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIC8vIEZJWE1FKDIyNDMyNyk6IFJlbW92ZSB0aGlzIGVsc2UgY2xh
dXNlIG9uY2UgPHJkYXI6Ly83NjQwMzMwMj4gaXMgZml4ZWQuCi0gICAgICAgIHBhcmFtZXRlcnMu
bWVkaWFFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zv
ck1hY2hMb29rdXAodGVtcG9yYXJ5TWFjaFNlcnZpY2VzKCksIFdURjo6bnVsbG9wdCk7CiAgICAg
fQogCiAgICAgaWYgKCFwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JNZWRpYUVuYWJsZWQo
KQpAQCAtOTQxNSw3ICs5NDA0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1vY2tNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgcGFnZUNsaWVudCgp
Lm1lZGlhU2Vzc2lvbk1hbmFnZXIoKS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVu
YWJsZWQoZW5hYmxlZCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZXRNb2NrTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQordm9pZCBXZWJQYWdlUHJveHk6OnNl
dE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKQogewog
ICAgIHBhZ2VDbGllbnQoKS5tZWRpYVNlc3Npb25NYW5hZ2VyKCkuc2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJTdGF0ZShuYW1lLCBzdGF0ZSk7CiB9CkBAIC05NDMwLDcgKzk0MTksMTIg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBsYXliYWNrVGFyZ2V0KFBsYXliYWNrVGFyZ2V0Q2xp
ZW50Q29udGV4dElkZW50aWZpZXIgY29udGUKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBsYXliYWNr
VGFyZ2V0U2VsZWN0ZWQoY29udGV4dElkLCB0YXJnZXQtPnRhcmdldENvbnRleHQoKSkpOworICAg
IGF1dG8gY29udGV4dCA9IHRhcmdldC0+dGFyZ2V0Q29udGV4dCgpOworICAgIEFTU0VSVChjb250
ZXh0LnR5cGUoKSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6U2VyaWFsaXpl
ZEFWT3V0cHV0Q29udGV4dCk7CisgICAgaWYgKHByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0Zv
ck1lZGlhRW5hYmxlZCgpKQorICAgICAgICBjb250ZXh0LnNlcmlhbGl6ZU91dHB1dENvbnRleHQo
KTsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQo
Y29udGV4dElkLCBjb250ZXh0KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpleHRlcm5hbE91
dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJ
ZGVudGlmaWVyIGNvbnRleHRJZCwgYm9vbCBhdmFpbGFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IGI4NTMzY2JjNzQzYWY5YWY1NDIwNTUzZTgzN2FlNzFiMDY4
NzFjYjEuLmZmZDBlN2I1ODY0MmY1M2I0ZWE3NjgyNDEyNTNkNzdjNDg2ZjQ3YzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC05NCw3ICs5NCw2IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9MYXlvdXRQb2ludC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGF5b3V0U2l6ZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbS5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhUHJvZHVjZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50Lmg+CkBAIC0xMjksNiArMTI4LDEw
IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CisjZW5kaWYKKwogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiR2VzdHVyZVR5cGVzLmgiCiAjaW5jbHVkZSAiV2Vi
QXV0b2NvcnJlY3Rpb25Db250ZXh0LmgiCkBAIC0xNTY3LDcgKzE1NzAsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRD
bGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgYm9vbCBo
YXNWaWRlbyk7CiAgICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tlckNsaWVudFN0YXRlRGlkQ2hh
bmdlKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIFdlYkNv
cmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyk7CiAgICAgdm9pZCBzZXRNb2NrTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCk7Ci0gICAgdm9pZCBzZXRNb2NrTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgdm9pZCBzZXRNb2NrTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6Ok1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpOwogICAgIHZvaWQgbW9ja01lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsKIAogICAgIC8vIFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXJDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgppbmRleCAyY2FjM2YxY2IwNWQxY2Q3YjVmNzcxZWUxMmMwZTcyOWUxZjFkOGNmLi43
ZTk4YjA4OGQ5MjJlZTExNDQ5NzMwYTBlNTU4MTJiZTI2NDQ3NTM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC00NzYsNyArNDc2
LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBTaG93UGxheWJhY2tUYXJnZXRQ
aWNrZXIoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBjb250
ZXh0SWQsIFdlYkNvcmU6OkZsb2F0UmVjdCBwaWNrZXJMb2NhdGlvbiwgYm9vbCBoYXNWaWRlbykK
ICAgICBQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudFN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlBs
YXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCB1bnNpZ25lZCBt
ZWRpYVN0YXRlKQogICAgIFNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChi
b29sIGVuYWJsZWQpCi0gICAgU2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShT
dHJpbmcgbmFtZSwgdW5zaWduZWQgcGlja2VyU3RhdGUpCisgICAgU2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJTdGF0ZShTdHJpbmcgbmFtZSwgZW51bTp1aW50OF90IFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgcGlja2VyU3RhdGUpCiAgICAgTW9j
a01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lv
cy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwCmluZGV4IDJhYjVmOTEzY2RlODNjZWRjNTRh
N2E4ZmUwZWUwOTUzYmNlNDQ5NWIuLjQ4NjJhZjc2NDU2N2Q2YmY2YWZmNjhkMjg3OGY4Zjk0ZTE5
NThmMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9z
L1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcApAQCAtODEsMTIg
KzgxLDExIEBAIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpwcm92aWRlUHJlc2VudGlu
Z0FwcGxpY2F0aW9uUElEKGludCBwaWQpCiAKIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
OjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFN1cHBvcnRzQWlyUGxheVZpZGVvIHN1cHBvcnRz
QWlyUGxheVZpZGVvLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmIHRhcmdldENvbnRleHQp
CiB7Ci0gICAgaWYgKHRhcmdldENvbnRleHQudHlwZSgpICE9IE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpBVk91dHB1dENvbnRleHRUeXBlKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIEFTU0VSVCh0YXJnZXRDb250ZXh0LnR5cGUoKSAhPSBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0KTsKKyAgICBpZiAodGFyZ2V0Q29udGV4
dC50eXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29u
dGV4dCkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bkhlbHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShzdXBwb3J0c0FpclBsYXlWaWRlbywg
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUodGFyZ2V0Q29udGV4dC5h
dk91dHB1dENvbnRleHQoKSkpOworICAgIFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0
aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShzdXBwb3J0c0FpclBsYXlWaWRlbywgV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUoV1RGTW92ZSh0YXJnZXRDb250ZXh0KSkpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGJjYzRjMTdhYzI5NTIxMmNiYTY0ZGVk
ZDFjOWIzYTkwNmNhMDUxMDEuLjVmYzg1NTYzNzYwZWE3NWVjMTJlZDE0YTllMjczNjgxZjI1MWMw
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xMzUyLDcgKzEzNTIsNyBAQCB2b2lkIFdl
YkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJv
b2wgZW5hYmxlZCkKICAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRN
b2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoZW5hYmxlZCkpOwogfQogCi12b2lk
IFdlYkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShj
b25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0
ZSkKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
clN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1v
Y2tTdGF0ZSBzdGF0ZSkKIHsKICAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKG5hbWUsIHN0YXRlKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggNjgxMmU2NDJmZWNkY2FhN2IxZjUxZmUwNzEyNTgwYTdk
NDJjNGVmMC4uNTZjZjZiOTJlZDlhMTAzNmRiZDdkMDY0ODYzYzRlNzY4MTQyY2RlZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaApAQCAtMzc4LDcgKzM3OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzaG93
UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29sKSBmaW5hbDsKICAgICB2
b2lkIHBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6UGxh
eWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQcm9kdWNl
cjo6TWVkaWFTdGF0ZUZsYWdzKSBmaW5hbDsKICAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyRW5hYmxlZChib29sKSBmaW5hbDsKLSAgICB2b2lkIHNldE1vY2tNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKSBmaW5hbDsKKyAgICB2b2lkIHNldE1vY2tNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSkgZmluYWw7CiAgICAgdm9pZCBtb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCgpIGZpbmFsOwogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBhZWIyNWRhYjg0MjA2
ODRhOTUwMjM4NmFiZjgzYWU2YmUzOGNlOTg2Li4xZTYzMzc5Y2FmODc3YjU5MjY2YmZjNzAzNzA5
MTYwMDk2MDM2ZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCkBAIC0xNzkxLDcgKzE3OTEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0U2hvdWxkRGlz
cGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKGJvb2wgZGlzcGF0Y2gpIHsgbV9zaG91bGREaXNwYXRj
aEZha2VNb3VzZU1vdmVFdmVudHMgPSBkaXNwYXRjaDsgfQogCiAjaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCBwbGF5
YmFja1RhcmdldFNlbGVjdGVkKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiBvdXRw
dXREZXZpY2UpIGNvbnN0OworICAgIHZvaWQgcGxheWJhY2tUYXJnZXRTZWxlY3RlZChXZWJDb3Jl
OjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dCYmKSBjb25zdDsKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0QXZh
aWxhYmlsaXR5RGlkQ2hhbmdlKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElk
ZW50aWZpZXIsIGJvb2wpOwogICAgIHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQo
V2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgYm9vbCk7CiAg
ICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tlcldhc0Rpc21pc3NlZChXZWJDb3JlOjpQbGF5YmFj
a1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggNzRkYTYzNTc4ODJjZDAx
MzAyMDg0MDk3ZjA2NGQyMWMzYjkxNWQwNC4uNjJlNzk4ZmU0Y2Q1ZDcwYjliMjNmMDA4NjdiNThk
YTRhMjc1OGYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0KQEAgLTM1LDcgKzM1LDYgQEAKICNpbXBvcnQgIkZvbnRJbmZvLmgi
CiAjaW1wb3J0ICJGcmFtZUluZm9EYXRhLmgiCiAjaW1wb3J0ICJJbmplY3RlZEJ1bmRsZUhpdFRl
c3RSZXN1bHQuaCIKLSNpbXBvcnQgIlBERktpdFNvZnRMaW5rLmgiCiAjaW1wb3J0ICJQREZQbHVn
aW4uaCIKICNpbXBvcnQgIlBhZ2VCYW5uZXIuaCIKICNpbXBvcnQgIlBsdWdpblZpZXcuaCIKQEAg
LTk5LDkgKzk4LDEyIEBACiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQog
I2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVk
aWFQbGF5YmFja1RhcmdldE1vY2suaD4KICNlbmRpZgogCisjaW1wb3J0ICJQREZLaXRTb2Z0TGlu
ay5oIgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBA
IC0xMDQyLDE2ICsxMDQ0LDE3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkVXBkYXRlUmVuZGVyaW5nKCkK
IH0KIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJ
T1NfRkFNSUxZKQotdm9pZCBXZWJQYWdlOjpwbGF5YmFja1RhcmdldFNlbGVjdGVkKFBsYXliYWNr
VGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBjb25zdCBXZWJDb3JlOjpN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0Q29udGV4dCkgY29uc3QKK3ZvaWQgV2Vi
UGFnZTo6cGxheWJhY2tUYXJnZXRTZWxlY3RlZChQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJ
ZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQm
JiB0YXJnZXRDb250ZXh0KSBjb25zdAogewogICAgIHN3aXRjaCAodGFyZ2V0Q29udGV4dC50eXBl
KCkpIHsKLSAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpBVk91dHB1dENvbnRl
eHRUeXBlOgotICAgICAgICBtX3BhZ2UtPnNldFBsYXliYWNrVGFyZ2V0KGNvbnRleHRJZCwgV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUodGFyZ2V0Q29udGV4dC5hdk91
dHB1dENvbnRleHQoKSkpOworICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5
cGU6OkFWT3V0cHV0Q29udGV4dDoKKyAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0OgorICAgICAgICBtX3BhZ2UtPnNldFBs
YXliYWNrVGFyZ2V0KGNvbnRleHRJZCwgTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUo
V1RGTW92ZSh0YXJnZXRDb250ZXh0KSkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrVHlwZToKLSAgICAgICAgbV9wYWdlLT5zZXRQbGF5
YmFja1RhcmdldChjb250ZXh0SWQsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpj
cmVhdGUodGFyZ2V0Q29udGV4dC5tb2NrRGV2aWNlTmFtZSgpLCB0YXJnZXRDb250ZXh0Lm1vY2tT
dGF0ZSgpKSk7CisgICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6TW9j
azoKKyAgICAgICAgbV9wYWdlLT5zZXRQbGF5YmFja1RhcmdldChjb250ZXh0SWQsIE1lZGlhUGxh
eWJhY2tUYXJnZXRNb2NrOjpjcmVhdGUodGFyZ2V0Q29udGV4dC5kZXZpY2VOYW1lKCksIHRhcmdl
dENvbnRleHQubW9ja1N0YXRlKCkpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6Tm9uZToKKyAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpUeXBlOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBiODliMjY2YzNkNzlhY2QyNDFk
ZjM2YjVmY2UyZjFkMmVkOGRiNzQ4Li5mM2Q0NzE2YTg5MzNkOWYyNDJmOGVmMTIxNWE4NjYyMzQw
Zjg5N2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMjQzLDcgKzI0Myw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRD
bGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29sIC8q
IGhhc1ZpZGVvICovKSBmaW5hbDsKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50
U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRp
ZmllciwgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKSBmaW5hbDsKICAg
ICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sKSBmaW5h
bDsKLSAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3Qg
U3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKSBmaW5h
bDsKKyAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3Qg
U3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSkg
ZmluYWw7CiAgICAgdm9pZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1
cCgpIG92ZXJyaWRlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQppbmRleCBiMzRlOGQ5ZDhl
ZTkxNWM2MWEwYzQ5ZmY0MGUyZDY2ZmVkMjRhMDRlLi5jOTY0ODNmZjk2ZWI3ZmQ4Y2MxOTUyN2Mz
NTQ1ZDliODNiMTRhOWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC0xMTI5LDcgKzExMjksNyBA
QCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJF
bmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBbbV93ZWJWaWV3IF9zZXRNb2NrTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlckVuYWJsZWQ6ZW5hYmxlZF07CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50
OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQordm9pZCBXZWJDaHJv
bWVDbGllbnQ6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKQog
ewogICAgIFttX3dlYlZpZXcgX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTmFtZTpu
YW1lIHN0YXRlOnN0YXRlXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgKaW5kZXggMGI5
MjM4MzVlOWUxNWI2YjgwNDViNDlhZmUyOWU2YWFiMDNlY2ZjYS4uOGNhMzI5NDdhNWI0NmUwNjdi
OGU4YmFlNDQ2MzkzZWJiOTBlODZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgKQEAg
LTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
KFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYsIGJvb2wgaGFzVmlkZW8pOwogICAgIHZvaWQgcGxheWJhY2tUYXJn
ZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxh
Z3MpOwogICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJv
b2wpOwotICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25z
dCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpOwor
ICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJp
bmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKTsKICAg
ICB2b2lkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCk7CiAKICAg
ICB2b2lkIGludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbQppbmRleCA3
MzQ0MzU2NzVhYjgwOWI1MGVjNWVmMzhhYjlmNzdjYTE0OGIzMWYxLi43ZGJkNTg5NDc1NDA1YTE2
ZWJkZDBmYTliY2ZhNjJjMzM3ZTc0MTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1t
CkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6c2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wKICAgICBXZWJDb3JlOjpX
ZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWQoKS5zZXRNb2NrTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlckVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKLXZvaWQgV2ViTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJp
bmcmIG5hbWUsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0
ZSkKK3ZvaWQgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6c2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCiB7CiAgICAgV2ViQ29yZTo6V2Vi
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkKCkuc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJTdGF0ZShuYW1lLCBzdGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KaW5kZXggNWIwZWU4YTNhYzhjMzMzYjZlZTM0NGNkZDljM2I1NTc2NWMy
NmZmMC4uNDkyYWY2MDFjZjdhYzRkZjQ2NDUwYjA4YWFhNWMzMjBlYTJlNmU3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtOTIzMiw3ICs5MjMyLDcg
QEAgYm9vbCBMYXllckZsdXNoQ29udHJvbGxlcjo6Zmx1c2hMYXllcnMoKQogICAgIFtzZWxmIF9k
ZXZpY2VQaWNrZXJdLT5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoZW5h
YmxlZCk7CiB9CiAKLS0gKHZvaWQpX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTmFt
ZTooTlNTdHJpbmcgKiluYW1lIHN0YXRlOihXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6U3RhdGUpc3RhdGUKKy0gKHZvaWQpX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyTmFtZTooTlNTdHJpbmcgKiluYW1lIHN0YXRlOihXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6TW9ja1N0YXRlKXN0YXRlCiB7CiAgICAgW3NlbGYgX2RldmljZVBpY2tlcl0t
PnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUobmFtZSwgc3RhdGUpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJu
YWwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgK
aW5kZXggM2FlMGQzYWEyNjJkOTUyMzMwYzFjODJjMzI1NTBkOWEyMWE1MDE0Zi4uMDRiOGMzNjhj
Y2FmODUyNGQwODU5MzcyZDYwNThmNDhmMTdhNmYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCkBAIC0zMjcsNyArMzI3LDcgQEAg
V2ViTGF5b3V0TWlsZXN0b25lcyBraXRMYXlvdXRNaWxlc3RvbmVzKE9wdGlvblNldDxXZWJDb3Jl
OjpMYXlvdXRNaWxlc3RvbmU+KTsKIC0gKHZvaWQpX3Nob3dQbGF5YmFja1RhcmdldFBpY2tlcjoo
V2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciljb250ZXh0SWQg
bG9jYXRpb246KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jilsb2NhdGlvbiBoYXNWaWRlbzooQk9P
TCloYXNWaWRlbzsKIC0gKHZvaWQpX3BsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVEaWRD
aGFuZ2U6KFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIpY29u
dGV4dElkIHN0YXRlOihXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3Mpc3Rh
dGU7CiAtICh2b2lkKV9zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQ6KGJv
b2wpZW5hYmxlZDsKLS0gKHZvaWQpX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTmFt
ZTooTlNTdHJpbmcgKiluYW1lIHN0YXRlOihXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6U3RhdGUpc3RhdGU7CistICh2b2lkKV9zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlck5hbWU6KE5TU3RyaW5nICopbmFtZSBzdGF0ZTooV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ6Ok1vY2tTdGF0ZSlzdGF0ZTsKIC0gKHZvaWQpX21vY2tNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwOwogI2VuZGlmCiAK
</data>
<flag name="commit-queue"
          id="446512"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426272</attachid>
            <date>2021-04-16 14:28:22 -0700</date>
            <delta_ts>2021-04-16 15:54:25 -0700</delta_ts>
            <desc>[fast-cq] Rebase the patch again for landing</desc>
            <filename>bug-224469-20210416142821.patch</filename>
            <type>text/plain</type>
            <size>85001</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTI3YWFkYTM4YjhlMmY4
YzRmYTVjM2JjNjM4OTY1N2YwZDEwZmYwMS4uYjUyZGUzNGJmY2ZkNDNmMTI3YjFjNDNlY2E1MGJj
ZmUwOTRhMjVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDIxLTA0LTE2ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIFdlYkNvbnRlbnQg
cHJvY2VzcyBzaG91bGQgbm90IGNyZWF0ZSBBVk91dHB1dENvbnRleHQgaW5zdGFuY2VzIHdoZW4g
bWVkaWEgaW4gR1BVIFByb2Nlc3MgaXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBDYXJsc29uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbW9kaWZpZXMgYE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0YCB0byBwcm92aWRlIGludGVyZmFjZXMgdG8gc2VyaWFsaXplL2Rlc2VyaWFs
aXplCisgICAgICAgIGBBVk91dHB1dENvbnRleHRgIGFuZCBtb2RpZmllcyBgTWVkaWFQbGF5YmFj
a1RhcmdldENvY29hYCB0byB1c2UgYE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0YCB0bworICAg
ICAgICBtYW5hZ2UgaXRzIGBBVk91dHB1dENvbnRleHRgIGluc3RlYWQgb2Yga2VlcGluZyBhIHBv
aW50ZXIgdG8gdGhlIGBBVk91dHB1dENvbnRleHRgIG9iamVjdC4KKyAgICAgICAgV2l0aCB0aGVz
ZSBjaGFuZ2VzLCBhIFdlYkNvbnRlbnQgcHJvY2VzcyBjYW4gZm9yd2FyZCBhIHNlcmlhbGl6ZWQg
YEFWT3V0cHV0Q29udGV4dGAgb2JqZWN0CisgICAgICAgIHRvIG90aGVyIHByb2Nlc3NlcyAoZS5n
LiwgdGhlIEdQVSBwcm9jZXNzKSB3aXRob3V0IGRlc2VyaWFsaXppbmcgaXQuIFRoZXJlZm9yZSwg
dGhlIFdlYkNvbnRlbnQKKyAgICAgICAgcHJvY2VzcyBkb2VzIG5vdCBuZWVkIGFjY2VzcyB0byB0
aGUgQ29yZU1lZGlhIHJvdXRpbmcgc2VydmljZS4gU28gd2UgY2FuIHJlbW92ZSB0aGUgZml4IChy
Mjc1NjY5KQorICAgICAgICBmb3IgYnVnIDIyNDMyOC4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4
aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lv
bk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSk6CisgICAgICAgICogTW9kdWxl
cy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaDoKKworICAgICAgICAqIEhlYWRlcnMu
Y21ha2U6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIE1vZGlmeSB0aGUgcHJvamVjdCBmaWxl
IGJlY2F1c2UgYE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0YCBpcyB1c2VkIGluIENvY29hIHBv
cnRzIG9ubHkuCisKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRl
KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSk6CisgICAgICAgICogcGFnZS9QYWdl
Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0OjpoYXNBY3RpdmVSb3V0ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0OjpkZXZpY2VOYW1l
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQ6OnN1cHBvcnRz
UmVtb3RlVmlkZW9QbGF5YmFjayk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJn
ZXRDb2NvYS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpv
dXRwdXRDb250ZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjp+TWVkaWFQbGF5YmFj
a1RhcmdldENvY29hKToKKyAgICAgICAgKFdlYkNvcmU6OnRvTWVkaWFQbGF5YmFja1RhcmdldENv
Y29hKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6c3VwcG9y
dHNSZW1vdGVWaWRlb1BsYXliYWNrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6dGFyZ2V0Q29udGV4dCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6Omhhc0FjdGl2ZVJv
dXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXRDb2NvYTo6ZGV2aWNlTmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIERvbid0IGRpcmVj
dGx5IHVzZSBgQVZPdXRwdXRDb250ZXh0YCBpbiB0aGlzIGNsYXNzLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0V2ly
ZWxlc3NQbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCk6CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6bW9ja1N0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpvdXRwdXRDb250ZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpzZXJpYWxpemVkT3V0
cHV0Q29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6ZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW06IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpkZXZpY2VOYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpoYXNBY3RpdmVSb3V0ZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6c3VwcG9ydHNSZW1vdGVWaWRlb1Bs
YXliYWNrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0OjpzZXJpYWxpemVPdXRwdXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpkZXNlcmlhbGl6ZU91dHB1dENvbnRleHQpOgorCisgICAgICAg
ICogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayk6Cisg
ICAgICAgIChXZWJDb3JlOjp0b01lZGlhUGxheWJhY2tUYXJnZXRNb2NrKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjp0YXJnZXRDb250ZXh0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmg6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6c3RhdGUgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OmV4
dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OmludmFs
aWRhdGVQbGF5YmFja1RhcmdldHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlck1vY2s6OnNldFN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmg6CisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRNb2NrTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlclN0YXRlKToKKwogMjAyMS0wNC0xNiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbW92ZSByZWR1bmRhbnQgcmVuZGVyT2JqZWN0IGluIEJyZWFr
aW5nQ29udGV4dDo6aGFuZGxlVGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2NDcxNzZkMTk3ZTMxNWJhMTUwNjlk
ODI1NjcyMjg4M2FlNjVhMWQwLi5mYWE4Nzc5NDA0MDRmZTlmODE5MTdlODQyYjI3ZjQxOTgyYmFk
NWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIxLTA0LTE2ICBQZW5nIExpdSAgPHBl
bmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIFdlYkNvbnRlbnQgcHJvY2VzcyBz
aG91bGQgbm90IGNyZWF0ZSBBVk91dHB1dENvbnRleHQgaW5zdGFuY2VzIHdoZW4gbWVkaWEgaW4g
R1BVIFByb2Nlc3MgaXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI0NDY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29u
LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6IEZpeCBjbGVhbiBidWls
ZCBmYWlsdXJlcyBvbiB0aGUgV2luQ2Fpcm8gcG9ydC4KKworICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhUGxheWVyUHJveHk6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oOgorCisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6YWN0aXZlVmlk
ZW9Sb3V0ZURpZENoYW5nZSk6CisKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjplbmNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENv
ZGVyc01hYy5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dD46OmVuY29kZVBsYXRmb3JtRGF0YSk6IERlbGV0ZWQuCisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOiBEZWxldGVkLgorCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1lZGlhUmVsYXRlZElPS2l0Q2xh
c3Nlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRNb2NrTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlclN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQbGF5
YmFja1RhcmdldCk6CisgICAgICAgIChXZWJLaXQ6OnRlbXBvcmFyeU1hY2hTZXJ2aWNlcyk6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdl
KToKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlclN0YXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQgY29uc3Qp
OgorCiAyMDIxLTA0LTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgRGlzYWJsZSBBcHBsaWNhdGlvbkNhY2hlIHdpdGggbGlua2VkT25PckFm
dGVyIGNoZWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggOWIzYzQ3ZTU4ZjQ4ZTY5
MTFhZWY1ZDg1MjQxMTM4Mjc3NjliNzkzNS4uYjc0MTM2MDBiYmE5YzI4YzY4Y2Y1NzRkZjZiMGQ4
ZWI0MTRmYjUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDIxLTA0LTE2ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAg
W0dQVVBdIFdlYkNvbnRlbnQgcHJvY2VzcyBzaG91bGQgbm90IGNyZWF0ZSBBVk91dHB1dENvbnRl
eHQgaW5zdGFuY2VzIHdoZW4gbWVkaWEgaW4gR1BVIFByb2Nlc3MgaXMgZW5hYmxlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDY5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlclN0YXRlKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXIuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXIubW06CisgICAgICAgIChXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpzZXRNb2NrTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcu
bW06CisgICAgICAgICgtW1dlYlZpZXcgX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
TmFtZTpzdGF0ZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgorCiAy
MDIxLTA0LTE1ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3NjEwNy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4
IGUxMTUwNWNkZDBmOGU0M2IyODczZGI3YTFkNTgxZjhkZjk4NGZlYjMuLmMwNGY4MDRlZDkzN2M2
NzBhZGVmN2IzYjY4OWQ4OTVkZmE3ZTdiMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTI2OSw3
ICsxMjY5LDYgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL01JTUVUeXBlQ2FjaGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWJhY2tUYXJnZXQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tU
YXJnZXRDbGllbnQuaAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKaW5kZXggNmM2YWIwZTdh
NjJlYzRkYTQ1ZWQzZGJjOTQxNDU1MTc1Y2Q0NGQ1YS4uZDViNTk1YTRhYzQ5ZmYwZWZmZTYyYjQ1
MmVjMzQyYjdkMzgzMDQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJw
bGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcApAQCAtMTYxLDcgKzE2MSw3IEBA
IHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJFbmFibGVkKGJvb2wgZW5hYmxlCiAgICAgbV9tb2NrUGlja2VyRW5hYmxlZCA9IGVuYWJs
ZWQ7CiB9CiAKLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCiB7CiAgICAgQUxXQVlT
X0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fKTsKICAgICBtb2NrUGlja2VyKCkuc2V0
U3RhdGUobmFtZSwgc3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
aXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgKaW5kZXggZDdmMjhjY2I3NWU1ZDc1NWRh
ZjQzMzRlZjY1NmNiMTQxOTBmYWI1NC4uMWJhMTI4NGYyMzMzYzc4NDZhYjgwZDRlMTFkYjJiZjRm
MDIwNjZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkv
V2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgV2ViTWVkaWFTZXNzaW9uTWFuYWdlciYgc2hhcmVkKCk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
RW5hYmxlZChib29sKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1vY2tNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OlN0YXRlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1vY2tNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6Ok1vY2tTdGF0ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb2NrTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUGxh
eWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBhZGRQbGF5YmFja1RhcmdldFBpY2tl
ckNsaWVudChXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiwgUGxheWJhY2tUYXJnZXRDbGll
bnRDb250ZXh0SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA4MjdjNTRk
YTg5Y2VkZmU0OWZlZmNmNWY2ZTY5NjdlM2E4MzcyY2M5Li4yYTI0YzJjNzRjMWY2OTg1OTVmNTJh
NWNmM2MzOWM2ZjQ5Zjc3MzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM2OSw2ICsz
NjksNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvSW50UmVjdENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNv
bmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dC5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiY2M4ZDI0ZGE5NTNjODkwNWViYjgwODFmNTFhOTBi
ZDU4MmNmYjgzLi5jMjkyNTRkZDYyNWQ1OTNhZjI1YzEyNGRmNWQ4MmU3OTFmZThiOTk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC02OTgxLDYgKzY5ODEsNyBAQAogCQkxRDAwMjZBMzIzNzRENjI0MDBDQTZDREYgLyogSlNQaWN0
dXJlSW5QaWN0dXJlV2luZG93LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTUGljdHVyZUluUGljdHVyZVdpbmRvdy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFEMDAyNkE4MjM3NEY5RDkwMENBNkNERiAvKiBKU0VudGVyUGljdHVyZUluUGljdHVy
ZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRW50ZXJQaWN0dXJl
SW5QaWN0dXJlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUQwMDI2QTky
Mzc0RjlEOTAwQ0E2Q0RGIC8qIEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFbnRlclBpY3R1cmVJblBpY3R1cmVF
dmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFEMDA4QUE1MjYyMTA4QzAw
MEVFM0FERSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxRDJDODJCNjIzNkEzRjZBMDA1NUQ2QzUgLyogUGljdHVyZUluUGljdHVyZVN1
cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGljdHVyZUluUGljdHVyZVN1cHBvcnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUQ0NzY1OEQyNUNDQTc3ODAwN0FGMzEyIC8qIEltYWdl
RGVjb2RlcklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VEZWNvZGVySWRlbnRpZmll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxREFCMzExMzI1MUQ3MjVDMDBGQzk0
ODUgLyogVmlkZW9MYXllck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9MYXllck1hbmFn
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2OTcwLDcgKzI2OTcxLDYgQEAK
IAkJCQlDRERFMDJFOTE4QjNERkM3MDBDRjdGRjEgLyogTGVnYWN5Q0RNU2Vzc2lvbi5oICovLAog
CQkJCTA3RTNERkQwMUE5RTc4NjUwMDc2NENBOCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0LmggKi8s
CiAJCQkJMDc5MjE2NTMxQUE1NjBBQTAwQTNDMDQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDbGll
bnQuaCAqLywKLQkJCQkwN0Y4NzY4MzFBRDRBOTQ1MDA5MDU4NDkgLyogTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQuaCAqLywKIAkJCQkwNzhFNDNENzFBQkI2QzdFMDAxQzJGQTYgLyogTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlci5jcHAgKi8sCiAJCQkJMDc4RTQzRDgxQUJCNkM3RTAwMUMyRkE2
IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaCAqLywKIAkJCQlFNEI0MUUwQzBDQkY5MEJE
MDBBRjJFQ0UgLyogTWVkaWFQbGF5ZXIuY3BwICovLApAQCAtMjcxODYsNiArMjcxODYsOCBAQAog
CQkJCUFEOUZGNkUwMTkwODM5MUQwMDNCNjFFMCAvKiBJT1N1cmZhY2VQb29sQ29jb2EubW0gKi8s
CiAJCQkJQ0RDNDhBQzgyMTQ5Q0YyQTAwMjRGRDU5IC8qIE1lZGlhRW5naW5lQ29uZmlndXJhdGlv
bkZhY3RvcnlDb2NvYS5jcHAgKi8sCiAJCQkJQ0RDNDhBQzcyMTQ5Q0YyQTAwMjRGRDU5IC8qIE1l
ZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5oICovLAorCQkJCTA3Rjg3NjgzMUFE
NEE5NDUwMDkwNTg0OSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oICovLAorCQkJCTFE
MDA4QUE1MjYyMTA4QzAwMEVFM0FERSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5tbSAq
LywKIAkJCQkzMTY0N0ZBODI1MTYxNkJEMDAxMEY4RkIgLyogT3BlbkdMU29mdExpbmtDb2NvYS5o
ICovLAogCQkJCTMxNjQ3RkE5MjUxNjE2QkQwMDEwRjhGQiAvKiBPcGVuR0xTb2Z0TGlua0NvY29h
Lm1tICovLAogCQkJCTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRBRiAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZUNvY29hLm1tICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
aW5kZXggZDBiYzM1NTBkNGQwODM1YzMzM2UxZjQ4M2Y1ZjI1YWRkMDQ4MzNjZS4uZGY0YzljMWY4
NGVjYTIwZTdiMWZiZDM3YzE0MzhjNWUwYWJiMGQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCkBAIC01MTMsNyArNTEzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzaG93
UGxheWJhY2tUYXJnZXRQaWNrZXIoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmll
ciwgY29uc3QgSW50UG9pbnQmLCBib29sIC8qaXNWaWRlbyovKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgcGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5nZShQbGF5YmFja1Rhcmdl
dENsaWVudENvbnRleHRJZGVudGlmaWVyLCBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3Mp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVu
YWJsZWQoYm9vbCkgIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpTdGF0ZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1v
Y2tTdGF0ZSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyRGlzbWlzc1BvcHVwKCkgeyB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggYmQ5
ZTUzODJiYzlkY2NiYWZmZWM2YjM5NDIyMjRjOGQ1ZWE2NmI5YS4uY2RiZmZhMGM2YTA1MmIwZTFm
YTAxY2QxZmQ5MzFkYmNiZmRkZjU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yOTUyLDcgKzI5
NTIsNyBAQCB2b2lkIFBhZ2U6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxl
ZChib29sIGVuYWJsZWQpCiAgICAgY2hyb21lKCkuY2xpZW50KCkuc2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJFbmFibGVkKGVuYWJsZWQpOwogfQogCi12b2lkIFBhZ2U6OnNldE1vY2tN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCit2b2lkIFBhZ2U6OnNldE1vY2tNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKQogewogICAgIGNocm9tZSgpLmNsaWVu
dCgpLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUobmFtZSwgc3RhdGUpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAppbmRleCA5MTAwMDMxNmU1MzQ0YmMzYWY3YmMzZTZmMmRiMjBkOGRmZWQy
ZDZlLi42Yjc2Y2MxMTU4YzNmNmE0NDA4NzA0MDlmMTNmMGY3MjIxOTgzMjM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaApAQCAtNzMxLDcgKzczMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3dQbGF5YmFja1Rh
cmdldFBpY2tlcihQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBjb25zdCBJ
bnRQb2ludCYsIGJvb2wsIFJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5nJik7CiAgICAg
dm9pZCBwbGF5YmFja1RhcmdldFBpY2tlckNsaWVudFN0YXRlRGlkQ2hhbmdlKFBsYXliYWNrVGFy
Z2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFn
cyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlckVuYWJsZWQoYm9vbCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpNb2NrU3RhdGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0UGxheWJhY2tUYXJnZXQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRp
ZmllciwgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldC5oCmluZGV4IDZhZGZh
OTM3ZjczZjU3M2Q5NWM5ZmNkNzRkNmQyMWI4NzNhMmY3ODguLjYxMjgwODUwMWYwNGYyZmE1ZDRm
YmRkODI2YTVlYTA5NmYyYTNjNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0LmgKQEAgLTI3LDI0ICsyNywyMyBAQAog
CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKIAorI2luY2x1ZGUgIk1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OwotCiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0IDog
cHVibGljIFJlZkNvdW50ZWQ8TWVkaWFQbGF5YmFja1RhcmdldD4gewogcHVibGljOgogICAgIHZp
cnR1YWwgfk1lZGlhUGxheWJhY2tUYXJnZXQoKSA9IGRlZmF1bHQ7CiAKLSAgICBlbnVtIFRhcmdl
dFR5cGUgeyBBVkZvdW5kYXRpb24sIE1vY2sgfTsKKyAgICBlbnVtIGNsYXNzIFRhcmdldFR5cGUg
OiB1aW50OF90IHsgQVZGb3VuZGF0aW9uLCBNb2NrIH07CiAgICAgdmlydHVhbCBUYXJnZXRUeXBl
IHRhcmdldFR5cGUoKSBjb25zdCA9IDA7Ci0KICAgICB2aXJ0dWFsIGNvbnN0IE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0JiB0YXJnZXRDb250ZXh0KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwg
Ym9vbCBoYXNBY3RpdmVSb3V0ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyBkZXZp
Y2VOYW1lKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JlbW90ZVZpZGVv
UGxheWJhY2soKSBjb25zdCA9IDA7CisKKyAgICBib29sIGhhc0FjdGl2ZVJvdXRlKCkgY29uc3Qg
eyByZXR1cm4gdGFyZ2V0Q29udGV4dCgpLmhhc0FjdGl2ZVJvdXRlKCk7IH0KKyAgICBTdHJpbmcg
ZGV2aWNlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIHRhcmdldENvbnRleHQoKS5kZXZpY2VOYW1lKCk7
IH0KKyAgICBib29sIHN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygpIHsgcmV0dXJuIHRhcmdl
dENvbnRleHQoKS5zdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2soKTsgfQogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjZTRh
M2VjMzAxZTlkOWU5NzQ0ZGNiZjI5YjdhN2ExMGJmNGIzNGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwOCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
Zm5kZWYgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHRfaAotI2RlZmluZSBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dF9oCi0KLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQot
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLU9CSkNfQ0xBU1MgQVZPdXRwdXRD
b250ZXh0OwotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi1PQkpDX0NMQVNTIE5TS2V5ZWRBcmNoaXZl
cjsKLU9CSkNfQ0xBU1MgTlNLZXllZFVuYXJjaGl2ZXI7Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCB7Ci1wdWJsaWM6Ci0g
ICAgZW51bSBUeXBlIDogaW50MzJfdCB7Ci0gICAgICAgIE5vbmUsCi0gICAgICAgIEFWT3V0cHV0
Q29udGV4dFR5cGUsCi0gICAgICAgIE1vY2tUeXBlLAotICAgIH07Ci0KLSAgICBlbnVtIENvbnRl
eHRTdGF0ZSB7Ci0gICAgICAgIFVua25vd24gPSAwLAotICAgICAgICBPdXRwdXREZXZpY2VVbmF2
YWlsYWJsZSA9IDEsCi0gICAgICAgIE91dHB1dERldmljZUF2YWlsYWJsZSA9IDIsCi0gICAgfTsK
LSAgICB0eXBlZGVmIHVuc2lnbmVkIFN0YXRlOwotCi0gICAgTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQoKQotICAgICAgICA6IG1fdHlwZShOb25lKQotICAgIHsKLSAgICB9Ci0KLSAgICBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dChBVk91dHB1dENvbnRleHQgKm91dHB1dENvbnRleHQpCi0g
ICAgICAgIDogbV90eXBlKEFWT3V0cHV0Q29udGV4dFR5cGUpCi0gICAgICAgICwgbV9vdXRwdXRD
b250ZXh0KG91dHB1dENvbnRleHQpCi0gICAgewotICAgIH0KLQotICAgIE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0KGNvbnN0IFN0cmluZyYgbmFtZSwgU3RhdGUgc3RhdGUpCi0gICAgICAgIDog
bV90eXBlKE1vY2tUeXBlKQotICAgICAgICAsIG1fbmFtZShuYW1lKQotICAgICAgICAsIG1fc3Rh
dGUoc3RhdGUpCi0gICAgewotICAgIH0KLQotICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBtb2NrRGV2aWNlTmFtZSgpIGNvbnN0Ci0g
ICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IE1vY2tUeXBlKTsKLSAgICAgICAgcmV0dXJu
IG1fbmFtZTsKLSAgICB9Ci0KLSAgICBTdGF0ZSBtb2NrU3RhdGUoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBNb2NrVHlwZSk7Ci0gICAgICAgIHJldHVybiBtX3N0YXRl
OwotICAgIH0KLQotICAgIEFWT3V0cHV0Q29udGV4dCAqYXZPdXRwdXRDb250ZXh0KCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQVZPdXRwdXRDb250ZXh0VHlwZSk7Ci0g
ICAgICAgIHJldHVybiBtX291dHB1dENvbnRleHQ7Ci0gICAgfQotCi0gICAgYm9vbCBlbmNvZGlu
Z1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IEFWT3V0cHV0
Q29udGV4dFR5cGU7IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgVHlwZSBtX3R5cGUgeyBOb25lIH07
Ci0gICAgQVZPdXRwdXRDb250ZXh0ICptX291dHB1dENvbnRleHQgeyBudWxscHRyIH07Ci0gICAg
U3RyaW5nIG1fbmFtZTsKLSAgICBTdGF0ZSBtX3N0YXRlIHsgVW5rbm93biB9OwotfTsKLQotfQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLQotI2VuZGlmIC8v
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxh
eWJhY2tUYXJnZXRDb2NvYS5oCmluZGV4IDZhOGUxOTQ3NmEzNDdkOGU3NDg0MWZmNjlmYmQ0OGIw
OTIyM2M4ODkuLjY4ZTM1MmNhMDhjOThiYmYxYzk5ZGZhMjVhNDkwMzVkYWJmMzRiNDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXliYWNrVGFyZ2V0Q29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmgKQEAgLTI4LDcgKzI4
LDYgQEAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogCiAjaW5jbHVkZSAi
TWVkaWFQbGF5YmFja1RhcmdldC5oIgotI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0zNiw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb2NvYSA6IHB1YmxpYyBNZWRpYVBsYXliYWNrVGFyZ2V0IHsKIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IGNyZWF0ZShB
Vk91dHB1dENvbnRleHQgKik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNZWRpYVBs
YXliYWNrVGFyZ2V0PiBjcmVhdGUoTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmJik7CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1Ip
ICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBzdGF0aWMgUmVmPE1lZGlhUGxheWJhY2tU
YXJnZXQ+IGNyZWF0ZSgpOwpAQCAtNDMsMjEgKzQzLDE0IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgfk1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSgpOwogCi0gICAgVGFyZ2V0VHlwZSB0YXJnZXRU
eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQVZGb3VuZGF0aW9uOyB9Ci0KLSAgICBjb25zdCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0Q29udGV4dCgpIGNvbnN0IGZpbmFsOwot
ICAgIGJvb2wgaGFzQWN0aXZlUm91dGUoKSBjb25zdCBmaW5hbDsKLSAgICBTdHJpbmcgZGV2aWNl
TmFtZSgpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNr
KCkgY29uc3QgZmluYWw7Ci0KLSAgICBBVk91dHB1dENvbnRleHQgKm91dHB1dENvbnRleHQoKSBj
b25zdCB7IHJldHVybiBtX291dHB1dENvbnRleHQuZ2V0KCk7IH0KKyAgICBUYXJnZXRUeXBlIHRh
cmdldFR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBUYXJnZXRUeXBlOjpBVkZvdW5kYXRpb247
IH0KKyAgICBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0Q29udGV4dCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29udGV4dDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgTWVk
aWFQbGF5YmFja1RhcmdldENvY29hKEFWT3V0cHV0Q29udGV4dCAqKTsKKyAgICBleHBsaWNpdCBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoQVZPdXRwdXRDb250ZXh0ICopOworICAgIGV4cGxpY2l0
IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmKTsK
IAotICAgIFJldGFpblB0cjxBVk91dHB1dENvbnRleHQ+IG1fb3V0cHV0Q29udGV4dDsKLSAgICBt
dXRhYmxlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IG1fY29udGV4dDsKLSAgICBTdHJpbmcg
bV9kZXZpY2VOYW1lOworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IG1fY29udGV4dDsK
IH07CiAKIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSogdG9NZWRpYVBsYXliYWNrVGFyZ2V0Q29j
b2EoTWVkaWFQbGF5YmFja1RhcmdldCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXli
YWNrVGFyZ2V0Q29jb2EubW0KaW5kZXggZGFjOGNjNDgxNTZjMmM3ZTc0ZWFhYzdiNGRkZTRiYzIx
Nzc1MTlhYS4uNmY1YzI3ZTM5NDBlM2EwODdiZjIxYjhmNDAwNDFiNDc1MGRkZGEzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlh
UGxheWJhY2tUYXJnZXRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLm1tCkBAIC0zNCw5MiAr
MzQsMzYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TWVkaWFQbGF5YmFja1Rhcmdl
dD4gTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUoQVZPdXRwdXRDb250ZXh0ICpjb250
ZXh0KQorUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6
Y3JlYXRlKEFWT3V0cHV0Q29udGV4dCAqb3V0cHV0Q29udGV4dCkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoY29udGV4dCkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShvdXRwdXRDb250ZXh0KSk7
CiB9CiAKLU1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29h
KEFWT3V0cHV0Q29udGV4dCAqY29udGV4dCkKLSAgICA6IE1lZGlhUGxheWJhY2tUYXJnZXQoKQot
ICAgICwgbV9vdXRwdXRDb250ZXh0KGNvbnRleHQpCitSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4g
TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUoTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQmJiBjb250ZXh0KQogeworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhUGxheWJhY2tU
YXJnZXRDb2NvYShXVEZNb3ZlKGNvbnRleHQpKSk7CiB9CiAKLSNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpICYmICFQTEFURk9STShNQUND
QVRBTFlTVCkKLVJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29j
b2E6OmNyZWF0ZSgpCitNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6Ok1lZGlhUGxheWJhY2tUYXJn
ZXRDb2NvYShBVk91dHB1dENvbnRleHQgKm91dHB1dENvbnRleHQpCisgICAgOiBtX2NvbnRleHQo
b3V0cHV0Q29udGV4dCkKIHsKLSAgICBhdXRvICpyb3V0aW5nQ29udGV4dFVJRCA9IFtbUEFMOjpn
ZXRBVkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5zdGFuY2VdIHJvdXRpbmdDb250ZXh0VUlE
XTsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoW1BB
TDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBvdXRwdXRDb250ZXh0Rm9ySUQ6cm91dGluZ0Nv
bnRleHRVSURdKSk7CiB9Ci0jZW5kaWYKIAotYm9vbCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6
OnN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygpIGNvbnN0CitNZWRpYVBsYXliYWNrVGFyZ2V0
Q29jb2E6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dCYmIGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKIHsKLSAgICBp
ZiAoIW1fb3V0cHV0Q29udGV4dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFb
bV9vdXRwdXRDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc3VwcG9ydHNNdWx0
aXBsZU91dHB1dERldmljZXMpXSB8fCAhW21fb3V0cHV0Q29udGV4dCBzdXBwb3J0c011bHRpcGxl
T3V0cHV0RGV2aWNlc10gfHwgIVttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihvdXRwdXREZXZpY2VzKV0pIHsKLSAgICAgICAgaWYgKGF1dG8gKm91dHB1dERldmlj
ZSA9IFttX291dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlXSkgewotICAgICAgICAgICAgaWYgKG91
dHB1dERldmljZS5kZXZpY2VGZWF0dXJlcyAmIEFWT3V0cHV0RGV2aWNlRmVhdHVyZVZpZGVvKQot
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotICAgIGZvciAoQVZPdXRwdXREZXZpY2UgKm91dHB1dERldmljZSBp
biBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmljZXNdKSB7Ci0gICAgICAgIGlmIChvdXRwdXRE
ZXZpY2UuZGV2aWNlRmVhdHVyZXMgJiBBVk91dHB1dERldmljZUZlYXR1cmVWaWRlbykKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKIH0KIAotTWVk
aWFQbGF5YmFja1RhcmdldENvY29hOjp+TWVkaWFQbGF5YmFja1RhcmdldENvY29hKCkKLXsKLX0K
LQotY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIE1lZGlhUGxheWJhY2tUYXJnZXRD
b2NvYTo6dGFyZ2V0Q29udGV4dCgpIGNvbnN0Ci17Ci0gICAgbV9jb250ZXh0ID0gTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQobV9vdXRwdXRDb250ZXh0LmdldCgpKTsKLSAgICByZXR1cm4gbV9j
b250ZXh0OwotfQotCi1ib29sIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6aGFzQWN0aXZlUm91
dGUoKSBjb25zdAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NfRkFN
SUxZX1NJTVVMQVRPUikgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorUmVmPE1lZGlhUGxheWJh
Y2tUYXJnZXQ+IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKCkKIHsKLSAgICBpZiAo
IW1fb3V0cHV0Q29udGV4dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKFttX291
dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzdXBwb3J0c011bHRpcGxl
T3V0cHV0RGV2aWNlcyldICYmIFttX291dHB1dENvbnRleHQgc3VwcG9ydHNNdWx0aXBsZU91dHB1
dERldmljZXNdICYmIFttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihvdXRwdXREZXZpY2VzKV0pIHsKLSAgICAgICAgZm9yIChBVk91dHB1dERldmljZSAqb3V0cHV0
RGV2aWNlIGluIFttX291dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlc10pIHsKLSAgICAgICAgICAg
IGlmIChvdXRwdXREZXZpY2UuZGV2aWNlRmVhdHVyZXMgJiAoQVZPdXRwdXREZXZpY2VGZWF0dXJl
VmlkZW8gfCBBVk91dHB1dERldmljZUZlYXR1cmVBdWRpbykpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0g
ICAgaWYgKFttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdXRw
dXREZXZpY2UpXSkgewotICAgICAgICBpZiAoYXV0byAqb3V0cHV0RGV2aWNlID0gW21fb3V0cHV0
Q29udGV4dCBvdXRwdXREZXZpY2VdKQotICAgICAgICAgICAgcmV0dXJuIG91dHB1dERldmljZS5k
ZXZpY2VGZWF0dXJlcyAmIChBVk91dHB1dERldmljZUZlYXR1cmVWaWRlbyB8IEFWT3V0cHV0RGV2
aWNlRmVhdHVyZUF1ZGlvKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbV9vdXRwdXRDb250ZXh0Lmdl
dCgpLmRldmljZU5hbWU7CisgICAgYXV0byAqcm91dGluZ0NvbnRleHRVSUQgPSBbW1BBTDo6Z2V0
QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXSByb3V0aW5nQ29udGV4dFVJRF07
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFQbGF5YmFja1RhcmdldENvY29hKFtQQUw6
OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgb3V0cHV0Q29udGV4dEZvcklEOnJvdXRpbmdDb250
ZXh0VUlEXSkpOwogfQorI2VuZGlmCiAKLVN0cmluZyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6
OmRldmljZU5hbWUoKSBjb25zdAorTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjp+TWVkaWFQbGF5
YmFja1RhcmdldENvY29hKCkKIHsKLSAgICBpZiAoIW1fb3V0cHV0Q29udGV4dCkKLSAgICAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICBpZiAoIVttX291dHB1dENvbnRleHQgc3VwcG9y
dHNNdWx0aXBsZU91dHB1dERldmljZXNdKQotICAgICAgICByZXR1cm4gW21fb3V0cHV0Q29udGV4
dCBkZXZpY2VOYW1lXTsKLQotICAgIGF1dG8gb3V0cHV0RGV2aWNlTmFtZXMgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLSAgICBmb3IgKEFWT3V0cHV0RGV2aWNlICpv
dXRwdXREZXZpY2UgaW4gW21fb3V0cHV0Q29udGV4dCBvdXRwdXREZXZpY2VzXSkKLSAgICAgICAg
W291dHB1dERldmljZU5hbWVzIGFkZE9iamVjdDpbb3V0cHV0RGV2aWNlIGRldmljZU5hbWVdXTsK
LQotICAgIHJldHVybiBbb3V0cHV0RGV2aWNlTmFtZXMgY29tcG9uZW50c0pvaW5lZEJ5U3RyaW5n
OkAiICsgIl07CiB9CiAKIE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSogdG9NZWRpYVBsYXliYWNr
VGFyZ2V0Q29jb2EoTWVkaWFQbGF5YmFja1RhcmdldCogcmVwKQpAQCAtMTI5LDcgKzczLDcgQEAg
TWVkaWFQbGF5YmFja1RhcmdldENvY29hKiB0b01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShNZWRp
YVBsYXliYWNrVGFyZ2V0KiByZXApCiAKIGNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYSog
dG9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EoY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldCogcmVw
KQogewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHJlcC0+dGFyZ2V0VHlw
ZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6OkFWRm91bmRhdGlvbik7CisgICAgUkVMRUFTRV9B
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihyZXAtPnRhcmdldFR5cGUoKSA9PSBNZWRp
YVBsYXliYWNrVGFyZ2V0OjpUYXJnZXRUeXBlOjpBVkZvdW5kYXRpb24pOwogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EqPihyZXApOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCAyMGIyNDEyZjExMzY2M2MxZjM4NjJmMjdiNjYyNDAw
ZjZjZGIwNzJiLi4wYWMwOTNlNTBjYTI5ODBjNTlhMzI3YTJjMmU4ODFlY2RmYjFiYmQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTI4MjQsNyArMjgyNCw3IEBAIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVz
cygpIGNvbnN0CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9wbGF5YmFj
a1RhcmdldCkgewotICAgICAgICBpZiAobV9wbGF5YmFja1RhcmdldC0+dGFyZ2V0VHlwZSgpID09
IE1lZGlhUGxheWJhY2tUYXJnZXQ6OkFWRm91bmRhdGlvbikKKyAgICAgICAgaWYgKG1fcGxheWJh
Y2tUYXJnZXQtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpUYXJnZXRUeXBl
OjpBVkZvdW5kYXRpb24pCiAgICAgICAgICAgICB3aXJlbGVzc1RhcmdldCA9IG1fYXZQbGF5ZXIg
JiYgbV9hdlBsYXllci5nZXQoKS5leHRlcm5hbFBsYXliYWNrQWN0aXZlOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICB3aXJlbGVzc1RhcmdldCA9IG1fc2hvdWxkUGxheVRvUGxheWJhY2tUYXJn
ZXQgJiYgbV9wbGF5YmFja1RhcmdldC0+aGFzQWN0aXZlUm91dGUoKTsKQEAgLTI5NjgsNyArMjk2
OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0V2lyZWxl
c3NQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5CiB7CiAgICAgbV9wbGF5YmFja1RhcmdldCA9
IFdURk1vdmUodGFyZ2V0KTsKIAotICAgIG1fb3V0cHV0Q29udGV4dCA9IG1fcGxheWJhY2tUYXJn
ZXQtPnRhcmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpBVkZvdW5kYXRpb24gPyB0
b01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYShtX3BsYXliYWNrVGFyZ2V0LmdldCgpKS0+b3V0cHV0
Q29udGV4dCgpIDogbnVsbHB0cjsKKyAgICBtX291dHB1dENvbnRleHQgPSBtX3BsYXliYWNrVGFy
Z2V0LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldDo6VGFyZ2V0VHlwZTo6QVZG
b3VuZGF0aW9uID8gdG9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EobV9wbGF5YmFja1RhcmdldC5n
ZXQoKSktPnRhcmdldENvbnRleHQoKS5vdXRwdXRDb250ZXh0KCkgOiBudWxscHRyOwogCiAgICAg
SU5GT19MT0coTE9HSURFTlRJRklFUik7CiAKQEAgLTI5ODgsNyArMjk4OCw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tU
YXJnZXQoYm9vbCBzaG91CiAKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCBzaG91bGRQbGF5
KTsKIAotICAgIGlmIChtX3BsYXliYWNrVGFyZ2V0LT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5
YmFja1RhcmdldDo6QVZGb3VuZGF0aW9uKSB7CisgICAgaWYgKG1fcGxheWJhY2tUYXJnZXQtPnRh
cmdldFR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpUYXJnZXRUeXBlOjpBVkZvdW5kYXRp
b24pIHsKICAgICAgICAgQVZPdXRwdXRDb250ZXh0ICpuZXdDb250ZXh0ID0gc2hvdWxkUGxheSA/
IG1fb3V0cHV0Q29udGV4dC5nZXQoKSA6IG5pbDsKIAogICAgICAgICBpZiAoIW1fYXZQbGF5ZXIp
CkBAIC0zMDA1LDcgKzMwMDUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wgc2hvdQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKG1fcGxheWJhY2tUYXJnZXQtPnRhcmdldFR5cGUo
KSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpNb2NrKTsKKyAgICBBU1NFUlQobV9wbGF5YmFja1Rh
cmdldC0+dGFyZ2V0VHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXQ6OlRhcmdldFR5cGU6Ok1v
Y2spOwogCiAgICAgc2V0RGVsYXlDYWxsYmFja3ModHJ1ZSk7CiAgICAgYXV0byB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA2YTUwYjAwNmVlYTBhOGIyMzYyOTYxNzVmYmRmNWE4NGM5N2VjMDQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9N
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oCkBAIC0wLDAgKzEsMTM2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgUExBVEZP
Uk0oQ09DT0EpCitPQkpDX0NMQVNTIEFWT3V0cHV0Q29udGV4dDsKK09CSkNfQ0xBU1MgTlNEYXRh
OworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQgeworcHVibGljOgorICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3Qgewor
ICAgICAgICBOb25lLAorICAgICAgICBBVk91dHB1dENvbnRleHQsCisgICAgICAgIFNlcmlhbGl6
ZWRBVk91dHB1dENvbnRleHQsCisgICAgICAgIE1vY2ssCisgICAgfTsKKworICAgIGVudW0gY2xh
c3MgTW9ja1N0YXRlIDogdWludDhfdCB7CisgICAgICAgIFVua25vd24gPSAwLAorICAgICAgICBP
dXRwdXREZXZpY2VVbmF2YWlsYWJsZSA9IDEsCisgICAgICAgIE91dHB1dERldmljZUF2YWlsYWJs
ZSA9IDIsCisgICAgfTsKKworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0KCkgPSBkZWZh
dWx0OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0KFJldGFpblB0cjxBVk91dHB1dENvbnRleHQ+JiYpOworCisgICAgTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQoUmV0YWluUHRyPE5TRGF0YT4mJiBzZXJpYWxpemVkT3V0cHV0Q29udGV4dCwg
Ym9vbCBoYXNBY3RpdmVSb3V0ZSkKKyAgICAgICAgOiBtX3R5cGUoVHlwZTo6U2VyaWFsaXplZEFW
T3V0cHV0Q29udGV4dCkKKyAgICAgICAgLCBtX3NlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KFdURk1v
dmUoc2VyaWFsaXplZE91dHB1dENvbnRleHQpKQorICAgICAgICAsIG1fY2FjaGVkSGFzQWN0aXZl
Um91dGUoaGFzQWN0aXZlUm91dGUpCisgICAgeworICAgICAgICBBU1NFUlQobV9zZXJpYWxpemVk
T3V0cHV0Q29udGV4dCk7CisgICAgfQorCisgICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQo
Y29uc3QgU3RyaW5nJiBtb2NrRGV2aWNlTmFtZSwgTW9ja1N0YXRlIHN0YXRlKQorICAgICAgICA6
IG1fdHlwZShUeXBlOjpNb2NrKQorICAgICAgICAsIG1fbW9ja0RldmljZU5hbWUobW9ja0Rldmlj
ZU5hbWUpCisgICAgICAgICwgbV9tb2NrU3RhdGUoc3RhdGUpCisgICAgeworICAgIH0KKworICAg
IFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBkZXZpY2VOYW1lKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNB
Y3RpdmVSb3V0ZSgpIGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNr
KCkgY29uc3Q7CisKKyAgICBNb2NrU3RhdGUgbW9ja1N0YXRlKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6TW9jayk7CisgICAgICAgIHJldHVybiBtX21vY2tT
dGF0ZTsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8QVZPdXRwdXRDb250ZXh0PiBvdXRwdXRDb250
ZXh0KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6QVZPdXRw
dXRDb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIG1fb3V0cHV0Q29udGV4dDsKKyAgICB9CisKKyAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBzZXJpYWxpemVkT3V0cHV0Q29udGV4dCgpIGNvbnN0CisgICAg
eworICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRl
eHQpOworICAgICAgICByZXR1cm4gbV9zZXJpYWxpemVkT3V0cHV0Q29udGV4dDsKKyAgICB9CisK
KyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNlcmlhbGl6ZU91dHB1dENvbnRleHQoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGRlc2VyaWFsaXplT3V0cHV0Q29udGV4dCgpOworCisgICAgYm9v
bCBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09
IFR5cGU6OkFWT3V0cHV0Q29udGV4dCB8fCBtX3R5cGUgPT0gVHlwZTo6U2VyaWFsaXplZEFWT3V0
cHV0Q29udGV4dDsgfQorCitwcml2YXRlOgorICAgIFR5cGUgbV90eXBlIHsgVHlwZTo6Tm9uZSB9
OworICAgIFJldGFpblB0cjxBVk91dHB1dENvbnRleHQ+IG1fb3V0cHV0Q29udGV4dDsKKyAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBtX3NlcmlhbGl6ZWRPdXRwdXRDb250ZXh0OworICAgIGJvb2wgbV9j
YWNoZWRIYXNBY3RpdmVSb3V0ZSB7IGZhbHNlIH07CisKKyAgICBTdHJpbmcgbV9tb2NrRGV2aWNl
TmFtZTsKKyAgICBNb2NrU3RhdGUgbV9tb2NrU3RhdGUgeyBNb2NrU3RhdGU6OlVua25vd24gfTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6OlR5cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZSwKKyAgICAgICAgV2ViQ29yZTo6
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok5vbmUsCisgICAgICAgIFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQsCisgICAg
ICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVk
QVZPdXRwdXRDb250ZXh0LAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6VHlwZTo6TW9jaworICAgID47Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU+IHsKKyAg
ICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpVbmtub3duLAorICAgICAgICBXZWJDb3JlOjpN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpPdXRwdXREZXZpY2VVbmF2YWls
YWJsZSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tT
dGF0ZTo6T3V0cHV0RGV2aWNlQXZhaWxhYmxlCisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdURgorCisjZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGJmOGZhYWIwMDM5
MjRiNDU0YzE0MWE3MTQ1OThlNDJhODdjYzlmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
Lm1tCkBAIC0wLDAgKzEsMTYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgiCisKKyNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24u
aD4KKyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9BVkZv
dW5kYXRpb25TUEkuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChSZXRhaW5QdHI8QVZPdXRwdXRDb250ZXh0PiYmIG91
dHB1dENvbnRleHQpCisgICAgOiBtX291dHB1dENvbnRleHQob3V0cHV0Q29udGV4dCkKK3sKKyAg
ICBBU1NFUlQobV9vdXRwdXRDb250ZXh0KTsKKyAgICBtX3R5cGUgPSBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0OworfQorCitTdHJpbmcgTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OmRldmljZU5hbWUoKSBjb25zdAoreworICAgIEFTU0VSVChtX3R5
cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2sgfHwgbV90eXBlID09
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQpOworCisg
ICAgaWYgKG1fdHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6TW9jaykK
KyAgICAgICAgcmV0dXJuIG1fbW9ja0RldmljZU5hbWU7CisKKyAgICBBU1NFUlQobV90eXBlID09
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQpOworICAg
IFN0cmluZyBkZXZpY2VOYW1lOworICAgIGlmICghW21fb3V0cHV0Q29udGV4dCBzdXBwb3J0c011
bHRpcGxlT3V0cHV0RGV2aWNlc10pCisgICAgICAgIGRldmljZU5hbWUgPSBbbV9vdXRwdXRDb250
ZXh0IGRldmljZU5hbWVdOworICAgIGVsc2UgeworICAgICAgICBhdXRvIG91dHB1dERldmljZU5h
bWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgICAgIGZv
ciAoQVZPdXRwdXREZXZpY2UgKm91dHB1dERldmljZSBpbiBbbV9vdXRwdXRDb250ZXh0IG91dHB1
dERldmljZXNdKQorICAgICAgICAgICAgW291dHB1dERldmljZU5hbWVzIGFkZE9iamVjdDpbb3V0
cHV0RGV2aWNlIGRldmljZU5hbWVdXTsKKworICAgICAgICBkZXZpY2VOYW1lID0gW291dHB1dERl
dmljZU5hbWVzIGNvbXBvbmVudHNKb2luZWRCeVN0cmluZzpAIiArICJdOworICAgIH0KKworICAg
IHJldHVybiBkZXZpY2VOYW1lOworfQorYm9vbCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
aGFzQWN0aXZlUm91dGUoKSBjb25zdAoreworICAgIEFTU0VSVChtX3R5cGUgIT0gTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok5vbmUpOworICAgIGlmIChtX3R5cGUgPT0gTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok1vY2spCisgICAgICAgIHJldHVybiAhbV9tb2Nr
RGV2aWNlTmFtZS5pc0VtcHR5KCk7CisKKyAgICAvLyBGSVhNRTogSXQgbWF5IG5vdCBiZSBzYWZl
IHRvIHVzZSB0aGUgY2FjaGVkIGBoYXNBY3RpdmVSb3V0ZWAgb2YgYSBzZXJpYWxpemVkIEFWT3V0
cHV0Q29udGV4dAorICAgIGlmIChtX3R5cGUgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
OlR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQpCisgICAgICAgIHJldHVybiBtX2NhY2hl
ZEhhc0FjdGl2ZVJvdXRlOworCisgICAgQVNTRVJUKG1fdHlwZSA9PSBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0KTsKKyAgICBib29sIGhhc0FjdGl2ZVJv
dXRlID0gZmFsc2U7CisgICAgaWYgKFttX291dHB1dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNlcyldICYmIFttX291dHB1dENv
bnRleHQgc3VwcG9ydHNNdWx0aXBsZU91dHB1dERldmljZXNdICYmIFttX291dHB1dENvbnRleHQg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdXRwdXREZXZpY2VzKV0pIHsKKyAgICAgICAg
Zm9yIChBVk91dHB1dERldmljZSAqb3V0cHV0RGV2aWNlIGluIFttX291dHB1dENvbnRleHQgb3V0
cHV0RGV2aWNlc10pIHsKKyAgICAgICAgICAgIGlmIChvdXRwdXREZXZpY2UuZGV2aWNlRmVhdHVy
ZXMgJiAoQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8gfCBBVk91dHB1dERldmljZUZlYXR1cmVB
dWRpbykpCisgICAgICAgICAgICAgICAgaGFzQWN0aXZlUm91dGUgPSB0cnVlOworICAgICAgICB9
CisgICAgfSBlbHNlIGlmIChbbV9vdXRwdXRDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3Iob3V0cHV0RGV2aWNlKV0pIHsKKyAgICAgICAgaWYgKGF1dG8gKm91dHB1dERldmljZSA9
IFttX291dHB1dENvbnRleHQgb3V0cHV0RGV2aWNlXSkKKyAgICAgICAgICAgIGhhc0FjdGl2ZVJv
dXRlID0gb3V0cHV0RGV2aWNlLmRldmljZUZlYXR1cmVzICYgKEFWT3V0cHV0RGV2aWNlRmVhdHVy
ZVZpZGVvIHwgQVZPdXRwdXREZXZpY2VGZWF0dXJlQXVkaW8pOworICAgIH0gZWxzZQorICAgICAg
ICBoYXNBY3RpdmVSb3V0ZSA9IG1fb3V0cHV0Q29udGV4dC5nZXQoKS5kZXZpY2VOYW1lOworCisg
ICAgcmV0dXJuIGhhc0FjdGl2ZVJvdXRlOworfQorYm9vbCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6c3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrKCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
bV90eXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrIHx8IG1fdHlw
ZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0KTsK
KyAgICBpZiAobV90eXBlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2Nr
KQorICAgICAgICByZXR1cm4gIW1fbW9ja0RldmljZU5hbWUuaXNFbXB0eSgpOworCisgICAgYm9v
bCBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2sgPSBmYWxzZTsKKyAgICBpZiAoIVttX291dHB1
dENvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzdXBwb3J0c011bHRpcGxlT3V0
cHV0RGV2aWNlcyldIHx8ICFbbV9vdXRwdXRDb250ZXh0IHN1cHBvcnRzTXVsdGlwbGVPdXRwdXRE
ZXZpY2VzXSB8fCAhW21fb3V0cHV0Q29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KG91dHB1dERldmljZXMpXSkgeworICAgICAgICBpZiAoYXV0byAqb3V0cHV0RGV2aWNlID0gW21f
b3V0cHV0Q29udGV4dCBvdXRwdXREZXZpY2VdKSB7CisgICAgICAgICAgICBpZiAob3V0cHV0RGV2
aWNlLmRldmljZUZlYXR1cmVzICYgQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8pCisgICAgICAg
ICAgICAgICAgc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrID0gdHJ1ZTsKKyAgICAgICAgfQor
ICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAoQVZPdXRwdXREZXZpY2UgKm91dHB1dERldmljZSBp
biBbbV9vdXRwdXRDb250ZXh0IG91dHB1dERldmljZXNdKSB7CisgICAgICAgICAgICBpZiAob3V0
cHV0RGV2aWNlLmRldmljZUZlYXR1cmVzICYgQVZPdXRwdXREZXZpY2VGZWF0dXJlVmlkZW8pCisg
ICAgICAgICAgICAgICAgc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrID0gdHJ1ZTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2s7Cit9
CisKK2Jvb2wgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OnNlcmlhbGl6ZU91dHB1dENvbnRl
eHQoKQoreworICAgIEFTU0VSVChtX3R5cGUgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
OlR5cGU6OlNlcmlhbGl6ZWRBVk91dHB1dENvbnRleHQpOworICAgIGlmIChtX3R5cGUgIT0gTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OkFWT3V0cHV0Q29udGV4dCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgYXV0byBhcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJj
aGl2ZXIgYWxsb2NdIGluaXRSZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTXSk7CisgICAgW2FyY2hp
dmVyIGVuY29kZU9iamVjdDptX291dHB1dENvbnRleHQuZ2V0KCkgZm9yS2V5Ok5TS2V5ZWRBcmNo
aXZlUm9vdE9iamVjdEtleV07CisgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsKKworICAg
IG1fc2VyaWFsaXplZE91dHB1dENvbnRleHQgPSBbYXJjaGl2ZXIgZW5jb2RlZERhdGFdOworICAg
IG1fdHlwZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZP
dXRwdXRDb250ZXh0OworICAgIG1fb3V0cHV0Q29udGV4dC5jbGVhcigpOworCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OmRlc2VyaWFsaXpl
T3V0cHV0Q29udGV4dCgpCit7CisgICAgQVNTRVJUKG1fdHlwZSAhPSBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0KTsKKyAgICBpZiAobV90eXBlICE9IE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKKyAg
ICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGlu
aXRGb3JSZWFkaW5nRnJvbURhdGE6bV9zZXJpYWxpemVkT3V0cHV0Q29udGV4dC5nZXQoKSBlcnJv
cjpudWxscHRyXSk7CisgICAgdW5hcmNoaXZlci5nZXQoKS5kZWNvZGluZ0ZhaWx1cmVQb2xpY3kg
PSBOU0RlY29kaW5nRmFpbHVyZVBvbGljeVJhaXNlRXhjZXB0aW9uOworICAgIGF1dG8gYWxsb3dl
ZENsYXNzU2V0ID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0aEFycmF5OkBbIFBBTDo6
Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBdXSk7CisKKyAgICBAdHJ5IHsKKyAgICAgICAgaWQg
cmVzdWx0ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOmFsbG93ZWRDbGFzc1Nl
dC5nZXQoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKKyAgICAgICAgQVNT
RVJUKHJlc3VsdCk7CisgICAgICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgICAgIG1fb3V0cHV0
Q29udGV4dCA9IHJlc3VsdDsKKyAgICAgICAgICAgIG1fdHlwZSA9IE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQ7CisgICAgICAgICAgICBtX3NlcmlhbGl6
ZWRPdXRwdXRDb250ZXh0LmNsZWFyKCk7CisgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKKyAg
ICAgICAgfQorICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CisgICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBvYmplY3Qgb2YgY2xhc3MgQVZPdXRwdXRDb250
ZXh0IDogJUAiLCBleGNlcHRpb24pOworICAgIH0gQGZpbmFsbHkgeworICAgICAgICBbdW5hcmNo
aXZlciBmaW5pc2hEZWNvZGluZ107CisgICAgICAgIHVuYXJjaGl2ZXIuZ2V0KCkuZGVsZWdhdGUg
PSBuaWw7CisgICAgfQorCisgICAgcmV0dXJuIHN1Y2Nlc3M7Cit9CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJn
ZXRNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1Rh
cmdldE1vY2suY3BwCmluZGV4IDQ1NWNlZmM5ZjZmMGRmNDE5Njc3OGY3NTE5ZmI4YmI3MWY1NWQ1
MjEuLjJhMmE4ZDBiY2YxNjVhZDBiMjFmNWM5ZDJhODQ3MTc3MzVmYjRjOTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1v
Y2suY3BwCkBAIC0zMCwyNiArMzAsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8
TWVkaWFQbGF5YmFja1RhcmdldD4gTWVkaWFQbGF5YmFja1RhcmdldE1vY2s6OmNyZWF0ZShjb25z
dCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkK
K1JlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6Y3JlYXRl
KGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0
ZSBzdGF0ZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVBsYXliYWNrVGFyZ2V0
TW9jayhuYW1lLCBzdGF0ZSkpOwogfQogCi1NZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6TWVkaWFQ
bGF5YmFja1RhcmdldE1vY2soY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6U3RhdGUgc3RhdGUpCi0gICAgOiBNZWRpYVBsYXliYWNrVGFyZ2V0KCkKLSAgICAs
IG1fbmFtZShuYW1lKQotICAgICwgbV9zdGF0ZShzdGF0ZSkKK01lZGlhUGxheWJhY2tUYXJnZXRN
b2NrOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCisgICAgOiBtX2NvbnRleHQobmFt
ZSwgc3RhdGUpCiB7CiB9CiAKIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrOjp+TWVkaWFQbGF5YmFj
a1RhcmdldE1vY2soKSA9IGRlZmF1bHQ7CiAKLWNvbnN0IE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0JiBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6dGFyZ2V0Q29udGV4dCgpIGNvbnN0Ci17Ci0g
ICAgbV9jb250ZXh0ID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQobV9uYW1lLCBtX3N0YXRl
KTsKLSAgICByZXR1cm4gbV9jb250ZXh0OwotfQotCiBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jayog
dG9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhNZWRpYVBsYXliYWNrVGFyZ2V0KiByZXApCiB7CiAg
ICAgcmV0dXJuIGNvbnN0X2Nhc3Q8TWVkaWFQbGF5YmFja1RhcmdldE1vY2sqPih0b01lZGlhUGxh
eWJhY2tUYXJnZXRNb2NrKGNvbnN0X2Nhc3Q8Y29uc3QgTWVkaWFQbGF5YmFja1RhcmdldCo+KHJl
cCkpKTsKQEAgLTU3LDcgKzQ5LDcgQEAgTWVkaWFQbGF5YmFja1RhcmdldE1vY2sqIHRvTWVkaWFQ
bGF5YmFja1RhcmdldE1vY2soTWVkaWFQbGF5YmFja1RhcmdldCogcmVwKQogCiBjb25zdCBNZWRp
YVBsYXliYWNrVGFyZ2V0TW9jayogdG9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhjb25zdCBNZWRp
YVBsYXliYWNrVGFyZ2V0KiByZXApCiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04ocmVwLT50YXJnZXRUeXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldDo6TW9jayk7Cisg
ICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihyZXAtPnRhcmdldFR5
cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0OjpUYXJnZXRUeXBlOjpNb2NrKTsKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTWVkaWFQbGF5YmFja1RhcmdldE1vY2sqPihyZXApOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tU
YXJnZXRNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tU
YXJnZXRNb2NrLmgKaW5kZXggY2Q0NDliMDNjMTEzMTA2NjUyOTRjYjg5MjRkZjBlNGVlYWExM2Y0
Yy4uMzk4YTQ1OWRlOTkyZjRlMmI1Yzk5ZDk4ZmZiNzQ3Mjg5NjdmMDllMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2su
aApAQCAtMjMsNDAgKzIzLDMwIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIE1l
ZGlhUGxheWJhY2tUYXJnZXRNb2NrX2gKLSNkZWZpbmUgTWVkaWFQbGF5YmFja1RhcmdldE1vY2tf
aAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAm
JiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXQu
aCIKLSNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oIgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlh
UGxheWJhY2tUYXJnZXRNb2NrIDogcHVibGljIE1lZGlhUGxheWJhY2tUYXJnZXQgewogcHVibGlj
OgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSk7CiAK
ICAgICB2aXJ0dWFsIH5NZWRpYVBsYXliYWNrVGFyZ2V0TW9jaygpOwogCi0gICAgVGFyZ2V0VHlw
ZSB0YXJnZXRUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTW9jazsgfQorICAgIFRhcmdldFR5
cGUgdGFyZ2V0VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWJhY2tUYXJnZXQ6
OlRhcmdldFR5cGU6Ok1vY2s7IH0KKyAgICBjb25zdCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dCYgdGFyZ2V0Q29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29udGV4dDsgfQogCi0g
ICAgY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldENvbnRleHQoKSBjb25z
dCBmaW5hbDsKLQotICAgIGJvb2wgaGFzQWN0aXZlUm91dGUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biAhbV9uYW1lLmlzRW1wdHkoKTsgfQotICAgIGJvb2wgc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXli
YWNrKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1fbmFtZS5pc0VtcHR5KCk7IH0KLQotICAgIFN0
cmluZyBkZXZpY2VOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9uYW1lOyB9Ci0KLSAgICBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUoKSBjb25zdDsKKyAgICBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4g
bV9jb250ZXh0Lm1vY2tTdGF0ZSgpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBNZWRpYVBsYXliYWNr
VGFyZ2V0TW9jayhjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3Rh
dGUpOworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpOwogCi0gICAgU3RyaW5nIG1fbmFtZTsKLSAg
ICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgbV9zdGF0ZSB7IE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpVbmtub3duIH07Ci0gICAgbXV0YWJsZSBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dCBtX2NvbnRleHQ7CisgICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQgbV9j
b250ZXh0OwogfTsKIAogTWVkaWFQbGF5YmFja1RhcmdldE1vY2sqIHRvTWVkaWFQbGF5YmFja1Rh
cmdldE1vY2soTWVkaWFQbGF5YmFja1RhcmdldCopOwpAQCAtNjUsNSArNTUsMyBAQCBjb25zdCBN
ZWRpYVBsYXliYWNrVGFyZ2V0TW9jayogdG9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jayhjb25zdCBN
ZWRpYVBsYXliYWNrVGFyZwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9j
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJNb2NrLmNwcAppbmRleCA0NGY0MTQ3YTE5MTgwNzU0NzJlZGMzYTEyMTg5OTI3ZDdlOTI1
ZWYxLi4zYjBjYTZhNzgzNzIzZjhmOThkMjI2MGFhYjZhYjVhNTYxZWUxYzQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJN
b2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJNb2NrLmNwcApAQCAtNTIsNyArNTIsNyBAQCBNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyTW9jazo6fk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrKCkKIGJvb2wgTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1vY2s6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKCkK
IHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6ZXh0ZXJu
YWxPdXRwdXREZXZpY2VBdmFpbGFibGUiKTsKLSAgICByZXR1cm4gbV9zdGF0ZSA9PSBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6T3V0cHV0RGV2aWNlQXZhaWxhYmxlOworICAgIHJldHVybiBt
X3N0YXRlID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGU6Ok91dHB1dERl
dmljZUF2YWlsYWJsZTsKIH0KIAogUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+IE1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJNb2NrOjpwbGF5YmFja1RhcmdldCgpCkBAIC04NSwxMCArODUsMTAgQEAg
dm9pZCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6c3RhcnRpbmdNb25pdG9yaW5nUGxh
eWJhY2tUYXJnZXRzKCkKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
TW9jazo6c3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzIik7CiAKICAgICBtX3Rhc2tR
dWV1ZS5lbnF1ZXVlVGFzayhbdGhpc10gewotICAgICAgICBpZiAobV9zdGF0ZSA9PSBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6T3V0cHV0RGV2aWNlQXZhaWxhYmxlKQorICAgICAgICBpZiAo
bV9zdGF0ZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpPdXRwdXRE
ZXZpY2VBdmFpbGFibGUpCiAgICAgICAgICAgICBhdmFpbGFibGVEZXZpY2VzRGlkQ2hhbmdlKCk7
CiAKLSAgICAgICAgaWYgKCFtX2RldmljZU5hbWUuaXNFbXB0eSgpICYmIG1fc3RhdGUgIT0gTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlVua25vd24pCisgICAgICAgIGlmICghbV9kZXZpY2VO
YW1lLmlzRW1wdHkoKSAmJiBtX3N0YXRlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpN
b2NrU3RhdGU6OlVua25vd24pCiAgICAgICAgICAgICBjdXJyZW50RGV2aWNlRGlkQ2hhbmdlKCk7
CiAgICAgfSk7CiB9CkBAIC0xMDEsMTUgKzEwMSwxNSBAQCB2b2lkIE1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJNb2NrOjpzdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpCiB2b2lkIE1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjppbnZhbGlkYXRlUGxheWJhY2tUYXJnZXRzKCkKIHsK
ICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6aW52YWxpZGF0
ZVBsYXliYWNrVGFyZ2V0cyIpOwotICAgIHNldFN0YXRlKGVtcHR5U3RyaW5nKCksIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpVbmtub3duKTsKKyAgICBzZXRTdGF0ZShlbXB0eVN0cmluZygp
LCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpVbmtub3duKTsKIH0KIAot
dm9pZCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jazo6c2V0U3RhdGUoY29uc3QgU3RyaW5n
JiBkZXZpY2VOYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCit2
b2lkIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrOjpzZXRTdGF0ZShjb25zdCBTdHJpbmcm
IGRldmljZU5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUp
CiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s6OnNldFN0
YXRlIC0gbmFtZSA9ICVzLCBzdGF0ZSA9IDB4JXgiLCBkZXZpY2VOYW1lLnV0ZjgoKS5kYXRhKCks
ICh1bnNpZ25lZClzdGF0ZSk7CiAKICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbdGhpcywg
c3RhdGUsIGRldmljZU5hbWVdIHsKLSAgICAgICAgaWYgKGRldmljZU5hbWUgIT0gbV9kZXZpY2VO
YW1lICYmIHN0YXRlICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpVbmtub3duKSB7Cisg
ICAgICAgIGlmIChkZXZpY2VOYW1lICE9IG1fZGV2aWNlTmFtZSAmJiBzdGF0ZSAhPSBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpVbmtub3duKSB7CiAgICAgICAgICAgICBt
X2RldmljZU5hbWUgPSBkZXZpY2VOYW1lOwogICAgICAgICAgICAgY3VycmVudERldmljZURpZENo
YW5nZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgKaW5kZXggZGUwOTZjYjg4
MWY4MjQyMTExNjU4YjhkMjE4MzlmOWM4ODVkNGJjZS4uM2U3NDM5NWJmMTZiOGU3YzhjZTlmOTcy
MGU3NTk0ZTRmMmM4N2VlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaApAQCAtNDgsNyArNDgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpIG92
ZXJyaWRlOwogICAgIHZvaWQgaW52YWxpZGF0ZVBsYXliYWNrVGFyZ2V0cygpIG92ZXJyaWRlOwog
Ci0gICAgdm9pZCBzZXRTdGF0ZShjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6U3RhdGUpOworICAgIHZvaWQgc2V0U3RhdGUoY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSk7CiAgICAgdm9pZCBkaXNtaXNzUG9wdXAoKTsK
IAogcHJpdmF0ZToKQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBtX2Rl
dmljZU5hbWU7CiAgICAgR2VuZXJpY1Rhc2tRdWV1ZTxUaW1lcj4gbV90YXNrUXVldWU7Ci0gICAg
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIG1fc3RhdGUgeyBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dDo6VW5rbm93biB9OworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
OjpNb2NrU3RhdGUgbV9zdGF0ZSB7IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3Rh
dGU6OlVua25vd24gfTsKICAgICBib29sIG1fc2hvd2luZ01lbnUgeyBmYWxzZSB9OwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGNlODgxYmZlMGM2Yjk2YmExYTNm
YmZmNjQxODI2NTY0MGY3M2RlOWEuLmUyMzk3NTM4MjE4ZDY0NTU3YmFkYzNhNmJhYzg5NjYwM2M0
NWNhYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTU1OSw3ICs1NTks
NyBAQCB2b2lkIEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdlKQog
CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBwYWdlLnNldE1vY2tN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZCh0cnVlKTsKLSAgICBwYWdlLnNldE1vY2tN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoZW1wdHlTdHJpbmcoKSwgTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ6OlVua25vd24pOworICAgIHBhZ2Uuc2V0TW9ja01lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJTdGF0ZShlbXB0eVN0cmluZygpLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dDo6TW9ja1N0YXRlOjpVbmtub3duKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPKQpAQCAt
NDUzMSwxNCArNDUzMSwxNCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnNldE1vY2tN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJgogICAgIFBhZ2UqIHBh
Z2UgPSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpOwogICAgIEFTU0VSVChwYWdl
KTsKIAotICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSA9IE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0OjpVbmtub3duOworICAgIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpNb2NrU3RhdGUgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9j
a1N0YXRlOjpVbmtub3duOwogCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KGRldmljZVN0YXRlLCAiZGV2aWNlYXZhaWxhYmxlIikpCi0gICAgICAgIHN0YXRlID0gTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6Ok91dHB1dERldmljZUF2YWlsYWJsZTsKKyAgICAgICAgc3Rh
dGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpPdXRwdXREZXZpY2VB
dmFpbGFibGU7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGV2
aWNlU3RhdGUsICJkZXZpY2V1bmF2YWlsYWJsZSIpKQotICAgICAgICBzdGF0ZSA9IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpPdXRwdXREZXZpY2VVbmF2YWlsYWJsZTsKKyAgICAgICAgc3Rh
dGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlOjpPdXRwdXREZXZpY2VV
bmF2YWlsYWJsZTsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShk
ZXZpY2VTdGF0ZSwgInVua25vd24iKSkKLSAgICAgICAgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6VW5rbm93bjsKKyAgICAgICAgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6TW9ja1N0YXRlOjpVbmtub3duOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKaW5kZXgg
YmQxOTFlNTcxZDcxZjIxMDdkZmZlYzVkZmIyNGIwZDQ0NmRjY2U2Ny4uMTg4ZmIwYzMxM2ZmYWYw
YzI1ZWNjZGE3NDZkNjdjMWFjMmE3ZjdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAtNTksNiAr
NTksNyBAQAogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICNpbmNsdWRl
IDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxh
eWJhY2tUYXJnZXRNb2NrLmg+CiAjZW5kaWYKIApAQCAtNjk3LDIwICs2OTgsMjEgQEAgdm9pZCBS
ZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29s
IHNob3VsZFBsYXkpCiAgICAgbV9wbGF5ZXItPnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0
KHNob3VsZFBsYXkpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldFdpcmVs
ZXNzUGxheWJhY2tUYXJnZXQoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQmIHRhcmdldENvbnRleHQpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldFdpcmVs
ZXNzUGxheWJhY2tUYXJnZXQoTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmJiB0YXJnZXRDb250
ZXh0KQogewogICAgIHN3aXRjaCAodGFyZ2V0Q29udGV4dC50eXBlKCkpIHsKLSAgICBjYXNlIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpBVk91dHB1dENvbnRleHRUeXBlOgotICAgICAgICBt
X3BsYXllci0+c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0Q29jb2E6OmNyZWF0ZSh0YXJnZXRDb250ZXh0LmF2T3V0cHV0Q29udGV4dCgpKSk7Cisg
ICAgY2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0
cHV0Q29udGV4dDogeworICAgICAgICBpZiAodGFyZ2V0Q29udGV4dC5kZXNlcmlhbGl6ZU91dHB1
dENvbnRleHQoKSkKKyAgICAgICAgICAgIG1fcGxheWVyLT5zZXRXaXJlbGVzc1BsYXliYWNrVGFy
Z2V0KE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKFdURk1vdmUodGFyZ2V0Q29udGV4
dCkpKTsKICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6OlR5cGU6Ok1vY2s6CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGNhc2UgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tUeXBlOgotICAgICAgICBtX3BsYXllci0+c2V0V2ly
ZWxlc3NQbGF5YmFja1RhcmdldChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TW9jazo6Y3Jl
YXRlKHRhcmdldENvbnRleHQubW9ja0RldmljZU5hbWUoKSwgdGFyZ2V0Q29udGV4dC5tb2NrU3Rh
dGUoKSkpOworICAgICAgICBtX3BsYXllci0+c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChNZWRp
YVBsYXliYWNrVGFyZ2V0TW9jazo6Y3JlYXRlKHRhcmdldENvbnRleHQuZGV2aWNlTmFtZSgpLCB0
YXJnZXRDb250ZXh0Lm1vY2tTdGF0ZSgpKSk7CiAgICAgICAgIGJyZWFrOwotI2Vsc2UKLSAgICBj
YXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrVHlwZToKICNlbmRpZgotICAgIGNh
c2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok5vbmU6CisgICAgY2FzZSBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0OgorICAgIGNhc2UgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAppbmRleCAyNGI2NjQx
YWU0ZjVmMWU3ZGZjMTA1Mzc0MTNmMGU5Y2ZkMjVlMjNmLi5iZGFlZThhZTA1ZjEwZmE0NjU3MzM0
M2Y0NzljNDI5M2Q0N2RmNmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKQEAgLTE1Miw3ICsxNTIsNyBAQCBw
dWJsaWM6CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB2b2lkIHNl
dFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wpOwogICAgIHZvaWQgc2V0U2hvdWxk
UGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCk7Ci0gICAgdm9pZCBzZXRXaXJlbGVzc1BsYXliYWNr
VGFyZ2V0KGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Jik7CisgICAg
dm9pZCBzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0JiYpOwogICAgIHZvaWQgbWVkaWFQbGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJ
c1dpcmVsZXNzQ2hhbmdlZChib29sKSBmaW5hbDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyUHJveHkuY3BwCmluZGV4IDllNmJjOTQ2NmI1Mzk5YjI0ZjU4NDAwOWI5MDBi
ZDA3ZDAwODIxMTYuLmJlZDMwZTI5Y2U0YjljNWY2YWY0MDFhYzFjYzhmMjZmYTJjNDYxYjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuY3BwCkBAIC0xMDgsNyArMTA4LDEx
IEBAIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmFjdGl2ZUF1ZGlvUm91dGVE
aWRDaGFuZ2UoU2hvdWxkUGF1c2Ugc2hvdWxkCiAKIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyUHJveHk6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9ydHNBaXJQbGF5VmlkZW8g
c3VwcG9ydHNBaXJQbGF5VmlkZW8sIFJlZjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0PiYm
IHRhcmdldCkKIHsKLSAgICBtX2dwdUNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6QWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShz
dXBwb3J0c0FpclBsYXlWaWRlbywgdGFyZ2V0LT50YXJnZXRDb250ZXh0KCkpLCB7IH0pOworICAg
IGF1dG8gY29udGV4dCA9IHRhcmdldC0+dGFyZ2V0Q29udGV4dCgpOworICAgIGlmICghY29udGV4
dC5zZXJpYWxpemVPdXRwdXRDb250ZXh0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZ3B1
Q29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9u
SGVscGVyOjpBY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKHN1cHBvcnRzQWlyUGxheVZpZGVvLCBj
b250ZXh0KSwgeyB9KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKaW5kZXggZWQwNzYxZTVlOTY2MzgyZTAwOTUzNDRjYjc1Zjk3NWZkOWVmNzdkZC4uOTY1
YWY2M2RkMDI5YTc5NjhkZjhjYTc5MTE0Njk1YjFlNTliNjlkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0zNTIsNiArMzUyLDcgQEAgZGVmIGNvbmRpdGlv
bnNfZm9yX2hlYWRlcihoZWFkZXIpOgogICAgICAgICAnIklucHV0TWV0aG9kU3RhdGUuaCInOiBb
IlBMQVRGT1JNKEdUSykiLCAiUExBVEZPUk0oV1BFKSJdLAogICAgICAgICAnIkxheWVySG9zdGlu
Z0NvbnRleHQuaCInOiBbIlBMQVRGT1JNKENPQ09BKSIsIF0sCiAgICAgICAgICciR2VzdHVyZVR5
cGVzLmgiJzogWyJQTEFURk9STShJT1NfRkFNSUxZKSJdLAorICAgICAgICAnPFdlYkNvcmUvTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4nOiBbIkVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpIl0sCiAgICAgfQogICAgIGlmIG5vdCBoZWFkZXIgaW4gY29uZGl0aW9uczoKICAgICAg
ICAgcmV0dXJuIE5vbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dl
YkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXggYmY4OGFiNjE3YmUxMjFiNGFmN2Jj
NGNkM2M0ZmMxOTdkZGE1OTc4Mi4uNTAzNDQxY2I2ZWEzNWZkM2VjYWY5Njc2ZjkyNjRkMzI4MTM1
YjM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTQxLDE0ICs0MSwyMyBAQAogI2ltcG9ydCA8VUlL
aXQvVUlGb250Lmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpCisjaW1wb3J0IDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CisjaW1w
b3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNlbmRpZgorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2FB
ZGRpdGlvbnMubW0+CisjZW5kaWYKKwogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAjaW1wb3J0ICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzLmg+CiAjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAjZW5kaWYKIAot
I2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1dl
YkNvcmVBcmd1bWVudENvZGVyc0NvY29hQWRkaXRpb25zLm1tPgorI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpCisjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExp
bmsuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTYwNiw0ICs2MTUsNTAgQEAgYm9v
bCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3Jt
RGF0YShEZWNvZGVyJiBkZWNvZGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lmIEVOQUJMRShX
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldCkKK3sKKyAgICBp
ZiAodGFyZ2V0LnR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZP
dXRwdXRDb250ZXh0KSB7CisgICAgICAgIGlmIChbUEFMOjpnZXRBVk91dHB1dENvbnRleHRDbGFz
cygpIGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woTlNTZWN1cmVDb2RpbmcpXSkKKyAgICAg
ICAgICAgIGVuY29kZXIgPDwgdGFyZ2V0Lm91dHB1dENvbnRleHQoKTsKKyAgICB9IGVsc2UgaWYg
KHRhcmdldC50eXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlh
bGl6ZWRBVk91dHB1dENvbnRleHQpIHsKKyAgICAgICAgZW5jb2RlciA8PCB0YXJnZXQuc2VyaWFs
aXplZE91dHB1dENvbnRleHQoKTsKKyAgICAgICAgZW5jb2RlciA8PCB0YXJnZXQuaGFzQWN0aXZl
Um91dGUoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisK
K2Jvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46
OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6VHlwZSBjb250ZXh0VHlwZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRh
cmdldCkKK3sKKyAgICBBU1NFUlQoY29udGV4dFR5cGUgIT0gTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OlR5cGU6Ok1vY2spOworCisgICAgaWYgKGNvbnRleHRUeXBlID09IE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91dHB1dENvbnRleHQpIHsKKyAgICAgICAgaWYgKCFb
UEFMOjpnZXRBVk91dHB1dENvbnRleHRDbGFzcygpIGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9j
b2woTlNTZWN1cmVDb2RpbmcpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg
ICBhdXRvIG91dHB1dENvbnRleHQgPSBJUEM6OmRlY29kZTxBVk91dHB1dENvbnRleHQ+KGRlY29k
ZXIsIFBBTDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSk7CisgICAgICAgIGlmICghb3V0cHV0
Q29udGV4dCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB0YXJnZXQgPSBX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCB7IFdURk1vdmUoKm91dHB1dENvbnRl
eHQpIH07CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmIChjb250ZXh0VHlw
ZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6U2VyaWFsaXplZEFWT3V0cHV0
Q29udGV4dCkgeworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBzZXJpYWxpemVkT3V0cHV0Q29u
dGV4dDsKKyAgICAgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBzZXJpYWxpemVkT3V0cHV0
Q29udGV4dCkgfHwgIXNlcmlhbGl6ZWRPdXRwdXRDb250ZXh0KQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIGJvb2wgaGFzQWN0aXZlUm91dGU7CisgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaGFzQWN0aXZlUm91dGUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgICAgIHRhcmdldCA9IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IHsg
V1RGTW92ZShzZXJpYWxpemVkT3V0cHV0Q29udGV4dCksIGhhc0FjdGl2ZVJvdXRlIH07CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgor
CiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCmluZGV4IDI1NWEyY2JjNmM3N2NlZjFlNjA3MGVhNDIwZjZiZGU5MGIy
NDBhNzEuLmY2NTExNmZmOWQ2YjAzYjFhMzMzMWNkYmYzNmU0N2Q4YTQxMThjYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjQ1Nywx
NyArMjQ1NywxNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8TWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTQogICAgIGJvb2wgaGFzUGxhdGZv
cm1EYXRhID0gdGFyZ2V0LmVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKTsKICAgICBlbmNv
ZGVyIDw8IGhhc1BsYXRmb3JtRGF0YTsKIAotICAgIGludDMyX3QgdGFyZ2V0VHlwZSA9IHRhcmdl
dC50eXBlKCk7Ci0gICAgZW5jb2RlciA8PCB0YXJnZXRUeXBlOworICAgIE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpUeXBlIGNvbnRleHRUeXBlID0gdGFyZ2V0LnR5cGUoKTsKKyAgICBlbmNv
ZGVyIDw8IGNvbnRleHRUeXBlOwogCiAgICAgaWYgKHRhcmdldC5lbmNvZGluZ1JlcXVpcmVzUGxh
dGZvcm1EYXRhKCkpIHsKICAgICAgICAgZW5jb2RlUGxhdGZvcm1EYXRhKGVuY29kZXIsIHRhcmdl
dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQodGFyZ2V0VHlwZSA9PSBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1R5cGUpOwotICAgIGVuY29kZXIgPDwgdGFy
Z2V0Lm1vY2tEZXZpY2VOYW1lKCk7Ci0gICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxpbnQzMl90
Pih0YXJnZXQubW9ja1N0YXRlKCkpOworICAgIEFTU0VSVChjb250ZXh0VHlwZSA9PSBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6TW9jayk7CisgICAgZW5jb2RlciA8PCB0YXJnZXQu
ZGV2aWNlTmFtZSgpOworICAgIGVuY29kZXIgPDwgdGFyZ2V0Lm1vY2tTdGF0ZSgpOwogfQogCiBi
b29sIEFyZ3VtZW50Q29kZXI8TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldCkKQEAgLTI0
NzYsMjQgKzI0NzYsMjQgQEAgYm9vbCBBcmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE1lZGlhUGwKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGhhc1BsYXRmb3JtRGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGludDMyX3QgdGFyZ2V0VHlwZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRhcmdldFR5cGUp
KQorICAgIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlIGNvbnRleHRUeXBlOworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoY29udGV4dFR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBpZiAoaGFzUGxhdGZvcm1EYXRhKQotICAgICAgICByZXR1cm4gZGVjb2RlUGxhdGZv
cm1EYXRhKGRlY29kZXIsIHRhcmdldCk7CisgICAgICAgIHJldHVybiBkZWNvZGVQbGF0Zm9ybURh
dGEoZGVjb2RlciwgY29udGV4dFR5cGUsIHRhcmdldCk7CiAKLSAgICBBU1NFUlQodGFyZ2V0VHlw
ZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1R5cGUpOwotCi0gICAgU3RyaW5n
IG1vY2tEZXZpY2VOYW1lOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUobW9ja0RldmljZU5hbWUp
KQorICAgIEFTU0VSVChjb250ZXh0VHlwZSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
VHlwZTo6TW9jayk7CisgICAgU3RyaW5nIGRldmljZU5hbWU7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkZXZpY2VOYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaW50MzJfdCBt
b2NrU3RhdGU7CisgICAgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tTdGF0ZSBtb2Nr
U3RhdGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtb2NrU3RhdGUpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICB0YXJnZXQgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChtb2Nr
RGV2aWNlTmFtZSwgc3RhdGljX2Nhc3Q8TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRl
Pihtb2NrU3RhdGUpKTsKKyAgICB0YXJnZXQgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dChk
ZXZpY2VOYW1lLCBtb2NrU3RhdGUpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggNjE5NzA4
NzgyNTExNTQ4YjYyZjI3MTU2YmQzZjQ3ZDcxYTMxZWFjMi4uMTU5MWIwNDhhYTU3MTYxYjZiYTg5
ZWEzNmM0MzdmNzc2NDVjZTQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgKQEAgLTU0LDYgKzU0LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJs
UHJveHlTZXR0aW5ncy5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4K
KyNlbmRpZgorCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICNpbmNsdWRlIDxXZWJDb3Jl
L0NETUluc3RhbmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZVNlc3Npb24uaD4K
QEAgLTE5NSwxMCArMTk5LDYgQEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50OwogY2xhc3Mg
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKQotY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ7Ci0j
ZW5kaWYKLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBzdHJ1Y3QgTWVkaWFDb25zdHJhaW50
czsKICNlbmRpZgpAQCAtNjQ0LDcgKzY0NCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+IHsKICAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0Jik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNv
ZGVyJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmKTsKICAgICBzdGF0aWMg
dm9pZCBlbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0Jik7Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQmKTsKKyAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlUGxh
dGZvcm1EYXRhKERlY29kZXImLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
VHlwZSwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmKTsKIH07CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENv
ZGVyc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNNYWMubW0KaW5kZXggMTg2YjdiYjJkYjZmYzRlMmJjMTMzZjcxNzVjY2Y5YzM3NjM4OTIzMC4u
OTI1ZjVhNGQ1YTQ4OGQ0ODg0MDRlYzYyOTUyZDhhMjQ5YTNmMDAxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCkBAIC00
MiwxMiArNDIsNiBAQAogI2ltcG9ydCA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNpbXBvcnQgPHd0
Zi9jZi9UeXBlQ2FzdHNDRi5oPgogCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkKLSNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4KLSNpbXBv
cnQgPG9iamMvcnVudGltZS5oPgotI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRM
aW5rLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIElQQyB7CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8pCkBAIC00MDMsMjkgKzM5
Nyw2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXI+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlCiAKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLQotdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQp
Ci17Ci0gICAgaWYgKFtQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgY29uZm9ybXNUb1By
b3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQotICAgICAgICBlbmNvZGVyIDw8IHRh
cmdldC5hdk91dHB1dENvbnRleHQoKTsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXIm
IGRlY29kZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQpCi17
Ci0gICAgaWYgKCFbUEFMOjpnZXRBVk91dHB1dENvbnRleHRDbGFzcygpIGNvbmZvcm1zVG9Qcm90
b2NvbDpAcHJvdG9jb2woTlNTZWN1cmVDb2RpbmcpXSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgYXV0byBjb250ZXh0ID0gSVBDOjpkZWNvZGU8QVZPdXRwdXRDb250ZXh0PihkZWNvZGVy
LCBQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkpOwotICAgIGlmICghY29udGV4dCkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgdGFyZ2V0ID0gV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQgeyBjb250ZXh0LT5nZXQoKSB9OwotICAgIHJldHVybiB0cnVlOwotfQot
Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShWSURFTykKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZh
bHVlJiB2YWx1ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmlu
ZGV4IDczMmJkNGM1ODc3ZGY1NTAyODNjMWU4ZmU5NWY0NWZjZjQ5NzZhM2IuLmJkYzI1ZjcxOGE0
NDkwMjVlYTZmYWE0Yzk5OTUyODU1MmEwYzA2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtNzg0NCwxNCArNzg0NCw2IEBAIHN0YXRpYyBjb25zdCBWZWN0
b3I8QVNDSUlMaXRlcmFsPiYgbWVkaWFSZWxhdGVkSU9LaXRDbGFzc2VzKCkKICAgICB9KTsKICAg
ICByZXR1cm4gc2VydmljZXM7CiB9Ci0KLXN0YXRpYyBjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFs
PiYgdGVtcG9yYXJ5TWFjaFNlcnZpY2VzKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBzZXJ2
aWNlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8QVNDSUlMaXRlcmFsPiB7Ci0gICAgICAg
ICJjb20uYXBwbGUuY29yZW1lZGlhLnJvdXRpbmdjb250ZXh0LnhwYyJfcyAvLyBSZW1vdmUgYWZ0
ZXIgPHJkYXI6Ly83NjQwMzMwMj4gaXMgZml4ZWQuCi0gICAgfSk7Ci0gICAgcmV0dXJuIHNlcnZp
Y2VzOwotfQogI2VuZGlmCiAKIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5
OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBEcmF3aW5nQXJl
YVByb3h5JiBkcmF3aW5nQXJlYSwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNp
dGVQb2xpY2llcykKQEAgLTc5NDcsOSArNzkzOSw2IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9j
CiAgICAgICAgIC8vIEZJWE1FKDIwNzcxNik6IFRoZSBmb2xsb3dpbmcgc2hvdWxkIGJlIHJlbW92
ZWQgd2hlbiB0aGUgR1BVIHByb2Nlc3MgaXMgY29tcGxldGUuCiAgICAgICAgIHBhcmFtZXRlcnMu
bWVkaWFFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zv
ck1hY2hMb29rdXAobWVkaWFSZWxhdGVkTWFjaFNlcnZpY2VzKCksIFdURjo6bnVsbG9wdCk7CiAg
ICAgICAgIHBhcmFtZXRlcnMubWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMobWVkaWFSZWxhdGVk
SU9LaXRDbGFzc2VzKCksIFdURjo6bnVsbG9wdCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8g
RklYTUUoMjI0MzI3KTogUmVtb3ZlIHRoaXMgZWxzZSBjbGF1c2Ugb25jZSA8cmRhcjovLzc2NDAz
MzAyPiBpcyBmaXhlZC4KLSAgICAgICAgcGFyYW1ldGVycy5tZWRpYUV4dGVuc2lvbkhhbmRsZXMg
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCh0ZW1wb3JhcnlN
YWNoU2VydmljZXMoKSwgV1RGOjpudWxsb3B0KTsKICAgICB9CiAKICAgICBpZiAoIXByZWZlcmVu
Y2VzKCkudXNlR1BVUHJvY2Vzc0Zvck1lZGlhRW5hYmxlZCgpCkBAIC05NDE1LDcgKzk0MDQsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKICAgICBwYWdlQ2xpZW50KCkubWVkaWFTZXNzaW9uTWFuYWdlcigp
LnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChlbmFibGVkKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6
U3RhdGUgc3RhdGUpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCiB7CiAgICAgcGFnZUNsaWVudCgpLm1lZGlh
U2Vzc2lvbk1hbmFnZXIoKS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKG5h
bWUsIHN0YXRlKTsKIH0KQEAgLTk0MzAsNyArOTQxOSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0UGxheWJhY2tUYXJnZXQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBj
b250ZQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRTZWxlY3RlZChjb250ZXh0
SWQsIHRhcmdldC0+dGFyZ2V0Q29udGV4dCgpKSk7CisgICAgYXV0byBjb250ZXh0ID0gdGFyZ2V0
LT50YXJnZXRDb250ZXh0KCk7CisgICAgQVNTRVJUKGNvbnRleHQudHlwZSgpICE9IE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpTZXJpYWxpemVkQVZPdXRwdXRDb250ZXh0KTsKKyAg
ICBpZiAocHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yTWVkaWFFbmFibGVkKCkpCisgICAg
ICAgIGNvbnRleHQuc2VyaWFsaXplT3V0cHV0Q29udGV4dCgpOworCisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRTZWxlY3RlZChjb250ZXh0SWQsIGNvbnRleHQpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlk
Q2hhbmdlKFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBi
b29sIGF2YWlsYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
NjhhM2VhYmVlNDE5M2RkYjkyZTY2YmQwOGZlYWRhNzlkYjZlNjYyZi4uOWZkZDQxNTk0MGMwOWE4
ZGZjNzk2OWVhM2NiYzg0ZWNlMzZmN2Y3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKQEAgLTk0LDcgKzk0LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dFBvaW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
ZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQcm9kdWNlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtRXZlbnQuaD4KQEAgLTEyOSw2ICsxMjgsMTAgQEAKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQuaD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNs
dWRlICJHZXN0dXJlVHlwZXMuaCIKICNpbmNsdWRlICJXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQu
aCIKQEAgLTE1NjcsNyArMTU3MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3dQbGF5YmFja1Rh
cmdldFBpY2tlcihXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBib29sIGhhc1ZpZGVvKTsKICAgICB2b2lkIHBs
YXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6UGxheWJhY2tU
YXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVk
aWFTdGF0ZUZsYWdzKTsKICAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
RW5hYmxlZChib29sKTsKLSAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
U3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
OlN0YXRlKTsKKyAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUo
Y29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1vY2tT
dGF0ZSk7CiAgICAgdm9pZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1
cCgpOwogCiAgICAgLy8gV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDJjYWMzZjFj
YjA1ZDFjZDdiNWY3NzFlZTEyYzBlNzI5ZTFmMWQ4Y2YuLjdlOThiMDg4ZDkyMmVlMTE0NDk3MzBh
MGU1NTgxMmJlMjY0NDc1MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTQ3Niw3ICs0NzYsNyBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlUHJveHkgewogICAgIFNob3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJDb3JlOjpQbGF5YmFj
a1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6RmxvYXRS
ZWN0IHBpY2tlckxvY2F0aW9uLCBib29sIGhhc1ZpZGVvKQogICAgIFBsYXliYWNrVGFyZ2V0UGlj
a2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIHVuc2lnbmVkIG1lZGlhU3RhdGUpCiAgICAgU2V0TW9j
a01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wgZW5hYmxlZCkKLSAgICBTZXRN
b2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKFN0cmluZyBuYW1lLCB1bnNpZ25lZCBw
aWNrZXJTdGF0ZSkKKyAgICBTZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKFN0
cmluZyBuYW1lLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQ6Ok1vY2tTdGF0ZSBwaWNrZXJTdGF0ZSkKICAgICBNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlckRpc21pc3NQb3B1cCgpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlci5jcHAKaW5kZXggMmFiNWY5MTNjZGU4M2NlZGM1NGE3YThmZTBlZTA5NTNiY2U0NDk1Yi4u
NDg2MmFmNzY0NTY3ZDZiZjZhZmY2OGQyODc4ZjhmOTRlMTk1OGYyNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwCkBAIC04MSwxMiArODEsMTEgQEAgdm9pZCBSZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXI6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoaW50IHBp
ZCkKIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFjdGl2ZVZpZGVvUm91dGVEaWRD
aGFuZ2UoU3VwcG9ydHNBaXJQbGF5VmlkZW8gc3VwcG9ydHNBaXJQbGF5VmlkZW8sIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0JiYgdGFyZ2V0Q29udGV4dCkKIHsKLSAgICBpZiAodGFyZ2V0Q29u
dGV4dC50eXBlKCkgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OkFWT3V0cHV0Q29udGV4
dFR5cGUpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgQVNTRVJUKHRhcmdl
dENvbnRleHQudHlwZSgpICE9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpBVk91
dHB1dENvbnRleHQpOworICAgIGlmICh0YXJnZXRDb250ZXh0LnR5cGUoKSA9PSBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0KQogICAgICAgICByZXR1cm47
Ci0gICAgfQogCi0gICAgV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVWaWRlb1Jv
dXRlRGlkQ2hhbmdlKHN1cHBvcnRzQWlyUGxheVZpZGVvLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0Q29jb2E6OmNyZWF0ZSh0YXJnZXRDb250ZXh0LmF2T3V0cHV0Q29udGV4dCgpKSk7Cisg
ICAgV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdl
KHN1cHBvcnRzQWlyUGxheVZpZGVvLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6
OmNyZWF0ZShXVEZNb3ZlKHRhcmdldENvbnRleHQpKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKaW5kZXggYmNjNGMxN2FjMjk1MjEyY2JhNjRkZWRkMWM5YjNhOTA2Y2EwNTEwMS4uNWZj
ODU1NjM3NjBlYTc1ZWMxMmVkMTRhOWUyNzM2ODFmMjUxYzA5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKQEAgLTEzNTIsNyArMTM1Miw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRNb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIG1fcGFn
ZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyRW5hYmxlZChlbmFibGVkKSk7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRN
b2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQordm9pZCBXZWJDaHJvbWVDbGll
bnQ6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBu
YW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlIHN0YXRlKQogewogICAg
IG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldE1vY2tNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyU3RhdGUobmFtZSwgc3RhdGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRl
eCA2ODEyZTY0MmZlY2RjYWE3YjFmNTFmZTA3MTI1ODBhN2Q0MmM0ZWYwLi41NmNmNmI5MmVkOWEx
MDM2ZGJkN2QwNjQ4NjNjNGU3NjgxNDJjZGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zNzgs
NyArMzc4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihX
ZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYsIGJvb2wpIGZpbmFsOwogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNr
ZXJDbGllbnRTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRl
eHRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpIGZp
bmFsOwogICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJv
b2wpIGZpbmFsOwotICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0
ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3Rh
dGUpIGZpbmFsOworICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0
ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9j
a1N0YXRlKSBmaW5hbDsKICAgICB2b2lkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlz
bWlzc1BvcHVwKCkgZmluYWw7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IGFlYjI1ZGFiODQyMDY4NGE5NTAyMzg2YWJmODNhZTZiZTM4
Y2U5ODYuLjFlNjMzNzljYWY4NzdiNTkyNjZiZmM3MDM3MDkxNjAwOTYwMzZlYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE3OTEsNyArMTc5MSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRTaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVu
dHMoYm9vbCBkaXNwYXRjaCkgeyBtX3Nob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyA9
IGRpc3BhdGNoOyB9CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIHBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQoV2Vi
Q29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIG91dHB1dERldmljZSkgY29uc3Q7CisgICAg
dm9pZCBwbGF5YmFja1RhcmdldFNlbGVjdGVkKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50
Q29udGV4dElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiYp
IGNvbnN0OwogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoV2Vi
Q29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgYm9vbCk7CiAgICAg
dm9pZCBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChXZWJDb3JlOjpQbGF5YmFja1Rhcmdl
dENsaWVudENvbnRleHRJZGVudGlmaWVyLCBib29sKTsKICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0
UGlja2VyV2FzRGlzbWlzc2VkKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElk
ZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbQppbmRleCA3NGRhNjM1Nzg4MmNkMDEzMDIwODQwOTdmMDY0ZDIxYzNiOTE1
ZDA0Li42MmU3OThmZTRjZDVkNzBiOWIyM2YwMDg2N2I1OGRhNGEyNzU4ZjE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAt
MzUsNyArMzUsNiBAQAogI2ltcG9ydCAiRm9udEluZm8uaCIKICNpbXBvcnQgIkZyYW1lSW5mb0Rh
dGEuaCIKICNpbXBvcnQgIkluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oIgotI2ltcG9ydCAi
UERGS2l0U29mdExpbmsuaCIKICNpbXBvcnQgIlBERlBsdWdpbi5oIgogI2ltcG9ydCAiUGFnZUJh
bm5lci5oIgogI2ltcG9ydCAiUGx1Z2luVmlldy5oIgpAQCAtOTksOSArOTgsMTIgQEAKIAogI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAjaW1wb3J0IDxXZWJDb3JlL01lZGlh
UGxheWJhY2tUYXJnZXRDb2NvYS5oPgorI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5o
PgogI2VuZGlmCiAKKyNpbXBvcnQgIlBERktpdFNvZnRMaW5rLmgiCisKIG5hbWVzcGFjZSBXZWJL
aXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTEwNDIsMTYgKzEwNDQsMTcgQEAg
dm9pZCBXZWJQYWdlOjpkaWRVcGRhdGVSZW5kZXJpbmcoKQogfQogCiAjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi12b2lkIFdlYlBh
Z2U6OnBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRl
bnRpZmllciBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0JiB0YXJnZXRDb250ZXh0KSBjb25zdAordm9pZCBXZWJQYWdlOjpwbGF5YmFja1RhcmdldFNl
bGVjdGVkKFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmIHRhcmdldENvbnRleHQpIGNvbnN0
CiB7CiAgICAgc3dpdGNoICh0YXJnZXRDb250ZXh0LnR5cGUoKSkgewotICAgIGNhc2UgTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQ6OkFWT3V0cHV0Q29udGV4dFR5cGU6Ci0gICAgICAgIG1fcGFn
ZS0+c2V0UGxheWJhY2tUYXJnZXQoY29udGV4dElkLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFy
Z2V0Q29jb2E6OmNyZWF0ZSh0YXJnZXRDb250ZXh0LmF2T3V0cHV0Q29udGV4dCgpKSk7CisgICAg
Y2FzZSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VHlwZTo6QVZPdXRwdXRDb250ZXh0Ogor
ICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6OlNlcmlhbGl6ZWRBVk91
dHB1dENvbnRleHQ6CisgICAgICAgIG1fcGFnZS0+c2V0UGxheWJhY2tUYXJnZXQoY29udGV4dElk
LCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZShXVEZNb3ZlKHRhcmdldENvbnRleHQp
KSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6
Ok1vY2tUeXBlOgotICAgICAgICBtX3BhZ2UtPnNldFBsYXliYWNrVGFyZ2V0KGNvbnRleHRJZCwg
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldE1vY2s6OmNyZWF0ZSh0YXJnZXRDb250ZXh0Lm1v
Y2tEZXZpY2VOYW1lKCksIHRhcmdldENvbnRleHQubW9ja1N0YXRlKCkpKTsKKyAgICBjYXNlIE1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpUeXBlOjpNb2NrOgorICAgICAgICBtX3BhZ2UtPnNl
dFBsYXliYWNrVGFyZ2V0KGNvbnRleHRJZCwgTWVkaWFQbGF5YmFja1RhcmdldE1vY2s6OmNyZWF0
ZSh0YXJnZXRDb250ZXh0LmRldmljZU5hbWUoKSwgdGFyZ2V0Q29udGV4dC5tb2NrU3RhdGUoKSkp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpO
b25lOgorICAgIGNhc2UgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlR5cGU6Ok5vbmU6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCmluZGV4IGI4OWIyNjZjM2Q3OWFjZDI0MWRmMzZiNWZjZTJmMWQyZWQ4ZGI3NDgu
LmYzZDQ3MTZhODkzM2Q5ZjI0MmY4ZWYxMjE1YTg2NjIzNDBmODk3YTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCkBAIC0yNDMsNyArMjQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNob3dQbGF5YmFja1Rh
cmdldFBpY2tlcihXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgLyogaGFzVmlkZW8gKi8pIGZpbmFsOwog
ICAgIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5nZShXZWJDb3Jl
OjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVBy
b2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpIGZpbmFsOwogICAgIHZvaWQgc2V0TW9ja01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpIGZpbmFsOwotICAgIHZvaWQgc2V0TW9ja01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpIGZpbmFsOworICAgIHZvaWQgc2V0TW9ja01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRlKSBmaW5hbDsKICAgICB2b2lkIG1vY2tN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCkgb3ZlcnJpZGU7CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IGIzNGU4ZDlkOGVlOTE1YzYxYTBjNDlmZjQwZTJkNjZm
ZWQyNGEwNGUuLmM5NjQ4M2ZmOTZlYjdmZDhjYzE5NTI3YzM1NDVkOWI4M2IxNGE5YjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQubW0KQEAgLTExMjksNyArMTEyOSw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50
OjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBlbmFibGVkKQog
ICAgIFttX3dlYlZpZXcgX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZDpl
bmFibGVkXTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldE1vY2tNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6U3RhdGUgc3RhdGUpCit2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUgc3RhdGUpCiB7CiAgICAgW21fd2ViVmlldyBfc2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOm5hbWUgc3RhdGU6c3RhdGVdOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaAppbmRleCAwYjkyMzgzNWU5ZTE1YjZiODA0NWI0OWFm
ZTI5ZTZhYWIwM2VjZmNhLi44Y2EzMjk0N2E1YjQ2ZTA2N2I4ZThiYWU0NDYzOTNlYmI5MGU4NmVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViQ29yZTo6UGxheWJhY2tUYXJn
ZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgYm9v
bCBoYXNWaWRlbyk7CiAgICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tlckNsaWVudFN0YXRlRGlk
Q2hhbmdlKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIFdl
YkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyk7CiAgICAgdm9pZCBzZXRNb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCk7Ci0gICAgdm9pZCBzZXRNb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgdm9pZCBzZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUpOwogICAgIHZvaWQgbW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tCmluZGV4IDczNDQzNTY3NWFiODA5YjUwZWM1ZWYz
OGFiOWY3N2NhMTQ4YjMxZjEuLjdkYmQ1ODk0NzU0MDVhMTZlYmRkMGZhOWJjZmE2MmMzMzdlNzQx
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0KQEAgLTY4LDcgKzY4LDcgQEAgdm9p
ZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlckVuYWJsZWQoYm9vbAogICAgIFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNoYXJlZCgpLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChlbmFibGVk
KTsKIH0KIAotdm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpzZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlIHN0YXRlKQordm9pZCBXZWJNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNv
bnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6Ok1v
Y2tTdGF0ZSBzdGF0ZSkKIHsKICAgICBXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
aGFyZWQoKS5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKG5hbWUsIHN0YXRl
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA1
YjBlZThhM2FjOGMzMzNiNmVlMzQ0Y2RkOWMzYjU1NzY1YzI2ZmYwLi40OTJhZjYwMWNmN2FjNGRm
NDY0NTBiMDhhYWE1YzMyMGVhMmU2ZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCkBAIC05MjMyLDcgKzkyMzIsNyBAQCBib29sIExheWVyRmx1c2hDb250
cm9sbGVyOjpmbHVzaExheWVycygpCiAgICAgW3NlbGYgX2RldmljZVBpY2tlcl0tPnNldE1vY2tN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChlbmFibGVkKTsKIH0KIAotLSAodm9pZClf
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOihOU1N0cmluZyAqKW5hbWUgc3Rh
dGU6KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSlzdGF0ZQorLSAo
dm9pZClfc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOihOU1N0cmluZyAqKW5h
bWUgc3RhdGU6KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpNb2NrU3RhdGUp
c3RhdGUKIHsKICAgICBbc2VsZiBfZGV2aWNlUGlja2VyXS0+c2V0TW9ja01lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJTdGF0ZShuYW1lLCBzdGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCAzYWUwZDNhYTI2MmQ5NTIz
MzBjMWM4MmMzMjU1MGQ5YTIxYTUwMTRmLi4wNGI4YzM2OGNjYWY4NTI0ZDA4NTkzNzJkNjA1OGY0
OGYxN2E2ZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlld0ludGVybmFsLmgKQEAgLTMyNyw3ICszMjcsNyBAQCBXZWJMYXlvdXRNaWxlc3RvbmVzIGtp
dExheW91dE1pbGVzdG9uZXMoT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4pOwog
LSAodm9pZClfc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyOihXZWJDb3JlOjpQbGF5YmFja1Rhcmdl
dENsaWVudENvbnRleHRJZGVudGlmaWVyKWNvbnRleHRJZCBsb2NhdGlvbjooY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmKWxvY2F0aW9uIGhhc1ZpZGVvOihCT09MKWhhc1ZpZGVvOwogLSAodm9pZClf
cGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5nZTooV2ViQ29yZTo6UGxheWJh
Y2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciljb250ZXh0SWQgc3RhdGU6KFdlYkNvcmU6
Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncylzdGF0ZTsKIC0gKHZvaWQpX3NldE1vY2tN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZDooYm9vbCllbmFibGVkOwotLSAodm9pZClf
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJOYW1lOihOU1N0cmluZyAqKW5hbWUgc3Rh
dGU6KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSlzdGF0ZTsKKy0g
KHZvaWQpX3NldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTmFtZTooTlNTdHJpbmcgKilu
YW1lIHN0YXRlOihXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6TW9ja1N0YXRl
KXN0YXRlOwogLSAodm9pZClfbW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9w
dXA7CiAjZW5kaWYKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>