<?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>220919</bug_id>
          
          <creation_ts>2021-01-25 05:57:31 -0800</creation_ts>
          <short_desc>MachSemaphore does not work well with IPC messages</short_desc>
          <delta_ts>2021-03-26 13:19:20 -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>WebKit2</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>217211</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1722041</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-25 05:57:31 -0800</bug_when>
    <thetext>MachSemaphore does not work well with IPC messages
1) It cannot be sent as &quot;MachSemaphore semaphore&quot;, only as &quot;MachSendRight semaphoreSendRight&quot;.
2) It cannot be part of an object that is received, since it does not have move constructors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722047</commentid>
    <comment_count>1</comment_count>
      <attachid>418285</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-25 06:17:01 -0800</bug_when>
    <thetext>Created attachment 418285
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722081</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-25 08:44:39 -0800</bug_when>
    <thetext>Curious to know how others feel about this change. I came up with the current pattern and I thought it was pretty clear. But if people feel it would be nicer to send a MachSemaphore over IPC then I am certainly not opposed to it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722084</commentid>
    <comment_count>3</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-01-25 08:49:06 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #2)
&gt; Curious to know how others feel about this change. I came up with the
&gt; current pattern and I thought it was pretty clear. But if people feel it
&gt; would be nicer to send a MachSemaphore over IPC then I am certainly not
&gt; opposed to it.

I agree. Sharing mach ports (MachSendRights) between processes is already a pretty well-established pattern in WebKit2, but making it slightly easier by folding more of the logic into WTF::MachSemaphore doesn&apos;t seem like a bad idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722096</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-25 09:13:22 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #2)
&gt; Curious to know how others feel about this change. I came up with the
&gt; current pattern and I thought it was pretty clear. But if people feel it
&gt; would be nicer to send a MachSemaphore over IPC then I am certainly not
&gt; opposed to it.

Keep in mind, for now at least, it would mean that we have 2 ways to do this: send the whole MachSemaphore or send a MachSendRight since this patch does not update existing users of MachSendRight. Having more than one way to do one thing can be confusing.

It is also not super clear to me how I would update my existing call site to this new pattern. It&apos;s not like you send a MachSemaphore to another process and forget about it. You&apos;d want to keep the MachSemaphore for yourself too. While this patch adds a MachSemaphore move constructor, there is no copy construct AFAICT. So I am not super clear on how it would look. This is why I don&apos;t particularly like when we add new functionality that is not used in the code. It would have been nicer if existing code would have been ported in this patch so we could have judged more easily how much better it looks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722159</commentid>
    <comment_count>5</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-25 11:29:39 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; It would have been nicer if existing code would have been ported
&gt; in this patch so we could have judged more easily how much better it looks.

I did write this too, but the existing codepaths had a bit of auxiliary issues that did distract to get this completed for what I needed.

I can change this to just do the move constructor, operator and revert the encoder, decoder, messages.py. This way MachSemaphore can be part of a decoded object (Optional&lt;MyObjThatHasMachSemaphore&gt;). Does this sound better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722162</commentid>
    <comment_count>6</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-25 11:31:45 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)

&gt; It is also not super clear to me how I would update my existing call site to
&gt; this new pattern. It&apos;s not like you send a MachSemaphore to another process
&gt; and forget about it. You&apos;d want to keep the MachSemaphore for yourself too.
&gt; While this patch adds a MachSemaphore move constructor

Sending (encoding) and move constructor do not relate.

In this patch, you keep the semaphore you have, business as usual. It&apos;s also just encoded business as usual.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722165</commentid>
    <comment_count>7</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-25 11:33:51 -0800</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #5)
&gt; (In reply to Chris Dumez from comment #4)
&gt; &gt; It would have been nicer if existing code would have been ported
&gt; &gt; in this patch so we could have judged more easily how much better it looks.
&gt; 
&gt; I did write this too, but the existing codepaths had a bit of auxiliary
&gt; issues that did distract to get this completed for what I needed.


Alternatively I can work tomorrow to fix the auxiliary issues in your and Wenson&apos;s call sites, but I don&apos;t know if that&apos;s what is the best.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722169</commentid>
    <comment_count>8</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-25 11:41:30 -0800</bug_when>
    <thetext>&gt; Sharing mach ports (MachSendRights) between processes is already a pretty well-established pattern in WebKit2

FWIW: Sharing a send right is a means to an end. Typically in typed systems you want to communicate the &quot;end&quot;, not the means.

Compare the established patterns:
- SendVector(int64_t sz, 7 ints). 
- SendVector(Vector)

- SendSemaphore(MachSendRight semaphoreSendRight)
- SendSemaphore(MachSemaphore semaphore)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722202</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-25 12:33:37 -0800</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #8)
&gt; &gt; Sharing mach ports (MachSendRights) between processes is already a pretty well-established pattern in WebKit2
&gt; 
&gt; FWIW: Sharing a send right is a means to an end. Typically in typed systems
&gt; you want to communicate the &quot;end&quot;, not the means.
&gt; 
&gt; Compare the established patterns:
&gt; - SendVector(int64_t sz, 7 ints). 
&gt; - SendVector(Vector)
&gt; 
&gt; - SendSemaphore(MachSendRight semaphoreSendRight)
&gt; - SendSemaphore(MachSemaphore semaphore)

My suggestion would be to update one call site at least (either mine or Wenson) so we can judge how it looks compared to now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722458</commentid>
    <comment_count>10</comment_count>
      <attachid>418396</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-26 04:59:30 -0800</bug_when>
    <thetext>Created attachment 418396
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722464</commentid>
    <comment_count>11</comment_count>
      <attachid>418399</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-26 05:05:57 -0800</bug_when>
    <thetext>Created attachment 418399
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722467</commentid>
    <comment_count>12</comment_count>
      <attachid>418401</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-26 05:16:55 -0800</bug_when>
    <thetext>Created attachment 418401
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722470</commentid>
    <comment_count>13</comment_count>
      <attachid>418403</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-26 05:39:52 -0800</bug_when>
    <thetext>Created attachment 418403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722475</commentid>
    <comment_count>14</comment_count>
      <attachid>418404</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-26 05:46:53 -0800</bug_when>
    <thetext>Created attachment 418404
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722486</commentid>
    <comment_count>15</comment_count>
      <attachid>418410</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-26 06:12:28 -0800</bug_when>
    <thetext>Created attachment 418410
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722525</commentid>
    <comment_count>16</comment_count>
      <attachid>418410</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-26 08:44:12 -0800</bug_when>
    <thetext>Comment on attachment 418410
Patch

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

&gt; Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h:129
&gt; +#if PLATFORM(COCOA)

This is more if-defing than before so it does not look as nice.

&gt; Source/WebKit/GPUProcess/GPUConnectionToWebProcess.messages.in:26
&gt; +#if PLATFORM(COCOA)

Ditto.

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:67
&gt; +Ref&lt;RemoteRenderingBackend&gt; RemoteRenderingBackend::create(GPUConnectionToWebProcess&amp; gpuConnectionToWebProcess, RenderingBackendIdentifier identifier, PlatformCreateParams&amp;&amp; params)

No abbreviations in WebKit: params -&gt; parameters

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:72
&gt; +RemoteRenderingBackend::RemoteRenderingBackend(GPUConnectionToWebProcess&amp; gpuConnectionToWebProcess, RenderingBackendIdentifier identifier, PlatformCreateParams&amp;&amp; params)

ditto.

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h:69
&gt; +    struct PlatformCreateParams {

No abbreviations.

&gt; Source/WebKit/GPUProcess/media/RemoteAudioDestinationManager.cpp:54
&gt; +    struct PlatformCreateParams {

No abbreviations

&gt; Source/WebKit/GPUProcess/media/RemoteAudioDestinationManager.cpp:185
&gt; +void RemoteAudioDestinationManager::deleteAudioDestination(RemoteAudioDestinationIdentifier identifier, Messages::RemoteAudioDestinationManager::DeleteAudioDestinationAsyncReply&amp;&amp; completionHandler)

Why these changes to replace CompletionHandlers with other more obscure types? This is a lot less readable. CompletionHandler is the common type we use for async IPC functions and its type makes it clear what we need to return.

&gt; Source/WebKit/Shared/RemoteRenderingBackendCreationParameters.h:-35
&gt; -struct RemoteRenderingBackendCreationParameters {

This struct abstracted away some ifdefing so I am unclear why we are removing it.

&gt; Source/WebKit/WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp:-209
&gt; -    m_renderSemaphore = nullptr;

Why isn&apos;t this resetting the semaphore anymore?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722594</commentid>
    <comment_count>17</comment_count>
      <attachid>418410</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-26 10:42:24 -0800</bug_when>
    <thetext>Comment on attachment 418410
Patch

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

Given that there&apos;s reclutancy to read the ChangeLog, I&apos;m getting a feeling the change isn&apos;t welcome. Fixing all that&apos;s wrong in the call sites isn&apos;t necessarily my war, so I&apos;m definitively fine dropping the feature and just getting the move constructors.
Even though I think I sending MachSemaphore over tag type is correct insofar as MachSemaphores should be in messages.in (they shouldn&apos;t) I&apos;m not the owner of the components and I don&apos;t think I should be arguing for changing them..

&gt;&gt; Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h:129
&gt;&gt; +#if PLATFORM(COCOA)
&gt; 
&gt; This is more if-defing than before so it does not look as nice.

Sure, but the de-facto webkit .messages.in style is ifdefing, if I understand correctly. There is not a de-facto rule as to &quot;you should introduce a yet another manual struct to extract the platform specific with possibility to make errors in decoding/encoding&quot;. Not only that, but in general case it is incorrect, as explained in the commit msg.

&gt;&gt; Source/WebKit/Shared/RemoteRenderingBackendCreationParameters.h:-35
&gt;&gt; -struct RemoteRenderingBackendCreationParameters {
&gt; 
&gt; This struct abstracted away some ifdefing so I am unclear why we are removing it.

Explained in the commit msg, it is incorrect method to pass information to the IPC call.

&gt;&gt; Source/WebKit/WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp:-209
&gt;&gt; -    m_renderSemaphore = nullptr;
&gt; 
&gt; Why isn&apos;t this resetting the semaphore anymore?

The semaphore send direction is changed, as explained in the commit message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722595</commentid>
    <comment_count>18</comment_count>
      <attachid>418446</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-26 10:44:47 -0800</bug_when>
    <thetext>Created attachment 418446
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722632</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-26 11:48:10 -0800</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #17)
&gt; Comment on attachment 418410 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=418410&amp;action=review
&gt; 
&gt; Given that there&apos;s reclutancy to read the ChangeLog, I&apos;m getting a feeling
&gt; the change isn&apos;t welcome. Fixing all that&apos;s wrong in the call sites isn&apos;t
&gt; necessarily my war, so I&apos;m definitively fine dropping the feature and just
&gt; getting the move constructors.

I am not trying to be difficult here or say that the change is not welcome. If that were the case, I would not waste this trying to review this.
However, I do want to make sure we&apos;re moving in the right direction and the new code looks better than previously before I can approve.

The changelog is hard for me to follow because it is unstructured and does not align with changes in the code at function level.
I think that if we introduce new code / logic, we should use it in existing code to make sure it works and so that we can more easily judge how it looks.
I pointed out some oddness and some extra if-defing that (to me at least) did not make the new code obviously better.

If you want to add a move constructor, that&apos;s probably OK as long as you actually use it for something (otherwise it is just dead code). A move constructor is small enough that you should be able to include the change with whatever new code you introduce that requires it.

&gt; Even though I think I sending MachSemaphore over tag type is correct insofar
&gt; as MachSemaphores should be in messages.in (they shouldn&apos;t) I&apos;m not the
&gt; owner of the components and I don&apos;t think I should be arguing for changing
&gt; them..
&gt; 
&gt; &gt;&gt; Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h:129
&gt; &gt;&gt; +#if PLATFORM(COCOA)
&gt; &gt; 
&gt; &gt; This is more if-defing than before so it does not look as nice.
&gt; 
&gt; Sure, but the de-facto webkit .messages.in style is ifdefing, if I
&gt; understand correctly. There is not a de-facto rule as to &quot;you should
&gt; introduce a yet another manual struct to extract the platform specific with
&gt; possibility to make errors in decoding/encoding&quot;. Not only that, but in
&gt; general case it is incorrect, as explained in the commit msg.
&gt; 
&gt; &gt;&gt; Source/WebKit/Shared/RemoteRenderingBackendCreationParameters.h:-35
&gt; &gt;&gt; -struct RemoteRenderingBackendCreationParameters {
&gt; &gt; 
&gt; &gt; This struct abstracted away some ifdefing so I am unclear why we are removing it.
&gt; 
&gt; Explained in the commit msg, it is incorrect method to pass information to
&gt; the IPC call.

I don&apos;t know that that means.

&gt; 
&gt; &gt;&gt; Source/WebKit/WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp:-209
&gt; &gt;&gt; -    m_renderSemaphore = nullptr;
&gt; &gt; 
&gt; &gt; Why isn&apos;t this resetting the semaphore anymore?
&gt; 
&gt; The semaphore send direction is changed, as explained in the commit message.

Please look into how we normally format WebKit changelogs. We often provide explanations at function level for things like that instead of having a big changelog message blob that tries to explain all the changes everywhere.

The fact is that I did try and read the changelog and it was hard to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722637</commentid>
    <comment_count>20</comment_count>
      <attachid>418446</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-26 11:49:44 -0800</bug_when>
    <thetext>Comment on attachment 418446
Patch

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

&gt; Source/WebKit/ChangeLog:8
&gt; +        Implement an encoder and decoder for WTF::MachSemaphore. Makes it possible to send it

This kind of paragraph is good for overall approach comments, not for function level changes / explanations because it is hard to match them with the diff.

&gt; Source/WebKit/ChangeLog:52
&gt; +        (WebKit::GPUConnectionToWebProcess::createRenderingBackend):

I would expect explanations in there, at function level for non-obvious stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722890</commentid>
    <comment_count>21</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-27 03:07:02 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #19)
&gt; I am not trying to be difficult here or say that the change is not welcome.
&gt; If that were the case, I would not waste this trying to review this.
&gt; However, I do want to make sure we&apos;re moving in the right direction and the
&gt; new code looks better than previously before I can approve.
..
&gt; The fact is that I did try and read the changelog and it was hard to follow.

Ok, thanks for spending the time. Sorry that it was hard to follow.

I&apos;ll put this pending for a moment, move the move constructor hunks to the patch I&apos;m working on, and later work on formatting the changelog and then come back to this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724213</commentid>
    <comment_count>22</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-01 05:58:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/73826848&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724643</commentid>
    <comment_count>23</comment_count>
      <attachid>418991</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-02 06:50:20 -0800</bug_when>
    <thetext>Created attachment 418991
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724645</commentid>
    <comment_count>24</comment_count>
      <attachid>418992</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-02 06:54:48 -0800</bug_when>
    <thetext>Created attachment 418992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724777</commentid>
    <comment_count>25</comment_count>
      <attachid>418992</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-02 11:13:51 -0800</bug_when>
    <thetext>Comment on attachment 418992
Patch

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

&gt; Source/WebKit/Platform/IPC/Semaphore.h:2
&gt; + * Copyright (C) 2020 Apple Inc. All rights reserved.

Should be 2021!

&gt; Source/WebKit/Platform/IPC/Semaphore.h:32
&gt; +#if PLATFORM(COCOA)

I think I would use OS(DARWIN) here instead, as these are really OS level concepts.

&gt; Source/WebKit/Platform/IPC/Semaphore.h:40
&gt; +namespace IPC {
&gt; +class Decoder;
&gt; +class Encoder;
&gt; +class Semaphore {

This should have some newlines after the &quot;namespace IPC {&quot; and before &quot;class Semaphore {&quot;.

&gt; Source/WebKit/Platform/IPC/Semaphore.h:48
&gt; +    Semaphore&amp; operator=(Semaphore&amp;&amp;);
&gt; +    void encode(Encoder&amp;) const;

We usually put a newline between these sections.

&gt; Source/WebKit/Platform/IPC/Semaphore.h:51
&gt; +#if PLATFORM(COCOA)

I think I would use OS(DARWIN) here instead.

&gt; Source/WebKit/Platform/IPC/Semaphore.h:63
&gt; +#if PLATFORM(COCOA)

I think I would use OS(DARWIN) here instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724789</commentid>
    <comment_count>26</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-02 11:34:21 -0800</bug_when>
    <thetext>Thanks for the review! A clarification is needed, though, for future understanding:

(In reply to Sam Weinig from comment #25)
&gt; &gt; Source/WebKit/Platform/IPC/Semaphore.h:63
&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/Semaphore.h:32
&gt; &gt; +#if PLATFORM(COCOA)
&gt; 
&gt; I think I would use OS(DARWIN) here instead, as these are really OS level
&gt; concepts.

How does this fit to the existing body of work?
Does the code go into IPC/darwin/SemaphoreDarwin.cpp?
Does the file get referenced by SourcesDarwin.txt?
How does that relate to IPC/cocoa/ConnectionCocoa.cpp, which is the implementation that transfers the thing?

Is there benefit of using OS(DARWIN) instead of PLATFORM(COCOA)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724847</commentid>
    <comment_count>27</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-02 13:04:51 -0800</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #26)
&gt; Thanks for the review! A clarification is needed, though, for future
&gt; understanding:
&gt; 
&gt; (In reply to Sam Weinig from comment #25)
&gt; &gt; &gt; Source/WebKit/Platform/IPC/Semaphore.h:63
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/Platform/IPC/Semaphore.h:32
&gt; &gt; &gt; +#if PLATFORM(COCOA)
&gt; &gt; 
&gt; &gt; I think I would use OS(DARWIN) here instead, as these are really OS level
&gt; &gt; concepts.
&gt; 
&gt; How does this fit to the existing body of work?
&gt; Does the code go into IPC/darwin/SemaphoreDarwin.cpp?

This seems reasonable.

&gt; Does the file get referenced by SourcesDarwin.txt?

No, you should still use SourceCocoa.txt. The build system is per-port.

&gt; How does that relate to IPC/cocoa/ConnectionCocoa.cpp, which is the
&gt; implementation that transfers the thing?

I think at somepoint, that should be renamed to IPC/darwin/ConnectionDarwin.cpp, but that doesn&apos;t have to happen now.

&gt; 
&gt; Is there benefit of using OS(DARWIN) instead of PLATFORM(COCOA)?

The biggest benefit is that it is intended to be more clear by being more specific. Generally, we have been trying to get off of the PLATFORM() macros and onto more specific ones, usually HAVE()/USE()/ENABLE(), but also OS() where appropriate. You can see more on this by looking in the header where PLATFORM is defined:

https://trac.webkit.org/browser/webkit/trunk/Source/WTF/wtf/PlatformLegacy.h 

It states:

/* PLATFORM() - handles OS, operating environment, graphics API, and
   CPU. This macro will be phased out in favor of platform adaptation
   macros, policy decision macros, and top-level port definitions. */


As with many things in WebKit, these transitions are slow and not all reviewers are aware or vigilant about them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725020</commentid>
    <comment_count>28</comment_count>
      <attachid>419106</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-02 21:57:42 -0800</bug_when>
    <thetext>Created attachment 419106
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725041</commentid>
    <comment_count>29</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-02 23:07:51 -0800</bug_when>
    <thetext>(In reply to Sam Weinig from comment #27)
&gt; (In reply to Kimmo Kinnunen from comment #26)
&gt; &gt; Does the file get referenced by SourcesDarwin.txt?
&gt; 
&gt; No, you should still use SourceCocoa.txt. The build system is per-port.
&gt; 

&gt; The biggest benefit is that it is intended to be more clear by being more
&gt; specific. Generally, we have been trying to get off of the PLATFORM() macros
&gt; and onto more specific ones, usually HAVE()/USE()/ENABLE(), but also OS()
&gt; where appropriate. You can see more on this by looking in the header where

Thanks for the explanations.

Did the suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725072</commentid>
    <comment_count>30</comment_count>
      <attachid>419120</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-03 02:35:55 -0800</bug_when>
    <thetext>Created attachment 419120
add reviewer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725073</commentid>
    <comment_count>31</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-03 03:13:11 -0800</bug_when>
    <thetext>Committed r272305: &lt;https://trac.webkit.org/changeset/272305&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 419120.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725695</commentid>
    <comment_count>32</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-02-04 10:32:18 -0800</bug_when>
    <thetext>This breaks the PlayStation build.

Our pthread.h internally includes a semaphore.h and ends up including this added file instead of the one in the sdk. We develop on Windows so this is a case-insensitive.

Can you please rename the file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743910</commentid>
    <comment_count>33</comment_count>
      <attachid>419120</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-03-25 14:04:48 -0700</bug_when>
    <thetext>Comment on attachment 419120
add reviewer

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

&gt; Source/WebKit/Platform/IPC/Semaphore.h:54
&gt; +#if OS(DARWIN)

We don&apos;t usually put these kinds of platform guards on function declarations in headers. it&apos;s A-OK to declare a function that isn&apos;t defined and is never called. From that perspective, adding this #if check is unnecessary and just clutters the header with noise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743913</commentid>
    <comment_count>34</comment_count>
      <attachid>419120</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-25 14:10:38 -0700</bug_when>
    <thetext>Comment on attachment 419120
add reviewer

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

&gt;&gt; Source/WebKit/Platform/IPC/Semaphore.h:54
&gt;&gt; +#if OS(DARWIN)
&gt; 
&gt; We don&apos;t usually put these kinds of platform guards on function declarations in headers. it&apos;s A-OK to declare a function that isn&apos;t defined and is never called. From that perspective, adding this #if check is unnecessary and just clutters the header with noise.

That&apos;s news to me and I actually prefer with the #ifdefs. As a port developer, you don&apos;t want to have to guess which functions are OK to call or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743946</commentid>
    <comment_count>35</comment_count>
      <attachid>419120</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-25 15:45:19 -0700</bug_when>
    <thetext>Comment on attachment 419120
add reviewer

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

&gt;&gt;&gt; Source/WebKit/Platform/IPC/Semaphore.h:54
&gt;&gt;&gt; +#if OS(DARWIN)
&gt;&gt; 
&gt;&gt; We don&apos;t usually put these kinds of platform guards on function declarations in headers. it&apos;s A-OK to declare a function that isn&apos;t defined and is never called. From that perspective, adding this #if check is unnecessary and just clutters the header with noise.
&gt; 
&gt; That&apos;s news to me and I actually prefer with the #ifdefs. As a port developer, you don&apos;t want to have to guess which functions are OK to call or not.

I think I agree with both of you:

1) When possible, I really do like the idea of taking advantage of the fact that we don’t need to put an #if around every last declaration. A lot of time it seems excessive to carefully write #if around each time and things can be a bit more tidy.

2) When it is important for clarity, puting the #if in anyway is helpful to both document and it can even make it a compile time error rather than a runtime error to call something that’s platform specific.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744083</commentid>
    <comment_count>36</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-26 00:07:22 -0700</bug_when>
    <thetext>I can of course remove #ifdefs from the calling code and the API interface header and then add NotImplemented() in the implementation for the catch-all implementation.

Having the #ifdef in the calling code would prompt question which in my mental model is answered when I look at the header and see the corresponding #ifdef. For me personally this is ok. This is currently in, for the purpose of it trading off more ifdefs with the GTK/WPE compile-time errors on unimplemented functions.

Having the #ifdef in the calling code would prompt question which would prompt another unanswered question to me. I&apos;d then jump through few other hoops to get the answer. For me personally this is a bit inconvenient.

Not having the #ifdef in the calling code nor headers would not prompt any questions to me. It&apos;d prompt questions only to the person trying to implement GTK/WPE part of this, since their code would compile but not work until they notice the NotImplemented logging.  For me personally this is ok. 

As a side remark, current calling code #ifdef is confusing since it #ifdefs on COCOA but then the Semaphore #ifdefs on DARWIN so in that way removing all ifdefs would side-step fixing that inconsistency spot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744084</commentid>
    <comment_count>37</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-26 00:08:46 -0700</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #36)
&gt; Having the #ifdef in the calling code would prompt question which would
&gt; prompt another unanswered question to me. I&apos;d then jump through few other
&gt; hoops to get the answer. For me personally this is a bit inconvenient.

This should read:
Having the #ifdef in the calling code but not in the API header ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744245</commentid>
    <comment_count>38</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-26 11:12:41 -0700</bug_when>
    <thetext>It’s an aesthetic choice without an obvious answer. I know some people like code to always be super-explicit, and others like code to be tidy, and sometimes these two things are in conflict. I don’t have universal solution to that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744291</commentid>
    <comment_count>39</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-03-26 13:04:08 -0700</bug_when>
    <thetext>I wasn&apos;t actually suggesting using NotImplemented. I was suggesting this: https://bugs.webkit.org/attachment.cgi?id=424285&amp;action=review The definitions just don&apos;t exist on non-Darwin ports.

By the way, I believe the aesthetic choice I mention above comes comes from an email that Maciej wrote in 2014: message:%3CD12CFD53-FE58-4CB9-85F9-E67CC6B9C120@apple.com%3E though this email doesn&apos;t exactly match the situation we&apos;re describing here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744297</commentid>
    <comment_count>40</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-03-26 13:09:57 -0700</bug_when>
    <thetext>&gt; 2) When it is important for clarity, puting the #if in anyway is helpful to both document and it can even make it a compile time error rather than a runtime error to call something that’s platform specific.

&gt; As a port developer, you don&apos;t want to have to guess which functions are OK to call or not.

If the functions are declared but not defined, the error would be a link-time error rather that a compile-time error (but, importantly, not a run-time error). Both link-time errors and compile-time errors have the equal benefit that it&apos;s obvious to a port developer which functions are OK to call or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744298</commentid>
    <comment_count>41</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-26 13:11:32 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #40)
&gt; &gt; 2) When it is important for clarity, puting the #if in anyway is helpful to both document and it can even make it a compile time error rather than a runtime error to call something that’s platform specific.
&gt; 
&gt; &gt; As a port developer, you don&apos;t want to have to guess which functions are OK to call or not.
&gt; 
&gt; If the functions are declared but not defined, the error would be a
&gt; link-time error rather that a compile-time error (but, importantly, not a
&gt; run-time error). Both link-time errors and compile-time errors have the
&gt; equal benefit that it&apos;s obvious to a port developer which functions are OK
&gt; to call or not.

What I do it use ifdefs in the header and the cpp. It has benefits to developers since they know what they can use BEFORE compiling, when actually coding.

I disagree with the feedback and with the fact that using #ifdef statements in the header is not what we usually do in the WebKit project.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744299</commentid>
    <comment_count>42</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-03-26 13:13:09 -0700</bug_when>
    <thetext>&gt; When it is important for clarity,

Philosophically, the signal() and wait() operations on a semaphore shouldn&apos;t be platform-specific.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744300</commentid>
    <comment_count>43</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-03-26 13:19:20 -0700</bug_when>
    <thetext>&gt; Philosophically, the signal() and wait() operations on a semaphore shouldn&apos;t
&gt; be platform-specific.

I phrased this poorly. What I meant was &quot;Philosophically, the fact that semaphores contain signal() and wait() operations shouldn&apos;t be platform-specific.&quot; (Of course the operations themselves will be platform-specific.)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418285</attachid>
            <date>2021-01-25 06:17:01 -0800</date>
            <delta_ts>2021-01-26 04:59:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220919-20210125161659.patch</filename>
            <type>text/plain</type>
            <size>28056</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRjZDQwMzEzYzI0MGZiMjllYjFlMTFj
MjQ2MTBjODY0YjAxMzc1NGQuLjliNTJmNDJjZDM3ZGMwM2U1NjM1NTE4Y2M3ZDZkMzQ3MTQ0ZWQ3
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMDEtMjUgIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNYWNoU2VtYXBob3JlIGRvZXMgbm90IHdvcmsg
d2VsbCB3aXRoIElQQyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwOTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW1wbGVtZW50IG1vdmUgY29uc3RydWN0b3IgYW5kIG1vdmUgYXNzaWdu
bWVudCBvcGVyYXRvciBmb3IgTWFjaFNlbWFwaG9yZS4KKyAgICAgICAgTWFrZXMgaXQgcG9zc2li
bGUgdG8gY3JlYXRlIHR5cGVzIHRoYXQgaG9sZCBNYWNoU2VtYXBob3JlIGJ1dCBzdGlsbAorICAg
ICAgICBhcmUgZGVjb2RlKClhYmxlIGZyb20gYSBJUEMgbWVzc2FnZS4gVGhlIGRlY29kZWQgb2Jq
ZWN0cyBhcmUgaGVsZCB3aXRoCisgICAgICAgIE9wdGlvbmFsLCBhbmQgdGhpcyBmb3JjZXMgdGhl
IHN1Ym9iamVjdHMgdG8gaGF2ZSBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisKKyAgICAgICAg
QWRkIGFzc2VydHMgdGhhdCB0aGUgbW92ZWQtYXdheSBvYmplY3QgaXMgbm90IHVzZWQuCisgICAg
ICAgIEFkZCB0aGUgYXNzZXJ0cyBhcyBhc3NlcnRzIG9uIHRoZSBjYWxsIHJldHVybiB2YWx1ZXMs
IHNvIHRoZSB2YWx1ZXMKKyAgICAgICAgYXJlIGFsc28gY2hlY2tlZCBvbiBub3JtYWwgb2JqZWN0
cyBvbiBub3JtYWwgb3BlcmF0aW9uLgorCisgICAgICAgICogd3RmL2NvY29hL01hY2hTZW1hcGhv
cmUuY3BwOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3JlOjpNYWNoU2VtYXBob3JlKToKKyAg
ICAgICAgKFdURjo6TWFjaFNlbWFwaG9yZTo6fk1hY2hTZW1hcGhvcmUpOgorICAgICAgICAoV1RG
OjpNYWNoU2VtYXBob3JlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3Jl
OjpzaWduYWwpOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3JlOjp3YWl0KToKKyAgICAgICAg
KFdURjo6TWFjaFNlbWFwaG9yZTo6d2FpdEZvcik6CisgICAgICAgIChXVEY6Ok1hY2hTZW1hcGhv
cmU6OmNyZWF0ZVNlbmRSaWdodCBjb25zdCk6CisgICAgICAgIChXVEY6Ok1hY2hTZW1hcGhvcmU6
OmRlc3Ryb3kpOgorICAgICAgICAqIHd0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg6CisgICAgICAg
IChXVEY6Ok1hY2hTZW1hcGhvcmU6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorCiAyMDIxLTAxLTIz
ICBYYW4gTG9wZXogIDx4YW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBBbGxvdyB0byBi
dWlsZCBXZWJBc3NlbWJseSB3aXRob3V0IEIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRiMDUyNDNhMmRkZDEyMjFl
ZmMyMTRjMjAwOWM4MWQyZDFjZjdmMjQuLjhiOTEwNzI1YTMxOTZlYjU1ZGU1MzJhMWE3OTM0MTZj
NGNjNTUzYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjEtMDEtMjUgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNYWNoU2VtYXBob3JlIGRv
ZXMgbm90IHdvcmsgd2VsbCB3aXRoIElQQyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwOTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGFuIGVuY29kZXIgYW5kIGRlY29k
ZXIgZm9yIFdURjo6TWFjaFNlbWFwaG9yZS4gTWFrZXMgaXQgcG9zc2libGUgdG8gc2VuZCBpdAor
ICAgICAgICB2aWEgSVBDIGFzIGl0cyBvd24gdHlwZSwgbm90IGFzIE1hY2hTZW5kUmlnaHQuCisK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90
ZXN0cy9NYWtlZmlsZToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJn
dW1lbnREZXNjcmlwdGlvbnMuY3BwOgorICAgICAgICAoSVBDOjpqc1ZhbHVlRm9yQXJndW1lbnRz
KToKKyAgICAgICAgKElQQzo6bWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zKToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwOgorICAgICAgICAoSVBDOjpk
ZXNjcmlwdGlvbik6CisgICAgICAgIChJUEM6OnJlY2VpdmVyTmFtZSk6CisgICAgICAgIChJUEM6
OmlzVmFsaWRNZXNzYWdlTmFtZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVz
c2FnZU5hbWVzLmg6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNo
U2VtYXBob3JlLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90
ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6VGVzdFdpdGhNYWNoU2VtYXBob3JlOjpkaWRSZWNlaXZlTWVzc2FnZSk6
CisgICAgICAgIChXZWJLaXQ6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6ZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1h
cGhvcmVNZXNzYWdlcy5oOiBBZGRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aE1hY2hT
ZW1hcGhvcmU6Om1lc3NhZ2VSZWNlaXZlck5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RX
aXRoTWFjaFNlbWFwaG9yZTo6U2VuZFNlbWFwaG9yZTo6bmFtZSk6CisgICAgICAgIChNZXNzYWdl
czo6VGVzdFdpdGhNYWNoU2VtYXBob3JlOjpTZW5kU2VtYXBob3JlOjpTZW5kU2VtYXBob3JlKToK
KyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6OlNlbmRTZW1hcGhvcmU6
OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhNYWNoU2VtYXBo
b3JlOjpSZWNlaXZlU2VtYXBob3JlOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0
aE1hY2hTZW1hcGhvcmU6OlJlY2VpdmVTZW1hcGhvcmU6OmFyZ3VtZW50cyBjb25zdCk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZXNS
ZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRD
b2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXVEY6Ok1hY2hTZW1h
cGhvcmU+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdURjo6TWFjaFNl
bWFwaG9yZT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oOgorCiAyMDIxLTAxLTI0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1MgV0syXSB0aGV2ZXJnZS5jb20gLSBydWJiZXIgYmFuZCBzY3JvbGxp
bmcgYXQgdGhlIHRvcCBvZiB0aGUgcGFnZSBjYXVzZXMgYW4gYWJydXB0IGp1bXAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuY3BwIGIvU291cmNlL1dURi93
dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5jcHAKaW5kZXggOTJmY2YxNWMwN2Q5MjRhNDUwNzkzN2Zk
MjMwNDU3MmM0ZGJiYjk2Ni4uNmZiMzU3N2VhZDM4NDhjZjgwYzA4NTg4MWM3ZTZhZTE3Y2UzY2Qz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5jcHAKQEAgLTM2LDYgKzM2LDEy
IEBAIE1hY2hTZW1hcGhvcmU6Ok1hY2hTZW1hcGhvcmUoKQogICAgIEFTU0VSVF9VTlVTRUQocmV0
LCByZXQgPT0gS0VSTl9TVUNDRVNTKTsKIH0KIAorTWFjaFNlbWFwaG9yZTo6TWFjaFNlbWFwaG9y
ZShNYWNoU2VtYXBob3JlJiYgb3RoZXIpCisgICAgOiBtX3NlbmRSaWdodChXVEZNb3ZlKG90aGVy
Lm1fc2VuZFJpZ2h0KSkKKyAgICAsIG1fc2VtYXBob3JlKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9z
ZW1hcGhvcmUsIFNFTUFQSE9SRV9OVUxMKSkKK3sKK30KKwogTWFjaFNlbWFwaG9yZTo6TWFjaFNl
bWFwaG9yZShNYWNoU2VuZFJpZ2h0JiYgc2VuZFJpZ2h0KQogICAgIDogbV9zZW5kUmlnaHQoV1RG
TW92ZShzZW5kUmlnaHQpKQogICAgICwgbV9zZW1hcGhvcmUobV9zZW5kUmlnaHQuc2VuZFJpZ2h0
KCkpCkBAIC00NSwyOSArNTEsNTYgQEAgTWFjaFNlbWFwaG9yZTo6TWFjaFNlbWFwaG9yZShNYWNo
U2VuZFJpZ2h0JiYgc2VuZFJpZ2h0KQogCiBNYWNoU2VtYXBob3JlOjp+TWFjaFNlbWFwaG9yZSgp
CiB7Ci0gICAgaWYgKCFtX3NlbmRSaWdodCkKLSAgICAgICAgc2VtYXBob3JlX2Rlc3Ryb3kobWFj
aF90YXNrX3NlbGYoKSwgbV9zZW1hcGhvcmUpOworICAgIGRlc3Ryb3koKTsKK30KKworTWFjaFNl
bWFwaG9yZSYgTWFjaFNlbWFwaG9yZTo6b3BlcmF0b3I9KE1hY2hTZW1hcGhvcmUmJiBvdGhlcikK
K3sKKyAgICBpZiAodGhpcyAhPSAmb3RoZXIpIHsKKyAgICAgICAgZGVzdHJveSgpOworICAgICAg
ICBtX3NlbmRSaWdodCA9IFdURk1vdmUob3RoZXIubV9zZW5kUmlnaHQpOworICAgICAgICBtX3Nl
bWFwaG9yZSA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9zZW1hcGhvcmUsIFNFTUFQSE9SRV9OVUxM
KTsKKyAgICB9CisKKyAgICByZXR1cm4gKnRoaXM7CiB9CiAKIHZvaWQgTWFjaFNlbWFwaG9yZTo6
c2lnbmFsKCkKIHsKLSAgICBzZW1hcGhvcmVfc2lnbmFsKG1fc2VtYXBob3JlKTsKKyAgICBhdXRv
IHJldCA9IHNlbWFwaG9yZV9zaWduYWwobV9zZW1hcGhvcmUpOworICAgIEFTU0VSVF9VTlVTRUQo
cmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTKTsKIH0KIAogdm9pZCBNYWNoU2VtYXBob3JlOjp3YWl0
KCkKIHsKLSAgICBzZW1hcGhvcmVfd2FpdChtX3NlbWFwaG9yZSk7CisgICAgYXV0byByZXQgPSBz
ZW1hcGhvcmVfd2FpdChtX3NlbWFwaG9yZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXQsIHJldCA9
PSBLRVJOX1NVQ0NFU1MpOwogfQogCiB2b2lkIE1hY2hTZW1hcGhvcmU6OndhaXRGb3IoU2Vjb25k
cyB0aW1lb3V0KQogewogICAgIGF1dG8gc2Vjb25kcyA9IHRpbWVvdXQuc2Vjb25kc0FzPHVuc2ln
bmVkPigpOwotICAgIHNlbWFwaG9yZV90aW1lZHdhaXQobV9zZW1hcGhvcmUsIHsgc2Vjb25kcywg
c3RhdGljX2Nhc3Q8Y2xvY2tfcmVzX3Q+KHRpbWVvdXQubmFub3NlY29uZHNBczx1aW50NjRfdD4o
KSAtIHNlY29uZHMgKiBOU0VDX1BFUl9TRUMpIH0pOworICAgIGF1dG8gcmV0ID0gc2VtYXBob3Jl
X3RpbWVkd2FpdChtX3NlbWFwaG9yZSwgeyBzZWNvbmRzLCBzdGF0aWNfY2FzdDxjbG9ja19yZXNf
dD4odGltZW91dC5uYW5vc2Vjb25kc0FzPHVpbnQ2NF90PigpIC0gc2Vjb25kcyAqIE5TRUNfUEVS
X1NFQykgfSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXQsIHJldCA9PSBLRVJOX1NVQ0NFU1MgfHwg
cmV0ID09IEtFUk5fT1BFUkFUSU9OX1RJTUVEX09VVCk7CiB9CiAKLU1hY2hTZW5kUmlnaHQgTWFj
aFNlbWFwaG9yZTo6Y3JlYXRlU2VuZFJpZ2h0KCkKK01hY2hTZW5kUmlnaHQgTWFjaFNlbWFwaG9y
ZTo6Y3JlYXRlU2VuZFJpZ2h0KCkgY29uc3QKIHsKICAgICByZXR1cm4gTWFjaFNlbmRSaWdodDo6
Y3JlYXRlKG1fc2VtYXBob3JlKTsKIH0KIAordm9pZCBNYWNoU2VtYXBob3JlOjpkZXN0cm95KCkK
K3sKKyAgICBpZiAobV9zZW5kUmlnaHQpIHsKKyAgICAgICAgbV9zZW5kUmlnaHQgPSBNYWNoU2Vu
ZFJpZ2h0KCk7CisgICAgICAgIG1fc2VtYXBob3JlID0gU0VNQVBIT1JFX05VTEw7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgaWYgKG1fc2VtYXBob3JlID09IFNFTUFQSE9SRV9OVUxMKQor
ICAgICAgICByZXR1cm47CisgICAgYXV0byByZXQgPSBzZW1hcGhvcmVfZGVzdHJveShtYWNoX3Rh
c2tfc2VsZigpLCBtX3NlbWFwaG9yZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXQsIHJldCA9PSBL
RVJOX1NVQ0NFU1MpOworICAgIG1fc2VtYXBob3JlID0gU0VNQVBIT1JFX05VTEw7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvTWFjaFNl
bWFwaG9yZS5oIGIvU291cmNlL1dURi93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oCmluZGV4IGJl
N2NlYTA0NmI4MTJjYmMzZWIzYTcyMTMwZDlhNWJhMDA5M2Y5MmYuLjRiNWRiNzRlNzE2YzMyOGY3
N2IyNjJkYjlkM2IwY2MxNWNkOTA3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29h
L01hY2hTZW1hcGhvcmUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NYWNoU2VtYXBob3Jl
LmgKQEAgLTM3LDE2ICszNywyMCBAQCBjbGFzcyBNYWNoU2VtYXBob3JlIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShNYWNoU2VtYXBob3JlKTsKIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgTWFjaFNlbWFwaG9yZSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBNYWNoU2VtYXBo
b3JlKE1hY2hTZW1hcGhvcmUmJik7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IE1h
Y2hTZW1hcGhvcmUoTWFjaFNlbmRSaWdodCYmKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfk1h
Y2hTZW1hcGhvcmUoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWFjaFNlbWFwaG9yZSYgb3Bl
cmF0b3I9KE1hY2hTZW1hcGhvcmUmJik7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBz
aWduYWwoKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB3YWl0KCk7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgd2FpdEZvcihTZWNvbmRzKTsKIAotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBNYWNoU2VuZFJpZ2h0IGNyZWF0ZVNlbmRSaWdodCgpOworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBNYWNoU2VuZFJpZ2h0IGNyZWF0ZVNlbmRSaWdodCgpIGNvbnN0OwogCisgICAgZXhwbGlj
aXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VuZFJpZ2h0IHx8IG1fc2VtYXBo
b3JlICE9IFNFTUFQSE9SRV9OVUxMOyB9CiBwcml2YXRlOgorICAgIHZvaWQgZGVzdHJveSgpOwog
ICAgIE1hY2hTZW5kUmlnaHQgbV9zZW5kUmlnaHQ7CiAgICAgc2VtYXBob3JlX3QgbV9zZW1hcGhv
cmUgeyBTRU1BUEhPUkVfTlVMTCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CmluZGV4IGVjOGJjZjA4N2RmMTZkZjYwZGJlMDA4MGU0Y2ViMDYxZDE3NjhmZjcu
LjZkNzBmNTI3NTMxYzg0ZTZhODg1OGZjMWJjZGNiMmM0NWU1YzZlMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjU1LDYgKzI1NSw3IEBAIGRlZiB0eXBl
c190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdJUEM6OkRhdGFS
ZWZlcmVuY2UnLAogICAgICAgICAnSVBDOjpGb250UmVmZXJlbmNlJywKICAgICAgICAgJ01hY2hT
ZW5kUmlnaHQnLAorICAgICAgICAnTWFjaFNlbWFwaG9yZScsCiAgICAgICAgICdNZWRpYVRpbWUn
LAogICAgICAgICAnU3RyaW5nJywKICAgICAgICAgJ1dlYkNvcmU6OkNvbG9yU3BhY2UnLApAQCAt
MzU0LDYgKzM1NSw3IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19hbmRfaGVhZGVycyhyZWNl
aXZlcik6CiAKICAgICBub25fdGVtcGxhdGVfd3RmX3R5cGVzID0gZnJvemVuc2V0KFsKICAgICAg
ICAgJ01hY2hTZW5kUmlnaHQnLAorICAgICAgICAnTWFjaFNlbWFwaG9yZScsCiAgICAgICAgICdN
ZWRpYVR5cGUnLAogICAgICAgICAnU3RyaW5nJywKICAgICBdKQpAQCAtNDA5LDYgKzQxMSw3IEBA
IGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19hbmRfaGVhZGVyc19mb3JfcmVwbGllcyhyZWNlaXZl
cik6CiAKICAgICBub25fdGVtcGxhdGVfd3RmX3R5cGVzID0gZnJvemVuc2V0KFsKICAgICAgICAg
J01hY2hTZW5kUmlnaHQnLAorICAgICAgICAnTWFjaFNlbWFwaG9yZScsCiAgICAgICAgICdNZWRp
YVRpbWUnLAogICAgICAgICAnU3RyaW5nJywKICAgICBdKQpAQCAtNjM5LDYgKzY0Miw3IEBAIGRl
ZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogCiAgICAgc3BlY2lhbF9jYXNlcyA9IHsKICAgICAg
ICAgJ01hY2hTZW5kUmlnaHQnOiBbJzx3dGYvTWFjaFNlbmRSaWdodC5oPiddLAorICAgICAgICAn
TWFjaFNlbWFwaG9yZSc6IFsnPHd0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg+J10sCiAgICAgICAg
ICdKU0M6Ok1lc3NhZ2VMZXZlbCc6IFsnPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPidd
LAogICAgICAgICAnSlNDOjpNZXNzYWdlU291cmNlJzogWyc8SmF2YVNjcmlwdENvcmUvQ29uc29s
ZVR5cGVzLmg+J10sCiAgICAgICAgICdJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGUnOiBb
JzxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JUYXJnZXQuaD4nXSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHkgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5CmluZGV4IDZlYzZlYjRkYTU1
NzczZmNlZDYzZDM4MjIzM2MzMjU4MTlhOWEzYzMuLmFkZWI4NWY5MGIzZjRkNTliYjczZjQxNjJl
MDY4MWE5ZjY3NjkyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXNfdW5pdHRlc3QucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlc191bml0dGVzdC5weQpAQCAtMzksNyArMzksNyBAQCB0ZXN0c19kaXJlY3RvcnkgPSBv
cy5wYXRoLmpvaW4obW9kdWxlX2RpcmVjdG9yeSwgJ3Rlc3RzJykKIAogcmVzZXRfcmVzdWx0cyA9
IEZhbHNlCiAKLV90ZXN0X3JlY2VpdmVyX25hbWVzID0gWydUZXN0V2l0aFN1cGVyY2xhc3MnLCAn
VGVzdFdpdGhMZWdhY3lSZWNlaXZlcicsICdUZXN0V2l0aG91dEF0dHJpYnV0ZXMnLCAnVGVzdFdp
dGhJZk1lc3NhZ2UnXQorX3Rlc3RfcmVjZWl2ZXJfbmFtZXMgPSBbJ1Rlc3RXaXRoU3VwZXJjbGFz
cycsICdUZXN0V2l0aExlZ2FjeVJlY2VpdmVyJywgJ1Rlc3RXaXRob3V0QXR0cmlidXRlcycsICdU
ZXN0V2l0aElmTWVzc2FnZScsICdUZXN0V2l0aE1hY2hTZW1hcGhvcmUnXQogCiAKIGRlZiByZWNl
aXZlcl9oZWFkZXJfZmlsZV9uYW1lKHJlY2VpdmVyX25hbWUpOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZSBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvTWFrZWZpbGUKaW5kZXggODc5NmZmYmM1YTNmODdiOTIzZWQ2Yzk4
MDIzOTFhODc2YmFjMzgyZS4uMzlhZjEzY2U3MDJhNTgzN2RjODcxMjVjN2M1MmNkMjdiMmE3N2Vl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmls
ZQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlCkBAIC0x
LDIgKzEsMiBAQAogYWxsOgotCXB5dGhvbiAuLi8uLi9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVy
LnB5IC4gVGVzdFdpdGhTdXBlcmNsYXNzIFRlc3RXaXRoTGVnYWN5UmVjZWl2ZXIgVGVzdFdpdGhv
dXRBdHRyaWJ1dGVzIFRlc3RXaXRoSWZNZXNzYWdlCisJcHl0aG9uIC4uLy4uL2dlbmVyYXRlLW1l
c3NhZ2UtcmVjZWl2ZXIucHkgLiBUZXN0V2l0aFN1cGVyY2xhc3MgVGVzdFdpdGhMZWdhY3lSZWNl
aXZlciBUZXN0V2l0aG91dEF0dHJpYnV0ZXMgVGVzdFdpdGhJZk1lc3NhZ2UgVGVzdFdpdGhNYWNo
U2VtYXBob3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Rz
L01lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAKaW5kZXggNTk0MDQ0
MzkwY2FkYWMyZmYwY2RmYWE5ZTMwNTA0NDI3NzgzODBmZS4uODNjNWQwY2IzMzIyMmJiMWE2ZmI3
MzQ1NGQ0MDc5ZGQ2MmU0Y2M2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0cy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNw
cApAQCAtNDYsNiArNDYsNyBAQAogI2VuZGlmCiAjaW5jbHVkZSAiVGVzdFdpdGhJZk1lc3NhZ2VN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJNZXNzYWdlcy5oIgor
I2luY2x1ZGUgIlRlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiVGVz
dFdpdGhTdXBlcmNsYXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJUZXN0V2l0aG91dEF0dHJpYnV0
ZXNNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgpAQCAtNjUs
NiArNjYsOSBAQAogI2VuZGlmCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPHd0Zi9jb2NvYS9N
YWNoU2VtYXBob3JlLmg+CisjZW5kaWYKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIElQQyB7CkBAIC0yMTUsNiArMjE5LDEyIEBAIE9wdGlvbmFsPEpTQzo6SlNW
YWx1ZT4ganNWYWx1ZUZvckFyZ3VtZW50cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIE1lCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRo
SWZNZXNzYWdlX0xvYWRVUkw6CiAgICAgICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3Vt
ZW50czxNZXNzYWdlczo6VGVzdFdpdGhJZk1lc3NhZ2U6OkxvYWRVUkw6OkFyZ3VtZW50cz4oZ2xv
YmFsT2JqZWN0LCBkZWNvZGVyKTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGNh
c2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9TZW5kU2VtYXBob3JlOgorICAg
ICAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudHM8TWVzc2FnZXM6OlRlc3RXaXRo
TWFjaFNlbWFwaG9yZTo6U2VuZFNlbWFwaG9yZTo6QXJndW1lbnRzPihnbG9iYWxPYmplY3QsIGRl
Y29kZXIpOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9SZWNl
aXZlU2VtYXBob3JlOgorICAgICAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudHM8
TWVzc2FnZXM6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6UmVjZWl2ZVNlbWFwaG9yZTo6QXJndW1l
bnRzPihnbG9iYWxPYmplY3QsIGRlY29kZXIpOwogI2VuZGlmCiAgICAgZGVmYXVsdDoKICAgICAg
ICAgYnJlYWs7CkBAIC01MTYsNiArNTI2LDE0IEBAIE9wdGlvbmFsPFZlY3RvcjxBcmd1bWVudERl
c2NyaXB0aW9uPj4gbWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zKE1lc3NhZ2VOYW1lIG5hCiAg
ICAgICAgICAgICB7InVybCIsICJTdHJpbmciLCBudWxscHRyLCBmYWxzZX0sCiAgICAgICAgICAg
ICB7InZhbHVlIiwgImludDY0X3QiLCBudWxscHRyLCBmYWxzZX0sCiAgICAgICAgIH07CisjZW5k
aWYKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aE1h
Y2hTZW1hcGhvcmVfU2VuZFNlbWFwaG9yZToKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxBcmd1bWVu
dERlc2NyaXB0aW9uPiB7CisgICAgICAgICAgICB7InMwIiwgIk1hY2hTZW1hcGhvcmUiLCBudWxs
cHRyLCBmYWxzZX0sCisgICAgICAgIH07CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhN
YWNoU2VtYXBob3JlX1JlY2VpdmVTZW1hcGhvcmU6CisgICAgICAgIHJldHVybiBWZWN0b3I8QXJn
dW1lbnREZXNjcmlwdGlvbj4geyB9OwogI2VuZGlmCiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3Nh
Z2VOYW1lcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VO
YW1lcy5jcHAKaW5kZXggNzZmYWQzN2M1NDYwYWRiY2ZlYTM3MmQxODY2NTUwZmE3YzhhODUxMy4u
OThjZTMyZDk1NWU3OTYzOGMyM2UyNWJmNzM4MTMwNzZhMjgyNGZiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcApAQCAtNzIs
NiArNzIsMTAgQEAgY29uc3QgY2hhciogZGVzY3JpcHRpb24oTWVzc2FnZU5hbWUgbmFtZSkKICAg
ICAgICAgcmV0dXJuICJUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1Rlc3RQYXJhbWV0ZXJBdHRyaWJ1
dGVzIjsKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1RvdWNo
RXZlbnQ6CiAgICAgICAgIHJldHVybiAiVGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9Ub3VjaEV2ZW50
IjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmVfUmVjZWl2ZVNl
bWFwaG9yZToKKyAgICAgICAgcmV0dXJuICJUZXN0V2l0aE1hY2hTZW1hcGhvcmVfUmVjZWl2ZVNl
bWFwaG9yZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3JlX1Nl
bmRTZW1hcGhvcmU6CisgICAgICAgIHJldHVybiAiVGVzdFdpdGhNYWNoU2VtYXBob3JlX1NlbmRT
ZW1hcGhvcmUiOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19Mb2Fk
VVJMOgogICAgICAgICByZXR1cm4gIlRlc3RXaXRoU3VwZXJjbGFzc19Mb2FkVVJMIjsKICAgICBj
YXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZToKQEAg
LTE4MSw2ICsxODUsOSBAQCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKE1lc3NhZ2VOYW1lIG1l
c3NhZ2VOYW1lKQogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJf
VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM6CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhM
ZWdhY3lSZWNlaXZlcl9Ub3VjaEV2ZW50OgogICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpU
ZXN0V2l0aExlZ2FjeVJlY2VpdmVyOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTWFj
aFNlbWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RX
aXRoTWFjaFNlbWFwaG9yZV9TZW5kU2VtYXBob3JlOgorICAgICAgICByZXR1cm4gUmVjZWl2ZXJO
YW1lOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdp
dGhTdXBlcmNsYXNzX0xvYWRVUkw6CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBl
cmNsYXNzX1Rlc3RBc3luY01lc3NhZ2U6CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhT
dXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VXaXRoQ29ubmVjdGlvbjoKQEAgLTI5OCw2ICszMDUs
MTQgQEAgYm9vbCBpc1ZhbGlkTWVzc2FnZU5hbWUoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiAj
aWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwg
U09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCiAgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQ
Qzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVG91Y2hFdmVudCkKICAgICAg
ICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAobWVz
c2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3JlX1JlY2Vp
dmVTZW1hcGhvcmUpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRo
TWFjaFNlbWFwaG9yZV9TZW5kU2VtYXBob3JlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRp
ZgogICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVy
Y2xhc3NfTG9hZFVSTCkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaAppbmRleCAyM2Y3NTYwODdkNjgz
YWQyMmIwNjhlMmE3MWZkOTVhMGYzY2U1NTVlLi5mYjBkOTFiYTg4ZGM4ZDY4ZWY1YmU3NGEyYjJh
MjNmMmQ0MzMzMTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3RzL01lc3NhZ2VOYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvTWVzc2FnZU5hbWVzLmgKQEAgLTMxLDExICszMSwxMiBAQCBuYW1lc3BhY2UgSVBDIHsKIGVu
dW0gY2xhc3MgUmVjZWl2ZXJOYW1lIDogdWludDhfdCB7CiAgICAgVGVzdFdpdGhJZk1lc3NhZ2Ug
PSAxCiAgICAgLCBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyID0gMgotICAgICwgVGVzdFdpdGhTdXBl
cmNsYXNzID0gMwotICAgICwgVGVzdFdpdGhvdXRBdHRyaWJ1dGVzID0gNAotICAgICwgSVBDID0g
NQotICAgICwgQXN5bmNSZXBseSA9IDYKLSAgICAsIEludmFsaWQgPSA3CisgICAgLCBUZXN0V2l0
aE1hY2hTZW1hcGhvcmUgPSAzCisgICAgLCBUZXN0V2l0aFN1cGVyY2xhc3MgPSA0CisgICAgLCBU
ZXN0V2l0aG91dEF0dHJpYnV0ZXMgPSA1CisgICAgLCBJUEMgPSA2CisgICAgLCBBc3luY1JlcGx5
ID0gNworICAgICwgSW52YWxpZCA9IDgKIH07CiAKIGVudW0gY2xhc3MgTWVzc2FnZU5hbWUgOiB1
aW50MTZfdCB7CkBAIC02MCw2ICs2MSw4IEBAIGVudW0gY2xhc3MgTWVzc2FnZU5hbWUgOiB1aW50
MTZfdCB7CiAgICAgLCBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1RlbXBsYXRlVGVzdAogICAgICwg
VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9UZXN0UGFyYW1ldGVyQXR0cmlidXRlcwogICAgICwgVGVz
dFdpdGhMZWdhY3lSZWNlaXZlcl9Ub3VjaEV2ZW50CisgICAgLCBUZXN0V2l0aE1hY2hTZW1hcGhv
cmVfUmVjZWl2ZVNlbWFwaG9yZQorICAgICwgVGVzdFdpdGhNYWNoU2VtYXBob3JlX1NlbmRTZW1h
cGhvcmUKICAgICAsIFRlc3RXaXRoU3VwZXJjbGFzc19Mb2FkVVJMCiAgICAgLCBUZXN0V2l0aFN1
cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZQogICAgICwgVGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RB
c3luY01lc3NhZ2VXaXRoQ29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhvcmUubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZS5tZXNz
YWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mNTI1ODM1M2YwOTRjNDA2YTQyM2Y2MTAwYmNlOWNhODI2MjA2
Y2E4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9UZXN0V2l0aE1hY2hTZW1hcGhvcmUubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyOCBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBUZXN0V2l0
aE1hY2hTZW1hcGhvcmUgeworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgU2VuZFNlbWFw
aG9yZShNYWNoU2VtYXBob3JlIHMwKQorICAgIHZvaWQgUmVjZWl2ZVNlbWFwaG9yZSgpIC0+IChN
YWNoU2VtYXBob3JlIHIwKQorI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2VSZWNlaXZlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFw
aG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjRlZTQwYzM2YWFkODNmOWU3MDFk
ODZjOGFlYzc2M2EzNzhlYWU4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZVJlY2VpdmVyLmNw
cApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlRlc3RXaXRoTWFjaFNlbWFwaG9yZS5oIgorCisjaW5jbHVkZSAiRGVjb2Rl
ci5oIgorI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKKyNpbmNsdWRlICJUZXN0V2l0aE1hY2hT
ZW1hcGhvcmVNZXNzYWdlcy5oIgorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPHd0Zi9j
b2NvYS9NYWNoU2VtYXBob3JlLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3Zv
aWQgVGVzdFdpdGhNYWNoU2VtYXBob3JlOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBhdXRvIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6
OlNlbmRTZW1hcGhvcmU6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6U2VuZFNlbWFwaG9yZT4oZGVjb2RlciwgdGhp
cywgJlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6c2VuZFNlbWFwaG9yZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisjZW5kaWYKKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisgICAgVU5V
U0VEX1BBUkFNKGRlY29kZXIpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lk
IFRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQoreworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6UmVjZWl2ZVNl
bWFwaG9yZTo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6
VGVzdFdpdGhNYWNoU2VtYXBob3JlOjpSZWNlaXZlU2VtYXBob3JlPihkZWNvZGVyLCAqcmVwbHlF
bmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhNYWNoU2VtYXBob3JlOjpyZWNlaXZlU2VtYXBob3JlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAgIFVOVVNFRF9QQVJBTShjb25uZWN0
aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CisgICAgVU5VU0VEX1BBUkFNKHJlcGx5
RW5jb2Rlcik7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNzYWdlcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNzYWdlcy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4
NTgyY2I4N2UyYzIzYjg0ZTk1YzAyZWM4YWIwYWY0ODk4OTIwNTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9y
ZU1lc3NhZ2VzLmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
KyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9u
LmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhNYWNoU2Vt
YXBob3JlTWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNs
dWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvY29jb2EvTWFj
aFNlbWFwaG9yZS5oPgorCisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgVGVzdFdp
dGhNYWNoU2VtYXBob3JlIHsKKworc3RhdGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFtZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lKCkKK3sKKyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6OlRlc3RX
aXRoTWFjaFNlbWFwaG9yZTsKK30KKworI2lmIFBMQVRGT1JNKENPQ09BKQorY2xhc3MgU2VuZFNl
bWFwaG9yZSB7CitwdWJsaWM6CisgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25z
dCBNYWNoU2VtYXBob3JlJj47CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkg
eyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3JlX1NlbmRTZW1h
cGhvcmU7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4
cGxpY2l0IFNlbmRTZW1hcGhvcmUoY29uc3QgTWFjaFNlbWFwaG9yZSYgczApCisgICAgICAgIDog
bV9hcmd1bWVudHMoczApCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJn
dW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCisj
aWYgUExBVEZPUk0oQ09DT0EpCitjbGFzcyBSZWNlaXZlU2VtYXBob3JlIHsKK3B1YmxpYzoKKyAg
ICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47CisKKyAgICBzdGF0aWMgSVBDOjpNZXNz
YWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2Vt
YXBob3JlX1JlY2VpdmVTZW1hcGhvcmU7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMg
PSB0cnVlOworCisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPE1hY2hTZW1hcGhvcmUmPjsK
KyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8TWFjaFNlbWFwaG9yZT47Cisg
ICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1
bWVudHM7Cit9OworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFRlc3RXaXRoTWFjaFNlbWFwaG9y
ZQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZXNSZXBsaWVzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9y
ZU1lc3NhZ2VzUmVwbGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlNzBjNGExM2JiNzZhMzYwNTc3M2JlM2Fh
N2M3YmUxYTE5YTYxMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2VzUmVwbGllcy5oCkBAIC0w
LDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
Ik1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKKworbmFtZXNwYWNl
IE1lc3NhZ2VzIHsKK25hbWVzcGFjZSBUZXN0V2l0aE1hY2hTZW1hcGhvcmUgeworCisKK30gLy8g
bmFtZXNwYWNlIFRlc3RXaXRoTWFjaFNlbWFwaG9yZQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzQ29jb2EubW0KaW5kZXggMjgxNGU4YjVlZjMyZDUwMjY1OGJhYjVhZWY3MTNjZjYxNDcw
MmI1Ny4uODM1YTY0MDliZDg3NzNkNDM0YTFkMDExMzQyYjJjZWYxNGM1OTU1MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q29jb2EubW0KQEAgLTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRm9udEF0dHJpYnV0
ZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oPgogI2ltcG9y
dCA8cGFsL3NwaS9jb2NvYS9Db3JlVGV4dFNQSS5oPgorI2ltcG9ydCA8d3RmL2NvY29hL01hY2hT
ZW1hcGhvcmUuaD4KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxVSUtpdC9V
SUZvbnQuaD4KQEAgLTY1LDYgKzY2LDE5IEBAIE9wdGlvbmFsPFdlYkNvcmU6OkF0dHJpYnV0ZWRT
dHJpbmc+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZz46OmRlCiAgICAg
cmV0dXJuIHsgeyBXVEZNb3ZlKGF0dHJpYnV0ZWRTdHJpbmcpLCBXVEZNb3ZlKGRvY3VtZW50QXR0
cmlidXRlcykgfSB9OwogfQogCit2b2lkIEFyZ3VtZW50Q29kZXI8V1RGOjpNYWNoU2VtYXBob3Jl
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdURjo6TWFjaFNlbWFwaG9yZSYgc2Vt
YXBob3JlKQoreworICAgIGVuY29kZXIgPDwgc2VtYXBob3JlLmNyZWF0ZVNlbmRSaWdodCgpOwor
fQorCitPcHRpb25hbDxNYWNoU2VtYXBob3JlPiBBcmd1bWVudENvZGVyPFdURjo6TWFjaFNlbWFw
aG9yZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE1hY2hTZW5kUmlnaHQgc2Vu
ZFJpZ2h0OworICAgIGlmIChkZWNvZGVyLmRlY29kZShzZW5kUmlnaHQpKQorICAgICAgICByZXR1
cm4gT3B0aW9uYWw8V1RGOjpNYWNoU2VtYXBob3JlPiB7IHN0ZDo6aW5fcGxhY2UsIFdURk1vdmUo
c2VuZFJpZ2h0KSB9OworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKICNpZiBFTkFCTEUo
QVBQTEVfUEFZKQogCiAjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggZmE5NmNkYTg0ZWNiN2Q0
ODhhZTQyOTEzM2MwZjViNDQzNzA0OGRiMS4uNTA4MjFkMWRiNzM4MGUxMDY0ZTE5ZWJiMGQ4ZTNm
N2NkYzZhYmFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKQEAgLTgxLDYgKzgxLDcgQEAKICNpZiBQTEFURk9STShDT0NPQSkKIG5hbWVzcGFjZSBX
VEYgewogY2xhc3MgTWFjaFNlbmRSaWdodDsKK2NsYXNzIE1hY2hTZW1hcGhvcmU7CiB9CiAjZW5k
aWYKIApAQCAtNDg3LDYgKzQ4OCwxMCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PENHQWZmaW5lVHJhbnNmb3JtPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBD
R0FmZmluZVRyYW5zZm9ybSk7CiAgICAgc3RhdGljIE9wdGlvbmFsPENHQWZmaW5lVHJhbnNmb3Jt
PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V1RGOjpNYWNoU2VtYXBob3JlPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBj
b25zdCBXVEY6Ok1hY2hTZW1hcGhvcmUmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V1RGOjpNYWNo
U2VtYXBob3JlPiBkZWNvZGUoRGVjb2RlciYpOworfTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418396</attachid>
            <date>2021-01-26 04:59:30 -0800</date>
            <delta_ts>2021-01-26 05:08:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220919-20210126145928.patch</filename>
            <type>text/plain</type>
            <size>65159</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRjZDQwMzEzYzI0MGZiMjllYjFlMTFj
MjQ2MTBjODY0YjAxMzc1NGQuLmYzNTI1MDE0ZmI2NmE4NGZmMDEzYzQzNGYxZTdhOTFjMmRkNGE5
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMDEtMjYgIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNYWNoU2VtYXBob3JlIGRvZXMgbm90IHdvcmsg
d2VsbCB3aXRoIElQQyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwOTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW1wbGVtZW50IG1vdmUgY29uc3RydWN0b3IgYW5kIG1vdmUgYXNzaWdu
bWVudCBvcGVyYXRvciBmb3IgTWFjaFNlbWFwaG9yZS4KKyAgICAgICAgTWFrZXMgaXQgcG9zc2li
bGUgdG8gY3JlYXRlIHR5cGVzIHRoYXQgaG9sZCBNYWNoU2VtYXBob3JlIGJ1dCBzdGlsbAorICAg
ICAgICBhcmUgZGVjb2RlKClhYmxlIGZyb20gYSBJUEMgbWVzc2FnZS4gVGhlIGRlY29kZWQgb2Jq
ZWN0cyBhcmUgaGVsZCB3aXRoCisgICAgICAgIE9wdGlvbmFsLCBhbmQgdGhpcyBmb3JjZXMgdGhl
IHN1Ym9iamVjdHMgdG8gaGF2ZSBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisKKyAgICAgICAg
QWRkIGFzc2VydHMgdGhhdCB0aGUgbW92ZWQtYXdheSBvYmplY3QgaXMgbm90IHVzZWQuCisgICAg
ICAgIEFkZCB0aGUgYXNzZXJ0cyBhcyBhc3NlcnRzIG9uIHRoZSBjYWxsIHJldHVybiB2YWx1ZXMs
IHNvIHRoZSB2YWx1ZXMKKyAgICAgICAgYXJlIGFsc28gY2hlY2tlZCBvbiBub3JtYWwgb2JqZWN0
cyBvbiBub3JtYWwgb3BlcmF0aW9uLgorCisgICAgICAgICogd3RmL2NvY29hL01hY2hTZW1hcGhv
cmUuY3BwOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3JlOjpNYWNoU2VtYXBob3JlKToKKyAg
ICAgICAgKFdURjo6TWFjaFNlbWFwaG9yZTo6fk1hY2hTZW1hcGhvcmUpOgorICAgICAgICAoV1RG
OjpNYWNoU2VtYXBob3JlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3Jl
OjpzaWduYWwpOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3JlOjp3YWl0KToKKyAgICAgICAg
KFdURjo6TWFjaFNlbWFwaG9yZTo6d2FpdEZvcik6CisgICAgICAgIChXVEY6Ok1hY2hTZW1hcGhv
cmU6OmNyZWF0ZVNlbmRSaWdodCBjb25zdCk6CisgICAgICAgIChXVEY6Ok1hY2hTZW1hcGhvcmU6
OmRlc3Ryb3kpOgorICAgICAgICAqIHd0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg6CisgICAgICAg
IChXVEY6Ok1hY2hTZW1hcGhvcmU6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorCiAyMDIxLTAxLTIz
ICBYYW4gTG9wZXogIDx4YW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBBbGxvdyB0byBi
dWlsZCBXZWJBc3NlbWJseSB3aXRob3V0IEIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRiMDUyNDNhMmRkZDEyMjFl
ZmMyMTRjMjAwOWM4MWQyZDFjZjdmMjQuLjU5M2JiZDE0MDc2MGZmOWE0Yzg4ZjYyODI4NmJlOTA0
ZGQ4NGJjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA5IEBACisyMDIxLTAxLTI2ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFjaFNlbWFwaG9yZSBk
b2VzIG5vdCB3b3JrIHdlbGwgd2l0aCBJUEMgbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDkxOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhbiBlbmNvZGVyIGFuZCBkZWNv
ZGVyIGZvciBXVEY6Ok1hY2hTZW1hcGhvcmUuIE1ha2VzIGl0IHBvc3NpYmxlIHRvIHNlbmQgaXQK
KyAgICAgICAgdmlhIElQQyBhcyBpdHMgb3duIHR5cGUsIG5vdCBhcyBNYWNoU2VuZFJpZ2h0Lgor
CisgICAgICAgIEFzIGFuIGV4YW1wbGUsIGNoYW5nZXMgZXhpc3RpbmcgdXNlcyBvZiBNYWNoU2Vu
ZFJpZ2h0IGZvciBzZW1hcGhvcmVzIGluIG1lc3NhZ2VzIGFzCisgICAgICAgIE1hY2hTZW1hcGhv
cmVzLCBkZXNjcmliZWQgYmVsb3cuCisKKyAgICAgICAgQ2hhbmdlcyBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHkgdG8gc2VuZCBpdHMgb3duIHNlbWFwaG9yZSBmcm9tCisgICAgICAgIFdlYlBy
b2Nlc3MgdG8gR1BVUHJvY2Vzcy4gUHJldmlvdXNseSB0aGUgc2VtYXBob3JlIHdvdWxkIGJlIHNl
bnQgYmFjayBieQorICAgICAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci4gUHJldmlv
dXNseSB0aGUgY29kZSBzdHJ1Y3R1cmUgaXMgbW9yZQorICAgICAgICBjb21wbGljYXRlZCB0aGFu
IG5lY2Nlc3NhcnksIGFzIHRoZSBzZW1hcGhvcmUgaG9sZGVyIHdhcyBiZWluZworICAgICAgICBu
dWxsLWNoZWNrZWQsIHJlc2V0IGFuZCByZS1zZWF0ZWQuIFRoZSBXZWJQcm9jZXNzIGdldHMgYWxy
ZWFkeSB0byBjaG9vc2UKKyAgICAgICAgdGhlIHNlbWFwaG9yZXMgR1BVUHJvY2VzcyB1c2VzLCBz
byB0aGlzIHNob3VsZCBub3QgaW5jcmVhc2Ugc2VjdXJpdHkKKyAgICAgICAgc3VyZmFjZS4gVGhl
IGNoYW5nZSBjaG9zZW4gaGVyZSBzaWRlLXN0ZXBzIHRoZSBzaG9ydGNvbWluZyBvZiB0aGUgSVBD
CisgICAgICAgIHN5c3RlbSB3aGVyZSB1bnBhY2tpbmcgb2JqZWN0cyBmcm9tIHRoZSBSZXBseSBt
ZXNzYWdlcyBtYW5kYXRlcyB0aGF0IGEKKyAgICAgICAgY29uc3RydWN0ZWQgdmVyc2lvbiBvZiB0
aGF0IHR5cGUgZXhpc3RzLiBGb3IgcHJldmlvdXMgTWFjaFNlbmRSaWdodAorICAgICAgICBlbXB0
eS1jb25zdHJ1Y3RlZCBvYmplY3QgaXMgc2ltcGxlLCBidXQgZm9yIE1hY2hTZW1hcGhvcmUKKyAg
ICAgICAgZW1wdHktY29uc3RydWN0ZWQgb2JqZWN0IGNyZWF0ZXMgdW5uZWNlc3NhcnkgY29tcGxp
Y2F0aW9uIHRoYXQgaXMgbm90CisgICAgICAgIHJlcXVpcmVkIG90aGVyd2lzZSBhdCB0aGUgbW9t
ZW50LiBUaGUgYWx0ZXJuYXRpdmUgdG8gd2hhdCB3YXMgY2hvc2VuCisgICAgICAgIGhlcmUgd291
bGQgYmUgdG8gaG9sZCB3aXRoIE9wdGlvbmFsPE1hY2hTZW1hcGhvcmU+IGFuZCBhZGQgYQorICAg
ICAgICBlbXB0eS1pbml0aWFsaXppbmcgY29uc3RydWN0b3IgdG8gaG9sZCB0aGUgb2JqZWN0IHdo
ZXJlIHRvIHVucGFjayB0aGUKKyAgICAgICAgc2VtYXBob3JlIG9iamVjdCBmcm9tIHRoZSBSZXBs
eS4KKworICAgICAgICBDaGFuZ2VzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgdG8gcmVjZWl2ZSBp
dHMgcGFyYW1ldGVycyBmcm9tIHRoZSBub3JtYWwKKyAgICAgICAgbWVzc2FnZSBwYXJhbWV0ZXJz
IGluc3RlYWQgb2YgcmVkdW5kYW50CisgICAgICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVh
dGlvblBhcmFtZXRlcnMuIFRoZSBJUEMgZ2VuZXJhdG9yIGFscmVhZHkKKyAgICAgICAgZ2VuZXJh
dGVzIDE6MSBpZGVudGljYWwgc3RydWN0dXJlLCBpdCBpcyBqdXN0IHRoZSBtZXNzYWdlCisgICAg
ICAgIE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVSZW5kZXJpbmdC
YWNrZW5kLiBUaGVyZSBpcyBubworICAgICAgICBuZWVkIHRvIGRvdWJsZS13cmFwIHRoZSBzaW1w
bGUgbGlzdCBvZiBwYXJhbWV0ZXJzLiBUaGUgZG91YmxlLXdyYXBwaW5nCisgICAgICAgIGlzIGEg
cHJvYmxlbTogVGhlIG1lc3NhZ2Ugc3lzdGVtIHBhcmFtZXRlcnMgYXJlIG9mIG93bmVyc2hpcCAi
Y29uc3QKKyAgICAgICAgcmVmZXJlbmNlIiwgd2hpY2ggaXMgd2hhdCBpcyBleHBlY3RlZC4KKyAg
ICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyBjb250ZW50cyB3
ZXJlIG9mIG93bmVyc2hpcAorICAgICAgICAidmFsdWUiLCB3aGljaCB3b3JrcyBhcyBleHBlY3Rl
ZCBvbmx5IGZvciBzaW1wbGUgcHJpbWl0aXZlIHR5cGVzLgorICAgICAgICBFc3NlbnRpYWxseSBw
cmV2aW91c2x5IGNhbGxpbmcgdGhlIElQQyBmdW5jdGlvbiBtZWFudCB0cmFuc2ZlcmluZworICAg
ICAgICBvYmplY3RzIHRvIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMu
IFRoaXMgaXMgbm90IGhvdyB0aGUKKyAgICAgICAgSVBDIHN5c3RlbSBpcyBtZWFudCB0byB3b3Jr
LiBUaGUgaW50ZW50aW9uIG9mIGEgSVBDIGNhbGwgaXMgdG8sIGJ5CisgICAgICAgIGRlZmF1bHQs
IHJlZmVyZW5jZSBpdHMgYXJndW1lbnRzIGZvciB0aGUgcHVycG9zZSBvZiBlbmNvZGluZy4gVGhl
IHBhdGNoCisgICAgICAgIHRyaWVzIHRvIGFjaGlldmUgYSBiaXQgdGhlIHNhbWUgZ29hbCBhcyB0
aGUgb3JpZ2luYWwKKyAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1l
dGVycyBwcmVzdW1hYmx5IGhhZCwgaS5lLiB0byBhdm9pZAorICAgICAgICBwcm9ibGVtcyB3aXRo
ICNpZiBQTEFURk9STShDT0NPQSktI2Vsc2UgaW4gbWV0aG9kIGRlY2xhcmF0aW9ucyBhbmQKKyAg
ICAgICAgZGVmaW5pdGlvbnMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3Rvci4KKwor
ICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0Jh
Y2tlbmQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
OgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4
dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpjcmVh
dGVBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXI6OmRlbGV0ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6c3RhcnRBdWRpb0Rlc3RpbmF0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0b3BBdWRpb0Rl
c3RpbmF0aW9uKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwOgorICAg
ICAgICAoSVBDOjpqc1ZhbHVlRm9yQXJndW1lbnRzKToKKyAgICAgICAgKElQQzo6bWVzc2FnZUFy
Z3VtZW50RGVzY3JpcHRpb25zKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNz
YWdlTmFtZXMuY3BwOgorICAgICAgICAoSVBDOjpkZXNjcmlwdGlvbik6CisgICAgICAgIChJUEM6
OnJlY2VpdmVyTmFtZSk6CisgICAgICAgIChJUEM6OmlzVmFsaWRNZXNzYWdlTmFtZSk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmg6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlLm1lc3NhZ2VzLmluOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1h
Y2hTZW1hcGhvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
VGVzdFdpdGhNYWNoU2VtYXBob3JlOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJL
aXQ6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNzYWdlcy5o
OiBBZGRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoTWFjaFNlbWFwaG9y
ZTo6U2VuZFNlbWFwaG9yZTo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhNYWNo
U2VtYXBob3JlOjpTZW5kU2VtYXBob3JlOjpTZW5kU2VtYXBob3JlKToKKyAgICAgICAgKE1lc3Nh
Z2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6OlNlbmRTZW1hcGhvcmU6OmFyZ3VtZW50cyBjb25z
dCk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhNYWNoU2VtYXBob3JlOjpSZWNlaXZlU2Vt
YXBob3JlOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6
OlJlY2VpdmVTZW1hcGhvcmU6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVk
LgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXVEY6Ok1hY2hTZW1hcGhvcmU+OjplbmNvZGUp
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdURjo6TWFjaFNlbWFwaG9yZT46OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFt
ZXRlcnMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpjb25uZWN0
VG9HUFVQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHk6OnN0YXJ0UmVuZGVyaW5nVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpzdG9wUmVuZGVyaW5nVGhyZWFkKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpncHVQcm9j
ZXNzQ29ubmVjdGlvbkRpZENsb3NlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaDoKKwogMjAyMS0wMS0yNCAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIFdLMl0gdGhldmVyZ2Uu
Y29tIC0gcnViYmVyIGJhbmQgc2Nyb2xsaW5nIGF0IHRoZSB0b3Agb2YgdGhlIHBhZ2UgY2F1c2Vz
IGFuIGFicnVwdCBqdW1wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NYWNoU2Vt
YXBob3JlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuY3BwCmluZGV4
IDkyZmNmMTVjMDdkOTI0YTQ1MDc5MzdmZDIzMDQ1NzJjNGRiYmI5NjYuLjZmYjM1NzdlYWQzODQ4
Y2Y4MGMwODU4ODFjN2U2YWUxN2NlM2NkMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2Nv
Y29hL01hY2hTZW1hcGhvcmUuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1h
cGhvcmUuY3BwCkBAIC0zNiw2ICszNiwxMiBAQCBNYWNoU2VtYXBob3JlOjpNYWNoU2VtYXBob3Jl
KCkKICAgICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0ID09IEtFUk5fU1VDQ0VTUyk7CiB9CiAKK01h
Y2hTZW1hcGhvcmU6Ok1hY2hTZW1hcGhvcmUoTWFjaFNlbWFwaG9yZSYmIG90aGVyKQorICAgIDog
bV9zZW5kUmlnaHQoV1RGTW92ZShvdGhlci5tX3NlbmRSaWdodCkpCisgICAgLCBtX3NlbWFwaG9y
ZShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fc2VtYXBob3JlLCBTRU1BUEhPUkVfTlVMTCkpCit7Cit9
CisKIE1hY2hTZW1hcGhvcmU6Ok1hY2hTZW1hcGhvcmUoTWFjaFNlbmRSaWdodCYmIHNlbmRSaWdo
dCkKICAgICA6IG1fc2VuZFJpZ2h0KFdURk1vdmUoc2VuZFJpZ2h0KSkKICAgICAsIG1fc2VtYXBo
b3JlKG1fc2VuZFJpZ2h0LnNlbmRSaWdodCgpKQpAQCAtNDUsMjkgKzUxLDU2IEBAIE1hY2hTZW1h
cGhvcmU6Ok1hY2hTZW1hcGhvcmUoTWFjaFNlbmRSaWdodCYmIHNlbmRSaWdodCkKIAogTWFjaFNl
bWFwaG9yZTo6fk1hY2hTZW1hcGhvcmUoKQogewotICAgIGlmICghbV9zZW5kUmlnaHQpCi0gICAg
ICAgIHNlbWFwaG9yZV9kZXN0cm95KG1hY2hfdGFza19zZWxmKCksIG1fc2VtYXBob3JlKTsKKyAg
ICBkZXN0cm95KCk7Cit9CisKK01hY2hTZW1hcGhvcmUmIE1hY2hTZW1hcGhvcmU6Om9wZXJhdG9y
PShNYWNoU2VtYXBob3JlJiYgb3RoZXIpCit7CisgICAgaWYgKHRoaXMgIT0gJm90aGVyKSB7Cisg
ICAgICAgIGRlc3Ryb3koKTsKKyAgICAgICAgbV9zZW5kUmlnaHQgPSBXVEZNb3ZlKG90aGVyLm1f
c2VuZFJpZ2h0KTsKKyAgICAgICAgbV9zZW1hcGhvcmUgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1f
c2VtYXBob3JlLCBTRU1BUEhPUkVfTlVMTCk7CisgICAgfQorCisgICAgcmV0dXJuICp0aGlzOwog
fQogCiB2b2lkIE1hY2hTZW1hcGhvcmU6OnNpZ25hbCgpCiB7Ci0gICAgc2VtYXBob3JlX3NpZ25h
bChtX3NlbWFwaG9yZSk7CisgICAgYXV0byByZXQgPSBzZW1hcGhvcmVfc2lnbmFsKG1fc2VtYXBo
b3JlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0ID09IEtFUk5fU1VDQ0VTUyk7CiB9CiAK
IHZvaWQgTWFjaFNlbWFwaG9yZTo6d2FpdCgpCiB7Ci0gICAgc2VtYXBob3JlX3dhaXQobV9zZW1h
cGhvcmUpOworICAgIGF1dG8gcmV0ID0gc2VtYXBob3JlX3dhaXQobV9zZW1hcGhvcmUpOworICAg
IEFTU0VSVF9VTlVTRUQocmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTKTsKIH0KIAogdm9pZCBNYWNo
U2VtYXBob3JlOjp3YWl0Rm9yKFNlY29uZHMgdGltZW91dCkKIHsKICAgICBhdXRvIHNlY29uZHMg
PSB0aW1lb3V0LnNlY29uZHNBczx1bnNpZ25lZD4oKTsKLSAgICBzZW1hcGhvcmVfdGltZWR3YWl0
KG1fc2VtYXBob3JlLCB7IHNlY29uZHMsIHN0YXRpY19jYXN0PGNsb2NrX3Jlc190Pih0aW1lb3V0
Lm5hbm9zZWNvbmRzQXM8dWludDY0X3Q+KCkgLSBzZWNvbmRzICogTlNFQ19QRVJfU0VDKSB9KTsK
KyAgICBhdXRvIHJldCA9IHNlbWFwaG9yZV90aW1lZHdhaXQobV9zZW1hcGhvcmUsIHsgc2Vjb25k
cywgc3RhdGljX2Nhc3Q8Y2xvY2tfcmVzX3Q+KHRpbWVvdXQubmFub3NlY29uZHNBczx1aW50NjRf
dD4oKSAtIHNlY29uZHMgKiBOU0VDX1BFUl9TRUMpIH0pOworICAgIEFTU0VSVF9VTlVTRUQocmV0
LCByZXQgPT0gS0VSTl9TVUNDRVNTIHx8IHJldCA9PSBLRVJOX09QRVJBVElPTl9USU1FRF9PVVQp
OwogfQogCi1NYWNoU2VuZFJpZ2h0IE1hY2hTZW1hcGhvcmU6OmNyZWF0ZVNlbmRSaWdodCgpCitN
YWNoU2VuZFJpZ2h0IE1hY2hTZW1hcGhvcmU6OmNyZWF0ZVNlbmRSaWdodCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIE1hY2hTZW5kUmlnaHQ6OmNyZWF0ZShtX3NlbWFwaG9yZSk7CiB9CiAKK3ZvaWQg
TWFjaFNlbWFwaG9yZTo6ZGVzdHJveSgpCit7CisgICAgaWYgKG1fc2VuZFJpZ2h0KSB7CisgICAg
ICAgIG1fc2VuZFJpZ2h0ID0gTWFjaFNlbmRSaWdodCgpOworICAgICAgICBtX3NlbWFwaG9yZSA9
IFNFTUFQSE9SRV9OVUxMOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtX3NlbWFw
aG9yZSA9PSBTRU1BUEhPUkVfTlVMTCkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmV0ID0g
c2VtYXBob3JlX2Rlc3Ryb3kobWFjaF90YXNrX3NlbGYoKSwgbV9zZW1hcGhvcmUpOworICAgIEFT
U0VSVF9VTlVTRUQocmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTKTsKKyAgICBtX3NlbWFwaG9yZSA9
IFNFTUFQSE9SRV9OVUxMOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaCBiL1NvdXJjZS9XVEYvd3RmL2NvY29h
L01hY2hTZW1hcGhvcmUuaAppbmRleCBiZTdjZWEwNDZiODEyY2JjM2ViM2E3MjEzMGQ5YTViYTAw
OTNmOTJmLi40YjVkYjc0ZTcxNmMzMjhmNzdiMjYyZGI5ZDNiMGNjMTVjZDkwNzljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oCkBAIC0zNywxNiArMzcsMjAgQEAgY2xhc3MgTWFj
aFNlbWFwaG9yZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFjaFNlbWFwaG9yZSk7CiBw
dWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1hY2hTZW1hcGhvcmUoKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgTWFjaFNlbWFwaG9yZShNYWNoU2VtYXBob3JlJiYpOwogICAgIFdURl9F
WFBPUlRfUFJJVkFURSBleHBsaWNpdCBNYWNoU2VtYXBob3JlKE1hY2hTZW5kUmlnaHQmJik7CiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIH5NYWNoU2VtYXBob3JlKCk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIE1hY2hTZW1hcGhvcmUmIG9wZXJhdG9yPShNYWNoU2VtYXBob3JlJiYpOwogCiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2lnbmFsKCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgd2FpdCgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHdhaXRGb3IoU2Vjb25k
cyk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWFjaFNlbmRSaWdodCBjcmVhdGVTZW5kUmln
aHQoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWFjaFNlbmRSaWdodCBjcmVhdGVTZW5kUmln
aHQoKSBjb25zdDsKIAorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVy
biBtX3NlbmRSaWdodCB8fCBtX3NlbWFwaG9yZSAhPSBTRU1BUEhPUkVfTlVMTDsgfQogcHJpdmF0
ZToKKyAgICB2b2lkIGRlc3Ryb3koKTsKICAgICBNYWNoU2VuZFJpZ2h0IG1fc2VuZFJpZ2h0Owog
ICAgIHNlbWFwaG9yZV90IG1fc2VtYXBob3JlIHsgU0VNQVBIT1JFX05VTEwgfTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggOTAwNTY2OTRhNTMwMGRjM2E4YmZkZDFlZTMwZWMxNmJkOGViZGVhOC4uOWRm
OGQxNjIxZjM0MDVjZTljYjdkMjRjNzk5YTcwZThkMDA4ZTA2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAt
NDgsNyArNDgsNiBAQAogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCIKLSNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1lc3NhZ2VzLmgiCkBAIC0yOTEsMTAgKzI5MCwxOCBAQCBSZW1vdGVBdWRpb1Nlc3Np
b25Qcm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YXVkaW9TZXNzaW9uUHJveHkoKQog
fQogI2VuZGlmCiAKLXZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVy
aW5nQmFja2VuZChSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5n
QmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgLCBNYWNoU2VtYXBob3JlJiYgcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhv
cmUKKyNlbmRpZgorICAgICkKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZE1hcC5lbnN1cmUocGFyYW1ldGVycy5pZGVudGlmaWVyLCBbJl0oKSB7Ci0gICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyPihSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUocGFyYW1ldGVycykpKTsK
KyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcC5lbnN1cmUo
aWRlbnRpZmllciwgWyZdKCkgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kV3JhcHBlcj4oUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKCp0aGlz
LCBpZGVudGlmaWVyLCB7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgICAgICBXVEZNb3Zl
KHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQorI2VuZGlmCisgICAgICAgIH0pKTsKICAgICB9
KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKaW5kZXggNDQxOGNhNmFlYTJhNDA4ZTM3NzUzODkwZTFkMzBkZGVjNzZlYzdjYS4u
YjZhMjRjYjMyMGEzNjNlN2U5ZmVkZDQzZDI5MDYzNTk2NDk1MDYxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC02
NSw3ICs2NSw2IEBAIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOwogY2xhc3MgUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHk7CiBzdHJ1Y3QgUmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbjsKLXN0
cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAgICAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcywgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFp
bj4KQEAgLTEyNyw3ICsxMjYsMTEgQEAgcHJpdmF0ZToKICNlbmRpZgogI2VuZGlmCiAKLSAgICB2
b2lkIGNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9u
UGFyYW1ldGVycyYmKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGNyZWF0ZVJlbmRl
cmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIE1hY2hTZW1hcGhvcmUmJiBy
ZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSk7CisjZWxzZQorICAgIHZvaWQgY3JlYXRlUmVuZGVy
aW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisjZW5kaWYKICAgICB2b2lk
IHJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIAog
I2lmIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMGNiYzVk
ODc5ODNlNjY2ZTQ4ZTgzOWE2NDY0ODk4Nzk1MGEzOTJiZi4uMWU0OWIzM2VjZjZhNTMxNWMyYjFh
NDI5OGUyZDQxNzI1OTJkMmEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIz
LDcgKzIzLDEyIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiBtZXNzYWdlcyAtPiBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlzcGF0Y2hNZXNzYWdlIHsKLSAgICB2b2lkIENy
ZWF0ZVJlbmRlcmluZ0JhY2tlbmQoc3RydWN0IFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZENyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzKQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIE1hY2hTZW1hcGhvcmUgcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhv
cmUpCisjZW5kaWYKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBDcmVhdGVSZW5kZXJp
bmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgaWRlbnRpZmllcikK
KyNlbmRpZgogICAgIHZvaWQgUmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICNpZiBFTkFC
TEUoV0VCR0wpCiAgICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcAppbmRleCAzNzIwN2Q3ZmM3ODBiZmIzYTRiZDdjMWI0ZGNjMGU2NDg1
NWQ1NWU2Li5lZDkzMGNkNzk3MDkzNzY0MDY0ZjJmOGQ0ODFkMjljZWZjYzJmZTVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1S
ZW1vdGVJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIgotI2luY2x1ZGUgIlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5o
PgpAQCAtNjUsMTcgKzY0LDE3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCi1SZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQorUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyLCBQbGF0Zm9y
bUNyZWF0ZVBhcmFtcyYmIHBhcmFtcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURk1vdmUocGFy
YW1ldGVycykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGlkZW50aWZpZXIsIFdURk1vdmUocGFyYW1z
KSkpOwogfQogCi1SZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllciBpZGVudGlmaWVyLCBQbGF0Zm9ybUNyZWF0ZVBhcmFtcyYmIHBhcmFtcykKICAg
ICA6IG1fd29ya1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
IHdvcmsgcXVldWUiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OlVz
ZXJJbnRlcmFjdGl2ZSkpCiAgICAgLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcykKLSAgICAsIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIo
cGFyYW1ldGVycy5pZGVudGlmaWVyKQorICAgICwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cihpZGVudGlmaWVyKQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICwgbV9yZXN1bWVEaXNwbGF5
TGlzdFNlbWFwaG9yZShtYWtlVW5pcXVlPE1hY2hTZW1hcGhvcmU+KFdURk1vdmUocGFyYW1ldGVy
cy5zZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkpKQorICAgICwgbV9yZXN1
bWVEaXNwbGF5TGlzdFNlbWFwaG9yZShXVEZNb3ZlKHBhcmFtcy5yZXN1bWVEaXNwbGF5TGlzdFNl
bWFwaG9yZSkpCiAjZW5kaWYKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAt
MjI4LDcgKzIyNyw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5CiAKICAgICAgICAgICAgIGhh
bmRsZS5zdGFydFdhaXRpbmcoKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAgIG1f
cmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUtPndhaXRGb3IoMzBfdXMpOworICAgICAgICAgICAg
bV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZS53YWl0Rm9yKDMwX3VzKTsKICNlbHNlCiAgICAg
ICAgICAgICBzbGVlcCgzMF91cyk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IGU2
Mzg5OTAzYjY1MGJhOGQ5NzNkYWY5YjNkY2NhNjQ1MzU2ZjQ1ZjguLjgwYzNlMjQ0MjYyNjJiZDli
YTQ5NTE4OWZiZWZhNDMyZDFjODFkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtNDIsOSAr
NDIsNyBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkK
LW5hbWVzcGFjZSBXVEYgewotY2xhc3MgTWFjaFNlbWFwaG9yZTsKLX0KKyNpbmNsdWRlIDx3dGYv
Y29jb2EvTWFjaFNlbWFwaG9yZS5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTYyLDE0ICs2MCwxOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGU7CiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwotc3RydWN0IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQKICAgICA6IHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgLCBw
dWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIKICAgICAsIHB1
YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gY3JlYXRlKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJh
bWV0ZXJzJiYpOworICAgIHN0cnVjdCBQbGF0Zm9ybUNyZWF0ZVBhcmFtcyB7CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgICAgIE1hY2hTZW1hcGhvcmUgcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhv
cmU7CisjZW5kaWYKKyAgICB9OworICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZD4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciwgUGxhdGZvcm1DcmVhdGVQYXJhbXMmJik7CiAgICAgdmlydHVhbCB+UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCgpOwogCiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZSYgcmVtb3RlUmVzb3Vy
Y2VDYWNoZSgpIHsgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZTsgfQpAQCAtODYsNyArODgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAKIHByaXZhdGU6Ci0gICAgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciwgUGxhdGZvcm1DcmVhdGVQYXJhbXMmJik7CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikgb3ZlcnJpZGU7CiAKQEAgLTE0OSw3ICsx
NTEsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJJZGVudGlmaWVyLCBSZWZQdHI8RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU+PiBtX3NoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlczsKICAgICBPcHRpb25hbDxQZW5kaW5nV2FrZXVwSW5mb3JtYXRp
b24+IG1fcGVuZGluZ1dha2V1cEluZm87CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFdURjo6TWFjaFNlbWFwaG9yZT4gbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9y
ZTsKKyAgICBXVEY6Ok1hY2hTZW1hcGhvcmUgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsK
ICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAKaW5kZXggMGY4NDA3
YzFmM2RjNzg3YjUwZTliZjYwOTkxYWVlN2NiNDEwYjRmYS4uNGI3MmI1MjBiOTM5ODUwNTdiN2Y3
M2UwZDU4YTZkNDFhN2JkZTY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCkBA
IC01MSwxMCArNTEsMTUgQEAgY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbgogI2VuZGlmCiB7
CiBwdWJsaWM6CisgICAgc3RydWN0IFBsYXRmb3JtQ3JlYXRlUGFyYW1zIHsKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICAgICAgTWFjaFNlbWFwaG9yZSByZW5kZXJTZW1hcGhvcmU7CisjZW5kaWYK
KyAgICB9OwogICAgIHN0YXRpYyBSZWY8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4gY3JlYXRlKEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyIGlkZW50aWZpZXIsCi0gICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXREZXZp
Y2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91
dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUp
CisgICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1w
bGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIFBsYXRmb3JtQ3JlYXRlUGFyYW1zJiYg
cGFyYW1zKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbihjb25uZWN0aW9uLCBpZGVudGlmaWVyLCBpbnB1dERldmljZUlkLCBudW1iZXJP
ZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIGhhcmR3
YXJlU2FtcGxlUmF0ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uKGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIGlucHV0RGV2aWNlSWQsIG51bWJl
ck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFy
ZHdhcmVTYW1wbGVSYXRlLCBXVEZNb3ZlKHBhcmFtcykpKTsKICAgICB9CiAKICAgICB2aXJ0dWFs
IH5SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKCkgPSBkZWZhdWx0OwpAQCAtNjgsOCArNzMsNiBAQCBw
dWJsaWM6CiAgICAgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgTWFjaFNlbmRSaWdodCBj
cmVhdGVSZW5kZXJTZW1hcGhvcmVTZW5kUmlnaHQoKSB7IHJldHVybiBtX3JlbmRlclNlbWFwaG9y
ZS5jcmVhdGVTZW5kUmlnaHQoKTsgfQotCiAgICAgdm9pZCBhdWRpb1NhbXBsZXNTdG9yYWdlQ2hh
bmdlZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaXBjSGFuZGxlLCBjb25zdCBXZWJD
b3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1i
ZXJPZkZyYW1lcykKICAgICB7CiAgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWVSZWY8
V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFJlYWRPbmx5U2hhcmVkUmluZ0J1
ZmZlclN0b3JhZ2U+KGlwY0hhbmRsZS5oYW5kbGUpLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFt
ZXMpOwpAQCAtMTA0LDE2ICsxMDcsMTUgQEAgcHVibGljOgogICAgIGJvb2wgaXNQbGF5aW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KIAogcHJpdmF0ZToKLSAgICBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQs
IHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlKQorICAg
IFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5w
dXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBs
ZVJhdGUsIFBsYXRmb3JtQ3JlYXRlUGFyYW1zJiYgcGFyYW1zKQogICAgICAgICA6IG1faWQoaWRl
bnRpZmllcikKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgLCBtX2F1ZGlvT3V0cHV0VW5p
dEFkYXB0b3IoKnRoaXMpCiAgICAgICAgICwgbV9yaW5nQnVmZmVyKG1ha2VVbmlxdWVSZWY8V2Vi
Q29yZTo6Q0FSaW5nQnVmZmVyPigpKQorICAgICAgICAsIG1fcmVuZGVyU2VtYXBob3JlKFdURk1v
dmUocGFyYW1zLnJlbmRlclNlbWFwaG9yZSkpCiAjZW5kaWYKICAgICB7Ci0jaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgICAgIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5jb25maWd1cmUoaGFyZHdh
cmVTYW1wbGVSYXRlLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKLSNlbmRpZgogICAgIH0KIAog
I2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMTYyLDE5ICsxNjQsMjMgQEAgUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKEdQVUNvbm5lY3Rp
b25Ub1dlYlAKIAogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6On5SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcigpID0gZGVmYXVsdDsKIAotdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlcjo6Y3JlYXRlQXVkaW9EZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGlucHV0RGV2
aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRl
LCBDcmVhdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0
IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1
aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBo
YXJkd2FyZVNhbXBsZVJhdGUsCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgTWFjaFNlbWFwaG9y
ZSYmIHJlbmRlclNlbWFwaG9yZSwKKyNlbmRpZgorICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbkRlbGF5ZWRSZXBseSYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gbmV3SUQgPSBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uSWRlbnRpZmllcjo6Z2VuZXJhdGVUaHJlYWRTYWZlKCk7Ci0gICAgYXV0byBkZXN0aW5hdGlv
biA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MsIG5ld0lELCBpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIGhhcmR3YXJlU2FtcGxlUmF0ZSk7Ci0gICAg
bV9hdWRpb0Rlc3RpbmF0aW9ucy5hZGQobmV3SUQsIGRlc3RpbmF0aW9uLmNvcHlSZWYoKSk7Cisg
ICAgYXV0byBkZXN0aW5hdGlvbiA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShtX2dw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIG5ld0lELCBpbnB1dERldmljZUlkLCBudW1iZXJPZklu
cHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIGhhcmR3YXJl
U2FtcGxlUmF0ZSwgewogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNvbXBsZXRpb25IYW5kbGVy
KG5ld0lELCBkZXN0aW5hdGlvbi0+Y3JlYXRlUmVuZGVyU2VtYXBob3JlU2VuZFJpZ2h0KCkpOwot
I2Vsc2UKLSAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdJRCk7CisgICAgICAgIFdURk1vdmUocmVu
ZGVyU2VtYXBob3JlKQogI2VuZGlmCisgICAgfSk7CisgICAgbV9hdWRpb0Rlc3RpbmF0aW9ucy5h
ZGQobmV3SUQsIGRlc3RpbmF0aW9uLmNvcHlSZWYoKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIo
bmV3SUQpOwogfQogCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpkZWxldGVB
dWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmRlbGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgTWVzc2FnZXM6OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpEZWxldGVBdWRpb0Rlc3RpbmF0aW9uQXN5bmNSZXBs
eSYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gZGVzdGluYXRpb24gPSBtX2F1ZGlv
RGVzdGluYXRpb25zLnRha2UoaWRlbnRpZmllcik7CiAgICAgaWYgKGRlc3RpbmF0aW9uKQpAQCAt
MTgyLDcgKzE4OCw3IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmRlbGV0
ZUF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvCiAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKIH0KIAotdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6c3RhcnRB
dWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdGFydEF1ZGlvRGVzdGluYXRpb24o
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgTWVzc2FnZXM6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpTdGFydEF1ZGlvRGVzdGluYXRpb25Bc3luY1Jl
cGx5JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYm9vbCBpc1BsYXlpbmcgPSBmYWxzZTsK
ICAgICBpZiAoYXV0byogaXRlbSA9IG1fYXVkaW9EZXN0aW5hdGlvbnMuZ2V0KGlkZW50aWZpZXIp
KSB7CkBAIC0xOTIsNyArMTk4LDcgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
cjo6c3RhcnRBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb24KICAgICBjb21w
bGV0aW9uSGFuZGxlcihpc1BsYXlpbmcpOwogfQogCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyOjpzdG9wQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRl
bnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6c3RvcEF1
ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmll
ciwgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpTdG9wQXVkaW9EZXN0
aW5hdGlvbkFzeW5jUmVwbHkmJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBib29sIGlzUGxh
eWluZyA9IGZhbHNlOwogICAgIGlmIChhdXRvKiBpdGVtID0gbV9hdWRpb0Rlc3RpbmF0aW9ucy5n
ZXQoaWRlbnRpZmllcikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgKaW5kZXggYjgzZjI5
ZjhkYzEzM2ExYTJjM2E4NzRiYTczM2I1ODBiMjZlNzYyZC4uODVhMjI0MzgzNmUzMzFlMTFhNjRh
ZDdkNjJkNjIwMjQ0N2IxZTc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgKQEAgLTI5
LDE5ICsyOSwxOCBAQAogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90
ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnku
aCIKICNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvY29jb2EvTWFjaFNlbWFw
aG9yZS5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CiB9CiAKLW5hbWVzcGFjZSBXVEYgewotY2xhc3Mg
TWFjaFNlbmRSaWdodDsKLX0KKwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjQs
MTQgKzYzLDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHVzaW5nIENyZWF0aW9uQ29tcGxldGlv
bkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25J
ZGVudGlmaWVyLCBXVEY6Ok1hY2hTZW5kUmlnaHQpPjsKKyAgICB2b2lkIGNyZWF0ZUF1ZGlvRGVz
dGluYXRpb24oY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklu
cHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBs
ZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwKKyAgICAgICAgTWFjaFNlbWFwaG9yZSYm
IHJlbmRlclNlbWFwaG9yZSwgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2Vy
OjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uRGVsYXllZFJlcGx5JiYpOwogI2Vsc2UKLSAgICB1c2lu
ZyBDcmVhdGlvbkNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllcik+OworICAgIHZvaWQgY3JlYXRlQXVkaW9EZXN0
aW5hdGlvbihjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5w
dXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxl
UmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLAorICAgICAgICBDcmVhdGVBdWRpb0Rlc3Rp
bmF0aW9uRGVsYXllZFJlcGx5JiYpOwogI2VuZGlmCi0gICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3Rp
bmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1
dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVS
YXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIENyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXIm
Jik7Ci0gICAgdm9pZCBkZWxldGVBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc3Rh
cnRBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHN0b3BBdWRpb0Rlc3RpbmF0
aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlcjo6RGVsZXRlQXVkaW9EZXN0aW5hdGlvbkFzeW5jUmVwbHkmJik7CisgICAgdm9pZCBz
dGFydEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIE1l
c3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6U3RhcnRBdWRpb0Rlc3RpbmF0
aW9uQXN5bmNSZXBseSYmKTsKKyAgICB2b2lkIHN0b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXI6OlN0b3BBdWRpb0Rlc3RpbmF0aW9uQXN5bmNSZXBseSYmKTsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB2b2lkIGF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIGNv
bnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQ2NF90IG51bWJlck9m
RnJhbWVzKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3Nh
Z2VzLmluCmluZGV4IDU1Nzg5ODQ2ZDc0ZDg1NzRiYmRhMWFiZGYyNzE4YmQzYmE1YmM0ZTQuLjA4
ZTY2Mjg0OTg1ODcxM2U0NTM2MmQ1ZjRlN2Y2MTc2MjNjYjIyYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI1LDEwICsyNSwxMCBAQAogCiBt
ZXNzYWdlcyAtPiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlciBOb3RSZWZDb3VudGVkIHsK
ICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKFN0cmluZyBp
bnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSkgLT4gKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllciwgTWFjaFNlbmRSaWdodCByZW5kZXJTZW1hcGhvcmVTZW5kUmlnaHQpIFN5bmNocm9u
b3VzCisgICAgQ3JlYXRlQXVkaW9EZXN0aW5hdGlvbihTdHJpbmcgaW5wdXREZXZpY2VJZCwgdWlu
dDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIE1hY2hTZW1h
cGhvcmUgcmVuZGVyU2VtYXBob3JlKSAtPiAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
SWRlbnRpZmllciBpZGVudGlmaWVyKSBTeW5jaHJvbm91cwogI2VuZGlmCiAjaWYgIVBMQVRGT1JN
KENPQ09BKQotICAgIENyZWF0ZUF1ZGlvRGVzdGluYXRpb24oU3RyaW5nIGlucHV0RGV2aWNlSWQs
IHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlKSAtPiAo
V2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSBTeW5j
aHJvbm91cworICAgIENyZWF0ZUF1ZGlvRGVzdGluYXRpb24oKSAtPiAoV2ViS2l0OjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSBTeW5jaHJvbm91cwogI2VuZGlm
CiAKICAgICBEZWxldGVBdWRpb0Rlc3RpbmF0aW9uKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5h
dGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGVjOGJjZjA4N2RmMTZkZjYwZGJlMDA4MGU0Y2Vi
MDYxZDE3NjhmZjcuLjZkNzBmNTI3NTMxYzg0ZTZhODg1OGZjMWJjZGNiMmM0NWU1YzZlMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjU1LDYgKzI1NSw3
IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAg
ICdJUEM6OkRhdGFSZWZlcmVuY2UnLAogICAgICAgICAnSVBDOjpGb250UmVmZXJlbmNlJywKICAg
ICAgICAgJ01hY2hTZW5kUmlnaHQnLAorICAgICAgICAnTWFjaFNlbWFwaG9yZScsCiAgICAgICAg
ICdNZWRpYVRpbWUnLAogICAgICAgICAnU3RyaW5nJywKICAgICAgICAgJ1dlYkNvcmU6OkNvbG9y
U3BhY2UnLApAQCAtMzU0LDYgKzM1NSw3IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19hbmRf
aGVhZGVycyhyZWNlaXZlcik6CiAKICAgICBub25fdGVtcGxhdGVfd3RmX3R5cGVzID0gZnJvemVu
c2V0KFsKICAgICAgICAgJ01hY2hTZW5kUmlnaHQnLAorICAgICAgICAnTWFjaFNlbWFwaG9yZScs
CiAgICAgICAgICdNZWRpYVR5cGUnLAogICAgICAgICAnU3RyaW5nJywKICAgICBdKQpAQCAtNDA5
LDYgKzQxMSw3IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19hbmRfaGVhZGVyc19mb3JfcmVw
bGllcyhyZWNlaXZlcik6CiAKICAgICBub25fdGVtcGxhdGVfd3RmX3R5cGVzID0gZnJvemVuc2V0
KFsKICAgICAgICAgJ01hY2hTZW5kUmlnaHQnLAorICAgICAgICAnTWFjaFNlbWFwaG9yZScsCiAg
ICAgICAgICdNZWRpYVRpbWUnLAogICAgICAgICAnU3RyaW5nJywKICAgICBdKQpAQCAtNjM5LDYg
KzY0Miw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogCiAgICAgc3BlY2lhbF9jYXNl
cyA9IHsKICAgICAgICAgJ01hY2hTZW5kUmlnaHQnOiBbJzx3dGYvTWFjaFNlbmRSaWdodC5oPidd
LAorICAgICAgICAnTWFjaFNlbWFwaG9yZSc6IFsnPHd0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg+
J10sCiAgICAgICAgICdKU0M6Ok1lc3NhZ2VMZXZlbCc6IFsnPEphdmFTY3JpcHRDb3JlL0NvbnNv
bGVUeXBlcy5oPiddLAogICAgICAgICAnSlNDOjpNZXNzYWdlU291cmNlJzogWyc8SmF2YVNjcmlw
dENvcmUvQ29uc29sZVR5cGVzLmg+J10sCiAgICAgICAgICdJbnNwZWN0b3I6Okluc3BlY3RvclRh
cmdldFR5cGUnOiBbJzxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JUYXJnZXQuaD4nXSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHkg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5CmluZGV4
IDZlYzZlYjRkYTU1NzczZmNlZDYzZDM4MjIzM2MzMjU4MTlhOWEzYzMuLmFkZWI4NWY5MGIzZjRk
NTliYjczZjQxNjJlMDY4MWE5ZjY3NjkyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weQpAQCAtMzksNyArMzksNyBAQCB0ZXN0c19k
aXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4obW9kdWxlX2RpcmVjdG9yeSwgJ3Rlc3RzJykKIAogcmVz
ZXRfcmVzdWx0cyA9IEZhbHNlCiAKLV90ZXN0X3JlY2VpdmVyX25hbWVzID0gWydUZXN0V2l0aFN1
cGVyY2xhc3MnLCAnVGVzdFdpdGhMZWdhY3lSZWNlaXZlcicsICdUZXN0V2l0aG91dEF0dHJpYnV0
ZXMnLCAnVGVzdFdpdGhJZk1lc3NhZ2UnXQorX3Rlc3RfcmVjZWl2ZXJfbmFtZXMgPSBbJ1Rlc3RX
aXRoU3VwZXJjbGFzcycsICdUZXN0V2l0aExlZ2FjeVJlY2VpdmVyJywgJ1Rlc3RXaXRob3V0QXR0
cmlidXRlcycsICdUZXN0V2l0aElmTWVzc2FnZScsICdUZXN0V2l0aE1hY2hTZW1hcGhvcmUnXQog
CiAKIGRlZiByZWNlaXZlcl9oZWFkZXJfZmlsZV9uYW1lKHJlY2VpdmVyX25hbWUpOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZSBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWFrZWZpbGUKaW5kZXggODc5NmZmYmM1YTNm
ODdiOTIzZWQ2Yzk4MDIzOTFhODc2YmFjMzgyZS4uMzlhZjEzY2U3MDJhNTgzN2RjODcxMjVjN2M1
MmNkMjdiMmE3N2VlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0cy9NYWtlZmlsZQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01h
a2VmaWxlCkBAIC0xLDIgKzEsMiBAQAogYWxsOgotCXB5dGhvbiAuLi8uLi9nZW5lcmF0ZS1tZXNz
YWdlLXJlY2VpdmVyLnB5IC4gVGVzdFdpdGhTdXBlcmNsYXNzIFRlc3RXaXRoTGVnYWN5UmVjZWl2
ZXIgVGVzdFdpdGhvdXRBdHRyaWJ1dGVzIFRlc3RXaXRoSWZNZXNzYWdlCisJcHl0aG9uIC4uLy4u
L2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkgLiBUZXN0V2l0aFN1cGVyY2xhc3MgVGVzdFdp
dGhMZWdhY3lSZWNlaXZlciBUZXN0V2l0aG91dEF0dHJpYnV0ZXMgVGVzdFdpdGhJZk1lc3NhZ2Ug
VGVzdFdpdGhNYWNoU2VtYXBob3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAK
aW5kZXggNTk0MDQ0MzkwY2FkYWMyZmYwY2RmYWE5ZTMwNTA0NDI3NzgzODBmZS4uODNjNWQwY2Iz
MzIyMmJiMWE2ZmI3MzQ1NGQ0MDc5ZGQ2MmU0Y2M2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFyZ3VtZW50RGVz
Y3JpcHRpb25zLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2VuZGlmCiAjaW5jbHVkZSAiVGVzdFdp
dGhJZk1lc3NhZ2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIlRlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiVGVzdFdpdGhTdXBlcmNsYXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJUZXN0V2l0
aG91dEF0dHJpYnV0ZXNNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgpAQCAtNjUsNiArNjYsOSBAQAogI2VuZGlmCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUg
PHd0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg+CisjZW5kaWYKICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC0yMTUsNiArMjE5LDEyIEBAIE9wdGlv
bmFsPEpTQzo6SlNWYWx1ZT4ganNWYWx1ZUZvckFyZ3VtZW50cyhKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIE1lCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGNhc2UgTWVzc2FnZU5h
bWU6OlRlc3RXaXRoSWZNZXNzYWdlX0xvYWRVUkw6CiAgICAgICAgIHJldHVybiBqc1ZhbHVlRm9y
RGVjb2RlZEFyZ3VtZW50czxNZXNzYWdlczo6VGVzdFdpdGhJZk1lc3NhZ2U6OkxvYWRVUkw6OkFy
Z3VtZW50cz4oZ2xvYmFsT2JqZWN0LCBkZWNvZGVyKTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9TZW5kU2Vt
YXBob3JlOgorICAgICAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudHM8TWVzc2Fn
ZXM6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6U2VuZFNlbWFwaG9yZTo6QXJndW1lbnRzPihnbG9i
YWxPYmplY3QsIGRlY29kZXIpOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTWFjaFNl
bWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlOgorICAgICAgICByZXR1cm4ganNWYWx1ZUZvckRlY29k
ZWRBcmd1bWVudHM8TWVzc2FnZXM6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6UmVjZWl2ZVNlbWFw
aG9yZTo6QXJndW1lbnRzPihnbG9iYWxPYmplY3QsIGRlY29kZXIpOwogI2VuZGlmCiAgICAgZGVm
YXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC01MTYsNiArNTI2LDE0IEBAIE9wdGlvbmFsPFZlY3Rv
cjxBcmd1bWVudERlc2NyaXB0aW9uPj4gbWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zKE1lc3Nh
Z2VOYW1lIG5hCiAgICAgICAgICAgICB7InVybCIsICJTdHJpbmciLCBudWxscHRyLCBmYWxzZX0s
CiAgICAgICAgICAgICB7InZhbHVlIiwgImludDY0X3QiLCBudWxscHRyLCBmYWxzZX0sCiAgICAg
ICAgIH07CisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1l
OjpUZXN0V2l0aE1hY2hTZW1hcGhvcmVfU2VuZFNlbWFwaG9yZToKKyAgICAgICAgcmV0dXJuIFZl
Y3RvcjxBcmd1bWVudERlc2NyaXB0aW9uPiB7CisgICAgICAgICAgICB7InMwIiwgIk1hY2hTZW1h
cGhvcmUiLCBudWxscHRyLCBmYWxzZX0sCisgICAgICAgIH07CisgICAgY2FzZSBNZXNzYWdlTmFt
ZTo6VGVzdFdpdGhNYWNoU2VtYXBob3JlX1JlY2VpdmVTZW1hcGhvcmU6CisgICAgICAgIHJldHVy
biBWZWN0b3I8QXJndW1lbnREZXNjcmlwdGlvbj4geyB9OwogI2VuZGlmCiAgICAgZGVmYXVsdDoK
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3RzL01lc3NhZ2VOYW1lcy5jcHAKaW5kZXggNzZmYWQzN2M1NDYwYWRiY2ZlYTM3MmQxODY2NTUw
ZmE3YzhhODUxMy4uOThjZTMyZDk1NWU3OTYzOGMyM2UyNWJmNzM4MTMwNzZhMjgyNGZiYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVz
LmNwcApAQCAtNzIsNiArNzIsMTAgQEAgY29uc3QgY2hhciogZGVzY3JpcHRpb24oTWVzc2FnZU5h
bWUgbmFtZSkKICAgICAgICAgcmV0dXJuICJUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1Rlc3RQYXJh
bWV0ZXJBdHRyaWJ1dGVzIjsKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJl
Y2VpdmVyX1RvdWNoRXZlbnQ6CiAgICAgICAgIHJldHVybiAiVGVzdFdpdGhMZWdhY3lSZWNlaXZl
cl9Ub3VjaEV2ZW50IjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aE1hY2hTZW1hcGhv
cmVfUmVjZWl2ZVNlbWFwaG9yZToKKyAgICAgICAgcmV0dXJuICJUZXN0V2l0aE1hY2hTZW1hcGhv
cmVfUmVjZWl2ZVNlbWFwaG9yZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNo
U2VtYXBob3JlX1NlbmRTZW1hcGhvcmU6CisgICAgICAgIHJldHVybiAiVGVzdFdpdGhNYWNoU2Vt
YXBob3JlX1NlbmRTZW1hcGhvcmUiOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3Vw
ZXJjbGFzc19Mb2FkVVJMOgogICAgICAgICByZXR1cm4gIlRlc3RXaXRoU3VwZXJjbGFzc19Mb2Fk
VVJMIjsKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5j
TWVzc2FnZToKQEAgLTE4MSw2ICsxODUsOSBAQCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKE1l
c3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXJfVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM6CiAgICAgY2FzZSBNZXNzYWdlTmFt
ZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9Ub3VjaEV2ZW50OgogICAgICAgICByZXR1cm4gUmVj
ZWl2ZXJOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOworICAgIGNhc2UgTWVzc2FnZU5hbWU6
OlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlOgorICAgIGNhc2UgTWVzc2Fn
ZU5hbWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9TZW5kU2VtYXBob3JlOgorICAgICAgICByZXR1
cm4gUmVjZWl2ZXJOYW1lOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU7CiAgICAgY2FzZSBNZXNzYWdl
TmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX0xvYWRVUkw6CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6
VGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2U6CiAgICAgY2FzZSBNZXNzYWdlTmFt
ZTo6VGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VXaXRoQ29ubmVjdGlvbjoKQEAg
LTI5OCw2ICszMDUsMTQgQEAgYm9vbCBpc1ZhbGlkTWVzc2FnZU5hbWUoTWVzc2FnZU5hbWUgbWVz
c2FnZU5hbWUpCiAjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9D
T05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCiAgICAgaWYgKG1lc3Nh
Z2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVG91Y2hF
dmVudCkKICAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2Vt
YXBob3JlX1JlY2VpdmVTZW1hcGhvcmUpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5h
bWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9TZW5kU2VtYXBob3JlKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKICNlbmRpZgogICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpU
ZXN0V2l0aFN1cGVyY2xhc3NfTG9hZFVSTCkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oIGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaAppbmRleCAy
M2Y3NTYwODdkNjgzYWQyMmIwNjhlMmE3MWZkOTVhMGYzY2U1NTVlLi5mYjBkOTFiYTg4ZGM4ZDY4
ZWY1YmU3NGEyYjJhMjNmMmQ0MzMzMTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmgKQEAgLTMxLDExICszMSwxMiBAQCBuYW1lc3Bh
Y2UgSVBDIHsKIGVudW0gY2xhc3MgUmVjZWl2ZXJOYW1lIDogdWludDhfdCB7CiAgICAgVGVzdFdp
dGhJZk1lc3NhZ2UgPSAxCiAgICAgLCBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyID0gMgotICAgICwg
VGVzdFdpdGhTdXBlcmNsYXNzID0gMwotICAgICwgVGVzdFdpdGhvdXRBdHRyaWJ1dGVzID0gNAot
ICAgICwgSVBDID0gNQotICAgICwgQXN5bmNSZXBseSA9IDYKLSAgICAsIEludmFsaWQgPSA3Cisg
ICAgLCBUZXN0V2l0aE1hY2hTZW1hcGhvcmUgPSAzCisgICAgLCBUZXN0V2l0aFN1cGVyY2xhc3Mg
PSA0CisgICAgLCBUZXN0V2l0aG91dEF0dHJpYnV0ZXMgPSA1CisgICAgLCBJUEMgPSA2CisgICAg
LCBBc3luY1JlcGx5ID0gNworICAgICwgSW52YWxpZCA9IDgKIH07CiAKIGVudW0gY2xhc3MgTWVz
c2FnZU5hbWUgOiB1aW50MTZfdCB7CkBAIC02MCw2ICs2MSw4IEBAIGVudW0gY2xhc3MgTWVzc2Fn
ZU5hbWUgOiB1aW50MTZfdCB7CiAgICAgLCBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1RlbXBsYXRl
VGVzdAogICAgICwgVGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9UZXN0UGFyYW1ldGVyQXR0cmlidXRl
cwogICAgICwgVGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9Ub3VjaEV2ZW50CisgICAgLCBUZXN0V2l0
aE1hY2hTZW1hcGhvcmVfUmVjZWl2ZVNlbWFwaG9yZQorICAgICwgVGVzdFdpdGhNYWNoU2VtYXBo
b3JlX1NlbmRTZW1hcGhvcmUKICAgICAsIFRlc3RXaXRoU3VwZXJjbGFzc19Mb2FkVVJMCiAgICAg
LCBUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZQogICAgICwgVGVzdFdpdGhTdXBl
cmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VXaXRoQ29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhvcmUubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNl
bWFwaG9yZS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZDM3ODcyOGY4YTZmYjQyNTJhMGM1YWU5
ZDE1ZWRmZWFiMTVmOWM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhvcmUubWVzc2FnZXMuaW4KQEAgLTAsMCAr
MSwzMCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAor
IyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFRlc3Rz
IHNjZW5hcmlvIHdoZXJlICNpZidlZCBtZXNzYWdlIHNob3VsZCBnZW5lcmF0ZSBpc1ZhbGlkTWVz
c2FnZU5hbWUoKSA9PSB0cnVlIGZvcgorIyBib3RoIGNhc2VzLgorbWVzc2FnZXMgLT4gVGVzdFdp
dGhNYWNoU2VtYXBob3JlIHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIFNlbmRTZW1h
cGhvcmUoTWFjaFNlbWFwaG9yZSBzMCkKKyAgICB2b2lkIFJlY2VpdmVTZW1hcGhvcmUoKSAtPiAo
TWFjaFNlbWFwaG9yZSByMCkKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1h
cGhvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0ZWU0MGMzNmFhZDgzZjllNzAx
ZDg2YzhhZWM3NjNhMzc4ZWFlODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2VSZWNlaXZlci5j
cHAKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
CisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJUZXN0V2l0aE1hY2hTZW1hcGhvcmUuaCIKKworI2luY2x1ZGUgIkRlY29k
ZXIuaCIKKyNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhNYWNo
U2VtYXBob3JlTWVzc2FnZXMuaCIKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYv
Y29jb2EvTWFjaFNlbWFwaG9yZS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2
b2lkIFRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgYXV0byBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhNYWNoU2VtYXBob3Jl
OjpTZW5kU2VtYXBob3JlOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1l
c3NhZ2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6OlNlbmRTZW1hcGhvcmU+KGRlY29kZXIsIHRo
aXMsICZUZXN0V2l0aE1hY2hTZW1hcGhvcmU6OnNlbmRTZW1hcGhvcmUpOworICAgICAgICByZXR1
cm47CisgICAgfQorI2VuZGlmCisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIFVO
VVNFRF9QQVJBTShkZWNvZGVyKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9p
ZCBUZXN0V2l0aE1hY2hTZW1hcGhvcmU6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK3sKKyAgICBhdXRvIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6OlJlY2VpdmVT
ZW1hcGhvcmU6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6UmVjZWl2ZVNlbWFwaG9yZT4oZGVjb2RlciwgKnJlcGx5
RW5jb2RlciwgdGhpcywgJlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6cmVjZWl2ZVNlbWFwaG9yZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBVTlVTRURfUEFSQU0oY29ubmVj
dGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOworICAgIFVOVVNFRF9QQVJBTShyZXBs
eUVuY29kZXIpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
VGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZXMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ODU4MmNiODdlMmMyM2I4NGU5NWMwMmVjOGFiMGFmNDg5ODkyMDU5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhv
cmVNZXNzYWdlcy5oCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
CisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQ29ubmVjdGlv
bi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIlRlc3RXaXRoTWFjaFNl
bWFwaG9yZU1lc3NhZ2VzUmVwbGllcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL2NvY29hL01h
Y2hTZW1hcGhvcmUuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFRlc3RX
aXRoTWFjaFNlbWFwaG9yZSB7CisKK3N0YXRpYyBpbmxpbmUgSVBDOjpSZWNlaXZlck5hbWUgbWVz
c2FnZVJlY2VpdmVyTmFtZSgpCit7CisgICAgcmV0dXJuIElQQzo6UmVjZWl2ZXJOYW1lOjpUZXN0
V2l0aE1hY2hTZW1hcGhvcmU7Cit9CisKKyNpZiBQTEFURk9STShDT0NPQSkKK2NsYXNzIFNlbmRT
ZW1hcGhvcmUgeworcHVibGljOgorICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29u
c3QgTWFjaFNlbWFwaG9yZSY+OworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgp
IHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9TZW5kU2Vt
YXBob3JlOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBl
eHBsaWNpdCBTZW5kU2VtYXBob3JlKGNvbnN0IE1hY2hTZW1hcGhvcmUmIHMwKQorICAgICAgICA6
IG1fYXJndW1lbnRzKHMwKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFy
Z3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAg
fQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKwor
I2lmIFBMQVRGT1JNKENPQ09BKQorY2xhc3MgUmVjZWl2ZVNlbWFwaG9yZSB7CitwdWJsaWM6Cisg
ICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OworCisgICAgc3RhdGljIElQQzo6TWVz
c2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTWFjaFNl
bWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5j
ID0gdHJ1ZTsKKworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxNYWNoU2VtYXBob3JlJj47
CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPE1hY2hTZW1hcGhvcmU+Owor
ICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJn
dW1lbnRzOworfTsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aE1hY2hTZW1hcGhv
cmUKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2VzUmVwbGllcy5o
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhv
cmVNZXNzYWdlc1JlcGxpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTcwYzRhMTNiYjc2YTM2MDU3NzNiZTNh
YTdjN2JlMWExOWE2MTBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNzYWdlc1JlcGxpZXMuaApAQCAt
MCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCisKK25hbWVzcGFj
ZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgVGVzdFdpdGhNYWNoU2VtYXBob3JlIHsKKworCit9IC8v
IG5hbWVzcGFjZSBUZXN0V2l0aE1hY2hTZW1hcGhvcmUKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2Vz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRD
b2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVu
dENvZGVyc0NvY29hLm1tCmluZGV4IDI4MTRlOGI1ZWYzMmQ1MDI2NThiYWI1YWVmNzEzY2Y2MTQ3
MDJiNTcuLjgzNWE2NDA5YmQ4NzczZDQzNGExZDAxMTM0MmIyY2VmMTRjNTk1NTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVy
c0NvY29hLm1tCkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRBdHRyaWJ1
dGVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaD4KICNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvQ29yZVRleHRTUEkuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9NYWNo
U2VtYXBob3JlLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8VUlLaXQv
VUlGb250Lmg+CkBAIC02NSw2ICs2NiwxOSBAQCBPcHRpb25hbDxXZWJDb3JlOjpBdHRyaWJ1dGVk
U3RyaW5nPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmc+OjpkZQogICAg
IHJldHVybiB7IHsgV1RGTW92ZShhdHRyaWJ1dGVkU3RyaW5nKSwgV1RGTW92ZShkb2N1bWVudEF0
dHJpYnV0ZXMpIH0gfTsKIH0KIAordm9pZCBBcmd1bWVudENvZGVyPFdURjo6TWFjaFNlbWFwaG9y
ZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXVEY6Ok1hY2hTZW1hcGhvcmUmIHNl
bWFwaG9yZSkKK3sKKyAgICBlbmNvZGVyIDw8IHNlbWFwaG9yZS5jcmVhdGVTZW5kUmlnaHQoKTsK
K30KKworT3B0aW9uYWw8TWFjaFNlbWFwaG9yZT4gQXJndW1lbnRDb2RlcjxXVEY6Ok1hY2hTZW1h
cGhvcmU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBNYWNoU2VuZFJpZ2h0IHNl
bmRSaWdodDsKKyAgICBpZiAoZGVjb2Rlci5kZWNvZGUoc2VuZFJpZ2h0KSkKKyAgICAgICAgcmV0
dXJuIE9wdGlvbmFsPFdURjo6TWFjaFNlbWFwaG9yZT4geyBzdGQ6OmluX3BsYWNlLCBXVEZNb3Zl
KHNlbmRSaWdodCkgfTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCiAjaWYgRU5BQkxF
KEFQUExFX1BBWSkKIAogI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJh
bWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3YjVhNzZh
ZjI1MjBjOWU3MjAxMDY4MDhhOTM0ZmQxOTc4OTlkMjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQotCi0jaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKLSNpbmNsdWRlIDx3
dGYvTWFjaFNlbmRSaWdodC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMgewotICAgIFJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyIGlkZW50aWZpZXI7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgTWFjaFNl
bmRSaWdodCBzZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKLSNlbmRpZgot
Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzPiBkZWNvZGUoRGVjb2RlciYpOwotfTsKLQot
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0
aW9uUGFyYW1ldGVyczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5j
b2RlciA8PCBpZGVudGlmaWVyOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGVuY29kZXIgPDwg
c2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmU7Ci0jZW5kaWYKLX0KLQotdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVh
dGlvblBhcmFtZXRlcnM+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRD
cmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIE9wdGlvbmFsPFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyPiBpZGVudGlmaWVyOwotICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsK
LSAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAg
ICBwYXJhbWV0ZXJzLmlkZW50aWZpZXIgPSAqaWRlbnRpZmllcjsKLQotI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIE9wdGlvbmFsPE1hY2hTZW5kUmlnaHQ+IHNlbmRSaWdodEZvclJlc3VtZURpc3Bs
YXlMaXN0U2VtYXBob3JlOwotICAgIGRlY29kZXIgPj4gc2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxh
eUxpc3RTZW1hcGhvcmU7Ci0gICAgaWYgKCFzZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNl
bWFwaG9yZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHBhcmFtZXRlcnMu
c2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUgPSBXVEZNb3ZlKCpzZW5kUmln
aHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBw
YXJhbWV0ZXJzOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJM
RShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKaW5kZXggZmE5NmNkYTg0ZWNiN2Q0ODhhZTQyOTEzM2MwZjViNDQzNzA0OGRiMS4uNTA4
MjFkMWRiNzM4MGUxMDY0ZTE5ZWJiMGQ4ZTNmN2NkYzZhYmFjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTgxLDYgKzgxLDcgQEAKICNpZiBQ
TEFURk9STShDT0NPQSkKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFjaFNlbmRSaWdodDsKK2Ns
YXNzIE1hY2hTZW1hcGhvcmU7CiB9CiAjZW5kaWYKIApAQCAtNDg3LDYgKzQ4OCwxMCBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPENHQWZmaW5lVHJhbnNmb3JtPiB7CiAgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBDR0FmZmluZVRyYW5zZm9ybSk7CiAgICAgc3RhdGlj
IE9wdGlvbmFsPENHQWZmaW5lVHJhbnNmb3JtPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKK3RlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V1RGOjpNYWNoU2VtYXBob3JlPiB7CisgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXVEY6Ok1hY2hTZW1hcGhvcmUmKTsKKyAg
ICBzdGF0aWMgT3B0aW9uYWw8V1RGOjpNYWNoU2VtYXBob3JlPiBkZWNvZGUoRGVjb2RlciYpOwor
fTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZhMDNkYzg1MTQwMDM4NTgy
NjE3NTNkZWNjZjk1Nzc3YTFhYmNlYTEuLjI0YjEzMmIyMjNmOTkzODkwZmFhMTA5NThlNmJmZTcw
MTQxMjEzZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTk2OCw3ICsxOTY4LDYgQEAKIAkJRjQyRDYzNDEyMkEwRUZERjAwRDJGQjNB
IC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjQyRDYzM0YyMkEwRUZEMzAwRDJGQjNBIC8qIFdlYkF1dG9jb3Jy
ZWN0aW9uRGF0YS5oICovOyB9OwogCQlGNDMwRTk0MjIyNDczMzVGMDA1RkUwNTMgLyogV2Vic2l0
ZU1ldGFWaWV3cG9ydFBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjQzMEU5NDEyMjQ3MzJBOTAwNUZFMDUzIC8qIFdlYnNpdGVNZXRhVmlld3Bv
cnRQb2xpY3kuaCAqLzsgfTsKIAkJRjQzMEU5NDQyMjQ3M0RGRjAwNUZFMDUzIC8qIFdlYkNvbnRl
bnRNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NDMwRTk0MzIyNDczREI4MDA1RkUwNTMgLyogV2ViQ29udGVudE1vZGUuaCAqLzsgfTsKLQkJRjQz
N0M4RDkyNTkzQjdFMzAwREI4QTFDIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBh
cmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0MzdDOEQ4MjU5M0I3RTMwMERCOEExQyAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRp
b25QYXJhbWV0ZXJzLmggKi87IH07CiAJCUY0MzhDRDFDMjI0MTQyMTQwMERFNkREQSAvKiBXS1dl
YnBhZ2VQcmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjQzOENEMUIyMjQxNDBBNjAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2Vz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQlGNDM4
Q0QxRjIyNDE0RDQwMDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXNJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzOENEMUUyMjQx
NEQ0MDAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzSW50ZXJuYWwuaCAqLzsgfTsKIAkJ
RjQzOENEMjEyMjQxRjY5NTAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzUHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzOENEMjAy
MjQxRjY5NTAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzUHJpdmF0ZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01Nzg2LDcgKzU3ODUs
NiBAQAogCQlGNDJENjM0MDIyQTBFRkQzMDBEMkZCM0EgLyogV2ViQXV0b2NvcnJlY3Rpb25EYXRh
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViQXV0b2NvcnJl
Y3Rpb25EYXRhLm1tOyBwYXRoID0gaW9zL1dlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzMEU5NDEyMjQ3MzJBOTAwNUZFMDUzIC8qIFdlYnNp
dGVNZXRhVmlld3BvcnRQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZU1ldGFWaWV3cG9y
dFBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDMwRTk0MzIyNDczREI4
MDA1RkUwNTMgLyogV2ViQ29udGVudE1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGVudE1v
ZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjQzN0M4RDgyNTkzQjdFMzAwREI4
QTFDIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDM4Q0QxQjIyNDE0MEE2MDBERTZEREEgLyogV0tX
ZWJwYWdlUHJlZmVyZW5jZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJwYWdlUHJlZmVyZW5jZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzOENEMUQyMjQxNEFENjAwREU2RERB
IC8qIFdLV2VicGFnZVByZWZlcmVuY2VzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJw
YWdlUHJlZmVyZW5jZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzhDRDFF
MjI0MTRENDAwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlc0ludGVybmFsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLV2VicGFnZVByZWZlcmVuY2VzSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTY1MjUsNyArNjUyMyw2IEBACiAJCQkJRTFDQzFCOEUxMkQ3RUFERjAw
NjI1ODM4IC8qIFByaW50SW5mby5oICovLAogCQkJCTQ2M0ZENDgxMUVCOTRFQUQwMEEyOTgyQyAv
KiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLywKIAkJCQk5QjEyMjlEMDIzRkYyQTVFMDA4
Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaCAqLywKLQkJCQlGNDM3
QzhEODI1OTNCN0UzMDBEQjhBMUMgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFy
YW1ldGVycy5oICovLAogCQkJCTVDQjdBRkU2MjNDNjgxQjAwMEU0OUNGMyAvKiBSZXNvdXJjZUxv
YWRJbmZvLmggKi8sCiAJCQkJNUMwMDk5M0IyNDE3RkI3RTAwRDUzQzI1IC8qIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmggKi8sCiAJCQkJNDEwNDgyQ0IxREREMkZCNTAwRjAwNkQw
IC8qIFJUQ05ldHdvcmsuY3BwICovLApAQCAtMTE4NzAsNyArMTE4NjcsNiBAQAogCQkJCTFBNTcw
NEZDMUJFMTc1MTEwMDg3NEFGMSAvKiBSZW1vdGVPYmplY3RJbnZvY2F0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUMxMzM4MDE4NTkwQUU0MDBGM0VDMDUgLyogUmVtb3RlT2JqZWN0UmVnaXN0
cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzEzMzg2MTg1OTBDNDYwMEYzRUMwNSAvKiBSZW1v
dGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKLQkJCQlGNDM3QzhEOTI1
OTNCN0UzMDBEQjhBMUMgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVy
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1OTQ3OTAxODdCM0IzQTAwNDM3ODU3IC8qIFJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU5NDdBODE4N0I1
MTc2MDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY1OTQ3OUIxODdCM0I2MDAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHkuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IDYxYjRjODI0OTU3NmRlMTI4YTlhYmVkMDkyN2Y0MWVl
NDE2MmJlNmUuLmMxZTM2Y2VkYTFkMjM3YzZhODk1Yzg1MTc2ZmE1NjRhMmZlOWE4YWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTMyLDcgKzMyLDYgQEAK
ICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiSW1hZ2VE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmgiCi0jaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5o
IgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2hhcmVk
TWVtb3J5LmgiCkBAIC02NywxMiArNjYsMTEgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogICAgIGNv
bm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlzKTsKICAgICBjb25uZWN0aW9uLm1lc3NhZ2VSZWNlaXZl
ck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIudG9VSW50NjQoKSwgKnRoaXMpOwotICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoewotICAgICAgICBtX3JlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyLAorICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQobV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllcgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBtX3Jlc3VtZURpc3BsYXlMaXN0U2Vt
YXBob3JlLmNyZWF0ZVNlbmRSaWdodCgpLAorICAgICAgICAsIG1fcmVzdW1lRGlzcGxheUxpc3RT
ZW1hcGhvcmUKICNlbmRpZgotICAgIH0pLCAwKTsKKyAgICApLCAwKTsKIH0KIAogdm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlZXN0YWJsaXNoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmluZGV4IDM0ZTMwY2UxMTkzNjBj
OTMwYzJiMDdlOWMzMDhhMWI2NDBlZDBhM2UuLmIzMzI4MDY0YjUwNDE4ZGM5MzhmNWZlMjEwNWVj
Y2YyN2ZhNzk4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKQEAgLTQw
LDcgKzQwLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvV2ViQXVkaW9CdWZmZXJMaXN0Lmg+CiAjaW5jbHVkZSA8bWFjaC9tYWNoX3RpbWUu
aD4KLSNpbmNsdWRlIDx3dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oPgogI2VuZGlmCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtODAsNyArNzksNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eTo6c3RhcnRSZW5kZXJpbmdUaHJlYWQoKQogCiAgICAgYXV0byBvZmZUaHJlYWRSZW5k
ZXJpbmcgPSBbdGhpc10oKSBtdXRhYmxlIHsKICAgICAgICAgZG8gewotICAgICAgICAgICAgbV9y
ZW5kZXJTZW1hcGhvcmUtPndhaXQoKTsKKyAgICAgICAgICAgIG1fcmVuZGVyU2VtYXBob3JlLndh
aXQoKTsKICAgICAgICAgICAgIGlmIChtX3Nob3VsZFN0b3BUaHJlYWQpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAKQEAgLTk4LDggKzk3LDcgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHk6OnN0b3BSZW5kZXJpbmdUaHJlYWQoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3No
b3VsZFN0b3BUaHJlYWQgPSB0cnVlOwotICAgIGlmIChtX3JlbmRlclNlbWFwaG9yZSkKLSAgICAg
ICAgbV9yZW5kZXJTZW1hcGhvcmUtPnNpZ25hbCgpOworICAgIG1fcmVuZGVyU2VtYXBob3JlLnNp
Z25hbCgpOwogICAgIG1fcmVuZGVyVGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOwogICAgIG1f
cmVuZGVyVGhyZWFkID0gbnVsbHB0cjsKICNlbmRpZgpAQCAtMTA3LDIwICsxMDUsMTQgQEAgdm9p
ZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0b3BSZW5kZXJpbmdUaHJlYWQoKQogCiB2
b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2VzcygpCiB7
Ci0gICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgZGVzdGluYXRpb25JRDsKLSNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICBNYWNoU2VuZFJpZ2h0IHJlbmRlclNlbWFwaG9yZVNlbmRS
aWdodDsKLSNlbmRpZgotCiAgICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgY29ubmVjdGlvbi5hZGRD
bGllbnQoKnRoaXMpOwogICAgIGF1dG8gZGlkU3VjY2VlZCA9IGNvbm5lY3Rpb24uY29ubmVjdGlv
bigpLnNlbmRTeW5jKAotICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1h
bmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb24obV9pbnB1dERldmljZUlkLCBtX251bWJlck9m
SW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscygpLCBzYW1wbGVSYXRlKCksIGhh
cmR3YXJlU2FtcGxlUmF0ZSgpKSwKLSAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZXBseShkZXN0aW5hdGlvbklE
CisgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRl
QXVkaW9EZXN0aW5hdGlvbihtX2lucHV0RGV2aWNlSWQsIG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxz
LCBudW1iZXJPZk91dHB1dENoYW5uZWxzKCksIHNhbXBsZVJhdGUoKSwgaGFyZHdhcmVTYW1wbGVS
YXRlKCkKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAgICwgcmVuZGVyU2VtYXBob3Jl
U2VuZFJpZ2h0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAsIG1fcmVuZGVyU2VtYXBob3JlCiAjZW5kaWYKLSAg
ICAgICAgKSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLCBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5KG1fZGVzdGluYXRp
b25JRCksIDApOwogCiAgICAgaWYgKCFkaWRTdWNjZWVkKSB7CiAgICAgICAgIC8vIFRoZSBHUFVQ
cm9jZXNzIGxpa2VseSBjcmFzaGVkIGR1cmluZyB0aGlzIHN5bmNocm9ub3VzIElQQy4gZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZSgpIHdpbGwgZ2V0IGNhbGxlZCB0byByZWNvbm5lY3QgdG8g
dGhlIEdQVVByb2Nlc3MuCkBAIC0xMjgsNyArMTIwLDYgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgbV9kZXN0aW5hdGlvbklEID0gZGVzdGluYXRpb25JRDsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIG1fY3VycmVudEZyYW1lID0gMDsKQEAgLTEzNiw3ICsxMjcsNiBAQCB2b2lk
IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2VzcygpCiAgICAg
Z2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7CiAgICAgbV9yaW5n
QnVmZmVyLT5hbGxvY2F0ZShzdHJlYW1Gb3JtYXQsIG1fbnVtYmVyT2ZGcmFtZXMpOwogICAgIG1f
YXVkaW9CdWZmZXJMaXN0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q+
KHN0cmVhbUZvcm1hdCk7Ci0gICAgbV9yZW5kZXJTZW1hcGhvcmUgPSBtYWtlVW5pcXVlPE1hY2hT
ZW1hcGhvcmU+KFdURk1vdmUocmVuZGVyU2VtYXBob3JlU2VuZFJpZ2h0KSk7CiAjZW5kaWYKIAog
ICAgIHN0YXJ0UmVuZGVyaW5nVGhyZWFkKCk7CkBAIC0yMDUsOSArMTk1LDcgQEAgdm9pZCBSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BV
UHJvY2Vzc0Nvbm5lY3QKICAgICBvbGRDb25uZWN0aW9uLnJlbW92ZUNsaWVudCgqdGhpcyk7CiAK
ICAgICBzdG9wUmVuZGVyaW5nVGhyZWFkKCk7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgbV9y
ZW5kZXJTZW1hcGhvcmUgPSBudWxscHRyOwotI2VuZGlmCisKICAgICBjb25uZWN0VG9HUFVQcm9j
ZXNzKCk7CiAKICAgICBpZiAoaXNQbGF5aW5nKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHkuaAppbmRleCA4ZDJjNjNlYjljNTVmYjhiMmFjNTRiYWFkZThmNzNjZTVkNWIxY2M1Li5hZjYz
NmZmMzY2NDljMjQwMDYyMzI0YWFlYWEyMGYxN2QxNTgwZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5LmgKQEAgLTM4LDYgKzM4LDggQEAKICNpZiBQTEFURk9STShDT0NPQSkKICNp
bmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVk
aW9EZXN0aW5hdGlvbkNvY29hLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVk
ZSA8d3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaD4KICNlbHNlCiAjaW5jbHVkZSA8V2ViQ29yZS9B
dWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmg+CiAjZW5kaWYKQEAgLTQ3LDExICs0OSw3IEBAIGNs
YXNzIENBUmluZ0J1ZmZlcjsKIGNsYXNzIFdlYkF1ZGlvQnVmZmVyTGlzdDsKIH0KIAotbmFtZXNw
YWNlIFdURiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi1jbGFzcyBNYWNoU2VtYXBob3JlOwotI2Vu
ZGlmCi19CisKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTEwNCw3ICsxMDIsNyBAQCBwcml2
YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHVpbnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXMg
eyAwIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4gbV9yaW5n
QnVmZmVyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXVEY6Ok1hY2hTZW1hcGhvcmU+IG1fcmVuZGVy
U2VtYXBob3JlOworICAgIE1hY2hTZW1hcGhvcmUgbV9yZW5kZXJTZW1hcGhvcmU7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4gbV9hdWRpb0J1ZmZlckxp
c3Q7CiAgICAgdWludDY0X3QgbV9jdXJyZW50RnJhbWUgeyAwIH07CiAgICAgZmxvYXQgbV9zYW1w
bGVSYXRlOwo=
</data>
<flag name="commit-queue"
          id="436352"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418399</attachid>
            <date>2021-01-26 05:05:57 -0800</date>
            <delta_ts>2021-01-26 05:16:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220919-20210126150555.patch</filename>
            <type>text/plain</type>
            <size>64912</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRjZDQwMzEzYzI0MGZiMjllYjFlMTFj
MjQ2MTBjODY0YjAxMzc1NGQuLmYzNTI1MDE0ZmI2NmE4NGZmMDEzYzQzNGYxZTdhOTFjMmRkNGE5
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMDEtMjYgIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNYWNoU2VtYXBob3JlIGRvZXMgbm90IHdvcmsg
d2VsbCB3aXRoIElQQyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwOTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW1wbGVtZW50IG1vdmUgY29uc3RydWN0b3IgYW5kIG1vdmUgYXNzaWdu
bWVudCBvcGVyYXRvciBmb3IgTWFjaFNlbWFwaG9yZS4KKyAgICAgICAgTWFrZXMgaXQgcG9zc2li
bGUgdG8gY3JlYXRlIHR5cGVzIHRoYXQgaG9sZCBNYWNoU2VtYXBob3JlIGJ1dCBzdGlsbAorICAg
ICAgICBhcmUgZGVjb2RlKClhYmxlIGZyb20gYSBJUEMgbWVzc2FnZS4gVGhlIGRlY29kZWQgb2Jq
ZWN0cyBhcmUgaGVsZCB3aXRoCisgICAgICAgIE9wdGlvbmFsLCBhbmQgdGhpcyBmb3JjZXMgdGhl
IHN1Ym9iamVjdHMgdG8gaGF2ZSBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisKKyAgICAgICAg
QWRkIGFzc2VydHMgdGhhdCB0aGUgbW92ZWQtYXdheSBvYmplY3QgaXMgbm90IHVzZWQuCisgICAg
ICAgIEFkZCB0aGUgYXNzZXJ0cyBhcyBhc3NlcnRzIG9uIHRoZSBjYWxsIHJldHVybiB2YWx1ZXMs
IHNvIHRoZSB2YWx1ZXMKKyAgICAgICAgYXJlIGFsc28gY2hlY2tlZCBvbiBub3JtYWwgb2JqZWN0
cyBvbiBub3JtYWwgb3BlcmF0aW9uLgorCisgICAgICAgICogd3RmL2NvY29hL01hY2hTZW1hcGhv
cmUuY3BwOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3JlOjpNYWNoU2VtYXBob3JlKToKKyAg
ICAgICAgKFdURjo6TWFjaFNlbWFwaG9yZTo6fk1hY2hTZW1hcGhvcmUpOgorICAgICAgICAoV1RG
OjpNYWNoU2VtYXBob3JlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3Jl
OjpzaWduYWwpOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3JlOjp3YWl0KToKKyAgICAgICAg
KFdURjo6TWFjaFNlbWFwaG9yZTo6d2FpdEZvcik6CisgICAgICAgIChXVEY6Ok1hY2hTZW1hcGhv
cmU6OmNyZWF0ZVNlbmRSaWdodCBjb25zdCk6CisgICAgICAgIChXVEY6Ok1hY2hTZW1hcGhvcmU6
OmRlc3Ryb3kpOgorICAgICAgICAqIHd0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg6CisgICAgICAg
IChXVEY6Ok1hY2hTZW1hcGhvcmU6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorCiAyMDIxLTAxLTIz
ICBYYW4gTG9wZXogIDx4YW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBBbGxvdyB0byBi
dWlsZCBXZWJBc3NlbWJseSB3aXRob3V0IEIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRiMDUyNDNhMmRkZDEyMjFl
ZmMyMTRjMjAwOWM4MWQyZDFjZjdmMjQuLjU5M2JiZDE0MDc2MGZmOWE0Yzg4ZjYyODI4NmJlOTA0
ZGQ4NGJjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA5IEBACisyMDIxLTAxLTI2ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFjaFNlbWFwaG9yZSBk
b2VzIG5vdCB3b3JrIHdlbGwgd2l0aCBJUEMgbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDkxOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhbiBlbmNvZGVyIGFuZCBkZWNv
ZGVyIGZvciBXVEY6Ok1hY2hTZW1hcGhvcmUuIE1ha2VzIGl0IHBvc3NpYmxlIHRvIHNlbmQgaXQK
KyAgICAgICAgdmlhIElQQyBhcyBpdHMgb3duIHR5cGUsIG5vdCBhcyBNYWNoU2VuZFJpZ2h0Lgor
CisgICAgICAgIEFzIGFuIGV4YW1wbGUsIGNoYW5nZXMgZXhpc3RpbmcgdXNlcyBvZiBNYWNoU2Vu
ZFJpZ2h0IGZvciBzZW1hcGhvcmVzIGluIG1lc3NhZ2VzIGFzCisgICAgICAgIE1hY2hTZW1hcGhv
cmVzLCBkZXNjcmliZWQgYmVsb3cuCisKKyAgICAgICAgQ2hhbmdlcyBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHkgdG8gc2VuZCBpdHMgb3duIHNlbWFwaG9yZSBmcm9tCisgICAgICAgIFdlYlBy
b2Nlc3MgdG8gR1BVUHJvY2Vzcy4gUHJldmlvdXNseSB0aGUgc2VtYXBob3JlIHdvdWxkIGJlIHNl
bnQgYmFjayBieQorICAgICAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci4gUHJldmlv
dXNseSB0aGUgY29kZSBzdHJ1Y3R1cmUgaXMgbW9yZQorICAgICAgICBjb21wbGljYXRlZCB0aGFu
IG5lY2Nlc3NhcnksIGFzIHRoZSBzZW1hcGhvcmUgaG9sZGVyIHdhcyBiZWluZworICAgICAgICBu
dWxsLWNoZWNrZWQsIHJlc2V0IGFuZCByZS1zZWF0ZWQuIFRoZSBXZWJQcm9jZXNzIGdldHMgYWxy
ZWFkeSB0byBjaG9vc2UKKyAgICAgICAgdGhlIHNlbWFwaG9yZXMgR1BVUHJvY2VzcyB1c2VzLCBz
byB0aGlzIHNob3VsZCBub3QgaW5jcmVhc2Ugc2VjdXJpdHkKKyAgICAgICAgc3VyZmFjZS4gVGhl
IGNoYW5nZSBjaG9zZW4gaGVyZSBzaWRlLXN0ZXBzIHRoZSBzaG9ydGNvbWluZyBvZiB0aGUgSVBD
CisgICAgICAgIHN5c3RlbSB3aGVyZSB1bnBhY2tpbmcgb2JqZWN0cyBmcm9tIHRoZSBSZXBseSBt
ZXNzYWdlcyBtYW5kYXRlcyB0aGF0IGEKKyAgICAgICAgY29uc3RydWN0ZWQgdmVyc2lvbiBvZiB0
aGF0IHR5cGUgZXhpc3RzLiBGb3IgcHJldmlvdXMgTWFjaFNlbmRSaWdodAorICAgICAgICBlbXB0
eS1jb25zdHJ1Y3RlZCBvYmplY3QgaXMgc2ltcGxlLCBidXQgZm9yIE1hY2hTZW1hcGhvcmUKKyAg
ICAgICAgZW1wdHktY29uc3RydWN0ZWQgb2JqZWN0IGNyZWF0ZXMgdW5uZWNlc3NhcnkgY29tcGxp
Y2F0aW9uIHRoYXQgaXMgbm90CisgICAgICAgIHJlcXVpcmVkIG90aGVyd2lzZSBhdCB0aGUgbW9t
ZW50LiBUaGUgYWx0ZXJuYXRpdmUgdG8gd2hhdCB3YXMgY2hvc2VuCisgICAgICAgIGhlcmUgd291
bGQgYmUgdG8gaG9sZCB3aXRoIE9wdGlvbmFsPE1hY2hTZW1hcGhvcmU+IGFuZCBhZGQgYQorICAg
ICAgICBlbXB0eS1pbml0aWFsaXppbmcgY29uc3RydWN0b3IgdG8gaG9sZCB0aGUgb2JqZWN0IHdo
ZXJlIHRvIHVucGFjayB0aGUKKyAgICAgICAgc2VtYXBob3JlIG9iamVjdCBmcm9tIHRoZSBSZXBs
eS4KKworICAgICAgICBDaGFuZ2VzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgdG8gcmVjZWl2ZSBp
dHMgcGFyYW1ldGVycyBmcm9tIHRoZSBub3JtYWwKKyAgICAgICAgbWVzc2FnZSBwYXJhbWV0ZXJz
IGluc3RlYWQgb2YgcmVkdW5kYW50CisgICAgICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVh
dGlvblBhcmFtZXRlcnMuIFRoZSBJUEMgZ2VuZXJhdG9yIGFscmVhZHkKKyAgICAgICAgZ2VuZXJh
dGVzIDE6MSBpZGVudGljYWwgc3RydWN0dXJlLCBpdCBpcyBqdXN0IHRoZSBtZXNzYWdlCisgICAg
ICAgIE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVSZW5kZXJpbmdC
YWNrZW5kLiBUaGVyZSBpcyBubworICAgICAgICBuZWVkIHRvIGRvdWJsZS13cmFwIHRoZSBzaW1w
bGUgbGlzdCBvZiBwYXJhbWV0ZXJzLiBUaGUgZG91YmxlLXdyYXBwaW5nCisgICAgICAgIGlzIGEg
cHJvYmxlbTogVGhlIG1lc3NhZ2Ugc3lzdGVtIHBhcmFtZXRlcnMgYXJlIG9mIG93bmVyc2hpcCAi
Y29uc3QKKyAgICAgICAgcmVmZXJlbmNlIiwgd2hpY2ggaXMgd2hhdCBpcyBleHBlY3RlZC4KKyAg
ICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyBjb250ZW50cyB3
ZXJlIG9mIG93bmVyc2hpcAorICAgICAgICAidmFsdWUiLCB3aGljaCB3b3JrcyBhcyBleHBlY3Rl
ZCBvbmx5IGZvciBzaW1wbGUgcHJpbWl0aXZlIHR5cGVzLgorICAgICAgICBFc3NlbnRpYWxseSBw
cmV2aW91c2x5IGNhbGxpbmcgdGhlIElQQyBmdW5jdGlvbiBtZWFudCB0cmFuc2ZlcmluZworICAg
ICAgICBvYmplY3RzIHRvIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMu
IFRoaXMgaXMgbm90IGhvdyB0aGUKKyAgICAgICAgSVBDIHN5c3RlbSBpcyBtZWFudCB0byB3b3Jr
LiBUaGUgaW50ZW50aW9uIG9mIGEgSVBDIGNhbGwgaXMgdG8sIGJ5CisgICAgICAgIGRlZmF1bHQs
IHJlZmVyZW5jZSBpdHMgYXJndW1lbnRzIGZvciB0aGUgcHVycG9zZSBvZiBlbmNvZGluZy4gVGhl
IHBhdGNoCisgICAgICAgIHRyaWVzIHRvIGFjaGlldmUgYSBiaXQgdGhlIHNhbWUgZ29hbCBhcyB0
aGUgb3JpZ2luYWwKKyAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1l
dGVycyBwcmVzdW1hYmx5IGhhZCwgaS5lLiB0byBhdm9pZAorICAgICAgICBwcm9ibGVtcyB3aXRo
ICNpZiBQTEFURk9STShDT0NPQSktI2Vsc2UgaW4gbWV0aG9kIGRlY2xhcmF0aW9ucyBhbmQKKyAg
ICAgICAgZGVmaW5pdGlvbnMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3Rvci4KKwor
ICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0Jh
Y2tlbmQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
OgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4
dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpjcmVh
dGVBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXI6OmRlbGV0ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6c3RhcnRBdWRpb0Rlc3RpbmF0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0b3BBdWRpb0Rl
c3RpbmF0aW9uKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwOgorICAg
ICAgICAoSVBDOjpqc1ZhbHVlRm9yQXJndW1lbnRzKToKKyAgICAgICAgKElQQzo6bWVzc2FnZUFy
Z3VtZW50RGVzY3JpcHRpb25zKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNz
YWdlTmFtZXMuY3BwOgorICAgICAgICAoSVBDOjpkZXNjcmlwdGlvbik6CisgICAgICAgIChJUEM6
OnJlY2VpdmVyTmFtZSk6CisgICAgICAgIChJUEM6OmlzVmFsaWRNZXNzYWdlTmFtZSk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmg6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlLm1lc3NhZ2VzLmluOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1h
Y2hTZW1hcGhvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
VGVzdFdpdGhNYWNoU2VtYXBob3JlOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJL
aXQ6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNzYWdlcy5o
OiBBZGRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoTWFjaFNlbWFwaG9y
ZTo6U2VuZFNlbWFwaG9yZTo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhNYWNo
U2VtYXBob3JlOjpTZW5kU2VtYXBob3JlOjpTZW5kU2VtYXBob3JlKToKKyAgICAgICAgKE1lc3Nh
Z2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6OlNlbmRTZW1hcGhvcmU6OmFyZ3VtZW50cyBjb25z
dCk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhNYWNoU2VtYXBob3JlOjpSZWNlaXZlU2Vt
YXBob3JlOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6
OlJlY2VpdmVTZW1hcGhvcmU6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVk
LgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXVEY6Ok1hY2hTZW1hcGhvcmU+OjplbmNvZGUp
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdURjo6TWFjaFNlbWFwaG9yZT46OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFt
ZXRlcnMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpjb25uZWN0
VG9HUFVQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHk6OnN0YXJ0UmVuZGVyaW5nVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpzdG9wUmVuZGVyaW5nVGhyZWFkKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpncHVQcm9j
ZXNzQ29ubmVjdGlvbkRpZENsb3NlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaDoKKwogMjAyMS0wMS0yNCAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIFdLMl0gdGhldmVyZ2Uu
Y29tIC0gcnViYmVyIGJhbmQgc2Nyb2xsaW5nIGF0IHRoZSB0b3Agb2YgdGhlIHBhZ2UgY2F1c2Vz
IGFuIGFicnVwdCBqdW1wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NYWNoU2Vt
YXBob3JlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuY3BwCmluZGV4
IDkyZmNmMTVjMDdkOTI0YTQ1MDc5MzdmZDIzMDQ1NzJjNGRiYmI5NjYuLjZmYjM1NzdlYWQzODQ4
Y2Y4MGMwODU4ODFjN2U2YWUxN2NlM2NkMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2Nv
Y29hL01hY2hTZW1hcGhvcmUuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1h
cGhvcmUuY3BwCkBAIC0zNiw2ICszNiwxMiBAQCBNYWNoU2VtYXBob3JlOjpNYWNoU2VtYXBob3Jl
KCkKICAgICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0ID09IEtFUk5fU1VDQ0VTUyk7CiB9CiAKK01h
Y2hTZW1hcGhvcmU6Ok1hY2hTZW1hcGhvcmUoTWFjaFNlbWFwaG9yZSYmIG90aGVyKQorICAgIDog
bV9zZW5kUmlnaHQoV1RGTW92ZShvdGhlci5tX3NlbmRSaWdodCkpCisgICAgLCBtX3NlbWFwaG9y
ZShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fc2VtYXBob3JlLCBTRU1BUEhPUkVfTlVMTCkpCit7Cit9
CisKIE1hY2hTZW1hcGhvcmU6Ok1hY2hTZW1hcGhvcmUoTWFjaFNlbmRSaWdodCYmIHNlbmRSaWdo
dCkKICAgICA6IG1fc2VuZFJpZ2h0KFdURk1vdmUoc2VuZFJpZ2h0KSkKICAgICAsIG1fc2VtYXBo
b3JlKG1fc2VuZFJpZ2h0LnNlbmRSaWdodCgpKQpAQCAtNDUsMjkgKzUxLDU2IEBAIE1hY2hTZW1h
cGhvcmU6Ok1hY2hTZW1hcGhvcmUoTWFjaFNlbmRSaWdodCYmIHNlbmRSaWdodCkKIAogTWFjaFNl
bWFwaG9yZTo6fk1hY2hTZW1hcGhvcmUoKQogewotICAgIGlmICghbV9zZW5kUmlnaHQpCi0gICAg
ICAgIHNlbWFwaG9yZV9kZXN0cm95KG1hY2hfdGFza19zZWxmKCksIG1fc2VtYXBob3JlKTsKKyAg
ICBkZXN0cm95KCk7Cit9CisKK01hY2hTZW1hcGhvcmUmIE1hY2hTZW1hcGhvcmU6Om9wZXJhdG9y
PShNYWNoU2VtYXBob3JlJiYgb3RoZXIpCit7CisgICAgaWYgKHRoaXMgIT0gJm90aGVyKSB7Cisg
ICAgICAgIGRlc3Ryb3koKTsKKyAgICAgICAgbV9zZW5kUmlnaHQgPSBXVEZNb3ZlKG90aGVyLm1f
c2VuZFJpZ2h0KTsKKyAgICAgICAgbV9zZW1hcGhvcmUgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1f
c2VtYXBob3JlLCBTRU1BUEhPUkVfTlVMTCk7CisgICAgfQorCisgICAgcmV0dXJuICp0aGlzOwog
fQogCiB2b2lkIE1hY2hTZW1hcGhvcmU6OnNpZ25hbCgpCiB7Ci0gICAgc2VtYXBob3JlX3NpZ25h
bChtX3NlbWFwaG9yZSk7CisgICAgYXV0byByZXQgPSBzZW1hcGhvcmVfc2lnbmFsKG1fc2VtYXBo
b3JlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0ID09IEtFUk5fU1VDQ0VTUyk7CiB9CiAK
IHZvaWQgTWFjaFNlbWFwaG9yZTo6d2FpdCgpCiB7Ci0gICAgc2VtYXBob3JlX3dhaXQobV9zZW1h
cGhvcmUpOworICAgIGF1dG8gcmV0ID0gc2VtYXBob3JlX3dhaXQobV9zZW1hcGhvcmUpOworICAg
IEFTU0VSVF9VTlVTRUQocmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTKTsKIH0KIAogdm9pZCBNYWNo
U2VtYXBob3JlOjp3YWl0Rm9yKFNlY29uZHMgdGltZW91dCkKIHsKICAgICBhdXRvIHNlY29uZHMg
PSB0aW1lb3V0LnNlY29uZHNBczx1bnNpZ25lZD4oKTsKLSAgICBzZW1hcGhvcmVfdGltZWR3YWl0
KG1fc2VtYXBob3JlLCB7IHNlY29uZHMsIHN0YXRpY19jYXN0PGNsb2NrX3Jlc190Pih0aW1lb3V0
Lm5hbm9zZWNvbmRzQXM8dWludDY0X3Q+KCkgLSBzZWNvbmRzICogTlNFQ19QRVJfU0VDKSB9KTsK
KyAgICBhdXRvIHJldCA9IHNlbWFwaG9yZV90aW1lZHdhaXQobV9zZW1hcGhvcmUsIHsgc2Vjb25k
cywgc3RhdGljX2Nhc3Q8Y2xvY2tfcmVzX3Q+KHRpbWVvdXQubmFub3NlY29uZHNBczx1aW50NjRf
dD4oKSAtIHNlY29uZHMgKiBOU0VDX1BFUl9TRUMpIH0pOworICAgIEFTU0VSVF9VTlVTRUQocmV0
LCByZXQgPT0gS0VSTl9TVUNDRVNTIHx8IHJldCA9PSBLRVJOX09QRVJBVElPTl9USU1FRF9PVVQp
OwogfQogCi1NYWNoU2VuZFJpZ2h0IE1hY2hTZW1hcGhvcmU6OmNyZWF0ZVNlbmRSaWdodCgpCitN
YWNoU2VuZFJpZ2h0IE1hY2hTZW1hcGhvcmU6OmNyZWF0ZVNlbmRSaWdodCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIE1hY2hTZW5kUmlnaHQ6OmNyZWF0ZShtX3NlbWFwaG9yZSk7CiB9CiAKK3ZvaWQg
TWFjaFNlbWFwaG9yZTo6ZGVzdHJveSgpCit7CisgICAgaWYgKG1fc2VuZFJpZ2h0KSB7CisgICAg
ICAgIG1fc2VuZFJpZ2h0ID0gTWFjaFNlbmRSaWdodCgpOworICAgICAgICBtX3NlbWFwaG9yZSA9
IFNFTUFQSE9SRV9OVUxMOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtX3NlbWFw
aG9yZSA9PSBTRU1BUEhPUkVfTlVMTCkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmV0ID0g
c2VtYXBob3JlX2Rlc3Ryb3kobWFjaF90YXNrX3NlbGYoKSwgbV9zZW1hcGhvcmUpOworICAgIEFT
U0VSVF9VTlVTRUQocmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTKTsKKyAgICBtX3NlbWFwaG9yZSA9
IFNFTUFQSE9SRV9OVUxMOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaCBiL1NvdXJjZS9XVEYvd3RmL2NvY29h
L01hY2hTZW1hcGhvcmUuaAppbmRleCBiZTdjZWEwNDZiODEyY2JjM2ViM2E3MjEzMGQ5YTViYTAw
OTNmOTJmLi40YjVkYjc0ZTcxNmMzMjhmNzdiMjYyZGI5ZDNiMGNjMTVjZDkwNzljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oCkBAIC0zNywxNiArMzcsMjAgQEAgY2xhc3MgTWFj
aFNlbWFwaG9yZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFjaFNlbWFwaG9yZSk7CiBw
dWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1hY2hTZW1hcGhvcmUoKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgTWFjaFNlbWFwaG9yZShNYWNoU2VtYXBob3JlJiYpOwogICAgIFdURl9F
WFBPUlRfUFJJVkFURSBleHBsaWNpdCBNYWNoU2VtYXBob3JlKE1hY2hTZW5kUmlnaHQmJik7CiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIH5NYWNoU2VtYXBob3JlKCk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIE1hY2hTZW1hcGhvcmUmIG9wZXJhdG9yPShNYWNoU2VtYXBob3JlJiYpOwogCiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2lnbmFsKCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgd2FpdCgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHdhaXRGb3IoU2Vjb25k
cyk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWFjaFNlbmRSaWdodCBjcmVhdGVTZW5kUmln
aHQoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWFjaFNlbmRSaWdodCBjcmVhdGVTZW5kUmln
aHQoKSBjb25zdDsKIAorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVy
biBtX3NlbmRSaWdodCB8fCBtX3NlbWFwaG9yZSAhPSBTRU1BUEhPUkVfTlVMTDsgfQogcHJpdmF0
ZToKKyAgICB2b2lkIGRlc3Ryb3koKTsKICAgICBNYWNoU2VuZFJpZ2h0IG1fc2VuZFJpZ2h0Owog
ICAgIHNlbWFwaG9yZV90IG1fc2VtYXBob3JlIHsgU0VNQVBIT1JFX05VTEwgfTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggOTAwNTY2OTRhNTMwMGRjM2E4YmZkZDFlZTMwZWMxNmJkOGViZGVhOC4uOWRm
OGQxNjIxZjM0MDVjZTljYjdkMjRjNzk5YTcwZThkMDA4ZTA2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAt
NDgsNyArNDgsNiBAQAogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCIKLSNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1lc3NhZ2VzLmgiCkBAIC0yOTEsMTAgKzI5MCwxOCBAQCBSZW1vdGVBdWRpb1Nlc3Np
b25Qcm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YXVkaW9TZXNzaW9uUHJveHkoKQog
fQogI2VuZGlmCiAKLXZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVy
aW5nQmFja2VuZChSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5n
QmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgLCBNYWNoU2VtYXBob3JlJiYgcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhv
cmUKKyNlbmRpZgorICAgICkKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZE1hcC5lbnN1cmUocGFyYW1ldGVycy5pZGVudGlmaWVyLCBbJl0oKSB7Ci0gICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyPihSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUocGFyYW1ldGVycykpKTsK
KyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcC5lbnN1cmUo
aWRlbnRpZmllciwgWyZdKCkgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kV3JhcHBlcj4oUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKCp0aGlz
LCBpZGVudGlmaWVyLCB7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgICAgICBXVEZNb3Zl
KHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQorI2VuZGlmCisgICAgICAgIH0pKTsKICAgICB9
KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKaW5kZXggNDQxOGNhNmFlYTJhNDA4ZTM3NzUzODkwZTFkMzBkZGVjNzZlYzdjYS4u
YjZhMjRjYjMyMGEzNjNlN2U5ZmVkZDQzZDI5MDYzNTk2NDk1MDYxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC02
NSw3ICs2NSw2IEBAIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOwogY2xhc3MgUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHk7CiBzdHJ1Y3QgUmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbjsKLXN0
cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAgICAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcywgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFp
bj4KQEAgLTEyNyw3ICsxMjYsMTEgQEAgcHJpdmF0ZToKICNlbmRpZgogI2VuZGlmCiAKLSAgICB2
b2lkIGNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9u
UGFyYW1ldGVycyYmKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGNyZWF0ZVJlbmRl
cmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIE1hY2hTZW1hcGhvcmUmJiBy
ZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSk7CisjZWxzZQorICAgIHZvaWQgY3JlYXRlUmVuZGVy
aW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisjZW5kaWYKICAgICB2b2lk
IHJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIAog
I2lmIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMGNiYzVk
ODc5ODNlNjY2ZTQ4ZTgzOWE2NDY0ODk4Nzk1MGEzOTJiZi4uMWU0OWIzM2VjZjZhNTMxNWMyYjFh
NDI5OGUyZDQxNzI1OTJkMmEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIz
LDcgKzIzLDEyIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiBtZXNzYWdlcyAtPiBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlzcGF0Y2hNZXNzYWdlIHsKLSAgICB2b2lkIENy
ZWF0ZVJlbmRlcmluZ0JhY2tlbmQoc3RydWN0IFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZENyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzKQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIE1hY2hTZW1hcGhvcmUgcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhv
cmUpCisjZW5kaWYKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBDcmVhdGVSZW5kZXJp
bmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgaWRlbnRpZmllcikK
KyNlbmRpZgogICAgIHZvaWQgUmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICNpZiBFTkFC
TEUoV0VCR0wpCiAgICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcAppbmRleCAzNzIwN2Q3ZmM3ODBiZmIzYTRiZDdjMWI0ZGNjMGU2NDg1
NWQ1NWU2Li5lZDkzMGNkNzk3MDkzNzY0MDY0ZjJmOGQ0ODFkMjljZWZjYzJmZTVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1S
ZW1vdGVJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIgotI2luY2x1ZGUgIlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5o
PgpAQCAtNjUsMTcgKzY0LDE3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCi1SZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQorUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyLCBQbGF0Zm9y
bUNyZWF0ZVBhcmFtcyYmIHBhcmFtcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURk1vdmUocGFy
YW1ldGVycykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGlkZW50aWZpZXIsIFdURk1vdmUocGFyYW1z
KSkpOwogfQogCi1SZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllciBpZGVudGlmaWVyLCBQbGF0Zm9ybUNyZWF0ZVBhcmFtcyYmIHBhcmFtcykKICAg
ICA6IG1fd29ya1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
IHdvcmsgcXVldWUiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OlVz
ZXJJbnRlcmFjdGl2ZSkpCiAgICAgLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcykKLSAgICAsIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIo
cGFyYW1ldGVycy5pZGVudGlmaWVyKQorICAgICwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cihpZGVudGlmaWVyKQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICwgbV9yZXN1bWVEaXNwbGF5
TGlzdFNlbWFwaG9yZShtYWtlVW5pcXVlPE1hY2hTZW1hcGhvcmU+KFdURk1vdmUocGFyYW1ldGVy
cy5zZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkpKQorICAgICwgbV9yZXN1
bWVEaXNwbGF5TGlzdFNlbWFwaG9yZShXVEZNb3ZlKHBhcmFtcy5yZXN1bWVEaXNwbGF5TGlzdFNl
bWFwaG9yZSkpCiAjZW5kaWYKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAt
MjI4LDcgKzIyNyw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5CiAKICAgICAgICAgICAgIGhh
bmRsZS5zdGFydFdhaXRpbmcoKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAgIG1f
cmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUtPndhaXRGb3IoMzBfdXMpOworICAgICAgICAgICAg
bV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZS53YWl0Rm9yKDMwX3VzKTsKICNlbHNlCiAgICAg
ICAgICAgICBzbGVlcCgzMF91cyk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IGU2
Mzg5OTAzYjY1MGJhOGQ5NzNkYWY5YjNkY2NhNjQ1MzU2ZjQ1ZjguLjgwYzNlMjQ0MjYyNjJiZDli
YTQ5NTE4OWZiZWZhNDMyZDFjODFkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtNDIsOSAr
NDIsNyBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkK
LW5hbWVzcGFjZSBXVEYgewotY2xhc3MgTWFjaFNlbWFwaG9yZTsKLX0KKyNpbmNsdWRlIDx3dGYv
Y29jb2EvTWFjaFNlbWFwaG9yZS5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTYyLDE0ICs2MCwxOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGU7CiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwotc3RydWN0IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQKICAgICA6IHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgLCBw
dWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIKICAgICAsIHB1
YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gY3JlYXRlKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJh
bWV0ZXJzJiYpOworICAgIHN0cnVjdCBQbGF0Zm9ybUNyZWF0ZVBhcmFtcyB7CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgICAgIE1hY2hTZW1hcGhvcmUgcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhv
cmU7CisjZW5kaWYKKyAgICB9OworICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZD4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciwgUGxhdGZvcm1DcmVhdGVQYXJhbXMmJik7CiAgICAgdmlydHVhbCB+UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCgpOwogCiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZSYgcmVtb3RlUmVzb3Vy
Y2VDYWNoZSgpIHsgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZTsgfQpAQCAtODYsNyArODgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAKIHByaXZhdGU6Ci0gICAgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciwgUGxhdGZvcm1DcmVhdGVQYXJhbXMmJik7CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikgb3ZlcnJpZGU7CiAKQEAgLTE0OSw3ICsx
NTEsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJJZGVudGlmaWVyLCBSZWZQdHI8RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU+PiBtX3NoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlczsKICAgICBPcHRpb25hbDxQZW5kaW5nV2FrZXVwSW5mb3JtYXRp
b24+IG1fcGVuZGluZ1dha2V1cEluZm87CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFdURjo6TWFjaFNlbWFwaG9yZT4gbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9y
ZTsKKyAgICBXVEY6Ok1hY2hTZW1hcGhvcmUgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsK
ICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAKaW5kZXggMGY4NDA3
YzFmM2RjNzg3YjUwZTliZjYwOTkxYWVlN2NiNDEwYjRmYS4uN2JhNDEwMDVlM2NlNWFiNzMzN2Ni
YjVhMjI0NjNhMjk5NDM5MjMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCkBA
IC01MSwxMCArNTEsMTUgQEAgY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbgogI2VuZGlmCiB7
CiBwdWJsaWM6CisgICAgc3RydWN0IFBsYXRmb3JtQ3JlYXRlUGFyYW1zIHsKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICAgICAgTWFjaFNlbWFwaG9yZSByZW5kZXJTZW1hcGhvcmU7CisjZW5kaWYK
KyAgICB9OwogICAgIHN0YXRpYyBSZWY8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4gY3JlYXRlKEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyIGlkZW50aWZpZXIsCi0gICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXREZXZp
Y2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91
dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUp
CisgICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1w
bGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIFBsYXRmb3JtQ3JlYXRlUGFyYW1zJiYg
cGFyYW1zKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbihjb25uZWN0aW9uLCBpZGVudGlmaWVyLCBpbnB1dERldmljZUlkLCBudW1iZXJP
ZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIGhhcmR3
YXJlU2FtcGxlUmF0ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uKGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIGlucHV0RGV2aWNlSWQsIG51bWJl
ck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFy
ZHdhcmVTYW1wbGVSYXRlLCBXVEZNb3ZlKHBhcmFtcykpKTsKICAgICB9CiAKICAgICB2aXJ0dWFs
IH5SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKCkgPSBkZWZhdWx0OwpAQCAtNjgsOCArNzMsNiBAQCBw
dWJsaWM6CiAgICAgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgTWFjaFNlbmRSaWdodCBj
cmVhdGVSZW5kZXJTZW1hcGhvcmVTZW5kUmlnaHQoKSB7IHJldHVybiBtX3JlbmRlclNlbWFwaG9y
ZS5jcmVhdGVTZW5kUmlnaHQoKTsgfQotCiAgICAgdm9pZCBhdWRpb1NhbXBsZXNTdG9yYWdlQ2hh
bmdlZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaXBjSGFuZGxlLCBjb25zdCBXZWJD
b3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1i
ZXJPZkZyYW1lcykKICAgICB7CiAgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWVSZWY8
V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFJlYWRPbmx5U2hhcmVkUmluZ0J1
ZmZlclN0b3JhZ2U+KGlwY0hhbmRsZS5oYW5kbGUpLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFt
ZXMpOwpAQCAtMTA0LDExICsxMDcsMTIgQEAgcHVibGljOgogICAgIGJvb2wgaXNQbGF5aW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KIAogcHJpdmF0ZToKLSAgICBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQs
IHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlKQorICAg
IFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5w
dXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBs
ZVJhdGUsIFBsYXRmb3JtQ3JlYXRlUGFyYW1zJiYgcGFyYW1zKQogICAgICAgICA6IG1faWQoaWRl
bnRpZmllcikKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgLCBtX2F1ZGlvT3V0cHV0VW5p
dEFkYXB0b3IoKnRoaXMpCiAgICAgICAgICwgbV9yaW5nQnVmZmVyKG1ha2VVbmlxdWVSZWY8V2Vi
Q29yZTo6Q0FSaW5nQnVmZmVyPigpKQorICAgICAgICAsIG1fcmVuZGVyU2VtYXBob3JlKFdURk1v
dmUocGFyYW1zLnJlbmRlclNlbWFwaG9yZSkpCiAjZW5kaWYKICAgICB7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCkBAIC0xNjIsMTkgKzE2NiwyMyBAQCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
cjo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoR1BVQ29ubmVjdGlvblRvV2ViUAogCiBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6flJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyKCkgPSBkZWZhdWx0OwogCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpj
cmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMy
X3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIENyZWF0aW9uQ29t
cGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBpbnB1
dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxl
UmF0ZSwKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBNYWNoU2VtYXBob3JlJiYgcmVuZGVyU2Vt
YXBob3JlLAorI2VuZGlmCisgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uRGVsYXllZFJlcGx5JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYXV0byBuZXdJRCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVy
OjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uID0gUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbjo6Y3JlYXRlKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgbmV3SUQs
IGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRlKTsKLSAgICBtX2F1ZGlvRGVzdGlu
YXRpb25zLmFkZChuZXdJRCwgZGVzdGluYXRpb24uY29weVJlZigpKTsKKyAgICBhdXRvIGRlc3Rp
bmF0aW9uID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKG1fZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcywgbmV3SUQsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRlLCB7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgY29tcGxldGlvbkhhbmRsZXIobmV3SUQsIGRlc3Rp
bmF0aW9uLT5jcmVhdGVSZW5kZXJTZW1hcGhvcmVTZW5kUmlnaHQoKSk7Ci0jZWxzZQotICAgIGNv
bXBsZXRpb25IYW5kbGVyKG5ld0lEKTsKKyAgICAgICAgV1RGTW92ZShyZW5kZXJTZW1hcGhvcmUp
CiAjZW5kaWYKKyAgICB9KTsKKyAgICBtX2F1ZGlvRGVzdGluYXRpb25zLmFkZChuZXdJRCwgZGVz
dGluYXRpb24uY29weVJlZigpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdJRCk7CiB9CiAK
LXZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmRlbGV0ZUF1ZGlvRGVzdGluYXRp
b24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcjo6ZGVsZXRlQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXI6OkRlbGV0ZUF1ZGlvRGVzdGluYXRpb25Bc3luY1JlcGx5JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgYXV0byBkZXN0aW5hdGlvbiA9IG1fYXVkaW9EZXN0aW5hdGlvbnMu
dGFrZShpZGVudGlmaWVyKTsKICAgICBpZiAoZGVzdGluYXRpb24pCkBAIC0xODIsNyArMTkwLDcg
QEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6ZGVsZXRlQXVkaW9EZXN0aW5h
dGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW8KICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQog
Ci12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdGFydEF1ZGlvRGVzdGluYXRp
b24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0YXJ0QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OlN0YXJ0QXVkaW9EZXN0aW5hdGlvbkFzeW5jUmVwbHkmJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBib29sIGlzUGxheWluZyA9IGZhbHNlOwogICAgIGlmIChhdXRv
KiBpdGVtID0gbV9hdWRpb0Rlc3RpbmF0aW9ucy5nZXQoaWRlbnRpZmllcikpIHsKQEAgLTE5Miw3
ICsyMDAsNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdGFydEF1ZGlv
RGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbgogICAgIGNvbXBsZXRpb25IYW5kbGVy
KGlzUGxheWluZyk7CiB9CiAKLXZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0
b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdG9wQXVkaW9EZXN0aW5hdGlv
bihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBNZXNzYWdlczo6
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlN0b3BBdWRpb0Rlc3RpbmF0aW9uQXN5bmNS
ZXBseSYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGJvb2wgaXNQbGF5aW5nID0gZmFsc2U7
CiAgICAgaWYgKGF1dG8qIGl0ZW0gPSBtX2F1ZGlvRGVzdGluYXRpb25zLmdldChpZGVudGlmaWVy
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaAppbmRleCBiODNmMjlmOGRjMTMzYTFhMmMz
YTg3NGJhNzMzYjU4MGIyNmU3NjJkLi44NWEyMjQzODM2ZTMzMWUxMWE2NGFkN2Q2MmQ2MjAyNDQ3
YjFlNzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaApAQCAtMjksMTkgKzI5LDE4IEBA
CiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
ck1lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUg
PG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg+CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbjsKIH0KIAotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBNYWNoU2VuZFJpZ2h0
OwotfQorCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02NCwxNCArNjMsMTUgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgdXNpbmcgQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlciA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIFdU
Rjo6TWFjaFNlbmRSaWdodCk+OworICAgIHZvaWQgY3JlYXRlQXVkaW9EZXN0aW5hdGlvbihjb25z
dCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywg
dWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQg
aGFyZHdhcmVTYW1wbGVSYXRlLAorICAgICAgICBNYWNoU2VtYXBob3JlJiYgcmVuZGVyU2VtYXBo
b3JlLCBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNyZWF0ZUF1ZGlv
RGVzdGluYXRpb25EZWxheWVkUmVwbHkmJik7CiAjZWxzZQotICAgIHVzaW5nIENyZWF0aW9uQ29t
cGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25JZGVudGlmaWVyKT47CisgICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0
IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1
aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBo
YXJkd2FyZVNhbXBsZVJhdGUsCisgICAgICAgIENyZWF0ZUF1ZGlvRGVzdGluYXRpb25EZWxheWVk
UmVwbHkmJik7CiAjZW5kaWYKLSAgICB2b2lkIGNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3Qg
U3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVp
bnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhh
cmR3YXJlU2FtcGxlUmF0ZSwgQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB2b2lk
IGRlbGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzdGFydEF1ZGlvRGVzdGlu
YXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgc3RvcEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OworICAgIHZvaWQgZGVsZXRlQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
SWRlbnRpZmllciwgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpEZWxl
dGVBdWRpb0Rlc3RpbmF0aW9uQXN5bmNSZXBseSYmKTsKKyAgICB2b2lkIHN0YXJ0QXVkaW9EZXN0
aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgTWVzc2FnZXM6OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpTdGFydEF1ZGlvRGVzdGluYXRpb25Bc3luY1JlcGx5
JiYpOworICAgIHZvaWQgc3RvcEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bklkZW50aWZpZXIsIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6U3Rv
cEF1ZGlvRGVzdGluYXRpb25Bc3luY1JlcGx5JiYpOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IHZvaWQgYXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgY29uc3QgV2ViQ29yZTo6
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXgg
NTU3ODk4NDZkNzRkODU3NGJiZGExYWJkZjI3MThiZDNiYTViYzRlNC4uMDhlNjYyODQ5ODU4NzEz
ZTQ1MzYyZDVmNGU3ZjYxNzYyM2NiMjJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjUsMTAgKzI1LDEwIEBACiAKIG1lc3NhZ2VzIC0+IFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewogI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIENyZWF0ZUF1ZGlvRGVzdGluYXRpb24oU3RyaW5nIGlucHV0RGV2aWNlSWQs
IHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlKSAtPiAo
V2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBNYWNo
U2VuZFJpZ2h0IHJlbmRlclNlbWFwaG9yZVNlbmRSaWdodCkgU3luY2hyb25vdXMKKyAgICBDcmVh
dGVBdWRpb0Rlc3RpbmF0aW9uKFN0cmluZyBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJP
ZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNh
bXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwgTWFjaFNlbWFwaG9yZSByZW5kZXJT
ZW1hcGhvcmUpIC0+IChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlk
ZW50aWZpZXIpIFN5bmNocm9ub3VzCiAjZW5kaWYKICNpZiAhUExBVEZPUk0oQ09DT0EpCi0gICAg
Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbihTdHJpbmcgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9h
dCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUpIC0+IChXZWJLaXQ6OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIFN5bmNocm9ub3VzCisgICAg
Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbigpIC0+IChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyIGlkZW50aWZpZXIpIFN5bmNocm9ub3VzCiAjZW5kaWYKIAogICAgIERlbGV0
ZUF1ZGlvRGVzdGluYXRpb24oV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmll
ciBpZGVudGlmaWVyKSAtPiAoKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKaW5kZXggZWM4YmNmMDg3ZGYxNmRmNjBkYmUwMDgwZTRjZWIwNjFkMTc2OGZmNy4u
NmQ3MGY1Mjc1MzFjODRlNmE4ODU4ZmMxYmNkY2IyYzQ1ZTVjNmUwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yNTUsNiArMjU1LDcgQEAgZGVmIHR5cGVz
X3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ0lQQzo6RGF0YVJl
ZmVyZW5jZScsCiAgICAgICAgICdJUEM6OkZvbnRSZWZlcmVuY2UnLAogICAgICAgICAnTWFjaFNl
bmRSaWdodCcsCisgICAgICAgICdNYWNoU2VtYXBob3JlJywKICAgICAgICAgJ01lZGlhVGltZScs
CiAgICAgICAgICdTdHJpbmcnLAogICAgICAgICAnV2ViQ29yZTo6Q29sb3JTcGFjZScsCkBAIC0z
NTQsNiArMzU1LDcgQEAgZGVmIGZvcndhcmRfZGVjbGFyYXRpb25zX2FuZF9oZWFkZXJzKHJlY2Vp
dmVyKToKIAogICAgIG5vbl90ZW1wbGF0ZV93dGZfdHlwZXMgPSBmcm96ZW5zZXQoWwogICAgICAg
ICAnTWFjaFNlbmRSaWdodCcsCisgICAgICAgICdNYWNoU2VtYXBob3JlJywKICAgICAgICAgJ01l
ZGlhVHlwZScsCiAgICAgICAgICdTdHJpbmcnLAogICAgIF0pCkBAIC00MDksNiArNDExLDcgQEAg
ZGVmIGZvcndhcmRfZGVjbGFyYXRpb25zX2FuZF9oZWFkZXJzX2Zvcl9yZXBsaWVzKHJlY2VpdmVy
KToKIAogICAgIG5vbl90ZW1wbGF0ZV93dGZfdHlwZXMgPSBmcm96ZW5zZXQoWwogICAgICAgICAn
TWFjaFNlbmRSaWdodCcsCisgICAgICAgICdNYWNoU2VtYXBob3JlJywKICAgICAgICAgJ01lZGlh
VGltZScsCiAgICAgICAgICdTdHJpbmcnLAogICAgIF0pCkBAIC02MzksNiArNjQyLDcgQEAgZGVm
IGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAKICAgICBzcGVjaWFsX2Nhc2VzID0gewogICAgICAg
ICAnTWFjaFNlbmRSaWdodCc6IFsnPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+J10sCisgICAgICAgICdN
YWNoU2VtYXBob3JlJzogWyc8d3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaD4nXSwKICAgICAgICAg
J0pTQzo6TWVzc2FnZUxldmVsJzogWyc8SmF2YVNjcmlwdENvcmUvQ29uc29sZVR5cGVzLmg+J10s
CiAgICAgICAgICdKU0M6Ok1lc3NhZ2VTb3VyY2UnOiBbJzxKYXZhU2NyaXB0Q29yZS9Db25zb2xl
VHlwZXMuaD4nXSwKICAgICAgICAgJ0luc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZSc6IFsn
PEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclRhcmdldC5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weSBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHkKaW5kZXggNmVjNmViNGRhNTU3
NzNmY2VkNjNkMzgyMjMzYzMyNTgxOWE5YTNjMy4uYWRlYjg1ZjkwYjNmNGQ1OWJiNzNmNDE2MmUw
NjgxYTlmNjc2OTI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlc191bml0dGVzdC5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzX3VuaXR0ZXN0LnB5CkBAIC0zOSw3ICszOSw3IEBAIHRlc3RzX2RpcmVjdG9yeSA9IG9z
LnBhdGguam9pbihtb2R1bGVfZGlyZWN0b3J5LCAndGVzdHMnKQogCiByZXNldF9yZXN1bHRzID0g
RmFsc2UKIAotX3Rlc3RfcmVjZWl2ZXJfbmFtZXMgPSBbJ1Rlc3RXaXRoU3VwZXJjbGFzcycsICdU
ZXN0V2l0aExlZ2FjeVJlY2VpdmVyJywgJ1Rlc3RXaXRob3V0QXR0cmlidXRlcycsICdUZXN0V2l0
aElmTWVzc2FnZSddCitfdGVzdF9yZWNlaXZlcl9uYW1lcyA9IFsnVGVzdFdpdGhTdXBlcmNsYXNz
JywgJ1Rlc3RXaXRoTGVnYWN5UmVjZWl2ZXInLCAnVGVzdFdpdGhvdXRBdHRyaWJ1dGVzJywgJ1Rl
c3RXaXRoSWZNZXNzYWdlJywgJ1Rlc3RXaXRoTWFjaFNlbWFwaG9yZSddCiAKIAogZGVmIHJlY2Vp
dmVyX2hlYWRlcl9maWxlX25hbWUocmVjZWl2ZXJfbmFtZSk6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZQppbmRleCA4Nzk2ZmZiYzVhM2Y4N2I5MjNlZDZjOTgw
MjM5MWE4NzZiYWMzODJlLi4zOWFmMTNjZTcwMmE1ODM3ZGM4NzEyNWM3YzUyY2QyN2IyYTc3ZWVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxl
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWFrZWZpbGUKQEAgLTEs
MiArMSwyIEBACiBhbGw6Ci0JcHl0aG9uIC4uLy4uL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIu
cHkgLiBUZXN0V2l0aFN1cGVyY2xhc3MgVGVzdFdpdGhMZWdhY3lSZWNlaXZlciBUZXN0V2l0aG91
dEF0dHJpYnV0ZXMgVGVzdFdpdGhJZk1lc3NhZ2UKKwlweXRob24gLi4vLi4vZ2VuZXJhdGUtbWVz
c2FnZS1yZWNlaXZlci5weSAuIFRlc3RXaXRoU3VwZXJjbGFzcyBUZXN0V2l0aExlZ2FjeVJlY2Vp
dmVyIFRlc3RXaXRob3V0QXR0cmlidXRlcyBUZXN0V2l0aElmTWVzc2FnZSBUZXN0V2l0aE1hY2hT
ZW1hcGhvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
TWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcAppbmRleCA1OTQwNDQz
OTBjYWRhYzJmZjBjZGZhYTllMzA1MDQ0Mjc3ODM4MGZlLi44M2M1ZDBjYjMzMjIyYmIxYTZmYjcz
NDU0ZDQwNzlkZDYyZTRjYzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3Bw
CkBAIC00Niw2ICs0Niw3IEBACiAjZW5kaWYKICNpbmNsdWRlICJUZXN0V2l0aElmTWVzc2FnZU1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiVGVzdFdpdGhMZWdhY3lSZWNlaXZlck1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJUZXN0
V2l0aFN1cGVyY2xhc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlRlc3RXaXRob3V0QXR0cmlidXRl
c01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCkBAIC02NSw2
ICs2Niw5IEBACiAjZW5kaWYKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8d3RmL2NvY29hL01h
Y2hTZW1hcGhvcmUuaD4KKyNlbmRpZgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgSVBDIHsKQEAgLTIxNSw2ICsyMTksMTIgQEAgT3B0aW9uYWw8SlNDOjpKU1Zh
bHVlPiBqc1ZhbHVlRm9yQXJndW1lbnRzKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgTWUKICNpZiBQTEFURk9STShHVEspCiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhJ
Zk1lc3NhZ2VfTG9hZFVSTDoKICAgICAgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1l
bnRzPE1lc3NhZ2VzOjpUZXN0V2l0aElmTWVzc2FnZTo6TG9hZFVSTDo6QXJndW1lbnRzPihnbG9i
YWxPYmplY3QsIGRlY29kZXIpOworI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgY2Fz
ZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3JlX1NlbmRTZW1hcGhvcmU6CisgICAg
ICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50czxNZXNzYWdlczo6VGVzdFdpdGhN
YWNoU2VtYXBob3JlOjpTZW5kU2VtYXBob3JlOjpBcmd1bWVudHM+KGdsb2JhbE9iamVjdCwgZGVj
b2Rlcik7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3JlX1JlY2Vp
dmVTZW1hcGhvcmU6CisgICAgICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50czxN
ZXNzYWdlczo6VGVzdFdpdGhNYWNoU2VtYXBob3JlOjpSZWNlaXZlU2VtYXBob3JlOjpBcmd1bWVu
dHM+KGdsb2JhbE9iamVjdCwgZGVjb2Rlcik7CiAjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAg
ICBicmVhazsKQEAgLTUxNiw2ICs1MjYsMTQgQEAgT3B0aW9uYWw8VmVjdG9yPEFyZ3VtZW50RGVz
Y3JpcHRpb24+PiBtZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMoTWVzc2FnZU5hbWUgbmEKICAg
ICAgICAgICAgIHsidXJsIiwgIlN0cmluZyIsIG51bGxwdHIsIGZhbHNlfSwKICAgICAgICAgICAg
IHsidmFsdWUiLCAiaW50NjRfdCIsIG51bGxwdHIsIGZhbHNlfSwKICAgICAgICAgfTsKKyNlbmRp
ZgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTWFj
aFNlbWFwaG9yZV9TZW5kU2VtYXBob3JlOgorICAgICAgICByZXR1cm4gVmVjdG9yPEFyZ3VtZW50
RGVzY3JpcHRpb24+IHsKKyAgICAgICAgICAgIHsiczAiLCAiTWFjaFNlbWFwaG9yZSIsIG51bGxw
dHIsIGZhbHNlfSwKKyAgICAgICAgfTsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aE1h
Y2hTZW1hcGhvcmVfUmVjZWl2ZVNlbWFwaG9yZToKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxBcmd1
bWVudERlc2NyaXB0aW9uPiB7IH07CiAjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2Fn
ZU5hbWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5h
bWVzLmNwcAppbmRleCA3NmZhZDM3YzU0NjBhZGJjZmVhMzcyZDE4NjY1NTBmYTdjOGE4NTEzLi45
OGNlMzJkOTU1ZTc5NjM4YzIzZTI1YmY3MzgxMzA3NmEyODI0ZmJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCkBAIC03Miw2
ICs3MiwxMCBAQCBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbihNZXNzYWdlTmFtZSBuYW1lKQogICAg
ICAgICByZXR1cm4gIlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVGVzdFBhcmFtZXRlckF0dHJpYnV0
ZXMiOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVG91Y2hF
dmVudDoKICAgICAgICAgcmV0dXJuICJUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1RvdWNoRXZlbnQi
OworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9SZWNlaXZlU2Vt
YXBob3JlOgorICAgICAgICByZXR1cm4gIlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9SZWNlaXZlU2Vt
YXBob3JlIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmVfU2Vu
ZFNlbWFwaG9yZToKKyAgICAgICAgcmV0dXJuICJUZXN0V2l0aE1hY2hTZW1hcGhvcmVfU2VuZFNl
bWFwaG9yZSI7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX0xvYWRV
Ukw6CiAgICAgICAgIHJldHVybiAiVGVzdFdpdGhTdXBlcmNsYXNzX0xvYWRVUkwiOwogICAgIGNh
c2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlOgpAQCAt
MTgxLDYgKzE4NSw5IEBAIFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUoTWVzc2FnZU5hbWUgbWVz
c2FnZU5hbWUpCiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9U
ZXN0UGFyYW1ldGVyQXR0cmlidXRlczoKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aExl
Z2FjeVJlY2VpdmVyX1RvdWNoRXZlbnQ6CiAgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6OlRl
c3RXaXRoTGVnYWN5UmVjZWl2ZXI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNo
U2VtYXBob3JlX1JlY2VpdmVTZW1hcGhvcmU6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdp
dGhNYWNoU2VtYXBob3JlX1NlbmRTZW1hcGhvcmU6CisgICAgICAgIHJldHVybiBSZWNlaXZlck5h
bWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTsKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0
aFN1cGVyY2xhc3NfTG9hZFVSTDoKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVy
Y2xhc3NfVGVzdEFzeW5jTWVzc2FnZToKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1
cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZVdpdGhDb25uZWN0aW9uOgpAQCAtMjk4LDYgKzMwNSwx
NCBAQCBib29sIGlzVmFsaWRNZXNzYWdlTmFtZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKICNp
ZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBT
T01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKICAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBD
OjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9Ub3VjaEV2ZW50KQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChtZXNz
YWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmVfUmVjZWl2
ZVNlbWFwaG9yZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhN
YWNoU2VtYXBob3JlX1NlbmRTZW1hcGhvcmUpCisgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlm
CiAgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJj
bGFzc19Mb2FkVVJMKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmggYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCmluZGV4IDIzZjc1NjA4N2Q2ODNh
ZDIyYjA2OGUyYTcxZmQ5NWEwZjNjZTU1NWUuLmZiMGQ5MWJhODhkYzhkNjhlZjViZTc0YTJiMmEy
M2YyZDQzMzMxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvTWVzc2FnZU5hbWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9NZXNzYWdlTmFtZXMuaApAQCAtMzEsMTEgKzMxLDEyIEBAIG5hbWVzcGFjZSBJUEMgewogZW51
bSBjbGFzcyBSZWNlaXZlck5hbWUgOiB1aW50OF90IHsKICAgICBUZXN0V2l0aElmTWVzc2FnZSA9
IDEKICAgICAsIFRlc3RXaXRoTGVnYWN5UmVjZWl2ZXIgPSAyCi0gICAgLCBUZXN0V2l0aFN1cGVy
Y2xhc3MgPSAzCi0gICAgLCBUZXN0V2l0aG91dEF0dHJpYnV0ZXMgPSA0Ci0gICAgLCBJUEMgPSA1
Ci0gICAgLCBBc3luY1JlcGx5ID0gNgotICAgICwgSW52YWxpZCA9IDcKKyAgICAsIFRlc3RXaXRo
TWFjaFNlbWFwaG9yZSA9IDMKKyAgICAsIFRlc3RXaXRoU3VwZXJjbGFzcyA9IDQKKyAgICAsIFRl
c3RXaXRob3V0QXR0cmlidXRlcyA9IDUKKyAgICAsIElQQyA9IDYKKyAgICAsIEFzeW5jUmVwbHkg
PSA3CisgICAgLCBJbnZhbGlkID0gOAogfTsKIAogZW51bSBjbGFzcyBNZXNzYWdlTmFtZSA6IHVp
bnQxNl90IHsKQEAgLTYwLDYgKzYxLDggQEAgZW51bSBjbGFzcyBNZXNzYWdlTmFtZSA6IHVpbnQx
Nl90IHsKICAgICAsIFRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVGVtcGxhdGVUZXN0CiAgICAgLCBU
ZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1Rlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzCiAgICAgLCBUZXN0
V2l0aExlZ2FjeVJlY2VpdmVyX1RvdWNoRXZlbnQKKyAgICAsIFRlc3RXaXRoTWFjaFNlbWFwaG9y
ZV9SZWNlaXZlU2VtYXBob3JlCisgICAgLCBUZXN0V2l0aE1hY2hTZW1hcGhvcmVfU2VuZFNlbWFw
aG9yZQogICAgICwgVGVzdFdpdGhTdXBlcmNsYXNzX0xvYWRVUkwKICAgICAsIFRlc3RXaXRoU3Vw
ZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlCiAgICAgLCBUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFz
eW5jTWVzc2FnZVdpdGhDb25uZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlLm1lc3Nh
Z2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVkMzc4NzI4ZjhhNmZiNDI1MmEwYzVhZTlkMTVlZGZlYWIxNWY5
YzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoTWFjaFNlbWFwaG9yZS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMwIEBACisjIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgVGVzdHMgc2NlbmFyaW8gd2hl
cmUgI2lmJ2VkIG1lc3NhZ2Ugc2hvdWxkIGdlbmVyYXRlIGlzVmFsaWRNZXNzYWdlTmFtZSgpID09
IHRydWUgZm9yCisjIGJvdGggY2FzZXMuCittZXNzYWdlcyAtPiBUZXN0V2l0aE1hY2hTZW1hcGhv
cmUgeworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgU2VuZFNlbWFwaG9yZShNYWNoU2Vt
YXBob3JlIHMwKQorICAgIHZvaWQgUmVjZWl2ZVNlbWFwaG9yZSgpIC0+IChNYWNoU2VtYXBob3Jl
IHIwKQorI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2VS
ZWNlaXZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjRlZTQwYzM2YWFkODNmOWU3MDFkODZjOGFlYzc2M2Ez
NzhlYWU4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZVJlY2VpdmVyLmNwcApAQCAtMCwwICsx
LDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAq
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlRlc3RXaXRoTWFjaFNlbWFwaG9yZS5oIgorCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1
ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKKyNpbmNsdWRlICJUZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNz
YWdlcy5oIgorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPHd0Zi9jb2NvYS9NYWNoU2Vt
YXBob3JlLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgVGVzdFdpdGhN
YWNoU2VtYXBob3JlOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6OlNlbmRTZW1hcGhv
cmU6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RX
aXRoTWFjaFNlbWFwaG9yZTo6U2VuZFNlbWFwaG9yZT4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRo
TWFjaFNlbWFwaG9yZTo6c2VuZFNlbWFwaG9yZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisj
ZW5kaWYKKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRl
Y29kZXIpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFRlc3RXaXRoTWFj
aFNlbWFwaG9yZTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYgcmVwbHlFbmNvZGVyKQoreworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6UmVjZWl2ZVNlbWFwaG9yZTo6bmFt
ZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhNYWNo
U2VtYXBob3JlOjpSZWNlaXZlU2VtYXBob3JlPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlz
LCAmVGVzdFdpdGhNYWNoU2VtYXBob3JlOjpyZWNlaXZlU2VtYXBob3JlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyNlbmRpZgorICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKyAgICBV
TlVTRURfUEFSQU0oZGVjb2Rlcik7CisgICAgVU5VU0VEX1BBUkFNKHJlcGx5RW5jb2Rlcik7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hT
ZW1hcGhvcmVNZXNzYWdlcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNzYWdlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4NTgyY2I4N2UyYzIz
Yjg0ZTk1YzAyZWM4YWIwYWY0ODk4OTIwNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2VzLmgK
QEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisg
KiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2Fn
ZXNSZXBsaWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5o
PgorCisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgVGVzdFdpdGhNYWNoU2VtYXBo
b3JlIHsKKworc3RhdGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lKCkKK3sKKyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6OlRlc3RXaXRoTWFjaFNlbWFw
aG9yZTsKK30KKworI2lmIFBMQVRGT1JNKENPQ09BKQorY2xhc3MgU2VuZFNlbWFwaG9yZSB7Citw
dWJsaWM6CisgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBNYWNoU2VtYXBo
b3JlJj47CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBD
OjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3JlX1NlbmRTZW1hcGhvcmU7IH0KKyAg
ICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IFNlbmRT
ZW1hcGhvcmUoY29uc3QgTWFjaFNlbWFwaG9yZSYgczApCisgICAgICAgIDogbV9hcmd1bWVudHMo
czApCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0o
Q09DT0EpCitjbGFzcyBSZWNlaXZlU2VtYXBob3JlIHsKK3B1YmxpYzoKKyAgICB1c2luZyBBcmd1
bWVudHMgPSBzdGQ6OnR1cGxlPD47CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1l
KCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3JlX1JlY2Vp
dmVTZW1hcGhvcmU7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworCisg
ICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPE1hY2hTZW1hcGhvcmUmPjsKKyAgICB1c2luZyBS
ZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8TWFjaFNlbWFwaG9yZT47CisgICAgY29uc3QgQXJn
dW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1l
bnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9Owor
I2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFRlc3RXaXRoTWFjaFNlbWFwaG9yZQorfSAvLyBuYW1l
c3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZXNSZXBsaWVzLmggYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2VzUmVw
bGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVlNzBjNGExM2JiNzZhMzYwNTc3M2JlM2FhN2M3YmUxYTE5YTYx
MGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2VzUmVwbGllcy5oCkBAIC0wLDAgKzEsMzYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisg
KiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VOYW1l
cy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsK
K25hbWVzcGFjZSBUZXN0V2l0aE1hY2hTZW1hcGhvcmUgeworCisKK30gLy8gbmFtZXNwYWNlIFRl
c3RXaXRoTWFjaFNlbWFwaG9yZQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW0KaW5kZXggMjgxNGU4YjVlZjMyZDUwMjY1OGJhYjVhZWY3MTNjZjYxNDcwMmI1Ny4uODM1YTY0
MDliZDg3NzNkNDM0YTFkMDExMzQyYjJjZWYxNGM1OTU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAg
LTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZXMuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oPgogI2ltcG9ydCA8cGFsL3NwaS9j
b2NvYS9Db3JlVGV4dFNQSS5oPgorI2ltcG9ydCA8d3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaD4K
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxVSUtpdC9VSUZvbnQuaD4KQEAg
LTY1LDYgKzY2LDE5IEBAIE9wdGlvbmFsPFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmc+IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZz46OmRlCiAgICAgcmV0dXJuIHsgeyBX
VEZNb3ZlKGF0dHJpYnV0ZWRTdHJpbmcpLCBXVEZNb3ZlKGRvY3VtZW50QXR0cmlidXRlcykgfSB9
OwogfQogCit2b2lkIEFyZ3VtZW50Q29kZXI8V1RGOjpNYWNoU2VtYXBob3JlPjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFdURjo6TWFjaFNlbWFwaG9yZSYgc2VtYXBob3JlKQorewor
ICAgIGVuY29kZXIgPDwgc2VtYXBob3JlLmNyZWF0ZVNlbmRSaWdodCgpOworfQorCitPcHRpb25h
bDxNYWNoU2VtYXBob3JlPiBBcmd1bWVudENvZGVyPFdURjo6TWFjaFNlbWFwaG9yZT46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0OworICAg
IGlmIChkZWNvZGVyLmRlY29kZShzZW5kUmlnaHQpKQorICAgICAgICByZXR1cm4gT3B0aW9uYWw8
V1RGOjpNYWNoU2VtYXBob3JlPiB7IHN0ZDo6aW5fcGxhY2UsIFdURk1vdmUoc2VuZFJpZ2h0KSB9
OworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQog
CiAjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRl
cnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdiNWE3NmFmMjUyMGM5ZTcyMDEw
NjgwOGE5MzRmZDE5Nzg5OWQyNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KLSNpbmNsdWRl
ICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgotI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJp
Z2h0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZENyZWF0aW9uUGFyYW1ldGVycyB7Ci0gICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIg
aWRlbnRpZmllcjsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBNYWNoU2VuZFJpZ2h0IHNlbmRS
aWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOwotI2VuZGlmCi0KLSAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRD
cmVhdGlvblBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJik7Ci19OwotCi10ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IGlkZW50
aWZpZXI7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgZW5jb2RlciA8PCBzZW5kUmlnaHRGb3JS
ZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKLSNlbmRpZgotfQotCi10ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgotT3B0aW9uYWw8UmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVy
cz4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCi17Ci0gICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1l
dGVycyBwYXJhbWV0ZXJzOwotCi0gICAgT3B0aW9uYWw8UmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXI+IGlkZW50aWZpZXI7Ci0gICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwotICAgIGlmICghaWRl
bnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHBhcmFtZXRlcnMu
aWRlbnRpZmllciA9ICppZGVudGlmaWVyOwotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgT3B0
aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1hcGhv
cmU7Ci0gICAgZGVjb2RlciA+PiBzZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9y
ZTsKLSAgICBpZiAoIXNlbmRSaWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcGFyYW1ldGVycy5zZW5kUmlnaHRGb3JS
ZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSA9IFdURk1vdmUoKnNlbmRSaWdodEZvclJlc3VtZURp
c3BsYXlMaXN0U2VtYXBob3JlKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIHBhcmFtZXRlcnM7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBm
YTk2Y2RhODRlY2I3ZDQ4OGFlNDI5MTMzYzBmNWI0NDM3MDQ4ZGIxLi41MDgyMWQxZGI3MzgwZTEw
NjRlMTllYmIwZDhlM2Y3Y2RjNmFiYWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaApAQCAtODEsNiArODEsNyBAQAogI2lmIFBMQVRGT1JNKENPQ09B
KQogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OworY2xhc3MgTWFjaFNlbWFw
aG9yZTsKIH0KICNlbmRpZgogCkBAIC00ODcsNiArNDg4LDEwIEBAIHRlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8Q0dBZmZpbmVUcmFuc2Zvcm0+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYsIENHQWZmaW5lVHJhbnNmb3JtKTsKICAgICBzdGF0aWMgT3B0aW9uYWw8Q0dB
ZmZpbmVUcmFuc2Zvcm0+IGRlY29kZShEZWNvZGVyJik7CiB9OwordGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXVEY6Ok1hY2hTZW1hcGhvcmU+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYsIGNvbnN0IFdURjo6TWFjaFNlbWFwaG9yZSYpOworICAgIHN0YXRpYyBPcHRp
b25hbDxXVEY6Ok1hY2hTZW1hcGhvcmU+IGRlY29kZShEZWNvZGVyJik7Cit9OwogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmEwM2RjODUxNDAwMzg1ODI2MTc1M2RlY2NmOTU3
NzdhMWFiY2VhMS4uMjRiMTMyYjIyM2Y5OTM4OTBmYWExMDk1OGU2YmZlNzAxNDEyMTNlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
OTY4LDcgKzE5NjgsNiBAQAogCQlGNDJENjM0MTIyQTBFRkRGMDBEMkZCM0EgLyogV2ViQXV0b2Nv
cnJlY3Rpb25EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNDJENjMzRjIyQTBFRkQzMDBEMkZCM0EgLyogV2ViQXV0b2NvcnJlY3Rpb25EYXRhLmgg
Ki87IH07CiAJCUY0MzBFOTQyMjI0NzMzNUYwMDVGRTA1MyAvKiBXZWJzaXRlTWV0YVZpZXdwb3J0
UG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NDMwRTk0MTIyNDczMkE5MDA1RkUwNTMgLyogV2Vic2l0ZU1ldGFWaWV3cG9ydFBvbGljeS5oICov
OyB9OwogCQlGNDMwRTk0NDIyNDczREZGMDA1RkUwNTMgLyogV2ViQ29udGVudE1vZGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzBFOTQzMjI0NzNE
QjgwMDVGRTA1MyAvKiBXZWJDb250ZW50TW9kZS5oICovOyB9OwotCQlGNDM3QzhEOTI1OTNCN0Uz
MDBEQjhBMUMgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzN0M4RDgyNTkz
QjdFMzAwREI4QTFDIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMu
aCAqLzsgfTsKIAkJRjQzOENEMUMyMjQxNDIxNDAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVu
Y2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDM4
Q0QxQjIyNDE0MEE2MDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUY0MzhDRDFGMjI0MTRENDAw
MERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlc0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDM4Q0QxRTIyNDE0RDQwMDBERTZEREEg
LyogV0tXZWJwYWdlUHJlZmVyZW5jZXNJbnRlcm5hbC5oICovOyB9OwogCQlGNDM4Q0QyMTIyNDFG
Njk1MDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXNQcml2YXRlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDM4Q0QyMDIyNDFGNjk1MDBERTZE
REEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXNQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU3ODYsNyArNTc4NSw2IEBACiAJCUY0MkQ2
MzQwMjJBMEVGRDMwMEQyRkIzQSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJBdXRvY29ycmVjdGlvbkRhdGEubW07
IHBhdGggPSBpb3MvV2ViQXV0b2NvcnJlY3Rpb25EYXRhLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGNDMwRTk0MTIyNDczMkE5MDA1RkUwNTMgLyogV2Vic2l0ZU1ldGFWaWV3cG9y
dFBvbGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJzaXRlTWV0YVZpZXdwb3J0UG9saWN5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzBFOTQzMjI0NzNEQjgwMDVGRTA1MyAvKiBX
ZWJDb250ZW50TW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZW50TW9kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlGNDM3QzhEODI1OTNCN0UzMDBEQjhBMUMgLyogUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY0MzhDRDFCMjI0MTQwQTYwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJl
bmNlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYnBhZ2VQcmVmZXJlbmNlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNDM4Q0QxRDIyNDE0QUQ2MDBERTZEREEgLyogV0tXZWJwYWdl
UHJlZmVyZW5jZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYnBhZ2VQcmVmZXJlbmNl
cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzOENEMUUyMjQxNEQ0MDAwREU2
RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tX
ZWJwYWdlUHJlZmVyZW5jZXNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNjUyNSw3ICs2NTIzLDYgQEAKIAkJCQlFMUNDMUI4RTEyRDdFQURGMDA2MjU4MzggLyogUHJp
bnRJbmZvLmggKi8sCiAJCQkJNDYzRkQ0ODExRUI5NEVBRDAwQTI5ODJDIC8qIFByb2Nlc3NUZXJt
aW5hdGlvblJlYXNvbi5oICovLAogCQkJCTlCMTIyOUQwMjNGRjJBNUUwMDhDQTc1MSAvKiBSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllci5oICovLAotCQkJCUY0MzdDOEQ4MjU5M0I3RTMw
MERCOEExQyAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi8s
CiAJCQkJNUNCN0FGRTYyM0M2ODFCMDAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZEluZm8uaCAqLywK
IAkJCQk1QzAwOTkzQjI0MTdGQjdFMDBENTNDMjUgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
cmFtZXRlcnMuaCAqLywKIAkJCQk0MTA0ODJDQjFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29y
ay5jcHAgKi8sCkBAIC0xMTg3MCw3ICsxMTg2Nyw2IEBACiAJCQkJMUE1NzA0RkMxQkUxNzUxMTAw
ODc0QUYxIC8qIFJlbW90ZU9iamVjdEludm9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
QzEzMzgwMTg1OTBBRTQwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFDMTMzODYxODU5MEM0NjAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lz
dHJ5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCUY0MzdDOEQ5MjU5M0I3RTMwMERCOEEx
QyAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjU5NDc5MDE4N0IzQjNBMDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTk0N0E4MTg3QjUxNzYwMDQzNzg1NyAv
KiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjU5NDc5QjE4N0IzQjYwMDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5jcHAKaW5kZXggNjFiNGM4MjQ5NTc2ZGUxMjhhOWFiZWQwOTI3ZjQxZWU0MTYyYmU2ZS4uYzFl
MzZjZWRhMWQyMzdjNmE4OTVjODUxNzZmYTU2NGEyZmU5YThhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJJbWFnZURhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCIKLSNpbmNsdWRl
ICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAi
UmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKQEAg
LTY3LDEyICs2NiwxMSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y29ubmVj
dFRvR1BVUHJvY2VzcygpCiAgICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgY29ubmVjdGlvbi5hZGRD
bGllbnQoKnRoaXMpOwogICAgIGNvbm5lY3Rpb24ubWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgp
LCAqdGhpcyk7Ci0gICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Q3JlYXRlUmVuZGVyaW5nQmFja2VuZCh7Ci0gICAgICAgIG1fcmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIsCisgICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3Jl
YXRlUmVuZGVyaW5nQmFja2VuZChtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyCiAjaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgICAgIG1fcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUuY3JlYXRl
U2VuZFJpZ2h0KCksCisgICAgICAgICwgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZQogI2Vu
ZGlmCi0gICAgfSksIDApOworICAgICksIDApOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6cmVlc3RhYmxpc2hHUFVQcm9jZXNzQ29ubmVjdGlvbigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1
ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKaW5kZXggMzRlMzBjZTExOTM2MGM5MzBjMmIwN2U5YzMw
OGExYjY0MGVkMGEzZS4uZTAwNzRlOTE3MzM2YWIyNGZlNWNiNTY5OTYyZmQxMDRiODY2YmQxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcApAQCAtNDAsNyArNDAsNiBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJB
dWRpb0J1ZmZlckxpc3QuaD4KICNpbmNsdWRlIDxtYWNoL21hY2hfdGltZS5oPgotI2luY2x1ZGUg
PHd0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC04MCw3ICs3OSw3IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpzdGFy
dFJlbmRlcmluZ1RocmVhZCgpCiAKICAgICBhdXRvIG9mZlRocmVhZFJlbmRlcmluZyA9IFt0aGlz
XSgpIG11dGFibGUgewogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBtX3JlbmRlclNlbWFwaG9y
ZS0+d2FpdCgpOworICAgICAgICAgICAgbV9yZW5kZXJTZW1hcGhvcmUud2FpdCgpOwogICAgICAg
ICAgICAgaWYgKG1fc2hvdWxkU3RvcFRocmVhZCkKICAgICAgICAgICAgICAgICBicmVhazsKIApA
QCAtOTgsOCArOTcsNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6c3RvcFJl
bmRlcmluZ1RocmVhZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc2hvdWxkU3RvcFRocmVh
ZCA9IHRydWU7Ci0gICAgaWYgKG1fcmVuZGVyU2VtYXBob3JlKQotICAgICAgICBtX3JlbmRlclNl
bWFwaG9yZS0+c2lnbmFsKCk7CisgICAgbV9yZW5kZXJTZW1hcGhvcmUuc2lnbmFsKCk7CiAgICAg
bV9yZW5kZXJUaHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CiAgICAgbV9yZW5kZXJUaHJlYWQg
PSBudWxscHRyOwogI2VuZGlmCkBAIC0xMDcsMjAgKzEwNSwxNCBAQCB2b2lkIFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eTo6c3RvcFJlbmRlcmluZ1RocmVhZCgpCiAKIHZvaWQgUmVtb3RlQXVk
aW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNzKCkKIHsKLSAgICBSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBkZXN0aW5hdGlvbklEOwotI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIE1hY2hTZW5kUmlnaHQgcmVuZGVyU2VtYXBob3JlU2VuZFJpZ2h0OwotI2VuZGlm
Ci0KICAgICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAgICBjb25uZWN0aW9uLmFkZENsaWVudCgqdGhpcyk7
CiAgICAgYXV0byBkaWRTdWNjZWVkID0gY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFN5bmMo
Ci0gICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRl
QXVkaW9EZXN0aW5hdGlvbihtX2lucHV0RGV2aWNlSWQsIG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxz
LCBudW1iZXJPZk91dHB1dENoYW5uZWxzKCksIHNhbXBsZVJhdGUoKSwgaGFyZHdhcmVTYW1wbGVS
YXRlKCkpLAotICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6
OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5KGRlc3RpbmF0aW9uSUQKKyAgICAgICAgTWVz
c2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0
aW9uKG1faW5wdXREZXZpY2VJZCwgbV9udW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMoKSwgc2FtcGxlUmF0ZSgpLCBoYXJkd2FyZVNhbXBsZVJhdGUoKQogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgICAgICAgICAgLCByZW5kZXJTZW1hcGhvcmVTZW5kUmlnaHQKKyAg
ICAgICAgICAgICwgbV9yZW5kZXJTZW1hcGhvcmUKICNlbmRpZgotICAgICAgICApLCAwKTsKKyAg
ICAgICAgICAgICksIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3Jl
YXRlQXVkaW9EZXN0aW5hdGlvbjo6UmVwbHkobV9kZXN0aW5hdGlvbklEKSwgMCk7CiAKICAgICBp
ZiAoIWRpZFN1Y2NlZWQpIHsKICAgICAgICAgLy8gVGhlIEdQVVByb2Nlc3MgbGlrZWx5IGNyYXNo
ZWQgZHVyaW5nIHRoaXMgc3luY2hyb25vdXMgSVBDLiBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENs
b3NlKCkgd2lsbCBnZXQgY2FsbGVkIHRvIHJlY29ubmVjdCB0byB0aGUgR1BVUHJvY2Vzcy4KQEAg
LTEyOCw3ICsxMjAsNiBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVj
dFRvR1BVUHJvY2VzcygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2Rlc3RpbmF0
aW9uSUQgPSBkZXN0aW5hdGlvbklEOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbV9jdXJy
ZW50RnJhbWUgPSAwOwpAQCAtMTM2LDcgKzEyNyw2IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNzKCkKICAgICBnZXRBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKHN0
cmVhbUZvcm1hdCwgbV9udW1iZXJPZkZyYW1lcyk7CiAgICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBt
YWtlVW5pcXVlPFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4oc3RyZWFtRm9ybWF0KTsKLSAg
ICBtX3JlbmRlclNlbWFwaG9yZSA9IG1ha2VVbmlxdWU8TWFjaFNlbWFwaG9yZT4oV1RGTW92ZShy
ZW5kZXJTZW1hcGhvcmVTZW5kUmlnaHQpKTsKICNlbmRpZgogCiAgICAgc3RhcnRSZW5kZXJpbmdU
aHJlYWQoKTsKQEAgLTIwNSw5ICsxOTUsNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdAogICAg
IG9sZENvbm5lY3Rpb24ucmVtb3ZlQ2xpZW50KCp0aGlzKTsKIAogICAgIHN0b3BSZW5kZXJpbmdU
aHJlYWQoKTsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBtX3JlbmRlclNlbWFwaG9yZSA9IG51
bGxwdHI7Ci0jZW5kaWYKKwogICAgIGNvbm5lY3RUb0dQVVByb2Nlc3MoKTsKIAogICAgIGlmIChp
c1BsYXlpbmcoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCmluZGV4IDhkMmM2M2Vi
OWM1NWZiOGIyYWM1NGJhYWRlOGY3M2NlNWQ1YjFjYzUuLmFmNjM2ZmYzNjY0OWMyNDAwNjIzMjRh
YWVhYTIwZjE3ZDE1ODBmZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaApAQCAt
MzgsNiArMzgsOCBAQAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIlNoYXJlZFJpbmdC
dWZmZXJTdG9yYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2Eu
aD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvY29jb2EvTWFjaFNl
bWFwaG9yZS5oPgogI2Vsc2UKICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvRGVzdGluYXRpb25HU3Ry
ZWFtZXIuaD4KICNlbmRpZgpAQCAtNDcsMTEgKzQ5LDcgQEAgY2xhc3MgQ0FSaW5nQnVmZmVyOwog
Y2xhc3MgV2ViQXVkaW9CdWZmZXJMaXN0OwogfQogCi1uYW1lc3BhY2UgV1RGIHsKLSNpZiBQTEFU
Rk9STShDT0NPQSkKLWNsYXNzIE1hY2hTZW1hcGhvcmU7Ci0jZW5kaWYKLX0KKwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIApAQCAtMTA0LDcgKzEwMiw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgdWludDY0X3QgbV9udW1iZXJPZkZyYW1lcyB7IDAgfTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPiBtX3JpbmdCdWZmZXI7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPFdURjo6TWFjaFNlbWFwaG9yZT4gbV9yZW5kZXJTZW1hcGhvcmU7CisgICAgTWFj
aFNlbWFwaG9yZSBtX3JlbmRlclNlbWFwaG9yZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6V2ViQXVkaW9CdWZmZXJMaXN0PiBtX2F1ZGlvQnVmZmVyTGlzdDsKICAgICB1aW50NjRfdCBt
X2N1cnJlbnRGcmFtZSB7IDAgfTsKICAgICBmbG9hdCBtX3NhbXBsZVJhdGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418401</attachid>
            <date>2021-01-26 05:16:55 -0800</date>
            <delta_ts>2021-01-26 05:39:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220919-20210126151653.patch</filename>
            <type>text/plain</type>
            <size>64941</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRjZDQwMzEzYzI0MGZiMjllYjFlMTFj
MjQ2MTBjODY0YjAxMzc1NGQuLmYzNTI1MDE0ZmI2NmE4NGZmMDEzYzQzNGYxZTdhOTFjMmRkNGE5
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMDEtMjYgIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNYWNoU2VtYXBob3JlIGRvZXMgbm90IHdvcmsg
d2VsbCB3aXRoIElQQyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwOTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW1wbGVtZW50IG1vdmUgY29uc3RydWN0b3IgYW5kIG1vdmUgYXNzaWdu
bWVudCBvcGVyYXRvciBmb3IgTWFjaFNlbWFwaG9yZS4KKyAgICAgICAgTWFrZXMgaXQgcG9zc2li
bGUgdG8gY3JlYXRlIHR5cGVzIHRoYXQgaG9sZCBNYWNoU2VtYXBob3JlIGJ1dCBzdGlsbAorICAg
ICAgICBhcmUgZGVjb2RlKClhYmxlIGZyb20gYSBJUEMgbWVzc2FnZS4gVGhlIGRlY29kZWQgb2Jq
ZWN0cyBhcmUgaGVsZCB3aXRoCisgICAgICAgIE9wdGlvbmFsLCBhbmQgdGhpcyBmb3JjZXMgdGhl
IHN1Ym9iamVjdHMgdG8gaGF2ZSBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisKKyAgICAgICAg
QWRkIGFzc2VydHMgdGhhdCB0aGUgbW92ZWQtYXdheSBvYmplY3QgaXMgbm90IHVzZWQuCisgICAg
ICAgIEFkZCB0aGUgYXNzZXJ0cyBhcyBhc3NlcnRzIG9uIHRoZSBjYWxsIHJldHVybiB2YWx1ZXMs
IHNvIHRoZSB2YWx1ZXMKKyAgICAgICAgYXJlIGFsc28gY2hlY2tlZCBvbiBub3JtYWwgb2JqZWN0
cyBvbiBub3JtYWwgb3BlcmF0aW9uLgorCisgICAgICAgICogd3RmL2NvY29hL01hY2hTZW1hcGhv
cmUuY3BwOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3JlOjpNYWNoU2VtYXBob3JlKToKKyAg
ICAgICAgKFdURjo6TWFjaFNlbWFwaG9yZTo6fk1hY2hTZW1hcGhvcmUpOgorICAgICAgICAoV1RG
OjpNYWNoU2VtYXBob3JlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3Jl
OjpzaWduYWwpOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3JlOjp3YWl0KToKKyAgICAgICAg
KFdURjo6TWFjaFNlbWFwaG9yZTo6d2FpdEZvcik6CisgICAgICAgIChXVEY6Ok1hY2hTZW1hcGhv
cmU6OmNyZWF0ZVNlbmRSaWdodCBjb25zdCk6CisgICAgICAgIChXVEY6Ok1hY2hTZW1hcGhvcmU6
OmRlc3Ryb3kpOgorICAgICAgICAqIHd0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg6CisgICAgICAg
IChXVEY6Ok1hY2hTZW1hcGhvcmU6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorCiAyMDIxLTAxLTIz
ICBYYW4gTG9wZXogIDx4YW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBBbGxvdyB0byBi
dWlsZCBXZWJBc3NlbWJseSB3aXRob3V0IEIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRiMDUyNDNhMmRkZDEyMjFl
ZmMyMTRjMjAwOWM4MWQyZDFjZjdmMjQuLjU5M2JiZDE0MDc2MGZmOWE0Yzg4ZjYyODI4NmJlOTA0
ZGQ4NGJjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA5IEBACisyMDIxLTAxLTI2ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFjaFNlbWFwaG9yZSBk
b2VzIG5vdCB3b3JrIHdlbGwgd2l0aCBJUEMgbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDkxOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhbiBlbmNvZGVyIGFuZCBkZWNv
ZGVyIGZvciBXVEY6Ok1hY2hTZW1hcGhvcmUuIE1ha2VzIGl0IHBvc3NpYmxlIHRvIHNlbmQgaXQK
KyAgICAgICAgdmlhIElQQyBhcyBpdHMgb3duIHR5cGUsIG5vdCBhcyBNYWNoU2VuZFJpZ2h0Lgor
CisgICAgICAgIEFzIGFuIGV4YW1wbGUsIGNoYW5nZXMgZXhpc3RpbmcgdXNlcyBvZiBNYWNoU2Vu
ZFJpZ2h0IGZvciBzZW1hcGhvcmVzIGluIG1lc3NhZ2VzIGFzCisgICAgICAgIE1hY2hTZW1hcGhv
cmVzLCBkZXNjcmliZWQgYmVsb3cuCisKKyAgICAgICAgQ2hhbmdlcyBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHkgdG8gc2VuZCBpdHMgb3duIHNlbWFwaG9yZSBmcm9tCisgICAgICAgIFdlYlBy
b2Nlc3MgdG8gR1BVUHJvY2Vzcy4gUHJldmlvdXNseSB0aGUgc2VtYXBob3JlIHdvdWxkIGJlIHNl
bnQgYmFjayBieQorICAgICAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci4gUHJldmlv
dXNseSB0aGUgY29kZSBzdHJ1Y3R1cmUgaXMgbW9yZQorICAgICAgICBjb21wbGljYXRlZCB0aGFu
IG5lY2Nlc3NhcnksIGFzIHRoZSBzZW1hcGhvcmUgaG9sZGVyIHdhcyBiZWluZworICAgICAgICBu
dWxsLWNoZWNrZWQsIHJlc2V0IGFuZCByZS1zZWF0ZWQuIFRoZSBXZWJQcm9jZXNzIGdldHMgYWxy
ZWFkeSB0byBjaG9vc2UKKyAgICAgICAgdGhlIHNlbWFwaG9yZXMgR1BVUHJvY2VzcyB1c2VzLCBz
byB0aGlzIHNob3VsZCBub3QgaW5jcmVhc2Ugc2VjdXJpdHkKKyAgICAgICAgc3VyZmFjZS4gVGhl
IGNoYW5nZSBjaG9zZW4gaGVyZSBzaWRlLXN0ZXBzIHRoZSBzaG9ydGNvbWluZyBvZiB0aGUgSVBD
CisgICAgICAgIHN5c3RlbSB3aGVyZSB1bnBhY2tpbmcgb2JqZWN0cyBmcm9tIHRoZSBSZXBseSBt
ZXNzYWdlcyBtYW5kYXRlcyB0aGF0IGEKKyAgICAgICAgY29uc3RydWN0ZWQgdmVyc2lvbiBvZiB0
aGF0IHR5cGUgZXhpc3RzLiBGb3IgcHJldmlvdXMgTWFjaFNlbmRSaWdodAorICAgICAgICBlbXB0
eS1jb25zdHJ1Y3RlZCBvYmplY3QgaXMgc2ltcGxlLCBidXQgZm9yIE1hY2hTZW1hcGhvcmUKKyAg
ICAgICAgZW1wdHktY29uc3RydWN0ZWQgb2JqZWN0IGNyZWF0ZXMgdW5uZWNlc3NhcnkgY29tcGxp
Y2F0aW9uIHRoYXQgaXMgbm90CisgICAgICAgIHJlcXVpcmVkIG90aGVyd2lzZSBhdCB0aGUgbW9t
ZW50LiBUaGUgYWx0ZXJuYXRpdmUgdG8gd2hhdCB3YXMgY2hvc2VuCisgICAgICAgIGhlcmUgd291
bGQgYmUgdG8gaG9sZCB3aXRoIE9wdGlvbmFsPE1hY2hTZW1hcGhvcmU+IGFuZCBhZGQgYQorICAg
ICAgICBlbXB0eS1pbml0aWFsaXppbmcgY29uc3RydWN0b3IgdG8gaG9sZCB0aGUgb2JqZWN0IHdo
ZXJlIHRvIHVucGFjayB0aGUKKyAgICAgICAgc2VtYXBob3JlIG9iamVjdCBmcm9tIHRoZSBSZXBs
eS4KKworICAgICAgICBDaGFuZ2VzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgdG8gcmVjZWl2ZSBp
dHMgcGFyYW1ldGVycyBmcm9tIHRoZSBub3JtYWwKKyAgICAgICAgbWVzc2FnZSBwYXJhbWV0ZXJz
IGluc3RlYWQgb2YgcmVkdW5kYW50CisgICAgICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVh
dGlvblBhcmFtZXRlcnMuIFRoZSBJUEMgZ2VuZXJhdG9yIGFscmVhZHkKKyAgICAgICAgZ2VuZXJh
dGVzIDE6MSBpZGVudGljYWwgc3RydWN0dXJlLCBpdCBpcyBqdXN0IHRoZSBtZXNzYWdlCisgICAg
ICAgIE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVSZW5kZXJpbmdC
YWNrZW5kLiBUaGVyZSBpcyBubworICAgICAgICBuZWVkIHRvIGRvdWJsZS13cmFwIHRoZSBzaW1w
bGUgbGlzdCBvZiBwYXJhbWV0ZXJzLiBUaGUgZG91YmxlLXdyYXBwaW5nCisgICAgICAgIGlzIGEg
cHJvYmxlbTogVGhlIG1lc3NhZ2Ugc3lzdGVtIHBhcmFtZXRlcnMgYXJlIG9mIG93bmVyc2hpcCAi
Y29uc3QKKyAgICAgICAgcmVmZXJlbmNlIiwgd2hpY2ggaXMgd2hhdCBpcyBleHBlY3RlZC4KKyAg
ICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyBjb250ZW50cyB3
ZXJlIG9mIG93bmVyc2hpcAorICAgICAgICAidmFsdWUiLCB3aGljaCB3b3JrcyBhcyBleHBlY3Rl
ZCBvbmx5IGZvciBzaW1wbGUgcHJpbWl0aXZlIHR5cGVzLgorICAgICAgICBFc3NlbnRpYWxseSBw
cmV2aW91c2x5IGNhbGxpbmcgdGhlIElQQyBmdW5jdGlvbiBtZWFudCB0cmFuc2ZlcmluZworICAg
ICAgICBvYmplY3RzIHRvIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMu
IFRoaXMgaXMgbm90IGhvdyB0aGUKKyAgICAgICAgSVBDIHN5c3RlbSBpcyBtZWFudCB0byB3b3Jr
LiBUaGUgaW50ZW50aW9uIG9mIGEgSVBDIGNhbGwgaXMgdG8sIGJ5CisgICAgICAgIGRlZmF1bHQs
IHJlZmVyZW5jZSBpdHMgYXJndW1lbnRzIGZvciB0aGUgcHVycG9zZSBvZiBlbmNvZGluZy4gVGhl
IHBhdGNoCisgICAgICAgIHRyaWVzIHRvIGFjaGlldmUgYSBiaXQgdGhlIHNhbWUgZ29hbCBhcyB0
aGUgb3JpZ2luYWwKKyAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1l
dGVycyBwcmVzdW1hYmx5IGhhZCwgaS5lLiB0byBhdm9pZAorICAgICAgICBwcm9ibGVtcyB3aXRo
ICNpZiBQTEFURk9STShDT0NPQSktI2Vsc2UgaW4gbWV0aG9kIGRlY2xhcmF0aW9ucyBhbmQKKyAg
ICAgICAgZGVmaW5pdGlvbnMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3Rvci4KKwor
ICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0Jh
Y2tlbmQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
OgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4
dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpjcmVh
dGVBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXI6OmRlbGV0ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6c3RhcnRBdWRpb0Rlc3RpbmF0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0b3BBdWRpb0Rl
c3RpbmF0aW9uKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwOgorICAg
ICAgICAoSVBDOjpqc1ZhbHVlRm9yQXJndW1lbnRzKToKKyAgICAgICAgKElQQzo6bWVzc2FnZUFy
Z3VtZW50RGVzY3JpcHRpb25zKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNz
YWdlTmFtZXMuY3BwOgorICAgICAgICAoSVBDOjpkZXNjcmlwdGlvbik6CisgICAgICAgIChJUEM6
OnJlY2VpdmVyTmFtZSk6CisgICAgICAgIChJUEM6OmlzVmFsaWRNZXNzYWdlTmFtZSk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmg6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlLm1lc3NhZ2VzLmluOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1h
Y2hTZW1hcGhvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
VGVzdFdpdGhNYWNoU2VtYXBob3JlOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJL
aXQ6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNzYWdlcy5o
OiBBZGRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoTWFjaFNlbWFwaG9y
ZTo6U2VuZFNlbWFwaG9yZTo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhNYWNo
U2VtYXBob3JlOjpTZW5kU2VtYXBob3JlOjpTZW5kU2VtYXBob3JlKToKKyAgICAgICAgKE1lc3Nh
Z2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6OlNlbmRTZW1hcGhvcmU6OmFyZ3VtZW50cyBjb25z
dCk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhNYWNoU2VtYXBob3JlOjpSZWNlaXZlU2Vt
YXBob3JlOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6
OlJlY2VpdmVTZW1hcGhvcmU6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVk
LgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXVEY6Ok1hY2hTZW1hcGhvcmU+OjplbmNvZGUp
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdURjo6TWFjaFNlbWFwaG9yZT46OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFt
ZXRlcnMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpjb25uZWN0
VG9HUFVQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHk6OnN0YXJ0UmVuZGVyaW5nVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpzdG9wUmVuZGVyaW5nVGhyZWFkKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpncHVQcm9j
ZXNzQ29ubmVjdGlvbkRpZENsb3NlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaDoKKwogMjAyMS0wMS0yNCAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIFdLMl0gdGhldmVyZ2Uu
Y29tIC0gcnViYmVyIGJhbmQgc2Nyb2xsaW5nIGF0IHRoZSB0b3Agb2YgdGhlIHBhZ2UgY2F1c2Vz
IGFuIGFicnVwdCBqdW1wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NYWNoU2Vt
YXBob3JlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuY3BwCmluZGV4
IDkyZmNmMTVjMDdkOTI0YTQ1MDc5MzdmZDIzMDQ1NzJjNGRiYmI5NjYuLjZmYjM1NzdlYWQzODQ4
Y2Y4MGMwODU4ODFjN2U2YWUxN2NlM2NkMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2Nv
Y29hL01hY2hTZW1hcGhvcmUuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1h
cGhvcmUuY3BwCkBAIC0zNiw2ICszNiwxMiBAQCBNYWNoU2VtYXBob3JlOjpNYWNoU2VtYXBob3Jl
KCkKICAgICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0ID09IEtFUk5fU1VDQ0VTUyk7CiB9CiAKK01h
Y2hTZW1hcGhvcmU6Ok1hY2hTZW1hcGhvcmUoTWFjaFNlbWFwaG9yZSYmIG90aGVyKQorICAgIDog
bV9zZW5kUmlnaHQoV1RGTW92ZShvdGhlci5tX3NlbmRSaWdodCkpCisgICAgLCBtX3NlbWFwaG9y
ZShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fc2VtYXBob3JlLCBTRU1BUEhPUkVfTlVMTCkpCit7Cit9
CisKIE1hY2hTZW1hcGhvcmU6Ok1hY2hTZW1hcGhvcmUoTWFjaFNlbmRSaWdodCYmIHNlbmRSaWdo
dCkKICAgICA6IG1fc2VuZFJpZ2h0KFdURk1vdmUoc2VuZFJpZ2h0KSkKICAgICAsIG1fc2VtYXBo
b3JlKG1fc2VuZFJpZ2h0LnNlbmRSaWdodCgpKQpAQCAtNDUsMjkgKzUxLDU2IEBAIE1hY2hTZW1h
cGhvcmU6Ok1hY2hTZW1hcGhvcmUoTWFjaFNlbmRSaWdodCYmIHNlbmRSaWdodCkKIAogTWFjaFNl
bWFwaG9yZTo6fk1hY2hTZW1hcGhvcmUoKQogewotICAgIGlmICghbV9zZW5kUmlnaHQpCi0gICAg
ICAgIHNlbWFwaG9yZV9kZXN0cm95KG1hY2hfdGFza19zZWxmKCksIG1fc2VtYXBob3JlKTsKKyAg
ICBkZXN0cm95KCk7Cit9CisKK01hY2hTZW1hcGhvcmUmIE1hY2hTZW1hcGhvcmU6Om9wZXJhdG9y
PShNYWNoU2VtYXBob3JlJiYgb3RoZXIpCit7CisgICAgaWYgKHRoaXMgIT0gJm90aGVyKSB7Cisg
ICAgICAgIGRlc3Ryb3koKTsKKyAgICAgICAgbV9zZW5kUmlnaHQgPSBXVEZNb3ZlKG90aGVyLm1f
c2VuZFJpZ2h0KTsKKyAgICAgICAgbV9zZW1hcGhvcmUgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1f
c2VtYXBob3JlLCBTRU1BUEhPUkVfTlVMTCk7CisgICAgfQorCisgICAgcmV0dXJuICp0aGlzOwog
fQogCiB2b2lkIE1hY2hTZW1hcGhvcmU6OnNpZ25hbCgpCiB7Ci0gICAgc2VtYXBob3JlX3NpZ25h
bChtX3NlbWFwaG9yZSk7CisgICAgYXV0byByZXQgPSBzZW1hcGhvcmVfc2lnbmFsKG1fc2VtYXBo
b3JlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0ID09IEtFUk5fU1VDQ0VTUyk7CiB9CiAK
IHZvaWQgTWFjaFNlbWFwaG9yZTo6d2FpdCgpCiB7Ci0gICAgc2VtYXBob3JlX3dhaXQobV9zZW1h
cGhvcmUpOworICAgIGF1dG8gcmV0ID0gc2VtYXBob3JlX3dhaXQobV9zZW1hcGhvcmUpOworICAg
IEFTU0VSVF9VTlVTRUQocmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTKTsKIH0KIAogdm9pZCBNYWNo
U2VtYXBob3JlOjp3YWl0Rm9yKFNlY29uZHMgdGltZW91dCkKIHsKICAgICBhdXRvIHNlY29uZHMg
PSB0aW1lb3V0LnNlY29uZHNBczx1bnNpZ25lZD4oKTsKLSAgICBzZW1hcGhvcmVfdGltZWR3YWl0
KG1fc2VtYXBob3JlLCB7IHNlY29uZHMsIHN0YXRpY19jYXN0PGNsb2NrX3Jlc190Pih0aW1lb3V0
Lm5hbm9zZWNvbmRzQXM8dWludDY0X3Q+KCkgLSBzZWNvbmRzICogTlNFQ19QRVJfU0VDKSB9KTsK
KyAgICBhdXRvIHJldCA9IHNlbWFwaG9yZV90aW1lZHdhaXQobV9zZW1hcGhvcmUsIHsgc2Vjb25k
cywgc3RhdGljX2Nhc3Q8Y2xvY2tfcmVzX3Q+KHRpbWVvdXQubmFub3NlY29uZHNBczx1aW50NjRf
dD4oKSAtIHNlY29uZHMgKiBOU0VDX1BFUl9TRUMpIH0pOworICAgIEFTU0VSVF9VTlVTRUQocmV0
LCByZXQgPT0gS0VSTl9TVUNDRVNTIHx8IHJldCA9PSBLRVJOX09QRVJBVElPTl9USU1FRF9PVVQp
OwogfQogCi1NYWNoU2VuZFJpZ2h0IE1hY2hTZW1hcGhvcmU6OmNyZWF0ZVNlbmRSaWdodCgpCitN
YWNoU2VuZFJpZ2h0IE1hY2hTZW1hcGhvcmU6OmNyZWF0ZVNlbmRSaWdodCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIE1hY2hTZW5kUmlnaHQ6OmNyZWF0ZShtX3NlbWFwaG9yZSk7CiB9CiAKK3ZvaWQg
TWFjaFNlbWFwaG9yZTo6ZGVzdHJveSgpCit7CisgICAgaWYgKG1fc2VuZFJpZ2h0KSB7CisgICAg
ICAgIG1fc2VuZFJpZ2h0ID0gTWFjaFNlbmRSaWdodCgpOworICAgICAgICBtX3NlbWFwaG9yZSA9
IFNFTUFQSE9SRV9OVUxMOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtX3NlbWFw
aG9yZSA9PSBTRU1BUEhPUkVfTlVMTCkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmV0ID0g
c2VtYXBob3JlX2Rlc3Ryb3kobWFjaF90YXNrX3NlbGYoKSwgbV9zZW1hcGhvcmUpOworICAgIEFT
U0VSVF9VTlVTRUQocmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTKTsKKyAgICBtX3NlbWFwaG9yZSA9
IFNFTUFQSE9SRV9OVUxMOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaCBiL1NvdXJjZS9XVEYvd3RmL2NvY29h
L01hY2hTZW1hcGhvcmUuaAppbmRleCBiZTdjZWEwNDZiODEyY2JjM2ViM2E3MjEzMGQ5YTViYTAw
OTNmOTJmLi40YjVkYjc0ZTcxNmMzMjhmNzdiMjYyZGI5ZDNiMGNjMTVjZDkwNzljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oCkBAIC0zNywxNiArMzcsMjAgQEAgY2xhc3MgTWFj
aFNlbWFwaG9yZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFjaFNlbWFwaG9yZSk7CiBw
dWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1hY2hTZW1hcGhvcmUoKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgTWFjaFNlbWFwaG9yZShNYWNoU2VtYXBob3JlJiYpOwogICAgIFdURl9F
WFBPUlRfUFJJVkFURSBleHBsaWNpdCBNYWNoU2VtYXBob3JlKE1hY2hTZW5kUmlnaHQmJik7CiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIH5NYWNoU2VtYXBob3JlKCk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIE1hY2hTZW1hcGhvcmUmIG9wZXJhdG9yPShNYWNoU2VtYXBob3JlJiYpOwogCiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2lnbmFsKCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgd2FpdCgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHdhaXRGb3IoU2Vjb25k
cyk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWFjaFNlbmRSaWdodCBjcmVhdGVTZW5kUmln
aHQoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWFjaFNlbmRSaWdodCBjcmVhdGVTZW5kUmln
aHQoKSBjb25zdDsKIAorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVy
biBtX3NlbmRSaWdodCB8fCBtX3NlbWFwaG9yZSAhPSBTRU1BUEhPUkVfTlVMTDsgfQogcHJpdmF0
ZToKKyAgICB2b2lkIGRlc3Ryb3koKTsKICAgICBNYWNoU2VuZFJpZ2h0IG1fc2VuZFJpZ2h0Owog
ICAgIHNlbWFwaG9yZV90IG1fc2VtYXBob3JlIHsgU0VNQVBIT1JFX05VTEwgfTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggOTAwNTY2OTRhNTMwMGRjM2E4YmZkZDFlZTMwZWMxNmJkOGViZGVhOC4uOWRm
OGQxNjIxZjM0MDVjZTljYjdkMjRjNzk5YTcwZThkMDA4ZTA2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAt
NDgsNyArNDgsNiBAQAogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCIKLSNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1lc3NhZ2VzLmgiCkBAIC0yOTEsMTAgKzI5MCwxOCBAQCBSZW1vdGVBdWRpb1Nlc3Np
b25Qcm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YXVkaW9TZXNzaW9uUHJveHkoKQog
fQogI2VuZGlmCiAKLXZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVy
aW5nQmFja2VuZChSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5n
QmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgLCBNYWNoU2VtYXBob3JlJiYgcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhv
cmUKKyNlbmRpZgorICAgICkKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZE1hcC5lbnN1cmUocGFyYW1ldGVycy5pZGVudGlmaWVyLCBbJl0oKSB7Ci0gICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyPihSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUocGFyYW1ldGVycykpKTsK
KyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcC5lbnN1cmUo
aWRlbnRpZmllciwgWyZdKCkgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kV3JhcHBlcj4oUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKCp0aGlz
LCBpZGVudGlmaWVyLCB7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgICAgICBXVEZNb3Zl
KHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQorI2VuZGlmCisgICAgICAgIH0pKTsKICAgICB9
KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKaW5kZXggNDQxOGNhNmFlYTJhNDA4ZTM3NzUzODkwZTFkMzBkZGVjNzZlYzdjYS4u
YjZhMjRjYjMyMGEzNjNlN2U5ZmVkZDQzZDI5MDYzNTk2NDk1MDYxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC02
NSw3ICs2NSw2IEBAIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOwogY2xhc3MgUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHk7CiBzdHJ1Y3QgUmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbjsKLXN0
cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAgICAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcywgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFp
bj4KQEAgLTEyNyw3ICsxMjYsMTEgQEAgcHJpdmF0ZToKICNlbmRpZgogI2VuZGlmCiAKLSAgICB2
b2lkIGNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9u
UGFyYW1ldGVycyYmKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGNyZWF0ZVJlbmRl
cmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIE1hY2hTZW1hcGhvcmUmJiBy
ZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSk7CisjZWxzZQorICAgIHZvaWQgY3JlYXRlUmVuZGVy
aW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisjZW5kaWYKICAgICB2b2lk
IHJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIAog
I2lmIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMGNiYzVk
ODc5ODNlNjY2ZTQ4ZTgzOWE2NDY0ODk4Nzk1MGEzOTJiZi4uMWU0OWIzM2VjZjZhNTMxNWMyYjFh
NDI5OGUyZDQxNzI1OTJkMmEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIz
LDcgKzIzLDEyIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiBtZXNzYWdlcyAtPiBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlzcGF0Y2hNZXNzYWdlIHsKLSAgICB2b2lkIENy
ZWF0ZVJlbmRlcmluZ0JhY2tlbmQoc3RydWN0IFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZENyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzKQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIE1hY2hTZW1hcGhvcmUgcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhv
cmUpCisjZW5kaWYKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBDcmVhdGVSZW5kZXJp
bmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgaWRlbnRpZmllcikK
KyNlbmRpZgogICAgIHZvaWQgUmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICNpZiBFTkFC
TEUoV0VCR0wpCiAgICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcAppbmRleCAzNzIwN2Q3ZmM3ODBiZmIzYTRiZDdjMWI0ZGNjMGU2NDg1
NWQ1NWU2Li5lZDkzMGNkNzk3MDkzNzY0MDY0ZjJmOGQ0ODFkMjljZWZjYzJmZTVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1S
ZW1vdGVJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIgotI2luY2x1ZGUgIlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5o
PgpAQCAtNjUsMTcgKzY0LDE3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCi1SZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQorUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyLCBQbGF0Zm9y
bUNyZWF0ZVBhcmFtcyYmIHBhcmFtcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURk1vdmUocGFy
YW1ldGVycykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGlkZW50aWZpZXIsIFdURk1vdmUocGFyYW1z
KSkpOwogfQogCi1SZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllciBpZGVudGlmaWVyLCBQbGF0Zm9ybUNyZWF0ZVBhcmFtcyYmIHBhcmFtcykKICAg
ICA6IG1fd29ya1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
IHdvcmsgcXVldWUiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OlVz
ZXJJbnRlcmFjdGl2ZSkpCiAgICAgLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcykKLSAgICAsIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIo
cGFyYW1ldGVycy5pZGVudGlmaWVyKQorICAgICwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cihpZGVudGlmaWVyKQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICwgbV9yZXN1bWVEaXNwbGF5
TGlzdFNlbWFwaG9yZShtYWtlVW5pcXVlPE1hY2hTZW1hcGhvcmU+KFdURk1vdmUocGFyYW1ldGVy
cy5zZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkpKQorICAgICwgbV9yZXN1
bWVEaXNwbGF5TGlzdFNlbWFwaG9yZShXVEZNb3ZlKHBhcmFtcy5yZXN1bWVEaXNwbGF5TGlzdFNl
bWFwaG9yZSkpCiAjZW5kaWYKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAt
MjI4LDcgKzIyNyw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5CiAKICAgICAgICAgICAgIGhh
bmRsZS5zdGFydFdhaXRpbmcoKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAgIG1f
cmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUtPndhaXRGb3IoMzBfdXMpOworICAgICAgICAgICAg
bV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZS53YWl0Rm9yKDMwX3VzKTsKICNlbHNlCiAgICAg
ICAgICAgICBzbGVlcCgzMF91cyk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IGU2
Mzg5OTAzYjY1MGJhOGQ5NzNkYWY5YjNkY2NhNjQ1MzU2ZjQ1ZjguLjgwYzNlMjQ0MjYyNjJiZDli
YTQ5NTE4OWZiZWZhNDMyZDFjODFkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtNDIsOSAr
NDIsNyBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkK
LW5hbWVzcGFjZSBXVEYgewotY2xhc3MgTWFjaFNlbWFwaG9yZTsKLX0KKyNpbmNsdWRlIDx3dGYv
Y29jb2EvTWFjaFNlbWFwaG9yZS5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTYyLDE0ICs2MCwxOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGU7CiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwotc3RydWN0IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQKICAgICA6IHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgLCBw
dWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIKICAgICAsIHB1
YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gY3JlYXRlKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJh
bWV0ZXJzJiYpOworICAgIHN0cnVjdCBQbGF0Zm9ybUNyZWF0ZVBhcmFtcyB7CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgICAgIE1hY2hTZW1hcGhvcmUgcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhv
cmU7CisjZW5kaWYKKyAgICB9OworICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZD4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciwgUGxhdGZvcm1DcmVhdGVQYXJhbXMmJik7CiAgICAgdmlydHVhbCB+UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCgpOwogCiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZSYgcmVtb3RlUmVzb3Vy
Y2VDYWNoZSgpIHsgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZTsgfQpAQCAtODYsNyArODgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAKIHByaXZhdGU6Ci0gICAgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciwgUGxhdGZvcm1DcmVhdGVQYXJhbXMmJik7CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikgb3ZlcnJpZGU7CiAKQEAgLTE0OSw3ICsx
NTEsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJJZGVudGlmaWVyLCBSZWZQdHI8RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU+PiBtX3NoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlczsKICAgICBPcHRpb25hbDxQZW5kaW5nV2FrZXVwSW5mb3JtYXRp
b24+IG1fcGVuZGluZ1dha2V1cEluZm87CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFdURjo6TWFjaFNlbWFwaG9yZT4gbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9y
ZTsKKyAgICBXVEY6Ok1hY2hTZW1hcGhvcmUgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsK
ICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAKaW5kZXggMGY4NDA3
YzFmM2RjNzg3YjUwZTliZjYwOTkxYWVlN2NiNDEwYjRmYS4uN2JhNDEwMDVlM2NlNWFiNzMzN2Ni
YjVhMjI0NjNhMjk5NDM5MjMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCkBA
IC01MSwxMCArNTEsMTUgQEAgY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbgogI2VuZGlmCiB7
CiBwdWJsaWM6CisgICAgc3RydWN0IFBsYXRmb3JtQ3JlYXRlUGFyYW1zIHsKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICAgICAgTWFjaFNlbWFwaG9yZSByZW5kZXJTZW1hcGhvcmU7CisjZW5kaWYK
KyAgICB9OwogICAgIHN0YXRpYyBSZWY8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4gY3JlYXRlKEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyIGlkZW50aWZpZXIsCi0gICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXREZXZp
Y2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91
dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUp
CisgICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1w
bGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIFBsYXRmb3JtQ3JlYXRlUGFyYW1zJiYg
cGFyYW1zKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbihjb25uZWN0aW9uLCBpZGVudGlmaWVyLCBpbnB1dERldmljZUlkLCBudW1iZXJP
ZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIGhhcmR3
YXJlU2FtcGxlUmF0ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uKGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIGlucHV0RGV2aWNlSWQsIG51bWJl
ck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFy
ZHdhcmVTYW1wbGVSYXRlLCBXVEZNb3ZlKHBhcmFtcykpKTsKICAgICB9CiAKICAgICB2aXJ0dWFs
IH5SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKCkgPSBkZWZhdWx0OwpAQCAtNjgsOCArNzMsNiBAQCBw
dWJsaWM6CiAgICAgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgTWFjaFNlbmRSaWdodCBj
cmVhdGVSZW5kZXJTZW1hcGhvcmVTZW5kUmlnaHQoKSB7IHJldHVybiBtX3JlbmRlclNlbWFwaG9y
ZS5jcmVhdGVTZW5kUmlnaHQoKTsgfQotCiAgICAgdm9pZCBhdWRpb1NhbXBsZXNTdG9yYWdlQ2hh
bmdlZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaXBjSGFuZGxlLCBjb25zdCBXZWJD
b3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1i
ZXJPZkZyYW1lcykKICAgICB7CiAgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWVSZWY8
V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFJlYWRPbmx5U2hhcmVkUmluZ0J1
ZmZlclN0b3JhZ2U+KGlwY0hhbmRsZS5oYW5kbGUpLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFt
ZXMpOwpAQCAtMTA0LDExICsxMDcsMTIgQEAgcHVibGljOgogICAgIGJvb2wgaXNQbGF5aW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KIAogcHJpdmF0ZToKLSAgICBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQs
IHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlKQorICAg
IFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5w
dXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBs
ZVJhdGUsIFBsYXRmb3JtQ3JlYXRlUGFyYW1zJiYgcGFyYW1zKQogICAgICAgICA6IG1faWQoaWRl
bnRpZmllcikKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgLCBtX2F1ZGlvT3V0cHV0VW5p
dEFkYXB0b3IoKnRoaXMpCiAgICAgICAgICwgbV9yaW5nQnVmZmVyKG1ha2VVbmlxdWVSZWY8V2Vi
Q29yZTo6Q0FSaW5nQnVmZmVyPigpKQorICAgICAgICAsIG1fcmVuZGVyU2VtYXBob3JlKFdURk1v
dmUocGFyYW1zLnJlbmRlclNlbWFwaG9yZSkpCiAjZW5kaWYKICAgICB7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCkBAIC0xNjIsMTkgKzE2NiwyMyBAQCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
cjo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoR1BVQ29ubmVjdGlvblRvV2ViUAogCiBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6flJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyKCkgPSBkZWZhdWx0OwogCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpj
cmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMy
X3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIENyZWF0aW9uQ29t
cGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBpbnB1
dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxl
UmF0ZSwKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBNYWNoU2VtYXBob3JlJiYgcmVuZGVyU2Vt
YXBob3JlLAorI2VuZGlmCisgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uRGVsYXllZFJlcGx5JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYXV0byBuZXdJRCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVy
OjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uID0gUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbjo6Y3JlYXRlKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgbmV3SUQs
IGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRlKTsKLSAgICBtX2F1ZGlvRGVzdGlu
YXRpb25zLmFkZChuZXdJRCwgZGVzdGluYXRpb24uY29weVJlZigpKTsKKyAgICBhdXRvIGRlc3Rp
bmF0aW9uID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKG1fZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcywgbmV3SUQsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRlLCB7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgY29tcGxldGlvbkhhbmRsZXIobmV3SUQsIGRlc3Rp
bmF0aW9uLT5jcmVhdGVSZW5kZXJTZW1hcGhvcmVTZW5kUmlnaHQoKSk7Ci0jZWxzZQotICAgIGNv
bXBsZXRpb25IYW5kbGVyKG5ld0lEKTsKKyAgICAgICAgV1RGTW92ZShyZW5kZXJTZW1hcGhvcmUp
CiAjZW5kaWYKKyAgICB9KTsKKyAgICBtX2F1ZGlvRGVzdGluYXRpb25zLmFkZChuZXdJRCwgZGVz
dGluYXRpb24uY29weVJlZigpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdJRCk7CiB9CiAK
LXZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmRlbGV0ZUF1ZGlvRGVzdGluYXRp
b24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcjo6ZGVsZXRlQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXI6OkRlbGV0ZUF1ZGlvRGVzdGluYXRpb25Bc3luY1JlcGx5JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgYXV0byBkZXN0aW5hdGlvbiA9IG1fYXVkaW9EZXN0aW5hdGlvbnMu
dGFrZShpZGVudGlmaWVyKTsKICAgICBpZiAoZGVzdGluYXRpb24pCkBAIC0xODIsNyArMTkwLDcg
QEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6ZGVsZXRlQXVkaW9EZXN0aW5h
dGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW8KICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQog
Ci12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdGFydEF1ZGlvRGVzdGluYXRp
b24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0YXJ0QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OlN0YXJ0QXVkaW9EZXN0aW5hdGlvbkFzeW5jUmVwbHkmJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBib29sIGlzUGxheWluZyA9IGZhbHNlOwogICAgIGlmIChhdXRv
KiBpdGVtID0gbV9hdWRpb0Rlc3RpbmF0aW9ucy5nZXQoaWRlbnRpZmllcikpIHsKQEAgLTE5Miw3
ICsyMDAsNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdGFydEF1ZGlv
RGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbgogICAgIGNvbXBsZXRpb25IYW5kbGVy
KGlzUGxheWluZyk7CiB9CiAKLXZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0
b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdG9wQXVkaW9EZXN0aW5hdGlv
bihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBNZXNzYWdlczo6
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlN0b3BBdWRpb0Rlc3RpbmF0aW9uQXN5bmNS
ZXBseSYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGJvb2wgaXNQbGF5aW5nID0gZmFsc2U7
CiAgICAgaWYgKGF1dG8qIGl0ZW0gPSBtX2F1ZGlvRGVzdGluYXRpb25zLmdldChpZGVudGlmaWVy
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaAppbmRleCBiODNmMjlmOGRjMTMzYTFhMmMz
YTg3NGJhNzMzYjU4MGIyNmU3NjJkLi43YjQwOTA5NDYyYmI5M2RjNmI3MGYyNWEwMTEwZWFkYjMz
OGY5NThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaApAQCAtMjksMTkgKzI5LDE5IEBA
CiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
ck1lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUg
PG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8d3RmL2NvY29h
L01hY2hTZW1hcGhvcmUuaD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CiB9Ci0KLW5hbWVz
cGFjZSBXVEYgewotY2xhc3MgTWFjaFNlbmRSaWdodDsKLX0KICNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTY0LDE0ICs2NCwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+Jik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB1c2luZyBD
cmVhdGlvbkNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgV1RGOjpNYWNoU2VuZFJpZ2h0KT47CisgICAgdm9p
ZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWlu
dDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsCisgICAgICAg
IE1hY2hTZW1hcGhvcmUmJiByZW5kZXJTZW1hcGhvcmUsIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbkRlbGF5ZWRSZXBseSYmKTsK
ICNlbHNlCi0gICAgdXNpbmcgQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIpPjsKKyAgICB2b2lk
IGNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50
MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwKKyAgICAgICAg
Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbkRlbGF5ZWRSZXBseSYmKTsKICNlbmRpZgotICAgIHZvaWQg
Y3JlYXRlQXVkaW9EZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQz
Ml90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCBDcmVhdGlvbkNv
bXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgZGVsZXRlQXVkaW9EZXN0aW5hdGlvbihSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKLSAgICB2b2lkIHN0YXJ0QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBz
dG9wQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBkZWxldGVBdWRpb0Rlc3Rp
bmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBNZXNzYWdlczo6UmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkRlbGV0ZUF1ZGlvRGVzdGluYXRpb25Bc3luY1JlcGx5
JiYpOworICAgIHZvaWQgc3RhcnRBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyLCBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlN0
YXJ0QXVkaW9EZXN0aW5hdGlvbkFzeW5jUmVwbHkmJik7CisgICAgdm9pZCBzdG9wQXVkaW9EZXN0
aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgTWVzc2FnZXM6OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpTdG9wQXVkaW9EZXN0aW5hdGlvbkFzeW5jUmVwbHkm
Jik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBhdWRpb1NhbXBsZXNTdG9yYWdlQ2hh
bmdlZChSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUmLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCB1
aW50NjRfdCBudW1iZXJPZkZyYW1lcyk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCA1NTc4OTg0NmQ3NGQ4NTc0YmJkYTFhYmRmMjcx
OGJkM2JhNWJjNGU0Li4wOGU2NjI4NDk4NTg3MTNlNDUzNjJkNWY0ZTdmNjE3NjIzY2IyMmJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNSwx
MCArMjUsMTAgQEAKIAogbWVzc2FnZXMgLT4gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIg
Tm90UmVmQ291bnRlZCB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgQ3JlYXRlQXVkaW9EZXN0
aW5hdGlvbihTdHJpbmcgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5u
ZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBm
bG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUpIC0+IChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyIGlkZW50aWZpZXIsIE1hY2hTZW5kUmlnaHQgcmVuZGVyU2VtYXBob3JlU2Vu
ZFJpZ2h0KSBTeW5jaHJvbm91cworICAgIENyZWF0ZUF1ZGlvRGVzdGluYXRpb24oU3RyaW5nIGlu
cHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVt
YmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1w
bGVSYXRlLCBNYWNoU2VtYXBob3JlIHJlbmRlclNlbWFwaG9yZSkgLT4gKFdlYktpdDo6UmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMKICNlbmRp
ZgogI2lmICFQTEFURk9STShDT0NPQSkKLSAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKFN0cmlu
ZyBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90
IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJl
U2FtcGxlUmF0ZSkgLT4gKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIg
aWRlbnRpZmllcikgU3luY2hyb25vdXMKKyAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKCkgLT4g
KFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgU3lu
Y2hyb25vdXMKICNlbmRpZgogCiAgICAgRGVsZXRlQXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+ICgpIEFzeW5jCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBlYzhiY2YwODdkZjE2
ZGY2MGRiZTAwODBlNGNlYjA2MWQxNzY4ZmY3Li42ZDcwZjUyNzUzMWM4NGU2YTg4NThmYzFiY2Rj
YjJjNDVlNWM2ZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
QEAgLTI1NSw2ICsyNTUsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNs
YXJlZCgpOgogICAgICAgICAnSVBDOjpEYXRhUmVmZXJlbmNlJywKICAgICAgICAgJ0lQQzo6Rm9u
dFJlZmVyZW5jZScsCiAgICAgICAgICdNYWNoU2VuZFJpZ2h0JywKKyAgICAgICAgJ01hY2hTZW1h
cGhvcmUnLAogICAgICAgICAnTWVkaWFUaW1lJywKICAgICAgICAgJ1N0cmluZycsCiAgICAgICAg
ICdXZWJDb3JlOjpDb2xvclNwYWNlJywKQEAgLTM1NCw2ICszNTUsNyBAQCBkZWYgZm9yd2FyZF9k
ZWNsYXJhdGlvbnNfYW5kX2hlYWRlcnMocmVjZWl2ZXIpOgogCiAgICAgbm9uX3RlbXBsYXRlX3d0
Zl90eXBlcyA9IGZyb3plbnNldChbCiAgICAgICAgICdNYWNoU2VuZFJpZ2h0JywKKyAgICAgICAg
J01hY2hTZW1hcGhvcmUnLAogICAgICAgICAnTWVkaWFUeXBlJywKICAgICAgICAgJ1N0cmluZycs
CiAgICAgXSkKQEAgLTQwOSw2ICs0MTEsNyBAQCBkZWYgZm9yd2FyZF9kZWNsYXJhdGlvbnNfYW5k
X2hlYWRlcnNfZm9yX3JlcGxpZXMocmVjZWl2ZXIpOgogCiAgICAgbm9uX3RlbXBsYXRlX3d0Zl90
eXBlcyA9IGZyb3plbnNldChbCiAgICAgICAgICdNYWNoU2VuZFJpZ2h0JywKKyAgICAgICAgJ01h
Y2hTZW1hcGhvcmUnLAogICAgICAgICAnTWVkaWFUaW1lJywKICAgICAgICAgJ1N0cmluZycsCiAg
ICAgXSkKQEAgLTYzOSw2ICs2NDIsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKIAog
ICAgIHNwZWNpYWxfY2FzZXMgPSB7CiAgICAgICAgICdNYWNoU2VuZFJpZ2h0JzogWyc8d3RmL01h
Y2hTZW5kUmlnaHQuaD4nXSwKKyAgICAgICAgJ01hY2hTZW1hcGhvcmUnOiBbJzx3dGYvY29jb2Ev
TWFjaFNlbWFwaG9yZS5oPiddLAogICAgICAgICAnSlNDOjpNZXNzYWdlTGV2ZWwnOiBbJzxKYXZh
U2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4nXSwKICAgICAgICAgJ0pTQzo6TWVzc2FnZVNvdXJj
ZSc6IFsnPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPiddLAogICAgICAgICAnSW5zcGVj
dG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlJzogWyc8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVGFy
Z2V0Lmg+J10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzX3VuaXR0ZXN0LnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191
bml0dGVzdC5weQppbmRleCA2ZWM2ZWI0ZGE1NTc3M2ZjZWQ2M2QzODIyMzNjMzI1ODE5YTlhM2Mz
Li5hZGViODVmOTBiM2Y0ZDU5YmI3M2Y0MTYyZTA2ODFhOWY2NzY5MjUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHkKQEAgLTM5LDcg
KzM5LDcgQEAgdGVzdHNfZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKG1vZHVsZV9kaXJlY3Rvcnks
ICd0ZXN0cycpCiAKIHJlc2V0X3Jlc3VsdHMgPSBGYWxzZQogCi1fdGVzdF9yZWNlaXZlcl9uYW1l
cyA9IFsnVGVzdFdpdGhTdXBlcmNsYXNzJywgJ1Rlc3RXaXRoTGVnYWN5UmVjZWl2ZXInLCAnVGVz
dFdpdGhvdXRBdHRyaWJ1dGVzJywgJ1Rlc3RXaXRoSWZNZXNzYWdlJ10KK190ZXN0X3JlY2VpdmVy
X25hbWVzID0gWydUZXN0V2l0aFN1cGVyY2xhc3MnLCAnVGVzdFdpdGhMZWdhY3lSZWNlaXZlcics
ICdUZXN0V2l0aG91dEF0dHJpYnV0ZXMnLCAnVGVzdFdpdGhJZk1lc3NhZ2UnLCAnVGVzdFdpdGhN
YWNoU2VtYXBob3JlJ10KIAogCiBkZWYgcmVjZWl2ZXJfaGVhZGVyX2ZpbGVfbmFtZShyZWNlaXZl
cl9uYW1lKToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
TWFrZWZpbGUgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlCmlu
ZGV4IDg3OTZmZmJjNWEzZjg3YjkyM2VkNmM5ODAyMzkxYTg3NmJhYzM4MmUuLjM5YWYxM2NlNzAy
YTU4MzdkYzg3MTI1YzdjNTJjZDI3YjJhNzdlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdHMvTWFrZWZpbGUKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9NYWtlZmlsZQpAQCAtMSwyICsxLDIgQEAKIGFsbDoKLQlweXRob24gLi4v
Li4vZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weSAuIFRlc3RXaXRoU3VwZXJjbGFzcyBUZXN0
V2l0aExlZ2FjeVJlY2VpdmVyIFRlc3RXaXRob3V0QXR0cmlidXRlcyBUZXN0V2l0aElmTWVzc2Fn
ZQorCXB5dGhvbiAuLi8uLi9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5IC4gVGVzdFdpdGhT
dXBlcmNsYXNzIFRlc3RXaXRoTGVnYWN5UmVjZWl2ZXIgVGVzdFdpdGhvdXRBdHRyaWJ1dGVzIFRl
c3RXaXRoSWZNZXNzYWdlIFRlc3RXaXRoTWFjaFNlbWFwaG9yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMu
Y3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJndW1lbnRE
ZXNjcmlwdGlvbnMuY3BwCmluZGV4IDU5NDA0NDM5MGNhZGFjMmZmMGNkZmFhOWUzMDUwNDQyNzc4
MzgwZmUuLjgzYzVkMGNiMzMyMjJiYjFhNmZiNzM0NTRkNDA3OWRkNjJlNGNjNjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFyZ3VtZW50RGVz
Y3JpcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01l
c3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNlbmRpZgog
I2luY2x1ZGUgIlRlc3RXaXRoSWZNZXNzYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJUZXN0V2l0aE1hY2hTZW1hcGhv
cmVNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlRlc3RXaXRoU3VwZXJjbGFzc01lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiVGVzdFdpdGhvdXRBdHRyaWJ1dGVzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCIKQEAgLTY1LDYgKzY2LDkgQEAKICNlbmRpZgogI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpZiBQTEFURk9STShD
T0NPQSkKKyNpbmNsdWRlIDx3dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oPgorI2VuZGlmCiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtMjE1LDYg
KzIxOSwxMiBAQCBPcHRpb25hbDxKU0M6OkpTVmFsdWU+IGpzVmFsdWVGb3JBcmd1bWVudHMoSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBNZQogI2lmIFBMQVRGT1JNKEdUSykKICAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aElmTWVzc2FnZV9Mb2FkVVJMOgogICAgICAgICBy
ZXR1cm4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudHM8TWVzc2FnZXM6OlRlc3RXaXRoSWZNZXNz
YWdlOjpMb2FkVVJMOjpBcmd1bWVudHM+KGdsb2JhbE9iamVjdCwgZGVjb2Rlcik7CisjZW5kaWYK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aE1hY2hT
ZW1hcGhvcmVfU2VuZFNlbWFwaG9yZToKKyAgICAgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVk
QXJndW1lbnRzPE1lc3NhZ2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6OlNlbmRTZW1hcGhvcmU6
OkFyZ3VtZW50cz4oZ2xvYmFsT2JqZWN0LCBkZWNvZGVyKTsKKyAgICBjYXNlIE1lc3NhZ2VOYW1l
OjpUZXN0V2l0aE1hY2hTZW1hcGhvcmVfUmVjZWl2ZVNlbWFwaG9yZToKKyAgICAgICAgcmV0dXJu
IGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRzPE1lc3NhZ2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhv
cmU6OlJlY2VpdmVTZW1hcGhvcmU6OkFyZ3VtZW50cz4oZ2xvYmFsT2JqZWN0LCBkZWNvZGVyKTsK
ICNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNTE2LDYgKzUyNiwxNCBA
QCBPcHRpb25hbDxWZWN0b3I8QXJndW1lbnREZXNjcmlwdGlvbj4+IG1lc3NhZ2VBcmd1bWVudERl
c2NyaXB0aW9ucyhNZXNzYWdlTmFtZSBuYQogICAgICAgICAgICAgeyJ1cmwiLCAiU3RyaW5nIiwg
bnVsbHB0ciwgZmFsc2V9LAogICAgICAgICAgICAgeyJ2YWx1ZSIsICJpbnQ2NF90IiwgbnVsbHB0
ciwgZmFsc2V9LAogICAgICAgICB9OworI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3JlX1NlbmRTZW1hcGhvcmU6Cisg
ICAgICAgIHJldHVybiBWZWN0b3I8QXJndW1lbnREZXNjcmlwdGlvbj4geworICAgICAgICAgICAg
eyJzMCIsICJNYWNoU2VtYXBob3JlIiwgbnVsbHB0ciwgZmFsc2V9LAorICAgICAgICB9OworICAg
IGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9SZWNlaXZlU2VtYXBob3Jl
OgorICAgICAgICByZXR1cm4gVmVjdG9yPEFyZ3VtZW50RGVzY3JpcHRpb24+IHsgfTsKICNlbmRp
ZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCmluZGV4IDc2ZmFkMzdjNTQ2MGFk
YmNmZWEzNzJkMTg2NjU1MGZhN2M4YTg1MTMuLjk4Y2UzMmQ5NTVlNzk2MzhjMjNlMjViZjczODEz
MDc2YTI4MjRmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvTWVzc2FnZU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3RzL01lc3NhZ2VOYW1lcy5jcHAKQEAgLTcyLDYgKzcyLDEwIEBAIGNvbnN0IGNoYXIqIGRlc2Ny
aXB0aW9uKE1lc3NhZ2VOYW1lIG5hbWUpCiAgICAgICAgIHJldHVybiAiVGVzdFdpdGhMZWdhY3lS
ZWNlaXZlcl9UZXN0UGFyYW1ldGVyQXR0cmlidXRlcyI7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6
VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9Ub3VjaEV2ZW50OgogICAgICAgICByZXR1cm4gIlRlc3RX
aXRoTGVnYWN5UmVjZWl2ZXJfVG91Y2hFdmVudCI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVz
dFdpdGhNYWNoU2VtYXBob3JlX1JlY2VpdmVTZW1hcGhvcmU6CisgICAgICAgIHJldHVybiAiVGVz
dFdpdGhNYWNoU2VtYXBob3JlX1JlY2VpdmVTZW1hcGhvcmUiOworICAgIGNhc2UgTWVzc2FnZU5h
bWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9TZW5kU2VtYXBob3JlOgorICAgICAgICByZXR1cm4g
IlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9TZW5kU2VtYXBob3JlIjsKICAgICBjYXNlIE1lc3NhZ2VO
YW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfTG9hZFVSTDoKICAgICAgICAgcmV0dXJuICJUZXN0V2l0
aFN1cGVyY2xhc3NfTG9hZFVSTCI7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBl
cmNsYXNzX1Rlc3RBc3luY01lc3NhZ2U6CkBAIC0xODEsNiArMTg1LDkgQEAgUmVjZWl2ZXJOYW1l
IHJlY2VpdmVyTmFtZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKICAgICBjYXNlIE1lc3NhZ2VO
YW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1Rlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOgogICAg
IGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVG91Y2hFdmVudDoKICAg
ICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjsKKyAgICBj
YXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmVfUmVjZWl2ZVNlbWFwaG9yZToK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmVfU2VuZFNlbWFwaG9y
ZToKKyAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3JlOwog
ICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19Mb2FkVVJMOgogICAgIGNh
c2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlOgogICAg
IGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlV2l0
aENvbm5lY3Rpb246CkBAIC0yOTgsNiArMzA1LDE0IEBAIGJvb2wgaXNWYWxpZE1lc3NhZ2VOYW1l
KE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAo
TkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04p
KQogICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2Fj
eVJlY2VpdmVyX1RvdWNoRXZlbnQpCiAgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6
OlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChtZXNzYWdlTmFtZSA9
PSBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmVfU2VuZFNlbWFwaG9yZSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKICAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBD
OjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX0xvYWRVUkwpCiAgICAgICAgIHJldHVy
biB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9N
ZXNzYWdlTmFtZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2Fn
ZU5hbWVzLmgKaW5kZXggMjNmNzU2MDg3ZDY4M2FkMjJiMDY4ZTJhNzFmZDk1YTBmM2NlNTU1ZS4u
ZmIwZDkxYmE4OGRjOGQ2OGVmNWJlNzRhMmIyYTIzZjJkNDMzMzEzNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCkBAIC0zMSwxMSAr
MzEsMTIgQEAgbmFtZXNwYWNlIElQQyB7CiBlbnVtIGNsYXNzIFJlY2VpdmVyTmFtZSA6IHVpbnQ4
X3QgewogICAgIFRlc3RXaXRoSWZNZXNzYWdlID0gMQogICAgICwgVGVzdFdpdGhMZWdhY3lSZWNl
aXZlciA9IDIKLSAgICAsIFRlc3RXaXRoU3VwZXJjbGFzcyA9IDMKLSAgICAsIFRlc3RXaXRob3V0
QXR0cmlidXRlcyA9IDQKLSAgICAsIElQQyA9IDUKLSAgICAsIEFzeW5jUmVwbHkgPSA2Ci0gICAg
LCBJbnZhbGlkID0gNworICAgICwgVGVzdFdpdGhNYWNoU2VtYXBob3JlID0gMworICAgICwgVGVz
dFdpdGhTdXBlcmNsYXNzID0gNAorICAgICwgVGVzdFdpdGhvdXRBdHRyaWJ1dGVzID0gNQorICAg
ICwgSVBDID0gNgorICAgICwgQXN5bmNSZXBseSA9IDcKKyAgICAsIEludmFsaWQgPSA4CiB9Owog
CiBlbnVtIGNsYXNzIE1lc3NhZ2VOYW1lIDogdWludDE2X3QgewpAQCAtNjAsNiArNjEsOCBAQCBl
bnVtIGNsYXNzIE1lc3NhZ2VOYW1lIDogdWludDE2X3QgewogICAgICwgVGVzdFdpdGhMZWdhY3lS
ZWNlaXZlcl9UZW1wbGF0ZVRlc3QKICAgICAsIFRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVGVzdFBh
cmFtZXRlckF0dHJpYnV0ZXMKICAgICAsIFRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVG91Y2hFdmVu
dAorICAgICwgVGVzdFdpdGhNYWNoU2VtYXBob3JlX1JlY2VpdmVTZW1hcGhvcmUKKyAgICAsIFRl
c3RXaXRoTWFjaFNlbWFwaG9yZV9TZW5kU2VtYXBob3JlCiAgICAgLCBUZXN0V2l0aFN1cGVyY2xh
c3NfTG9hZFVSTAogICAgICwgVGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2UKICAg
ICAsIFRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlV2l0aENvbm5lY3Rpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNo
U2VtYXBob3JlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9UZXN0V2l0aE1hY2hTZW1hcGhvcmUubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQzNzg3Mjhm
OGE2ZmI0MjUyYTBjNWFlOWQxNWVkZmVhYjE1ZjljOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlLm1lc3Nh
Z2VzLmluCkBAIC0wLDAgKzEsMzAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisj
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
KyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworIyBUZXN0cyBzY2VuYXJpbyB3aGVyZSAjaWYnZWQgbWVzc2FnZSBzaG91bGQgZ2Vu
ZXJhdGUgaXNWYWxpZE1lc3NhZ2VOYW1lKCkgPT0gdHJ1ZSBmb3IKKyMgYm90aCBjYXNlcy4KK21l
c3NhZ2VzIC0+IFRlc3RXaXRoTWFjaFNlbWFwaG9yZSB7CisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgdm9pZCBTZW5kU2VtYXBob3JlKE1hY2hTZW1hcGhvcmUgczApCisgICAgdm9pZCBSZWNlaXZl
U2VtYXBob3JlKCkgLT4gKE1hY2hTZW1hcGhvcmUgcjApCisjZW5kaWYKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3Jl
TWVzc2FnZVJlY2VpdmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
VGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZVJlY2VpdmVyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNGVl
NDBjMzZhYWQ4M2Y5ZTcwMWQ4NmM4YWVjNzYzYTM3OGVhZTgwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhvcmVN
ZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhNYWNoU2VtYXBob3JlLmgiCisK
KyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgorI2luY2x1
ZGUgIlRlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2VzLmgiCisjaWYgUExBVEZPUk0oQ09DT0Ep
CisjaW5jbHVkZSA8d3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaD4KKyNlbmRpZgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKwordm9pZCBUZXN0V2l0aE1hY2hTZW1hcGhvcmU6OmRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQor
eworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RX
aXRoTWFjaFNlbWFwaG9yZTo6U2VuZFNlbWFwaG9yZTo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6
aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhNYWNoU2VtYXBob3JlOjpTZW5kU2VtYXBo
b3JlPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhNYWNoU2VtYXBob3JlOjpzZW5kU2VtYXBob3Jl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAgIFVOVVNFRF9QQVJBTShjb25u
ZWN0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKK3ZvaWQgVGVzdFdpdGhNYWNoU2VtYXBob3JlOjpkaWRSZWNlaXZlU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCit7CisgICAgYXV0
byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhNYWNoU2Vt
YXBob3JlOjpSZWNlaXZlU2VtYXBob3JlOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVN
ZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6OlJlY2VpdmVTZW1hcGhvcmU+
KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aE1hY2hTZW1hcGhvcmU6OnJl
Y2VpdmVTZW1hcGhvcmUpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgVU5V
U0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKKyAgICBV
TlVTRURfUEFSQU0ocmVwbHlFbmNvZGVyKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2VzLmggYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2Vz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjg1ODJjYjg3ZTJjMjNiODRlOTVjMDJlYzhhYjBhZjQ4OTg5MjA1OQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVz
dFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZXMuaApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRl
ICJUZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg+CisKKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsK
K25hbWVzcGFjZSBUZXN0V2l0aE1hY2hTZW1hcGhvcmUgeworCitzdGF0aWMgaW5saW5lIElQQzo6
UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUoKQoreworICAgIHJldHVybiBJUEM6OlJl
Y2VpdmVyTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3JlOworfQorCisjaWYgUExBVEZPUk0oQ09D
T0EpCitjbGFzcyBTZW5kU2VtYXBob3JlIHsKK3B1YmxpYzoKKyAgICB1c2luZyBBcmd1bWVudHMg
PSBzdGQ6OnR1cGxlPGNvbnN0IE1hY2hTZW1hcGhvcmUmPjsKKworICAgIHN0YXRpYyBJUEM6Ok1l
c3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aE1hY2hT
ZW1hcGhvcmVfU2VuZFNlbWFwaG9yZTsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IGZhbHNlOworCisgICAgZXhwbGljaXQgU2VuZFNlbWFwaG9yZShjb25zdCBNYWNoU2VtYXBob3Jl
JiBzMCkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhzMCkKKyAgICB7CisgICAgfQorCisgICAgY29u
c3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
YXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7
Cit9OworI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKK2NsYXNzIFJlY2VpdmVTZW1hcGhv
cmUgeworcHVibGljOgorICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKKworICAg
IHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1l
OjpUZXN0V2l0aE1hY2hTZW1hcGhvcmVfUmVjZWl2ZVNlbWFwaG9yZTsgfQorICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9IHRydWU7CisKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8
TWFjaFNlbWFwaG9yZSY+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxN
YWNoU2VtYXBob3JlPjsKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAg
IEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgVGVz
dFdpdGhNYWNoU2VtYXBob3JlCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhvcmVN
ZXNzYWdlc1JlcGxpZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVz
dFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZXNSZXBsaWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWU3MGM0YTEz
YmI3NmEzNjA1NzczYmUzYWE3YzdiZTFhMTlhNjEwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2Fn
ZXNSZXBsaWVzLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
KyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFRlc3RXaXRoTWFjaFNlbWFw
aG9yZSB7CisKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdpdGhNYWNoU2VtYXBob3JlCit9IC8vIG5h
bWVzcGFjZSBNZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCAyODE0ZThiNWVmMzJkNTAyNjU4
YmFiNWFlZjcxM2NmNjE0NzAyYjU3Li44MzVhNjQwOWJkODc3M2Q0MzRhMWQwMTEzNDJiMmNlZjE0
YzU5NTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJD
b3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtMzUsNiArMzUsNyBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9Gb250QXR0cmlidXRlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0NvcmVUZXh0U1BJLmg+CisjaW1wb3J0
IDx3dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICNpbXBvcnQgPFVJS2l0L1VJRm9udC5oPgpAQCAtNjUsNiArNjYsMTkgQEAgT3B0aW9uYWw8V2Vi
Q29yZTo6QXR0cmlidXRlZFN0cmluZz4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpBdHRyaWJ1dGVk
U3RyaW5nPjo6ZGUKICAgICByZXR1cm4geyB7IFdURk1vdmUoYXR0cmlidXRlZFN0cmluZyksIFdU
Rk1vdmUoZG9jdW1lbnRBdHRyaWJ1dGVzKSB9IH07CiB9CiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxX
VEY6Ok1hY2hTZW1hcGhvcmU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV1RGOjpN
YWNoU2VtYXBob3JlJiBzZW1hcGhvcmUpCit7CisgICAgZW5jb2RlciA8PCBzZW1hcGhvcmUuY3Jl
YXRlU2VuZFJpZ2h0KCk7Cit9CisKK09wdGlvbmFsPE1hY2hTZW1hcGhvcmU+IEFyZ3VtZW50Q29k
ZXI8V1RGOjpNYWNoU2VtYXBob3JlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAg
TWFjaFNlbmRSaWdodCBzZW5kUmlnaHQ7CisgICAgaWYgKGRlY29kZXIuZGVjb2RlKHNlbmRSaWdo
dCkpCisgICAgICAgIHJldHVybiBPcHRpb25hbDxXVEY6Ok1hY2hTZW1hcGhvcmU+IHsgc3RkOjpp
bl9wbGFjZSwgV1RGTW92ZShzZW5kUmlnaHQpIH07CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
K30KKwogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKICNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1F
TlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZENyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBkN2I1YTc2YWYyNTIwYzllNzIwMTA2ODA4YTkzNGZkMTk3ODk5ZDI0Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
LmgiCi0jaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLXN0cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIHsKLSAg
ICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyOwotI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1h
cGhvcmU7Ci0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0
aW9uYWw8UmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycz4gZGVjb2RlKERl
Y29kZXImKTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEVuY29kZXI+Ci12b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAotewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcjsKLSNpZiBQTEFURk9STShDT0NPQSkK
LSAgICBlbmNvZGVyIDw8IHNlbmRSaWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOwot
I2VuZGlmCi19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0KLSAgICBPcHRp
b25hbDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcj4gaWRlbnRpZmllcjsKLSAgICBkZWNvZGVy
ID4+IGlkZW50aWZpZXI7Ci0gICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotCi0gICAgcGFyYW1ldGVycy5pZGVudGlmaWVyID0gKmlkZW50aWZpZXI7Ci0K
LSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBPcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmln
aHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKLSAgICBkZWNvZGVyID4+IHNlbmRSaWdo
dEZvclJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOwotICAgIGlmICghc2VuZFJpZ2h0Rm9yUmVz
dW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICBwYXJhbWV0ZXJzLnNlbmRSaWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlID0g
V1RGTW92ZSgqc2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpOwotI2VuZGlm
Ci0KLSAgICByZXR1cm4gcGFyYW1ldGVyczsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
LSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGZhOTZjZGE4NGVjYjdkNDg4YWU0MjkxMzNjMGY1
YjQ0MzcwNDhkYjEuLjUwODIxZDFkYjczODBlMTA2NGUxOWViYjBkOGUzZjdjZGM2YWJhY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC04MSw2
ICs4MSw3IEBACiAjaWYgUExBVEZPUk0oQ09DT0EpCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1h
Y2hTZW5kUmlnaHQ7CitjbGFzcyBNYWNoU2VtYXBob3JlOwogfQogI2VuZGlmCiAKQEAgLTQ4Nyw2
ICs0ODgsMTAgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxDR0FmZmluZVRyYW5z
Zm9ybT4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgQ0dBZmZpbmVUcmFuc2Zv
cm0pOwogICAgIHN0YXRpYyBPcHRpb25hbDxDR0FmZmluZVRyYW5zZm9ybT4gZGVjb2RlKERlY29k
ZXImKTsKIH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdURjo6TWFjaFNlbWFw
aG9yZT4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV1RGOjpNYWNo
U2VtYXBob3JlJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdURjo6TWFjaFNlbWFwaG9yZT4gZGVj
b2RlKERlY29kZXImKTsKK307CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBm
YTAzZGM4NTE0MDAzODU4MjYxNzUzZGVjY2Y5NTc3N2ExYWJjZWExLi4yNGIxMzJiMjIzZjk5Mzg5
MGZhYTEwOTU4ZTZiZmU3MDE0MTIxM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE5NjgsNyArMTk2OCw2IEBACiAJCUY0MkQ2MzQx
MjJBMEVGREYwMEQyRkIzQSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MkQ2MzNGMjJBMEVGRDMwMEQyRkIz
QSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEuaCAqLzsgfTsKIAkJRjQzMEU5NDIyMjQ3MzM1RjAw
NUZFMDUzIC8qIFdlYnNpdGVNZXRhVmlld3BvcnRQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzBFOTQxMjI0NzMyQTkwMDVGRTA1MyAvKiBX
ZWJzaXRlTWV0YVZpZXdwb3J0UG9saWN5LmggKi87IH07CiAJCUY0MzBFOTQ0MjI0NzNERkYwMDVG
RTA1MyAvKiBXZWJDb250ZW50TW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQzMEU5NDMyMjQ3M0RCODAwNUZFMDUzIC8qIFdlYkNvbnRlbnRNb2Rl
LmggKi87IH07Ci0JCUY0MzdDOEQ5MjU5M0I3RTMwMERCOEExQyAvKiBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNDM3QzhEODI1OTNCN0UzMDBEQjhBMUMgLyogUmVtb3RlUmVuZGVy
aW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oICovOyB9OwogCQlGNDM4Q0QxQzIyNDE0MjE0
MDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzhDRDFCMjI0MTQwQTYwMERFNkREQSAvKiBXS1dl
YnBhZ2VQcmVmZXJlbmNlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywg
KTsgfTsgfTsKIAkJRjQzOENEMUYyMjQxNEQ0MDAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVu
Y2VzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0MzhDRDFFMjI0MTRENDAwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlc0ludGVy
bmFsLmggKi87IH07CiAJCUY0MzhDRDIxMjI0MUY2OTUwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVm
ZXJlbmNlc1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0MzhDRDIwMjI0MUY2OTUwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlc1By
aXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtNTc4Niw3ICs1Nzg1LDYgQEAKIAkJRjQyRDYzNDAyMkEwRUZEMzAwRDJGQjNBIC8qIFdlYkF1
dG9jb3JyZWN0aW9uRGF0YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbTsgcGF0aCA9IGlvcy9XZWJBdXRvY29ycmVjdGlv
bkRhdGEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzBFOTQxMjI0NzMyQTkw
MDVGRTA1MyAvKiBXZWJzaXRlTWV0YVZpZXdwb3J0UG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YnNpdGVNZXRhVmlld3BvcnRQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjQzMEU5NDMyMjQ3M0RCODAwNUZFMDUzIC8qIFdlYkNvbnRlbnRNb2RlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkNvbnRlbnRNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUY0MzdD
OEQ4MjU5M0I3RTMwMERCOEExQyAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJh
bWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBh
cmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzOENEMUIyMjQxNDBB
NjAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vi
cGFnZVByZWZlcmVuY2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzhDRDFE
MjI0MTRBRDYwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlcy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdLV2VicGFnZVByZWZlcmVuY2VzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNDM4Q0QxRTIyNDE0RDQwMDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXNJ
bnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYnBhZ2VQcmVmZXJlbmNlc0ludGVybmFsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NTI1LDcgKzY1MjMsNiBAQAogCQkJCUUx
Q0MxQjhFMTJEN0VBREYwMDYyNTgzOCAvKiBQcmludEluZm8uaCAqLywKIAkJCQk0NjNGRDQ4MTFF
Qjk0RUFEMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggKi8sCiAJCQkJOUIx
MjI5RDAyM0ZGMkE1RTAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVy
LmggKi8sCi0JCQkJRjQzN0M4RDgyNTkzQjdFMzAwREI4QTFDIC8qIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCAqLywKIAkJCQk1Q0I3QUZFNjIzQzY4MUIwMDBFNDlD
RjMgLyogUmVzb3VyY2VMb2FkSW5mby5oICovLAogCQkJCTVDMDA5OTNCMjQxN0ZCN0UwMEQ1M0My
NSAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oICovLAogCQkJCTQxMDQ4MkNC
MURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmNwcCAqLywKQEAgLTExODcwLDcgKzExODY3
LDYgQEAKIAkJCQkxQTU3MDRGQzFCRTE3NTExMDA4NzRBRjEgLyogUmVtb3RlT2JqZWN0SW52b2Nh
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDMTMzODAxODU5MEFFNDAwRjNFQzA1IC8qIFJl
bW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUMxMzM4NjE4NTkwQzQ2
MDBGM0VDMDUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJRjQzN0M4RDkyNTkzQjdFMzAwREI4QTFDIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRD
cmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTk0NzkwMTg3QjNCM0Ew
MDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY1OTQ3QTgxODdCNTE3NjAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTk0NzlCMTg3QjNCNjAwMDQzNzg1NyAv
KiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCA2MWI0YzgyNDk1NzZkZTEy
OGE5YWJlZDA5MjdmNDFlZTQxNjJiZTZlLi5jMWUzNmNlZGExZDIzN2M2YTg5NWM4NTE3NmZhNTY0
YTJmZTlhOGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBA
IC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgog
I2luY2x1ZGUgIkltYWdlRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eS5oIgotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVh
dGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgpAQCAtNjcsMTIgKzY2LDExIEBAIHZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNzKCkKICAgICBhdXRvJiBj
b25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24oKTsKICAgICBjb25uZWN0aW9uLmFkZENsaWVudCgqdGhpcyk7CiAgICAgY29ubmVjdGlv
bi5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVSZW5kZXJpbmdCYWNrZW5kKHsKLSAg
ICAgICAgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwKKyAgICBzZW5kKE1lc3NhZ2VzOjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVSZW5kZXJpbmdCYWNrZW5kKG1fcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgbV9yZXN1
bWVEaXNwbGF5TGlzdFNlbWFwaG9yZS5jcmVhdGVTZW5kUmlnaHQoKSwKKyAgICAgICAgLCBtX3Jl
c3VtZURpc3BsYXlMaXN0U2VtYXBob3JlCiAjZW5kaWYKLSAgICB9KSwgMCk7CisgICAgKSwgMCk7
CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWVzdGFibGlzaEdQVVBy
b2Nlc3NDb25uZWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAppbmRl
eCAzNGUzMGNlMTE5MzYwYzkzMGMyYjA3ZTljMzA4YTFiNjQwZWQwYTNlLi5lMDA3NGU5MTczMzZh
YjI0ZmU1Y2I1Njk5NjJmZDEwNGI4NjZiZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkuY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZm
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dlYkF1ZGlvQnVmZmVyTGlzdC5oPgogI2luY2x1ZGUg
PG1hY2gvbWFjaF90aW1lLmg+Ci0jaW5jbHVkZSA8d3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaD4K
ICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTgwLDcgKzc5LDcgQEAgdm9pZCBSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0YXJ0UmVuZGVyaW5nVGhyZWFkKCkKIAogICAgIGF1
dG8gb2ZmVGhyZWFkUmVuZGVyaW5nID0gW3RoaXNdKCkgbXV0YWJsZSB7CiAgICAgICAgIGRvIHsK
LSAgICAgICAgICAgIG1fcmVuZGVyU2VtYXBob3JlLT53YWl0KCk7CisgICAgICAgICAgICBtX3Jl
bmRlclNlbWFwaG9yZS53YWl0KCk7CiAgICAgICAgICAgICBpZiAobV9zaG91bGRTdG9wVGhyZWFk
KQogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC05OCw4ICs5Nyw3IEBAIHZvaWQgUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5OjpzdG9wUmVuZGVyaW5nVGhyZWFkKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgbV9zaG91bGRTdG9wVGhyZWFkID0gdHJ1ZTsKLSAgICBpZiAobV9yZW5kZXJT
ZW1hcGhvcmUpCi0gICAgICAgIG1fcmVuZGVyU2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICBtX3Jl
bmRlclNlbWFwaG9yZS5zaWduYWwoKTsKICAgICBtX3JlbmRlclRocmVhZC0+d2FpdEZvckNvbXBs
ZXRpb24oKTsKICAgICBtX3JlbmRlclRocmVhZCA9IG51bGxwdHI7CiAjZW5kaWYKQEAgLTEwNywy
MCArMTA1LDE0IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpzdG9wUmVuZGVy
aW5nVGhyZWFkKCkKIAogdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RU
b0dQVVByb2Nlc3MoKQogewotICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGRl
c3RpbmF0aW9uSUQ7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgTWFjaFNlbmRSaWdodCByZW5k
ZXJTZW1hcGhvcmVTZW5kUmlnaHQ7Ci0jZW5kaWYKLQogICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogICAg
IGNvbm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlzKTsKICAgICBhdXRvIGRpZFN1Y2NlZWQgPSBjb25u
ZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kU3luYygKLSAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKG1faW5wdXREZXZp
Y2VJZCwgbV9udW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSwg
c2FtcGxlUmF0ZSgpLCBoYXJkd2FyZVNhbXBsZVJhdGUoKSksCi0gICAgICAgIE1lc3NhZ2VzOjpS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbjo6UmVw
bHkoZGVzdGluYXRpb25JRAorICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb24obV9pbnB1dERldmljZUlkLCBtX251bWJl
ck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscygpLCBzYW1wbGVSYXRlKCks
IGhhcmR3YXJlU2FtcGxlUmF0ZSgpCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgICAgICAs
IHJlbmRlclNlbWFwaG9yZVNlbmRSaWdodAorICAgICAgICAgICAgLCBtX3JlbmRlclNlbWFwaG9y
ZQogI2VuZGlmCi0gICAgICAgICksIDApOworICAgICAgICAgICAgKSwgTWVzc2FnZXM6OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZXBseSht
X2Rlc3RpbmF0aW9uSUQpLCAwKTsKIAogICAgIGlmICghZGlkU3VjY2VlZCkgewogICAgICAgICAv
LyBUaGUgR1BVUHJvY2VzcyBsaWtlbHkgY3Jhc2hlZCBkdXJpbmcgdGhpcyBzeW5jaHJvbm91cyBJ
UEMuIGdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoKSB3aWxsIGdldCBjYWxsZWQgdG8gcmVj
b25uZWN0IHRvIHRoZSBHUFVQcm9jZXNzLgpAQCAtMTI4LDcgKzEyMCw2IEBAIHZvaWQgUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNzKCkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG1fZGVzdGluYXRpb25JRCA9IGRlc3RpbmF0aW9uSUQ7CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBtX2N1cnJlbnRGcmFtZSA9IDA7CkBAIC0xMzYsNyArMTI3
LDYgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nl
c3MoKQogICAgIGdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQpOwog
ICAgIG1fcmluZ0J1ZmZlci0+YWxsb2NhdGUoc3RyZWFtRm9ybWF0LCBtX251bWJlck9mRnJhbWVz
KTsKICAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6V2ViQXVkaW9C
dWZmZXJMaXN0PihzdHJlYW1Gb3JtYXQpOwotICAgIG1fcmVuZGVyU2VtYXBob3JlID0gbWFrZVVu
aXF1ZTxNYWNoU2VtYXBob3JlPihXVEZNb3ZlKHJlbmRlclNlbWFwaG9yZVNlbmRSaWdodCkpOwog
I2VuZGlmCiAKICAgICBzdGFydFJlbmRlcmluZ1RocmVhZCgpOwpAQCAtMjA1LDkgKzE5NSw3IEBA
IHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRp
ZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0CiAgICAgb2xkQ29ubmVjdGlvbi5yZW1vdmVDbGllbnQo
KnRoaXMpOwogCiAgICAgc3RvcFJlbmRlcmluZ1RocmVhZCgpOwotI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgIG1fcmVuZGVyU2VtYXBob3JlID0gbnVsbHB0cjsKLSNlbmRpZgorCiAgICAgY29ubmVj
dFRvR1BVUHJvY2VzcygpOwogCiAgICAgaWYgKGlzUGxheWluZygpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5LmgKaW5kZXggOGQyYzYzZWI5YzU1ZmI4YjJhYzU0YmFhZGU4ZjczY2U1ZDVi
MWNjNS4uYWY2MzZmZjM2NjQ5YzI0MDA2MjMyNGFhZWFhMjBmMTdkMTU4MGZmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCkBAIC0zOCw2ICszOCw4IEBACiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAjaW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgorI2luY2x1ZGUgPHd0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg+CiAjZWxzZQogI2luY2x1ZGUg
PFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oPgogI2VuZGlmCkBAIC00NywxMSAr
NDksNyBAQCBjbGFzcyBDQVJpbmdCdWZmZXI7CiBjbGFzcyBXZWJBdWRpb0J1ZmZlckxpc3Q7CiB9
CiAKLW5hbWVzcGFjZSBXVEYgewotI2lmIFBMQVRGT1JNKENPQ09BKQotY2xhc3MgTWFjaFNlbWFw
aG9yZTsKLSNlbmRpZgotfQorCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0xMDQsNyArMTAy
LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB1aW50NjRfdCBtX251bWJl
ck9mRnJhbWVzIHsgMCB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDQVJpbmdCdWZm
ZXI+IG1fcmluZ0J1ZmZlcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpNYWNoU2VtYXBob3Jl
PiBtX3JlbmRlclNlbWFwaG9yZTsKKyAgICBNYWNoU2VtYXBob3JlIG1fcmVuZGVyU2VtYXBob3Jl
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q+IG1fYXVk
aW9CdWZmZXJMaXN0OwogICAgIHVpbnQ2NF90IG1fY3VycmVudEZyYW1lIHsgMCB9OwogICAgIGZs
b2F0IG1fc2FtcGxlUmF0ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418403</attachid>
            <date>2021-01-26 05:39:52 -0800</date>
            <delta_ts>2021-01-26 05:46:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220919-20210126153950.patch</filename>
            <type>text/plain</type>
            <size>65283</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRjZDQwMzEzYzI0MGZiMjllYjFlMTFj
MjQ2MTBjODY0YjAxMzc1NGQuLmYzNTI1MDE0ZmI2NmE4NGZmMDEzYzQzNGYxZTdhOTFjMmRkNGE5
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMDEtMjYgIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNYWNoU2VtYXBob3JlIGRvZXMgbm90IHdvcmsg
d2VsbCB3aXRoIElQQyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwOTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW1wbGVtZW50IG1vdmUgY29uc3RydWN0b3IgYW5kIG1vdmUgYXNzaWdu
bWVudCBvcGVyYXRvciBmb3IgTWFjaFNlbWFwaG9yZS4KKyAgICAgICAgTWFrZXMgaXQgcG9zc2li
bGUgdG8gY3JlYXRlIHR5cGVzIHRoYXQgaG9sZCBNYWNoU2VtYXBob3JlIGJ1dCBzdGlsbAorICAg
ICAgICBhcmUgZGVjb2RlKClhYmxlIGZyb20gYSBJUEMgbWVzc2FnZS4gVGhlIGRlY29kZWQgb2Jq
ZWN0cyBhcmUgaGVsZCB3aXRoCisgICAgICAgIE9wdGlvbmFsLCBhbmQgdGhpcyBmb3JjZXMgdGhl
IHN1Ym9iamVjdHMgdG8gaGF2ZSBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisKKyAgICAgICAg
QWRkIGFzc2VydHMgdGhhdCB0aGUgbW92ZWQtYXdheSBvYmplY3QgaXMgbm90IHVzZWQuCisgICAg
ICAgIEFkZCB0aGUgYXNzZXJ0cyBhcyBhc3NlcnRzIG9uIHRoZSBjYWxsIHJldHVybiB2YWx1ZXMs
IHNvIHRoZSB2YWx1ZXMKKyAgICAgICAgYXJlIGFsc28gY2hlY2tlZCBvbiBub3JtYWwgb2JqZWN0
cyBvbiBub3JtYWwgb3BlcmF0aW9uLgorCisgICAgICAgICogd3RmL2NvY29hL01hY2hTZW1hcGhv
cmUuY3BwOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3JlOjpNYWNoU2VtYXBob3JlKToKKyAg
ICAgICAgKFdURjo6TWFjaFNlbWFwaG9yZTo6fk1hY2hTZW1hcGhvcmUpOgorICAgICAgICAoV1RG
OjpNYWNoU2VtYXBob3JlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3Jl
OjpzaWduYWwpOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3JlOjp3YWl0KToKKyAgICAgICAg
KFdURjo6TWFjaFNlbWFwaG9yZTo6d2FpdEZvcik6CisgICAgICAgIChXVEY6Ok1hY2hTZW1hcGhv
cmU6OmNyZWF0ZVNlbmRSaWdodCBjb25zdCk6CisgICAgICAgIChXVEY6Ok1hY2hTZW1hcGhvcmU6
OmRlc3Ryb3kpOgorICAgICAgICAqIHd0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg6CisgICAgICAg
IChXVEY6Ok1hY2hTZW1hcGhvcmU6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorCiAyMDIxLTAxLTIz
ICBYYW4gTG9wZXogIDx4YW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBBbGxvdyB0byBi
dWlsZCBXZWJBc3NlbWJseSB3aXRob3V0IEIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRiMDUyNDNhMmRkZDEyMjFl
ZmMyMTRjMjAwOWM4MWQyZDFjZjdmMjQuLjU5M2JiZDE0MDc2MGZmOWE0Yzg4ZjYyODI4NmJlOTA0
ZGQ4NGJjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA5IEBACisyMDIxLTAxLTI2ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFjaFNlbWFwaG9yZSBk
b2VzIG5vdCB3b3JrIHdlbGwgd2l0aCBJUEMgbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDkxOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhbiBlbmNvZGVyIGFuZCBkZWNv
ZGVyIGZvciBXVEY6Ok1hY2hTZW1hcGhvcmUuIE1ha2VzIGl0IHBvc3NpYmxlIHRvIHNlbmQgaXQK
KyAgICAgICAgdmlhIElQQyBhcyBpdHMgb3duIHR5cGUsIG5vdCBhcyBNYWNoU2VuZFJpZ2h0Lgor
CisgICAgICAgIEFzIGFuIGV4YW1wbGUsIGNoYW5nZXMgZXhpc3RpbmcgdXNlcyBvZiBNYWNoU2Vu
ZFJpZ2h0IGZvciBzZW1hcGhvcmVzIGluIG1lc3NhZ2VzIGFzCisgICAgICAgIE1hY2hTZW1hcGhv
cmVzLCBkZXNjcmliZWQgYmVsb3cuCisKKyAgICAgICAgQ2hhbmdlcyBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHkgdG8gc2VuZCBpdHMgb3duIHNlbWFwaG9yZSBmcm9tCisgICAgICAgIFdlYlBy
b2Nlc3MgdG8gR1BVUHJvY2Vzcy4gUHJldmlvdXNseSB0aGUgc2VtYXBob3JlIHdvdWxkIGJlIHNl
bnQgYmFjayBieQorICAgICAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci4gUHJldmlv
dXNseSB0aGUgY29kZSBzdHJ1Y3R1cmUgaXMgbW9yZQorICAgICAgICBjb21wbGljYXRlZCB0aGFu
IG5lY2Nlc3NhcnksIGFzIHRoZSBzZW1hcGhvcmUgaG9sZGVyIHdhcyBiZWluZworICAgICAgICBu
dWxsLWNoZWNrZWQsIHJlc2V0IGFuZCByZS1zZWF0ZWQuIFRoZSBXZWJQcm9jZXNzIGdldHMgYWxy
ZWFkeSB0byBjaG9vc2UKKyAgICAgICAgdGhlIHNlbWFwaG9yZXMgR1BVUHJvY2VzcyB1c2VzLCBz
byB0aGlzIHNob3VsZCBub3QgaW5jcmVhc2Ugc2VjdXJpdHkKKyAgICAgICAgc3VyZmFjZS4gVGhl
IGNoYW5nZSBjaG9zZW4gaGVyZSBzaWRlLXN0ZXBzIHRoZSBzaG9ydGNvbWluZyBvZiB0aGUgSVBD
CisgICAgICAgIHN5c3RlbSB3aGVyZSB1bnBhY2tpbmcgb2JqZWN0cyBmcm9tIHRoZSBSZXBseSBt
ZXNzYWdlcyBtYW5kYXRlcyB0aGF0IGEKKyAgICAgICAgY29uc3RydWN0ZWQgdmVyc2lvbiBvZiB0
aGF0IHR5cGUgZXhpc3RzLiBGb3IgcHJldmlvdXMgTWFjaFNlbmRSaWdodAorICAgICAgICBlbXB0
eS1jb25zdHJ1Y3RlZCBvYmplY3QgaXMgc2ltcGxlLCBidXQgZm9yIE1hY2hTZW1hcGhvcmUKKyAg
ICAgICAgZW1wdHktY29uc3RydWN0ZWQgb2JqZWN0IGNyZWF0ZXMgdW5uZWNlc3NhcnkgY29tcGxp
Y2F0aW9uIHRoYXQgaXMgbm90CisgICAgICAgIHJlcXVpcmVkIG90aGVyd2lzZSBhdCB0aGUgbW9t
ZW50LiBUaGUgYWx0ZXJuYXRpdmUgdG8gd2hhdCB3YXMgY2hvc2VuCisgICAgICAgIGhlcmUgd291
bGQgYmUgdG8gaG9sZCB3aXRoIE9wdGlvbmFsPE1hY2hTZW1hcGhvcmU+IGFuZCBhZGQgYQorICAg
ICAgICBlbXB0eS1pbml0aWFsaXppbmcgY29uc3RydWN0b3IgdG8gaG9sZCB0aGUgb2JqZWN0IHdo
ZXJlIHRvIHVucGFjayB0aGUKKyAgICAgICAgc2VtYXBob3JlIG9iamVjdCBmcm9tIHRoZSBSZXBs
eS4KKworICAgICAgICBDaGFuZ2VzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgdG8gcmVjZWl2ZSBp
dHMgcGFyYW1ldGVycyBmcm9tIHRoZSBub3JtYWwKKyAgICAgICAgbWVzc2FnZSBwYXJhbWV0ZXJz
IGluc3RlYWQgb2YgcmVkdW5kYW50CisgICAgICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVh
dGlvblBhcmFtZXRlcnMuIFRoZSBJUEMgZ2VuZXJhdG9yIGFscmVhZHkKKyAgICAgICAgZ2VuZXJh
dGVzIDE6MSBpZGVudGljYWwgc3RydWN0dXJlLCBpdCBpcyBqdXN0IHRoZSBtZXNzYWdlCisgICAg
ICAgIE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVSZW5kZXJpbmdC
YWNrZW5kLiBUaGVyZSBpcyBubworICAgICAgICBuZWVkIHRvIGRvdWJsZS13cmFwIHRoZSBzaW1w
bGUgbGlzdCBvZiBwYXJhbWV0ZXJzLiBUaGUgZG91YmxlLXdyYXBwaW5nCisgICAgICAgIGlzIGEg
cHJvYmxlbTogVGhlIG1lc3NhZ2Ugc3lzdGVtIHBhcmFtZXRlcnMgYXJlIG9mIG93bmVyc2hpcCAi
Y29uc3QKKyAgICAgICAgcmVmZXJlbmNlIiwgd2hpY2ggaXMgd2hhdCBpcyBleHBlY3RlZC4KKyAg
ICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyBjb250ZW50cyB3
ZXJlIG9mIG93bmVyc2hpcAorICAgICAgICAidmFsdWUiLCB3aGljaCB3b3JrcyBhcyBleHBlY3Rl
ZCBvbmx5IGZvciBzaW1wbGUgcHJpbWl0aXZlIHR5cGVzLgorICAgICAgICBFc3NlbnRpYWxseSBw
cmV2aW91c2x5IGNhbGxpbmcgdGhlIElQQyBmdW5jdGlvbiBtZWFudCB0cmFuc2ZlcmluZworICAg
ICAgICBvYmplY3RzIHRvIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMu
IFRoaXMgaXMgbm90IGhvdyB0aGUKKyAgICAgICAgSVBDIHN5c3RlbSBpcyBtZWFudCB0byB3b3Jr
LiBUaGUgaW50ZW50aW9uIG9mIGEgSVBDIGNhbGwgaXMgdG8sIGJ5CisgICAgICAgIGRlZmF1bHQs
IHJlZmVyZW5jZSBpdHMgYXJndW1lbnRzIGZvciB0aGUgcHVycG9zZSBvZiBlbmNvZGluZy4gVGhl
IHBhdGNoCisgICAgICAgIHRyaWVzIHRvIGFjaGlldmUgYSBiaXQgdGhlIHNhbWUgZ29hbCBhcyB0
aGUgb3JpZ2luYWwKKyAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1l
dGVycyBwcmVzdW1hYmx5IGhhZCwgaS5lLiB0byBhdm9pZAorICAgICAgICBwcm9ibGVtcyB3aXRo
ICNpZiBQTEFURk9STShDT0NPQSktI2Vsc2UgaW4gbWV0aG9kIGRlY2xhcmF0aW9ucyBhbmQKKyAg
ICAgICAgZGVmaW5pdGlvbnMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3Rvci4KKwor
ICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0Jh
Y2tlbmQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
OgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4
dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpjcmVh
dGVBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXI6OmRlbGV0ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6c3RhcnRBdWRpb0Rlc3RpbmF0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0b3BBdWRpb0Rl
c3RpbmF0aW9uKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwOgorICAg
ICAgICAoSVBDOjpqc1ZhbHVlRm9yQXJndW1lbnRzKToKKyAgICAgICAgKElQQzo6bWVzc2FnZUFy
Z3VtZW50RGVzY3JpcHRpb25zKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNz
YWdlTmFtZXMuY3BwOgorICAgICAgICAoSVBDOjpkZXNjcmlwdGlvbik6CisgICAgICAgIChJUEM6
OnJlY2VpdmVyTmFtZSk6CisgICAgICAgIChJUEM6OmlzVmFsaWRNZXNzYWdlTmFtZSk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmg6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlLm1lc3NhZ2VzLmluOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1h
Y2hTZW1hcGhvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
VGVzdFdpdGhNYWNoU2VtYXBob3JlOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJL
aXQ6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNzYWdlcy5o
OiBBZGRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoTWFjaFNlbWFwaG9y
ZTo6U2VuZFNlbWFwaG9yZTo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhNYWNo
U2VtYXBob3JlOjpTZW5kU2VtYXBob3JlOjpTZW5kU2VtYXBob3JlKToKKyAgICAgICAgKE1lc3Nh
Z2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6OlNlbmRTZW1hcGhvcmU6OmFyZ3VtZW50cyBjb25z
dCk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhNYWNoU2VtYXBob3JlOjpSZWNlaXZlU2Vt
YXBob3JlOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6
OlJlY2VpdmVTZW1hcGhvcmU6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVk
LgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXVEY6Ok1hY2hTZW1hcGhvcmU+OjplbmNvZGUp
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdURjo6TWFjaFNlbWFwaG9yZT46OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFt
ZXRlcnMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpjb25uZWN0
VG9HUFVQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHk6OnN0YXJ0UmVuZGVyaW5nVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpzdG9wUmVuZGVyaW5nVGhyZWFkKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpncHVQcm9j
ZXNzQ29ubmVjdGlvbkRpZENsb3NlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaDoKKwogMjAyMS0wMS0yNCAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIFdLMl0gdGhldmVyZ2Uu
Y29tIC0gcnViYmVyIGJhbmQgc2Nyb2xsaW5nIGF0IHRoZSB0b3Agb2YgdGhlIHBhZ2UgY2F1c2Vz
IGFuIGFicnVwdCBqdW1wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NYWNoU2Vt
YXBob3JlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuY3BwCmluZGV4
IDkyZmNmMTVjMDdkOTI0YTQ1MDc5MzdmZDIzMDQ1NzJjNGRiYmI5NjYuLjZmYjM1NzdlYWQzODQ4
Y2Y4MGMwODU4ODFjN2U2YWUxN2NlM2NkMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2Nv
Y29hL01hY2hTZW1hcGhvcmUuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1h
cGhvcmUuY3BwCkBAIC0zNiw2ICszNiwxMiBAQCBNYWNoU2VtYXBob3JlOjpNYWNoU2VtYXBob3Jl
KCkKICAgICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0ID09IEtFUk5fU1VDQ0VTUyk7CiB9CiAKK01h
Y2hTZW1hcGhvcmU6Ok1hY2hTZW1hcGhvcmUoTWFjaFNlbWFwaG9yZSYmIG90aGVyKQorICAgIDog
bV9zZW5kUmlnaHQoV1RGTW92ZShvdGhlci5tX3NlbmRSaWdodCkpCisgICAgLCBtX3NlbWFwaG9y
ZShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fc2VtYXBob3JlLCBTRU1BUEhPUkVfTlVMTCkpCit7Cit9
CisKIE1hY2hTZW1hcGhvcmU6Ok1hY2hTZW1hcGhvcmUoTWFjaFNlbmRSaWdodCYmIHNlbmRSaWdo
dCkKICAgICA6IG1fc2VuZFJpZ2h0KFdURk1vdmUoc2VuZFJpZ2h0KSkKICAgICAsIG1fc2VtYXBo
b3JlKG1fc2VuZFJpZ2h0LnNlbmRSaWdodCgpKQpAQCAtNDUsMjkgKzUxLDU2IEBAIE1hY2hTZW1h
cGhvcmU6Ok1hY2hTZW1hcGhvcmUoTWFjaFNlbmRSaWdodCYmIHNlbmRSaWdodCkKIAogTWFjaFNl
bWFwaG9yZTo6fk1hY2hTZW1hcGhvcmUoKQogewotICAgIGlmICghbV9zZW5kUmlnaHQpCi0gICAg
ICAgIHNlbWFwaG9yZV9kZXN0cm95KG1hY2hfdGFza19zZWxmKCksIG1fc2VtYXBob3JlKTsKKyAg
ICBkZXN0cm95KCk7Cit9CisKK01hY2hTZW1hcGhvcmUmIE1hY2hTZW1hcGhvcmU6Om9wZXJhdG9y
PShNYWNoU2VtYXBob3JlJiYgb3RoZXIpCit7CisgICAgaWYgKHRoaXMgIT0gJm90aGVyKSB7Cisg
ICAgICAgIGRlc3Ryb3koKTsKKyAgICAgICAgbV9zZW5kUmlnaHQgPSBXVEZNb3ZlKG90aGVyLm1f
c2VuZFJpZ2h0KTsKKyAgICAgICAgbV9zZW1hcGhvcmUgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1f
c2VtYXBob3JlLCBTRU1BUEhPUkVfTlVMTCk7CisgICAgfQorCisgICAgcmV0dXJuICp0aGlzOwog
fQogCiB2b2lkIE1hY2hTZW1hcGhvcmU6OnNpZ25hbCgpCiB7Ci0gICAgc2VtYXBob3JlX3NpZ25h
bChtX3NlbWFwaG9yZSk7CisgICAgYXV0byByZXQgPSBzZW1hcGhvcmVfc2lnbmFsKG1fc2VtYXBo
b3JlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0ID09IEtFUk5fU1VDQ0VTUyk7CiB9CiAK
IHZvaWQgTWFjaFNlbWFwaG9yZTo6d2FpdCgpCiB7Ci0gICAgc2VtYXBob3JlX3dhaXQobV9zZW1h
cGhvcmUpOworICAgIGF1dG8gcmV0ID0gc2VtYXBob3JlX3dhaXQobV9zZW1hcGhvcmUpOworICAg
IEFTU0VSVF9VTlVTRUQocmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTKTsKIH0KIAogdm9pZCBNYWNo
U2VtYXBob3JlOjp3YWl0Rm9yKFNlY29uZHMgdGltZW91dCkKIHsKICAgICBhdXRvIHNlY29uZHMg
PSB0aW1lb3V0LnNlY29uZHNBczx1bnNpZ25lZD4oKTsKLSAgICBzZW1hcGhvcmVfdGltZWR3YWl0
KG1fc2VtYXBob3JlLCB7IHNlY29uZHMsIHN0YXRpY19jYXN0PGNsb2NrX3Jlc190Pih0aW1lb3V0
Lm5hbm9zZWNvbmRzQXM8dWludDY0X3Q+KCkgLSBzZWNvbmRzICogTlNFQ19QRVJfU0VDKSB9KTsK
KyAgICBhdXRvIHJldCA9IHNlbWFwaG9yZV90aW1lZHdhaXQobV9zZW1hcGhvcmUsIHsgc2Vjb25k
cywgc3RhdGljX2Nhc3Q8Y2xvY2tfcmVzX3Q+KHRpbWVvdXQubmFub3NlY29uZHNBczx1aW50NjRf
dD4oKSAtIHNlY29uZHMgKiBOU0VDX1BFUl9TRUMpIH0pOworICAgIEFTU0VSVF9VTlVTRUQocmV0
LCByZXQgPT0gS0VSTl9TVUNDRVNTIHx8IHJldCA9PSBLRVJOX09QRVJBVElPTl9USU1FRF9PVVQp
OwogfQogCi1NYWNoU2VuZFJpZ2h0IE1hY2hTZW1hcGhvcmU6OmNyZWF0ZVNlbmRSaWdodCgpCitN
YWNoU2VuZFJpZ2h0IE1hY2hTZW1hcGhvcmU6OmNyZWF0ZVNlbmRSaWdodCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIE1hY2hTZW5kUmlnaHQ6OmNyZWF0ZShtX3NlbWFwaG9yZSk7CiB9CiAKK3ZvaWQg
TWFjaFNlbWFwaG9yZTo6ZGVzdHJveSgpCit7CisgICAgaWYgKG1fc2VuZFJpZ2h0KSB7CisgICAg
ICAgIG1fc2VuZFJpZ2h0ID0gTWFjaFNlbmRSaWdodCgpOworICAgICAgICBtX3NlbWFwaG9yZSA9
IFNFTUFQSE9SRV9OVUxMOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtX3NlbWFw
aG9yZSA9PSBTRU1BUEhPUkVfTlVMTCkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmV0ID0g
c2VtYXBob3JlX2Rlc3Ryb3kobWFjaF90YXNrX3NlbGYoKSwgbV9zZW1hcGhvcmUpOworICAgIEFT
U0VSVF9VTlVTRUQocmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTKTsKKyAgICBtX3NlbWFwaG9yZSA9
IFNFTUFQSE9SRV9OVUxMOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaCBiL1NvdXJjZS9XVEYvd3RmL2NvY29h
L01hY2hTZW1hcGhvcmUuaAppbmRleCBiZTdjZWEwNDZiODEyY2JjM2ViM2E3MjEzMGQ5YTViYTAw
OTNmOTJmLi40YjVkYjc0ZTcxNmMzMjhmNzdiMjYyZGI5ZDNiMGNjMTVjZDkwNzljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oCkBAIC0zNywxNiArMzcsMjAgQEAgY2xhc3MgTWFj
aFNlbWFwaG9yZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFjaFNlbWFwaG9yZSk7CiBw
dWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1hY2hTZW1hcGhvcmUoKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgTWFjaFNlbWFwaG9yZShNYWNoU2VtYXBob3JlJiYpOwogICAgIFdURl9F
WFBPUlRfUFJJVkFURSBleHBsaWNpdCBNYWNoU2VtYXBob3JlKE1hY2hTZW5kUmlnaHQmJik7CiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIH5NYWNoU2VtYXBob3JlKCk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIE1hY2hTZW1hcGhvcmUmIG9wZXJhdG9yPShNYWNoU2VtYXBob3JlJiYpOwogCiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2lnbmFsKCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgd2FpdCgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHdhaXRGb3IoU2Vjb25k
cyk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWFjaFNlbmRSaWdodCBjcmVhdGVTZW5kUmln
aHQoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWFjaFNlbmRSaWdodCBjcmVhdGVTZW5kUmln
aHQoKSBjb25zdDsKIAorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVy
biBtX3NlbmRSaWdodCB8fCBtX3NlbWFwaG9yZSAhPSBTRU1BUEhPUkVfTlVMTDsgfQogcHJpdmF0
ZToKKyAgICB2b2lkIGRlc3Ryb3koKTsKICAgICBNYWNoU2VuZFJpZ2h0IG1fc2VuZFJpZ2h0Owog
ICAgIHNlbWFwaG9yZV90IG1fc2VtYXBob3JlIHsgU0VNQVBIT1JFX05VTEwgfTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggOTAwNTY2OTRhNTMwMGRjM2E4YmZkZDFlZTMwZWMxNmJkOGViZGVhOC4uOWRm
OGQxNjIxZjM0MDVjZTljYjdkMjRjNzk5YTcwZThkMDA4ZTA2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAt
NDgsNyArNDgsNiBAQAogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCIKLSNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1lc3NhZ2VzLmgiCkBAIC0yOTEsMTAgKzI5MCwxOCBAQCBSZW1vdGVBdWRpb1Nlc3Np
b25Qcm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YXVkaW9TZXNzaW9uUHJveHkoKQog
fQogI2VuZGlmCiAKLXZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVy
aW5nQmFja2VuZChSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5n
QmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgLCBNYWNoU2VtYXBob3JlJiYgcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhv
cmUKKyNlbmRpZgorICAgICkKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZE1hcC5lbnN1cmUocGFyYW1ldGVycy5pZGVudGlmaWVyLCBbJl0oKSB7Ci0gICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyPihSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUocGFyYW1ldGVycykpKTsK
KyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcC5lbnN1cmUo
aWRlbnRpZmllciwgWyZdKCkgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kV3JhcHBlcj4oUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKCp0aGlz
LCBpZGVudGlmaWVyLCB7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgICAgICBXVEZNb3Zl
KHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQorI2VuZGlmCisgICAgICAgIH0pKTsKICAgICB9
KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKaW5kZXggNDQxOGNhNmFlYTJhNDA4ZTM3NzUzODkwZTFkMzBkZGVjNzZlYzdjYS4u
YjZhMjRjYjMyMGEzNjNlN2U5ZmVkZDQzZDI5MDYzNTk2NDk1MDYxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC02
NSw3ICs2NSw2IEBAIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOwogY2xhc3MgUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHk7CiBzdHJ1Y3QgUmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbjsKLXN0
cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAgICAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcywgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFp
bj4KQEAgLTEyNyw3ICsxMjYsMTEgQEAgcHJpdmF0ZToKICNlbmRpZgogI2VuZGlmCiAKLSAgICB2
b2lkIGNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9u
UGFyYW1ldGVycyYmKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGNyZWF0ZVJlbmRl
cmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIE1hY2hTZW1hcGhvcmUmJiBy
ZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSk7CisjZWxzZQorICAgIHZvaWQgY3JlYXRlUmVuZGVy
aW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisjZW5kaWYKICAgICB2b2lk
IHJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIAog
I2lmIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMGNiYzVk
ODc5ODNlNjY2ZTQ4ZTgzOWE2NDY0ODk4Nzk1MGEzOTJiZi4uMWU0OWIzM2VjZjZhNTMxNWMyYjFh
NDI5OGUyZDQxNzI1OTJkMmEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIz
LDcgKzIzLDEyIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiBtZXNzYWdlcyAtPiBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlzcGF0Y2hNZXNzYWdlIHsKLSAgICB2b2lkIENy
ZWF0ZVJlbmRlcmluZ0JhY2tlbmQoc3RydWN0IFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZENyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzKQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIE1hY2hTZW1hcGhvcmUgcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhv
cmUpCisjZW5kaWYKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBDcmVhdGVSZW5kZXJp
bmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgaWRlbnRpZmllcikK
KyNlbmRpZgogICAgIHZvaWQgUmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICNpZiBFTkFC
TEUoV0VCR0wpCiAgICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcAppbmRleCAzNzIwN2Q3ZmM3ODBiZmIzYTRiZDdjMWI0ZGNjMGU2NDg1
NWQ1NWU2Li5lZDkzMGNkNzk3MDkzNzY0MDY0ZjJmOGQ0ODFkMjljZWZjYzJmZTVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1S
ZW1vdGVJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIgotI2luY2x1ZGUgIlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5o
PgpAQCAtNjUsMTcgKzY0LDE3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCi1SZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQorUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyLCBQbGF0Zm9y
bUNyZWF0ZVBhcmFtcyYmIHBhcmFtcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURk1vdmUocGFy
YW1ldGVycykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGlkZW50aWZpZXIsIFdURk1vdmUocGFyYW1z
KSkpOwogfQogCi1SZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllciBpZGVudGlmaWVyLCBQbGF0Zm9ybUNyZWF0ZVBhcmFtcyYmIHBhcmFtcykKICAg
ICA6IG1fd29ya1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
IHdvcmsgcXVldWUiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OlVz
ZXJJbnRlcmFjdGl2ZSkpCiAgICAgLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcykKLSAgICAsIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIo
cGFyYW1ldGVycy5pZGVudGlmaWVyKQorICAgICwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cihpZGVudGlmaWVyKQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICwgbV9yZXN1bWVEaXNwbGF5
TGlzdFNlbWFwaG9yZShtYWtlVW5pcXVlPE1hY2hTZW1hcGhvcmU+KFdURk1vdmUocGFyYW1ldGVy
cy5zZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkpKQorICAgICwgbV9yZXN1
bWVEaXNwbGF5TGlzdFNlbWFwaG9yZShXVEZNb3ZlKHBhcmFtcy5yZXN1bWVEaXNwbGF5TGlzdFNl
bWFwaG9yZSkpCiAjZW5kaWYKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAt
MjI4LDcgKzIyNyw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5CiAKICAgICAgICAgICAgIGhh
bmRsZS5zdGFydFdhaXRpbmcoKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAgIG1f
cmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUtPndhaXRGb3IoMzBfdXMpOworICAgICAgICAgICAg
bV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZS53YWl0Rm9yKDMwX3VzKTsKICNlbHNlCiAgICAg
ICAgICAgICBzbGVlcCgzMF91cyk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IGU2
Mzg5OTAzYjY1MGJhOGQ5NzNkYWY5YjNkY2NhNjQ1MzU2ZjQ1ZjguLjgwYzNlMjQ0MjYyNjJiZDli
YTQ5NTE4OWZiZWZhNDMyZDFjODFkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtNDIsOSAr
NDIsNyBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkK
LW5hbWVzcGFjZSBXVEYgewotY2xhc3MgTWFjaFNlbWFwaG9yZTsKLX0KKyNpbmNsdWRlIDx3dGYv
Y29jb2EvTWFjaFNlbWFwaG9yZS5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTYyLDE0ICs2MCwxOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGU7CiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwotc3RydWN0IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQKICAgICA6IHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgLCBw
dWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIKICAgICAsIHB1
YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gY3JlYXRlKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJh
bWV0ZXJzJiYpOworICAgIHN0cnVjdCBQbGF0Zm9ybUNyZWF0ZVBhcmFtcyB7CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgICAgIE1hY2hTZW1hcGhvcmUgcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhv
cmU7CisjZW5kaWYKKyAgICB9OworICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZD4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciwgUGxhdGZvcm1DcmVhdGVQYXJhbXMmJik7CiAgICAgdmlydHVhbCB+UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCgpOwogCiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZSYgcmVtb3RlUmVzb3Vy
Y2VDYWNoZSgpIHsgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZTsgfQpAQCAtODYsNyArODgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAKIHByaXZhdGU6Ci0gICAgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciwgUGxhdGZvcm1DcmVhdGVQYXJhbXMmJik7CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikgb3ZlcnJpZGU7CiAKQEAgLTE0OSw3ICsx
NTEsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJJZGVudGlmaWVyLCBSZWZQdHI8RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU+PiBtX3NoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlczsKICAgICBPcHRpb25hbDxQZW5kaW5nV2FrZXVwSW5mb3JtYXRp
b24+IG1fcGVuZGluZ1dha2V1cEluZm87CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFdURjo6TWFjaFNlbWFwaG9yZT4gbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9y
ZTsKKyAgICBXVEY6Ok1hY2hTZW1hcGhvcmUgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsK
ICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAKaW5kZXggMGY4NDA3
YzFmM2RjNzg3YjUwZTliZjYwOTkxYWVlN2NiNDEwYjRmYS4uN2JhNDEwMDVlM2NlNWFiNzMzN2Ni
YjVhMjI0NjNhMjk5NDM5MjMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCkBA
IC01MSwxMCArNTEsMTUgQEAgY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbgogI2VuZGlmCiB7
CiBwdWJsaWM6CisgICAgc3RydWN0IFBsYXRmb3JtQ3JlYXRlUGFyYW1zIHsKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICAgICAgTWFjaFNlbWFwaG9yZSByZW5kZXJTZW1hcGhvcmU7CisjZW5kaWYK
KyAgICB9OwogICAgIHN0YXRpYyBSZWY8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4gY3JlYXRlKEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyIGlkZW50aWZpZXIsCi0gICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXREZXZp
Y2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91
dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUp
CisgICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1w
bGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIFBsYXRmb3JtQ3JlYXRlUGFyYW1zJiYg
cGFyYW1zKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbihjb25uZWN0aW9uLCBpZGVudGlmaWVyLCBpbnB1dERldmljZUlkLCBudW1iZXJP
ZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIGhhcmR3
YXJlU2FtcGxlUmF0ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uKGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIGlucHV0RGV2aWNlSWQsIG51bWJl
ck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFy
ZHdhcmVTYW1wbGVSYXRlLCBXVEZNb3ZlKHBhcmFtcykpKTsKICAgICB9CiAKICAgICB2aXJ0dWFs
IH5SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKCkgPSBkZWZhdWx0OwpAQCAtNjgsOCArNzMsNiBAQCBw
dWJsaWM6CiAgICAgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgTWFjaFNlbmRSaWdodCBj
cmVhdGVSZW5kZXJTZW1hcGhvcmVTZW5kUmlnaHQoKSB7IHJldHVybiBtX3JlbmRlclNlbWFwaG9y
ZS5jcmVhdGVTZW5kUmlnaHQoKTsgfQotCiAgICAgdm9pZCBhdWRpb1NhbXBsZXNTdG9yYWdlQ2hh
bmdlZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaXBjSGFuZGxlLCBjb25zdCBXZWJD
b3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1i
ZXJPZkZyYW1lcykKICAgICB7CiAgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWVSZWY8
V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFJlYWRPbmx5U2hhcmVkUmluZ0J1
ZmZlclN0b3JhZ2U+KGlwY0hhbmRsZS5oYW5kbGUpLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFt
ZXMpOwpAQCAtMTA0LDExICsxMDcsMTIgQEAgcHVibGljOgogICAgIGJvb2wgaXNQbGF5aW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KIAogcHJpdmF0ZToKLSAgICBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQs
IHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlKQorICAg
IFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5w
dXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBs
ZVJhdGUsIFBsYXRmb3JtQ3JlYXRlUGFyYW1zJiYgcGFyYW1zKQogICAgICAgICA6IG1faWQoaWRl
bnRpZmllcikKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgLCBtX2F1ZGlvT3V0cHV0VW5p
dEFkYXB0b3IoKnRoaXMpCiAgICAgICAgICwgbV9yaW5nQnVmZmVyKG1ha2VVbmlxdWVSZWY8V2Vi
Q29yZTo6Q0FSaW5nQnVmZmVyPigpKQorICAgICAgICAsIG1fcmVuZGVyU2VtYXBob3JlKFdURk1v
dmUocGFyYW1zLnJlbmRlclNlbWFwaG9yZSkpCiAjZW5kaWYKICAgICB7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCkBAIC0xNjIsMTkgKzE2NiwyMyBAQCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
cjo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoR1BVQ29ubmVjdGlvblRvV2ViUAogCiBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6flJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyKCkgPSBkZWZhdWx0OwogCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpj
cmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMy
X3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIENyZWF0aW9uQ29t
cGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBpbnB1
dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxl
UmF0ZSwKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBNYWNoU2VtYXBob3JlJiYgcmVuZGVyU2Vt
YXBob3JlLAorI2VuZGlmCisgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uRGVsYXllZFJlcGx5JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYXV0byBuZXdJRCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVy
OjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uID0gUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbjo6Y3JlYXRlKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgbmV3SUQs
IGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRlKTsKLSAgICBtX2F1ZGlvRGVzdGlu
YXRpb25zLmFkZChuZXdJRCwgZGVzdGluYXRpb24uY29weVJlZigpKTsKKyAgICBhdXRvIGRlc3Rp
bmF0aW9uID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKG1fZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcywgbmV3SUQsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRlLCB7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgY29tcGxldGlvbkhhbmRsZXIobmV3SUQsIGRlc3Rp
bmF0aW9uLT5jcmVhdGVSZW5kZXJTZW1hcGhvcmVTZW5kUmlnaHQoKSk7Ci0jZWxzZQotICAgIGNv
bXBsZXRpb25IYW5kbGVyKG5ld0lEKTsKKyAgICAgICAgV1RGTW92ZShyZW5kZXJTZW1hcGhvcmUp
CiAjZW5kaWYKKyAgICB9KTsKKyAgICBtX2F1ZGlvRGVzdGluYXRpb25zLmFkZChuZXdJRCwgZGVz
dGluYXRpb24uY29weVJlZigpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdJRCk7CiB9CiAK
LXZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmRlbGV0ZUF1ZGlvRGVzdGluYXRp
b24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcjo6ZGVsZXRlQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXI6OkRlbGV0ZUF1ZGlvRGVzdGluYXRpb25Bc3luY1JlcGx5JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgYXV0byBkZXN0aW5hdGlvbiA9IG1fYXVkaW9EZXN0aW5hdGlvbnMu
dGFrZShpZGVudGlmaWVyKTsKICAgICBpZiAoZGVzdGluYXRpb24pCkBAIC0xODIsNyArMTkwLDcg
QEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6ZGVsZXRlQXVkaW9EZXN0aW5h
dGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW8KICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQog
Ci12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdGFydEF1ZGlvRGVzdGluYXRp
b24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0YXJ0QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OlN0YXJ0QXVkaW9EZXN0aW5hdGlvbkFzeW5jUmVwbHkmJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBib29sIGlzUGxheWluZyA9IGZhbHNlOwogICAgIGlmIChhdXRv
KiBpdGVtID0gbV9hdWRpb0Rlc3RpbmF0aW9ucy5nZXQoaWRlbnRpZmllcikpIHsKQEAgLTE5Miw3
ICsyMDAsNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdGFydEF1ZGlv
RGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbgogICAgIGNvbXBsZXRpb25IYW5kbGVy
KGlzUGxheWluZyk7CiB9CiAKLXZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0
b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdG9wQXVkaW9EZXN0aW5hdGlv
bihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBNZXNzYWdlczo6
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlN0b3BBdWRpb0Rlc3RpbmF0aW9uQXN5bmNS
ZXBseSYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGJvb2wgaXNQbGF5aW5nID0gZmFsc2U7
CiAgICAgaWYgKGF1dG8qIGl0ZW0gPSBtX2F1ZGlvRGVzdGluYXRpb25zLmdldChpZGVudGlmaWVy
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaAppbmRleCBiODNmMjlmOGRjMTMzYTFhMmMz
YTg3NGJhNzMzYjU4MGIyNmU3NjJkLi43YjQwOTA5NDYyYmI5M2RjNmI3MGYyNWEwMTEwZWFkYjMz
OGY5NThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaApAQCAtMjksMTkgKzI5LDE5IEBA
CiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
ck1lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUg
PG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8d3RmL2NvY29h
L01hY2hTZW1hcGhvcmUuaD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CiB9Ci0KLW5hbWVz
cGFjZSBXVEYgewotY2xhc3MgTWFjaFNlbmRSaWdodDsKLX0KICNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTY0LDE0ICs2NCwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+Jik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB1c2luZyBD
cmVhdGlvbkNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgV1RGOjpNYWNoU2VuZFJpZ2h0KT47CisgICAgdm9p
ZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWlu
dDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsCisgICAgICAg
IE1hY2hTZW1hcGhvcmUmJiByZW5kZXJTZW1hcGhvcmUsIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbkRlbGF5ZWRSZXBseSYmKTsK
ICNlbHNlCi0gICAgdXNpbmcgQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIpPjsKKyAgICB2b2lk
IGNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50
MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwKKyAgICAgICAg
Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbkRlbGF5ZWRSZXBseSYmKTsKICNlbmRpZgotICAgIHZvaWQg
Y3JlYXRlQXVkaW9EZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQz
Ml90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCBDcmVhdGlvbkNv
bXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgZGVsZXRlQXVkaW9EZXN0aW5hdGlvbihSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKLSAgICB2b2lkIHN0YXJ0QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBz
dG9wQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBkZWxldGVBdWRpb0Rlc3Rp
bmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBNZXNzYWdlczo6UmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkRlbGV0ZUF1ZGlvRGVzdGluYXRpb25Bc3luY1JlcGx5
JiYpOworICAgIHZvaWQgc3RhcnRBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyLCBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlN0
YXJ0QXVkaW9EZXN0aW5hdGlvbkFzeW5jUmVwbHkmJik7CisgICAgdm9pZCBzdG9wQXVkaW9EZXN0
aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgTWVzc2FnZXM6OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpTdG9wQXVkaW9EZXN0aW5hdGlvbkFzeW5jUmVwbHkm
Jik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBhdWRpb1NhbXBsZXNTdG9yYWdlQ2hh
bmdlZChSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUmLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCB1
aW50NjRfdCBudW1iZXJPZkZyYW1lcyk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCA1NTc4OTg0NmQ3NGQ4NTc0YmJkYTFhYmRmMjcx
OGJkM2JhNWJjNGU0Li4wOGU2NjI4NDk4NTg3MTNlNDUzNjJkNWY0ZTdmNjE3NjIzY2IyMmJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNSwx
MCArMjUsMTAgQEAKIAogbWVzc2FnZXMgLT4gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIg
Tm90UmVmQ291bnRlZCB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgQ3JlYXRlQXVkaW9EZXN0
aW5hdGlvbihTdHJpbmcgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5u
ZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBm
bG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUpIC0+IChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyIGlkZW50aWZpZXIsIE1hY2hTZW5kUmlnaHQgcmVuZGVyU2VtYXBob3JlU2Vu
ZFJpZ2h0KSBTeW5jaHJvbm91cworICAgIENyZWF0ZUF1ZGlvRGVzdGluYXRpb24oU3RyaW5nIGlu
cHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVt
YmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1w
bGVSYXRlLCBNYWNoU2VtYXBob3JlIHJlbmRlclNlbWFwaG9yZSkgLT4gKFdlYktpdDo6UmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMKICNlbmRp
ZgogI2lmICFQTEFURk9STShDT0NPQSkKLSAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKFN0cmlu
ZyBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90
IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJl
U2FtcGxlUmF0ZSkgLT4gKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIg
aWRlbnRpZmllcikgU3luY2hyb25vdXMKKyAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKCkgLT4g
KFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgU3lu
Y2hyb25vdXMKICNlbmRpZgogCiAgICAgRGVsZXRlQXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+ICgpIEFzeW5jCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBlYzhiY2YwODdkZjE2
ZGY2MGRiZTAwODBlNGNlYjA2MWQxNzY4ZmY3Li5lMGNhMWFlNTY4ODdjNGRlZjZmYWJkMzRmMTE1
ZDMwYjQzMjgyMGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
QEAgLTI1NSw2ICsyNTUsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNs
YXJlZCgpOgogICAgICAgICAnSVBDOjpEYXRhUmVmZXJlbmNlJywKICAgICAgICAgJ0lQQzo6Rm9u
dFJlZmVyZW5jZScsCiAgICAgICAgICdNYWNoU2VuZFJpZ2h0JywKKyAgICAgICAgJ01hY2hTZW1h
cGhvcmUnLAogICAgICAgICAnTWVkaWFUaW1lJywKICAgICAgICAgJ1N0cmluZycsCiAgICAgICAg
ICdXZWJDb3JlOjpDb2xvclNwYWNlJywKQEAgLTMzNCw2ICszMzUsOCBAQCBkZWYgY29uZGl0aW9u
c19mb3JfaGVhZGVyKGhlYWRlcik6CiAgICAgICAgICciSW5wdXRNZXRob2RTdGF0ZS5oIic6IFsi
UExBVEZPUk0oR1RLKSIsICJQTEFURk9STShXUEUpIl0sCiAgICAgICAgICciTGF5ZXJIb3N0aW5n
Q29udGV4dC5oIic6IFsiUExBVEZPUk0oQ09DT0EpIiwgXSwKICAgICAgICAgJyJHZXN0dXJlVHlw
ZXMuaCInOiBbIlBMQVRGT1JNKElPU19GQU1JTFkpIl0sCisgICAgICAgICc8d3RmL01hY2hTZW5k
UmlnaHQuaD4nOiBbIlBMQVRGT1JNKENPQ09BKSJdLAorICAgICAgICAnPHd0Zi9jb2NvYS9NYWNo
U2VtYXBob3JlLmg+JzogWyJQTEFURk9STShDT0NPQSkiXSwKICAgICB9CiAgICAgaWYgbm90IGhl
YWRlciBpbiBjb25kaXRpb25zOgogICAgICAgICByZXR1cm4gTm9uZQpAQCAtMzU0LDYgKzM1Nyw3
IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19hbmRfaGVhZGVycyhyZWNlaXZlcik6CiAKICAg
ICBub25fdGVtcGxhdGVfd3RmX3R5cGVzID0gZnJvemVuc2V0KFsKICAgICAgICAgJ01hY2hTZW5k
UmlnaHQnLAorICAgICAgICAnTWFjaFNlbWFwaG9yZScsCiAgICAgICAgICdNZWRpYVR5cGUnLAog
ICAgICAgICAnU3RyaW5nJywKICAgICBdKQpAQCAtNDA5LDYgKzQxMyw3IEBAIGRlZiBmb3J3YXJk
X2RlY2xhcmF0aW9uc19hbmRfaGVhZGVyc19mb3JfcmVwbGllcyhyZWNlaXZlcik6CiAKICAgICBu
b25fdGVtcGxhdGVfd3RmX3R5cGVzID0gZnJvemVuc2V0KFsKICAgICAgICAgJ01hY2hTZW5kUmln
aHQnLAorICAgICAgICAnTWFjaFNlbWFwaG9yZScsCiAgICAgICAgICdNZWRpYVRpbWUnLAogICAg
ICAgICAnU3RyaW5nJywKICAgICBdKQpAQCAtNjM5LDYgKzY0NCw3IEBAIGRlZiBoZWFkZXJzX2Zv
cl90eXBlKHR5cGUpOgogCiAgICAgc3BlY2lhbF9jYXNlcyA9IHsKICAgICAgICAgJ01hY2hTZW5k
UmlnaHQnOiBbJzx3dGYvTWFjaFNlbmRSaWdodC5oPiddLAorICAgICAgICAnTWFjaFNlbWFwaG9y
ZSc6IFsnPHd0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg+J10sCiAgICAgICAgICdKU0M6Ok1lc3Nh
Z2VMZXZlbCc6IFsnPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPiddLAogICAgICAgICAn
SlNDOjpNZXNzYWdlU291cmNlJzogWyc8SmF2YVNjcmlwdENvcmUvQ29uc29sZVR5cGVzLmg+J10s
CiAgICAgICAgICdJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGUnOiBbJzxKYXZhU2NyaXB0
Q29yZS9JbnNwZWN0b3JUYXJnZXQuaD4nXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5CmluZGV4IDZlYzZlYjRkYTU1NzczZmNlZDYzZDM4
MjIzM2MzMjU4MTlhOWEzYzMuLmFkZWI4NWY5MGIzZjRkNTliYjczZjQxNjJlMDY4MWE5ZjY3Njky
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5p
dHRlc3QucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0
dGVzdC5weQpAQCAtMzksNyArMzksNyBAQCB0ZXN0c19kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4o
bW9kdWxlX2RpcmVjdG9yeSwgJ3Rlc3RzJykKIAogcmVzZXRfcmVzdWx0cyA9IEZhbHNlCiAKLV90
ZXN0X3JlY2VpdmVyX25hbWVzID0gWydUZXN0V2l0aFN1cGVyY2xhc3MnLCAnVGVzdFdpdGhMZWdh
Y3lSZWNlaXZlcicsICdUZXN0V2l0aG91dEF0dHJpYnV0ZXMnLCAnVGVzdFdpdGhJZk1lc3NhZ2Un
XQorX3Rlc3RfcmVjZWl2ZXJfbmFtZXMgPSBbJ1Rlc3RXaXRoU3VwZXJjbGFzcycsICdUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyJywgJ1Rlc3RXaXRob3V0QXR0cmlidXRlcycsICdUZXN0V2l0aElmTWVz
c2FnZScsICdUZXN0V2l0aE1hY2hTZW1hcGhvcmUnXQogCiAKIGRlZiByZWNlaXZlcl9oZWFkZXJf
ZmlsZV9uYW1lKHJlY2VpdmVyX25hbWUpOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvTWFrZWZpbGUKaW5kZXggODc5NmZmYmM1YTNmODdiOTIzZWQ2Yzk4MDIzOTFhODc2YmFj
MzgyZS4uMzlhZjEzY2U3MDJhNTgzN2RjODcxMjVjN2M1MmNkMjdiMmE3N2VlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlCkBAIC0xLDIgKzEsMiBAQAog
YWxsOgotCXB5dGhvbiAuLi8uLi9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5IC4gVGVzdFdp
dGhTdXBlcmNsYXNzIFRlc3RXaXRoTGVnYWN5UmVjZWl2ZXIgVGVzdFdpdGhvdXRBdHRyaWJ1dGVz
IFRlc3RXaXRoSWZNZXNzYWdlCisJcHl0aG9uIC4uLy4uL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2
ZXIucHkgLiBUZXN0V2l0aFN1cGVyY2xhc3MgVGVzdFdpdGhMZWdhY3lSZWNlaXZlciBUZXN0V2l0
aG91dEF0dHJpYnV0ZXMgVGVzdFdpdGhJZk1lc3NhZ2UgVGVzdFdpdGhNYWNoU2VtYXBob3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1
bWVudERlc2NyaXB0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Rz
L01lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAKaW5kZXggNTk0MDQ0MzkwY2FkYWMyZmYw
Y2RmYWE5ZTMwNTA0NDI3NzgzODBmZS4uODNjNWQwY2IzMzIyMmJiMWE2ZmI3MzQ1NGQ0MDc5ZGQ2
MmU0Y2M2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9N
ZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcApAQCAtNDYsNiAr
NDYsNyBAQAogI2VuZGlmCiAjaW5jbHVkZSAiVGVzdFdpdGhJZk1lc3NhZ2VNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlRl
c3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiVGVzdFdpdGhTdXBlcmNs
YXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJUZXN0V2l0aG91dEF0dHJpYnV0ZXNNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgpAQCAtNjUsNiArNjYsOSBAQAog
I2VuZGlmCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPHd0Zi9jb2NvYS9NYWNoU2VtYXBob3Jl
Lmg+CisjZW5kaWYKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IElQQyB7CkBAIC0yMTUsNiArMjE5LDEyIEBAIE9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4ganNWYWx1
ZUZvckFyZ3VtZW50cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE1lCiAjaWYg
UExBVEZPUk0oR1RLKQogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoSWZNZXNzYWdlX0xv
YWRVUkw6CiAgICAgICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50czxNZXNzYWdl
czo6VGVzdFdpdGhJZk1lc3NhZ2U6OkxvYWRVUkw6OkFyZ3VtZW50cz4oZ2xvYmFsT2JqZWN0LCBk
ZWNvZGVyKTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGNhc2UgTWVzc2FnZU5h
bWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9TZW5kU2VtYXBob3JlOgorICAgICAgICByZXR1cm4g
anNWYWx1ZUZvckRlY29kZWRBcmd1bWVudHM8TWVzc2FnZXM6OlRlc3RXaXRoTWFjaFNlbWFwaG9y
ZTo6U2VuZFNlbWFwaG9yZTo6QXJndW1lbnRzPihnbG9iYWxPYmplY3QsIGRlY29kZXIpOworICAg
IGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9SZWNlaXZlU2VtYXBob3Jl
OgorICAgICAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudHM8TWVzc2FnZXM6OlRl
c3RXaXRoTWFjaFNlbWFwaG9yZTo6UmVjZWl2ZVNlbWFwaG9yZTo6QXJndW1lbnRzPihnbG9iYWxP
YmplY3QsIGRlY29kZXIpOwogI2VuZGlmCiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBA
IC01MTYsNiArNTI2LDE0IEBAIE9wdGlvbmFsPFZlY3RvcjxBcmd1bWVudERlc2NyaXB0aW9uPj4g
bWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zKE1lc3NhZ2VOYW1lIG5hCiAgICAgICAgICAgICB7
InVybCIsICJTdHJpbmciLCBudWxscHRyLCBmYWxzZX0sCiAgICAgICAgICAgICB7InZhbHVlIiwg
ImludDY0X3QiLCBudWxscHRyLCBmYWxzZX0sCiAgICAgICAgIH07CisjZW5kaWYKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmVf
U2VuZFNlbWFwaG9yZToKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxBcmd1bWVudERlc2NyaXB0aW9u
PiB7CisgICAgICAgICAgICB7InMwIiwgIk1hY2hTZW1hcGhvcmUiLCBudWxscHRyLCBmYWxzZX0s
CisgICAgICAgIH07CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3Jl
X1JlY2VpdmVTZW1hcGhvcmU6CisgICAgICAgIHJldHVybiBWZWN0b3I8QXJndW1lbnREZXNjcmlw
dGlvbj4geyB9OwogI2VuZGlmCiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAKaW5k
ZXggNzZmYWQzN2M1NDYwYWRiY2ZlYTM3MmQxODY2NTUwZmE3YzhhODUxMy4uOThjZTMyZDk1NWU3
OTYzOGMyM2UyNWJmNzM4MTMwNzZhMjgyNGZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcApAQCAtNzIsNiArNzIsMTAgQEAg
Y29uc3QgY2hhciogZGVzY3JpcHRpb24oTWVzc2FnZU5hbWUgbmFtZSkKICAgICAgICAgcmV0dXJu
ICJUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1Rlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzIjsKICAgICBj
YXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1RvdWNoRXZlbnQ6CiAgICAg
ICAgIHJldHVybiAiVGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9Ub3VjaEV2ZW50IjsKKyAgICBjYXNl
IE1lc3NhZ2VOYW1lOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmVfUmVjZWl2ZVNlbWFwaG9yZToKKyAg
ICAgICAgcmV0dXJuICJUZXN0V2l0aE1hY2hTZW1hcGhvcmVfUmVjZWl2ZVNlbWFwaG9yZSI7Cisg
ICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3JlX1NlbmRTZW1hcGhvcmU6
CisgICAgICAgIHJldHVybiAiVGVzdFdpdGhNYWNoU2VtYXBob3JlX1NlbmRTZW1hcGhvcmUiOwog
ICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19Mb2FkVVJMOgogICAgICAg
ICByZXR1cm4gIlRlc3RXaXRoU3VwZXJjbGFzc19Mb2FkVVJMIjsKICAgICBjYXNlIE1lc3NhZ2VO
YW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZToKQEAgLTE4MSw2ICsxODUs
OSBAQCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQog
ICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVGVzdFBhcmFtZXRl
ckF0dHJpYnV0ZXM6CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZl
cl9Ub3VjaEV2ZW50OgogICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpUZXN0V2l0aExlZ2Fj
eVJlY2VpdmVyOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9S
ZWNlaXZlU2VtYXBob3JlOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTWFjaFNlbWFw
aG9yZV9TZW5kU2VtYXBob3JlOgorICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpUZXN0V2l0
aE1hY2hTZW1hcGhvcmU7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNz
X0xvYWRVUkw6CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RB
c3luY01lc3NhZ2U6CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX1Rl
c3RBc3luY01lc3NhZ2VXaXRoQ29ubmVjdGlvbjoKQEAgLTI5OCw2ICszMDUsMTQgQEAgYm9vbCBp
c1ZhbGlkTWVzc2FnZU5hbWUoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiAjaWYgKEVOQUJMRShU
T1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9N
RVNTQUdFX0NPTkRJVElPTikpCiAgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5h
bWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVG91Y2hFdmVudCkKICAgICAgICAgcmV0dXJuIHRy
dWU7CisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0g
SVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3JlX1JlY2VpdmVTZW1hcGhvcmUp
CisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
aWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9y
ZV9TZW5kU2VtYXBob3JlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogICAgIGlmICht
ZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfTG9hZFVS
TCkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaAppbmRleCAyM2Y3NTYwODdkNjgzYWQyMmIwNjhlMmE3
MWZkOTVhMGYzY2U1NTVlLi5mYjBkOTFiYTg4ZGM4ZDY4ZWY1YmU3NGEyYjJhMjNmMmQ0MzMzMTM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VO
YW1lcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5h
bWVzLmgKQEAgLTMxLDExICszMSwxMiBAQCBuYW1lc3BhY2UgSVBDIHsKIGVudW0gY2xhc3MgUmVj
ZWl2ZXJOYW1lIDogdWludDhfdCB7CiAgICAgVGVzdFdpdGhJZk1lc3NhZ2UgPSAxCiAgICAgLCBU
ZXN0V2l0aExlZ2FjeVJlY2VpdmVyID0gMgotICAgICwgVGVzdFdpdGhTdXBlcmNsYXNzID0gMwot
ICAgICwgVGVzdFdpdGhvdXRBdHRyaWJ1dGVzID0gNAotICAgICwgSVBDID0gNQotICAgICwgQXN5
bmNSZXBseSA9IDYKLSAgICAsIEludmFsaWQgPSA3CisgICAgLCBUZXN0V2l0aE1hY2hTZW1hcGhv
cmUgPSAzCisgICAgLCBUZXN0V2l0aFN1cGVyY2xhc3MgPSA0CisgICAgLCBUZXN0V2l0aG91dEF0
dHJpYnV0ZXMgPSA1CisgICAgLCBJUEMgPSA2CisgICAgLCBBc3luY1JlcGx5ID0gNworICAgICwg
SW52YWxpZCA9IDgKIH07CiAKIGVudW0gY2xhc3MgTWVzc2FnZU5hbWUgOiB1aW50MTZfdCB7CkBA
IC02MCw2ICs2MSw4IEBAIGVudW0gY2xhc3MgTWVzc2FnZU5hbWUgOiB1aW50MTZfdCB7CiAgICAg
LCBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1RlbXBsYXRlVGVzdAogICAgICwgVGVzdFdpdGhMZWdh
Y3lSZWNlaXZlcl9UZXN0UGFyYW1ldGVyQXR0cmlidXRlcwogICAgICwgVGVzdFdpdGhMZWdhY3lS
ZWNlaXZlcl9Ub3VjaEV2ZW50CisgICAgLCBUZXN0V2l0aE1hY2hTZW1hcGhvcmVfUmVjZWl2ZVNl
bWFwaG9yZQorICAgICwgVGVzdFdpdGhNYWNoU2VtYXBob3JlX1NlbmRTZW1hcGhvcmUKICAgICAs
IFRlc3RXaXRoU3VwZXJjbGFzc19Mb2FkVVJMCiAgICAgLCBUZXN0V2l0aFN1cGVyY2xhc3NfVGVz
dEFzeW5jTWVzc2FnZQogICAgICwgVGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VX
aXRoQ29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhvcmUubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZS5tZXNzYWdlcy5pbgpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mNTI1ODM1M2YwOTRjNDA2YTQyM2Y2MTAwYmNlOWNhODI2MjA2Y2E4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1h
Y2hTZW1hcGhvcmUubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyOCBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBUZXN0V2l0aE1hY2hTZW1hcGhv
cmUgeworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgU2VuZFNlbWFwaG9yZShNYWNoU2Vt
YXBob3JlIHMwKQorICAgIHZvaWQgUmVjZWl2ZVNlbWFwaG9yZSgpIC0+IChNYWNoU2VtYXBob3Jl
IHIwKQorI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2VS
ZWNlaXZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjRlZTQwYzM2YWFkODNmOWU3MDFkODZjOGFlYzc2M2Ez
NzhlYWU4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZVJlY2VpdmVyLmNwcApAQCAtMCwwICsx
LDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAq
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlRlc3RXaXRoTWFjaFNlbWFwaG9yZS5oIgorCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1
ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKKyNpbmNsdWRlICJUZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNz
YWdlcy5oIgorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPHd0Zi9jb2NvYS9NYWNoU2Vt
YXBob3JlLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgVGVzdFdpdGhN
YWNoU2VtYXBob3JlOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6OlNlbmRTZW1hcGhv
cmU6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RX
aXRoTWFjaFNlbWFwaG9yZTo6U2VuZFNlbWFwaG9yZT4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRo
TWFjaFNlbWFwaG9yZTo6c2VuZFNlbWFwaG9yZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisj
ZW5kaWYKKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRl
Y29kZXIpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFRlc3RXaXRoTWFj
aFNlbWFwaG9yZTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYgcmVwbHlFbmNvZGVyKQoreworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6UmVjZWl2ZVNlbWFwaG9yZTo6bmFt
ZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhNYWNo
U2VtYXBob3JlOjpSZWNlaXZlU2VtYXBob3JlPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlz
LCAmVGVzdFdpdGhNYWNoU2VtYXBob3JlOjpyZWNlaXZlU2VtYXBob3JlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyNlbmRpZgorICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKyAgICBV
TlVTRURfUEFSQU0oZGVjb2Rlcik7CisgICAgVU5VU0VEX1BBUkFNKHJlcGx5RW5jb2Rlcik7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hT
ZW1hcGhvcmVNZXNzYWdlcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNzYWdlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzMTIxNWQyZTQ0YjQy
YmU0YjFkMGJlYjJhNmIzNjk4ZjhjZDQ0MzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2VzLmgK
QEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisg
KiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2Fn
ZXNSZXBsaWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYv
Y29jb2EvTWFjaFNlbWFwaG9yZS5oPgorI2VuZGlmCisKKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsK
K25hbWVzcGFjZSBUZXN0V2l0aE1hY2hTZW1hcGhvcmUgeworCitzdGF0aWMgaW5saW5lIElQQzo6
UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUoKQoreworICAgIHJldHVybiBJUEM6OlJl
Y2VpdmVyTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3JlOworfQorCisjaWYgUExBVEZPUk0oQ09D
T0EpCitjbGFzcyBTZW5kU2VtYXBob3JlIHsKK3B1YmxpYzoKKyAgICB1c2luZyBBcmd1bWVudHMg
PSBzdGQ6OnR1cGxlPGNvbnN0IE1hY2hTZW1hcGhvcmUmPjsKKworICAgIHN0YXRpYyBJUEM6Ok1l
c3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aE1hY2hT
ZW1hcGhvcmVfU2VuZFNlbWFwaG9yZTsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IGZhbHNlOworCisgICAgZXhwbGljaXQgU2VuZFNlbWFwaG9yZShjb25zdCBNYWNoU2VtYXBob3Jl
JiBzMCkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhzMCkKKyAgICB7CisgICAgfQorCisgICAgY29u
c3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
YXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7
Cit9OworI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKK2NsYXNzIFJlY2VpdmVTZW1hcGhv
cmUgeworcHVibGljOgorICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKKworICAg
IHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1l
OjpUZXN0V2l0aE1hY2hTZW1hcGhvcmVfUmVjZWl2ZVNlbWFwaG9yZTsgfQorICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9IHRydWU7CisKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8
TWFjaFNlbWFwaG9yZSY+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxN
YWNoU2VtYXBob3JlPjsKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAg
IEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgVGVz
dFdpdGhNYWNoU2VtYXBob3JlCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhvcmVN
ZXNzYWdlc1JlcGxpZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVz
dFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZXNSZXBsaWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWU3MGM0YTEz
YmI3NmEzNjA1NzczYmUzYWE3YzdiZTFhMTlhNjEwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2Fn
ZXNSZXBsaWVzLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
KyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFRlc3RXaXRoTWFjaFNlbWFw
aG9yZSB7CisKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdpdGhNYWNoU2VtYXBob3JlCit9IC8vIG5h
bWVzcGFjZSBNZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCAyODE0ZThiNWVmMzJkNTAyNjU4
YmFiNWFlZjcxM2NmNjE0NzAyYjU3Li44MzVhNjQwOWJkODc3M2Q0MzRhMWQwMTEzNDJiMmNlZjE0
YzU5NTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJD
b3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtMzUsNiArMzUsNyBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9Gb250QXR0cmlidXRlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0NvcmVUZXh0U1BJLmg+CisjaW1wb3J0
IDx3dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICNpbXBvcnQgPFVJS2l0L1VJRm9udC5oPgpAQCAtNjUsNiArNjYsMTkgQEAgT3B0aW9uYWw8V2Vi
Q29yZTo6QXR0cmlidXRlZFN0cmluZz4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpBdHRyaWJ1dGVk
U3RyaW5nPjo6ZGUKICAgICByZXR1cm4geyB7IFdURk1vdmUoYXR0cmlidXRlZFN0cmluZyksIFdU
Rk1vdmUoZG9jdW1lbnRBdHRyaWJ1dGVzKSB9IH07CiB9CiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxX
VEY6Ok1hY2hTZW1hcGhvcmU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV1RGOjpN
YWNoU2VtYXBob3JlJiBzZW1hcGhvcmUpCit7CisgICAgZW5jb2RlciA8PCBzZW1hcGhvcmUuY3Jl
YXRlU2VuZFJpZ2h0KCk7Cit9CisKK09wdGlvbmFsPE1hY2hTZW1hcGhvcmU+IEFyZ3VtZW50Q29k
ZXI8V1RGOjpNYWNoU2VtYXBob3JlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAg
TWFjaFNlbmRSaWdodCBzZW5kUmlnaHQ7CisgICAgaWYgKGRlY29kZXIuZGVjb2RlKHNlbmRSaWdo
dCkpCisgICAgICAgIHJldHVybiBPcHRpb25hbDxXVEY6Ok1hY2hTZW1hcGhvcmU+IHsgc3RkOjpp
bl9wbGFjZSwgV1RGTW92ZShzZW5kUmlnaHQpIH07CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
K30KKwogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKICNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1F
TlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZENyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBkN2I1YTc2YWYyNTIwYzllNzIwMTA2ODA4YTkzNGZkMTk3ODk5ZDI0Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
LmgiCi0jaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLXN0cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIHsKLSAg
ICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyOwotI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1h
cGhvcmU7Ci0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0
aW9uYWw8UmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycz4gZGVjb2RlKERl
Y29kZXImKTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEVuY29kZXI+Ci12b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAotewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcjsKLSNpZiBQTEFURk9STShDT0NPQSkK
LSAgICBlbmNvZGVyIDw8IHNlbmRSaWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOwot
I2VuZGlmCi19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0KLSAgICBPcHRp
b25hbDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcj4gaWRlbnRpZmllcjsKLSAgICBkZWNvZGVy
ID4+IGlkZW50aWZpZXI7Ci0gICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotCi0gICAgcGFyYW1ldGVycy5pZGVudGlmaWVyID0gKmlkZW50aWZpZXI7Ci0K
LSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBPcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmln
aHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKLSAgICBkZWNvZGVyID4+IHNlbmRSaWdo
dEZvclJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOwotICAgIGlmICghc2VuZFJpZ2h0Rm9yUmVz
dW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICBwYXJhbWV0ZXJzLnNlbmRSaWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlID0g
V1RGTW92ZSgqc2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpOwotI2VuZGlm
Ci0KLSAgICByZXR1cm4gcGFyYW1ldGVyczsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
LSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGZhOTZjZGE4NGVjYjdkNDg4YWU0MjkxMzNjMGY1
YjQ0MzcwNDhkYjEuLjUwODIxZDFkYjczODBlMTA2NGUxOWViYjBkOGUzZjdjZGM2YWJhY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC04MSw2
ICs4MSw3IEBACiAjaWYgUExBVEZPUk0oQ09DT0EpCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1h
Y2hTZW5kUmlnaHQ7CitjbGFzcyBNYWNoU2VtYXBob3JlOwogfQogI2VuZGlmCiAKQEAgLTQ4Nyw2
ICs0ODgsMTAgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxDR0FmZmluZVRyYW5z
Zm9ybT4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgQ0dBZmZpbmVUcmFuc2Zv
cm0pOwogICAgIHN0YXRpYyBPcHRpb25hbDxDR0FmZmluZVRyYW5zZm9ybT4gZGVjb2RlKERlY29k
ZXImKTsKIH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdURjo6TWFjaFNlbWFw
aG9yZT4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV1RGOjpNYWNo
U2VtYXBob3JlJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdURjo6TWFjaFNlbWFwaG9yZT4gZGVj
b2RlKERlY29kZXImKTsKK307CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBm
YTAzZGM4NTE0MDAzODU4MjYxNzUzZGVjY2Y5NTc3N2ExYWJjZWExLi4yNGIxMzJiMjIzZjk5Mzg5
MGZhYTEwOTU4ZTZiZmU3MDE0MTIxM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE5NjgsNyArMTk2OCw2IEBACiAJCUY0MkQ2MzQx
MjJBMEVGREYwMEQyRkIzQSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MkQ2MzNGMjJBMEVGRDMwMEQyRkIz
QSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEuaCAqLzsgfTsKIAkJRjQzMEU5NDIyMjQ3MzM1RjAw
NUZFMDUzIC8qIFdlYnNpdGVNZXRhVmlld3BvcnRQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzBFOTQxMjI0NzMyQTkwMDVGRTA1MyAvKiBX
ZWJzaXRlTWV0YVZpZXdwb3J0UG9saWN5LmggKi87IH07CiAJCUY0MzBFOTQ0MjI0NzNERkYwMDVG
RTA1MyAvKiBXZWJDb250ZW50TW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQzMEU5NDMyMjQ3M0RCODAwNUZFMDUzIC8qIFdlYkNvbnRlbnRNb2Rl
LmggKi87IH07Ci0JCUY0MzdDOEQ5MjU5M0I3RTMwMERCOEExQyAvKiBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNDM3QzhEODI1OTNCN0UzMDBEQjhBMUMgLyogUmVtb3RlUmVuZGVy
aW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oICovOyB9OwogCQlGNDM4Q0QxQzIyNDE0MjE0
MDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzhDRDFCMjI0MTQwQTYwMERFNkREQSAvKiBXS1dl
YnBhZ2VQcmVmZXJlbmNlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywg
KTsgfTsgfTsKIAkJRjQzOENEMUYyMjQxNEQ0MDAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVu
Y2VzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0MzhDRDFFMjI0MTRENDAwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlc0ludGVy
bmFsLmggKi87IH07CiAJCUY0MzhDRDIxMjI0MUY2OTUwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVm
ZXJlbmNlc1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0MzhDRDIwMjI0MUY2OTUwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlc1By
aXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtNTc4Niw3ICs1Nzg1LDYgQEAKIAkJRjQyRDYzNDAyMkEwRUZEMzAwRDJGQjNBIC8qIFdlYkF1
dG9jb3JyZWN0aW9uRGF0YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbTsgcGF0aCA9IGlvcy9XZWJBdXRvY29ycmVjdGlv
bkRhdGEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzBFOTQxMjI0NzMyQTkw
MDVGRTA1MyAvKiBXZWJzaXRlTWV0YVZpZXdwb3J0UG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YnNpdGVNZXRhVmlld3BvcnRQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjQzMEU5NDMyMjQ3M0RCODAwNUZFMDUzIC8qIFdlYkNvbnRlbnRNb2RlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkNvbnRlbnRNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUY0MzdD
OEQ4MjU5M0I3RTMwMERCOEExQyAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJh
bWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBh
cmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzOENEMUIyMjQxNDBB
NjAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vi
cGFnZVByZWZlcmVuY2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzhDRDFE
MjI0MTRBRDYwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlcy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdLV2VicGFnZVByZWZlcmVuY2VzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNDM4Q0QxRTIyNDE0RDQwMDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXNJ
bnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYnBhZ2VQcmVmZXJlbmNlc0ludGVybmFsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NTI1LDcgKzY1MjMsNiBAQAogCQkJCUUx
Q0MxQjhFMTJEN0VBREYwMDYyNTgzOCAvKiBQcmludEluZm8uaCAqLywKIAkJCQk0NjNGRDQ4MTFF
Qjk0RUFEMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggKi8sCiAJCQkJOUIx
MjI5RDAyM0ZGMkE1RTAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVy
LmggKi8sCi0JCQkJRjQzN0M4RDgyNTkzQjdFMzAwREI4QTFDIC8qIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCAqLywKIAkJCQk1Q0I3QUZFNjIzQzY4MUIwMDBFNDlD
RjMgLyogUmVzb3VyY2VMb2FkSW5mby5oICovLAogCQkJCTVDMDA5OTNCMjQxN0ZCN0UwMEQ1M0My
NSAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oICovLAogCQkJCTQxMDQ4MkNC
MURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmNwcCAqLywKQEAgLTExODcwLDcgKzExODY3
LDYgQEAKIAkJCQkxQTU3MDRGQzFCRTE3NTExMDA4NzRBRjEgLyogUmVtb3RlT2JqZWN0SW52b2Nh
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDMTMzODAxODU5MEFFNDAwRjNFQzA1IC8qIFJl
bW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUMxMzM4NjE4NTkwQzQ2
MDBGM0VDMDUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJRjQzN0M4RDkyNTkzQjdFMzAwREI4QTFDIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRD
cmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTk0NzkwMTg3QjNCM0Ew
MDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY1OTQ3QTgxODdCNTE3NjAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTk0NzlCMTg3QjNCNjAwMDQzNzg1NyAv
KiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCA2MWI0YzgyNDk1NzZkZTEy
OGE5YWJlZDA5MjdmNDFlZTQxNjJiZTZlLi5jMWUzNmNlZGExZDIzN2M2YTg5NWM4NTE3NmZhNTY0
YTJmZTlhOGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBA
IC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgog
I2luY2x1ZGUgIkltYWdlRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eS5oIgotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVh
dGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgpAQCAtNjcsMTIgKzY2LDExIEBAIHZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNzKCkKICAgICBhdXRvJiBj
b25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24oKTsKICAgICBjb25uZWN0aW9uLmFkZENsaWVudCgqdGhpcyk7CiAgICAgY29ubmVjdGlv
bi5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVSZW5kZXJpbmdCYWNrZW5kKHsKLSAg
ICAgICAgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwKKyAgICBzZW5kKE1lc3NhZ2VzOjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVSZW5kZXJpbmdCYWNrZW5kKG1fcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgbV9yZXN1
bWVEaXNwbGF5TGlzdFNlbWFwaG9yZS5jcmVhdGVTZW5kUmlnaHQoKSwKKyAgICAgICAgLCBtX3Jl
c3VtZURpc3BsYXlMaXN0U2VtYXBob3JlCiAjZW5kaWYKLSAgICB9KSwgMCk7CisgICAgKSwgMCk7
CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWVzdGFibGlzaEdQVVBy
b2Nlc3NDb25uZWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAppbmRl
eCAzNGUzMGNlMTE5MzYwYzkzMGMyYjA3ZTljMzA4YTFiNjQwZWQwYTNlLi5lMDA3NGU5MTczMzZh
YjI0ZmU1Y2I1Njk5NjJmZDEwNGI4NjZiZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkuY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZm
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dlYkF1ZGlvQnVmZmVyTGlzdC5oPgogI2luY2x1ZGUg
PG1hY2gvbWFjaF90aW1lLmg+Ci0jaW5jbHVkZSA8d3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaD4K
ICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTgwLDcgKzc5LDcgQEAgdm9pZCBSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0YXJ0UmVuZGVyaW5nVGhyZWFkKCkKIAogICAgIGF1
dG8gb2ZmVGhyZWFkUmVuZGVyaW5nID0gW3RoaXNdKCkgbXV0YWJsZSB7CiAgICAgICAgIGRvIHsK
LSAgICAgICAgICAgIG1fcmVuZGVyU2VtYXBob3JlLT53YWl0KCk7CisgICAgICAgICAgICBtX3Jl
bmRlclNlbWFwaG9yZS53YWl0KCk7CiAgICAgICAgICAgICBpZiAobV9zaG91bGRTdG9wVGhyZWFk
KQogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC05OCw4ICs5Nyw3IEBAIHZvaWQgUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5OjpzdG9wUmVuZGVyaW5nVGhyZWFkKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgbV9zaG91bGRTdG9wVGhyZWFkID0gdHJ1ZTsKLSAgICBpZiAobV9yZW5kZXJT
ZW1hcGhvcmUpCi0gICAgICAgIG1fcmVuZGVyU2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICBtX3Jl
bmRlclNlbWFwaG9yZS5zaWduYWwoKTsKICAgICBtX3JlbmRlclRocmVhZC0+d2FpdEZvckNvbXBs
ZXRpb24oKTsKICAgICBtX3JlbmRlclRocmVhZCA9IG51bGxwdHI7CiAjZW5kaWYKQEAgLTEwNywy
MCArMTA1LDE0IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpzdG9wUmVuZGVy
aW5nVGhyZWFkKCkKIAogdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RU
b0dQVVByb2Nlc3MoKQogewotICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGRl
c3RpbmF0aW9uSUQ7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgTWFjaFNlbmRSaWdodCByZW5k
ZXJTZW1hcGhvcmVTZW5kUmlnaHQ7Ci0jZW5kaWYKLQogICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogICAg
IGNvbm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlzKTsKICAgICBhdXRvIGRpZFN1Y2NlZWQgPSBjb25u
ZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kU3luYygKLSAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKG1faW5wdXREZXZp
Y2VJZCwgbV9udW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSwg
c2FtcGxlUmF0ZSgpLCBoYXJkd2FyZVNhbXBsZVJhdGUoKSksCi0gICAgICAgIE1lc3NhZ2VzOjpS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbjo6UmVw
bHkoZGVzdGluYXRpb25JRAorICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb24obV9pbnB1dERldmljZUlkLCBtX251bWJl
ck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscygpLCBzYW1wbGVSYXRlKCks
IGhhcmR3YXJlU2FtcGxlUmF0ZSgpCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgICAgICAs
IHJlbmRlclNlbWFwaG9yZVNlbmRSaWdodAorICAgICAgICAgICAgLCBtX3JlbmRlclNlbWFwaG9y
ZQogI2VuZGlmCi0gICAgICAgICksIDApOworICAgICAgICAgICAgKSwgTWVzc2FnZXM6OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZXBseSht
X2Rlc3RpbmF0aW9uSUQpLCAwKTsKIAogICAgIGlmICghZGlkU3VjY2VlZCkgewogICAgICAgICAv
LyBUaGUgR1BVUHJvY2VzcyBsaWtlbHkgY3Jhc2hlZCBkdXJpbmcgdGhpcyBzeW5jaHJvbm91cyBJ
UEMuIGdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoKSB3aWxsIGdldCBjYWxsZWQgdG8gcmVj
b25uZWN0IHRvIHRoZSBHUFVQcm9jZXNzLgpAQCAtMTI4LDcgKzEyMCw2IEBAIHZvaWQgUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNzKCkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG1fZGVzdGluYXRpb25JRCA9IGRlc3RpbmF0aW9uSUQ7CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBtX2N1cnJlbnRGcmFtZSA9IDA7CkBAIC0xMzYsNyArMTI3
LDYgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nl
c3MoKQogICAgIGdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQpOwog
ICAgIG1fcmluZ0J1ZmZlci0+YWxsb2NhdGUoc3RyZWFtRm9ybWF0LCBtX251bWJlck9mRnJhbWVz
KTsKICAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6V2ViQXVkaW9C
dWZmZXJMaXN0PihzdHJlYW1Gb3JtYXQpOwotICAgIG1fcmVuZGVyU2VtYXBob3JlID0gbWFrZVVu
aXF1ZTxNYWNoU2VtYXBob3JlPihXVEZNb3ZlKHJlbmRlclNlbWFwaG9yZVNlbmRSaWdodCkpOwog
I2VuZGlmCiAKICAgICBzdGFydFJlbmRlcmluZ1RocmVhZCgpOwpAQCAtMjA1LDkgKzE5NSw3IEBA
IHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRp
ZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0CiAgICAgb2xkQ29ubmVjdGlvbi5yZW1vdmVDbGllbnQo
KnRoaXMpOwogCiAgICAgc3RvcFJlbmRlcmluZ1RocmVhZCgpOwotI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgIG1fcmVuZGVyU2VtYXBob3JlID0gbnVsbHB0cjsKLSNlbmRpZgorCiAgICAgY29ubmVj
dFRvR1BVUHJvY2VzcygpOwogCiAgICAgaWYgKGlzUGxheWluZygpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5LmgKaW5kZXggOGQyYzYzZWI5YzU1ZmI4YjJhYzU0YmFhZGU4ZjczY2U1ZDVi
MWNjNS4uYWY2MzZmZjM2NjQ5YzI0MDA2MjMyNGFhZWFhMjBmMTdkMTU4MGZmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCkBAIC0zOCw2ICszOCw4IEBACiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAjaW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgorI2luY2x1ZGUgPHd0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg+CiAjZWxzZQogI2luY2x1ZGUg
PFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oPgogI2VuZGlmCkBAIC00NywxMSAr
NDksNyBAQCBjbGFzcyBDQVJpbmdCdWZmZXI7CiBjbGFzcyBXZWJBdWRpb0J1ZmZlckxpc3Q7CiB9
CiAKLW5hbWVzcGFjZSBXVEYgewotI2lmIFBMQVRGT1JNKENPQ09BKQotY2xhc3MgTWFjaFNlbWFw
aG9yZTsKLSNlbmRpZgotfQorCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0xMDQsNyArMTAy
LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB1aW50NjRfdCBtX251bWJl
ck9mRnJhbWVzIHsgMCB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDQVJpbmdCdWZm
ZXI+IG1fcmluZ0J1ZmZlcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpNYWNoU2VtYXBob3Jl
PiBtX3JlbmRlclNlbWFwaG9yZTsKKyAgICBNYWNoU2VtYXBob3JlIG1fcmVuZGVyU2VtYXBob3Jl
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q+IG1fYXVk
aW9CdWZmZXJMaXN0OwogICAgIHVpbnQ2NF90IG1fY3VycmVudEZyYW1lIHsgMCB9OwogICAgIGZs
b2F0IG1fc2FtcGxlUmF0ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418404</attachid>
            <date>2021-01-26 05:46:53 -0800</date>
            <delta_ts>2021-01-26 06:12:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220919-20210126154651.patch</filename>
            <type>text/plain</type>
            <size>65324</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRjZDQwMzEzYzI0MGZiMjllYjFlMTFj
MjQ2MTBjODY0YjAxMzc1NGQuLmYzNTI1MDE0ZmI2NmE4NGZmMDEzYzQzNGYxZTdhOTFjMmRkNGE5
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMDEtMjYgIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNYWNoU2VtYXBob3JlIGRvZXMgbm90IHdvcmsg
d2VsbCB3aXRoIElQQyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwOTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW1wbGVtZW50IG1vdmUgY29uc3RydWN0b3IgYW5kIG1vdmUgYXNzaWdu
bWVudCBvcGVyYXRvciBmb3IgTWFjaFNlbWFwaG9yZS4KKyAgICAgICAgTWFrZXMgaXQgcG9zc2li
bGUgdG8gY3JlYXRlIHR5cGVzIHRoYXQgaG9sZCBNYWNoU2VtYXBob3JlIGJ1dCBzdGlsbAorICAg
ICAgICBhcmUgZGVjb2RlKClhYmxlIGZyb20gYSBJUEMgbWVzc2FnZS4gVGhlIGRlY29kZWQgb2Jq
ZWN0cyBhcmUgaGVsZCB3aXRoCisgICAgICAgIE9wdGlvbmFsLCBhbmQgdGhpcyBmb3JjZXMgdGhl
IHN1Ym9iamVjdHMgdG8gaGF2ZSBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisKKyAgICAgICAg
QWRkIGFzc2VydHMgdGhhdCB0aGUgbW92ZWQtYXdheSBvYmplY3QgaXMgbm90IHVzZWQuCisgICAg
ICAgIEFkZCB0aGUgYXNzZXJ0cyBhcyBhc3NlcnRzIG9uIHRoZSBjYWxsIHJldHVybiB2YWx1ZXMs
IHNvIHRoZSB2YWx1ZXMKKyAgICAgICAgYXJlIGFsc28gY2hlY2tlZCBvbiBub3JtYWwgb2JqZWN0
cyBvbiBub3JtYWwgb3BlcmF0aW9uLgorCisgICAgICAgICogd3RmL2NvY29hL01hY2hTZW1hcGhv
cmUuY3BwOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3JlOjpNYWNoU2VtYXBob3JlKToKKyAg
ICAgICAgKFdURjo6TWFjaFNlbWFwaG9yZTo6fk1hY2hTZW1hcGhvcmUpOgorICAgICAgICAoV1RG
OjpNYWNoU2VtYXBob3JlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3Jl
OjpzaWduYWwpOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3JlOjp3YWl0KToKKyAgICAgICAg
KFdURjo6TWFjaFNlbWFwaG9yZTo6d2FpdEZvcik6CisgICAgICAgIChXVEY6Ok1hY2hTZW1hcGhv
cmU6OmNyZWF0ZVNlbmRSaWdodCBjb25zdCk6CisgICAgICAgIChXVEY6Ok1hY2hTZW1hcGhvcmU6
OmRlc3Ryb3kpOgorICAgICAgICAqIHd0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg6CisgICAgICAg
IChXVEY6Ok1hY2hTZW1hcGhvcmU6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorCiAyMDIxLTAxLTIz
ICBYYW4gTG9wZXogIDx4YW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBBbGxvdyB0byBi
dWlsZCBXZWJBc3NlbWJseSB3aXRob3V0IEIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRiMDUyNDNhMmRkZDEyMjFl
ZmMyMTRjMjAwOWM4MWQyZDFjZjdmMjQuLjU5M2JiZDE0MDc2MGZmOWE0Yzg4ZjYyODI4NmJlOTA0
ZGQ4NGJjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA5IEBACisyMDIxLTAxLTI2ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFjaFNlbWFwaG9yZSBk
b2VzIG5vdCB3b3JrIHdlbGwgd2l0aCBJUEMgbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDkxOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhbiBlbmNvZGVyIGFuZCBkZWNv
ZGVyIGZvciBXVEY6Ok1hY2hTZW1hcGhvcmUuIE1ha2VzIGl0IHBvc3NpYmxlIHRvIHNlbmQgaXQK
KyAgICAgICAgdmlhIElQQyBhcyBpdHMgb3duIHR5cGUsIG5vdCBhcyBNYWNoU2VuZFJpZ2h0Lgor
CisgICAgICAgIEFzIGFuIGV4YW1wbGUsIGNoYW5nZXMgZXhpc3RpbmcgdXNlcyBvZiBNYWNoU2Vu
ZFJpZ2h0IGZvciBzZW1hcGhvcmVzIGluIG1lc3NhZ2VzIGFzCisgICAgICAgIE1hY2hTZW1hcGhv
cmVzLCBkZXNjcmliZWQgYmVsb3cuCisKKyAgICAgICAgQ2hhbmdlcyBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHkgdG8gc2VuZCBpdHMgb3duIHNlbWFwaG9yZSBmcm9tCisgICAgICAgIFdlYlBy
b2Nlc3MgdG8gR1BVUHJvY2Vzcy4gUHJldmlvdXNseSB0aGUgc2VtYXBob3JlIHdvdWxkIGJlIHNl
bnQgYmFjayBieQorICAgICAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci4gUHJldmlv
dXNseSB0aGUgY29kZSBzdHJ1Y3R1cmUgaXMgbW9yZQorICAgICAgICBjb21wbGljYXRlZCB0aGFu
IG5lY2Nlc3NhcnksIGFzIHRoZSBzZW1hcGhvcmUgaG9sZGVyIHdhcyBiZWluZworICAgICAgICBu
dWxsLWNoZWNrZWQsIHJlc2V0IGFuZCByZS1zZWF0ZWQuIFRoZSBXZWJQcm9jZXNzIGdldHMgYWxy
ZWFkeSB0byBjaG9vc2UKKyAgICAgICAgdGhlIHNlbWFwaG9yZXMgR1BVUHJvY2VzcyB1c2VzLCBz
byB0aGlzIHNob3VsZCBub3QgaW5jcmVhc2Ugc2VjdXJpdHkKKyAgICAgICAgc3VyZmFjZS4gVGhl
IGNoYW5nZSBjaG9zZW4gaGVyZSBzaWRlLXN0ZXBzIHRoZSBzaG9ydGNvbWluZyBvZiB0aGUgSVBD
CisgICAgICAgIHN5c3RlbSB3aGVyZSB1bnBhY2tpbmcgb2JqZWN0cyBmcm9tIHRoZSBSZXBseSBt
ZXNzYWdlcyBtYW5kYXRlcyB0aGF0IGEKKyAgICAgICAgY29uc3RydWN0ZWQgdmVyc2lvbiBvZiB0
aGF0IHR5cGUgZXhpc3RzLiBGb3IgcHJldmlvdXMgTWFjaFNlbmRSaWdodAorICAgICAgICBlbXB0
eS1jb25zdHJ1Y3RlZCBvYmplY3QgaXMgc2ltcGxlLCBidXQgZm9yIE1hY2hTZW1hcGhvcmUKKyAg
ICAgICAgZW1wdHktY29uc3RydWN0ZWQgb2JqZWN0IGNyZWF0ZXMgdW5uZWNlc3NhcnkgY29tcGxp
Y2F0aW9uIHRoYXQgaXMgbm90CisgICAgICAgIHJlcXVpcmVkIG90aGVyd2lzZSBhdCB0aGUgbW9t
ZW50LiBUaGUgYWx0ZXJuYXRpdmUgdG8gd2hhdCB3YXMgY2hvc2VuCisgICAgICAgIGhlcmUgd291
bGQgYmUgdG8gaG9sZCB3aXRoIE9wdGlvbmFsPE1hY2hTZW1hcGhvcmU+IGFuZCBhZGQgYQorICAg
ICAgICBlbXB0eS1pbml0aWFsaXppbmcgY29uc3RydWN0b3IgdG8gaG9sZCB0aGUgb2JqZWN0IHdo
ZXJlIHRvIHVucGFjayB0aGUKKyAgICAgICAgc2VtYXBob3JlIG9iamVjdCBmcm9tIHRoZSBSZXBs
eS4KKworICAgICAgICBDaGFuZ2VzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgdG8gcmVjZWl2ZSBp
dHMgcGFyYW1ldGVycyBmcm9tIHRoZSBub3JtYWwKKyAgICAgICAgbWVzc2FnZSBwYXJhbWV0ZXJz
IGluc3RlYWQgb2YgcmVkdW5kYW50CisgICAgICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVh
dGlvblBhcmFtZXRlcnMuIFRoZSBJUEMgZ2VuZXJhdG9yIGFscmVhZHkKKyAgICAgICAgZ2VuZXJh
dGVzIDE6MSBpZGVudGljYWwgc3RydWN0dXJlLCBpdCBpcyBqdXN0IHRoZSBtZXNzYWdlCisgICAg
ICAgIE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVSZW5kZXJpbmdC
YWNrZW5kLiBUaGVyZSBpcyBubworICAgICAgICBuZWVkIHRvIGRvdWJsZS13cmFwIHRoZSBzaW1w
bGUgbGlzdCBvZiBwYXJhbWV0ZXJzLiBUaGUgZG91YmxlLXdyYXBwaW5nCisgICAgICAgIGlzIGEg
cHJvYmxlbTogVGhlIG1lc3NhZ2Ugc3lzdGVtIHBhcmFtZXRlcnMgYXJlIG9mIG93bmVyc2hpcCAi
Y29uc3QKKyAgICAgICAgcmVmZXJlbmNlIiwgd2hpY2ggaXMgd2hhdCBpcyBleHBlY3RlZC4KKyAg
ICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyBjb250ZW50cyB3
ZXJlIG9mIG93bmVyc2hpcAorICAgICAgICAidmFsdWUiLCB3aGljaCB3b3JrcyBhcyBleHBlY3Rl
ZCBvbmx5IGZvciBzaW1wbGUgcHJpbWl0aXZlIHR5cGVzLgorICAgICAgICBFc3NlbnRpYWxseSBw
cmV2aW91c2x5IGNhbGxpbmcgdGhlIElQQyBmdW5jdGlvbiBtZWFudCB0cmFuc2ZlcmluZworICAg
ICAgICBvYmplY3RzIHRvIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMu
IFRoaXMgaXMgbm90IGhvdyB0aGUKKyAgICAgICAgSVBDIHN5c3RlbSBpcyBtZWFudCB0byB3b3Jr
LiBUaGUgaW50ZW50aW9uIG9mIGEgSVBDIGNhbGwgaXMgdG8sIGJ5CisgICAgICAgIGRlZmF1bHQs
IHJlZmVyZW5jZSBpdHMgYXJndW1lbnRzIGZvciB0aGUgcHVycG9zZSBvZiBlbmNvZGluZy4gVGhl
IHBhdGNoCisgICAgICAgIHRyaWVzIHRvIGFjaGlldmUgYSBiaXQgdGhlIHNhbWUgZ29hbCBhcyB0
aGUgb3JpZ2luYWwKKyAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1l
dGVycyBwcmVzdW1hYmx5IGhhZCwgaS5lLiB0byBhdm9pZAorICAgICAgICBwcm9ibGVtcyB3aXRo
ICNpZiBQTEFURk9STShDT0NPQSktI2Vsc2UgaW4gbWV0aG9kIGRlY2xhcmF0aW9ucyBhbmQKKyAg
ICAgICAgZGVmaW5pdGlvbnMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3Rvci4KKwor
ICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0Jh
Y2tlbmQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
OgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4
dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpjcmVh
dGVBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXI6OmRlbGV0ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6c3RhcnRBdWRpb0Rlc3RpbmF0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0b3BBdWRpb0Rl
c3RpbmF0aW9uKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwOgorICAg
ICAgICAoSVBDOjpqc1ZhbHVlRm9yQXJndW1lbnRzKToKKyAgICAgICAgKElQQzo6bWVzc2FnZUFy
Z3VtZW50RGVzY3JpcHRpb25zKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNz
YWdlTmFtZXMuY3BwOgorICAgICAgICAoSVBDOjpkZXNjcmlwdGlvbik6CisgICAgICAgIChJUEM6
OnJlY2VpdmVyTmFtZSk6CisgICAgICAgIChJUEM6OmlzVmFsaWRNZXNzYWdlTmFtZSk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmg6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlLm1lc3NhZ2VzLmluOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1h
Y2hTZW1hcGhvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
VGVzdFdpdGhNYWNoU2VtYXBob3JlOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJL
aXQ6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNzYWdlcy5o
OiBBZGRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoTWFjaFNlbWFwaG9y
ZTo6U2VuZFNlbWFwaG9yZTo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhNYWNo
U2VtYXBob3JlOjpTZW5kU2VtYXBob3JlOjpTZW5kU2VtYXBob3JlKToKKyAgICAgICAgKE1lc3Nh
Z2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6OlNlbmRTZW1hcGhvcmU6OmFyZ3VtZW50cyBjb25z
dCk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhNYWNoU2VtYXBob3JlOjpSZWNlaXZlU2Vt
YXBob3JlOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6
OlJlY2VpdmVTZW1hcGhvcmU6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVk
LgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXVEY6Ok1hY2hTZW1hcGhvcmU+OjplbmNvZGUp
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdURjo6TWFjaFNlbWFwaG9yZT46OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFt
ZXRlcnMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpjb25uZWN0
VG9HUFVQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHk6OnN0YXJ0UmVuZGVyaW5nVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpzdG9wUmVuZGVyaW5nVGhyZWFkKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpncHVQcm9j
ZXNzQ29ubmVjdGlvbkRpZENsb3NlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaDoKKwogMjAyMS0wMS0yNCAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIFdLMl0gdGhldmVyZ2Uu
Y29tIC0gcnViYmVyIGJhbmQgc2Nyb2xsaW5nIGF0IHRoZSB0b3Agb2YgdGhlIHBhZ2UgY2F1c2Vz
IGFuIGFicnVwdCBqdW1wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NYWNoU2Vt
YXBob3JlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuY3BwCmluZGV4
IDkyZmNmMTVjMDdkOTI0YTQ1MDc5MzdmZDIzMDQ1NzJjNGRiYmI5NjYuLjZmYjM1NzdlYWQzODQ4
Y2Y4MGMwODU4ODFjN2U2YWUxN2NlM2NkMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2Nv
Y29hL01hY2hTZW1hcGhvcmUuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1h
cGhvcmUuY3BwCkBAIC0zNiw2ICszNiwxMiBAQCBNYWNoU2VtYXBob3JlOjpNYWNoU2VtYXBob3Jl
KCkKICAgICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0ID09IEtFUk5fU1VDQ0VTUyk7CiB9CiAKK01h
Y2hTZW1hcGhvcmU6Ok1hY2hTZW1hcGhvcmUoTWFjaFNlbWFwaG9yZSYmIG90aGVyKQorICAgIDog
bV9zZW5kUmlnaHQoV1RGTW92ZShvdGhlci5tX3NlbmRSaWdodCkpCisgICAgLCBtX3NlbWFwaG9y
ZShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fc2VtYXBob3JlLCBTRU1BUEhPUkVfTlVMTCkpCit7Cit9
CisKIE1hY2hTZW1hcGhvcmU6Ok1hY2hTZW1hcGhvcmUoTWFjaFNlbmRSaWdodCYmIHNlbmRSaWdo
dCkKICAgICA6IG1fc2VuZFJpZ2h0KFdURk1vdmUoc2VuZFJpZ2h0KSkKICAgICAsIG1fc2VtYXBo
b3JlKG1fc2VuZFJpZ2h0LnNlbmRSaWdodCgpKQpAQCAtNDUsMjkgKzUxLDU2IEBAIE1hY2hTZW1h
cGhvcmU6Ok1hY2hTZW1hcGhvcmUoTWFjaFNlbmRSaWdodCYmIHNlbmRSaWdodCkKIAogTWFjaFNl
bWFwaG9yZTo6fk1hY2hTZW1hcGhvcmUoKQogewotICAgIGlmICghbV9zZW5kUmlnaHQpCi0gICAg
ICAgIHNlbWFwaG9yZV9kZXN0cm95KG1hY2hfdGFza19zZWxmKCksIG1fc2VtYXBob3JlKTsKKyAg
ICBkZXN0cm95KCk7Cit9CisKK01hY2hTZW1hcGhvcmUmIE1hY2hTZW1hcGhvcmU6Om9wZXJhdG9y
PShNYWNoU2VtYXBob3JlJiYgb3RoZXIpCit7CisgICAgaWYgKHRoaXMgIT0gJm90aGVyKSB7Cisg
ICAgICAgIGRlc3Ryb3koKTsKKyAgICAgICAgbV9zZW5kUmlnaHQgPSBXVEZNb3ZlKG90aGVyLm1f
c2VuZFJpZ2h0KTsKKyAgICAgICAgbV9zZW1hcGhvcmUgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1f
c2VtYXBob3JlLCBTRU1BUEhPUkVfTlVMTCk7CisgICAgfQorCisgICAgcmV0dXJuICp0aGlzOwog
fQogCiB2b2lkIE1hY2hTZW1hcGhvcmU6OnNpZ25hbCgpCiB7Ci0gICAgc2VtYXBob3JlX3NpZ25h
bChtX3NlbWFwaG9yZSk7CisgICAgYXV0byByZXQgPSBzZW1hcGhvcmVfc2lnbmFsKG1fc2VtYXBo
b3JlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0ID09IEtFUk5fU1VDQ0VTUyk7CiB9CiAK
IHZvaWQgTWFjaFNlbWFwaG9yZTo6d2FpdCgpCiB7Ci0gICAgc2VtYXBob3JlX3dhaXQobV9zZW1h
cGhvcmUpOworICAgIGF1dG8gcmV0ID0gc2VtYXBob3JlX3dhaXQobV9zZW1hcGhvcmUpOworICAg
IEFTU0VSVF9VTlVTRUQocmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTKTsKIH0KIAogdm9pZCBNYWNo
U2VtYXBob3JlOjp3YWl0Rm9yKFNlY29uZHMgdGltZW91dCkKIHsKICAgICBhdXRvIHNlY29uZHMg
PSB0aW1lb3V0LnNlY29uZHNBczx1bnNpZ25lZD4oKTsKLSAgICBzZW1hcGhvcmVfdGltZWR3YWl0
KG1fc2VtYXBob3JlLCB7IHNlY29uZHMsIHN0YXRpY19jYXN0PGNsb2NrX3Jlc190Pih0aW1lb3V0
Lm5hbm9zZWNvbmRzQXM8dWludDY0X3Q+KCkgLSBzZWNvbmRzICogTlNFQ19QRVJfU0VDKSB9KTsK
KyAgICBhdXRvIHJldCA9IHNlbWFwaG9yZV90aW1lZHdhaXQobV9zZW1hcGhvcmUsIHsgc2Vjb25k
cywgc3RhdGljX2Nhc3Q8Y2xvY2tfcmVzX3Q+KHRpbWVvdXQubmFub3NlY29uZHNBczx1aW50NjRf
dD4oKSAtIHNlY29uZHMgKiBOU0VDX1BFUl9TRUMpIH0pOworICAgIEFTU0VSVF9VTlVTRUQocmV0
LCByZXQgPT0gS0VSTl9TVUNDRVNTIHx8IHJldCA9PSBLRVJOX09QRVJBVElPTl9USU1FRF9PVVQp
OwogfQogCi1NYWNoU2VuZFJpZ2h0IE1hY2hTZW1hcGhvcmU6OmNyZWF0ZVNlbmRSaWdodCgpCitN
YWNoU2VuZFJpZ2h0IE1hY2hTZW1hcGhvcmU6OmNyZWF0ZVNlbmRSaWdodCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIE1hY2hTZW5kUmlnaHQ6OmNyZWF0ZShtX3NlbWFwaG9yZSk7CiB9CiAKK3ZvaWQg
TWFjaFNlbWFwaG9yZTo6ZGVzdHJveSgpCit7CisgICAgaWYgKG1fc2VuZFJpZ2h0KSB7CisgICAg
ICAgIG1fc2VuZFJpZ2h0ID0gTWFjaFNlbmRSaWdodCgpOworICAgICAgICBtX3NlbWFwaG9yZSA9
IFNFTUFQSE9SRV9OVUxMOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtX3NlbWFw
aG9yZSA9PSBTRU1BUEhPUkVfTlVMTCkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmV0ID0g
c2VtYXBob3JlX2Rlc3Ryb3kobWFjaF90YXNrX3NlbGYoKSwgbV9zZW1hcGhvcmUpOworICAgIEFT
U0VSVF9VTlVTRUQocmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTKTsKKyAgICBtX3NlbWFwaG9yZSA9
IFNFTUFQSE9SRV9OVUxMOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaCBiL1NvdXJjZS9XVEYvd3RmL2NvY29h
L01hY2hTZW1hcGhvcmUuaAppbmRleCBiZTdjZWEwNDZiODEyY2JjM2ViM2E3MjEzMGQ5YTViYTAw
OTNmOTJmLi40YjVkYjc0ZTcxNmMzMjhmNzdiMjYyZGI5ZDNiMGNjMTVjZDkwNzljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oCkBAIC0zNywxNiArMzcsMjAgQEAgY2xhc3MgTWFj
aFNlbWFwaG9yZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFjaFNlbWFwaG9yZSk7CiBw
dWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1hY2hTZW1hcGhvcmUoKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgTWFjaFNlbWFwaG9yZShNYWNoU2VtYXBob3JlJiYpOwogICAgIFdURl9F
WFBPUlRfUFJJVkFURSBleHBsaWNpdCBNYWNoU2VtYXBob3JlKE1hY2hTZW5kUmlnaHQmJik7CiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIH5NYWNoU2VtYXBob3JlKCk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIE1hY2hTZW1hcGhvcmUmIG9wZXJhdG9yPShNYWNoU2VtYXBob3JlJiYpOwogCiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2lnbmFsKCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgd2FpdCgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHdhaXRGb3IoU2Vjb25k
cyk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWFjaFNlbmRSaWdodCBjcmVhdGVTZW5kUmln
aHQoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWFjaFNlbmRSaWdodCBjcmVhdGVTZW5kUmln
aHQoKSBjb25zdDsKIAorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVy
biBtX3NlbmRSaWdodCB8fCBtX3NlbWFwaG9yZSAhPSBTRU1BUEhPUkVfTlVMTDsgfQogcHJpdmF0
ZToKKyAgICB2b2lkIGRlc3Ryb3koKTsKICAgICBNYWNoU2VuZFJpZ2h0IG1fc2VuZFJpZ2h0Owog
ICAgIHNlbWFwaG9yZV90IG1fc2VtYXBob3JlIHsgU0VNQVBIT1JFX05VTEwgfTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggOTAwNTY2OTRhNTMwMGRjM2E4YmZkZDFlZTMwZWMxNmJkOGViZGVhOC4uOWRm
OGQxNjIxZjM0MDVjZTljYjdkMjRjNzk5YTcwZThkMDA4ZTA2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAt
NDgsNyArNDgsNiBAQAogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCIKLSNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1lc3NhZ2VzLmgiCkBAIC0yOTEsMTAgKzI5MCwxOCBAQCBSZW1vdGVBdWRpb1Nlc3Np
b25Qcm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YXVkaW9TZXNzaW9uUHJveHkoKQog
fQogI2VuZGlmCiAKLXZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVy
aW5nQmFja2VuZChSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5n
QmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgLCBNYWNoU2VtYXBob3JlJiYgcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhv
cmUKKyNlbmRpZgorICAgICkKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZE1hcC5lbnN1cmUocGFyYW1ldGVycy5pZGVudGlmaWVyLCBbJl0oKSB7Ci0gICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyPihSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUocGFyYW1ldGVycykpKTsK
KyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcC5lbnN1cmUo
aWRlbnRpZmllciwgWyZdKCkgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kV3JhcHBlcj4oUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKCp0aGlz
LCBpZGVudGlmaWVyLCB7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgICAgICBXVEZNb3Zl
KHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQorI2VuZGlmCisgICAgICAgIH0pKTsKICAgICB9
KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKaW5kZXggNDQxOGNhNmFlYTJhNDA4ZTM3NzUzODkwZTFkMzBkZGVjNzZlYzdjYS4u
YjZhMjRjYjMyMGEzNjNlN2U5ZmVkZDQzZDI5MDYzNTk2NDk1MDYxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC02
NSw3ICs2NSw2IEBAIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOwogY2xhc3MgUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHk7CiBzdHJ1Y3QgUmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbjsKLXN0
cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAgICAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcywgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFp
bj4KQEAgLTEyNyw3ICsxMjYsMTEgQEAgcHJpdmF0ZToKICNlbmRpZgogI2VuZGlmCiAKLSAgICB2
b2lkIGNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9u
UGFyYW1ldGVycyYmKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGNyZWF0ZVJlbmRl
cmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIE1hY2hTZW1hcGhvcmUmJiBy
ZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSk7CisjZWxzZQorICAgIHZvaWQgY3JlYXRlUmVuZGVy
aW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisjZW5kaWYKICAgICB2b2lk
IHJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIAog
I2lmIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMGNiYzVk
ODc5ODNlNjY2ZTQ4ZTgzOWE2NDY0ODk4Nzk1MGEzOTJiZi4uMWU0OWIzM2VjZjZhNTMxNWMyYjFh
NDI5OGUyZDQxNzI1OTJkMmEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIz
LDcgKzIzLDEyIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiBtZXNzYWdlcyAtPiBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlzcGF0Y2hNZXNzYWdlIHsKLSAgICB2b2lkIENy
ZWF0ZVJlbmRlcmluZ0JhY2tlbmQoc3RydWN0IFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZENyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzKQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIE1hY2hTZW1hcGhvcmUgcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhv
cmUpCisjZW5kaWYKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBDcmVhdGVSZW5kZXJp
bmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgaWRlbnRpZmllcikK
KyNlbmRpZgogICAgIHZvaWQgUmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICNpZiBFTkFC
TEUoV0VCR0wpCiAgICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcAppbmRleCAzNzIwN2Q3ZmM3ODBiZmIzYTRiZDdjMWI0ZGNjMGU2NDg1
NWQ1NWU2Li5lZDkzMGNkNzk3MDkzNzY0MDY0ZjJmOGQ0ODFkMjljZWZjYzJmZTVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1S
ZW1vdGVJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIgotI2luY2x1ZGUgIlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5o
PgpAQCAtNjUsMTcgKzY0LDE3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCi1SZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQorUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyLCBQbGF0Zm9y
bUNyZWF0ZVBhcmFtcyYmIHBhcmFtcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURk1vdmUocGFy
YW1ldGVycykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGlkZW50aWZpZXIsIFdURk1vdmUocGFyYW1z
KSkpOwogfQogCi1SZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllciBpZGVudGlmaWVyLCBQbGF0Zm9ybUNyZWF0ZVBhcmFtcyYmIHBhcmFtcykKICAg
ICA6IG1fd29ya1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
IHdvcmsgcXVldWUiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OlVz
ZXJJbnRlcmFjdGl2ZSkpCiAgICAgLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcykKLSAgICAsIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIo
cGFyYW1ldGVycy5pZGVudGlmaWVyKQorICAgICwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cihpZGVudGlmaWVyKQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICwgbV9yZXN1bWVEaXNwbGF5
TGlzdFNlbWFwaG9yZShtYWtlVW5pcXVlPE1hY2hTZW1hcGhvcmU+KFdURk1vdmUocGFyYW1ldGVy
cy5zZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkpKQorICAgICwgbV9yZXN1
bWVEaXNwbGF5TGlzdFNlbWFwaG9yZShXVEZNb3ZlKHBhcmFtcy5yZXN1bWVEaXNwbGF5TGlzdFNl
bWFwaG9yZSkpCiAjZW5kaWYKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAt
MjI4LDcgKzIyNyw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5CiAKICAgICAgICAgICAgIGhh
bmRsZS5zdGFydFdhaXRpbmcoKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAgIG1f
cmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUtPndhaXRGb3IoMzBfdXMpOworICAgICAgICAgICAg
bV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZS53YWl0Rm9yKDMwX3VzKTsKICNlbHNlCiAgICAg
ICAgICAgICBzbGVlcCgzMF91cyk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IGU2
Mzg5OTAzYjY1MGJhOGQ5NzNkYWY5YjNkY2NhNjQ1MzU2ZjQ1ZjguLjgwYzNlMjQ0MjYyNjJiZDli
YTQ5NTE4OWZiZWZhNDMyZDFjODFkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtNDIsOSAr
NDIsNyBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkK
LW5hbWVzcGFjZSBXVEYgewotY2xhc3MgTWFjaFNlbWFwaG9yZTsKLX0KKyNpbmNsdWRlIDx3dGYv
Y29jb2EvTWFjaFNlbWFwaG9yZS5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTYyLDE0ICs2MCwxOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGU7CiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwotc3RydWN0IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQKICAgICA6IHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgLCBw
dWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIKICAgICAsIHB1
YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gY3JlYXRlKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJh
bWV0ZXJzJiYpOworICAgIHN0cnVjdCBQbGF0Zm9ybUNyZWF0ZVBhcmFtcyB7CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgICAgIE1hY2hTZW1hcGhvcmUgcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhv
cmU7CisjZW5kaWYKKyAgICB9OworICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZD4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciwgUGxhdGZvcm1DcmVhdGVQYXJhbXMmJik7CiAgICAgdmlydHVhbCB+UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCgpOwogCiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZSYgcmVtb3RlUmVzb3Vy
Y2VDYWNoZSgpIHsgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZTsgfQpAQCAtODYsNyArODgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAKIHByaXZhdGU6Ci0gICAgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciwgUGxhdGZvcm1DcmVhdGVQYXJhbXMmJik7CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikgb3ZlcnJpZGU7CiAKQEAgLTE0OSw3ICsx
NTEsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJJZGVudGlmaWVyLCBSZWZQdHI8RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU+PiBtX3NoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlczsKICAgICBPcHRpb25hbDxQZW5kaW5nV2FrZXVwSW5mb3JtYXRp
b24+IG1fcGVuZGluZ1dha2V1cEluZm87CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFdURjo6TWFjaFNlbWFwaG9yZT4gbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9y
ZTsKKyAgICBXVEY6Ok1hY2hTZW1hcGhvcmUgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsK
ICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAKaW5kZXggMGY4NDA3
YzFmM2RjNzg3YjUwZTliZjYwOTkxYWVlN2NiNDEwYjRmYS4uN2JhNDEwMDVlM2NlNWFiNzMzN2Ni
YjVhMjI0NjNhMjk5NDM5MjMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCkBA
IC01MSwxMCArNTEsMTUgQEAgY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbgogI2VuZGlmCiB7
CiBwdWJsaWM6CisgICAgc3RydWN0IFBsYXRmb3JtQ3JlYXRlUGFyYW1zIHsKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICAgICAgTWFjaFNlbWFwaG9yZSByZW5kZXJTZW1hcGhvcmU7CisjZW5kaWYK
KyAgICB9OwogICAgIHN0YXRpYyBSZWY8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4gY3JlYXRlKEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyIGlkZW50aWZpZXIsCi0gICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXREZXZp
Y2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91
dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUp
CisgICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1w
bGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIFBsYXRmb3JtQ3JlYXRlUGFyYW1zJiYg
cGFyYW1zKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbihjb25uZWN0aW9uLCBpZGVudGlmaWVyLCBpbnB1dERldmljZUlkLCBudW1iZXJP
ZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIGhhcmR3
YXJlU2FtcGxlUmF0ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uKGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIGlucHV0RGV2aWNlSWQsIG51bWJl
ck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFy
ZHdhcmVTYW1wbGVSYXRlLCBXVEZNb3ZlKHBhcmFtcykpKTsKICAgICB9CiAKICAgICB2aXJ0dWFs
IH5SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKCkgPSBkZWZhdWx0OwpAQCAtNjgsOCArNzMsNiBAQCBw
dWJsaWM6CiAgICAgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgTWFjaFNlbmRSaWdodCBj
cmVhdGVSZW5kZXJTZW1hcGhvcmVTZW5kUmlnaHQoKSB7IHJldHVybiBtX3JlbmRlclNlbWFwaG9y
ZS5jcmVhdGVTZW5kUmlnaHQoKTsgfQotCiAgICAgdm9pZCBhdWRpb1NhbXBsZXNTdG9yYWdlQ2hh
bmdlZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaXBjSGFuZGxlLCBjb25zdCBXZWJD
b3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1i
ZXJPZkZyYW1lcykKICAgICB7CiAgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWVSZWY8
V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFJlYWRPbmx5U2hhcmVkUmluZ0J1
ZmZlclN0b3JhZ2U+KGlwY0hhbmRsZS5oYW5kbGUpLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFt
ZXMpOwpAQCAtMTA0LDExICsxMDcsMTIgQEAgcHVibGljOgogICAgIGJvb2wgaXNQbGF5aW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KIAogcHJpdmF0ZToKLSAgICBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQs
IHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlKQorICAg
IFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5w
dXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBs
ZVJhdGUsIFBsYXRmb3JtQ3JlYXRlUGFyYW1zJiYgcGFyYW1zKQogICAgICAgICA6IG1faWQoaWRl
bnRpZmllcikKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgLCBtX2F1ZGlvT3V0cHV0VW5p
dEFkYXB0b3IoKnRoaXMpCiAgICAgICAgICwgbV9yaW5nQnVmZmVyKG1ha2VVbmlxdWVSZWY8V2Vi
Q29yZTo6Q0FSaW5nQnVmZmVyPigpKQorICAgICAgICAsIG1fcmVuZGVyU2VtYXBob3JlKFdURk1v
dmUocGFyYW1zLnJlbmRlclNlbWFwaG9yZSkpCiAjZW5kaWYKICAgICB7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCkBAIC0xNjIsMTkgKzE2NiwyMyBAQCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
cjo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoR1BVQ29ubmVjdGlvblRvV2ViUAogCiBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6flJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyKCkgPSBkZWZhdWx0OwogCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpj
cmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMy
X3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIENyZWF0aW9uQ29t
cGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBpbnB1
dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxl
UmF0ZSwKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBNYWNoU2VtYXBob3JlJiYgcmVuZGVyU2Vt
YXBob3JlLAorI2VuZGlmCisgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uRGVsYXllZFJlcGx5JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYXV0byBuZXdJRCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVy
OjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uID0gUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbjo6Y3JlYXRlKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgbmV3SUQs
IGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRlKTsKLSAgICBtX2F1ZGlvRGVzdGlu
YXRpb25zLmFkZChuZXdJRCwgZGVzdGluYXRpb24uY29weVJlZigpKTsKKyAgICBhdXRvIGRlc3Rp
bmF0aW9uID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKG1fZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcywgbmV3SUQsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRlLCB7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgY29tcGxldGlvbkhhbmRsZXIobmV3SUQsIGRlc3Rp
bmF0aW9uLT5jcmVhdGVSZW5kZXJTZW1hcGhvcmVTZW5kUmlnaHQoKSk7Ci0jZWxzZQotICAgIGNv
bXBsZXRpb25IYW5kbGVyKG5ld0lEKTsKKyAgICAgICAgV1RGTW92ZShyZW5kZXJTZW1hcGhvcmUp
CiAjZW5kaWYKKyAgICB9KTsKKyAgICBtX2F1ZGlvRGVzdGluYXRpb25zLmFkZChuZXdJRCwgZGVz
dGluYXRpb24uY29weVJlZigpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdJRCk7CiB9CiAK
LXZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmRlbGV0ZUF1ZGlvRGVzdGluYXRp
b24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcjo6ZGVsZXRlQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXI6OkRlbGV0ZUF1ZGlvRGVzdGluYXRpb25Bc3luY1JlcGx5JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgYXV0byBkZXN0aW5hdGlvbiA9IG1fYXVkaW9EZXN0aW5hdGlvbnMu
dGFrZShpZGVudGlmaWVyKTsKICAgICBpZiAoZGVzdGluYXRpb24pCkBAIC0xODIsNyArMTkwLDcg
QEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6ZGVsZXRlQXVkaW9EZXN0aW5h
dGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW8KICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQog
Ci12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdGFydEF1ZGlvRGVzdGluYXRp
b24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0YXJ0QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OlN0YXJ0QXVkaW9EZXN0aW5hdGlvbkFzeW5jUmVwbHkmJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBib29sIGlzUGxheWluZyA9IGZhbHNlOwogICAgIGlmIChhdXRv
KiBpdGVtID0gbV9hdWRpb0Rlc3RpbmF0aW9ucy5nZXQoaWRlbnRpZmllcikpIHsKQEAgLTE5Miw3
ICsyMDAsNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdGFydEF1ZGlv
RGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbgogICAgIGNvbXBsZXRpb25IYW5kbGVy
KGlzUGxheWluZyk7CiB9CiAKLXZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0
b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdG9wQXVkaW9EZXN0aW5hdGlv
bihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBNZXNzYWdlczo6
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlN0b3BBdWRpb0Rlc3RpbmF0aW9uQXN5bmNS
ZXBseSYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGJvb2wgaXNQbGF5aW5nID0gZmFsc2U7
CiAgICAgaWYgKGF1dG8qIGl0ZW0gPSBtX2F1ZGlvRGVzdGluYXRpb25zLmdldChpZGVudGlmaWVy
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaAppbmRleCBiODNmMjlmOGRjMTMzYTFhMmMz
YTg3NGJhNzMzYjU4MGIyNmU3NjJkLi5hNTdjYzU0MGY5ZWE3ZjMxN2U3OWQwYThhNGY0ZGZkM2Ey
YWE3YzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaApAQCAtMjksMTkgKzI5LDE5IEBA
CiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
ck1lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUg
PG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8d3RmL2NvY29h
L01hY2hTZW1hcGhvcmUuaD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CiB9Ci0KLW5hbWVz
cGFjZSBXVEYgewotY2xhc3MgTWFjaFNlbmRSaWdodDsKLX0KICNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTY0LDE0ICs2NCwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+Jik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB1c2luZyBD
cmVhdGlvbkNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgV1RGOjpNYWNoU2VuZFJpZ2h0KT47CisgICAgdm9p
ZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWlu
dDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsCisgICAgICAg
IE1hY2hTZW1hcGhvcmUmJiByZW5kZXJTZW1hcGhvcmUsIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbkRlbGF5ZWRSZXBseSYmKTsK
ICNlbHNlCi0gICAgdXNpbmcgQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIpPjsKKyAgICB2b2lk
IGNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50
MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwKKyAgICAgICAg
TWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3Rp
bmF0aW9uRGVsYXllZFJlcGx5JiYpOwogI2VuZGlmCi0gICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3Rp
bmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1
dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVS
YXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIENyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXIm
Jik7Ci0gICAgdm9pZCBkZWxldGVBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc3Rh
cnRBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHN0b3BBdWRpb0Rlc3RpbmF0
aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlcjo6RGVsZXRlQXVkaW9EZXN0aW5hdGlvbkFzeW5jUmVwbHkmJik7CisgICAgdm9pZCBz
dGFydEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIE1l
c3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6U3RhcnRBdWRpb0Rlc3RpbmF0
aW9uQXN5bmNSZXBseSYmKTsKKyAgICB2b2lkIHN0b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXI6OlN0b3BBdWRpb0Rlc3RpbmF0aW9uQXN5bmNSZXBseSYmKTsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB2b2lkIGF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIGNv
bnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQ2NF90IG51bWJlck9m
RnJhbWVzKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3Nh
Z2VzLmluCmluZGV4IDU1Nzg5ODQ2ZDc0ZDg1NzRiYmRhMWFiZGYyNzE4YmQzYmE1YmM0ZTQuLjA4
ZTY2Mjg0OTg1ODcxM2U0NTM2MmQ1ZjRlN2Y2MTc2MjNjYjIyYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI1LDEwICsyNSwxMCBAQAogCiBt
ZXNzYWdlcyAtPiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlciBOb3RSZWZDb3VudGVkIHsK
ICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKFN0cmluZyBp
bnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSkgLT4gKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllciwgTWFjaFNlbmRSaWdodCByZW5kZXJTZW1hcGhvcmVTZW5kUmlnaHQpIFN5bmNocm9u
b3VzCisgICAgQ3JlYXRlQXVkaW9EZXN0aW5hdGlvbihTdHJpbmcgaW5wdXREZXZpY2VJZCwgdWlu
dDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIE1hY2hTZW1h
cGhvcmUgcmVuZGVyU2VtYXBob3JlKSAtPiAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
SWRlbnRpZmllciBpZGVudGlmaWVyKSBTeW5jaHJvbm91cwogI2VuZGlmCiAjaWYgIVBMQVRGT1JN
KENPQ09BKQotICAgIENyZWF0ZUF1ZGlvRGVzdGluYXRpb24oU3RyaW5nIGlucHV0RGV2aWNlSWQs
IHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlKSAtPiAo
V2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSBTeW5j
aHJvbm91cworICAgIENyZWF0ZUF1ZGlvRGVzdGluYXRpb24oKSAtPiAoV2ViS2l0OjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSBTeW5jaHJvbm91cwogI2VuZGlm
CiAKICAgICBEZWxldGVBdWRpb0Rlc3RpbmF0aW9uKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5h
dGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGVjOGJjZjA4N2RmMTZkZjYwZGJlMDA4MGU0Y2Vi
MDYxZDE3NjhmZjcuLmUwY2ExYWU1Njg4N2M0ZGVmNmZhYmQzNGYxMTVkMzBiNDMyODIwYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjU1LDYgKzI1NSw3
IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAg
ICdJUEM6OkRhdGFSZWZlcmVuY2UnLAogICAgICAgICAnSVBDOjpGb250UmVmZXJlbmNlJywKICAg
ICAgICAgJ01hY2hTZW5kUmlnaHQnLAorICAgICAgICAnTWFjaFNlbWFwaG9yZScsCiAgICAgICAg
ICdNZWRpYVRpbWUnLAogICAgICAgICAnU3RyaW5nJywKICAgICAgICAgJ1dlYkNvcmU6OkNvbG9y
U3BhY2UnLApAQCAtMzM0LDYgKzMzNSw4IEBAIGRlZiBjb25kaXRpb25zX2Zvcl9oZWFkZXIoaGVh
ZGVyKToKICAgICAgICAgJyJJbnB1dE1ldGhvZFN0YXRlLmgiJzogWyJQTEFURk9STShHVEspIiwg
IlBMQVRGT1JNKFdQRSkiXSwKICAgICAgICAgJyJMYXllckhvc3RpbmdDb250ZXh0LmgiJzogWyJQ
TEFURk9STShDT0NPQSkiLCBdLAogICAgICAgICAnIkdlc3R1cmVUeXBlcy5oIic6IFsiUExBVEZP
Uk0oSU9TX0ZBTUlMWSkiXSwKKyAgICAgICAgJzx3dGYvTWFjaFNlbmRSaWdodC5oPic6IFsiUExB
VEZPUk0oQ09DT0EpIl0sCisgICAgICAgICc8d3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaD4nOiBb
IlBMQVRGT1JNKENPQ09BKSJdLAogICAgIH0KICAgICBpZiBub3QgaGVhZGVyIGluIGNvbmRpdGlv
bnM6CiAgICAgICAgIHJldHVybiBOb25lCkBAIC0zNTQsNiArMzU3LDcgQEAgZGVmIGZvcndhcmRf
ZGVjbGFyYXRpb25zX2FuZF9oZWFkZXJzKHJlY2VpdmVyKToKIAogICAgIG5vbl90ZW1wbGF0ZV93
dGZfdHlwZXMgPSBmcm96ZW5zZXQoWwogICAgICAgICAnTWFjaFNlbmRSaWdodCcsCisgICAgICAg
ICdNYWNoU2VtYXBob3JlJywKICAgICAgICAgJ01lZGlhVHlwZScsCiAgICAgICAgICdTdHJpbmcn
LAogICAgIF0pCkBAIC00MDksNiArNDEzLDcgQEAgZGVmIGZvcndhcmRfZGVjbGFyYXRpb25zX2Fu
ZF9oZWFkZXJzX2Zvcl9yZXBsaWVzKHJlY2VpdmVyKToKIAogICAgIG5vbl90ZW1wbGF0ZV93dGZf
dHlwZXMgPSBmcm96ZW5zZXQoWwogICAgICAgICAnTWFjaFNlbmRSaWdodCcsCisgICAgICAgICdN
YWNoU2VtYXBob3JlJywKICAgICAgICAgJ01lZGlhVGltZScsCiAgICAgICAgICdTdHJpbmcnLAog
ICAgIF0pCkBAIC02MzksNiArNjQ0LDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAK
ICAgICBzcGVjaWFsX2Nhc2VzID0gewogICAgICAgICAnTWFjaFNlbmRSaWdodCc6IFsnPHd0Zi9N
YWNoU2VuZFJpZ2h0Lmg+J10sCisgICAgICAgICdNYWNoU2VtYXBob3JlJzogWyc8d3RmL2NvY29h
L01hY2hTZW1hcGhvcmUuaD4nXSwKICAgICAgICAgJ0pTQzo6TWVzc2FnZUxldmVsJzogWyc8SmF2
YVNjcmlwdENvcmUvQ29uc29sZVR5cGVzLmg+J10sCiAgICAgICAgICdKU0M6Ok1lc3NhZ2VTb3Vy
Y2UnOiBbJzxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4nXSwKICAgICAgICAgJ0luc3Bl
Y3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZSc6IFsnPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclRh
cmdldC5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlc191bml0dGVzdC5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNf
dW5pdHRlc3QucHkKaW5kZXggNmVjNmViNGRhNTU3NzNmY2VkNjNkMzgyMjMzYzMyNTgxOWE5YTNj
My4uYWRlYjg1ZjkwYjNmNGQ1OWJiNzNmNDE2MmUwNjgxYTlmNjc2OTI1MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weQorKysgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5CkBAIC0zOSw3
ICszOSw3IEBAIHRlc3RzX2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbihtb2R1bGVfZGlyZWN0b3J5
LCAndGVzdHMnKQogCiByZXNldF9yZXN1bHRzID0gRmFsc2UKIAotX3Rlc3RfcmVjZWl2ZXJfbmFt
ZXMgPSBbJ1Rlc3RXaXRoU3VwZXJjbGFzcycsICdUZXN0V2l0aExlZ2FjeVJlY2VpdmVyJywgJ1Rl
c3RXaXRob3V0QXR0cmlidXRlcycsICdUZXN0V2l0aElmTWVzc2FnZSddCitfdGVzdF9yZWNlaXZl
cl9uYW1lcyA9IFsnVGVzdFdpdGhTdXBlcmNsYXNzJywgJ1Rlc3RXaXRoTGVnYWN5UmVjZWl2ZXIn
LCAnVGVzdFdpdGhvdXRBdHRyaWJ1dGVzJywgJ1Rlc3RXaXRoSWZNZXNzYWdlJywgJ1Rlc3RXaXRo
TWFjaFNlbWFwaG9yZSddCiAKIAogZGVmIHJlY2VpdmVyX2hlYWRlcl9maWxlX25hbWUocmVjZWl2
ZXJfbmFtZSk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Rz
L01ha2VmaWxlIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZQpp
bmRleCA4Nzk2ZmZiYzVhM2Y4N2I5MjNlZDZjOTgwMjM5MWE4NzZiYWMzODJlLi4zOWFmMTNjZTcw
MmE1ODM3ZGM4NzEyNWM3YzUyY2QyN2IyYTc3ZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdHMvTWFrZWZpbGUKQEAgLTEsMiArMSwyIEBACiBhbGw6Ci0JcHl0aG9uIC4u
Ly4uL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkgLiBUZXN0V2l0aFN1cGVyY2xhc3MgVGVz
dFdpdGhMZWdhY3lSZWNlaXZlciBUZXN0V2l0aG91dEF0dHJpYnV0ZXMgVGVzdFdpdGhJZk1lc3Nh
Z2UKKwlweXRob24gLi4vLi4vZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weSAuIFRlc3RXaXRo
U3VwZXJjbGFzcyBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyIFRlc3RXaXRob3V0QXR0cmlidXRlcyBU
ZXN0V2l0aElmTWVzc2FnZSBUZXN0V2l0aE1hY2hTZW1hcGhvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25z
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFyZ3VtZW50
RGVzY3JpcHRpb25zLmNwcAppbmRleCA1OTQwNDQzOTBjYWRhYzJmZjBjZGZhYTllMzA1MDQ0Mjc3
ODM4MGZlLi44M2M1ZDBjYjMzMjIyYmIxYTZmYjczNDU0ZDQwNzlkZDYyZTRjYzY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERl
c2NyaXB0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9N
ZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjZW5kaWYK
ICNpbmNsdWRlICJUZXN0V2l0aElmTWVzc2FnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiVGVzdFdp
dGhMZWdhY3lSZWNlaXZlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhNYWNoU2VtYXBo
b3JlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJUZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIlRlc3RXaXRob3V0QXR0cmlidXRlc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgiCkBAIC02NSw2ICs2Niw5IEBACiAjZW5kaWYKICNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaWYgUExBVEZPUk0o
Q09DT0EpCisjaW5jbHVkZSA8d3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaD4KKyNlbmRpZgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTIxNSw2
ICsyMTksMTIgQEAgT3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBqc1ZhbHVlRm9yQXJndW1lbnRzKEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTWUKICNpZiBQTEFURk9STShHVEspCiAg
ICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhJZk1lc3NhZ2VfTG9hZFVSTDoKICAgICAgICAg
cmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRzPE1lc3NhZ2VzOjpUZXN0V2l0aElmTWVz
c2FnZTo6TG9hZFVSTDo6QXJndW1lbnRzPihnbG9iYWxPYmplY3QsIGRlY29kZXIpOworI2VuZGlm
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNo
U2VtYXBob3JlX1NlbmRTZW1hcGhvcmU6CisgICAgICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2Rl
ZEFyZ3VtZW50czxNZXNzYWdlczo6VGVzdFdpdGhNYWNoU2VtYXBob3JlOjpTZW5kU2VtYXBob3Jl
OjpBcmd1bWVudHM+KGdsb2JhbE9iamVjdCwgZGVjb2Rlcik7CisgICAgY2FzZSBNZXNzYWdlTmFt
ZTo6VGVzdFdpdGhNYWNoU2VtYXBob3JlX1JlY2VpdmVTZW1hcGhvcmU6CisgICAgICAgIHJldHVy
biBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50czxNZXNzYWdlczo6VGVzdFdpdGhNYWNoU2VtYXBo
b3JlOjpSZWNlaXZlU2VtYXBob3JlOjpBcmd1bWVudHM+KGdsb2JhbE9iamVjdCwgZGVjb2Rlcik7
CiAjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTUxNiw2ICs1MjYsMTQg
QEAgT3B0aW9uYWw8VmVjdG9yPEFyZ3VtZW50RGVzY3JpcHRpb24+PiBtZXNzYWdlQXJndW1lbnRE
ZXNjcmlwdGlvbnMoTWVzc2FnZU5hbWUgbmEKICAgICAgICAgICAgIHsidXJsIiwgIlN0cmluZyIs
IG51bGxwdHIsIGZhbHNlfSwKICAgICAgICAgICAgIHsidmFsdWUiLCAiaW50NjRfdCIsIG51bGxw
dHIsIGZhbHNlfSwKICAgICAgICAgfTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9TZW5kU2VtYXBob3JlOgor
ICAgICAgICByZXR1cm4gVmVjdG9yPEFyZ3VtZW50RGVzY3JpcHRpb24+IHsKKyAgICAgICAgICAg
IHsiczAiLCAiTWFjaFNlbWFwaG9yZSIsIG51bGxwdHIsIGZhbHNlfSwKKyAgICAgICAgfTsKKyAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmVfUmVjZWl2ZVNlbWFwaG9y
ZToKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxBcmd1bWVudERlc2NyaXB0aW9uPiB7IH07CiAjZW5k
aWYKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcAppbmRleCA3NmZhZDM3YzU0NjBh
ZGJjZmVhMzcyZDE4NjY1NTBmYTdjOGE4NTEzLi45OGNlMzJkOTU1ZTc5NjM4YzIzZTI1YmY3Mzgx
MzA3NmEyODI0ZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3RzL01lc3NhZ2VOYW1lcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCkBAIC03Miw2ICs3MiwxMCBAQCBjb25zdCBjaGFyKiBkZXNj
cmlwdGlvbihNZXNzYWdlTmFtZSBuYW1lKQogICAgICAgICByZXR1cm4gIlRlc3RXaXRoTGVnYWN5
UmVjZWl2ZXJfVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMiOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6
OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVG91Y2hFdmVudDoKICAgICAgICAgcmV0dXJuICJUZXN0
V2l0aExlZ2FjeVJlY2VpdmVyX1RvdWNoRXZlbnQiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRl
c3RXaXRoTWFjaFNlbWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlOgorICAgICAgICByZXR1cm4gIlRl
c3RXaXRoTWFjaFNlbWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlIjsKKyAgICBjYXNlIE1lc3NhZ2VO
YW1lOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmVfU2VuZFNlbWFwaG9yZToKKyAgICAgICAgcmV0dXJu
ICJUZXN0V2l0aE1hY2hTZW1hcGhvcmVfU2VuZFNlbWFwaG9yZSI7CiAgICAgY2FzZSBNZXNzYWdl
TmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX0xvYWRVUkw6CiAgICAgICAgIHJldHVybiAiVGVzdFdp
dGhTdXBlcmNsYXNzX0xvYWRVUkwiOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3Vw
ZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlOgpAQCAtMTgxLDYgKzE4NSw5IEBAIFJlY2VpdmVyTmFt
ZSByZWNlaXZlck5hbWUoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiAgICAgY2FzZSBNZXNzYWdl
TmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9UZXN0UGFyYW1ldGVyQXR0cmlidXRlczoKICAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1RvdWNoRXZlbnQ6CiAg
ICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI7CisgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3JlX1JlY2VpdmVTZW1hcGhvcmU6
CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3JlX1NlbmRTZW1hcGhv
cmU6CisgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTsK
ICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfTG9hZFVSTDoKICAgICBj
YXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZToKICAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZVdp
dGhDb25uZWN0aW9uOgpAQCAtMjk4LDYgKzMwNSwxNCBAQCBib29sIGlzVmFsaWRNZXNzYWdlTmFt
ZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKICNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYg
KE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9O
KSkKICAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhMZWdh
Y3lSZWNlaXZlcl9Ub3VjaEV2ZW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1l
OjpUZXN0V2l0aE1hY2hTZW1hcGhvcmVfUmVjZWl2ZVNlbWFwaG9yZSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAobWVzc2FnZU5hbWUg
PT0gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3JlX1NlbmRTZW1hcGhvcmUp
CisgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQ
Qzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19Mb2FkVVJMKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
TWVzc2FnZU5hbWVzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3Nh
Z2VOYW1lcy5oCmluZGV4IDIzZjc1NjA4N2Q2ODNhZDIyYjA2OGUyYTcxZmQ5NWEwZjNjZTU1NWUu
LmZiMGQ5MWJhODhkYzhkNjhlZjViZTc0YTJiMmEyM2YyZDQzMzMxMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmgKKysrIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaApAQCAtMzEsMTEg
KzMxLDEyIEBAIG5hbWVzcGFjZSBJUEMgewogZW51bSBjbGFzcyBSZWNlaXZlck5hbWUgOiB1aW50
OF90IHsKICAgICBUZXN0V2l0aElmTWVzc2FnZSA9IDEKICAgICAsIFRlc3RXaXRoTGVnYWN5UmVj
ZWl2ZXIgPSAyCi0gICAgLCBUZXN0V2l0aFN1cGVyY2xhc3MgPSAzCi0gICAgLCBUZXN0V2l0aG91
dEF0dHJpYnV0ZXMgPSA0Ci0gICAgLCBJUEMgPSA1Ci0gICAgLCBBc3luY1JlcGx5ID0gNgotICAg
ICwgSW52YWxpZCA9IDcKKyAgICAsIFRlc3RXaXRoTWFjaFNlbWFwaG9yZSA9IDMKKyAgICAsIFRl
c3RXaXRoU3VwZXJjbGFzcyA9IDQKKyAgICAsIFRlc3RXaXRob3V0QXR0cmlidXRlcyA9IDUKKyAg
ICAsIElQQyA9IDYKKyAgICAsIEFzeW5jUmVwbHkgPSA3CisgICAgLCBJbnZhbGlkID0gOAogfTsK
IAogZW51bSBjbGFzcyBNZXNzYWdlTmFtZSA6IHVpbnQxNl90IHsKQEAgLTYwLDYgKzYxLDggQEAg
ZW51bSBjbGFzcyBNZXNzYWdlTmFtZSA6IHVpbnQxNl90IHsKICAgICAsIFRlc3RXaXRoTGVnYWN5
UmVjZWl2ZXJfVGVtcGxhdGVUZXN0CiAgICAgLCBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1Rlc3RQ
YXJhbWV0ZXJBdHRyaWJ1dGVzCiAgICAgLCBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1RvdWNoRXZl
bnQKKyAgICAsIFRlc3RXaXRoTWFjaFNlbWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlCisgICAgLCBU
ZXN0V2l0aE1hY2hTZW1hcGhvcmVfU2VuZFNlbWFwaG9yZQogICAgICwgVGVzdFdpdGhTdXBlcmNs
YXNzX0xvYWRVUkwKICAgICAsIFRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlCiAg
ICAgLCBUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZVdpdGhDb25uZWN0aW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFj
aFNlbWFwaG9yZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1MjU4MzUz
ZjA5NGM0MDZhNDIzZjYxMDBiY2U5Y2E4MjYyMDZjYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZS5tZXNz
YWdlcy5pbgpAQCAtMCwwICsxLDI4IEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgor
IyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
CisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK21lc3NhZ2VzIC0+IFRlc3RXaXRoTWFjaFNlbWFwaG9yZSB7CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgdm9pZCBTZW5kU2VtYXBob3JlKE1hY2hTZW1hcGhvcmUgczApCisgICAg
dm9pZCBSZWNlaXZlU2VtYXBob3JlKCkgLT4gKE1hY2hTZW1hcGhvcmUgcjApCisjZW5kaWYKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhN
YWNoU2VtYXBob3JlTWVzc2FnZVJlY2VpdmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZVJlY2VpdmVyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yNGVlNDBjMzZhYWQ4M2Y5ZTcwMWQ4NmM4YWVjNzYzYTM3OGVhZTgwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1h
Y2hTZW1hcGhvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhNYWNoU2Vt
YXBob3JlLmgiCisKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiSGFuZGxlTWVzc2Fn
ZS5oIgorI2luY2x1ZGUgIlRlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2VzLmgiCisjaWYgUExB
VEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8d3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaD4KKyNlbmRp
ZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBUZXN0V2l0aE1hY2hTZW1hcGhvcmU6OmRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKQoreworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6U2VuZFNlbWFwaG9yZTo6bmFtZSgpKSB7Cisg
ICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhNYWNoU2VtYXBob3Jl
OjpTZW5kU2VtYXBob3JlPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhNYWNoU2VtYXBob3JlOjpz
ZW5kU2VtYXBob3JlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAgIFVOVVNF
RF9QQVJBTShjb25uZWN0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgVGVzdFdpdGhNYWNoU2VtYXBob3JlOjpkaWRS
ZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29k
ZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIp
Cit7CisgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVz
dFdpdGhNYWNoU2VtYXBob3JlOjpSZWNlaXZlU2VtYXBob3JlOjpuYW1lKCkpIHsKKyAgICAgICAg
SVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6OlJlY2Vp
dmVTZW1hcGhvcmU+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aE1hY2hT
ZW1hcGhvcmU6OnJlY2VpdmVTZW1hcGhvcmUpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vu
ZGlmCisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIFVOVVNFRF9QQVJBTShkZWNv
ZGVyKTsKKyAgICBVTlVTRURfUEFSQU0ocmVwbHlFbmNvZGVyKTsKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2Vz
LmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFw
aG9yZU1lc3NhZ2VzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTMxMjE1ZDJlNDRiNDJiZTRiMWQwYmViMmE2YjM2
OThmOGNkNDQzNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZXMuaApAQCAtMCwwICsxLDkwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgor
ICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENv
ZGVycy5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMu
aCIKKyNpbmNsdWRlICJUZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNzYWdlc1JlcGxpZXMuaCIKKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPHd0Zi9jb2NvYS9NYWNoU2VtYXBo
b3JlLmg+CisjZW5kaWYKKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFRlc3RX
aXRoTWFjaFNlbWFwaG9yZSB7CisKK3N0YXRpYyBpbmxpbmUgSVBDOjpSZWNlaXZlck5hbWUgbWVz
c2FnZVJlY2VpdmVyTmFtZSgpCit7CisgICAgcmV0dXJuIElQQzo6UmVjZWl2ZXJOYW1lOjpUZXN0
V2l0aE1hY2hTZW1hcGhvcmU7Cit9CisKKyNpZiBQTEFURk9STShDT0NPQSkKK2NsYXNzIFNlbmRT
ZW1hcGhvcmUgeworcHVibGljOgorICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29u
c3QgTWFjaFNlbWFwaG9yZSY+OworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgp
IHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9TZW5kU2Vt
YXBob3JlOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBl
eHBsaWNpdCBTZW5kU2VtYXBob3JlKGNvbnN0IE1hY2hTZW1hcGhvcmUmIHMwKQorICAgICAgICA6
IG1fYXJndW1lbnRzKHMwKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFy
Z3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAg
fQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKwor
I2lmIFBMQVRGT1JNKENPQ09BKQorY2xhc3MgUmVjZWl2ZVNlbWFwaG9yZSB7CitwdWJsaWM6Cisg
ICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OworCisgICAgc3RhdGljIElQQzo6TWVz
c2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTWFjaFNl
bWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5j
ID0gdHJ1ZTsKKworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxNYWNoU2VtYXBob3JlJj47
CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPE1hY2hTZW1hcGhvcmU+Owor
ICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJn
dW1lbnRzOworfTsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aE1hY2hTZW1hcGhv
cmUKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2VzUmVwbGllcy5o
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhv
cmVNZXNzYWdlc1JlcGxpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTcwYzRhMTNiYjc2YTM2MDU3NzNiZTNh
YTdjN2JlMWExOWE2MTBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNzYWdlc1JlcGxpZXMuaApAQCAt
MCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCisKK25hbWVzcGFj
ZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgVGVzdFdpdGhNYWNoU2VtYXBob3JlIHsKKworCit9IC8v
IG5hbWVzcGFjZSBUZXN0V2l0aE1hY2hTZW1hcGhvcmUKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2Vz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRD
b2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVu
dENvZGVyc0NvY29hLm1tCmluZGV4IDI4MTRlOGI1ZWYzMmQ1MDI2NThiYWI1YWVmNzEzY2Y2MTQ3
MDJiNTcuLjgzNWE2NDA5YmQ4NzczZDQzNGExZDAxMTM0MmIyY2VmMTRjNTk1NTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVy
c0NvY29hLm1tCkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRBdHRyaWJ1
dGVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaD4KICNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvQ29yZVRleHRTUEkuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9NYWNo
U2VtYXBob3JlLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8VUlLaXQv
VUlGb250Lmg+CkBAIC02NSw2ICs2NiwxOSBAQCBPcHRpb25hbDxXZWJDb3JlOjpBdHRyaWJ1dGVk
U3RyaW5nPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmc+OjpkZQogICAg
IHJldHVybiB7IHsgV1RGTW92ZShhdHRyaWJ1dGVkU3RyaW5nKSwgV1RGTW92ZShkb2N1bWVudEF0
dHJpYnV0ZXMpIH0gfTsKIH0KIAordm9pZCBBcmd1bWVudENvZGVyPFdURjo6TWFjaFNlbWFwaG9y
ZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXVEY6Ok1hY2hTZW1hcGhvcmUmIHNl
bWFwaG9yZSkKK3sKKyAgICBlbmNvZGVyIDw8IHNlbWFwaG9yZS5jcmVhdGVTZW5kUmlnaHQoKTsK
K30KKworT3B0aW9uYWw8TWFjaFNlbWFwaG9yZT4gQXJndW1lbnRDb2RlcjxXVEY6Ok1hY2hTZW1h
cGhvcmU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBNYWNoU2VuZFJpZ2h0IHNl
bmRSaWdodDsKKyAgICBpZiAoZGVjb2Rlci5kZWNvZGUoc2VuZFJpZ2h0KSkKKyAgICAgICAgcmV0
dXJuIE9wdGlvbmFsPFdURjo6TWFjaFNlbWFwaG9yZT4geyBzdGQ6OmluX3BsYWNlLCBXVEZNb3Zl
KHNlbmRSaWdodCkgfTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCiAjaWYgRU5BQkxF
KEFQUExFX1BBWSkKIAogI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJh
bWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3YjVhNzZh
ZjI1MjBjOWU3MjAxMDY4MDhhOTM0ZmQxOTc4OTlkMjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQotCi0jaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKLSNpbmNsdWRlIDx3
dGYvTWFjaFNlbmRSaWdodC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMgewotICAgIFJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyIGlkZW50aWZpZXI7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgTWFjaFNl
bmRSaWdodCBzZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKLSNlbmRpZgot
Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzPiBkZWNvZGUoRGVjb2RlciYpOwotfTsKLQot
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0
aW9uUGFyYW1ldGVyczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5j
b2RlciA8PCBpZGVudGlmaWVyOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGVuY29kZXIgPDwg
c2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmU7Ci0jZW5kaWYKLX0KLQotdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVh
dGlvblBhcmFtZXRlcnM+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRD
cmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIE9wdGlvbmFsPFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyPiBpZGVudGlmaWVyOwotICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsK
LSAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAg
ICBwYXJhbWV0ZXJzLmlkZW50aWZpZXIgPSAqaWRlbnRpZmllcjsKLQotI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIE9wdGlvbmFsPE1hY2hTZW5kUmlnaHQ+IHNlbmRSaWdodEZvclJlc3VtZURpc3Bs
YXlMaXN0U2VtYXBob3JlOwotICAgIGRlY29kZXIgPj4gc2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxh
eUxpc3RTZW1hcGhvcmU7Ci0gICAgaWYgKCFzZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNl
bWFwaG9yZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHBhcmFtZXRlcnMu
c2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUgPSBXVEZNb3ZlKCpzZW5kUmln
aHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBw
YXJhbWV0ZXJzOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJM
RShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKaW5kZXggZmE5NmNkYTg0ZWNiN2Q0ODhhZTQyOTEzM2MwZjViNDQzNzA0OGRiMS4uNTA4
MjFkMWRiNzM4MGUxMDY0ZTE5ZWJiMGQ4ZTNmN2NkYzZhYmFjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTgxLDYgKzgxLDcgQEAKICNpZiBQ
TEFURk9STShDT0NPQSkKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFjaFNlbmRSaWdodDsKK2Ns
YXNzIE1hY2hTZW1hcGhvcmU7CiB9CiAjZW5kaWYKIApAQCAtNDg3LDYgKzQ4OCwxMCBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPENHQWZmaW5lVHJhbnNmb3JtPiB7CiAgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBDR0FmZmluZVRyYW5zZm9ybSk7CiAgICAgc3RhdGlj
IE9wdGlvbmFsPENHQWZmaW5lVHJhbnNmb3JtPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKK3RlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V1RGOjpNYWNoU2VtYXBob3JlPiB7CisgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXVEY6Ok1hY2hTZW1hcGhvcmUmKTsKKyAg
ICBzdGF0aWMgT3B0aW9uYWw8V1RGOjpNYWNoU2VtYXBob3JlPiBkZWNvZGUoRGVjb2RlciYpOwor
fTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZhMDNkYzg1MTQwMDM4NTgy
NjE3NTNkZWNjZjk1Nzc3YTFhYmNlYTEuLjI0YjEzMmIyMjNmOTkzODkwZmFhMTA5NThlNmJmZTcw
MTQxMjEzZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTk2OCw3ICsxOTY4LDYgQEAKIAkJRjQyRDYzNDEyMkEwRUZERjAwRDJGQjNB
IC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjQyRDYzM0YyMkEwRUZEMzAwRDJGQjNBIC8qIFdlYkF1dG9jb3Jy
ZWN0aW9uRGF0YS5oICovOyB9OwogCQlGNDMwRTk0MjIyNDczMzVGMDA1RkUwNTMgLyogV2Vic2l0
ZU1ldGFWaWV3cG9ydFBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjQzMEU5NDEyMjQ3MzJBOTAwNUZFMDUzIC8qIFdlYnNpdGVNZXRhVmlld3Bv
cnRQb2xpY3kuaCAqLzsgfTsKIAkJRjQzMEU5NDQyMjQ3M0RGRjAwNUZFMDUzIC8qIFdlYkNvbnRl
bnRNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NDMwRTk0MzIyNDczREI4MDA1RkUwNTMgLyogV2ViQ29udGVudE1vZGUuaCAqLzsgfTsKLQkJRjQz
N0M4RDkyNTkzQjdFMzAwREI4QTFDIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBh
cmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0MzdDOEQ4MjU5M0I3RTMwMERCOEExQyAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRp
b25QYXJhbWV0ZXJzLmggKi87IH07CiAJCUY0MzhDRDFDMjI0MTQyMTQwMERFNkREQSAvKiBXS1dl
YnBhZ2VQcmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjQzOENEMUIyMjQxNDBBNjAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2Vz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQlGNDM4
Q0QxRjIyNDE0RDQwMDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXNJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzOENEMUUyMjQx
NEQ0MDAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzSW50ZXJuYWwuaCAqLzsgfTsKIAkJ
RjQzOENEMjEyMjQxRjY5NTAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzUHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzOENEMjAy
MjQxRjY5NTAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzUHJpdmF0ZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01Nzg2LDcgKzU3ODUs
NiBAQAogCQlGNDJENjM0MDIyQTBFRkQzMDBEMkZCM0EgLyogV2ViQXV0b2NvcnJlY3Rpb25EYXRh
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViQXV0b2NvcnJl
Y3Rpb25EYXRhLm1tOyBwYXRoID0gaW9zL1dlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzMEU5NDEyMjQ3MzJBOTAwNUZFMDUzIC8qIFdlYnNp
dGVNZXRhVmlld3BvcnRQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZU1ldGFWaWV3cG9y
dFBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDMwRTk0MzIyNDczREI4
MDA1RkUwNTMgLyogV2ViQ29udGVudE1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGVudE1v
ZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjQzN0M4RDgyNTkzQjdFMzAwREI4
QTFDIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDM4Q0QxQjIyNDE0MEE2MDBERTZEREEgLyogV0tX
ZWJwYWdlUHJlZmVyZW5jZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJwYWdlUHJlZmVyZW5jZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzOENEMUQyMjQxNEFENjAwREU2RERB
IC8qIFdLV2VicGFnZVByZWZlcmVuY2VzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJw
YWdlUHJlZmVyZW5jZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzhDRDFF
MjI0MTRENDAwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlc0ludGVybmFsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLV2VicGFnZVByZWZlcmVuY2VzSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTY1MjUsNyArNjUyMyw2IEBACiAJCQkJRTFDQzFCOEUxMkQ3RUFERjAw
NjI1ODM4IC8qIFByaW50SW5mby5oICovLAogCQkJCTQ2M0ZENDgxMUVCOTRFQUQwMEEyOTgyQyAv
KiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLywKIAkJCQk5QjEyMjlEMDIzRkYyQTVFMDA4
Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaCAqLywKLQkJCQlGNDM3
QzhEODI1OTNCN0UzMDBEQjhBMUMgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFy
YW1ldGVycy5oICovLAogCQkJCTVDQjdBRkU2MjNDNjgxQjAwMEU0OUNGMyAvKiBSZXNvdXJjZUxv
YWRJbmZvLmggKi8sCiAJCQkJNUMwMDk5M0IyNDE3RkI3RTAwRDUzQzI1IC8qIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmggKi8sCiAJCQkJNDEwNDgyQ0IxREREMkZCNTAwRjAwNkQw
IC8qIFJUQ05ldHdvcmsuY3BwICovLApAQCAtMTE4NzAsNyArMTE4NjcsNiBAQAogCQkJCTFBNTcw
NEZDMUJFMTc1MTEwMDg3NEFGMSAvKiBSZW1vdGVPYmplY3RJbnZvY2F0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUMxMzM4MDE4NTkwQUU0MDBGM0VDMDUgLyogUmVtb3RlT2JqZWN0UmVnaXN0
cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzEzMzg2MTg1OTBDNDYwMEYzRUMwNSAvKiBSZW1v
dGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKLQkJCQlGNDM3QzhEOTI1
OTNCN0UzMDBEQjhBMUMgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVy
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1OTQ3OTAxODdCM0IzQTAwNDM3ODU3IC8qIFJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU5NDdBODE4N0I1
MTc2MDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY1OTQ3OUIxODdCM0I2MDAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHkuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IDYxYjRjODI0OTU3NmRlMTI4YTlhYmVkMDkyN2Y0MWVl
NDE2MmJlNmUuLmMxZTM2Y2VkYTFkMjM3YzZhODk1Yzg1MTc2ZmE1NjRhMmZlOWE4YWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTMyLDcgKzMyLDYgQEAK
ICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiSW1hZ2VE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmgiCi0jaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5o
IgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2hhcmVk
TWVtb3J5LmgiCkBAIC02NywxMiArNjYsMTEgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogICAgIGNv
bm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlzKTsKICAgICBjb25uZWN0aW9uLm1lc3NhZ2VSZWNlaXZl
ck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIudG9VSW50NjQoKSwgKnRoaXMpOwotICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoewotICAgICAgICBtX3JlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyLAorICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQobV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllcgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBtX3Jlc3VtZURpc3BsYXlMaXN0U2Vt
YXBob3JlLmNyZWF0ZVNlbmRSaWdodCgpLAorICAgICAgICAsIG1fcmVzdW1lRGlzcGxheUxpc3RT
ZW1hcGhvcmUKICNlbmRpZgotICAgIH0pLCAwKTsKKyAgICApLCAwKTsKIH0KIAogdm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlZXN0YWJsaXNoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmluZGV4IDM0ZTMwY2UxMTkzNjBj
OTMwYzJiMDdlOWMzMDhhMWI2NDBlZDBhM2UuLmUwMDc0ZTkxNzMzNmFiMjRmZTVjYjU2OTk2MmZk
MTA0Yjg2NmJkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKQEAgLTQw
LDcgKzQwLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvV2ViQXVkaW9CdWZmZXJMaXN0Lmg+CiAjaW5jbHVkZSA8bWFjaC9tYWNoX3RpbWUu
aD4KLSNpbmNsdWRlIDx3dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oPgogI2VuZGlmCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtODAsNyArNzksNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eTo6c3RhcnRSZW5kZXJpbmdUaHJlYWQoKQogCiAgICAgYXV0byBvZmZUaHJlYWRSZW5k
ZXJpbmcgPSBbdGhpc10oKSBtdXRhYmxlIHsKICAgICAgICAgZG8gewotICAgICAgICAgICAgbV9y
ZW5kZXJTZW1hcGhvcmUtPndhaXQoKTsKKyAgICAgICAgICAgIG1fcmVuZGVyU2VtYXBob3JlLndh
aXQoKTsKICAgICAgICAgICAgIGlmIChtX3Nob3VsZFN0b3BUaHJlYWQpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAKQEAgLTk4LDggKzk3LDcgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHk6OnN0b3BSZW5kZXJpbmdUaHJlYWQoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3No
b3VsZFN0b3BUaHJlYWQgPSB0cnVlOwotICAgIGlmIChtX3JlbmRlclNlbWFwaG9yZSkKLSAgICAg
ICAgbV9yZW5kZXJTZW1hcGhvcmUtPnNpZ25hbCgpOworICAgIG1fcmVuZGVyU2VtYXBob3JlLnNp
Z25hbCgpOwogICAgIG1fcmVuZGVyVGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOwogICAgIG1f
cmVuZGVyVGhyZWFkID0gbnVsbHB0cjsKICNlbmRpZgpAQCAtMTA3LDIwICsxMDUsMTQgQEAgdm9p
ZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0b3BSZW5kZXJpbmdUaHJlYWQoKQogCiB2
b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2VzcygpCiB7
Ci0gICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgZGVzdGluYXRpb25JRDsKLSNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICBNYWNoU2VuZFJpZ2h0IHJlbmRlclNlbWFwaG9yZVNlbmRS
aWdodDsKLSNlbmRpZgotCiAgICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgY29ubmVjdGlvbi5hZGRD
bGllbnQoKnRoaXMpOwogICAgIGF1dG8gZGlkU3VjY2VlZCA9IGNvbm5lY3Rpb24uY29ubmVjdGlv
bigpLnNlbmRTeW5jKAotICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1h
bmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb24obV9pbnB1dERldmljZUlkLCBtX251bWJlck9m
SW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscygpLCBzYW1wbGVSYXRlKCksIGhh
cmR3YXJlU2FtcGxlUmF0ZSgpKSwKLSAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZXBseShkZXN0aW5hdGlvbklE
CisgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRl
QXVkaW9EZXN0aW5hdGlvbihtX2lucHV0RGV2aWNlSWQsIG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxz
LCBudW1iZXJPZk91dHB1dENoYW5uZWxzKCksIHNhbXBsZVJhdGUoKSwgaGFyZHdhcmVTYW1wbGVS
YXRlKCkKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAgICwgcmVuZGVyU2VtYXBob3Jl
U2VuZFJpZ2h0CisgICAgICAgICAgICAsIG1fcmVuZGVyU2VtYXBob3JlCiAjZW5kaWYKLSAgICAg
ICAgKSwgMCk7CisgICAgICAgICAgICApLCBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5KG1fZGVzdGluYXRpb25JRCks
IDApOwogCiAgICAgaWYgKCFkaWRTdWNjZWVkKSB7CiAgICAgICAgIC8vIFRoZSBHUFVQcm9jZXNz
IGxpa2VseSBjcmFzaGVkIGR1cmluZyB0aGlzIHN5bmNocm9ub3VzIElQQy4gZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb25EaWRDbG9zZSgpIHdpbGwgZ2V0IGNhbGxlZCB0byByZWNvbm5lY3QgdG8gdGhlIEdQ
VVByb2Nlc3MuCkBAIC0xMjgsNyArMTIwLDYgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbV9kZXN0aW5hdGlvbklEID0gZGVzdGluYXRpb25JRDsKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIG1fY3VycmVudEZyYW1lID0gMDsKQEAgLTEzNiw3ICsxMjcsNiBAQCB2b2lkIFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2VzcygpCiAgICAgZ2V0QXVk
aW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7CiAgICAgbV9yaW5nQnVmZmVy
LT5hbGxvY2F0ZShzdHJlYW1Gb3JtYXQsIG1fbnVtYmVyT2ZGcmFtZXMpOwogICAgIG1fYXVkaW9C
dWZmZXJMaXN0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q+KHN0cmVh
bUZvcm1hdCk7Ci0gICAgbV9yZW5kZXJTZW1hcGhvcmUgPSBtYWtlVW5pcXVlPE1hY2hTZW1hcGhv
cmU+KFdURk1vdmUocmVuZGVyU2VtYXBob3JlU2VuZFJpZ2h0KSk7CiAjZW5kaWYKIAogICAgIHN0
YXJ0UmVuZGVyaW5nVGhyZWFkKCk7CkBAIC0yMDUsOSArMTk1LDcgQEAgdm9pZCBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHk6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vz
c0Nvbm5lY3QKICAgICBvbGRDb25uZWN0aW9uLnJlbW92ZUNsaWVudCgqdGhpcyk7CiAKICAgICBz
dG9wUmVuZGVyaW5nVGhyZWFkKCk7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgbV9yZW5kZXJT
ZW1hcGhvcmUgPSBudWxscHRyOwotI2VuZGlmCisKICAgICBjb25uZWN0VG9HUFVQcm9jZXNzKCk7
CiAKICAgICBpZiAoaXNQbGF5aW5nKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaApp
bmRleCA4ZDJjNjNlYjljNTVmYjhiMmFjNTRiYWFkZThmNzNjZTVkNWIxY2M1Li5hZjYzNmZmMzY2
NDljMjQwMDYyMzI0YWFlYWEyMGYxN2QxNTgwZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5LmgKQEAgLTM4LDYgKzM4LDggQEAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRl
ICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0
aW5hdGlvbkNvY29hLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3Rm
L2NvY29hL01hY2hTZW1hcGhvcmUuaD4KICNlbHNlCiAjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0Rl
c3RpbmF0aW9uR1N0cmVhbWVyLmg+CiAjZW5kaWYKQEAgLTQ3LDExICs0OSw3IEBAIGNsYXNzIENB
UmluZ0J1ZmZlcjsKIGNsYXNzIFdlYkF1ZGlvQnVmZmVyTGlzdDsKIH0KIAotbmFtZXNwYWNlIFdU
RiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi1jbGFzcyBNYWNoU2VtYXBob3JlOwotI2VuZGlmCi19
CisKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTEwNCw3ICsxMDIsNyBAQCBwcml2YXRlOgog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHVpbnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVy
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXVEY6Ok1hY2hTZW1hcGhvcmU+IG1fcmVuZGVyU2VtYXBo
b3JlOworICAgIE1hY2hTZW1hcGhvcmUgbV9yZW5kZXJTZW1hcGhvcmU7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4gbV9hdWRpb0J1ZmZlckxpc3Q7CiAg
ICAgdWludDY0X3QgbV9jdXJyZW50RnJhbWUgeyAwIH07CiAgICAgZmxvYXQgbV9zYW1wbGVSYXRl
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418410</attachid>
            <date>2021-01-26 06:12:28 -0800</date>
            <delta_ts>2021-01-26 10:44:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220919-20210126161226.patch</filename>
            <type>text/plain</type>
            <size>65114</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxODgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQ5MjhlNTRlNTE4ODljMmZmMmRhNWM2
ZGY4YmMxYzM4YWE1OTczYzIuLjY1NmUyM2U4MDEzOTk2M2E0ZjU4ZjcwNWIzMzMxY2M3OTc3YTVi
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMDEtMjYgIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNYWNoU2VtYXBob3JlIGRvZXMgbm90IHdvcmsg
d2VsbCB3aXRoIElQQyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwOTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW1wbGVtZW50IG1vdmUgY29uc3RydWN0b3IgYW5kIG1vdmUgYXNzaWdu
bWVudCBvcGVyYXRvciBmb3IgTWFjaFNlbWFwaG9yZS4KKyAgICAgICAgTWFrZXMgaXQgcG9zc2li
bGUgdG8gY3JlYXRlIHR5cGVzIHRoYXQgaG9sZCBNYWNoU2VtYXBob3JlIGJ1dCBzdGlsbAorICAg
ICAgICBhcmUgZGVjb2RlKClhYmxlIGZyb20gYSBJUEMgbWVzc2FnZS4gVGhlIGRlY29kZWQgb2Jq
ZWN0cyBhcmUgaGVsZCB3aXRoCisgICAgICAgIE9wdGlvbmFsLCBhbmQgdGhpcyBmb3JjZXMgdGhl
IHN1Ym9iamVjdHMgdG8gaGF2ZSBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisKKyAgICAgICAg
QWRkIGFzc2VydHMgdGhhdCB0aGUgbW92ZWQtYXdheSBvYmplY3QgaXMgbm90IHVzZWQuCisgICAg
ICAgIEFkZCB0aGUgYXNzZXJ0cyBhcyBhc3NlcnRzIG9uIHRoZSBjYWxsIHJldHVybiB2YWx1ZXMs
IHNvIHRoZSB2YWx1ZXMKKyAgICAgICAgYXJlIGFsc28gY2hlY2tlZCBvbiBub3JtYWwgb2JqZWN0
cyBvbiBub3JtYWwgb3BlcmF0aW9uLgorCisgICAgICAgICogd3RmL2NvY29hL01hY2hTZW1hcGhv
cmUuY3BwOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3JlOjpNYWNoU2VtYXBob3JlKToKKyAg
ICAgICAgKFdURjo6TWFjaFNlbWFwaG9yZTo6fk1hY2hTZW1hcGhvcmUpOgorICAgICAgICAoV1RG
OjpNYWNoU2VtYXBob3JlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3Jl
OjpzaWduYWwpOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3JlOjp3YWl0KToKKyAgICAgICAg
KFdURjo6TWFjaFNlbWFwaG9yZTo6d2FpdEZvcik6CisgICAgICAgIChXVEY6Ok1hY2hTZW1hcGhv
cmU6OmNyZWF0ZVNlbmRSaWdodCBjb25zdCk6CisgICAgICAgIChXVEY6Ok1hY2hTZW1hcGhvcmU6
OmRlc3Ryb3kpOgorICAgICAgICAqIHd0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg6CisgICAgICAg
IChXVEY6Ok1hY2hTZW1hcGhvcmU6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorCiAyMDIxLTAxLTI1
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBBYm9y
dFNpZ25hbCBpbiBhZGRFdmVudExpc3RlbmVyT3B0aW9ucyB0byB1bnN1YnNjcmliZSBmcm9tIGV2
ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBhY2IwMGUzNjI2ZDJkZDZlNWRlNjFhMjMyYzU1MDViMmRmMjY3ZTEx
Li5lZmM0ZDBmYTU5MDliYzYzOTJkMmNmNjVmOGE3ODU3MjA4OTFlMTZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEwOSBAQAorMjAyMS0wMS0yNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBw
bGUuY29tPgorCisgICAgICAgIE1hY2hTZW1hcGhvcmUgZG9lcyBub3Qgd29yayB3ZWxsIHdpdGgg
SVBDIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjA5MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbXBsZW1lbnQgYW4gZW5jb2RlciBhbmQgZGVjb2RlciBmb3IgV1RGOjpNYWNoU2VtYXBo
b3JlLiBNYWtlcyBpdCBwb3NzaWJsZSB0byBzZW5kIGl0CisgICAgICAgIHZpYSBJUEMgYXMgaXRz
IG93biB0eXBlLCBub3QgYXMgTWFjaFNlbmRSaWdodC4KKworICAgICAgICBBcyBhbiBleGFtcGxl
LCBjaGFuZ2VzIGV4aXN0aW5nIHVzZXMgb2YgTWFjaFNlbmRSaWdodCBmb3Igc2VtYXBob3JlcyBp
biBtZXNzYWdlcyBhcworICAgICAgICBNYWNoU2VtYXBob3JlcywgZGVzY3JpYmVkIGJlbG93Lgor
CisgICAgICAgIENoYW5nZXMgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5IHRvIHNlbmQgaXRz
IG93biBzZW1hcGhvcmUgZnJvbQorICAgICAgICBXZWJQcm9jZXNzIHRvIEdQVVByb2Nlc3MuIFBy
ZXZpb3VzbHkgdGhlIHNlbWFwaG9yZSB3b3VsZCBiZSBzZW50IGJhY2sgYnkKKyAgICAgICAgUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuIFByZXZpb3VzbHkgdGhlIGNvZGUgc3RydWN0dXJl
IGlzIG1vcmUKKyAgICAgICAgY29tcGxpY2F0ZWQgdGhhbiBuZWNjZXNzYXJ5LCBhcyB0aGUgc2Vt
YXBob3JlIGhvbGRlciB3YXMgYmVpbmcKKyAgICAgICAgbnVsbC1jaGVja2VkLCByZXNldCBhbmQg
cmUtc2VhdGVkLiBUaGUgV2ViUHJvY2VzcyBnZXRzIGFscmVhZHkgdG8gY2hvb3NlCisgICAgICAg
IHRoZSBzZW1hcGhvcmVzIEdQVVByb2Nlc3MgdXNlcywgc28gdGhpcyBzaG91bGQgbm90IGluY3Jl
YXNlIHNlY3VyaXR5CisgICAgICAgIHN1cmZhY2UuIFRoZSBjaGFuZ2UgY2hvc2VuIGhlcmUgc2lk
ZS1zdGVwcyB0aGUgc2hvcnRjb21pbmcgb2YgdGhlIElQQworICAgICAgICBzeXN0ZW0gd2hlcmUg
dW5wYWNraW5nIG9iamVjdHMgZnJvbSB0aGUgUmVwbHkgbWVzc2FnZXMgbWFuZGF0ZXMgdGhhdCBh
CisgICAgICAgIGNvbnN0cnVjdGVkIHZlcnNpb24gb2YgdGhhdCB0eXBlIGV4aXN0cy4gRm9yIHBy
ZXZpb3VzIE1hY2hTZW5kUmlnaHQKKyAgICAgICAgZW1wdHktY29uc3RydWN0ZWQgb2JqZWN0IGlz
IHNpbXBsZSwgYnV0IGZvciBNYWNoU2VtYXBob3JlCisgICAgICAgIGVtcHR5LWNvbnN0cnVjdGVk
IG9iamVjdCBjcmVhdGVzIHVubmVjZXNzYXJ5IGNvbXBsaWNhdGlvbiB0aGF0IGlzIG5vdAorICAg
ICAgICByZXF1aXJlZCBvdGhlcndpc2UgYXQgdGhlIG1vbWVudC4gVGhlIGFsdGVybmF0aXZlIHRv
IHdoYXQgd2FzIGNob3NlbgorICAgICAgICBoZXJlIHdvdWxkIGJlIHRvIGhvbGQgd2l0aCBPcHRp
b25hbDxNYWNoU2VtYXBob3JlPiBhbmQgYWRkIGEKKyAgICAgICAgZW1wdHktaW5pdGlhbGl6aW5n
IGNvbnN0cnVjdG9yIHRvIGhvbGQgdGhlIG9iamVjdCB3aGVyZSB0byB1bnBhY2sgdGhlCisgICAg
ICAgIHNlbWFwaG9yZSBvYmplY3QgZnJvbSB0aGUgUmVwbHkuCisKKyAgICAgICAgQ2hhbmdlcyBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kIHRvIHJlY2VpdmUgaXRzIHBhcmFtZXRlcnMgZnJvbSB0aGUg
bm9ybWFsCisgICAgICAgIG1lc3NhZ2UgcGFyYW1ldGVycyBpbnN0ZWFkIG9mIHJlZHVuZGFudAor
ICAgICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLiBUaGUgSVBD
IGdlbmVyYXRvciBhbHJlYWR5CisgICAgICAgIGdlbmVyYXRlcyAxOjEgaWRlbnRpY2FsIHN0cnVj
dHVyZSwgaXQgaXMganVzdCB0aGUgbWVzc2FnZQorICAgICAgICBNZXNzYWdlczo6R1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlUmVuZGVyaW5nQmFja2VuZC4gVGhlcmUgaXMgbm8KKyAg
ICAgICAgbmVlZCB0byBkb3VibGUtd3JhcCB0aGUgc2ltcGxlIGxpc3Qgb2YgcGFyYW1ldGVycy4g
VGhlIGRvdWJsZS13cmFwcGluZworICAgICAgICBpcyBhIHByb2JsZW06IFRoZSBtZXNzYWdlIHN5
c3RlbSBwYXJhbWV0ZXJzIGFyZSBvZiBvd25lcnNoaXAgImNvbnN0CisgICAgICAgIHJlZmVyZW5j
ZSIsIHdoaWNoIGlzIHdoYXQgaXMgZXhwZWN0ZWQuCisgICAgICAgIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRDcmVhdGlvblBhcmFtZXRlcnMgY29udGVudHMgd2VyZSBvZiBvd25lcnNoaXAKKyAgICAg
ICAgInZhbHVlIiwgd2hpY2ggd29ya3MgYXMgZXhwZWN0ZWQgb25seSBmb3Igc2ltcGxlIHByaW1p
dGl2ZSB0eXBlcy4KKyAgICAgICAgRXNzZW50aWFsbHkgcHJldmlvdXNseSBjYWxsaW5nIHRoZSBJ
UEMgZnVuY3Rpb24gbWVhbnQgdHJhbnNmZXJpbmcKKyAgICAgICAgb2JqZWN0cyB0byBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLiBUaGlzIGlzIG5vdCBob3cgdGhlCisg
ICAgICAgIElQQyBzeXN0ZW0gaXMgbWVhbnQgdG8gd29yay4gVGhlIGludGVudGlvbiBvZiBhIElQ
QyBjYWxsIGlzIHRvLCBieQorICAgICAgICBkZWZhdWx0LCByZWZlcmVuY2UgaXRzIGFyZ3VtZW50
cyBmb3IgdGhlIHB1cnBvc2Ugb2YgZW5jb2RpbmcuIFRoZSBwYXRjaAorICAgICAgICB0cmllcyB0
byBhY2hpZXZlIGEgYml0IHRoZSBzYW1lIGdvYWwgYXMgdGhlIG9yaWdpbmFsCisgICAgICAgIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMgcHJlc3VtYWJseSBoYWQsIGku
ZS4gdG8gYXZvaWQKKyAgICAgICAgcHJvYmxlbXMgd2l0aCAjaWYgUExBVEZPUk0oQ09DT0EpLSNl
bHNlIGluIG1ldGhvZCBkZWNsYXJhdGlvbnMgYW5kCisgICAgICAgIGRlZmluaXRpb25zLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0b3IuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVy
QWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cyk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlv
RGVzdGluYXRpb246OlJlbW90ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Y3JlYXRlQXVkaW9EZXN0aW5hdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpkZWxldGVBdWRp
b0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1h
bmFnZXI6OnN0YXJ0QXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdG9wQXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2Fn
ZXMuaW46CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvdGVzdHMvTWFrZWZpbGU6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVz
c2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcDoKKyAgICAgICAgKElQQzo6anNWYWx1ZUZvckFy
Z3VtZW50cyk6CisgICAgICAgIChJUEM6Om1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucyk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcDoKKyAgICAgICAg
KElQQzo6ZGVzY3JpcHRpb24pOgorICAgICAgICAoSVBDOjpyZWNlaXZlck5hbWUpOgorICAgICAg
ICAoSVBDOjppc1ZhbGlkTWVzc2FnZU5hbWUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rl
c3RzL01lc3NhZ2VOYW1lcy5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RX
aXRoTWFjaFNlbWFwaG9yZS5tZXNzYWdlcy5pbjogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4uCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZVJlY2Vp
dmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6
ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpUZXN0V2l0aE1hY2hTZW1hcGhv
cmU6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVz
dHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZXMuaDogQWRkZWQuCisgICAgICAgIChNZXNz
YWdlczo6VGVzdFdpdGhNYWNoU2VtYXBob3JlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKToKKyAgICAg
ICAgKE1lc3NhZ2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6OlNlbmRTZW1hcGhvcmU6Om5hbWUp
OgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6U2VuZFNlbWFwaG9y
ZTo6U2VuZFNlbWFwaG9yZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhNYWNoU2VtYXBo
b3JlOjpTZW5kU2VtYXBob3JlOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6
OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6UmVjZWl2ZVNlbWFwaG9yZTo6bmFtZSk6CisgICAgICAg
IChNZXNzYWdlczo6VGVzdFdpdGhNYWNoU2VtYXBob3JlOjpSZWNlaXZlU2VtYXBob3JlOjphcmd1
bWVudHMgY29uc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFj
aFNlbWFwaG9yZU1lc3NhZ2VzUmVwbGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvQ29j
b2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8V1RGOjpNYWNoU2VtYXBob3JlPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxXVEY6Ok1hY2hTZW1hcGhvcmU+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmg6IFJlbW92ZWQuCisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y29ubmVjdFRvR1BVUHJvY2Vzcyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpzdGFydFJlbmRl
cmluZ1RocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eTo6c3RvcFJlbmRlcmluZ1RocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5Lmg6CisKIDIwMjEtMDEtMjYgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWJHTCBwb3dlciBwcmVmZXJlbmNlIGFuZCBkaXNjcmV0ZS9pbnRlcm5h
bCBncHUgc2VsZWN0aW9uIGltcGxlbWVudGVkIGluY29ycmVjdGx5IHdpdGggQU5HTEUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuY3BwIGIvU291cmNlL1dU
Ri93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5jcHAKaW5kZXggOTJmY2YxNWMwN2Q5MjRhNDUwNzkz
N2ZkMjMwNDU3MmM0ZGJiYjk2Ni4uNmZiMzU3N2VhZDM4NDhjZjgwYzA4NTg4MWM3ZTZhZTE3Y2Uz
Y2QzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5jcHAKQEAgLTM2LDYgKzM2
LDEyIEBAIE1hY2hTZW1hcGhvcmU6Ok1hY2hTZW1hcGhvcmUoKQogICAgIEFTU0VSVF9VTlVTRUQo
cmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTKTsKIH0KIAorTWFjaFNlbWFwaG9yZTo6TWFjaFNlbWFw
aG9yZShNYWNoU2VtYXBob3JlJiYgb3RoZXIpCisgICAgOiBtX3NlbmRSaWdodChXVEZNb3ZlKG90
aGVyLm1fc2VuZFJpZ2h0KSkKKyAgICAsIG1fc2VtYXBob3JlKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIu
bV9zZW1hcGhvcmUsIFNFTUFQSE9SRV9OVUxMKSkKK3sKK30KKwogTWFjaFNlbWFwaG9yZTo6TWFj
aFNlbWFwaG9yZShNYWNoU2VuZFJpZ2h0JiYgc2VuZFJpZ2h0KQogICAgIDogbV9zZW5kUmlnaHQo
V1RGTW92ZShzZW5kUmlnaHQpKQogICAgICwgbV9zZW1hcGhvcmUobV9zZW5kUmlnaHQuc2VuZFJp
Z2h0KCkpCkBAIC00NSwyOSArNTEsNTYgQEAgTWFjaFNlbWFwaG9yZTo6TWFjaFNlbWFwaG9yZShN
YWNoU2VuZFJpZ2h0JiYgc2VuZFJpZ2h0KQogCiBNYWNoU2VtYXBob3JlOjp+TWFjaFNlbWFwaG9y
ZSgpCiB7Ci0gICAgaWYgKCFtX3NlbmRSaWdodCkKLSAgICAgICAgc2VtYXBob3JlX2Rlc3Ryb3ko
bWFjaF90YXNrX3NlbGYoKSwgbV9zZW1hcGhvcmUpOworICAgIGRlc3Ryb3koKTsKK30KKworTWFj
aFNlbWFwaG9yZSYgTWFjaFNlbWFwaG9yZTo6b3BlcmF0b3I9KE1hY2hTZW1hcGhvcmUmJiBvdGhl
cikKK3sKKyAgICBpZiAodGhpcyAhPSAmb3RoZXIpIHsKKyAgICAgICAgZGVzdHJveSgpOworICAg
ICAgICBtX3NlbmRSaWdodCA9IFdURk1vdmUob3RoZXIubV9zZW5kUmlnaHQpOworICAgICAgICBt
X3NlbWFwaG9yZSA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9zZW1hcGhvcmUsIFNFTUFQSE9SRV9O
VUxMKTsKKyAgICB9CisKKyAgICByZXR1cm4gKnRoaXM7CiB9CiAKIHZvaWQgTWFjaFNlbWFwaG9y
ZTo6c2lnbmFsKCkKIHsKLSAgICBzZW1hcGhvcmVfc2lnbmFsKG1fc2VtYXBob3JlKTsKKyAgICBh
dXRvIHJldCA9IHNlbWFwaG9yZV9zaWduYWwobV9zZW1hcGhvcmUpOworICAgIEFTU0VSVF9VTlVT
RUQocmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTKTsKIH0KIAogdm9pZCBNYWNoU2VtYXBob3JlOjp3
YWl0KCkKIHsKLSAgICBzZW1hcGhvcmVfd2FpdChtX3NlbWFwaG9yZSk7CisgICAgYXV0byByZXQg
PSBzZW1hcGhvcmVfd2FpdChtX3NlbWFwaG9yZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXQsIHJl
dCA9PSBLRVJOX1NVQ0NFU1MpOwogfQogCiB2b2lkIE1hY2hTZW1hcGhvcmU6OndhaXRGb3IoU2Vj
b25kcyB0aW1lb3V0KQogewogICAgIGF1dG8gc2Vjb25kcyA9IHRpbWVvdXQuc2Vjb25kc0FzPHVu
c2lnbmVkPigpOwotICAgIHNlbWFwaG9yZV90aW1lZHdhaXQobV9zZW1hcGhvcmUsIHsgc2Vjb25k
cywgc3RhdGljX2Nhc3Q8Y2xvY2tfcmVzX3Q+KHRpbWVvdXQubmFub3NlY29uZHNBczx1aW50NjRf
dD4oKSAtIHNlY29uZHMgKiBOU0VDX1BFUl9TRUMpIH0pOworICAgIGF1dG8gcmV0ID0gc2VtYXBo
b3JlX3RpbWVkd2FpdChtX3NlbWFwaG9yZSwgeyBzZWNvbmRzLCBzdGF0aWNfY2FzdDxjbG9ja19y
ZXNfdD4odGltZW91dC5uYW5vc2Vjb25kc0FzPHVpbnQ2NF90PigpIC0gc2Vjb25kcyAqIE5TRUNf
UEVSX1NFQykgfSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXQsIHJldCA9PSBLRVJOX1NVQ0NFU1Mg
fHwgcmV0ID09IEtFUk5fT1BFUkFUSU9OX1RJTUVEX09VVCk7CiB9CiAKLU1hY2hTZW5kUmlnaHQg
TWFjaFNlbWFwaG9yZTo6Y3JlYXRlU2VuZFJpZ2h0KCkKK01hY2hTZW5kUmlnaHQgTWFjaFNlbWFw
aG9yZTo6Y3JlYXRlU2VuZFJpZ2h0KCkgY29uc3QKIHsKICAgICByZXR1cm4gTWFjaFNlbmRSaWdo
dDo6Y3JlYXRlKG1fc2VtYXBob3JlKTsKIH0KIAordm9pZCBNYWNoU2VtYXBob3JlOjpkZXN0cm95
KCkKK3sKKyAgICBpZiAobV9zZW5kUmlnaHQpIHsKKyAgICAgICAgbV9zZW5kUmlnaHQgPSBNYWNo
U2VuZFJpZ2h0KCk7CisgICAgICAgIG1fc2VtYXBob3JlID0gU0VNQVBIT1JFX05VTEw7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1fc2VtYXBob3JlID09IFNFTUFQSE9SRV9OVUxM
KQorICAgICAgICByZXR1cm47CisgICAgYXV0byByZXQgPSBzZW1hcGhvcmVfZGVzdHJveShtYWNo
X3Rhc2tfc2VsZigpLCBtX3NlbWFwaG9yZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXQsIHJldCA9
PSBLRVJOX1NVQ0NFU1MpOworICAgIG1fc2VtYXBob3JlID0gU0VNQVBIT1JFX05VTEw7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvTWFj
aFNlbWFwaG9yZS5oIGIvU291cmNlL1dURi93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oCmluZGV4
IGJlN2NlYTA0NmI4MTJjYmMzZWIzYTcyMTMwZDlhNWJhMDA5M2Y5MmYuLjRiNWRiNzRlNzE2YzMy
OGY3N2IyNjJkYjlkM2IwY2MxNWNkOTA3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2Nv
Y29hL01hY2hTZW1hcGhvcmUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NYWNoU2VtYXBo
b3JlLmgKQEAgLTM3LDE2ICszNywyMCBAQCBjbGFzcyBNYWNoU2VtYXBob3JlIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShNYWNoU2VtYXBob3JlKTsKIHB1YmxpYzoKICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgTWFjaFNlbWFwaG9yZSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBNYWNoU2Vt
YXBob3JlKE1hY2hTZW1hcGhvcmUmJik7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0
IE1hY2hTZW1hcGhvcmUoTWFjaFNlbmRSaWdodCYmKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
fk1hY2hTZW1hcGhvcmUoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWFjaFNlbWFwaG9yZSYg
b3BlcmF0b3I9KE1hY2hTZW1hcGhvcmUmJik7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBzaWduYWwoKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB3YWl0KCk7CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgd2FpdEZvcihTZWNvbmRzKTsKIAotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBNYWNoU2VuZFJpZ2h0IGNyZWF0ZVNlbmRSaWdodCgpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBNYWNoU2VuZFJpZ2h0IGNyZWF0ZVNlbmRSaWdodCgpIGNvbnN0OwogCisgICAgZXhw
bGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VuZFJpZ2h0IHx8IG1fc2Vt
YXBob3JlICE9IFNFTUFQSE9SRV9OVUxMOyB9CiBwcml2YXRlOgorICAgIHZvaWQgZGVzdHJveSgp
OwogICAgIE1hY2hTZW5kUmlnaHQgbV9zZW5kUmlnaHQ7CiAgICAgc2VtYXBob3JlX3QgbV9zZW1h
cGhvcmUgeyBTRU1BUEhPUkVfTlVMTCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA5MDA1NjY5NGE1
MzAwZGMzYThiZmRkMWVlMzBlYzE2YmQ4ZWJkZWE4Li45ZGY4ZDE2MjFmMzQwNWNlOWNiN2QyNGM3
OTlhNzBlOGQwMDhlMDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00OCw3ICs0OCw2IEBACiAjaW5jbHVk
ZSAiUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5oIgotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMu
aCIKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZXMuaCIKQEAg
LTI5MSwxMCArMjkwLDE4IEBAIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5JiBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjphdWRpb1Nlc3Npb25Qcm94eSgpCiB9CiAjZW5kaWYKIAotdm9pZCBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQordm9pZCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyIGlkZW50aWZpZXIKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAsIE1hY2hT
ZW1hcGhvcmUmJiByZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZQorI2VuZGlmCisgICAgKQogewot
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShw
YXJhbWV0ZXJzLmlkZW50aWZpZXIsIFsmXSgpIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNy
ZWF0ZSgqdGhpcywgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOworICAgIGF1dG8gYWRkUmVzdWx0ID0g
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShpZGVudGlmaWVyLCBbJl0oKSB7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyPihS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIHsKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICAgICAgICAgIFdURk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1h
cGhvcmUpCisjZW5kaWYKKyAgICAgICAgfSkpOwogICAgIH0pOwogICAgIEFTU0VSVF9VTlVTRUQo
YWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA0NDE4Y2E2
YWVhMmE0MDhlMzc3NTM4OTBlMWQzMGRkZWM3NmVjN2NhLi5iNmEyNGNiMzIwYTM2M2U3ZTlmZWRk
NDNkMjkwNjM1OTY0OTUwNjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTY1LDcgKzY1LDYgQEAgY2xhc3MgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w7CiBjbGFzcyBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyOwogY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTsKIHN0cnVjdCBS
ZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uOwotc3RydWN0IFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MKICAgICA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPgpAQCAtMTI3LDcgKzEyNiwxMSBA
QCBwcml2YXRlOgogI2VuZGlmCiAjZW5kaWYKIAotICAgIHZvaWQgY3JlYXRlUmVuZGVyaW5nQmFj
a2VuZChSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOworI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIHZvaWQgY3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciwgTWFjaFNlbWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBo
b3JlKTsKKyNlbHNlCisgICAgdm9pZCBjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKTsKKyNlbmRpZgogICAgIHZvaWQgcmVsZWFzZVJlbmRlcmluZ0JhY2tl
bmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogCiAjaWYgRU5BQkxFKFdFQkdMKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAwY2JjNWQ4Nzk4M2U2NjZlNDhlODM5YTY0NjQ4
OTg3OTUwYTM5MmJmLi4xZTQ5YjMzZWNmNmE1MzE1YzJiMWE0Mjk4ZTJkNDE3MjU5MmQyYTMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjMsNyArMjMsMTIgQEAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mg
V2FudHNEaXNwYXRjaE1lc3NhZ2UgewotICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2VuZChz
dHJ1Y3QgV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIHBh
cmFtZXRlcnMpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBDcmVhdGVSZW5kZXJpbmdC
YWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgaWRlbnRpZmllciwgTWFj
aFNlbWFwaG9yZSByZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkKKyNlbmRpZgorI2lmICFQTEFU
Rk9STShDT0NPQSkKKyAgICB2b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyKQorI2VuZGlmCiAgICAgdm9pZCBSZWxl
YXNlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQogI2lmIEVOQUJMRShXRUJHTCkKICAgICB2b2lkIENy
ZWF0ZUdyYXBoaWNzQ29udGV4dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgYXR0cmlidXRlcywgV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIg
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4
IDMyYWZkMzEwYmU1YzMwMzA2NDdkNzI1OGMyM2ZkYTAxMDJiMmQ3NzUuLmYwODY5OTFlZjFkY2I0
MTU3MGM0MGJhYmI4Nzc5NzJkMDNjODgyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAg
LTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmgiCiAj
aW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJSZW1v
dGVNZWRpYVBsYXllclByb3h5LmgiCi0jaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZENy
ZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CkBAIC02NSwxNyArNjQsMTcgQEAK
IG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitSZWY8UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZD4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBsYXRmb3JtQ3JlYXRlUGFyYW1zJiYgcGFyYW1z
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcywgaWRlbnRpZmllciwgV1RGTW92ZShwYXJhbXMpKSk7CiB9CiAKLVJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENy
ZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFBsYXRmb3JtQ3JlYXRlUGFyYW1zJiYgcGFyYW1zKQogICAgIDogbV93b3JrUXVldWUoV29ya1F1
ZXVlOjpjcmVhdGUoIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgd29yayBxdWV1ZSIsIFdvcmtRdWV1
ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6VXNlckludGVyYWN0aXZlKSkKICAgICAs
IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQot
ICAgICwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcihwYXJhbWV0ZXJzLmlkZW50aWZpZXIp
CisgICAgLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKGlkZW50aWZpZXIpCiAjaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgLCBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKG1ha2VVbmlx
dWU8TWFjaFNlbWFwaG9yZT4oV1RGTW92ZShwYXJhbWV0ZXJzLnNlbmRSaWdodEZvclJlc3VtZURp
c3BsYXlMaXN0U2VtYXBob3JlKSkpCisgICAgLCBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3Jl
KFdURk1vdmUocGFyYW1zLnJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKSkKICNlbmRpZgogewog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBAIC0yMzEsNyArMjMwLDcgQEAgUmVmUHRy
PEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFn
ZUJ1ZmZlckFmdGVyQXBwbHkKIAogICAgICAgICAgICAgaGFuZGxlLnN0YXJ0V2FpdGluZygpOwog
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICAgICAgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFw
aG9yZS0+d2FpdEZvcigzMF91cyk7CisgICAgICAgICAgICBtX3Jlc3VtZURpc3BsYXlMaXN0U2Vt
YXBob3JlLndhaXRGb3IoMzBfdXMpOwogI2Vsc2UKICAgICAgICAgICAgIHNsZWVwKDMwX3VzKTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggZTYzODk5MDNiNjUwYmE4ZDk3M2RhZjli
M2RjY2E2NDUzNTZmNDVmOC4uODBjM2UyNDQyNjI2MmJkOWJhNDk1MTg5ZmJlZmE0MzJkMWM4MWRj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC00Miw5ICs0Miw3IEBACiAjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotbmFtZXNwYWNlIFdURiB7Ci1jbGFz
cyBNYWNoU2VtYXBob3JlOwotfQorI2luY2x1ZGUgPHd0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg+
CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjIsMTQgKzYwLDE4IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTsKIGNsYXNzIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Ci1zdHJ1Y3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENy
ZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZAogICAgIDog
cHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAgICAsIHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246
OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcgogICAgICwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYs
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJik7CisgICAgc3RydWN0
IFBsYXRmb3JtQ3JlYXRlUGFyYW1zIHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgTWFj
aFNlbWFwaG9yZSByZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKKyNlbmRpZgorICAgIH07Cisg
ICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGUoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBQbGF0Zm9ybUNyZWF0
ZVBhcmFtcyYmKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kKCk7CiAKICAg
ICBSZW1vdGVSZXNvdXJjZUNhY2hlJiByZW1vdGVSZXNvdXJjZUNhY2hlKCkgeyByZXR1cm4gbV9y
ZW1vdGVSZXNvdXJjZUNhY2hlOyB9CkBAIC04Niw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpc2Nvbm5lY3QoKTsKIAogcHJpdmF0ZToKLSAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYpOworICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBQbGF0Zm9ybUNyZWF0ZVBh
cmFtcyYmKTsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxl
PiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgbGVuZ3RoLCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUsIHVpbnQ4X3QqIGhhbmRs
ZUxvY2F0aW9uKSBvdmVycmlkZTsKIApAQCAtMTQ5LDcgKzE1MSw3IEBAIHByaXZhdGU6CiAgICAg
SGFzaE1hcDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIFJlZlB0
cjxEaXNwbGF5TGlzdFJlYWRlckhhbmRsZT4+IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzOwog
ICAgIE9wdGlvbmFsPFBlbmRpbmdXYWtldXBJbmZvcm1hdGlvbj4gbV9wZW5kaW5nV2FrZXVwSW5m
bzsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpNYWNoU2Vt
YXBob3JlPiBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOworICAgIFdURjo6TWFjaFNlbWFw
aG9yZSBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOwogI2VuZGlmCiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyLmNwcAppbmRleCAwZjg0MDdjMWYzZGM3ODdiNTBlOWJmNjA5OTFh
ZWU3Y2I0MTBiNGZhLi43YmE0MTAwNWUzY2U1YWI3MzM3Y2JiNWEyMjQ2M2EyOTk0MzkyMzEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAKQEAgLTUxLDEwICs1MSwxNSBAQCBjbGFz
cyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uCiAjZW5kaWYKIHsKIHB1YmxpYzoKKyAgICBzdHJ1Y3Qg
UGxhdGZvcm1DcmVhdGVQYXJhbXMgeworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBNYWNo
U2VtYXBob3JlIHJlbmRlclNlbWFwaG9yZTsKKyNlbmRpZgorICAgIH07CiAgICAgc3RhdGljIFJl
ZjxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgY29ubmVjdGlvbiwgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmll
ciwKLSAgICAgICAgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJP
ZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNh
bXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkKKyAgICAgICAgY29uc3QgU3RyaW5n
JiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90
IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJl
U2FtcGxlUmF0ZSwgUGxhdGZvcm1DcmVhdGVQYXJhbXMmJiBwYXJhbXMpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbm5lY3Rpb24s
IGlkZW50aWZpZXIsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRlKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oY29ubmVjdGlv
biwgaWRlbnRpZmllciwgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlLCBoYXJkd2FyZVNhbXBsZVJhdGUsIFdURk1v
dmUocGFyYW1zKSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUF1ZGlvRGVzdGluYXRp
b24oKSA9IGRlZmF1bHQ7CkBAIC02OCw4ICs3Myw2IEBAIHB1YmxpYzoKICAgICB9CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBNYWNoU2VuZFJpZ2h0IGNyZWF0ZVJlbmRlclNlbWFwaG9yZVNl
bmRSaWdodCgpIHsgcmV0dXJuIG1fcmVuZGVyU2VtYXBob3JlLmNyZWF0ZVNlbmRSaWdodCgpOyB9
Ci0KICAgICB2b2lkIGF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKGNvbnN0IFNoYXJlZE1lbW9y
eTo6SVBDSGFuZGxlJiBpcGNIYW5kbGUsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbiYgZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQogICAgIHsKICAg
ICAgICAgbV9yaW5nQnVmZmVyID0gbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+
KG1ha2VVbmlxdWVSZWY8UmVhZE9ubHlTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZT4oaXBjSGFuZGxl
LmhhbmRsZSksIGRlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7CkBAIC0xMDQsMTEgKzEwNywx
MiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1BsYXlpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzUGxh
eWluZzsgfQogCiBwcml2YXRlOgotICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYsIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1
dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVS
YXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUpCisgICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50
aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBu
dW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZs
b2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwgUGxhdGZvcm1DcmVhdGVQ
YXJhbXMmJiBwYXJhbXMpCiAgICAgICAgIDogbV9pZChpZGVudGlmaWVyKQogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgICAgICAsIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvcigqdGhpcykKICAgICAg
ICAgLCBtX3JpbmdCdWZmZXIobWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+KCkp
CisgICAgICAgICwgbV9yZW5kZXJTZW1hcGhvcmUoV1RGTW92ZShwYXJhbXMucmVuZGVyU2VtYXBo
b3JlKSkKICNlbmRpZgogICAgIHsKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTE2MiwxOSArMTY2
LDIzIEBAIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlcihHUFVDb25uZWN0aW9uVG9XZWJQCiAKIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyOjp+UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKLXZv
aWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24o
Y29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5l
bHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZs
b2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwgQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlciYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Y3JlYXRl
QXVkaW9EZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51
bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLAorI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIE1hY2hTZW1hcGhvcmUmJiByZW5kZXJTZW1hcGhvcmUsCisjZW5kaWYKKyAgICBN
ZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGlu
YXRpb25EZWxheWVkUmVwbHkmJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIG5ld0lE
ID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgp
OwotICAgIGF1dG8gZGVzdGluYXRpb24gPSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUo
bV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBuZXdJRCwgaW5wdXREZXZpY2VJZCwgbnVtYmVy
T2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlLCBoYXJk
d2FyZVNhbXBsZVJhdGUpOwotICAgIG1fYXVkaW9EZXN0aW5hdGlvbnMuYWRkKG5ld0lELCBkZXN0
aW5hdGlvbi5jb3B5UmVmKCkpOworICAgIGF1dG8gZGVzdGluYXRpb24gPSBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uOjpjcmVhdGUobV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBuZXdJRCwgaW5w
dXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBzYW1wbGVSYXRlLCBoYXJkd2FyZVNhbXBsZVJhdGUsIHsKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdJRCwgZGVzdGluYXRpb24tPmNyZWF0ZVJlbmRlclNl
bWFwaG9yZVNlbmRSaWdodCgpKTsKLSNlbHNlCi0gICAgY29tcGxldGlvbkhhbmRsZXIobmV3SUQp
OworICAgICAgICBXVEZNb3ZlKHJlbmRlclNlbWFwaG9yZSkKICNlbmRpZgorICAgIH0pOworICAg
IG1fYXVkaW9EZXN0aW5hdGlvbnMuYWRkKG5ld0lELCBkZXN0aW5hdGlvbi5jb3B5UmVmKCkpOwor
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ld0lEKTsKIH0KIAotdm9pZCBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlcjo6ZGVsZXRlQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpkZWxl
dGVBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50
aWZpZXIsIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6RGVsZXRlQXVk
aW9EZXN0aW5hdGlvbkFzeW5jUmVwbHkmJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRv
IGRlc3RpbmF0aW9uID0gbV9hdWRpb0Rlc3RpbmF0aW9ucy50YWtlKGlkZW50aWZpZXIpOwogICAg
IGlmIChkZXN0aW5hdGlvbikKQEAgLTE4Miw3ICsxOTAsNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25NYW5hZ2VyOjpkZWxldGVBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGlu
YXRpbwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OnN0YXJ0QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6
c3RhcnRBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlk
ZW50aWZpZXIsIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6U3RhcnRB
dWRpb0Rlc3RpbmF0aW9uQXN5bmNSZXBseSYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGJv
b2wgaXNQbGF5aW5nID0gZmFsc2U7CiAgICAgaWYgKGF1dG8qIGl0ZW0gPSBtX2F1ZGlvRGVzdGlu
YXRpb25zLmdldChpZGVudGlmaWVyKSkgewpAQCAtMTkyLDcgKzIwMCw3IEBAIHZvaWQgUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0YXJ0QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uCiAgICAgY29tcGxldGlvbkhhbmRsZXIoaXNQbGF5aW5nKTsKIH0KIAotdm9p
ZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6c3RvcEF1ZGlvRGVzdGluYXRpb24oUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OnN0b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyIGlkZW50aWZpZXIsIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlcjo6U3RvcEF1ZGlvRGVzdGluYXRpb25Bc3luY1JlcGx5JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYm9vbCBpc1BsYXlpbmcgPSBmYWxzZTsKICAgICBpZiAoYXV0byogaXRlbSA9
IG1fYXVkaW9EZXN0aW5hdGlvbnMuZ2V0KGlkZW50aWZpZXIpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlci5oCmluZGV4IGI4M2YyOWY4ZGMxMzNhMWEyYzNhODc0YmE3MzNiNTgwYjI2ZTc2MmQu
LjdiNDA5MDk0NjJiYjkzZGM2YjcwZjI1YTAxMTBlYWRiMzM4Zjk1OGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlci5oCkBAIC0yOSwxOSArMjksMTkgQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgiCiAj
aW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oPgorI2Vu
ZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENB
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKIH0KLQotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBNYWNo
U2VuZFJpZ2h0OwotfQogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjQsMTQgKzY0
LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHVzaW5nIENyZWF0aW9uQ29tcGxldGlvbkhhbmRs
ZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlm
aWVyLCBXVEY6Ok1hY2hTZW5kUmlnaHQpPjsKKyAgICB2b2lkIGNyZWF0ZUF1ZGlvRGVzdGluYXRp
b24oY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hh
bm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUs
IGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwKKyAgICAgICAgTWFjaFNlbWFwaG9yZSYmIHJlbmRl
clNlbWFwaG9yZSwgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVh
dGVBdWRpb0Rlc3RpbmF0aW9uRGVsYXllZFJlcGx5JiYpOwogI2Vsc2UKLSAgICB1c2luZyBDcmVh
dGlvbkNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uSWRlbnRpZmllcik+OworICAgIHZvaWQgY3JlYXRlQXVkaW9EZXN0aW5hdGlv
bihjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFu
bmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwg
ZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLAorICAgICAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9u
RGVsYXllZFJlcGx5JiYpOwogI2VuZGlmCi0gICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9u
KGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5u
ZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBm
bG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIENyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJik7Ci0g
ICAgdm9pZCBkZWxldGVBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc3RhcnRBdWRp
b0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHN0b3BBdWRpb0Rlc3RpbmF0aW9uKFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbklkZW50aWZpZXIsIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
cjo6RGVsZXRlQXVkaW9EZXN0aW5hdGlvbkFzeW5jUmVwbHkmJik7CisgICAgdm9pZCBzdGFydEF1
ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIE1lc3NhZ2Vz
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6U3RhcnRBdWRpb0Rlc3RpbmF0aW9uQXN5
bmNSZXBseSYmKTsKKyAgICB2b2lkIHN0b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25JZGVudGlmaWVyLCBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXI6OlN0b3BBdWRpb0Rlc3RpbmF0aW9uQXN5bmNSZXBseSYmKTsKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICB2b2lkIGF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25JZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIGNvbnN0IFdl
YkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVz
KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmlu
CmluZGV4IDU1Nzg5ODQ2ZDc0ZDg1NzRiYmRhMWFiZGYyNzE4YmQzYmE1YmM0ZTQuLjM4ZTM0ZTAz
NGQxN2FlYTY4MTRhYjcwMjYzN2JmMzhhZjYwNTgxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1LDcgQEAKIAogbWVzc2FnZXMg
LT4gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIgTm90UmVmQ291bnRlZCB7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgQ3JlYXRlQXVkaW9EZXN0aW5hdGlvbihTdHJpbmcgaW5wdXREZXZp
Y2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91
dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUp
IC0+IChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIs
IE1hY2hTZW5kUmlnaHQgcmVuZGVyU2VtYXBob3JlU2VuZFJpZ2h0KSBTeW5jaHJvbm91cworICAg
IENyZWF0ZUF1ZGlvRGVzdGluYXRpb24oU3RyaW5nIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51
bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCBNYWNoU2VtYXBob3JlIHJl
bmRlclNlbWFwaG9yZSkgLT4gKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZp
ZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMKICNlbmRpZgogI2lmICFQTEFURk9STShDT0NPQSkK
ICAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKFN0cmluZyBpbnB1dERldmljZUlkLCB1aW50MzJf
dCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMs
IGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkgLT4gKFdlYktpdDo6
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGVjOGJjZjA4N2Rm
MTZkZjYwZGJlMDA4MGU0Y2ViMDYxZDE3NjhmZjcuLmUwY2ExYWU1Njg4N2M0ZGVmNmZhYmQzNGYx
MTVkMzBiNDMyODIwYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQpAQCAtMjU1LDYgKzI1NSw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2Rl
Y2xhcmVkKCk6CiAgICAgICAgICdJUEM6OkRhdGFSZWZlcmVuY2UnLAogICAgICAgICAnSVBDOjpG
b250UmVmZXJlbmNlJywKICAgICAgICAgJ01hY2hTZW5kUmlnaHQnLAorICAgICAgICAnTWFjaFNl
bWFwaG9yZScsCiAgICAgICAgICdNZWRpYVRpbWUnLAogICAgICAgICAnU3RyaW5nJywKICAgICAg
ICAgJ1dlYkNvcmU6OkNvbG9yU3BhY2UnLApAQCAtMzM0LDYgKzMzNSw4IEBAIGRlZiBjb25kaXRp
b25zX2Zvcl9oZWFkZXIoaGVhZGVyKToKICAgICAgICAgJyJJbnB1dE1ldGhvZFN0YXRlLmgiJzog
WyJQTEFURk9STShHVEspIiwgIlBMQVRGT1JNKFdQRSkiXSwKICAgICAgICAgJyJMYXllckhvc3Rp
bmdDb250ZXh0LmgiJzogWyJQTEFURk9STShDT0NPQSkiLCBdLAogICAgICAgICAnIkdlc3R1cmVU
eXBlcy5oIic6IFsiUExBVEZPUk0oSU9TX0ZBTUlMWSkiXSwKKyAgICAgICAgJzx3dGYvTWFjaFNl
bmRSaWdodC5oPic6IFsiUExBVEZPUk0oQ09DT0EpIl0sCisgICAgICAgICc8d3RmL2NvY29hL01h
Y2hTZW1hcGhvcmUuaD4nOiBbIlBMQVRGT1JNKENPQ09BKSJdLAogICAgIH0KICAgICBpZiBub3Qg
aGVhZGVyIGluIGNvbmRpdGlvbnM6CiAgICAgICAgIHJldHVybiBOb25lCkBAIC0zNTQsNiArMzU3
LDcgQEAgZGVmIGZvcndhcmRfZGVjbGFyYXRpb25zX2FuZF9oZWFkZXJzKHJlY2VpdmVyKToKIAog
ICAgIG5vbl90ZW1wbGF0ZV93dGZfdHlwZXMgPSBmcm96ZW5zZXQoWwogICAgICAgICAnTWFjaFNl
bmRSaWdodCcsCisgICAgICAgICdNYWNoU2VtYXBob3JlJywKICAgICAgICAgJ01lZGlhVHlwZScs
CiAgICAgICAgICdTdHJpbmcnLAogICAgIF0pCkBAIC00MDksNiArNDEzLDcgQEAgZGVmIGZvcndh
cmRfZGVjbGFyYXRpb25zX2FuZF9oZWFkZXJzX2Zvcl9yZXBsaWVzKHJlY2VpdmVyKToKIAogICAg
IG5vbl90ZW1wbGF0ZV93dGZfdHlwZXMgPSBmcm96ZW5zZXQoWwogICAgICAgICAnTWFjaFNlbmRS
aWdodCcsCisgICAgICAgICdNYWNoU2VtYXBob3JlJywKICAgICAgICAgJ01lZGlhVGltZScsCiAg
ICAgICAgICdTdHJpbmcnLAogICAgIF0pCkBAIC02MzksNiArNjQ0LDcgQEAgZGVmIGhlYWRlcnNf
Zm9yX3R5cGUodHlwZSk6CiAKICAgICBzcGVjaWFsX2Nhc2VzID0gewogICAgICAgICAnTWFjaFNl
bmRSaWdodCc6IFsnPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+J10sCisgICAgICAgICdNYWNoU2VtYXBo
b3JlJzogWyc8d3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaD4nXSwKICAgICAgICAgJ0pTQzo6TWVz
c2FnZUxldmVsJzogWyc8SmF2YVNjcmlwdENvcmUvQ29uc29sZVR5cGVzLmg+J10sCiAgICAgICAg
ICdKU0M6Ok1lc3NhZ2VTb3VyY2UnOiBbJzxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4n
XSwKICAgICAgICAgJ0luc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZSc6IFsnPEphdmFTY3Jp
cHRDb3JlL0luc3BlY3RvclRhcmdldC5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHkKaW5kZXggNmVjNmViNGRhNTU3NzNmY2VkNjNk
MzgyMjMzYzMyNTgxOWE5YTNjMy4uYWRlYjg1ZjkwYjNmNGQ1OWJiNzNmNDE2MmUwNjgxYTlmNjc2
OTI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191
bml0dGVzdC5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3Vu
aXR0ZXN0LnB5CkBAIC0zOSw3ICszOSw3IEBAIHRlc3RzX2RpcmVjdG9yeSA9IG9zLnBhdGguam9p
bihtb2R1bGVfZGlyZWN0b3J5LCAndGVzdHMnKQogCiByZXNldF9yZXN1bHRzID0gRmFsc2UKIAot
X3Rlc3RfcmVjZWl2ZXJfbmFtZXMgPSBbJ1Rlc3RXaXRoU3VwZXJjbGFzcycsICdUZXN0V2l0aExl
Z2FjeVJlY2VpdmVyJywgJ1Rlc3RXaXRob3V0QXR0cmlidXRlcycsICdUZXN0V2l0aElmTWVzc2Fn
ZSddCitfdGVzdF9yZWNlaXZlcl9uYW1lcyA9IFsnVGVzdFdpdGhTdXBlcmNsYXNzJywgJ1Rlc3RX
aXRoTGVnYWN5UmVjZWl2ZXInLCAnVGVzdFdpdGhvdXRBdHRyaWJ1dGVzJywgJ1Rlc3RXaXRoSWZN
ZXNzYWdlJywgJ1Rlc3RXaXRoTWFjaFNlbWFwaG9yZSddCiAKIAogZGVmIHJlY2VpdmVyX2hlYWRl
cl9maWxlX25hbWUocmVjZWl2ZXJfbmFtZSk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9NYWtlZmlsZQppbmRleCA4Nzk2ZmZiYzVhM2Y4N2I5MjNlZDZjOTgwMjM5MWE4NzZi
YWMzODJlLi4zOWFmMTNjZTcwMmE1ODM3ZGM4NzEyNWM3YzUyY2QyN2IyYTc3ZWVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWFrZWZpbGUKQEAgLTEsMiArMSwyIEBA
CiBhbGw6Ci0JcHl0aG9uIC4uLy4uL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkgLiBUZXN0
V2l0aFN1cGVyY2xhc3MgVGVzdFdpdGhMZWdhY3lSZWNlaXZlciBUZXN0V2l0aG91dEF0dHJpYnV0
ZXMgVGVzdFdpdGhJZk1lc3NhZ2UKKwlweXRob24gLi4vLi4vZ2VuZXJhdGUtbWVzc2FnZS1yZWNl
aXZlci5weSAuIFRlc3RXaXRoU3VwZXJjbGFzcyBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyIFRlc3RX
aXRob3V0QXR0cmlidXRlcyBUZXN0V2l0aElmTWVzc2FnZSBUZXN0V2l0aE1hY2hTZW1hcGhvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFy
Z3VtZW50RGVzY3JpcHRpb25zLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcAppbmRleCA1OTQwNDQzOTBjYWRhYzJm
ZjBjZGZhYTllMzA1MDQ0Mjc3ODM4MGZlLi44M2M1ZDBjYjMzMjIyYmIxYTZmYjczNDU0ZDQwNzlk
ZDYyZTRjYzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Rz
L01lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwCkBAIC00Niw2
ICs0Niw3IEBACiAjZW5kaWYKICNpbmNsdWRlICJUZXN0V2l0aElmTWVzc2FnZU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiVGVzdFdpdGhMZWdhY3lSZWNlaXZlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
VGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJUZXN0V2l0aFN1cGVy
Y2xhc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlRlc3RXaXRob3V0QXR0cmlidXRlc01lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCkBAIC02NSw2ICs2Niw5IEBA
CiAjZW5kaWYKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8d3RmL2NvY29hL01hY2hTZW1hcGhv
cmUuaD4KKyNlbmRpZgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgSVBDIHsKQEAgLTIxNSw2ICsyMTksMTIgQEAgT3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBqc1Zh
bHVlRm9yQXJndW1lbnRzKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTWUKICNp
ZiBQTEFURk9STShHVEspCiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhJZk1lc3NhZ2Vf
TG9hZFVSTDoKICAgICAgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRzPE1lc3Nh
Z2VzOjpUZXN0V2l0aElmTWVzc2FnZTo6TG9hZFVSTDo6QXJndW1lbnRzPihnbG9iYWxPYmplY3Qs
IGRlY29kZXIpOworI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgY2FzZSBNZXNzYWdl
TmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3JlX1NlbmRTZW1hcGhvcmU6CisgICAgICAgIHJldHVy
biBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50czxNZXNzYWdlczo6VGVzdFdpdGhNYWNoU2VtYXBo
b3JlOjpTZW5kU2VtYXBob3JlOjpBcmd1bWVudHM+KGdsb2JhbE9iamVjdCwgZGVjb2Rlcik7Cisg
ICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3JlX1JlY2VpdmVTZW1hcGhv
cmU6CisgICAgICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50czxNZXNzYWdlczo6
VGVzdFdpdGhNYWNoU2VtYXBob3JlOjpSZWNlaXZlU2VtYXBob3JlOjpBcmd1bWVudHM+KGdsb2Jh
bE9iamVjdCwgZGVjb2Rlcik7CiAjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsK
QEAgLTUxNiw2ICs1MjYsMTQgQEAgT3B0aW9uYWw8VmVjdG9yPEFyZ3VtZW50RGVzY3JpcHRpb24+
PiBtZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMoTWVzc2FnZU5hbWUgbmEKICAgICAgICAgICAg
IHsidXJsIiwgIlN0cmluZyIsIG51bGxwdHIsIGZhbHNlfSwKICAgICAgICAgICAgIHsidmFsdWUi
LCAiaW50NjRfdCIsIG51bGxwdHIsIGZhbHNlfSwKICAgICAgICAgfTsKKyNlbmRpZgorI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9y
ZV9TZW5kU2VtYXBob3JlOgorICAgICAgICByZXR1cm4gVmVjdG9yPEFyZ3VtZW50RGVzY3JpcHRp
b24+IHsKKyAgICAgICAgICAgIHsiczAiLCAiTWFjaFNlbWFwaG9yZSIsIG51bGxwdHIsIGZhbHNl
fSwKKyAgICAgICAgfTsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aE1hY2hTZW1hcGhv
cmVfUmVjZWl2ZVNlbWFwaG9yZToKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxBcmd1bWVudERlc2Ny
aXB0aW9uPiB7IH07CiAjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcApp
bmRleCA3NmZhZDM3YzU0NjBhZGJjZmVhMzcyZDE4NjY1NTBmYTdjOGE4NTEzLi45OGNlMzJkOTU1
ZTc5NjM4YzIzZTI1YmY3MzgxMzA3NmEyODI0ZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCkBAIC03Miw2ICs3MiwxMCBA
QCBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbihNZXNzYWdlTmFtZSBuYW1lKQogICAgICAgICByZXR1
cm4gIlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMiOwogICAg
IGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVG91Y2hFdmVudDoKICAg
ICAgICAgcmV0dXJuICJUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1RvdWNoRXZlbnQiOworICAgIGNh
c2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlOgor
ICAgICAgICByZXR1cm4gIlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlIjsK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmVfU2VuZFNlbWFwaG9y
ZToKKyAgICAgICAgcmV0dXJuICJUZXN0V2l0aE1hY2hTZW1hcGhvcmVfU2VuZFNlbWFwaG9yZSI7
CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX0xvYWRVUkw6CiAgICAg
ICAgIHJldHVybiAiVGVzdFdpdGhTdXBlcmNsYXNzX0xvYWRVUkwiOwogICAgIGNhc2UgTWVzc2Fn
ZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlOgpAQCAtMTgxLDYgKzE4
NSw5IEBAIFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUp
CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9UZXN0UGFyYW1l
dGVyQXR0cmlidXRlczoKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2Vp
dmVyX1RvdWNoRXZlbnQ6CiAgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6OlRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3Jl
X1JlY2VpdmVTZW1hcGhvcmU6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2Vt
YXBob3JlX1NlbmRTZW1hcGhvcmU6CisgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6OlRlc3RX
aXRoTWFjaFNlbWFwaG9yZTsKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xh
c3NfTG9hZFVSTDoKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfVGVz
dEFzeW5jTWVzc2FnZToKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3Nf
VGVzdEFzeW5jTWVzc2FnZVdpdGhDb25uZWN0aW9uOgpAQCAtMjk4LDYgKzMwNSwxNCBAQCBib29s
IGlzVmFsaWRNZXNzYWdlTmFtZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKICNpZiAoRU5BQkxF
KFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVS
X01FU1NBR0VfQ09ORElUSU9OKSkKICAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdl
TmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9Ub3VjaEV2ZW50KQogICAgICAgICByZXR1cm4g
dHJ1ZTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChtZXNzYWdlTmFtZSA9
PSBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmVfUmVjZWl2ZVNlbWFwaG9y
ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBo
b3JlX1NlbmRTZW1hcGhvcmUpCisgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAgICAgaWYg
KG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19Mb2Fk
VVJMKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCmluZGV4IDIzZjc1NjA4N2Q2ODNhZDIyYjA2OGUy
YTcxZmQ5NWEwZjNjZTU1NWUuLmZiMGQ5MWJhODhkYzhkNjhlZjViZTc0YTJiMmEyM2YyZDQzMzMx
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2Fn
ZU5hbWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdl
TmFtZXMuaApAQCAtMzEsMTEgKzMxLDEyIEBAIG5hbWVzcGFjZSBJUEMgewogZW51bSBjbGFzcyBS
ZWNlaXZlck5hbWUgOiB1aW50OF90IHsKICAgICBUZXN0V2l0aElmTWVzc2FnZSA9IDEKICAgICAs
IFRlc3RXaXRoTGVnYWN5UmVjZWl2ZXIgPSAyCi0gICAgLCBUZXN0V2l0aFN1cGVyY2xhc3MgPSAz
Ci0gICAgLCBUZXN0V2l0aG91dEF0dHJpYnV0ZXMgPSA0Ci0gICAgLCBJUEMgPSA1Ci0gICAgLCBB
c3luY1JlcGx5ID0gNgotICAgICwgSW52YWxpZCA9IDcKKyAgICAsIFRlc3RXaXRoTWFjaFNlbWFw
aG9yZSA9IDMKKyAgICAsIFRlc3RXaXRoU3VwZXJjbGFzcyA9IDQKKyAgICAsIFRlc3RXaXRob3V0
QXR0cmlidXRlcyA9IDUKKyAgICAsIElQQyA9IDYKKyAgICAsIEFzeW5jUmVwbHkgPSA3CisgICAg
LCBJbnZhbGlkID0gOAogfTsKIAogZW51bSBjbGFzcyBNZXNzYWdlTmFtZSA6IHVpbnQxNl90IHsK
QEAgLTYwLDYgKzYxLDggQEAgZW51bSBjbGFzcyBNZXNzYWdlTmFtZSA6IHVpbnQxNl90IHsKICAg
ICAsIFRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVGVtcGxhdGVUZXN0CiAgICAgLCBUZXN0V2l0aExl
Z2FjeVJlY2VpdmVyX1Rlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzCiAgICAgLCBUZXN0V2l0aExlZ2Fj
eVJlY2VpdmVyX1RvdWNoRXZlbnQKKyAgICAsIFRlc3RXaXRoTWFjaFNlbWFwaG9yZV9SZWNlaXZl
U2VtYXBob3JlCisgICAgLCBUZXN0V2l0aE1hY2hTZW1hcGhvcmVfU2VuZFNlbWFwaG9yZQogICAg
ICwgVGVzdFdpdGhTdXBlcmNsYXNzX0xvYWRVUkwKICAgICAsIFRlc3RXaXRoU3VwZXJjbGFzc19U
ZXN0QXN5bmNNZXNzYWdlCiAgICAgLCBUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2Fn
ZVdpdGhDb25uZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlLm1lc3NhZ2VzLmluCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY1MjU4MzUzZjA5NGM0MDZhNDIzZjYxMDBiY2U5Y2E4MjYyMDZjYTgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
TWFjaFNlbWFwaG9yZS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI4IEBACisjIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisj
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFRlc3RXaXRoTWFjaFNlbWFw
aG9yZSB7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBTZW5kU2VtYXBob3JlKE1hY2hT
ZW1hcGhvcmUgczApCisgICAgdm9pZCBSZWNlaXZlU2VtYXBob3JlKCkgLT4gKE1hY2hTZW1hcGhv
cmUgcjApCisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZVJlY2VpdmVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2Fn
ZVJlY2VpdmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNGVlNDBjMzZhYWQ4M2Y5ZTcwMWQ4NmM4YWVjNzYz
YTM3OGVhZTgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC0wLDAg
KzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
ICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiVGVzdFdpdGhNYWNoU2VtYXBob3JlLmgiCisKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5j
bHVkZSAiSGFuZGxlTWVzc2FnZS5oIgorI2luY2x1ZGUgIlRlc3RXaXRoTWFjaFNlbWFwaG9yZU1l
c3NhZ2VzLmgiCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8d3RmL2NvY29hL01hY2hT
ZW1hcGhvcmUuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBUZXN0V2l0
aE1hY2hTZW1hcGhvcmU6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6U2VuZFNlbWFw
aG9yZTo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVz
dFdpdGhNYWNoU2VtYXBob3JlOjpTZW5kU2VtYXBob3JlPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdp
dGhNYWNoU2VtYXBob3JlOjpzZW5kU2VtYXBob3JlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyNlbmRpZgorICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0o
ZGVjb2Rlcik7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgVGVzdFdpdGhN
YWNoU2VtYXBob3JlOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+JiByZXBseUVuY29kZXIpCit7CisgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6VGVzdFdpdGhNYWNoU2VtYXBob3JlOjpSZWNlaXZlU2VtYXBob3JlOjpu
YW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aE1h
Y2hTZW1hcGhvcmU6OlJlY2VpdmVTZW1hcGhvcmU+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRo
aXMsICZUZXN0V2l0aE1hY2hTZW1hcGhvcmU6OnJlY2VpdmVTZW1hcGhvcmUpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAg
IFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKKyAgICBVTlVTRURfUEFSQU0ocmVwbHlFbmNvZGVyKTsK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFj
aFNlbWFwaG9yZU1lc3NhZ2VzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2VzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTMxMjE1ZDJlNDRi
NDJiZTRiMWQwYmViMmE2YjM2OThmOGNkNDQzNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZXMu
aApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlICJUZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNz
YWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9U
aHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPHd0
Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg+CisjZW5kaWYKKworCituYW1lc3BhY2UgTWVzc2FnZXMg
eworbmFtZXNwYWNlIFRlc3RXaXRoTWFjaFNlbWFwaG9yZSB7CisKK3N0YXRpYyBpbmxpbmUgSVBD
OjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSgpCit7CisgICAgcmV0dXJuIElQQzo6
UmVjZWl2ZXJOYW1lOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU7Cit9CisKKyNpZiBQTEFURk9STShD
T0NPQSkKK2NsYXNzIFNlbmRTZW1hcGhvcmUgeworcHVibGljOgorICAgIHVzaW5nIEFyZ3VtZW50
cyA9IHN0ZDo6dHVwbGU8Y29uc3QgTWFjaFNlbWFwaG9yZSY+OworCisgICAgc3RhdGljIElQQzo6
TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTWFj
aFNlbWFwaG9yZV9TZW5kU2VtYXBob3JlOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5j
ID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBTZW5kU2VtYXBob3JlKGNvbnN0IE1hY2hTZW1hcGhv
cmUmIHMwKQorICAgICAgICA6IG1fYXJndW1lbnRzKHMwKQorICAgIHsKKyAgICB9CisKKyAgICBj
b25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50
czsKK307CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorY2xhc3MgUmVjZWl2ZVNlbWFw
aG9yZSB7CitwdWJsaWM6CisgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OworCisg
ICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5h
bWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlOyB9CisgICAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBs
ZTxNYWNoU2VtYXBob3JlJj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxl
PE1hY2hTZW1hcGhvcmU+OworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBU
ZXN0V2l0aE1hY2hTZW1hcGhvcmUKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9y
ZU1lc3NhZ2VzUmVwbGllcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNzYWdlc1JlcGxpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTcwYzRh
MTNiYjc2YTM2MDU3NzNiZTNhYTdjN2JlMWExOWE2MTBjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNz
YWdlc1JlcGxpZXMuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorCisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgVGVzdFdpdGhNYWNoU2Vt
YXBob3JlIHsKKworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aE1hY2hTZW1hcGhvcmUKK30gLy8g
bmFtZXNwYWNlIE1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDI4MTRlOGI1ZWYzMmQ1MDI2
NThiYWI1YWVmNzEzY2Y2MTQ3MDJiNTcuLjgzNWE2NDA5YmQ4NzczZDQzNGExZDAxMTM0MmIyY2Vm
MTRjNTk1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVB
cmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dl
YkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0ZvbnRBdHRyaWJ1dGVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQ29yZVRleHRTUEkuaD4KKyNpbXBv
cnQgPHd0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogI2ltcG9ydCA8VUlLaXQvVUlGb250Lmg+CkBAIC02NSw2ICs2NiwxOSBAQCBPcHRpb25hbDxX
ZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkF0dHJpYnV0
ZWRTdHJpbmc+OjpkZQogICAgIHJldHVybiB7IHsgV1RGTW92ZShhdHRyaWJ1dGVkU3RyaW5nKSwg
V1RGTW92ZShkb2N1bWVudEF0dHJpYnV0ZXMpIH0gfTsKIH0KIAordm9pZCBBcmd1bWVudENvZGVy
PFdURjo6TWFjaFNlbWFwaG9yZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXVEY6
Ok1hY2hTZW1hcGhvcmUmIHNlbWFwaG9yZSkKK3sKKyAgICBlbmNvZGVyIDw8IHNlbWFwaG9yZS5j
cmVhdGVTZW5kUmlnaHQoKTsKK30KKworT3B0aW9uYWw8TWFjaFNlbWFwaG9yZT4gQXJndW1lbnRD
b2RlcjxXVEY6Ok1hY2hTZW1hcGhvcmU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodDsKKyAgICBpZiAoZGVjb2Rlci5kZWNvZGUoc2VuZFJp
Z2h0KSkKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFdURjo6TWFjaFNlbWFwaG9yZT4geyBzdGQ6
OmluX3BsYWNlLCBXVEZNb3ZlKHNlbmRSaWdodCkgfTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworfQorCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAogI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxM
TUVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGQ3YjVhNzZhZjI1MjBjOWU3MjAxMDY4MDhhOTM0ZmQxOTc4OTlkMjQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oCisrKyAvZGV2
L251bGwKQEAgLTEsODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQotCi0jaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIuaCIKLSNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLQotc3RydWN0IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMgewot
ICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIGlkZW50aWZpZXI7Ci0jaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgTWFjaFNlbmRSaWdodCBzZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNl
bWFwaG9yZTsKLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBP
cHRpb25hbDxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzPiBkZWNvZGUo
RGVjb2RlciYpOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KLXZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBpZGVudGlmaWVyOwotI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgIGVuY29kZXIgPDwgc2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmU7
Ci0jZW5kaWYKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRD
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIE9w
dGlvbmFsPFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyPiBpZGVudGlmaWVyOwotICAgIGRlY29k
ZXIgPj4gaWRlbnRpZmllcjsKLSAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0KLSAgICBwYXJhbWV0ZXJzLmlkZW50aWZpZXIgPSAqaWRlbnRpZmllcjsK
LQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIE9wdGlvbmFsPE1hY2hTZW5kUmlnaHQ+IHNlbmRS
aWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOwotICAgIGRlY29kZXIgPj4gc2VuZFJp
Z2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmU7Ci0gICAgaWYgKCFzZW5kUmlnaHRGb3JS
ZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LQotICAgIHBhcmFtZXRlcnMuc2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUg
PSBXVEZNb3ZlKCpzZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSk7Ci0jZW5k
aWYKLQotICAgIHJldHVybiBwYXJhbWV0ZXJzOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggZmE5NmNkYTg0ZWNiN2Q0ODhhZTQyOTEzM2Mw
ZjViNDQzNzA0OGRiMS4uNTA4MjFkMWRiNzM4MGUxMDY0ZTE5ZWJiMGQ4ZTNmN2NkYzZhYmFjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTgx
LDYgKzgxLDcgQEAKICNpZiBQTEFURk9STShDT0NPQSkKIG5hbWVzcGFjZSBXVEYgewogY2xhc3Mg
TWFjaFNlbmRSaWdodDsKK2NsYXNzIE1hY2hTZW1hcGhvcmU7CiB9CiAjZW5kaWYKIApAQCAtNDg3
LDYgKzQ4OCwxMCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPENHQWZmaW5lVHJh
bnNmb3JtPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBDR0FmZmluZVRyYW5z
Zm9ybSk7CiAgICAgc3RhdGljIE9wdGlvbmFsPENHQWZmaW5lVHJhbnNmb3JtPiBkZWNvZGUoRGVj
b2RlciYpOwogfTsKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V1RGOjpNYWNoU2Vt
YXBob3JlPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXVEY6Ok1h
Y2hTZW1hcGhvcmUmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V1RGOjpNYWNoU2VtYXBob3JlPiBk
ZWNvZGUoRGVjb2RlciYpOworfTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGZhMDNkYzg1MTQwMDM4NTgyNjE3NTNkZWNjZjk1Nzc3YTFhYmNlYTEuLjI0YjEzMmIyMjNmOTkz
ODkwZmFhMTA5NThlNmJmZTcwMTQxMjEzZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTk2OCw3ICsxOTY4LDYgQEAKIAkJRjQyRDYz
NDEyMkEwRUZERjAwRDJGQjNBIC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQyRDYzM0YyMkEwRUZEMzAwRDJG
QjNBIC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5oICovOyB9OwogCQlGNDMwRTk0MjIyNDczMzVG
MDA1RkUwNTMgLyogV2Vic2l0ZU1ldGFWaWV3cG9ydFBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzMEU5NDEyMjQ3MzJBOTAwNUZFMDUzIC8q
IFdlYnNpdGVNZXRhVmlld3BvcnRQb2xpY3kuaCAqLzsgfTsKIAkJRjQzMEU5NDQyMjQ3M0RGRjAw
NUZFMDUzIC8qIFdlYkNvbnRlbnRNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNDMwRTk0MzIyNDczREI4MDA1RkUwNTMgLyogV2ViQ29udGVudE1v
ZGUuaCAqLzsgfTsKLQkJRjQzN0M4RDkyNTkzQjdFMzAwREI4QTFDIC8qIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzdDOEQ4MjU5M0I3RTMwMERCOEExQyAvKiBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi87IH07CiAJCUY0MzhDRDFDMjI0MTQy
MTQwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzOENEMUIyMjQxNDBBNjAwREU2RERBIC8qIFdL
V2VicGFnZVByZWZlcmVuY2VzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGlj
LCApOyB9OyB9OwogCQlGNDM4Q0QxRjIyNDE0RDQwMDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVy
ZW5jZXNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjQzOENEMUUyMjQxNEQ0MDAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzSW50
ZXJuYWwuaCAqLzsgfTsKIAkJRjQzOENEMjEyMjQxRjY5NTAwREU2RERBIC8qIFdLV2VicGFnZVBy
ZWZlcmVuY2VzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjQzOENEMjAyMjQxRjY5NTAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2Vz
UHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC01Nzg2LDcgKzU3ODUsNiBAQAogCQlGNDJENjM0MDIyQTBFRkQzMDBEMkZCM0EgLyogV2Vi
QXV0b2NvcnJlY3Rpb25EYXRhLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gV2ViQXV0b2NvcnJlY3Rpb25EYXRhLm1tOyBwYXRoID0gaW9zL1dlYkF1dG9jb3JyZWN0
aW9uRGF0YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzMEU5NDEyMjQ3MzJB
OTAwNUZFMDUzIC8qIFdlYnNpdGVNZXRhVmlld3BvcnRQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2Vic2l0ZU1ldGFWaWV3cG9ydFBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNDMwRTk0MzIyNDczREI4MDA1RkUwNTMgLyogV2ViQ29udGVudE1vZGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViQ29udGVudE1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjQz
N0M4RDgyNTkzQjdFMzAwREI4QTFDIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBh
cmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9u
UGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDM4Q0QxQjIyNDE0
MEE2MDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tX
ZWJwYWdlUHJlZmVyZW5jZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzOENE
MUQyMjQxNEFENjAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV0tXZWJwYWdlUHJlZmVyZW5jZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY0MzhDRDFFMjI0MTRENDAwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNl
c0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2VicGFnZVByZWZlcmVuY2VzSW50ZXJuYWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY1MjUsNyArNjUyMyw2IEBACiAJCQkJ
RTFDQzFCOEUxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mby5oICovLAogCQkJCTQ2M0ZENDgx
MUVCOTRFQUQwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLywKIAkJCQk5
QjEyMjlEMDIzRkYyQTVFMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZp
ZXIuaCAqLywKLQkJCQlGNDM3QzhEODI1OTNCN0UzMDBEQjhBMUMgLyogUmVtb3RlUmVuZGVyaW5n
QmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oICovLAogCQkJCTVDQjdBRkU2MjNDNjgxQjAwMEU0
OUNGMyAvKiBSZXNvdXJjZUxvYWRJbmZvLmggKi8sCiAJCQkJNUMwMDk5M0IyNDE3RkI3RTAwRDUz
QzI1IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmggKi8sCiAJCQkJNDEwNDgy
Q0IxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuY3BwICovLApAQCAtMTE4NzAsNyArMTE4
NjcsNiBAQAogCQkJCTFBNTcwNEZDMUJFMTc1MTEwMDg3NEFGMSAvKiBSZW1vdGVPYmplY3RJbnZv
Y2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUMxMzM4MDE4NTkwQUU0MDBGM0VDMDUgLyog
UmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzEzMzg2MTg1OTBD
NDYwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LywKLQkJCQlGNDM3QzhEOTI1OTNCN0UzMDBEQjhBMUMgLyogUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZENyZWF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1OTQ3OTAxODdCM0Iz
QTAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjU5NDdBODE4N0I1MTc2MDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3JNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1OTQ3OUIxODdCM0I2MDAwNDM3ODU3
IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IDYxYjRjODI0OTU3NmRl
MTI4YTlhYmVkMDkyN2Y0MWVlNDE2MmJlNmUuLmMxZTM2Y2VkYTFkMjM3YzZhODk1Yzg1MTc2ZmE1
NjRhMmZlOWE4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAK
QEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgi
CiAjaW5jbHVkZSAiSW1hZ2VEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmgiCi0jaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZENy
ZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCkBAIC02NywxMiArNjYsMTEgQEAgdm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogICAgIGF1dG8m
IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29u
bmVjdGlvbigpOwogICAgIGNvbm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlzKTsKICAgICBjb25uZWN0
aW9uLm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOwotICAgIHNlbmQoTWVzc2Fn
ZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoewot
ICAgICAgICBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLAorICAgIHNlbmQoTWVzc2FnZXM6
OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQobV9yZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBtX3Jl
c3VtZURpc3BsYXlMaXN0U2VtYXBob3JlLmNyZWF0ZVNlbmRSaWdodCgpLAorICAgICAgICAsIG1f
cmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUKICNlbmRpZgotICAgIH0pLCAwKTsKKyAgICApLCAw
KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlZXN0YWJsaXNoR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmlu
ZGV4IDM0ZTMwY2UxMTkzNjBjOTMwYzJiMDdlOWMzMDhhMWI2NDBlZDBhM2UuLmUwMDc0ZTkxNzMz
NmFiMjRmZTVjYjU2OTk2MmZkMTA0Yjg2NmJkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eS5jcHAKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1
ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQXVkaW9CdWZmZXJMaXN0Lmg+CiAjaW5jbHVk
ZSA8bWFjaC9tYWNoX3RpbWUuaD4KLSNpbmNsdWRlIDx3dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5o
PgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODAsNyArNzksNyBAQCB2b2lkIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6c3RhcnRSZW5kZXJpbmdUaHJlYWQoKQogCiAgICAg
YXV0byBvZmZUaHJlYWRSZW5kZXJpbmcgPSBbdGhpc10oKSBtdXRhYmxlIHsKICAgICAgICAgZG8g
ewotICAgICAgICAgICAgbV9yZW5kZXJTZW1hcGhvcmUtPndhaXQoKTsKKyAgICAgICAgICAgIG1f
cmVuZGVyU2VtYXBob3JlLndhaXQoKTsKICAgICAgICAgICAgIGlmIChtX3Nob3VsZFN0b3BUaHJl
YWQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTk4LDggKzk3LDcgQEAgdm9pZCBSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0b3BSZW5kZXJpbmdUaHJlYWQoKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBtX3Nob3VsZFN0b3BUaHJlYWQgPSB0cnVlOwotICAgIGlmIChtX3JlbmRl
clNlbWFwaG9yZSkKLSAgICAgICAgbV9yZW5kZXJTZW1hcGhvcmUtPnNpZ25hbCgpOworICAgIG1f
cmVuZGVyU2VtYXBob3JlLnNpZ25hbCgpOwogICAgIG1fcmVuZGVyVGhyZWFkLT53YWl0Rm9yQ29t
cGxldGlvbigpOwogICAgIG1fcmVuZGVyVGhyZWFkID0gbnVsbHB0cjsKICNlbmRpZgpAQCAtMTA3
LDIwICsxMDUsMTQgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0b3BSZW5k
ZXJpbmdUaHJlYWQoKQogCiB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVj
dFRvR1BVUHJvY2VzcygpCiB7Ci0gICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIg
ZGVzdGluYXRpb25JRDsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBNYWNoU2VuZFJpZ2h0IHJl
bmRlclNlbWFwaG9yZVNlbmRSaWdodDsKLSNlbmRpZgotCiAgICAgYXV0byYgY29ubmVjdGlvbiA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAg
ICAgY29ubmVjdGlvbi5hZGRDbGllbnQoKnRoaXMpOwogICAgIGF1dG8gZGlkU3VjY2VlZCA9IGNv
bm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmRTeW5jKAotICAgICAgICBNZXNzYWdlczo6UmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb24obV9pbnB1dERl
dmljZUlkLCBtX251bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscygp
LCBzYW1wbGVSYXRlKCksIGhhcmR3YXJlU2FtcGxlUmF0ZSgpKSwKLSAgICAgICAgTWVzc2FnZXM6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uOjpS
ZXBseShkZXN0aW5hdGlvbklECisgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbihtX2lucHV0RGV2aWNlSWQsIG1fbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKCksIHNhbXBsZVJhdGUo
KSwgaGFyZHdhcmVTYW1wbGVSYXRlKCkKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAg
ICwgcmVuZGVyU2VtYXBob3JlU2VuZFJpZ2h0CisgICAgICAgICAgICAsIG1fcmVuZGVyU2VtYXBo
b3JlCiAjZW5kaWYKLSAgICAgICAgKSwgMCk7CisgICAgICAgICAgICApLCBNZXNzYWdlczo6UmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5
KG1fZGVzdGluYXRpb25JRCksIDApOwogCiAgICAgaWYgKCFkaWRTdWNjZWVkKSB7CiAgICAgICAg
IC8vIFRoZSBHUFVQcm9jZXNzIGxpa2VseSBjcmFzaGVkIGR1cmluZyB0aGlzIHN5bmNocm9ub3Vz
IElQQy4gZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZSgpIHdpbGwgZ2V0IGNhbGxlZCB0byBy
ZWNvbm5lY3QgdG8gdGhlIEdQVVByb2Nlc3MuCkBAIC0xMjgsNyArMTIwLDYgQEAgdm9pZCBSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9kZXN0aW5hdGlvbklEID0gZGVzdGluYXRpb25JRDsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIG1fY3VycmVudEZyYW1lID0gMDsKQEAgLTEzNiw3ICsx
MjcsNiBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJv
Y2VzcygpCiAgICAgZ2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7
CiAgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShzdHJlYW1Gb3JtYXQsIG1fbnVtYmVyT2ZGcmFt
ZXMpOwogICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpXZWJBdWRp
b0J1ZmZlckxpc3Q+KHN0cmVhbUZvcm1hdCk7Ci0gICAgbV9yZW5kZXJTZW1hcGhvcmUgPSBtYWtl
VW5pcXVlPE1hY2hTZW1hcGhvcmU+KFdURk1vdmUocmVuZGVyU2VtYXBob3JlU2VuZFJpZ2h0KSk7
CiAjZW5kaWYKIAogICAgIHN0YXJ0UmVuZGVyaW5nVGhyZWFkKCk7CkBAIC0yMDUsOSArMTk1LDcg
QEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmdwdVByb2Nlc3NDb25uZWN0aW9u
RGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3QKICAgICBvbGRDb25uZWN0aW9uLnJlbW92ZUNsaWVu
dCgqdGhpcyk7CiAKICAgICBzdG9wUmVuZGVyaW5nVGhyZWFkKCk7Ci0jaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgbV9yZW5kZXJTZW1hcGhvcmUgPSBudWxscHRyOwotI2VuZGlmCisKICAgICBjb25u
ZWN0VG9HUFVQcm9jZXNzKCk7CiAKICAgICBpZiAoaXNQbGF5aW5nKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHkuaAppbmRleCA4ZDJjNjNlYjljNTVmYjhiMmFjNTRiYWFkZThmNzNjZTVk
NWIxY2M1Li5hZjYzNmZmMzY2NDljMjQwMDYyMzI0YWFlYWEyMGYxN2QxNTgwZmY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgKQEAgLTM4LDYgKzM4LDggQEAKICNpZiBQTEFURk9S
TShDT0NPQSkKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+CisjaW5jbHVkZSA8d3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaD4KICNlbHNlCiAjaW5jbHVk
ZSA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmg+CiAjZW5kaWYKQEAgLTQ3LDEx
ICs0OSw3IEBAIGNsYXNzIENBUmluZ0J1ZmZlcjsKIGNsYXNzIFdlYkF1ZGlvQnVmZmVyTGlzdDsK
IH0KIAotbmFtZXNwYWNlIFdURiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi1jbGFzcyBNYWNoU2Vt
YXBob3JlOwotI2VuZGlmCi19CisKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTEwNCw3ICsx
MDIsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHVpbnQ2NF90IG1fbnVt
YmVyT2ZGcmFtZXMgeyAwIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNBUmluZ0J1
ZmZlcj4gbV9yaW5nQnVmZmVyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXVEY6Ok1hY2hTZW1hcGhv
cmU+IG1fcmVuZGVyU2VtYXBob3JlOworICAgIE1hY2hTZW1hcGhvcmUgbV9yZW5kZXJTZW1hcGhv
cmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4gbV9h
dWRpb0J1ZmZlckxpc3Q7CiAgICAgdWludDY0X3QgbV9jdXJyZW50RnJhbWUgeyAwIH07CiAgICAg
ZmxvYXQgbV9zYW1wbGVSYXRlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418446</attachid>
            <date>2021-01-26 10:44:47 -0800</date>
            <delta_ts>2021-02-02 06:50:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220919-20210126204445.patch</filename>
            <type>text/plain</type>
            <size>64289</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxODg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQ5MjhlNTRlNTE4ODljMmZmMmRhNWM2
ZGY4YmMxYzM4YWE1OTczYzIuLjY1NmUyM2U4MDEzOTk2M2E0ZjU4ZjcwNWIzMzMxY2M3OTc3YTVi
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMDEtMjYgIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNYWNoU2VtYXBob3JlIGRvZXMgbm90IHdvcmsg
d2VsbCB3aXRoIElQQyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwOTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW1wbGVtZW50IG1vdmUgY29uc3RydWN0b3IgYW5kIG1vdmUgYXNzaWdu
bWVudCBvcGVyYXRvciBmb3IgTWFjaFNlbWFwaG9yZS4KKyAgICAgICAgTWFrZXMgaXQgcG9zc2li
bGUgdG8gY3JlYXRlIHR5cGVzIHRoYXQgaG9sZCBNYWNoU2VtYXBob3JlIGJ1dCBzdGlsbAorICAg
ICAgICBhcmUgZGVjb2RlKClhYmxlIGZyb20gYSBJUEMgbWVzc2FnZS4gVGhlIGRlY29kZWQgb2Jq
ZWN0cyBhcmUgaGVsZCB3aXRoCisgICAgICAgIE9wdGlvbmFsLCBhbmQgdGhpcyBmb3JjZXMgdGhl
IHN1Ym9iamVjdHMgdG8gaGF2ZSBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisKKyAgICAgICAg
QWRkIGFzc2VydHMgdGhhdCB0aGUgbW92ZWQtYXdheSBvYmplY3QgaXMgbm90IHVzZWQuCisgICAg
ICAgIEFkZCB0aGUgYXNzZXJ0cyBhcyBhc3NlcnRzIG9uIHRoZSBjYWxsIHJldHVybiB2YWx1ZXMs
IHNvIHRoZSB2YWx1ZXMKKyAgICAgICAgYXJlIGFsc28gY2hlY2tlZCBvbiBub3JtYWwgb2JqZWN0
cyBvbiBub3JtYWwgb3BlcmF0aW9uLgorCisgICAgICAgICogd3RmL2NvY29hL01hY2hTZW1hcGhv
cmUuY3BwOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3JlOjpNYWNoU2VtYXBob3JlKToKKyAg
ICAgICAgKFdURjo6TWFjaFNlbWFwaG9yZTo6fk1hY2hTZW1hcGhvcmUpOgorICAgICAgICAoV1RG
OjpNYWNoU2VtYXBob3JlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3Jl
OjpzaWduYWwpOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3JlOjp3YWl0KToKKyAgICAgICAg
KFdURjo6TWFjaFNlbWFwaG9yZTo6d2FpdEZvcik6CisgICAgICAgIChXVEY6Ok1hY2hTZW1hcGhv
cmU6OmNyZWF0ZVNlbmRSaWdodCBjb25zdCk6CisgICAgICAgIChXVEY6Ok1hY2hTZW1hcGhvcmU6
OmRlc3Ryb3kpOgorICAgICAgICAqIHd0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg6CisgICAgICAg
IChXVEY6Ok1hY2hTZW1hcGhvcmU6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorCiAyMDIxLTAxLTI1
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBBYm9y
dFNpZ25hbCBpbiBhZGRFdmVudExpc3RlbmVyT3B0aW9ucyB0byB1bnN1YnNjcmliZSBmcm9tIGV2
ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBmMDg3MDkyNzBmZTdmMmUwMjI4Y2FmY2VjMGMzYTUwMzZjZTAzMmEz
Li41MDFjMzg5OWQ1MDU1OGU0OGMzYjk4ZDM3Nzk0ZWY2YmI1OTI1MzlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEwOSBAQAorMjAyMS0wMS0yNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBw
bGUuY29tPgorCisgICAgICAgIE1hY2hTZW1hcGhvcmUgZG9lcyBub3Qgd29yayB3ZWxsIHdpdGgg
SVBDIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjA5MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbXBsZW1lbnQgYW4gZW5jb2RlciBhbmQgZGVjb2RlciBmb3IgV1RGOjpNYWNoU2VtYXBo
b3JlLiBNYWtlcyBpdCBwb3NzaWJsZSB0byBzZW5kIGl0CisgICAgICAgIHZpYSBJUEMgYXMgaXRz
IG93biB0eXBlLCBub3QgYXMgTWFjaFNlbmRSaWdodC4KKworICAgICAgICBBcyBhbiBleGFtcGxl
LCBjaGFuZ2VzIGV4aXN0aW5nIHVzZXMgb2YgTWFjaFNlbmRSaWdodCBmb3Igc2VtYXBob3JlcyBp
biBtZXNzYWdlcyBhcworICAgICAgICBNYWNoU2VtYXBob3JlcywgZGVzY3JpYmVkIGJlbG93Lgor
CisgICAgICAgIENoYW5nZXMgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5IHRvIHNlbmQgaXRz
IG93biBzZW1hcGhvcmUgZnJvbQorICAgICAgICBXZWJQcm9jZXNzIHRvIEdQVVByb2Nlc3MuIFBy
ZXZpb3VzbHkgdGhlIHNlbWFwaG9yZSB3b3VsZCBiZSBzZW50IGJhY2sgYnkKKyAgICAgICAgUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuIFByZXZpb3VzbHkgdGhlIGNvZGUgc3RydWN0dXJl
IGlzIG1vcmUKKyAgICAgICAgY29tcGxpY2F0ZWQgdGhhbiBuZWNjZXNzYXJ5LCBhcyB0aGUgc2Vt
YXBob3JlIGhvbGRlciB3YXMgYmVpbmcKKyAgICAgICAgbnVsbC1jaGVja2VkLCByZXNldCBhbmQg
cmUtc2VhdGVkLiBUaGUgV2ViUHJvY2VzcyBnZXRzIGFscmVhZHkgdG8gY2hvb3NlCisgICAgICAg
IHRoZSBzZW1hcGhvcmVzIEdQVVByb2Nlc3MgdXNlcywgc28gdGhpcyBzaG91bGQgbm90IGluY3Jl
YXNlIHNlY3VyaXR5CisgICAgICAgIHN1cmZhY2UuIFRoZSBjaGFuZ2UgY2hvc2VuIGhlcmUgc2lk
ZS1zdGVwcyB0aGUgc2hvcnRjb21pbmcgb2YgdGhlIElQQworICAgICAgICBzeXN0ZW0gd2hlcmUg
dW5wYWNraW5nIG9iamVjdHMgZnJvbSB0aGUgUmVwbHkgbWVzc2FnZXMgbWFuZGF0ZXMgdGhhdCBh
CisgICAgICAgIGNvbnN0cnVjdGVkIHZlcnNpb24gb2YgdGhhdCB0eXBlIGV4aXN0cy4gRm9yIHBy
ZXZpb3VzIE1hY2hTZW5kUmlnaHQKKyAgICAgICAgZW1wdHktY29uc3RydWN0ZWQgb2JqZWN0IGlz
IHNpbXBsZSwgYnV0IGZvciBNYWNoU2VtYXBob3JlCisgICAgICAgIGVtcHR5LWNvbnN0cnVjdGVk
IG9iamVjdCBjcmVhdGVzIHVubmVjZXNzYXJ5IGNvbXBsaWNhdGlvbiB0aGF0IGlzIG5vdAorICAg
ICAgICByZXF1aXJlZCBvdGhlcndpc2UgYXQgdGhlIG1vbWVudC4gVGhlIGFsdGVybmF0aXZlIHRv
IHdoYXQgd2FzIGNob3NlbgorICAgICAgICBoZXJlIHdvdWxkIGJlIHRvIGhvbGQgd2l0aCBPcHRp
b25hbDxNYWNoU2VtYXBob3JlPiBhbmQgYWRkIGEKKyAgICAgICAgZW1wdHktaW5pdGlhbGl6aW5n
IGNvbnN0cnVjdG9yIHRvIGhvbGQgdGhlIG9iamVjdCB3aGVyZSB0byB1bnBhY2sgdGhlCisgICAg
ICAgIHNlbWFwaG9yZSBvYmplY3QgZnJvbSB0aGUgUmVwbHkuCisKKyAgICAgICAgQ2hhbmdlcyBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kIHRvIHJlY2VpdmUgaXRzIHBhcmFtZXRlcnMgZnJvbSB0aGUg
bm9ybWFsCisgICAgICAgIG1lc3NhZ2UgcGFyYW1ldGVycyBpbnN0ZWFkIG9mIHJlZHVuZGFudAor
ICAgICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLiBUaGUgSVBD
IGdlbmVyYXRvciBhbHJlYWR5CisgICAgICAgIGdlbmVyYXRlcyAxOjEgaWRlbnRpY2FsIHN0cnVj
dHVyZSwgaXQgaXMganVzdCB0aGUgbWVzc2FnZQorICAgICAgICBNZXNzYWdlczo6R1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlUmVuZGVyaW5nQmFja2VuZC4gVGhlcmUgaXMgbm8KKyAg
ICAgICAgbmVlZCB0byBkb3VibGUtd3JhcCB0aGUgc2ltcGxlIGxpc3Qgb2YgcGFyYW1ldGVycy4g
VGhlIGRvdWJsZS13cmFwcGluZworICAgICAgICBpcyBhIHByb2JsZW06IFRoZSBtZXNzYWdlIHN5
c3RlbSBwYXJhbWV0ZXJzIGFyZSBvZiBvd25lcnNoaXAgImNvbnN0CisgICAgICAgIHJlZmVyZW5j
ZSIsIHdoaWNoIGlzIHdoYXQgaXMgZXhwZWN0ZWQuCisgICAgICAgIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRDcmVhdGlvblBhcmFtZXRlcnMgY29udGVudHMgd2VyZSBvZiBvd25lcnNoaXAKKyAgICAg
ICAgInZhbHVlIiwgd2hpY2ggd29ya3MgYXMgZXhwZWN0ZWQgb25seSBmb3Igc2ltcGxlIHByaW1p
dGl2ZSB0eXBlcy4KKyAgICAgICAgRXNzZW50aWFsbHkgcHJldmlvdXNseSBjYWxsaW5nIHRoZSBJ
UEMgZnVuY3Rpb24gbWVhbnQgdHJhbnNmZXJpbmcKKyAgICAgICAgb2JqZWN0cyB0byBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLiBUaGlzIGlzIG5vdCBob3cgdGhlCisg
ICAgICAgIElQQyBzeXN0ZW0gaXMgbWVhbnQgdG8gd29yay4gVGhlIGludGVudGlvbiBvZiBhIElQ
QyBjYWxsIGlzIHRvLCBieQorICAgICAgICBkZWZhdWx0LCByZWZlcmVuY2UgaXRzIGFyZ3VtZW50
cyBmb3IgdGhlIHB1cnBvc2Ugb2YgZW5jb2RpbmcuIFRoZSBwYXRjaAorICAgICAgICB0cmllcyB0
byBhY2hpZXZlIGEgYml0IHRoZSBzYW1lIGdvYWwgYXMgdGhlIG9yaWdpbmFsCisgICAgICAgIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMgcHJlc3VtYWJseSBoYWQsIGku
ZS4gdG8gYXZvaWQKKyAgICAgICAgcHJvYmxlbXMgd2l0aCAjaWYgUExBVEZPUk0oQ09DT0EpLSNl
bHNlIGluIG1ldGhvZCBkZWNsYXJhdGlvbnMgYW5kCisgICAgICAgIGRlZmluaXRpb25zLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0b3IuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVy
QWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cyk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlv
RGVzdGluYXRpb246OlJlbW90ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Y3JlYXRlQXVkaW9EZXN0aW5hdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpkZWxldGVBdWRp
b0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1h
bmFnZXI6OnN0YXJ0QXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdG9wQXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2Fn
ZXMuaW46CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvdGVzdHMvTWFrZWZpbGU6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVz
c2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcDoKKyAgICAgICAgKElQQzo6anNWYWx1ZUZvckFy
Z3VtZW50cyk6CisgICAgICAgIChJUEM6Om1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucyk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcDoKKyAgICAgICAg
KElQQzo6ZGVzY3JpcHRpb24pOgorICAgICAgICAoSVBDOjpyZWNlaXZlck5hbWUpOgorICAgICAg
ICAoSVBDOjppc1ZhbGlkTWVzc2FnZU5hbWUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rl
c3RzL01lc3NhZ2VOYW1lcy5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RX
aXRoTWFjaFNlbWFwaG9yZS5tZXNzYWdlcy5pbjogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4uCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZVJlY2Vp
dmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6
ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpUZXN0V2l0aE1hY2hTZW1hcGhv
cmU6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVz
dHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZXMuaDogQWRkZWQuCisgICAgICAgIChNZXNz
YWdlczo6VGVzdFdpdGhNYWNoU2VtYXBob3JlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKToKKyAgICAg
ICAgKE1lc3NhZ2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6OlNlbmRTZW1hcGhvcmU6Om5hbWUp
OgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6U2VuZFNlbWFwaG9y
ZTo6U2VuZFNlbWFwaG9yZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhNYWNoU2VtYXBo
b3JlOjpTZW5kU2VtYXBob3JlOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6
OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6UmVjZWl2ZVNlbWFwaG9yZTo6bmFtZSk6CisgICAgICAg
IChNZXNzYWdlczo6VGVzdFdpdGhNYWNoU2VtYXBob3JlOjpSZWNlaXZlU2VtYXBob3JlOjphcmd1
bWVudHMgY29uc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFj
aFNlbWFwaG9yZU1lc3NhZ2VzUmVwbGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvQ29j
b2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8V1RGOjpNYWNoU2VtYXBob3JlPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxXVEY6Ok1hY2hTZW1hcGhvcmU+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmg6IFJlbW92ZWQuCisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y29ubmVjdFRvR1BVUHJvY2Vzcyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpzdGFydFJlbmRl
cmluZ1RocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eTo6c3RvcFJlbmRlcmluZ1RocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5Lmg6CisKIDIwMjEtMDEtMjYgIFBlciBBcm5lICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0dQVSBwcm9jZXNzXVttYWNPU10gT25seSBhbGxvdyBhY2Nlc3MgdG8gZGlhZ25vc3Rp
YyBzZXJ2aWNlcyBmb3IgaW50ZXJuYWwgYnVpbGRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1h
cGhvcmUuY3BwCmluZGV4IDkyZmNmMTVjMDdkOTI0YTQ1MDc5MzdmZDIzMDQ1NzJjNGRiYmI5NjYu
LjZmYjM1NzdlYWQzODQ4Y2Y4MGMwODU4ODFjN2U2YWUxN2NlM2NkMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L2NvY29hL01hY2hTZW1hcGhvcmUuY3BwCkBAIC0zNiw2ICszNiwxMiBAQCBNYWNoU2VtYXBob3Jl
OjpNYWNoU2VtYXBob3JlKCkKICAgICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0ID09IEtFUk5fU1VD
Q0VTUyk7CiB9CiAKK01hY2hTZW1hcGhvcmU6Ok1hY2hTZW1hcGhvcmUoTWFjaFNlbWFwaG9yZSYm
IG90aGVyKQorICAgIDogbV9zZW5kUmlnaHQoV1RGTW92ZShvdGhlci5tX3NlbmRSaWdodCkpCisg
ICAgLCBtX3NlbWFwaG9yZShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fc2VtYXBob3JlLCBTRU1BUEhP
UkVfTlVMTCkpCit7Cit9CisKIE1hY2hTZW1hcGhvcmU6Ok1hY2hTZW1hcGhvcmUoTWFjaFNlbmRS
aWdodCYmIHNlbmRSaWdodCkKICAgICA6IG1fc2VuZFJpZ2h0KFdURk1vdmUoc2VuZFJpZ2h0KSkK
ICAgICAsIG1fc2VtYXBob3JlKG1fc2VuZFJpZ2h0LnNlbmRSaWdodCgpKQpAQCAtNDUsMjkgKzUx
LDU2IEBAIE1hY2hTZW1hcGhvcmU6Ok1hY2hTZW1hcGhvcmUoTWFjaFNlbmRSaWdodCYmIHNlbmRS
aWdodCkKIAogTWFjaFNlbWFwaG9yZTo6fk1hY2hTZW1hcGhvcmUoKQogewotICAgIGlmICghbV9z
ZW5kUmlnaHQpCi0gICAgICAgIHNlbWFwaG9yZV9kZXN0cm95KG1hY2hfdGFza19zZWxmKCksIG1f
c2VtYXBob3JlKTsKKyAgICBkZXN0cm95KCk7Cit9CisKK01hY2hTZW1hcGhvcmUmIE1hY2hTZW1h
cGhvcmU6Om9wZXJhdG9yPShNYWNoU2VtYXBob3JlJiYgb3RoZXIpCit7CisgICAgaWYgKHRoaXMg
IT0gJm90aGVyKSB7CisgICAgICAgIGRlc3Ryb3koKTsKKyAgICAgICAgbV9zZW5kUmlnaHQgPSBX
VEZNb3ZlKG90aGVyLm1fc2VuZFJpZ2h0KTsKKyAgICAgICAgbV9zZW1hcGhvcmUgPSBzdGQ6OmV4
Y2hhbmdlKG90aGVyLm1fc2VtYXBob3JlLCBTRU1BUEhPUkVfTlVMTCk7CisgICAgfQorCisgICAg
cmV0dXJuICp0aGlzOwogfQogCiB2b2lkIE1hY2hTZW1hcGhvcmU6OnNpZ25hbCgpCiB7Ci0gICAg
c2VtYXBob3JlX3NpZ25hbChtX3NlbWFwaG9yZSk7CisgICAgYXV0byByZXQgPSBzZW1hcGhvcmVf
c2lnbmFsKG1fc2VtYXBob3JlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0ID09IEtFUk5f
U1VDQ0VTUyk7CiB9CiAKIHZvaWQgTWFjaFNlbWFwaG9yZTo6d2FpdCgpCiB7Ci0gICAgc2VtYXBo
b3JlX3dhaXQobV9zZW1hcGhvcmUpOworICAgIGF1dG8gcmV0ID0gc2VtYXBob3JlX3dhaXQobV9z
ZW1hcGhvcmUpOworICAgIEFTU0VSVF9VTlVTRUQocmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTKTsK
IH0KIAogdm9pZCBNYWNoU2VtYXBob3JlOjp3YWl0Rm9yKFNlY29uZHMgdGltZW91dCkKIHsKICAg
ICBhdXRvIHNlY29uZHMgPSB0aW1lb3V0LnNlY29uZHNBczx1bnNpZ25lZD4oKTsKLSAgICBzZW1h
cGhvcmVfdGltZWR3YWl0KG1fc2VtYXBob3JlLCB7IHNlY29uZHMsIHN0YXRpY19jYXN0PGNsb2Nr
X3Jlc190Pih0aW1lb3V0Lm5hbm9zZWNvbmRzQXM8dWludDY0X3Q+KCkgLSBzZWNvbmRzICogTlNF
Q19QRVJfU0VDKSB9KTsKKyAgICBhdXRvIHJldCA9IHNlbWFwaG9yZV90aW1lZHdhaXQobV9zZW1h
cGhvcmUsIHsgc2Vjb25kcywgc3RhdGljX2Nhc3Q8Y2xvY2tfcmVzX3Q+KHRpbWVvdXQubmFub3Nl
Y29uZHNBczx1aW50NjRfdD4oKSAtIHNlY29uZHMgKiBOU0VDX1BFUl9TRUMpIH0pOworICAgIEFT
U0VSVF9VTlVTRUQocmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTIHx8IHJldCA9PSBLRVJOX09QRVJB
VElPTl9USU1FRF9PVVQpOwogfQogCi1NYWNoU2VuZFJpZ2h0IE1hY2hTZW1hcGhvcmU6OmNyZWF0
ZVNlbmRSaWdodCgpCitNYWNoU2VuZFJpZ2h0IE1hY2hTZW1hcGhvcmU6OmNyZWF0ZVNlbmRSaWdo
dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIE1hY2hTZW5kUmlnaHQ6OmNyZWF0ZShtX3NlbWFwaG9y
ZSk7CiB9CiAKK3ZvaWQgTWFjaFNlbWFwaG9yZTo6ZGVzdHJveSgpCit7CisgICAgaWYgKG1fc2Vu
ZFJpZ2h0KSB7CisgICAgICAgIG1fc2VuZFJpZ2h0ID0gTWFjaFNlbmRSaWdodCgpOworICAgICAg
ICBtX3NlbWFwaG9yZSA9IFNFTUFQSE9SRV9OVUxMOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGlmIChtX3NlbWFwaG9yZSA9PSBTRU1BUEhPUkVfTlVMTCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGF1dG8gcmV0ID0gc2VtYXBob3JlX2Rlc3Ryb3kobWFjaF90YXNrX3NlbGYoKSwgbV9zZW1h
cGhvcmUpOworICAgIEFTU0VSVF9VTlVTRUQocmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTKTsKKyAg
ICBtX3NlbWFwaG9yZSA9IFNFTUFQSE9SRV9OVUxMOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaCBiL1NvdXJj
ZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaAppbmRleCBiZTdjZWEwNDZiODEyY2JjM2Vi
M2E3MjEzMGQ5YTViYTAwOTNmOTJmLi40YjVkYjc0ZTcxNmMzMjhmNzdiMjYyZGI5ZDNiMGNjMTVj
ZDkwNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmgK
KysrIGIvU291cmNlL1dURi93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oCkBAIC0zNywxNiArMzcs
MjAgQEAgY2xhc3MgTWFjaFNlbWFwaG9yZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFj
aFNlbWFwaG9yZSk7CiBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1hY2hTZW1hcGhv
cmUoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWFjaFNlbWFwaG9yZShNYWNoU2VtYXBob3Jl
JiYpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBleHBsaWNpdCBNYWNoU2VtYXBob3JlKE1hY2hT
ZW5kUmlnaHQmJik7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5NYWNoU2VtYXBob3JlKCk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIE1hY2hTZW1hcGhvcmUmIG9wZXJhdG9yPShNYWNoU2VtYXBo
b3JlJiYpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2lnbmFsKCk7CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgd2FpdCgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IHdhaXRGb3IoU2Vjb25kcyk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWFjaFNlbmRSaWdo
dCBjcmVhdGVTZW5kUmlnaHQoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWFjaFNlbmRSaWdo
dCBjcmVhdGVTZW5kUmlnaHQoKSBjb25zdDsKIAorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wo
KSBjb25zdCB7IHJldHVybiBtX3NlbmRSaWdodCB8fCBtX3NlbWFwaG9yZSAhPSBTRU1BUEhPUkVf
TlVMTDsgfQogcHJpdmF0ZToKKyAgICB2b2lkIGRlc3Ryb3koKTsKICAgICBNYWNoU2VuZFJpZ2h0
IG1fc2VuZFJpZ2h0OwogICAgIHNlbWFwaG9yZV90IG1fc2VtYXBob3JlIHsgU0VNQVBIT1JFX05V
TEwgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggOTAwNTY2OTRhNTMwMGRjM2E4YmZkZDFlZTMwZWMx
NmJkOGViZGVhOC4uOWRmOGQxNjIxZjM0MDVjZTljYjdkMjRjNzk5YTcwZThkMDA4ZTA2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcApAQCAtNDgsNyArNDgsNiBAQAogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXJNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCIKLSNpbmNsdWRlICJSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCkBAIC0yOTEsMTAgKzI5MCwxOCBAQCBS
ZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YXVkaW9T
ZXNzaW9uUHJveHkoKQogfQogI2VuZGlmCiAKLXZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlm
aWVyCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgLCBNYWNoU2VtYXBob3JlJiYgcmVzdW1lRGlz
cGxheUxpc3RTZW1hcGhvcmUKKyNlbmRpZgorICAgICkKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcC5lbnN1cmUocGFyYW1ldGVycy5pZGVudGlmaWVy
LCBbJl0oKSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRXcmFwcGVyPihSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUo
cGFyYW1ldGVycykpKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZE1hcC5lbnN1cmUoaWRlbnRpZmllciwgWyZdKCkgeworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcj4oUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Y3JlYXRlKCp0aGlzLCBpZGVudGlmaWVyLCB7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
ICAgICAgICBXVEZNb3ZlKHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQorI2VuZGlmCisgICAg
ICAgIH0pKTsKICAgICB9KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0
LmlzTmV3RW50cnkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggNDQxOGNhNmFlYTJhNDA4ZTM3NzUzODkwZTFk
MzBkZGVjNzZlYzdjYS4uYjZhMjRjYjMyMGEzNjNlN2U5ZmVkZDQzZDI5MDYzNTk2NDk1MDYxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCkBAIC02NSw3ICs2NSw2IEBAIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OwogY2xhc3MgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKIGNsYXNzIFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7CiBzdHJ1Y3QgUmVtb3RlQXVkaW9TZXNzaW9uQ29u
ZmlndXJhdGlvbjsKLXN0cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0
ZXJzOwogCiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAgICAgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcywgV1RGOjpEZXN0cnVj
dGlvblRocmVhZDo6TWFpbj4KQEAgLTEyNyw3ICsxMjYsMTEgQEAgcHJpdmF0ZToKICNlbmRpZgog
I2VuZGlmCiAKLSAgICB2b2lkIGNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVtb3RlUmVuZGVyaW5n
QmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2
b2lkIGNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIE1h
Y2hTZW1hcGhvcmUmJiByZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSk7CisjZWxzZQorICAgIHZv
aWQgY3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Cisj
ZW5kaWYKICAgICB2b2lkIHJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKTsKIAogI2lmIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KaW5kZXggMGNiYzVkODc5ODNlNjY2ZTQ4ZTgzOWE2NDY0ODk4Nzk1MGEzOTJiZi4uMWU0OWIz
M2VjZjZhNTMxNWMyYjFhNDI5OGUyZDQxNzI1OTJkMmEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTIzLDcgKzIzLDEyIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiBt
ZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlzcGF0Y2hNZXNzYWdl
IHsKLSAgICB2b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoc3RydWN0IFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzKQorI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyIGlkZW50aWZpZXIsIE1hY2hTZW1hcGhvcmUgcmVzdW1lRGlz
cGxheUxpc3RTZW1hcGhvcmUpCisjZW5kaWYKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisgICAgdm9p
ZCBDcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIgaWRlbnRpZmllcikKKyNlbmRpZgogICAgIHZvaWQgUmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQo
V2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllcikKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRleHRH
TChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMs
IFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCAzMmFmZDMxMGJlNWMzMDMwNjQ3
ZDcyNThjMjNmZGEwMTAyYjJkNzc1Li5mMDg2OTkxZWYxZGNiNDE1NzBjNDBiYWJiODc3OTcyZDAz
Yzg4MjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5j
bHVkZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5o
IgotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCIK
ICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVzc2FnZXMuaCIKICNpbmNsdWRlICJS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPHd0Zi9DaGVj
a2VkQXJpdGhtZXRpYy5oPgpAQCAtNjUsMTcgKzY0LDE3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4g
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlv
blBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBQbGF0Zm9ybUNyZWF0ZVBhcmFtcyYmIHBhcmFtcykKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MsIFdURk1vdmUocGFyYW1ldGVycykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGlkZW50aWZpZXIs
IFdURk1vdmUocGFyYW1zKSkpOwogfQogCi1SZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQorUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyLCBQbGF0Zm9ybUNyZWF0ZVBhcmFt
cyYmIHBhcmFtcykKICAgICA6IG1fd29ya1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kIHdvcmsgcXVldWUiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29y
a1F1ZXVlOjpRT1M6OlVzZXJJbnRlcmFjdGl2ZSkpCiAgICAgLCBtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKLSAgICAsIG1fcmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIocGFyYW1ldGVycy5pZGVudGlmaWVyKQorICAgICwgbV9yZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcihpZGVudGlmaWVyKQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICwg
bV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZShtYWtlVW5pcXVlPE1hY2hTZW1hcGhvcmU+KFdU
Rk1vdmUocGFyYW1ldGVycy5zZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkp
KQorICAgICwgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZShXVEZNb3ZlKHBhcmFtcy5yZXN1
bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkpCiAjZW5kaWYKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwpAQCAtMjMxLDcgKzIzMCw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5CiAK
ICAgICAgICAgICAgIGhhbmRsZS5zdGFydFdhaXRpbmcoKTsKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICAgICAgICAgIG1fcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUtPndhaXRGb3IoMzBfdXMp
OworICAgICAgICAgICAgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZS53YWl0Rm9yKDMwX3Vz
KTsKICNlbHNlCiAgICAgICAgICAgICBzbGVlcCgzMF91cyk7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5oCmluZGV4IGU2Mzg5OTAzYjY1MGJhOGQ5NzNkYWY5YjNkY2NhNjQ1MzU2ZjQ1ZjguLjgw
YzNlMjQ0MjYyNjJiZDliYTQ5NTE4OWZiZWZhNDMyZDFjODFkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuaApAQCAtNDIsOSArNDIsNyBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLW5hbWVzcGFjZSBXVEYgewotY2xhc3MgTWFjaFNlbWFwaG9yZTsKLX0K
KyNpbmNsdWRlIDx3dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oPgogI2VuZGlmCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTYyLDE0ICs2MCwxOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGU7CiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOwotc3RydWN0IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM7CiAK
IGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQKICAgICA6IHByaXZhdGUgSVBDOjpNZXNzYWdl
U2VuZGVyCiAgICAgLCBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXIKICAgICAsIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlclJlYWRp
bmdDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZD4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOworICAgIHN0cnVjdCBQbGF0Zm9ybUNyZWF0ZVBhcmFt
cyB7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIE1hY2hTZW1hcGhvcmUgcmVzdW1lRGlz
cGxheUxpc3RTZW1hcGhvcmU7CisjZW5kaWYKKyAgICB9OworICAgIHN0YXRpYyBSZWY8UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZD4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgUGxhdGZvcm1DcmVhdGVQYXJhbXMmJik7CiAgICAgdmly
dHVhbCB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpOwogCiAgICAgUmVtb3RlUmVzb3VyY2VDYWNo
ZSYgcmVtb3RlUmVzb3VyY2VDYWNoZSgpIHsgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZTsg
fQpAQCAtODYsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAKIHBy
aXZhdGU6Ci0gICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciwgUGxhdGZvcm1DcmVhdGVQYXJhbXMmJik7CiAKICAgICBPcHRp
b25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJO
IGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikgb3ZlcnJpZGU7
CiAKQEAgLTE0OSw3ICsxNTEsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8V2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBSZWZQdHI8RGlzcGxheUxpc3RSZWFkZXJI
YW5kbGU+PiBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlczsKICAgICBPcHRpb25hbDxQZW5kaW5n
V2FrZXVwSW5mb3JtYXRpb24+IG1fcGVuZGluZ1dha2V1cEluZm87CiAjaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdURjo6TWFjaFNlbWFwaG9yZT4gbV9yZXN1bWVEaXNw
bGF5TGlzdFNlbWFwaG9yZTsKKyAgICBXVEY6Ok1hY2hTZW1hcGhvcmUgbV9yZXN1bWVEaXNwbGF5
TGlzdFNlbWFwaG9yZTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5j
cHAKaW5kZXggMGY4NDA3YzFmM2RjNzg3YjUwZTliZjYwOTkxYWVlN2NiNDEwYjRmYS4uN2JhNDEw
MDVlM2NlNWFiNzMzN2NiYjVhMjI0NjNhMjk5NDM5MjMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXIuY3BwCkBAIC01MSwxMCArNTEsMTUgQEAgY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbgogI2VuZGlmCiB7CiBwdWJsaWM6CisgICAgc3RydWN0IFBsYXRmb3JtQ3JlYXRlUGFyYW1z
IHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgTWFjaFNlbWFwaG9yZSByZW5kZXJTZW1h
cGhvcmU7CisjZW5kaWYKKyAgICB9OwogICAgIHN0YXRpYyBSZWY8UmVtb3RlQXVkaW9EZXN0aW5h
dGlvbj4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsCi0gICAgICAgIGNvbnN0IFN0
cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50
MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJk
d2FyZVNhbXBsZVJhdGUpCisgICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWlu
dDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIFBsYXRmb3Jt
Q3JlYXRlUGFyYW1zJiYgcGFyYW1zKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbihjb25uZWN0aW9uLCBpZGVudGlmaWVyLCBpbnB1dERl
dmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNh
bXBsZVJhdGUsIGhhcmR3YXJlU2FtcGxlUmF0ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIGlucHV0
RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywg
c2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRlLCBXVEZNb3ZlKHBhcmFtcykpKTsKICAgICB9
CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKCkgPSBkZWZhdWx0OwpAQCAt
NjgsOCArNzMsNiBAQCBwdWJsaWM6CiAgICAgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
TWFjaFNlbmRSaWdodCBjcmVhdGVSZW5kZXJTZW1hcGhvcmVTZW5kUmlnaHQoKSB7IHJldHVybiBt
X3JlbmRlclNlbWFwaG9yZS5jcmVhdGVTZW5kUmlnaHQoKTsgfQotCiAgICAgdm9pZCBhdWRpb1Nh
bXBsZXNTdG9yYWdlQ2hhbmdlZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaXBjSGFu
ZGxlLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9u
LCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKICAgICB7CiAgICAgICAgIG1fcmluZ0J1ZmZlciA9
IG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFJlYWRP
bmx5U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KGlwY0hhbmRsZS5oYW5kbGUpLCBkZXNjcmlwdGlv
biwgbnVtYmVyT2ZGcmFtZXMpOwpAQCAtMTA0LDExICsxMDcsMTIgQEAgcHVibGljOgogICAgIGJv
b2wgaXNQbGF5aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KIAogcHJpdmF0ZToK
LSAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3Qg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVT
YW1wbGVSYXRlKQorICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYsIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxz
LCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9h
dCBoYXJkd2FyZVNhbXBsZVJhdGUsIFBsYXRmb3JtQ3JlYXRlUGFyYW1zJiYgcGFyYW1zKQogICAg
ICAgICA6IG1faWQoaWRlbnRpZmllcikKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgLCBt
X2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3IoKnRoaXMpCiAgICAgICAgICwgbV9yaW5nQnVmZmVyKG1h
a2VVbmlxdWVSZWY8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPigpKQorICAgICAgICAsIG1fcmVuZGVy
U2VtYXBob3JlKFdURk1vdmUocGFyYW1zLnJlbmRlclNlbWFwaG9yZSkpCiAjZW5kaWYKICAgICB7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xNjIsMTkgKzE2NiwyMyBAQCBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcjo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoR1BVQ29ubmVj
dGlvblRvV2ViUAogCiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6flJlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyKCkgPSBkZWZhdWx0OwogCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyOjpjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXRE
ZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJh
dGUsIENyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29u
c3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMs
IHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0
IGhhcmR3YXJlU2FtcGxlUmF0ZSwKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBNYWNoU2VtYXBo
b3JlJiYgcmVuZGVyU2VtYXBob3JlLAorI2VuZGlmCisgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uRGVsYXllZFJlcGx5JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBuZXdJRCA9IFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25JZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKLSAgICBhdXRvIGRlc3RpbmF0
aW9uID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKG1fZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcywgbmV3SUQsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVt
YmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRlKTsKLSAg
ICBtX2F1ZGlvRGVzdGluYXRpb25zLmFkZChuZXdJRCwgZGVzdGluYXRpb24uY29weVJlZigpKTsK
KyAgICBhdXRvIGRlc3RpbmF0aW9uID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKG1f
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgbmV3SUQsIGlucHV0RGV2aWNlSWQsIG51bWJlck9m
SW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdh
cmVTYW1wbGVSYXRlLCB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgY29tcGxldGlvbkhhbmRs
ZXIobmV3SUQsIGRlc3RpbmF0aW9uLT5jcmVhdGVSZW5kZXJTZW1hcGhvcmVTZW5kUmlnaHQoKSk7
Ci0jZWxzZQotICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ld0lEKTsKKyAgICAgICAgV1RGTW92ZShy
ZW5kZXJTZW1hcGhvcmUpCiAjZW5kaWYKKyAgICB9KTsKKyAgICBtX2F1ZGlvRGVzdGluYXRpb25z
LmFkZChuZXdJRCwgZGVzdGluYXRpb24uY29weVJlZigpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxl
cihuZXdJRCk7CiB9CiAKLXZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmRlbGV0
ZUF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6ZGVsZXRlQXVkaW9EZXN0aW5hdGlvbihS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBNZXNzYWdlczo6UmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkRlbGV0ZUF1ZGlvRGVzdGluYXRpb25Bc3luY1Jl
cGx5JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBkZXN0aW5hdGlvbiA9IG1fYXVk
aW9EZXN0aW5hdGlvbnMudGFrZShpZGVudGlmaWVyKTsKICAgICBpZiAoZGVzdGluYXRpb24pCkBA
IC0xODIsNyArMTkwLDcgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6ZGVs
ZXRlQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW8KICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwogfQogCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdGFy
dEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0YXJ0QXVkaW9EZXN0aW5hdGlv
bihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBNZXNzYWdlczo6
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlN0YXJ0QXVkaW9EZXN0aW5hdGlvbkFzeW5j
UmVwbHkmJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBib29sIGlzUGxheWluZyA9IGZhbHNl
OwogICAgIGlmIChhdXRvKiBpdGVtID0gbV9hdWRpb0Rlc3RpbmF0aW9ucy5nZXQoaWRlbnRpZmll
cikpIHsKQEAgLTE5Miw3ICsyMDAsNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyOjpzdGFydEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbgogICAgIGNv
bXBsZXRpb25IYW5kbGVyKGlzUGxheWluZyk7CiB9CiAKLXZvaWQgUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXI6OnN0b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25J
ZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdG9w
QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlm
aWVyLCBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlN0b3BBdWRpb0Rl
c3RpbmF0aW9uQXN5bmNSZXBseSYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGJvb2wgaXNQ
bGF5aW5nID0gZmFsc2U7CiAgICAgaWYgKGF1dG8qIGl0ZW0gPSBtX2F1ZGlvRGVzdGluYXRpb25z
LmdldChpZGVudGlmaWVyKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaAppbmRleCBiODNm
MjlmOGRjMTMzYTFhMmMzYTg3NGJhNzMzYjU4MGIyNmU3NjJkLi4yNTBjZGJiMWY2MzM3NGFlZTU5
ZWE3OWYyZTA1M2M4ZmEyN2I2MzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaApAQCAt
MzQsMTQgKzM0LDE0IEBACiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPHd0
Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOwogfQot
Ci1uYW1lc3BhY2UgV1RGIHsKLWNsYXNzIE1hY2hTZW5kUmlnaHQ7Ci19CiAjZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC02NCwxMSArNjQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
dXNpbmcgQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIFdURjo6TWFjaFNlbmRSaWdodCk+Owor
ICAgIHZvaWQgY3JlYXRlQXVkaW9EZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNl
SWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCBN
YWNoU2VtYXBob3JlJiYgcmVuZGVyU2VtYXBob3JlLCBDb21wbGV0aW9uSGFuZGxlcjxjb25zdCBX
ZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyPiYmKTsKICNlbHNlCi0gICAg
dXNpbmcgQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIpPjsKKyAgICB2b2lkIGNyZWF0ZUF1ZGlv
RGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJP
ZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNh
bXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwgQ29tcGxldGlvbkhhbmRsZXI8Y29u
c3QgV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllcj4mJik7CiAjZW5kaWYK
LSAgICB2b2lkIGNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBpbnB1dERldmlj
ZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwg
Q3JlYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGRlbGV0ZUF1ZGlvRGVzdGlu
YXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBzdGFydEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwog
ICAgIHZvaWQgc3RvcEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2Vy
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IDU1Nzg5ODQ2ZDc0ZDg1NzRiYmRh
MWFiZGYyNzE4YmQzYmE1YmM0ZTQuLjM4ZTM0ZTAzNGQxN2FlYTY4MTRhYjcwMjYzN2JmMzhhZjYw
NTgxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4K
QEAgLTI1LDcgKzI1LDcgQEAKIAogbWVzc2FnZXMgLT4gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1h
bmFnZXIgTm90UmVmQ291bnRlZCB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgQ3JlYXRlQXVk
aW9EZXN0aW5hdGlvbihTdHJpbmcgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1
dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVS
YXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUpIC0+IChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIE1hY2hTZW5kUmlnaHQgcmVuZGVyU2VtYXBo
b3JlU2VuZFJpZ2h0KSBTeW5jaHJvbm91cworICAgIENyZWF0ZUF1ZGlvRGVzdGluYXRpb24oU3Ry
aW5nIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMy
X3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdh
cmVTYW1wbGVSYXRlLCBNYWNoU2VtYXBob3JlIHJlbmRlclNlbWFwaG9yZSkgLT4gKFdlYktpdDo6
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMK
ICNlbmRpZgogI2lmICFQTEFURk9STShDT0NPQSkKICAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9u
KFN0cmluZyBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVp
bnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhh
cmR3YXJlU2FtcGxlUmF0ZSkgLT4gKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50
aWZpZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CmluZGV4IGVjOGJjZjA4N2RmMTZkZjYwZGJlMDA4MGU0Y2ViMDYxZDE3Njhm
ZjcuLmUwY2ExYWU1Njg4N2M0ZGVmNmZhYmQzNGYxMTVkMzBiNDMyODIwYTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjU1LDYgKzI1NSw3IEBAIGRlZiB0
eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdJUEM6OkRh
dGFSZWZlcmVuY2UnLAogICAgICAgICAnSVBDOjpGb250UmVmZXJlbmNlJywKICAgICAgICAgJ01h
Y2hTZW5kUmlnaHQnLAorICAgICAgICAnTWFjaFNlbWFwaG9yZScsCiAgICAgICAgICdNZWRpYVRp
bWUnLAogICAgICAgICAnU3RyaW5nJywKICAgICAgICAgJ1dlYkNvcmU6OkNvbG9yU3BhY2UnLApA
QCAtMzM0LDYgKzMzNSw4IEBAIGRlZiBjb25kaXRpb25zX2Zvcl9oZWFkZXIoaGVhZGVyKToKICAg
ICAgICAgJyJJbnB1dE1ldGhvZFN0YXRlLmgiJzogWyJQTEFURk9STShHVEspIiwgIlBMQVRGT1JN
KFdQRSkiXSwKICAgICAgICAgJyJMYXllckhvc3RpbmdDb250ZXh0LmgiJzogWyJQTEFURk9STShD
T0NPQSkiLCBdLAogICAgICAgICAnIkdlc3R1cmVUeXBlcy5oIic6IFsiUExBVEZPUk0oSU9TX0ZB
TUlMWSkiXSwKKyAgICAgICAgJzx3dGYvTWFjaFNlbmRSaWdodC5oPic6IFsiUExBVEZPUk0oQ09D
T0EpIl0sCisgICAgICAgICc8d3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaD4nOiBbIlBMQVRGT1JN
KENPQ09BKSJdLAogICAgIH0KICAgICBpZiBub3QgaGVhZGVyIGluIGNvbmRpdGlvbnM6CiAgICAg
ICAgIHJldHVybiBOb25lCkBAIC0zNTQsNiArMzU3LDcgQEAgZGVmIGZvcndhcmRfZGVjbGFyYXRp
b25zX2FuZF9oZWFkZXJzKHJlY2VpdmVyKToKIAogICAgIG5vbl90ZW1wbGF0ZV93dGZfdHlwZXMg
PSBmcm96ZW5zZXQoWwogICAgICAgICAnTWFjaFNlbmRSaWdodCcsCisgICAgICAgICdNYWNoU2Vt
YXBob3JlJywKICAgICAgICAgJ01lZGlhVHlwZScsCiAgICAgICAgICdTdHJpbmcnLAogICAgIF0p
CkBAIC00MDksNiArNDEzLDcgQEAgZGVmIGZvcndhcmRfZGVjbGFyYXRpb25zX2FuZF9oZWFkZXJz
X2Zvcl9yZXBsaWVzKHJlY2VpdmVyKToKIAogICAgIG5vbl90ZW1wbGF0ZV93dGZfdHlwZXMgPSBm
cm96ZW5zZXQoWwogICAgICAgICAnTWFjaFNlbmRSaWdodCcsCisgICAgICAgICdNYWNoU2VtYXBo
b3JlJywKICAgICAgICAgJ01lZGlhVGltZScsCiAgICAgICAgICdTdHJpbmcnLAogICAgIF0pCkBA
IC02MzksNiArNjQ0LDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAKICAgICBzcGVj
aWFsX2Nhc2VzID0gewogICAgICAgICAnTWFjaFNlbmRSaWdodCc6IFsnPHd0Zi9NYWNoU2VuZFJp
Z2h0Lmg+J10sCisgICAgICAgICdNYWNoU2VtYXBob3JlJzogWyc8d3RmL2NvY29hL01hY2hTZW1h
cGhvcmUuaD4nXSwKICAgICAgICAgJ0pTQzo6TWVzc2FnZUxldmVsJzogWyc8SmF2YVNjcmlwdENv
cmUvQ29uc29sZVR5cGVzLmg+J10sCiAgICAgICAgICdKU0M6Ok1lc3NhZ2VTb3VyY2UnOiBbJzxK
YXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4nXSwKICAgICAgICAgJ0luc3BlY3Rvcjo6SW5z
cGVjdG9yVGFyZ2V0VHlwZSc6IFsnPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclRhcmdldC5oPidd
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0
dGVzdC5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3Qu
cHkKaW5kZXggNmVjNmViNGRhNTU3NzNmY2VkNjNkMzgyMjMzYzMyNTgxOWE5YTNjMy4uYWRlYjg1
ZjkwYjNmNGQ1OWJiNzNmNDE2MmUwNjgxYTlmNjc2OTI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5CkBAIC0zOSw3ICszOSw3IEBA
IHRlc3RzX2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbihtb2R1bGVfZGlyZWN0b3J5LCAndGVzdHMn
KQogCiByZXNldF9yZXN1bHRzID0gRmFsc2UKIAotX3Rlc3RfcmVjZWl2ZXJfbmFtZXMgPSBbJ1Rl
c3RXaXRoU3VwZXJjbGFzcycsICdUZXN0V2l0aExlZ2FjeVJlY2VpdmVyJywgJ1Rlc3RXaXRob3V0
QXR0cmlidXRlcycsICdUZXN0V2l0aElmTWVzc2FnZSddCitfdGVzdF9yZWNlaXZlcl9uYW1lcyA9
IFsnVGVzdFdpdGhTdXBlcmNsYXNzJywgJ1Rlc3RXaXRoTGVnYWN5UmVjZWl2ZXInLCAnVGVzdFdp
dGhvdXRBdHRyaWJ1dGVzJywgJ1Rlc3RXaXRoSWZNZXNzYWdlJywgJ1Rlc3RXaXRoTWFjaFNlbWFw
aG9yZSddCiAKIAogZGVmIHJlY2VpdmVyX2hlYWRlcl9maWxlX25hbWUocmVjZWl2ZXJfbmFtZSk6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxl
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZQppbmRleCA4Nzk2
ZmZiYzVhM2Y4N2I5MjNlZDZjOTgwMjM5MWE4NzZiYWMzODJlLi4zOWFmMTNjZTcwMmE1ODM3ZGM4
NzEyNWM3YzUyY2QyN2IyYTc3ZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL01ha2VmaWxlCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvTWFrZWZpbGUKQEAgLTEsMiArMSwyIEBACiBhbGw6Ci0JcHl0aG9uIC4uLy4uL2dlbmVy
YXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkgLiBUZXN0V2l0aFN1cGVyY2xhc3MgVGVzdFdpdGhMZWdh
Y3lSZWNlaXZlciBUZXN0V2l0aG91dEF0dHJpYnV0ZXMgVGVzdFdpdGhJZk1lc3NhZ2UKKwlweXRo
b24gLi4vLi4vZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weSAuIFRlc3RXaXRoU3VwZXJjbGFz
cyBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyIFRlc3RXaXRob3V0QXR0cmlidXRlcyBUZXN0V2l0aElm
TWVzc2FnZSBUZXN0V2l0aE1hY2hTZW1hcGhvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRp
b25zLmNwcAppbmRleCA1OTQwNDQzOTBjYWRhYzJmZjBjZGZhYTllMzA1MDQ0Mjc3ODM4MGZlLi44
M2M1ZDBjYjMzMjIyYmIxYTZmYjczNDU0ZDQwNzlkZDYyZTRjYzY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9u
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJn
dW1lbnREZXNjcmlwdGlvbnMuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjZW5kaWYKICNpbmNsdWRl
ICJUZXN0V2l0aElmTWVzc2FnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiVGVzdFdpdGhMZWdhY3lS
ZWNlaXZlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJUZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlRlc3RXaXRob3V0QXR0cmlidXRlc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCkBAIC02NSw2ICs2Niw5IEBACiAjZW5kaWYKICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaWYgUExBVEZPUk0oQ09DT0EpCisj
aW5jbHVkZSA8d3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaD4KKyNlbmRpZgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTIxNSw2ICsyMTksMTIg
QEAgT3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBqc1ZhbHVlRm9yQXJndW1lbnRzKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTWUKICNpZiBQTEFURk9STShHVEspCiAgICAgY2FzZSBN
ZXNzYWdlTmFtZTo6VGVzdFdpdGhJZk1lc3NhZ2VfTG9hZFVSTDoKICAgICAgICAgcmV0dXJuIGpz
VmFsdWVGb3JEZWNvZGVkQXJndW1lbnRzPE1lc3NhZ2VzOjpUZXN0V2l0aElmTWVzc2FnZTo6TG9h
ZFVSTDo6QXJndW1lbnRzPihnbG9iYWxPYmplY3QsIGRlY29kZXIpOworI2VuZGlmCisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3Jl
X1NlbmRTZW1hcGhvcmU6CisgICAgICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50
czxNZXNzYWdlczo6VGVzdFdpdGhNYWNoU2VtYXBob3JlOjpTZW5kU2VtYXBob3JlOjpBcmd1bWVu
dHM+KGdsb2JhbE9iamVjdCwgZGVjb2Rlcik7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdp
dGhNYWNoU2VtYXBob3JlX1JlY2VpdmVTZW1hcGhvcmU6CisgICAgICAgIHJldHVybiBqc1ZhbHVl
Rm9yRGVjb2RlZEFyZ3VtZW50czxNZXNzYWdlczo6VGVzdFdpdGhNYWNoU2VtYXBob3JlOjpSZWNl
aXZlU2VtYXBob3JlOjpBcmd1bWVudHM+KGdsb2JhbE9iamVjdCwgZGVjb2Rlcik7CiAjZW5kaWYK
ICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTUxNiw2ICs1MjYsMTQgQEAgT3B0aW9u
YWw8VmVjdG9yPEFyZ3VtZW50RGVzY3JpcHRpb24+PiBtZXNzYWdlQXJndW1lbnREZXNjcmlwdGlv
bnMoTWVzc2FnZU5hbWUgbmEKICAgICAgICAgICAgIHsidXJsIiwgIlN0cmluZyIsIG51bGxwdHIs
IGZhbHNlfSwKICAgICAgICAgICAgIHsidmFsdWUiLCAiaW50NjRfdCIsIG51bGxwdHIsIGZhbHNl
fSwKICAgICAgICAgfTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGNhc2UgTWVz
c2FnZU5hbWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9TZW5kU2VtYXBob3JlOgorICAgICAgICBy
ZXR1cm4gVmVjdG9yPEFyZ3VtZW50RGVzY3JpcHRpb24+IHsKKyAgICAgICAgICAgIHsiczAiLCAi
TWFjaFNlbWFwaG9yZSIsIG51bGxwdHIsIGZhbHNlfSwKKyAgICAgICAgfTsKKyAgICBjYXNlIE1l
c3NhZ2VOYW1lOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmVfUmVjZWl2ZVNlbWFwaG9yZToKKyAgICAg
ICAgcmV0dXJuIFZlY3RvcjxBcmd1bWVudERlc2NyaXB0aW9uPiB7IH07CiAjZW5kaWYKICAgICBk
ZWZhdWx0OgogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcAppbmRleCA3NmZhZDM3YzU0NjBhZGJjZmVhMzcy
ZDE4NjY1NTBmYTdjOGE4NTEzLi45OGNlMzJkOTU1ZTc5NjM4YzIzZTI1YmY3MzgxMzA3NmEyODI0
ZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3Nh
Z2VOYW1lcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNz
YWdlTmFtZXMuY3BwCkBAIC03Miw2ICs3MiwxMCBAQCBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbihN
ZXNzYWdlTmFtZSBuYW1lKQogICAgICAgICByZXR1cm4gIlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJf
VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMiOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRo
TGVnYWN5UmVjZWl2ZXJfVG91Y2hFdmVudDoKICAgICAgICAgcmV0dXJuICJUZXN0V2l0aExlZ2Fj
eVJlY2VpdmVyX1RvdWNoRXZlbnQiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTWFj
aFNlbWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlOgorICAgICAgICByZXR1cm4gIlRlc3RXaXRoTWFj
aFNlbWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0
V2l0aE1hY2hTZW1hcGhvcmVfU2VuZFNlbWFwaG9yZToKKyAgICAgICAgcmV0dXJuICJUZXN0V2l0
aE1hY2hTZW1hcGhvcmVfU2VuZFNlbWFwaG9yZSI7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVz
dFdpdGhTdXBlcmNsYXNzX0xvYWRVUkw6CiAgICAgICAgIHJldHVybiAiVGVzdFdpdGhTdXBlcmNs
YXNzX0xvYWRVUkwiOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19U
ZXN0QXN5bmNNZXNzYWdlOgpAQCAtMTgxLDYgKzE4NSw5IEBAIFJlY2VpdmVyTmFtZSByZWNlaXZl
ck5hbWUoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVz
dFdpdGhMZWdhY3lSZWNlaXZlcl9UZXN0UGFyYW1ldGVyQXR0cmlidXRlczoKICAgICBjYXNlIE1l
c3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1RvdWNoRXZlbnQ6CiAgICAgICAgIHJl
dHVybiBSZWNlaXZlck5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI7CisgICAgY2FzZSBNZXNz
YWdlTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3JlX1JlY2VpdmVTZW1hcGhvcmU6CisgICAgY2Fz
ZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3JlX1NlbmRTZW1hcGhvcmU6CisgICAg
ICAgIHJldHVybiBSZWNlaXZlck5hbWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTsKICAgICBjYXNl
IE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfTG9hZFVSTDoKICAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZToKICAgICBjYXNlIE1l
c3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZVdpdGhDb25uZWN0
aW9uOgpAQCAtMjk4LDYgKzMwNSwxNCBAQCBib29sIGlzVmFsaWRNZXNzYWdlTmFtZShNZXNzYWdl
TmFtZSBtZXNzYWdlTmFtZSkKICNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9N
RVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKICAgICBp
ZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZl
cl9Ub3VjaEV2ZW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0
aE1hY2hTZW1hcGhvcmVfUmVjZWl2ZVNlbWFwaG9yZSkKKyAgICAgICAgcmV0dXJuIHRydWU7Cisj
ZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpN
ZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3JlX1NlbmRTZW1hcGhvcmUpCisgICAgICAg
IHJldHVybiB0cnVlOwogI2VuZGlmCiAgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2Fn
ZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19Mb2FkVVJMKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5h
bWVzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5o
CmluZGV4IDIzZjc1NjA4N2Q2ODNhZDIyYjA2OGUyYTcxZmQ5NWEwZjNjZTU1NWUuLmZiMGQ5MWJh
ODhkYzhkNjhlZjViZTc0YTJiMmEyM2YyZDQzMzMxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmgKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaApAQCAtMzEsMTEgKzMxLDEyIEBA
IG5hbWVzcGFjZSBJUEMgewogZW51bSBjbGFzcyBSZWNlaXZlck5hbWUgOiB1aW50OF90IHsKICAg
ICBUZXN0V2l0aElmTWVzc2FnZSA9IDEKICAgICAsIFRlc3RXaXRoTGVnYWN5UmVjZWl2ZXIgPSAy
Ci0gICAgLCBUZXN0V2l0aFN1cGVyY2xhc3MgPSAzCi0gICAgLCBUZXN0V2l0aG91dEF0dHJpYnV0
ZXMgPSA0Ci0gICAgLCBJUEMgPSA1Ci0gICAgLCBBc3luY1JlcGx5ID0gNgotICAgICwgSW52YWxp
ZCA9IDcKKyAgICAsIFRlc3RXaXRoTWFjaFNlbWFwaG9yZSA9IDMKKyAgICAsIFRlc3RXaXRoU3Vw
ZXJjbGFzcyA9IDQKKyAgICAsIFRlc3RXaXRob3V0QXR0cmlidXRlcyA9IDUKKyAgICAsIElQQyA9
IDYKKyAgICAsIEFzeW5jUmVwbHkgPSA3CisgICAgLCBJbnZhbGlkID0gOAogfTsKIAogZW51bSBj
bGFzcyBNZXNzYWdlTmFtZSA6IHVpbnQxNl90IHsKQEAgLTYwLDYgKzYxLDggQEAgZW51bSBjbGFz
cyBNZXNzYWdlTmFtZSA6IHVpbnQxNl90IHsKICAgICAsIFRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJf
VGVtcGxhdGVUZXN0CiAgICAgLCBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1Rlc3RQYXJhbWV0ZXJB
dHRyaWJ1dGVzCiAgICAgLCBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1RvdWNoRXZlbnQKKyAgICAs
IFRlc3RXaXRoTWFjaFNlbWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlCisgICAgLCBUZXN0V2l0aE1h
Y2hTZW1hcGhvcmVfU2VuZFNlbWFwaG9yZQogICAgICwgVGVzdFdpdGhTdXBlcmNsYXNzX0xvYWRV
UkwKICAgICAsIFRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlCiAgICAgLCBUZXN0
V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZVdpdGhDb25uZWN0aW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9y
ZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhNYWNoU2VtYXBob3JlLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1MjU4MzUzZjA5NGM0MDZh
NDIzZjYxMDBiY2U5Y2E4MjYyMDZjYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZS5tZXNzYWdlcy5pbgpA
QCAtMCwwICsxLDI4IEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K21lc3NhZ2VzIC0+IFRlc3RXaXRoTWFjaFNlbWFwaG9yZSB7CisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgdm9pZCBTZW5kU2VtYXBob3JlKE1hY2hTZW1hcGhvcmUgczApCisgICAgdm9pZCBSZWNl
aXZlU2VtYXBob3JlKCkgLT4gKE1hY2hTZW1hcGhvcmUgcjApCisjZW5kaWYKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBo
b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZVJlY2VpdmVyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
NGVlNDBjMzZhYWQ4M2Y5ZTcwMWQ4NmM4YWVjNzYzYTM3OGVhZTgwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhv
cmVNZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisg
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhNYWNoU2VtYXBob3JlLmgi
CisKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgorI2lu
Y2x1ZGUgIlRlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2VzLmgiCisjaWYgUExBVEZPUk0oQ09D
T0EpCisjaW5jbHVkZSA8d3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaD4KKyNlbmRpZgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKwordm9pZCBUZXN0V2l0aE1hY2hTZW1hcGhvcmU6OmRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRl
c3RXaXRoTWFjaFNlbWFwaG9yZTo6U2VuZFNlbWFwaG9yZTo6bmFtZSgpKSB7CisgICAgICAgIElQ
Qzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhNYWNoU2VtYXBob3JlOjpTZW5kU2Vt
YXBob3JlPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhNYWNoU2VtYXBob3JlOjpzZW5kU2VtYXBo
b3JlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAgIFVOVVNFRF9QQVJBTShj
b25uZWN0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Cit9CisKK3ZvaWQgVGVzdFdpdGhNYWNoU2VtYXBob3JlOjpkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29k
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCit7CisgICAg
YXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhNYWNo
U2VtYXBob3JlOjpSZWNlaXZlU2VtYXBob3JlOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6OlJlY2VpdmVTZW1hcGhv
cmU+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aE1hY2hTZW1hcGhvcmU6
OnJlY2VpdmVTZW1hcGhvcmUpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAg
VU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKKyAg
ICBVTlVTRURfUEFSQU0ocmVwbHlFbmNvZGVyKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2VzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3Nh
Z2VzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTMxMjE1ZDJlNDRiNDJiZTRiMWQwYmViMmE2YjM2OThmOGNkNDQz
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
VGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZXMuaApAQCAtMCwwICsxLDkwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgor
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNs
dWRlICJUZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2lm
IFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPHd0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg+Cisj
ZW5kaWYKKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFRlc3RXaXRoTWFjaFNl
bWFwaG9yZSB7CisKK3N0YXRpYyBpbmxpbmUgSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2Vp
dmVyTmFtZSgpCit7CisgICAgcmV0dXJuIElQQzo6UmVjZWl2ZXJOYW1lOjpUZXN0V2l0aE1hY2hT
ZW1hcGhvcmU7Cit9CisKKyNpZiBQTEFURk9STShDT0NPQSkKK2NsYXNzIFNlbmRTZW1hcGhvcmUg
eworcHVibGljOgorICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgTWFjaFNl
bWFwaG9yZSY+OworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJu
IElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9TZW5kU2VtYXBob3JlOyB9
CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBT
ZW5kU2VtYXBob3JlKGNvbnN0IE1hY2hTZW1hcGhvcmUmIHMwKQorICAgICAgICA6IG1fYXJndW1l
bnRzKHMwKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2
YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKworI2lmIFBMQVRG
T1JNKENPQ09BKQorY2xhc3MgUmVjZWl2ZVNlbWFwaG9yZSB7CitwdWJsaWM6CisgICAgdXNpbmcg
QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUg
bmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9S
ZWNlaXZlU2VtYXBob3JlOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsK
KworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxNYWNoU2VtYXBob3JlJj47CisgICAgdXNp
bmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPE1hY2hTZW1hcGhvcmU+OworICAgIGNvbnN0
IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Fy
Z3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwor
fTsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aE1hY2hTZW1hcGhvcmUKK30gLy8g
bmFtZXNwYWNlIE1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2VzUmVwbGllcy5oIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNzYWdl
c1JlcGxpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTcwYzRhMTNiYjc2YTM2MDU3NzNiZTNhYTdjN2JlMWEx
OWE2MTBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNzYWdlc1JlcGxpZXMuaApAQCAtMCwwICsxLDM2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdl
TmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCisKK25hbWVzcGFjZSBNZXNzYWdl
cyB7CituYW1lc3BhY2UgVGVzdFdpdGhNYWNoU2VtYXBob3JlIHsKKworCit9IC8vIG5hbWVzcGFj
ZSBUZXN0V2l0aE1hY2hTZW1hcGhvcmUKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0Nv
Y29hLm1tCmluZGV4IDI4MTRlOGI1ZWYzMmQ1MDI2NThiYWI1YWVmNzEzY2Y2MTQ3MDJiNTcuLjgz
NWE2NDA5YmQ4NzczZDQzNGExZDAxMTM0MmIyY2VmMTRjNTk1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1t
CkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaD4KICNpbXBvcnQgPHBhbC9z
cGkvY29jb2EvQ29yZVRleHRTUEkuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9NYWNoU2VtYXBob3Jl
Lmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8VUlLaXQvVUlGb250Lmg+
CkBAIC02NSw2ICs2NiwxOSBAQCBPcHRpb25hbDxXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nPiBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmc+OjpkZQogICAgIHJldHVybiB7
IHsgV1RGTW92ZShhdHRyaWJ1dGVkU3RyaW5nKSwgV1RGTW92ZShkb2N1bWVudEF0dHJpYnV0ZXMp
IH0gfTsKIH0KIAordm9pZCBBcmd1bWVudENvZGVyPFdURjo6TWFjaFNlbWFwaG9yZT46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXVEY6Ok1hY2hTZW1hcGhvcmUmIHNlbWFwaG9yZSkK
K3sKKyAgICBlbmNvZGVyIDw8IHNlbWFwaG9yZS5jcmVhdGVTZW5kUmlnaHQoKTsKK30KKworT3B0
aW9uYWw8TWFjaFNlbWFwaG9yZT4gQXJndW1lbnRDb2RlcjxXVEY6Ok1hY2hTZW1hcGhvcmU+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodDsK
KyAgICBpZiAoZGVjb2Rlci5kZWNvZGUoc2VuZFJpZ2h0KSkKKyAgICAgICAgcmV0dXJuIE9wdGlv
bmFsPFdURjo6TWFjaFNlbWFwaG9yZT4geyBzdGQ6OmluX3BsYWNlLCBXVEZNb3ZlKHNlbmRSaWdo
dCkgfTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCiAjaWYgRU5BQkxFKEFQUExFX1BB
WSkKIAogI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxMTUVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJh
bWV0ZXJzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3YjVhNzZhZjI1MjBjOWU3
MjAxMDY4MDhhOTM0ZmQxOTc4OTlkMjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZENyZWF0aW9uUGFyYW1ldGVycy5oCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotCi0jaW5j
bHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKLSNpbmNsdWRlIDx3dGYvTWFjaFNl
bmRSaWdodC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMgewotICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyIGlkZW50aWZpZXI7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgTWFjaFNlbmRSaWdodCBz
ZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKLSNlbmRpZgotCi0gICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kQ3JlYXRpb25QYXJhbWV0ZXJzPiBkZWNvZGUoRGVjb2RlciYpOwotfTsKLQotdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4KLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1l
dGVyczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBp
ZGVudGlmaWVyOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGVuY29kZXIgPDwgc2VuZFJpZ2h0
Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmU7Ci0jZW5kaWYKLX0KLQotdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFt
ZXRlcnM+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQotewotICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBh
cmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIE9wdGlvbmFsPFJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyPiBpZGVudGlmaWVyOwotICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKLSAgICBpZiAo
IWlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBwYXJhbWV0
ZXJzLmlkZW50aWZpZXIgPSAqaWRlbnRpZmllcjsKLQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IE9wdGlvbmFsPE1hY2hTZW5kUmlnaHQ+IHNlbmRSaWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2Vt
YXBob3JlOwotICAgIGRlY29kZXIgPj4gc2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1h
cGhvcmU7Ci0gICAgaWYgKCFzZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHBhcmFtZXRlcnMuc2VuZFJpZ2h0
Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUgPSBXVEZNb3ZlKCpzZW5kUmlnaHRGb3JSZXN1
bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBwYXJhbWV0ZXJz
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJP
Q0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5k
ZXggZmE5NmNkYTg0ZWNiN2Q0ODhhZTQyOTEzM2MwZjViNDQzNzA0OGRiMS4uNTA4MjFkMWRiNzM4
MGUxMDY0ZTE5ZWJiMGQ4ZTNmN2NkYzZhYmFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTgxLDYgKzgxLDcgQEAKICNpZiBQTEFURk9STShD
T0NPQSkKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFjaFNlbmRSaWdodDsKK2NsYXNzIE1hY2hT
ZW1hcGhvcmU7CiB9CiAjZW5kaWYKIApAQCAtNDg3LDYgKzQ4OCwxMCBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPENHQWZmaW5lVHJhbnNmb3JtPiB7CiAgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImLCBDR0FmZmluZVRyYW5zZm9ybSk7CiAgICAgc3RhdGljIE9wdGlvbmFs
PENHQWZmaW5lVHJhbnNmb3JtPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKK3RlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V1RGOjpNYWNoU2VtYXBob3JlPiB7CisgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImLCBjb25zdCBXVEY6Ok1hY2hTZW1hcGhvcmUmKTsKKyAgICBzdGF0aWMg
T3B0aW9uYWw8V1RGOjpNYWNoU2VtYXBob3JlPiBkZWNvZGUoRGVjb2RlciYpOworfTsKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZhMDNkYzg1MTQwMDM4NTgyNjE3NTNkZWNj
Zjk1Nzc3YTFhYmNlYTEuLjI0YjEzMmIyMjNmOTkzODkwZmFhMTA5NThlNmJmZTcwMTQxMjEzZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTk2OCw3ICsxOTY4LDYgQEAKIAkJRjQyRDYzNDEyMkEwRUZERjAwRDJGQjNBIC8qIFdlYkF1
dG9jb3JyZWN0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjQyRDYzM0YyMkEwRUZEMzAwRDJGQjNBIC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0
YS5oICovOyB9OwogCQlGNDMwRTk0MjIyNDczMzVGMDA1RkUwNTMgLyogV2Vic2l0ZU1ldGFWaWV3
cG9ydFBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQzMEU5NDEyMjQ3MzJBOTAwNUZFMDUzIC8qIFdlYnNpdGVNZXRhVmlld3BvcnRQb2xpY3ku
aCAqLzsgfTsKIAkJRjQzMEU5NDQyMjQ3M0RGRjAwNUZFMDUzIC8qIFdlYkNvbnRlbnRNb2RlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDMwRTk0MzIy
NDczREI4MDA1RkUwNTMgLyogV2ViQ29udGVudE1vZGUuaCAqLzsgfTsKLQkJRjQzN0M4RDkyNTkz
QjdFMzAwREI4QTFDIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzdDOEQ4
MjU5M0I3RTMwMERCOEExQyAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0
ZXJzLmggKi87IH07CiAJCUY0MzhDRDFDMjI0MTQyMTQwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVm
ZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjQzOENEMUIyMjQxNDBBNjAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQlGNDM4Q0QxRjIyNDE0
RDQwMDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXNJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzOENEMUUyMjQxNEQ0MDAwREU2
RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzSW50ZXJuYWwuaCAqLzsgfTsKIAkJRjQzOENEMjEy
MjQxRjY5NTAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzUHJpdmF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzOENEMjAyMjQxRjY5NTAw
REU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01Nzg2LDcgKzU3ODUsNiBAQAogCQlG
NDJENjM0MDIyQTBFRkQzMDBEMkZCM0EgLyogV2ViQXV0b2NvcnJlY3Rpb25EYXRhLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViQXV0b2NvcnJlY3Rpb25EYXRh
Lm1tOyBwYXRoID0gaW9zL1dlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjQzMEU5NDEyMjQ3MzJBOTAwNUZFMDUzIC8qIFdlYnNpdGVNZXRhVmll
d3BvcnRQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZU1ldGFWaWV3cG9ydFBvbGljeS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDMwRTk0MzIyNDczREI4MDA1RkUwNTMg
LyogV2ViQ29udGVudE1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGVudE1vZGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjQzN0M4RDgyNTkzQjdFMzAwREI4QTFDIC8qIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNDM4Q0QxQjIyNDE0MEE2MDBERTZEREEgLyogV0tXZWJwYWdlUHJl
ZmVyZW5jZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJwYWdlUHJlZmVyZW5jZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzOENEMUQyMjQxNEFENjAwREU2RERBIC8qIFdLV2Vi
cGFnZVByZWZlcmVuY2VzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJwYWdlUHJlZmVy
ZW5jZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzhDRDFFMjI0MTRENDAw
MERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlc0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLV2VicGFnZVByZWZlcmVuY2VzSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTY1MjUsNyArNjUyMyw2IEBACiAJCQkJRTFDQzFCOEUxMkQ3RUFERjAwNjI1ODM4IC8q
IFByaW50SW5mby5oICovLAogCQkJCTQ2M0ZENDgxMUVCOTRFQUQwMEEyOTgyQyAvKiBQcm9jZXNz
VGVybWluYXRpb25SZWFzb24uaCAqLywKIAkJCQk5QjEyMjlEMDIzRkYyQTVFMDA4Q0E3NTEgLyog
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaCAqLywKLQkJCQlGNDM3QzhEODI1OTNC
N0UzMDBEQjhBMUMgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5o
ICovLAogCQkJCTVDQjdBRkU2MjNDNjgxQjAwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWRJbmZvLmgg
Ki8sCiAJCQkJNUMwMDk5M0IyNDE3RkI3RTAwRDUzQzI1IC8qIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQYXJhbWV0ZXJzLmggKi8sCiAJCQkJNDEwNDgyQ0IxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05l
dHdvcmsuY3BwICovLApAQCAtMTE4NzAsNyArMTE4NjcsNiBAQAogCQkJCTFBNTcwNEZDMUJFMTc1
MTEwMDg3NEFGMSAvKiBSZW1vdGVPYmplY3RJbnZvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQUMxMzM4MDE4NTkwQUU0MDBGM0VDMDUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBQzEzMzg2MTg1OTBDNDYwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RS
ZWdpc3RyeU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKLQkJCQlGNDM3QzhEOTI1OTNCN0UzMDBE
QjhBMUMgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY1OTQ3OTAxODdCM0IzQTAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU5NDdBODE4N0I1MTc2MDA0Mzc4
NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY1OTQ3OUIxODdCM0I2MDAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yUHJveHkuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuY3BwCmluZGV4IDYxYjRjODI0OTU3NmRlMTI4YTlhYmVkMDkyN2Y0MWVlNDE2MmJlNmUu
LmMxZTM2Y2VkYTFkMjM3YzZhODk1Yzg1MTc2ZmE1NjRhMmZlOWE4YWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRl
ICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgiCi0jaW5j
bHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1
ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5Lmgi
CkBAIC02NywxMiArNjYsMTEgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNv
bm5lY3RUb0dQVVByb2Nlc3MoKQogICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogICAgIGNvbm5lY3Rpb24u
YWRkQ2xpZW50KCp0aGlzKTsKICAgICBjb25uZWN0aW9uLm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50
NjQoKSwgKnRoaXMpOwotICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoewotICAgICAgICBtX3JlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyLAorICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQobV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcgogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgICAgICBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlLmNy
ZWF0ZVNlbmRSaWdodCgpLAorICAgICAgICAsIG1fcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUK
ICNlbmRpZgotICAgIH0pLCAwKTsKKyAgICApLCAwKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OnJlZXN0YWJsaXNoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmluZGV4IDM0ZTMwY2UxMTkzNjBjOTMwYzJiMDdl
OWMzMDhhMWI2NDBlZDBhM2UuLmUwMDc0ZTkxNzMzNmFiMjRmZTVjYjU2OTk2MmZkMTA0Yjg2NmJk
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKQEAgLTQwLDcgKzQwLDYg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
V2ViQXVkaW9CdWZmZXJMaXN0Lmg+CiAjaW5jbHVkZSA8bWFjaC9tYWNoX3RpbWUuaD4KLSNpbmNs
dWRlIDx3dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtODAsNyArNzksNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6
c3RhcnRSZW5kZXJpbmdUaHJlYWQoKQogCiAgICAgYXV0byBvZmZUaHJlYWRSZW5kZXJpbmcgPSBb
dGhpc10oKSBtdXRhYmxlIHsKICAgICAgICAgZG8gewotICAgICAgICAgICAgbV9yZW5kZXJTZW1h
cGhvcmUtPndhaXQoKTsKKyAgICAgICAgICAgIG1fcmVuZGVyU2VtYXBob3JlLndhaXQoKTsKICAg
ICAgICAgICAgIGlmIChtX3Nob3VsZFN0b3BUaHJlYWQpCiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAKQEAgLTk4LDggKzk3LDcgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0
b3BSZW5kZXJpbmdUaHJlYWQoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Nob3VsZFN0b3BU
aHJlYWQgPSB0cnVlOwotICAgIGlmIChtX3JlbmRlclNlbWFwaG9yZSkKLSAgICAgICAgbV9yZW5k
ZXJTZW1hcGhvcmUtPnNpZ25hbCgpOworICAgIG1fcmVuZGVyU2VtYXBob3JlLnNpZ25hbCgpOwog
ICAgIG1fcmVuZGVyVGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOwogICAgIG1fcmVuZGVyVGhy
ZWFkID0gbnVsbHB0cjsKICNlbmRpZgpAQCAtMTA3LDIwICsxMDUsMTQgQEAgdm9pZCBSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0b3BSZW5kZXJpbmdUaHJlYWQoKQogCiB2b2lkIFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2VzcygpCiB7Ci0gICAgUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgZGVzdGluYXRpb25JRDsKLSNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICBNYWNoU2VuZFJpZ2h0IHJlbmRlclNlbWFwaG9yZVNlbmRSaWdodDsKLSNl
bmRpZgotCiAgICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgY29ubmVjdGlvbi5hZGRDbGllbnQoKnRo
aXMpOwogICAgIGF1dG8gZGlkU3VjY2VlZCA9IGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmRT
eW5jKAotICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNy
ZWF0ZUF1ZGlvRGVzdGluYXRpb24obV9pbnB1dERldmljZUlkLCBtX251bWJlck9mSW5wdXRDaGFu
bmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscygpLCBzYW1wbGVSYXRlKCksIGhhcmR3YXJlU2Ft
cGxlUmF0ZSgpKSwKLSAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZXBseShkZXN0aW5hdGlvbklECisgICAgICAg
IE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0
aW5hdGlvbihtX2lucHV0RGV2aWNlSWQsIG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzKCksIHNhbXBsZVJhdGUoKSwgaGFyZHdhcmVTYW1wbGVSYXRlKCkKICNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAgICwgcmVuZGVyU2VtYXBob3JlU2VuZFJpZ2h0
CisgICAgICAgICAgICAsIG1fcmVuZGVyU2VtYXBob3JlCiAjZW5kaWYKLSAgICAgICAgKSwgMCk7
CisgICAgICAgICAgICApLCBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6
OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5KG1fZGVzdGluYXRpb25JRCksIDApOwogCiAg
ICAgaWYgKCFkaWRTdWNjZWVkKSB7CiAgICAgICAgIC8vIFRoZSBHUFVQcm9jZXNzIGxpa2VseSBj
cmFzaGVkIGR1cmluZyB0aGlzIHN5bmNocm9ub3VzIElQQy4gZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25E
aWRDbG9zZSgpIHdpbGwgZ2V0IGNhbGxlZCB0byByZWNvbm5lY3QgdG8gdGhlIEdQVVByb2Nlc3Mu
CkBAIC0xMjgsNyArMTIwLDYgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNv
bm5lY3RUb0dQVVByb2Nlc3MoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9kZXN0
aW5hdGlvbklEID0gZGVzdGluYXRpb25JRDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIG1f
Y3VycmVudEZyYW1lID0gMDsKQEAgLTEzNiw3ICsxMjcsNiBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2VzcygpCiAgICAgZ2V0QXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7CiAgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0
ZShzdHJlYW1Gb3JtYXQsIG1fbnVtYmVyT2ZGcmFtZXMpOwogICAgIG1fYXVkaW9CdWZmZXJMaXN0
ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q+KHN0cmVhbUZvcm1hdCk7
Ci0gICAgbV9yZW5kZXJTZW1hcGhvcmUgPSBtYWtlVW5pcXVlPE1hY2hTZW1hcGhvcmU+KFdURk1v
dmUocmVuZGVyU2VtYXBob3JlU2VuZFJpZ2h0KSk7CiAjZW5kaWYKIAogICAgIHN0YXJ0UmVuZGVy
aW5nVGhyZWFkKCk7CkBAIC0yMDUsOSArMTk1LDcgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHk6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3QK
ICAgICBvbGRDb25uZWN0aW9uLnJlbW92ZUNsaWVudCgqdGhpcyk7CiAKICAgICBzdG9wUmVuZGVy
aW5nVGhyZWFkKCk7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgbV9yZW5kZXJTZW1hcGhvcmUg
PSBudWxscHRyOwotI2VuZGlmCisKICAgICBjb25uZWN0VG9HUFVQcm9jZXNzKCk7CiAKICAgICBp
ZiAoaXNQbGF5aW5nKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaAppbmRleCA4ZDJj
NjNlYjljNTVmYjhiMmFjNTRiYWFkZThmNzNjZTVkNWIxY2M1Li5hZjYzNmZmMzY2NDljMjQwMDYy
MzI0YWFlYWEyMGYxN2QxNTgwZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgK
QEAgLTM4LDYgKzM4LDggQEAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJTaGFyZWRS
aW5nQnVmZmVyU3RvcmFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbkNv
Y29hLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL2NvY29hL01h
Y2hTZW1hcGhvcmUuaD4KICNlbHNlCiAjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9u
R1N0cmVhbWVyLmg+CiAjZW5kaWYKQEAgLTQ3LDExICs0OSw3IEBAIGNsYXNzIENBUmluZ0J1ZmZl
cjsKIGNsYXNzIFdlYkF1ZGlvQnVmZmVyTGlzdDsKIH0KIAotbmFtZXNwYWNlIFdURiB7Ci0jaWYg
UExBVEZPUk0oQ09DT0EpCi1jbGFzcyBNYWNoU2VtYXBob3JlOwotI2VuZGlmCi19CisKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKQEAgLTEwNCw3ICsxMDIsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIHVpbnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVyOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxXVEY6Ok1hY2hTZW1hcGhvcmU+IG1fcmVuZGVyU2VtYXBob3JlOworICAg
IE1hY2hTZW1hcGhvcmUgbV9yZW5kZXJTZW1hcGhvcmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4gbV9hdWRpb0J1ZmZlckxpc3Q7CiAgICAgdWludDY0
X3QgbV9jdXJyZW50RnJhbWUgeyAwIH07CiAgICAgZmxvYXQgbV9zYW1wbGVSYXRlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418991</attachid>
            <date>2021-02-02 06:50:20 -0800</date>
            <delta_ts>2021-02-02 06:59:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220919-20210202165018.patch</filename>
            <type>text/plain</type>
            <size>81333</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU2NGY0YmMyYWMwODE5Yjg2ZjczMGVk
NzdjYjdiYTc4OGEyNjdiNzkuLjllMDFhNWRhMTliODE4MmFmMGFlMDIyNGM4YWE2YjE2NTA0YTEy
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDItMDIgIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNYWNoU2VtYXBob3JlIGRvZXMgbm90IHdvcmsg
d2VsbCB3aXRoIElQQyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwOTE5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MzgyNjg0OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIFdU
Rjo6TWFjaFNlbWFwaG9yZSB0byBXZWJLaXQgSVBDOjpTZW1hcGhvcmUuIEN1cnJlbnRseSB0aGUK
KyAgICAgICAgTWFjaFNlbWFwaG9yZSBpcyB1c2VmdWwgb25seSBpbiBjcm9zcy1wcm9jZXNzIElQ
QywgaW1wbGVtZW50ZWQgYnkgdGhlCisgICAgICAgIElQQzo6LgorCisgICAgICAgICogV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjEtMDItMDIgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gTWlncmF0ZSBX
ZWJLaXRUZXN0U2VydmVyIHRvIGxpYnNvdXAgMi40OCBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYmVhZWUxN2Vi
MDEyY2ExZmI0MGQ5MTE0ZjM4OWViNWM5ZDE5YjAzNS4uODk1OTNiZmEwMmNkODBiZWY3MDMyMDE4
NTczOTBiYWFlMDFjZmMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzcgQEAKKzIwMjEtMDItMDIg
IEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNYWNoU2Vt
YXBob3JlIGRvZXMgbm90IHdvcmsgd2VsbCB3aXRoIElQQyBtZXNzYWdlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwOTE5CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS83MzgyNjg0OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNb3ZlIFdURjo6TWFjaFNlbWFwaG9yZSB0byBXZWJLaXQgSVBDOjpTZW1h
cGhvcmUuIEN1cnJlbnRseSB0aGUKKyAgICAgICAgTWFjaFNlbWFwaG9yZSBpcyB1c2VmdWwgb25s
eSBpbiBjcm9zcy1wcm9jZXNzIElQQywgaW1wbGVtZW50ZWQgYnkgdGhlCisgICAgICAgIElQQzo6
LgorCisgICAgICAgIEFkZHMgYSBzdHViIElQQzo6U2VtYXBob3JlIHRvIGFsbCBub24tQ09DT0Eg
cGxhdGZvcm1zLCBzbyB0aGF0CisgICAgICAgIGNvbnN0cnVjdG9ycyBkbyBub3QgbmVlZCB0byBp
ZmRlZidlZCB0byBiZSBhYmxlIHRvIGNvbXBpbGUgcGxhdGZvcm1zCisgICAgICAgIHRoYXQgZG8g
bm90IHlldCBzdXBwb3J0IEdQVSBwcm9jZXNzIGZ1bGx5LgorCisgICAgICAgIEltcGxlbWVudCBt
b3ZlIGNvbnN0cnVjdG9yIGFuZCBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IgZm9yIFNlbWFwaG9y
ZS4KKyAgICAgICAgTWFrZXMgaXQgcG9zc2libGUgdG8gY3JlYXRlIHR5cGVzIHRoYXQgaG9sZCBT
ZW1hcGhvcmUgYnV0IHN0aWxsIGFyZQorICAgICAgICBkZWNvZGUoKWFibGUgZnJvbSBhIElQQyBt
ZXNzYWdlLiBUaGUgZGVjb2RlZCBvYmplY3RzIGFyZSBoZWxkIHdpdGgKKyAgICAgICAgT3B0aW9u
YWwsIGFuZCB0aGlzIGZvcmNlcyB0aGUgc3Vib2JqZWN0cyB0byBoYXZlIG1vdmUgYXNzaWdubWVu
dAorICAgICAgICBvcGVyYXRvci4KKworICAgICAgICBBZGQgYXNzZXJ0cyB0aGF0IHRoZSBtb3Zl
ZC1hd2F5IG9iamVjdCBpcyBub3QgdXNlZC4gQWRkIHRoZSBhc3NlcnRzIGFzCisgICAgICAgIGFz
c2VydHMgb24gdGhlIGNhbGwgcmV0dXJuIHZhbHVlcywgc28gdGhlIHZhbHVlcyBhcmUgYWxzbyBj
aGVja2VkIG9uCisgICAgICAgIG5vcm1hbCBvYmplY3RzIG9uIG5vcm1hbCBvcGVyYXRpb24uCisK
KyAgICAgICAgSW1wbGVtZW50IGFuIGVuY29kZXIgYW5kIGRlY29kZXIgZm9yIElQQzo6U2VtYXBo
b3JlLiBNYWtlcyBpdCBwb3NzaWJsZQorICAgICAgICB0byBzZW5kIGl0IHZpYSBJUEMgYXMgaXRz
IG93biB0eXBlLCBub3QgYXMgTWFjaFNlbmRSaWdodC4KKworICAgICAgICBBcyBhbiBleGFtcGxl
LCBjaGFuZ2VzIGV4aXN0aW5nIHVzZXMgb2YgTWFjaFNlbmRSaWdodCBmb3Igc2VtYXBob3JlcyBp
bgorICAgICAgICBtZXNzYWdlcyBhcyBTZW1hcGhvcmVzLCBkZXNjcmliZWQgYmVsb3cuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCBhIHJlZmFjdG9yLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZCk6CisgICAgICAgICogR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZl
ckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmg6IFJlbW92ZWQuCisgICAgICAgIENoYW5n
ZXMgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCB0byByZWNlaXZlIGl0cyBwYXJhbWV0ZXJzIGZyb20g
dGhlIG5vcm1hbAorICAgICAgICBtZXNzYWdlIHBhcmFtZXRlcnMgaW5zdGVhZCBvZiByZWR1bmRh
bnQKKyAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy4gVGhl
IElQQyBnZW5lcmF0b3IgYWxyZWFkeQorICAgICAgICBnZW5lcmF0ZXMgMToxIGlkZW50aWNhbCBz
dHJ1Y3R1cmUsIGl0IGlzIGp1c3QgdGhlIG1lc3NhZ2UKKyAgICAgICAgTWVzc2FnZXM6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQuIFRoZXJlIGlzIG5v
CisgICAgICAgIG5lZWQgdG8gZG91YmxlLXdyYXAgdGhlIHNpbXBsZSBsaXN0IG9mIHBhcmFtZXRl
cnMuIFRoZSBkb3VibGUtd3JhcHBpbmcKKyAgICAgICAgaXMgYSBwcm9ibGVtOiBUaGUgbWVzc2Fn
ZSBzeXN0ZW0gcGFyYW1ldGVycyBhcmUgb2Ygb3duZXJzaGlwICJjb25zdAorICAgICAgICByZWZl
cmVuY2UiLCB3aGljaCBpcyB3aGF0IGlzIGV4cGVjdGVkLgorICAgICAgICBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIGNvbnRlbnRzIHdlcmUgb2Ygb3duZXJzaGlwCisg
ICAgICAgICJ2YWx1ZSIsIHdoaWNoIHdvcmtzIGFzIGV4cGVjdGVkIG9ubHkgZm9yIHNpbXBsZSBw
cmltaXRpdmUgdHlwZXMuCisgICAgICAgIEVzc2VudGlhbGx5IHByZXZpb3VzbHkgY2FsbGluZyB0
aGUgSVBDIGZ1bmN0aW9uIG1lYW50IHRyYW5zZmVyaW5nCisgICAgICAgIG9iamVjdHMgdG8gUmVt
b3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy4gVGhpcyBpcyBub3QgaG93IHRo
ZQorICAgICAgICBJUEMgc3lzdGVtIGlzIG1lYW50IHRvIHdvcmsuIFRoZSBpbnRlbnRpb24gb2Yg
YSBJUEMgY2FsbCBpcyB0bywgYnkKKyAgICAgICAgZGVmYXVsdCwgcmVmZXJlbmNlIGl0cyBhcmd1
bWVudHMgZm9yIHRoZSBwdXJwb3NlIG9mIGVuY29kaW5nLgorCisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb246OlJlbW90ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Y3JlYXRlQXVkaW9EZXN0aW5h
dGlvbik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXIubWVzc2FnZXMuaW46CisKKyAgICAgICAgUmVjZWl2ZSB0aGUgc2VtYXBob3Jl
IGZyb20gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LiBQcmV2aW91c2x5CisgICAgICAgIGl0
IHdhcyBjcmVhdGVkIGR1cmluZyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uIGNyZWF0aW9uIGFuZAor
ICAgICAgICBiZSBzZW50IGJhY2sgYnkgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuCisK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2VtYXBob3JlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuY3BwLgorICAgICAgICAoSVBDOjpTZW1hcGhv
cmU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6ZGVjb2RlKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvU2VtYXBob3JlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV1RG
L3d0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmguCisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6b3Bl
cmF0b3IgYm9vbCBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL1NlbWFwaG9y
ZUNvY29hLmNwcDogQWRkZWQuCisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6U2VtYXBob3JlKToK
KyAgICAgICAgKElQQzo6U2VtYXBob3JlOjp+U2VtYXBob3JlKToKKyAgICAgICAgKElQQzo6U2Vt
YXBob3JlOjpvcGVyYXRvcj0pOgorICAgICAgICAoSVBDOjpTZW1hcGhvcmU6OnNpZ25hbCk6Cisg
ICAgICAgIChJUEM6OlNlbWFwaG9yZTo6d2FpdCk6CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6
d2FpdEZvcik6CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6Y3JlYXRlU2VuZFJpZ2h0IGNvbnN0
KToKKyAgICAgICAgKElQQzo6U2VtYXBob3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoSVBD
OjpTZW1hcGhvcmU6OmRlY29kZSk6CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6ZGVzdHJveSk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQv
dGVzdHMvTWFrZWZpbGU6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFy
Z3VtZW50RGVzY3JpcHRpb25zLmNwcDoKKyAgICAgICAgKElQQzo6anNWYWx1ZUZvckFyZ3VtZW50
cyk6CisgICAgICAgIChJUEM6Om1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucyk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcDoKKyAgICAgICAgKElQQzo6
ZGVzY3JpcHRpb24pOgorICAgICAgICAoSVBDOjpyZWNlaXZlck5hbWUpOgorICAgICAgICAoSVBD
Ojppc1ZhbGlkTWVzc2FnZU5hbWUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL01l
c3NhZ2VOYW1lcy5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFj
aFNlbWFwaG9yZS5tZXNzYWdlcy5pbjogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4uCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZVJlY2VpdmVyLmNw
cDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2Vt
YXBob3JlTWVzc2FnZXMuaDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMv
VGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAq
IFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNzKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHk6OnN0YXJ0UmVuZGVyaW5nVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5OjpzdG9wUmVuZGVyaW5nVGhyZWFkKToKKyAgICAgICAgQ2hhbmdlIHRo
ZSBzZW1hcGhvcmUgdXNhZ2UgZnJvbSB1bmlxdWVfcHRyIHRvIHRoZSBub3JtYWwKKyAgICAgICAg
b2JqZWN0IGFjY2Vzcy4gVGhlIHNlbWFwaG9yZSBpcyBub3cgY3JlYXRlZCBieSB0aGUgcHJveHks
CisgICAgICAgIHNvIHRoZXJlIGlzIG5vIHVuaXF1ZV9wdHIuCisKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpncHVQcm9jZXNzQ29ubmVj
dGlvbkRpZENsb3NlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHkuaDoKKworICAgICAgICBDaGFuZ2VzIFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25Qcm94eSB0byBzZW5kIGl0cyBvd24gc2VtYXBob3JlIGZyb20KKyAgICAgICAgV2ViUHJv
Y2VzcyB0byBHUFVQcm9jZXNzLiBQcmV2aW91c2x5IHRoZSBzZW1hcGhvcmUgd291bGQgYmUgc2Vu
dCBiYWNrIGJ5CisgICAgICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLiBQcmV2aW91
c2x5IHRoZSBjb2RlIHN0cnVjdHVyZSBpcyBtb3JlCisgICAgICAgIGNvbXBsaWNhdGVkIHRoYW4g
bmVjY2Vzc2FyeSwgYXMgdGhlIHNlbWFwaG9yZSBob2xkZXIgd2FzIGJlaW5nCisgICAgICAgIG51
bGwtY2hlY2tlZCwgcmVzZXQgYW5kIHJlLXNlYXRlZC4gVGhlIFdlYlByb2Nlc3MgZ2V0cyBhbHJl
YWR5IHRvIGNob29zZQorICAgICAgICB0aGUgc2VtYXBob3JlcyBHUFVQcm9jZXNzIHVzZXMsIHNv
IHRoaXMgc2hvdWxkIG5vdCBpbmNyZWFzZSBzZWN1cml0eQorICAgICAgICBzdXJmYWNlLiBUaGUg
Y2hhbmdlIGNob3NlbiBoZXJlIHNpZGUtc3RlcHMgdGhlIHNob3J0Y29taW5nIG9mIHRoZSBJUEMK
KyAgICAgICAgc3lzdGVtIHdoZXJlIHVucGFja2luZyBvYmplY3RzIGZyb20gdGhlIFJlcGx5IG1l
c3NhZ2VzIG1hbmRhdGVzIHRoYXQgYQorICAgICAgICBjb25zdHJ1Y3RlZCB2ZXJzaW9uIG9mIHRo
YXQgdHlwZSBleGlzdHMuIEZvciBwcmV2aW91cyBNYWNoU2VuZFJpZ2h0CisgICAgICAgIGVtcHR5
LWNvbnN0cnVjdGVkIG9iamVjdCBpcyBzaW1wbGUsIGJ1dCBmb3IgTWFjaFNlbWFwaG9yZQorICAg
ICAgICBlbXB0eS1jb25zdHJ1Y3RlZCBvYmplY3QgY3JlYXRlcyB1bm5lY2Vzc2FyeSBjb21wbGlj
YXRpb24gdGhhdCBpcyBub3QKKyAgICAgICAgcmVxdWlyZWQgb3RoZXJ3aXNlIGF0IHRoZSBtb21l
bnQuIFRoZSBhbHRlcm5hdGl2ZSB0byB3aGF0IHdhcyBjaG9zZW4KKyAgICAgICAgaGVyZSB3b3Vs
ZCBiZSB0byBob2xkIHdpdGggT3B0aW9uYWw8TWFjaFNlbWFwaG9yZT4gYW5kIGFkZCBhCisgICAg
ICAgIGVtcHR5LWluaXRpYWxpemluZyBjb25zdHJ1Y3RvciB0byBob2xkIHRoZSBvYmplY3Qgd2hl
cmUgdG8gdW5wYWNrIHRoZQorICAgICAgICBzZW1hcGhvcmUgb2JqZWN0IGZyb20gdGhlIFJlcGx5
LgorCiAyMDIxLTAyLTAyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVc2UgV2ViUlRDIEdQVSBwcm9jZXNzIGZsYWcgZm9yIE1lZGlhUmVjb3JkZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRhNGRmZWIxZWY4Mzg1NTY0
ZDNhOWJjNDAwZjQ2Mjg4M2QwYzM1YWQuLjI2YjQ1ZTU1M2IwNjdlMjQwMzI3Y2M4ODY3ZWM3Yzhj
ODE0NjdlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NjgsNyArNjgsNiBAQAogCQkzMzM3REI5Q0U3NDM0MTBGQUYwNzZFMTcgLyogU3RhY2tUcmFjZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTNFREVD
OTc3OEU0OUM5QkVBOTFDRkMgLyogU3RhY2tUcmFjZS5jcHAgKi87IH07CiAJCTQ0MjdDNUFBMjFG
NkQ2QzMwMEE2MTJBNCAvKiBBU0NJSUNUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MjdDNUE5MjFGNkQ2QzMwMEE2MTJBNCAvKiBBU0NJSUNU
eXBlLmNwcCAqLzsgfTsKIAkJNDZCRUI2RUIyMkZGRTI0OTAwMjY5ODY3IC8qIFJlZkNvdW50ZWQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRUI2
RTkyMkZGRERENTAwMjY5ODY3IC8qIFJlZkNvdW50ZWQuY3BwICovOyB9OwotCQk0NkNCNkIzRDI1
OEFEOTNGMDA2MzMzQjMgLyogTWFjaFNlbWFwaG9yZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJBQTlDODI1OEFENUE1MDA3OTU4NzcgLyogTWFj
aFNlbWFwaG9yZS5jcHAgKi87IH07CiAJCTUwREUzNUY1MjE1QkIwMTUwMEI5NzlDNyAvKiBFeHRl
cm5hbFN0cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTBERTM1RjMyMTVCQjAxNTAwQjk3OUM3IC8qIEV4dGVybmFsU3RyaW5nSW1wbC5j
cHAgKi87IH07CiAJCTUxNUY3OTRFMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZENvcGll
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVG
Nzk0QjFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwICovOyB9OwogCQk1
MTdGODJENzFGRDIyRjMwMDBEQTNERUEgLyogQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdGODJENTFGRDIy
RjJGMDBEQTNERUEgLyogQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAgKi87IH07CkBAIC0zNzgs
OCArMzc3LDYgQEAKIAkJNDQyN0M1QTkyMUY2RDZDMzAwQTYxMkE0IC8qIEFTQ0lJQ1R5cGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVNDSUlDVHlwZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Njg1NjcyMjUwOTRGRTgwMDhDQ0EwNSAvKiBU
aHJlYWRTYW5pdGl6ZXJTdXBwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRocmVhZFNhbml0aXplclN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZCQTlFQUIxRjRDRDYxRTAwOUEyQkJDIC8qIENvbXBsZXRpb25IYW5kbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBsZXRpb25IYW5kbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTQ2QkFBOUM4MjU4QUQ1QTUwMDc5NTg3NyAvKiBNYWNoU2VtYXBo
b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hY2hTZW1hcGhv
cmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NkJBQTlDOTI1OEFENUE1MDA3
OTU4NzcgLyogTWFjaFNlbWFwaG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNYWNoU2VtYXBob3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QkVCNkU5
MjJGRkRERDUwMDI2OTg2NyAvKiBSZWZDb3VudGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
ZkNvdW50ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MERFMzVGMzIxNUJC
MDE1MDBCOTc5QzcgLyogRXh0ZXJuYWxTdHJpbmdJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEV4dGVybmFsU3RyaW5nSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUwREUzNUY0MjE1QkIwMTUwMEI5NzlDNyAvKiBFeHRlcm5hbFN0cmlu
Z0ltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0ZXJuYWxTdHJpbmdJ
bXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTQ4LDggKzE1NDUsNiBAQAog
CQkJCTE0M0RERTk1MjBDOEJDMzcwMDdGNzZGQSAvKiBFbnRpdGxlbWVudHMubW0gKi8sCiAJCQkJ
QTMzMUQ5NUUyMUYyNDlGNjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1Db2NvYS5tbSAqLywKIAkJCQkx
QzUwM0JFNTIzQUFFMEFFMDA3MkU2NkIgLyogTGFuZ3VhZ2VDb2NvYS5tbSAqLywKLQkJCQk0NkJB
QTlDODI1OEFENUE1MDA3OTU4NzcgLyogTWFjaFNlbWFwaG9yZS5jcHAgKi8sCi0JCQkJNDZCQUE5
QzkyNThBRDVBNTAwNzk1ODc3IC8qIE1hY2hTZW1hcGhvcmUuaCAqLywKIAkJCQk3QTZFQkEzMzIw
NzQ2QzM0MDA0RjlDNDQgLyogTWFjaFNlbmRSaWdodC5jcHAgKi8sCiAJCQkJQThBNDcyQzUxNTFB
ODI1QTAwNDEyM0ZGIC8qIE1haW5UaHJlYWRDb2NvYS5tbSAqLywKIAkJCQlBREYyQ0U2NTFFMzlG
MTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwICovLApAQCAtMTcwOCw3ICsx
NzAzLDYgQEAKIAkJCQkwRjYwRjMyRjFERkNCRDFCMDA0MTZENkMgLyogTG9ja2VkUHJpbnRTdHJl
YW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNCNUI0NTEyMjE3MUVFQTAwNEI3QUE3IC8qIExv
Z2dlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzUzNEYyQTFFQzBFMTBFMDAxNDFCMkYgLyog
TWFjaEV4Y2VwdGlvbnMuZGVmcyBpbiBTb3VyY2VzICovLAotCQkJCTQ2Q0I2QjNEMjU4QUQ5M0Yw
MDYzMzNCMyAvKiBNYWNoU2VtYXBob3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBNkVCQTM0
MjA3NDZDMzQwMDRGOUM0NCAvKiBNYWNoU2VuZFJpZ2h0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4QTQ3M0U1MTUxQTgyNUIwMDQxMjNGRiAvKiBNYWluVGhyZWFkLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4QTQ3M0U0MTUxQTgyNUIwMDQxMjNGRiAvKiBNYWluVGhyZWFkQ29jb2EubW0gaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhv
cmUuY3BwIGIvU291cmNlL1dURi93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyZmNmMTVjMDdkOTI0YTQ1MDc5MzdmZDIzMDQ1NzJjNGRi
YmI5NjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dURi93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk1h
Y2hTZW1hcGhvcmUuaCIKLQotI2luY2x1ZGUgPG1hY2gvbWFjaC5oPgotCi1uYW1lc3BhY2UgV1RG
IHsKLQotTWFjaFNlbWFwaG9yZTo6TWFjaFNlbWFwaG9yZSgpCi17Ci0gICAgYXV0byByZXQgPSBz
ZW1hcGhvcmVfY3JlYXRlKG1hY2hfdGFza19zZWxmKCksICZtX3NlbWFwaG9yZSwgU1lOQ19QT0xJ
Q1lfRklGTywgMCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXQsIHJldCA9PSBLRVJOX1NVQ0NFU1Mp
OwotfQotCi1NYWNoU2VtYXBob3JlOjpNYWNoU2VtYXBob3JlKE1hY2hTZW5kUmlnaHQmJiBzZW5k
UmlnaHQpCi0gICAgOiBtX3NlbmRSaWdodChXVEZNb3ZlKHNlbmRSaWdodCkpCi0gICAgLCBtX3Nl
bWFwaG9yZShtX3NlbmRSaWdodC5zZW5kUmlnaHQoKSkKLXsKLSAgICBBU1NFUlQobV9zZW5kUmln
aHQpOwotfQotCi1NYWNoU2VtYXBob3JlOjp+TWFjaFNlbWFwaG9yZSgpCi17Ci0gICAgaWYgKCFt
X3NlbmRSaWdodCkKLSAgICAgICAgc2VtYXBob3JlX2Rlc3Ryb3kobWFjaF90YXNrX3NlbGYoKSwg
bV9zZW1hcGhvcmUpOwotfQotCi12b2lkIE1hY2hTZW1hcGhvcmU6OnNpZ25hbCgpCi17Ci0gICAg
c2VtYXBob3JlX3NpZ25hbChtX3NlbWFwaG9yZSk7Ci19Ci0KLXZvaWQgTWFjaFNlbWFwaG9yZTo6
d2FpdCgpCi17Ci0gICAgc2VtYXBob3JlX3dhaXQobV9zZW1hcGhvcmUpOwotfQotCi12b2lkIE1h
Y2hTZW1hcGhvcmU6OndhaXRGb3IoU2Vjb25kcyB0aW1lb3V0KQotewotICAgIGF1dG8gc2Vjb25k
cyA9IHRpbWVvdXQuc2Vjb25kc0FzPHVuc2lnbmVkPigpOwotICAgIHNlbWFwaG9yZV90aW1lZHdh
aXQobV9zZW1hcGhvcmUsIHsgc2Vjb25kcywgc3RhdGljX2Nhc3Q8Y2xvY2tfcmVzX3Q+KHRpbWVv
dXQubmFub3NlY29uZHNBczx1aW50NjRfdD4oKSAtIHNlY29uZHMgKiBOU0VDX1BFUl9TRUMpIH0p
OwotfQotCi1NYWNoU2VuZFJpZ2h0IE1hY2hTZW1hcGhvcmU6OmNyZWF0ZVNlbmRSaWdodCgpCi17
Ci0gICAgcmV0dXJuIE1hY2hTZW5kUmlnaHQ6OmNyZWF0ZShtX3NlbWFwaG9yZSk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvTWFjaFNl
bWFwaG9yZS5oIGIvU291cmNlL1dURi93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTdjZWEwNDZiODEyY2JjM2ViM2E3MjEzMGQ5YTViYTAw
OTNmOTJmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDU2
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPG1hY2gvc2Vt
YXBob3JlLmg+Ci0jaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KLSNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgotCi1uYW1lc3BhY2UgV1RG
IHsKLQotY2xhc3MgTWFjaFNlbWFwaG9yZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFjaFNlbWFwaG9yZSk7Ci1wdWJsaWM6Ci0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIE1hY2hTZW1hcGhvcmUoKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgZXhwbGljaXQgTWFjaFNlbWFwaG9yZShNYWNoU2VuZFJpZ2h0JiYpOwotICAgIFdURl9FWFBP
UlRfUFJJVkFURSB+TWFjaFNlbWFwaG9yZSgpOwotCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgc2lnbmFsKCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgd2FpdCgpOwotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIHdhaXRGb3IoU2Vjb25kcyk7Ci0KLSAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgTWFjaFNlbmRSaWdodCBjcmVhdGVTZW5kUmlnaHQoKTsKLQotcHJpdmF0ZToKLSAg
ICBNYWNoU2VuZFJpZ2h0IG1fc2VuZFJpZ2h0OwotICAgIHNlbWFwaG9yZV90IG1fc2VtYXBob3Jl
IHsgU0VNQVBIT1JFX05VTEwgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBX
VEY6Ok1hY2hTZW1hcGhvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggOTAwNTY2OTRhNTMwMGRjM2E4YmZk
ZDFlZTMwZWMxNmJkOGViZGVhOC4uODI3OGJjZTE0YzVmMWMyNGJlN2M5MDIyZDVmZDQwYjI0YzU4
ZWZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNDgsNyArNDgsNiBAQAogI2luY2x1ZGUgIlJlbW90ZU1l
ZGlhUmVzb3VyY2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCIKLSNpbmNs
dWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVk
ZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCkBAIC0yOTEsMTAgKzI5
MCwxMCBAQCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6YXVkaW9TZXNzaW9uUHJveHkoKQogfQogI2VuZGlmCiAKLXZvaWQgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Q3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3Jl
KQogewotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVu
c3VyZShwYXJhbWV0ZXJzLmlkZW50aWZpZXIsIFsmXSgpIHsKLSAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+KFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOworICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShpZGVudGlmaWVyLCBbJl0o
KSB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFw
cGVyPihSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdU
Rk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKSk7CiAgICAgfSk7CiAgICAgQVNTRVJU
X1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4
IDQ0MThjYTZhZWEyYTQwOGUzNzc1Mzg5MGUxZDMwZGRlYzc2ZWM3Y2EuLjdiYWRkMzc3NjljZjUy
ZmQ1NDBiNGZiNzc3ZDA4ODc0NjYwNGY1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNjUsNyArNjUsNiBAQCBj
bGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDsKIGNsYXNzIFJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXI7CiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Owog
c3RydWN0IFJlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRpb247Ci1zdHJ1Y3QgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcwogICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+CkBAIC0xMjcsNyAr
MTI2LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2VuZGlmCiAKLSAgICB2b2lkIGNyZWF0ZVJlbmRl
cmluZ0JhY2tlbmQoUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsK
KyAgICB2b2lkIGNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIsIElQQzo6U2VtYXBob3JlJiYgcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpOwogICAgIHZv
aWQgcmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwog
CiAjaWYgRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAwY2Jj
NWQ4Nzk4M2U2NjZlNDhlODM5YTY0NjQ4OTg3OTUwYTM5MmJmLi45NTQ3MTBhMzQwZDJmNThkYTli
NWU5NTdjYmMzNGQ1ZTVhZmQ5ODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
MjMsNyArMjMsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBXYW50c0Rpc3BhdGNoTWVzc2FnZSB7Ci0gICAgdm9pZCBD
cmVhdGVSZW5kZXJpbmdCYWNrZW5kKHN0cnVjdCBXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVycykKKyAgICB2b2lkIENyZWF0ZVJlbmRlcmlu
Z0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyLCBJ
UEM6OlNlbWFwaG9yZSByZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkKICAgICB2b2lkIFJlbGVh
c2VSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHZvaWQgQ3Jl
YXRlR3JhcGhpY3NDb250ZXh0R0woc3RydWN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXgg
MzJhZmQzMTBiZTVjMzAzMDY0N2Q3MjU4YzIzZmRhMDEwMmIyZDc3NS4uMDNkMTYyZmRkMTFiMzVl
MjYyMGQyMmMxOTg0MjQ5ODg3OWJiNDU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAt
MzMsMTYgKzMzLDEzIEBACiAjaW5jbHVkZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oIgog
I2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5oIgotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRD
cmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIlNlbWFwaG9yZS5oIgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtR
dWV1ZS5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSA8d3RmL2NvY29hL01hY2hT
ZW1hcGhvcmUuaD4KLSNlbmRpZgogCiAjZGVmaW5lIFRFUk1JTkFURV9XRUJfUFJPQ0VTU19XSVRI
X01FU1NBR0UobWVzc2FnZSkgXAogICAgIFJFTEVBU0VfTE9HX0ZBVUxUKElQQywgIlJlcXVlc3Rp
bmcgdGVybWluYXRpb24gb2Ygd2ViIHByb2Nlc3MgJSIgUFJJdTY0ICIgZm9yIHJlYXNvbjogJSIg
UFVCTElDX0xPR19TVFJJTkcsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+d2ViUHJvY2Vz
c0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjbWVzc2FnZSk7IFwKQEAgLTY1LDE4ICs2MiwxNiBA
QAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmPFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZShHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK1JlZjxSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIgaWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJiByZXN1bWVEaXNw
bGF5TGlzdFNlbWFwaG9yZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVy
cykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKGdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGlkZW50aWZpZXIsIFdURk1vdmUocmVzdW1lRGlzcGxh
eUxpc3RTZW1hcGhvcmUpKSk7CiB9CiAKLVJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcywgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIHBh
cmFtZXRlcnMpCitSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2VtYXBob3JlJiYgcmVz
dW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpCiAgICAgOiBtX3dvcmtRdWV1ZShXb3JrUXVldWU6OmNy
ZWF0ZSgiUmVtb3RlUmVuZGVyaW5nQmFja2VuZCB3b3JrIHF1ZXVlIiwgV29ya1F1ZXVlOjpUeXBl
OjpTZXJpYWwsIFdvcmtRdWV1ZTo6UU9TOjpVc2VySW50ZXJhY3RpdmUpKQogICAgICwgbV9ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCi0gICAgLCBt
X3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKHBhcmFtZXRlcnMuaWRlbnRpZmllcikKLSNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICAsIG1fcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUobWFrZVVu
aXF1ZTxNYWNoU2VtYXBob3JlPihXVEZNb3ZlKHBhcmFtZXRlcnMuc2VuZFJpZ2h0Rm9yUmVzdW1l
RGlzcGxheUxpc3RTZW1hcGhvcmUpKSkKLSNlbmRpZgorICAgICwgbV9yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9y
ZShXVEZNb3ZlKHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKSkKIHsKICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwogICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlv
bigpLmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dvcmtRdWV1ZSwgdGhpcywgbV9yZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKQEAgLTIzMSw3ICsyMjYsNyBAQCBS
ZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om5leHREZXN0aW5hdGlv
bkltYWdlQnVmZmVyQWZ0ZXJBcHBseQogCiAgICAgICAgICAgICBoYW5kbGUuc3RhcnRXYWl0aW5n
KCk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgICAgICBtX3Jlc3VtZURpc3BsYXlMaXN0
U2VtYXBob3JlLT53YWl0Rm9yKDMwX3VzKTsKKyAgICAgICAgICAgIG1fcmVzdW1lRGlzcGxheUxp
c3RTZW1hcGhvcmUud2FpdEZvcigzMF91cyk7CiAjZWxzZQogICAgICAgICAgICAgc2xlZXAoMzBf
dXMpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBlNjM4OTkwM2I2NTBiYThkOTcz
ZGFmOWIzZGNjYTY0NTM1NmY0NWY4Li41MThhNmFhYWZjMjg4ZGUzOGZiZTAwZmZlYjIwYjg2ZjQw
YzYyNzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTM1LDE3ICszNSwxMyBAQAogI2luY2x1
ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlLmgiCiAj
aW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTZW1hcGhv
cmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0Rpc3BsYXlMaXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJlcGxheWVyLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBN
YWNoU2VtYXBob3JlOwotfQotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFj
ZSBEaXNwbGF5TGlzdCB7CkBAIC02MiwxNCArNTgsMTQgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlOwogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzczsKLXN0cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
OwogCiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kCiAgICAgOiBwcml2YXRlIElQQzo6TWVz
c2FnZVNlbmRlcgogICAgICwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyCiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJS
ZWFkaW5nQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKKworICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZD4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJiByZXN1bWVEaXNwbGF5TGlzdFNl
bWFwaG9yZSk7CiAgICAgdmlydHVhbCB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpOwogCiAgICAg
UmVtb3RlUmVzb3VyY2VDYWNoZSYgcmVtb3RlUmVzb3VyY2VDYWNoZSgpIHsgcmV0dXJuIG1fcmVt
b3RlUmVzb3VyY2VDYWNoZTsgfQpAQCAtODYsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aXNjb25uZWN0KCk7CiAKIHByaXZhdGU6Ci0gICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFy
YW1ldGVycyYmKTsKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJik7
CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9V
TlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlv
bikgb3ZlcnJpZGU7CiAKQEAgLTE0OCw5ICsxNDQsNyBAQCBwcml2YXRlOgogICAgIFJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI7CiAgICAgSGFz
aE1hcDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIFJlZlB0cjxE
aXNwbGF5TGlzdFJlYWRlckhhbmRsZT4+IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzOwogICAg
IE9wdGlvbmFsPFBlbmRpbmdXYWtldXBJbmZvcm1hdGlvbj4gbV9wZW5kaW5nV2FrZXVwSW5mbzsK
LSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpNYWNoU2VtYXBo
b3JlPiBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOwotI2VuZGlmCisgICAgSVBDOjpTZW1h
cGhvcmUgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAKaW5kZXggMGY4NDA3YzFmM2Rj
Nzg3YjUwZTliZjYwOTkxYWVlN2NiNDEwYjRmYS4uY2FmOTMwZGQzY2Y1NWQ2MWNhNTg2MmUzYTNj
NDU2NWY5OTI0Nzg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCkBAIC0yOSw5
ICsyOSw5IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCX0FVRElPKQog
CiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlNlbWFw
aG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9VdGlsaXRpZXMuaD4KICNpbmNsdWRlIDx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlT
ZW1hcGhvcmUuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIlNoYXJlZFJpbmdC
dWZmZXJTdG9yYWdlLmgiCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DQUF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQXVkaW9CdWZmZXJMaXN0Lmg+Ci0jaW5jbHVkZSA8d3Rm
L2NvY29hL01hY2hTZW1hcGhvcmUuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTUyLDkgKzUxLDkgQEAgY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbgogewogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4gY3JlYXRlKEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlm
aWVyIGlkZW50aWZpZXIsCi0gICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWlu
dDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUpCisgICAgICAg
IGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5u
ZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBm
bG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIElQQzo6U2VtYXBob3JlJiYgcmVuZGVyU2VtYXBob3Jl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbihjb25uZWN0aW9uLCBpZGVudGlmaWVyLCBpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0
Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIGhhcmR3YXJlU2Ft
cGxlUmF0ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uKGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5w
dXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVT
YW1wbGVSYXRlLCBXVEZNb3ZlKHJlbmRlclNlbWFwaG9yZSkpKTsKICAgICB9CiAKICAgICB2aXJ0
dWFsIH5SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKCkgPSBkZWZhdWx0OwpAQCAtNjgsOCArNjcsNiBA
QCBwdWJsaWM6CiAgICAgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgTWFjaFNlbmRSaWdo
dCBjcmVhdGVSZW5kZXJTZW1hcGhvcmVTZW5kUmlnaHQoKSB7IHJldHVybiBtX3JlbmRlclNlbWFw
aG9yZS5jcmVhdGVTZW5kUmlnaHQoKTsgfQotCiAgICAgdm9pZCBhdWRpb1NhbXBsZXNTdG9yYWdl
Q2hhbmdlZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaXBjSGFuZGxlLCBjb25zdCBX
ZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBu
dW1iZXJPZkZyYW1lcykKICAgICB7CiAgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWVS
ZWY8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFJlYWRPbmx5U2hhcmVkUmlu
Z0J1ZmZlclN0b3JhZ2U+KGlwY0hhbmRsZS5oYW5kbGUpLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZG
cmFtZXMpOwpAQCAtMTA0LDEyICsxMDEsMTMgQEAgcHVibGljOgogICAgIGJvb2wgaXNQbGF5aW5n
KCkgY29uc3QgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KIAogcHJpdmF0ZToKLSAgICBSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNl
SWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlKQor
ICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
aW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNh
bXBsZVJhdGUsIElQQzo6U2VtYXBob3JlJiYgcmVuZGVyU2VtYXBob3JlKQogICAgICAgICA6IG1f
aWQoaWRlbnRpZmllcikKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgLCBtX2F1ZGlvT3V0
cHV0VW5pdEFkYXB0b3IoKnRoaXMpCiAgICAgICAgICwgbV9yaW5nQnVmZmVyKG1ha2VVbmlxdWVS
ZWY8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPigpKQogI2VuZGlmCisgICAgICAgICwgbV9yZW5kZXJT
ZW1hcGhvcmUoV1RGTW92ZShyZW5kZXJTZW1hcGhvcmUpKQogICAgIHsKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICAgICAgbV9hdWRpb091dHB1dFVuaXRBZGFwdG9yLmNvbmZpZ3VyZShoYXJkd2Fy
ZVNhbXBsZVJhdGUsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwpAQCAtMTQ4LDkgKzE0Niw5IEBA
IHByaXZhdGU6CiAgICAgV2ViQ29yZTo6QXVkaW9PdXRwdXRVbml0QWRhcHRvciBtX2F1ZGlvT3V0
cHV0VW5pdEFkYXB0b3I7CiAKICAgICBVbmlxdWVSZWY8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPiBt
X3JpbmdCdWZmZXI7Ci0gICAgTWFjaFNlbWFwaG9yZSBtX3JlbmRlclNlbWFwaG9yZTsKICAgICB1
aW50NjRfdCBtX3N0YXJ0RnJhbWUgeyAwIH07CiAjZW5kaWYKKyAgICBJUEM6OlNlbWFwaG9yZSBt
X3JlbmRlclNlbWFwaG9yZTsKIAogICAgIGJvb2wgbV9pc1BsYXlpbmcgeyBmYWxzZSB9OwogfTsK
QEAgLTE2MiwxNiArMTYwLDEyIEBAIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcihHUFVDb25uZWN0aW9uVG9XZWJQCiAKIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjp+UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoKSA9
IGRlZmF1bHQ7CiAKLXZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmNyZWF0ZUF1
ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1i
ZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0
IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwgQ3JlYXRpb25Db21wbGV0aW9u
SGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlcjo6Y3JlYXRlQXVkaW9EZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNl
SWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCBJ
UEM6OlNlbWFwaG9yZSYmIHJlbmRlclNlbWFwaG9yZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIG5ld0lEID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpOwotICAgIGF1dG8gZGVzdGluYXRpb24gPSBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUobV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LCBuZXdJRCwgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91
dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlLCBoYXJkd2FyZVNhbXBsZVJhdGUpOworICAgIGF1dG8g
ZGVzdGluYXRpb24gPSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUobV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLCBuZXdJRCwgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5u
ZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlLCBoYXJkd2FyZVNhbXBsZVJh
dGUsIFdURk1vdmUocmVuZGVyU2VtYXBob3JlKSk7CiAgICAgbV9hdWRpb0Rlc3RpbmF0aW9ucy5h
ZGQobmV3SUQsIGRlc3RpbmF0aW9uLmNvcHlSZWYoKSk7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgY29tcGxldGlvbkhhbmRsZXIobmV3SUQsIGRlc3RpbmF0aW9uLT5jcmVhdGVSZW5kZXJTZW1h
cGhvcmVTZW5kUmlnaHQoKSk7Ci0jZWxzZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ld0lEKTsK
LSNlbmRpZgogfQogCiB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpkZWxldGVB
dWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyLmgKaW5kZXggYjgzZjI5ZjhkYzEzM2ExYTJjM2E4NzRiYTczM2I1
ODBiMjZlNzYyZC4uMWQwNmQ5OGYxODcwYmY3MTNhODQ4NDUwMGJkODk0YWEwMzJkMTQ5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIlNlbWFwaG9yZS5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgog
I2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KQEAg
LTM4LDEwICszOSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQUF1ZGlvU3RyZWFt
RGVzY3JpcHRpb247CiB9Ci0KLW5hbWVzcGFjZSBXVEYgewotY2xhc3MgTWFjaFNlbmRSaWdodDsK
LX0KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYzLDEyICs2MCw4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwogCi0jaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgdXNpbmcgQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlciA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIFdU
Rjo6TWFjaFNlbmRSaWdodCk+OwotI2Vsc2UKLSAgICB1c2luZyBDcmVhdGlvbkNvbXBsZXRpb25I
YW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRl
bnRpZmllcik+OwotI2VuZGlmCi0gICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0
IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1
aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBo
YXJkd2FyZVNhbXBsZVJhdGUsIENyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdm9p
ZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWlu
dDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIElQQzo6U2Vt
YXBob3JlJiYgcmVuZGVyU2VtYXBob3JlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdl
YktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIpPiYmKTsKKwogICAgIHZvaWQg
ZGVsZXRlQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHN0YXJ0QXVkaW9EZXN0aW5h
dGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzdG9wQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggNTU3
ODk4NDZkNzRkODU3NGJiZGExYWJkZjI3MThiZDNiYTViYzRlNC4uN2ZkMjIyOGRkMzA4NDc3ZmFk
ZjY5ZDQ3MGQ1ZmQ1ZTFjOTkxYjRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlci5tZXNzYWdlcy5pbgpAQCAtMjQsMTIgKzI0LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShXRUJfQVVESU8pCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIENy
ZWF0ZUF1ZGlvRGVzdGluYXRpb24oU3RyaW5nIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJl
ck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQg
c2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlKSAtPiAoV2ViS2l0OjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBNYWNoU2VuZFJpZ2h0IHJlbmRl
clNlbWFwaG9yZVNlbmRSaWdodCkgU3luY2hyb25vdXMKLSNlbmRpZgotI2lmICFQTEFURk9STShD
T0NPQSkKLSAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKFN0cmluZyBpbnB1dERldmljZUlkLCB1
aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hh
bm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkgLT4gKFdl
YktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgU3luY2hy
b25vdXMKLSNlbmRpZgorICAgIENyZWF0ZUF1ZGlvRGVzdGluYXRpb24oU3RyaW5nIGlucHV0RGV2
aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRl
LCBJUEM6OlNlbWFwaG9yZSByZW5kZXJTZW1hcGhvcmUpIC0+IChXZWJLaXQ6OlJlbW90ZUF1ZGlv
RGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIFN5bmNocm9ub3VzCiAKICAgICBEZWxl
dGVBdWRpb0Rlc3RpbmF0aW9uKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZp
ZXIgaWRlbnRpZmllcikgLT4gKCkgQXN5bmMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2VtYXBob3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1Nl
bWFwaG9yZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODE4NGFiZTJmMGNlZjgxNWMwMDlkYjU0NjFlZGE1MmEz
MTE0MDNkOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1Nl
bWFwaG9yZS5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJTZW1hcGhvcmUuaCIKKworI2lmICFQTEFURk9STShDT0NPQSkKKwor
bmFtZXNwYWNlIElQQyB7CisKK1NlbWFwaG9yZTo6U2VtYXBob3JlKCkgPSBkZWZhdWx0OworCitT
ZW1hcGhvcmU6OlNlbWFwaG9yZShTZW1hcGhvcmUmJikgPSBkZWZhdWx0OworCitTZW1hcGhvcmU6
On5TZW1hcGhvcmUoKSA9IGRlZmF1bHQ7CisKK1NlbWFwaG9yZSYgU2VtYXBob3JlOjpvcGVyYXRv
cj0oU2VtYXBob3JlJiYpID0gZGVmYXVsdDsKKwordm9pZCBTZW1hcGhvcmU6OmVuY29kZShFbmNv
ZGVyJikgY29uc3QgeyB9CisKK09wdGlvbmFsPFNlbWFwaG9yZT4gU2VtYXBob3JlOjpkZWNvZGUo
RGVjb2RlciYpCit7CisgICAgcmV0dXJuIE9wdGlvbmFsPFNlbWFwaG9yZT4geyBzdGQ6OmluX3Bs
YWNlX3QgfTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NlbWFwaG9yZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2VtYXBo
b3JlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjk4OTdkNjRlYTAzYWE3YWI0ZTczODI5Y2RmOWJkY2NkMjVhNjU1
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NlbWFwaG9y
ZS5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1
ZGUgPHd0Zi9TZWNvbmRzLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxtYWNo
L3NlbWFwaG9yZS5oPgorI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CisjZW5kaWYKKwor
bmFtZXNwYWNlIElQQyB7CitjbGFzcyBEZWNvZGVyOworY2xhc3MgRW5jb2RlcjsKK2NsYXNzIFNl
bWFwaG9yZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoU2VtYXBob3JlKTsKK3B1YmxpYzoKKyAgICBTZW1hcGhvcmUoKTsKKyAgICBTZW1h
cGhvcmUoU2VtYXBob3JlJiYpOworICAgIH5TZW1hcGhvcmUoKTsKKyAgICBTZW1hcGhvcmUmIG9w
ZXJhdG9yPShTZW1hcGhvcmUmJik7CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owor
ICAgIHN0YXRpYyBPcHRpb25hbDxTZW1hcGhvcmU+IGRlY29kZShEZWNvZGVyJik7CisKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICB2b2lkIHNpZ25hbCgpOworICAgIHZvaWQgd2FpdCgpOworICAg
IHZvaWQgd2FpdEZvcihTZWNvbmRzKTsKKyAgICBleHBsaWNpdCBTZW1hcGhvcmUoTWFjaFNlbmRS
aWdodCYmKTsKKyAgICBNYWNoU2VuZFJpZ2h0IGNyZWF0ZVNlbmRSaWdodCgpIGNvbnN0OworICAg
IGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3NlbmRSaWdodCB8fCBt
X3NlbWFwaG9yZSAhPSBTRU1BUEhPUkVfTlVMTDsgfQorI2Vsc2UKKyAgICBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorI2VuZGlmCisKK3ByaXZhdGU6Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBkZXN0cm95KCk7CisgICAgTWFjaFNlbmRSaWdo
dCBtX3NlbmRSaWdodDsKKyAgICBzZW1hcGhvcmVfdCBtX3NlbWFwaG9yZSB7IFNFTUFQSE9SRV9O
VUxMIH07CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvU2VtYXBob3JlQ29jb2EuY3BwIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvU2VtYXBob3JlQ29jb2EuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmY0MjgwN2UxMWI4MTQ0ZTQ3NTk1N2ZjNGUwMzQ4YjM5NTQ2NTFlYWMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9TZW1hcGhvcmVDb2NvYS5jcHAK
QEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiU2VtYXBob3JlLmgiCisKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
KyNpbmNsdWRlIDxtYWNoL21hY2guaD4KKworbmFtZXNwYWNlIElQQyB7CisKK1NlbWFwaG9yZTo6
U2VtYXBob3JlKCkKK3sKKyAgICBhdXRvIHJldCA9IHNlbWFwaG9yZV9jcmVhdGUobWFjaF90YXNr
X3NlbGYoKSwgJm1fc2VtYXBob3JlLCBTWU5DX1BPTElDWV9GSUZPLCAwKTsKKyAgICBBU1NFUlRf
VU5VU0VEKHJldCwgcmV0ID09IEtFUk5fU1VDQ0VTUyk7Cit9CisKK1NlbWFwaG9yZTo6U2VtYXBo
b3JlKFNlbWFwaG9yZSYmIG90aGVyKQorICAgIDogbV9zZW5kUmlnaHQoV1RGTW92ZShvdGhlci5t
X3NlbmRSaWdodCkpCisgICAgLCBtX3NlbWFwaG9yZShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fc2Vt
YXBob3JlLCBTRU1BUEhPUkVfTlVMTCkpCit7Cit9CisKK1NlbWFwaG9yZTo6U2VtYXBob3JlKE1h
Y2hTZW5kUmlnaHQmJiBzZW5kUmlnaHQpCisgICAgOiBtX3NlbmRSaWdodChXVEZNb3ZlKHNlbmRS
aWdodCkpCisgICAgLCBtX3NlbWFwaG9yZShtX3NlbmRSaWdodC5zZW5kUmlnaHQoKSkKK3sKKyAg
ICBBU1NFUlQobV9zZW5kUmlnaHQpOworfQorCitTZW1hcGhvcmU6On5TZW1hcGhvcmUoKQorewor
ICAgIGRlc3Ryb3koKTsKK30KKworU2VtYXBob3JlJiBTZW1hcGhvcmU6Om9wZXJhdG9yPShTZW1h
cGhvcmUmJiBvdGhlcikKK3sKKyAgICBpZiAodGhpcyAhPSAmb3RoZXIpIHsKKyAgICAgICAgZGVz
dHJveSgpOworICAgICAgICBtX3NlbmRSaWdodCA9IFdURk1vdmUob3RoZXIubV9zZW5kUmlnaHQp
OworICAgICAgICBtX3NlbWFwaG9yZSA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9zZW1hcGhvcmUs
IFNFTUFQSE9SRV9OVUxMKTsKKyAgICB9CisKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3ZvaWQg
U2VtYXBob3JlOjpzaWduYWwoKQoreworICAgIGF1dG8gcmV0ID0gc2VtYXBob3JlX3NpZ25hbCht
X3NlbWFwaG9yZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXQsIHJldCA9PSBLRVJOX1NVQ0NFU1Mp
OworfQorCit2b2lkIFNlbWFwaG9yZTo6d2FpdCgpCit7CisgICAgYXV0byByZXQgPSBzZW1hcGhv
cmVfd2FpdChtX3NlbWFwaG9yZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXQsIHJldCA9PSBLRVJO
X1NVQ0NFU1MpOworfQorCit2b2lkIFNlbWFwaG9yZTo6d2FpdEZvcihTZWNvbmRzIHRpbWVvdXQp
Cit7CisgICAgYXV0byBzZWNvbmRzID0gdGltZW91dC5zZWNvbmRzQXM8dW5zaWduZWQ+KCk7Cisg
ICAgYXV0byByZXQgPSBzZW1hcGhvcmVfdGltZWR3YWl0KG1fc2VtYXBob3JlLCB7IHNlY29uZHMs
IHN0YXRpY19jYXN0PGNsb2NrX3Jlc190Pih0aW1lb3V0Lm5hbm9zZWNvbmRzQXM8dWludDY0X3Q+
KCkgLSBzZWNvbmRzICogTlNFQ19QRVJfU0VDKSB9KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJldCwg
cmV0ID09IEtFUk5fU1VDQ0VTUyB8fCByZXQgPT0gS0VSTl9PUEVSQVRJT05fVElNRURfT1VUKTsK
K30KKworTWFjaFNlbmRSaWdodCBTZW1hcGhvcmU6OmNyZWF0ZVNlbmRSaWdodCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE1hY2hTZW5kUmlnaHQ6OmNyZWF0ZShtX3NlbWFwaG9yZSk7Cit9CisKK3Zv
aWQgU2VtYXBob3JlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNv
ZGVyIDw8IGNyZWF0ZVNlbmRSaWdodCgpOworfQorCitPcHRpb25hbDxTZW1hcGhvcmU+IFNlbWFw
aG9yZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgTWFjaFNlbmRSaWdodCBzZW5k
UmlnaHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzZW5kUmlnaHQpKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBPcHRpb25hbDxTZW1hcGhvcmU+IHsgc3RkOjpp
bl9wbGFjZSwgV1RGTW92ZShzZW5kUmlnaHQpIH07Cit9CisKKwordm9pZCBTZW1hcGhvcmU6OmRl
c3Ryb3koKQoreworICAgIGlmIChtX3NlbmRSaWdodCkgeworICAgICAgICBtX3NlbmRSaWdodCA9
IE1hY2hTZW5kUmlnaHQoKTsKKyAgICAgICAgbV9zZW1hcGhvcmUgPSBTRU1BUEhPUkVfTlVMTDsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9zZW1hcGhvcmUgPT0gU0VNQVBIT1JF
X05VTEwpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHJldCA9IHNlbWFwaG9yZV9kZXN0cm95
KG1hY2hfdGFza19zZWxmKCksIG1fc2VtYXBob3JlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJldCwg
cmV0ID09IEtFUk5fU1VDQ0VTUyk7CisgICAgbV9zZW1hcGhvcmUgPSBTRU1BUEhPUkVfTlVMTDsK
K30KKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlc191bml0dGVzdC5weQppbmRleCA2ZWM2ZWI0ZGE1NTc3M2ZjZWQ2M2QzODIy
MzNjMzI1ODE5YTlhM2MzLi5lNGRlZTdlYjBhZjcwOGZkNTA3ZjRjOTZmYWU0ZTI1ZTE2NTZjMDhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0
ZXN0LnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRl
c3QucHkKQEAgLTM5LDcgKzM5LDcgQEAgdGVzdHNfZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKG1v
ZHVsZV9kaXJlY3RvcnksICd0ZXN0cycpCiAKIHJlc2V0X3Jlc3VsdHMgPSBGYWxzZQogCi1fdGVz
dF9yZWNlaXZlcl9uYW1lcyA9IFsnVGVzdFdpdGhTdXBlcmNsYXNzJywgJ1Rlc3RXaXRoTGVnYWN5
UmVjZWl2ZXInLCAnVGVzdFdpdGhvdXRBdHRyaWJ1dGVzJywgJ1Rlc3RXaXRoSWZNZXNzYWdlJ10K
K190ZXN0X3JlY2VpdmVyX25hbWVzID0gWydUZXN0V2l0aFN1cGVyY2xhc3MnLCAnVGVzdFdpdGhM
ZWdhY3lSZWNlaXZlcicsICdUZXN0V2l0aG91dEF0dHJpYnV0ZXMnLCAnVGVzdFdpdGhJZk1lc3Nh
Z2UnLCAnVGVzdFdpdGhTZW1hcGhvcmUnXQogCiAKIGRlZiByZWNlaXZlcl9oZWFkZXJfZmlsZV9u
YW1lKHJlY2VpdmVyX25hbWUpOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0cy9NYWtlZmlsZSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
TWFrZWZpbGUKaW5kZXggODc5NmZmYmM1YTNmODdiOTIzZWQ2Yzk4MDIzOTFhODc2YmFjMzgyZS4u
YjFkZDc5ODg2NWE1MTU0OTgyMGI3MGRiZGI2MWFjZDZlYWNiYzFlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlCkBAIC0xLDIgKzEsMiBAQAogYWxsOgot
CXB5dGhvbiAuLi8uLi9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5IC4gVGVzdFdpdGhTdXBl
cmNsYXNzIFRlc3RXaXRoTGVnYWN5UmVjZWl2ZXIgVGVzdFdpdGhvdXRBdHRyaWJ1dGVzIFRlc3RX
aXRoSWZNZXNzYWdlCisJcHl0aG9uIC4uLy4uL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkg
LiBUZXN0V2l0aFN1cGVyY2xhc3MgVGVzdFdpdGhMZWdhY3lSZWNlaXZlciBUZXN0V2l0aG91dEF0
dHJpYnV0ZXMgVGVzdFdpdGhJZk1lc3NhZ2UgVGVzdFdpdGhTZW1hcGhvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFyZ3VtZW50RGVzY3Jp
cHRpb25zLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFy
Z3VtZW50RGVzY3JpcHRpb25zLmNwcAppbmRleCA1OTQwNDQzOTBjYWRhYzJmZjBjZGZhYTllMzA1
MDQ0Mjc3ODM4MGZlLi5jYzY4MzY4MjgxY2Q1OTNkNDZjZjBhNzVlMWE2NGQwYjdlZjM4YzU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1
bWVudERlc2NyaXB0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0cy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwCkBAIC00MCwxMiArNDAsMTQgQEAK
ICNpbmNsdWRlICJNYWNoUG9ydC5oIgogI2VuZGlmCiAjaW5jbHVkZSAiUGx1Z2luLmgiCisjaW5j
bHVkZSAiU2VtYXBob3JlLmgiCiAjaW5jbHVkZSAiVGVzdENsYXNzTmFtZS5oIgogI2lmIEVOQUJM
RShURVNUX0ZFQVRVUkUpCiAjaW5jbHVkZSAiVGVzdFR3b1N0YXRlRW51bS5oIgogI2VuZGlmCiAj
aW5jbHVkZSAiVGVzdFdpdGhJZk1lc3NhZ2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlRlc3RXaXRo
TGVnYWN5UmVjZWl2ZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlRlc3RXaXRoU2VtYXBob3JlTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJUZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIlRlc3RXaXRob3V0QXR0cmlidXRlc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCkBAIC0yMTYsNiArMjE4LDEwIEBAIE9wdGlvbmFsPEpTQzo6SlNWYWx1
ZT4ganNWYWx1ZUZvckFyZ3VtZW50cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IE1lCiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhJZk1lc3NhZ2VfTG9hZFVSTDoKICAg
ICAgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRzPE1lc3NhZ2VzOjpUZXN0V2l0
aElmTWVzc2FnZTo6TG9hZFVSTDo6QXJndW1lbnRzPihnbG9iYWxPYmplY3QsIGRlY29kZXIpOwog
I2VuZGlmCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTZW1hcGhvcmVfU2VuZFNlbWFw
aG9yZToKKyAgICAgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRzPE1lc3NhZ2Vz
OjpUZXN0V2l0aFNlbWFwaG9yZTo6U2VuZFNlbWFwaG9yZTo6QXJndW1lbnRzPihnbG9iYWxPYmpl
Y3QsIGRlY29kZXIpOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU2VtYXBob3JlX1Jl
Y2VpdmVTZW1hcGhvcmU6CisgICAgICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50
czxNZXNzYWdlczo6VGVzdFdpdGhTZW1hcGhvcmU6OlJlY2VpdmVTZW1hcGhvcmU6OkFyZ3VtZW50
cz4oZ2xvYmFsT2JqZWN0LCBkZWNvZGVyKTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsK
ICAgICB9CkBAIC01MTcsNiArNTIzLDEyIEBAIE9wdGlvbmFsPFZlY3RvcjxBcmd1bWVudERlc2Ny
aXB0aW9uPj4gbWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zKE1lc3NhZ2VOYW1lIG5hCiAgICAg
ICAgICAgICB7InZhbHVlIiwgImludDY0X3QiLCBudWxscHRyLCBmYWxzZX0sCiAgICAgICAgIH07
CiAjZW5kaWYKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFNlbWFwaG9yZV9TZW5kU2Vt
YXBob3JlOgorICAgICAgICByZXR1cm4gVmVjdG9yPEFyZ3VtZW50RGVzY3JpcHRpb24+IHsKKyAg
ICAgICAgICAgIHsiczAiLCAiSVBDOjpTZW1hcGhvcmUiLCBudWxscHRyLCBmYWxzZX0sCisgICAg
ICAgIH07CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTZW1hcGhvcmVfUmVjZWl2ZVNl
bWFwaG9yZToKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxBcmd1bWVudERlc2NyaXB0aW9uPiB7IH07
CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwIGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCmluZGV4IDc2ZmFkMzdj
NTQ2MGFkYmNmZWEzNzJkMTg2NjU1MGZhN2M4YTg1MTMuLjRjNmVjMmU2Nzk0YzUxZWYyZGRhODNm
YzYzYjY2MzkwZDA2ODZiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAKQEAgLTcyLDYgKzcyLDEwIEBAIGNvbnN0IGNoYXIq
IGRlc2NyaXB0aW9uKE1lc3NhZ2VOYW1lIG5hbWUpCiAgICAgICAgIHJldHVybiAiVGVzdFdpdGhM
ZWdhY3lSZWNlaXZlcl9UZXN0UGFyYW1ldGVyQXR0cmlidXRlcyI7CiAgICAgY2FzZSBNZXNzYWdl
TmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9Ub3VjaEV2ZW50OgogICAgICAgICByZXR1cm4g
IlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVG91Y2hFdmVudCI7CisgICAgY2FzZSBNZXNzYWdlTmFt
ZTo6VGVzdFdpdGhTZW1hcGhvcmVfUmVjZWl2ZVNlbWFwaG9yZToKKyAgICAgICAgcmV0dXJuICJU
ZXN0V2l0aFNlbWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1l
OjpUZXN0V2l0aFNlbWFwaG9yZV9TZW5kU2VtYXBob3JlOgorICAgICAgICByZXR1cm4gIlRlc3RX
aXRoU2VtYXBob3JlX1NlbmRTZW1hcGhvcmUiOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RX
aXRoU3VwZXJjbGFzc19Mb2FkVVJMOgogICAgICAgICByZXR1cm4gIlRlc3RXaXRoU3VwZXJjbGFz
c19Mb2FkVVJMIjsKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfVGVz
dEFzeW5jTWVzc2FnZToKQEAgLTE4MSw2ICsxODUsOSBAQCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJO
YW1lKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RX
aXRoTGVnYWN5UmVjZWl2ZXJfVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM6CiAgICAgY2FzZSBNZXNz
YWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9Ub3VjaEV2ZW50OgogICAgICAgICByZXR1
cm4gUmVjZWl2ZXJOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOworICAgIGNhc2UgTWVzc2Fn
ZU5hbWU6OlRlc3RXaXRoU2VtYXBob3JlX1JlY2VpdmVTZW1hcGhvcmU6CisgICAgY2FzZSBNZXNz
YWdlTmFtZTo6VGVzdFdpdGhTZW1hcGhvcmVfU2VuZFNlbWFwaG9yZToKKyAgICAgICAgcmV0dXJu
IFJlY2VpdmVyTmFtZTo6VGVzdFdpdGhTZW1hcGhvcmU7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6
VGVzdFdpdGhTdXBlcmNsYXNzX0xvYWRVUkw6CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdp
dGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2U6CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVz
dFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VXaXRoQ29ubmVjdGlvbjoKQEAgLTI5OSw2
ICszMDYsMTAgQEAgYm9vbCBpc1ZhbGlkTWVzc2FnZU5hbWUoTWVzc2FnZU5hbWUgbWVzc2FnZU5h
bWUpCiAgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXJfVG91Y2hFdmVudCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKKyAg
ICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTZW1hcGhvcmVf
UmVjZWl2ZVNlbWFwaG9yZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VO
YW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU2VtYXBob3JlX1NlbmRTZW1hcGhvcmUp
CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3Nh
Z2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfTG9hZFVSTCkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCmluZGV4IDIzZjc1NjA4N2Q2ODNhZDIyYjA2OGUy
YTcxZmQ5NWEwZjNjZTU1NWUuLjU3NzYxMjEyZmRkMjljZjFlMDlmN2ViMDM3MDI3Njg2ZjFkNDlh
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2Fn
ZU5hbWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdl
TmFtZXMuaApAQCAtMzEsMTEgKzMxLDEyIEBAIG5hbWVzcGFjZSBJUEMgewogZW51bSBjbGFzcyBS
ZWNlaXZlck5hbWUgOiB1aW50OF90IHsKICAgICBUZXN0V2l0aElmTWVzc2FnZSA9IDEKICAgICAs
IFRlc3RXaXRoTGVnYWN5UmVjZWl2ZXIgPSAyCi0gICAgLCBUZXN0V2l0aFN1cGVyY2xhc3MgPSAz
Ci0gICAgLCBUZXN0V2l0aG91dEF0dHJpYnV0ZXMgPSA0Ci0gICAgLCBJUEMgPSA1Ci0gICAgLCBB
c3luY1JlcGx5ID0gNgotICAgICwgSW52YWxpZCA9IDcKKyAgICAsIFRlc3RXaXRoU2VtYXBob3Jl
ID0gMworICAgICwgVGVzdFdpdGhTdXBlcmNsYXNzID0gNAorICAgICwgVGVzdFdpdGhvdXRBdHRy
aWJ1dGVzID0gNQorICAgICwgSVBDID0gNgorICAgICwgQXN5bmNSZXBseSA9IDcKKyAgICAsIElu
dmFsaWQgPSA4CiB9OwogCiBlbnVtIGNsYXNzIE1lc3NhZ2VOYW1lIDogdWludDE2X3QgewpAQCAt
NjAsNiArNjEsOCBAQCBlbnVtIGNsYXNzIE1lc3NhZ2VOYW1lIDogdWludDE2X3QgewogICAgICwg
VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9UZW1wbGF0ZVRlc3QKICAgICAsIFRlc3RXaXRoTGVnYWN5
UmVjZWl2ZXJfVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMKICAgICAsIFRlc3RXaXRoTGVnYWN5UmVj
ZWl2ZXJfVG91Y2hFdmVudAorICAgICwgVGVzdFdpdGhTZW1hcGhvcmVfUmVjZWl2ZVNlbWFwaG9y
ZQorICAgICwgVGVzdFdpdGhTZW1hcGhvcmVfU2VuZFNlbWFwaG9yZQogICAgICwgVGVzdFdpdGhT
dXBlcmNsYXNzX0xvYWRVUkwKICAgICAsIFRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNz
YWdlCiAgICAgLCBUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZVdpdGhDb25uZWN0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RX
aXRoU2VtYXBob3JlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0cy9UZXN0V2l0aFNlbWFwaG9yZS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MGZkMmZmZTQ4
YzA1MWNmNmUwOTljZmU3NzA5MTBiZGY4ZWM4MTM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFNlbWFwaG9yZS5tZXNzYWdlcy5p
bgpAQCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK21lc3NhZ2VzIC0+IFRlc3RXaXRoU2VtYXBob3JlIHsKKyAgICB2b2lkIFNlbmRTZW1hcGhv
cmUoSVBDOjpTZW1hcGhvcmUgczApCisgICAgdm9pZCBSZWNlaXZlU2VtYXBob3JlKCkgLT4gKElQ
Qzo6U2VtYXBob3JlIHIwKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0cy9UZXN0V2l0aFNlbWFwaG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU2VtYXBob3JlTWVzc2FnZVJlY2Vp
dmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZjY4Njk5NTMyN2ZjMmYyNGJlYWQ5NWMwMzdlZWM4ZGMxZDc4
MGVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9UZXN0V2l0aFNlbWFwaG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTAsMCArMSw2MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAq
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0V2l0
aFNlbWFwaG9yZS5oIgorCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkhhbmRsZU1l
c3NhZ2UuaCIKKyNpbmNsdWRlICJTZW1hcGhvcmUuaCIKKyNpbmNsdWRlICJUZXN0V2l0aFNlbWFw
aG9yZU1lc3NhZ2VzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFRlc3RXaXRoU2Vt
YXBob3JlOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
Qzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0
V2l0aFNlbWFwaG9yZTo6U2VuZFNlbWFwaG9yZTo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFu
ZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhTZW1hcGhvcmU6OlNlbmRTZW1hcGhvcmU+KGRl
Y29kZXIsIHRoaXMsICZUZXN0V2l0aFNlbWFwaG9yZTo6c2VuZFNlbWFwaG9yZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIFVOVVNF
RF9QQVJBTShkZWNvZGVyKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBU
ZXN0V2l0aFNlbWFwaG9yZTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYgcmVwbHlFbmNvZGVyKQoreworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpOworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRl
c3RXaXRoU2VtYXBob3JlOjpSZWNlaXZlU2VtYXBob3JlOjpuYW1lKCkpIHsKKyAgICAgICAgSVBD
OjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFNlbWFwaG9yZTo6UmVjZWl2ZVNlbWFw
aG9yZT4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRoU2VtYXBob3JlOjpy
ZWNlaXZlU2VtYXBob3JlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBVTlVTRURfUEFS
QU0oY29ubmVjdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOworICAgIFVOVVNFRF9Q
QVJBTShyZXBseUVuY29kZXIpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvVGVzdFdpdGhTZW1hcGhvcmVNZXNzYWdlcy5oIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFNlbWFwaG9yZU1lc3NhZ2VzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGYzNTZlZWRhYTY2M2QyMTM0NTVhOTFlYjBmMWQ3ZGY2NmQ2ZjliNAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTZW1hcGhvcmVN
ZXNzYWdlcy5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisg
KiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIlRlc3RXaXRoU2VtYXBob3Jl
TWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTZW1h
cGhvcmU7Cit9CisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgVGVzdFdpdGhTZW1h
cGhvcmUgeworCitzdGF0aWMgaW5saW5lIElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZl
ck5hbWUoKQoreworICAgIHJldHVybiBJUEM6OlJlY2VpdmVyTmFtZTo6VGVzdFdpdGhTZW1hcGhv
cmU7Cit9CisKK2NsYXNzIFNlbmRTZW1hcGhvcmUgeworcHVibGljOgorICAgIHVzaW5nIEFyZ3Vt
ZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpTZW1hcGhvcmUmPjsKKworICAgIHN0YXRpYyBJ
UEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0
aFNlbWFwaG9yZV9TZW5kU2VtYXBob3JlOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5j
ID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBTZW5kU2VtYXBob3JlKGNvbnN0IElQQzo6U2VtYXBo
b3JlJiBzMCkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhzMCkKKyAgICB7CisgICAgfQorCisgICAg
Y29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVu
dHM7Cit9OworCitjbGFzcyBSZWNlaXZlU2VtYXBob3JlIHsKK3B1YmxpYzoKKyAgICB1c2luZyBB
cmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBu
YW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTZW1hcGhvcmVfUmVjZWl2
ZVNlbWFwaG9yZTsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisKKyAg
ICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8SVBDOjpTZW1hcGhvcmUmPjsKKyAgICB1c2luZyBS
ZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8SVBDOjpTZW1hcGhvcmU+OworICAgIGNvbnN0IEFy
Z3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3Vt
ZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsK
KworfSAvLyBuYW1lc3BhY2UgVGVzdFdpdGhTZW1hcGhvcmUKK30gLy8gbmFtZXNwYWNlIE1lc3Nh
Z2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RX
aXRoU2VtYXBob3JlTWVzc2FnZXNSZXBsaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL1Rlc3RXaXRoU2VtYXBob3JlTWVzc2FnZXNSZXBsaWVzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzUwMWEzM2M5YzY3YTAyYWUzYjkyNjNjYTZlMDYwNjY3YjM5ZjM5MwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTZW1hcGhvcmVN
ZXNzYWdlc1JlcGxpZXMuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorCisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgVGVzdFdpdGhTZW1h
cGhvcmUgeworCisKK30gLy8gbmFtZXNwYWNlIFRlc3RXaXRoU2VtYXBob3JlCit9IC8vIG5hbWVz
cGFjZSBNZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkN2I1YTc2YWYyNTIwYzllNzIwMTA2ODA4YTkzNGZkMTk3ODk5ZDI0
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaAor
KysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLXN0cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0
ZXJzIHsKLSAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyOwotI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxh
eUxpc3RTZW1hcGhvcmU7Ci0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgT3B0aW9uYWw8UmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycz4g
ZGVjb2RlKERlY29kZXImKTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEVuY29kZXI+Ci12b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcjsKLSNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICBlbmNvZGVyIDw8IHNlbmRSaWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2Vt
YXBob3JlOwotI2VuZGlmCi19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzPiBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAg
ICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0K
LSAgICBPcHRpb25hbDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcj4gaWRlbnRpZmllcjsKLSAg
ICBkZWNvZGVyID4+IGlkZW50aWZpZXI7Ci0gICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcGFyYW1ldGVycy5pZGVudGlmaWVyID0gKmlkZW50
aWZpZXI7Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBPcHRpb25hbDxNYWNoU2VuZFJpZ2h0
PiBzZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKLSAgICBkZWNvZGVyID4+
IHNlbmRSaWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOwotICAgIGlmICghc2VuZFJp
Z2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0KLSAgICBwYXJhbWV0ZXJzLnNlbmRSaWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2Vt
YXBob3JlID0gV1RGTW92ZSgqc2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUp
OwotI2VuZGlmCi0KLSAgICByZXR1cm4gcGFyYW1ldGVyczsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA3
ZjQwOGJjNDYxMGMxMDU0OTFkNWIwNjQxZjhiNzBmM2FmOTFiMDQzLi45YWJkODk5NWIyODE5YWZh
OWNmZjE0NzJkYzQ4ODEwMTlmMjZmNjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTE0NCw2ICsxNDQsNyBA
QCBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvSlNJUENC
aW5kaW5nLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3Bw
IEBuby11bmlmeQogUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuY3BwIEBuby11bmlmeQorUGxh
dGZvcm0vSVBDL1NlbWFwaG9yZS5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZS5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNwcCBAbm8t
dW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBiODNkNzM4NjI1OTY4ZGZkN2U4OTIzZDJm
ZTc4NDJiYjA1NzJmZTJmLi5jMzFhOWM2MGJiMmY1ODdmZGYyZTdmMmViYmJjM2EzYmMzNTczMWRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC04OCw2ICs4OCw4IEBAIFBsYXRmb3JtL2lvcy9V
SUtpdFNvZnRMaW5rLm1tCiAKIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0K
IFBsYXRmb3JtL0lQQy9jb2NvYS9NYWNoTWVzc2FnZS5jcHAKK1BsYXRmb3JtL0lQQy9jb2NvYS9T
ZW1hcGhvcmVDb2NvYS5jcHAKKwogCiBQbGF0Zm9ybS9tYWMvTWFjaFV0aWxpdGllcy5jcHAKIFBs
YXRmb3JtL21hYy9NZW51VXRpbGl0aWVzLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1YWJhOTZmMzY1NzZkMjhhOTIzMzEyMjJkY2E2
NzUyY2VkYzkyNDM2Li4yOWM2YjhjY2Q3OTdlODI4OWJjY2Q2YTk4NzI5MzY1ZWUwNTdiMTUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTEzMjcsNiArMTMyNyw4IEBACiAJCTdBRkJEMzY3MjFFNTFCQUIwMDVEQkFDQiAvKiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkJEMzY1MjFFNTFCQUIwMDVEQkFDQiAvKiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCAqLzsgfTsKIAkJN0FGQkQzNkYyMUU1NDZGODAwNURC
QUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0
aWxzLmggKi87IH07CiAJCTdCMURCMjY2MjU2NjhDRTEwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5j
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxREIy
NjUyNTY2OENFMDAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggKi87IH07CisJCTdCNzMxMjI4
MjVDOTg4QUEwMDNCMjc5NiAvKiBTZW1hcGhvcmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMjYyNUM5ODhBQTAwM0IyNzk2IC8qIFNlbWFw
aG9yZS5jcHAgKi87IH07CisJCTdCNzMxMjI5MjVDOTg4QUIwMDNCMjc5NiAvKiBTZW1hcGhvcmUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjI3
MjVDOTg4QUEwMDNCMjc5NiAvKiBTZW1hcGhvcmUuaCAqLzsgfTsKIAkJN0MwNjVGMkMxQzhDRDk1
RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MwNjVGMkExQzhDRDk1RjAw
QzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oICovOyB9OwogCQk3
QzEzNUFBOTE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxMzVBQTcxNzNCMEJDQTAw
NTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzFCQTMzRTFBNEEwRTYwMDA0M0UyNDkgLyogQVBJ
RGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0MxQkEzM0MxQTRBMEU2MDAwNDNFMjQ5IC8qIEFQSURpY3Rpb25hcnkuaCAqLzsgfTsKQEAg
LTE5NzAsNyArMTk3Miw2IEBACiAJCUY0MkQ2MzQxMjJBMEVGREYwMEQyRkIzQSAvKiBXZWJBdXRv
Y29ycmVjdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0MkQ2MzNGMjJBMEVGRDMwMEQyRkIzQSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEu
aCAqLzsgfTsKIAkJRjQzMEU5NDIyMjQ3MzM1RjAwNUZFMDUzIC8qIFdlYnNpdGVNZXRhVmlld3Bv
cnRQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0MzBFOTQxMjI0NzMyQTkwMDVGRTA1MyAvKiBXZWJzaXRlTWV0YVZpZXdwb3J0UG9saWN5Lmgg
Ki87IH07CiAJCUY0MzBFOTQ0MjI0NzNERkYwMDVGRTA1MyAvKiBXZWJDb250ZW50TW9kZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzMEU5NDMyMjQ3
M0RCODAwNUZFMDUzIC8qIFdlYkNvbnRlbnRNb2RlLmggKi87IH07Ci0JCUY0MzdDOEQ5MjU5M0I3
RTMwMERCOEExQyAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDM3QzhEODI1
OTNCN0UzMDBEQjhBMUMgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVy
cy5oICovOyB9OwogCQlGNDM4Q0QxQzIyNDE0MjE0MDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVy
ZW5jZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
MzhDRDFCMjI0MTQwQTYwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJRjQzOENEMUYyMjQxNEQ0
MDAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzhDRDFFMjI0MTRENDAwMERFNkRE
QSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlc0ludGVybmFsLmggKi87IH07CiAJCUY0MzhDRDIxMjI0
MUY2OTUwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlc1ByaXZhdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzhDRDIwMjI0MUY2OTUwMERF
NkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlc1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDUxNyw2ICs0NTE4LDkgQEAKIAkJN0FG
QkQzNkUyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUGVyc2lzdGVuY3lVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIyNjI1Qzk4OEFBMDAz
QjI3OTYgLyogU2VtYXBob3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNlbWFwaG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjI3
MjVDOTg4QUEwMDNCMjc5NiAvKiBTZW1hcGhvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2VtYXBob3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMx
MjJBMjVDOTg4QzYwMDNCMjc5NiAvKiBTZW1hcGhvcmVDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZW1hcGhvcmVDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdCOTA0MTY1MjU0QUZERUEwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkwNDE2NjI1
NEFGREVCMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCOTA0MTY3MjU0QUZFMTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NzkxLDcgKzU3
OTUsNiBAQAogCQlGNDJENjM0MDIyQTBFRkQzMDBEMkZCM0EgLyogV2ViQXV0b2NvcnJlY3Rpb25E
YXRhLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViQXV0b2Nv
cnJlY3Rpb25EYXRhLm1tOyBwYXRoID0gaW9zL1dlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzMEU5NDEyMjQ3MzJBOTAwNUZFMDUzIC8qIFdl
YnNpdGVNZXRhVmlld3BvcnRQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZU1ldGFWaWV3
cG9ydFBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDMwRTk0MzIyNDcz
REI4MDA1RkUwNTMgLyogV2ViQ29udGVudE1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGVu
dE1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjQzN0M4RDgyNTkzQjdFMzAw
REI4QTFDIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDM4Q0QxQjIyNDE0MEE2MDBERTZEREEgLyog
V0tXZWJwYWdlUHJlZmVyZW5jZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJwYWdlUHJlZmVyZW5j
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzOENEMUQyMjQxNEFENjAwREU2
RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tX
ZWJwYWdlUHJlZmVyZW5jZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzhD
RDFFMjI0MTRENDAwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlc0ludGVybmFsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLV2VicGFnZVByZWZlcmVuY2VzSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTY1MzAsNyArNjUzMyw2IEBACiAJCQkJRTFDQzFCOEUxMkQ3RUFE
RjAwNjI1ODM4IC8qIFByaW50SW5mby5oICovLAogCQkJCTQ2M0ZENDgxMUVCOTRFQUQwMEEyOTgy
QyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLywKIAkJCQk5QjEyMjlEMDIzRkYyQTVF
MDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaCAqLywKLQkJCQlG
NDM3QzhEODI1OTNCN0UzMDBEQjhBMUMgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9u
UGFyYW1ldGVycy5oICovLAogCQkJCTVDQjdBRkU2MjNDNjgxQjAwMEU0OUNGMyAvKiBSZXNvdXJj
ZUxvYWRJbmZvLmggKi8sCiAJCQkJNUMwMDk5M0IyNDE3RkI3RTAwRDUzQzI1IC8qIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmggKi8sCiAJCQkJNDEwNDgyQ0IxREREMkZCNTAwRjAw
NkQwIC8qIFJUQ05ldHdvcmsuY3BwICovLApAQCAtNjg5Miw2ICs2ODk0LDggQEAKIAkJCQlCQzAz
MkRBMzEwRjQzN0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5oICovLAogCQkJCTFBQzc1MzdFMTgz
QkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmggKi8sCiAJCQkJQkMwMzJEOUQxMEY0MzdE
MTAwNThDMTVBIC8qIERlY29kZXIuY3BwICovLAorCQkJCTdCNzMxMjI2MjVDOTg4QUEwMDNCMjc5
NiAvKiBTZW1hcGhvcmUuY3BwICovLAorCQkJCTdCNzMxMjI3MjVDOTg4QUEwMDNCMjc5NiAvKiBT
ZW1hcGhvcmUuaCAqLywKIAkJCQlCQzAzMkQ5RTEwRjQzN0QxMDA1OEMxNUEgLyogRGVjb2Rlci5o
ICovLAogCQkJCUJDMDMyRDlGMTBGNDM3RDEwMDU4QzE1QSAvKiBFbmNvZGVyLmNwcCAqLywKIAkJ
CQlCQzAzMkRBMDEwRjQzN0QxMDA1OEMxNUEgLyogRW5jb2Rlci5oICovLApAQCAtMTA0OTIsNiAr
MTA0OTYsNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMUEzMEVBQzUxMTVEN0RBMzAwNTNFOTM3
IC8qIENvbm5lY3Rpb25Db2NvYS5tbSAqLywKIAkJCQkxQTFFQzY5RDE4NzIwOTIxMDBCOTUxRjAg
LyogSW1wb3J0YW5jZUFzc2VydGlvbi5oICovLAorCQkJCTdCNzMxMjJBMjVDOTg4QzYwMDNCMjc5
NiAvKiBTZW1hcGhvcmVDb2NvYS5jcHAgKi8sCiAJCQkJMUE2RDg2QkYxREY3NTI2NTAwNzc0NUU4
IC8qIE1hY2hNZXNzYWdlLmNwcCAqLywKIAkJCQkxQTZEODZDMDFERjc1MjY1MDA3NzQ1RTggLyog
TWFjaE1lc3NhZ2UuaCAqLywKIAkJCQlCQ0M1NkY3NzExNTk5NTdEMDAxQ0NBRjkgLyogTWFjaFBv
cnQuaCAqLywKQEAgLTExODc5LDcgKzExODg0LDYgQEAKIAkJCQkxQTU3MDRGQzFCRTE3NTExMDA4
NzRBRjEgLyogUmVtb3RlT2JqZWN0SW52b2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFD
MTMzODAxODU5MEFFNDAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUMxMzM4NjE4NTkwQzQ2MDBGM0VDMDUgLyogUmVtb3RlT2JqZWN0UmVnaXN0
cnlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRjQzN0M4RDkyNTkzQjdFMzAwREI4QTFD
IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNTk0NzkwMTg3QjNCM0EwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1OTQ3QTgxODdCNTE3NjAwNDM3ODU3IC8q
IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNTk0NzlCMTg3QjNCNjAwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5LmggaW4gSGVhZGVycyAqLywKQEAgLTEyMTQxLDYgKzEyMTQ1LDcgQEAKIAkJCQlCQzg1N0Y4
NTEyQjgyRDBCMDBFREVCMkUgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMURGRUE0MTJCMzFGODcwMDVERjczMCAvKiBXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkQ4RjEwRjQzN0EwMDA1
OEMxNUEgLyogV2ViUGFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I3MzEyMjkyNUM5ODhBQjAw
M0IyNzk2IC8qIFNlbWFwaG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFQzZBRDQyMTUxQkQ3
QjAwNjc3RDE3IC8qIFdlYlBhZ2VEZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4Mzcy
REIyOTFBNjc1NjI4MDBDNjk3QzUgLyogV2ViUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzdCNjIwNjEyOUEwQTY3MDBEMTc0QTQgLyogV2ViUGFnZUdy
b3VwLmggaW4gSGVhZGVycyAqLywKQEAgLTEzNzE1LDYgKzEzNzIwLDcgQEAKIAkJCQkxQTJEOTFB
NjEyODFENzM5MDAxRUI5NjIgLyogUGx1Z2luQ29udHJvbGxlclByb3h5TWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUE4RUY5NkUxMjUyQUY2QjAwRjcwNjdGIC8qIFBsdWdpbkNvbnRyb2xsZXJQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTE3OTc3RjEzN0VF
ODJDMDBGOTdENDUgLyogUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTdCNzMxMjI4MjVDOTg4QUEwMDNCMjc5NiAvKiBTZW1hcGhvcmUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMkQ5MkE3OTcyMTJCNkFEQTAwRjQ5M0ZEIC8qIFBsdWdpbkluZm9ybWF0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMDQzOTc3MTI0RDAzNDgwMEZGQkZCNSAvKiBQbHVn
aW5Qcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTEzNDRBMjEyQ0Y5RjAwMDEyOEFG
RCAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCA2MWI0YzgyNDk1NzZkZTEyOGE5
YWJlZDA5MjdmNDFlZTQxNjJiZTZlLi5kYzNlNGVlNTgxNDliODM4OTRmYWU5MzBmM2VjYjAwZDQy
ZDU2N2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBAIC0z
Miw3ICszMiw2IEBACiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgIkltYWdlRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oIgotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlv
blBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgpAQCAtNjcsMTIgKzY2LDcgQEAgdm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogICAgIGF1dG8mIGNvbm5l
Y3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlv
bigpOwogICAgIGNvbm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlzKTsKICAgICBjb25uZWN0aW9uLm1l
c3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOwotICAgIHNlbmQoTWVzc2FnZXM6OkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoewotICAgICAg
ICBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
ICAgICBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlLmNyZWF0ZVNlbmRSaWdodCgpLAotI2Vu
ZGlmCi0gICAgfSksIDApOworICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OkNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQobV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
ciwgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSksIDApOwogfQogCiB2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6cmVlc3RhYmxpc2hHUFVQcm9jZXNzQ29ubmVjdGlvbigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCA0OGZhMDY5ZGFhOGQzY2Q2
ZDEyNDQyZGIzMzA2MDNjOTM2Yjk3YjQ3Li4wNTk4MmNlNzBiZWQwYTk3MDA5NWUyNmVkZGRmZjZk
Njg4NjczZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTM0
LDE1ICszNCwxMiBAQAogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgIlNlbWFwaG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxh
eUxpc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKLSNp
ZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlIDx3dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oPgot
I2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBj
bGFzcyBEaXNwbGF5TGlzdDsKQEAgLTEyNiw5ICsxMjMsNyBAQCBwcml2YXRlOgogICAgIE9wdGlv
bmFsPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gbV9jdXJyZW50RGVzdGlu
YXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXI7CiAgICAgT3B0aW9uYWw8R1BVUHJvY2Vzc1dha2V1
cE1lc3NhZ2VBcmd1bWVudHM+IG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzOwogICAg
IHVuc2lnbmVkIG1fcmVtYWluaW5nSXRlbXNUb0FwcGVuZEJlZm9yZVNlbmRpbmdXYWtldXAgeyAw
IH07Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgTWFjaFNlbWFwaG9yZSBtX3Jlc3VtZURpc3Bs
YXlMaXN0U2VtYXBob3JlOwotI2VuZGlmCisgICAgSVBDOjpTZW1hcGhvcmUgbV9yZXN1bWVEaXNw
bGF5TGlzdFNlbWFwaG9yZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmluZGV4IDM0ZTMwY2UxMTkzNjBjOTMwYzJiMDdlOWMz
MDhhMWI2NDBlZDBhM2UuLjAyODMzMDU0YWUwZGY4MjllMjcxYmJiZjQ4YjM4YjMzODY0ODRhNTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKQEAgLTQwLDcgKzQwLDYgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2Vi
QXVkaW9CdWZmZXJMaXN0Lmg+CiAjaW5jbHVkZSA8bWFjaC9tYWNoX3RpbWUuaD4KLSNpbmNsdWRl
IDx3dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtODAsNyArNzksNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6c3Rh
cnRSZW5kZXJpbmdUaHJlYWQoKQogCiAgICAgYXV0byBvZmZUaHJlYWRSZW5kZXJpbmcgPSBbdGhp
c10oKSBtdXRhYmxlIHsKICAgICAgICAgZG8gewotICAgICAgICAgICAgbV9yZW5kZXJTZW1hcGhv
cmUtPndhaXQoKTsKKyAgICAgICAgICAgIG1fcmVuZGVyU2VtYXBob3JlLndhaXQoKTsKICAgICAg
ICAgICAgIGlmIChtX3Nob3VsZFN0b3BUaHJlYWQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAK
QEAgLTk4LDggKzk3LDcgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0b3BS
ZW5kZXJpbmdUaHJlYWQoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Nob3VsZFN0b3BUaHJl
YWQgPSB0cnVlOwotICAgIGlmIChtX3JlbmRlclNlbWFwaG9yZSkKLSAgICAgICAgbV9yZW5kZXJT
ZW1hcGhvcmUtPnNpZ25hbCgpOworICAgIG1fcmVuZGVyU2VtYXBob3JlLnNpZ25hbCgpOwogICAg
IG1fcmVuZGVyVGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOwogICAgIG1fcmVuZGVyVGhyZWFk
ID0gbnVsbHB0cjsKICNlbmRpZgpAQCAtMTA3LDIwICsxMDUsMTAgQEAgdm9pZCBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHk6OnN0b3BSZW5kZXJpbmdUaHJlYWQoKQogCiB2b2lkIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2VzcygpCiB7Ci0gICAgUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgZGVzdGluYXRpb25JRDsKLSNpZiBQTEFURk9STShD
T0NPQSkKLSAgICBNYWNoU2VuZFJpZ2h0IHJlbmRlclNlbWFwaG9yZVNlbmRSaWdodDsKLSNlbmRp
ZgotCiAgICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgY29ubmVjdGlvbi5hZGRDbGllbnQoKnRoaXMp
OwogICAgIGF1dG8gZGlkU3VjY2VlZCA9IGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmRTeW5j
KAotICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNyZWF0
ZUF1ZGlvRGVzdGluYXRpb24obV9pbnB1dERldmljZUlkLCBtX251bWJlck9mSW5wdXRDaGFubmVs
cywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscygpLCBzYW1wbGVSYXRlKCksIGhhcmR3YXJlU2FtcGxl
UmF0ZSgpKSwKLSAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2Vy
OjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZXBseShkZXN0aW5hdGlvbklECi0jaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgICAgICAgICAsIHJlbmRlclNlbWFwaG9yZVNlbmRSaWdodAotI2VuZGlm
Ci0gICAgICAgICksIDApOworICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb24obV9pbnB1dERldmljZUlkLCBtX251bWJl
ck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscygpLCBzYW1wbGVSYXRlKCks
IGhhcmR3YXJlU2FtcGxlUmF0ZSgpLCBtX3JlbmRlclNlbWFwaG9yZSksIE1lc3NhZ2VzOjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbjo6UmVwbHko
bV9kZXN0aW5hdGlvbklEKSwgMCk7CiAKICAgICBpZiAoIWRpZFN1Y2NlZWQpIHsKICAgICAgICAg
Ly8gVGhlIEdQVVByb2Nlc3MgbGlrZWx5IGNyYXNoZWQgZHVyaW5nIHRoaXMgc3luY2hyb25vdXMg
SVBDLiBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKCkgd2lsbCBnZXQgY2FsbGVkIHRvIHJl
Y29ubmVjdCB0byB0aGUgR1BVUHJvY2Vzcy4KQEAgLTEyOCw3ICsxMTYsNiBAQCB2b2lkIFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2VzcygpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBtX2Rlc3RpbmF0aW9uSUQgPSBkZXN0aW5hdGlvbklEOwogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbV9jdXJyZW50RnJhbWUgPSAwOwpAQCAtMTM2LDcgKzEy
Myw2IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0VG9HUFVQcm9j
ZXNzKCkKICAgICBnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsK
ICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKHN0cmVhbUZvcm1hdCwgbV9udW1iZXJPZkZyYW1l
cyk7CiAgICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OldlYkF1ZGlv
QnVmZmVyTGlzdD4oc3RyZWFtRm9ybWF0KTsKLSAgICBtX3JlbmRlclNlbWFwaG9yZSA9IG1ha2VV
bmlxdWU8TWFjaFNlbWFwaG9yZT4oV1RGTW92ZShyZW5kZXJTZW1hcGhvcmVTZW5kUmlnaHQpKTsK
ICNlbmRpZgogCiAgICAgc3RhcnRSZW5kZXJpbmdUaHJlYWQoKTsKQEAgLTIwNSw5ICsxOTEsNyBA
QCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25E
aWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdAogICAgIG9sZENvbm5lY3Rpb24ucmVtb3ZlQ2xpZW50
KCp0aGlzKTsKIAogICAgIHN0b3BSZW5kZXJpbmdUaHJlYWQoKTsKLSNpZiBQTEFURk9STShDT0NP
QSkKLSAgICBtX3JlbmRlclNlbWFwaG9yZSA9IG51bGxwdHI7Ci0jZW5kaWYKKwogICAgIGNvbm5l
Y3RUb0dQVVByb2Nlc3MoKTsKIAogICAgIGlmIChpc1BsYXlpbmcoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eS5oCmluZGV4IDhkMmM2M2ViOWM1NWZiOGIyYWM1NGJhYWRlOGY3M2NlNWQ1
YjFjYzUuLmFjZWIyOGFmYzJjNmRhNmFmODM3MThkYmJmMjhjMzYxY2ViYjllY2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNv
bm5lY3Rpb24uaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUg
IlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU2VtYXBob3Jl
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0lPQ2FsbGJhY2suaD4KICNpbmNsdWRlIDx3dGYv
Q3Jvc3NUaHJlYWRRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KQEAgLTM4LDYg
KzM5LDcgQEAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVy
U3RvcmFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmg+Cisj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjZWxzZQogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9E
ZXN0aW5hdGlvbkdTdHJlYW1lci5oPgogI2VuZGlmCkBAIC00NywxMiArNDksNiBAQCBjbGFzcyBD
QVJpbmdCdWZmZXI7CiBjbGFzcyBXZWJBdWRpb0J1ZmZlckxpc3Q7CiB9CiAKLW5hbWVzcGFjZSBX
VEYgewotI2lmIFBMQVRGT1JNKENPQ09BKQotY2xhc3MgTWFjaFNlbWFwaG9yZTsKLSNlbmRpZgot
fQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2hhcmVkUmluZ0J1ZmZlckZyYW1lQm91
bmRzOwpAQCAtMTA0LDEzICsxMDAsMTMgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICB1aW50NjRfdCBtX251bWJlck9mRnJhbWVzIHsgMCB9OwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+IG1fcmluZ0J1ZmZlcjsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8V1RGOjpNYWNoU2VtYXBob3JlPiBtX3JlbmRlclNlbWFwaG9yZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0PiBtX2F1ZGlvQnVmZmVyTGlzdDsKICAg
ICB1aW50NjRfdCBtX2N1cnJlbnRGcmFtZSB7IDAgfTsKICAgICBmbG9hdCBtX3NhbXBsZVJhdGU7
CiAjZWxzZQogICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVsczsKICNlbmRpZgor
ICAgIElQQzo6U2VtYXBob3JlIG1fcmVuZGVyU2VtYXBob3JlOwogCiAgICAgU3RyaW5nIG1faW5w
dXREZXZpY2VJZDsKICAgICB1bnNpZ25lZCBtX251bWJlck9mSW5wdXRDaGFubmVsczsK
</data>
<flag name="commit-queue"
          id="437111"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418992</attachid>
            <date>2021-02-02 06:54:48 -0800</date>
            <delta_ts>2021-02-02 21:57:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220919-20210202165445.patch</filename>
            <type>text/plain</type>
            <size>82339</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU2NGY0YmMyYWMwODE5Yjg2ZjczMGVk
NzdjYjdiYTc4OGEyNjdiNzkuLjllMDFhNWRhMTliODE4MmFmMGFlMDIyNGM4YWE2YjE2NTA0YTEy
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDItMDIgIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNYWNoU2VtYXBob3JlIGRvZXMgbm90IHdvcmsg
d2VsbCB3aXRoIElQQyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwOTE5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MzgyNjg0OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIFdU
Rjo6TWFjaFNlbWFwaG9yZSB0byBXZWJLaXQgSVBDOjpTZW1hcGhvcmUuIEN1cnJlbnRseSB0aGUK
KyAgICAgICAgTWFjaFNlbWFwaG9yZSBpcyB1c2VmdWwgb25seSBpbiBjcm9zcy1wcm9jZXNzIElQ
QywgaW1wbGVtZW50ZWQgYnkgdGhlCisgICAgICAgIElQQzo6LgorCisgICAgICAgICogV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjEtMDItMDIgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gTWlncmF0ZSBX
ZWJLaXRUZXN0U2VydmVyIHRvIGxpYnNvdXAgMi40OCBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYmVhZWUxN2Vi
MDEyY2ExZmI0MGQ5MTE0ZjM4OWViNWM5ZDE5YjAzNS4uODk1OTNiZmEwMmNkODBiZWY3MDMyMDE4
NTczOTBiYWFlMDFjZmMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzcgQEAKKzIwMjEtMDItMDIg
IEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNYWNoU2Vt
YXBob3JlIGRvZXMgbm90IHdvcmsgd2VsbCB3aXRoIElQQyBtZXNzYWdlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwOTE5CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS83MzgyNjg0OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNb3ZlIFdURjo6TWFjaFNlbWFwaG9yZSB0byBXZWJLaXQgSVBDOjpTZW1h
cGhvcmUuIEN1cnJlbnRseSB0aGUKKyAgICAgICAgTWFjaFNlbWFwaG9yZSBpcyB1c2VmdWwgb25s
eSBpbiBjcm9zcy1wcm9jZXNzIElQQywgaW1wbGVtZW50ZWQgYnkgdGhlCisgICAgICAgIElQQzo6
LgorCisgICAgICAgIEFkZHMgYSBzdHViIElQQzo6U2VtYXBob3JlIHRvIGFsbCBub24tQ09DT0Eg
cGxhdGZvcm1zLCBzbyB0aGF0CisgICAgICAgIGNvbnN0cnVjdG9ycyBkbyBub3QgbmVlZCB0byBp
ZmRlZidlZCB0byBiZSBhYmxlIHRvIGNvbXBpbGUgcGxhdGZvcm1zCisgICAgICAgIHRoYXQgZG8g
bm90IHlldCBzdXBwb3J0IEdQVSBwcm9jZXNzIGZ1bGx5LgorCisgICAgICAgIEltcGxlbWVudCBt
b3ZlIGNvbnN0cnVjdG9yIGFuZCBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IgZm9yIFNlbWFwaG9y
ZS4KKyAgICAgICAgTWFrZXMgaXQgcG9zc2libGUgdG8gY3JlYXRlIHR5cGVzIHRoYXQgaG9sZCBT
ZW1hcGhvcmUgYnV0IHN0aWxsIGFyZQorICAgICAgICBkZWNvZGUoKWFibGUgZnJvbSBhIElQQyBt
ZXNzYWdlLiBUaGUgZGVjb2RlZCBvYmplY3RzIGFyZSBoZWxkIHdpdGgKKyAgICAgICAgT3B0aW9u
YWwsIGFuZCB0aGlzIGZvcmNlcyB0aGUgc3Vib2JqZWN0cyB0byBoYXZlIG1vdmUgYXNzaWdubWVu
dAorICAgICAgICBvcGVyYXRvci4KKworICAgICAgICBBZGQgYXNzZXJ0cyB0aGF0IHRoZSBtb3Zl
ZC1hd2F5IG9iamVjdCBpcyBub3QgdXNlZC4gQWRkIHRoZSBhc3NlcnRzIGFzCisgICAgICAgIGFz
c2VydHMgb24gdGhlIGNhbGwgcmV0dXJuIHZhbHVlcywgc28gdGhlIHZhbHVlcyBhcmUgYWxzbyBj
aGVja2VkIG9uCisgICAgICAgIG5vcm1hbCBvYmplY3RzIG9uIG5vcm1hbCBvcGVyYXRpb24uCisK
KyAgICAgICAgSW1wbGVtZW50IGFuIGVuY29kZXIgYW5kIGRlY29kZXIgZm9yIElQQzo6U2VtYXBo
b3JlLiBNYWtlcyBpdCBwb3NzaWJsZQorICAgICAgICB0byBzZW5kIGl0IHZpYSBJUEMgYXMgaXRz
IG93biB0eXBlLCBub3QgYXMgTWFjaFNlbmRSaWdodC4KKworICAgICAgICBBcyBhbiBleGFtcGxl
LCBjaGFuZ2VzIGV4aXN0aW5nIHVzZXMgb2YgTWFjaFNlbmRSaWdodCBmb3Igc2VtYXBob3JlcyBp
bgorICAgICAgICBtZXNzYWdlcyBhcyBTZW1hcGhvcmVzLCBkZXNjcmliZWQgYmVsb3cuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCBhIHJlZmFjdG9yLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZCk6CisgICAgICAgICogR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZl
ckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmg6IFJlbW92ZWQuCisgICAgICAgIENoYW5n
ZXMgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCB0byByZWNlaXZlIGl0cyBwYXJhbWV0ZXJzIGZyb20g
dGhlIG5vcm1hbAorICAgICAgICBtZXNzYWdlIHBhcmFtZXRlcnMgaW5zdGVhZCBvZiByZWR1bmRh
bnQKKyAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy4gVGhl
IElQQyBnZW5lcmF0b3IgYWxyZWFkeQorICAgICAgICBnZW5lcmF0ZXMgMToxIGlkZW50aWNhbCBz
dHJ1Y3R1cmUsIGl0IGlzIGp1c3QgdGhlIG1lc3NhZ2UKKyAgICAgICAgTWVzc2FnZXM6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQuIFRoZXJlIGlzIG5v
CisgICAgICAgIG5lZWQgdG8gZG91YmxlLXdyYXAgdGhlIHNpbXBsZSBsaXN0IG9mIHBhcmFtZXRl
cnMuIFRoZSBkb3VibGUtd3JhcHBpbmcKKyAgICAgICAgaXMgYSBwcm9ibGVtOiBUaGUgbWVzc2Fn
ZSBzeXN0ZW0gcGFyYW1ldGVycyBhcmUgb2Ygb3duZXJzaGlwICJjb25zdAorICAgICAgICByZWZl
cmVuY2UiLCB3aGljaCBpcyB3aGF0IGlzIGV4cGVjdGVkLgorICAgICAgICBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIGNvbnRlbnRzIHdlcmUgb2Ygb3duZXJzaGlwCisg
ICAgICAgICJ2YWx1ZSIsIHdoaWNoIHdvcmtzIGFzIGV4cGVjdGVkIG9ubHkgZm9yIHNpbXBsZSBw
cmltaXRpdmUgdHlwZXMuCisgICAgICAgIEVzc2VudGlhbGx5IHByZXZpb3VzbHkgY2FsbGluZyB0
aGUgSVBDIGZ1bmN0aW9uIG1lYW50IHRyYW5zZmVyaW5nCisgICAgICAgIG9iamVjdHMgdG8gUmVt
b3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy4gVGhpcyBpcyBub3QgaG93IHRo
ZQorICAgICAgICBJUEMgc3lzdGVtIGlzIG1lYW50IHRvIHdvcmsuIFRoZSBpbnRlbnRpb24gb2Yg
YSBJUEMgY2FsbCBpcyB0bywgYnkKKyAgICAgICAgZGVmYXVsdCwgcmVmZXJlbmNlIGl0cyBhcmd1
bWVudHMgZm9yIHRoZSBwdXJwb3NlIG9mIGVuY29kaW5nLgorCisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb246OlJlbW90ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Y3JlYXRlQXVkaW9EZXN0aW5h
dGlvbik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXIubWVzc2FnZXMuaW46CisKKyAgICAgICAgUmVjZWl2ZSB0aGUgc2VtYXBob3Jl
IGZyb20gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LiBQcmV2aW91c2x5CisgICAgICAgIGl0
IHdhcyBjcmVhdGVkIGR1cmluZyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uIGNyZWF0aW9uIGFuZAor
ICAgICAgICBiZSBzZW50IGJhY2sgYnkgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuCisK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2VtYXBob3JlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuY3BwLgorICAgICAgICAoSVBDOjpTZW1hcGhv
cmU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6ZGVjb2RlKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvU2VtYXBob3JlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV1RG
L3d0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmguCisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6b3Bl
cmF0b3IgYm9vbCBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL1NlbWFwaG9y
ZUNvY29hLmNwcDogQWRkZWQuCisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6U2VtYXBob3JlKToK
KyAgICAgICAgKElQQzo6U2VtYXBob3JlOjp+U2VtYXBob3JlKToKKyAgICAgICAgKElQQzo6U2Vt
YXBob3JlOjpvcGVyYXRvcj0pOgorICAgICAgICAoSVBDOjpTZW1hcGhvcmU6OnNpZ25hbCk6Cisg
ICAgICAgIChJUEM6OlNlbWFwaG9yZTo6d2FpdCk6CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6
d2FpdEZvcik6CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6Y3JlYXRlU2VuZFJpZ2h0IGNvbnN0
KToKKyAgICAgICAgKElQQzo6U2VtYXBob3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoSVBD
OjpTZW1hcGhvcmU6OmRlY29kZSk6CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6ZGVzdHJveSk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQv
dGVzdHMvTWFrZWZpbGU6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFy
Z3VtZW50RGVzY3JpcHRpb25zLmNwcDoKKyAgICAgICAgKElQQzo6anNWYWx1ZUZvckFyZ3VtZW50
cyk6CisgICAgICAgIChJUEM6Om1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucyk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcDoKKyAgICAgICAgKElQQzo6
ZGVzY3JpcHRpb24pOgorICAgICAgICAoSVBDOjpyZWNlaXZlck5hbWUpOgorICAgICAgICAoSVBD
Ojppc1ZhbGlkTWVzc2FnZU5hbWUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL01l
c3NhZ2VOYW1lcy5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFj
aFNlbWFwaG9yZS5tZXNzYWdlcy5pbjogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4uCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZVJlY2VpdmVyLmNw
cDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2Vt
YXBob3JlTWVzc2FnZXMuaDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMv
VGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAq
IFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNzKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHk6OnN0YXJ0UmVuZGVyaW5nVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5OjpzdG9wUmVuZGVyaW5nVGhyZWFkKToKKyAgICAgICAgQ2hhbmdlIHRo
ZSBzZW1hcGhvcmUgdXNhZ2UgZnJvbSB1bmlxdWVfcHRyIHRvIHRoZSBub3JtYWwKKyAgICAgICAg
b2JqZWN0IGFjY2Vzcy4gVGhlIHNlbWFwaG9yZSBpcyBub3cgY3JlYXRlZCBieSB0aGUgcHJveHks
CisgICAgICAgIHNvIHRoZXJlIGlzIG5vIHVuaXF1ZV9wdHIuCisKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpncHVQcm9jZXNzQ29ubmVj
dGlvbkRpZENsb3NlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHkuaDoKKworICAgICAgICBDaGFuZ2VzIFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25Qcm94eSB0byBzZW5kIGl0cyBvd24gc2VtYXBob3JlIGZyb20KKyAgICAgICAgV2ViUHJv
Y2VzcyB0byBHUFVQcm9jZXNzLiBQcmV2aW91c2x5IHRoZSBzZW1hcGhvcmUgd291bGQgYmUgc2Vu
dCBiYWNrIGJ5CisgICAgICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLiBQcmV2aW91
c2x5IHRoZSBjb2RlIHN0cnVjdHVyZSBpcyBtb3JlCisgICAgICAgIGNvbXBsaWNhdGVkIHRoYW4g
bmVjY2Vzc2FyeSwgYXMgdGhlIHNlbWFwaG9yZSBob2xkZXIgd2FzIGJlaW5nCisgICAgICAgIG51
bGwtY2hlY2tlZCwgcmVzZXQgYW5kIHJlLXNlYXRlZC4gVGhlIFdlYlByb2Nlc3MgZ2V0cyBhbHJl
YWR5IHRvIGNob29zZQorICAgICAgICB0aGUgc2VtYXBob3JlcyBHUFVQcm9jZXNzIHVzZXMsIHNv
IHRoaXMgc2hvdWxkIG5vdCBpbmNyZWFzZSBzZWN1cml0eQorICAgICAgICBzdXJmYWNlLiBUaGUg
Y2hhbmdlIGNob3NlbiBoZXJlIHNpZGUtc3RlcHMgdGhlIHNob3J0Y29taW5nIG9mIHRoZSBJUEMK
KyAgICAgICAgc3lzdGVtIHdoZXJlIHVucGFja2luZyBvYmplY3RzIGZyb20gdGhlIFJlcGx5IG1l
c3NhZ2VzIG1hbmRhdGVzIHRoYXQgYQorICAgICAgICBjb25zdHJ1Y3RlZCB2ZXJzaW9uIG9mIHRo
YXQgdHlwZSBleGlzdHMuIEZvciBwcmV2aW91cyBNYWNoU2VuZFJpZ2h0CisgICAgICAgIGVtcHR5
LWNvbnN0cnVjdGVkIG9iamVjdCBpcyBzaW1wbGUsIGJ1dCBmb3IgTWFjaFNlbWFwaG9yZQorICAg
ICAgICBlbXB0eS1jb25zdHJ1Y3RlZCBvYmplY3QgY3JlYXRlcyB1bm5lY2Vzc2FyeSBjb21wbGlj
YXRpb24gdGhhdCBpcyBub3QKKyAgICAgICAgcmVxdWlyZWQgb3RoZXJ3aXNlIGF0IHRoZSBtb21l
bnQuIFRoZSBhbHRlcm5hdGl2ZSB0byB3aGF0IHdhcyBjaG9zZW4KKyAgICAgICAgaGVyZSB3b3Vs
ZCBiZSB0byBob2xkIHdpdGggT3B0aW9uYWw8TWFjaFNlbWFwaG9yZT4gYW5kIGFkZCBhCisgICAg
ICAgIGVtcHR5LWluaXRpYWxpemluZyBjb25zdHJ1Y3RvciB0byBob2xkIHRoZSBvYmplY3Qgd2hl
cmUgdG8gdW5wYWNrIHRoZQorICAgICAgICBzZW1hcGhvcmUgb2JqZWN0IGZyb20gdGhlIFJlcGx5
LgorCiAyMDIxLTAyLTAyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVc2UgV2ViUlRDIEdQVSBwcm9jZXNzIGZsYWcgZm9yIE1lZGlhUmVjb3JkZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRhNGRmZWIxZWY4Mzg1NTY0
ZDNhOWJjNDAwZjQ2Mjg4M2QwYzM1YWQuLjI2YjQ1ZTU1M2IwNjdlMjQwMzI3Y2M4ODY3ZWM3Yzhj
ODE0NjdlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NjgsNyArNjgsNiBAQAogCQkzMzM3REI5Q0U3NDM0MTBGQUYwNzZFMTcgLyogU3RhY2tUcmFjZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTNFREVD
OTc3OEU0OUM5QkVBOTFDRkMgLyogU3RhY2tUcmFjZS5jcHAgKi87IH07CiAJCTQ0MjdDNUFBMjFG
NkQ2QzMwMEE2MTJBNCAvKiBBU0NJSUNUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MjdDNUE5MjFGNkQ2QzMwMEE2MTJBNCAvKiBBU0NJSUNU
eXBlLmNwcCAqLzsgfTsKIAkJNDZCRUI2RUIyMkZGRTI0OTAwMjY5ODY3IC8qIFJlZkNvdW50ZWQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRUI2
RTkyMkZGRERENTAwMjY5ODY3IC8qIFJlZkNvdW50ZWQuY3BwICovOyB9OwotCQk0NkNCNkIzRDI1
OEFEOTNGMDA2MzMzQjMgLyogTWFjaFNlbWFwaG9yZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJBQTlDODI1OEFENUE1MDA3OTU4NzcgLyogTWFj
aFNlbWFwaG9yZS5jcHAgKi87IH07CiAJCTUwREUzNUY1MjE1QkIwMTUwMEI5NzlDNyAvKiBFeHRl
cm5hbFN0cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTBERTM1RjMyMTVCQjAxNTAwQjk3OUM3IC8qIEV4dGVybmFsU3RyaW5nSW1wbC5j
cHAgKi87IH07CiAJCTUxNUY3OTRFMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZENvcGll
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVG
Nzk0QjFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwICovOyB9OwogCQk1
MTdGODJENzFGRDIyRjMwMDBEQTNERUEgLyogQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdGODJENTFGRDIy
RjJGMDBEQTNERUEgLyogQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAgKi87IH07CkBAIC0zNzgs
OCArMzc3LDYgQEAKIAkJNDQyN0M1QTkyMUY2RDZDMzAwQTYxMkE0IC8qIEFTQ0lJQ1R5cGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVNDSUlDVHlwZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Njg1NjcyMjUwOTRGRTgwMDhDQ0EwNSAvKiBU
aHJlYWRTYW5pdGl6ZXJTdXBwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRocmVhZFNhbml0aXplclN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZCQTlFQUIxRjRDRDYxRTAwOUEyQkJDIC8qIENvbXBsZXRpb25IYW5kbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBsZXRpb25IYW5kbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTQ2QkFBOUM4MjU4QUQ1QTUwMDc5NTg3NyAvKiBNYWNoU2VtYXBo
b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hY2hTZW1hcGhv
cmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NkJBQTlDOTI1OEFENUE1MDA3
OTU4NzcgLyogTWFjaFNlbWFwaG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNYWNoU2VtYXBob3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QkVCNkU5
MjJGRkRERDUwMDI2OTg2NyAvKiBSZWZDb3VudGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
ZkNvdW50ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MERFMzVGMzIxNUJC
MDE1MDBCOTc5QzcgLyogRXh0ZXJuYWxTdHJpbmdJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEV4dGVybmFsU3RyaW5nSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUwREUzNUY0MjE1QkIwMTUwMEI5NzlDNyAvKiBFeHRlcm5hbFN0cmlu
Z0ltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0ZXJuYWxTdHJpbmdJ
bXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTQ4LDggKzE1NDUsNiBAQAog
CQkJCTE0M0RERTk1MjBDOEJDMzcwMDdGNzZGQSAvKiBFbnRpdGxlbWVudHMubW0gKi8sCiAJCQkJ
QTMzMUQ5NUUyMUYyNDlGNjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1Db2NvYS5tbSAqLywKIAkJCQkx
QzUwM0JFNTIzQUFFMEFFMDA3MkU2NkIgLyogTGFuZ3VhZ2VDb2NvYS5tbSAqLywKLQkJCQk0NkJB
QTlDODI1OEFENUE1MDA3OTU4NzcgLyogTWFjaFNlbWFwaG9yZS5jcHAgKi8sCi0JCQkJNDZCQUE5
QzkyNThBRDVBNTAwNzk1ODc3IC8qIE1hY2hTZW1hcGhvcmUuaCAqLywKIAkJCQk3QTZFQkEzMzIw
NzQ2QzM0MDA0RjlDNDQgLyogTWFjaFNlbmRSaWdodC5jcHAgKi8sCiAJCQkJQThBNDcyQzUxNTFB
ODI1QTAwNDEyM0ZGIC8qIE1haW5UaHJlYWRDb2NvYS5tbSAqLywKIAkJCQlBREYyQ0U2NTFFMzlG
MTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwICovLApAQCAtMTcwOCw3ICsx
NzAzLDYgQEAKIAkJCQkwRjYwRjMyRjFERkNCRDFCMDA0MTZENkMgLyogTG9ja2VkUHJpbnRTdHJl
YW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNCNUI0NTEyMjE3MUVFQTAwNEI3QUE3IC8qIExv
Z2dlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzUzNEYyQTFFQzBFMTBFMDAxNDFCMkYgLyog
TWFjaEV4Y2VwdGlvbnMuZGVmcyBpbiBTb3VyY2VzICovLAotCQkJCTQ2Q0I2QjNEMjU4QUQ5M0Yw
MDYzMzNCMyAvKiBNYWNoU2VtYXBob3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBNkVCQTM0
MjA3NDZDMzQwMDRGOUM0NCAvKiBNYWNoU2VuZFJpZ2h0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4QTQ3M0U1MTUxQTgyNUIwMDQxMjNGRiAvKiBNYWluVGhyZWFkLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4QTQ3M0U0MTUxQTgyNUIwMDQxMjNGRiAvKiBNYWluVGhyZWFkQ29jb2EubW0gaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhv
cmUuY3BwIGIvU291cmNlL1dURi93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyZmNmMTVjMDdkOTI0YTQ1MDc5MzdmZDIzMDQ1NzJjNGRi
YmI5NjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dURi93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk1h
Y2hTZW1hcGhvcmUuaCIKLQotI2luY2x1ZGUgPG1hY2gvbWFjaC5oPgotCi1uYW1lc3BhY2UgV1RG
IHsKLQotTWFjaFNlbWFwaG9yZTo6TWFjaFNlbWFwaG9yZSgpCi17Ci0gICAgYXV0byByZXQgPSBz
ZW1hcGhvcmVfY3JlYXRlKG1hY2hfdGFza19zZWxmKCksICZtX3NlbWFwaG9yZSwgU1lOQ19QT0xJ
Q1lfRklGTywgMCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXQsIHJldCA9PSBLRVJOX1NVQ0NFU1Mp
OwotfQotCi1NYWNoU2VtYXBob3JlOjpNYWNoU2VtYXBob3JlKE1hY2hTZW5kUmlnaHQmJiBzZW5k
UmlnaHQpCi0gICAgOiBtX3NlbmRSaWdodChXVEZNb3ZlKHNlbmRSaWdodCkpCi0gICAgLCBtX3Nl
bWFwaG9yZShtX3NlbmRSaWdodC5zZW5kUmlnaHQoKSkKLXsKLSAgICBBU1NFUlQobV9zZW5kUmln
aHQpOwotfQotCi1NYWNoU2VtYXBob3JlOjp+TWFjaFNlbWFwaG9yZSgpCi17Ci0gICAgaWYgKCFt
X3NlbmRSaWdodCkKLSAgICAgICAgc2VtYXBob3JlX2Rlc3Ryb3kobWFjaF90YXNrX3NlbGYoKSwg
bV9zZW1hcGhvcmUpOwotfQotCi12b2lkIE1hY2hTZW1hcGhvcmU6OnNpZ25hbCgpCi17Ci0gICAg
c2VtYXBob3JlX3NpZ25hbChtX3NlbWFwaG9yZSk7Ci19Ci0KLXZvaWQgTWFjaFNlbWFwaG9yZTo6
d2FpdCgpCi17Ci0gICAgc2VtYXBob3JlX3dhaXQobV9zZW1hcGhvcmUpOwotfQotCi12b2lkIE1h
Y2hTZW1hcGhvcmU6OndhaXRGb3IoU2Vjb25kcyB0aW1lb3V0KQotewotICAgIGF1dG8gc2Vjb25k
cyA9IHRpbWVvdXQuc2Vjb25kc0FzPHVuc2lnbmVkPigpOwotICAgIHNlbWFwaG9yZV90aW1lZHdh
aXQobV9zZW1hcGhvcmUsIHsgc2Vjb25kcywgc3RhdGljX2Nhc3Q8Y2xvY2tfcmVzX3Q+KHRpbWVv
dXQubmFub3NlY29uZHNBczx1aW50NjRfdD4oKSAtIHNlY29uZHMgKiBOU0VDX1BFUl9TRUMpIH0p
OwotfQotCi1NYWNoU2VuZFJpZ2h0IE1hY2hTZW1hcGhvcmU6OmNyZWF0ZVNlbmRSaWdodCgpCi17
Ci0gICAgcmV0dXJuIE1hY2hTZW5kUmlnaHQ6OmNyZWF0ZShtX3NlbWFwaG9yZSk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvTWFjaFNl
bWFwaG9yZS5oIGIvU291cmNlL1dURi93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTdjZWEwNDZiODEyY2JjM2ViM2E3MjEzMGQ5YTViYTAw
OTNmOTJmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDU2
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPG1hY2gvc2Vt
YXBob3JlLmg+Ci0jaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KLSNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgotCi1uYW1lc3BhY2UgV1RG
IHsKLQotY2xhc3MgTWFjaFNlbWFwaG9yZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFjaFNlbWFwaG9yZSk7Ci1wdWJsaWM6Ci0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIE1hY2hTZW1hcGhvcmUoKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgZXhwbGljaXQgTWFjaFNlbWFwaG9yZShNYWNoU2VuZFJpZ2h0JiYpOwotICAgIFdURl9FWFBP
UlRfUFJJVkFURSB+TWFjaFNlbWFwaG9yZSgpOwotCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgc2lnbmFsKCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgd2FpdCgpOwotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIHdhaXRGb3IoU2Vjb25kcyk7Ci0KLSAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgTWFjaFNlbmRSaWdodCBjcmVhdGVTZW5kUmlnaHQoKTsKLQotcHJpdmF0ZToKLSAg
ICBNYWNoU2VuZFJpZ2h0IG1fc2VuZFJpZ2h0OwotICAgIHNlbWFwaG9yZV90IG1fc2VtYXBob3Jl
IHsgU0VNQVBIT1JFX05VTEwgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBX
VEY6Ok1hY2hTZW1hcGhvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggOTAwNTY2OTRhNTMwMGRjM2E4YmZk
ZDFlZTMwZWMxNmJkOGViZGVhOC4uODI3OGJjZTE0YzVmMWMyNGJlN2M5MDIyZDVmZDQwYjI0YzU4
ZWZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNDgsNyArNDgsNiBAQAogI2luY2x1ZGUgIlJlbW90ZU1l
ZGlhUmVzb3VyY2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCIKLSNpbmNs
dWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVk
ZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCkBAIC0yOTEsMTAgKzI5
MCwxMCBAQCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6YXVkaW9TZXNzaW9uUHJveHkoKQogfQogI2VuZGlmCiAKLXZvaWQgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Q3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3Jl
KQogewotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVu
c3VyZShwYXJhbWV0ZXJzLmlkZW50aWZpZXIsIFsmXSgpIHsKLSAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+KFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOworICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShpZGVudGlmaWVyLCBbJl0o
KSB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFw
cGVyPihSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdU
Rk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKSk7CiAgICAgfSk7CiAgICAgQVNTRVJU
X1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4
IDQ0MThjYTZhZWEyYTQwOGUzNzc1Mzg5MGUxZDMwZGRlYzc2ZWM3Y2EuLjdiYWRkMzc3NjljZjUy
ZmQ1NDBiNGZiNzc3ZDA4ODc0NjYwNGY1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNjUsNyArNjUsNiBAQCBj
bGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDsKIGNsYXNzIFJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXI7CiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Owog
c3RydWN0IFJlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRpb247Ci1zdHJ1Y3QgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcwogICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+CkBAIC0xMjcsNyAr
MTI2LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2VuZGlmCiAKLSAgICB2b2lkIGNyZWF0ZVJlbmRl
cmluZ0JhY2tlbmQoUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsK
KyAgICB2b2lkIGNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIsIElQQzo6U2VtYXBob3JlJiYgcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpOwogICAgIHZv
aWQgcmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwog
CiAjaWYgRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAwY2Jj
NWQ4Nzk4M2U2NjZlNDhlODM5YTY0NjQ4OTg3OTUwYTM5MmJmLi45NTQ3MTBhMzQwZDJmNThkYTli
NWU5NTdjYmMzNGQ1ZTVhZmQ5ODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
MjMsNyArMjMsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBXYW50c0Rpc3BhdGNoTWVzc2FnZSB7Ci0gICAgdm9pZCBD
cmVhdGVSZW5kZXJpbmdCYWNrZW5kKHN0cnVjdCBXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVycykKKyAgICB2b2lkIENyZWF0ZVJlbmRlcmlu
Z0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyLCBJ
UEM6OlNlbWFwaG9yZSByZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkKICAgICB2b2lkIFJlbGVh
c2VSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHZvaWQgQ3Jl
YXRlR3JhcGhpY3NDb250ZXh0R0woc3RydWN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXgg
MzJhZmQzMTBiZTVjMzAzMDY0N2Q3MjU4YzIzZmRhMDEwMmIyZDc3NS4uMDNkMTYyZmRkMTFiMzVl
MjYyMGQyMmMxOTg0MjQ5ODg3OWJiNDU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAt
MzMsMTYgKzMzLDEzIEBACiAjaW5jbHVkZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oIgog
I2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5oIgotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRD
cmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIlNlbWFwaG9yZS5oIgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtR
dWV1ZS5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSA8d3RmL2NvY29hL01hY2hT
ZW1hcGhvcmUuaD4KLSNlbmRpZgogCiAjZGVmaW5lIFRFUk1JTkFURV9XRUJfUFJPQ0VTU19XSVRI
X01FU1NBR0UobWVzc2FnZSkgXAogICAgIFJFTEVBU0VfTE9HX0ZBVUxUKElQQywgIlJlcXVlc3Rp
bmcgdGVybWluYXRpb24gb2Ygd2ViIHByb2Nlc3MgJSIgUFJJdTY0ICIgZm9yIHJlYXNvbjogJSIg
UFVCTElDX0xPR19TVFJJTkcsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+d2ViUHJvY2Vz
c0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjbWVzc2FnZSk7IFwKQEAgLTY1LDE4ICs2MiwxNiBA
QAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmPFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZShHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK1JlZjxSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIgaWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJiByZXN1bWVEaXNw
bGF5TGlzdFNlbWFwaG9yZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVy
cykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKGdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGlkZW50aWZpZXIsIFdURk1vdmUocmVzdW1lRGlzcGxh
eUxpc3RTZW1hcGhvcmUpKSk7CiB9CiAKLVJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcywgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIHBh
cmFtZXRlcnMpCitSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2VtYXBob3JlJiYgcmVz
dW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpCiAgICAgOiBtX3dvcmtRdWV1ZShXb3JrUXVldWU6OmNy
ZWF0ZSgiUmVtb3RlUmVuZGVyaW5nQmFja2VuZCB3b3JrIHF1ZXVlIiwgV29ya1F1ZXVlOjpUeXBl
OjpTZXJpYWwsIFdvcmtRdWV1ZTo6UU9TOjpVc2VySW50ZXJhY3RpdmUpKQogICAgICwgbV9ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCi0gICAgLCBt
X3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKHBhcmFtZXRlcnMuaWRlbnRpZmllcikKLSNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICAsIG1fcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUobWFrZVVu
aXF1ZTxNYWNoU2VtYXBob3JlPihXVEZNb3ZlKHBhcmFtZXRlcnMuc2VuZFJpZ2h0Rm9yUmVzdW1l
RGlzcGxheUxpc3RTZW1hcGhvcmUpKSkKLSNlbmRpZgorICAgICwgbV9yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9y
ZShXVEZNb3ZlKHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKSkKIHsKICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwogICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlv
bigpLmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dvcmtRdWV1ZSwgdGhpcywgbV9yZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKQEAgLTIzMSw3ICsyMjYsNyBAQCBS
ZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om5leHREZXN0aW5hdGlv
bkltYWdlQnVmZmVyQWZ0ZXJBcHBseQogCiAgICAgICAgICAgICBoYW5kbGUuc3RhcnRXYWl0aW5n
KCk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgICAgICBtX3Jlc3VtZURpc3BsYXlMaXN0
U2VtYXBob3JlLT53YWl0Rm9yKDMwX3VzKTsKKyAgICAgICAgICAgIG1fcmVzdW1lRGlzcGxheUxp
c3RTZW1hcGhvcmUud2FpdEZvcigzMF91cyk7CiAjZWxzZQogICAgICAgICAgICAgc2xlZXAoMzBf
dXMpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBlNjM4OTkwM2I2NTBiYThkOTcz
ZGFmOWIzZGNjYTY0NTM1NmY0NWY4Li41MThhNmFhYWZjMjg4ZGUzOGZiZTAwZmZlYjIwYjg2ZjQw
YzYyNzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTM1LDE3ICszNSwxMyBAQAogI2luY2x1
ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlLmgiCiAj
aW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTZW1hcGhv
cmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0Rpc3BsYXlMaXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJlcGxheWVyLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBN
YWNoU2VtYXBob3JlOwotfQotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFj
ZSBEaXNwbGF5TGlzdCB7CkBAIC02MiwxNCArNTgsMTQgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlOwogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzczsKLXN0cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
OwogCiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kCiAgICAgOiBwcml2YXRlIElQQzo6TWVz
c2FnZVNlbmRlcgogICAgICwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyCiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJS
ZWFkaW5nQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKKworICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZD4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJiByZXN1bWVEaXNwbGF5TGlzdFNl
bWFwaG9yZSk7CiAgICAgdmlydHVhbCB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpOwogCiAgICAg
UmVtb3RlUmVzb3VyY2VDYWNoZSYgcmVtb3RlUmVzb3VyY2VDYWNoZSgpIHsgcmV0dXJuIG1fcmVt
b3RlUmVzb3VyY2VDYWNoZTsgfQpAQCAtODYsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aXNjb25uZWN0KCk7CiAKIHByaXZhdGU6Ci0gICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFy
YW1ldGVycyYmKTsKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJik7
CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9V
TlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlv
bikgb3ZlcnJpZGU7CiAKQEAgLTE0OCw5ICsxNDQsNyBAQCBwcml2YXRlOgogICAgIFJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI7CiAgICAgSGFz
aE1hcDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIFJlZlB0cjxE
aXNwbGF5TGlzdFJlYWRlckhhbmRsZT4+IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzOwogICAg
IE9wdGlvbmFsPFBlbmRpbmdXYWtldXBJbmZvcm1hdGlvbj4gbV9wZW5kaW5nV2FrZXVwSW5mbzsK
LSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpNYWNoU2VtYXBo
b3JlPiBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOwotI2VuZGlmCisgICAgSVBDOjpTZW1h
cGhvcmUgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAKaW5kZXggMGY4NDA3YzFmM2Rj
Nzg3YjUwZTliZjYwOTkxYWVlN2NiNDEwYjRmYS4uY2FmOTMwZGQzY2Y1NWQ2MWNhNTg2MmUzYTNj
NDU2NWY5OTI0Nzg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCkBAIC0yOSw5
ICsyOSw5IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCX0FVRElPKQog
CiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlNlbWFw
aG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9VdGlsaXRpZXMuaD4KICNpbmNsdWRlIDx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlT
ZW1hcGhvcmUuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIlNoYXJlZFJpbmdC
dWZmZXJTdG9yYWdlLmgiCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DQUF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQXVkaW9CdWZmZXJMaXN0Lmg+Ci0jaW5jbHVkZSA8d3Rm
L2NvY29hL01hY2hTZW1hcGhvcmUuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTUyLDkgKzUxLDkgQEAgY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbgogewogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4gY3JlYXRlKEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlm
aWVyIGlkZW50aWZpZXIsCi0gICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWlu
dDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUpCisgICAgICAg
IGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5u
ZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBm
bG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIElQQzo6U2VtYXBob3JlJiYgcmVuZGVyU2VtYXBob3Jl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbihjb25uZWN0aW9uLCBpZGVudGlmaWVyLCBpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0
Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIGhhcmR3YXJlU2Ft
cGxlUmF0ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uKGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5w
dXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVT
YW1wbGVSYXRlLCBXVEZNb3ZlKHJlbmRlclNlbWFwaG9yZSkpKTsKICAgICB9CiAKICAgICB2aXJ0
dWFsIH5SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKCkgPSBkZWZhdWx0OwpAQCAtNjgsOCArNjcsNiBA
QCBwdWJsaWM6CiAgICAgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgTWFjaFNlbmRSaWdo
dCBjcmVhdGVSZW5kZXJTZW1hcGhvcmVTZW5kUmlnaHQoKSB7IHJldHVybiBtX3JlbmRlclNlbWFw
aG9yZS5jcmVhdGVTZW5kUmlnaHQoKTsgfQotCiAgICAgdm9pZCBhdWRpb1NhbXBsZXNTdG9yYWdl
Q2hhbmdlZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaXBjSGFuZGxlLCBjb25zdCBX
ZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBu
dW1iZXJPZkZyYW1lcykKICAgICB7CiAgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWVS
ZWY8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFJlYWRPbmx5U2hhcmVkUmlu
Z0J1ZmZlclN0b3JhZ2U+KGlwY0hhbmRsZS5oYW5kbGUpLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZG
cmFtZXMpOwpAQCAtMTA0LDEyICsxMDEsMTMgQEAgcHVibGljOgogICAgIGJvb2wgaXNQbGF5aW5n
KCkgY29uc3QgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KIAogcHJpdmF0ZToKLSAgICBSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNl
SWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlKQor
ICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
aW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNh
bXBsZVJhdGUsIElQQzo6U2VtYXBob3JlJiYgcmVuZGVyU2VtYXBob3JlKQogICAgICAgICA6IG1f
aWQoaWRlbnRpZmllcikKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgLCBtX2F1ZGlvT3V0
cHV0VW5pdEFkYXB0b3IoKnRoaXMpCiAgICAgICAgICwgbV9yaW5nQnVmZmVyKG1ha2VVbmlxdWVS
ZWY8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPigpKQogI2VuZGlmCisgICAgICAgICwgbV9yZW5kZXJT
ZW1hcGhvcmUoV1RGTW92ZShyZW5kZXJTZW1hcGhvcmUpKQogICAgIHsKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICAgICAgbV9hdWRpb091dHB1dFVuaXRBZGFwdG9yLmNvbmZpZ3VyZShoYXJkd2Fy
ZVNhbXBsZVJhdGUsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwpAQCAtMTQ4LDkgKzE0Niw5IEBA
IHByaXZhdGU6CiAgICAgV2ViQ29yZTo6QXVkaW9PdXRwdXRVbml0QWRhcHRvciBtX2F1ZGlvT3V0
cHV0VW5pdEFkYXB0b3I7CiAKICAgICBVbmlxdWVSZWY8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPiBt
X3JpbmdCdWZmZXI7Ci0gICAgTWFjaFNlbWFwaG9yZSBtX3JlbmRlclNlbWFwaG9yZTsKICAgICB1
aW50NjRfdCBtX3N0YXJ0RnJhbWUgeyAwIH07CiAjZW5kaWYKKyAgICBJUEM6OlNlbWFwaG9yZSBt
X3JlbmRlclNlbWFwaG9yZTsKIAogICAgIGJvb2wgbV9pc1BsYXlpbmcgeyBmYWxzZSB9OwogfTsK
QEAgLTE2MiwxNiArMTYwLDEyIEBAIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcihHUFVDb25uZWN0aW9uVG9XZWJQCiAKIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjp+UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoKSA9
IGRlZmF1bHQ7CiAKLXZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmNyZWF0ZUF1
ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1i
ZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0
IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwgQ3JlYXRpb25Db21wbGV0aW9u
SGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlcjo6Y3JlYXRlQXVkaW9EZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNl
SWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCBJ
UEM6OlNlbWFwaG9yZSYmIHJlbmRlclNlbWFwaG9yZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIG5ld0lEID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpOwotICAgIGF1dG8gZGVzdGluYXRpb24gPSBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUobV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LCBuZXdJRCwgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91
dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlLCBoYXJkd2FyZVNhbXBsZVJhdGUpOworICAgIGF1dG8g
ZGVzdGluYXRpb24gPSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUobV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLCBuZXdJRCwgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5u
ZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlLCBoYXJkd2FyZVNhbXBsZVJh
dGUsIFdURk1vdmUocmVuZGVyU2VtYXBob3JlKSk7CiAgICAgbV9hdWRpb0Rlc3RpbmF0aW9ucy5h
ZGQobmV3SUQsIGRlc3RpbmF0aW9uLmNvcHlSZWYoKSk7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgY29tcGxldGlvbkhhbmRsZXIobmV3SUQsIGRlc3RpbmF0aW9uLT5jcmVhdGVSZW5kZXJTZW1h
cGhvcmVTZW5kUmlnaHQoKSk7Ci0jZWxzZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ld0lEKTsK
LSNlbmRpZgogfQogCiB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpkZWxldGVB
dWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyLmgKaW5kZXggYjgzZjI5ZjhkYzEzM2ExYTJjM2E4NzRiYTczM2I1
ODBiMjZlNzYyZC4uMWQwNmQ5OGYxODcwYmY3MTNhODQ4NDUwMGJkODk0YWEwMzJkMTQ5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIlNlbWFwaG9yZS5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgog
I2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KQEAg
LTM4LDEwICszOSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQUF1ZGlvU3RyZWFt
RGVzY3JpcHRpb247CiB9Ci0KLW5hbWVzcGFjZSBXVEYgewotY2xhc3MgTWFjaFNlbmRSaWdodDsK
LX0KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYzLDEyICs2MCw4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwogCi0jaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgdXNpbmcgQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlciA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIFdU
Rjo6TWFjaFNlbmRSaWdodCk+OwotI2Vsc2UKLSAgICB1c2luZyBDcmVhdGlvbkNvbXBsZXRpb25I
YW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRl
bnRpZmllcik+OwotI2VuZGlmCi0gICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0
IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1
aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBo
YXJkd2FyZVNhbXBsZVJhdGUsIENyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdm9p
ZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWlu
dDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIElQQzo6U2Vt
YXBob3JlJiYgcmVuZGVyU2VtYXBob3JlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdl
YktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIpPiYmKTsKKwogICAgIHZvaWQg
ZGVsZXRlQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHN0YXJ0QXVkaW9EZXN0aW5h
dGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzdG9wQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggNTU3
ODk4NDZkNzRkODU3NGJiZGExYWJkZjI3MThiZDNiYTViYzRlNC4uN2ZkMjIyOGRkMzA4NDc3ZmFk
ZjY5ZDQ3MGQ1ZmQ1ZTFjOTkxYjRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlci5tZXNzYWdlcy5pbgpAQCAtMjQsMTIgKzI0LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShXRUJfQVVESU8pCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIENy
ZWF0ZUF1ZGlvRGVzdGluYXRpb24oU3RyaW5nIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJl
ck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQg
c2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlKSAtPiAoV2ViS2l0OjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBNYWNoU2VuZFJpZ2h0IHJlbmRl
clNlbWFwaG9yZVNlbmRSaWdodCkgU3luY2hyb25vdXMKLSNlbmRpZgotI2lmICFQTEFURk9STShD
T0NPQSkKLSAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKFN0cmluZyBpbnB1dERldmljZUlkLCB1
aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hh
bm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkgLT4gKFdl
YktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgU3luY2hy
b25vdXMKLSNlbmRpZgorICAgIENyZWF0ZUF1ZGlvRGVzdGluYXRpb24oU3RyaW5nIGlucHV0RGV2
aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRl
LCBJUEM6OlNlbWFwaG9yZSByZW5kZXJTZW1hcGhvcmUpIC0+IChXZWJLaXQ6OlJlbW90ZUF1ZGlv
RGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIFN5bmNocm9ub3VzCiAKICAgICBEZWxl
dGVBdWRpb0Rlc3RpbmF0aW9uKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZp
ZXIgaWRlbnRpZmllcikgLT4gKCkgQXN5bmMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2VtYXBob3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1Nl
bWFwaG9yZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk5ODRjNGU2NDg3NzkyMGY1MjhjZDEwMTkzYWRlOGM2
Zjc5ZWZmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1Nl
bWFwaG9yZS5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJTZW1hcGhvcmUuaCIKKworI2lmICFQTEFURk9STShDT0NPQSkKKwor
bmFtZXNwYWNlIElQQyB7CisKK1NlbWFwaG9yZTo6U2VtYXBob3JlKCkgPSBkZWZhdWx0OworCitT
ZW1hcGhvcmU6OlNlbWFwaG9yZShTZW1hcGhvcmUmJikgPSBkZWZhdWx0OworCitTZW1hcGhvcmU6
On5TZW1hcGhvcmUoKSA9IGRlZmF1bHQ7CisKK1NlbWFwaG9yZSYgU2VtYXBob3JlOjpvcGVyYXRv
cj0oU2VtYXBob3JlJiYpID0gZGVmYXVsdDsKKwordm9pZCBTZW1hcGhvcmU6OmVuY29kZShFbmNv
ZGVyJikgY29uc3QgeyB9CisKK09wdGlvbmFsPFNlbWFwaG9yZT4gU2VtYXBob3JlOjpkZWNvZGUo
RGVjb2RlciYpCit7CisgICAgcmV0dXJuIFNlbWFwaG9yZSB7IH07Cit9CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TZW1hcGhvcmUuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NlbWFwaG9yZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5ODk3ZDY0
ZWEwM2FhN2FiNGU3MzgyOWNkZjliZGNjZDI1YTY1NTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TZW1hcGhvcmUuaApAQCAtMCwwICsxLDcwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgorCisjaWYg
UExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8bWFjaC9zZW1hcGhvcmUuaD4KKyNpbmNsdWRlIDx3
dGYvTWFjaFNlbmRSaWdodC5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgRGVj
b2RlcjsKK2NsYXNzIEVuY29kZXI7CitjbGFzcyBTZW1hcGhvcmUgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNlbWFwaG9yZSk7CitwdWJs
aWM6CisgICAgU2VtYXBob3JlKCk7CisgICAgU2VtYXBob3JlKFNlbWFwaG9yZSYmKTsKKyAgICB+
U2VtYXBob3JlKCk7CisgICAgU2VtYXBob3JlJiBvcGVyYXRvcj0oU2VtYXBob3JlJiYpOworICAg
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgT3B0aW9uYWw8U2VtYXBo
b3JlPiBkZWNvZGUoRGVjb2RlciYpOworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBz
aWduYWwoKTsKKyAgICB2b2lkIHdhaXQoKTsKKyAgICB2b2lkIHdhaXRGb3IoU2Vjb25kcyk7Cisg
ICAgZXhwbGljaXQgU2VtYXBob3JlKE1hY2hTZW5kUmlnaHQmJik7CisgICAgTWFjaFNlbmRSaWdo
dCBjcmVhdGVTZW5kUmlnaHQoKSBjb25zdDsKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkg
Y29uc3QgeyByZXR1cm4gbV9zZW5kUmlnaHQgfHwgbV9zZW1hcGhvcmUgIT0gU0VNQVBIT1JFX05V
TEw7IH0KKyNlbHNlCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KKyNlbmRpZgorCitwcml2YXRlOgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZv
aWQgZGVzdHJveSgpOworICAgIE1hY2hTZW5kUmlnaHQgbV9zZW5kUmlnaHQ7CisgICAgc2VtYXBo
b3JlX3QgbV9zZW1hcGhvcmUgeyBTRU1BUEhPUkVfTlVMTCB9OworI2VuZGlmCit9OworCit9IC8v
IG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2Nv
Y29hL1NlbWFwaG9yZUNvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29h
L1NlbWFwaG9yZUNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDI4MDdlMTFiODE0NGU0NzU5NTdmYzRl
MDM0OGIzOTU0NjUxZWFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvY29jb2EvU2VtYXBob3JlQ29jb2EuY3BwCkBAIC0wLDAgKzEsMTIxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNlbWFwaG9yZS5oIgorCisjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8bWFjaC9tYWNoLmg+CisK
K25hbWVzcGFjZSBJUEMgeworCitTZW1hcGhvcmU6OlNlbWFwaG9yZSgpCit7CisgICAgYXV0byBy
ZXQgPSBzZW1hcGhvcmVfY3JlYXRlKG1hY2hfdGFza19zZWxmKCksICZtX3NlbWFwaG9yZSwgU1lO
Q19QT0xJQ1lfRklGTywgMCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXQsIHJldCA9PSBLRVJOX1NV
Q0NFU1MpOworfQorCitTZW1hcGhvcmU6OlNlbWFwaG9yZShTZW1hcGhvcmUmJiBvdGhlcikKKyAg
ICA6IG1fc2VuZFJpZ2h0KFdURk1vdmUob3RoZXIubV9zZW5kUmlnaHQpKQorICAgICwgbV9zZW1h
cGhvcmUoc3RkOjpleGNoYW5nZShvdGhlci5tX3NlbWFwaG9yZSwgU0VNQVBIT1JFX05VTEwpKQor
eworfQorCitTZW1hcGhvcmU6OlNlbWFwaG9yZShNYWNoU2VuZFJpZ2h0JiYgc2VuZFJpZ2h0KQor
ICAgIDogbV9zZW5kUmlnaHQoV1RGTW92ZShzZW5kUmlnaHQpKQorICAgICwgbV9zZW1hcGhvcmUo
bV9zZW5kUmlnaHQuc2VuZFJpZ2h0KCkpCit7CisgICAgQVNTRVJUKG1fc2VuZFJpZ2h0KTsKK30K
KworU2VtYXBob3JlOjp+U2VtYXBob3JlKCkKK3sKKyAgICBkZXN0cm95KCk7Cit9CisKK1NlbWFw
aG9yZSYgU2VtYXBob3JlOjpvcGVyYXRvcj0oU2VtYXBob3JlJiYgb3RoZXIpCit7CisgICAgaWYg
KHRoaXMgIT0gJm90aGVyKSB7CisgICAgICAgIGRlc3Ryb3koKTsKKyAgICAgICAgbV9zZW5kUmln
aHQgPSBXVEZNb3ZlKG90aGVyLm1fc2VuZFJpZ2h0KTsKKyAgICAgICAgbV9zZW1hcGhvcmUgPSBz
dGQ6OmV4Y2hhbmdlKG90aGVyLm1fc2VtYXBob3JlLCBTRU1BUEhPUkVfTlVMTCk7CisgICAgfQor
CisgICAgcmV0dXJuICp0aGlzOworfQorCit2b2lkIFNlbWFwaG9yZTo6c2lnbmFsKCkKK3sKKyAg
ICBhdXRvIHJldCA9IHNlbWFwaG9yZV9zaWduYWwobV9zZW1hcGhvcmUpOworICAgIEFTU0VSVF9V
TlVTRUQocmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTKTsKK30KKwordm9pZCBTZW1hcGhvcmU6Ondh
aXQoKQoreworICAgIGF1dG8gcmV0ID0gc2VtYXBob3JlX3dhaXQobV9zZW1hcGhvcmUpOworICAg
IEFTU0VSVF9VTlVTRUQocmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTKTsKK30KKwordm9pZCBTZW1h
cGhvcmU6OndhaXRGb3IoU2Vjb25kcyB0aW1lb3V0KQoreworICAgIGF1dG8gc2Vjb25kcyA9IHRp
bWVvdXQuc2Vjb25kc0FzPHVuc2lnbmVkPigpOworICAgIGF1dG8gcmV0ID0gc2VtYXBob3JlX3Rp
bWVkd2FpdChtX3NlbWFwaG9yZSwgeyBzZWNvbmRzLCBzdGF0aWNfY2FzdDxjbG9ja19yZXNfdD4o
dGltZW91dC5uYW5vc2Vjb25kc0FzPHVpbnQ2NF90PigpIC0gc2Vjb25kcyAqIE5TRUNfUEVSX1NF
QykgfSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXQsIHJldCA9PSBLRVJOX1NVQ0NFU1MgfHwgcmV0
ID09IEtFUk5fT1BFUkFUSU9OX1RJTUVEX09VVCk7Cit9CisKK01hY2hTZW5kUmlnaHQgU2VtYXBo
b3JlOjpjcmVhdGVTZW5kUmlnaHQoKSBjb25zdAoreworICAgIHJldHVybiBNYWNoU2VuZFJpZ2h0
OjpjcmVhdGUobV9zZW1hcGhvcmUpOworfQorCit2b2lkIFNlbWFwaG9yZTo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBjcmVhdGVTZW5kUmlnaHQoKTsK
K30KKworT3B0aW9uYWw8U2VtYXBob3JlPiBTZW1hcGhvcmU6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0OworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoc2VuZFJpZ2h0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gT3B0aW9uYWw8U2VtYXBob3JlPiB7IHN0ZDo6aW5fcGxhY2UsIFdURk1vdmUoc2VuZFJpZ2h0
KSB9OworfQorCisKK3ZvaWQgU2VtYXBob3JlOjpkZXN0cm95KCkKK3sKKyAgICBpZiAobV9zZW5k
UmlnaHQpIHsKKyAgICAgICAgbV9zZW5kUmlnaHQgPSBNYWNoU2VuZFJpZ2h0KCk7CisgICAgICAg
IG1fc2VtYXBob3JlID0gU0VNQVBIT1JFX05VTEw7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgaWYgKG1fc2VtYXBob3JlID09IFNFTUFQSE9SRV9OVUxMKQorICAgICAgICByZXR1cm47Cisg
ICAgYXV0byByZXQgPSBzZW1hcGhvcmVfZGVzdHJveShtYWNoX3Rhc2tfc2VsZigpLCBtX3NlbWFw
aG9yZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXQsIHJldCA9PSBLRVJOX1NVQ0NFU1MpOworICAg
IG1fc2VtYXBob3JlID0gU0VNQVBIT1JFX05VTEw7Cit9CisKK30gLy8gbmFtZXNwYWNlIElQQwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVz
dC5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHkK
aW5kZXggNmVjNmViNGRhNTU3NzNmY2VkNjNkMzgyMjMzYzMyNTgxOWE5YTNjMy4uZTRkZWU3ZWIw
YWY3MDhmZDUwN2Y0Yzk2ZmFlNGUyNWUxNjU2YzA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5CkBAIC0zOSw3ICszOSw3IEBAIHRl
c3RzX2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbihtb2R1bGVfZGlyZWN0b3J5LCAndGVzdHMnKQog
CiByZXNldF9yZXN1bHRzID0gRmFsc2UKIAotX3Rlc3RfcmVjZWl2ZXJfbmFtZXMgPSBbJ1Rlc3RX
aXRoU3VwZXJjbGFzcycsICdUZXN0V2l0aExlZ2FjeVJlY2VpdmVyJywgJ1Rlc3RXaXRob3V0QXR0
cmlidXRlcycsICdUZXN0V2l0aElmTWVzc2FnZSddCitfdGVzdF9yZWNlaXZlcl9uYW1lcyA9IFsn
VGVzdFdpdGhTdXBlcmNsYXNzJywgJ1Rlc3RXaXRoTGVnYWN5UmVjZWl2ZXInLCAnVGVzdFdpdGhv
dXRBdHRyaWJ1dGVzJywgJ1Rlc3RXaXRoSWZNZXNzYWdlJywgJ1Rlc3RXaXRoU2VtYXBob3JlJ10K
IAogCiBkZWYgcmVjZWl2ZXJfaGVhZGVyX2ZpbGVfbmFtZShyZWNlaXZlcl9uYW1lKToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWFrZWZpbGUgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlCmluZGV4IDg3OTZmZmJjNWEz
Zjg3YjkyM2VkNmM5ODAyMzkxYTg3NmJhYzM4MmUuLmIxZGQ3OTg4NjVhNTE1NDk4MjBiNzBkYmRi
NjFhY2Q2ZWFjYmMxZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvTWFrZWZpbGUKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9N
YWtlZmlsZQpAQCAtMSwyICsxLDIgQEAKIGFsbDoKLQlweXRob24gLi4vLi4vZ2VuZXJhdGUtbWVz
c2FnZS1yZWNlaXZlci5weSAuIFRlc3RXaXRoU3VwZXJjbGFzcyBUZXN0V2l0aExlZ2FjeVJlY2Vp
dmVyIFRlc3RXaXRob3V0QXR0cmlidXRlcyBUZXN0V2l0aElmTWVzc2FnZQorCXB5dGhvbiAuLi8u
Li9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5IC4gVGVzdFdpdGhTdXBlcmNsYXNzIFRlc3RX
aXRoTGVnYWN5UmVjZWl2ZXIgVGVzdFdpdGhvdXRBdHRyaWJ1dGVzIFRlc3RXaXRoSWZNZXNzYWdl
IFRlc3RXaXRoU2VtYXBob3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAKaW5k
ZXggNTk0MDQ0MzkwY2FkYWMyZmYwY2RmYWE5ZTMwNTA0NDI3NzgzODBmZS4uY2M2ODM2ODI4MWNk
NTkzZDQ2Y2YwYTc1ZTFhNjRkMGI3ZWYzOGM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFyZ3VtZW50RGVzY3Jp
cHRpb25zLmNwcApAQCAtNDAsMTIgKzQwLDE0IEBACiAjaW5jbHVkZSAiTWFjaFBvcnQuaCIKICNl
bmRpZgogI2luY2x1ZGUgIlBsdWdpbi5oIgorI2luY2x1ZGUgIlNlbWFwaG9yZS5oIgogI2luY2x1
ZGUgIlRlc3RDbGFzc05hbWUuaCIKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogI2luY2x1ZGUg
IlRlc3RUd29TdGF0ZUVudW0uaCIKICNlbmRpZgogI2luY2x1ZGUgIlRlc3RXaXRoSWZNZXNzYWdl
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJUZXN0V2l0aExlZ2FjeVJlY2VpdmVyTWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJUZXN0V2l0aFNlbWFwaG9yZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiVGVzdFdp
dGhTdXBlcmNsYXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJUZXN0V2l0aG91dEF0dHJpYnV0ZXNN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgpAQCAtMjE2LDYg
KzIxOCwxMCBAQCBPcHRpb25hbDxKU0M6OkpTVmFsdWU+IGpzVmFsdWVGb3JBcmd1bWVudHMoSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBNZQogICAgIGNhc2UgTWVzc2FnZU5hbWU6
OlRlc3RXaXRoSWZNZXNzYWdlX0xvYWRVUkw6CiAgICAgICAgIHJldHVybiBqc1ZhbHVlRm9yRGVj
b2RlZEFyZ3VtZW50czxNZXNzYWdlczo6VGVzdFdpdGhJZk1lc3NhZ2U6OkxvYWRVUkw6OkFyZ3Vt
ZW50cz4oZ2xvYmFsT2JqZWN0LCBkZWNvZGVyKTsKICNlbmRpZgorICAgIGNhc2UgTWVzc2FnZU5h
bWU6OlRlc3RXaXRoU2VtYXBob3JlX1NlbmRTZW1hcGhvcmU6CisgICAgICAgIHJldHVybiBqc1Zh
bHVlRm9yRGVjb2RlZEFyZ3VtZW50czxNZXNzYWdlczo6VGVzdFdpdGhTZW1hcGhvcmU6OlNlbmRT
ZW1hcGhvcmU6OkFyZ3VtZW50cz4oZ2xvYmFsT2JqZWN0LCBkZWNvZGVyKTsKKyAgICBjYXNlIE1l
c3NhZ2VOYW1lOjpUZXN0V2l0aFNlbWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlOgorICAgICAgICBy
ZXR1cm4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudHM8TWVzc2FnZXM6OlRlc3RXaXRoU2VtYXBo
b3JlOjpSZWNlaXZlU2VtYXBob3JlOjpBcmd1bWVudHM+KGdsb2JhbE9iamVjdCwgZGVjb2Rlcik7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNTE3LDYgKzUyMywxMiBA
QCBPcHRpb25hbDxWZWN0b3I8QXJndW1lbnREZXNjcmlwdGlvbj4+IG1lc3NhZ2VBcmd1bWVudERl
c2NyaXB0aW9ucyhNZXNzYWdlTmFtZSBuYQogICAgICAgICAgICAgeyJ2YWx1ZSIsICJpbnQ2NF90
IiwgbnVsbHB0ciwgZmFsc2V9LAogICAgICAgICB9OwogI2VuZGlmCisgICAgY2FzZSBNZXNzYWdl
TmFtZTo6VGVzdFdpdGhTZW1hcGhvcmVfU2VuZFNlbWFwaG9yZToKKyAgICAgICAgcmV0dXJuIFZl
Y3RvcjxBcmd1bWVudERlc2NyaXB0aW9uPiB7CisgICAgICAgICAgICB7InMwIiwgIklQQzo6U2Vt
YXBob3JlIiwgbnVsbHB0ciwgZmFsc2V9LAorICAgICAgICB9OworICAgIGNhc2UgTWVzc2FnZU5h
bWU6OlRlc3RXaXRoU2VtYXBob3JlX1JlY2VpdmVTZW1hcGhvcmU6CisgICAgICAgIHJldHVybiBW
ZWN0b3I8QXJndW1lbnREZXNjcmlwdGlvbj4geyB9OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvTWVzc2FnZU5hbWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
TWVzc2FnZU5hbWVzLmNwcAppbmRleCA3NmZhZDM3YzU0NjBhZGJjZmVhMzcyZDE4NjY1NTBmYTdj
OGE4NTEzLi40YzZlYzJlNjc5NGM1MWVmMmRkYTgzZmM2M2I2NjM5MGQwNjg2YjAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3Bw
CkBAIC03Miw2ICs3MiwxMCBAQCBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbihNZXNzYWdlTmFtZSBu
YW1lKQogICAgICAgICByZXR1cm4gIlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVGVzdFBhcmFtZXRl
ckF0dHJpYnV0ZXMiOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2
ZXJfVG91Y2hFdmVudDoKICAgICAgICAgcmV0dXJuICJUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1Rv
dWNoRXZlbnQiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU2VtYXBob3JlX1JlY2Vp
dmVTZW1hcGhvcmU6CisgICAgICAgIHJldHVybiAiVGVzdFdpdGhTZW1hcGhvcmVfUmVjZWl2ZVNl
bWFwaG9yZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTZW1hcGhvcmVfU2VuZFNl
bWFwaG9yZToKKyAgICAgICAgcmV0dXJuICJUZXN0V2l0aFNlbWFwaG9yZV9TZW5kU2VtYXBob3Jl
IjsKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfTG9hZFVSTDoKICAg
ICAgICAgcmV0dXJuICJUZXN0V2l0aFN1cGVyY2xhc3NfTG9hZFVSTCI7CiAgICAgY2FzZSBNZXNz
YWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2U6CkBAIC0xODEsNiAr
MTg1LDkgQEAgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFt
ZSkKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1Rlc3RQYXJh
bWV0ZXJBdHRyaWJ1dGVzOgogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVj
ZWl2ZXJfVG91Y2hFdmVudDoKICAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6VGVzdFdpdGhM
ZWdhY3lSZWNlaXZlcjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFNlbWFwaG9yZV9S
ZWNlaXZlU2VtYXBob3JlOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU2VtYXBob3Jl
X1NlbmRTZW1hcGhvcmU6CisgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6OlRlc3RXaXRoU2Vt
YXBob3JlOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19Mb2FkVVJM
OgogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNz
YWdlOgogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNN
ZXNzYWdlV2l0aENvbm5lY3Rpb246CkBAIC0yOTksNiArMzA2LDEwIEBAIGJvb2wgaXNWYWxpZE1l
c3NhZ2VOYW1lKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogICAgIGlmIChtZXNzYWdlTmFtZSA9
PSBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1RvdWNoRXZlbnQpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6
TWVzc2FnZU5hbWU6OlRlc3RXaXRoU2VtYXBob3JlX1JlY2VpdmVTZW1hcGhvcmUpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpU
ZXN0V2l0aFNlbWFwaG9yZV9TZW5kU2VtYXBob3JlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNz
X0xvYWRVUkwpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VO
YW1lcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMu
aAppbmRleCAyM2Y3NTYwODdkNjgzYWQyMmIwNjhlMmE3MWZkOTVhMGYzY2U1NTVlLi41Nzc2MTIx
MmZkZDI5Y2YxZTA5ZjdlYjAzNzAyNzY4NmYxZDQ5YTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmgKQEAgLTMxLDExICszMSwxMiBA
QCBuYW1lc3BhY2UgSVBDIHsKIGVudW0gY2xhc3MgUmVjZWl2ZXJOYW1lIDogdWludDhfdCB7CiAg
ICAgVGVzdFdpdGhJZk1lc3NhZ2UgPSAxCiAgICAgLCBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyID0g
MgotICAgICwgVGVzdFdpdGhTdXBlcmNsYXNzID0gMwotICAgICwgVGVzdFdpdGhvdXRBdHRyaWJ1
dGVzID0gNAotICAgICwgSVBDID0gNQotICAgICwgQXN5bmNSZXBseSA9IDYKLSAgICAsIEludmFs
aWQgPSA3CisgICAgLCBUZXN0V2l0aFNlbWFwaG9yZSA9IDMKKyAgICAsIFRlc3RXaXRoU3VwZXJj
bGFzcyA9IDQKKyAgICAsIFRlc3RXaXRob3V0QXR0cmlidXRlcyA9IDUKKyAgICAsIElQQyA9IDYK
KyAgICAsIEFzeW5jUmVwbHkgPSA3CisgICAgLCBJbnZhbGlkID0gOAogfTsKIAogZW51bSBjbGFz
cyBNZXNzYWdlTmFtZSA6IHVpbnQxNl90IHsKQEAgLTYwLDYgKzYxLDggQEAgZW51bSBjbGFzcyBN
ZXNzYWdlTmFtZSA6IHVpbnQxNl90IHsKICAgICAsIFRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVGVt
cGxhdGVUZXN0CiAgICAgLCBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1Rlc3RQYXJhbWV0ZXJBdHRy
aWJ1dGVzCiAgICAgLCBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1RvdWNoRXZlbnQKKyAgICAsIFRl
c3RXaXRoU2VtYXBob3JlX1JlY2VpdmVTZW1hcGhvcmUKKyAgICAsIFRlc3RXaXRoU2VtYXBob3Jl
X1NlbmRTZW1hcGhvcmUKICAgICAsIFRlc3RXaXRoU3VwZXJjbGFzc19Mb2FkVVJMCiAgICAgLCBU
ZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZQogICAgICwgVGVzdFdpdGhTdXBlcmNs
YXNzX1Rlc3RBc3luY01lc3NhZ2VXaXRoQ29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFNlbWFwaG9yZS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTZW1hcGhvcmUubWVz
c2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTBmZDJmZmU0OGMwNTFjZjZlMDk5Y2ZlNzcwOTEwYmRmOGVj
ODEzOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvVGVzdFdpdGhTZW1hcGhvcmUubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBUZXN0V2l0aFNl
bWFwaG9yZSB7CisgICAgdm9pZCBTZW5kU2VtYXBob3JlKElQQzo6U2VtYXBob3JlIHMwKQorICAg
IHZvaWQgUmVjZWl2ZVNlbWFwaG9yZSgpIC0+IChJUEM6OlNlbWFwaG9yZSByMCkKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTZW1hcGhv
cmVNZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9UZXN0V2l0aFNlbWFwaG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmY2ODY5
OTUzMjdmYzJmMjRiZWFkOTVjMDM3ZWVjOGRjMWQ3ODBlZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTZW1hcGhvcmVNZXNzYWdl
UmVjZWl2ZXIuY3BwCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
CisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTZW1hcGhvcmUuaCIKKworI2luY2x1ZGUg
IkRlY29kZXIuaCIKKyNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCisjaW5jbHVkZSAiU2VtYXBo
b3JlLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTZW1hcGhvcmVNZXNzYWdlcy5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKwordm9pZCBUZXN0V2l0aFNlbWFwaG9yZTo6ZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7Cisg
ICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTZW1hcGhvcmU6OlNlbmRTZW1hcGhv
cmU6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RX
aXRoU2VtYXBob3JlOjpTZW5kU2VtYXBob3JlPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTZW1h
cGhvcmU6OnNlbmRTZW1hcGhvcmUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFVOVVNF
RF9QQVJBTShjb25uZWN0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgVGVzdFdpdGhTZW1hcGhvcmU6OmRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYg
ZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK3sK
KyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFNlbWFwaG9yZTo6UmVjZWl2ZVNl
bWFwaG9yZTo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6
VGVzdFdpdGhTZW1hcGhvcmU6OlJlY2VpdmVTZW1hcGhvcmU+KGRlY29kZXIsICpyZXBseUVuY29k
ZXIsIHRoaXMsICZUZXN0V2l0aFNlbWFwaG9yZTo6cmVjZWl2ZVNlbWFwaG9yZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIFVOVVNF
RF9QQVJBTShkZWNvZGVyKTsKKyAgICBVTlVTRURfUEFSQU0ocmVwbHlFbmNvZGVyKTsKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU2VtYXBob3Jl
TWVzc2FnZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhT
ZW1hcGhvcmVNZXNzYWdlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmMzU2ZWVkYWE2NjNkMjEzNDU1YTkxZWIw
ZjFkN2RmNjZkNmY5YjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL1Rlc3RXaXRoU2VtYXBob3JlTWVzc2FnZXMuaApAQCAtMCwwICsxLDg2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgor
ICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENv
ZGVycy5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMu
aCIKKyNpbmNsdWRlICJUZXN0V2l0aFNlbWFwaG9yZU1lc3NhZ2VzUmVwbGllcy5oIgorI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2VtYXBob3JlOworfQorCituYW1lc3BhY2UgTWVz
c2FnZXMgeworbmFtZXNwYWNlIFRlc3RXaXRoU2VtYXBob3JlIHsKKworc3RhdGljIGlubGluZSBJ
UEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkKK3sKKyAgICByZXR1cm4gSVBD
OjpSZWNlaXZlck5hbWU6OlRlc3RXaXRoU2VtYXBob3JlOworfQorCitjbGFzcyBTZW5kU2VtYXBo
b3JlIHsKK3B1YmxpYzoKKyAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IElQ
Qzo6U2VtYXBob3JlJj47CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyBy
ZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTZW1hcGhvcmVfU2VuZFNlbWFwaG9yZTsg
fQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQg
U2VuZFNlbWFwaG9yZShjb25zdCBJUEM6OlNlbWFwaG9yZSYgczApCisgICAgICAgIDogbV9hcmd1
bWVudHMoczApCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRz
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgUmVjZWl2ZVNl
bWFwaG9yZSB7CitwdWJsaWM6CisgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTw+Owor
CisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2Fn
ZU5hbWU6OlRlc3RXaXRoU2VtYXBob3JlX1JlY2VpdmVTZW1hcGhvcmU7IH0KKyAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworCisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxl
PElQQzo6U2VtYXBob3JlJj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxl
PElQQzo6U2VtYXBob3JlPjsKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgor
ICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXaXRo
U2VtYXBob3JlCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFNlbWFwaG9yZU1lc3NhZ2VzUmVwbGll
cy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFNlbWFwaG9y
ZU1lc3NhZ2VzUmVwbGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1MDFhMzNjOWM2N2EwMmFlM2I5MjYzY2E2
ZTA2MDY2N2IzOWYzOTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL1Rlc3RXaXRoU2VtYXBob3JlTWVzc2FnZXNSZXBsaWVzLmgKQEAgLTAsMCAr
MSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisg
KiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVz
c2FnZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworCituYW1lc3BhY2UgTWVz
c2FnZXMgeworbmFtZXNwYWNlIFRlc3RXaXRoU2VtYXBob3JlIHsKKworCit9IC8vIG5hbWVzcGFj
ZSBUZXN0V2l0aFNlbWFwaG9yZQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFt
ZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVh
dGlvblBhcmFtZXRlcnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdiNWE3NmFm
MjUyMGM5ZTcyMDEwNjgwOGE5MzRmZDE5Nzg5OWQyNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
Ci0KLSNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgotI2luY2x1ZGUgPHd0
Zi9NYWNoU2VuZFJpZ2h0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyB7Ci0gICAgUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIgaWRlbnRpZmllcjsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBNYWNoU2Vu
ZFJpZ2h0IHNlbmRSaWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOwotI2VuZGlmCi0K
LSAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJik7Ci19OwotCi10
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNv
ZGVyIDw8IGlkZW50aWZpZXI7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgZW5jb2RlciA8PCBz
ZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKLSNlbmRpZgotfQotCi10ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8UmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0
aW9uUGFyYW1ldGVycz4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENy
ZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotCi0gICAgT3B0aW9uYWw8UmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXI+IGlkZW50aWZpZXI7Ci0gICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwot
ICAgIGlmICghaWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAg
IHBhcmFtZXRlcnMuaWRlbnRpZmllciA9ICppZGVudGlmaWVyOwotCi0jaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgT3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxh
eUxpc3RTZW1hcGhvcmU7Ci0gICAgZGVjb2RlciA+PiBzZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5
TGlzdFNlbWFwaG9yZTsKLSAgICBpZiAoIXNlbmRSaWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2Vt
YXBob3JlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcGFyYW1ldGVycy5z
ZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSA9IFdURk1vdmUoKnNlbmRSaWdo
dEZvclJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIHBh
cmFtZXRlcnM7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxF
KEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggN2Y0MDhiYzQ2MTBjMTA1NDkxZDViMDY0MWY4
YjcwZjNhZjkxYjA0My4uOWFiZDg5OTViMjgxOWFmYTljZmYxNDcyZGM0ODgxMDE5ZjI2ZjYzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0CkBAIC0xNDQsNiArMTQ0LDcgQEAgUGxhdGZvcm0vSVBDL0VuY29kZXIuY3Bw
IEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5jcHAgQG5vLXVuaWZ5CiBQbGF0
Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9N
ZXNzYWdlU2VuZGVyLmNwcCBAbm8tdW5pZnkKK1BsYXRmb3JtL0lQQy9TZW1hcGhvcmUuY3BwIEBu
by11bmlmeQogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIEBuby11bmlmeQogUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwIEBuby11bmlmeQogUGxhdGZv
cm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggYjgzZDczODYyNTk2OGRmZDdlODkyM2QyZmU3ODQyYmIwNTcyZmUyZi4uYzMxYTljNjBi
YjJmNTg3ZmRmMmU3ZjJlYmJiYzNhM2JjMzU3MzFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApA
QCAtODgsNiArODgsOCBAQCBQbGF0Zm9ybS9pb3MvVUlLaXRTb2Z0TGluay5tbQogCiBQbGF0Zm9y
bS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCiBQbGF0Zm9ybS9JUEMvY29jb2EvTWFjaE1l
c3NhZ2UuY3BwCitQbGF0Zm9ybS9JUEMvY29jb2EvU2VtYXBob3JlQ29jb2EuY3BwCisKIAogUGxh
dGZvcm0vbWFjL01hY2hVdGlsaXRpZXMuY3BwCiBQbGF0Zm9ybS9tYWMvTWVudVV0aWxpdGllcy5t
bQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNWFiYTk2ZjM2NTc2ZDI4YTkyMzMxMjIyZGNhNjc1MmNlZGM5MjQzNi4uNWMzYzM0ZTZmY2Mz
ZTI3ZTQ0ZjNiMDFkZTBmN2M5NTRkZjQ2ZDVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzI3LDYgKzEzMjcsOCBAQAogCQk3QUZC
RDM2NzIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2
NTIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgg
Ki87IH07CiAJCTdBRkJEMzZGMjFFNTQ2RjgwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2RDIx
RTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oICovOyB9OwogCQk3QjFEQjI2NjI1
NjY4Q0UxMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJh
eVJlZmVyZW5jZS5oICovOyB9OworCQk3QjczMTIyODI1Qzk4OEFBMDAzQjI3OTYgLyogU2VtYXBo
b3JlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
NzMxMjI2MjVDOTg4QUEwMDNCMjc5NiAvKiBTZW1hcGhvcmUuY3BwICovOyB9OworCQk3QjczMTIy
OTI1Qzk4OEFCMDAzQjI3OTYgLyogU2VtYXBob3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIyNzI1Qzk4OEFBMDAzQjI3OTYgLyogU2VtYXBo
b3JlLmggKi87IH07CiAJCTdDMDY1RjJDMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJEYXRhVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJEYXRhVHlwZXMuaCAqLzsgfTsKIAkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8q
IFdLUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDMTM1QUE3MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
N0MxQkEzM0UxQTRBMEU2MDAwNDNFMjQ5IC8qIEFQSURpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMUJBMzNDMUE0QTBFNjAwMDQzRTI0
OSAvKiBBUElEaWN0aW9uYXJ5LmggKi87IH07CkBAIC0xOTcwLDcgKzE5NzIsNiBAQAogCQlGNDJE
NjM0MTIyQTBFRkRGMDBEMkZCM0EgLyogV2ViQXV0b2NvcnJlY3Rpb25EYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDJENjMzRjIyQTBFRkQzMDBE
MkZCM0EgLyogV2ViQXV0b2NvcnJlY3Rpb25EYXRhLmggKi87IH07CiAJCUY0MzBFOTQyMjI0NzMz
NUYwMDVGRTA1MyAvKiBXZWJzaXRlTWV0YVZpZXdwb3J0UG9saWN5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDMwRTk0MTIyNDczMkE5MDA1RkUwNTMg
LyogV2Vic2l0ZU1ldGFWaWV3cG9ydFBvbGljeS5oICovOyB9OwogCQlGNDMwRTk0NDIyNDczREZG
MDA1RkUwNTMgLyogV2ViQ29udGVudE1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzBFOTQzMjI0NzNEQjgwMDVGRTA1MyAvKiBXZWJDb250ZW50
TW9kZS5oICovOyB9OwotCQlGNDM3QzhEOTI1OTNCN0UzMDBEQjhBMUMgLyogUmVtb3RlUmVuZGVy
aW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzN0M4RDgyNTkzQjdFMzAwREI4QTFDIC8qIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJRjQzOENEMUMyMjQx
NDIxNDAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDM4Q0QxQjIyNDE0MEE2MDBERTZEREEgLyog
V0tXZWJwYWdlUHJlZmVyZW5jZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07CiAJCUY0MzhDRDFGMjI0MTRENDAwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVm
ZXJlbmNlc0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNDM4Q0QxRTIyNDE0RDQwMDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXNJ
bnRlcm5hbC5oICovOyB9OwogCQlGNDM4Q0QyMTIyNDFGNjk1MDBERTZEREEgLyogV0tXZWJwYWdl
UHJlZmVyZW5jZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNDM4Q0QyMDIyNDFGNjk1MDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5j
ZXNQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTQ1MTcsNiArNDUxOCw5IEBACiAJCTdBRkJEMzZFMjFFNTQ2RTMwMDVEQkFDQiAvKiBQ
ZXJzaXN0ZW5jeVV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2
QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXJyYXlSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2NEMwQjYy
NTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0I3MzEyMjYyNUM5ODhBQTAwM0IyNzk2IC8qIFNlbWFwaG9yZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZW1hcGhvcmUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIyNzI1Qzk4OEFBMDAzQjI3OTYgLyogU2VtYXBo
b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlbWFwaG9yZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIyQTI1Qzk4OEM2MDAzQjI3OTYgLyogU2Vt
YXBob3JlQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Vt
YXBob3JlQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkwNDE2NTI1
NEFGREVBMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNjYyNTRBRkRFQjAwNkVFQjhDIC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkwNDE2NzI1NEFG
RTE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNTc5MSw3ICs1Nzk1LDYgQEAKIAkJRjQyRDYzNDAyMkEwRUZE
MzAwRDJGQjNBIC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbTsgcGF0aCA9IGlv
cy9XZWJBdXRvY29ycmVjdGlvbkRhdGEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0MzBFOTQxMjI0NzMyQTkwMDVGRTA1MyAvKiBXZWJzaXRlTWV0YVZpZXdwb3J0UG9saWN5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVNZXRhVmlld3BvcnRQb2xpY3kuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjQzMEU5NDMyMjQ3M0RCODAwNUZFMDUzIC8qIFdlYkNvbnRlbnRN
b2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbnRlbnRNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUY0MzdDOEQ4MjU5M0I3RTMwMERCOEExQyAvKiBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjQzOENEMUIyMjQxNDBBNjAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLV2VicGFnZVByZWZlcmVuY2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY0MzhDRDFEMjI0MTRBRDYwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNl
cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2VicGFnZVByZWZlcmVuY2VzLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDM4Q0QxRTIyNDE0RDQwMDBERTZEREEgLyogV0tX
ZWJwYWdlUHJlZmVyZW5jZXNJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYnBhZ2VQcmVm
ZXJlbmNlc0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NTMwLDcg
KzY1MzMsNiBAQAogCQkJCUUxQ0MxQjhFMTJEN0VBREYwMDYyNTgzOCAvKiBQcmludEluZm8uaCAq
LywKIAkJCQk0NjNGRDQ4MTFFQjk0RUFEMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVh
c29uLmggKi8sCiAJCQkJOUIxMjI5RDAyM0ZGMkE1RTAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25JZGVudGlmaWVyLmggKi8sCi0JCQkJRjQzN0M4RDgyNTkzQjdFMzAwREI4QTFDIC8q
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCAqLywKIAkJCQk1Q0I3
QUZFNjIzQzY4MUIwMDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkSW5mby5oICovLAogCQkJCTVDMDA5
OTNCMjQxN0ZCN0UwMEQ1M0MyNSAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5o
ICovLAogCQkJCTQxMDQ4MkNCMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmNwcCAqLywK
QEAgLTY5MDgsNiArNjkxMCw4IEBACiAJCQkJMUEzRUVEMEQxNjFBNTM1MzAwQUVCNEY1IC8qIE1l
c3NhZ2VSZWNlaXZlck1hcC5oICovLAogCQkJCTFBQUIwMzc3MTg1QTdDNkEwMEVERjUwMSAvKiBN
ZXNzYWdlU2VuZGVyLmNwcCAqLywKIAkJCQkxQUFCMDM3ODE4NUE3QzZBMDBFREY1MDEgLyogTWVz
c2FnZVNlbmRlci5oICovLAorCQkJCTdCNzMxMjI2MjVDOTg4QUEwMDNCMjc5NiAvKiBTZW1hcGhv
cmUuY3BwICovLAorCQkJCTdCNzMxMjI3MjVDOTg4QUEwMDNCMjc5NiAvKiBTZW1hcGhvcmUuaCAq
LywKIAkJCQkyREMxODAwMUQ5MERERDE1RkM2OTkxQTkgLyogU2hhcmVkQnVmZmVyQ29weS5jcHAg
Ki8sCiAJCQkJNUNDNURCOTEyMTQ4OEUxNjAwNkNCOEE4IC8qIFNoYXJlZEJ1ZmZlckNvcHkuaCAq
LywKIAkJCQkyREMxODU1RURCRkI4NTBCQTBCNkQwNkQgLyogU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZS5jcHAgKi8sCkBAIC0xMDQ5NSw2ICsxMDQ5OSw3IEBACiAJCQkJMUE2RDg2QkYxREY3NTI2
NTAwNzc0NUU4IC8qIE1hY2hNZXNzYWdlLmNwcCAqLywKIAkJCQkxQTZEODZDMDFERjc1MjY1MDA3
NzQ1RTggLyogTWFjaE1lc3NhZ2UuaCAqLywKIAkJCQlCQ0M1NkY3NzExNTk5NTdEMDAxQ0NBRjkg
LyogTWFjaFBvcnQuaCAqLywKKwkJCQk3QjczMTIyQTI1Qzk4OEM2MDAzQjI3OTYgLyogU2VtYXBo
b3JlQ29jb2EuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC0xMTczNyw2ICsxMTc0Miw3IEBACiAJCQkJODM5OTAyMDMxQkU5QTAy
QjAwMEYzNjUzIC8qIE5ldHdvcmtMb2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Q0NTRENzFC
RTlEM0M0MDA2QzkzQkQgLyogTmV0d29ya0xvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTgzOTE0OTY1MUJFQTgzODUwMEQyRDk1MyAvKiBOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUU0N0ZDOEEwMjVCODMzMUMwMDU0OTVGQyAvKiBOZXR3b3JrTG9hZFNj
aGVkdWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3OTU1NkExNjI4NzZGMzAwRkE0M0I2IC8q
IE5ldHdvcmtQcm9jZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdDRjBFNDE2M0E0ODZDMDBD
Mjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDMTQyNkVEMUMyM0Y4MDkwMEQ0MTE4MyAvKiBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTg3OSw3ICsxMTg4NSw2IEBACiAJCQkJ
MUE1NzA0RkMxQkUxNzUxMTAwODc0QUYxIC8qIFJlbW90ZU9iamVjdEludm9jYXRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBQzEzMzgwMTg1OTBBRTQwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RS
ZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDMTMzODYxODU5MEM0NjAwRjNFQzA1IC8q
IFJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCUY0MzdD
OEQ5MjU5M0I3RTMwMERCOEExQyAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJh
bWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU5NDc5MDE4N0IzQjNBMDA0Mzc4NTcgLyog
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTk0N0E4
MTg3QjUxNzYwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvck1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjU5NDc5QjE4N0IzQjYwMDA0Mzc4NTcgLyogUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTkxMSw2ICsxMTkx
Niw3IEBACiAJCQkJRTE4RTY5MEMxNjlCNTYzRjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHku
aCBpbiBIZWFkZXJzICovLAogCQkJCUUxOEU2OTE4MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVt
U2hpbVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MEFCOEYzMjBBRTNCRDcw
MEI4QkU4NyAvKiBTZWNLZXlQcm94eVN0b3JlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjczMTIy
OTI1Qzk4OEFCMDAzQjI3OTYgLyogU2VtYXBob3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRE
OUY1NzE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUZERTY1QTE5NTRBNDJCMDBDNDhGRkEgLyogU2Vzc2lvblN0YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTAwMkQ0OTE5NkIzNDVEMDBCOUFENDQgLyogU2Vzc2lvblN0YXRlQ29k
aW5nLmggaW4gSGVhZGVycyAqLywKQEAgLTEyMTAwLDcgKzEyMTA2LDYgQEAKIAkJCQk5M0E4OEIz
MzFCQzZFOUNEMDBBQkE1QzIgLyogV2ViSGl0VGVzdFJlc3VsdERhdGEuaCBpbiBIZWFkZXJzICov
LAogCQkJCUY0NERGRUIyMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5MzI2MTE2MTIxNDA1NEY0MDAwODA2RTcgLyogV2ViSURCQ29ubmVj
dGlvblRvQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlFNDdGQzhBMDI1QjgzMzFDMDA1NDk1
RkMgLyogTmV0d29ya0xvYWRTY2hlZHVsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNDEyOTk0
MUM2NDI4QkIwMDU5RTcxNCAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxMDUyMzc0MUM3M0QzOEIwMDc5OTNDQiAvKiBXZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzRTgzNTUyM0EwN0MwNjAwREVG
Mjg5IC8qIFdlYklEQlNlcnZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzc2Myw2ICsxMzc2OCw3
IEBACiAJCQkJQTU1QkE4MjYxQkEyNUNGRDAwN0NEMzNEIC8qIFJlbW90ZVdlYkluc3BlY3RvclBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFCQkJFNEEwMTlCNjZD
NTMwMDZCN0Q4MSAvKiBSZW1vdGVXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFMThFNjkxNzE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Q
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjczMTIyODI1Qzk4
OEFBMDAzQjI3OTYgLyogU2VtYXBob3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxREU3QzZD
MjIyNzhGMUUwMDUzMkI2NSAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTJEOTJBNzg3MjEyQjZBQjEwMEY0OTNGRCAvKiBTaGFyZWFibGVCaXRtYXAuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMkRDMThGRUJGMzM3Qjk2NzFDODhFM0NEIC8qIFNoYXJlZEJ1
ZmZlckNvcHkuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHAKaW5kZXggNjFiNGM4MjQ5NTc2ZGUxMjhhOWFiZWQwOTI3ZjQxZWU0MTYyYmU2
ZS4uZGMzZTRlZTU4MTQ5YjgzODk0ZmFlOTMwZjNlY2IwMGQ0MmQ1NjdlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1
ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJJbWFnZURhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCIKLSNp
bmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5j
bHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnku
aCIKQEAgLTY3LDEyICs2Niw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpj
b25uZWN0VG9HUFVQcm9jZXNzKCkKICAgICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAgICBjb25uZWN0aW9u
LmFkZENsaWVudCgqdGhpcyk7CiAgICAgY29ubmVjdGlvbi5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5h
ZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUlu
dDY0KCksICp0aGlzKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpDcmVhdGVSZW5kZXJpbmdCYWNrZW5kKHsKLSAgICAgICAgbV9yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllciwKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgbV9yZXN1bWVEaXNwbGF5
TGlzdFNlbWFwaG9yZS5jcmVhdGVTZW5kUmlnaHQoKSwKLSNlbmRpZgotICAgIH0pLCAwKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVSZW5kZXJp
bmdCYWNrZW5kKG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIG1fcmVzdW1lRGlzcGxheUxp
c3RTZW1hcGhvcmUpLCAwKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OnJlZXN0YWJsaXNoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmgKaW5kZXggNDhmYTA2OWRhYThkM2NkNmQxMjQ0MmRiMzMwNjAzYzkzNmI5
N2I0Ny4uMDU5ODJjZTcwYmVkMGE5NzAwOTVlMjZlZGRkZmY2ZDY4ODY3M2YyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCkBAIC0zNCwxNSArMzQsMTIgQEAKICNpbmNs
dWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
LmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJT
ZW1hcGhvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRGVx
dWUuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0j
aW5jbHVkZSA8d3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogY2xhc3MgRGlzcGxheUxpc3Q7CkBA
IC0xMjYsOSArMTIzLDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXI+IG1fY3VycmVudERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyOwogICAgIE9wdGlvbmFsPEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzPiBt
X2RlZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50czsKICAgICB1bnNpZ25lZCBtX3JlbWFpbmlu
Z0l0ZW1zVG9BcHBlbmRCZWZvcmVTZW5kaW5nV2FrZXVwIHsgMCB9OwotI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIE1hY2hTZW1hcGhvcmUgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKLSNl
bmRpZgorICAgIElQQzo6U2VtYXBob3JlIG1fcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmU7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
LmNwcAppbmRleCAzNGUzMGNlMTE5MzYwYzkzMGMyYjA3ZTljMzA4YTFiNjQwZWQwYTNlLi4wMjgz
MzA1NGFlMGRmODI5ZTI3MWJiYmY0OGIzOGIzMzg2NDg0YTU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHkuY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9D
QVJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dlYkF1ZGlvQnVmZmVyTGlzdC5oPgog
I2luY2x1ZGUgPG1hY2gvbWFjaF90aW1lLmg+Ci0jaW5jbHVkZSA8d3RmL2NvY29hL01hY2hTZW1h
cGhvcmUuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTgwLDcgKzc5LDcgQEAg
dm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0YXJ0UmVuZGVyaW5nVGhyZWFkKCkK
IAogICAgIGF1dG8gb2ZmVGhyZWFkUmVuZGVyaW5nID0gW3RoaXNdKCkgbXV0YWJsZSB7CiAgICAg
ICAgIGRvIHsKLSAgICAgICAgICAgIG1fcmVuZGVyU2VtYXBob3JlLT53YWl0KCk7CisgICAgICAg
ICAgICBtX3JlbmRlclNlbWFwaG9yZS53YWl0KCk7CiAgICAgICAgICAgICBpZiAobV9zaG91bGRT
dG9wVGhyZWFkKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC05OCw4ICs5Nyw3IEBAIHZv
aWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpzdG9wUmVuZGVyaW5nVGhyZWFkKCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgbV9zaG91bGRTdG9wVGhyZWFkID0gdHJ1ZTsKLSAgICBpZiAo
bV9yZW5kZXJTZW1hcGhvcmUpCi0gICAgICAgIG1fcmVuZGVyU2VtYXBob3JlLT5zaWduYWwoKTsK
KyAgICBtX3JlbmRlclNlbWFwaG9yZS5zaWduYWwoKTsKICAgICBtX3JlbmRlclRocmVhZC0+d2Fp
dEZvckNvbXBsZXRpb24oKTsKICAgICBtX3JlbmRlclRocmVhZCA9IG51bGxwdHI7CiAjZW5kaWYK
QEAgLTEwNywyMCArMTA1LDEwIEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpz
dG9wUmVuZGVyaW5nVGhyZWFkKCkKIAogdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6
OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogewotICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVu
dGlmaWVyIGRlc3RpbmF0aW9uSUQ7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgTWFjaFNlbmRS
aWdodCByZW5kZXJTZW1hcGhvcmVTZW5kUmlnaHQ7Ci0jZW5kaWYKLQogICAgIGF1dG8mIGNvbm5l
Y3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlv
bigpOwogICAgIGNvbm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlzKTsKICAgICBhdXRvIGRpZFN1Y2Nl
ZWQgPSBjb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kU3luYygKLSAgICAgICAgTWVzc2FnZXM6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKG1f
aW5wdXREZXZpY2VJZCwgbV9udW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hh
bm5lbHMoKSwgc2FtcGxlUmF0ZSgpLCBoYXJkd2FyZVNhbXBsZVJhdGUoKSksCi0gICAgICAgIE1l
c3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5h
dGlvbjo6UmVwbHkoZGVzdGluYXRpb25JRAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICAg
ICAgLCByZW5kZXJTZW1hcGhvcmVTZW5kUmlnaHQKLSNlbmRpZgotICAgICAgICApLCAwKTsKKyAg
ICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRp
b0Rlc3RpbmF0aW9uKG1faW5wdXREZXZpY2VJZCwgbV9udW1iZXJPZklucHV0Q2hhbm5lbHMsIG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSwgc2FtcGxlUmF0ZSgpLCBoYXJkd2FyZVNhbXBsZVJhdGUo
KSwgbV9yZW5kZXJTZW1hcGhvcmUpLCBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1h
bmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5KG1fZGVzdGluYXRpb25JRCksIDAp
OwogCiAgICAgaWYgKCFkaWRTdWNjZWVkKSB7CiAgICAgICAgIC8vIFRoZSBHUFVQcm9jZXNzIGxp
a2VseSBjcmFzaGVkIGR1cmluZyB0aGlzIHN5bmNocm9ub3VzIElQQy4gZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb25EaWRDbG9zZSgpIHdpbGwgZ2V0IGNhbGxlZCB0byByZWNvbm5lY3QgdG8gdGhlIEdQVVBy
b2Nlc3MuCkBAIC0xMjgsNyArMTE2LDYgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
bV9kZXN0aW5hdGlvbklEID0gZGVzdGluYXRpb25JRDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIG1fY3VycmVudEZyYW1lID0gMDsKQEAgLTEzNiw3ICsxMjMsNiBAQCB2b2lkIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2VzcygpCiAgICAgZ2V0QXVkaW9T
dHJlYW1CYXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7CiAgICAgbV9yaW5nQnVmZmVyLT5h
bGxvY2F0ZShzdHJlYW1Gb3JtYXQsIG1fbnVtYmVyT2ZGcmFtZXMpOwogICAgIG1fYXVkaW9CdWZm
ZXJMaXN0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q+KHN0cmVhbUZv
cm1hdCk7Ci0gICAgbV9yZW5kZXJTZW1hcGhvcmUgPSBtYWtlVW5pcXVlPE1hY2hTZW1hcGhvcmU+
KFdURk1vdmUocmVuZGVyU2VtYXBob3JlU2VuZFJpZ2h0KSk7CiAjZW5kaWYKIAogICAgIHN0YXJ0
UmVuZGVyaW5nVGhyZWFkKCk7CkBAIC0yMDUsOSArMTkxLDcgQEAgdm9pZCBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHk6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nv
bm5lY3QKICAgICBvbGRDb25uZWN0aW9uLnJlbW92ZUNsaWVudCgqdGhpcyk7CiAKICAgICBzdG9w
UmVuZGVyaW5nVGhyZWFkKCk7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgbV9yZW5kZXJTZW1h
cGhvcmUgPSBudWxscHRyOwotI2VuZGlmCisKICAgICBjb25uZWN0VG9HUFVQcm9jZXNzKCk7CiAK
ICAgICBpZiAoaXNQbGF5aW5nKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaAppbmRl
eCA4ZDJjNjNlYjljNTVmYjhiMmFjNTRiYWFkZThmNzNjZTVkNWIxY2M1Li5hY2ViMjhhZmMyYzZk
YTZhZjgzNzE4ZGJiZjI4YzM2MWNlYmI5ZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNlbWFwaG9yZS5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQXVkaW9JT0NhbGxiYWNrLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkUXVldWUuaD4K
ICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CkBAIC0zOCw2ICszOSw3IEBACiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAjaW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgogI2Vsc2UKICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIu
aD4KICNlbmRpZgpAQCAtNDcsMTIgKzQ5LDYgQEAgY2xhc3MgQ0FSaW5nQnVmZmVyOwogY2xhc3Mg
V2ViQXVkaW9CdWZmZXJMaXN0OwogfQogCi1uYW1lc3BhY2UgV1RGIHsKLSNpZiBQTEFURk9STShD
T0NPQSkKLWNsYXNzIE1hY2hTZW1hcGhvcmU7Ci0jZW5kaWYKLX0KLQogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGNsYXNzIFNoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5kczsKQEAgLTEwNCwxMyArMTAw
LDEzIEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdWludDY0X3QgbV9udW1i
ZXJPZkZyYW1lcyB7IDAgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q0FSaW5nQnVm
ZmVyPiBtX3JpbmdCdWZmZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdURjo6TWFjaFNlbWFwaG9y
ZT4gbV9yZW5kZXJTZW1hcGhvcmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OldlYkF1
ZGlvQnVmZmVyTGlzdD4gbV9hdWRpb0J1ZmZlckxpc3Q7CiAgICAgdWludDY0X3QgbV9jdXJyZW50
RnJhbWUgeyAwIH07CiAgICAgZmxvYXQgbV9zYW1wbGVSYXRlOwogI2Vsc2UKICAgICB1bnNpZ25l
ZCBtX251bWJlck9mT3V0cHV0Q2hhbm5lbHM7CiAjZW5kaWYKKyAgICBJUEM6OlNlbWFwaG9yZSBt
X3JlbmRlclNlbWFwaG9yZTsKIAogICAgIFN0cmluZyBtX2lucHV0RGV2aWNlSWQ7CiAgICAgdW5z
aWduZWQgbV9udW1iZXJPZklucHV0Q2hhbm5lbHM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419106</attachid>
            <date>2021-02-02 21:57:42 -0800</date>
            <delta_ts>2021-02-03 02:35:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220919-20210203075740.patch</filename>
            <type>text/plain</type>
            <size>82721</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU2NGY0YmMyYWMwODE5Yjg2ZjczMGVk
NzdjYjdiYTc4OGEyNjdiNzkuLjllMDFhNWRhMTliODE4MmFmMGFlMDIyNGM4YWE2YjE2NTA0YTEy
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDItMDIgIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNYWNoU2VtYXBob3JlIGRvZXMgbm90IHdvcmsg
d2VsbCB3aXRoIElQQyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwOTE5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MzgyNjg0OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIFdU
Rjo6TWFjaFNlbWFwaG9yZSB0byBXZWJLaXQgSVBDOjpTZW1hcGhvcmUuIEN1cnJlbnRseSB0aGUK
KyAgICAgICAgTWFjaFNlbWFwaG9yZSBpcyB1c2VmdWwgb25seSBpbiBjcm9zcy1wcm9jZXNzIElQ
QywgaW1wbGVtZW50ZWQgYnkgdGhlCisgICAgICAgIElQQzo6LgorCisgICAgICAgICogV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjEtMDItMDIgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gTWlncmF0ZSBX
ZWJLaXRUZXN0U2VydmVyIHRvIGxpYnNvdXAgMi40OCBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYmVhZWUxN2Vi
MDEyY2ExZmI0MGQ5MTE0ZjM4OWViNWM5ZDE5YjAzNS4uODk1OTNiZmEwMmNkODBiZWY3MDMyMDE4
NTczOTBiYWFlMDFjZmMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzcgQEAKKzIwMjEtMDItMDIg
IEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNYWNoU2Vt
YXBob3JlIGRvZXMgbm90IHdvcmsgd2VsbCB3aXRoIElQQyBtZXNzYWdlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwOTE5CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS83MzgyNjg0OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNb3ZlIFdURjo6TWFjaFNlbWFwaG9yZSB0byBXZWJLaXQgSVBDOjpTZW1h
cGhvcmUuIEN1cnJlbnRseSB0aGUKKyAgICAgICAgTWFjaFNlbWFwaG9yZSBpcyB1c2VmdWwgb25s
eSBpbiBjcm9zcy1wcm9jZXNzIElQQywgaW1wbGVtZW50ZWQgYnkgdGhlCisgICAgICAgIElQQzo6
LgorCisgICAgICAgIEFkZHMgYSBzdHViIElQQzo6U2VtYXBob3JlIHRvIGFsbCBub24tQ09DT0Eg
cGxhdGZvcm1zLCBzbyB0aGF0CisgICAgICAgIGNvbnN0cnVjdG9ycyBkbyBub3QgbmVlZCB0byBp
ZmRlZidlZCB0byBiZSBhYmxlIHRvIGNvbXBpbGUgcGxhdGZvcm1zCisgICAgICAgIHRoYXQgZG8g
bm90IHlldCBzdXBwb3J0IEdQVSBwcm9jZXNzIGZ1bGx5LgorCisgICAgICAgIEltcGxlbWVudCBt
b3ZlIGNvbnN0cnVjdG9yIGFuZCBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IgZm9yIFNlbWFwaG9y
ZS4KKyAgICAgICAgTWFrZXMgaXQgcG9zc2libGUgdG8gY3JlYXRlIHR5cGVzIHRoYXQgaG9sZCBT
ZW1hcGhvcmUgYnV0IHN0aWxsIGFyZQorICAgICAgICBkZWNvZGUoKWFibGUgZnJvbSBhIElQQyBt
ZXNzYWdlLiBUaGUgZGVjb2RlZCBvYmplY3RzIGFyZSBoZWxkIHdpdGgKKyAgICAgICAgT3B0aW9u
YWwsIGFuZCB0aGlzIGZvcmNlcyB0aGUgc3Vib2JqZWN0cyB0byBoYXZlIG1vdmUgYXNzaWdubWVu
dAorICAgICAgICBvcGVyYXRvci4KKworICAgICAgICBBZGQgYXNzZXJ0cyB0aGF0IHRoZSBtb3Zl
ZC1hd2F5IG9iamVjdCBpcyBub3QgdXNlZC4gQWRkIHRoZSBhc3NlcnRzIGFzCisgICAgICAgIGFz
c2VydHMgb24gdGhlIGNhbGwgcmV0dXJuIHZhbHVlcywgc28gdGhlIHZhbHVlcyBhcmUgYWxzbyBj
aGVja2VkIG9uCisgICAgICAgIG5vcm1hbCBvYmplY3RzIG9uIG5vcm1hbCBvcGVyYXRpb24uCisK
KyAgICAgICAgSW1wbGVtZW50IGFuIGVuY29kZXIgYW5kIGRlY29kZXIgZm9yIElQQzo6U2VtYXBo
b3JlLiBNYWtlcyBpdCBwb3NzaWJsZQorICAgICAgICB0byBzZW5kIGl0IHZpYSBJUEMgYXMgaXRz
IG93biB0eXBlLCBub3QgYXMgTWFjaFNlbmRSaWdodC4KKworICAgICAgICBBcyBhbiBleGFtcGxl
LCBjaGFuZ2VzIGV4aXN0aW5nIHVzZXMgb2YgTWFjaFNlbmRSaWdodCBmb3Igc2VtYXBob3JlcyBp
bgorICAgICAgICBtZXNzYWdlcyBhcyBTZW1hcGhvcmVzLCBkZXNjcmliZWQgYmVsb3cuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCBhIHJlZmFjdG9yLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZCk6CisgICAgICAgICogR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZl
ckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmg6IFJlbW92ZWQuCisgICAgICAgIENoYW5n
ZXMgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCB0byByZWNlaXZlIGl0cyBwYXJhbWV0ZXJzIGZyb20g
dGhlIG5vcm1hbAorICAgICAgICBtZXNzYWdlIHBhcmFtZXRlcnMgaW5zdGVhZCBvZiByZWR1bmRh
bnQKKyAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy4gVGhl
IElQQyBnZW5lcmF0b3IgYWxyZWFkeQorICAgICAgICBnZW5lcmF0ZXMgMToxIGlkZW50aWNhbCBz
dHJ1Y3R1cmUsIGl0IGlzIGp1c3QgdGhlIG1lc3NhZ2UKKyAgICAgICAgTWVzc2FnZXM6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQuIFRoZXJlIGlzIG5v
CisgICAgICAgIG5lZWQgdG8gZG91YmxlLXdyYXAgdGhlIHNpbXBsZSBsaXN0IG9mIHBhcmFtZXRl
cnMuIFRoZSBkb3VibGUtd3JhcHBpbmcKKyAgICAgICAgaXMgYSBwcm9ibGVtOiBUaGUgbWVzc2Fn
ZSBzeXN0ZW0gcGFyYW1ldGVycyBhcmUgb2Ygb3duZXJzaGlwICJjb25zdAorICAgICAgICByZWZl
cmVuY2UiLCB3aGljaCBpcyB3aGF0IGlzIGV4cGVjdGVkLgorICAgICAgICBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIGNvbnRlbnRzIHdlcmUgb2Ygb3duZXJzaGlwCisg
ICAgICAgICJ2YWx1ZSIsIHdoaWNoIHdvcmtzIGFzIGV4cGVjdGVkIG9ubHkgZm9yIHNpbXBsZSBw
cmltaXRpdmUgdHlwZXMuCisgICAgICAgIEVzc2VudGlhbGx5IHByZXZpb3VzbHkgY2FsbGluZyB0
aGUgSVBDIGZ1bmN0aW9uIG1lYW50IHRyYW5zZmVyaW5nCisgICAgICAgIG9iamVjdHMgdG8gUmVt
b3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy4gVGhpcyBpcyBub3QgaG93IHRo
ZQorICAgICAgICBJUEMgc3lzdGVtIGlzIG1lYW50IHRvIHdvcmsuIFRoZSBpbnRlbnRpb24gb2Yg
YSBJUEMgY2FsbCBpcyB0bywgYnkKKyAgICAgICAgZGVmYXVsdCwgcmVmZXJlbmNlIGl0cyBhcmd1
bWVudHMgZm9yIHRoZSBwdXJwb3NlIG9mIGVuY29kaW5nLgorCisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb246OlJlbW90ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Y3JlYXRlQXVkaW9EZXN0aW5h
dGlvbik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXIubWVzc2FnZXMuaW46CisKKyAgICAgICAgUmVjZWl2ZSB0aGUgc2VtYXBob3Jl
IGZyb20gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LiBQcmV2aW91c2x5CisgICAgICAgIGl0
IHdhcyBjcmVhdGVkIGR1cmluZyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uIGNyZWF0aW9uIGFuZAor
ICAgICAgICBiZSBzZW50IGJhY2sgYnkgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuCisK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2VtYXBob3JlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuY3BwLgorICAgICAgICAoSVBDOjpTZW1hcGhv
cmU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6ZGVjb2RlKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvU2VtYXBob3JlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV1RG
L3d0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmguCisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6b3Bl
cmF0b3IgYm9vbCBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL1NlbWFwaG9y
ZUNvY29hLmNwcDogQWRkZWQuCisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6U2VtYXBob3JlKToK
KyAgICAgICAgKElQQzo6U2VtYXBob3JlOjp+U2VtYXBob3JlKToKKyAgICAgICAgKElQQzo6U2Vt
YXBob3JlOjpvcGVyYXRvcj0pOgorICAgICAgICAoSVBDOjpTZW1hcGhvcmU6OnNpZ25hbCk6Cisg
ICAgICAgIChJUEM6OlNlbWFwaG9yZTo6d2FpdCk6CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6
d2FpdEZvcik6CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6Y3JlYXRlU2VuZFJpZ2h0IGNvbnN0
KToKKyAgICAgICAgKElQQzo6U2VtYXBob3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoSVBD
OjpTZW1hcGhvcmU6OmRlY29kZSk6CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6ZGVzdHJveSk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQv
dGVzdHMvTWFrZWZpbGU6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFy
Z3VtZW50RGVzY3JpcHRpb25zLmNwcDoKKyAgICAgICAgKElQQzo6anNWYWx1ZUZvckFyZ3VtZW50
cyk6CisgICAgICAgIChJUEM6Om1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucyk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcDoKKyAgICAgICAgKElQQzo6
ZGVzY3JpcHRpb24pOgorICAgICAgICAoSVBDOjpyZWNlaXZlck5hbWUpOgorICAgICAgICAoSVBD
Ojppc1ZhbGlkTWVzc2FnZU5hbWUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL01l
c3NhZ2VOYW1lcy5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFj
aFNlbWFwaG9yZS5tZXNzYWdlcy5pbjogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4uCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZVJlY2VpdmVyLmNw
cDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2Vt
YXBob3JlTWVzc2FnZXMuaDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMv
VGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAq
IFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNzKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHk6OnN0YXJ0UmVuZGVyaW5nVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5OjpzdG9wUmVuZGVyaW5nVGhyZWFkKToKKyAgICAgICAgQ2hhbmdlIHRo
ZSBzZW1hcGhvcmUgdXNhZ2UgZnJvbSB1bmlxdWVfcHRyIHRvIHRoZSBub3JtYWwKKyAgICAgICAg
b2JqZWN0IGFjY2Vzcy4gVGhlIHNlbWFwaG9yZSBpcyBub3cgY3JlYXRlZCBieSB0aGUgcHJveHks
CisgICAgICAgIHNvIHRoZXJlIGlzIG5vIHVuaXF1ZV9wdHIuCisKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpncHVQcm9jZXNzQ29ubmVj
dGlvbkRpZENsb3NlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHkuaDoKKworICAgICAgICBDaGFuZ2VzIFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25Qcm94eSB0byBzZW5kIGl0cyBvd24gc2VtYXBob3JlIGZyb20KKyAgICAgICAgV2ViUHJv
Y2VzcyB0byBHUFVQcm9jZXNzLiBQcmV2aW91c2x5IHRoZSBzZW1hcGhvcmUgd291bGQgYmUgc2Vu
dCBiYWNrIGJ5CisgICAgICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLiBQcmV2aW91
c2x5IHRoZSBjb2RlIHN0cnVjdHVyZSBpcyBtb3JlCisgICAgICAgIGNvbXBsaWNhdGVkIHRoYW4g
bmVjY2Vzc2FyeSwgYXMgdGhlIHNlbWFwaG9yZSBob2xkZXIgd2FzIGJlaW5nCisgICAgICAgIG51
bGwtY2hlY2tlZCwgcmVzZXQgYW5kIHJlLXNlYXRlZC4gVGhlIFdlYlByb2Nlc3MgZ2V0cyBhbHJl
YWR5IHRvIGNob29zZQorICAgICAgICB0aGUgc2VtYXBob3JlcyBHUFVQcm9jZXNzIHVzZXMsIHNv
IHRoaXMgc2hvdWxkIG5vdCBpbmNyZWFzZSBzZWN1cml0eQorICAgICAgICBzdXJmYWNlLiBUaGUg
Y2hhbmdlIGNob3NlbiBoZXJlIHNpZGUtc3RlcHMgdGhlIHNob3J0Y29taW5nIG9mIHRoZSBJUEMK
KyAgICAgICAgc3lzdGVtIHdoZXJlIHVucGFja2luZyBvYmplY3RzIGZyb20gdGhlIFJlcGx5IG1l
c3NhZ2VzIG1hbmRhdGVzIHRoYXQgYQorICAgICAgICBjb25zdHJ1Y3RlZCB2ZXJzaW9uIG9mIHRo
YXQgdHlwZSBleGlzdHMuIEZvciBwcmV2aW91cyBNYWNoU2VuZFJpZ2h0CisgICAgICAgIGVtcHR5
LWNvbnN0cnVjdGVkIG9iamVjdCBpcyBzaW1wbGUsIGJ1dCBmb3IgTWFjaFNlbWFwaG9yZQorICAg
ICAgICBlbXB0eS1jb25zdHJ1Y3RlZCBvYmplY3QgY3JlYXRlcyB1bm5lY2Vzc2FyeSBjb21wbGlj
YXRpb24gdGhhdCBpcyBub3QKKyAgICAgICAgcmVxdWlyZWQgb3RoZXJ3aXNlIGF0IHRoZSBtb21l
bnQuIFRoZSBhbHRlcm5hdGl2ZSB0byB3aGF0IHdhcyBjaG9zZW4KKyAgICAgICAgaGVyZSB3b3Vs
ZCBiZSB0byBob2xkIHdpdGggT3B0aW9uYWw8TWFjaFNlbWFwaG9yZT4gYW5kIGFkZCBhCisgICAg
ICAgIGVtcHR5LWluaXRpYWxpemluZyBjb25zdHJ1Y3RvciB0byBob2xkIHRoZSBvYmplY3Qgd2hl
cmUgdG8gdW5wYWNrIHRoZQorICAgICAgICBzZW1hcGhvcmUgb2JqZWN0IGZyb20gdGhlIFJlcGx5
LgorCiAyMDIxLTAyLTAyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVc2UgV2ViUlRDIEdQVSBwcm9jZXNzIGZsYWcgZm9yIE1lZGlhUmVjb3JkZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRhNGRmZWIxZWY4Mzg1NTY0
ZDNhOWJjNDAwZjQ2Mjg4M2QwYzM1YWQuLjI2YjQ1ZTU1M2IwNjdlMjQwMzI3Y2M4ODY3ZWM3Yzhj
ODE0NjdlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NjgsNyArNjgsNiBAQAogCQkzMzM3REI5Q0U3NDM0MTBGQUYwNzZFMTcgLyogU3RhY2tUcmFjZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTNFREVD
OTc3OEU0OUM5QkVBOTFDRkMgLyogU3RhY2tUcmFjZS5jcHAgKi87IH07CiAJCTQ0MjdDNUFBMjFG
NkQ2QzMwMEE2MTJBNCAvKiBBU0NJSUNUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MjdDNUE5MjFGNkQ2QzMwMEE2MTJBNCAvKiBBU0NJSUNU
eXBlLmNwcCAqLzsgfTsKIAkJNDZCRUI2RUIyMkZGRTI0OTAwMjY5ODY3IC8qIFJlZkNvdW50ZWQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRUI2
RTkyMkZGRERENTAwMjY5ODY3IC8qIFJlZkNvdW50ZWQuY3BwICovOyB9OwotCQk0NkNCNkIzRDI1
OEFEOTNGMDA2MzMzQjMgLyogTWFjaFNlbWFwaG9yZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJBQTlDODI1OEFENUE1MDA3OTU4NzcgLyogTWFj
aFNlbWFwaG9yZS5jcHAgKi87IH07CiAJCTUwREUzNUY1MjE1QkIwMTUwMEI5NzlDNyAvKiBFeHRl
cm5hbFN0cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTBERTM1RjMyMTVCQjAxNTAwQjk3OUM3IC8qIEV4dGVybmFsU3RyaW5nSW1wbC5j
cHAgKi87IH07CiAJCTUxNUY3OTRFMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZENvcGll
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVG
Nzk0QjFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwICovOyB9OwogCQk1
MTdGODJENzFGRDIyRjMwMDBEQTNERUEgLyogQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdGODJENTFGRDIy
RjJGMDBEQTNERUEgLyogQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAgKi87IH07CkBAIC0zNzgs
OCArMzc3LDYgQEAKIAkJNDQyN0M1QTkyMUY2RDZDMzAwQTYxMkE0IC8qIEFTQ0lJQ1R5cGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVNDSUlDVHlwZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Njg1NjcyMjUwOTRGRTgwMDhDQ0EwNSAvKiBU
aHJlYWRTYW5pdGl6ZXJTdXBwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRocmVhZFNhbml0aXplclN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZCQTlFQUIxRjRDRDYxRTAwOUEyQkJDIC8qIENvbXBsZXRpb25IYW5kbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBsZXRpb25IYW5kbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTQ2QkFBOUM4MjU4QUQ1QTUwMDc5NTg3NyAvKiBNYWNoU2VtYXBo
b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hY2hTZW1hcGhv
cmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NkJBQTlDOTI1OEFENUE1MDA3
OTU4NzcgLyogTWFjaFNlbWFwaG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNYWNoU2VtYXBob3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QkVCNkU5
MjJGRkRERDUwMDI2OTg2NyAvKiBSZWZDb3VudGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
ZkNvdW50ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MERFMzVGMzIxNUJC
MDE1MDBCOTc5QzcgLyogRXh0ZXJuYWxTdHJpbmdJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEV4dGVybmFsU3RyaW5nSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUwREUzNUY0MjE1QkIwMTUwMEI5NzlDNyAvKiBFeHRlcm5hbFN0cmlu
Z0ltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0ZXJuYWxTdHJpbmdJ
bXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTQ4LDggKzE1NDUsNiBAQAog
CQkJCTE0M0RERTk1MjBDOEJDMzcwMDdGNzZGQSAvKiBFbnRpdGxlbWVudHMubW0gKi8sCiAJCQkJ
QTMzMUQ5NUUyMUYyNDlGNjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1Db2NvYS5tbSAqLywKIAkJCQkx
QzUwM0JFNTIzQUFFMEFFMDA3MkU2NkIgLyogTGFuZ3VhZ2VDb2NvYS5tbSAqLywKLQkJCQk0NkJB
QTlDODI1OEFENUE1MDA3OTU4NzcgLyogTWFjaFNlbWFwaG9yZS5jcHAgKi8sCi0JCQkJNDZCQUE5
QzkyNThBRDVBNTAwNzk1ODc3IC8qIE1hY2hTZW1hcGhvcmUuaCAqLywKIAkJCQk3QTZFQkEzMzIw
NzQ2QzM0MDA0RjlDNDQgLyogTWFjaFNlbmRSaWdodC5jcHAgKi8sCiAJCQkJQThBNDcyQzUxNTFB
ODI1QTAwNDEyM0ZGIC8qIE1haW5UaHJlYWRDb2NvYS5tbSAqLywKIAkJCQlBREYyQ0U2NTFFMzlG
MTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwICovLApAQCAtMTcwOCw3ICsx
NzAzLDYgQEAKIAkJCQkwRjYwRjMyRjFERkNCRDFCMDA0MTZENkMgLyogTG9ja2VkUHJpbnRTdHJl
YW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNCNUI0NTEyMjE3MUVFQTAwNEI3QUE3IC8qIExv
Z2dlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzUzNEYyQTFFQzBFMTBFMDAxNDFCMkYgLyog
TWFjaEV4Y2VwdGlvbnMuZGVmcyBpbiBTb3VyY2VzICovLAotCQkJCTQ2Q0I2QjNEMjU4QUQ5M0Yw
MDYzMzNCMyAvKiBNYWNoU2VtYXBob3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBNkVCQTM0
MjA3NDZDMzQwMDRGOUM0NCAvKiBNYWNoU2VuZFJpZ2h0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4QTQ3M0U1MTUxQTgyNUIwMDQxMjNGRiAvKiBNYWluVGhyZWFkLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4QTQ3M0U0MTUxQTgyNUIwMDQxMjNGRiAvKiBNYWluVGhyZWFkQ29jb2EubW0gaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhv
cmUuY3BwIGIvU291cmNlL1dURi93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyZmNmMTVjMDdkOTI0YTQ1MDc5MzdmZDIzMDQ1NzJjNGRi
YmI5NjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dURi93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk1h
Y2hTZW1hcGhvcmUuaCIKLQotI2luY2x1ZGUgPG1hY2gvbWFjaC5oPgotCi1uYW1lc3BhY2UgV1RG
IHsKLQotTWFjaFNlbWFwaG9yZTo6TWFjaFNlbWFwaG9yZSgpCi17Ci0gICAgYXV0byByZXQgPSBz
ZW1hcGhvcmVfY3JlYXRlKG1hY2hfdGFza19zZWxmKCksICZtX3NlbWFwaG9yZSwgU1lOQ19QT0xJ
Q1lfRklGTywgMCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXQsIHJldCA9PSBLRVJOX1NVQ0NFU1Mp
OwotfQotCi1NYWNoU2VtYXBob3JlOjpNYWNoU2VtYXBob3JlKE1hY2hTZW5kUmlnaHQmJiBzZW5k
UmlnaHQpCi0gICAgOiBtX3NlbmRSaWdodChXVEZNb3ZlKHNlbmRSaWdodCkpCi0gICAgLCBtX3Nl
bWFwaG9yZShtX3NlbmRSaWdodC5zZW5kUmlnaHQoKSkKLXsKLSAgICBBU1NFUlQobV9zZW5kUmln
aHQpOwotfQotCi1NYWNoU2VtYXBob3JlOjp+TWFjaFNlbWFwaG9yZSgpCi17Ci0gICAgaWYgKCFt
X3NlbmRSaWdodCkKLSAgICAgICAgc2VtYXBob3JlX2Rlc3Ryb3kobWFjaF90YXNrX3NlbGYoKSwg
bV9zZW1hcGhvcmUpOwotfQotCi12b2lkIE1hY2hTZW1hcGhvcmU6OnNpZ25hbCgpCi17Ci0gICAg
c2VtYXBob3JlX3NpZ25hbChtX3NlbWFwaG9yZSk7Ci19Ci0KLXZvaWQgTWFjaFNlbWFwaG9yZTo6
d2FpdCgpCi17Ci0gICAgc2VtYXBob3JlX3dhaXQobV9zZW1hcGhvcmUpOwotfQotCi12b2lkIE1h
Y2hTZW1hcGhvcmU6OndhaXRGb3IoU2Vjb25kcyB0aW1lb3V0KQotewotICAgIGF1dG8gc2Vjb25k
cyA9IHRpbWVvdXQuc2Vjb25kc0FzPHVuc2lnbmVkPigpOwotICAgIHNlbWFwaG9yZV90aW1lZHdh
aXQobV9zZW1hcGhvcmUsIHsgc2Vjb25kcywgc3RhdGljX2Nhc3Q8Y2xvY2tfcmVzX3Q+KHRpbWVv
dXQubmFub3NlY29uZHNBczx1aW50NjRfdD4oKSAtIHNlY29uZHMgKiBOU0VDX1BFUl9TRUMpIH0p
OwotfQotCi1NYWNoU2VuZFJpZ2h0IE1hY2hTZW1hcGhvcmU6OmNyZWF0ZVNlbmRSaWdodCgpCi17
Ci0gICAgcmV0dXJuIE1hY2hTZW5kUmlnaHQ6OmNyZWF0ZShtX3NlbWFwaG9yZSk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvTWFjaFNl
bWFwaG9yZS5oIGIvU291cmNlL1dURi93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTdjZWEwNDZiODEyY2JjM2ViM2E3MjEzMGQ5YTViYTAw
OTNmOTJmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDU2
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPG1hY2gvc2Vt
YXBob3JlLmg+Ci0jaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KLSNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgotCi1uYW1lc3BhY2UgV1RG
IHsKLQotY2xhc3MgTWFjaFNlbWFwaG9yZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFjaFNlbWFwaG9yZSk7Ci1wdWJsaWM6Ci0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIE1hY2hTZW1hcGhvcmUoKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgZXhwbGljaXQgTWFjaFNlbWFwaG9yZShNYWNoU2VuZFJpZ2h0JiYpOwotICAgIFdURl9FWFBP
UlRfUFJJVkFURSB+TWFjaFNlbWFwaG9yZSgpOwotCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgc2lnbmFsKCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgd2FpdCgpOwotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIHdhaXRGb3IoU2Vjb25kcyk7Ci0KLSAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgTWFjaFNlbmRSaWdodCBjcmVhdGVTZW5kUmlnaHQoKTsKLQotcHJpdmF0ZToKLSAg
ICBNYWNoU2VuZFJpZ2h0IG1fc2VuZFJpZ2h0OwotICAgIHNlbWFwaG9yZV90IG1fc2VtYXBob3Jl
IHsgU0VNQVBIT1JFX05VTEwgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBX
VEY6Ok1hY2hTZW1hcGhvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggOTAwNTY2OTRhNTMwMGRjM2E4YmZk
ZDFlZTMwZWMxNmJkOGViZGVhOC4uODI3OGJjZTE0YzVmMWMyNGJlN2M5MDIyZDVmZDQwYjI0YzU4
ZWZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNDgsNyArNDgsNiBAQAogI2luY2x1ZGUgIlJlbW90ZU1l
ZGlhUmVzb3VyY2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCIKLSNpbmNs
dWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVk
ZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCkBAIC0yOTEsMTAgKzI5
MCwxMCBAQCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6YXVkaW9TZXNzaW9uUHJveHkoKQogfQogI2VuZGlmCiAKLXZvaWQgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Q3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3Jl
KQogewotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVu
c3VyZShwYXJhbWV0ZXJzLmlkZW50aWZpZXIsIFsmXSgpIHsKLSAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+KFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOworICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShpZGVudGlmaWVyLCBbJl0o
KSB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFw
cGVyPihSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdU
Rk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKSk7CiAgICAgfSk7CiAgICAgQVNTRVJU
X1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4
IDQ0MThjYTZhZWEyYTQwOGUzNzc1Mzg5MGUxZDMwZGRlYzc2ZWM3Y2EuLjdiYWRkMzc3NjljZjUy
ZmQ1NDBiNGZiNzc3ZDA4ODc0NjYwNGY1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNjUsNyArNjUsNiBAQCBj
bGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDsKIGNsYXNzIFJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXI7CiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Owog
c3RydWN0IFJlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRpb247Ci1zdHJ1Y3QgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcwogICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+CkBAIC0xMjcsNyAr
MTI2LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2VuZGlmCiAKLSAgICB2b2lkIGNyZWF0ZVJlbmRl
cmluZ0JhY2tlbmQoUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsK
KyAgICB2b2lkIGNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIsIElQQzo6U2VtYXBob3JlJiYgcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpOwogICAgIHZv
aWQgcmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwog
CiAjaWYgRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAwY2Jj
NWQ4Nzk4M2U2NjZlNDhlODM5YTY0NjQ4OTg3OTUwYTM5MmJmLi45NTQ3MTBhMzQwZDJmNThkYTli
NWU5NTdjYmMzNGQ1ZTVhZmQ5ODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
MjMsNyArMjMsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBXYW50c0Rpc3BhdGNoTWVzc2FnZSB7Ci0gICAgdm9pZCBD
cmVhdGVSZW5kZXJpbmdCYWNrZW5kKHN0cnVjdCBXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVycykKKyAgICB2b2lkIENyZWF0ZVJlbmRlcmlu
Z0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyLCBJ
UEM6OlNlbWFwaG9yZSByZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkKICAgICB2b2lkIFJlbGVh
c2VSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHZvaWQgQ3Jl
YXRlR3JhcGhpY3NDb250ZXh0R0woc3RydWN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXgg
MzJhZmQzMTBiZTVjMzAzMDY0N2Q3MjU4YzIzZmRhMDEwMmIyZDc3NS4uMDNkMTYyZmRkMTFiMzVl
MjYyMGQyMmMxOTg0MjQ5ODg3OWJiNDU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAt
MzMsMTYgKzMzLDEzIEBACiAjaW5jbHVkZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oIgog
I2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5oIgotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRD
cmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIlNlbWFwaG9yZS5oIgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtR
dWV1ZS5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSA8d3RmL2NvY29hL01hY2hT
ZW1hcGhvcmUuaD4KLSNlbmRpZgogCiAjZGVmaW5lIFRFUk1JTkFURV9XRUJfUFJPQ0VTU19XSVRI
X01FU1NBR0UobWVzc2FnZSkgXAogICAgIFJFTEVBU0VfTE9HX0ZBVUxUKElQQywgIlJlcXVlc3Rp
bmcgdGVybWluYXRpb24gb2Ygd2ViIHByb2Nlc3MgJSIgUFJJdTY0ICIgZm9yIHJlYXNvbjogJSIg
UFVCTElDX0xPR19TVFJJTkcsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+d2ViUHJvY2Vz
c0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjbWVzc2FnZSk7IFwKQEAgLTY1LDE4ICs2MiwxNiBA
QAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmPFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZShHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK1JlZjxSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIgaWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJiByZXN1bWVEaXNw
bGF5TGlzdFNlbWFwaG9yZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVy
cykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKGdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGlkZW50aWZpZXIsIFdURk1vdmUocmVzdW1lRGlzcGxh
eUxpc3RTZW1hcGhvcmUpKSk7CiB9CiAKLVJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcywgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIHBh
cmFtZXRlcnMpCitSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2VtYXBob3JlJiYgcmVz
dW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpCiAgICAgOiBtX3dvcmtRdWV1ZShXb3JrUXVldWU6OmNy
ZWF0ZSgiUmVtb3RlUmVuZGVyaW5nQmFja2VuZCB3b3JrIHF1ZXVlIiwgV29ya1F1ZXVlOjpUeXBl
OjpTZXJpYWwsIFdvcmtRdWV1ZTo6UU9TOjpVc2VySW50ZXJhY3RpdmUpKQogICAgICwgbV9ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCi0gICAgLCBt
X3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKHBhcmFtZXRlcnMuaWRlbnRpZmllcikKLSNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICAsIG1fcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUobWFrZVVu
aXF1ZTxNYWNoU2VtYXBob3JlPihXVEZNb3ZlKHBhcmFtZXRlcnMuc2VuZFJpZ2h0Rm9yUmVzdW1l
RGlzcGxheUxpc3RTZW1hcGhvcmUpKSkKLSNlbmRpZgorICAgICwgbV9yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9y
ZShXVEZNb3ZlKHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKSkKIHsKICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwogICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlv
bigpLmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dvcmtRdWV1ZSwgdGhpcywgbV9yZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKQEAgLTIzMSw3ICsyMjYsNyBAQCBS
ZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om5leHREZXN0aW5hdGlv
bkltYWdlQnVmZmVyQWZ0ZXJBcHBseQogCiAgICAgICAgICAgICBoYW5kbGUuc3RhcnRXYWl0aW5n
KCk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgICAgICBtX3Jlc3VtZURpc3BsYXlMaXN0
U2VtYXBob3JlLT53YWl0Rm9yKDMwX3VzKTsKKyAgICAgICAgICAgIG1fcmVzdW1lRGlzcGxheUxp
c3RTZW1hcGhvcmUud2FpdEZvcigzMF91cyk7CiAjZWxzZQogICAgICAgICAgICAgc2xlZXAoMzBf
dXMpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBlNjM4OTkwM2I2NTBiYThkOTcz
ZGFmOWIzZGNjYTY0NTM1NmY0NWY4Li41MThhNmFhYWZjMjg4ZGUzOGZiZTAwZmZlYjIwYjg2ZjQw
YzYyNzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTM1LDE3ICszNSwxMyBAQAogI2luY2x1
ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlLmgiCiAj
aW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTZW1hcGhv
cmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0Rpc3BsYXlMaXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJlcGxheWVyLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBN
YWNoU2VtYXBob3JlOwotfQotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFj
ZSBEaXNwbGF5TGlzdCB7CkBAIC02MiwxNCArNTgsMTQgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlOwogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzczsKLXN0cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
OwogCiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kCiAgICAgOiBwcml2YXRlIElQQzo6TWVz
c2FnZVNlbmRlcgogICAgICwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyCiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJS
ZWFkaW5nQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKKworICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZD4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJiByZXN1bWVEaXNwbGF5TGlzdFNl
bWFwaG9yZSk7CiAgICAgdmlydHVhbCB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpOwogCiAgICAg
UmVtb3RlUmVzb3VyY2VDYWNoZSYgcmVtb3RlUmVzb3VyY2VDYWNoZSgpIHsgcmV0dXJuIG1fcmVt
b3RlUmVzb3VyY2VDYWNoZTsgfQpAQCAtODYsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aXNjb25uZWN0KCk7CiAKIHByaXZhdGU6Ci0gICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFy
YW1ldGVycyYmKTsKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJik7
CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9V
TlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlv
bikgb3ZlcnJpZGU7CiAKQEAgLTE0OCw5ICsxNDQsNyBAQCBwcml2YXRlOgogICAgIFJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI7CiAgICAgSGFz
aE1hcDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIFJlZlB0cjxE
aXNwbGF5TGlzdFJlYWRlckhhbmRsZT4+IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzOwogICAg
IE9wdGlvbmFsPFBlbmRpbmdXYWtldXBJbmZvcm1hdGlvbj4gbV9wZW5kaW5nV2FrZXVwSW5mbzsK
LSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpNYWNoU2VtYXBo
b3JlPiBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOwotI2VuZGlmCisgICAgSVBDOjpTZW1h
cGhvcmUgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAKaW5kZXggMGY4NDA3YzFmM2Rj
Nzg3YjUwZTliZjYwOTkxYWVlN2NiNDEwYjRmYS4uY2FmOTMwZGQzY2Y1NWQ2MWNhNTg2MmUzYTNj
NDU2NWY5OTI0Nzg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCkBAIC0yOSw5
ICsyOSw5IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCX0FVRElPKQog
CiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlNlbWFw
aG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9VdGlsaXRpZXMuaD4KICNpbmNsdWRlIDx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlT
ZW1hcGhvcmUuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIlNoYXJlZFJpbmdC
dWZmZXJTdG9yYWdlLmgiCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DQUF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQXVkaW9CdWZmZXJMaXN0Lmg+Ci0jaW5jbHVkZSA8d3Rm
L2NvY29hL01hY2hTZW1hcGhvcmUuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTUyLDkgKzUxLDkgQEAgY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbgogewogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4gY3JlYXRlKEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlm
aWVyIGlkZW50aWZpZXIsCi0gICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWlu
dDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUpCisgICAgICAg
IGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5u
ZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBm
bG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIElQQzo6U2VtYXBob3JlJiYgcmVuZGVyU2VtYXBob3Jl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbihjb25uZWN0aW9uLCBpZGVudGlmaWVyLCBpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0
Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIGhhcmR3YXJlU2Ft
cGxlUmF0ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uKGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5w
dXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVT
YW1wbGVSYXRlLCBXVEZNb3ZlKHJlbmRlclNlbWFwaG9yZSkpKTsKICAgICB9CiAKICAgICB2aXJ0
dWFsIH5SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKCkgPSBkZWZhdWx0OwpAQCAtNjgsOCArNjcsNiBA
QCBwdWJsaWM6CiAgICAgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgTWFjaFNlbmRSaWdo
dCBjcmVhdGVSZW5kZXJTZW1hcGhvcmVTZW5kUmlnaHQoKSB7IHJldHVybiBtX3JlbmRlclNlbWFw
aG9yZS5jcmVhdGVTZW5kUmlnaHQoKTsgfQotCiAgICAgdm9pZCBhdWRpb1NhbXBsZXNTdG9yYWdl
Q2hhbmdlZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaXBjSGFuZGxlLCBjb25zdCBX
ZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBu
dW1iZXJPZkZyYW1lcykKICAgICB7CiAgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWVS
ZWY8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFJlYWRPbmx5U2hhcmVkUmlu
Z0J1ZmZlclN0b3JhZ2U+KGlwY0hhbmRsZS5oYW5kbGUpLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZG
cmFtZXMpOwpAQCAtMTA0LDEyICsxMDEsMTMgQEAgcHVibGljOgogICAgIGJvb2wgaXNQbGF5aW5n
KCkgY29uc3QgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KIAogcHJpdmF0ZToKLSAgICBSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNl
SWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlKQor
ICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
aW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNh
bXBsZVJhdGUsIElQQzo6U2VtYXBob3JlJiYgcmVuZGVyU2VtYXBob3JlKQogICAgICAgICA6IG1f
aWQoaWRlbnRpZmllcikKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgLCBtX2F1ZGlvT3V0
cHV0VW5pdEFkYXB0b3IoKnRoaXMpCiAgICAgICAgICwgbV9yaW5nQnVmZmVyKG1ha2VVbmlxdWVS
ZWY8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPigpKQogI2VuZGlmCisgICAgICAgICwgbV9yZW5kZXJT
ZW1hcGhvcmUoV1RGTW92ZShyZW5kZXJTZW1hcGhvcmUpKQogICAgIHsKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICAgICAgbV9hdWRpb091dHB1dFVuaXRBZGFwdG9yLmNvbmZpZ3VyZShoYXJkd2Fy
ZVNhbXBsZVJhdGUsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwpAQCAtMTQ4LDkgKzE0Niw5IEBA
IHByaXZhdGU6CiAgICAgV2ViQ29yZTo6QXVkaW9PdXRwdXRVbml0QWRhcHRvciBtX2F1ZGlvT3V0
cHV0VW5pdEFkYXB0b3I7CiAKICAgICBVbmlxdWVSZWY8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPiBt
X3JpbmdCdWZmZXI7Ci0gICAgTWFjaFNlbWFwaG9yZSBtX3JlbmRlclNlbWFwaG9yZTsKICAgICB1
aW50NjRfdCBtX3N0YXJ0RnJhbWUgeyAwIH07CiAjZW5kaWYKKyAgICBJUEM6OlNlbWFwaG9yZSBt
X3JlbmRlclNlbWFwaG9yZTsKIAogICAgIGJvb2wgbV9pc1BsYXlpbmcgeyBmYWxzZSB9OwogfTsK
QEAgLTE2MiwxNiArMTYwLDEyIEBAIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcihHUFVDb25uZWN0aW9uVG9XZWJQCiAKIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjp+UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoKSA9
IGRlZmF1bHQ7CiAKLXZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmNyZWF0ZUF1
ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1i
ZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0
IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwgQ3JlYXRpb25Db21wbGV0aW9u
SGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlcjo6Y3JlYXRlQXVkaW9EZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNl
SWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCBJ
UEM6OlNlbWFwaG9yZSYmIHJlbmRlclNlbWFwaG9yZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIG5ld0lEID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpOwotICAgIGF1dG8gZGVzdGluYXRpb24gPSBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUobV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LCBuZXdJRCwgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91
dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlLCBoYXJkd2FyZVNhbXBsZVJhdGUpOworICAgIGF1dG8g
ZGVzdGluYXRpb24gPSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUobV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLCBuZXdJRCwgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5u
ZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlLCBoYXJkd2FyZVNhbXBsZVJh
dGUsIFdURk1vdmUocmVuZGVyU2VtYXBob3JlKSk7CiAgICAgbV9hdWRpb0Rlc3RpbmF0aW9ucy5h
ZGQobmV3SUQsIGRlc3RpbmF0aW9uLmNvcHlSZWYoKSk7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgY29tcGxldGlvbkhhbmRsZXIobmV3SUQsIGRlc3RpbmF0aW9uLT5jcmVhdGVSZW5kZXJTZW1h
cGhvcmVTZW5kUmlnaHQoKSk7Ci0jZWxzZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ld0lEKTsK
LSNlbmRpZgogfQogCiB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpkZWxldGVB
dWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyLmgKaW5kZXggYjgzZjI5ZjhkYzEzM2ExYTJjM2E4NzRiYTczM2I1
ODBiMjZlNzYyZC4uMWQwNmQ5OGYxODcwYmY3MTNhODQ4NDUwMGJkODk0YWEwMzJkMTQ5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIlNlbWFwaG9yZS5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgog
I2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KQEAg
LTM4LDEwICszOSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQUF1ZGlvU3RyZWFt
RGVzY3JpcHRpb247CiB9Ci0KLW5hbWVzcGFjZSBXVEYgewotY2xhc3MgTWFjaFNlbmRSaWdodDsK
LX0KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYzLDEyICs2MCw4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwogCi0jaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgdXNpbmcgQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlciA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIFdU
Rjo6TWFjaFNlbmRSaWdodCk+OwotI2Vsc2UKLSAgICB1c2luZyBDcmVhdGlvbkNvbXBsZXRpb25I
YW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRl
bnRpZmllcik+OwotI2VuZGlmCi0gICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0
IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1
aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBo
YXJkd2FyZVNhbXBsZVJhdGUsIENyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdm9p
ZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWlu
dDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIElQQzo6U2Vt
YXBob3JlJiYgcmVuZGVyU2VtYXBob3JlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdl
YktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIpPiYmKTsKKwogICAgIHZvaWQg
ZGVsZXRlQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHN0YXJ0QXVkaW9EZXN0aW5h
dGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzdG9wQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggNTU3
ODk4NDZkNzRkODU3NGJiZGExYWJkZjI3MThiZDNiYTViYzRlNC4uN2ZkMjIyOGRkMzA4NDc3ZmFk
ZjY5ZDQ3MGQ1ZmQ1ZTFjOTkxYjRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlci5tZXNzYWdlcy5pbgpAQCAtMjQsMTIgKzI0LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShXRUJfQVVESU8pCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIENy
ZWF0ZUF1ZGlvRGVzdGluYXRpb24oU3RyaW5nIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJl
ck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQg
c2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlKSAtPiAoV2ViS2l0OjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBNYWNoU2VuZFJpZ2h0IHJlbmRl
clNlbWFwaG9yZVNlbmRSaWdodCkgU3luY2hyb25vdXMKLSNlbmRpZgotI2lmICFQTEFURk9STShD
T0NPQSkKLSAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKFN0cmluZyBpbnB1dERldmljZUlkLCB1
aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hh
bm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkgLT4gKFdl
YktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgU3luY2hy
b25vdXMKLSNlbmRpZgorICAgIENyZWF0ZUF1ZGlvRGVzdGluYXRpb24oU3RyaW5nIGlucHV0RGV2
aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRl
LCBJUEM6OlNlbWFwaG9yZSByZW5kZXJTZW1hcGhvcmUpIC0+IChXZWJLaXQ6OlJlbW90ZUF1ZGlv
RGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIFN5bmNocm9ub3VzCiAKICAgICBEZWxl
dGVBdWRpb0Rlc3RpbmF0aW9uKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZp
ZXIgaWRlbnRpZmllcikgLT4gKCkgQXN5bmMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2VtYXBob3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1Nl
bWFwaG9yZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjNkMmY0Yjk4MmViNTk2MGM3N2I2N2IxNjczZTQ0MWI5
YTNjNWQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1Nl
bWFwaG9yZS5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJTZW1hcGhvcmUuaCIKKworI2lmICFPUyhEQVJXSU4pCisKK25hbWVz
cGFjZSBJUEMgeworCitTZW1hcGhvcmU6OlNlbWFwaG9yZSgpID0gZGVmYXVsdDsKKworU2VtYXBo
b3JlOjpTZW1hcGhvcmUoU2VtYXBob3JlJiYpID0gZGVmYXVsdDsKKworU2VtYXBob3JlOjp+U2Vt
YXBob3JlKCkgPSBkZWZhdWx0OworCitTZW1hcGhvcmUmIFNlbWFwaG9yZTo6b3BlcmF0b3I9KFNl
bWFwaG9yZSYmKSA9IGRlZmF1bHQ7CisKK3ZvaWQgU2VtYXBob3JlOjplbmNvZGUoRW5jb2RlciYp
IGNvbnN0IHsgfQorCitPcHRpb25hbDxTZW1hcGhvcmU+IFNlbWFwaG9yZTo6ZGVjb2RlKERlY29k
ZXImKQoreworICAgIHJldHVybiBTZW1hcGhvcmUgeyB9OworfQorCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2VtYXBob3JlLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TZW1hcGhvcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTgzYWM1YzY4NDgw
NzZmZjFlNTA1YTdmMTk5ZDI1OGQ0NWMyYzgxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU2VtYXBob3JlLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVk
ZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KKworI2lmIE9TKERB
UldJTikKKyNpbmNsdWRlIDxtYWNoL3NlbWFwaG9yZS5oPgorI2luY2x1ZGUgPHd0Zi9NYWNoU2Vu
ZFJpZ2h0Lmg+CisjZW5kaWYKKworbmFtZXNwYWNlIElQQyB7CisKK2NsYXNzIERlY29kZXI7Citj
bGFzcyBFbmNvZGVyOworCitjbGFzcyBTZW1hcGhvcmUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNlbWFwaG9yZSk7CitwdWJsaWM6Cisg
ICAgU2VtYXBob3JlKCk7CisgICAgU2VtYXBob3JlKFNlbWFwaG9yZSYmKTsKKyAgICB+U2VtYXBo
b3JlKCk7CisgICAgU2VtYXBob3JlJiBvcGVyYXRvcj0oU2VtYXBob3JlJiYpOworCisgICAgdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHN0YXRpYyBPcHRpb25hbDxTZW1hcGhvcmU+
IGRlY29kZShEZWNvZGVyJik7CisKKyNpZiBPUyhEQVJXSU4pCisgICAgZXhwbGljaXQgU2VtYXBo
b3JlKE1hY2hTZW5kUmlnaHQmJik7CisKKyAgICB2b2lkIHNpZ25hbCgpOworICAgIHZvaWQgd2Fp
dCgpOworICAgIHZvaWQgd2FpdEZvcihTZWNvbmRzKTsKKyAgICBNYWNoU2VuZFJpZ2h0IGNyZWF0
ZVNlbmRSaWdodCgpIGNvbnN0OworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7
IHJldHVybiBtX3NlbmRSaWdodCB8fCBtX3NlbWFwaG9yZSAhPSBTRU1BUEhPUkVfTlVMTDsgfQor
I2Vsc2UKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQorI2VuZGlmCisKK3ByaXZhdGU6CisjaWYgT1MoREFSV0lOKQorICAgIHZvaWQgZGVzdHJveSgp
OworICAgIE1hY2hTZW5kUmlnaHQgbV9zZW5kUmlnaHQ7CisgICAgc2VtYXBob3JlX3QgbV9zZW1h
cGhvcmUgeyBTRU1BUEhPUkVfTlVMTCB9OworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBJ
UEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2Rhcndpbi9TZW1hcGhv
cmVEYXJ3aW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvZGFyd2luL1NlbWFwaG9y
ZURhcndpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTExNGRiOWVhMWY3OWQzYTExNTg4ZTVlMGE4ZWMyZjNl
ZGFiOTA3YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2Rh
cndpbi9TZW1hcGhvcmVEYXJ3aW4uY3BwCkBAIC0wLDAgKzEsMTIxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNlbWFwaG9yZS5oIgorCisjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8bWFjaC9tYWNoLmg+CisKK25hbWVz
cGFjZSBJUEMgeworCitTZW1hcGhvcmU6OlNlbWFwaG9yZSgpCit7CisgICAgYXV0byByZXQgPSBz
ZW1hcGhvcmVfY3JlYXRlKG1hY2hfdGFza19zZWxmKCksICZtX3NlbWFwaG9yZSwgU1lOQ19QT0xJ
Q1lfRklGTywgMCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXQsIHJldCA9PSBLRVJOX1NVQ0NFU1Mp
OworfQorCitTZW1hcGhvcmU6OlNlbWFwaG9yZShTZW1hcGhvcmUmJiBvdGhlcikKKyAgICA6IG1f
c2VuZFJpZ2h0KFdURk1vdmUob3RoZXIubV9zZW5kUmlnaHQpKQorICAgICwgbV9zZW1hcGhvcmUo
c3RkOjpleGNoYW5nZShvdGhlci5tX3NlbWFwaG9yZSwgU0VNQVBIT1JFX05VTEwpKQoreworfQor
CitTZW1hcGhvcmU6OlNlbWFwaG9yZShNYWNoU2VuZFJpZ2h0JiYgc2VuZFJpZ2h0KQorICAgIDog
bV9zZW5kUmlnaHQoV1RGTW92ZShzZW5kUmlnaHQpKQorICAgICwgbV9zZW1hcGhvcmUobV9zZW5k
UmlnaHQuc2VuZFJpZ2h0KCkpCit7CisgICAgQVNTRVJUKG1fc2VuZFJpZ2h0KTsKK30KKworU2Vt
YXBob3JlOjp+U2VtYXBob3JlKCkKK3sKKyAgICBkZXN0cm95KCk7Cit9CisKK1NlbWFwaG9yZSYg
U2VtYXBob3JlOjpvcGVyYXRvcj0oU2VtYXBob3JlJiYgb3RoZXIpCit7CisgICAgaWYgKHRoaXMg
IT0gJm90aGVyKSB7CisgICAgICAgIGRlc3Ryb3koKTsKKyAgICAgICAgbV9zZW5kUmlnaHQgPSBX
VEZNb3ZlKG90aGVyLm1fc2VuZFJpZ2h0KTsKKyAgICAgICAgbV9zZW1hcGhvcmUgPSBzdGQ6OmV4
Y2hhbmdlKG90aGVyLm1fc2VtYXBob3JlLCBTRU1BUEhPUkVfTlVMTCk7CisgICAgfQorCisgICAg
cmV0dXJuICp0aGlzOworfQorCit2b2lkIFNlbWFwaG9yZTo6c2lnbmFsKCkKK3sKKyAgICBhdXRv
IHJldCA9IHNlbWFwaG9yZV9zaWduYWwobV9zZW1hcGhvcmUpOworICAgIEFTU0VSVF9VTlVTRUQo
cmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTKTsKK30KKwordm9pZCBTZW1hcGhvcmU6OndhaXQoKQor
eworICAgIGF1dG8gcmV0ID0gc2VtYXBob3JlX3dhaXQobV9zZW1hcGhvcmUpOworICAgIEFTU0VS
VF9VTlVTRUQocmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTKTsKK30KKwordm9pZCBTZW1hcGhvcmU6
OndhaXRGb3IoU2Vjb25kcyB0aW1lb3V0KQoreworICAgIGF1dG8gc2Vjb25kcyA9IHRpbWVvdXQu
c2Vjb25kc0FzPHVuc2lnbmVkPigpOworICAgIGF1dG8gcmV0ID0gc2VtYXBob3JlX3RpbWVkd2Fp
dChtX3NlbWFwaG9yZSwgeyBzZWNvbmRzLCBzdGF0aWNfY2FzdDxjbG9ja19yZXNfdD4odGltZW91
dC5uYW5vc2Vjb25kc0FzPHVpbnQ2NF90PigpIC0gc2Vjb25kcyAqIE5TRUNfUEVSX1NFQykgfSk7
CisgICAgQVNTRVJUX1VOVVNFRChyZXQsIHJldCA9PSBLRVJOX1NVQ0NFU1MgfHwgcmV0ID09IEtF
Uk5fT1BFUkFUSU9OX1RJTUVEX09VVCk7Cit9CisKK01hY2hTZW5kUmlnaHQgU2VtYXBob3JlOjpj
cmVhdGVTZW5kUmlnaHQoKSBjb25zdAoreworICAgIHJldHVybiBNYWNoU2VuZFJpZ2h0OjpjcmVh
dGUobV9zZW1hcGhvcmUpOworfQorCit2b2lkIFNlbWFwaG9yZTo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBjcmVhdGVTZW5kUmlnaHQoKTsKK30KKwor
T3B0aW9uYWw8U2VtYXBob3JlPiBTZW1hcGhvcmU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
eworICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
c2VuZFJpZ2h0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gT3B0
aW9uYWw8U2VtYXBob3JlPiB7IHN0ZDo6aW5fcGxhY2UsIFdURk1vdmUoc2VuZFJpZ2h0KSB9Owor
fQorCisKK3ZvaWQgU2VtYXBob3JlOjpkZXN0cm95KCkKK3sKKyAgICBpZiAobV9zZW5kUmlnaHQp
IHsKKyAgICAgICAgbV9zZW5kUmlnaHQgPSBNYWNoU2VuZFJpZ2h0KCk7CisgICAgICAgIG1fc2Vt
YXBob3JlID0gU0VNQVBIT1JFX05VTEw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYg
KG1fc2VtYXBob3JlID09IFNFTUFQSE9SRV9OVUxMKQorICAgICAgICByZXR1cm47CisgICAgYXV0
byByZXQgPSBzZW1hcGhvcmVfZGVzdHJveShtYWNoX3Rhc2tfc2VsZigpLCBtX3NlbWFwaG9yZSk7
CisgICAgQVNTRVJUX1VOVVNFRChyZXQsIHJldCA9PSBLRVJOX1NVQ0NFU1MpOworICAgIG1fc2Vt
YXBob3JlID0gU0VNQVBIT1JFX05VTEw7Cit9CisKK30gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weSBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHkKaW5kZXgg
NmVjNmViNGRhNTU3NzNmY2VkNjNkMzgyMjMzYzMyNTgxOWE5YTNjMy4uZTRkZWU3ZWIwYWY3MDhm
ZDUwN2Y0Yzk2ZmFlNGUyNWUxNjU2YzA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5CkBAIC0zOSw3ICszOSw3IEBAIHRlc3RzX2Rp
cmVjdG9yeSA9IG9zLnBhdGguam9pbihtb2R1bGVfZGlyZWN0b3J5LCAndGVzdHMnKQogCiByZXNl
dF9yZXN1bHRzID0gRmFsc2UKIAotX3Rlc3RfcmVjZWl2ZXJfbmFtZXMgPSBbJ1Rlc3RXaXRoU3Vw
ZXJjbGFzcycsICdUZXN0V2l0aExlZ2FjeVJlY2VpdmVyJywgJ1Rlc3RXaXRob3V0QXR0cmlidXRl
cycsICdUZXN0V2l0aElmTWVzc2FnZSddCitfdGVzdF9yZWNlaXZlcl9uYW1lcyA9IFsnVGVzdFdp
dGhTdXBlcmNsYXNzJywgJ1Rlc3RXaXRoTGVnYWN5UmVjZWl2ZXInLCAnVGVzdFdpdGhvdXRBdHRy
aWJ1dGVzJywgJ1Rlc3RXaXRoSWZNZXNzYWdlJywgJ1Rlc3RXaXRoU2VtYXBob3JlJ10KIAogCiBk
ZWYgcmVjZWl2ZXJfaGVhZGVyX2ZpbGVfbmFtZShyZWNlaXZlcl9uYW1lKToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWFrZWZpbGUgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlCmluZGV4IDg3OTZmZmJjNWEzZjg3Yjky
M2VkNmM5ODAyMzkxYTg3NmJhYzM4MmUuLmIxZGQ3OTg4NjVhNTE1NDk4MjBiNzBkYmRiNjFhY2Q2
ZWFjYmMxZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
TWFrZWZpbGUKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmls
ZQpAQCAtMSwyICsxLDIgQEAKIGFsbDoKLQlweXRob24gLi4vLi4vZ2VuZXJhdGUtbWVzc2FnZS1y
ZWNlaXZlci5weSAuIFRlc3RXaXRoU3VwZXJjbGFzcyBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyIFRl
c3RXaXRob3V0QXR0cmlidXRlcyBUZXN0V2l0aElmTWVzc2FnZQorCXB5dGhvbiAuLi8uLi9nZW5l
cmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5IC4gVGVzdFdpdGhTdXBlcmNsYXNzIFRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXIgVGVzdFdpdGhvdXRBdHRyaWJ1dGVzIFRlc3RXaXRoSWZNZXNzYWdlIFRlc3RX
aXRoU2VtYXBob3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3RzL01lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAKaW5kZXggNTk0
MDQ0MzkwY2FkYWMyZmYwY2RmYWE5ZTMwNTA0NDI3NzgzODBmZS4uY2M2ODM2ODI4MWNkNTkzZDQ2
Y2YwYTc1ZTFhNjRkMGI3ZWYzOGM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25z
LmNwcApAQCAtNDAsMTIgKzQwLDE0IEBACiAjaW5jbHVkZSAiTWFjaFBvcnQuaCIKICNlbmRpZgog
I2luY2x1ZGUgIlBsdWdpbi5oIgorI2luY2x1ZGUgIlNlbWFwaG9yZS5oIgogI2luY2x1ZGUgIlRl
c3RDbGFzc05hbWUuaCIKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogI2luY2x1ZGUgIlRlc3RU
d29TdGF0ZUVudW0uaCIKICNlbmRpZgogI2luY2x1ZGUgIlRlc3RXaXRoSWZNZXNzYWdlTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJUZXN0V2l0aExlZ2FjeVJlY2VpdmVyTWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJUZXN0V2l0aFNlbWFwaG9yZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiVGVzdFdpdGhTdXBl
cmNsYXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJUZXN0V2l0aG91dEF0dHJpYnV0ZXNNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgpAQCAtMjE2LDYgKzIxOCwx
MCBAQCBPcHRpb25hbDxKU0M6OkpTVmFsdWU+IGpzVmFsdWVGb3JBcmd1bWVudHMoSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBNZQogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RX
aXRoSWZNZXNzYWdlX0xvYWRVUkw6CiAgICAgICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZEFy
Z3VtZW50czxNZXNzYWdlczo6VGVzdFdpdGhJZk1lc3NhZ2U6OkxvYWRVUkw6OkFyZ3VtZW50cz4o
Z2xvYmFsT2JqZWN0LCBkZWNvZGVyKTsKICNlbmRpZgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRl
c3RXaXRoU2VtYXBob3JlX1NlbmRTZW1hcGhvcmU6CisgICAgICAgIHJldHVybiBqc1ZhbHVlRm9y
RGVjb2RlZEFyZ3VtZW50czxNZXNzYWdlczo6VGVzdFdpdGhTZW1hcGhvcmU6OlNlbmRTZW1hcGhv
cmU6OkFyZ3VtZW50cz4oZ2xvYmFsT2JqZWN0LCBkZWNvZGVyKTsKKyAgICBjYXNlIE1lc3NhZ2VO
YW1lOjpUZXN0V2l0aFNlbWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlOgorICAgICAgICByZXR1cm4g
anNWYWx1ZUZvckRlY29kZWRBcmd1bWVudHM8TWVzc2FnZXM6OlRlc3RXaXRoU2VtYXBob3JlOjpS
ZWNlaXZlU2VtYXBob3JlOjpBcmd1bWVudHM+KGdsb2JhbE9iamVjdCwgZGVjb2Rlcik7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNTE3LDYgKzUyMywxMiBAQCBPcHRp
b25hbDxWZWN0b3I8QXJndW1lbnREZXNjcmlwdGlvbj4+IG1lc3NhZ2VBcmd1bWVudERlc2NyaXB0
aW9ucyhNZXNzYWdlTmFtZSBuYQogICAgICAgICAgICAgeyJ2YWx1ZSIsICJpbnQ2NF90IiwgbnVs
bHB0ciwgZmFsc2V9LAogICAgICAgICB9OwogI2VuZGlmCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6
VGVzdFdpdGhTZW1hcGhvcmVfU2VuZFNlbWFwaG9yZToKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxB
cmd1bWVudERlc2NyaXB0aW9uPiB7CisgICAgICAgICAgICB7InMwIiwgIklQQzo6U2VtYXBob3Jl
IiwgbnVsbHB0ciwgZmFsc2V9LAorICAgICAgICB9OworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRl
c3RXaXRoU2VtYXBob3JlX1JlY2VpdmVTZW1hcGhvcmU6CisgICAgICAgIHJldHVybiBWZWN0b3I8
QXJndW1lbnREZXNjcmlwdGlvbj4geyB9OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVz
c2FnZU5hbWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2Fn
ZU5hbWVzLmNwcAppbmRleCA3NmZhZDM3YzU0NjBhZGJjZmVhMzcyZDE4NjY1NTBmYTdjOGE4NTEz
Li40YzZlYzJlNjc5NGM1MWVmMmRkYTgzZmM2M2I2NjM5MGQwNjg2YjAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCkBAIC03
Miw2ICs3MiwxMCBAQCBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbihNZXNzYWdlTmFtZSBuYW1lKQog
ICAgICAgICByZXR1cm4gIlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVGVzdFBhcmFtZXRlckF0dHJp
YnV0ZXMiOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVG91
Y2hFdmVudDoKICAgICAgICAgcmV0dXJuICJUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1RvdWNoRXZl
bnQiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU2VtYXBob3JlX1JlY2VpdmVTZW1h
cGhvcmU6CisgICAgICAgIHJldHVybiAiVGVzdFdpdGhTZW1hcGhvcmVfUmVjZWl2ZVNlbWFwaG9y
ZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTZW1hcGhvcmVfU2VuZFNlbWFwaG9y
ZToKKyAgICAgICAgcmV0dXJuICJUZXN0V2l0aFNlbWFwaG9yZV9TZW5kU2VtYXBob3JlIjsKICAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfTG9hZFVSTDoKICAgICAgICAg
cmV0dXJuICJUZXN0V2l0aFN1cGVyY2xhc3NfTG9hZFVSTCI7CiAgICAgY2FzZSBNZXNzYWdlTmFt
ZTo6VGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2U6CkBAIC0xODEsNiArMTg1LDkg
QEAgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKICAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1Rlc3RQYXJhbWV0ZXJB
dHRyaWJ1dGVzOgogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJf
VG91Y2hFdmVudDoKICAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6VGVzdFdpdGhMZWdhY3lS
ZWNlaXZlcjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFNlbWFwaG9yZV9SZWNlaXZl
U2VtYXBob3JlOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU2VtYXBob3JlX1NlbmRT
ZW1hcGhvcmU6CisgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6OlRlc3RXaXRoU2VtYXBob3Jl
OwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19Mb2FkVVJMOgogICAg
IGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlOgog
ICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdl
V2l0aENvbm5lY3Rpb246CkBAIC0yOTksNiArMzA2LDEwIEBAIGJvb2wgaXNWYWxpZE1lc3NhZ2VO
YW1lKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6
Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1RvdWNoRXZlbnQpCiAgICAgICAg
IHJldHVybiB0cnVlOwogI2VuZGlmCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2Fn
ZU5hbWU6OlRlc3RXaXRoU2VtYXBob3JlX1JlY2VpdmVTZW1hcGhvcmUpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0
aFNlbWFwaG9yZV9TZW5kU2VtYXBob3JlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAo
bWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX0xvYWRV
UkwpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5o
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaAppbmRl
eCAyM2Y3NTYwODdkNjgzYWQyMmIwNjhlMmE3MWZkOTVhMGYzY2U1NTVlLi41Nzc2MTIxMmZkZDI5
Y2YxZTA5ZjdlYjAzNzAyNzY4NmYxZDQ5YTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmgKQEAgLTMxLDExICszMSwxMiBAQCBuYW1l
c3BhY2UgSVBDIHsKIGVudW0gY2xhc3MgUmVjZWl2ZXJOYW1lIDogdWludDhfdCB7CiAgICAgVGVz
dFdpdGhJZk1lc3NhZ2UgPSAxCiAgICAgLCBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyID0gMgotICAg
ICwgVGVzdFdpdGhTdXBlcmNsYXNzID0gMwotICAgICwgVGVzdFdpdGhvdXRBdHRyaWJ1dGVzID0g
NAotICAgICwgSVBDID0gNQotICAgICwgQXN5bmNSZXBseSA9IDYKLSAgICAsIEludmFsaWQgPSA3
CisgICAgLCBUZXN0V2l0aFNlbWFwaG9yZSA9IDMKKyAgICAsIFRlc3RXaXRoU3VwZXJjbGFzcyA9
IDQKKyAgICAsIFRlc3RXaXRob3V0QXR0cmlidXRlcyA9IDUKKyAgICAsIElQQyA9IDYKKyAgICAs
IEFzeW5jUmVwbHkgPSA3CisgICAgLCBJbnZhbGlkID0gOAogfTsKIAogZW51bSBjbGFzcyBNZXNz
YWdlTmFtZSA6IHVpbnQxNl90IHsKQEAgLTYwLDYgKzYxLDggQEAgZW51bSBjbGFzcyBNZXNzYWdl
TmFtZSA6IHVpbnQxNl90IHsKICAgICAsIFRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVGVtcGxhdGVU
ZXN0CiAgICAgLCBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1Rlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVz
CiAgICAgLCBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1RvdWNoRXZlbnQKKyAgICAsIFRlc3RXaXRo
U2VtYXBob3JlX1JlY2VpdmVTZW1hcGhvcmUKKyAgICAsIFRlc3RXaXRoU2VtYXBob3JlX1NlbmRT
ZW1hcGhvcmUKICAgICAsIFRlc3RXaXRoU3VwZXJjbGFzc19Mb2FkVVJMCiAgICAgLCBUZXN0V2l0
aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZQogICAgICwgVGVzdFdpdGhTdXBlcmNsYXNzX1Rl
c3RBc3luY01lc3NhZ2VXaXRoQ29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFNlbWFwaG9yZS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTZW1hcGhvcmUubWVzc2FnZXMu
aW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTBmZDJmZmU0OGMwNTFjZjZlMDk5Y2ZlNzcwOTEwYmRmOGVjODEzOAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVz
dFdpdGhTZW1hcGhvcmUubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgor
IyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBUZXN0V2l0aFNlbWFwaG9y
ZSB7CisgICAgdm9pZCBTZW5kU2VtYXBob3JlKElQQzo6U2VtYXBob3JlIHMwKQorICAgIHZvaWQg
UmVjZWl2ZVNlbWFwaG9yZSgpIC0+IChJUEM6OlNlbWFwaG9yZSByMCkKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTZW1hcGhvcmVNZXNz
YWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aFNlbWFwaG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmY2ODY5OTUzMjdm
YzJmMjRiZWFkOTVjMDM3ZWVjOGRjMWQ3ODBlZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTZW1hcGhvcmVNZXNzYWdlUmVjZWl2
ZXIuY3BwCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTZW1hcGhvcmUuaCIKKworI2luY2x1ZGUgIkRlY29k
ZXIuaCIKKyNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCisjaW5jbHVkZSAiU2VtYXBob3JlLmgi
CisjaW5jbHVkZSAiVGVzdFdpdGhTZW1hcGhvcmVNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKwordm9pZCBUZXN0V2l0aFNlbWFwaG9yZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgYXV0
byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTZW1hcGhvcmU6OlNlbmRTZW1hcGhvcmU6Om5h
bWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU2Vt
YXBob3JlOjpTZW5kU2VtYXBob3JlPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTZW1hcGhvcmU6
OnNlbmRTZW1hcGhvcmUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFVOVVNFRF9QQVJB
TShjb25uZWN0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgVGVzdFdpdGhTZW1hcGhvcmU6OmRpZFJlY2VpdmVTeW5j
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK3sKKyAgICBh
dXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFNlbWFwaG9yZTo6UmVjZWl2ZVNlbWFwaG9y
ZTo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdp
dGhTZW1hcGhvcmU6OlJlY2VpdmVTZW1hcGhvcmU+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRo
aXMsICZUZXN0V2l0aFNlbWFwaG9yZTo6cmVjZWl2ZVNlbWFwaG9yZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIFVOVVNFRF9QQVJB
TShkZWNvZGVyKTsKKyAgICBVTlVTRURfUEFSQU0ocmVwbHlFbmNvZGVyKTsKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU2VtYXBob3JlTWVzc2Fn
ZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTZW1hcGhv
cmVNZXNzYWdlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmMzU2ZWVkYWE2NjNkMjEzNDU1YTkxZWIwZjFkN2Rm
NjZkNmY5YjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU2VtYXBob3JlTWVzc2FnZXMuaApAQCAtMCwwICsxLDg2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisg
KiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5o
IgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNp
bmNsdWRlICJUZXN0V2l0aFNlbWFwaG9yZU1lc3NhZ2VzUmVwbGllcy5oIgorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25h
bWVzcGFjZSBJUEMgeworY2xhc3MgU2VtYXBob3JlOworfQorCituYW1lc3BhY2UgTWVzc2FnZXMg
eworbmFtZXNwYWNlIFRlc3RXaXRoU2VtYXBob3JlIHsKKworc3RhdGljIGlubGluZSBJUEM6OlJl
Y2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkKK3sKKyAgICByZXR1cm4gSVBDOjpSZWNl
aXZlck5hbWU6OlRlc3RXaXRoU2VtYXBob3JlOworfQorCitjbGFzcyBTZW5kU2VtYXBob3JlIHsK
K3B1YmxpYzoKKyAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6U2Vt
YXBob3JlJj47CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTZW1hcGhvcmVfU2VuZFNlbWFwaG9yZTsgfQorICAg
IHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgU2VuZFNl
bWFwaG9yZShjb25zdCBJUEM6OlNlbWFwaG9yZSYgczApCisgICAgICAgIDogbV9hcmd1bWVudHMo
czApCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgUmVjZWl2ZVNlbWFwaG9y
ZSB7CitwdWJsaWM6CisgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OworCisgICAg
c3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6
OlRlc3RXaXRoU2VtYXBob3JlX1JlY2VpdmVTZW1hcGhvcmU7IH0KKyAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBpc1N5bmMgPSB0cnVlOworCisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPElQQzo6
U2VtYXBob3JlJj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPElQQzo6
U2VtYXBob3JlPjsKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFy
Z3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXaXRoU2VtYXBo
b3JlCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFNlbWFwaG9yZU1lc3NhZ2VzUmVwbGllcy5oIGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFNlbWFwaG9yZU1lc3Nh
Z2VzUmVwbGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1MDFhMzNjOWM2N2EwMmFlM2I5MjYzY2E2ZTA2MDY2
N2IzOWYzOTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU2VtYXBob3JlTWVzc2FnZXNSZXBsaWVzLmgKQEAgLTAsMCArMSwzNiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZU5h
bWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMg
eworbmFtZXNwYWNlIFRlc3RXaXRoU2VtYXBob3JlIHsKKworCit9IC8vIG5hbWVzcGFjZSBUZXN0
V2l0aFNlbWFwaG9yZQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBh
cmFtZXRlcnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdiNWE3NmFmMjUyMGM5
ZTcyMDEwNjgwOGE5MzRmZDE5Nzg5OWQyNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KLSNp
bmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgotI2luY2x1ZGUgPHd0Zi9NYWNo
U2VuZFJpZ2h0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyB7Ci0gICAgUmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIgaWRlbnRpZmllcjsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBNYWNoU2VuZFJpZ2h0
IHNlbmRSaWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOwotI2VuZGlmCi0KLSAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRDcmVhdGlvblBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJik7Ci19OwotCi10ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPgotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJh
bWV0ZXJzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8
IGlkZW50aWZpZXI7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgZW5jb2RlciA8PCBzZW5kUmln
aHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKLSNlbmRpZgotfQotCi10ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8UmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFy
YW1ldGVycz4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9u
UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotCi0gICAgT3B0aW9uYWw8UmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXI+IGlkZW50aWZpZXI7Ci0gICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwotICAgIGlm
ICghaWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHBhcmFt
ZXRlcnMuaWRlbnRpZmllciA9ICppZGVudGlmaWVyOwotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgT3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RT
ZW1hcGhvcmU7Ci0gICAgZGVjb2RlciA+PiBzZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNl
bWFwaG9yZTsKLSAgICBpZiAoIXNlbmRSaWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3Jl
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcGFyYW1ldGVycy5zZW5kUmln
aHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSA9IFdURk1vdmUoKnNlbmRSaWdodEZvclJl
c3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIHBhcmFtZXRl
cnM7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9Q
Uk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQKaW5kZXggN2Y0MDhiYzQ2MTBjMTA1NDkxZDViMDY0MWY4YjcwZjNh
ZjkxYjA0My4uOWFiZDg5OTViMjgxOWFmYTljZmYxNDcyZGM0ODgxMDE5ZjI2ZjYzOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CkBAIC0xNDQsNiArMTQ0LDcgQEAgUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwIEBuby11
bmlmeQogUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9J
UEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9NZXNzYWdl
U2VuZGVyLmNwcCBAbm8tdW5pZnkKK1BsYXRmb3JtL0lQQy9TZW1hcGhvcmUuY3BwIEBuby11bmlm
eQogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIEBuby11bmlmeQogUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBD
L1N0cmluZ1JlZmVyZW5jZS5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXgg
YjgzZDczODYyNTk2OGRmZDdlODkyM2QyZmU3ODQyYmIwNTcyZmUyZi4uMjk5ZTM4Y2ZjOWU2OWIz
OTk1ZjBjYzExM2ZmZjQ0MDVkNzkwYjA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtODgs
NiArODgsOCBAQCBQbGF0Zm9ybS9pb3MvVUlLaXRTb2Z0TGluay5tbQogCiBQbGF0Zm9ybS9JUEMv
Y29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCiBQbGF0Zm9ybS9JUEMvY29jb2EvTWFjaE1lc3NhZ2Uu
Y3BwCitQbGF0Zm9ybS9JUEMvZGFyd2luL1NlbWFwaG9yZURhcndpbi5jcHAKKwogCiBQbGF0Zm9y
bS9tYWMvTWFjaFV0aWxpdGllcy5jcHAKIFBsYXRmb3JtL21hYy9NZW51VXRpbGl0aWVzLm1tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1
YWJhOTZmMzY1NzZkMjhhOTIzMzEyMjJkY2E2NzUyY2VkYzkyNDM2Li42MWJlYWY5NDhmYTNiZmRl
OGVmZTIxYTg5NTUyZDk0NzRmMmFmMDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMjcsNiArMTMyNyw4IEBACiAJCTdBRkJEMzY3
MjFFNTFCQUIwMDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkJEMzY1MjFF
NTFCQUIwMDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCAqLzsg
fTsKIAkJN0FGQkQzNkYyMUU1NDZGODAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkJEMzZEMjFFNTQ2
RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggKi87IH07CiAJCTdCMURCMjY2MjU2NjhD
RTEwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxREIyNjUyNTY2OENFMDAwMEUyNkJDIC8qIEFycmF5UmVm
ZXJlbmNlLmggKi87IH07CisJCTdCNzMxMjI4MjVDOTg4QUEwMDNCMjc5NiAvKiBTZW1hcGhvcmUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEy
MjYyNUM5ODhBQTAwM0IyNzk2IC8qIFNlbWFwaG9yZS5jcHAgKi87IH07CisJCTdCNzMxMjI5MjVD
OTg4QUIwMDNCMjc5NiAvKiBTZW1hcGhvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjI3MjVDOTg4QUEwMDNCMjc5NiAvKiBTZW1hcGhvcmUu
aCAqLzsgfTsKIAkJN0MwNjVGMkMxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlckRhdGFUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlckRhdGFUeXBlcy5oICovOyB9OwogCQk3QzEzNUFBOTE3M0IwQkNBMDA1ODZBRTIgLyogV0tQ
bHVnaW5JbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0MxMzVBQTcxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzFC
QTMzRTFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxQkEzM0MxQTRBMEU2MDAwNDNFMjQ5IC8q
IEFQSURpY3Rpb25hcnkuaCAqLzsgfTsKQEAgLTE5NzAsNyArMTk3Miw2IEBACiAJCUY0MkQ2MzQx
MjJBMEVGREYwMEQyRkIzQSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MkQ2MzNGMjJBMEVGRDMwMEQyRkIz
QSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEuaCAqLzsgfTsKIAkJRjQzMEU5NDIyMjQ3MzM1RjAw
NUZFMDUzIC8qIFdlYnNpdGVNZXRhVmlld3BvcnRQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzBFOTQxMjI0NzMyQTkwMDVGRTA1MyAvKiBX
ZWJzaXRlTWV0YVZpZXdwb3J0UG9saWN5LmggKi87IH07CiAJCUY0MzBFOTQ0MjI0NzNERkYwMDVG
RTA1MyAvKiBXZWJDb250ZW50TW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQzMEU5NDMyMjQ3M0RCODAwNUZFMDUzIC8qIFdlYkNvbnRlbnRNb2Rl
LmggKi87IH07Ci0JCUY0MzdDOEQ5MjU5M0I3RTMwMERCOEExQyAvKiBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNDM3QzhEODI1OTNCN0UzMDBEQjhBMUMgLyogUmVtb3RlUmVuZGVy
aW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oICovOyB9OwogCQlGNDM4Q0QxQzIyNDE0MjE0
MDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzhDRDFCMjI0MTQwQTYwMERFNkREQSAvKiBXS1dl
YnBhZ2VQcmVmZXJlbmNlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywg
KTsgfTsgfTsKIAkJRjQzOENEMUYyMjQxNEQ0MDAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVu
Y2VzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0MzhDRDFFMjI0MTRENDAwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlc0ludGVy
bmFsLmggKi87IH07CiAJCUY0MzhDRDIxMjI0MUY2OTUwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVm
ZXJlbmNlc1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0MzhDRDIwMjI0MUY2OTUwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlc1By
aXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtNDUxNyw2ICs0NTE4LDkgQEAKIAkJN0FGQkQzNkUyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNp
c3RlbmN5VXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVyc2lzdGVuY3lVdGlscy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAv
KiBBcnJheVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJh
eVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjY0QzBCNjI1NEM1
QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QjczMTIyNjI1Qzk4OEFBMDAzQjI3OTYgLyogU2VtYXBob3JlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlbWFwaG9yZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjI3MjVDOTg4QUEwMDNCMjc5NiAvKiBTZW1hcGhvcmUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VtYXBob3JlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjJBMjVDOTg4QzYwMDNCMjc5NiAvKiBTZW1hcGhv
cmVEYXJ3aW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VtYXBo
b3JlRGFyd2luLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNjUyNTRB
RkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNjcyNTRBRkUx
NzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTU3OTEsNyArNTc5NSw2IEBACiAJCUY0MkQ2MzQwMjJBMEVGRDMw
MEQyRkIzQSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJBdXRvY29ycmVjdGlvbkRhdGEubW07IHBhdGggPSBpb3Mv
V2ViQXV0b2NvcnJlY3Rpb25EYXRhLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NDMwRTk0MTIyNDczMkE5MDA1RkUwNTMgLyogV2Vic2l0ZU1ldGFWaWV3cG9ydFBvbGljeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJzaXRlTWV0YVZpZXdwb3J0UG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUY0MzBFOTQzMjI0NzNEQjgwMDVGRTA1MyAvKiBXZWJDb250ZW50TW9k
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZW50TW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlGNDM3QzhEODI1OTNCN0UzMDBEQjhBMUMgLyogUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZENyZWF0aW9uUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0MzhDRDFCMjI0MTQwQTYwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS1dlYnBhZ2VQcmVmZXJlbmNlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNDM4Q0QxRDIyNDE0QUQ2MDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYnBhZ2VQcmVmZXJlbmNlcy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzOENEMUUyMjQxNEQ0MDAwREU2RERBIC8qIFdLV2Vi
cGFnZVByZWZlcmVuY2VzSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJwYWdlUHJlZmVy
ZW5jZXNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjUzMCw3ICs2
NTMzLDYgQEAKIAkJCQlFMUNDMUI4RTEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvLmggKi8s
CiAJCQkJNDYzRkQ0ODExRUI5NEVBRDAwQTI5ODJDIC8qIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNv
bi5oICovLAogCQkJCTlCMTIyOUQwMjNGRjJBNUUwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uSWRlbnRpZmllci5oICovLAotCQkJCUY0MzdDOEQ4MjU5M0I3RTMwMERCOEExQyAvKiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi8sCiAJCQkJNUNCN0FG
RTYyM0M2ODFCMDAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZEluZm8uaCAqLywKIAkJCQk1QzAwOTkz
QjI0MTdGQjdFMDBENTNDMjUgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaCAq
LywKIAkJCQk0MTA0ODJDQjFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5jcHAgKi8sCkBA
IC02ODgyLDYgKzY4ODQsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
IAkJCQlCQ0M1NkY3NTExNTk5NTVFMDAxQ0NBRjkgLyogY29jb2EgKi8sCisJCQkJN0I3MzEyMkMy
NUNBNjdBRTAwM0IyNzk2IC8qIGRhcndpbiAqLywKIAkJCQkxQUVGRDI3ODExRDE2QzgxMDA4MjE5
RDMgLyogQXJndW1lbnRDb2Rlci5oICovLAogCQkJCTFBM0Q2MTA0MTNBN0YwM0EwMEY5NUQ0RSAv
KiBBcmd1bWVudENvZGVycy5jcHAgKi8sCiAJCQkJMUFFRkQyRjYxMUQxODA3QjAwODIxOUQzIC8q
IEFyZ3VtZW50Q29kZXJzLmggKi8sCkBAIC02OTA4LDYgKzY5MTEsOCBAQAogCQkJCTFBM0VFRDBE
MTYxQTUzNTMwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuaCAqLywKIAkJCQkxQUFCMDM3
NzE4NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNlbmRlci5jcHAgKi8sCiAJCQkJMUFBQjAzNzgx
ODVBN0M2QTAwRURGNTAxIC8qIE1lc3NhZ2VTZW5kZXIuaCAqLywKKwkJCQk3QjczMTIyNjI1Qzk4
OEFBMDAzQjI3OTYgLyogU2VtYXBob3JlLmNwcCAqLywKKwkJCQk3QjczMTIyNzI1Qzk4OEFBMDAz
QjI3OTYgLyogU2VtYXBob3JlLmggKi8sCiAJCQkJMkRDMTgwMDFEOTBEREQxNUZDNjk5MUE5IC8q
IFNoYXJlZEJ1ZmZlckNvcHkuY3BwICovLAogCQkJCTVDQzVEQjkxMjE0ODhFMTYwMDZDQjhBOCAv
KiBTaGFyZWRCdWZmZXJDb3B5LmggKi8sCiAJCQkJMkRDMTg1NUVEQkZCODUwQkEwQjZEMDZEIC8q
IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwICovLApAQCAtOTAxMSw2ICs5MDE2LDE0IEBA
CiAJCQluYW1lID0gQ2xhc3NpZmllcjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07
CisJCTdCNzMxMjJDMjVDQTY3QUUwMDNCMjc5NiAvKiBkYXJ3aW4gKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTdCNzMxMjJBMjVDOTg4QzYwMDNCMjc5NiAv
KiBTZW1hcGhvcmVEYXJ3aW4uY3BwICovLAorCQkJKTsKKwkJCXBhdGggPSBkYXJ3aW47CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk3QzZFNzBGODE4QjJENDdFMDBGMjRFMkUg
LyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAt
MTE3MzcsNiArMTE3NTAsNyBAQAogCQkJCTgzOTkwMjAzMUJFOUEwMkIwMDBGMzY1MyAvKiBOZXR3
b3JrTG9hZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNENDU0RDcxQkU5RDNDNDAwNkM5M0JEIC8q
IE5ldHdvcmtMb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzkxNDk2NTFCRUE4Mzg1
MDBEMkQ5NTMgLyogTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQlF
NDdGQzhBMDI1QjgzMzFDMDA1NDk1RkMgLyogTmV0d29ya0xvYWRTY2hlZHVsZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxNzk1NTZBMTYyODc2RjMwMEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3Q0YwRTQxNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzE0MjZFRDFD
MjNGODA5MDBENDExODMgLyogTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBpbiBI
ZWFkZXJzICovLApAQCAtMTE4NzksNyArMTE4OTMsNiBAQAogCQkJCTFBNTcwNEZDMUJFMTc1MTEw
MDg3NEFGMSAvKiBSZW1vdGVPYmplY3RJbnZvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUMxMzM4MDE4NTkwQUU0MDBGM0VDMDUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBQzEzMzg2MTg1OTBDNDYwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RSZWdp
c3RyeU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKLQkJCQlGNDM3QzhEOTI1OTNCN0UzMDBEQjhB
MUMgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY1OTQ3OTAxODdCM0IzQTAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU5NDdBODE4N0I1MTc2MDA0Mzc4NTcg
LyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY1OTQ3OUIxODdCM0I2MDAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHkuaCBpbiBIZWFkZXJzICovLApAQCAtMTE5MTEsNiArMTE5MjQsNyBAQAogCQkJCUUxOEU2
OTBDMTY5QjU2M0YwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5LmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMThFNjkxODE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzBBQjhGMzIwQUUzQkQ3MDBCOEJFODcgLyogU2VjS2V5
UHJveHlTdG9yZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I3MzEyMjkyNUM5ODhBQjAwM0IyNzk2
IC8qIFNlbWFwaG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0RDlGNTcxOTExOUQzNTAwMDA2
M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGREU2NUEx
OTU0QTQyQjAwQzQ4RkZBIC8qIFNlc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEw
MDJENDkxOTZCMzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMjEwMCw3ICsxMjExNCw2IEBACiAJCQkJOTNBODhCMzMxQkM2RTlDRDAwQUJBNUMy
IC8qIFdlYkhpdFRlc3RSZXN1bHREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDRERkVCMjFF
OUU3NTJGMDAzOEQxOTYgLyogV2ViSWNvblV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTMyNjExNjEyMTQwNTRGNDAwMDgwNkU3IC8qIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJRTQ3RkM4QTAyNUI4MzMxQzAwNTQ5NUZDIC8qIE5ldHdvcmtMb2Fk
U2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTQxMjk5NDFDNjQyOEJCMDA1OUU3MTQg
LyogV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1MjM3
NDFDNzNEMzhCMDA3OTkzQ0IgLyogV2ViSURCQ29ubmVjdGlvblRvU2VydmVyTWVzc2FnZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzM0U4MzU1MjNBMDdDMDYwMERFRjI4OSAvKiBXZWJJREJTZXJ2
ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTM3NjMsNiArMTM3NzYsNyBAQAogCQkJCUE1NUJBODI2
MUJBMjVDRkQwMDdDRDMzRCAvKiBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQkJCRTRBMDE5QjY2QzUzMDA2QjdEODEgLyogUmVt
b3RlV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTE4RTY5MTcxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0I3MzEyMjgyNUM5ODhBQTAwM0IyNzk2IC8qIFNl
bWFwaG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MURFN0M2QzIyMjc4RjFFMDA1MzJCNjUg
LyogU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4
NzIxMkI2QUIxMDBGNDkzRkQgLyogU2hhcmVhYmxlQml0bWFwLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTJEQzE4RkVCRjMzN0I5NjcxQzg4RTNDRCAvKiBTaGFyZWRCdWZmZXJDb3B5LmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4
IDYxYjRjODI0OTU3NmRlMTI4YTlhYmVkMDkyN2Y0MWVlNDE2MmJlNmUuLmRjM2U0ZWU1ODE0OWI4
Mzg5NGZhZTkzMGYzZWNiMDBkNDJkNTY3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgiCi0jaW5jbHVkZSAiUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCkBAIC02NywxMiArNjYs
NyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y29ubmVjdFRvR1BVUHJvY2Vz
cygpCiAgICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgY29ubmVjdGlvbi5hZGRDbGllbnQoKnRoaXMp
OwogICAgIGNvbm5lY3Rpb24ubWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7Ci0g
ICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlUmVuZGVy
aW5nQmFja2VuZCh7Ci0gICAgICAgIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsCi0jaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgICAgIG1fcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUuY3Jl
YXRlU2VuZFJpZ2h0KCksCi0jZW5kaWYKLSAgICB9KSwgMCk7CisgICAgc2VuZChNZXNzYWdlczo6
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlUmVuZGVyaW5nQmFja2VuZChtX3JlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyLCBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKSwgMCk7
CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWVzdGFibGlzaEdQVVBy
b2Nlc3NDb25uZWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmlu
ZGV4IDQ4ZmEwNjlkYWE4ZDNjZDZkMTI0NDJkYjMzMDYwM2M5MzZiOTdiNDcuLjA1OTgyY2U3MGJl
ZDBhOTcwMDk1ZTI2ZWRkZGZmNmQ2ODg2NzNmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuaApAQCAtMzQsMTUgKzM0LDEyIEBACiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRl
ci5oIgogI2luY2x1ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIgogI2luY2x1ZGUgIlJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU2VtYXBob3JlLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgPHd0Zi9jb2Nv
YS9NYWNoU2VtYXBob3JlLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNw
YWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIERpc3BsYXlMaXN0OwpAQCAtMTI2LDkgKzEyMyw3IEBA
IHByaXZhdGU6CiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyPiBtX2N1cnJlbnREZXN0aW5hdGlvbkltYWdlQnVmZmVySWRlbnRpZmllcjsKICAgICBPcHRp
b25hbDxHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cz4gbV9kZWZlcnJlZFdha2V1cE1l
c3NhZ2VBcmd1bWVudHM7CiAgICAgdW5zaWduZWQgbV9yZW1haW5pbmdJdGVtc1RvQXBwZW5kQmVm
b3JlU2VuZGluZ1dha2V1cCB7IDAgfTsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBNYWNoU2Vt
YXBob3JlIG1fcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmU7Ci0jZW5kaWYKKyAgICBJUEM6OlNl
bWFwaG9yZSBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKaW5kZXggMzRlMzBj
ZTExOTM2MGM5MzBjMmIwN2U5YzMwOGExYjY0MGVkMGEzZS4uMDI4MzMwNTRhZTBkZjgyOWUyNzFi
YmJmNDhiMzhiMzM4NjQ4NGE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNw
cApAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9XZWJBdWRpb0J1ZmZlckxpc3QuaD4KICNpbmNsdWRlIDxtYWNoL21h
Y2hfdGltZS5oPgotI2luY2x1ZGUgPHd0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg+CiAjZW5kaWYK
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04MCw3ICs3OSw3IEBAIHZvaWQgUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5OjpzdGFydFJlbmRlcmluZ1RocmVhZCgpCiAKICAgICBhdXRvIG9mZlRo
cmVhZFJlbmRlcmluZyA9IFt0aGlzXSgpIG11dGFibGUgewogICAgICAgICBkbyB7Ci0gICAgICAg
ICAgICBtX3JlbmRlclNlbWFwaG9yZS0+d2FpdCgpOworICAgICAgICAgICAgbV9yZW5kZXJTZW1h
cGhvcmUud2FpdCgpOwogICAgICAgICAgICAgaWYgKG1fc2hvdWxkU3RvcFRocmVhZCkKICAgICAg
ICAgICAgICAgICBicmVhazsKIApAQCAtOTgsOCArOTcsNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eTo6c3RvcFJlbmRlcmluZ1RocmVhZCgpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1fc2hvdWxkU3RvcFRocmVhZCA9IHRydWU7Ci0gICAgaWYgKG1fcmVuZGVyU2VtYXBob3Jl
KQotICAgICAgICBtX3JlbmRlclNlbWFwaG9yZS0+c2lnbmFsKCk7CisgICAgbV9yZW5kZXJTZW1h
cGhvcmUuc2lnbmFsKCk7CiAgICAgbV9yZW5kZXJUaHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7
CiAgICAgbV9yZW5kZXJUaHJlYWQgPSBudWxscHRyOwogI2VuZGlmCkBAIC0xMDcsMjAgKzEwNSwx
MCBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6c3RvcFJlbmRlcmluZ1RocmVh
ZCgpCiAKIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0VG9HUFVQcm9j
ZXNzKCkKIHsKLSAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBkZXN0aW5hdGlv
bklEOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIE1hY2hTZW5kUmlnaHQgcmVuZGVyU2VtYXBo
b3JlU2VuZFJpZ2h0OwotI2VuZGlmCi0KICAgICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAgICBjb25uZWN0
aW9uLmFkZENsaWVudCgqdGhpcyk7CiAgICAgYXV0byBkaWRTdWNjZWVkID0gY29ubmVjdGlvbi5j
b25uZWN0aW9uKCkuc2VuZFN5bmMoCi0gICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbihtX2lucHV0RGV2aWNlSWQsIG1f
bnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKCksIHNhbXBsZVJh
dGUoKSwgaGFyZHdhcmVTYW1wbGVSYXRlKCkpLAotICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5KGRlc3Rp
bmF0aW9uSUQKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAgICwgcmVuZGVyU2VtYXBo
b3JlU2VuZFJpZ2h0Ci0jZW5kaWYKLSAgICAgICAgKSwgMCk7CisgICAgICAgIE1lc3NhZ2VzOjpS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbihtX2lu
cHV0RGV2aWNlSWQsIG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzKCksIHNhbXBsZVJhdGUoKSwgaGFyZHdhcmVTYW1wbGVSYXRlKCksIG1fcmVuZGVyU2VtYXBo
b3JlKSwgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRp
b0Rlc3RpbmF0aW9uOjpSZXBseShtX2Rlc3RpbmF0aW9uSUQpLCAwKTsKIAogICAgIGlmICghZGlk
U3VjY2VlZCkgewogICAgICAgICAvLyBUaGUgR1BVUHJvY2VzcyBsaWtlbHkgY3Jhc2hlZCBkdXJp
bmcgdGhpcyBzeW5jaHJvbm91cyBJUEMuIGdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoKSB3
aWxsIGdldCBjYWxsZWQgdG8gcmVjb25uZWN0IHRvIHRoZSBHUFVQcm9jZXNzLgpAQCAtMTI4LDcg
KzExNiw2IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0VG9HUFVQ
cm9jZXNzKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZGVzdGluYXRpb25JRCA9
IGRlc3RpbmF0aW9uSUQ7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBtX2N1cnJlbnRGcmFt
ZSA9IDA7CkBAIC0xMzYsNyArMTIzLDYgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogICAgIGdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbihzdHJlYW1Gb3JtYXQpOwogICAgIG1fcmluZ0J1ZmZlci0+YWxsb2NhdGUoc3RyZWFtRm9y
bWF0LCBtX251bWJlck9mRnJhbWVzKTsKICAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG1ha2VVbmlx
dWU8V2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0PihzdHJlYW1Gb3JtYXQpOwotICAgIG1fcmVu
ZGVyU2VtYXBob3JlID0gbWFrZVVuaXF1ZTxNYWNoU2VtYXBob3JlPihXVEZNb3ZlKHJlbmRlclNl
bWFwaG9yZVNlbmRSaWdodCkpOwogI2VuZGlmCiAKICAgICBzdGFydFJlbmRlcmluZ1RocmVhZCgp
OwpAQCAtMjA1LDkgKzE5MSw3IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpn
cHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0CiAgICAgb2xkQ29u
bmVjdGlvbi5yZW1vdmVDbGllbnQoKnRoaXMpOwogCiAgICAgc3RvcFJlbmRlcmluZ1RocmVhZCgp
OwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIG1fcmVuZGVyU2VtYXBob3JlID0gbnVsbHB0cjsK
LSNlbmRpZgorCiAgICAgY29ubmVjdFRvR1BVUHJvY2VzcygpOwogCiAgICAgaWYgKGlzUGxheWlu
ZygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgKaW5kZXggOGQyYzYzZWI5YzU1ZmI4
YjJhYzU0YmFhZGU4ZjczY2U1ZDViMWNjNS4uYWNlYjI4YWZjMmM2ZGE2YWY4MzcxOGRiYmYyOGMz
NjFjZWJiOWVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCkBAIC0zMCw2ICsz
MCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaCIK
KyNpbmNsdWRlICJTZW1hcGhvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvSU9DYWxsYmFj
ay5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFF1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL01l
ZGlhVGltZS5oPgpAQCAtMzgsNiArMzksNyBAQAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1
ZGUgIlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0Rl
c3RpbmF0aW9uQ29jb2EuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNlbHNlCiAjaW5j
bHVkZSA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmg+CiAjZW5kaWYKQEAgLTQ3
LDEyICs0OSw2IEBAIGNsYXNzIENBUmluZ0J1ZmZlcjsKIGNsYXNzIFdlYkF1ZGlvQnVmZmVyTGlz
dDsKIH0KIAotbmFtZXNwYWNlIFdURiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi1jbGFzcyBNYWNo
U2VtYXBob3JlOwotI2VuZGlmCi19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTaGFy
ZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHM7CkBAIC0xMDQsMTMgKzEwMCwxMyBAQCBwcml2YXRlOgog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHVpbnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVy
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXVEY6Ok1hY2hTZW1hcGhvcmU+IG1fcmVuZGVyU2VtYXBo
b3JlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q+IG1f
YXVkaW9CdWZmZXJMaXN0OwogICAgIHVpbnQ2NF90IG1fY3VycmVudEZyYW1lIHsgMCB9OwogICAg
IGZsb2F0IG1fc2FtcGxlUmF0ZTsKICNlbHNlCiAgICAgdW5zaWduZWQgbV9udW1iZXJPZk91dHB1
dENoYW5uZWxzOwogI2VuZGlmCisgICAgSVBDOjpTZW1hcGhvcmUgbV9yZW5kZXJTZW1hcGhvcmU7
CiAKICAgICBTdHJpbmcgbV9pbnB1dERldmljZUlkOwogICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419120</attachid>
            <date>2021-02-03 02:35:55 -0800</date>
            <delta_ts>2021-02-03 03:13:12 -0800</delta_ts>
            <desc>add reviewer</desc>
            <filename>bug-220919-20210203075740.patch</filename>
            <type>text/plain</type>
            <size>82713</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU2NGY0YmMyYWMwODE5Yjg2ZjczMGVk
NzdjYjdiYTc4OGEyNjdiNzkuLjllMDFhNWRhMTliODE4MmFmMGFlMDIyNGM4YWE2YjE2NTA0YTEy
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDItMDIgIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNYWNoU2VtYXBob3JlIGRvZXMgbm90IHdvcmsg
d2VsbCB3aXRoIElQQyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwOTE5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MzgyNjg0OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgIE1vdmUgV1RGOjpN
YWNoU2VtYXBob3JlIHRvIFdlYktpdCBJUEM6OlNlbWFwaG9yZS4gQ3VycmVudGx5IHRoZQorICAg
ICAgICBNYWNoU2VtYXBob3JlIGlzIHVzZWZ1bCBvbmx5IGluIGNyb3NzLXByb2Nlc3MgSVBDLCBp
bXBsZW1lbnRlZCBieSB0aGUKKyAgICAgICAgSVBDOjouCisKKyAgICAgICAgKiBXVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0wMi0wMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBNaWdyYXRlIFdlYktp
dFRlc3RTZXJ2ZXIgdG8gbGlic291cCAyLjQ4IEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiZWFlZTE3ZWIwMTJj
YTFmYjQwZDkxMTRmMzg5ZWI1YzlkMTliMDM1Li44OTU5M2JmYTAyY2Q4MGJlZjcwMzIwMTg1NzM5
MGJhYWUwMWNmYzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNyBAQAorMjAyMS0wMi0wMiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIE1hY2hTZW1hcGhv
cmUgZG9lcyBub3Qgd29yayB3ZWxsIHdpdGggSVBDIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5MTkKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzczODI2ODQ4PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAg
ICAgICAgTW92ZSBXVEY6Ok1hY2hTZW1hcGhvcmUgdG8gV2ViS2l0IElQQzo6U2VtYXBob3JlLiBD
dXJyZW50bHkgdGhlCisgICAgICAgIE1hY2hTZW1hcGhvcmUgaXMgdXNlZnVsIG9ubHkgaW4gY3Jv
c3MtcHJvY2VzcyBJUEMsIGltcGxlbWVudGVkIGJ5IHRoZQorICAgICAgICBJUEM6Oi4KKworICAg
ICAgICBBZGRzIGEgc3R1YiBJUEM6OlNlbWFwaG9yZSB0byBhbGwgbm9uLUNPQ09BIHBsYXRmb3Jt
cywgc28gdGhhdAorICAgICAgICBjb25zdHJ1Y3RvcnMgZG8gbm90IG5lZWQgdG8gaWZkZWYnZWQg
dG8gYmUgYWJsZSB0byBjb21waWxlIHBsYXRmb3JtcworICAgICAgICB0aGF0IGRvIG5vdCB5ZXQg
c3VwcG9ydCBHUFUgcHJvY2VzcyBmdWxseS4KKworICAgICAgICBJbXBsZW1lbnQgbW92ZSBjb25z
dHJ1Y3RvciBhbmQgbW92ZSBhc3NpZ25tZW50IG9wZXJhdG9yIGZvciBTZW1hcGhvcmUuCisgICAg
ICAgIE1ha2VzIGl0IHBvc3NpYmxlIHRvIGNyZWF0ZSB0eXBlcyB0aGF0IGhvbGQgU2VtYXBob3Jl
IGJ1dCBzdGlsbCBhcmUKKyAgICAgICAgZGVjb2RlKClhYmxlIGZyb20gYSBJUEMgbWVzc2FnZS4g
VGhlIGRlY29kZWQgb2JqZWN0cyBhcmUgaGVsZCB3aXRoCisgICAgICAgIE9wdGlvbmFsLCBhbmQg
dGhpcyBmb3JjZXMgdGhlIHN1Ym9iamVjdHMgdG8gaGF2ZSBtb3ZlIGFzc2lnbm1lbnQKKyAgICAg
ICAgb3BlcmF0b3IuCisKKyAgICAgICAgQWRkIGFzc2VydHMgdGhhdCB0aGUgbW92ZWQtYXdheSBv
YmplY3QgaXMgbm90IHVzZWQuIEFkZCB0aGUgYXNzZXJ0cyBhcworICAgICAgICBhc3NlcnRzIG9u
IHRoZSBjYWxsIHJldHVybiB2YWx1ZXMsIHNvIHRoZSB2YWx1ZXMgYXJlIGFsc28gY2hlY2tlZCBv
bgorICAgICAgICBub3JtYWwgb2JqZWN0cyBvbiBub3JtYWwgb3BlcmF0aW9uLgorCisgICAgICAg
IEltcGxlbWVudCBhbiBlbmNvZGVyIGFuZCBkZWNvZGVyIGZvciBJUEM6OlNlbWFwaG9yZS4gTWFr
ZXMgaXQgcG9zc2libGUKKyAgICAgICAgdG8gc2VuZCBpdCB2aWEgSVBDIGFzIGl0cyBvd24gdHlw
ZSwgbm90IGFzIE1hY2hTZW5kUmlnaHQuCisKKyAgICAgICAgQXMgYW4gZXhhbXBsZSwgY2hhbmdl
cyBleGlzdGluZyB1c2VzIG9mIE1hY2hTZW5kUmlnaHQgZm9yIHNlbWFwaG9yZXMgaW4KKyAgICAg
ICAgbWVzc2FnZXMgYXMgU2VtYXBob3JlcywgZGVzY3JpYmVkIGJlbG93LgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgYSByZWZhY3Rvci4KKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFw
cGx5aW5nRGlzcGxheUxpc3RzKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZENyZWF0aW9uUGFyYW1ldGVycy5oOiBSZW1vdmVkLgorICAgICAgICBDaGFuZ2VzIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQgdG8gcmVjZWl2ZSBpdHMgcGFyYW1ldGVycyBmcm9tIHRoZSBub3Jt
YWwKKyAgICAgICAgbWVzc2FnZSBwYXJhbWV0ZXJzIGluc3RlYWQgb2YgcmVkdW5kYW50CisgICAg
ICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuIFRoZSBJUEMgZ2Vu
ZXJhdG9yIGFscmVhZHkKKyAgICAgICAgZ2VuZXJhdGVzIDE6MSBpZGVudGljYWwgc3RydWN0dXJl
LCBpdCBpcyBqdXN0IHRoZSBtZXNzYWdlCisgICAgICAgIE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpDcmVhdGVSZW5kZXJpbmdCYWNrZW5kLiBUaGVyZSBpcyBubworICAgICAg
ICBuZWVkIHRvIGRvdWJsZS13cmFwIHRoZSBzaW1wbGUgbGlzdCBvZiBwYXJhbWV0ZXJzLiBUaGUg
ZG91YmxlLXdyYXBwaW5nCisgICAgICAgIGlzIGEgcHJvYmxlbTogVGhlIG1lc3NhZ2Ugc3lzdGVt
IHBhcmFtZXRlcnMgYXJlIG9mIG93bmVyc2hpcCAiY29uc3QKKyAgICAgICAgcmVmZXJlbmNlIiwg
d2hpY2ggaXMgd2hhdCBpcyBleHBlY3RlZC4KKyAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZENyZWF0aW9uUGFyYW1ldGVycyBjb250ZW50cyB3ZXJlIG9mIG93bmVyc2hpcAorICAgICAgICAi
dmFsdWUiLCB3aGljaCB3b3JrcyBhcyBleHBlY3RlZCBvbmx5IGZvciBzaW1wbGUgcHJpbWl0aXZl
IHR5cGVzLgorICAgICAgICBFc3NlbnRpYWxseSBwcmV2aW91c2x5IGNhbGxpbmcgdGhlIElQQyBm
dW5jdGlvbiBtZWFudCB0cmFuc2ZlcmluZworICAgICAgICBvYmplY3RzIHRvIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuIFRoaXMgaXMgbm90IGhvdyB0aGUKKyAgICAg
ICAgSVBDIHN5c3RlbSBpcyBtZWFudCB0byB3b3JrLiBUaGUgaW50ZW50aW9uIG9mIGEgSVBDIGNh
bGwgaXMgdG8sIGJ5CisgICAgICAgIGRlZmF1bHQsIHJlZmVyZW5jZSBpdHMgYXJndW1lbnRzIGZv
ciB0aGUgcHVycG9zZSBvZiBlbmNvZGluZy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24pOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIu
aDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyLm1lc3NhZ2VzLmluOgorCisgICAgICAgIFJlY2VpdmUgdGhlIHNlbWFwaG9yZSBmcm9tIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS4gUHJldmlvdXNseQorICAgICAgICBpdCB3YXMgY3Jl
YXRlZCBkdXJpbmcgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbiBjcmVhdGlvbiBhbmQKKyAgICAgICAg
YmUgc2VudCBiYWNrIGJ5IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLgorCisgICAgICAg
ICogUGxhdGZvcm0vSVBDL1NlbWFwaG9yZS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV1RGL3d0
Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmNwcC4KKyAgICAgICAgKElQQzo6U2VtYXBob3JlOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoSVBDOjpTZW1hcGhvcmU6OmRlY29kZSk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NlbWFwaG9yZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYvY29j
b2EvTWFjaFNlbWFwaG9yZS5oLgorICAgICAgICAoSVBDOjpTZW1hcGhvcmU6Om9wZXJhdG9yIGJv
b2wgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9TZW1hcGhvcmVDb2NvYS5j
cHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpTZW1hcGhvcmU6OlNlbWFwaG9yZSk6CisgICAgICAg
IChJUEM6OlNlbWFwaG9yZTo6flNlbWFwaG9yZSk6CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6
b3BlcmF0b3I9KToKKyAgICAgICAgKElQQzo6U2VtYXBob3JlOjpzaWduYWwpOgorICAgICAgICAo
SVBDOjpTZW1hcGhvcmU6OndhaXQpOgorICAgICAgICAoSVBDOjpTZW1hcGhvcmU6OndhaXRGb3Ip
OgorICAgICAgICAoSVBDOjpTZW1hcGhvcmU6OmNyZWF0ZVNlbmRSaWdodCBjb25zdCk6CisgICAg
ICAgIChJUEM6OlNlbWFwaG9yZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKElQQzo6U2VtYXBo
b3JlOjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpTZW1hcGhvcmU6OmRlc3Ryb3kpOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
L21lc3NhZ2VzX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL01h
a2VmaWxlOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERl
c2NyaXB0aW9ucy5jcHA6CisgICAgICAgIChJUEM6OmpzVmFsdWVGb3JBcmd1bWVudHMpOgorICAg
ICAgICAoSVBDOjptZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMpOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHA6CisgICAgICAgIChJUEM6OmRlc2NyaXB0
aW9uKToKKyAgICAgICAgKElQQzo6cmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKElQQzo6aXNWYWxp
ZE1lc3NhZ2VOYW1lKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFt
ZXMuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhv
cmUubWVzc2FnZXMuaW46IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluLgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2VSZWNlaXZlci5jcHA6IEFkZGVk
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZU1l
c3NhZ2VzLmg6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
TWFjaFNlbWFwaG9yZU1lc3NhZ2VzUmVwbGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y29ubmVjdFRvR1BVUHJvY2Vzcyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpzdGFy
dFJlbmRlcmluZ1RocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eTo6c3RvcFJlbmRlcmluZ1RocmVhZCk6CisgICAgICAgIENoYW5nZSB0aGUgc2VtYXBo
b3JlIHVzYWdlIGZyb20gdW5pcXVlX3B0ciB0byB0aGUgbm9ybWFsCisgICAgICAgIG9iamVjdCBh
Y2Nlc3MuIFRoZSBzZW1hcGhvcmUgaXMgbm93IGNyZWF0ZWQgYnkgdGhlIHByb3h5LAorICAgICAg
ICBzbyB0aGVyZSBpcyBubyB1bmlxdWVfcHRyLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1
ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRD
bG9zZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5Lmg6CisKKyAgICAgICAgQ2hhbmdlcyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHkgdG8gc2VuZCBpdHMgb3duIHNlbWFwaG9yZSBmcm9tCisgICAgICAgIFdlYlByb2Nlc3MgdG8g
R1BVUHJvY2Vzcy4gUHJldmlvdXNseSB0aGUgc2VtYXBob3JlIHdvdWxkIGJlIHNlbnQgYmFjayBi
eQorICAgICAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci4gUHJldmlvdXNseSB0aGUg
Y29kZSBzdHJ1Y3R1cmUgaXMgbW9yZQorICAgICAgICBjb21wbGljYXRlZCB0aGFuIG5lY2Nlc3Nh
cnksIGFzIHRoZSBzZW1hcGhvcmUgaG9sZGVyIHdhcyBiZWluZworICAgICAgICBudWxsLWNoZWNr
ZWQsIHJlc2V0IGFuZCByZS1zZWF0ZWQuIFRoZSBXZWJQcm9jZXNzIGdldHMgYWxyZWFkeSB0byBj
aG9vc2UKKyAgICAgICAgdGhlIHNlbWFwaG9yZXMgR1BVUHJvY2VzcyB1c2VzLCBzbyB0aGlzIHNo
b3VsZCBub3QgaW5jcmVhc2Ugc2VjdXJpdHkKKyAgICAgICAgc3VyZmFjZS4gVGhlIGNoYW5nZSBj
aG9zZW4gaGVyZSBzaWRlLXN0ZXBzIHRoZSBzaG9ydGNvbWluZyBvZiB0aGUgSVBDCisgICAgICAg
IHN5c3RlbSB3aGVyZSB1bnBhY2tpbmcgb2JqZWN0cyBmcm9tIHRoZSBSZXBseSBtZXNzYWdlcyBt
YW5kYXRlcyB0aGF0IGEKKyAgICAgICAgY29uc3RydWN0ZWQgdmVyc2lvbiBvZiB0aGF0IHR5cGUg
ZXhpc3RzLiBGb3IgcHJldmlvdXMgTWFjaFNlbmRSaWdodAorICAgICAgICBlbXB0eS1jb25zdHJ1
Y3RlZCBvYmplY3QgaXMgc2ltcGxlLCBidXQgZm9yIE1hY2hTZW1hcGhvcmUKKyAgICAgICAgZW1w
dHktY29uc3RydWN0ZWQgb2JqZWN0IGNyZWF0ZXMgdW5uZWNlc3NhcnkgY29tcGxpY2F0aW9uIHRo
YXQgaXMgbm90CisgICAgICAgIHJlcXVpcmVkIG90aGVyd2lzZSBhdCB0aGUgbW9tZW50LiBUaGUg
YWx0ZXJuYXRpdmUgdG8gd2hhdCB3YXMgY2hvc2VuCisgICAgICAgIGhlcmUgd291bGQgYmUgdG8g
aG9sZCB3aXRoIE9wdGlvbmFsPE1hY2hTZW1hcGhvcmU+IGFuZCBhZGQgYQorICAgICAgICBlbXB0
eS1pbml0aWFsaXppbmcgY29uc3RydWN0b3IgdG8gaG9sZCB0aGUgb2JqZWN0IHdoZXJlIHRvIHVu
cGFjayB0aGUKKyAgICAgICAgc2VtYXBob3JlIG9iamVjdCBmcm9tIHRoZSBSZXBseS4KKwogMjAy
MS0wMi0wMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNl
IFdlYlJUQyBHUFUgcHJvY2VzcyBmbGFnIGZvciBNZWRpYVJlY29yZGVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYTRkZmViMWVmODM4NTU2NGQzYTliYzQw
MGY0NjI4ODNkMGMzNWFkLi4yNmI0NWU1NTNiMDY3ZTI0MDMyN2NjODg2N2VjN2M4YzgxNDY3ZTVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY4LDcgKzY4
LDYgQEAKIAkJMzMzN0RCOUNFNzQzNDEwRkFGMDc2RTE3IC8qIFN0YWNrVHJhY2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEzRURFQzk3NzhFNDlD
OUJFQTkxQ0ZDIC8qIFN0YWNrVHJhY2UuY3BwICovOyB9OwogCQk0NDI3QzVBQTIxRjZENkMzMDBB
NjEyQTQgLyogQVNDSUlDVHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NDI3QzVBOTIxRjZENkMzMDBBNjEyQTQgLyogQVNDSUlDVHlwZS5jcHAg
Ki87IH07CiAJCTQ2QkVCNkVCMjJGRkUyNDkwMDI2OTg2NyAvKiBSZWZDb3VudGVkLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkVCNkU5MjJGRkRE
RDUwMDI2OTg2NyAvKiBSZWZDb3VudGVkLmNwcCAqLzsgfTsKLQkJNDZDQjZCM0QyNThBRDkzRjAw
NjMzM0IzIC8qIE1hY2hTZW1hcGhvcmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZCQUE5QzgyNThBRDVBNTAwNzk1ODc3IC8qIE1hY2hTZW1hcGhv
cmUuY3BwICovOyB9OwogCQk1MERFMzVGNTIxNUJCMDE1MDBCOTc5QzcgLyogRXh0ZXJuYWxTdHJp
bmdJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUwREUzNUYzMjE1QkIwMTUwMEI5NzlDNyAvKiBFeHRlcm5hbFN0cmluZ0ltcGwuY3BwICovOyB9
OwogCQk1MTVGNzk0RTFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1Rjc5NEIxQ0ZD
OUY0QTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkQ29waWVyLmNwcCAqLzsgfTsKIAkJNTE3RjgyRDcx
RkQyMkYzMDAwREEzREVBIC8qIENyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3RjgyRDUxRkQyMkYyRjAwREEz
REVBIC8qIENyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwICovOyB9OwpAQCAtMzc4LDggKzM3Nyw2
IEBACiAJCTQ0MjdDNUE5MjFGNkQ2QzMwMEE2MTJBNCAvKiBBU0NJSUNUeXBlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFTQ0lJQ1R5cGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NDY4NTY3MjI1MDk0RkU4MDA4Q0NBMDUgLyogVGhyZWFkU2Fu
aXRpemVyU3VwcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRT
YW5pdGl6ZXJTdXBwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QkE5RUFC
MUY0Q0Q2MUUwMDlBMkJCQyAvKiBDb21wbGV0aW9uSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb21wbGV0aW9uSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0NkJBQTlDODI1OEFENUE1MDA3OTU4NzcgLyogTWFjaFNlbWFwaG9yZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWNoU2VtYXBob3JlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDZCQUE5QzkyNThBRDVBNTAwNzk1ODc3IC8q
IE1hY2hTZW1hcGhvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjaFNl
bWFwaG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkJFQjZFOTIyRkZEREQ1
MDAyNjk4NjcgLyogUmVmQ291bnRlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWZDb3VudGVk
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTBERTM1RjMyMTVCQjAxNTAwQjk3
OUM3IC8qIEV4dGVybmFsU3RyaW5nSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBFeHRlcm5hbFN0cmluZ0ltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MERFMzVGNDIxNUJCMDE1MDBCOTc5QzcgLyogRXh0ZXJuYWxTdHJpbmdJbXBsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVybmFsU3RyaW5nSW1wbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU0OCw4ICsxNTQ1LDYgQEAKIAkJCQkxNDNE
REU5NTIwQzhCQzM3MDA3Rjc2RkEgLyogRW50aXRsZW1lbnRzLm1tICovLAogCQkJCUEzMzFEOTVF
MjFGMjQ5RjYwMDlGMDJBQSAvKiBGaWxlU3lzdGVtQ29jb2EubW0gKi8sCiAJCQkJMUM1MDNCRTUy
M0FBRTBBRTAwNzJFNjZCIC8qIExhbmd1YWdlQ29jb2EubW0gKi8sCi0JCQkJNDZCQUE5QzgyNThB
RDVBNTAwNzk1ODc3IC8qIE1hY2hTZW1hcGhvcmUuY3BwICovLAotCQkJCTQ2QkFBOUM5MjU4QUQ1
QTUwMDc5NTg3NyAvKiBNYWNoU2VtYXBob3JlLmggKi8sCiAJCQkJN0E2RUJBMzMyMDc0NkMzNDAw
NEY5QzQ0IC8qIE1hY2hTZW5kUmlnaHQuY3BwICovLAogCQkJCUE4QTQ3MkM1MTUxQTgyNUEwMDQx
MjNGRiAvKiBNYWluVGhyZWFkQ29jb2EubW0gKi8sCiAJCQkJQURGMkNFNjUxRTM5RjEwNjAwNjg4
OURCIC8qIE1lbW9yeUZvb3RwcmludENvY29hLmNwcCAqLywKQEAgLTE3MDgsNyArMTcwMyw2IEBA
CiAJCQkJMEY2MEYzMkYxREZDQkQxQjAwNDE2RDZDIC8qIExvY2tlZFByaW50U3RyZWFtLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTkzQjVCNDUxMjIxNzFFRUEwMDRCN0FBNyAvKiBMb2dnZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTM1MzRGMkExRUMwRTEwRTAwMTQxQjJGIC8qIE1hY2hFeGNl
cHRpb25zLmRlZnMgaW4gU291cmNlcyAqLywKLQkJCQk0NkNCNkIzRDI1OEFEOTNGMDA2MzMzQjMg
LyogTWFjaFNlbWFwaG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTZFQkEzNDIwNzQ2QzM0
MDA0RjlDNDQgLyogTWFjaFNlbmRSaWdodC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNF
NTE1MUE4MjVCMDA0MTIzRkYgLyogTWFpblRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
OEE0NzNFNDE1MUE4MjVCMDA0MTIzRkYgLyogTWFpblRocmVhZENvY29hLm1tIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5MmZjZjE1YzA3ZDkyNGE0NTA3OTM3ZmQyMzA0NTcyYzRkYmJiOTY2Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYv
d3RmL2NvY29hL01hY2hTZW1hcGhvcmUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJNYWNoU2VtYXBo
b3JlLmgiCi0KLSNpbmNsdWRlIDxtYWNoL21hY2guaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLU1h
Y2hTZW1hcGhvcmU6Ok1hY2hTZW1hcGhvcmUoKQotewotICAgIGF1dG8gcmV0ID0gc2VtYXBob3Jl
X2NyZWF0ZShtYWNoX3Rhc2tfc2VsZigpLCAmbV9zZW1hcGhvcmUsIFNZTkNfUE9MSUNZX0ZJRk8s
IDApOwotICAgIEFTU0VSVF9VTlVTRUQocmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTKTsKLX0KLQot
TWFjaFNlbWFwaG9yZTo6TWFjaFNlbWFwaG9yZShNYWNoU2VuZFJpZ2h0JiYgc2VuZFJpZ2h0KQot
ICAgIDogbV9zZW5kUmlnaHQoV1RGTW92ZShzZW5kUmlnaHQpKQotICAgICwgbV9zZW1hcGhvcmUo
bV9zZW5kUmlnaHQuc2VuZFJpZ2h0KCkpCi17Ci0gICAgQVNTRVJUKG1fc2VuZFJpZ2h0KTsKLX0K
LQotTWFjaFNlbWFwaG9yZTo6fk1hY2hTZW1hcGhvcmUoKQotewotICAgIGlmICghbV9zZW5kUmln
aHQpCi0gICAgICAgIHNlbWFwaG9yZV9kZXN0cm95KG1hY2hfdGFza19zZWxmKCksIG1fc2VtYXBo
b3JlKTsKLX0KLQotdm9pZCBNYWNoU2VtYXBob3JlOjpzaWduYWwoKQotewotICAgIHNlbWFwaG9y
ZV9zaWduYWwobV9zZW1hcGhvcmUpOwotfQotCi12b2lkIE1hY2hTZW1hcGhvcmU6OndhaXQoKQot
ewotICAgIHNlbWFwaG9yZV93YWl0KG1fc2VtYXBob3JlKTsKLX0KLQotdm9pZCBNYWNoU2VtYXBo
b3JlOjp3YWl0Rm9yKFNlY29uZHMgdGltZW91dCkKLXsKLSAgICBhdXRvIHNlY29uZHMgPSB0aW1l
b3V0LnNlY29uZHNBczx1bnNpZ25lZD4oKTsKLSAgICBzZW1hcGhvcmVfdGltZWR3YWl0KG1fc2Vt
YXBob3JlLCB7IHNlY29uZHMsIHN0YXRpY19jYXN0PGNsb2NrX3Jlc190Pih0aW1lb3V0Lm5hbm9z
ZWNvbmRzQXM8dWludDY0X3Q+KCkgLSBzZWNvbmRzICogTlNFQ19QRVJfU0VDKSB9KTsKLX0KLQot
TWFjaFNlbmRSaWdodCBNYWNoU2VtYXBob3JlOjpjcmVhdGVTZW5kUmlnaHQoKQotewotICAgIHJl
dHVybiBNYWNoU2VuZFJpZ2h0OjpjcmVhdGUobV9zZW1hcGhvcmUpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUu
aCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYmU3Y2VhMDQ2YjgxMmNiYzNlYjNhNzIxMzBkOWE1YmEwMDkzZjkyZi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDxtYWNoL3NlbWFwaG9yZS5o
PgotI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLWNs
YXNzIE1hY2hTZW1hcGhvcmUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKE1hY2hTZW1hcGhvcmUpOwotcHVibGljOgotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBNYWNoU2VtYXBob3JlKCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxp
Y2l0IE1hY2hTZW1hcGhvcmUoTWFjaFNlbmRSaWdodCYmKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgfk1hY2hTZW1hcGhvcmUoKTsKLQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNpZ25h
bCgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHdhaXQoKTsKLSAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCB3YWl0Rm9yKFNlY29uZHMpOwotCi0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IE1hY2hTZW5kUmlnaHQgY3JlYXRlU2VuZFJpZ2h0KCk7Ci0KLXByaXZhdGU6Ci0gICAgTWFjaFNl
bmRSaWdodCBtX3NlbmRSaWdodDsKLSAgICBzZW1hcGhvcmVfdCBtX3NlbWFwaG9yZSB7IFNFTUFQ
SE9SRV9OVUxMIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpNYWNo
U2VtYXBob3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDkwMDU2Njk0YTUzMDBkYzNhOGJmZGQxZWUzMGVj
MTZiZDhlYmRlYTguLjgyNzhiY2UxNGM1ZjFjMjRiZTdjOTAyMmQ1ZmQ0MGIyNGM1OGVmZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKQEAgLTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgiCi0jaW5jbHVkZSAiUmVt
b3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlJlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaCIKICNpbmNsdWRlICJSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlcy5oIgpAQCAtMjkxLDEwICsyOTAsMTAgQEAg
UmVtb3RlQXVkaW9TZXNzaW9uUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmF1ZGlv
U2Vzc2lvblByb3h5KCkKIH0KICNlbmRpZgogCi12b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9u
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgaWRlbnRp
ZmllciwgSVBDOjpTZW1hcGhvcmUmJiByZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkKIHsKLSAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcC5lbnN1cmUocGFy
YW1ldGVycy5pZGVudGlmaWVyLCBbJl0oKSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyPihSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVh
dGUoKnRoaXMsIFdURk1vdmUocGFyYW1ldGVycykpKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcC5lbnN1cmUoaWRlbnRpZmllciwgWyZdKCkgeworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcj4oUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKCp0aGlzLCBpZGVudGlmaWVyLCBXVEZNb3ZlKHJl
c3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKSkpOwogICAgIH0pOwogICAgIEFTU0VSVF9VTlVTRUQo
YWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA0NDE4Y2E2
YWVhMmE0MDhlMzc3NTM4OTBlMWQzMGRkZWM3NmVjN2NhLi43YmFkZDM3NzY5Y2Y1MmZkNTQwYjRm
Yjc3N2QwODg3NDY2MDRmNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTY1LDcgKzY1LDYgQEAgY2xhc3MgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w7CiBjbGFzcyBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyOwogY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTsKIHN0cnVjdCBS
ZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uOwotc3RydWN0IFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MKICAgICA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPgpAQCAtMTI3LDcgKzEyNiw3IEBA
IHByaXZhdGU6CiAjZW5kaWYKICNlbmRpZgogCi0gICAgdm9pZCBjcmVhdGVSZW5kZXJpbmdCYWNr
ZW5kKFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJik7CisgICAgdm9p
ZCBjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6
OlNlbWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKTsKICAgICB2b2lkIHJlbGVh
c2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIAogI2lmIEVO
QUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMGNiYzVkODc5ODNl
NjY2ZTQ4ZTgzOWE2NDY0ODk4Nzk1MGEzOTJiZi4uOTU0NzEwYTM0MGQyZjU4ZGE5YjVlOTU3Y2Jj
MzRkNWU1YWZkOTg5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIz
LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewotICAgIHZvaWQgQ3JlYXRlUmVu
ZGVyaW5nQmFja2VuZChzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRp
b25QYXJhbWV0ZXJzIHBhcmFtZXRlcnMpCisgICAgdm9pZCBDcmVhdGVSZW5kZXJpbmdCYWNrZW5k
KFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgaWRlbnRpZmllciwgSVBDOjpTZW1h
cGhvcmUgcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpCiAgICAgdm9pZCBSZWxlYXNlUmVuZGVy
aW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKQogI2lmIEVOQUJMRShXRUJHTCkKICAgICB2b2lkIENyZWF0ZUdyYXBo
aWNzQ29udGV4dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMg
YXR0cmlidXRlcywgV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDMyYWZkMzEw
YmU1YzMwMzA2NDdkNzI1OGMyM2ZkYTAxMDJiMmQ3NzUuLjAzZDE2MmZkZDExYjM1ZTI2MjBkMjJj
MTk4NDI0OTg4NzliYjQ1NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTMzLDE2ICsz
MywxMyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRl
ICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlh
UGxheWVyUHJveHkuaCIKLSNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJTZW1hcGhvcmUuaCIKICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNp
bmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4K
IAotI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgPHd0Zi9jb2NvYS9NYWNoU2VtYXBob3Jl
Lmg+Ci0jZW5kaWYKIAogI2RlZmluZSBURVJNSU5BVEVfV0VCX1BST0NFU1NfV0lUSF9NRVNTQUdF
KG1lc3NhZ2UpIFwKICAgICBSRUxFQVNFX0xPR19GQVVMVChJUEMsICJSZXF1ZXN0aW5nIHRlcm1p
bmF0aW9uIG9mIHdlYiBwcm9jZXNzICUiIFBSSXU2NCAiIGZvciByZWFzb246ICUiIFBVQkxJQ19M
T0dfU1RSSU5HLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPndlYlByb2Nlc3NJZGVudGlm
aWVyKCkudG9VSW50NjQoKSwgI21lc3NhZ2UpOyBcCkBAIC02NSwxOCArNjIsMTYgQEAKIG5hbWVz
cGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitSZWY8UmVtb3RlUmVuZGVy
aW5nQmFja2VuZD4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2VtYXBob3JlJiYgcmVzdW1lRGlzcGxheUxpc3RT
ZW1hcGhvcmUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZChncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLCBpZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VtZURpc3BsYXlMaXN0U2Vt
YXBob3JlKSkpOwogfQogCi1SZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQorUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYmIHJlc3VtZURpc3Bs
YXlMaXN0U2VtYXBob3JlKQogICAgIDogbV93b3JrUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQgd29yayBxdWV1ZSIsIFdvcmtRdWV1ZTo6VHlwZTo6U2VyaWFs
LCBXb3JrUXVldWU6OlFPUzo6VXNlckludGVyYWN0aXZlKSkKICAgICAsIG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcyhncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQotICAgICwgbV9yZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcihwYXJhbWV0ZXJzLmlkZW50aWZpZXIpCi0jaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgLCBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKG1ha2VVbmlxdWU8TWFj
aFNlbWFwaG9yZT4oV1RGTW92ZShwYXJhbWV0ZXJzLnNlbmRSaWdodEZvclJlc3VtZURpc3BsYXlM
aXN0U2VtYXBob3JlKSkpCi0jZW5kaWYKKyAgICAsIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIoaWRlbnRpZmllcikKKyAgICAsIG1fcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUoV1RGTW92
ZShyZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5hZGRX
b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93b3JrUXVldWUsIHRoaXMsIG1fcmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIudG9VSW50NjQoKSk7CkBAIC0yMzEsNyArMjI2LDcgQEAgUmVmUHRyPElt
YWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFnZUJ1
ZmZlckFmdGVyQXBwbHkKIAogICAgICAgICAgICAgaGFuZGxlLnN0YXJ0V2FpdGluZygpOwogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgICAgICAgICAgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9y
ZS0+d2FpdEZvcigzMF91cyk7CisgICAgICAgICAgICBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBo
b3JlLndhaXRGb3IoMzBfdXMpOwogI2Vsc2UKICAgICAgICAgICAgIHNsZWVwKDMwX3VzKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggZTYzODk5MDNiNjUwYmE4ZDk3M2RhZjliM2Rj
Y2E2NDUzNTZmNDVmOC4uNTE4YTZhYWFmYzI4OGRlMzhmYmUwMGZmZWIyMGI4NmY0MGM2Mjc2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC0zNSwxNyArMzUsMTMgQEAKICNpbmNsdWRlICJNZXNz
YWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZS5oIgogI2luY2x1ZGUg
IlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU2VtYXBob3JlLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5
TGlzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRGlzcGxheUxpc3RSZXBsYXllci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+
CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLW5hbWVzcGFjZSBXVEYgewotY2xhc3MgTWFjaFNlbWFw
aG9yZTsKLX0KLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxh
eUxpc3QgewpAQCAtNjIsMTQgKzU4LDE0IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBE
aXNwbGF5TGlzdFJlYWRlckhhbmRsZTsKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7
Ci1zdHJ1Y3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xh
c3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZAogICAgIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5k
ZXIKICAgICAsIHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZl
cgogICAgICwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyUmVhZGluZ0Ns
aWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBj
cmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRD
cmVhdGlvblBhcmFtZXRlcnMmJik7CisKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIsIElQQzo6U2VtYXBob3JlJiYgcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUp
OwogICAgIHZpcnR1YWwgflJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoKTsKIAogICAgIFJlbW90ZVJl
c291cmNlQ2FjaGUmIHJlbW90ZVJlc291cmNlQ2FjaGUoKSB7IHJldHVybiBtX3JlbW90ZVJlc291
cmNlQ2FjaGU7IH0KQEAgLTg2LDcgKzgyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzY29ubmVj
dCgpOwogCiBwcml2YXRlOgotICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMm
Jik7CisgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U2VtYXBob3JlJiYpOwogCiAgICAg
T3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JF
VFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pIG92ZXJy
aWRlOwogCkBAIC0xNDgsOSArMTQ0LDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOwogICAgIEhhc2hNYXA8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBSZWZQdHI8RGlzcGxheUxp
c3RSZWFkZXJIYW5kbGU+PiBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlczsKICAgICBPcHRpb25h
bDxQZW5kaW5nV2FrZXVwSW5mb3JtYXRpb24+IG1fcGVuZGluZ1dha2V1cEluZm87Ci0jaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdURjo6TWFjaFNlbWFwaG9yZT4gbV9y
ZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKLSNlbmRpZgorICAgIElQQzo6U2VtYXBob3JlIG1f
cmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCmluZGV4IDBmODQwN2MxZjNkYzc4N2I1MGU5
YmY2MDk5MWFlZTdjYjQxMGI0ZmEuLmNhZjkzMGRkM2NmNTVkNjFjYTU4NjJlM2EzYzQ1NjVmOTky
NDc4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcApAQCAtMjksOSArMjksOSBA
QAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9BVURJTykKIAogI2luY2x1
ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJTZW1hcGhvcmUuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZFNhZmVSZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3Jl
Lmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3Rv
cmFnZS5oIgpAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1dlYkF1ZGlvQnVmZmVyTGlzdC5oPgotI2luY2x1ZGUgPHd0Zi9jb2NvYS9N
YWNoU2VtYXBob3JlLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01Miw5ICs1
MSw5IEBAIGNsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24KIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBjb25uZWN0aW9uLCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVu
dGlmaWVyLAotICAgICAgICBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51
bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlKQorICAgICAgICBjb25zdCBT
dHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWlu
dDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFy
ZHdhcmVTYW1wbGVSYXRlLCBJUEM6OlNlbWFwaG9yZSYmIHJlbmRlclNlbWFwaG9yZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oY29u
bmVjdGlvbiwgaWRlbnRpZmllciwgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxz
LCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlLCBoYXJkd2FyZVNhbXBsZVJhdGUp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbihj
b25uZWN0aW9uLCBpZGVudGlmaWVyLCBpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5l
bHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIGhhcmR3YXJlU2FtcGxlUmF0
ZSwgV1RGTW92ZShyZW5kZXJTZW1hcGhvcmUpKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVt
b3RlQXVkaW9EZXN0aW5hdGlvbigpID0gZGVmYXVsdDsKQEAgLTY4LDggKzY3LDYgQEAgcHVibGlj
OgogICAgIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIE1hY2hTZW5kUmlnaHQgY3JlYXRl
UmVuZGVyU2VtYXBob3JlU2VuZFJpZ2h0KCkgeyByZXR1cm4gbV9yZW5kZXJTZW1hcGhvcmUuY3Jl
YXRlU2VuZFJpZ2h0KCk7IH0KLQogICAgIHZvaWQgYXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQo
Y29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGlwY0hhbmRsZSwgY29uc3QgV2ViQ29yZTo6
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZG
cmFtZXMpCiAgICAgewogICAgICAgICBtX3JpbmdCdWZmZXIgPSBtYWtlVW5pcXVlUmVmPFdlYkNv
cmU6OkNBUmluZ0J1ZmZlcj4obWFrZVVuaXF1ZVJlZjxSZWFkT25seVNoYXJlZFJpbmdCdWZmZXJT
dG9yYWdlPihpcGNIYW5kbGUuaGFuZGxlKSwgZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsK
QEAgLTEwNCwxMiArMTAxLDEzIEBAIHB1YmxpYzoKICAgICBib29sIGlzUGxheWluZygpIGNvbnN0
IHsgcmV0dXJuIG1faXNQbGF5aW5nOyB9CiAKIHByaXZhdGU6Ci0gICAgUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50
MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkKKyAgICBSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlucHV0RGV2
aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRl
LCBJUEM6OlNlbWFwaG9yZSYmIHJlbmRlclNlbWFwaG9yZSkKICAgICAgICAgOiBtX2lkKGlkZW50
aWZpZXIpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgICwgbV9hdWRpb091dHB1dFVuaXRB
ZGFwdG9yKCp0aGlzKQogICAgICAgICAsIG1fcmluZ0J1ZmZlcihtYWtlVW5pcXVlUmVmPFdlYkNv
cmU6OkNBUmluZ0J1ZmZlcj4oKSkKICNlbmRpZgorICAgICAgICAsIG1fcmVuZGVyU2VtYXBob3Jl
KFdURk1vdmUocmVuZGVyU2VtYXBob3JlKSkKICAgICB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgICAgIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5jb25maWd1cmUoaGFyZHdhcmVTYW1wbGVS
YXRlLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKQEAgLTE0OCw5ICsxNDYsOSBAQCBwcml2YXRl
OgogICAgIFdlYkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IgbV9hdWRpb091dHB1dFVuaXRB
ZGFwdG9yOwogCiAgICAgVW5pcXVlUmVmPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4gbV9yaW5nQnVm
ZmVyOwotICAgIE1hY2hTZW1hcGhvcmUgbV9yZW5kZXJTZW1hcGhvcmU7CiAgICAgdWludDY0X3Qg
bV9zdGFydEZyYW1lIHsgMCB9OwogI2VuZGlmCisgICAgSVBDOjpTZW1hcGhvcmUgbV9yZW5kZXJT
ZW1hcGhvcmU7CiAKICAgICBib29sIG1faXNQbGF5aW5nIHsgZmFsc2UgfTsKIH07CkBAIC0xNjIs
MTYgKzE2MCwxMiBAQCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6UmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIoR1BVQ29ubmVjdGlvblRvV2ViUAogCiBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlcjo6flJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKCkgPSBkZWZhdWx0
OwogCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpjcmVhdGVBdWRpb0Rlc3Rp
bmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1
dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVS
YXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIENyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXIm
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6
OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50
MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwgSVBDOjpTZW1h
cGhvcmUmJiByZW5kZXJTZW1hcGhvcmUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2Vi
S2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllcik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYXV0byBuZXdJRCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVy
OjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uID0gUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbjo6Y3JlYXRlKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgbmV3SUQs
IGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRlKTsKKyAgICBhdXRvIGRlc3RpbmF0
aW9uID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKG1fZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcywgbmV3SUQsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVt
YmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRlLCBXVEZN
b3ZlKHJlbmRlclNlbWFwaG9yZSkpOwogICAgIG1fYXVkaW9EZXN0aW5hdGlvbnMuYWRkKG5ld0lE
LCBkZXN0aW5hdGlvbi5jb3B5UmVmKCkpOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG5ld0lELCBkZXN0aW5hdGlvbi0+Y3JlYXRlUmVuZGVyU2VtYXBob3JlU2Vu
ZFJpZ2h0KCkpOwotI2Vsc2UKICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdJRCk7Ci0jZW5kaWYK
IH0KIAogdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6ZGVsZXRlQXVkaW9EZXN0
aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlci5oCmluZGV4IGI4M2YyOWY4ZGMxMzNhMWEyYzNhODc0YmE3MzNiNTgwYjI2ZTc2
MmQuLjFkMDZkOThmMTg3MGJmNzEzYTg0ODQ1MDBiZDg5NGFhMDMyZDE0OWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaCIKKyNp
bmNsdWRlICJTZW1hcGhvcmUuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRl
IDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CkBAIC0zOCwxMCAr
MzksNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uOwogfQotCi1uYW1lc3BhY2UgV1RGIHsKLWNsYXNzIE1hY2hTZW5kUmlnaHQ7Ci19CiAjZW5k
aWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02MywxMiArNjAsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7
CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKIAotI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIHVzaW5nIENyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBXVEY6Ok1hY2hT
ZW5kUmlnaHQpPjsKLSNlbHNlCi0gICAgdXNpbmcgQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlciA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIp
PjsKLSNlbmRpZgotICAgIHZvaWQgY3JlYXRlQXVkaW9EZXN0aW5hdGlvbihjb25zdCBTdHJpbmcm
IGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3Qg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVT
YW1wbGVSYXRlLCBDcmVhdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgY3JlYXRl
QXVkaW9EZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51
bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCBJUEM6OlNlbWFwaG9yZSYm
IHJlbmRlclNlbWFwaG9yZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyKT4mJik7CisKICAgICB2b2lkIGRlbGV0ZUF1
ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzdGFydEF1ZGlvRGVzdGluYXRpb24oUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwogICAgIHZvaWQgc3RvcEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IDU1Nzg5ODQ2ZDc0
ZDg1NzRiYmRhMWFiZGYyNzE4YmQzYmE1YmM0ZTQuLjdmZDIyMjhkZDMwODQ3N2ZhZGY2OWQ0NzBk
NWZkNWUxYzk5MWI0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVz
c2FnZXMuaW4KQEAgLTI0LDEyICsyNCw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoV0VCX0FVRElPKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlciBOb3RSZWZDb3VudGVkIHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBDcmVhdGVBdWRp
b0Rlc3RpbmF0aW9uKFN0cmluZyBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0
Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJh
dGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkgLT4gKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0
aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgTWFjaFNlbmRSaWdodCByZW5kZXJTZW1hcGhv
cmVTZW5kUmlnaHQpIFN5bmNocm9ub3VzCi0jZW5kaWYKLSNpZiAhUExBVEZPUk0oQ09DT0EpCi0g
ICAgQ3JlYXRlQXVkaW9EZXN0aW5hdGlvbihTdHJpbmcgaW5wdXREZXZpY2VJZCwgdWludDMyX3Qg
bnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBm
bG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUpIC0+IChXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIFN5bmNocm9ub3VzCi0j
ZW5kaWYKKyAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKFN0cmluZyBpbnB1dERldmljZUlkLCB1
aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hh
bm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwgSVBDOjpT
ZW1hcGhvcmUgcmVuZGVyU2VtYXBob3JlKSAtPiAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSBTeW5jaHJvbm91cwogCiAgICAgRGVsZXRlQXVkaW9E
ZXN0aW5hdGlvbihXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50
aWZpZXIpIC0+ICgpIEFzeW5jCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NlbWFwaG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TZW1hcGhvcmUu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjYzZDJmNGI5ODJlYjU5NjBjNzdiNjdiMTY3M2U0NDFiOWEzYzVkNWQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TZW1hcGhvcmUu
Y3BwCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiU2VtYXBob3JlLmgiCisKKyNpZiAhT1MoREFSV0lOKQorCituYW1lc3BhY2UgSVBD
IHsKKworU2VtYXBob3JlOjpTZW1hcGhvcmUoKSA9IGRlZmF1bHQ7CisKK1NlbWFwaG9yZTo6U2Vt
YXBob3JlKFNlbWFwaG9yZSYmKSA9IGRlZmF1bHQ7CisKK1NlbWFwaG9yZTo6flNlbWFwaG9yZSgp
ID0gZGVmYXVsdDsKKworU2VtYXBob3JlJiBTZW1hcGhvcmU6Om9wZXJhdG9yPShTZW1hcGhvcmUm
JikgPSBkZWZhdWx0OworCit2b2lkIFNlbWFwaG9yZTo6ZW5jb2RlKEVuY29kZXImKSBjb25zdCB7
IH0KKworT3B0aW9uYWw8U2VtYXBob3JlPiBTZW1hcGhvcmU6OmRlY29kZShEZWNvZGVyJikKK3sK
KyAgICByZXR1cm4gU2VtYXBob3JlIHsgfTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NlbWFwaG9yZS5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2VtYXBob3JlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDk4M2FjNWM2ODQ4MDc2ZmYxZTUw
NWE3ZjE5OWQyNThkNDVjMmM4MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NlbWFwaG9yZS5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CisKKyNpZiBPUyhEQVJXSU4pCisj
aW5jbHVkZSA8bWFjaC9zZW1hcGhvcmUuaD4KKyNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5o
PgorI2VuZGlmCisKK25hbWVzcGFjZSBJUEMgeworCitjbGFzcyBEZWNvZGVyOworY2xhc3MgRW5j
b2RlcjsKKworY2xhc3MgU2VtYXBob3JlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTZW1hcGhvcmUpOworcHVibGljOgorICAgIFNlbWFw
aG9yZSgpOworICAgIFNlbWFwaG9yZShTZW1hcGhvcmUmJik7CisgICAgflNlbWFwaG9yZSgpOwor
ICAgIFNlbWFwaG9yZSYgb3BlcmF0b3I9KFNlbWFwaG9yZSYmKTsKKworICAgIHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgT3B0aW9uYWw8U2VtYXBob3JlPiBkZWNvZGUo
RGVjb2RlciYpOworCisjaWYgT1MoREFSV0lOKQorICAgIGV4cGxpY2l0IFNlbWFwaG9yZShNYWNo
U2VuZFJpZ2h0JiYpOworCisgICAgdm9pZCBzaWduYWwoKTsKKyAgICB2b2lkIHdhaXQoKTsKKyAg
ICB2b2lkIHdhaXRGb3IoU2Vjb25kcyk7CisgICAgTWFjaFNlbmRSaWdodCBjcmVhdGVTZW5kUmln
aHQoKSBjb25zdDsKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4g
bV9zZW5kUmlnaHQgfHwgbV9zZW1hcGhvcmUgIT0gU0VNQVBIT1JFX05VTEw7IH0KKyNlbHNlCisg
ICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyNlbmRp
ZgorCitwcml2YXRlOgorI2lmIE9TKERBUldJTikKKyAgICB2b2lkIGRlc3Ryb3koKTsKKyAgICBN
YWNoU2VuZFJpZ2h0IG1fc2VuZFJpZ2h0OworICAgIHNlbWFwaG9yZV90IG1fc2VtYXBob3JlIHsg
U0VNQVBIT1JFX05VTEwgfTsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9kYXJ3aW4vU2VtYXBob3JlRGFyd2lu
LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2Rhcndpbi9TZW1hcGhvcmVEYXJ3aW4u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmUxMTRkYjllYTFmNzlkM2ExMTU4OGU1ZTBhOGVjMmYzZWRhYjkwN2MK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9kYXJ3aW4vU2Vt
YXBob3JlRGFyd2luLmNwcApAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJTZW1hcGhvcmUuaCIKKworI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgPG1hY2gvbWFjaC5oPgorCituYW1lc3BhY2UgSVBD
IHsKKworU2VtYXBob3JlOjpTZW1hcGhvcmUoKQoreworICAgIGF1dG8gcmV0ID0gc2VtYXBob3Jl
X2NyZWF0ZShtYWNoX3Rhc2tfc2VsZigpLCAmbV9zZW1hcGhvcmUsIFNZTkNfUE9MSUNZX0ZJRk8s
IDApOworICAgIEFTU0VSVF9VTlVTRUQocmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTKTsKK30KKwor
U2VtYXBob3JlOjpTZW1hcGhvcmUoU2VtYXBob3JlJiYgb3RoZXIpCisgICAgOiBtX3NlbmRSaWdo
dChXVEZNb3ZlKG90aGVyLm1fc2VuZFJpZ2h0KSkKKyAgICAsIG1fc2VtYXBob3JlKHN0ZDo6ZXhj
aGFuZ2Uob3RoZXIubV9zZW1hcGhvcmUsIFNFTUFQSE9SRV9OVUxMKSkKK3sKK30KKworU2VtYXBo
b3JlOjpTZW1hcGhvcmUoTWFjaFNlbmRSaWdodCYmIHNlbmRSaWdodCkKKyAgICA6IG1fc2VuZFJp
Z2h0KFdURk1vdmUoc2VuZFJpZ2h0KSkKKyAgICAsIG1fc2VtYXBob3JlKG1fc2VuZFJpZ2h0LnNl
bmRSaWdodCgpKQoreworICAgIEFTU0VSVChtX3NlbmRSaWdodCk7Cit9CisKK1NlbWFwaG9yZTo6
flNlbWFwaG9yZSgpCit7CisgICAgZGVzdHJveSgpOworfQorCitTZW1hcGhvcmUmIFNlbWFwaG9y
ZTo6b3BlcmF0b3I9KFNlbWFwaG9yZSYmIG90aGVyKQoreworICAgIGlmICh0aGlzICE9ICZvdGhl
cikgeworICAgICAgICBkZXN0cm95KCk7CisgICAgICAgIG1fc2VuZFJpZ2h0ID0gV1RGTW92ZShv
dGhlci5tX3NlbmRSaWdodCk7CisgICAgICAgIG1fc2VtYXBob3JlID0gc3RkOjpleGNoYW5nZShv
dGhlci5tX3NlbWFwaG9yZSwgU0VNQVBIT1JFX05VTEwpOworICAgIH0KKworICAgIHJldHVybiAq
dGhpczsKK30KKwordm9pZCBTZW1hcGhvcmU6OnNpZ25hbCgpCit7CisgICAgYXV0byByZXQgPSBz
ZW1hcGhvcmVfc2lnbmFsKG1fc2VtYXBob3JlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0
ID09IEtFUk5fU1VDQ0VTUyk7Cit9CisKK3ZvaWQgU2VtYXBob3JlOjp3YWl0KCkKK3sKKyAgICBh
dXRvIHJldCA9IHNlbWFwaG9yZV93YWl0KG1fc2VtYXBob3JlKTsKKyAgICBBU1NFUlRfVU5VU0VE
KHJldCwgcmV0ID09IEtFUk5fU1VDQ0VTUyk7Cit9CisKK3ZvaWQgU2VtYXBob3JlOjp3YWl0Rm9y
KFNlY29uZHMgdGltZW91dCkKK3sKKyAgICBhdXRvIHNlY29uZHMgPSB0aW1lb3V0LnNlY29uZHNB
czx1bnNpZ25lZD4oKTsKKyAgICBhdXRvIHJldCA9IHNlbWFwaG9yZV90aW1lZHdhaXQobV9zZW1h
cGhvcmUsIHsgc2Vjb25kcywgc3RhdGljX2Nhc3Q8Y2xvY2tfcmVzX3Q+KHRpbWVvdXQubmFub3Nl
Y29uZHNBczx1aW50NjRfdD4oKSAtIHNlY29uZHMgKiBOU0VDX1BFUl9TRUMpIH0pOworICAgIEFT
U0VSVF9VTlVTRUQocmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTIHx8IHJldCA9PSBLRVJOX09QRVJB
VElPTl9USU1FRF9PVVQpOworfQorCitNYWNoU2VuZFJpZ2h0IFNlbWFwaG9yZTo6Y3JlYXRlU2Vu
ZFJpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gTWFjaFNlbmRSaWdodDo6Y3JlYXRlKG1fc2Vt
YXBob3JlKTsKK30KKwordm9pZCBTZW1hcGhvcmU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAoreworICAgIGVuY29kZXIgPDwgY3JlYXRlU2VuZFJpZ2h0KCk7Cit9CisKK09wdGlvbmFs
PFNlbWFwaG9yZT4gU2VtYXBob3JlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBN
YWNoU2VuZFJpZ2h0IHNlbmRSaWdodDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNlbmRSaWdo
dCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIE9wdGlvbmFsPFNl
bWFwaG9yZT4geyBzdGQ6OmluX3BsYWNlLCBXVEZNb3ZlKHNlbmRSaWdodCkgfTsKK30KKworCit2
b2lkIFNlbWFwaG9yZTo6ZGVzdHJveSgpCit7CisgICAgaWYgKG1fc2VuZFJpZ2h0KSB7CisgICAg
ICAgIG1fc2VuZFJpZ2h0ID0gTWFjaFNlbmRSaWdodCgpOworICAgICAgICBtX3NlbWFwaG9yZSA9
IFNFTUFQSE9SRV9OVUxMOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtX3NlbWFw
aG9yZSA9PSBTRU1BUEhPUkVfTlVMTCkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmV0ID0g
c2VtYXBob3JlX2Rlc3Ryb3kobWFjaF90YXNrX3NlbGYoKSwgbV9zZW1hcGhvcmUpOworICAgIEFT
U0VSVF9VTlVTRUQocmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTKTsKKyAgICBtX3NlbWFwaG9yZSA9
IFNFTUFQSE9SRV9OVUxMOworfQorCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHkgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5CmluZGV4IDZlYzZlYjRk
YTU1NzczZmNlZDYzZDM4MjIzM2MzMjU4MTlhOWEzYzMuLmU0ZGVlN2ViMGFmNzA4ZmQ1MDdmNGM5
NmZhZTRlMjVlMTY1NmMwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXNfdW5pdHRlc3QucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlc191bml0dGVzdC5weQpAQCAtMzksNyArMzksNyBAQCB0ZXN0c19kaXJlY3Rvcnkg
PSBvcy5wYXRoLmpvaW4obW9kdWxlX2RpcmVjdG9yeSwgJ3Rlc3RzJykKIAogcmVzZXRfcmVzdWx0
cyA9IEZhbHNlCiAKLV90ZXN0X3JlY2VpdmVyX25hbWVzID0gWydUZXN0V2l0aFN1cGVyY2xhc3Mn
LCAnVGVzdFdpdGhMZWdhY3lSZWNlaXZlcicsICdUZXN0V2l0aG91dEF0dHJpYnV0ZXMnLCAnVGVz
dFdpdGhJZk1lc3NhZ2UnXQorX3Rlc3RfcmVjZWl2ZXJfbmFtZXMgPSBbJ1Rlc3RXaXRoU3VwZXJj
bGFzcycsICdUZXN0V2l0aExlZ2FjeVJlY2VpdmVyJywgJ1Rlc3RXaXRob3V0QXR0cmlidXRlcycs
ICdUZXN0V2l0aElmTWVzc2FnZScsICdUZXN0V2l0aFNlbWFwaG9yZSddCiAKIAogZGVmIHJlY2Vp
dmVyX2hlYWRlcl9maWxlX25hbWUocmVjZWl2ZXJfbmFtZSk6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZQppbmRleCA4Nzk2ZmZiYzVhM2Y4N2I5MjNlZDZjOTgw
MjM5MWE4NzZiYWMzODJlLi5iMWRkNzk4ODY1YTUxNTQ5ODIwYjcwZGJkYjYxYWNkNmVhY2JjMWU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxl
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWFrZWZpbGUKQEAgLTEs
MiArMSwyIEBACiBhbGw6Ci0JcHl0aG9uIC4uLy4uL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIu
cHkgLiBUZXN0V2l0aFN1cGVyY2xhc3MgVGVzdFdpdGhMZWdhY3lSZWNlaXZlciBUZXN0V2l0aG91
dEF0dHJpYnV0ZXMgVGVzdFdpdGhJZk1lc3NhZ2UKKwlweXRob24gLi4vLi4vZ2VuZXJhdGUtbWVz
c2FnZS1yZWNlaXZlci5weSAuIFRlc3RXaXRoU3VwZXJjbGFzcyBUZXN0V2l0aExlZ2FjeVJlY2Vp
dmVyIFRlc3RXaXRob3V0QXR0cmlidXRlcyBUZXN0V2l0aElmTWVzc2FnZSBUZXN0V2l0aFNlbWFw
aG9yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNz
YWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwCmluZGV4IDU5NDA0NDM5MGNh
ZGFjMmZmMGNkZmFhOWUzMDUwNDQyNzc4MzgwZmUuLmNjNjgzNjgyODFjZDU5M2Q0NmNmMGE3NWUx
YTY0ZDBiN2VmMzhjNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAKQEAg
LTQwLDEyICs0MCwxNCBAQAogI2luY2x1ZGUgIk1hY2hQb3J0LmgiCiAjZW5kaWYKICNpbmNsdWRl
ICJQbHVnaW4uaCIKKyNpbmNsdWRlICJTZW1hcGhvcmUuaCIKICNpbmNsdWRlICJUZXN0Q2xhc3NO
YW1lLmgiCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICNpbmNsdWRlICJUZXN0VHdvU3RhdGVF
bnVtLmgiCiAjZW5kaWYKICNpbmNsdWRlICJUZXN0V2l0aElmTWVzc2FnZU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiVGVzdFdpdGhMZWdhY3lSZWNlaXZlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiVGVz
dFdpdGhTZW1hcGhvcmVNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlRlc3RXaXRoU3VwZXJjbGFzc01l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiVGVzdFdpdGhvdXRBdHRyaWJ1dGVzTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKQEAgLTIxNiw2ICsyMTgsMTAgQEAgT3B0
aW9uYWw8SlNDOjpKU1ZhbHVlPiBqc1ZhbHVlRm9yQXJndW1lbnRzKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgTWUKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aElmTWVz
c2FnZV9Mb2FkVVJMOgogICAgICAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudHM8
TWVzc2FnZXM6OlRlc3RXaXRoSWZNZXNzYWdlOjpMb2FkVVJMOjpBcmd1bWVudHM+KGdsb2JhbE9i
amVjdCwgZGVjb2Rlcik7CiAjZW5kaWYKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFNl
bWFwaG9yZV9TZW5kU2VtYXBob3JlOgorICAgICAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWRB
cmd1bWVudHM8TWVzc2FnZXM6OlRlc3RXaXRoU2VtYXBob3JlOjpTZW5kU2VtYXBob3JlOjpBcmd1
bWVudHM+KGdsb2JhbE9iamVjdCwgZGVjb2Rlcik7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVz
dFdpdGhTZW1hcGhvcmVfUmVjZWl2ZVNlbWFwaG9yZToKKyAgICAgICAgcmV0dXJuIGpzVmFsdWVG
b3JEZWNvZGVkQXJndW1lbnRzPE1lc3NhZ2VzOjpUZXN0V2l0aFNlbWFwaG9yZTo6UmVjZWl2ZVNl
bWFwaG9yZTo6QXJndW1lbnRzPihnbG9iYWxPYmplY3QsIGRlY29kZXIpOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTUxNyw2ICs1MjMsMTIgQEAgT3B0aW9uYWw8VmVj
dG9yPEFyZ3VtZW50RGVzY3JpcHRpb24+PiBtZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMoTWVz
c2FnZU5hbWUgbmEKICAgICAgICAgICAgIHsidmFsdWUiLCAiaW50NjRfdCIsIG51bGxwdHIsIGZh
bHNlfSwKICAgICAgICAgfTsKICNlbmRpZgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRo
U2VtYXBob3JlX1NlbmRTZW1hcGhvcmU6CisgICAgICAgIHJldHVybiBWZWN0b3I8QXJndW1lbnRE
ZXNjcmlwdGlvbj4geworICAgICAgICAgICAgeyJzMCIsICJJUEM6OlNlbWFwaG9yZSIsIG51bGxw
dHIsIGZhbHNlfSwKKyAgICAgICAgfTsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFNl
bWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlOgorICAgICAgICByZXR1cm4gVmVjdG9yPEFyZ3VtZW50
RGVzY3JpcHRpb24+IHsgfTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1l
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5j
cHAKaW5kZXggNzZmYWQzN2M1NDYwYWRiY2ZlYTM3MmQxODY2NTUwZmE3YzhhODUxMy4uNGM2ZWMy
ZTY3OTRjNTFlZjJkZGE4M2ZjNjNiNjYzOTBkMDY4NmIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcApAQCAtNzIsNiArNzIs
MTAgQEAgY29uc3QgY2hhciogZGVzY3JpcHRpb24oTWVzc2FnZU5hbWUgbmFtZSkKICAgICAgICAg
cmV0dXJuICJUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1Rlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzIjsK
ICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1RvdWNoRXZlbnQ6
CiAgICAgICAgIHJldHVybiAiVGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9Ub3VjaEV2ZW50IjsKKyAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFNlbWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlOgor
ICAgICAgICByZXR1cm4gIlRlc3RXaXRoU2VtYXBob3JlX1JlY2VpdmVTZW1hcGhvcmUiOworICAg
IGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU2VtYXBob3JlX1NlbmRTZW1hcGhvcmU6CisgICAg
ICAgIHJldHVybiAiVGVzdFdpdGhTZW1hcGhvcmVfU2VuZFNlbWFwaG9yZSI7CiAgICAgY2FzZSBN
ZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX0xvYWRVUkw6CiAgICAgICAgIHJldHVybiAi
VGVzdFdpdGhTdXBlcmNsYXNzX0xvYWRVUkwiOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RX
aXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlOgpAQCAtMTgxLDYgKzE4NSw5IEBAIFJlY2Vp
dmVyTmFtZSByZWNlaXZlck5hbWUoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiAgICAgY2FzZSBN
ZXNzYWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9UZXN0UGFyYW1ldGVyQXR0cmlidXRl
czoKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1RvdWNoRXZl
bnQ6CiAgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI7
CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTZW1hcGhvcmVfUmVjZWl2ZVNlbWFwaG9y
ZToKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFNlbWFwaG9yZV9TZW5kU2VtYXBob3Jl
OgorICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpUZXN0V2l0aFNlbWFwaG9yZTsKICAgICBj
YXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfTG9hZFVSTDoKICAgICBjYXNlIE1l
c3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZToKICAgICBjYXNl
IE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZVdpdGhDb25u
ZWN0aW9uOgpAQCAtMjk5LDYgKzMwNiwxMCBAQCBib29sIGlzVmFsaWRNZXNzYWdlTmFtZShNZXNz
YWdlTmFtZSBtZXNzYWdlTmFtZSkKICAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdl
TmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9Ub3VjaEV2ZW50KQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICNlbmRpZgorICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpU
ZXN0V2l0aFNlbWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTZW1hcGhv
cmVfU2VuZFNlbWFwaG9yZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKG1lc3NhZ2VO
YW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19Mb2FkVVJMKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaCBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmgKaW5kZXggMjNmNzU2
MDg3ZDY4M2FkMjJiMDY4ZTJhNzFmZDk1YTBmM2NlNTU1ZS4uNTc3NjEyMTJmZGQyOWNmMWUwOWY3
ZWIwMzcwMjc2ODZmMWQ0OWE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCkBAIC0zMSwxMSArMzEsMTIgQEAgbmFtZXNwYWNlIElQ
QyB7CiBlbnVtIGNsYXNzIFJlY2VpdmVyTmFtZSA6IHVpbnQ4X3QgewogICAgIFRlc3RXaXRoSWZN
ZXNzYWdlID0gMQogICAgICwgVGVzdFdpdGhMZWdhY3lSZWNlaXZlciA9IDIKLSAgICAsIFRlc3RX
aXRoU3VwZXJjbGFzcyA9IDMKLSAgICAsIFRlc3RXaXRob3V0QXR0cmlidXRlcyA9IDQKLSAgICAs
IElQQyA9IDUKLSAgICAsIEFzeW5jUmVwbHkgPSA2Ci0gICAgLCBJbnZhbGlkID0gNworICAgICwg
VGVzdFdpdGhTZW1hcGhvcmUgPSAzCisgICAgLCBUZXN0V2l0aFN1cGVyY2xhc3MgPSA0CisgICAg
LCBUZXN0V2l0aG91dEF0dHJpYnV0ZXMgPSA1CisgICAgLCBJUEMgPSA2CisgICAgLCBBc3luY1Jl
cGx5ID0gNworICAgICwgSW52YWxpZCA9IDgKIH07CiAKIGVudW0gY2xhc3MgTWVzc2FnZU5hbWUg
OiB1aW50MTZfdCB7CkBAIC02MCw2ICs2MSw4IEBAIGVudW0gY2xhc3MgTWVzc2FnZU5hbWUgOiB1
aW50MTZfdCB7CiAgICAgLCBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1RlbXBsYXRlVGVzdAogICAg
ICwgVGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9UZXN0UGFyYW1ldGVyQXR0cmlidXRlcwogICAgICwg
VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9Ub3VjaEV2ZW50CisgICAgLCBUZXN0V2l0aFNlbWFwaG9y
ZV9SZWNlaXZlU2VtYXBob3JlCisgICAgLCBUZXN0V2l0aFNlbWFwaG9yZV9TZW5kU2VtYXBob3Jl
CiAgICAgLCBUZXN0V2l0aFN1cGVyY2xhc3NfTG9hZFVSTAogICAgICwgVGVzdFdpdGhTdXBlcmNs
YXNzX1Rlc3RBc3luY01lc3NhZ2UKICAgICAsIFRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNN
ZXNzYWdlV2l0aENvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhTZW1hcGhvcmUubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU2VtYXBob3JlLm1lc3NhZ2VzLmluCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjUwZmQyZmZlNDhjMDUxY2Y2ZTA5OWNmZTc3MDkxMGJkZjhlYzgxMzgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU2Vt
YXBob3JlLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gVGVzdFdpdGhTZW1hcGhvcmUgeworICAg
IHZvaWQgU2VuZFNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSBzMCkKKyAgICB2b2lkIFJlY2VpdmVT
ZW1hcGhvcmUoKSAtPiAoSVBDOjpTZW1hcGhvcmUgcjApCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU2VtYXBob3JlTWVzc2FnZVJlY2Vp
dmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTZW1h
cGhvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmNjg2OTk1MzI3ZmMyZjI0YmVh
ZDk1YzAzN2VlYzhkYzFkNzgwZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU2VtYXBob3JlTWVzc2FnZVJlY2VpdmVyLmNwcApA
QCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAq
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlRlc3RXaXRoU2VtYXBob3JlLmgiCisKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisj
aW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgorI2luY2x1ZGUgIlNlbWFwaG9yZS5oIgorI2luY2x1
ZGUgIlRlc3RXaXRoU2VtYXBob3JlTWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3ZvaWQgVGVzdFdpdGhTZW1hcGhvcmU6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGF1dG8gcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OlRlc3RXaXRoU2VtYXBob3JlOjpTZW5kU2VtYXBob3JlOjpuYW1lKCkpIHsK
KyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFNlbWFwaG9yZTo6
U2VuZFNlbWFwaG9yZT4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU2VtYXBob3JlOjpzZW5kU2Vt
YXBob3JlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBVTlVTRURfUEFSQU0oY29ubmVj
dGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCit2b2lkIFRlc3RXaXRoU2VtYXBob3JlOjpkaWRSZWNlaXZlU3luY01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCit7CisgICAgYXV0byBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTZW1hcGhvcmU6OlJlY2VpdmVTZW1hcGhvcmU6Om5hbWUo
KSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU2VtYXBo
b3JlOjpSZWNlaXZlU2VtYXBob3JlPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVz
dFdpdGhTZW1hcGhvcmU6OnJlY2VpdmVTZW1hcGhvcmUpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZGVjb2Rl
cik7CisgICAgVU5VU0VEX1BBUkFNKHJlcGx5RW5jb2Rlcik7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFNlbWFwaG9yZU1lc3NhZ2VzLmggYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU2VtYXBob3JlTWVzc2Fn
ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wZjM1NmVlZGFhNjYzZDIxMzQ1NWE5MWViMGYxZDdkZjY2ZDZmOWI0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aFNlbWFwaG9yZU1lc3NhZ2VzLmgKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNs
dWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAi
VGVzdFdpdGhTZW1hcGhvcmVNZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2Ug
SVBDIHsKK2NsYXNzIFNlbWFwaG9yZTsKK30KKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVz
cGFjZSBUZXN0V2l0aFNlbWFwaG9yZSB7CisKK3N0YXRpYyBpbmxpbmUgSVBDOjpSZWNlaXZlck5h
bWUgbWVzc2FnZVJlY2VpdmVyTmFtZSgpCit7CisgICAgcmV0dXJuIElQQzo6UmVjZWl2ZXJOYW1l
OjpUZXN0V2l0aFNlbWFwaG9yZTsKK30KKworY2xhc3MgU2VuZFNlbWFwaG9yZSB7CitwdWJsaWM6
CisgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBJUEM6OlNlbWFwaG9yZSY+
OworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVz
c2FnZU5hbWU6OlRlc3RXaXRoU2VtYXBob3JlX1NlbmRTZW1hcGhvcmU7IH0KKyAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IFNlbmRTZW1hcGhvcmUo
Y29uc3QgSVBDOjpTZW1hcGhvcmUmIHMwKQorICAgICAgICA6IG1fYXJndW1lbnRzKHMwKQorICAg
IHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFy
Z3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIFJlY2VpdmVTZW1hcGhvcmUgeworcHVi
bGljOgorICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKKworICAgIHN0YXRpYyBJ
UEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0
aFNlbWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNT
eW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxJUEM6OlNlbWFwaG9y
ZSY+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxJUEM6OlNlbWFwaG9y
ZT47CisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMg
bV9hcmd1bWVudHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aFNlbWFwaG9yZQorfSAv
LyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhTZW1hcGhvcmVNZXNzYWdlc1JlcGxpZXMuaCBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTZW1hcGhvcmVNZXNzYWdlc1JlcGxp
ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43NTAxYTMzYzljNjdhMDJhZTNiOTI2M2NhNmUwNjA2NjdiMzlmMzkz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aFNlbWFwaG9yZU1lc3NhZ2VzUmVwbGllcy5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAq
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVz
cGFjZSBUZXN0V2l0aFNlbWFwaG9yZSB7CisKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdpdGhTZW1h
cGhvcmUKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3YjVhNzZhZjI1MjBjOWU3MjAxMDY4
MDhhOTM0ZmQxOTc4OTlkMjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0
aW9uUGFyYW1ldGVycy5oCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotCi0jaW5jbHVkZSAi
UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKLSNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdo
dC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRDcmVhdGlvblBhcmFtZXRlcnMgewotICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIGlk
ZW50aWZpZXI7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgTWFjaFNlbmRSaWdodCBzZW5kUmln
aHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3Jl
YXRpb25QYXJhbWV0ZXJzPiBkZWNvZGUoRGVjb2RlciYpOwotfTsKLQotdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVyczo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBpZGVudGlm
aWVyOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGVuY29kZXIgPDwgc2VuZFJpZ2h0Rm9yUmVz
dW1lRGlzcGxheUxpc3RTZW1hcGhvcmU7Ci0jZW5kaWYKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4KLU9wdGlvbmFsPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM+
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQotewotICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRl
cnMgcGFyYW1ldGVyczsKLQotICAgIE9wdGlvbmFsPFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
PiBpZGVudGlmaWVyOwotICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKLSAgICBpZiAoIWlkZW50
aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBwYXJhbWV0ZXJzLmlk
ZW50aWZpZXIgPSAqaWRlbnRpZmllcjsKLQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIE9wdGlv
bmFsPE1hY2hTZW5kUmlnaHQ+IHNlbmRSaWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3Jl
OwotICAgIGRlY29kZXIgPj4gc2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmU7
Ci0gICAgaWYgKCFzZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHBhcmFtZXRlcnMuc2VuZFJpZ2h0Rm9yUmVz
dW1lRGlzcGxheUxpc3RTZW1hcGhvcmUgPSBXVEZNb3ZlKCpzZW5kUmlnaHRGb3JSZXN1bWVEaXNw
bGF5TGlzdFNlbWFwaG9yZSk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBwYXJhbWV0ZXJzOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CmluZGV4IDdmNDA4YmM0NjEwYzEwNTQ5MWQ1YjA2NDFmOGI3MGYzYWY5MWIwNDMu
LjlhYmQ4OTk1YjI4MTlhZmE5Y2ZmMTQ3MmRjNDg4MTAxOWYyNmY2MzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApA
QCAtMTQ0LDYgKzE0NCw3IEBAIFBsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcCBAbm8tdW5pZnkKIFBs
YXRmb3JtL0lQQy9KU0lQQ0JpbmRpbmcuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL01lc3Nh
Z2VSZWNlaXZlck1hcC5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5j
cHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvU2VtYXBob3JlLmNwcCBAbm8tdW5pZnkKIFBsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9TdHJpbmdS
ZWZlcmVuY2UuY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGI4M2Q3Mzg2
MjU5NjhkZmQ3ZTg5MjNkMmZlNzg0MmJiMDU3MmZlMmYuLjI5OWUzOGNmYzllNjliMzk5NWYwY2Mx
MTNmZmY0NDA1ZDc5MGIwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTg4LDYgKzg4LDgg
QEAgUGxhdGZvcm0vaW9zL1VJS2l0U29mdExpbmsubW0KIAogUGxhdGZvcm0vSVBDL2NvY29hL0Nv
bm5lY3Rpb25Db2NvYS5tbQogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmNwcAorUGxh
dGZvcm0vSVBDL2Rhcndpbi9TZW1hcGhvcmVEYXJ3aW4uY3BwCisKIAogUGxhdGZvcm0vbWFjL01h
Y2hVdGlsaXRpZXMuY3BwCiBQbGF0Zm9ybS9tYWMvTWVudVV0aWxpdGllcy5tbQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWFiYTk2ZjM2
NTc2ZDI4YTkyMzMxMjIyZGNhNjc1MmNlZGM5MjQzNi4uNjFiZWFmOTQ4ZmEzYmZkZThlZmUyMWE4
OTU1MmQ5NDc0ZjJhZjAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMzI3LDYgKzEzMjcsOCBAQAogCQk3QUZCRDM2NzIxRTUxQkFC
MDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2NTIxRTUxQkFCMDA1
REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggKi87IH07CiAJCTdB
RkJEMzZGMjFFNTQ2RjgwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2RDIxRTU0NkUzMDA1REJB
Q0IgLyogUGVyc2lzdGVuY3lVdGlscy5oICovOyB9OwogCQk3QjFEQjI2NjI1NjY4Q0UxMDAwRTI2
QkMgLyogQXJyYXlSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5o
ICovOyB9OworCQk3QjczMTIyODI1Qzk4OEFBMDAzQjI3OTYgLyogU2VtYXBob3JlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjI2MjVDOTg4
QUEwMDNCMjc5NiAvKiBTZW1hcGhvcmUuY3BwICovOyB9OworCQk3QjczMTIyOTI1Qzk4OEFCMDAz
QjI3OTYgLyogU2VtYXBob3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QjczMTIyNzI1Qzk4OEFBMDAzQjI3OTYgLyogU2VtYXBob3JlLmggKi87IH07
CiAJCTdDMDY1RjJDMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJE
YXRhVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRh
VHlwZXMuaCAqLzsgfTsKIAkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5m
b3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDMTM1QUE3MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxQkEzM0UxQTRB
MEU2MDAwNDNFMjQ5IC8qIEFQSURpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMUJBMzNDMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0
aW9uYXJ5LmggKi87IH07CkBAIC0xOTcwLDcgKzE5NzIsNiBAQAogCQlGNDJENjM0MTIyQTBFRkRG
MDBEMkZCM0EgLyogV2ViQXV0b2NvcnJlY3Rpb25EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDJENjMzRjIyQTBFRkQzMDBEMkZCM0EgLyogV2Vi
QXV0b2NvcnJlY3Rpb25EYXRhLmggKi87IH07CiAJCUY0MzBFOTQyMjI0NzMzNUYwMDVGRTA1MyAv
KiBXZWJzaXRlTWV0YVZpZXdwb3J0UG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNDMwRTk0MTIyNDczMkE5MDA1RkUwNTMgLyogV2Vic2l0ZU1l
dGFWaWV3cG9ydFBvbGljeS5oICovOyB9OwogCQlGNDMwRTk0NDIyNDczREZGMDA1RkUwNTMgLyog
V2ViQ29udGVudE1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0MzBFOTQzMjI0NzNEQjgwMDVGRTA1MyAvKiBXZWJDb250ZW50TW9kZS5oICovOyB9
OwotCQlGNDM3QzhEOTI1OTNCN0UzMDBEQjhBMUMgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENy
ZWF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjQzN0M4RDgyNTkzQjdFMzAwREI4QTFDIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRDcmVhdGlvblBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJRjQzOENEMUMyMjQxNDIxNDAwREU2RERB
IC8qIFdLV2VicGFnZVByZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNDM4Q0QxQjIyNDE0MEE2MDBERTZEREEgLyogV0tXZWJwYWdlUHJl
ZmVyZW5jZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07
CiAJCUY0MzhDRDFGMjI0MTRENDAwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlc0ludGVy
bmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDM4
Q0QxRTIyNDE0RDQwMDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXNJbnRlcm5hbC5oICov
OyB9OwogCQlGNDM4Q0QyMTIyNDFGNjk1MDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXNQ
cml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NDM4Q0QyMDIyNDFGNjk1MDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXNQcml2YXRlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ1MTcs
NiArNDUxOCw5IEBACiAJCTdBRkJEMzZFMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0
aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlS
ZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlSZWZlcmVu
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2NEMwQjYyNTRDNUMyNTAwMDZC
NEFGIC8qIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0I3MzEyMjYyNUM5ODhBQTAwM0IyNzk2IC8qIFNlbWFwaG9yZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZW1hcGhvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QjczMTIyNzI1Qzk4OEFBMDAzQjI3OTYgLyogU2VtYXBob3JlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlbWFwaG9yZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QjczMTIyQTI1Qzk4OEM2MDAzQjI3OTYgLyogU2VtYXBob3JlRGFyd2lu
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlbWFwaG9yZURhcndp
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTY1MjU0QUZERUEwMDZF
RUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QjkwNDE2NjI1NEFGREVCMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTY3MjU0QUZFMTcwMDZFRUI4
QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC01NzkxLDcgKzU3OTUsNiBAQAogCQlGNDJENjM0MDIyQTBFRkQzMDBEMkZCM0Eg
LyogV2ViQXV0b2NvcnJlY3Rpb25EYXRhLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gV2ViQXV0b2NvcnJlY3Rpb25EYXRhLm1tOyBwYXRoID0gaW9zL1dlYkF1dG9j
b3JyZWN0aW9uRGF0YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzMEU5NDEy
MjQ3MzJBOTAwNUZFMDUzIC8qIFdlYnNpdGVNZXRhVmlld3BvcnRQb2xpY3kuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2Vic2l0ZU1ldGFWaWV3cG9ydFBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNDMwRTk0MzIyNDczREI4MDA1RkUwNTMgLyogV2ViQ29udGVudE1vZGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViQ29udGVudE1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRjQzN0M4RDgyNTkzQjdFMzAwREI4QTFDIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVh
dGlvblBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZENy
ZWF0aW9uUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDM4Q0Qx
QjIyNDE0MEE2MDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tXZWJwYWdlUHJlZmVyZW5jZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjQzOENEMUQyMjQxNEFENjAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV0tXZWJwYWdlUHJlZmVyZW5jZXMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUY0MzhDRDFFMjI0MTRENDAwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVm
ZXJlbmNlc0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2VicGFnZVByZWZlcmVuY2VzSW50
ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY1MzAsNyArNjUzMyw2IEBA
CiAJCQkJRTFDQzFCOEUxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mby5oICovLAogCQkJCTQ2
M0ZENDgxMUVCOTRFQUQwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLywK
IAkJCQk5QjEyMjlEMDIzRkYyQTVFMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXIuaCAqLywKLQkJCQlGNDM3QzhEODI1OTNCN0UzMDBEQjhBMUMgLyogUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oICovLAogCQkJCTVDQjdBRkU2MjNDNjgx
QjAwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWRJbmZvLmggKi8sCiAJCQkJNUMwMDk5M0IyNDE3RkI3
RTAwRDUzQzI1IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmggKi8sCiAJCQkJ
NDEwNDgyQ0IxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuY3BwICovLApAQCAtNjg4Miw2
ICs2ODg0LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQkND
NTZGNzUxMTU5OTU1RTAwMUNDQUY5IC8qIGNvY29hICovLAorCQkJCTdCNzMxMjJDMjVDQTY3QUUw
MDNCMjc5NiAvKiBkYXJ3aW4gKi8sCiAJCQkJMUFFRkQyNzgxMUQxNkM4MTAwODIxOUQzIC8qIEFy
Z3VtZW50Q29kZXIuaCAqLywKIAkJCQkxQTNENjEwNDEzQTdGMDNBMDBGOTVENEUgLyogQXJndW1l
bnRDb2RlcnMuY3BwICovLAogCQkJCTFBRUZEMkY2MTFEMTgwN0IwMDgyMTlEMyAvKiBBcmd1bWVu
dENvZGVycy5oICovLApAQCAtNjkwOCw2ICs2OTExLDggQEAKIAkJCQkxQTNFRUQwRDE2MUE1MzUz
MDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmggKi8sCiAJCQkJMUFBQjAzNzcxODVBN0M2
QTAwRURGNTAxIC8qIE1lc3NhZ2VTZW5kZXIuY3BwICovLAogCQkJCTFBQUIwMzc4MTg1QTdDNkEw
MEVERjUwMSAvKiBNZXNzYWdlU2VuZGVyLmggKi8sCisJCQkJN0I3MzEyMjYyNUM5ODhBQTAwM0Iy
Nzk2IC8qIFNlbWFwaG9yZS5jcHAgKi8sCisJCQkJN0I3MzEyMjcyNUM5ODhBQTAwM0IyNzk2IC8q
IFNlbWFwaG9yZS5oICovLAogCQkJCTJEQzE4MDAxRDkwREREMTVGQzY5OTFBOSAvKiBTaGFyZWRC
dWZmZXJDb3B5LmNwcCAqLywKIAkJCQk1Q0M1REI5MTIxNDg4RTE2MDA2Q0I4QTggLyogU2hhcmVk
QnVmZmVyQ29weS5oICovLAogCQkJCTJEQzE4NTVFREJGQjg1MEJBMEI2RDA2RCAvKiBTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlLmNwcCAqLywKQEAgLTkwMTEsNiArOTAxNiwxNCBAQAogCQkJbmFt
ZSA9IENsYXNzaWZpZXI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk3Qjcz
MTIyQzI1Q0E2N0FFMDAzQjI3OTYgLyogZGFyd2luICovID0geworCQkJaXNhID0gUEJYR3JvdXA7
CisJCQljaGlsZHJlbiA9ICgKKwkJCQk3QjczMTIyQTI1Qzk4OEM2MDAzQjI3OTYgLyogU2VtYXBo
b3JlRGFyd2luLmNwcCAqLywKKwkJCSk7CisJCQlwYXRoID0gZGFyd2luOworCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJN0M2RTcwRjgxOEIyRDQ3RTAwRjI0RTJFIC8qIGNvY29h
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTExNzM3LDYg
KzExNzUwLDcgQEAKIAkJCQk4Mzk5MDIwMzFCRTlBMDJCMDAwRjM2NTMgLyogTmV0d29ya0xvYWQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTgzRDQ1NEQ3MUJFOUQzQzQwMDZDOTNCRCAvKiBOZXR3b3Jr
TG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM5MTQ5NjUxQkVBODM4NTAwRDJEOTUz
IC8qIE5ldHdvcmtMb2FkUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQ3RkM4QTAy
NUI4MzMxQzAwNTQ5NUZDIC8qIE5ldHdvcmtMb2FkU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTc5NTU2QTE2Mjg3NkYzMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nlc3MuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxN0NGMEU0MTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxNDI2RUQxQzIzRjgwOTAw
RDQxMTgzIC8qIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAq
LywKQEAgLTExODc5LDcgKzExODkzLDYgQEAKIAkJCQkxQTU3MDRGQzFCRTE3NTExMDA4NzRBRjEg
LyogUmVtb3RlT2JqZWN0SW52b2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDMTMzODAx
ODU5MEFFNDAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQUMxMzM4NjE4NTkwQzQ2MDBGM0VDMDUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRjQzN0M4RDkyNTkzQjdFMzAwREI4QTFDIC8qIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNTk0NzkwMTg3QjNCM0EwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1OTQ3QTgxODdCNTE3NjAwNDM3ODU3IC8qIFJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTk0
NzlCMTg3QjNCNjAwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTExOTExLDYgKzExOTI0LDcgQEAKIAkJCQlFMThFNjkwQzE2OUI1
NjNGMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE4
RTY5MTgxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTcwQUI4RjMyMEFFM0JENzAwQjhCRTg3IC8qIFNlY0tleVByb3h5U3Rv
cmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNzMxMjI5MjVDOTg4QUIwMDNCMjc5NiAvKiBTZW1h
cGhvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEQ5RjU3MTkxMTlEMzUwMDAwNjNBNyAvKiBT
ZXJ2aWNlc0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRkRFNjVBMTk1NEE0MkIw
MEM0OEZGQSAvKiBTZXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDAyRDQ5MTk2
QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2RpbmcuaCBpbiBIZWFkZXJzICovLApAQCAt
MTIxMDAsNyArMTIxMTQsNiBAQAogCQkJCTkzQTg4QjMzMUJDNkU5Q0QwMEFCQTVDMiAvKiBXZWJI
aXRUZXN0UmVzdWx0RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ0REZFQjIxRTlFNzUyRjAw
MzhEMTk2IC8qIFdlYkljb25VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMjYxMTYx
MjE0MDU0RjQwMDA4MDZFNyAvKiBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUU0N0ZDOEEwMjVCODMzMUMwMDU0OTVGQyAvKiBOZXR3b3JrTG9hZFNjaGVkdWxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0MTI5OTQxQzY0MjhCQjAwNTlFNzE0IC8qIFdlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwNTIzNzQxQzczRDM4
QjAwNzk5M0NCIC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5MzNFODM1NTIzQTA3QzA2MDBERUYyODkgLyogV2ViSURCU2VydmVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTEzNzYzLDYgKzEzNzc2LDcgQEAKIAkJCQlBNTVCQTgyNjFCQTI1Q0ZE
MDA3Q0QzM0QgLyogUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUJCQkU0QTAxOUI2NkM1MzAwNkI3RDgxIC8qIFJlbW90ZVdlYklu
c3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxOEU2OTE3
MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTdCNzMxMjI4MjVDOTg4QUEwMDNCMjc5NiAvKiBTZW1hcGhvcmUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFERTdDNkMyMjI3OEYxRTAwNTMyQjY1IC8qIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3ODcyMTJCNkFC
MTAwRjQ5M0ZEIC8qIFNoYXJlYWJsZUJpdG1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREMx
OEZFQkYzMzdCOTY3MUM4OEUzQ0QgLyogU2hhcmVkQnVmZmVyQ29weS5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCA2MWI0Yzgy
NDk1NzZkZTEyOGE5YWJlZDA5MjdmNDFlZTQxNjJiZTZlLi5kYzNlNGVlNTgxNDliODM4OTRmYWU5
MzBmM2VjYjAwZDQyZDU2N2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oIgogI2luY2x1ZGUgIkltYWdlRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgpAQCAtNjcsMTIgKzY2LDcgQEAgdm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogICAg
IGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9j
ZXNzQ29ubmVjdGlvbigpOwogICAgIGNvbm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlzKTsKICAgICBj
b25uZWN0aW9uLm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOwotICAgIHNlbmQo
TWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVJlbmRlcmluZ0JhY2tl
bmQoewotICAgICAgICBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLAotI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgICAgICBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlLmNyZWF0ZVNlbmRS
aWdodCgpLAotI2VuZGlmCi0gICAgfSksIDApOworICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQobV9yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciwgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSksIDApOwogfQogCiB2
b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVlc3RhYmxpc2hHUFVQcm9jZXNzQ29u
bmVjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCA0OGZh
MDY5ZGFhOGQzY2Q2ZDEyNDQyZGIzMzA2MDNjOTM2Yjk3YjQ3Li4wNTk4MmNlNzBiZWQwYTk3MDA5
NWUyNmVkZGRmZjZkNjg4NjczZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmgKQEAgLTM0LDE1ICszNCwxMiBAQAogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNp
bmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNlbWFwaG9yZS5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvRGlzcGxheUxpc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlIDx3dGYvY29jb2EvTWFjaFNl
bWFwaG9yZS5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNw
bGF5TGlzdCB7CiBjbGFzcyBEaXNwbGF5TGlzdDsKQEAgLTEyNiw5ICsxMjMsNyBAQCBwcml2YXRl
OgogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gbV9j
dXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXI7CiAgICAgT3B0aW9uYWw8R1BV
UHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHM+IG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJn
dW1lbnRzOwogICAgIHVuc2lnbmVkIG1fcmVtYWluaW5nSXRlbXNUb0FwcGVuZEJlZm9yZVNlbmRp
bmdXYWtldXAgeyAwIH07Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgTWFjaFNlbWFwaG9yZSBt
X3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOwotI2VuZGlmCisgICAgSVBDOjpTZW1hcGhvcmUg
bV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmluZGV4IDM0ZTMwY2UxMTkzNjBj
OTMwYzJiMDdlOWMzMDhhMWI2NDBlZDBhM2UuLjAyODMzMDU0YWUwZGY4MjllMjcxYmJiZjQ4YjM4
YjMzODY0ODRhNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKQEAgLTQw
LDcgKzQwLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvV2ViQXVkaW9CdWZmZXJMaXN0Lmg+CiAjaW5jbHVkZSA8bWFjaC9tYWNoX3RpbWUu
aD4KLSNpbmNsdWRlIDx3dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oPgogI2VuZGlmCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtODAsNyArNzksNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eTo6c3RhcnRSZW5kZXJpbmdUaHJlYWQoKQogCiAgICAgYXV0byBvZmZUaHJlYWRSZW5k
ZXJpbmcgPSBbdGhpc10oKSBtdXRhYmxlIHsKICAgICAgICAgZG8gewotICAgICAgICAgICAgbV9y
ZW5kZXJTZW1hcGhvcmUtPndhaXQoKTsKKyAgICAgICAgICAgIG1fcmVuZGVyU2VtYXBob3JlLndh
aXQoKTsKICAgICAgICAgICAgIGlmIChtX3Nob3VsZFN0b3BUaHJlYWQpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAKQEAgLTk4LDggKzk3LDcgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHk6OnN0b3BSZW5kZXJpbmdUaHJlYWQoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3No
b3VsZFN0b3BUaHJlYWQgPSB0cnVlOwotICAgIGlmIChtX3JlbmRlclNlbWFwaG9yZSkKLSAgICAg
ICAgbV9yZW5kZXJTZW1hcGhvcmUtPnNpZ25hbCgpOworICAgIG1fcmVuZGVyU2VtYXBob3JlLnNp
Z25hbCgpOwogICAgIG1fcmVuZGVyVGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOwogICAgIG1f
cmVuZGVyVGhyZWFkID0gbnVsbHB0cjsKICNlbmRpZgpAQCAtMTA3LDIwICsxMDUsMTAgQEAgdm9p
ZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0b3BSZW5kZXJpbmdUaHJlYWQoKQogCiB2
b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2VzcygpCiB7
Ci0gICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgZGVzdGluYXRpb25JRDsKLSNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICBNYWNoU2VuZFJpZ2h0IHJlbmRlclNlbWFwaG9yZVNlbmRS
aWdodDsKLSNlbmRpZgotCiAgICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgY29ubmVjdGlvbi5hZGRD
bGllbnQoKnRoaXMpOwogICAgIGF1dG8gZGlkU3VjY2VlZCA9IGNvbm5lY3Rpb24uY29ubmVjdGlv
bigpLnNlbmRTeW5jKAotICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1h
bmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb24obV9pbnB1dERldmljZUlkLCBtX251bWJlck9m
SW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscygpLCBzYW1wbGVSYXRlKCksIGhh
cmR3YXJlU2FtcGxlUmF0ZSgpKSwKLSAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZXBseShkZXN0aW5hdGlvbklE
Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgICAgICAsIHJlbmRlclNlbWFwaG9yZVNlbmRS
aWdodAotI2VuZGlmCi0gICAgICAgICksIDApOworICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb24obV9pbnB1dERldmlj
ZUlkLCBtX251bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscygpLCBz
YW1wbGVSYXRlKCksIGhhcmR3YXJlU2FtcGxlUmF0ZSgpLCBtX3JlbmRlclNlbWFwaG9yZSksIE1l
c3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5h
dGlvbjo6UmVwbHkobV9kZXN0aW5hdGlvbklEKSwgMCk7CiAKICAgICBpZiAoIWRpZFN1Y2NlZWQp
IHsKICAgICAgICAgLy8gVGhlIEdQVVByb2Nlc3MgbGlrZWx5IGNyYXNoZWQgZHVyaW5nIHRoaXMg
c3luY2hyb25vdXMgSVBDLiBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKCkgd2lsbCBnZXQg
Y2FsbGVkIHRvIHJlY29ubmVjdCB0byB0aGUgR1BVUHJvY2Vzcy4KQEAgLTEyOCw3ICsxMTYsNiBA
QCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2Vzcygp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2Rlc3RpbmF0aW9uSUQgPSBkZXN0aW5h
dGlvbklEOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbV9jdXJyZW50RnJhbWUgPSAwOwpA
QCAtMTM2LDcgKzEyMyw2IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25u
ZWN0VG9HUFVQcm9jZXNzKCkKICAgICBnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3Ry
ZWFtRm9ybWF0KTsKICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKHN0cmVhbUZvcm1hdCwgbV9u
dW1iZXJPZkZyYW1lcyk7CiAgICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBtYWtlVW5pcXVlPFdlYkNv
cmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4oc3RyZWFtRm9ybWF0KTsKLSAgICBtX3JlbmRlclNlbWFw
aG9yZSA9IG1ha2VVbmlxdWU8TWFjaFNlbWFwaG9yZT4oV1RGTW92ZShyZW5kZXJTZW1hcGhvcmVT
ZW5kUmlnaHQpKTsKICNlbmRpZgogCiAgICAgc3RhcnRSZW5kZXJpbmdUaHJlYWQoKTsKQEAgLTIw
NSw5ICsxOTEsNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Z3B1UHJvY2Vz
c0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdAogICAgIG9sZENvbm5lY3Rpb24u
cmVtb3ZlQ2xpZW50KCp0aGlzKTsKIAogICAgIHN0b3BSZW5kZXJpbmdUaHJlYWQoKTsKLSNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBtX3JlbmRlclNlbWFwaG9yZSA9IG51bGxwdHI7Ci0jZW5kaWYK
KwogICAgIGNvbm5lY3RUb0dQVVByb2Nlc3MoKTsKIAogICAgIGlmIChpc1BsYXlpbmcoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCmluZGV4IDhkMmM2M2ViOWM1NWZiOGIyYWM1NGJh
YWRlOGY3M2NlNWQ1YjFjYzUuLmFjZWIyOGFmYzJjNmRhNmFmODM3MThkYmJmMjhjMzYxY2ViYjll
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLmgiCisjaW5jbHVk
ZSAiU2VtYXBob3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0lPQ2FsbGJhY2suaD4KICNp
bmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUu
aD4KQEAgLTM4LDYgKzM5LDcgQEAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJTaGFy
ZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlv
bkNvY29hLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjZWxzZQogI2luY2x1ZGUgPFdl
YkNvcmUvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oPgogI2VuZGlmCkBAIC00NywxMiArNDks
NiBAQCBjbGFzcyBDQVJpbmdCdWZmZXI7CiBjbGFzcyBXZWJBdWRpb0J1ZmZlckxpc3Q7CiB9CiAK
LW5hbWVzcGFjZSBXVEYgewotI2lmIFBMQVRGT1JNKENPQ09BKQotY2xhc3MgTWFjaFNlbWFwaG9y
ZTsKLSNlbmRpZgotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2hhcmVkUmluZ0J1
ZmZlckZyYW1lQm91bmRzOwpAQCAtMTA0LDEzICsxMDAsMTMgQEAgcHJpdmF0ZToKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICB1aW50NjRfdCBtX251bWJlck9mRnJhbWVzIHsgMCB9OwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+IG1fcmluZ0J1ZmZlcjsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8V1RGOjpNYWNoU2VtYXBob3JlPiBtX3JlbmRlclNlbWFwaG9yZTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0PiBtX2F1ZGlvQnVm
ZmVyTGlzdDsKICAgICB1aW50NjRfdCBtX2N1cnJlbnRGcmFtZSB7IDAgfTsKICAgICBmbG9hdCBt
X3NhbXBsZVJhdGU7CiAjZWxzZQogICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVs
czsKICNlbmRpZgorICAgIElQQzo6U2VtYXBob3JlIG1fcmVuZGVyU2VtYXBob3JlOwogCiAgICAg
U3RyaW5nIG1faW5wdXREZXZpY2VJZDsKICAgICB1bnNpZ25lZCBtX251bWJlck9mSW5wdXRDaGFu
bmVsczsK
</data>

          </attachment>
      

    </bug>

</bugzilla>