<?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>236356</bug_id>
          
          <creation_ts>2022-02-09 02:33:30 -0800</creation_ts>
          <short_desc>Support remote video frames in WebRTC video pipeline</short_desc>
          <delta_ts>2022-06-23 14:48:49 -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>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>236099</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>annulen</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>menard</cc>
    
    <cc>mkwst</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1839064</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-09 02:33:30 -0800</bug_when>
    <thetext>Support remote video frames in WebRTC video pipeline</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839065</commentid>
    <comment_count>1</comment_count>
      <attachid>451352</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-09 02:35:22 -0800</bug_when>
    <thetext>Created attachment 451352
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839070</commentid>
    <comment_count>2</comment_count>
      <attachid>451352</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-09 03:05:44 -0800</bug_when>
    <thetext>Comment on attachment 451352
Patch

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

Looks good overall.
I&apos;m not 100% sure I am satisfied the process qualified identifier, but I can appreciate how good of an invention that was!

&gt; Source/WebKit/GPUProcess/media/RemoteVideoFrameObjectHeap.cpp:75
&gt; +RemoteVideoFrameIdentifier RemoteVideoFrameObjectHeap::createVideoFrame(Ref&lt;WebCore::MediaSample&gt;&amp;&amp; frame)

You could name this createRemoteVideoFrame() and explicitly call the retire the way described below.

&gt; Source/WebKit/Shared/ThreadSafeObjectHeap.h:193
&gt; +void ThreadSafeObjectHeap&lt;Identifier, HeldType&gt;::add(Identifier identifier, HeldType&amp;&amp; object)

This hides the reference semantics.
There should not be such a functions at this level.
It&apos;s a low-level class for managing the reference semantics.

So it would be better that caller uses:

auto theNewObject = ....;
auto write = WriteReference { { identifier, 0 }, 0}; 
auto newReference = write.retiredReference();
heap-&gt;retire(write, theNewObject);

sendTheWrittenReference(newReference)

&gt; Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:212
&gt; +        m_connection-&gt;send(Messages::RemoteCaptureSampleManager::VideoSampleAvailable(m_id, WTFMove(*remoteSample), remoteIdentifier, metadata), 0);

This is maybe a bit messier than I&apos;d prefer.
To me it would make sense to have two different messages. Example naming:
 VideoSampleAvailable for sending RemoteVideoFrameProxy
 VideoSampleAvailableCV for sending RemoteVideoSample (CV as in Core Video).

&gt; Source/WebKit/WebProcess/GPU/media/RemoteVideoFrameProxy.cpp:61
&gt; +    , m_connectionID(gpuProcessConnection.connection().uniqueID())

Not sure what is the purpose of this.
If we want to store thread-safe connection, we just get Ref&lt;IPC::Connection. Connection is thread-safe to hold, gpuProcessConnection is not.

&gt; Source/WebKit/WebProcess/GPU/media/RemoteVideoFrameProxy.cpp:152
&gt; +        IPC::Connection::send(*m_connectionID, Messages::RemoteVideoFrameObjectHeap::ReleaseVideoFrame(write()), 0, IPC::SendOption::DispatchMessageEvenWhenWaitingForSyncReply);

This message does not make sense to be sent if we do not have a GPU process connection anymore.

&gt; Source/WebKit/WebProcess/GPU/media/RemoteVideoFrameProxy.h:71
&gt;  

I don&apos;t think these should be moved to private.
In private, it means that these functions cannot be called through RemoteViedoFrameProxy. This is incorrect, as they&apos;re the features the class supports and we want the client to call them through the MediaSample. Similarly if client holds the VideoFrame, we want it to be able to call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839074</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-09 03:14:28 -0800</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #2)
&gt; Comment on attachment 451352 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=451352&amp;action=review
&gt; 
&gt; Looks good overall.
&gt; I&apos;m not 100% sure I am satisfied the process qualified identifier, but I can
&gt; appreciate how good of an invention that was!

Right, I think we want to generate IDs where the frames are created, i.e. in GPUProcess solely. I hope we can make it that way so that we can go back to the remove ID being a simple ObjectIdentifier at some point after we make the whole thing working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839612</commentid>
    <comment_count>4</comment_count>
      <attachid>451520</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-10 05:44:43 -0800</bug_when>
    <thetext>Created attachment 451520
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839646</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-10 07:33:29 -0800</bug_when>
    <thetext>We probably need to add a backup in case we cannot retrieve a remote CVPixelBuffer, libwebrtc might not like null buffers. We can probably use a black frame in that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839990</commentid>
    <comment_count>6</comment_count>
      <attachid>451610</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-10 15:16:43 -0800</bug_when>
    <thetext>Created attachment 451610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839993</commentid>
    <comment_count>7</comment_count>
      <attachid>451611</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-10 15:23:14 -0800</bug_when>
    <thetext>Created attachment 451611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840251</commentid>
    <comment_count>8</comment_count>
      <attachid>451652</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-11 00:46:13 -0800</bug_when>
    <thetext>Created attachment 451652
Combined patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840253</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-11 00:55:42 -0800</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #2)
&gt; Comment on attachment 451352 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=451352&amp;action=review
&gt; 
&gt; Looks good overall.
&gt; I&apos;m not 100% sure I am satisfied the process qualified identifier, but I can
&gt; appreciate how good of an invention that was!

Yes, we might want to make it back to a pure ObjectIdentifier if/when GPUProcess is the only creating the IDs.

&gt; &gt; Source/WebKit/GPUProcess/media/RemoteVideoFrameObjectHeap.cpp:75
&gt; &gt; +RemoteVideoFrameIdentifier RemoteVideoFrameObjectHeap::createVideoFrame(Ref&lt;WebCore::MediaSample&gt;&amp;&amp; frame)
&gt; 
&gt; You could name this createRemoteVideoFrame() and explicitly call the retire
&gt; the way described below.

OK

&gt; &gt; Source/WebKit/Shared/ThreadSafeObjectHeap.h:193
&gt; &gt; +void ThreadSafeObjectHeap&lt;Identifier, HeldType&gt;::add(Identifier identifier, HeldType&amp;&amp; object)
&gt; 
&gt; This hides the reference semantics.
&gt; There should not be such a functions at this level.
&gt; It&apos;s a low-level class for managing the reference semantics.
&gt; 
&gt; So it would be better that caller uses:
&gt; 
&gt; auto theNewObject = ....;
&gt; auto write = WriteReference { { identifier, 0 }, 0}; 
&gt; auto newReference = write.retiredReference();
&gt; heap-&gt;retire(write, theNewObject);
&gt; 
&gt; sendTheWrittenReference(newReference)

retire has a lot of logic that are unnecessary in our case where we know the ID is brand new.

&gt; &gt; Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:212
&gt; &gt; +        m_connection-&gt;send(Messages::RemoteCaptureSampleManager::VideoSampleAvailable(m_id, WTFMove(*remoteSample), remoteIdentifier, metadata), 0);
&gt; 
&gt; This is maybe a bit messier than I&apos;d prefer.
&gt; To me it would make sense to have two different messages. Example naming:
&gt;  VideoSampleAvailable for sending RemoteVideoFrameProxy
&gt;  VideoSampleAvailableCV for sending RemoteVideoSample (CV as in Core Video).

I like having just one IPC message.
The message is a bit bigger but this makes it easier to follow to me.

&gt; &gt; Source/WebKit/WebProcess/GPU/media/RemoteVideoFrameProxy.cpp:61
&gt; &gt; +    , m_connectionID(gpuProcessConnection.connection().uniqueID())
&gt; 
&gt; Not sure what is the purpose of this.
&gt; If we want to store thread-safe connection, we just get Ref&lt;IPC::Connection.
&gt; Connection is thread-safe to hold, gpuProcessConnection is not.

We could, but connectionID is equally good.

&gt; &gt; Source/WebKit/WebProcess/GPU/media/RemoteVideoFrameProxy.cpp:152
&gt; &gt; +        IPC::Connection::send(*m_connectionID, Messages::RemoteVideoFrameObjectHeap::ReleaseVideoFrame(write()), 0, IPC::SendOption::DispatchMessageEvenWhenWaitingForSyncReply);
&gt; 
&gt; This message does not make sense to be sent if we do not have a GPU process
&gt; connection anymore.

When video frame is created as already initialised, it no longer has an initialized m_gpuProcessConnection (it does not need to be registered as a message receiver) but it has to say that it is being released.

&gt; 
&gt; &gt; Source/WebKit/WebProcess/GPU/media/RemoteVideoFrameProxy.h:71
&gt; &gt;  
&gt; 
&gt; I don&apos;t think these should be moved to private.
&gt; In private, it means that these functions cannot be called through
&gt; RemoteViedoFrameProxy. This is incorrect, as they&apos;re the features the class
&gt; supports and we want the client to call them through the MediaSample.
&gt; Similarly if client holds the VideoFrame, we want it to be able to call.

It is mostly a style change, in general I prefer reducing exposure of overriden methods, nothing prevents to make them public if we want.
I think it is nice to keep it this way:
- WebCore works on MediaSample API.
- WebKit works on RemoteViedoFrameProxy specific API.

At some point, I would like RemoteViedoFrameProxy (or part of it) to be back to a WebCore object and WebKit would only deal with IPC stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840254</commentid>
    <comment_count>10</comment_count>
      <attachid>451654</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-11 00:58:26 -0800</bug_when>
    <thetext>Created attachment 451654
Combined patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840293</commentid>
    <comment_count>11</comment_count>
      <attachid>451673</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-11 03:58:44 -0800</bug_when>
    <thetext>Created attachment 451673
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840347</commentid>
    <comment_count>12</comment_count>
      <attachid>451692</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-11 07:30:54 -0800</bug_when>
    <thetext>Created attachment 451692
Combined patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840349</commentid>
    <comment_count>13</comment_count>
      <attachid>451694</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-11 07:35:57 -0800</bug_when>
    <thetext>Created attachment 451694
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840367</commentid>
    <comment_count>14</comment_count>
      <attachid>451694</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-11 08:10:28 -0800</bug_when>
    <thetext>Comment on attachment 451694
Patch

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

Good, a bit to improve later in our overall architecture.
few nits

&gt; Source/WebKit/GPUProcess/media/RemoteVideoFrameObjectHeap.cpp:71
&gt; +RemoteVideoFrameIdentifier RemoteVideoFrameObjectHeap::createRemoteVideoFrame(Ref&lt;WebCore::MediaSample&gt;&amp;&amp; frame)

maybe don&apos;t add this.
see the call site.

&gt; Source/WebKit/GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:100
&gt; +            remoteIdentifier = videoFrameObjectHeap-&gt;createRemoteVideoFrame(sample.releaseNonNull());

Use the same pattern as RemoteGraphicsContextGL::paintCompositedResultsToMediaSample()

&gt; Source/WebKit/Shared/ThreadSafeObjectHeap.h:192
&gt; +template&lt;typename Identifier, typename HeldType&gt;

don&apos;t add this, it&apos;s a bit redundant and hard to use correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840370</commentid>
    <comment_count>15</comment_count>
      <attachid>451694</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-11 08:18:13 -0800</bug_when>
    <thetext>Comment on attachment 451694
Patch

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

&gt; Source/WebKit/Shared/ThreadSafeObjectHeap.h:198
&gt; +    m_objects.add(reference, ReferenceState { WTFMove(object) });

actually, you have to remove this, it&apos;s incorrect.

The add needs to be done with retiring a write reference, otherwise it won&apos;t work.
So just remove this function (and the calling function)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840371</commentid>
    <comment_count>16</comment_count>
      <attachid>451694</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-11 08:18:17 -0800</bug_when>
    <thetext>Comment on attachment 451694
Patch

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

&gt; Source/WebKit/Shared/ThreadSafeObjectHeap.h:198
&gt; +    m_objects.add(reference, ReferenceState { WTFMove(object) });

actually, you have to remove this, it&apos;s incorrect.

The add needs to be done with retiring a write reference, otherwise it won&apos;t work.
So just remove this function (and the calling function)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840380</commentid>
    <comment_count>17</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-11 08:49:23 -0800</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #16)
&gt; Comment on attachment 451694 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=451694&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/Shared/ThreadSafeObjectHeap.h:198
&gt; &gt; +    m_objects.add(reference, ReferenceState { WTFMove(object) });
&gt; 
&gt; actually, you have to remove this, it&apos;s incorrect.
&gt; 
&gt; The add needs to be done with retiring a write reference, otherwise it won&apos;t
&gt; work.
&gt; So just remove this function (and the calling function)

It should be safe with the current usage (we always provide a new ID generated by GPUProcess), but I see your point about being consistent.
I am landing as is right now, but will follow up with improvements according your suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840384</commentid>
    <comment_count>18</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-11 08:58:53 -0800</bug_when>
    <thetext>&lt;rdar://88260659&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840411</commentid>
    <comment_count>19</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-11 09:42:23 -0800</bug_when>
    <thetext>Committed r289628 (247138@main): &lt;https://commits.webkit.org/247138@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 451694.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1877892</commentid>
    <comment_count>20</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-06-23 14:48:49 -0700</bug_when>
    <thetext>*** Bug 232879 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451352</attachid>
            <date>2022-02-09 02:35:22 -0800</date>
            <delta_ts>2022-02-10 05:44:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236356-20220209113520.patch</filename>
            <type>text/plain</type>
            <size>35274</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Mzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmExZTg2MGYzODk5MDEy
YjI1ZmZiZDA2MDUyZDBjNTFiZTliMGFkNS4uMjhiMDEyMTBlMTlmYjA2YTNmYWIxMzAwMzZiZTVh
NjJhOGEyMGU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIyLTAyLTA5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlbW90ZSB2
aWRlbyBmcmFtZXMgaW4gV2ViUlRDIHZpZGVvIHBpcGVsaW5lCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYzNTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXSVAuCisgICAgICAgIENvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9WaWRlb0ZyYW1lLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVtb3RlVmlkZW9TYW1wbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZVZpZGVvU291cmNlLmNwcDoKKwogMjAyMi0wMi0wOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgdG8gcGFzcyB3ZWJydGMgdmlkZW8gZnJhbWUg
YnVmZmVycyB0aHJvdWdoIFJlYWx0aW1lTWVkaWFTb3VyY2UgYmFzZWQgcGlwZWxpbmVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IGFiNGQ5MDYzNWQ2YzIzZTA1Mjg1NjAyZTJlMjdlNWQ4Mjk3NjExZGEuLmViYWI0NDcz
M2NjYzQzZDRlYzI2ZTc3NjYzZjc3NmQ4NDMxN2IyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMjItMDItMDkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAg
ICAgIFN1cHBvcnQgcmVtb3RlIHZpZGVvIGZyYW1lcyBpbiBXZWJSVEMgdmlkZW8gcGlwZWxpbmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjM1Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVj
ZSBhbHJlYWR5IGluaXRpYWxpemVkIHJlbW90ZSB2aWRlbyBmcmFtZXMgYW5kIHVzZSB0aGlzIHdo
ZW4gc2VuZGluZyBjYW1lcmEgZnJhbWVzIGZyb20gR1BVUHJvY2VzcyB0byBXZWJQcm9jZXNzLgor
CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmg6
CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvVGhyZWFkU2FmZU9iamVjdEhlYXAuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHA6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmll
ci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94
eS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVBy
b3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2Ft
cGxlTWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJl
U2FtcGxlTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVy
ZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW46CisKIDIwMjItMDItMDggIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IHRvIHBhc3Mgd2VicnRjIHZpZGVv
IGZyYW1lIGJ1ZmZlcnMgdGhyb3VnaCBSZWFsdGltZU1lZGlhU291cmNlIGJhc2VkIHBpcGVsaW5l
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcAppbmRleCAzNGU4MTZlY2QwOGNi
OTU1MjRkNmFhMmQ3MWFmY2I5ZjBiOTE3ODZmLi5mMDc2OWJhNWU1NGE4ODBiZTYzOTA5YTljZGEw
MzI4N2EzN2QzY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0Zy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcApAQCAt
NTgsMTIgKzU4LDYgQEAgc2l6ZV90IFZpZGVvRnJhbWU6OnNpemVJbkJ5dGVzKCkgY29uc3QKICAg
ICByZXR1cm4gMDsKIH0KIAotV2ViQ29yZTo6RmxvYXRTaXplIFZpZGVvRnJhbWU6OnByZXNlbnRh
dGlvblNpemUoKSBjb25zdAotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biB7IH07Ci19Ci0KIHZvaWQgVmlkZW9GcmFtZTo6b2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1l
ZGlhVGltZSYpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9WaWRlb0ZyYW1lLmgKaW5kZXggYjJkOTUwMTBkMzZlYjYyYjllYWUxYjk5ODM3Yjg0NzcxNDFl
MDVmYy4uYjYzMWZkMTNlMjJlMzEyMjY2NTAwMTRiYWY3OGRlYTkwY2FhNmZiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaApAQCAtNDgsNyArNDgsNiBAQCBwcml2YXRlOgogICAg
IFdFQkNPUkVfRVhQT1JUIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIFdF
QkNPUkVfRVhQT1JUIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IGZpbmFsOwogICAgIFdFQkNP
UkVfRVhQT1JUIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IGZpbmFsOwotICAgIFdFQkNPUkVf
RVhQT1JUIFdlYkNvcmU6OkZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3QgZmluYWw7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFU
aW1lJikgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUaW1lc3RhbXBzKGNvbnN0
IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaXNEaXZpc2FibGUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCmluZGV4IGNkMTBkOWMwNWNi
OGExZDg2ZTY0M2Q1YTNmYWFhZTVjNzRmMDg3OTkuLmYxZGQ5MTkwMWY4NDllMDlhMjQ2NjQ5ZmNk
ZGE3OGQwZGRjOWFjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaApAQCAtNTQsNiArNTQsNyBAQCBwdWJsaWM6CiAgICAg
Q1ZQaXhlbEJ1ZmZlclJlZiBpbWFnZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VCdWZm
ZXIuZ2V0KCk7IH0KIAogICAgIHZvaWQgc2V0T3duZXJzaGlwSWRlbnRpdHkoY29uc3QgUHJvY2Vz
c0lkZW50aXR5Jik7CisgICAgdm9pZCBjbGVhcklPU3VyZmFjZSgpIHsgbV9pb1N1cmZhY2UgPSBu
dWxscHRyOyB9CiAKICAgICBjb25zdCBNZWRpYVRpbWUmIHRpbWUoKSBjb25zdCB7IHJldHVybiBt
X3RpbWU7IH0KICAgICB1aW50MzJfdCB2aWRlb0Zvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlk
ZW9Gb3JtYXQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKaW5kZXggNjgyNzNlYmY3ZjAzYThhOTI2
OGMwZDg4ZjUxMWUzZjZjMjkzNTA5Mi4uNWE0NzAyMWVlMWY4OTgwNTczODIxOTc2NDJhMTdjNGYz
N2IzMjE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKQEAgLTE2OSw2ICsxNjksMTEgQEAgdm9p
ZCBSZWFsdGltZVZpZGVvU291cmNlOjpzb3VyY2VTdG9wcGVkKCkKICNpZiBQTEFURk9STShDT0NP
QSkKIFJlZlB0cjxNZWRpYVNhbXBsZT4gUmVhbHRpbWVWaWRlb1NvdXJjZTo6YWRhcHRWaWRlb1Nh
bXBsZShNZWRpYVNhbXBsZSYgc2FtcGxlKQogeworICAgIGlmIChzYW1wbGUucGxhdGZvcm1TYW1w
bGUoKS50eXBlICE9IFBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGUpIHsKKyAgICAg
ICAgLy8gRklYTUU6IFN1cHBvcnQgcmVtb3RlIHZpZGVvIGZyYW1lcy4KKyAgICAgICAgcmV0dXJu
ICZzYW1wbGU7CisgICAgfQorCiAgICAgaWYgKCFtX2ltYWdlVHJhbnNmZXJTZXNzaW9uIHx8IG1f
aW1hZ2VUcmFuc2ZlclNlc3Npb24tPnBpeGVsRm9ybWF0KCkgIT0gc2FtcGxlLnZpZGVvUGl4ZWxG
b3JtYXQoKSkKICAgICAgICAgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiA9IEltYWdlVHJhbnNmZXJT
ZXNzaW9uVlQ6OmNyZWF0ZShzYW1wbGUudmlkZW9QaXhlbEZvcm1hdCgpLCBtX3Nob3VsZFVzZUlP
U3VyZmFjZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA0YTMxMmVlM2QzM2I2NzJhYmVjMzNkODczODA3
ZDVjZDY5MmE1NTZmLi43YmMzMmQwMDkzM2I3OTY5MjcyOTdiYjlmMTQxMmE3MzlkMTc1MTliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCkBAIC0yMDYsMjAgKzIwNiwyMSBAQCBwcml2YXRlOgogICAgICAgICBtX3By
b2Nlc3Muc2V0VENDSWRlbnRpdHkoKTsKICAgICB9CiAjZW5kaWYKLSNpZiBQTEFURk9STShDT0NP
QSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKwogICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRh
KFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSkgZmluYWwKICAgICB7CiAgICAgICAgIGlm
ICh0eXBlICE9IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBtX3Byb2Nlc3Muc3RhcnRDYXB0dXJpbmdBdWRpbygpOwogICAgIH0K
LSNlbmRpZgogCiAgICAgY29uc3QgUHJvY2Vzc0lkZW50aXR5JiByZXNvdXJjZU93bmVyKCkgY29u
c3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBtX3Byb2Nlc3Mud2ViUHJvY2Vzc0lkZW50
aXR5KCk7CiAgICAgfQogCisgICAgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAqIHJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwKCkgZmluYWwgeyByZXR1cm4gJm1fcHJvY2Vzcy52aWRlb0ZyYW1l
T2JqZWN0SGVhcCgpOyB9CisKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX3Byb2Nl
c3M7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcAppbmRleCBmNmY4OGZjMTY3N2NiOWYy
ZjQ3Mjg0NmU4M2YzZjI1NGUzYTk5MTVmLi4zY2M1MGU2NGJjODBhYTEyM2M5NzhmYTFhOWQ4ZDM0
ODJmNjRmNzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAKQEAgLTY4LDEwICs2OCwxNyBA
QCB2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjphZGRWaWRlb0ZyYW1lKFJlbW90ZVZp
ZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSYmCiAgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6OlByb3BlcnRpZXM+IHJlc3VsdDsKICAgICBpZiAoZnJhbWUpCiAgICAgICAgIHJl
c3VsdCA9IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cHJvcGVydGllcygqZnJhbWUpOwotICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpXYXNJbml0
aWFsaXplZChyZXN1bHQpLCAgd3JpdGUuaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpXYXNJbml0
aWFsaXplZChyZXN1bHQpLCAgd3JpdGUuaWRlbnRpZmllcigpLm9iamVjdCgpLnRvVUludDY0KCkp
OwogICAgIHJldGlyZShXVEZNb3ZlKHdyaXRlKSwgV1RGTW92ZShmcmFtZSksIHN0ZDo6bnVsbG9w
dCk7CiB9CiAKK1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIFJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwOjpjcmVhdGVWaWRlb0ZyYW1lKFJlZjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4mJiBmcmFt
ZSkKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcjo6
Z2VuZXJhdGVUaHJlYWRTYWZlKCk7CisgICAgYWRkKGlkZW50aWZpZXIsIFdURk1vdmUoZnJhbWUp
KTsKKyAgICByZXR1cm4gaWRlbnRpZmllcjsKK30KKwogdm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcDo6cmVsZWFzZVZpZGVvRnJhbWUoUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNl
JiYgd3JpdGUpCiB7CiAgICAgYXNzZXJ0SXNDdXJyZW50KG1fY29uc3VtZVRocmVhZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXAuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcC5oCmluZGV4IDUxNTljODA0NjZmNWYxM2Y5M2JjNDI1NzA5NWQ5MWI0ODBl
YTE2M2IuLmZhNzhmM2FjZTUxMjc3MTFmMDY3NWY5ZTVhZGE0YTUzYzFkMjA1NWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcC5oCkBAIC00NCw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYpOwogICAgIH5SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCgpOwogCisgICAgUmVtb3Rl
VmlkZW9GcmFtZUlkZW50aWZpZXIgY3JlYXRlVmlkZW9GcmFtZShSZWY8V2ViQ29yZTo6TWVkaWFT
YW1wbGU+JiYpOwogICAgIHZvaWQgYWRkVmlkZW9GcmFtZShSZW1vdGVWaWRlb0ZyYW1lV3JpdGVS
ZWZlcmVuY2UmJiwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiYmKTsKIAogICAgIHZvaWQg
c3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+JiYgcmVm
RnJvbUNvbm5lY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCmluZGV4
IGI2OTQyMTQ2ZTY5MGY4NjBiOTYzYjA2YzNlODI5YzU5MjgwODBkMjAuLjhhMDM0OWYyMzM5MzJj
MWRmNjc1ZTk2YzhkM2QyNTI2MTQzN2Y2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5jcHAKQEAgLTEzMCw2ICsxMzAsNyBAQCB2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjo6ZW5xdWV1ZVNhbXBsZShSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZQogICAg
ICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKwog
ICAgIGF1dG8mIGF2Zk1lZGlhU2FtcGxlID0gZG93bmNhc3Q8TWVkaWFTYW1wbGVBVkZPYmpDPigq
bWVkaWFTYW1wbGUpOwogICAgIE1lZGlhU2FtcGxlQVZGT2JqQzo6c2V0QXNEaXNwbGF5SW1tZWRp
YXRlbHkoYXZmTWVkaWFTYW1wbGUpOwogICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5l
bnF1ZXVlU2FtcGxlKGF2Zk1lZGlhU2FtcGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1RocmVhZFNhZmVPYmplY3RIZWFwLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UaHJl
YWRTYWZlT2JqZWN0SGVhcC5oCmluZGV4IDM5MjliN2U0NjZjMmMyYjRlOThmZDViNTM2ZThjOTg2
N2IzZmI4MGUuLjI1NTA2NGMwZDhiNDY5ODIzYzlmYzNlNzA2MzUxZTIwYWFhNmVjYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RocmVhZFNhZmVPYmplY3RIZWFwLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvVGhyZWFkU2FmZU9iamVjdEhlYXAuaApAQCAtNTIsNiArNTIs
OCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgV3JpdGVSZWZlcmVuY2UgPSB0eXBlbmFtZSBPYmplY3RJ
ZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcjxJZGVudGlmaWVyPjo6V3JpdGVSZWZlcmVuY2U7CiAg
ICAgdXNpbmcgUmVmZXJlbmNlID0gdHlwZW5hbWUgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRy
YWNrZXI8SWRlbnRpZmllcj46OlJlZmVyZW5jZTsKIAorICAgIHZvaWQgYWRkKElkZW50aWZpZXIs
IEhlbGRUeXBlJiYpOworCiAgICAgLy8gV2FpdHMgdW50aWwgYSB3cml0ZSBjcmVhdGVzIHRoZSBy
ZWZlcmVuY2UgYW5kIHRoZW4gcmV0aXJlcyB0aGUgcmVhZCBvcgogICAgIC8vIHRpbWVzIG91dC4K
ICAgICBIZWxkVHlwZSByZXRpcmUoUmVhZFJlZmVyZW5jZSYmLCBJUEM6OlRpbWVvdXQpOwpAQCAt
MTg3LDUgKzE4OSwxNCBAQCB2b2lkIFRocmVhZFNhZmVPYmplY3RIZWFwPElkZW50aWZpZXIsIEhl
bGRUeXBlPjo6Y2xlYXIoKQogICAgIG1fb2JqZWN0cy5jbGVhcigpOwogfQogCit0ZW1wbGF0ZTx0
eXBlbmFtZSBJZGVudGlmaWVyLCB0eXBlbmFtZSBIZWxkVHlwZT4KK3ZvaWQgVGhyZWFkU2FmZU9i
amVjdEhlYXA8SWRlbnRpZmllciwgSGVsZFR5cGU+OjphZGQoSWRlbnRpZmllciBpZGVudGlmaWVy
LCBIZWxkVHlwZSYmIG9iamVjdCkKK3sKKyAgICBSZWZlcmVuY2UgcmVmZXJlbmNlIHsgaWRlbnRp
ZmllciwgMCB9OworICAgIExvY2tlciBsb2NrZXIgeyBtX29iamVjdHNMb2NrIH07CisgICAgQVNT
RVJUKCFtX29iamVjdHMuY29udGFpbnMocmVmZXJlbmNlKSk7CisgICAgbV9vYmplY3RzLmFkZChy
ZWZlcmVuY2UsIFJlZmVyZW5jZVN0YXRlIHsgV1RGTW92ZShvYmplY3QpIH0pOworfQorCiB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggMmFmNzgyOTBmNTA3M2VhMWM5
NzYxOTcyMzhjZjU2MjRmNjlkOGExYS4uZTNhODM4ZmJhOWNiNjI0OWRmNjgxZGU2MzI1MDAyNjQ5
YjRmOTAzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAK
IAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVDYXB0dXJlU2FtcGxl
TWFuYWdlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAu
aCIKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogI2luY2x1ZGUgIlVzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlclByb3h5TWVzc2FnZXMuaCIKQEAgLTQwLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0NBUmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VSb3RhdGlvblNlc3Np
b25WVC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFDb25zdHJhaW50cy5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvTWVkaWFTYW1wbGVBVkZPYmpDLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGltZVZpZGVvU291
cmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVWaWRlb1NhbXBsZS5oPgpAQCAtNTcsMTEg
KzU5LDEyIEBAIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OlNvdXJjZVByb3h5
CiAgICAgLCBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXIg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNvdXJjZVByb3h5
KFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYm
IGNvbm5lY3Rpb24sIFByb2Nlc3NJZGVudGl0eSYmIHJlc291cmNlT3duZXIsIFJlZjxSZWFsdGlt
ZU1lZGlhU291cmNlPiYmIHNvdXJjZSkKKyAgICBTb3VyY2VQcm94eShSZWFsdGltZU1lZGlhU291
cmNlSWRlbnRpZmllciBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBQcm9j
ZXNzSWRlbnRpdHkmJiByZXNvdXJjZU93bmVyLCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiBz
b3VyY2UsIFJlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4mJiB2aWRlb0ZyYW1lT2Jq
ZWN0SGVhcCkKICAgICAgICAgOiBtX2lkKGlkKQogICAgICAgICAsIG1fY29ubmVjdGlvbihXVEZN
b3ZlKGNvbm5lY3Rpb24pKQogICAgICAgICAsIG1fcmVzb3VyY2VPd25lcihXVEZNb3ZlKHJlc291
cmNlT3duZXIpKQogICAgICAgICAsIG1fc291cmNlKFdURk1vdmUoc291cmNlKSkKKyAgICAgICAg
LCBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwKFdURk1vdmUodmlkZW9GcmFtZU9iamVjdEhlYXApKQog
ICAgIHsKICAgICAgICAgbV9zb3VyY2UtPmFkZE9ic2VydmVyKCp0aGlzKTsKICAgICAgICAgc3dp
dGNoIChtX3NvdXJjZS0+dHlwZSgpKSB7CkBAIC0xODUsMTcgKzE4OCwyOCBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgc2FtcGxlLCBWaWRl
b1NhbXBsZU1ldGFkYXRhIG1ldGFkYXRhKSBmaW5hbAogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiByZW1vdGVTYW1wbGU7CisgICAgICAgIFJlZlB0cjxN
ZWRpYVNhbXBsZT4gdmlkZW9TYW1wbGUgPSAmc2FtcGxlOwogICAgICAgICBpZiAobV9zaG91bGRB
cHBseVJvdGF0aW9uICYmIHNhbXBsZS52aWRlb1JvdGF0aW9uKCkgIT0gTWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb246Ok5vbmUpIHsKICAgICAgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSByb3Rh
dGVQaXhlbEJ1ZmZlcihzYW1wbGUpOwotICAgICAgICAgICAgcmVtb3RlU2FtcGxlID0gUmVtb3Rl
VmlkZW9TYW1wbGU6OmNyZWF0ZShwaXhlbEJ1ZmZlci5nZXQoKSwgc2FtcGxlLnByZXNlbnRhdGlv
blRpbWUoKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmVtb3RlU2FtcGxlID0gUmVt
b3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShzYW1wbGUpOwotICAgICAgICBpZiAocmVtb3RlU2FtcGxl
KSB7Ci0gICAgICAgICAgICBpZiAobV9yZXNvdXJjZU93bmVyKQotICAgICAgICAgICAgICAgIHJl
bW90ZVNhbXBsZS0+c2V0T3duZXJzaGlwSWRlbnRpdHkobV9yZXNvdXJjZU93bmVyKTsKLSAgICAg
ICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlQ2FwdHVyZVNhbXBsZU1h
bmFnZXI6OlZpZGVvU2FtcGxlQXZhaWxhYmxlKG1faWQsIFdURk1vdmUoKnJlbW90ZVNhbXBsZSks
IG1ldGFkYXRhKSwgMCk7CisgICAgICAgICAgICB2aWRlb1NhbXBsZSA9IE1lZGlhU2FtcGxlQVZG
T2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUoV1RGTW92ZShwaXhlbEJ1ZmZlciksIE1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uOjpOb25lLCBzYW1wbGUudmlkZW9NaXJyb3JlZCgpLCBzYW1wbGUucHJl
c2VudGF0aW9uVGltZSgpLCBzYW1wbGUuZGVjb2RlVGltZSgpKTsKKyAgICAgICAgICAgIGlmICgh
dmlkZW9TYW1wbGUpCisgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisKKyAgICAg
ICAgYXV0byByZW1vdGVTYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKCp2aWRlb1Nh
bXBsZSk7CisgICAgICAgIGlmICghcmVtb3RlU2FtcGxlKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIGlmIChtX3Jlc291cmNlT3duZXIpCisgICAgICAgICAgICByZW1vdGVTYW1wbGUt
PnNldE93bmVyc2hpcElkZW50aXR5KG1fcmVzb3VyY2VPd25lcik7CisKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj4gcmVtb3RlSWRlbnRpZmllcjsKKyAg
ICAgICAgaWYgKG1fdmlkZW9GcmFtZU9iamVjdEhlYXApIHsKKyAgICAgICAgICAgIHJlbW90ZUlk
ZW50aWZpZXIgPSBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwLT5jcmVhdGVWaWRlb0ZyYW1lKHNhbXBs
ZSk7CisgICAgICAgICAgICByZW1vdGVTYW1wbGUtPmNsZWFySU9TdXJmYWNlKCk7CisgICAgICAg
IH0KKworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyOjpWaWRlb1NhbXBsZUF2YWlsYWJsZShtX2lkLCBXVEZNb3ZlKCpyZW1vdGVT
YW1wbGUpLCByZW1vdGVJZGVudGlmaWVyLCBtZXRhZGF0YSksIDApOwogICAgIH0KIAogICAgIFJl
dGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiByb3RhdGVQaXhlbEJ1ZmZlcihNZWRpYVNhbXBsZSYg
c2FtcGxlKQpAQCAtMjYwLDYgKzI3NCw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fZnJhbWVD
aHVua1NpemUgeyAwIH07CiAgICAgTWVkaWFUaW1lIG1fc3RhcnRUaW1lOwogICAgIGJvb2wgbV9z
aG91bGRSZXNldCB7IGZhbHNlIH07CisgICAgUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwPiBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwOwogfTsKIAogVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJQcm94eTo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eShVbmlxdWVSZWY8Q29ubmVjdGlv
blByb3h5PiYmIGNvbm5lY3Rpb25Qcm94eSkKQEAgLTMyNCw3ICszMzksNyBAQCB2b2lkIFVzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmlj
ZVdpdGhDb25zdHJhaQogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKCFtX3Byb3hpZXMuY29u
dGFpbnMoaWQpKTsKLSAgICAgICAgYXV0byBwcm94eSA9IG1ha2VVbmlxdWU8U291cmNlUHJveHk+
KGlkLCBtX2Nvbm5lY3Rpb25Qcm94eS0+Y29ubmVjdGlvbigpLCBQcm9jZXNzSWRlbnRpdHkgeyBt
X2Nvbm5lY3Rpb25Qcm94eS0+cmVzb3VyY2VPd25lcigpIH0sIFdURk1vdmUoc291cmNlKSk7Cisg
ICAgICAgIGF1dG8gcHJveHkgPSBtYWtlVW5pcXVlPFNvdXJjZVByb3h5PihpZCwgbV9jb25uZWN0
aW9uUHJveHktPmNvbm5lY3Rpb24oKSwgUHJvY2Vzc0lkZW50aXR5IHsgbV9jb25uZWN0aW9uUHJv
eHktPnJlc291cmNlT3duZXIoKSB9LCBXVEZNb3ZlKHNvdXJjZSksIG1fY29ubmVjdGlvblByb3h5
LT5yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCgpKTsKICAgICAgICAgbV9wcm94aWVzLmFkZChp
ZCwgV1RGTW92ZShwcm94eSkpOwogICAgIH0gZWxzZQogICAgICAgICBpbnZhbGlkQ29uc3RyYWlu
dHMgPSBXVEZNb3ZlKHNvdXJjZU9yRXJyb3IuZXJyb3JNZXNzYWdlKTsKQEAgLTM5MCw3ICs0MDUs
NyBAQCB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OmNsb25lKFJlYWx0aW1lTWVk
aWFTb3VyY2VJZGVudGlmaWVyIGNsb25lZElELAogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm94aWVz
LmNvbnRhaW5zKGNsb25lZElEKSk7CiAgICAgTUVTU0FHRV9DSEVDSyghbV9wcm94aWVzLmNvbnRh
aW5zKG5ld1NvdXJjZUlEKSk7CiAgICAgaWYgKGF1dG8qIHByb3h5ID0gbV9wcm94aWVzLmdldChj
bG9uZWRJRCkpCi0gICAgICAgIG1fcHJveGllcy5hZGQobmV3U291cmNlSUQsIG1ha2VVbmlxdWU8
U291cmNlUHJveHk+KG5ld1NvdXJjZUlELCBtX2Nvbm5lY3Rpb25Qcm94eS0+Y29ubmVjdGlvbigp
LCBQcm9jZXNzSWRlbnRpdHkgeyBtX2Nvbm5lY3Rpb25Qcm94eS0+cmVzb3VyY2VPd25lcigpIH0s
IHByb3h5LT5zb3VyY2UoKS5jbG9uZSgpKSk7CisgICAgICAgIG1fcHJveGllcy5hZGQobmV3U291
cmNlSUQsIG1ha2VVbmlxdWU8U291cmNlUHJveHk+KG5ld1NvdXJjZUlELCBtX2Nvbm5lY3Rpb25Q
cm94eS0+Y29ubmVjdGlvbigpLCBQcm9jZXNzSWRlbnRpdHkgeyBtX2Nvbm5lY3Rpb25Qcm94eS0+
cmVzb3VyY2VPd25lcigpIH0sIHByb3h5LT5zb3VyY2UoKS5jbG9uZSgpLCBtX2Nvbm5lY3Rpb25Q
cm94eS0+cmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAoKSkpOwogfQogCiB2b2lkIFVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHk6OnJlcXVlc3RUb0VuZChSZWFsdGltZU1lZGlhU291cmNlSWRl
bnRpZmllciBzb3VyY2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaAppbmRleCBmYTgyOWM3YzQ5
MDNkNTFiNTdhNzg5NzE3ODQ3M2Y4MGNiZjI4NmRlLi5kMGU0NmJiOWI3NTVlYWU1NTc1Y2U4Yzll
NGJhOWZhZjUxMzUwOTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCkBAIC0yOSw2ICsyOSw3
IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCIKICNpbmNsdWRlICJV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2FwdHVyZURldmlj
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvT3JpZW50YXRpb25Ob3RpZmllci5oPgpAQCAtNjUsNiAr
NjYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRUQ0NJZGVudGl0eSgpIHsg
fQogI2VuZGlmCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSkgeyB9CisgICAgICAgIHZpcnR1YWwgUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXAqIHJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKCkgeyByZXR1
cm4gbnVsbHB0cjsgfQogICAgIH07CiAgICAgZXhwbGljaXQgVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJQcm94eShVbmlxdWVSZWY8Q29ubmVjdGlvblByb3h5PiYmKTsKICAgICB+VXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJQcm94eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oCmluZGV4IGY0
MjUwMjYxNWRhMjcyYjNiZjQ2Y2Y0NjQ5NjFiN2Y4ZWIyYTFmMWEuLmZiMDAxZGE3NDgyMzlmMzhk
ZDllZDAzMjVjNTliN2I4M2M5MjU4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgK
QEAgLTI4LDEyICsyOCwxMyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIk9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2Vy
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzUXVhbGlmaWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L09iamVjdElkZW50aWZpZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGVudW0gUmVtb3Rl
VmlkZW9GcmFtZUlkZW50aWZpZXJUeXBlIHsgfTsKLXVzaW5nIFJlbW90ZVZpZGVvRnJhbWVJZGVu
dGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllclR5cGU+
OwordXNpbmcgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgPSBXZWJDb3JlOjpQcm9jZXNzUXVh
bGlmaWVkPE9iamVjdElkZW50aWZpZXI8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXJUeXBlPj47
CiB1c2luZyBSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJS
ZWFkUmVmZXJlbmNlPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPjsKIHVzaW5nIFJlbW90ZVZp
ZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTxS
ZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj47CiB1c2luZyBSZW1vdGVWaWRlb0ZyYW1lUmVmZXJl
bmNlID0gT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmll
cj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZVZpZGVvRnJhbWVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKaW5kZXggNGEwMjZmMWE0ZDY0NWZlY2MyYTYxZDQw
NDBhYWE3YjQxZDUwNTE4MS4uYjI5OWUyZTYwOGIyMjdkMDNjMGZjMmVjNDZlNTQ3ZGRmYzA0ZDU1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVW
aWRlb0ZyYW1lUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcApAQCAtMzMsOSArMzMsMTYgQEAKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLVJlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+IFJlbW90ZVZpZGVv
RnJhbWVQcm94eTo6Y3JlYXRlKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVj
dGlvbikKK1JlZjxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6
Y3JlYXRlKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbikKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZVZpZGVvRnJhbWVQcm94eShncHVQcm9jZXNzQ29u
bmVjdGlvbiwgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVWaWRlb0ZyYW1lUHJveHkoZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24sIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKSk7Cit9CisKK1Jl
ZjxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6Y3JlYXRlQWxy
ZWFkeUluaXRpYWxpemVkKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklELCBS
ZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0aWVzIHByb3BlcnRp
ZXMpCit7CisgICAgYXV0byBmcmFtZSA9IGFkb3B0UmVmKCpuZXcgUmVtb3RlVmlkZW9GcmFtZVBy
b3h5KGNvbm5lY3Rpb25JRCwgaWRlbnRpZmllcikpOworICAgIGZyYW1lLT53YXNJbml0aWFsaXpl
ZChwcm9wZXJ0aWVzKTsKKyAgICByZXR1cm4gZnJhbWU7CiB9CiAKIFJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6UHJvcGVydGllcyBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnByb3BlcnRpZXMoY29uc3Qg
V2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKQpAQCAtNDMsMTYgKzUwLDI2IEBAIFJl
bW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnBy
b3BlcnRpZXMoY29uc3QgV2ViQ29yCiAgICAgcmV0dXJuIHsKICAgICAgICAgbWVkaWFTYW1wbGUu
cHJlc2VudGF0aW9uVGltZSgpLAogICAgICAgICBtZWRpYVNhbXBsZS52aWRlb01pcnJvcmVkKCks
Ci0gICAgICAgIG1lZGlhU2FtcGxlLnZpZGVvUm90YXRpb24oKQorICAgICAgICBtZWRpYVNhbXBs
ZS52aWRlb1JvdGF0aW9uKCksCisgICAgICAgIG1lZGlhU2FtcGxlLnByZXNlbnRhdGlvblNpemUo
KSwKKyAgICAgICAgbWVkaWFTYW1wbGUudmlkZW9QaXhlbEZvcm1hdCgpCiAgICAgfTsKIH0KIAog
UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHkoR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmll
ciBpZGVudGlmaWVyKQogICAgIDogbV9ncHVQcm9jZXNzQ29ubmVjdGlvbigmZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24pCisgICAgLCBtX2Nvbm5lY3Rpb25JRChncHVQcm9jZXNzQ29ubmVjdGlvbi5jb25u
ZWN0aW9uKCkudW5pcXVlSUQoKSkKICAgICAsIG1fcmVmZXJlbmNlVHJhY2tlcihpZGVudGlmaWVy
KQogewogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmFkZENsaWVudCgqdGhpcyk7Ci0gICAg
bV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+bWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgaWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgaWYgKGlkZW50aWZpZXIu
cHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBQcm9jZXNzOjppZGVudGlmaWVyKCkpCisgICAgICAgIG1f
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIGlkZW50aWZpZXIub2JqZWN0KCkudG9VSW50NjQoKSwgKnRoaXMpOworfQorCitSZW1vdGVW
aWRlb0ZyYW1lUHJveHk6OlJlbW90ZVZpZGVvRnJhbWVQcm94eShJUEM6OkNvbm5lY3Rpb246OlVu
aXF1ZUlEIGNvbm5lY3Rpb25JRCwgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmll
cikKKyAgICA6IG1fY29ubmVjdGlvbklEKGNvbm5lY3Rpb25JRCkKKyAgICAsIG1fcmVmZXJlbmNl
VHJhY2tlcihpZGVudGlmaWVyKQorewogfQogCiBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlJlbW90
ZVZpZGVvRnJhbWVQcm94eSgpCkBAIC0xMDYsOSArMTIzLDggQEAgYm9vbCBSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6OnZpZGVvTWlycm9yZWQoKSBjb25zdAogCiB1aW50MzJfdCBSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6OnZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBSZW1v
dmUgZnJvbSB0aGUgYmFzZSBjbGFzcy4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gMDsKKyAgICAodm9pZCkgd2FpdEZvcldhc0luaXRpYWxpemVkKCk7CisgICAgcmV0dXJu
IG1fcGl4ZWxGb3JtYXQ7CiB9CiAKIGJvb2wgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpoYW5kbGVN
ZXNzYWdlVG9SZW1vdmVkRGVzdGluYXRpb24oSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKQpAQCAtMTI4LDE4ICsxNDQsMjIgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpN
ZWRpYVNhbXBsZVZpZGVvRnJhbWU+IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9GcmFtZSgK
IHZvaWQgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpkaXNjb25uZWN0R1BVUHJvY2Vzc0lmTmVlZGVk
KCkgY29uc3QKIHsKICAgICBpZiAoYXV0byBncHVQcm9jZXNzQ29ubmVjdGlvbiA9IHN0ZDo6ZXhj
aGFuZ2UobV9ncHVQcm9jZXNzQ29ubmVjdGlvbiwgbnVsbHB0cikpIHsKKyAgICAgICAgQVNTRVJU
KGlkZW50aWZpZXIoKS5wcm9jZXNzSWRlbnRpZmllcigpID09IFByb2Nlc3M6OmlkZW50aWZpZXIo
KSk7CiAgICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5yZW1vdmVDbGllbnQoKnRoaXMpOwot
ICAgICAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwotICAgICAgICBncHVQcm9j
ZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwOjpSZWxlYXNlVmlkZW9GcmFtZSh3cml0ZSgpKSwgMCwgSVBDOjpTZW5kT3B0
aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgICAg
ICBncHVQcm9jZXNzQ29ubmVjdGlvbi0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgaWRlbnRpZmllcigpLm9iamVjdCgpLnRvVUludDY0KCkpOwogICAgIH0KKyAgICBp
ZiAobV9jb25uZWN0aW9uSUQpCisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZCgqbV9jb25u
ZWN0aW9uSUQsIE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6UmVsZWFzZVZp
ZGVvRnJhbWUod3JpdGUoKSksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZl
bldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKIH0KIAogYm9vbCBSZW1vdGVWaWRlb0ZyYW1lUHJv
eHk6OndhaXRGb3JXYXNJbml0aWFsaXplZCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fd2FzSW5pdGlh
bGl6ZWQpCiAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgQVNTRVJUKGlkZW50aWZpZXIoKS5w
cm9jZXNzSWRlbnRpZmllcigpID09IFByb2Nlc3M6OmlkZW50aWZpZXIoKSk7CiAgICAgaWYgKG1f
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24pIHsKLSAgICAgICAgaWYgKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24tPmNvbm5lY3Rpb24oKS53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6
UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpXYXNJbml0aWFsaXplZD4oaWRlbnRpZmllcigpLnRvVUlu
dDY0KCksIGRlZmF1bHRTZW5kVGltZW91dCkpCisgICAgICAgIGlmIChtX2dwdVByb2Nlc3NDb25u
ZWN0aW9uLT5jb25uZWN0aW9uKCkud2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2Fn
ZXM6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6V2FzSW5pdGlhbGl6ZWQ+KGlkZW50aWZpZXIoKS5v
YmplY3QoKS50b1VJbnQ2NCgpLCBkZWZhdWx0U2VuZFRpbWVvdXQpKQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIGRpc2Nvbm5lY3RHUFVQcm9jZXNzSWZOZWVkZWQoKTsKICAgICB9
CkBAIC0xNTAsNyArMTcwLDggQEAgdm9pZCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmdwdVByb2Nl
c3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKQogewogICAgIGF1dG8g
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24sIG51bGxwdHIpOwogICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5yZW1vdmVDbGllbnQoKnRo
aXMpOwotICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgQVNTRVJUKGlk
ZW50aWZpZXIoKS5wcm9jZXNzSWRlbnRpZmllcigpID09IFByb2Nlc3M6OmlkZW50aWZpZXIoKSk7
CisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKS5vYmplY3QoKS50b1VJbnQ2NCgpKTsKIH0KIAogdm9p
ZCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Ondhc0luaXRpYWxpemVkKHN0ZDo6b3B0aW9uYWw8UHJv
cGVydGllcz4mJiBwcm9wZXJ0aWVzKQpAQCAtMTYzLDYgKzE4NCw4IEBAIHZvaWQgUmVtb3RlVmlk
ZW9GcmFtZVByb3h5Ojp3YXNJbml0aWFsaXplZChzdGQ6Om9wdGlvbmFsPFByb3BlcnRpZXM+JiYg
cHJvcGVydGllCiAgICAgbV9wcmVzZW50YXRpb25UaW1lID0gcHJvcGVydGllcy0+cHJlc2VudGF0
aW9uVGltZTsKICAgICBtX3ZpZGVvSXNNaXJyb3JlZCA9IHByb3BlcnRpZXMtPnZpZGVvSXNNaXJy
b3JlZDsKICAgICBtX3ZpZGVvUm90YXRpb24gPSBwcm9wZXJ0aWVzLT52aWRlb1JvdGF0aW9uOwor
ICAgIG1fc2l6ZSA9IHByb3BlcnRpZXMtPnNpemU7CisgICAgbV9waXhlbEZvcm1hdCA9IHByb3Bl
cnRpZXMtPnBpeGVsRm9ybWF0OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaAppbmRleCBkOTVl
YWFmNTVkYzgzOTIxNWYwNWNiNjZhZGE0MjMxZDY0MzBiNmJjLi5kNDI0MTMzMDRjMThmZDhjOWVi
M2QwNjlhNTBlMjJjZDZjOTRiZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgKQEAgLTQ2LDE3ICs0
NiwyMSBAQCBjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lUHJveHkgZmluYWwgOiBwdWJsaWMgV2ViQ29y
ZTo6VmlkZW9GcmFtZSwgcHJpdmF0ZSBJUEM6Ok1lcwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFJlbW90ZVZpZGVvRnJhbWVQcm94eSk7CiBwdWJsaWM6CiAgICAgLy8gQ3JlYXRlcyBhIHByb21p
c2Ugb2YgYSBNZWRpYVNhbXBsZSB0aGF0IGV4aXN0cyBpbiBHUFUgcHJvY2Vzcy4gVGhlIG9iamVj
dCBjYW4gYmUgdXNlZCBhcyBvdXQgcGFyYW1ldGVyIG9mIHRoZSBjcmVhdGlvbiBtZXNzYWdlLgot
ICAgIHN0YXRpYyBSZWZQdHI8UmVtb3RlVmlkZW9GcmFtZVByb3h5PiBjcmVhdGUoR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24mKTsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4gY3Jl
YXRlKEdQVVByb2Nlc3NDb25uZWN0aW9uJik7CiAKICAgICBzdHJ1Y3QgUHJvcGVydGllcyB7CiAg
ICAgICAgIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lOwogICAgICAgICBib29sIHZpZGVvSXNN
aXJyb3JlZCB7IGZhbHNlIH07CiAgICAgICAgIFZpZGVvUm90YXRpb24gdmlkZW9Sb3RhdGlvbiB7
IFZpZGVvUm90YXRpb246Ok5vbmUgfTsKKyAgICAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNpemU7
CisgICAgICAgIHVpbnQzMl90IHBpeGVsRm9ybWF0OwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJvcGVydGllcz4gZGVj
b2RlKERlY29kZXImKTsKICAgICB9OwogCisgICAgc3RhdGljIFJlZjxSZW1vdGVWaWRlb0ZyYW1l
UHJveHk+IGNyZWF0ZUFscmVhZHlJbml0aWFsaXplZChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlE
LCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciwgUHJvcGVydGllcyk7CisKICAgICBzdGF0aWMg
UHJvcGVydGllcyBwcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJik7CiAKICAg
ICB+UmVtb3RlVmlkZW9GcmFtZVByb3h5KCkgZmluYWw7CkBAIC02NSwxOCArNjksMTAgQEAgcHVi
bGljOgogICAgIFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSB3cml0ZSgpIGNvbnN0Owog
ICAgIFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlIHJlYWQoKSBjb25zdDsKIAotICAgIC8v
IFdlYkNvcmU6OlZpZGVvRnJhbWUgb3ZlcnJpZGVzLgotICAgIE1lZGlhVGltZSBwcmVzZW50YXRp
b25UaW1lKCkgY29uc3QgZmluYWw7Ci0gICAgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uKCkg
Y29uc3QgZmluYWw7Ci0gICAgYm9vbCB2aWRlb01pcnJvcmVkKCkgY29uc3QgZmluYWw7Ci0gICAg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYVNhbXBsZVZpZGVvRnJhbWU+IHZpZGVvRnJhbWUo
KSBjb25zdCBmaW5hbDsKLSAgICAvLyBGSVhNRTogV2hlbiBWaWRlb0ZyYW1lIGlzIG5vdCBNZWRp
YVNhbXBsZSwgdGhlc2Ugd2lsbCBub3QgYmUgbmVlZGVkLgotICAgIFdlYkNvcmU6OlBsYXRmb3Jt
U2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3QgZmluYWw7Ci0gICAgdWludDMyX3QgdmlkZW9Q
aXhlbEZvcm1hdCgpIGNvbnN0IGZpbmFsOwotCiAgICAgc3RhdGljIGJvb2wgaGFuZGxlTWVzc2Fn
ZVRvUmVtb3ZlZERlc3RpbmF0aW9uKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwog
cHJpdmF0ZToKICAgICBSZW1vdGVWaWRlb0ZyYW1lUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24m
LCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcik7CisgICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5
KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyKTsK
ICAgICBSZW1vdGVWaWRlb0ZyYW1lUHJveHkoKTsKICAgICB2b2lkIGRpc2Nvbm5lY3RHUFVQcm9j
ZXNzSWZOZWVkZWQoKSBjb25zdDsKICAgICBib29sIHdhaXRGb3JXYXNJbml0aWFsaXplZCgpIGNv
bnN0IFdBUk5fVU5VU0VEX1JFVFVSTjsKQEAgLTg3LDIzICs4MywzOCBAQCBwcml2YXRlOgogICAg
IC8vIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQgb3ZlcnJpZGVzLgogICAgIHZvaWQgZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpIGZpbmFsOwog
CisgICAgLy8gV2ViQ29yZTo6VmlkZW9GcmFtZSBvdmVycmlkZXMuCisgICAgTWVkaWFUaW1lIHBy
ZXNlbnRhdGlvblRpbWUoKSBjb25zdCBmaW5hbDsKKyAgICBWaWRlb1JvdGF0aW9uIHZpZGVvUm90
YXRpb24oKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHZpZGVvTWlycm9yZWQoKSBjb25zdCBmaW5h
bDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhU2FtcGxlVmlkZW9GcmFtZT4gdmlk
ZW9GcmFtZSgpIGNvbnN0IGZpbmFsOworICAgIC8vIEZJWE1FOiBXaGVuIFZpZGVvRnJhbWUgaXMg
bm90IE1lZGlhU2FtcGxlLCB0aGVzZSB3aWxsIG5vdCBiZSBuZWVkZWQuCisgICAgV2ViQ29yZTo6
UGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBmaW5hbDsKKyAgICB1aW50MzJf
dCB2aWRlb1BpeGVsRm9ybWF0KCkgY29uc3QgZmluYWw7CisgICAgV2ViQ29yZTo6RmxvYXRTaXpl
IHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NpemU7IH0KKwogICAg
IC8vIE1lc3NhZ2VzLgogICAgIHZvaWQgd2FzSW5pdGlhbGl6ZWQoc3RkOjpvcHRpb25hbDxQcm9w
ZXJ0aWVzPiYmKTsKICAgICBzdGF0aWMgaW5saW5lIFNlY29uZHMgZGVmYXVsdFNlbmRUaW1lb3V0
ID0gMzBfczsKIAogICAgIG11dGFibGUgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24qIG1fZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24geyBudWxscHRyIH07CisgICAgc3RkOjpvcHRpb25hbDxJUEM6OkNvbm5lY3Rp
b246OlVuaXF1ZUlEPiBtX2Nvbm5lY3Rpb25JRDsKICAgICBSZW1vdGVWaWRlb0ZyYW1lUmVmZXJl
bmNlVHJhY2tlciBtX3JlZmVyZW5jZVRyYWNrZXI7CiAgICAgbXV0YWJsZSBib29sIG1fd2FzSW5p
dGlhbGl6ZWQgeyBmYWxzZSB9OwogICAgIE1lZGlhVGltZSBtX3ByZXNlbnRhdGlvblRpbWU7CiAg
ICAgYm9vbCBtX3ZpZGVvSXNNaXJyb3JlZCB7IGZhbHNlIH07CiAgICAgVmlkZW9Sb3RhdGlvbiBt
X3ZpZGVvUm90YXRpb24geyBWaWRlb1JvdGF0aW9uOjpOb25lIH07CisgICAgV2ViQ29yZTo6Rmxv
YXRTaXplIG1fc2l6ZTsKKyAgICB1aW50MzJfdCBtX3BpeGVsRm9ybWF0IHsgMCB9OwogfTsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlBy
b3BlcnRpZXM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIg
PDwgcHJlc2VudGF0aW9uVGltZQogICAgICAgICA8PCB2aWRlb0lzTWlycm9yZWQKLSAgICAgICAg
PDwgdmlkZW9Sb3RhdGlvbjsKKyAgICAgICAgPDwgdmlkZW9Sb3RhdGlvbgorICAgICAgICA8PCBz
aXplCisgICAgICAgIDw8IHBpeGVsRm9ybWF0OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNv
ZGVyPiBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcz4gUmVt
b3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
QEAgLTExMSwxMiArMTIyLDE2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0ZDo6b3B0
aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzPiBSZW1vCiAgICAgc3RkOjpv
cHRpb25hbDxNZWRpYVRpbWU+IHByZXNlbnRhdGlvblRpbWU7CiAgICAgc3RkOjpvcHRpb25hbDxi
b29sPiB2aWRlb0lzTWlycm9yZWQ7CiAgICAgc3RkOjpvcHRpb25hbDxWaWRlb1JvdGF0aW9uPiB2
aWRlb1JvdGF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXplPiBzaXpl
OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHBpeGVsRm9ybWF0OwogICAgIGRlY29kZXIg
Pj4gcHJlc2VudGF0aW9uVGltZQogICAgICAgICA+PiB2aWRlb0lzTWlycm9yZWQKLSAgICAgICAg
Pj4gdmlkZW9Sb3RhdGlvbjsKKyAgICAgICAgPj4gdmlkZW9Sb3RhdGlvbgorICAgICAgICA+PiBz
aXplCisgICAgICAgID4+IHBpeGVsRm9ybWF0OwogICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIFByb3BlcnRpZXMgeyBX
VEZNb3ZlKCpwcmVzZW50YXRpb25UaW1lKSwgKnZpZGVvSXNNaXJyb3JlZCwgKnZpZGVvUm90YXRp
b24gfTsKKyAgICByZXR1cm4gUHJvcGVydGllcyB7IFdURk1vdmUoKnByZXNlbnRhdGlvblRpbWUp
LCAqdmlkZW9Jc01pcnJvcmVkLCAqdmlkZW9Sb3RhdGlvbiwgKnNpemUsICpwaXhlbEZvcm1hdCB9
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAppbmRleCAxYzlhYmIxNTAw
YzBhOWE0MGYwYTFkOWYwYTJlNzNkNDM0MTBiNWIzLi5jMjk3ODM5Mzk2NTZmYTBiMDAxZmMwMDE4
MDdkZDk0MTkzZDNiOWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKQEAgLTE0
NSw2ICsxNDUsNyBAQCB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBs
ZShNZWRpYVNhbXBsZSYgc2FtcGxlKQogICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbikK
ICAgICAgICAgcmV0dXJuOwogICAgIGlmIChpczxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+KHNhbXBs
ZSkpIHsKKwogICAgICAgICBhdXRvJiByZW1vdGVTYW1wbGUgPSBkb3duY2FzdDxSZW1vdGVWaWRl
b0ZyYW1lUHJveHk+KHNhbXBsZSk7CiAgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpFbnF1ZXVlU2FtcGxlIHsgcmVtb3Rl
U2FtcGxlLnJlYWQoKSB9LCBtX2lkZW50aWZpZXIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyLmNwcAppbmRleCBiMWVmOGY1NjQ1MmYxZmM2OTFmZWRlNGM0ODQ5YzNiNWIw
NmM2NjkzLi5jNzNmMWNiYjhmNDUyNWQ2NzFlYzRlNjlkM2NhYWY3NzVlYTZmYjViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0
dXJlU2FtcGxlTWFuYWdlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKICNpbmNsdWRlICJSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiU2hhcmVkUmluZ0J1
ZmZlclN0b3JhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmg+CkBAIC0xNTAsMTUgKzE1MSwyNCBAQCB2b2lkIFJl
bW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjphdWRpb1N0b3JhZ2VDaGFuZ2VkKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyYwogICAgIGl0ZXJhdG9yLT52YWx1ZS0+c2V0U3RvcmFnZShpcGNIYW5k
bGUuaGFuZGxlLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMsIFdURk1vdmUoc2VtYXBob3Jl
KSwgbWVkaWFUaW1lLCBmcmFtZUNodW5rU2l6ZSk7CiB9CiAKLXZvaWQgUmVtb3RlQ2FwdHVyZVNh
bXBsZU1hbmFnZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFJlbW90ZVZpZGVvU2FtcGxlJiYgc2FtcGxlLCBWaWRlb1NhbXBs
ZU1ldGFkYXRhIG1ldGFkYXRhKQordm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6dmlk
ZW9TYW1wbGVBdmFpbGFibGUoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgUmVtb3RlVmlkZW9TYW1wbGUmJiBzYW1wbGUsIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9G
cmFtZUlkZW50aWZpZXI+IHJlbW90ZUlkZW50aWZpZXIsIFZpZGVvU2FtcGxlTWV0YWRhdGEgbWV0
YWRhdGEpCiB7CiAgICAgQVNTRVJUKCFXVEY6OmlzTWFpblJ1bkxvb3AoKSk7CiAKKyAgICBSZWZQ
dHI8TWVkaWFTYW1wbGU+IHZpZGVvRnJhbWU7CisgICAgLy8gV2UgYWx3YXlzIGNyZWF0ZSBSZW1v
dGVWaWRlb0ZyYW1lUHJveHkgc28gdGhhdCB3ZSBjYW4gcmVsZWFzZSB0aGUgY29ycmVzcG9uZGlu
ZyBHUFVQcm9jZXNzIElPU3VyZmFjZSByaWdodCBhd2F5IGlmIHRoZXJlIGlzIG5vIHZpZGVvIHNv
dXJjZS4KKyAgICBpZiAocmVtb3RlSWRlbnRpZmllcikKKyAgICAgICAgdmlkZW9GcmFtZSA9IFJl
bW90ZVZpZGVvRnJhbWVQcm94eTo6Y3JlYXRlQWxyZWFkeUluaXRpYWxpemVkKG1fY29ubmVjdGlv
bi0+dW5pcXVlSUQoKSwgKnJlbW90ZUlkZW50aWZpZXIsIHsgc2FtcGxlLnRpbWUoKSwgc2FtcGxl
Lm1pcnJvcmVkKCksIHNhbXBsZS5yb3RhdGlvbigpLCB7IHN0YXRpY19jYXN0PGZsb2F0PihzYW1w
bGUuc2l6ZSgpLndpZHRoKCkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oc2FtcGxlLnNpemUoKS5oZWln
aHQoKSkgfSwgc2FtcGxlLnZpZGVvRm9ybWF0KCkgfSk7CisKICAgICBhdXRvIGl0ZXJhdG9yID0g
bV92aWRlb1NvdXJjZXMuZmluZChpZGVudGlmaWVyKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV92
aWRlb1NvdXJjZXMuZW5kKCkpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAi
VW5hYmxlIHRvIGZpbmQgc291cmNlICVsbHUgZm9yIHJlbW90ZVZpZGVvU2FtcGxlQXZhaWxhYmxl
IiwgaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBp
ZiAodmlkZW9GcmFtZSkgeworICAgICAgICBpdGVyYXRvci0+dmFsdWUtPnZpZGVvRnJhbWVBdmFp
bGFibGUodmlkZW9GcmFtZS5yZWxlYXNlTm9uTnVsbCgpLCBzYW1wbGUuc2l6ZSgpLCBtZXRhZGF0
YSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgaXRlcmF0b3ItPnZhbHVlLT52aWRlb1Nh
bXBsZUF2YWlsYWJsZShXVEZNb3ZlKHNhbXBsZSksIG1ldGFkYXRhKTsKIH0KIApAQCAtMjQ3LDEw
ICsyNTcsMTUgQEAgdm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6UmVtb3RlVmlkZW86
OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFJlbW90ZVZpZGVvU2EKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgdmlkZW9GcmFtZUF2YWlsYWJs
ZShzYW1wbGVSZWYucmVsZWFzZU5vbk51bGwoKSwgcmVtb3RlU2FtcGxlLnNpemUoKSwgbWV0YWRh
dGEpOworfQorCit2b2lkIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjpSZW1vdGVWaWRlbzo6
dmlkZW9GcmFtZUF2YWlsYWJsZShSZWY8TWVkaWFTYW1wbGU+JiYgc2FtcGxlLCBJbnRTaXplIHNp
emUsIFZpZGVvU2FtcGxlTWV0YWRhdGEgbWV0YWRhdGEpCit7CiAgICAgc3dpdGNoT24obV9zb3Vy
Y2UsIFsmXShSZWY8UmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZT4mIHNvdXJjZSkgewotICAgICAg
ICBzb3VyY2UtPnZpZGVvU2FtcGxlQXZhaWxhYmxlKCpzYW1wbGVSZWYsIHJlbW90ZVNhbXBsZS5z
aXplKCksIG1ldGFkYXRhKTsKKyAgICAgICAgc291cmNlLT52aWRlb1NhbXBsZUF2YWlsYWJsZShz
YW1wbGUuZ2V0KCksIHNpemUsIG1ldGFkYXRhKTsKICAgICB9LCBbJl0oUmVmPFJlbW90ZVJlYWx0
aW1lRGlzcGxheVNvdXJjZT4mIHNvdXJjZSkgewotICAgICAgICBzb3VyY2UtPnJlbW90ZVZpZGVv
U2FtcGxlQXZhaWxhYmxlKCpzYW1wbGVSZWYsIG1ldGFkYXRhKTsKKyAgICAgICAgc291cmNlLT5y
ZW1vdGVWaWRlb1NhbXBsZUF2YWlsYWJsZShzYW1wbGUuZ2V0KCksIG1ldGFkYXRhKTsKICAgICB9
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90
ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuaAppbmRleCA4NmY0OTBiNzgwZmU0OWNhMTFhMTA0
YWY3YjY5YmQzM2U2OGMxNzI2Li43Y2YyMGQ3YzUwOTRmZGJhMzc2NzkyNzAzNmFhODY0MjljOWYw
ZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2Fw
dHVyZVNhbXBsZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg
IlJlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UuaCIKICNpbmNsdWRlICJSZW1vdGVSZWFsdGltZURp
c3BsYXlTb3VyY2UuaCIKICNpbmNsdWRlICJSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlLmgiCisj
aW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFyZWRN
ZW1vcnkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CkBAIC03MCw3ICs3MSw3IEBAIHByaXZh
dGU6CiAgICAgLy8gTWVzc2FnZXMKICAgICB2b2lkIGF1ZGlvU3RvcmFnZUNoYW5nZWQoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlJiwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgdWludDY0
X3QgbnVtYmVyT2ZGcmFtZXMsIElQQzo6U2VtYXBob3JlJiYsIGNvbnN0IE1lZGlhVGltZSYsIHNp
emVfdCBmcmFtZVNhbXBsZVNpemUpOwogICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBNZWRpYVRpbWUsIHVpbnQ2NF90
IG51bWJlck9mRnJhbWVzKTsKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBs
ZSYmLCBXZWJDb3JlOjpWaWRlb1NhbXBsZU1ldGFkYXRhKTsKKyAgICB2b2lkIHZpZGVvU2FtcGxl
QXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZW1vdGVWaWRlb1NhbXBsZSYmLCBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVJZGVu
dGlmaWVyPiwgV2ViQ29yZTo6VmlkZW9TYW1wbGVNZXRhZGF0YSk7CiAKICAgICB2b2lkIHNldENv
bm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKik7CiAKQEAgLTEwNiw2ICsxMDcsNyBAQCBwcml2YXRl
OgogICAgICAgICBleHBsaWNpdCBSZW1vdGVWaWRlbyhTb3VyY2UmJik7CiAKICAgICAgICAgdm9p
ZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmLCBXZWJD
b3JlOjpWaWRlb1NhbXBsZU1ldGFkYXRhKTsKKyAgICAgICAgdm9pZCB2aWRlb0ZyYW1lQXZhaWxh
YmxlKFJlZjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4mJiwgV2ViQ29yZTo6SW50U2l6ZSwgV2ViQ29y
ZTo6VmlkZW9TYW1wbGVNZXRhZGF0YSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBTb3VyY2Ug
bV9zb3VyY2U7CkBAIC0xMTUsNyArMTE3LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNSZWdp
c3RlcmVkVG9QYXJlbnRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07CiAgICAgUmVmPFdvcmtR
dWV1ZT4gbV9xdWV1ZTsKICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247
Ci0KICAgICAvLyBiYWNrZ3JvdW5kIHRocmVhZCBtZW1iZXIKICAgICBIYXNoTWFwPFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQXVk
aW8+PiBtX2F1ZGlvU291cmNlczsKICAgICBIYXNoTWFwPFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFT
b3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW8+PiBtX3ZpZGVvU291
cmNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVD
YXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCA4NjUx
YjNjZDc5OWExZjc1NGYyZTgwM2M0Njg4OTBlOGY1YWFmYTY2Li45NjcyMjE4NDFlMGNmMjRhOTVl
ZDVlYzJjYWQyMDFjMDY0ODRmNjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1l
c3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBACiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewogICAgIEF1ZGlvU3RvcmFnZUNoYW5nZWQoV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIFdlYktpdDo6U2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgSVBDOjpTZW1hcGhv
cmUgY2FwdHVyZVNlbWFwaG9yZSwgTWVkaWFUaW1lIG1lZGlhVGltZSwgc2l6ZV90IGZyYW1lQ2h1
bmtTaXplKTsKLSAgICBWaWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlSWRlbnRpZmllciBpZCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxlLCBz
dHJ1Y3QgV2ViQ29yZTo6VmlkZW9TYW1wbGVNZXRhZGF0YSBtZXRhZGF0YSkKKyAgICBWaWRlb1Nh
bXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwg
V2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxlLCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6
UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+IHJlbW90ZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJD
b3JlOjpWaWRlb1NhbXBsZU1ldGFkYXRhIG1ldGFkYXRhKQogfQogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451520</attachid>
            <date>2022-02-10 05:44:43 -0800</date>
            <delta_ts>2022-02-10 15:16:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236356-20220210144442.patch</filename>
            <type>text/plain</type>
            <size>98159</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Mzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCA0ZDVmM2EzMGYyYjViZDE4ZTFhZDU4MGZhMjcxNTAyOTNlMjkxOTY0Li4xYTQ4
ZGU3NzRkOTEyZDk5MjdjY2I4MTYzYmFmMDkzMGZlYTFhZGRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMi0wMi0xMCAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCByZW1vdGUgdmlkZW8g
ZnJhbWVzIGluIFdlYlJUQyB2aWRlbyBwaXBlbGluZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHBhc3NpbmcgTWVkaWFTYW1w
bGUgYXMgc29tZSBraW5kIG9mIFZpZGVvRnJhbWVCdWZmZXIuCisgICAgICAgIElmIGxpYndlYnJ0
YyBuZWVkcyB0aGUgYWN0dWFsIGRhdGEsIGl0IHdpbGwgY2FsbCBhIGZ1bmN0aW9uIHRoYXQgd2ls
bCBjYWxsIFdlYktpdCB0byBnZXQgdGhlIGJ1ZmZlcnMgc3luY2hyb25vdXNseS4KKyAgICAgICAg
VGhpcyBpcyB1c2VkIGZvciBpbnN0YW5jZSB0byBwcm92aWRlIHRoZSBkYXRhIHRvIFNXIGVuY29k
ZXJzLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHA6CisgICAg
ICAgICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHA6CisgICAgICAgICogQ29u
ZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHA6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9z
ZGsvV2ViS2l0L1dlYktpdERlY29kZXIuaDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9X
ZWJLaXQvV2ViS2l0RGVjb2Rlci5tbToKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJL
aXQvV2ViS2l0VXRpbGl0aWVzLmg6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L1dlYktpdFV0aWxpdGllcy5tbToKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9vYmpjL25h
dGl2ZS9zcmMvb2JqY19mcmFtZV9idWZmZXIuaDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL25hdGl2ZS9zcmMvb2JqY19mcmFtZV9idWZmZXIubW06CisKIDIwMjItMDItMDggIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IHRvIHBhc3Mg
d2VicnRjIHZpZGVvIGZyYW1lIGJ1ZmZlcnMgdGhyb3VnaCBSZWFsdGltZU1lZGlhU291cmNlIGJh
c2VkIHBpcGVsaW5lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI4YjAxMjEwZTE5ZmIwNmEzZmFiMTMwMDM2YmU1
YTYyYThhMjBlODkuLmU4MGViNTkyYzJkMTNmOTAwZWY5ZGE5YzBmMTk5ODI1MDhjMjlmMGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMi0wMi0xMCAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCByZW1vdGUgdmlkZW8gZnJhbWVzIGlu
IFdlYlJUQyB2aWRlbyBwaXBlbGluZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2MzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTWFrZSB1c2Ugb2YgbmV3IGNhcGFjaXR5IHRvIGRpcmVjdGx5IHBhc3Mg
TWVkaWFTYW1wbGUgd2l0aGluIHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlci4KKyAgICAgICAgQ292
ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYkNv
cmUueGNjb25maWc6CisgICAgICAgICogcGxhdGZvcm0vTWVkaWFTYW1wbGUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29j
b2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWlu
Z1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcDoKKwogMjAyMi0wMi0wOSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCByZW1vdGUg
dmlkZW8gZnJhbWVzIGluIFdlYlJUQyB2aWRlbyBwaXBlbGluZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlYmFiNDQ3
MzNjY2M0M2Q0ZWMyNmU3NzY2M2Y3NzZkODQzMTdiMjk3Li5iMmNiMWM1OTBiMTg0YWRiMzY4ZTBk
NTAwN2JhNDgwMjhmNDFlMjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIyLTAyLTEw
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJl
bW90ZSB2aWRlbyBmcmFtZXMgaW4gV2ViUlRDIHZpZGVvIHBpcGVsaW5lCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYzNTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgYSB3YXkgdG8gYXN5
bmNocm9ub3VzbHkgZ2V0IHJhdyBkYXRhIGZvciByZW1vdGUgdmlkZW8gZnJhbWVzIHRocm91Z2gg
c2hhcmVkIG1lbW9yeS4KKyAgICAgICAgTWFrZSB1c2Ugb2YgdGhpcyB0byBzeW5jaHJvbm91bHN5
IGdldCB0aGF0IGRhdGEgYnkgY2FsbGluZyB0aGlzIEFQSSBhbmQgYmxvY2tpbmcgdXNpbmcgYSBz
ZW1hcGhvcmUuCisgICAgICAgIFVwZGF0ZSB3ZWJydGMgZGVjb2RlciBhbmQgY2FwdHVyZSBjb2Rl
IHRvIGFsbG93IHRoaXMgcmVtb3RlIGFjY2Vzcy4KKyAgICAgICAgVXBkYXRlIE1lZGlhUmVjb3Jk
ZXIgYW5kIHdlYnJ0YyBlbmNvZGVycyB0byBkZWFsIHdpdGggcmVtb3RlIHZpZGVvIGZyYW1lcy4K
KworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3Bw
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAu
aDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVj
c1Byb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJv
eHkubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzUHJveHkubW06CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlci5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRl
ci5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVz
c2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9H
UFVQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVW
aWRlb0ZyYW1lUHJveHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZVZpZGVvRnJhbWVQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZVZpZGVvRnJhbWVQcm94eUlkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5jcHA6IEFkZGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cFByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHA6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oOgorCiAy
MDIyLTAyLTA5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBT
dXBwb3J0IHJlbW90ZSB2aWRlbyBmcmFtZXMgaW4gV2ViUlRDIHZpZGVvIHBpcGVsaW5lCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2Vi
cnRjLmlPUy5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMv
bGlid2VicnRjLmlPUy5leHAKaW5kZXggNTEyYmJiZjRlMTdiOGNmM2IzYzBiMDU5NGZlYTc0NjJm
MTZjNGNkMi4uMTllNTY2OWJiYTlkM2U3MGYzOTU1NGZlZTEyY2I4MGYzNGEyYzBmYiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0
Yy5pT1MuZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9u
cy9saWJ3ZWJydGMuaU9TLmV4cApAQCAtMjIzLDggKzIyMywxMSBAQCBfX1pONndlYnJ0YzIyY3Jl
YXRlTG9jYWxIMjY1RGVjb2RlckVVMTNibG9ja19wb2ludGVyRnZQMTBfX0NWQnVmZmVyampFCiBf
X1pONndlYnJ0YzIxY3JlYXRlTG9jYWxWUDlEZWNvZGVyRVUxM2Jsb2NrX3BvaW50ZXJGdlAxMF9f
Q1ZCdWZmZXJqakUKIF9fWk42d2VicnRjMTlyZWxlYXNlTG9jYWxEZWNvZGVyRVB2CiBfX1pONndl
YnJ0YzExZGVjb2RlRnJhbWVFUHZqUEtobQotX19aTjZ3ZWJydGMyNHZpZGVvRGVjb2RlclRhc2tD
b21wbGV0ZUVQdmpQMTBfX0NWQnVmZmVyagorX19aTjZ3ZWJydGMyNHZpZGVvRGVjb2RlclRhc2tD
b21wbGV0ZUVQdmpqUDEwX19DVkJ1ZmZlcgorX19aTjZ3ZWJydGMyNHZpZGVvRGVjb2RlclRhc2tD
b21wbGV0ZUVQdmpqUzBfUEZQMTBfX0NWQnVmZmVyUzBfRVBGdlMwX0VpaQogX19aTjZ3ZWJydGMy
NHNldFZpZGVvRGVjb2RlckNhbGxiYWNrc0VQRlB2UktOU18xNFNkcFZpZGVvRm9ybWF0RUVQRmlT
MF9FUEZpUzBfalBLaG10dEVQRmlTMF9TMF9FCitfX1pONndlYnJ0YzI0dG9XZWJSVENWaWRlb0Zy
YW1lQnVmZmVyRVB2UEZQMTBfX0NWQnVmZmVyUzBfRVBGdlMwX0VpaQorX19aTjZ3ZWJydGMyNHZp
ZGVvRnJhbWVCdWZmZXJQcm92aWRlckVSS05TXzEwVmlkZW9GcmFtZUUKIF9fWk42d2VicnRjMTlz
ZXREZWNvZGVyRnJhbWVTaXplRVB2dHQKIF9fWk42d2VicnRjMThSdHBDb2RlY0NhcGFiaWxpdHlD
MUV2CiBfX1pONndlYnJ0YzI0ZW5jb2RlclZpZGVvVGFza0NvbXBsZXRlRVB2TlNfMTRWaWRlb0Nv
ZGVjVHlwZUVQS2htUktOU18yMldlYktpdEVuY29kZWRGcmFtZUluZm9FCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3Np
bS5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2Vi
cnRjLmlPU3NpbS5leHAKaW5kZXggNTEyYmJiZjRlMTdiOGNmM2IzYzBiMDU5NGZlYTc0NjJmMTZj
NGNkMi4uMTllNTY2OWJiYTlkM2U3MGYzOTU1NGZlZTEyY2I4MGYzNGEyYzBmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5p
T1NzaW0uZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9u
cy9saWJ3ZWJydGMuaU9Tc2ltLmV4cApAQCAtMjIzLDggKzIyMywxMSBAQCBfX1pONndlYnJ0YzIy
Y3JlYXRlTG9jYWxIMjY1RGVjb2RlckVVMTNibG9ja19wb2ludGVyRnZQMTBfX0NWQnVmZmVyampF
CiBfX1pONndlYnJ0YzIxY3JlYXRlTG9jYWxWUDlEZWNvZGVyRVUxM2Jsb2NrX3BvaW50ZXJGdlAx
MF9fQ1ZCdWZmZXJqakUKIF9fWk42d2VicnRjMTlyZWxlYXNlTG9jYWxEZWNvZGVyRVB2CiBfX1pO
NndlYnJ0YzExZGVjb2RlRnJhbWVFUHZqUEtobQotX19aTjZ3ZWJydGMyNHZpZGVvRGVjb2RlclRh
c2tDb21wbGV0ZUVQdmpQMTBfX0NWQnVmZmVyagorX19aTjZ3ZWJydGMyNHZpZGVvRGVjb2RlclRh
c2tDb21wbGV0ZUVQdmpqUDEwX19DVkJ1ZmZlcgorX19aTjZ3ZWJydGMyNHZpZGVvRGVjb2RlclRh
c2tDb21wbGV0ZUVQdmpqUzBfUEZQMTBfX0NWQnVmZmVyUzBfRVBGdlMwX0VpaQogX19aTjZ3ZWJy
dGMyNHNldFZpZGVvRGVjb2RlckNhbGxiYWNrc0VQRlB2UktOU18xNFNkcFZpZGVvRm9ybWF0RUVQ
RmlTMF9FUEZpUzBfalBLaG10dEVQRmlTMF9TMF9FCitfX1pONndlYnJ0YzI0dG9XZWJSVENWaWRl
b0ZyYW1lQnVmZmVyRVB2UEZQMTBfX0NWQnVmZmVyUzBfRVBGdlMwX0VpaQorX19aTjZ3ZWJydGMy
NHZpZGVvRnJhbWVCdWZmZXJQcm92aWRlckVSS05TXzEwVmlkZW9GcmFtZUUKIF9fWk42d2VicnRj
MTlzZXREZWNvZGVyRnJhbWVTaXplRVB2dHQKIF9fWk42d2VicnRjMThSdHBDb2RlY0NhcGFiaWxp
dHlDMUV2CiBfX1pONndlYnJ0YzI0ZW5jb2RlclZpZGVvVGFza0NvbXBsZXRlRVB2TlNfMTRWaWRl
b0NvZGVjVHlwZUVQS2htUktOU18yMldlYktpdEVuY29kZWRGcmFtZUluZm9FCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1h
Yy5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2Vi
cnRjLm1hYy5leHAKaW5kZXggNTEyYmJiZjRlMTdiOGNmM2IzYzBiMDU5NGZlYTc0NjJmMTZjNGNk
Mi4uZmEyODBhNGE0ZmQ4Njg1MWNjYjMxZjNjOWRlNzZiOGVhODg5NThkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMu
ZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3
ZWJydGMubWFjLmV4cApAQCAtMjIzLDcgKzIyMywxMCBAQCBfX1pONndlYnJ0YzIyY3JlYXRlTG9j
YWxIMjY1RGVjb2RlckVVMTNibG9ja19wb2ludGVyRnZQMTBfX0NWQnVmZmVyampFCiBfX1pONndl
YnJ0YzIxY3JlYXRlTG9jYWxWUDlEZWNvZGVyRVUxM2Jsb2NrX3BvaW50ZXJGdlAxMF9fQ1ZCdWZm
ZXJqakUKIF9fWk42d2VicnRjMTlyZWxlYXNlTG9jYWxEZWNvZGVyRVB2CiBfX1pONndlYnJ0YzEx
ZGVjb2RlRnJhbWVFUHZqUEtobQotX19aTjZ3ZWJydGMyNHZpZGVvRGVjb2RlclRhc2tDb21wbGV0
ZUVQdmpQMTBfX0NWQnVmZmVyagorX19aTjZ3ZWJydGMyNHZpZGVvRGVjb2RlclRhc2tDb21wbGV0
ZUVQdmpqUDEwX19DVkJ1ZmZlcgorX19aTjZ3ZWJydGMyNHZpZGVvRGVjb2RlclRhc2tDb21wbGV0
ZUVQdmpqUzBfUEZQMTBfX0NWQnVmZmVyUzBfRVBGdlMwX0VpaQorX19aTjZ3ZWJydGMyNHRvV2Vi
UlRDVmlkZW9GcmFtZUJ1ZmZlckVQdlBGUDEwX19DVkJ1ZmZlclMwX0VQRnZTMF9FaWkKK19fWk42
d2VicnRjMjR2aWRlb0ZyYW1lQnVmZmVyUHJvdmlkZXJFUktOU18xMFZpZGVvRnJhbWVFCiBfX1pO
NndlYnJ0YzI0c2V0VmlkZW9EZWNvZGVyQ2FsbGJhY2tzRVBGUHZSS05TXzE0U2RwVmlkZW9Gb3Jt
YXRFRVBGaVMwX0VQRmlTMF9qUEtobXR0RVBGaVMwX1MwX0UKIF9fWk42d2VicnRjMTlzZXREZWNv
ZGVyRnJhbWVTaXplRVB2dHQKIF9fWk42d2VicnRjMThSdHBDb2RlY0NhcGFiaWxpdHlDMUV2CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
V2ViS2l0L1dlYktpdERlY29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2Rlci5oCmluZGV4IGI4MjNlZDMyY2IzM2Zi
M2E2NzRiNDI5ODQwOGMyYWI4ZjVjYjA2YWQuLmVjNzMyZjVjY2JiNGQ1YThmODk2NTY3Mzg1YjUx
YzcxODZiNTc5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2Rlci5oCkBA
IC01NCw3ICs1NCw4IEBAIHVzaW5nIFZpZGVvRGVjb2RlclJlZ2lzdGVyRGVjb2RlQ29tcGxldGVD
YWxsYmFjayA9IGludDMyX3QoKikoV2ViS2l0VmlkZW9EZWNvZGVyCiB2b2lkIHNldFZpZGVvRGVj
b2RlckNhbGxiYWNrcyhWaWRlb0RlY29kZXJDcmVhdGVDYWxsYmFjaywgVmlkZW9EZWNvZGVyUmVs
ZWFzZUNhbGxiYWNrLCBWaWRlb0RlY29kZXJEZWNvZGVDYWxsYmFjaywgVmlkZW9EZWNvZGVyUmVn
aXN0ZXJEZWNvZGVDb21wbGV0ZUNhbGxiYWNrKTsKIAogc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6
VmlkZW9EZWNvZGVyRmFjdG9yeT4gY3JlYXRlV2ViS2l0RGVjb2RlckZhY3RvcnkoV2ViS2l0SDI2
NSwgV2ViS2l0VlA5LCBXZWJLaXRWUDlWVEIpOwotdm9pZCB2aWRlb0RlY29kZXJUYXNrQ29tcGxl
dGUodm9pZCogY2FsbGJhY2ssIHVpbnQzMl90IHRpbWVTdGFtcCwgQ1ZQaXhlbEJ1ZmZlclJlZiwg
dWludDMyX3QgdGltZVN0YW1wUlRQKTsKK3ZvaWQgdmlkZW9EZWNvZGVyVGFza0NvbXBsZXRlKHZv
aWQqIGNhbGxiYWNrLCB1aW50MzJfdCB0aW1lU3RhbXAsIHVpbnQzMl90IHRpbWVTdGFtcFJUUCwg
Q1ZQaXhlbEJ1ZmZlclJlZik7Cit2b2lkIHZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZSh2b2lkKiBj
YWxsYmFjaywgdWludDMyX3QgdGltZVN0YW1wLCB1aW50MzJfdCB0aW1lU3RhbXBSVFAsIHZvaWQq
LCBHZXRCdWZmZXJDYWxsYmFjaywgUmVsZWFzZUJ1ZmZlckNhbGxiYWNrLCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpOwogCiB1c2luZyBMb2NhbERlY29kZXIgPSB2b2lkKjsKIHVzaW5nIExvY2FsRGVj
b2RlckNhbGxiYWNrID0gdm9pZCAoXikoQ1ZQaXhlbEJ1ZmZlclJlZiwgdWludDMyX3QgdGltZVN0
YW1wLCB1aW50MzJfdCB0aW1lU3RhbXBOcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXIubW0gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktp
dERlY29kZXIubW0KaW5kZXggYWE0MTg4NDg2ZDFhYmM3MDE5NjQ1YThiNThkOWY3M2E1MDQ2ZWM1
MS4uYjdlMDY3ZjBjOWY0NWMzYTYzZTM0Njk5OWQ5ZjEwYzMwOWM3ZDU2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJL
aXREZWNvZGVyLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2Rlci5tbQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9y
dCAic2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJIMjY0Lmgi
CiAjaW1wb3J0ICJzZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2Rl
ckgyNjUuaCIKICNpbXBvcnQgInNkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlk
ZW9EZWNvZGVyVlRCVlA5LmgiCisjaW1wb3J0ICJzZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfZnJh
bWVfYnVmZmVyLmgiCiAKIEBpbnRlcmZhY2UgV0tfUlRDTG9jYWxWaWRlb0gyNjRIMjY1VlA5RGVj
b2RlciA6IE5TT2JqZWN0CiAtIChpbnN0YW5jZXR5cGUpaW5pdEgyNjREZWNvZGVyV2l0aENhbGxi
YWNrOih3ZWJydGM6OkxvY2FsRGVjb2RlckNhbGxiYWNrKWNhbGxiYWNrOwpAQCAtMTczLDcgKzE3
NCw3IEBAIFJlbW90ZVZpZGVvRGVjb2Rlcjo6flJlbW90ZVZpZGVvRGVjb2RlcigpCiAgICAgdmlk
ZW9EZWNvZGVyQ2FsbGJhY2tzKCkucmVsZWFzZUNhbGxiYWNrKG1faW50ZXJuYWxEZWNvZGVyKTsK
IH0KIAotdm9pZCB2aWRlb0RlY29kZXJUYXNrQ29tcGxldGUodm9pZCogY2FsbGJhY2ssIHVpbnQz
Ml90IHRpbWVTdGFtcCwgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgdWludDMyX3QgdGlt
ZVN0YW1wUlRQKQordm9pZCB2aWRlb0RlY29kZXJUYXNrQ29tcGxldGUodm9pZCogY2FsbGJhY2ss
IHVpbnQzMl90IHRpbWVTdGFtcCwgdWludDMyX3QgdGltZVN0YW1wUlRQLCBDVlBpeGVsQnVmZmVy
UmVmIHBpeGVsQnVmZmVyKQogewogICAgIGF1dG8gdmlkZW9GcmFtZSA9IFZpZGVvRnJhbWU6OkJ1
aWxkZXIoKS5zZXRfdmlkZW9fZnJhbWVfYnVmZmVyKHBpeGVsQnVmZmVyVG9GcmFtZShwaXhlbEJ1
ZmZlcikpCiAgICAgICAgIC5zZXRfdGltZXN0YW1wX3J0cCh0aW1lU3RhbXBSVFApCkBAIC0xODUs
NiArMTg2LDE4IEBAIHZvaWQgdmlkZW9EZWNvZGVyVGFza0NvbXBsZXRlKHZvaWQqIGNhbGxiYWNr
LCB1aW50MzJfdCB0aW1lU3RhbXAsIENWUGl4ZWxCdWZmZXJSCiAgICAgc3RhdGljX2Nhc3Q8RGVj
b2RlZEltYWdlQ2FsbGJhY2sqPihjYWxsYmFjayktPkRlY29kZWQodmlkZW9GcmFtZSk7CiB9CiAK
K3ZvaWQgdmlkZW9EZWNvZGVyVGFza0NvbXBsZXRlKHZvaWQqIGNhbGxiYWNrLCB1aW50MzJfdCB0
aW1lU3RhbXAsIHVpbnQzMl90IHRpbWVTdGFtcFJUUCwgdm9pZCogcG9pbnRlciwgR2V0QnVmZmVy
Q2FsbGJhY2sgZ2V0QnVmZmVyQ2FsbGJhY2ssIFJlbGVhc2VCdWZmZXJDYWxsYmFjayByZWxlYXNl
QnVmZmVyQ2FsbGJhY2ssIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBhdXRvIHZpZGVv
RnJhbWUgPSBWaWRlb0ZyYW1lOjpCdWlsZGVyKCkuc2V0X3ZpZGVvX2ZyYW1lX2J1ZmZlcih0b1dl
YlJUQ1ZpZGVvRnJhbWVCdWZmZXIocG9pbnRlciwgZ2V0QnVmZmVyQ2FsbGJhY2ssIHJlbGVhc2VC
dWZmZXJDYWxsYmFjaywgd2lkdGgsIGhlaWdodCkpCisgICAgICAgIC5zZXRfdGltZXN0YW1wX3J0
cCh0aW1lU3RhbXBSVFApCisgICAgICAgIC5zZXRfdGltZXN0YW1wX21zKDApCisgICAgICAgIC5z
ZXRfcm90YXRpb24oKFZpZGVvUm90YXRpb24pUlRDVmlkZW9Sb3RhdGlvbl8wKQorICAgICAgICAu
YnVpbGQoKTsKKyAgICB2aWRlb0ZyYW1lLnNldF90aW1lc3RhbXAodGltZVN0YW1wKTsKKworICAg
IHN0YXRpY19jYXN0PERlY29kZWRJbWFnZUNhbGxiYWNrKj4oY2FsbGJhY2spLT5EZWNvZGVkKHZp
ZGVvRnJhbWUpOworfQorCiBib29sIFJlbW90ZVZpZGVvRGVjb2Rlcjo6Q29uZmlndXJlKGNvbnN0
IFNldHRpbmdzJikKIHsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVz
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L1dlYktpdFV0aWxpdGllcy5oCmluZGV4IGRlMTBlODNiNmRlMTJlMTI2ODVlZjAwOWU4YjRmYjUy
MmIxOTk1ZjQuLmE3NzljYWQxYmQzNjAwMmQ3OTkzMTZhMTQ4MDVkM2EzM2Q0YzE4YmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJL
aXQvV2ViS2l0VXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaApAQCAtNTMsNCArNTMsOCBA
QCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUm
KSBDRl9SRVRVUk5TX1JFVEFJTkVEOwogcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9G
cmFtZUJ1ZmZlcj4gcGl4ZWxCdWZmZXJUb0ZyYW1lKENWUGl4ZWxCdWZmZXJSZWYpOwogYm9vbCBj
b3B5VmlkZW9GcmFtZUJ1ZmZlcihWaWRlb0ZyYW1lQnVmZmVyJiwgdWludDhfdCopOwogCit0eXBl
ZGVmIENWUGl4ZWxCdWZmZXJSZWYgKCpHZXRCdWZmZXJDYWxsYmFjaykodm9pZCopOwordHlwZWRl
ZiB2b2lkICgqUmVsZWFzZUJ1ZmZlckNhbGxiYWNrKSh2b2lkKik7CitydGM6OnNjb3BlZF9yZWZw
dHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiB0b1dlYlJUQ1ZpZGVvRnJhbWVCdWZmZXIodm9p
ZCosIEdldEJ1ZmZlckNhbGxiYWNrLCBSZWxlYXNlQnVmZmVyQ2FsbGJhY2ssIGludCB3aWR0aCwg
aW50IGhlaWdodCk7Cit2b2lkKiB2aWRlb0ZyYW1lQnVmZmVyUHJvdmlkZXIoY29uc3QgVmlkZW9G
cmFtZSYpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbQpp
bmRleCBkNTY5NTg0NmVhY2ZmNDY2Y2QwOTU4N2QzN2E5YTlkYjUyMTQ4N2MxLi5jNzY5NDUwYjg3
YzMxYTQ0Zjk0YzcwMDM1NDExYjFlNWI3YWJhMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5t
bQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2Vi
S2l0L1dlYktpdFV0aWxpdGllcy5tbQpAQCAtNTIsNiArNTIsMjEgQEAgcnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gcGl4ZWxCdWZmZXJUb0ZyYW1lKENWUGl4ZWxC
dWZmZXJSZWYKICAgICByZXR1cm4gbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxPYmpDRnJhbWVC
dWZmZXI+KGZyYW1lQnVmZmVyKTsKIH0KIAorcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6Vmlk
ZW9GcmFtZUJ1ZmZlcj4gdG9XZWJSVENWaWRlb0ZyYW1lQnVmZmVyKHZvaWQqIHBvaW50ZXIsIEdl
dEJ1ZmZlckNhbGxiYWNrIGdldEJ1ZmZlckNhbGxiYWNrLCBSZWxlYXNlQnVmZmVyQ2FsbGJhY2sg
cmVsZWFzZUJ1ZmZlckNhbGxiYWNrLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgcmV0
dXJuIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8T2JqQ0ZyYW1lQnVmZmVyPihPYmpDRnJhbWVC
dWZmZXI6OkJ1ZmZlclByb3ZpZGVyIHsgcG9pbnRlciwgZ2V0QnVmZmVyQ2FsbGJhY2ssIHJlbGVh
c2VCdWZmZXJDYWxsYmFjayB9LCB3aWR0aCwgaGVpZ2h0KTsKK30KKwordm9pZCogdmlkZW9GcmFt
ZUJ1ZmZlclByb3ZpZGVyKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lKQoreworICAgIGF1dG8gYnVm
ZmVyID0gZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCk7CisgICAgaWYgKGJ1ZmZlci0+dHlwZSgp
ICE9IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE9iakNGcmFtZUJ1ZmZlcio+KGJ1ZmZlci5n
ZXQoKSktPmZyYW1lX2J1ZmZlcl9wcm92aWRlcigpOworCit9CisKIHN0YXRpYyBib29sIENvcHlW
aWRlb0ZyYW1lVG9QaXhlbEJ1ZmZlcihjb25zdCB3ZWJydGM6Okk0MjBCdWZmZXJJbnRlcmZhY2Uq
IGZyYW1lLCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsX2J1ZmZlcikgewogICAgIFJUQ19EQ0hFQ0so
cGl4ZWxfYnVmZmVyKTsKICAgICBSVENfRENIRUNLKENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1h
dFR5cGUocGl4ZWxfYnVmZmVyKSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxh
bmFyRnVsbFJhbmdlIHx8IENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxfYnVm
ZmVyKSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyVmlkZW9SYW5nZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfZnJhbWVf
YnVmZmVyLmgKaW5kZXggZjk0MWRhZDZlNGZlNTY5MDBlY2E5MDUwYzBhODM0ZWRiODU1ZjY4MS4u
M2QyZWJkNzc5NjNhYmNhNDRjY2VmZTA3M2YxMTFiZDViNTFlZDI0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0aXZlL3Ny
Yy9vYmpjX2ZyYW1lX2J1ZmZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2ZS9zcmMvb2JqY19mcmFtZV9idWZmZXIuaApAQCAt
MTQsMTYgKzE0LDI3IEBACiAjaW1wb3J0IDxDb3JlVmlkZW8vQ29yZVZpZGVvLmg+CiAKICNpbmNs
dWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZV9idWZmZXIuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS9zeW5jaHJvbml6YXRpb24vbXV0ZXguaCIKIAogQHByb3RvY29sIFJUQ1ZpZGVv
RnJhbWVCdWZmZXI7CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCit0eXBlZGVmIENWUGl4ZWxCdWZm
ZXJSZWYgKCpHZXRCdWZmZXJDYWxsYmFjaykodm9pZCopOwordHlwZWRlZiB2b2lkICgqUmVsZWFz
ZUJ1ZmZlckNhbGxiYWNrKSh2b2lkKik7CisKIGNsYXNzIE9iakNGcmFtZUJ1ZmZlciA6IHB1Ymxp
YyBWaWRlb0ZyYW1lQnVmZmVyIHsKICBwdWJsaWM6CiAgIGV4cGxpY2l0IE9iakNGcmFtZUJ1ZmZl
cihpZDxSVENWaWRlb0ZyYW1lQnVmZmVyPik7CiAgIH5PYmpDRnJhbWVCdWZmZXIoKSBvdmVycmlk
ZTsKIAorICBzdHJ1Y3QgQnVmZmVyUHJvdmlkZXIgeworICAgIHZvaWQgKnBvaW50ZXIgeyBudWxs
cHRyIH07CisgICAgR2V0QnVmZmVyQ2FsbGJhY2sgZ2V0QnVmZmVyIHsgbnVsbHB0ciB9OworICAg
IFJlbGVhc2VCdWZmZXJDYWxsYmFjayByZWxlYXNlQnVmZmVyIHsgbnVsbHB0ciB9OworICB9Owor
ICBPYmpDRnJhbWVCdWZmZXIoQnVmZmVyUHJvdmlkZXIsIGludCB3aWR0aCwgaW50IGhlaWdodCk7
CisKICAgVHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgaW50IHdpZHRoKCkgY29uc3Qg
b3ZlcnJpZGU7CkBAIC0zMiwxMSArNDMsMTQgQEAgY2xhc3MgT2JqQ0ZyYW1lQnVmZmVyIDogcHVi
bGljIFZpZGVvRnJhbWVCdWZmZXIgewogICBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlcklu
dGVyZmFjZT4gVG9JNDIwKCkgb3ZlcnJpZGU7CiAKICAgaWQ8UlRDVmlkZW9GcmFtZUJ1ZmZlcj4g
d3JhcHBlZF9mcmFtZV9idWZmZXIoKSBjb25zdDsKKyAgdm9pZCogZnJhbWVfYnVmZmVyX3Byb3Zp
ZGVyKCkgeyByZXR1cm4gZnJhbWVfYnVmZmVyX3Byb3ZpZGVyXy5wb2ludGVyOyB9CiAKICBwcml2
YXRlOgogICBpZDxSVENWaWRlb0ZyYW1lQnVmZmVyPiBmcmFtZV9idWZmZXJfOworICBCdWZmZXJQ
cm92aWRlciBmcmFtZV9idWZmZXJfcHJvdmlkZXJfOwogICBpbnQgd2lkdGhfOwogICBpbnQgaGVp
Z2h0XzsKKyAgbXV0YWJsZSB3ZWJydGM6Ok11dGV4IG11dGV4XzsKIH07CiAKIGlkPFJUQ1ZpZGVv
RnJhbWVCdWZmZXI+IFRvT2JqQ1ZpZGVvRnJhbWVCdWZmZXIoCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUvc3JjL29i
amNfZnJhbWVfYnVmZmVyLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvbmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5tbQppbmRleCBhM2Q5
YmE4MTJkYTU5Zjg1NzJhNTMzYWQ2MmM1MmFiMGFjMGExOGMyLi4yZjU2YWNiMjk0M2JkNGM0ZDdk
ZmI1ZGIwMjFhMDA5MTgyODA3YTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVy
Lm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL25hdGl2ZS9zcmMvb2JqY19mcmFtZV9idWZmZXIubW0KQEAgLTEyLDYgKzEyLDcgQEAKIAog
I2ltcG9ydCAiYmFzZS9SVENWaWRlb0ZyYW1lQnVmZmVyLmgiCiAjaW1wb3J0ICJzZGsvb2JqYy9h
cGkvdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ05hdGl2ZUk0MjBCdWZmZXIrUHJpdmF0ZS5oIgorI2lt
cG9ydCAic2RrL29iamMvY29tcG9uZW50cy92aWRlb19mcmFtZV9idWZmZXIvUlRDQ1ZQaXhlbEJ1
ZmZlci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtNTUsMTAgKzU2LDE1IEBAIGNsYXNz
IE9iakNJNDIwRnJhbWVCdWZmZXIgOiBwdWJsaWMgSTQyMEJ1ZmZlckludGVyZmFjZSB7CiBPYmpD
RnJhbWVCdWZmZXI6Ok9iakNGcmFtZUJ1ZmZlcihpZDxSVENWaWRlb0ZyYW1lQnVmZmVyPiBmcmFt
ZV9idWZmZXIpCiAgICAgOiBmcmFtZV9idWZmZXJfKGZyYW1lX2J1ZmZlciksIHdpZHRoXyhmcmFt
ZV9idWZmZXIud2lkdGgpLCBoZWlnaHRfKGZyYW1lX2J1ZmZlci5oZWlnaHQpIHt9CiAKK09iakNG
cmFtZUJ1ZmZlcjo6T2JqQ0ZyYW1lQnVmZmVyKEJ1ZmZlclByb3ZpZGVyIHByb3ZpZGVyLCBpbnQg
d2lkdGgsIGludCBoZWlnaHQpCisgICAgOiBmcmFtZV9idWZmZXJfcHJvdmlkZXJfKHByb3ZpZGVy
KSwgd2lkdGhfKHdpZHRoKSwgaGVpZ2h0XyhoZWlnaHQpIHsgfQorCiBPYmpDRnJhbWVCdWZmZXI6
On5PYmpDRnJhbWVCdWZmZXIoKSB7CiAjaWYgZGVmaW5lZChXRUJSVENfV0VCS0lUX0JVSUxEKQog
ICBbZnJhbWVfYnVmZmVyXyBjbG9zZV07CiAjZW5kaWYKKyAgaWYgKGZyYW1lX2J1ZmZlcl9wcm92
aWRlcl8ucmVsZWFzZUJ1ZmZlcikKKyAgICBmcmFtZV9idWZmZXJfcHJvdmlkZXJfLnJlbGVhc2VC
dWZmZXIoZnJhbWVfYnVmZmVyX3Byb3ZpZGVyXy5wb2ludGVyKTsKIH0KIAogVmlkZW9GcmFtZUJ1
ZmZlcjo6VHlwZSBPYmpDRnJhbWVCdWZmZXI6OnR5cGUoKSBjb25zdCB7CkBAIC03NSwxMiArODEs
MjEgQEAgaW50IE9iakNGcmFtZUJ1ZmZlcjo6aGVpZ2h0KCkgY29uc3QgewogCiBydGM6OnNjb3Bl
ZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gT2JqQ0ZyYW1lQnVmZmVyOjpUb0k0MjAoKSB7
CiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiBidWZmZXIgPQotICAg
ICAgbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxPYmpDSTQyMEZyYW1lQnVmZmVyPihbZnJhbWVf
YnVmZmVyXyB0b0k0MjBdKTsKKyAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8T2JqQ0k0
MjBGcmFtZUJ1ZmZlcj4oW3dyYXBwZWRfZnJhbWVfYnVmZmVyKCkgdG9JNDIwXSk7CiAKICAgcmV0
dXJuIGJ1ZmZlcjsKIH0KIAogaWQ8UlRDVmlkZW9GcmFtZUJ1ZmZlcj4gT2JqQ0ZyYW1lQnVmZmVy
Ojp3cmFwcGVkX2ZyYW1lX2J1ZmZlcigpIGNvbnN0IHsKKyAgaWYgKGZyYW1lX2J1ZmZlcl8pCisg
ICAgcmV0dXJuIGZyYW1lX2J1ZmZlcl87CisKKyAgeworICAgIHdlYnJ0Yzo6TXV0ZXhMb2NrIGxv
Y2soJm11dGV4Xyk7CisgICAgaWYgKCFmcmFtZV9idWZmZXJfICYmIGZyYW1lX2J1ZmZlcl9wcm92
aWRlcl8uZ2V0QnVmZmVyKQorICAgICAgY29uc3RfY2FzdDxPYmpDRnJhbWVCdWZmZXIqPih0aGlz
KS0+ZnJhbWVfYnVmZmVyXyA9IFtbUlRDQ1ZQaXhlbEJ1ZmZlciBhbGxvY10gaW5pdFdpdGhQaXhl
bEJ1ZmZlcjpmcmFtZV9idWZmZXJfcHJvdmlkZXJfLmdldEJ1ZmZlcihmcmFtZV9idWZmZXJfcHJv
dmlkZXJfLnBvaW50ZXIpXTsKKyAgfQorCiAgIHJldHVybiBmcmFtZV9idWZmZXJfOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmln
IGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZwppbmRleCA0
NDljZjZmOTQ2MmQyNWE5MGMxNjIwNGNjNTYwZjlkNzdiZTc4NjA0Li5hOGNkNWI1YjI3Y2Q5N2E5
NzBjMDU1OGMxMmVkNDFjZmZmNjQ3ZjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25m
aWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3Vy
YXRpb25zL1dlYkNvcmUueGNjb25maWcKQEAgLTExNyw3ICsxMTcsNyBAQCBXS19JT1NVUkZBQ0Vf
QUNDRUxFUkFUT1JfTERGTEFHU193YXRjaG9zID0gJChXS19JT1NVUkZBQ0VfQUNDRUxFUkFUT1Jf
TERGTEFHU19pcAogV0tfSU9TVVJGQUNFX0FDQ0VMRVJBVE9SX0xERkxBR1NfYXBwbGV0dm9zID0g
JChXS19JT1NVUkZBQ0VfQUNDRUxFUkFUT1JfTERGTEFHU19pcGhvbmVvcyk7CiAKIFdLX0xJQldF
QlJUQ19MREZMQUdTID0gJChXS19MSUJXRUJSVENfTERGTEFHU18kKEVOQUJMRV9XRUJfUlRDKSk7
Ci1XS19MSUJXRUJSVENfTERGTEFHU19FTkFCTEVfV0VCX1JUQyA9IC1mcmFtZXdvcmsgVmlkZW9U
b29sYm94IC1mcmFtZXdvcmsgQ29yZU1lZGlhIC13ZWFrLWx3ZWJydGM7CitXS19MSUJXRUJSVENf
TERGTEFHU19FTkFCTEVfV0VCX1JUQyA9IC1mcmFtZXdvcmsgVmlkZW9Ub29sYm94IC1mcmFtZXdv
cmsgQ29yZU1lZGlhIC13ZWFrLWx3ZWJydGMgIC1YbGlua2VyIC0tbm8tZGVtYW5nbGU7CiAKIFdL
X01PQklMRV9DT1JFX1NFUlZJQ0VTX0xERkxBR1MgPSAkKFdLX01PQklMRV9DT1JFX1NFUlZJQ0VT
X0xERkxBR1NfJChXS19DT0NPQV9UT1VDSCkpOwogV0tfTU9CSUxFX0NPUkVfU0VSVklDRVNfTERG
TEFHU19jb2NvYXRvdWNoID0gLWZyYW1ld29yayBNb2JpbGVDb3JlU2VydmljZXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaAppbmRleCAxMzAxNzNjM2Q1Nzc3ZjRiNDdkOThiYmZk
YjRhYTBkNGUzNWMzNjk2Li42YjIxMzM1OGE5ZjczYzg5NmMyOThkMWExZjMwN2VhZjdjMzMzNzc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKIHR5cGVkZWYgc3RydWN0IG9wYXF1
ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKK3R5cGVkZWYgc3RydWN0IF9fQ1ZC
dWZmZXIgKkNWUGl4ZWxCdWZmZXJSZWY7CiB0eXBlZGVmIHN0cnVjdCBfR3N0U2FtcGxlIEdzdFNh
bXBsZTsKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZU1UUGx1Z2luQnl0ZVNvdXJjZSAqTVRQbHVnaW5C
eXRlU291cmNlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3Qgb3BhcXVlQ01Gb3JtYXREZXNjcmlw
dGlvbiAqQ01Gb3JtYXREZXNjcmlwdGlvblJlZjsKQEAgLTExMyw2ICsxMTQsOSBAQCBwdWJsaWM6
CiAjaWYgZGVmaW5lZChFTkFCTEVfVklERU8pICYmIEVOQUJMRV9WSURFTwogICAgIHZpcnR1YWwg
c3RkOjpvcHRpb25hbDxNZWRpYVNhbXBsZVZpZGVvRnJhbWU+IHZpZGVvRnJhbWUoKSBjb25zdCB7
IHJldHVybiBzdGQ6Om51bGxvcHQ7IH07CiAjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICB2aXJ0dWFsIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIoKSBjb25zdCB7IHJldHVybiBu
dWxscHRyOyB9OworI2VuZGlmCiAKICAgICBib29sIGlzU3luYygpIGNvbnN0IHsgcmV0dXJuIGZs
YWdzKCkgJiBJc1N5bmM7IH0KICAgICBib29sIGlzTm9uRGlzcGxheWluZygpIGNvbnN0IHsgcmV0
dXJuIGZsYWdzKCkgJiBJc05vbkRpc3BsYXlpbmc7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VD
b2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
SW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmgKaW5kZXggOTI0N2ZlYzk3ZTUzYjkwMTM3ZmViNzMz
NzExNWJlY2QxYTlhMGUyZS4uNzgwMGM0NmQxNDg2MzUzNWNkMjc5YzI5MjIxNjk5NzdjNmIyMjUz
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmgK
QEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBSZWFsdGltZUluY29taW5n
VmlkZW9Tb3VyY2VDb2NvYShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNrSW50
ZXJmYWNlPiYmLCBTdHJpbmcmJik7CiAgICAgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgcGl4ZWxCdWZm
ZXJQb29sKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgd2VicnRjOjpCdWZmZXJUeXBlKTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9GcmFtZVdlYlJUQz4gdG9WaWRlb0ZyYW1lKGNvbnN0
IHdlYnJ0Yzo6VmlkZW9GcmFtZSYpOworICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gdG9WaWRlb0Zy
YW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYpOwogCiAgICAgLy8gcnRjOjpWaWRlb1NpbmtJ
bnRlcmZhY2UKICAgICB2b2lkIE9uRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0K
aW5kZXggZDk3NGMxYTQzMTNhODY0MDY4YjIxNjA4M2EwMzkzMzExMGIzMTNhZS4uNWQzN2ZhZTZi
NmEyYzAzM2IwMzg4YjQ4ZTczOWIwMDdiNGVhZWVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQpAQCAtMTE5LDcgKzExOSw3IEBAIENWUGl4
ZWxCdWZmZXJQb29sUmVmIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpwaXhlbEJ1
ZmZlclBvb2woc2l6ZV90IHdpCiAgICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXJQb29sLmdldCgpOwog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8VmlkZW9GcmFtZVdlYlJUQz4gUmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlQ29jb2E6OnRvVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZy
YW1lKQorUmVmUHRyPE1lZGlhU2FtcGxlPiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2Nv
YTo6dG9WaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhbWUpCiB7CiAgICAg
TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb247CiAgICAgc3dpdGNoIChmcmFtZS5y
b3RhdGlvbigpKSB7CkBAIC0xNDMsMTYgKzE0MywyMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9G
cmFtZVdlYlJUQz4gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OnRvVmlkZW9GcmFt
ZQogICAgICAgICAgICAgbV9ibGFja0ZyYW1lSGVpZ2h0ID0gZnJhbWUuaGVpZ2h0KCk7CiAgICAg
ICAgICAgICBtX2JsYWNrRnJhbWUgPSBjcmVhdGVCbGFja1BpeGVsQnVmZmVyKG1fYmxhY2tGcmFt
ZVdpZHRoLCBtX2JsYWNrRnJhbWVIZWlnaHQpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFZpZGVvRnJhbWVXZWJSVEM+KG1fYmxhY2tGcmFtZS5nZXQoKSwgcm90YXRpb24s
IGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIE1lZGlhU2FtcGxlV2ViUlRDOjpjcmVhdGUobWFrZVVu
aXF1ZVJlZjxWaWRlb0ZyYW1lV2ViUlRDPihtX2JsYWNrRnJhbWUuZ2V0KCksIHJvdGF0aW9uLCBm
YWxzZSkpOwogICAgIH0KKworICAgIGlmIChhdXRvIHByb3ZpZGVyID0gd2VicnRjOjp2aWRlb0Zy
YW1lQnVmZmVyUHJvdmlkZXIoZnJhbWUpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWVk
aWFTYW1wbGUqPihwcm92aWRlcik7CisKICAgICBpZiAoYXV0byBwaXhlbEJ1ZmZmZXIgPSB3ZWJy
dGM6OnBpeGVsQnVmZmVyRnJvbUZyYW1lKGZyYW1lKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8VmlkZW9GcmFtZVdlYlJUQz4oV1RGTW92ZShwaXhlbEJ1ZmZmZXIpLCByb3RhdGlvbiwgZmFs
c2UpOworICAgICAgICByZXR1cm4gTWVkaWFTYW1wbGVXZWJSVEM6OmNyZWF0ZShtYWtlVW5pcXVl
UmVmPFZpZGVvRnJhbWVXZWJSVEM+KFdURk1vdmUocGl4ZWxCdWZmZmVyKSwgcm90YXRpb24sIGZh
bHNlKSk7CiAKICAgICBhdXRvIGJ1ZmZlclR5cGUgPSBmcmFtZS52aWRlb19mcmFtZV9idWZmZXIo
KS0+dHlwZSgpOwogICAgIGlmIChidWZmZXJUeXBlICE9IHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZl
cjo6VHlwZTo6a0k0MjAgJiYgYnVmZmVyVHlwZSAhPSB3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI6
OlR5cGU6OmtJMDEwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBtYWtl
VW5pcXVlPFZpZGVvRnJhbWVXZWJSVEM+KGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpLCBbcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHRoaXNdKGF1dG8mIGJ1ZmZlcikgeworICAgIHJl
dHVybiBNZWRpYVNhbXBsZVdlYlJUQzo6Y3JlYXRlKG1ha2VVbmlxdWVSZWY8VmlkZW9GcmFtZVdl
YlJUQz4oZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCksIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgdGhpc10oYXV0byYgYnVmZmVyKSB7CiAgICAgICAgIHJldHVybiBhZG9wdENGKHdl
YnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWVCdWZmZXIoYnVmZmVyLCBbdGhpc10oc2l6
ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCB3ZWJydGM6OkJ1ZmZlclR5cGUgYnVmZmVyVHlwZSkg
LT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7CiAgICAgICAgICAgICBMb2NrZXIgbG9jayhtX3BpeGVsQnVm
ZmVyUG9vbExvY2spOwogICAgICAgICAgICAgYXV0byBwaXhlbEJ1ZmZlclBvb2wgPSB0aGlzLT5w
aXhlbEJ1ZmZlclBvb2wod2lkdGgsIGhlaWdodCwgYnVmZmVyVHlwZSk7CkBAIC0xNjgsNyArMTcy
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRnJhbWVXZWJSVEM+IFJlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZUNvY29hOjp0b1ZpZGVvRnJhbWUKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IHJldHVybiBwaXhlbEJ1ZmZlcjsKICAgICAgICAgfSkpOwotICAgIH0sIHJvdGF0aW9uLCBmYWxz
ZSk7CisgICAgfSwgcm90YXRpb24sIGZhbHNlKSk7CiB9CiAKIHZvaWQgUmVhbHRpbWVJbmNvbWlu
Z1ZpZGVvU291cmNlQ29jb2E6Ok9uRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiB3ZWJy
dGNWaWRlb0ZyYW1lKQpAQCAtMTkxLDcgKzE5NSw3IEBAIHZvaWQgUmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlQ29jb2E6Ok9uRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiB3ZWJydGNW
CiAgICAgICAgIHN0ZDo6c3dhcCh3aWR0aCwgaGVpZ2h0KTsKIAogICAgIHNldEludHJpbnNpY1Np
emUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7Ci0gICAgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVk
aWFTYW1wbGVXZWJSVEM6OmNyZWF0ZShtYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQdHIo
V1RGTW92ZSh2aWRlb0ZyYW1lKSkpLCBtZXRhZGF0YUZyb21WaWRlb0ZyYW1lKHdlYnJ0Y1ZpZGVv
RnJhbWUpKTsKKyAgICB2aWRlb1NhbXBsZUF2YWlsYWJsZSgqdmlkZW9GcmFtZSwgbWV0YWRhdGFG
cm9tVmlkZW9GcmFtZSh3ZWJydGNWaWRlb0ZyYW1lKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2Eu
Y3BwCmluZGV4IDFkMTRhZjI4NGFlNTI3MmM1MGMzY2MxYjg5NDE1YzliMWU5ZTIwZWMuLmU5Nzcx
NmNhMjM4NGJiNzY5NjI4MDg3OGUxOGE4NzkyY2M0ZjYwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2VDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcApAQCAtODUsOCArODUsMTcgQEAg
dm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6dmlkZW9TYW1wbGVBdmFpbGFi
bGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYg
KHNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnR5cGUgPT0gUGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxl
QnVmZmVyVHlwZSkgewotICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQ
aXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKHNhbXBsZS5w
bGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcikpOworICAgIGF1dG8gcGxhdGZv
cm1TYW1wbGUgPSBzYW1wbGUucGxhdGZvcm1TYW1wbGUoKTsKKyAgICBpZiAocGxhdGZvcm1TYW1w
bGUudHlwZSA9PSBQbGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZSkgewor
ICAgICAgICBzYW1wbGUucmVmKCk7CisgICAgICAgIHNlbmRGcmFtZSh3ZWJydGM6OnRvV2ViUlRD
VmlkZW9GcmFtZUJ1ZmZlcigmc2FtcGxlLAorICAgICAgICAgICAgW10oYXV0byogc2FtcGxlKSB7
IHJldHVybiBzdGF0aWNfY2FzdDxNZWRpYVNhbXBsZSo+KHNhbXBsZSktPnBpeGVsQnVmZmVyKCk7
IH0sCisgICAgICAgICAgICBbXShhdXRvKiBzYW1wbGUpIHsgc3RhdGljX2Nhc3Q8TWVkaWFTYW1w
bGUqPihzYW1wbGUpLT5kZXJlZigpOyB9LAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pihz
YW1wbGUucHJlc2VudGF0aW9uU2l6ZSgpLndpZHRoKCkpLCBzdGF0aWNfY2FzdDxpbnQ+KHNhbXBs
ZS5wcmVzZW50YXRpb25TaXplKCkuaGVpZ2h0KCkpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgaWYgKHBsYXRmb3JtU2FtcGxlLnR5cGUgPT0gUGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxl
QnVmZmVyVHlwZSkgeworICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQ
aXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKHBsYXRmb3Jt
U2FtcGxlLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcikpOwogICAgICAgICBhdXRvIHBpeGVsRm9ybWF0
VHlwZSA9IENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxCdWZmZXIpOwogCiAg
ICAgICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBjb252ZXJ0ZWRCdWZmZXIgPSBwaXhl
bEJ1ZmZlcjsKQEAgLTk5LDggKzEwOCw4IEBAIHZvaWQgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291
cmNlQ29jb2E6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUsCiAgICAg
ICAgIHNlbmRGcmFtZSh3ZWJydGM6OnBpeGVsQnVmZmVyVG9GcmFtZShjb252ZXJ0ZWRCdWZmZXIu
Z2V0KCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBBU1NFUlQoc2FtcGxlLnBsYXRm
b3JtU2FtcGxlKCkudHlwZSA9PSBQbGF0Zm9ybVNhbXBsZTo6VmlkZW9GcmFtZVNhbXBsZVR5cGUp
OwotICAgIHNlbmRGcmFtZShzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUudmlkZW9GcmFt
ZS0+dG9XZWJSVENWaWRlb0ZyYW1lQnVmZmVyKCkpOworICAgIEFTU0VSVChwbGF0Zm9ybVNhbXBs
ZS50eXBlID09IFBsYXRmb3JtU2FtcGxlOjpWaWRlb0ZyYW1lU2FtcGxlVHlwZSk7CisgICAgc2Vu
ZEZyYW1lKHBsYXRmb3JtU2FtcGxlLnNhbXBsZS52aWRlb0ZyYW1lLT50b1dlYlJUQ1ZpZGVvRnJh
bWVCdWZmZXIoKSk7CiB9CiAKIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVC
dWZmZXI+IFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjpjcmVhdGVCbGFja0ZyYW1l
KHNpemVfdCAgd2lkdGgsIHNpemVfdCAgaGVpZ2h0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDVmZTYzNDcxMmMwZWNiZTYxZDBhZjM3NTBj
OThiNjJlOTkyMWE3ZDAuLmE3YmMwMWFlN2JkY2Y3ZjRjMzU4YjM2YTAxOTQ0YzMzZmI2YjQzOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAg
LTE5Nyw2ICsxOTcsNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3Vy
Y2VCdWZmZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3Nh
Z2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDUmVt
b3RlQ29kZWNzLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvSW5zcGVj
dG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA5M2U5Y2YyYmQ5MzY5NDg5MjQ2
NDVhOTIwNGZiYWRhZmY2YWI3MjE5Li4wM2ZmOTg3YTczYzlkZmVkNTgzM2Q3NGJjODQzMTM5NGJk
MzA3Y2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QKQEAgLTM4NCw2ICszODQsOSBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L1JlbW90ZVRleHR1cmVWaWV3TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXBNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXMuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcE1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlN
ZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdC9SZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVQcm94eU1l
c3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVt
b3RlVmlkZW9GcmFtZVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMu
bWFrZQppbmRleCBjM2MwZDVhYzZlMWJhODQwYWRjZTY2YzhjNGE1OTY3Nzg5MDA4Mjg2Li5kZDNh
NTExMDE4ZjU3YWEyNWUyNWJhYzU1Y2IxNjhjNmUyNGJiMTUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy5tYWtlCkBAIC0yMDUsNiArMjA1LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyIFwKIAlXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlIFwKIAlXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyIFwKKwlXZWJQcm9jZXNzL0dQVS93
ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSBcCiAJV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VBcmVhTWFwIFwKIAlXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlciBcCiAJV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9ySW50
ZXJydXB0RGlzcGF0Y2hlciBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggN2JjMzJkMDA5MzNiNzk2OTI3Mjk3
YmI5ZjE0MTJhNzM5ZDE3NTE5Yi4uNzkwYTBmMmY0ZTYyYmZjNTc2YjI1ZjRiNzVkNjcwMTU2YTU4
MDA5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMjM4LDE1ICsyMzgsMTggQEAgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhHUFVQcm9jZXNzJiBncHVQcm9j
ZXNzLCBXZWIKICAgICAsIG1fd2ViUHJvY2Vzc0lkZW50aXR5KFdURk1vdmUocGFyYW1ldGVycy53
ZWJQcm9jZXNzSWRlbnRpdHkpKQogICAgICwgbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eShtYWtlVW5pcXVlUmVmPFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5PigqdGhpcykpCiAg
ICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShM
SUJXRUJSVEMpCi0gICAgLCBtX2xpYldlYlJUQ0NvZGVjc1Byb3h5KExpYldlYlJUQ0NvZGVjc1By
b3h5OjpjcmVhdGUoKnRoaXMpKQotI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAgICAgLCBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIo
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6Y3JlYXRlKCp0aGlzKSkKICNl
bmRpZgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgLCBtX2NhcHR1cmVPcmlnaW4oU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKQogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKyAgICAsIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAoUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXA6OmNyZWF0ZSgqdGhpcykpCisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNF
KExJQldFQlJUQykKKyAgICAsIG1fbGliV2ViUlRDQ29kZWNzUHJveHkoTGliV2ViUlRDQ29kZWNz
UHJveHk6OmNyZWF0ZSgqdGhpcykpCisjZW5kaWYKICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAg
ICwgbV9wcmVzZW50aW5nQXBwbGljYXRpb25BdWRpdFRva2VuKFdURk1vdmUocGFyYW1ldGVycy5w
cmVzZW50aW5nQXBwbGljYXRpb25BdWRpdFRva2VuKSkKICNlbmRpZgpAQCAtMjU5LDkgKzI2Miw2
IEBAIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
R1BVUHJvY2VzcyYgZ3B1UHJvY2VzcywgV2ViCiAjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJ
T04pICYmIEhBVkUoQVZBVURJT19ST1VUSU5HX0FSQklURVIpCiAgICAgZ3B1UHJvY2Vzcy5hdWRp
b1Nlc3Npb25NYW5hZ2VyKCkuc2Vzc2lvbigpLnNldFJvdXRpbmdBcmJpdHJhdGlvbkNsaWVudCht
X3JvdXRpbmdBcmJpdHJhdG9yLmdldCgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCi0gICAgbV92aWRlb0ZyYW1lT2JqZWN0SGVhcCA9IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwOjpjcmVhdGUoKnRoaXMpOwotI2VuZGlmCiAKICAgICBpZiAoIXBhcmFtZXRlcnMub3ZlcnJp
ZGVMYW5ndWFnZXMuaXNFbXB0eSgpKQogICAgICAgICBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMocGFyYW1ldGVycy5vdmVycmlkZUxhbmd1YWdlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAxMWFjYzAw
Yzc0ZWI1ZDEyZjgyODJkNDQ2NjM5N2Q4N2Q3ZTk3NTlkLi5mYjIwMjZkMTAxM2M3OTg1ZjBmYWFh
ZDhkZDg0YjQ5ZDExNjM0NGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTI5NCw5ICsyOTQsNiBAQCBwcml2YXRl
OgogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcj4gbV9yZW1v
dGVNZWRpYVJlc291cmNlTWFuYWdlcjsKICAgICBVbmlxdWVSZWY8UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk+IG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk7CiAgICAgUEFMOjpT
ZXNzaW9uSUQgbV9zZXNzaW9uSUQ7Ci0jaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJS
VEMpCi0gICAgUmVmPExpYldlYlJUQ0NvZGVjc1Byb3h5PiBtX2xpYldlYlJUQ0NvZGVjc1Byb3h5
OwotI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk+IG1fdXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyPiBtX2F1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjsKQEAgLTMxMyw2ICszMTAsOSBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9hbGxvd3NEaXNwbGF5Q2FwdHVyZSB7IGZhbHNlIH07CiAg
ICAgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwPiBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwOwogI2VuZGlmCisjaWYgUExBVEZPUk0o
Q09DT0EpICYmIFVTRShMSUJXRUJSVEMpCisgICAgUmVmPExpYldlYlJUQ0NvZGVjc1Byb3h5PiBt
X2xpYldlYlJUQ0NvZGVjc1Byb3h5OworI2VuZGlmCiAjaWYgSEFWRShBVURJVF9UT0tFTikKICAg
ICBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IG1fcHJlc2VudGluZ0FwcGxpY2F0aW9uQXVk
aXRUb2tlbjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAKaW5kZXggM2NjNTBlNjRi
YzgwYWExMjNjOTc4ZmExYTlkOGQzNDgyZjY0Zjc5Zi4uOGM0MmYzYTBkYjM0MzAzZTk2ZjVmYzhj
NzU1YjBiY2NlMGVhNDZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwCkBAIC0yOSw5ICsy
OSwxMiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
ICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXBNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVQ
cm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94eU1lc3NhZ2VzLmgiCiAKKyNp
bmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIFJlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXA6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKQpAQCAtODUsNiArODgsMjMgQEAgdm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cDo6cmVsZWFzZVZpZGVvRnJhbWUoUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmMKICAgICBy
ZXRpcmVSZW1vdmUoV1RGTW92ZSh3cml0ZSkpOwogfQogCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwOjpnZXRWaWRlb0ZyYW1lQnVmZmVyKFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJl
bmNlJiYgcmVhZCkKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIgPSByZWFkLmlkZW50aWZpZXIoKTsK
KyAgICBhdXRvIG1lZGlhU2FtcGxlID0gcmV0aXJlKFdURk1vdmUocmVhZCksIDBfcyk7CisgICAg
aWYgKCFtZWRpYVNhbXBsZSkKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5OjpWaWRlb0ZyYW1lQnVmZmVyTm90Rm91bmQg
eyBpZGVudGlmaWVyIH0sIDApOworCisgICAgYXV0byBwbGF0Zm9ybVNhbXBsZSA9IG1lZGlhU2Ft
cGxlLT5wbGF0Zm9ybVNhbXBsZSgpOworICAgIEFTU0VSVChwbGF0Zm9ybVNhbXBsZS50eXBlID09
IFBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGUpOworCisgICAgbV9zaGFyZWRWaWRl
b0ZyYW1lV3JpdGVyLndyaXRlKHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01T
YW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihwbGF0Zm9ybVNhbXBsZS5zYW1wbGUuY21TYW1wbGVC
dWZmZXIpKSwKKyAgICAgICAgWyZdKGF1dG8mIHNlbWFwaG9yZSkgeyBtX2Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk6OlNldFNoYXJlZFZp
ZGVvRnJhbWVTZW1hcGhvcmUgeyBzZW1hcGhvcmUgfSwgMCk7IH0sCisgICAgICAgIFsmXShhdXRv
JiBoYW5kbGUpIHsgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcFByb3h5OjpTZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5IHsgaGFuZGxlIH0sIDAp
OyB9CisgICAgKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwUHJveHk6Ok5ld1ZpZGVvRnJhbWVCdWZmZXIgeyBpZGVudGlmaWVyIH0s
IDApOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaAppbmRleCBmYTc4ZjNh
Y2U1MTI3NzExZjA2NzVmOWU1YWRhNGE1M2MxZDIwNTVhLi4zMzRlNmM4Njg2OGFiZTc1YWVkNWM1
MjA5MmE5NzVkZjNjMTcwZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaApAQCAtMjcsNiArMjcs
NyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQog
I2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU2hhcmVk
VmlkZW9GcmFtZS5oIgogI2luY2x1ZGUgIlRocmVhZFNhZmVPYmplY3RIZWFwLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9NZWRpYVNhbXBsZS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRBc3NlcnRpb25z
Lmg+CkBAIC01NiwxMCArNTcsMTIgQEAgcHJpdmF0ZToKIAogICAgIC8vIE1lc3NhZ2VzLgogICAg
IHZvaWQgcmVsZWFzZVZpZGVvRnJhbWUoUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJiYp
OworICAgIHZvaWQgZ2V0VmlkZW9GcmFtZUJ1ZmZlcihSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVy
ZW5jZSYmKTsKIAogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY29uc3VtZVRocmVhZCk7CiAgICAg
Y29uc3QgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIFRocmVhZEFzc2Vy
dGlvbiBtX2NvbnN1bWVUaHJlYWQgTk9fVU5JUVVFX0FERFJFU1M7CisgICAgU2hhcmVkVmlkZW9G
cmFtZVdyaXRlciBtX3NoYXJlZFZpZGVvRnJhbWVXcml0ZXI7CiB9OwogCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcC5tZXNzYWdlcy5pbgppbmRleCBhMjc4Y2UzZDAzOWRiZTE3MzFkNWFm
NmM4ZTQ5OTEwYTM5NTJhNzEyLi4xZDNkMjQzZTE1MTc1ZWZmOWM4ZDdlZmNiYmJkMGIxNTJkZTVj
YTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluCkBAIC0yMyw2
ICsyMyw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiBtZXNzYWdlcyAtPiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCBOb3RSZWZDb3VudGVk
IHsKKyAgICBHZXRWaWRlb0ZyYW1lQnVmZmVyKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlYWRS
ZWZlcmVuY2UgaWRlbnRpZmllcikKICAgICBSZWxlYXNlVmlkZW9GcmFtZShXZWJLaXQ6OlJlbW90
ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSBpZGVudGlmaWVyKQogfQotI2VuZGlmClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKaW5kZXggYzc3MmNiNzc2MGYy
ZDU4MjlhZmNkMmI4NWY1OTEzYTMwYzAwNzQ0NC4uOGVmMjljYWUyNDA5MWRlZmNkODljNDE0MDYw
NGM2ZmVjOTgyMjAyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJSVENEZWNvZGVySWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlJUQ0VuY29kZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFt
ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlICJTaGFy
ZWRWaWRlb0ZyYW1lLmgiCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KQEAgLTUzLDYgKzU0LDcgQEAg
dXNpbmcgTG9jYWxFbmNvZGVyID0gdm9pZCo7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwOwogY2xhc3MgU2hhcmVkVmlkZW9GcmFtZVJlYWRlcjsKIAogY2xhc3MgTGliV2ViUlRDQ29k
ZWNzUHJveHkgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpUaHJlYWRNZXNzYWdlUmVjZWl2ZXJS
ZWZDb3VudGVkIHsKQEAgLTgzLDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUVu
Y29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3Rvcjxz
dGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYsIGJvb2wgdXNlTG93TGF0ZW5jeSk7CiAgICAgdm9p
ZCByZWxlYXNlRW5jb2RlcihSVENFbmNvZGVySWRlbnRpZmllcik7CiAgICAgdm9pZCBpbml0aWFs
aXplRW5jb2RlcihSVENFbmNvZGVySWRlbnRpZmllciwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90
IGhlaWdodCwgdW5zaWduZWQgc3RhcnRCaXRyYXRlLCB1bnNpZ25lZCBtYXhCaXRyYXRlLCB1bnNp
Z25lZCBtaW5CaXRyYXRlLCB1aW50MzJfdCBtYXhGcmFtZXJhdGUpOwotICAgIHZvaWQgZW5jb2Rl
RnJhbWUoUlRDRW5jb2RlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYs
IHVpbnQzMl90IHRpbWVTdGFtcCwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKTsKKyAgICB2
b2lkIGVuY29kZUZyYW1lKFJUQ0VuY29kZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVWaWRl
b1NhbXBsZSYmLCB1aW50MzJfdCB0aW1lU3RhbXAsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFt
ZSwgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZT4pOwogICAgIHZv
aWQgc2V0RW5jb2RlUmF0ZXMoUlRDRW5jb2RlcklkZW50aWZpZXIsIHVpbnQzMl90IGJpdFJhdGUs
IHVpbnQzMl90IGZyYW1lUmF0ZSk7CiAgICAgdm9pZCBzZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBo
b3JlKFJUQ0VuY29kZXJJZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYmKTsKICAgICB2b2lkIHNl
dFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkoUlRDRW5jb2RlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJl
ZE1lbW9yeTo6SVBDSGFuZGxlJik7CkBAIC0xMDEsNiArMTAzLDcgQEAgcHJpdmF0ZToKICAgICBI
YXNoTWFwPFJUQ0RlY29kZXJJZGVudGlmaWVyLCB3ZWJydGM6OkxvY2FsRGVjb2Rlcj4gbV9kZWNv
ZGVycyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7IC8vIE9ubHkgbW9kaWZpZWQgb24gdGhl
IGxpYldlYlJUQ0NvZGVjc1F1ZXVlIGJ1dCBtYXkgZ2V0IGFjY2Vzc2VkIGZyb20gdGhlIG1haW4g
dGhyZWFkLgogICAgIEhhc2hNYXA8UlRDRW5jb2RlcklkZW50aWZpZXIsIEVuY29kZXI+IG1fZW5j
b2RlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOyAvLyBPbmx5IG1vZGlmaWVkIG9uIHRo
ZSBsaWJXZWJSVENDb2RlY3NRdWV1ZSBidXQgbWF5IGdldCBhY2Nlc3NlZCBmcm9tIHRoZSBtYWlu
IHRocmVhZC4KICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOworICAgIFJlZjxSZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcD4gbV92aWRlb0ZyYW1lT2JqZWN0SGVhcDsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDZiYjIwODYzOGRjMjJhODllZmI4OWM5YWY5
MDZhMDNlYTY5ZTc0NGUuLjczZDBiNThkNDdiZDE2MDc3NWQ0OGU2NjlhN2UzZDFlZTRiNTFhYTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzQsNyArMzQsNyBAQCBtZXNz
YWdlcyAtPiBMaWJXZWJSVENDb2RlY3NQcm94eSBOb3RSZWZDb3VudGVkIHsKICAgICBDcmVhdGVF
bmNvZGVyKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQsIFN0cmluZyBmb3JtYXROYW1l
LCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gcGFyYW1ldGVycywgYm9vbCB1c2VM
b3dMYXRlbmN5KTsKICAgICBSZWxlYXNlRW5jb2RlcihXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlm
aWVyIGlkKQogICAgIEluaXRpYWxpemVFbmNvZGVyKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZp
ZXIgaWQsIHVpbnQxNl90IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQsIHVuc2lnbmVkIHN0YXJ0Qml0
cmF0ZSwgdW5zaWduZWQgbWF4Qml0cmF0ZSwgdW5zaWduZWQgbWluQml0cmF0ZSwgdWludDMyX3Qg
bWF4RnJhbWVyYXRlKQotICAgIEVuY29kZUZyYW1lKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZp
ZXIgaWQsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSwgdWludDMyX3QgdGltZVN0
YW1wLCBib29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUpCisgICAgRW5jb2RlRnJhbWUoV2ViS2l0
OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2Ft
cGxlLCB1aW50MzJfdCB0aW1lU3RhbXAsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSwgc3Rk
OjpvcHRpb25hbDxXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlPiBzYW1wbGVS
ZWZlcmVuY2UpCiAgICAgU2V0RW5jb2RlUmF0ZXMoV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmll
ciBpZCwgdWludDMyX3QgYml0UmF0ZSwgdWludDMyX3QgZnJhbWVSYXRlKQogICAgIFNldFNoYXJl
ZFZpZGVvRnJhbWVTZW1hcGhvcmUoV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwgSVBD
OjpTZW1hcGhvcmUgc2VtYXBob3JlKQogICAgIFNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkoV2Vi
S2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZSBzdG9yYWdlSGFuZGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KaW5kZXggMjJlMjA2YWI5YTkzMmE1OWJj
ZWQ1MzM5M2JkYzhiMzAxYWM2ODM0Yi4uNWZlOWQ3YjkyOTcxZGFmMWY2MWQyN2JjYzA0Y2I0NjU3
NDBhMGUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3NQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCkBAIC0zMiwyMSArMzIsMjcgQEAKICNpbXBvcnQgIkdQ
VVByb2Nlc3MuaCIKICNpbXBvcnQgIkxpYldlYlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW1wb3J0
ICJMaWJXZWJSVENDb2RlY3NQcm94eU1lc3NhZ2VzLmgiCisjaW1wb3J0ICJSZW1vdGVWaWRlb0Zy
YW1lSWRlbnRpZmllci5oIgorI2ltcG9ydCAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCIK
ICNpbXBvcnQgIlNoYXJlZFZpZGVvRnJhbWUuaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9DVlV0aWxpdGllcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9MaWJXZWJSVENQcm92aWRlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVNhbXBsZUFWRk9i
akMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVtb3RlVmlkZW9TYW1wbGUuaD4KICNpbXBvcnQgPHdl
YnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXIuaD4KICNpbXBvcnQgPHdlYnJ0Yy9zZGsvV2Vi
S2l0L1dlYktpdEVuY29kZXIuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8
d3RmL01lZGlhVGltZS5oPgogCisjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4K
KwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpMaWJXZWJSVEND
b2RlY3NQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQogICAgIDog
bV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbm5lY3Rpb24pCiAgICAgLCBtX3F1ZXVlKGNv
bm5lY3Rpb24uZ3B1UHJvY2VzcygpLmxpYldlYlJUQ0NvZGVjc1F1ZXVlKCkpCisgICAgLCBtX3Zp
ZGVvRnJhbWVPYmplY3RIZWFwKGNvbm5lY3Rpb24udmlkZW9GcmFtZU9iamVjdEhlYXAoKSkKIHsK
ICAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLmFkZFRocmVhZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgdGhpcyk7CiB9CkBAIC03NywxMiArODMsMjIgQEAgdm9pZCBMaWJXZWJSVEND
b2RlY3NQcm94eTo6Y2xvc2UoKQogCiBzdGF0aWMgRnVuY3Rpb248dm9pZChDVlBpeGVsQnVmZmVy
UmVmIHBpeGVsQnVmZmVyLCB1aW50MzJfdCB0aW1lU3RhbXBOcywgdWludDMyX3QgdGltZVN0YW1w
KT4gY3JlYXRlRGVjb2RlckNhbGxiYWNrKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCiB7
Ci0gICAgcmV0dXJuIFtjb25uZWN0aW9uID0gUmVmIHsgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jb25uZWN0aW9uKCkgfSwgcmVzb3VyY2VPd25lciA9IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3Mud2ViUHJvY2Vzc0lkZW50aXR5KCksIGlkZW50aWZpZXJdIChDVlBpeGVsQnVmZmVyUmVmIHBp
eGVsQnVmZmVyLCB1aW50MzJfdCB0aW1lU3RhbXBOcywgdWludDMyX3QgdGltZVN0YW1wKSB7Ci0g
ICAgICAgIGlmIChhdXRvIHNhbXBsZSA9IFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlOjpjcmVh
dGUocGl4ZWxCdWZmZXIsIE1lZGlhVGltZSh0aW1lU3RhbXBOcywgMSkpKSB7Ci0gICAgICAgICAg
ICBpZiAocmVzb3VyY2VPd25lcikKLSAgICAgICAgICAgICAgICBzYW1wbGUtPnNldE93bmVyc2hp
cElkZW50aXR5KHJlc291cmNlT3duZXIpOwotICAgICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzOjpDb21wbGV0ZWREZWNvZGluZyB7IGlkZW50aWZpZXIs
IHRpbWVTdGFtcCwgKnNhbXBsZSB9LCAwKTsKLSAgICAgICAgfQorICAgIHJldHVybiBbY29ubmVj
dGlvbiA9IFJlZiB7IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpIH0sIHJl
c291cmNlT3duZXIgPSBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLndlYlByb2Nlc3NJZGVudGl0
eSgpLCB2aWRlb0ZyYW1lT2JqZWN0SGVhcCA9IFJlZiB7IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MudmlkZW9GcmFtZU9iamVjdEhlYXAoKSB9LCBpZGVudGlmaWVyXSAoQ1ZQaXhlbEJ1ZmZlclJl
ZiBwaXhlbEJ1ZmZlciwgdWludDMyX3QgdGltZVN0YW1wTnMsIHVpbnQzMl90IHRpbWVTdGFtcCkg
IG11dGFibGUgeworICAgICAgICBhdXRvIHNhbXBsZSA9IFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZG
T2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUocGl4ZWxCdWZmZXIsIFdlYkNvcmU6Ok1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uOjpOb25lLCBmYWxzZSwgTWVkaWFUaW1lKHRpbWVTdGFtcE5zLCAxKSwg
eyB9KTsKKyAgICAgICAgaWYgKCFzYW1wbGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgYXV0byByZW1vdGVTYW1wbGUgPSBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRl
KCpzYW1wbGUpOworICAgICAgICBpZiAoIXJlbW90ZVNhbXBsZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBpZiAocmVzb3VyY2VPd25lcikKKyAgICAgICAgICAgIHJlbW90ZVNhbXBs
ZS0+c2V0T3duZXJzaGlwSWRlbnRpdHkocmVzb3VyY2VPd25lcik7CisKKyAgICAgICAgYXV0byBy
ZW1vdGVJZGVudGlmaWVyID0gdmlkZW9GcmFtZU9iamVjdEhlYXAtPmNyZWF0ZVZpZGVvRnJhbWUo
c2FtcGxlLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICByZW1vdGVTYW1wbGUtPmNsZWFySU9T
dXJmYWNlKCk7CisKKyAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRD
Q29kZWNzOjpDb21wbGV0ZWREZWNvZGluZyB7IGlkZW50aWZpZXIsIHRpbWVTdGFtcCwgKnJlbW90
ZVNhbXBsZSwgcmVtb3RlSWRlbnRpZmllciB9LCAwKTsKICAgICB9OwogfQogCkBAIC0yMTEsMTUg
KzIyNywyNiBAQCBzdGF0aWMgaW5saW5lIHdlYnJ0Yzo6VmlkZW9Sb3RhdGlvbiB0b1dlYlJUQ1Zp
ZGVvUm90YXRpb24oV2ViQ29yZTo6TWVkaWFTYW1wbGU6OgogCiAvLyBGb3IgcGVyZm9ybWFuY2Ug
cmVhc29ucywgdGhpcyBmdW5jdGlvbiBhY2Nlc3NlcyBtX2VuY29kZXJzIHdpdGhvdXQgbG9ja2lu
Zy4gVGhpcyBpcyBzYWZlIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBydW5zIG9uIHRoZSBsaWJXZWJS
VENDb2RlY3NRdWV1ZQogLy8gYW5kIG1fZW5jb2RlcnMgb25seSBnZXQgbW9kaWZpZWQgb24gdGhp
cyBxdWV1ZS4KLXZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmVuY29kZUZyYW1lKFJUQ0VuY29k
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgc2Ft
cGxlLCB1aW50MzJfdCB0aW1lU3RhbXAsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSkKK3Zv
aWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmVuY29kZUZyYW1lKFJUQ0VuY29kZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgc2FtcGxlLCB1aW50MzJf
dCB0aW1lU3RhbXAsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSwgc3RkOjpvcHRpb25hbDxS
ZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZT4gc2FtcGxlUmVmZXJlbmNlKQogeworICAgIFJl
dGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBwaXhlbEJ1ZmZlcjsKKyAgICBpZiAoc2FtcGxlUmVm
ZXJlbmNlKSB7CisgICAgICAgIGF1dG8gc2FtcGxlID0gbV92aWRlb0ZyYW1lT2JqZWN0SGVhcC0+
cmV0aXJlKFdURk1vdmUoKnNhbXBsZVJlZmVyZW5jZSksIDMwX3MpOworICAgICAgICBpZiAoIXNh
bXBsZSkgeworICAgICAgICAgICAgQVNTRVJUX0lTX1RFU1RJTkdfSVBDKCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXV0byBwbGF0Zm9ybVNhbXBsZSA9IHNhbXBs
ZS0+cGxhdGZvcm1TYW1wbGUoKTsKKyAgICAgICAgQVNTRVJUKHBsYXRmb3JtU2FtcGxlLnR5cGUg
PT0gV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZSk7CisgICAgICAg
IHBpeGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBs
ZUJ1ZmZlckdldEltYWdlQnVmZmVyKHBsYXRmb3JtU2FtcGxlLnNhbXBsZS5jbVNhbXBsZUJ1ZmZl
cikpOworICAgIH0KKwogICAgIEFTU0VSVChmaW5kRW5jb2RlcldpdGhvdXRMb2NrKGlkZW50aWZp
ZXIpKTsKICAgICBhdXRvKiBlbmNvZGVyID0gZmluZEVuY29kZXJXaXRob3V0TG9jayhpZGVudGlm
aWVyKTsKICAgICBpZiAoIWVuY29kZXIpCiAgICAgICAgIHJldHVybjsKIAogI2lmICFQTEFURk9S
TShNQUNDQVRBTFlTVCkKLSAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcGl4ZWxCdWZm
ZXI7CiAgICAgaWYgKHNhbXBsZS5zdXJmYWNlKCkpIHsKICAgICAgICAgaWYgKGF1dG8gYnVmZmVy
ID0gV2ViQ29yZTo6Y3JlYXRlQ1ZQaXhlbEJ1ZmZlcihzYW1wbGUuc3VyZmFjZSgpKSkKICAgICAg
ICAgICAgIHBpeGVsQnVmZmVyID0gV1RGTW92ZSgqYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4
IDUxZThhMzdkN2FjMmIzMjQ3YmE3MGQ5NDA0ZjIyODEzZDZlY2IxZmUuLmZmZDE1MzA0Mzc1Zjcy
ODgwYmIxOWIzOTNhMzVkOWRjOGFmZmJjMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAtMzAsNiArMzAs
NyBAQAogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIgog
I2luY2x1ZGUgIlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9D
QVJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQu
aD4KQEAgLTQyLDYgKzQzLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKK3N0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBtZWRpYVJlY29yZGVyRGVmYXVs
dFRpbWVvdXQgeyAzMF9zIH07CiAKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVNZWRpYVJlY29yZGVy
PiBSZW1vdGVNZWRpYVJlY29yZGVyOjpjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYg
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgTWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgYm9vbCByZWNvcmRBdWRpbywgYm9vbCByZWNvcmRWaWRlbywgY29uc3QgTWVkaWFSZWNv
cmRlclByaXZhdGVPcHRpb25zJiBvcHRpb25zKQogewpAQCAtNTUsNiArNTcsNyBAQCBSZW1vdGVN
ZWRpYVJlY29yZGVyOjpSZW1vdGVNZWRpYVJlY29yZGVyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIGdwdUNvbm5lY3RpbwogICAgIDogbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAg
ICAsIG1fd3JpdGVyKFdURk1vdmUod3JpdGVyKSkKKyAgICAsIG1fdmlkZW9GcmFtZU9iamVjdEhl
YXAoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy52aWRlb0ZyYW1lT2JqZWN0SGVhcCgpKQogewog
ICAgIGlmIChyZWNvcmRBdWRpbykKICAgICAgICAgbV9yaW5nQnVmZmVyID0gbWFrZVVuaXF1ZTxD
QVJpbmdCdWZmZXI+KCk7CkBAIC04NiwxMCArODksMTYgQEAgdm9pZCBSZW1vdGVNZWRpYVJlY29y
ZGVyOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90IG51bWJl
ck8KICAgICBtX3dyaXRlci0+YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoKm1fYXVkaW9CdWZmZXJM
aXN0LCBtX2Rlc2NyaXB0aW9uLCB0aW1lLCBudW1iZXJPZkZyYW1lcyk7CiB9CiAKLXZvaWQgUmVt
b3RlTWVkaWFSZWNvcmRlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlk
ZW9TYW1wbGUmJiByZW1vdGVTYW1wbGUpCit2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVv
U2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtb3RlU2FtcGxl
LCBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlPiBzYW1wbGVSZWZl
cmVuY2UpCiB7CiAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBzYW1wbGU7Ci0gICAgaWYgKCFyZW1v
dGVTYW1wbGUuc3VyZmFjZSgpKSB7CisgICAgaWYgKHNhbXBsZVJlZmVyZW5jZSkgeworICAgICAg
ICBzYW1wbGUgPSBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwLT5yZXRpcmUoV1RGTW92ZSgqc2FtcGxl
UmVmZXJlbmNlKSwgbWVkaWFSZWNvcmRlckRlZmF1bHRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFz
YW1wbGUpIHsKKyAgICAgICAgICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgfSBlbHNlIGlmICghcmVtb3RlU2FtcGxlLnN1cmZh
Y2UoKSkgewogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gbV9zaGFyZWRWaWRlb0ZyYW1lUmVh
ZGVyLnJlYWQoKTsKICAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyLmgKaW5kZXggYzY2MjlkYmM2Y2FiYjM2ZjYxYjdlNDYyN2QxZjUwNTA5Mzc2NWEw
Ni4uNjBiOGQwMjE0ZTc3YTUzY2MwNDVhMGY5ZmViODFhMzkwNDlkM2RkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
TWVkaWFSZWNvcmRlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
KyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNoYXJl
ZE1lbW9yeS5oIgogI2luY2x1ZGUgIlNoYXJlZFZpZGVvRnJhbWUuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oPgpAQCAtNTIsNiArNTMsNyBAQCBzdHJ1Y3Qg
TWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcDsKIGNsYXNzIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlOwogCiBjbGFzcyBSZW1vdGVNZWRp
YVJlY29yZGVyIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CkBAIC03Miw3ICs3NCw3
IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGF1ZGlv
U2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgY29u
c3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgdWludDY0X3QgbnVtYmVyT2ZG
cmFtZXMpOwogICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZSwgdWludDY0
X3QgbnVtYmVyT2ZGcmFtZXMpOwotICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29y
ZTo6UmVtb3RlVmlkZW9TYW1wbGUmJik7CisgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShX
ZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmLCBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJh
bWVSZWFkUmVmZXJlbmNlPik7CiAgICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJik7CiAgICAgdm9pZCBzdG9wUmVj
b3JkaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBwYXVzZShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtOTAsNiArOTIsNyBAQCBwcml2YXRlOgogICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vzc2lvblZUPiBtX2ltYWdl
VHJhbnNmZXJTZXNzaW9uOwogCiAgICAgU2hhcmVkVmlkZW9GcmFtZVJlYWRlciBtX3NoYXJlZFZp
ZGVvRnJhbWVSZWFkZXI7CisgICAgUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBtX3Zp
ZGVvRnJhbWVPYmplY3RIZWFwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmlu
CmluZGV4IGFjYWVmOGI4YzQwZGJkNWQ3ZmI5YjZjODg0OGY5ZGE0Njg4NzE0OTMuLjQ5OGYyODFh
ZjgwMTg3OGUwNTRkMzFlZTZlZDJiNzk3MDhiOTBlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVz
c2FnZXMuaW4KQEAgLTI2LDcgKzI2LDcgQEAKIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUmVjb3Jk
ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgQXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoV2ViS2l0
OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBzdG9yYWdlSGFuZGxlLCBXZWJDb3JlOjpDQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQog
ICAgIEF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRpbWUgdGltZSwgdWludDY0X3QgbnVtYmVy
T2ZGcmFtZXMpCi0gICAgVmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9T
YW1wbGUgc2FtcGxlKQorICAgIFZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZp
ZGVvU2FtcGxlIHNhbXBsZSwgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVS
ZWFkUmVmZXJlbmNlPiByZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSkKICAgICBGZXRjaERh
dGEoKSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIGJ1ZmZlciwgZG91YmxlIHRpbWVDb2RlKSBBc3lu
YwogICAgIFN0b3BSZWNvcmRpbmcoKSAtPiAoKSBBc3luYwogICAgIFBhdXNlKCkgLT4gKCkgQXN5
bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAppbmRleCA4YTAzNDlmMjMzOTMy
YzFkZjY3NWU5NmM4ZDNkMjUyNjE0MzdmNjJhLi42ZTBjMGYzMmE4YmM0NDEzOTFlZDI4M2M2YTI4
ODRhMjkzZDE5ZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCkBAIC0x
NDAsNyArMTQwLDYgQEAgdm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVl
dWVTYW1wbGVDVihXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYKIHsKICAgICBSZWZQdHI8TWVk
aWFTYW1wbGU+IHNhbXBsZTsKICAgICBpZiAoIXJlbW90ZVNhbXBsZS5zdXJmYWNlKCkpIHsKLSAg
ICAgICAgCiAgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBtX3NoYXJlZFZpZGVvRnJhbWVSZWFk
ZXIucmVhZCgpOwogICAgICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKaW5kZXggMTY4ZWNiMWVjYTc5MDI1OTQzYzBkODJmODdhZDdkNTllYWU5ZDAw
Ny4uMDlkNWYxOTI4Zjg3MDA2NjJjZDJlNmJlMjZkZDMzYWY3ZDBhNGNkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CkBAIC03NTEsNiArNzUxLDcgQEAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVn
eS5jcHAKIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCiBXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCiBXZWJQcm9jZXNzL0dQVS93
ZWJydGMvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAorV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1Jl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuY3BwCiBXZWJQcm9jZXNzL0dQVS93ZWJydGMv
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCiAKQEAgLTg4MSw2ICs4ODIsNyBAQCBSZW1v
dGVFeHRlcm5hbFRleHR1cmVNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVHUFVNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiBSZW1vdGVHUFVQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwTWVzc2FnZVJlY2VpdmVyLmNwcAorUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXBQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVZpZGVvRnJhbWVQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAKIFJlbW90ZVBpcGVsaW5lTGF5b3V0TWVzc2FnZVJlY2VpdmVyLmNwcAog
UmVtb3RlUXVlcnlTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxYTNmMDkwYWI5YmIwMTk3YjgyZjk3
OGFjZmUwOTcwMzM4MDdlOTg4Li40ZjUwMTQwODhmOGU4YzA1NDE5OTM4ZmVjZjcxMWM2MmViMjQ4
MTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTgzOCw2ICs4MzgsNyBAQAogCQk0MTBGMEQ0QzI3MDFFRkY5MDBGOTZERkMgLyogR1BV
UHJvY2Vzc0Nvbm5lY3Rpb25Jbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMEYwRDRCMjcwMUVGRUEwMEY5NkRG
QyAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvbkluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oICovOyB9
OwogCQk0MTFBOEREQjIwREREMUFDMDA2MEQzNEYgLyogV0tNb2NrTWVkaWFEZXZpY2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMUE4REQ5MjBEREI2
MDUwMDYwRDM0RiAvKiBXS01vY2tNZWRpYURldmljZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxMUIyMjY0MUUzNzFCQTYwMDRGNzM2MyAvKiBM
aWJXZWJSVENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTFCMjI2MjFFMzcxMjQ0MDA0RjczNjMgLyogTGliV2ViUlRDTmV0d29yay5oICov
OyB9OworCQk0MTFCODlERTI3QjUwNjg2MDBGOUVCRDMgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXBQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDExQjg5REQyN0I0MjY2MzAwRjlFQkQzIC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
UHJveHkuaCAqLzsgfTsKIAkJNDEyODdENEUyMjVEMUVDQjAwOUEzRTI2IC8qIFdlYlNvY2tldFRh
c2tDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxMjg3RDRCMjI1QzA1QzQwMDlBM0UyNiAvKiBXZWJTb2NrZXRUYXNrQ29jb2EubW0gKi87IH07
CiAJCTQxMzA3NUFDMURFODVGMzcwMDM5RUM2OSAvKiBOZXR3b3JrUlRDTW9uaXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1OUIxREU4NEZC
MDAwMzlFQzY5IC8qIE5ldHdvcmtSVENNb25pdG9yLmggKi87IH07CiAJCTQxMzA3NUFEMURFODVG
NTgwMDM5RUM2OSAvKiBMaWJXZWJSVENTb2NrZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NUEwMURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJS
VENTb2NrZXQuaCAqLzsgfTsKQEAgLTQwNjMsNiArNDA2NCwxMCBAQAogCQk0MTFBOEREOTIwRERC
NjA1MDA2MEQzNEYgLyogV0tNb2NrTWVkaWFEZXZpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tNb2NrTWVkaWFEZXZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDExQThEREEyMEREQjYwNTAwNjBEMzRGIC8qIFdLTW9ja01lZGlhRGV2aWNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLTW9ja01lZGlhRGV2aWNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExQjIyNjIxRTM3MTI0NDAwNEY3MzYz
IC8qIExpYldlYlJUQ05ldHdvcmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
TGliV2ViUlRDTmV0d29yay5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29y
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTFCODlEQTI3QjQyM0NCMDBGOUVC
RDMgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxMUI4OURCMjdCNDI2NjMwMEY5RUJEMyAvKiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTFCODlEQzI3QjQy
NjYzMDBGOUVCRDMgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5tZXNzYWdlcy5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5Lm1lc3NhZ2VzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTFCODlERDI3QjQyNjYzMDBGOUVCRDMgLyogUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
Mjg3RDRCMjI1QzA1QzQwMDlBM0UyNiAvKiBXZWJTb2NrZXRUYXNrQ29jb2EubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTb2NrZXRUYXNrQ29jb2EubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjg3RDRDMjI1QzA1QzUwMDlBM0UyNiAvKiBX
ZWJTb2NrZXRUYXNrQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
U29ja2V0VGFza0NvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjg3RDRE
MjI1QzE2MUYwMDlBM0UyNiAvKiBXZWJTb2NrZXRUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlNvY2tldFRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTY4ODUsNiArNjg5MCw3IEBACiAJCQkJMDdFMTlGMDYyM0Q0REM4ODAwOTRGRkI0IC8qIFJl
bW90ZVRleHRUcmFja1Byb3h5LmggKi8sCiAJCQkJN0I1QTNEQTgyN0E3RENCQzAwNkM2Rjk3IC8q
IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcCAqLywKIAkJCQk3QjVBM0RBNzI3QTdEQ0JD
MDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCAqLywKKwkJCQk0MTFCODlE
QTI3QjQyM0NCMDBGOUVCRDMgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMu
aW4gKi8sCiAJCQkJMDcxQkM1ODQyM0NDMkMwOTAwNjgwRDdDIC8qIFJlbW90ZVZpZGVvVHJhY2tQ
cm94eS5jcHAgKi8sCiAJCQkJMDcxQkM1ODUyM0NDMkMwOTAwNjgwRDdDIC8qIFJlbW90ZVZpZGVv
VHJhY2tQcm94eS5oICovLAogCQkJCTA3RTE5RjA1MjNENERDODgwMDk0RkZCNCAvKiBUZXh0VHJh
Y2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oICovLApAQCAtOTI2NCw2ICs5MjcwLDkgQEAK
IAkJCQk0MTc2RTg5MjIzQzM0RDZFMDAzRTgzRkUgLyogTWVkaWFSZWNvcmRlclByb3ZpZGVyLmgg
Ki8sCiAJCQkJNDE3MjE5OEMyM0I2MTJFODAwQUU1Njg2IC8qIFJUQ0RlY29kZXJJZGVudGlmaWVy
LmggKi8sCiAJCQkJNDE1ODY0OUEyM0JFMDkyNDAwQTBBNjFFIC8qIFJUQ0VuY29kZXJJZGVudGlm
aWVyLmggKi8sCisJCQkJNDExQjg5REIyN0I0MjY2MzAwRjlFQkQzIC8qIFJlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwUHJveHkuY3BwICovLAorCQkJCTQxMUI4OUREMjdCNDI2NjMwMEY5RUJEMyAv
KiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5LmggKi8sCisJCQkJNDExQjg5REMyN0I0
MjY2MzAwRjlFQkQzIC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkubWVzc2FnZXMu
aW4gKi8sCiAJCQkJNDFGQ0Q2QjcyM0NERTUzRDAwQzYyNTY3IC8qIFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5jcHAgKi8sCiAJCQkJNDFGQ0Q2QjMyM0NEQzYwNDAwQzYyNTY3IC8qIFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5oICovLAogCQkJCTQxRkNENkI4MjNDREU1M0UwMEM2MjU2NyAvKiBT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4gKi8sCkBAIC0xMzEzMyw2ICsxMzE0
Miw3IEBACiAJCQkJOUI0NzkwOEYyNTMxNTFDQzAwRUMxMUFCIC8qIEpTSVBDQmluZGluZy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzE2NjNFNUIyNEFFQUEyRjAwQzZBM0IyIC8qIExhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VYUENDb25zdGFudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTA5Mzc4MTRG
QjEyOEMwMDExMzhEOSAvKiBMYXllckhvc3RpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0MTFCODlERTI3QjUwNjg2MDBGOUVCRDMgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5MkRDMTExMkY4QkE0NjAwMTdBRjY1IC8qIExh
eWVyVHJlZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0RTkzNkZEMjQ0N0MyRDgwMDlG
QTNFMyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbElELmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzE0
MjcxODFDMjNGOEI3MDBENDExODMgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNWM1ZGUxODIxMjY3YmQ4NTZkZWU1NzcxNjVmNDU0
Y2JkNDI0MjdlYS4uMjhmMzc4NzYzOTNiYzNhYzU3ZTQ0ZmQ3M2VhMTI0NzdkMjQ5MmRlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVj
dGlvbi5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJSZW1vdGVNZWRpYUVuZ2luZUNv
bmZpZ3VyYXRpb25GYWN0b3J5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5LmgiCiAjaW5jbHVkZSAiU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZU1lc3NhZ2VzLmgiCkBAIC0xNjQsNiArMTY1LDEzIEBAIHZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rp
b246OnJlc2V0QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQoQXVkaW9N
CiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyKCkucmVzZXQoaWRlbnRpZmllcik7CiB9CisKK1JlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkmIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpyZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5KCkKK3sKKyAgICBpZiAoIW1fcmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXBQcm94eSkKKyAgICAgICAgbV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFBy
b3h5ID0gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eTo6Y3JlYXRlKCp0aGlzKTsKKyAg
ICByZXR1cm4gKm1fcmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eTsKK30KICNlbmRpZgog
CiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXImIEdQVVByb2Nlc3NDb25uZWN0aW9uOjptZWRpYVBs
YXllck1hbmFnZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9H
UFVQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDNmOThjYjEwOTc3NjM0NjZhYjIwNWRhYTAwZWE2YzUx
NmY5MTIzZjUuLjgxM2EwNTQ2OTcyY2MzMmFkNjJhYzlmYTI4ZDExZTU0Y2E1ZmVmNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
LmgKQEAgLTUxLDYgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJlbW90ZUF1
ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
OworY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eTsKIGNsYXNzIFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CiBjbGFzcyBXZWJQYWdlOwogc3RydWN0IEdQVVByb2Nl
c3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzOwpAQCAtNzcsNiArNzgsNyBAQCBw
dWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAg
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYgc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlcigpOwogICAgIHZvaWQgcmVzZXRBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdChBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50
aWZpZXIpOworICAgIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkmIHJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwUHJveHkoKTsKICNlbmRpZgogCiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyJiBtZWRpYVBsYXllck1hbmFnZXIoKTsKQEAgLTE0MCw2ICsxNDIsNyBAQCBwcml2YXRl
OgogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI+IG1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKKyAgICBSZWZQdHI8UmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXBQcm94eT4gbV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5OwogI2Vu
ZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShXRUJfQVVESU8pCiAgICAgUmVmUHRy
PFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyPiBtX2F1ZGlvU291cmNlUHJvdmlkZXJN
YW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCmluZGV4IGIyOTllMmU2MDhiMjI3ZDAzYzBm
YzJlYzQ2ZTU0N2RkZmMwNGQ1NTcuLjQ2MTc1ZTJlYTgyNzRkZDdkYmU3ZDU1Y2Y0ODU1NGQ5ZWJm
Mzk0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKQEAgLTMzLDE0ICszMywxNCBAQAogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotUmVmPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4gUmVtb3RlVmlk
ZW9GcmFtZVByb3h5OjpjcmVhdGUoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25u
ZWN0aW9uKQorUmVmPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4gUmVtb3RlVmlkZW9GcmFtZVByb3h5
OjpjcmVhdGUoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBQaXhl
bEJ1ZmZlckNhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UmVtb3RlVmlkZW9GcmFtZVByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBSZW1vdGVWaWRlb0Zy
YW1lSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJl
bW90ZVZpZGVvRnJhbWVQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgUmVtb3RlVmlkZW9GcmFt
ZUlkZW50aWZpZXI6OmdlbmVyYXRlKCksIFdURk1vdmUoY2FsbGJhY2spKSk7CiB9CiAKLVJlZjxS
ZW1vdGVWaWRlb0ZyYW1lUHJveHk+IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6Y3JlYXRlQWxyZWFk
eUluaXRpYWxpemVkKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklELCBSZW1v
dGVWaWRlb0ZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0aWVzIHByb3BlcnRpZXMp
CitSZWY8UmVtb3RlVmlkZW9GcmFtZVByb3h5PiBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmNyZWF0
ZUFscmVhZHlJbml0aWFsaXplZChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb25J
RCwgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydGllcyBwcm9w
ZXJ0aWVzLCBQaXhlbEJ1ZmZlckNhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgYXV0byBmcmFt
ZSA9IGFkb3B0UmVmKCpuZXcgUmVtb3RlVmlkZW9GcmFtZVByb3h5KGNvbm5lY3Rpb25JRCwgaWRl
bnRpZmllcikpOworICAgIGF1dG8gZnJhbWUgPSBhZG9wdFJlZigqbmV3IFJlbW90ZVZpZGVvRnJh
bWVQcm94eShjb25uZWN0aW9uSUQsIGlkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKSk7CiAg
ICAgZnJhbWUtPndhc0luaXRpYWxpemVkKHByb3BlcnRpZXMpOwogICAgIHJldHVybiBmcmFtZTsK
IH0KQEAgLTU2LDE5ICs1NiwyMSBAQCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMg
UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpwcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcgogICAgIH07CiB9
CiAKLVJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5KEdQVVByb2Nl
c3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgUmVtb3RlVmlkZW9GcmFtZUlkZW50
aWZpZXIgaWRlbnRpZmllcikKK1JlbW90ZVZpZGVvRnJhbWVQcm94eTo6UmVtb3RlVmlkZW9GcmFt
ZVByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgUmVtb3Rl
VmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUGl4ZWxCdWZmZXJDYWxsYmFjayYmIGNh
bGxiYWNrKQogICAgIDogbV9ncHVQcm9jZXNzQ29ubmVjdGlvbigmZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24pCiAgICAgLCBtX2Nvbm5lY3Rpb25JRChncHVQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9u
KCkudW5pcXVlSUQoKSkKICAgICAsIG1fcmVmZXJlbmNlVHJhY2tlcihpZGVudGlmaWVyKQorICAg
ICwgbV9waXhlbEJ1ZmZlckNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKQogewogICAgIG1fZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24tPmFkZENsaWVudCgqdGhpcyk7CiAgICAgaWYgKGlkZW50aWZpZXIu
cHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBQcm9jZXNzOjppZGVudGlmaWVyKCkpCiAgICAgICAgIG1f
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIGlkZW50aWZpZXIub2JqZWN0KCkudG9VSW50NjQoKSwgKnRoaXMpOwogfQogCi1SZW1vdGVW
aWRlb0ZyYW1lUHJveHk6OlJlbW90ZVZpZGVvRnJhbWVQcm94eShJUEM6OkNvbm5lY3Rpb246OlVu
aXF1ZUlEIGNvbm5lY3Rpb25JRCwgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmll
cikKK1JlbW90ZVZpZGVvRnJhbWVQcm94eTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5KElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklELCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBQaXhlbEJ1ZmZlckNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgOiBtX2Nv
bm5lY3Rpb25JRChjb25uZWN0aW9uSUQpCiAgICAgLCBtX3JlZmVyZW5jZVRyYWNrZXIoaWRlbnRp
ZmllcikKKyAgICAsIG1fcGl4ZWxCdWZmZXJDYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKIHsK
IH0KIApAQCAtOTgsNiArMTAwLDI0IEBAIFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlIFJl
bW90ZVZpZGVvRnJhbWVQcm94eTo6cmVhZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVmZXJlbmNl
VHJhY2tlci5yZWFkKCk7CiB9CiAKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpnZXRQaXhl
bEJ1ZmZlcigpCit7CisgICAgQVNTRVJUKG1fcGl4ZWxCdWZmZXJMb2NrLmlzSGVsZCgpKTsKKyAg
ICBzdGQ6OmV4Y2hhbmdlKG1fcGl4ZWxCdWZmZXJDYWxsYmFjaywgeyB9KSgqdGhpcywgW3RoaXNd
KGF1dG8gcGl4ZWxCdWZmZXIpIHsKKyAgICAgICAgbV9waXhlbEJ1ZmZlciA9IFdURk1vdmUocGl4
ZWxCdWZmZXIpOworICAgICAgICBtX3NlbWFwaG9yZS5zaWduYWwoKTsKKyAgICB9KTsKKyAgICBt
X3NlbWFwaG9yZS53YWl0KCk7Cit9CisKK0NWUGl4ZWxCdWZmZXJSZWYgUmVtb3RlVmlkZW9GcmFt
ZVByb3h5OjpwaXhlbEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgTG9ja2VyIGxvY2sobV9waXhlbEJ1
ZmZlckxvY2spOworICAgIGlmICghbV9waXhlbEJ1ZmZlciAmJiBtX3BpeGVsQnVmZmVyQ2FsbGJh
Y2spCisgICAgICAgIGNvbnN0X2Nhc3Q8UmVtb3RlVmlkZW9GcmFtZVByb3h5Kj4odGhpcyktPmdl
dFBpeGVsQnVmZmVyKCk7CisgICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXIuZ2V0KCk7Cit9CisKIE1l
ZGlhVGltZSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnByZXNlbnRhdGlvblRpbWUoKSBjb25zdAog
ewogICAgICh2b2lkKSB3YWl0Rm9yV2FzSW5pdGlhbGl6ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5o
CmluZGV4IGQ0MjQxMzMwNGMxOGZkOGM5ZWIzZDA2OWE1MGUyMmNkNmM5NGJlNjkuLjk3NmNjNmNl
NTJhYmM5MTM0MDU1MDcwZGU0YmRhODdhNDMxYmZhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaApA
QCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUg
IlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9WaWRlb0Zy
YW1lLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL3RocmVhZHMv
QmluYXJ5U2VtYXBob3JlLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsK
QEAgLTQ1LDggKzQ3LDEyIEBAIGNsYXNzIFJlbW90ZVZpZGVvRnJhbWVQcm94eSBmaW5hbCA6IHB1
YmxpYyBXZWJDb3JlOjpWaWRlb0ZyYW1lLCBwcml2YXRlIElQQzo6TWVzCiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVtb3RlVmlkZW9GcmFt
ZVByb3h5KTsKIHB1YmxpYzoKKyAgICB1c2luZyBQaXhlbEJ1ZmZlclJlc3VsdENhbGxiYWNrID0g
RnVuY3Rpb248dm9pZChSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4mJik+OworICAgIC8vIENv
bXBsZXRpb25IYW5kbGVyIGJ1dCBpdCBtaWdodCBub3QgYmUgY2FsbGVkIG9uIHRoZSBzYW1lIHRo
cmVhZC4KKyAgICB1c2luZyBQaXhlbEJ1ZmZlckNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25z
dCBSZW1vdGVWaWRlb0ZyYW1lUHJveHkmLCBQaXhlbEJ1ZmZlclJlc3VsdENhbGxiYWNrJiYpPjsK
KwogICAgIC8vIENyZWF0ZXMgYSBwcm9taXNlIG9mIGEgTWVkaWFTYW1wbGUgdGhhdCBleGlzdHMg
aW4gR1BVIHByb2Nlc3MuIFRoZSBvYmplY3QgY2FuIGJlIHVzZWQgYXMgb3V0IHBhcmFtZXRlciBv
ZiB0aGUgY3JlYXRpb24gbWVzc2FnZS4KLSAgICBzdGF0aWMgUmVmPFJlbW90ZVZpZGVvRnJhbWVQ
cm94eT4gY3JlYXRlKEdQVVByb2Nlc3NDb25uZWN0aW9uJik7CisgICAgc3RhdGljIFJlZjxSZW1v
dGVWaWRlb0ZyYW1lUHJveHk+IGNyZWF0ZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYsIFBpeGVsQnVm
ZmVyQ2FsbGJhY2smJiA9IHsgfSk7CiAKICAgICBzdHJ1Y3QgUHJvcGVydGllcyB7CiAgICAgICAg
IE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lOwpAQCAtNTksNyArNjUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBy
b3BlcnRpZXM+IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8UmVt
b3RlVmlkZW9GcmFtZVByb3h5PiBjcmVhdGVBbHJlYWR5SW5pdGlhbGl6ZWQoSVBDOjpDb25uZWN0
aW9uOjpVbmlxdWVJRCwgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIsIFByb3BlcnRpZXMpOwor
ICAgIHN0YXRpYyBSZWY8UmVtb3RlVmlkZW9GcmFtZVByb3h5PiBjcmVhdGVBbHJlYWR5SW5pdGlh
bGl6ZWQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZp
ZXIsIFByb3BlcnRpZXMsIFBpeGVsQnVmZmVyQ2FsbGJhY2smJik7CiAKICAgICBzdGF0aWMgUHJv
cGVydGllcyBwcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJik7CiAKQEAgLTY5
LDEwICs3NSwxMiBAQCBwdWJsaWM6CiAgICAgUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNl
IHdyaXRlKCkgY29uc3Q7CiAgICAgUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UgcmVhZCgp
IGNvbnN0OwogCisgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcigpIGNvbnN0IGZpbmFs
OworCiAgICAgc3RhdGljIGJvb2wgaGFuZGxlTWVzc2FnZVRvUmVtb3ZlZERlc3RpbmF0aW9uKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogcHJpdmF0ZToKLSAgICBSZW1vdGVWaWRl
b0ZyYW1lUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRp
Zmllcik7Ci0gICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVl
SUQsIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVWaWRlb0ZyYW1lUHJv
eHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciwgUGl4
ZWxCdWZmZXJDYWxsYmFjayYmKTsKKyAgICBSZW1vdGVWaWRlb0ZyYW1lUHJveHkoSVBDOjpDb25u
ZWN0aW9uOjpVbmlxdWVJRCwgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIsIFBpeGVsQnVmZmVy
Q2FsbGJhY2smJik7CiAgICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5KCk7CiAgICAgdm9pZCBkaXNj
b25uZWN0R1BVUHJvY2Vzc0lmTmVlZGVkKCkgY29uc3Q7CiAgICAgYm9vbCB3YWl0Rm9yV2FzSW5p
dGlhbGl6ZWQoKSBjb25zdCBXQVJOX1VOVVNFRF9SRVRVUk47CkBAIC05Nyw2ICsxMDUsOCBAQCBw
cml2YXRlOgogICAgIHZvaWQgd2FzSW5pdGlhbGl6ZWQoc3RkOjpvcHRpb25hbDxQcm9wZXJ0aWVz
PiYmKTsKICAgICBzdGF0aWMgaW5saW5lIFNlY29uZHMgZGVmYXVsdFNlbmRUaW1lb3V0ID0gMzBf
czsKIAorICAgIHZvaWQgZ2V0UGl4ZWxCdWZmZXIoKTsKKwogICAgIG11dGFibGUgR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24qIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24geyBudWxscHRyIH07CiAgICAgc3Rk
OjpvcHRpb25hbDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiBtX2Nvbm5lY3Rpb25JRDsKICAg
ICBSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlVHJhY2tlciBtX3JlZmVyZW5jZVRyYWNrZXI7CkBA
IC0xMDYsNiArMTE2LDEwIEBAIHByaXZhdGU6CiAgICAgVmlkZW9Sb3RhdGlvbiBtX3ZpZGVvUm90
YXRpb24geyBWaWRlb1JvdGF0aW9uOjpOb25lIH07CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1f
c2l6ZTsKICAgICB1aW50MzJfdCBtX3BpeGVsRm9ybWF0IHsgMCB9OworICAgIG11dGFibGUgTG9j
ayBtX3BpeGVsQnVmZmVyTG9jazsKKyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gbV9w
aXhlbEJ1ZmZlcjsKKyAgICBCaW5hcnlTZW1hcGhvcmUgbV9zZW1hcGhvcmU7CisgICAgUGl4ZWxC
dWZmZXJDYWxsYmFjayBtX3BpeGVsQnVmZmVyQ2FsbGJhY2s7CiB9OwogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBFbmNvZGVyPiB2b2lkIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllczo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eUlkZW50aWZpZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5SWRl
bnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3OTJjMDQ4NjUwZDBjYTI2NDYwMDA3MjM0NjcwMzI4MmU3
MmE0ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDQyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisj
aW5jbHVkZSAiT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCit1c2luZyBSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZp
ZXJSZWFkUmVmZXJlbmNlPFdlYkNvcmU6OlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPjsKK3Vz
aW5nIFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJXcml0
ZVJlZmVyZW5jZTxXZWJDb3JlOjpSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj47Cit1c2luZyBS
ZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlID0gT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxXZWJD
b3JlOjpSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj47Cit1c2luZyBSZW1vdGVWaWRlb0ZyYW1l
UmVmZXJlbmNlVHJhY2tlciA9IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyPFdlYkNv
cmU6OlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKaW5kZXggMjRj
Y2Y1NTdiMmY2NTk0MGJmNGJkZjA5OWYwYjlkM2YwN2NiZjNmNC4uNmJjMzcyMmQxOTU5ZGRhM2Q5
MzhjODYyNDVmNTViNDNiMWI3NjVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCkBAIC0zMiw2ICszMiw4IEBA
CiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJMaWJXZWJS
VENDb2RlY3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
IlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRl
b0ZyYW1lUHJveHkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DVlV0aWxpdGllcy5oPgpAQCAt
MTg0LDYgKzE4Niw3IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzOjplbnN1cmVHUFVQcm9jZXNzQ29u
bmVjdGlvbk9uTWFpblRocmVhZFdpdGhMb2NrKCkKICAgICBhdXRvJiBncHVDb25uZWN0aW9uID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAg
ICBncHVDb25uZWN0aW9uLmFkZENsaWVudCgqdGhpcyk7CiAgICAgbV9jb25uZWN0aW9uID0gJmdw
dUNvbm5lY3Rpb24uY29ubmVjdGlvbigpOworICAgIG1fcmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXBQcm94eSA9ICZncHVDb25uZWN0aW9uLnJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHko
KTsKICAgICBtX2Nvbm5lY3Rpb24tPmFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
TGliV2ViUlRDQ29kZWNzOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMpOwogCiAgICAgaWYg
KG1fbG9nZ2luZ0xldmVsKQpAQCAtMzE1LDEwICszMTgsMjMgQEAgdm9pZCBMaWJXZWJSVENDb2Rl
Y3M6OmZhaWxlZERlY29kaW5nKFJUQ0RlY29kZXJJZGVudGlmaWVyIGRlY29kZXJJZGVudGlmaWVy
KQogICAgICAgICBkZWNvZGVyLT5oYXNFcnJvciA9IHRydWU7CiB9CiAKLXZvaWQgTGliV2ViUlRD
Q29kZWNzOjpjb21wbGV0ZWREZWNvZGluZyhSVENEZWNvZGVySWRlbnRpZmllciBkZWNvZGVySWRl
bnRpZmllciwgdWludDMyX3QgdGltZVN0YW1wLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYm
IHJlbW90ZVNhbXBsZSkKK3ZvaWQgTGliV2ViUlRDQ29kZWNzOjpjb21wbGV0ZWREZWNvZGluZyhS
VENEZWNvZGVySWRlbnRpZmllciBkZWNvZGVySWRlbnRpZmllciwgdWludDMyX3QgdGltZVN0YW1w
LCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW90ZVNhbXBsZSwgc3RkOjpvcHRpb25h
bDxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj4gcmVtb3RlRnJhbWVJZGVudGlmaWVyKQogewog
ICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKIAorICAgIFJlZlB0cjxSZW1vdGVWaWRlb0Zy
YW1lUHJveHk+IHJlbW90ZVZpZGVvRnJhbWU7CisgICAgLy8gV2UgYWx3YXlzIGNyZWF0ZSBSZW1v
dGVWaWRlb0ZyYW1lUHJveHkgc28gdGhhdCB3ZSBjYW4gcmVsZWFzZSB0aGUgY29ycmVzcG9uZGlu
ZyBHUFVQcm9jZXNzIElPU3VyZmFjZSByaWdodCBhd2F5IGlmIHRoZXJlIGlzIG5vIHZpZGVvIHNv
dXJjZS4KKyAgICBpZiAocmVtb3RlRnJhbWVJZGVudGlmaWVyKSB7CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX2Nvbm5lY3Rpb25Mb2NrIH07CisgICAgICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94
eTo6UHJvcGVydGllcyBwcm9wZXJ0aWVzIHsgcmVtb3RlU2FtcGxlLnRpbWUoKSwgcmVtb3RlU2Ft
cGxlLm1pcnJvcmVkKCksIHJlbW90ZVNhbXBsZS5yb3RhdGlvbigpLCB7IHN0YXRpY19jYXN0PGZs
b2F0PihyZW1vdGVTYW1wbGUuc2l6ZSgpLndpZHRoKCkpLCBzdGF0aWNfY2FzdDxmbG9hdD4ocmVt
b3RlU2FtcGxlLnNpemUoKS5oZWlnaHQoKSkgfSwgcmVtb3RlU2FtcGxlLnZpZGVvRm9ybWF0KCkg
fTsKKyAgICAgICAgcmVtb3RlVmlkZW9GcmFtZSA9IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6Y3Jl
YXRlQWxyZWFkeUluaXRpYWxpemVkKG1fY29ubmVjdGlvbi0+dW5pcXVlSUQoKSwgKnJlbW90ZUZy
YW1lSWRlbnRpZmllciwgcHJvcGVydGllcywgW3Byb3h5ID0gbV9yZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcFByb3h5XShhdXRvJiBmcmFtZSwgYXV0byYmIGNhbGxiYWNrKSB7CisgICAgICAgICAg
ICBpZiAoIXByb3h5KSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcm94eS0+Z2V0Vmlk
ZW9GcmFtZUJ1ZmZlcihmcmFtZSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICB9KTsKKyAg
ICB9CiAgICAgLy8gRklYTUU6IERvIGVycm9yIGxvZ2dpbmcuCiAgICAgYXV0byogZGVjb2RlciA9
IG1fZGVjb2RlcnMuZ2V0KGRlY29kZXJJZGVudGlmaWVyKTsKICAgICBpZiAoIWRlY29kZXIpCkBA
IC0zMzIsNiArMzQ4LDE0IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzOjpjb21wbGV0ZWREZWNvZGlu
ZyhSVENEZWNvZGVySWRlbnRpZmllciBkZWNvZGVySWRlbnRpZmllciwKICAgICBpZiAoIWRlY29k
ZXItPmRlY29kZWRJbWFnZUNhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAocmVt
b3RlVmlkZW9GcmFtZSkgeworICAgICAgICB3ZWJydGM6OnZpZGVvRGVjb2RlclRhc2tDb21wbGV0
ZShkZWNvZGVyLT5kZWNvZGVkSW1hZ2VDYWxsYmFjaywgdGltZVN0YW1wLCByZW1vdGVTYW1wbGUu
dGltZSgpLnRvRG91YmxlKCksIHJlbW90ZVZpZGVvRnJhbWUubGVha1JlZigpLAorICAgICAgICAg
ICAgW10oYXV0byogcG9pbnRlcikgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVtb3RlVmlkZW9GcmFt
ZVByb3h5Kj4ocG9pbnRlciktPnBpeGVsQnVmZmVyKCk7IH0sCisgICAgICAgICAgICBbXShhdXRv
KiBwb2ludGVyKSB7IHN0YXRpY19jYXN0PFJlbW90ZVZpZGVvRnJhbWVQcm94eSo+KHBvaW50ZXIp
LT5kZXJlZigpOyB9LAorICAgICAgICAgICAgcmVtb3RlU2FtcGxlLnNpemUoKS53aWR0aCgpLCBy
ZW1vdGVTYW1wbGUuc2l6ZSgpLmhlaWdodCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwog
ICAgIGlmICghcmVtb3RlU2FtcGxlLnN1cmZhY2UoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGF1
dG8gcGl4ZWxCdWZmZXIgPSBjcmVhdGVDVlBpeGVsQnVmZmVyKHJlbW90ZVNhbXBsZS5zdXJmYWNl
KCkpLnZhbHVlX29yKG51bGxwdHIpOwpAQCAtMzQwLDcgKzM2NCw3IEBAIHZvaWQgTGliV2ViUlRD
Q29kZWNzOjpjb21wbGV0ZWREZWNvZGluZyhSVENEZWNvZGVySWRlbnRpZmllciBkZWNvZGVySWRl
bnRpZmllciwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHdlYnJ0Yzo6dmlkZW9EZWNv
ZGVyVGFza0NvbXBsZXRlKGRlY29kZXItPmRlY29kZWRJbWFnZUNhbGxiYWNrLCB0aW1lU3RhbXAs
IHBpeGVsQnVmZmVyLmdldCgpLCByZW1vdGVTYW1wbGUudGltZSgpLnRvRG91YmxlKCkpOworICAg
IHdlYnJ0Yzo6dmlkZW9EZWNvZGVyVGFza0NvbXBsZXRlKGRlY29kZXItPmRlY29kZWRJbWFnZUNh
bGxiYWNrLCB0aW1lU3RhbXAsIHJlbW90ZVNhbXBsZS50aW1lKCkudG9Eb3VibGUoKSwgcGl4ZWxC
dWZmZXIuZ2V0KCkpOwogfQogCiBzdGF0aWMgaW5saW5lIFN0cmluZyBmb3JtYXROYW1lRnJvbUNv
ZGVjVHlwZShMaWJXZWJSVENDb2RlY3M6OlR5cGUgdHlwZSkKQEAgLTQzOCwxMSArNDYyLDIxIEBA
IGludDMyX3QgTGliV2ViUlRDQ29kZWNzOjplbmNvZGVGcmFtZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmCiAgICAgaWYgKCFlbmNvZGVyLmNvbm5lY3Rpb24pCiAg
ICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7CiAKLSAgICBhdXRvIGJ1ZmZl
ciA9IGFkb3B0Q0Yod2VicnRjOjpwaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFtZSkpOwotICAgIGlm
ICghYnVmZmVyKSB7Ci0gICAgICAgIC8vIGJ1ZmZlciBpcyBub3QgbmF0aXZlLCB3ZSBuZWVkIHRv
IGNvcHkgdG8gc2hhcmVkIHZpZGVvIGZyYW1lLgotICAgICAgICBpZiAoIWNvcHlTaGFyZWRWaWRl
b0ZyYW1lKGVuY29kZXIsICpmcmFtZS52aWRlb19mcmFtZV9idWZmZXIoKSkpCi0gICAgICAgICAg
ICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOworICAgIHN0ZDo6b3B0aW9uYWw8UmVt
b3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2U+IHJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNl
OworICAgIGlmIChhdXRvIHByb3ZpZGVyID0gd2VicnRjOjp2aWRlb0ZyYW1lQnVmZmVyUHJvdmlk
ZXIoZnJhbWUpKSB7CisgICAgICAgIGF1dG8mIG1lZGlhU2FtcGxlID0gKnN0YXRpY19jYXN0PE1l
ZGlhU2FtcGxlKj4ocHJvdmlkZXIpOworICAgICAgICBpZiAoaXM8UmVtb3RlVmlkZW9GcmFtZVBy
b3h5PihtZWRpYVNhbXBsZSkpCisgICAgICAgICAgICByZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVy
ZW5jZSA9IGRvd25jYXN0PFJlbW90ZVZpZGVvRnJhbWVQcm94eT4obWVkaWFTYW1wbGUpLnJlYWQo
KTsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gYnVmZmVyOworICAg
IGlmICghcmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UpIHsKKyAgICAgICAgYnVmZmVyID0g
YWRvcHRDRih3ZWJydGM6OnBpeGVsQnVmZmVyRnJvbUZyYW1lKGZyYW1lKSk7CisgICAgICAgIGlm
ICghYnVmZmVyKSB7CisgICAgICAgICAgICAvLyBidWZmZXIgaXMgbm90IG5hdGl2ZSwgd2UgbmVl
ZCB0byBjb3B5IHRvIHNoYXJlZCB2aWRlbyBmcmFtZS4KKyAgICAgICAgICAgIGlmICghY29weVNo
YXJlZFZpZGVvRnJhbWUoZW5jb2RlciwgKmZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOworICAgICAgICB9
CiAgICAgfQogICAgIGF1dG8gc2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShidWZm
ZXIuZ2V0KCksIE1lZGlhVGltZShmcmFtZS50aW1lc3RhbXBfdXMoKSAqIDEwMDAsIDEwMDAwMDAp
LCB0b01lZGlhU2FtcGxlVmlkZW9Sb3RhdGlvbihmcmFtZS5yb3RhdGlvbigpKSwgUmVtb3RlVmlk
ZW9TYW1wbGU6OlNob3VsZENoZWNrRm9ySU9TdXJmYWNlOjpObyk7CiAgICAgaWYgKGJ1ZmZlciAm
JiAhc2FtcGxlLT5zdXJmYWNlKCkpIHsKQEAgLTQ1MSw3ICs0ODUsNyBAQCBpbnQzMl90IExpYldl
YlJUQ0NvZGVjczo6ZW5jb2RlRnJhbWUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qgd2VicnRjOjpW
aWRlb0ZyYW1lJgogICAgICAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsK
ICAgICB9CiAKLSAgICBlbmNvZGVyLmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJU
Q0NvZGVjc1Byb3h5OjpFbmNvZGVGcmFtZSB7IGVuY29kZXIuaWRlbnRpZmllciwgKnNhbXBsZSwg
ZnJhbWUudGltZXN0YW1wKCksIHNob3VsZEVuY29kZUFzS2V5RnJhbWUgfSwgMCk7CisgICAgZW5j
b2Rlci5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6RW5j
b2RlRnJhbWUgeyBlbmNvZGVyLmlkZW50aWZpZXIsICpzYW1wbGUsIGZyYW1lLnRpbWVzdGFtcCgp
LCBzaG91bGRFbmNvZGVBc0tleUZyYW1lLCByZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSB9
LCAwKTsKICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCmlu
ZGV4IDI5NTJlMGJiZjQ2ZTUyMDhkMDVjM2Y5YzkyYjY2OWIyOTYxODAwZDMuLjQ4ZDczMzg3ZDU3
M2E1OWRhZWU5NGVjOWM4NmRjZTcwZjY5YmQ0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUlRDRGVjb2Rlcklk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENFbmNvZGVySWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkVmlkZW9GcmFt
ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oPgogI2luY2x1
ZGUgPG1hcD4KQEAgLTYxLDYgKzYyLDggQEAgc3RydWN0IFdlYktpdEVuY29kZWRGcmFtZUluZm87
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cFByb3h5OworCiBjbGFzcyBMaWJXZWJSVENDb2RlY3MgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9u
OjpUaHJlYWRNZXNzYWdlUmVjZWl2ZXJSZWZDb3VudGVkLCBwdWJsaWMgR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb246OkNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBA
IC0xMjksNyArMTMyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0aW9u
TWF5Tm9Mb25nZXJCZU5lZWRlZCgpOwogCiAgICAgdm9pZCBmYWlsZWREZWNvZGluZyhSVENEZWNv
ZGVySWRlbnRpZmllcik7Ci0gICAgdm9pZCBjb21wbGV0ZWREZWNvZGluZyhSVENEZWNvZGVySWRl
bnRpZmllciwgdWludDMyX3QgdGltZVN0YW1wLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYm
KTsKKyAgICB2b2lkIGNvbXBsZXRlZERlY29kaW5nKFJUQ0RlY29kZXJJZGVudGlmaWVyLCB1aW50
MzJfdCB0aW1lU3RhbXAsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYsIHN0ZDo6b3B0aW9u
YWw8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+KTsKICAgICB2b2lkIGNvbXBsZXRlZEVuY29k
aW5nKFJUQ0VuY29kZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UmJiwgY29uc3Qgd2Vi
cnRjOjpXZWJLaXRFbmNvZGVkRnJhbWVJbmZvJik7CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZm
ZXJSZWY+IGNvbnZlcnRUb0JHUkEoQ1ZQaXhlbEJ1ZmZlclJlZik7CiAKQEAgLTE1MCw2ICsxNTMs
NyBAQCBwcml2YXRlOgogCiAgICAgTG9jayBtX2Nvbm5lY3Rpb25Mb2NrOwogICAgIFJlZlB0cjxJ
UEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbiBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY29ubmVj
dGlvbkxvY2spOworICAgIFJlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5PiBt
X3JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkgV1RGX0dVQVJERURfQllfTE9DSyhtX2Nv
bm5lY3Rpb25Mb2NrKTsKICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZCgpPj4gbV90YXNrc1RvRGlz
cGF0Y2hBZnRlckVzdGFibGlzaGluZ0Nvbm5lY3Rpb247CiAKICAgICBSZWY8V29ya1F1ZXVlPiBt
X3F1ZXVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluCmluZGV4IDI1ZjI3ZmVhODNkZTdi
NTZmY2FmZDhkMWY4ZjM4YTM0N2FiMDZjYmQuLjdkYjc5NTA4MWVhNWYwNjAyZjZmMjI2MjdiNDQ1
NTUzYThiNzA3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0
LDcgQEAKIAogbWVzc2FnZXMgLT4gTGliV2ViUlRDQ29kZWNzIE5vdFJlZkNvdW50ZWQgewogICAg
IEZhaWxlZERlY29kaW5nKFdlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikK
LSAgICBDb21wbGV0ZWREZWNvZGluZyhXZWJLaXQ6OlJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2Ft
cGxlKQorICAgIENvbXBsZXRlZERlY29kaW5nKFdlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgdWludDMyX3QgdGltZVN0YW1wLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBs
ZSBzYW1wbGUsIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmll
cj4gcmVtb3RlRnJhbWVJZGVudGlmaWVyKQogCiAgICAgQ29tcGxldGVkRW5jb2RpbmcoV2ViS2l0
OjpSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0
YSwgc3RydWN0IHdlYnJ0Yzo6V2ViS2l0RW5jb2RlZEZyYW1lSW5mbyBpbmZvKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQ
cml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVj
b3JkZXJQcml2YXRlLmNwcAppbmRleCBkMTI5Y2ZmN2UzMzJiOTZiMTU4NTkxNGI5YjFjYjQ4MzIx
ODI4ZWNlLi5iYmYxNDY0NWJmMmE2NDA3NDA2YTQ2Yzc3YzFkN2EzODI2N2E3M2Q4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJp
dmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFS
ZWNvcmRlclByaXZhdGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlck1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZWNvcmRlck1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVN0
cmVhbVByaXZhdGUuaD4KQEAgLTEwMiwxMCArMTAzLDE0IEBAIHZvaWQgTWVkaWFSZWNvcmRlclBy
aXZhdGU6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUsIFZpZGVvU2Ft
cGxlCiAgICAgICAgIHJlbW90ZVNhbXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUobV9i
bGFja0ZyYW1lLmdldCgpLCBzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpLCBzYW1wbGUudmlkZW9S
b3RhdGlvbigpLCBSZW1vdGVWaWRlb1NhbXBsZTo6U2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2U6Ok5v
KTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2JsYWNrRnJhbWUgPSBudWxscHRyOworCiAgICAg
ICAgIHJlbW90ZVNhbXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoc2FtcGxlLCBSZW1v
dGVWaWRlb1NhbXBsZTo6U2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2U6Ok5vKTsKICAgICB9CiAKLSAg
ICBpZiAoIXJlbW90ZVNhbXBsZS0+c3VyZmFjZSgpKSB7CisgICAgc3RkOjpvcHRpb25hbDxSZW1v
dGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZT4gcmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2U7
CisgICAgaWYgKGlzPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4oc2FtcGxlKSkKKyAgICAgICAgcmVt
b3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UgPSBkb3duY2FzdDxSZW1vdGVWaWRlb0ZyYW1lUHJv
eHk+KHNhbXBsZSkucmVhZCgpOworICAgIGVsc2UgaWYgKCFyZW1vdGVTYW1wbGUtPnN1cmZhY2Uo
KSkgewogICAgICAgICAvLyBidWZmZXIgaXMgbm90IElPU3VyZmFjZSwgd2UgbmVlZCB0byBjb3B5
IHRvIHNoYXJlZCB2aWRlbyBmcmFtZS4KICAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVtb3Rl
U2FtcGxlLT5pbWFnZUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICBpZiAoIWNvcHlTaGFyZWRWaWRl
b0ZyYW1lKGJ1ZmZlcikpCkBAIC0xMTgsNyArMTIzLDcgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJp
dmF0ZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlkZW9TYW1w
bGUKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
UmVtb3RlTWVkaWFSZWNvcmRlcjo6VmlkZW9TYW1wbGVBdmFpbGFibGUgeyBXVEZNb3ZlKCpyZW1v
dGVTYW1wbGUpIH0sIG1faWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpWaWRlb1NhbXBsZUF2YWlsYWJsZSB7IFdURk1vdmUo
KnJlbW90ZVNhbXBsZSksIHJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlIH0sIG1faWRlbnRp
Zmllcik7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJ1ZmZlcj4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXBQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGZiOTk4NzllNGNmY2M1Zjg1
OTU5NzYzYzU1M2IxYWQ1YjA2NDAxYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuY3Bw
CkBAIC0wLDAgKzEsMTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuaCIKKworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCisK
KyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eU1lc3NhZ2VzLmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eT4gUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eTo6Y3JlYXRlKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBj
b25uZWN0aW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwUHJveHkoY29ubmVjdGlvbikpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcFByb3h5OjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5KEdQVVByb2Nlc3NDb25u
ZWN0aW9uJiBjb25uZWN0aW9uKQorICAgIDogbV9jb25uZWN0aW9uSUQoY29ubmVjdGlvbi5jb25u
ZWN0aW9uKCkudW5pcXVlSUQoKSkKKyAgICAsIG1fcXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIlJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkiLCBXb3JrUXVldWU6OlFPUzo6VXNlckludGVy
YWN0aXZlKSkKK3sKKyAgICBjb25uZWN0aW9uLmFkZENsaWVudCgqdGhpcyk7CisgICAgY29ubmVj
dGlvbi5jb25uZWN0aW9uKCkuYWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
cXVldWUsIHRoaXMpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5Ojp+UmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSgpCit7CisgICAgY2xlYXJDYWxsYmFja3MoKTsK
K30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5OjpncHVQcm9jZXNzQ29u
bmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAg
IHsKKyAgICAgICAgTG9ja2VyIGxvY2sobV9jb25uZWN0aW9uTG9jayk7CisgICAgICAgIG1fY29u
bmVjdGlvbklEID0geyB9OworICAgIH0KKyAgICBjb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5yZW1v
dmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgY2xlYXJDYWxsYmFja3Mo
KTsKK30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5OjpjbGVhckNhbGxi
YWNrcygpCit7CisgICAgSGFzaE1hcDxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciwgQ2FsbGJh
Y2s+IGNhbGxiYWNrczsKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrKG1fY2FsbGJhY2tzTG9j
ayk7CisgICAgICAgIGNhbGxiYWNrcyA9IHN0ZDo6ZXhjaGFuZ2UobV9jYWxsYmFja3MsIHsgfSk7
CisgICAgfQorICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MudmFsdWVzKCkpCisg
ICAgICAgIGNhbGxiYWNrKHsgfSk7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXBQcm94eTo6c2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmIHNl
bWFwaG9yZSkKK3sKKyAgICBtX3NoYXJlZFZpZGVvRnJhbWVSZWFkZXIuc2V0U2VtYXBob3JlKFdU
Rk1vdmUoc2VtYXBob3JlKSk7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQ
cm94eTo6c2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeShjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZSYgaXBjSGFuZGxlKQoreworICAgIG1fc2hhcmVkVmlkZW9GcmFtZVJlYWRlci5zZXRTaGFy
ZWRNZW1vcnkoaXBjSGFuZGxlKTsKK30KKworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94
eTo6Q2FsbGJhY2sgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eTo6dGFrZUNhbGxiYWNr
KFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgTG9ja2VyIGxv
Y2sobV9jYWxsYmFja3NMb2NrKTsKKyAgICByZXR1cm4gbV9jYWxsYmFja3MudGFrZShpZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5Ojp2aWRlb0Zy
YW1lQnVmZmVyTm90Rm91bmQoUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllcikK
K3sKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IHRha2VDYWxsYmFjayhpZGVudGlmaWVyKSkKKyAg
ICAgICAgY2FsbGJhY2sobnVsbHB0cik7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXBQcm94eTo6bmV3VmlkZW9GcmFtZUJ1ZmZlcihSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmll
ciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9zaGFyZWRWaWRlb0ZyYW1lUmVh
ZGVyLnJlYWQoKTsKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IHRha2VDYWxsYmFjayhpZGVudGlm
aWVyKSkKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKK30KKwordm9pZCBSZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5OjpnZXRWaWRlb0ZyYW1lQnVmZmVyKGNvbnN0IFJl
bW90ZVZpZGVvRnJhbWVQcm94eSYgZnJhbWUsIENhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAg
eworICAgICAgICBMb2NrZXIgbG9jayhtX2NhbGxiYWNrc0xvY2spOworICAgICAgICBBU1NFUlQo
IW1fY2FsbGJhY2tzLmNvbnRhaW5zKGZyYW1lLmlkZW50aWZpZXIoKSkpOworICAgICAgICBtX2Nh
bGxiYWNrcy5hZGQoZnJhbWUuaWRlbnRpZmllcigpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAg
fQorICAgIExvY2tlciBsb2NrKG1fY29ubmVjdGlvbkxvY2spOworICAgIGlmICghbV9jb25uZWN0
aW9uSUQpIHsKKyAgICAgICAgdmlkZW9GcmFtZUJ1ZmZlck5vdEZvdW5kKGZyYW1lLmlkZW50aWZp
ZXIoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5k
KG1fY29ubmVjdGlvbklELCBNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6Okdl
dFZpZGVvRnJhbWVCdWZmZXIoZnJhbWUucmVhZCgpKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNw
YXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworfQorCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYz
ZTg5MzRmZDk5NjJjNjY2ZDM5NjVlNTc5NzEyMDk3ZjBmY2QzYmQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcFByb3h5LmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJM
RShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJHUFVQ
cm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1
ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU2hhcmVkVmlkZW9G
cmFtZS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CisK
K3VzaW5nIENWUGl4ZWxCdWZmZXJQb29sUmVmID0gc3RydWN0IF9fQ1ZQaXhlbEJ1ZmZlclBvb2wq
OworCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIENvbm5lY3Rpb247CitjbGFzcyBEZWNvZGVyOwor
fQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlVmlkZW9GcmFtZVByb3h5Owor
CitjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5IDogcHVibGljIElQQzo6Q29u
bmVjdGlvbjo6V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb246OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5PiBjcmVhdGUoR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24mKTsKKyAgICB+UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94
eSgpOworCisgICAgdXNpbmcgQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJldGFpblB0cjxDVlBp
eGVsQnVmZmVyUmVmPiYmKT47CisgICAgdm9pZCBnZXRWaWRlb0ZyYW1lQnVmZmVyKGNvbnN0IFJl
bW90ZVZpZGVvRnJhbWVQcm94eSYsIENhbGxiYWNrJiYpOworCitwcml2YXRlOgorICAgIGV4cGxp
Y2l0IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24m
KTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcworICAgIHZvaWQgc2V0U2hhcmVkVmlk
ZW9GcmFtZVNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmKTsKKyAgICB2b2lkIHNldFNoYXJlZFZp
ZGVvRnJhbWVNZW1vcnkoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKTsKKyAgICB2b2lk
IHZpZGVvRnJhbWVCdWZmZXJOb3RGb3VuZChSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcik7Cisg
ICAgdm9pZCBuZXdWaWRlb0ZyYW1lQnVmZmVyKFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyKTsK
KworICAgIC8vIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQKKyAgICB2b2lkIGdwdVByb2Nl
c3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKTsKKworICAgIHZvaWQg
Y2xlYXJDYWxsYmFja3MoKTsKKyAgICBDYWxsYmFjayB0YWtlQ2FsbGJhY2soUmVtb3RlVmlkZW9G
cmFtZUlkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIExvY2sgbV9jb25uZWN0aW9uTG9jazsK
KyAgICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIG1fY29ubmVjdGlvbklEIFdURl9HVUFSREVE
X0JZX0xPQ0sobV9jb25uZWN0aW9uTG9jayk7CisgICAgTG9jayBtX2NhbGxiYWNrc0xvY2s7Cisg
ICAgSGFzaE1hcDxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciwgQ2FsbGJhY2s+IG1fY2FsbGJh
Y2tzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jYWxsYmFja3NMb2NrKTsKKyAgICBSZWY8V29ya1F1
ZXVlPiBtX3F1ZXVlOworICAgIFNoYXJlZFZpZGVvRnJhbWVSZWFkZXIgbV9zaGFyZWRWaWRlb0Zy
YW1lUmVhZGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXBQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkubWVzc2FnZXMuaW4KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDdlMGQ2ODM4N2JmMzlkNDcwYzY4MDY5NzIyMDI2NjgxZjA5ODlhOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMiBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworbWVzc2Fn
ZXMgLT4gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAg
ICBTZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlKElQQzo6U2VtYXBob3JlIHNlbWFwaG9yZSkK
KyAgICBTZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5KFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUgc3RvcmFnZUhhbmRsZSkKKyAgICBWaWRlb0ZyYW1lQnVmZmVyTm90Rm91bmQoV2ViS2l0
OjpSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIE5ld1ZpZGVvRnJh
bWVCdWZmZXIoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyKQor
fQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpICYm
IEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCmluZGV4
IGMyOTc4MzkzOTY1NmZhMGIwMDFmYzAwMTgwN2RkOTQxOTNkM2I5YmYuLjRhODJlZTExNmU3MTRl
YTliNzUwMGVlMjUyODhkOTI2MTUyZWI5YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmNwcApAQCAtMTQ0LDggKzE0NCw4IEBAIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpl
bnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiAgICAgICAgIHJldHVybjsKICAgICBp
ZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoaXM8
UmVtb3RlVmlkZW9GcmFtZVByb3h5PihzYW1wbGUpKSB7CiAKKyAgICBpZiAoaXM8UmVtb3RlVmlk
ZW9GcmFtZVByb3h5PihzYW1wbGUpKSB7CiAgICAgICAgIGF1dG8mIHJlbW90ZVNhbXBsZSA9IGRv
d25jYXN0PFJlbW90ZVZpZGVvRnJhbWVQcm94eT4oc2FtcGxlKTsKICAgICAgICAgbV9jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkVucXVl
dWVTYW1wbGUgeyByZW1vdGVTYW1wbGUucmVhZCgpIH0sIG1faWRlbnRpZmllcik7CiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1v
dGVDYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwCmluZGV4IGM3M2YxY2JiOGY0NTI1ZDY3
MWVjNGU2OWQzY2FhZjc3NWVhNmZiNWIuLjE1NmE5ZWFjZmY5OGQ3MDU5Y2FlMmVlNTdjNWI2MTg4
MjhlMWMwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1v
dGVDYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmNwcApAQCAtMjgsNiArMjgsNyBAQAog
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlbW90ZUNhcHR1cmVTYW1wbGVNYW5h
Z2VyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5
LmgiCiAjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiU2hhcmVk
UmluZ0J1ZmZlclN0b3JhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCkBAIC0xMzQsNiAr
MTM1LDEyIEBAIHZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OmRpZFVwZGF0ZVNvdXJj
ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKiBjb25uCiAgICAgc2V0Q29ubmVjdGlvbihjb25u
ZWN0aW9uKTsKIH0KIAordm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6c2V0UmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eShSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5
KiBwcm94eSkKK3sKKyAgICBMb2NrZXIgbG9jayhtX3JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
UHJveHlMb2NrKTsKKyAgICBtX3JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkgPSBwcm94
eTsKK30KKwogdm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6ZGlzcGF0Y2hUb1RocmVh
ZChGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2go
V1RGTW92ZShjYWxsYmFjaykpOwpAQCAtMTU3LDggKzE2NCwxOSBAQCB2b2lkIFJlbW90ZUNhcHR1
cmVTYW1wbGVNYW5hZ2VyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShSZWFsdGltZU1lZGlhU291cmNl
SWRlbnRpZgogCiAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiB2aWRlb0ZyYW1lOwogICAgIC8vIFdl
IGFsd2F5cyBjcmVhdGUgUmVtb3RlVmlkZW9GcmFtZVByb3h5IHNvIHRoYXQgd2UgY2FuIHJlbGVh
c2UgdGhlIGNvcnJlc3BvbmRpbmcgR1BVUHJvY2VzcyBJT1N1cmZhY2UgcmlnaHQgYXdheSBpZiB0
aGVyZSBpcyBubyB2aWRlbyBzb3VyY2UuCi0gICAgaWYgKHJlbW90ZUlkZW50aWZpZXIpCi0gICAg
ICAgIHZpZGVvRnJhbWUgPSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmNyZWF0ZUFscmVhZHlJbml0
aWFsaXplZChtX2Nvbm5lY3Rpb24tPnVuaXF1ZUlEKCksICpyZW1vdGVJZGVudGlmaWVyLCB7IHNh
bXBsZS50aW1lKCksIHNhbXBsZS5taXJyb3JlZCgpLCBzYW1wbGUucm90YXRpb24oKSwgeyBzdGF0
aWNfY2FzdDxmbG9hdD4oc2FtcGxlLnNpemUoKS53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHNhbXBsZS5zaXplKCkuaGVpZ2h0KCkpIH0sIHNhbXBsZS52aWRlb0Zvcm1hdCgpIH0pOworICAg
IGlmIChyZW1vdGVJZGVudGlmaWVyKSB7CisgICAgICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6
UHJvcGVydGllcyBwcm9wZXJ0aWVzIHsgc2FtcGxlLnRpbWUoKSwgc2FtcGxlLm1pcnJvcmVkKCks
IHNhbXBsZS5yb3RhdGlvbigpLCB7IHN0YXRpY19jYXN0PGZsb2F0PihzYW1wbGUuc2l6ZSgpLndp
ZHRoKCkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oc2FtcGxlLnNpemUoKS5oZWlnaHQoKSkgfSwgc2Ft
cGxlLnZpZGVvRm9ybWF0KCkgfTsKKyAgICAgICAgCisgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVk
IHRvIGVpdGhlciBnZXQgR1BVUHJvY2VzcyBvciBVSVByb2Nlc3Mgb2JqZWN0IGhlYXAgcHJveHku
IEZvciBub3cgd2UgYWx3YXlzIGdvIHRvIEdQVVByb2Nlc3MuCisgICAgICAgIExvY2tlciBsb2Nr
KG1fcmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eUxvY2spOworICAgICAgICB2aWRlb0Zy
YW1lID0gUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpjcmVhdGVBbHJlYWR5SW5pdGlhbGl6ZWQobV9j
b25uZWN0aW9uLT51bmlxdWVJRCgpLCAqcmVtb3RlSWRlbnRpZmllciwgcHJvcGVydGllcywgW3By
b3h5ID0gbV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5XShhdXRvJiBmcmFtZSwgYXV0
byYmIGNhbGxiYWNrKSB7CisgICAgICAgICAgICBpZiAoIXByb3h5KSB7CisgICAgICAgICAgICAg
ICAgY2FsbGJhY2soeyB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBwcm94eS0+Z2V0VmlkZW9GcmFtZUJ1ZmZlcihmcmFtZSwgV1RGTW92ZShj
YWxsYmFjaykpOworICAgICAgICB9KTsKKyAgICB9CiAKICAgICBhdXRvIGl0ZXJhdG9yID0gbV92
aWRlb1NvdXJjZXMuZmluZChpZGVudGlmaWVyKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV92aWRl
b1NvdXJjZXMuZW5kKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmgKaW5kZXggN2NmMjBkN2M1MDk0
ZmRiYTM3Njc5MjcwMzZhYTg2NDI5YzlmMGY3YS4uYmYxZGE5ZGRjZTgwMTQwOThiNWEyNWFiZjU0
NzQ1ODQwNTE3MmEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmgKQEAgLTM5LDYgKzM5LDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2Vi
QXVkaW9CdWZmZXJMaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNDcsNiArNDgsNyBAQCBjbGFzcyBSZW1vdGVWaWRlb1NhbXBsZTsKIH0KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CitjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5Owog
CiBjbGFzcyBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlciA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rp
b246OlRocmVhZE1lc3NhZ2VSZWNlaXZlclJlZkNvdW50ZWQgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwpAQCAtNjEsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVTb3Vy
Y2UoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCBk
aWRVcGRhdGVTb3VyY2VDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiopOworICAgIHZvaWQgc2V0
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eShSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cFByb3h5Kik7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpOwogCkBAIC0xMjAsNiArMTIzLDkgQEAgcHJpdmF0ZToKICAgICAvLyBi
YWNrZ3JvdW5kIHRocmVhZCBtZW1iZXIKICAgICBIYXNoTWFwPFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQXVkaW8+PiBtX2F1ZGlv
U291cmNlczsKICAgICBIYXNoTWFwPFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlm
aWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW8+PiBtX3ZpZGVvU291cmNlczsKKworICAg
IExvY2sgbV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5TG9jazsKKyAgICBSZWZQdHI8
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eT4gbV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcFByb3h5IFdURl9HVUFSREVEX0JZX0xPQ0sobV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cFByb3h5TG9jayk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIu
Y3BwCmluZGV4IDFlZTkyMzA2OWNkYzU4YzlkN2EyMTAyN2VjOTQ2NjMwYjJjMGViMWUuLjcxMWI1
NTg1YTVkNTk2NmIzNWI5NDA5YTNjOTQyOTgyOWYxZTM3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNw
cApAQCAtMjMwLDEyICsyMzAsMTkgQEAgdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6QXVk
aW9GYWN0b3J5OjpzZXRTaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKGJvb2wgdmEKICAgICBtX3No
b3VsZENhcHR1cmVJbkdQVVByb2Nlc3MgPSB2YWx1ZTsKIH0KIAordm9pZCBVc2VyTWVkaWFDYXB0
dXJlTWFuYWdlcjo6VmlkZW9GYWN0b3J5OjpzZXRTaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKGJv
b2wgdmFsdWUpCit7CisgICAgbV9zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzID0gdmFsdWU7Cit9
CisKIENhcHR1cmVTb3VyY2VPckVycm9yIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpWaWRlb0Zh
Y3Rvcnk6OmNyZWF0ZVZpZGVvQ2FwdHVyZVNvdXJjZShjb25zdCBDYXB0dXJlRGV2aWNlJiBkZXZp
Y2UsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50
cykKIHsKICNpZiAhRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIGlmIChtX3Nob3VsZENhcHR1cmVJ
bkdQVVByb2Nlc3MpCiAgICAgICAgIHJldHVybiBDYXB0dXJlU291cmNlT3JFcnJvciB7ICJWaWRl
byBjYXB0dXJlIGluIEdQVVByb2Nlc3MgaXMgbm90IGltcGxlbWVudGVkIl9zIH07CiAjZW5kaWYK
KyAgICBpZiAobV9zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKQorICAgICAgICBtX21hbmFnZXIu
bV9yZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5zZXRSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cFByb3h5KCZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlv
bigpLnJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkoKSk7CiAKICAgICBib29sIHNob3Vs
ZFVzZUlPU3VyZmFjZSA9IGZhbHNlOwogICAgIHJldHVybiBDYXB0dXJlU291cmNlT3JFcnJvcihS
ZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUoUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3Jl
YXRlKGRldmljZSwgY29uc3RyYWludHMsIHsgfSwgV1RGTW92ZShoYXNoU2FsdCksIG1fbWFuYWdl
ciwgbV9zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKSwgc2hvdWxkVXNlSU9TdXJmYWNlKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlci5oCmluZGV4IDdjNTRhMmEzMGNkNWVhN2ZkYmRiOTg2MzNiYTg0MGFhZWVhMGRh
ZTUuLmY0YWI5NDM5ZGE4NjEyNDgxZmY0YWI1YzMwYTNmZjYyY2U5MTEzYmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlci5oCkBAIC04NSw3ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgVmlkZW9GYWN0b3J5
IDogcHVibGljIFdlYkNvcmU6OlZpZGVvQ2FwdHVyZUZhY3RvcnkgewogICAgIHB1YmxpYzoKICAg
ICAgICAgZXhwbGljaXQgVmlkZW9GYWN0b3J5KFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyJiBtYW5h
Z2VyKSA6IG1fbWFuYWdlcihtYW5hZ2VyKSB7IH0KLSAgICAgICAgdm9pZCBzZXRTaG91bGRDYXB0
dXJlSW5HUFVQcm9jZXNzKGJvb2wgdmFsdWUpIHsgbV9zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNz
ID0gdmFsdWU7IH0KKyAgICAgICAgdm9pZCBzZXRTaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKGJv
b2wpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgV2ViQ29yZTo6Q2FwdHVyZVNvdXJjZU9yRXJy
b3IgY3JlYXRlVmlkZW9DYXB0dXJlU291cmNlKGNvbnN0IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2Um
LCBTdHJpbmcmJiBoYXNoU2FsdCwgY29uc3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cyopIGZp
bmFsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451610</attachid>
            <date>2022-02-10 15:16:43 -0800</date>
            <delta_ts>2022-02-10 15:23:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236356-20220211001637.patch</filename>
            <type>text/plain</type>
            <size>130410</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBmZDk0YzE1ZWNkMDQ5N2IzMWFkMzBkYmQ4MDI1YzJkYTZjYWIyYmNjLi45YzU5
MjU0OTljNzE5OTk1NWYyNDBlYmZiYWFlYTViOGYzZTcyYjg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMi0wMi0xMCAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCByZW1vdGUgdmlkZW8g
ZnJhbWVzIGluIFdlYlJUQyB2aWRlbyBwaXBlbGluZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIGEgd2F5IGZvciBPYmpDRnJhbWVCdWZm
ZXIgdG8gbm90IGRpcmVjdGx5IG93biBhIENWUGl4ZWxCdWZmZXJSZWYgYnV0IGEgcG9pbnRlcgor
ICAgICAgICB0aGF0IGNhbiBiZSB1c2VkIHRvIGdldCBhIENWUGl4ZWxCdWZmZXJSZWYuIFRoaXMg
aXMgdXNlZCB0byBhbGxvdyByZW1vdGUgZnJhbWVzIHRvIGJlIHNlbnQgb3ZlciB0byBsaWJ3ZWJy
dGMuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cDoKKyAgICAg
ICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAgICAgICAgKiBDb25m
aWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nk
ay9XZWJLaXQvV2ViS2l0RGVjb2Rlci5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dl
YktpdC9XZWJLaXREZWNvZGVyLm1tOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXRVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VXRpbGl0aWVzLm1tOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0
aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2Rr
L29iamMvbmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5tbToKKwogMjAyMi0wMi0wMyAgTWlj
aGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQgcHJvamVj
dHMgaGF2ZSBpbmNvcnJlY3QgaW5zdGFsbCBuYW1lIGZvciB0aGUgZnJhbWV3b3JrcyBmb3IgQ2F0
YWx5c3QgYnVpbGRzIHdpdGggdGhlIHN5c3RlbSBjb250ZW50IHBhdGgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5
YTg4MDE1MDAyZWVhOTliYWNiZDk5ZWMyNWE1ZTdjOWYzNzI3OTdlLi42MTlhNWQ0NGFhNTg1NDIx
ZWUxNTQxNjVmMTVhYjgxYTlhMjBjZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIw
MjItMDItMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFN1
cHBvcnQgcmVtb3RlIHZpZGVvIGZyYW1lcyBpbiBXZWJSVEMgdmlkZW8gcGlwZWxpbmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjM1NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IHRvIHJlY2Vp
dmUvc2VuZCByZW1vdGUgZnJhbWVzIGFzIHdlYnJ0YyBWaWRlb0ZyYW1lIGJ1ZmZlcnMuCisgICAg
ICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9u
cy9XZWJDb3JlLnhjY29uZmlnOgorICAgICAgICAqIHBsYXRmb3JtL01lZGlhU2FtcGxlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vVmlk
ZW9GcmFtZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZUNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHA6CisKIDIw
MjItMDItMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCBzdXBwb3J0IHRvIHF1ZXJ5IGNhbWVyYSBhbmQgbWljcm9waG9uZSBwZXJtaXNzaW9ucwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBlODM4MDMxY2ViMmE2YjYxZDFmNmM5Yjg2NzMwYmUwNWU2ODNhMWY1Li5jODkzMWZm
YmZmZTk4ODIzNTgyNDQ3OWMyY2IwYThhYWVhMTc4Yzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3
IEBACisyMDIyLTAyLTEwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAg
ICAgICBTdXBwb3J0IHJlbW90ZSB2aWRlbyBmcmFtZXMgaW4gV2ViUlRDIHZpZGVvIHBpcGVsaW5l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYzNTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBy
ZWNlaXZpbmcgcmVtb3RlIHNhbXBsZXMgZnJvbSBjYW1lcmEgb3IgSFcgZGVjb2RlcnMuCisgICAg
ICAgIEluIHRoYXQgY2FzZSwgd2UgY3JlYXRlIHJlbW90ZSB2aWRlbyBmcmFtZXMgYW5kIGFsbG93
IHBpcGluZyB0aGVtIHRvIG91ciBleGlzdGluZyBwaXBlbGluZS4KKyAgICAgICAgV2UgdXBkYXRl
IE1lZGlhUmVjb3JkZXIgYW5kIExpYldlYlJUQyBIVyBlbmNvZGVycyB0byBkZWFsIHdpdGggdGhp
cy4KKyAgICAgICAgU2luY2Ugd2UgaGF2ZSBhIGNvZGUgcGF0aCB0aGF0IHJlcXVpcmVzIGdldHRp
bmcgYWNjZXNzIHRvIHRoZSByYXcgcGl4ZWxzLCB3ZSBpbnRyb2R1Y2UgUmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXBQcm94eQorICAgICAgICB0byBhbGxvdyBnZXR0aW5nIHRoYXQgZGF0YSB0aHJv
dWdoIHNoYXJlZCBtZW1vcnkgYXN5bmNocm9ub3VzbHkuCisgICAgICAgIFJlbW90ZVZpZGVvRnJh
bWVQcm94eSB3aWxsIHRoZW4gdXNlIGEgc2VtYXBob3JlIHRvIGJsb2NrIG9uIHRoZSBhc3luYyBJ
UEMgcmVzdWx0LiAKKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXAuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXAuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xp
YldlYlJUQ0NvZGVjc1Byb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMv
TGliV2ViUlRDQ29kZWNzUHJveHkubW06CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlh
UmVjb3JkZXIubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvVGhyZWFkU2Fm
ZU9iamVjdEhlYXAuaDoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5SWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5LmNwcDog
QWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwUHJveHkuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIu
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFn
ZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5h
Z2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXIuaDoKKwogMjAyMi0wMi0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgdG8gcXVlcnkgY2FtZXJhIGFuZCBtaWNyb3Bo
b25lIHBlcm1pc3Npb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAKaW5kZXggY2E1NDczYTYyYWQ5
OGJmNmI0ZTBjZWI2MDI4ODU2NDVkOTBmN2QyMy4uYmJiYzA1ODI3Y2Y3NGE5M2EwMDJlNTA3NDc4
MjExMGZjZjVjZGRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0Nv
bmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cApAQCAtMjIzLDggKzIyMywx
MSBAQCBfX1pONndlYnJ0YzIyY3JlYXRlTG9jYWxIMjY1RGVjb2RlckVVMTNibG9ja19wb2ludGVy
RnZQMTBfX0NWQnVmZmVyampFCiBfX1pONndlYnJ0YzIxY3JlYXRlTG9jYWxWUDlEZWNvZGVyRVUx
M2Jsb2NrX3BvaW50ZXJGdlAxMF9fQ1ZCdWZmZXJqakUKIF9fWk42d2VicnRjMTlyZWxlYXNlTG9j
YWxEZWNvZGVyRVB2CiBfX1pONndlYnJ0YzExZGVjb2RlRnJhbWVFUHZqUEtobQotX19aTjZ3ZWJy
dGMyNHZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZUVQdmpQMTBfX0NWQnVmZmVyagorX19aTjZ3ZWJy
dGMyNHZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZUVQdmpqUDEwX19DVkJ1ZmZlcgorX19aTjZ3ZWJy
dGMyNHZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZUVQdmpqUzBfUEZQMTBfX0NWQnVmZmVyUzBfRVBG
dlMwX0VpaQogX19aTjZ3ZWJydGMyNHNldFZpZGVvRGVjb2RlckNhbGxiYWNrc0VQRlB2UktOU18x
NFNkcFZpZGVvRm9ybWF0RUVQRmlTMF9FUEZpUzBfalBLaG10dEVQRmlTMF9TMF9FCitfX1pONndl
YnJ0YzI0dG9XZWJSVENWaWRlb0ZyYW1lQnVmZmVyRVB2UEZQMTBfX0NWQnVmZmVyUzBfRVBGdlMw
X0VpaQorX19aTjZ3ZWJydGMyNHZpZGVvRnJhbWVCdWZmZXJQcm92aWRlckVSS05TXzEwVmlkZW9G
cmFtZUUKIF9fWk42d2VicnRjMTlzZXREZWNvZGVyRnJhbWVTaXplRVB2dHQKIF9fWk42d2VicnRj
MThSdHBDb2RlY0NhcGFiaWxpdHlDMUV2CiBfX1pONndlYnJ0YzI0ZW5jb2RlclZpZGVvVGFza0Nv
bXBsZXRlRVB2TlNfMTRWaWRlb0NvZGVjVHlwZUVQS2htUktOU18yMldlYktpdEVuY29kZWRGcmFt
ZUluZm9FCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJh
dGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKaW5kZXggY2E1NDczYTYyYWQ5OGJm
NmI0ZTBjZWI2MDI4ODU2NDVkOTBmN2QyMy4uYmJiYzA1ODI3Y2Y3NGE5M2EwMDJlNTA3NDc4MjEx
MGZjZjVjZGRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZp
Z3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cApAQCAtMjIzLDggKzIy
MywxMSBAQCBfX1pONndlYnJ0YzIyY3JlYXRlTG9jYWxIMjY1RGVjb2RlckVVMTNibG9ja19wb2lu
dGVyRnZQMTBfX0NWQnVmZmVyampFCiBfX1pONndlYnJ0YzIxY3JlYXRlTG9jYWxWUDlEZWNvZGVy
RVUxM2Jsb2NrX3BvaW50ZXJGdlAxMF9fQ1ZCdWZmZXJqakUKIF9fWk42d2VicnRjMTlyZWxlYXNl
TG9jYWxEZWNvZGVyRVB2CiBfX1pONndlYnJ0YzExZGVjb2RlRnJhbWVFUHZqUEtobQotX19aTjZ3
ZWJydGMyNHZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZUVQdmpQMTBfX0NWQnVmZmVyagorX19aTjZ3
ZWJydGMyNHZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZUVQdmpqUDEwX19DVkJ1ZmZlcgorX19aTjZ3
ZWJydGMyNHZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZUVQdmpqUzBfUEZQMTBfX0NWQnVmZmVyUzBf
RVBGdlMwX0VpaQogX19aTjZ3ZWJydGMyNHNldFZpZGVvRGVjb2RlckNhbGxiYWNrc0VQRlB2UktO
U18xNFNkcFZpZGVvRm9ybWF0RUVQRmlTMF9FUEZpUzBfalBLaG10dEVQRmlTMF9TMF9FCitfX1pO
NndlYnJ0YzI0dG9XZWJSVENWaWRlb0ZyYW1lQnVmZmVyRVB2UEZQMTBfX0NWQnVmZmVyUzBfRVBG
dlMwX0VpaQorX19aTjZ3ZWJydGMyNHZpZGVvRnJhbWVCdWZmZXJQcm92aWRlckVSS05TXzEwVmlk
ZW9GcmFtZUUKIF9fWk42d2VicnRjMTlzZXREZWNvZGVyRnJhbWVTaXplRVB2dHQKIF9fWk42d2Vi
cnRjMThSdHBDb2RlY0NhcGFiaWxpdHlDMUV2CiBfX1pONndlYnJ0YzI0ZW5jb2RlclZpZGVvVGFz
a0NvbXBsZXRlRVB2TlNfMTRWaWRlb0NvZGVjVHlwZUVQS2htUktOU18yMldlYktpdEVuY29kZWRG
cmFtZUluZm9FCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmln
dXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAKaW5kZXggY2E1NDczYTYyYWQ5OGJmNmI0
ZTBjZWI2MDI4ODU2NDVkOTBmN2QyMy4uMmE1N2RjYTVhZjM4ZWRmM2UzYTBlOWE0ZWZlZjY0Yzhh
NjNlOWU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3Vy
YXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cApAQCAtMjIzLDcgKzIyMywxMCBAQCBf
X1pONndlYnJ0YzIyY3JlYXRlTG9jYWxIMjY1RGVjb2RlckVVMTNibG9ja19wb2ludGVyRnZQMTBf
X0NWQnVmZmVyampFCiBfX1pONndlYnJ0YzIxY3JlYXRlTG9jYWxWUDlEZWNvZGVyRVUxM2Jsb2Nr
X3BvaW50ZXJGdlAxMF9fQ1ZCdWZmZXJqakUKIF9fWk42d2VicnRjMTlyZWxlYXNlTG9jYWxEZWNv
ZGVyRVB2CiBfX1pONndlYnJ0YzExZGVjb2RlRnJhbWVFUHZqUEtobQotX19aTjZ3ZWJydGMyNHZp
ZGVvRGVjb2RlclRhc2tDb21wbGV0ZUVQdmpQMTBfX0NWQnVmZmVyagorX19aTjZ3ZWJydGMyNHZp
ZGVvRGVjb2RlclRhc2tDb21wbGV0ZUVQdmpqUDEwX19DVkJ1ZmZlcgorX19aTjZ3ZWJydGMyNHZp
ZGVvRGVjb2RlclRhc2tDb21wbGV0ZUVQdmpqUzBfUEZQMTBfX0NWQnVmZmVyUzBfRVBGdlMwX0Vp
aQorX19aTjZ3ZWJydGMyNHRvV2ViUlRDVmlkZW9GcmFtZUJ1ZmZlckVQdlBGUDEwX19DVkJ1ZmZl
clMwX0VQRnZTMF9FaWkKK19fWk42d2VicnRjMjR2aWRlb0ZyYW1lQnVmZmVyUHJvdmlkZXJFUktO
U18xMFZpZGVvRnJhbWVFCiBfX1pONndlYnJ0YzI0c2V0VmlkZW9EZWNvZGVyQ2FsbGJhY2tzRVBG
UHZSS05TXzE0U2RwVmlkZW9Gb3JtYXRFRVBGaVMwX0VQRmlTMF9qUEtobXR0RVBGaVMwX1MwX0UK
IF9fWk42d2VicnRjMTlzZXREZWNvZGVyRnJhbWVTaXplRVB2dHQKIF9fWk42d2VicnRjMThSdHBD
b2RlY0NhcGFiaWxpdHlDMUV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXIuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2Rlci5o
CmluZGV4IGI4MjNlZDMyY2IzM2ZiM2E2NzRiNDI5ODQwOGMyYWI4ZjVjYjA2YWQuLmVjNzMyZjVj
Y2JiNGQ1YThmODk2NTY3Mzg1YjUxYzcxODZiNTc5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2Rlci5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJL
aXQvV2ViS2l0RGVjb2Rlci5oCkBAIC01NCw3ICs1NCw4IEBAIHVzaW5nIFZpZGVvRGVjb2RlclJl
Z2lzdGVyRGVjb2RlQ29tcGxldGVDYWxsYmFjayA9IGludDMyX3QoKikoV2ViS2l0VmlkZW9EZWNv
ZGVyCiB2b2lkIHNldFZpZGVvRGVjb2RlckNhbGxiYWNrcyhWaWRlb0RlY29kZXJDcmVhdGVDYWxs
YmFjaywgVmlkZW9EZWNvZGVyUmVsZWFzZUNhbGxiYWNrLCBWaWRlb0RlY29kZXJEZWNvZGVDYWxs
YmFjaywgVmlkZW9EZWNvZGVyUmVnaXN0ZXJEZWNvZGVDb21wbGV0ZUNhbGxiYWNrKTsKIAogc3Rk
Ojp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4gY3JlYXRlV2ViS2l0RGVj
b2RlckZhY3RvcnkoV2ViS2l0SDI2NSwgV2ViS2l0VlA5LCBXZWJLaXRWUDlWVEIpOwotdm9pZCB2
aWRlb0RlY29kZXJUYXNrQ29tcGxldGUodm9pZCogY2FsbGJhY2ssIHVpbnQzMl90IHRpbWVTdGFt
cCwgQ1ZQaXhlbEJ1ZmZlclJlZiwgdWludDMyX3QgdGltZVN0YW1wUlRQKTsKK3ZvaWQgdmlkZW9E
ZWNvZGVyVGFza0NvbXBsZXRlKHZvaWQqIGNhbGxiYWNrLCB1aW50MzJfdCB0aW1lU3RhbXAsIHVp
bnQzMl90IHRpbWVTdGFtcFJUUCwgQ1ZQaXhlbEJ1ZmZlclJlZik7Cit2b2lkIHZpZGVvRGVjb2Rl
clRhc2tDb21wbGV0ZSh2b2lkKiBjYWxsYmFjaywgdWludDMyX3QgdGltZVN0YW1wLCB1aW50MzJf
dCB0aW1lU3RhbXBSVFAsIHZvaWQqLCBHZXRCdWZmZXJDYWxsYmFjaywgUmVsZWFzZUJ1ZmZlckNh
bGxiYWNrLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogCiB1c2luZyBMb2NhbERlY29kZXIgPSB2
b2lkKjsKIHVzaW5nIExvY2FsRGVjb2RlckNhbGxiYWNrID0gdm9pZCAoXikoQ1ZQaXhlbEJ1ZmZl
clJlZiwgdWludDMyX3QgdGltZVN0YW1wLCB1aW50MzJfdCB0aW1lU3RhbXBOcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L1dlYktpdERlY29kZXIubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXIubW0KaW5kZXggYWE0MTg4NDg2ZDFhYmM3MDE5
NjQ1YThiNThkOWY3M2E1MDQ2ZWM1MS4uYjdlMDY3ZjBjOWY0NWMzYTYzZTM0Njk5OWQ5ZjEwYzMw
OWM3ZDU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL1dlYktpdC9XZWJLaXREZWNvZGVyLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2Rlci5tbQpAQCAt
MzcsNiArMzcsNyBAQAogI2ltcG9ydCAic2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9S
VENWaWRlb0RlY29kZXJIMjY0LmgiCiAjaW1wb3J0ICJzZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVv
X2NvZGVjL1JUQ1ZpZGVvRGVjb2RlckgyNjUuaCIKICNpbXBvcnQgInNkay9vYmpjL2NvbXBvbmVu
dHMvdmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVyVlRCVlA5LmgiCisjaW1wb3J0ICJzZGsvb2Jq
Yy9uYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVyLmgiCiAKIEBpbnRlcmZhY2UgV0tfUlRDTG9j
YWxWaWRlb0gyNjRIMjY1VlA5RGVjb2RlciA6IE5TT2JqZWN0CiAtIChpbnN0YW5jZXR5cGUpaW5p
dEgyNjREZWNvZGVyV2l0aENhbGxiYWNrOih3ZWJydGM6OkxvY2FsRGVjb2RlckNhbGxiYWNrKWNh
bGxiYWNrOwpAQCAtMTczLDcgKzE3NCw3IEBAIFJlbW90ZVZpZGVvRGVjb2Rlcjo6flJlbW90ZVZp
ZGVvRGVjb2RlcigpCiAgICAgdmlkZW9EZWNvZGVyQ2FsbGJhY2tzKCkucmVsZWFzZUNhbGxiYWNr
KG1faW50ZXJuYWxEZWNvZGVyKTsKIH0KIAotdm9pZCB2aWRlb0RlY29kZXJUYXNrQ29tcGxldGUo
dm9pZCogY2FsbGJhY2ssIHVpbnQzMl90IHRpbWVTdGFtcCwgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhl
bEJ1ZmZlciwgdWludDMyX3QgdGltZVN0YW1wUlRQKQordm9pZCB2aWRlb0RlY29kZXJUYXNrQ29t
cGxldGUodm9pZCogY2FsbGJhY2ssIHVpbnQzMl90IHRpbWVTdGFtcCwgdWludDMyX3QgdGltZVN0
YW1wUlRQLCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKQogewogICAgIGF1dG8gdmlkZW9G
cmFtZSA9IFZpZGVvRnJhbWU6OkJ1aWxkZXIoKS5zZXRfdmlkZW9fZnJhbWVfYnVmZmVyKHBpeGVs
QnVmZmVyVG9GcmFtZShwaXhlbEJ1ZmZlcikpCiAgICAgICAgIC5zZXRfdGltZXN0YW1wX3J0cCh0
aW1lU3RhbXBSVFApCkBAIC0xODUsNiArMTg2LDE4IEBAIHZvaWQgdmlkZW9EZWNvZGVyVGFza0Nv
bXBsZXRlKHZvaWQqIGNhbGxiYWNrLCB1aW50MzJfdCB0aW1lU3RhbXAsIENWUGl4ZWxCdWZmZXJS
CiAgICAgc3RhdGljX2Nhc3Q8RGVjb2RlZEltYWdlQ2FsbGJhY2sqPihjYWxsYmFjayktPkRlY29k
ZWQodmlkZW9GcmFtZSk7CiB9CiAKK3ZvaWQgdmlkZW9EZWNvZGVyVGFza0NvbXBsZXRlKHZvaWQq
IGNhbGxiYWNrLCB1aW50MzJfdCB0aW1lU3RhbXAsIHVpbnQzMl90IHRpbWVTdGFtcFJUUCwgdm9p
ZCogcG9pbnRlciwgR2V0QnVmZmVyQ2FsbGJhY2sgZ2V0QnVmZmVyQ2FsbGJhY2ssIFJlbGVhc2VC
dWZmZXJDYWxsYmFjayByZWxlYXNlQnVmZmVyQ2FsbGJhY2ssIGludCB3aWR0aCwgaW50IGhlaWdo
dCkKK3sKKyAgICBhdXRvIHZpZGVvRnJhbWUgPSBWaWRlb0ZyYW1lOjpCdWlsZGVyKCkuc2V0X3Zp
ZGVvX2ZyYW1lX2J1ZmZlcih0b1dlYlJUQ1ZpZGVvRnJhbWVCdWZmZXIocG9pbnRlciwgZ2V0QnVm
ZmVyQ2FsbGJhY2ssIHJlbGVhc2VCdWZmZXJDYWxsYmFjaywgd2lkdGgsIGhlaWdodCkpCisgICAg
ICAgIC5zZXRfdGltZXN0YW1wX3J0cCh0aW1lU3RhbXBSVFApCisgICAgICAgIC5zZXRfdGltZXN0
YW1wX21zKDApCisgICAgICAgIC5zZXRfcm90YXRpb24oKFZpZGVvUm90YXRpb24pUlRDVmlkZW9S
b3RhdGlvbl8wKQorICAgICAgICAuYnVpbGQoKTsKKyAgICB2aWRlb0ZyYW1lLnNldF90aW1lc3Rh
bXAodGltZVN0YW1wKTsKKworICAgIHN0YXRpY19jYXN0PERlY29kZWRJbWFnZUNhbGxiYWNrKj4o
Y2FsbGJhY2spLT5EZWNvZGVkKHZpZGVvRnJhbWUpOworfQorCiBib29sIFJlbW90ZVZpZGVvRGVj
b2Rlcjo6Q29uZmlndXJlKGNvbnN0IFNldHRpbmdzJikKIHsKICAgICByZXR1cm4gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9X
ZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oCmluZGV4IGEyM2ZhYTZlZDU3
ZGY3YzMyMmM2NzBiNzczNWNhYjgzYzY2MTU5MzQuLjJlZjhhMWU5MTUzODYxMWVmZTVhZjczNGY4
MGNkN2E5YmE0ZjUzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRp
ZXMuaApAQCAtNTIsNCArNTIsOCBAQCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZy
YW1lKGNvbnN0IFZpZGVvRnJhbWUmKSBDRl9SRVRVUk5TX1JFVEFJTkVEOwogcnRjOjpzY29wZWRf
cmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gcGl4ZWxCdWZmZXJUb0ZyYW1lKENWUGl4
ZWxCdWZmZXJSZWYpOwogYm9vbCBjb3B5VmlkZW9GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiwgdWlu
dDhfdCopOwogCit0eXBlZGVmIENWUGl4ZWxCdWZmZXJSZWYgKCpHZXRCdWZmZXJDYWxsYmFjayko
dm9pZCopOwordHlwZWRlZiB2b2lkICgqUmVsZWFzZUJ1ZmZlckNhbGxiYWNrKSh2b2lkKik7City
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiB0b1dlYlJUQ1ZpZGVv
RnJhbWVCdWZmZXIodm9pZCosIEdldEJ1ZmZlckNhbGxiYWNrLCBSZWxlYXNlQnVmZmVyQ2FsbGJh
Y2ssIGludCB3aWR0aCwgaW50IGhlaWdodCk7Cit2b2lkKiB2aWRlb0ZyYW1lQnVmZmVyUHJvdmlk
ZXIoY29uc3QgVmlkZW9GcmFtZSYpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW0gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktp
dFV0aWxpdGllcy5tbQppbmRleCA3ZjZmYmIxMWU3NjkzYWQ2NmRmOTI0YjkzZjRkMjhlN2VlODll
MGE4Li5jZmE3OTZjNWMzYjBkYWE1OTRjMWNiMTY2NDdkMzE1OTY0NWU5ZWEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdFV0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbQpAQCAtNTIsNiArNTIsMjEgQEAg
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gcGl4ZWxCdWZmZXJU
b0ZyYW1lKENWUGl4ZWxCdWZmZXJSZWYKICAgICByZXR1cm4gbmV3IHJ0Yzo6UmVmQ291bnRlZE9i
amVjdDxPYmpDRnJhbWVCdWZmZXI+KGZyYW1lQnVmZmVyKTsKIH0KIAorcnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gdG9XZWJSVENWaWRlb0ZyYW1lQnVmZmVyKHZv
aWQqIHBvaW50ZXIsIEdldEJ1ZmZlckNhbGxiYWNrIGdldEJ1ZmZlckNhbGxiYWNrLCBSZWxlYXNl
QnVmZmVyQ2FsbGJhY2sgcmVsZWFzZUJ1ZmZlckNhbGxiYWNrLCBpbnQgd2lkdGgsIGludCBoZWln
aHQpCit7CisgICAgcmV0dXJuIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8T2JqQ0ZyYW1lQnVm
ZmVyPihPYmpDRnJhbWVCdWZmZXI6OkJ1ZmZlclByb3ZpZGVyIHsgcG9pbnRlciwgZ2V0QnVmZmVy
Q2FsbGJhY2ssIHJlbGVhc2VCdWZmZXJDYWxsYmFjayB9LCB3aWR0aCwgaGVpZ2h0KTsKK30KKwor
dm9pZCogdmlkZW9GcmFtZUJ1ZmZlclByb3ZpZGVyKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lKQor
eworICAgIGF1dG8gYnVmZmVyID0gZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCk7CisgICAgaWYg
KGJ1ZmZlci0+dHlwZSgpICE9IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE9iakNGcmFtZUJ1
ZmZlcio+KGJ1ZmZlci5nZXQoKSktPmZyYW1lX2J1ZmZlcl9wcm92aWRlcigpOworCit9CisKIHN0
YXRpYyBib29sIENvcHlWaWRlb0ZyYW1lVG9QaXhlbEJ1ZmZlcihjb25zdCB3ZWJydGM6Okk0MjBC
dWZmZXJJbnRlcmZhY2UqIGZyYW1lLCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsX2J1ZmZlcikgewog
ICAgIFJUQ19EQ0hFQ0socGl4ZWxfYnVmZmVyKTsKICAgICBSVENfRENIRUNLKENWUGl4ZWxCdWZm
ZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxfYnVmZmVyKSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVf
NDIwWXBDYkNyOEJpUGxhbmFyRnVsbFJhbmdlIHx8IENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1h
dFR5cGUocGl4ZWxfYnVmZmVyKSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxh
bmFyVmlkZW9SYW5nZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVyLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUv
c3JjL29iamNfZnJhbWVfYnVmZmVyLmgKaW5kZXggZjk0MWRhZDZlNGZlNTY5MDBlY2E5MDUwYzBh
ODM0ZWRiODU1ZjY4MS4uM2QyZWJkNzc5NjNhYmNhNDRjY2VmZTA3M2YxMTFiZDViNTFlZDI0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvbmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2ZS9zcmMvb2JqY19mcmFt
ZV9idWZmZXIuaApAQCAtMTQsMTYgKzE0LDI3IEBACiAjaW1wb3J0IDxDb3JlVmlkZW8vQ29yZVZp
ZGVvLmg+CiAKICNpbmNsdWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZV9idWZm
ZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeW5jaHJvbml6YXRpb24vbXV0ZXguaCIKIAogQHBy
b3RvY29sIFJUQ1ZpZGVvRnJhbWVCdWZmZXI7CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCit0eXBl
ZGVmIENWUGl4ZWxCdWZmZXJSZWYgKCpHZXRCdWZmZXJDYWxsYmFjaykodm9pZCopOwordHlwZWRl
ZiB2b2lkICgqUmVsZWFzZUJ1ZmZlckNhbGxiYWNrKSh2b2lkKik7CisKIGNsYXNzIE9iakNGcmFt
ZUJ1ZmZlciA6IHB1YmxpYyBWaWRlb0ZyYW1lQnVmZmVyIHsKICBwdWJsaWM6CiAgIGV4cGxpY2l0
IE9iakNGcmFtZUJ1ZmZlcihpZDxSVENWaWRlb0ZyYW1lQnVmZmVyPik7CiAgIH5PYmpDRnJhbWVC
dWZmZXIoKSBvdmVycmlkZTsKIAorICBzdHJ1Y3QgQnVmZmVyUHJvdmlkZXIgeworICAgIHZvaWQg
KnBvaW50ZXIgeyBudWxscHRyIH07CisgICAgR2V0QnVmZmVyQ2FsbGJhY2sgZ2V0QnVmZmVyIHsg
bnVsbHB0ciB9OworICAgIFJlbGVhc2VCdWZmZXJDYWxsYmFjayByZWxlYXNlQnVmZmVyIHsgbnVs
bHB0ciB9OworICB9OworICBPYmpDRnJhbWVCdWZmZXIoQnVmZmVyUHJvdmlkZXIsIGludCB3aWR0
aCwgaW50IGhlaWdodCk7CisKICAgVHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgaW50
IHdpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0zMiwxMSArNDMsMTQgQEAgY2xhc3MgT2JqQ0Zy
YW1lQnVmZmVyIDogcHVibGljIFZpZGVvRnJhbWVCdWZmZXIgewogICBydGM6OnNjb3BlZF9yZWZw
dHI8STQyMEJ1ZmZlckludGVyZmFjZT4gVG9JNDIwKCkgb3ZlcnJpZGU7CiAKICAgaWQ8UlRDVmlk
ZW9GcmFtZUJ1ZmZlcj4gd3JhcHBlZF9mcmFtZV9idWZmZXIoKSBjb25zdDsKKyAgdm9pZCogZnJh
bWVfYnVmZmVyX3Byb3ZpZGVyKCkgeyByZXR1cm4gZnJhbWVfYnVmZmVyX3Byb3ZpZGVyXy5wb2lu
dGVyOyB9CiAKICBwcml2YXRlOgogICBpZDxSVENWaWRlb0ZyYW1lQnVmZmVyPiBmcmFtZV9idWZm
ZXJfOworICBCdWZmZXJQcm92aWRlciBmcmFtZV9idWZmZXJfcHJvdmlkZXJfOwogICBpbnQgd2lk
dGhfOwogICBpbnQgaGVpZ2h0XzsKKyAgbXV0YWJsZSB3ZWJydGM6Ok11dGV4IG11dGV4XzsKIH07
CiAKIGlkPFJUQ1ZpZGVvRnJhbWVCdWZmZXI+IFRvT2JqQ1ZpZGVvRnJhbWVCdWZmZXIoCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9uYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVyLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZl
ci5tbQppbmRleCBhM2Q5YmE4MTJkYTU5Zjg1NzJhNTMzYWQ2MmM1MmFiMGFjMGExOGMyLi4yZjU2
YWNiMjk0M2JkNGM0ZDdkZmI1ZGIwMjFhMDA5MTgyODA3YTg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUvc3JjL29i
amNfZnJhbWVfYnVmZmVyLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2ZS9zcmMvb2JqY19mcmFtZV9idWZmZXIubW0KQEAgLTEy
LDYgKzEyLDcgQEAKIAogI2ltcG9ydCAiYmFzZS9SVENWaWRlb0ZyYW1lQnVmZmVyLmgiCiAjaW1w
b3J0ICJzZGsvb2JqYy9hcGkvdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ05hdGl2ZUk0MjBCdWZmZXIr
UHJpdmF0ZS5oIgorI2ltcG9ydCAic2RrL29iamMvY29tcG9uZW50cy92aWRlb19mcmFtZV9idWZm
ZXIvUlRDQ1ZQaXhlbEJ1ZmZlci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtNTUsMTAg
KzU2LDE1IEBAIGNsYXNzIE9iakNJNDIwRnJhbWVCdWZmZXIgOiBwdWJsaWMgSTQyMEJ1ZmZlcklu
dGVyZmFjZSB7CiBPYmpDRnJhbWVCdWZmZXI6Ok9iakNGcmFtZUJ1ZmZlcihpZDxSVENWaWRlb0Zy
YW1lQnVmZmVyPiBmcmFtZV9idWZmZXIpCiAgICAgOiBmcmFtZV9idWZmZXJfKGZyYW1lX2J1ZmZl
ciksIHdpZHRoXyhmcmFtZV9idWZmZXIud2lkdGgpLCBoZWlnaHRfKGZyYW1lX2J1ZmZlci5oZWln
aHQpIHt9CiAKK09iakNGcmFtZUJ1ZmZlcjo6T2JqQ0ZyYW1lQnVmZmVyKEJ1ZmZlclByb3ZpZGVy
IHByb3ZpZGVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCisgICAgOiBmcmFtZV9idWZmZXJfcHJv
dmlkZXJfKHByb3ZpZGVyKSwgd2lkdGhfKHdpZHRoKSwgaGVpZ2h0XyhoZWlnaHQpIHsgfQorCiBP
YmpDRnJhbWVCdWZmZXI6On5PYmpDRnJhbWVCdWZmZXIoKSB7CiAjaWYgZGVmaW5lZChXRUJSVENf
V0VCS0lUX0JVSUxEKQogICBbZnJhbWVfYnVmZmVyXyBjbG9zZV07CiAjZW5kaWYKKyAgaWYgKGZy
YW1lX2J1ZmZlcl9wcm92aWRlcl8ucmVsZWFzZUJ1ZmZlcikKKyAgICBmcmFtZV9idWZmZXJfcHJv
dmlkZXJfLnJlbGVhc2VCdWZmZXIoZnJhbWVfYnVmZmVyX3Byb3ZpZGVyXy5wb2ludGVyKTsKIH0K
IAogVmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZSBPYmpDRnJhbWVCdWZmZXI6OnR5cGUoKSBjb25zdCB7
CkBAIC03NSwxMiArODEsMjEgQEAgaW50IE9iakNGcmFtZUJ1ZmZlcjo6aGVpZ2h0KCkgY29uc3Qg
ewogCiBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gT2JqQ0ZyYW1lQnVm
ZmVyOjpUb0k0MjAoKSB7CiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNl
PiBidWZmZXIgPQotICAgICAgbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxPYmpDSTQyMEZyYW1l
QnVmZmVyPihbZnJhbWVfYnVmZmVyXyB0b0k0MjBdKTsKKyAgICAgIG5ldyBydGM6OlJlZkNvdW50
ZWRPYmplY3Q8T2JqQ0k0MjBGcmFtZUJ1ZmZlcj4oW3dyYXBwZWRfZnJhbWVfYnVmZmVyKCkgdG9J
NDIwXSk7CiAKICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAogaWQ8UlRDVmlkZW9GcmFtZUJ1ZmZlcj4g
T2JqQ0ZyYW1lQnVmZmVyOjp3cmFwcGVkX2ZyYW1lX2J1ZmZlcigpIGNvbnN0IHsKKyAgaWYgKGZy
YW1lX2J1ZmZlcl8pCisgICAgcmV0dXJuIGZyYW1lX2J1ZmZlcl87CisKKyAgeworICAgIHdlYnJ0
Yzo6TXV0ZXhMb2NrIGxvY2soJm11dGV4Xyk7CisgICAgaWYgKCFmcmFtZV9idWZmZXJfICYmIGZy
YW1lX2J1ZmZlcl9wcm92aWRlcl8uZ2V0QnVmZmVyKQorICAgICAgY29uc3RfY2FzdDxPYmpDRnJh
bWVCdWZmZXIqPih0aGlzKS0+ZnJhbWVfYnVmZmVyXyA9IFtbUlRDQ1ZQaXhlbEJ1ZmZlciBhbGxv
Y10gaW5pdFdpdGhQaXhlbEJ1ZmZlcjpmcmFtZV9idWZmZXJfcHJvdmlkZXJfLmdldEJ1ZmZlcihm
cmFtZV9idWZmZXJfcHJvdmlkZXJfLnBvaW50ZXIpXTsKKyAgfQorCiAgIHJldHVybiBmcmFtZV9i
dWZmZXJfOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNh
bXBsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaAppbmRleCBiNGZl
NzE2NTc5ZmY4ZTdmYzM0MGQ4N2NjODkyZjFiYmI0YjBkOGQ0Li5iMDY1MDRmNTdlZTkzNmI4ZTE5
ODg3MWYzNTcyNzY1MzUzMDRhZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NZWRpYVNhbXBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxl
LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAK
IHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsK
K3R5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNWUGl4ZWxCdWZmZXJSZWY7CiB0eXBlZGVmIHN0
cnVjdCBfR3N0U2FtcGxlIEdzdFNhbXBsZTsKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZU1UUGx1Z2lu
Qnl0ZVNvdXJjZSAqTVRQbHVnaW5CeXRlU291cmNlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
b3BhcXVlQ01Gb3JtYXREZXNjcmlwdGlvbiAqQ01Gb3JtYXREZXNjcmlwdGlvblJlZjsKQEAgLTEx
MCw2ICsxMTEsOSBAQCBwdWJsaWM6CiAjaWYgZGVmaW5lZChFTkFCTEVfVklERU8pICYmIEVOQUJM
RV9WSURFTwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxNZWRpYVNhbXBsZVZpZGVvRnJhbWU+
IHZpZGVvRnJhbWUoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH07CiAjZW5kaWYKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICB2aXJ0dWFsIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZm
ZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9OworI2VuZGlmCiAKICAgICBib29sIGlzU3lu
YygpIGNvbnN0IHsgcmV0dXJuIGZsYWdzKCkgJiBJc1N5bmM7IH0KICAgICBib29sIGlzTm9uRGlz
cGxheWluZygpIGNvbnN0IHsgcmV0dXJuIGZsYWdzKCkgJiBJc05vbkRpc3BsYXlpbmc7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKaW5kZXggMzRlODE2ZWNkMDhjYjk1NTI0
ZDZhYTJkNzFhZmNiOWYwYjkxNzg2Zi4uZjA3NjliYTVlNTRhODgwYmU2MzkwOWE5Y2RhMDMyODdh
MzdkM2NmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKQEAgLTU4LDEy
ICs1OCw2IEBAIHNpemVfdCBWaWRlb0ZyYW1lOjpzaXplSW5CeXRlcygpIGNvbnN0CiAgICAgcmV0
dXJuIDA7CiB9CiAKLVdlYkNvcmU6OkZsb2F0U2l6ZSBWaWRlb0ZyYW1lOjpwcmVzZW50YXRpb25T
aXplKCkgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4geyB9
OwotfQotCiB2b2lkIFZpZGVvRnJhbWU6Om9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRp
bWUmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlk
ZW9GcmFtZS5oCmluZGV4IGIyZDk1MDEwZDM2ZWI2MmI5ZWFlMWI5OTgzN2I4NDc3MTQxZTA1ZmMu
LmI2MzFmZDEzZTIyZTMxMjI2NjUwMDE0YmFmNzhkZWE5MGNhYTZmYjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9WaWRlb0ZyYW1lLmgKQEAgLTQ4LDcgKzQ4LDYgQEAgcHJpdmF0ZToKICAgICBXRUJD
T1JFX0VYUE9SVCBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JF
X0VYUE9SVCBBdG9tU3RyaW5nIHRyYWNrSUQoKSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VY
UE9SVCBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9S
VCBXZWJDb3JlOjpGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IGZpbmFsOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYp
IGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGltZXN0YW1wcyhjb25zdCBNZWRp
YVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGlzRGl2aXNhYmxlKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAppbmRleCBjZDEwZDljMDVjYjhhMWQ4
NmU2NDNkNWEzZmFhYWU1Yzc0ZjA4Nzk5Li5mMWRkOTE5MDFmODQ5ZTA5YTI0NjY0OWZjZGRhNzhk
MGRkYzlhY2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
ZW1vdGVWaWRlb1NhbXBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JlbW90ZVZpZGVvU2FtcGxlLmgKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgogICAgIENWUGl4
ZWxCdWZmZXJSZWYgaW1hZ2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyLmdl
dCgpOyB9CiAKICAgICB2b2lkIHNldE93bmVyc2hpcElkZW50aXR5KGNvbnN0IFByb2Nlc3NJZGVu
dGl0eSYpOworICAgIHZvaWQgY2xlYXJJT1N1cmZhY2UoKSB7IG1faW9TdXJmYWNlID0gbnVsbHB0
cjsgfQogCiAgICAgY29uc3QgTWVkaWFUaW1lJiB0aW1lKCkgY29uc3QgeyByZXR1cm4gbV90aW1l
OyB9CiAgICAgdWludDMyX3QgdmlkZW9Gb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvRm9y
bWF0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggNTEyNjk2YTEzYWM3MmFjODhm
ODAwODY1NjJlMzExMDQ1YzQxYWM2NS4uNDJmZDE3NDg3ZWE2Y2QxNzEwNTA1MDVmZjVmM2ZmNWVk
ZmJlN2UxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtMjMwLDEwICsyMzAsOSBA
QCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQzo6c3VwcG9ydHNUeXBlKGNvbgogCiBzdGF0aWMgaW5saW5lIENHQWZmaW5lVHJhbnNm
b3JtIHZpZGVvVHJhbnNmb3JtYXRpb25NYXRyaXgoTWVkaWFTYW1wbGUmIHNhbXBsZSkKIHsKLSAg
ICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIgPSBzYW1wbGUucGxhdGZvcm1TYW1wbGUo
KS5zYW1wbGUuY21TYW1wbGVCdWZmZXI7Ci0gICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZl
ciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRJ
bWFnZUJ1ZmZlcihzYW1wbGVCdWZmZXIpKTsKLSAgICBzaXplX3Qgd2lkdGggPSBDVlBpeGVsQnVm
ZmVyR2V0V2lkdGgocGl4ZWxCdWZmZXIpOwotICAgIHNpemVfdCBoZWlnaHQgPSBDVlBpeGVsQnVm
ZmVyR2V0SGVpZ2h0KHBpeGVsQnVmZmVyKTsKKyAgICBhdXRvIHNpemUgPSBzYW1wbGUucHJlc2Vu
dGF0aW9uU2l6ZSgpOworICAgIHNpemVfdCB3aWR0aCA9IHN0YXRpY19jYXN0PHNpemVfdD4oc2l6
ZS53aWR0aCgpKTsKKyAgICBzaXplX3QgaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXpl
LmhlaWdodCgpKTsKICAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQpCiAgICAgICAgIHJldHVybiBD
R0FmZmluZVRyYW5zZm9ybUlkZW50aXR5OwogCkBAIC05ODcsMTAgKzk4Niw2IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJbWFn
ZSgpCiAgICAgaWYgKG1faW1hZ2VQYWludGVyLmNnSW1hZ2UgfHwgIW1faW1hZ2VQYWludGVyLm1l
ZGlhU2FtcGxlKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogRG9lcyBub3QgY3Vy
cmVudGx5IHN1cHBvcnQgUmVtb3RlVmlkZW9GcmFtZVByb3h5LgotICAgIGlmICghaXM8TWVkaWFT
YW1wbGVBVkZPYmpDPigqbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpKQotICAgICAgICByZXR1
cm47Ci0KICAgICBpZiAoIW1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyKQogICAg
ICAgICBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lciA9IG1ha2VVbmlxdWU8UGl4
ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilAeyAoX19icmlk
Z2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQChrQ1ZQaXhl
bEZvcm1hdFR5cGVfMzJCR1JBKSB9KTsKIApAQCAtOTk4LDggKzk5Myw4IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSgp
CiAgICAgaWYgKCFtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lcikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZm
ZXJSZWY+KFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihtX2ltYWdlUGFpbnRlci5t
ZWRpYVNhbXBsZS0+cGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuY21TYW1wbGVCdWZmZXIpKTsKLSAg
ICBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2ltYWdlUGFp
bnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4
ZWxCdWZmZXIpKTsKKyAgICBpZiAoYXV0byBwaXhlbEJ1ZmZlciA9IG1faW1hZ2VQYWludGVyLm1l
ZGlhU2FtcGxlLT5waXhlbEJ1ZmZlcigpKQorICAgICAgICBtX2ltYWdlUGFpbnRlci5jZ0ltYWdl
ID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1l
ci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpKTsKIH0KIAogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5D
b250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKaW5kZXggN2Jl
NzM1MWU1YmFhN2QyMWU2M2ZjNDk5YTI3MTIzNWVjZjRmYjliMS4uNWI0ZjdmMDBkYjMzYTViY2Rm
NjU2YzYwMjJmMTQ4MzRmNDFjNTkwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFT
YW1wbGVBVkZPYmpDLmgKQEAgLTcyLDYgKzcyLDcgQEAgcHVibGljOgogICAgIGJvb2wgdmlkZW9N
aXJyb3JlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbWlycm9yZWQ7IH0KICAgICBXRUJD
T1JFX0VYUE9SVCB1aW50MzJfdCB2aWRlb1BpeGVsRm9ybWF0KCkgY29uc3QgZmluYWw7CiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxNZWRpYVNhbXBsZVZpZGVvRnJhbWU+IHZpZGVv
RnJhbWUoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBDVlBpeGVsQnVmZmVyUmVm
IHBpeGVsQnVmZmVyKCkgY29uc3QgZmluYWw7CiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxl
QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGUuZ2V0KCk7IH0KIAogICAgIGJvb2wgaXNI
b21vZ2VuZW91cygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVB
VkZPYmpDLm1tCmluZGV4IGEzYTMxNTZiZmJhMGNhNzk5MWY2NmRkM2VmMjRjMzI0NGQwZTNkZjgu
LjUwMDQzNDBmZWY0OWU0MmViMmZkZjgzNGZmYzI3OTE1M2Y1ODE0ZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2Ft
cGxlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KQEAgLTU1Niw0ICs1NTYsOSBAQCBz
dGQ6Om9wdGlvbmFsPE1lZGlhU2FtcGxlOjpCeXRlUmFuZ2U+IE1lZGlhU2FtcGxlQVZGT2JqQzo6
Ynl0ZVJhbmdlRm9yQXR0YWNobWVudAogICAgIHJldHVybiB7IHsgQ2hlY2tlZFNpemUoYnl0ZU9m
ZnNldCksIHNpbmdsZVNpemVFbnRyeSB9IH07CiB9CiAKK0NWUGl4ZWxCdWZmZXJSZWYgTWVkaWFT
YW1wbGVBVkZPYmpDOjpwaXhlbEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlciht
X3NhbXBsZS5nZXQoKSkpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmluZGV4IDY4Mjcz
ZWJmN2YwM2E4YTkyNjhjMGQ4OGY1MTFlM2Y2YzI5MzUwOTIuLjM5ZTNlN2UyM2VhMWYxNmQ2MWEz
MjA2NDM1YmFhNzUyZDlhNmQ2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC0zMCw2ICsz
MCw3IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJJbWFnZVRyYW5zZmVyU2Vz
c2lvblZULmgiCisjaW5jbHVkZSAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCiAjZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMTY5LDYgKzE3MCwxNCBAQCB2b2lkIFJlYWx0aW1lVmlkZW9T
b3VyY2U6OnNvdXJjZVN0b3BwZWQoKQogI2lmIFBMQVRGT1JNKENPQ09BKQogUmVmUHRyPE1lZGlh
U2FtcGxlPiBSZWFsdGltZVZpZGVvU291cmNlOjphZGFwdFZpZGVvU2FtcGxlKE1lZGlhU2FtcGxl
JiBzYW1wbGUpCiB7CisgICAgaWYgKHNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnR5cGUgIT0gUGxh
dGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZSkgeworICAgICAgICAvLyBGSVhNRTogU3Vw
cG9ydCBtb3JlIGVmZmljaWVudGx5IGRvd25zYW1wbGluZyBvZiByZW1vdGUgdmlkZW8gZnJhbWVz
IGJ5IGRvd25zYW1wbGluZyBpbiBHUFVQcm9jZXNzLgorICAgICAgICBhdXRvIG5ld1NhbXBsZSA9
IE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUoc2FtcGxlLnBpeGVsQnVmZmVy
KCksIHNhbXBsZS52aWRlb1JvdGF0aW9uKCksIHNhbXBsZS52aWRlb01pcnJvcmVkKCksIHNhbXBs
ZS5wcmVzZW50YXRpb25UaW1lKCksIHsgfSk7CisgICAgICAgIGlmICghbmV3U2FtcGxlKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBhZGFwdFZpZGVvU2FtcGxl
KCpuZXdTYW1wbGUpOworICAgIH0KKyAgICBBU1NFUlQoc2FtcGxlLnBsYXRmb3JtU2FtcGxlKCku
dHlwZSA9PSBQbGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVCdWZmZXJUeXBlKTsKICAgICBpZiAoIW1f
aW1hZ2VUcmFuc2ZlclNlc3Npb24gfHwgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+cGl4ZWxGb3Jt
YXQoKSAhPSBzYW1wbGUudmlkZW9QaXhlbEZvcm1hdCgpKQogICAgICAgICBtX2ltYWdlVHJhbnNm
ZXJTZXNzaW9uID0gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlKHNhbXBsZS52aWRlb1Bp
eGVsRm9ybWF0KCksIG1fc2hvdWxkVXNlSU9TdXJmYWNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1Nv
dXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EuaAppbmRleCBkMGZlOGUwNjU4MjJmODA3ZWJi
NGQ2NWEzMDdiNGJlYzBiOGZhYTYyLi42NDY2ZDYxOGRlNzQ5ZTVjNWY5MjYxZDI1MmRkOWIwYzE5
ZTFhNTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29j
b2EuaApAQCAtMjksNiArMjksNyBAQAogCiAjaWYgVVNFKExJQldFQlJUQykKIAorI2luY2x1ZGUg
Ik1lZGlhU2FtcGxlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgi
CiAKIHVzaW5nIENNU2FtcGxlQnVmZmVyUmVmID0gc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVy
KjsKQEAgLTQ5LDYgKzUwLDggQEAgcHJpdmF0ZToKICAgICBSZWFsdGltZUluY29taW5nVmlkZW9T
b3VyY2VDb2NvYShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNrSW50ZXJmYWNl
PiYmLCBTdHJpbmcmJik7CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHBpeGVsQnVm
ZmVyRnJvbVZpZGVvRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJik7CiAgICAgQ1ZQaXhl
bEJ1ZmZlclBvb2xSZWYgcGl4ZWxCdWZmZXJQb29sKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdo
dCwgd2VicnRjOjpCdWZmZXJUeXBlKTsKKyAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHRvVmlkZW9G
cmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlv
bik7CisgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBjcmVhdGVNZWRpYVNhbXBsZUZyb21DVlBpeGVs
QnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uLCBpbnQ2
NF90KTsKIAogICAgIC8vIHJ0Yzo6VmlkZW9TaW5rSW50ZXJmYWNlCiAgICAgdm9pZCBPbkZyYW1l
KGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJj
ZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tCmluZGV4IDUzN2VhMGI1MTEzMWNjYzFjODVk
MGIwM2VjM2E3NDJjYjYyNzk0NmQuLmExMDQ3YTNlODJiOGMyMTdlNGQwNTM2YmQ1NGIxYTcwZWFh
MTdjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29j
b2EubW0KQEAgLTExOCw3ICsxMTgsMzMgQEAgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgUmVhbHRpbWVJ
bmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OnBpeGVsQnVmZmVyUG9vbChzaXplX3Qgd2kKICAgICBy
ZXR1cm4gbV9waXhlbEJ1ZmZlclBvb2wuZ2V0KCk7CiB9CiAKLVJldGFpblB0cjxDVlBpeGVsQnVm
ZmVyUmVmPiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6cGl4ZWxCdWZmZXJGcm9t
VmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lKQorUmVmUHRyPE1lZGlh
U2FtcGxlPiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6Y3JlYXRlTWVkaWFTYW1w
bGVGcm9tQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCBNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgaW50NjRfdCB0aW1lU3RhbXApCit7CisgICAg
Q01TYW1wbGVUaW1pbmdJbmZvIHRpbWluZ0luZm87CisgICAgdGltaW5nSW5mby5wcmVzZW50YXRp
b25UaW1lU3RhbXAgPSBQQUw6OkNNVGltZU1ha2UodGltZVN0YW1wLCAxMDAwMDAwKTsKKyAgICB0
aW1pbmdJbmZvLmRlY29kZVRpbWVTdGFtcCA9IFBBTDo6a0NNVGltZUludmFsaWQ7CisgICAgdGlt
aW5nSW5mby5kdXJhdGlvbiA9IFBBTDo6a0NNVGltZUludmFsaWQ7CisKKyAgICBDTVZpZGVvRm9y
bWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb247CisgICAgT1NTdGF0dXMgb3N0YXR1
cyA9IFBBTDo6Q01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlRm9ySW1hZ2VCdWZmZXIoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgKENWSW1hZ2VCdWZmZXJSZWYpcGl4ZWxCdWZmZXIsICZmb3JtYXRE
ZXNjcmlwdGlvbik7CisgICAgaWYgKG9zdGF0dXMgIT0gbm9FcnIpIHsKKyAgICAgICAgRVJST1Jf
TE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAiRmFpbGVkIHRvIGluaXRpYWxpemUg
Q01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uIHdpdGggZXJyb3IgIiwgc3RhdGljX2Nhc3Q8aW50Pihv
c3RhdHVzKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIENNU2FtcGxl
QnVmZmVyUmVmIHNhbXBsZUJ1ZmZlcjsKKyAgICBvc3RhdHVzID0gUEFMOjpDTVNhbXBsZUJ1ZmZl
ckNyZWF0ZVJlYWR5V2l0aEltYWdlQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIChDVkltYWdl
QnVmZmVyUmVmKXBpeGVsQnVmZmVyLCBmb3JtYXREZXNjcmlwdGlvbiwgJnRpbWluZ0luZm8sICZz
YW1wbGVCdWZmZXIpOworICAgIENGUmVsZWFzZShmb3JtYXREZXNjcmlwdGlvbik7CisgICAgaWYg
KG9zdGF0dXMgIT0gbm9FcnIpIHsKKyAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBM
T0dJREVOVElGSUVSLCAiRmFpbGVkIHRvIGNyZWF0ZSB0aGUgc2FtcGxlIGJ1ZmZlciB3aXRoIGVy
cm9yICIsIHN0YXRpY19jYXN0PGludD4ob3N0YXR1cykpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisKKyAgICBhdXRvIHNhbXBsZSA9IGFkb3B0Q0Yoc2FtcGxlQnVmZmVyKTsKKyAg
ICByZXR1cm4gTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUoc2FtcGxlLmdldCgpLCByb3RhdGlv
bik7Cit9CisKK1JlZlB0cjxNZWRpYVNhbXBsZT4gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNl
Q29jb2E6OnRvVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lLCBNZWRp
YVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKIHsKICAgICBpZiAobXV0ZWQoKSkgewog
ICAgICAgICBpZiAoIW1fYmxhY2tGcmFtZSB8fCBtX2JsYWNrRnJhbWVXaWR0aCAhPSBmcmFtZS53
aWR0aCgpIHx8IG1fYmxhY2tGcmFtZUhlaWdodCAhPSBmcmFtZS5oZWlnaHQoKSkgewpAQCAtMTI2
LDEyICsxNTIsMTYgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IFJlYWx0aW1lSW5jb21p
bmdWaWRlb1NvdXJjZUNvY29hOjpwaXhlbEJ1ZmZlckZyb21WaWQKICAgICAgICAgICAgIG1fYmxh
Y2tGcmFtZUhlaWdodCA9IGZyYW1lLmhlaWdodCgpOwogICAgICAgICAgICAgbV9ibGFja0ZyYW1l
ID0gY3JlYXRlQmxhY2tQaXhlbEJ1ZmZlcihtX2JsYWNrRnJhbWVXaWR0aCwgbV9ibGFja0ZyYW1l
SGVpZ2h0KTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbV9ibGFja0ZyYW1lLmdldCgpOwor
ICAgICAgICByZXR1cm4gY3JlYXRlTWVkaWFTYW1wbGVGcm9tQ1ZQaXhlbEJ1ZmZlcihtX2JsYWNr
RnJhbWUuZ2V0KCksIHJvdGF0aW9uLCBmcmFtZS50aW1lc3RhbXBfdXMoKSk7CiAgICAgfQogCisg
ICAgLy8gRklYTUU6IERldGVjdCB0aGUgY2FzZSBvZiBmcmFtZSBoYXZpbmcgYSBGcmFtZUJ1ZmZl
clByb3ZpZGVyLgorICAgIGlmIChhdXRvIHByb3ZpZGVyID0gd2VicnRjOjp2aWRlb0ZyYW1lQnVm
ZmVyUHJvdmlkZXIoZnJhbWUpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWVkaWFTYW1w
bGUqPihwcm92aWRlcik7CisKICAgICAvLyBJbiBjYXNlIG9mIGluIG1lbW9yeSBzYW1wbGVzLCB3
ZSBoYXZlIG5vbiBpbnRlcmxlYXZlZCBZVVYgZGF0YSB3aGlsZSBDVlBpeGVsQnVmZmVycyBwcmVm
ZXIgaW50ZXJsZWF2ZWQgWVVWIGRhdGEuCiAgICAgLy8gTWF5YmUgd2Ugc2hvdWxkIGludHJvZHVj
ZSBhIE1lZGlhU2FtcGxlIHRoYXQgd291bGQgcmVwcmVzZW50IG5vbiBpbnRlcmxlYXZlZCBZVVYg
ZGF0YSBhcyBhbiBvcHRpbWl6YXRpb24uCi0gICAgcmV0dXJuIGFkb3B0Q0Yod2VicnRjOjpjcmVh
dGVQaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFtZSwgW3RoaXNdKHNpemVfdCB3aWR0aCwgc2l6ZV90
IGhlaWdodCwgd2VicnRjOjpCdWZmZXJUeXBlIGJ1ZmZlclR5cGUpIC0+IENWUGl4ZWxCdWZmZXJS
ZWYgeworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBhZG9wdENGKHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxC
dWZmZXJGcm9tRnJhbWUoZnJhbWUsIFt0aGlzXShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQs
IHdlYnJ0Yzo6QnVmZmVyVHlwZSBidWZmZXJUeXBlKSAtPiBDVlBpeGVsQnVmZmVyUmVmIHsKICAg
ICAgICAgYXV0byBwaXhlbEJ1ZmZlclBvb2wgPSB0aGlzLT5waXhlbEJ1ZmZlclBvb2wod2lkdGgs
IGhlaWdodCwgYnVmZmVyVHlwZSk7CiAgICAgICAgIGlmICghcGl4ZWxCdWZmZXJQb29sKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNDUsMTggKzE3NSwxOSBAQCBSZXRhaW5QdHI8
Q1ZQaXhlbEJ1ZmZlclJlZj4gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OnBpeGVs
QnVmZmVyRnJvbVZpZAogICAgICAgICB9CiAgICAgICAgIHJldHVybiBwaXhlbEJ1ZmZlcjsKICAg
ICB9KSk7CisgICAgcmV0dXJuIGNyZWF0ZU1lZGlhU2FtcGxlRnJvbUNWUGl4ZWxCdWZmZXIocGl4
ZWxCdWZmZXIuZ2V0KCksIHJvdGF0aW9uLCBmcmFtZS50aW1lc3RhbXBfdXMoKSk7CiB9CiAKLXZv
aWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6Ok9uRnJhbWUoY29uc3Qgd2VicnRj
OjpWaWRlb0ZyYW1lJiBmcmFtZSkKK3ZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29j
b2E6Ok9uRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiB3ZWJydGNWaWRlb0ZyYW1lKQog
ewogICAgIGlmICghaXNQcm9kdWNpbmdEYXRhKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVu
c2lnbmVkIHdpZHRoID0gZnJhbWUud2lkdGgoKTsKLSAgICB1bnNpZ25lZCBoZWlnaHQgPSBmcmFt
ZS5oZWlnaHQoKTsKKyAgICB1bnNpZ25lZCB3aWR0aCA9IHdlYnJ0Y1ZpZGVvRnJhbWUud2lkdGgo
KTsKKyAgICB1bnNpZ25lZCBoZWlnaHQgPSB3ZWJydGNWaWRlb0ZyYW1lLmhlaWdodCgpOwogCiAg
ICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb247Ci0gICAgc3dpdGNoIChmcmFt
ZS5yb3RhdGlvbigpKSB7CisgICAgc3dpdGNoICh3ZWJydGNWaWRlb0ZyYW1lLnJvdGF0aW9uKCkp
IHsKICAgICBjYXNlIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMDoKICAgICAgICAgcm90YXRpb24g
PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZTsKICAgICAgICAgYnJlYWs7CkBAIC0x
NzQsNDAgKzIwNSwxNSBAQCB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpP
bkZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhbWUpCiAgICAgfQogCiAjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECi0gICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSAmJiAhKCsr
bV9udW1iZXJPZkZyYW1lcyAlIDYwKSwgTE9HSURFTlRJRklFUiwgImZyYW1lICIsIG1fbnVtYmVy
T2ZGcmFtZXMsICIsIHJvdGF0aW9uICIsIGZyYW1lLnJvdGF0aW9uKCksICIgc2l6ZSAiLCB3aWR0
aCwgIngiLCBoZWlnaHQpOworICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCkgJiYgISgrK21f
bnVtYmVyT2ZGcmFtZXMgJSA2MCksIExPR0lERU5USUZJRVIsICJmcmFtZSAiLCBtX251bWJlck9m
RnJhbWVzLCAiLCByb3RhdGlvbiAiLCB3ZWJydGNWaWRlb0ZyYW1lLnJvdGF0aW9uKCksICIgc2l6
ZSAiLCB3aWR0aCwgIngiLCBoZWlnaHQpOwogI2VuZGlmCiAKLSAgICBhdXRvIHBpeGVsQnVmZmVy
ID0gcGl4ZWxCdWZmZXJGcm9tVmlkZW9GcmFtZShmcmFtZSk7Ci0gICAgaWYgKCFwaXhlbEJ1ZmZl
cikgewotICAgICAgICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsICJG
YWlsZWQgdG8gZ2V0IGEgcGl4ZWwgYnVmZmVyIGZyb20gYSBmcmFtZSIpOworICAgIGF1dG8gdmlk
ZW9GcmFtZSA9IHRvVmlkZW9GcmFtZSh3ZWJydGNWaWRlb0ZyYW1lLCByb3RhdGlvbik7CisgICAg
aWYgKCF2aWRlb0ZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ01TYW1wbGVU
aW1pbmdJbmZvIHRpbWluZ0luZm87Ci0gICAgdGltaW5nSW5mby5wcmVzZW50YXRpb25UaW1lU3Rh
bXAgPSBQQUw6OkNNVGltZU1ha2UoZnJhbWUudGltZXN0YW1wX3VzKCksIDEwMDAwMDApOwotICAg
IHRpbWluZ0luZm8uZGVjb2RlVGltZVN0YW1wID0gUEFMOjprQ01UaW1lSW52YWxpZDsKLSAgICB0
aW1pbmdJbmZvLmR1cmF0aW9uID0gUEFMOjprQ01UaW1lSW52YWxpZDsKLQotICAgIENNVmlkZW9G
b3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbjsKLSAgICBPU1N0YXR1cyBvc3Rh
dHVzID0gUEFMOjpDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGVGb3JJbWFnZUJ1ZmZlcihr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCAoQ1ZJbWFnZUJ1ZmZlclJlZilwaXhlbEJ1ZmZlciwgJmZvcm1h
dERlc2NyaXB0aW9uKTsKLSAgICBpZiAob3N0YXR1cyAhPSBub0VycikgewotICAgICAgICBFUlJP
Ul9MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsICJGYWlsZWQgdG8gaW5pdGlhbGl6
ZSBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb24gd2l0aCBlcnJvciAiLCBzdGF0aWNfY2FzdDxpbnQ+
KG9zdGF0dXMpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIENNU2FtcGxlQnVmZmVy
UmVmIHNhbXBsZUJ1ZmZlcjsKLSAgICBvc3RhdHVzID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckNyZWF0
ZVJlYWR5V2l0aEltYWdlQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIChDVkltYWdlQnVmZmVy
UmVmKXBpeGVsQnVmZmVyLCBmb3JtYXREZXNjcmlwdGlvbiwgJnRpbWluZ0luZm8sICZzYW1wbGVC
dWZmZXIpOwotICAgIENGUmVsZWFzZShmb3JtYXREZXNjcmlwdGlvbik7Ci0gICAgaWYgKG9zdGF0
dXMgIT0gbm9FcnIpIHsKLSAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVO
VElGSUVSLCAiRmFpbGVkIHRvIGNyZWF0ZSB0aGUgc2FtcGxlIGJ1ZmZlciB3aXRoIGVycm9yICIs
IHN0YXRpY19jYXN0PGludD4ob3N0YXR1cykpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgYXV0byBzYW1wbGUgPSBhZG9wdENGKHNhbXBsZUJ1ZmZlcik7CiAKICAgICBzZXRJbnRyaW5z
aWNTaXplKEludFNpemUod2lkdGgsIGhlaWdodCkpOwotCi0gICAgdmlkZW9TYW1wbGVBdmFpbGFi
bGUoTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUoc2FtcGxlLmdldCgpLCByb3RhdGlvbiksIG1l
dGFkYXRhRnJvbVZpZGVvRnJhbWUoZnJhbWUpKTsKKyAgICB2aWRlb1NhbXBsZUF2YWlsYWJsZSgq
dmlkZW9GcmFtZSwgbWV0YWRhdGFGcm9tVmlkZW9GcmFtZSh3ZWJydGNWaWRlb0ZyYW1lKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRn
b2luZ1ZpZGVvU291cmNlQ29jb2EuY3BwCmluZGV4IDU4YzZiZGU0MzQ2NmVkMzhjNzdiZTY3NWEy
YjcyMTIzZDcyZTcxMjIuLmEzNzU5NWViMzY5MzA4YzU2Nzg2NmY3ODgzNDE2ZTNjOGRlZmZhNTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNw
cApAQCAtODMsOCArODMsOCBAQCB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29h
Ojp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgc2FtcGxlLAogICAgICAgICBicmVh
azsKICAgICB9CiAKLSAgICBBU1NFUlQoc2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBQ
bGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVCdWZmZXJUeXBlKTsKLSAgICBhdXRvIHBpeGVsQnVmZmVy
ID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1ZmZlckdldElt
YWdlQnVmZmVyKHNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcikp
OworICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSB0aGUgY2FzZSBvZiBQbGF0Zm9ybVNhbXBsZTo6UmVt
b3RlVmlkZW9GcmFtZVByb3h5VHlwZS4KKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gc2FtcGxlLnBp
eGVsQnVmZmVyKCk7CiAgICAgYXV0byBwaXhlbEZvcm1hdFR5cGUgPSBDVlBpeGVsQnVmZmVyR2V0
UGl4ZWxGb3JtYXRUeXBlKHBpeGVsQnVmZmVyKTsKIAogICAgIFJldGFpblB0cjxDVlBpeGVsQnVm
ZmVyUmVmPiBjb252ZXJ0ZWRCdWZmZXIgPSBwaXhlbEJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA1ZmU2MzQ3MTJjMGVjYmU2MWQw
YWYzNzUwYzk4YjYyZTk5MjFhN2QwLi5hN2JjMDFhZTdiZGNmN2Y0YzM1OGIzNmEwMTk0NGMzM2Zi
NmI0MzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0CkBAIC0xOTcsNiArMTk3LDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVj
cy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldl
YlJUQ1JlbW90ZUNvZGVjcy5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggOTNlOWNmMmJkOTM2
OTQ4OTI0NjQ1YTkyMDRmYmFkYWZmNmFiNzIxOS4uMDNmZjk4N2E3M2M5ZGZlZDU4MzNkNzRiYzg0
MzEzOTRiZDMwN2NkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0CkBAIC0zODQsNiArMzg0LDkgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVUZXh0dXJlVmlld01lc3NhZ2VzUmVwbGllcy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VzLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXBNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dC9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cFByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFtZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1l
UHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0L1JlbW90ZVZpZGVvRnJhbWVQcm94eU1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLm1ha2UKaW5kZXggYzNjMGQ1YWM2ZTFiYTg0MGFkY2U2NmM4YzRhNTk2Nzc4OTAwODI4
Ni4uZGQzYTUxMTAxOGY1N2FhMjVlMjViYWM1NWNiMTY4YzZlMjRiYjE1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMubWFrZQpAQCAtMjA1LDYgKzIwNSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0g
XAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lciBcCiAJ
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZSBcCiAJV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlciBcCisJV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkgXAogCVdlYlByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcCBcCiAJV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIgXAogCVdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvckludGVycnVwdERpc3BhdGNoZXIgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDRhMzEyZWUzZDMzYjY3
MmFiZWMzM2Q4NzM4MDdkNWNkNjkyYTU1NmYuLjc5MGEwZjJmNGU2MmJmYzU3NmIyNWY0Yjc1ZDY3
MDE1NmE1ODAwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTIwNiwyMCArMjA2LDIxIEBAIHByaXZhdGU6
CiAgICAgICAgIG1fcHJvY2Vzcy5zZXRUQ0NJZGVudGl0eSgpOwogICAgIH0KICNlbmRpZgotI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCiAgICAgdm9pZCBzdGFy
dFByb2R1Y2luZ0RhdGEoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlKSBmaW5hbAogICAg
IHsKICAgICAgICAgaWYgKHR5cGUgIT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8p
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1fcHJvY2Vzcy5zdGFydENhcHR1cmluZ0F1
ZGlvKCk7CiAgICAgfQotI2VuZGlmCiAKICAgICBjb25zdCBQcm9jZXNzSWRlbnRpdHkmIHJlc291
cmNlT3duZXIoKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fcHJvY2Vzcy53
ZWJQcm9jZXNzSWRlbnRpdHkoKTsKICAgICB9CiAKKyAgICBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcCogcmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAoKSBmaW5hbCB7IHJldHVybiAmbV9wcm9j
ZXNzLnZpZGVvRnJhbWVPYmplY3RIZWFwKCk7IH0KKwogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIG1fcHJvY2VzczsKIH07CiAKQEAgLTIzNywxNSArMjM4LDE4IEBAIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYgZ3B1
UHJvY2VzcywgV2ViCiAgICAgLCBtX3dlYlByb2Nlc3NJZGVudGl0eShXVEZNb3ZlKHBhcmFtZXRl
cnMud2ViUHJvY2Vzc0lkZW50aXR5KSkKICAgICAsIG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkobWFrZVVuaXF1ZVJlZjxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eT4oKnRoaXMp
KQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBV
U0UoTElCV0VCUlRDKQotICAgICwgbV9saWJXZWJSVENDb2RlY3NQcm94eShMaWJXZWJSVENDb2Rl
Y3NQcm94eTo6Y3JlYXRlKCp0aGlzKSkKLSNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogICAgICwgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5h
Z2VyKFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OmNyZWF0ZSgqdGhpcykp
CiAjZW5kaWYKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgICwgbV9jYXB0dXJlT3JpZ2lu
KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSkKICNlbmRpZgorI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisgICAgLCBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwKFJlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwOjpjcmVhdGUoKnRoaXMpKQorI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpICYm
IFVTRShMSUJXRUJSVEMpCisgICAgLCBtX2xpYldlYlJUQ0NvZGVjc1Byb3h5KExpYldlYlJUQ0Nv
ZGVjc1Byb3h5OjpjcmVhdGUoKnRoaXMpKQorI2VuZGlmCiAjaWYgSEFWRShBVURJVF9UT0tFTikK
ICAgICAsIG1fcHJlc2VudGluZ0FwcGxpY2F0aW9uQXVkaXRUb2tlbihXVEZNb3ZlKHBhcmFtZXRl
cnMucHJlc2VudGluZ0FwcGxpY2F0aW9uQXVkaXRUb2tlbikpCiAjZW5kaWYKQEAgLTI1OCw5ICsy
NjIsNiBAQCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKEdQVVByb2Nlc3MmIGdwdVByb2Nlc3MsIFdlYgogI2lmIEVOQUJMRShST1VUSU5HX0FSQklU
UkFUSU9OKSAmJiBIQVZFKEFWQVVESU9fUk9VVElOR19BUkJJVEVSKQogICAgIGdwdVByb2Nlc3Mu
YXVkaW9TZXNzaW9uTWFuYWdlcigpLnNlc3Npb24oKS5zZXRSb3V0aW5nQXJiaXRyYXRpb25DbGll
bnQobV9yb3V0aW5nQXJiaXRyYXRvci5nZXQoKSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotICAgIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAgPSBSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcDo6Y3JlYXRlKCp0aGlzKTsKLSNlbmRpZgogCiAgICAgaWYgKCFwYXJhbWV0ZXJzLm92
ZXJyaWRlTGFuZ3VhZ2VzLmlzRW1wdHkoKSkKICAgICAgICAgb3ZlcnJpZGVVc2VyUHJlZmVycmVk
TGFuZ3VhZ2VzKHBhcmFtZXRlcnMub3ZlcnJpZGVMYW5ndWFnZXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMTFh
Y2MwMGM3NGViNWQxMmY4MjgyZDQ0NjYzOTdkODdkN2U5NzU5ZC4uZmIyMDI2ZDEwMTNjNzk4NWYw
ZmFhYWQ4ZGQ4NGI0OWQxMTYzNDRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0yOTQsOSArMjk0LDYgQEAgcHJp
dmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI+IG1f
cmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI7CiAgICAgVW5pcXVlUmVmPFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5PiBtX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OwogICAgIFBB
TDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElC
V0VCUlRDKQotICAgIFJlZjxMaWJXZWJSVENDb2RlY3NQcm94eT4gbV9saWJXZWJSVENDb2RlY3NQ
cm94eTsKLSNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogICAgIHN0ZDo6dW5pcXVlX3B0cjxVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5PiBtX3Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcj4gbV9hdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI7CkBAIC0zMTMsNiArMzEw
LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fYWxsb3dzRGlzcGxheUNhcHR1cmUgeyBmYWxzZSB9
OwogICAgIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcD4gbV92aWRlb0ZyYW1lT2JqZWN0SGVhcDsKICNlbmRpZgorI2lmIFBMQVRG
T1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQorICAgIFJlZjxMaWJXZWJSVENDb2RlY3NQcm94
eT4gbV9saWJXZWJSVENDb2RlY3NQcm94eTsKKyNlbmRpZgogI2lmIEhBVkUoQVVESVRfVE9LRU4p
CiAgICAgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBtX3ByZXNlbnRpbmdBcHBsaWNhdGlv
bkF1ZGl0VG9rZW47CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwCmluZGV4IGY2Zjg4
ZmMxNjc3Y2I5ZjJmNDcyODQ2ZTgzZjNmMjU0ZTNhOTkxNWYuLmRmMGNhMzExMTM5YWVkY2Q2NTYw
MTI1NzYzMDNjOTBjM2M3NGViMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcApAQCAtMjks
OSArMjksMTIgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcFByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVWaWRlb0Zy
YW1lUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlcy5oIgog
CisjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IFJlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwOjpjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvblRv
V2ViUHJvY2VzcykKQEAgLTY4LDE2ICs3MSw0MSBAQCB2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwOjphZGRWaWRlb0ZyYW1lKFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSYmCiAg
ICAgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM+IHJlc3Vs
dDsKICAgICBpZiAoZnJhbWUpCiAgICAgICAgIHJlc3VsdCA9IFJlbW90ZVZpZGVvRnJhbWVQcm94
eTo6cHJvcGVydGllcygqZnJhbWUpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpXYXNJbml0aWFsaXplZChyZXN1bHQpLCAgd3JpdGUuaWRl
bnRpZmllcigpLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpXYXNJbml0aWFsaXplZChyZXN1bHQpLCAgd3JpdGUuaWRl
bnRpZmllcigpLm9iamVjdCgpLnRvVUludDY0KCkpOwogICAgIHJldGlyZShXVEZNb3ZlKHdyaXRl
KSwgV1RGTW92ZShmcmFtZSksIHN0ZDo6bnVsbG9wdCk7CiB9CiAKK1JlbW90ZVZpZGVvRnJhbWVJ
ZGVudGlmaWVyIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpjcmVhdGVWaWRlb0ZyYW1lKFJl
ZjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4mJiBmcmFtZSkKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIg
PSBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcjo6Z2VuZXJhdGVUaHJlYWRTYWZlKCk7CisgICAg
YWRkKGlkZW50aWZpZXIsIFdURk1vdmUoZnJhbWUpKTsKKyAgICByZXR1cm4gaWRlbnRpZmllcjsK
K30KKwogdm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6cmVsZWFzZVZpZGVvRnJhbWUo
UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJiYgd3JpdGUpCiB7CiAgICAgYXNzZXJ0SXND
dXJyZW50KG1fY29uc3VtZVRocmVhZCk7CiAgICAgcmV0aXJlUmVtb3ZlKFdURk1vdmUod3JpdGUp
KTsKIH0KIAordm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6Z2V0VmlkZW9GcmFtZUJ1
ZmZlcihSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSYmIHJlYWQpCit7CisgICAgYXV0byBp
ZGVudGlmaWVyID0gcmVhZC5pZGVudGlmaWVyKCk7CisgICAgYXV0byBtZWRpYVNhbXBsZSA9IHJl
dGlyZShXVEZNb3ZlKHJlYWQpLCAwX3MpOworCisgICAgaWYgKCFtZWRpYVNhbXBsZSkKKyAgICAg
ICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cFByb3h5OjpWaWRlb0ZyYW1lQnVmZmVyTm90Rm91bmQgeyBpZGVudGlmaWVyIH0sIDApOworCisg
ICAgYXV0byBwbGF0Zm9ybVNhbXBsZSA9IG1lZGlhU2FtcGxlLT5wbGF0Zm9ybVNhbXBsZSgpOwor
ICAgIEFTU0VSVChwbGF0Zm9ybVNhbXBsZS50eXBlID09IFBsYXRmb3JtU2FtcGxlOjpDTVNhbXBs
ZUJ1ZmZlclR5cGUpOworCisgICAgbV9zaGFyZWRWaWRlb0ZyYW1lV3JpdGVyLndyaXRlKHN0YXRp
Y19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZl
cihwbGF0Zm9ybVNhbXBsZS5zYW1wbGUuY21TYW1wbGVCdWZmZXIpKSwKKyAgICAgICAgWyZdKGF1
dG8mIHNlbWFwaG9yZSkgeyBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwUHJveHk6OlNldFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhvcmUgeyBzZW1h
cGhvcmUgfSwgMCk7IH0sCisgICAgICAgIFsmXShhdXRvJiBoYW5kbGUpIHsgbV9jb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5OjpTZXRTaGFy
ZWRWaWRlb0ZyYW1lTWVtb3J5IHsgaGFuZGxlIH0sIDApOyB9CisgICAgKTsKKyAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk6Ok5l
d1ZpZGVvRnJhbWVCdWZmZXIgeyBpZGVudGlmaWVyIH0sIDApOworfQorCiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXAuaAppbmRleCA1MTU5YzgwNDY2ZjVmMTNmOTNiYzQyNTcwOTVkOTFi
NDgwZWExNjNiLi4zMzRlNmM4Njg2OGFiZTc1YWVkNWM1MjA5MmE5NzVkZjNjMTcwZjBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXAuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJh
bWVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU2hhcmVkVmlkZW9GcmFtZS5oIgogI2luY2x1ZGUg
IlRocmVhZFNhZmVPYmplY3RIZWFwLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNhbXBsZS5o
PgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRBc3NlcnRpb25zLmg+CkBAIC00NCw2ICs0NSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBjcmVhdGUo
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOwogICAgIH5SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcCgpOwogCisgICAgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgY3JlYXRlVmlkZW9GcmFt
ZShSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYpOwogICAgIHZvaWQgYWRkVmlkZW9GcmFtZShS
ZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UmJiwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2Ft
cGxlPiYmKTsKIAogICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8UmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXA+JiYgcmVmRnJvbUNvbm5lY3Rpb24pOwpAQCAtNTUsMTAgKzU3LDEyIEBA
IHByaXZhdGU6CiAKICAgICAvLyBNZXNzYWdlcy4KICAgICB2b2lkIHJlbGVhc2VWaWRlb0ZyYW1l
KFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSYmKTsKKyAgICB2b2lkIGdldFZpZGVvRnJh
bWVCdWZmZXIoUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UmJik7CiAKICAgICBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgV1RGX0dVQVJE
RURfQllfTE9DSyhtX2NvbnN1bWVUaHJlYWQpOwogICAgIGNvbnN0IFJlZjxJUEM6OkNvbm5lY3Rp
b24+IG1fY29ubmVjdGlvbjsKICAgICBUaHJlYWRBc3NlcnRpb24gbV9jb25zdW1lVGhyZWFkIE5P
X1VOSVFVRV9BRERSRVNTOworICAgIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXIgbV9zaGFyZWRWaWRl
b0ZyYW1lV3JpdGVyOwogfTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2Fn
ZXMuaW4KaW5kZXggYTI3OGNlM2QwMzlkYmUxNzMxZDVhZjZjOGU0OTkxMGEzOTUyYTcxMi4uMWQz
ZDI0M2UxNTE3NWVmZjljOGQ3ZWZjYmJiZDBiMTUyZGU1Y2E2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcC5tZXNzYWdlcy5pbgpAQCAtMjMsNiArMjMsNyBAQAogCiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogbWVzc2FnZXMgLT4gUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXAgTm90UmVmQ291bnRlZCB7CisgICAgR2V0VmlkZW9GcmFtZUJ1
ZmZlcihXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlIGlkZW50aWZpZXIpCiAg
ICAgUmVsZWFzZVZpZGVvRnJhbWUoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVu
Y2UgaWRlbnRpZmllcikKIH0KLSNlbmRpZgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3NQcm94eS5oCmluZGV4IGM3NzJjYjc3NjBmMmQ1ODI5YWZjZDJiODVmNTkxM2EzMGMw
MDc0NDQuLjhlZjI5Y2FlMjQwOTFkZWZjZDg5YzQxNDA2MDRjNmZlYzk4MjIwMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1By
b3h5LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSAiUlRDRGVjb2RlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENFbmNvZGVySWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAiU2hhcmVkVmlkZW9GcmFtZS5oIgogI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CkBAIC01Myw2ICs1NCw3IEBAIHVzaW5nIExvY2FsRW5jb2RlciA9IHZv
aWQqOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M7CitjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDsKIGNsYXNzIFNoYXJlZFZpZGVv
RnJhbWVSZWFkZXI7CiAKIGNsYXNzIExpYldlYlJUQ0NvZGVjc1Byb3h5IDogcHVibGljIElQQzo6
Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVyUmVmQ291bnRlZCB7CkBAIC04Myw3ICs4
NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5n
Pj4mLCBib29sIHVzZUxvd0xhdGVuY3kpOwogICAgIHZvaWQgcmVsZWFzZUVuY29kZXIoUlRDRW5j
b2RlcklkZW50aWZpZXIpOwogICAgIHZvaWQgaW5pdGlhbGl6ZUVuY29kZXIoUlRDRW5jb2Rlcklk
ZW50aWZpZXIsIHVpbnQxNl90IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQsIHVuc2lnbmVkIHN0YXJ0
Qml0cmF0ZSwgdW5zaWduZWQgbWF4Qml0cmF0ZSwgdW5zaWduZWQgbWluQml0cmF0ZSwgdWludDMy
X3QgbWF4RnJhbWVyYXRlKTsKLSAgICB2b2lkIGVuY29kZUZyYW1lKFJUQ0VuY29kZXJJZGVudGlm
aWVyLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmLCB1aW50MzJfdCB0aW1lU3RhbXAsIGJv
b2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSk7CisgICAgdm9pZCBlbmNvZGVGcmFtZShSVENFbmNv
ZGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiwgdWludDMyX3QgdGlt
ZVN0YW1wLCBib29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUsIHN0ZDo6b3B0aW9uYWw8UmVtb3Rl
VmlkZW9GcmFtZVJlYWRSZWZlcmVuY2U+KTsKICAgICB2b2lkIHNldEVuY29kZVJhdGVzKFJUQ0Vu
Y29kZXJJZGVudGlmaWVyLCB1aW50MzJfdCBiaXRSYXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpOwog
ICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFwaG9yZShSVENFbmNvZGVySWRlbnRpZmll
ciwgSVBDOjpTZW1hcGhvcmUmJik7CiAgICAgdm9pZCBzZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5
KFJUQ0VuY29kZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpOwpA
QCAtMTAxLDYgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxSVENEZWNvZGVySWRlbnRp
Zmllciwgd2VicnRjOjpMb2NhbERlY29kZXI+IG1fZGVjb2RlcnMgV1RGX0dVQVJERURfQllfTE9D
SyhtX2xvY2spOyAvLyBPbmx5IG1vZGlmaWVkIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZSBi
dXQgbWF5IGdldCBhY2Nlc3NlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KICAgICBIYXNoTWFwPFJU
Q0VuY29kZXJJZGVudGlmaWVyLCBFbmNvZGVyPiBtX2VuY29kZXJzIFdURl9HVUFSREVEX0JZX0xP
Q0sobV9sb2NrKTsgLy8gT25seSBtb2RpZmllZCBvbiB0aGUgbGliV2ViUlRDQ29kZWNzUXVldWUg
YnV0IG1heSBnZXQgYWNjZXNzZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCiAgICAgUmVmPFdvcmtR
dWV1ZT4gbV9xdWV1ZTsKKyAgICBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlk
ZW9GcmFtZU9iamVjdEhlYXA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5p
bgppbmRleCA2YmIyMDg2MzhkYzIyYTg5ZWZiODljOWFmOTA2YTAzZWE2OWU3NDRlLi43M2QwYjU4
ZDQ3YmQxNjA3NzVkNDhlNjY5YTdlM2QxZWU0YjUxYWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHku
bWVzc2FnZXMuaW4KQEAgLTM0LDcgKzM0LDcgQEAgbWVzc2FnZXMgLT4gTGliV2ViUlRDQ29kZWNz
UHJveHkgTm90UmVmQ291bnRlZCB7CiAgICAgQ3JlYXRlRW5jb2RlcihXZWJLaXQ6OlJUQ0VuY29k
ZXJJZGVudGlmaWVyIGlkLCBTdHJpbmcgZm9ybWF0TmFtZSwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJp
bmcsIFN0cmluZz4+IHBhcmFtZXRlcnMsIGJvb2wgdXNlTG93TGF0ZW5jeSk7CiAgICAgUmVsZWFz
ZUVuY29kZXIoV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCkKICAgICBJbml0aWFsaXpl
RW5jb2RlcihXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyIGlkLCB1aW50MTZfdCB3aWR0aCwg
dWludDE2X3QgaGVpZ2h0LCB1bnNpZ25lZCBzdGFydEJpdHJhdGUsIHVuc2lnbmVkIG1heEJpdHJh
dGUsIHVuc2lnbmVkIG1pbkJpdHJhdGUsIHVpbnQzMl90IG1heEZyYW1lcmF0ZSkKLSAgICBFbmNv
ZGVGcmFtZShXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyIGlkLCBXZWJDb3JlOjpSZW1vdGVW
aWRlb1NhbXBsZSBzYW1wbGUsIHVpbnQzMl90IHRpbWVTdGFtcCwgYm9vbCBzaG91bGRFbmNvZGVB
c0tleUZyYW1lKQorICAgIEVuY29kZUZyYW1lKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIg
aWQsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSwgdWludDMyX3QgdGltZVN0YW1w
LCBib29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1v
dGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZT4gc2FtcGxlUmVmZXJlbmNlKQogICAgIFNldEVuY29k
ZVJhdGVzKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQsIHVpbnQzMl90IGJpdFJhdGUs
IHVpbnQzMl90IGZyYW1lUmF0ZSkKICAgICBTZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlKFdl
YktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQsIElQQzo6U2VtYXBob3JlIHNlbWFwaG9yZSkK
ICAgICBTZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5KFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZp
ZXIgaWQsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3RvcmFnZUhhbmRsZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNz
UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVj
c1Byb3h5Lm1tCmluZGV4IDIyZTIwNmFiOWE5MzJhNTliY2VkNTMzOTNiZGM4YjMwMWFjNjgzNGIu
LjIwZTE4OTQ1Zjg0YjVkZTk1MmM5YTgyNGIyOTY5NzkwNzk1OGIyZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5t
bQpAQCAtMzIsMjEgKzMyLDI3IEBACiAjaW1wb3J0ICJHUFVQcm9jZXNzLmgiCiAjaW1wb3J0ICJM
aWJXZWJSVENDb2RlY3NNZXNzYWdlcy5oIgogI2ltcG9ydCAiTGliV2ViUlRDQ29kZWNzUHJveHlN
ZXNzYWdlcy5oIgorI2ltcG9ydCAiUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIKKyNpbXBv
cnQgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCiAjaW1wb3J0ICJTaGFyZWRWaWRlb0Zy
YW1lLmgiCiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbXBvcnQgPFdlYkNv
cmUvQ1ZVdGlsaXRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvTGliV2ViUlRDUHJvdmlkZXIuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvTWVkaWFTYW1wbGVBVkZPYmpDLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1JlbW90ZVZpZGVvU2FtcGxlLmg+CiAjaW1wb3J0IDx3ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRE
ZWNvZGVyLmg+CiAjaW1wb3J0IDx3ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRFbmNvZGVyLmg+CiAj
aW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9NZWRpYVRpbWUuaD4KIAorI2lt
cG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBMaWJXZWJSVENDb2RlY3NQcm94eTo6TGliV2ViUlRDQ29kZWNzUHJveHkoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbikKICAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2Vzcyhjb25uZWN0aW9uKQogICAgICwgbV9xdWV1ZShjb25uZWN0aW9uLmdwdVByb2Nlc3MoKS5s
aWJXZWJSVENDb2RlY3NRdWV1ZSgpKQorICAgICwgbV92aWRlb0ZyYW1lT2JqZWN0SGVhcChjb25u
ZWN0aW9uLnZpZGVvRnJhbWVPYmplY3RIZWFwKCkpCiB7CiAgICAgbV9ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5hZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMpOwogfQpA
QCAtNzcsMTIgKzgzLDIyIEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNsb3NlKCkKIAog
c3RhdGljIEZ1bmN0aW9uPHZvaWQoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgdWludDMy
X3QgdGltZVN0YW1wTnMsIHVpbnQzMl90IHRpbWVTdGFtcCk+IGNyZWF0ZURlY29kZXJDYWxsYmFj
ayhSVENEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQogewotICAgIHJldHVybiBbY29ubmVjdGlv
biA9IFJlZiB7IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpIH0sIHJlc291
cmNlT3duZXIgPSBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLndlYlByb2Nlc3NJZGVudGl0eSgp
LCBpZGVudGlmaWVyXSAoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgdWludDMyX3QgdGlt
ZVN0YW1wTnMsIHVpbnQzMl90IHRpbWVTdGFtcCkgewotICAgICAgICBpZiAoYXV0byBzYW1wbGUg
PSBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHBpeGVsQnVmZmVyLCBNZWRpYVRp
bWUodGltZVN0YW1wTnMsIDEpKSkgewotICAgICAgICAgICAgaWYgKHJlc291cmNlT3duZXIpCi0g
ICAgICAgICAgICAgICAgc2FtcGxlLT5zZXRPd25lcnNoaXBJZGVudGl0eShyZXNvdXJjZU93bmVy
KTsKLSAgICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVj
czo6Q29tcGxldGVkRGVjb2RpbmcgeyBpZGVudGlmaWVyLCB0aW1lU3RhbXAsICpzYW1wbGUgfSwg
MCk7Ci0gICAgICAgIH0KKyAgICByZXR1cm4gW2Nvbm5lY3Rpb24gPSBSZWYgeyBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKSB9LCByZXNvdXJjZU93bmVyID0gZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2Vzcy53ZWJQcm9jZXNzSWRlbnRpdHkoKSwgdmlkZW9GcmFtZU9iamVjdEhl
YXAgPSBSZWYgeyBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLnZpZGVvRnJhbWVPYmplY3RIZWFw
KCkgfSwgaWRlbnRpZmllcl0gKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIHVpbnQzMl90
IHRpbWVTdGFtcE5zLCB1aW50MzJfdCB0aW1lU3RhbXApICBtdXRhYmxlIHsKKyAgICAgICAgYXV0
byBzYW1wbGUgPSBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxl
KHBpeGVsQnVmZmVyLCBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwg
ZmFsc2UsIE1lZGlhVGltZSh0aW1lU3RhbXBOcywgMSksIHsgfSk7CisgICAgICAgIGlmICghc2Ft
cGxlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gcmVtb3RlU2FtcGxlID0g
V2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZSgqc2FtcGxlKTsKKyAgICAgICAgaWYg
KCFyZW1vdGVTYW1wbGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHJlc291
cmNlT3duZXIpCisgICAgICAgICAgICByZW1vdGVTYW1wbGUtPnNldE93bmVyc2hpcElkZW50aXR5
KHJlc291cmNlT3duZXIpOworCisgICAgICAgIGF1dG8gcmVtb3RlSWRlbnRpZmllciA9IHZpZGVv
RnJhbWVPYmplY3RIZWFwLT5jcmVhdGVWaWRlb0ZyYW1lKHNhbXBsZS5yZWxlYXNlTm9uTnVsbCgp
KTsKKyAgICAgICAgcmVtb3RlU2FtcGxlLT5jbGVhcklPU3VyZmFjZSgpOworCisgICAgICAgIGNv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjczo6Q29tcGxldGVkRGVjb2Rp
bmcgeyBpZGVudGlmaWVyLCB0aW1lU3RhbXAsICpyZW1vdGVTYW1wbGUsIHJlbW90ZUlkZW50aWZp
ZXIgfSwgMCk7CiAgICAgfTsKIH0KIApAQCAtMjExLDE1ICsyMjcsMjUgQEAgc3RhdGljIGlubGlu
ZSB3ZWJydGM6OlZpZGVvUm90YXRpb24gdG9XZWJSVENWaWRlb1JvdGF0aW9uKFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlOjoKIAogLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHRoaXMgZnVuY3Rpb24g
YWNjZXNzZXMgbV9lbmNvZGVycyB3aXRob3V0IGxvY2tpbmcuIFRoaXMgaXMgc2FmZSBiZWNhdXNl
IHRoaXMgZnVuY3Rpb24gcnVucyBvbiB0aGUgbGliV2ViUlRDQ29kZWNzUXVldWUKIC8vIGFuZCBt
X2VuY29kZXJzIG9ubHkgZ2V0IG1vZGlmaWVkIG9uIHRoaXMgcXVldWUuCi12b2lkIExpYldlYlJU
Q0NvZGVjc1Byb3h5OjplbmNvZGVGcmFtZShSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVy
LCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHNhbXBsZSwgdWludDMyX3QgdGltZVN0YW1w
LCBib29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUpCit2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5
OjplbmNvZGVGcmFtZShSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZW1vdGVWaWRlb1NhbXBsZSYmIHNhbXBsZSwgdWludDMyX3QgdGltZVN0YW1wLCBib29sIHNob3Vs
ZEVuY29kZUFzS2V5RnJhbWUsIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZl
cmVuY2U+IHNhbXBsZVJlZmVyZW5jZSkKIHsKKyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJl
Zj4gcGl4ZWxCdWZmZXI7CisgICAgaWYgKHNhbXBsZVJlZmVyZW5jZSkgeworICAgICAgICBhdXRv
IHNhbXBsZSA9IG1fdmlkZW9GcmFtZU9iamVjdEhlYXAtPnJldGlyZShXVEZNb3ZlKCpzYW1wbGVS
ZWZlcmVuY2UpLCAwX3MpOworICAgICAgICBpZiAoIXNhbXBsZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBhdXRvIHBsYXRmb3JtU2FtcGxlID0gc2FtcGxlLT5wbGF0Zm9ybVNhbXBs
ZSgpOworICAgICAgICBBU1NFUlQocGxhdGZvcm1TYW1wbGUudHlwZSA9PSBXZWJDb3JlOjpQbGF0
Zm9ybVNhbXBsZTo6Q01TYW1wbGVCdWZmZXJUeXBlKTsKKyAgICAgICAgcGl4ZWxCdWZmZXIgPSBz
dGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihQQUw6OkNNU2FtcGxlQnVmZmVyR2V0SW1hZ2VC
dWZmZXIocGxhdGZvcm1TYW1wbGUuc2FtcGxlLmNtU2FtcGxlQnVmZmVyKSk7CisgICAgfQorCiAg
ICAgQVNTRVJUKGZpbmRFbmNvZGVyV2l0aG91dExvY2soaWRlbnRpZmllcikpOwogICAgIGF1dG8q
IGVuY29kZXIgPSBmaW5kRW5jb2RlcldpdGhvdXRMb2NrKGlkZW50aWZpZXIpOwogICAgIGlmICgh
ZW5jb2RlcikKICAgICAgICAgcmV0dXJuOwogCiAjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQot
ICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBwaXhlbEJ1ZmZlcjsKICAgICBpZiAoc2Ft
cGxlLnN1cmZhY2UoKSkgewogICAgICAgICBpZiAoYXV0byBidWZmZXIgPSBXZWJDb3JlOjpjcmVh
dGVDVlBpeGVsQnVmZmVyKHNhbXBsZS5zdXJmYWNlKCkpKQogICAgICAgICAgICAgcGl4ZWxCdWZm
ZXIgPSBXVEZNb3ZlKCpidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggNTFlOGEzN2Q3YWMyYjMy
NDdiYTcwZDk0MDRmMjI4MTNkNmVjYjFmZS4uNTk0YjgzZDVkOGViY2M4ZjEwYzRhNjBmNTQ0Zjhk
MzkxNmU1Y2FlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgor
I2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCiAjaW5jbHVkZSAiU2hhcmVk
UmluZ0J1ZmZlclN0b3JhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oPgpAQCAtNDIsNiArNDMs
NyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworc3Rh
dGljIGNvbnN0ZXhwciBTZWNvbmRzIG1lZGlhUmVjb3JkZXJEZWZhdWx0VGltZW91dCB7IDFfcyB9
OwogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFSZWNvcmRlcj4gUmVtb3RlTWVkaWFSZWNv
cmRlcjo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MsIE1lZGlhUmVjb3JkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgcmVjb3Jk
QXVkaW8sIGJvb2wgcmVjb3JkVmlkZW8sIGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9u
cyYgb3B0aW9ucykKIHsKQEAgLTU1LDYgKzU3LDcgQEAgUmVtb3RlTWVkaWFSZWNvcmRlcjo6UmVt
b3RlTWVkaWFSZWNvcmRlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW8K
ICAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX3dyaXRlcihXVEZN
b3ZlKHdyaXRlcikpCisgICAgLCBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwKGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MudmlkZW9GcmFtZU9iamVjdEhlYXAoKSkKIHsKICAgICBpZiAocmVjb3JkQXVk
aW8pCiAgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWU8Q0FSaW5nQnVmZmVyPigpOwpA
QCAtODYsMTAgKzg5LDE2IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6YXVkaW9TYW1wbGVz
QXZhaWxhYmxlKE1lZGlhVGltZSB0aW1lLCB1aW50NjRfdCBudW1iZXJPCiAgICAgbV93cml0ZXIt
PmFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKCptX2F1ZGlvQnVmZmVyTGlzdCwgbV9kZXNjcmlwdGlv
biwgdGltZSwgbnVtYmVyT2ZGcmFtZXMpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6
OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtb3Rl
U2FtcGxlKQordm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShX
ZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW90ZVNhbXBsZSwgc3RkOjpvcHRpb25hbDxS
ZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZT4gc2FtcGxlUmVmZXJlbmNlKQogewogICAgIFJl
ZlB0cjxNZWRpYVNhbXBsZT4gc2FtcGxlOwotICAgIGlmICghcmVtb3RlU2FtcGxlLnN1cmZhY2Uo
KSkgeworICAgIGlmIChzYW1wbGVSZWZlcmVuY2UpIHsKKyAgICAgICAgc2FtcGxlID0gbV92aWRl
b0ZyYW1lT2JqZWN0SGVhcC0+cmV0aXJlKFdURk1vdmUoKnNhbXBsZVJlZmVyZW5jZSksIG1lZGlh
UmVjb3JkZXJEZWZhdWx0VGltZW91dCk7CisgICAgICAgIGlmICghc2FtcGxlKSB7CisgICAgICAg
ICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgIH0gZWxzZSBpZiAoIXJlbW90ZVNhbXBsZS5zdXJmYWNlKCkpIHsKICAgICAgICAg
YXV0byBwaXhlbEJ1ZmZlciA9IG1fc2hhcmVkVmlkZW9GcmFtZVJlYWRlci5yZWFkKCk7CiAgICAg
ICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCmluZGV4
IGM2NjI5ZGJjNmNhYmIzNmY2MWI3ZTQ2MjdkMWY1MDUwOTM3NjVhMDYuLjYwYjhkMDIxNGU3N2E1
M2NjMDQ1YTBmOWZlYjgxYTM5MDQ5ZDNkZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3Rl
VmlkZW9GcmFtZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNs
dWRlICJTaGFyZWRWaWRlb0ZyYW1lLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DQUF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24uaD4KQEAgLTUyLDYgKzUzLDcgQEAgc3RydWN0IE1lZGlhUmVjb3JkZXJQcml2
YXRlT3B0aW9uczsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOworY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CiBjbGFzcyBTaGFy
ZWRSaW5nQnVmZmVyU3RvcmFnZTsKIAogY2xhc3MgUmVtb3RlTWVkaWFSZWNvcmRlciA6IHByaXZh
dGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewpAQCAtNzIsNyArNzQsNyBAQCBwcml2YXRlOgogICAg
IC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBhdWRpb1NhbXBsZXNTdG9yYWdlQ2hh
bmdlZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIGNvbnN0IFdlYkNvcmU6OkNBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKICAgICB2b2lk
IGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVz
KTsKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2Ft
cGxlJiYpOworICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlk
ZW9TYW1wbGUmJiwgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZT4p
OwogICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVm
ZXJlbmNlJiYsIGRvdWJsZSk+JiYpOwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKQEAgLTkwLDYgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6SW1hZ2VUcmFuc2ZlclNlc3Npb25WVD4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbjsK
IAogICAgIFNoYXJlZFZpZGVvRnJhbWVSZWFkZXIgbV9zaGFyZWRWaWRlb0ZyYW1lUmVhZGVyOwor
ICAgIFJlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gbV92aWRlb0ZyYW1lT2JqZWN0SGVh
cDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbgppbmRleCBhY2FlZjhiOGM0
MGRiZDVkN2ZiOWI2Yzg4NDhmOWRhNDY4ODcxNDkzLi40OThmMjgxYWY4MDE4NzhlMDU0ZDMxZWU2
ZWQyYjc5NzA4YjkwZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluCkBAIC0yNiw3
ICsyNiw3IEBACiBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVJlY29yZGVyIE5vdFJlZkNvdW50ZWQg
ewogICAgIEF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
IGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKICAgICBBdWRpb1NhbXBsZXNB
dmFpbGFibGUoTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQotICAgIFZp
ZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSkKKyAg
ICBWaWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUs
IHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZT4gcmVt
b3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UpCiAgICAgRmV0Y2hEYXRhKCkgLT4gKElQQzo6RGF0
YVJlZmVyZW5jZSBidWZmZXIsIGRvdWJsZSB0aW1lQ29kZSkgQXN5bmMKICAgICBTdG9wUmVjb3Jk
aW5nKCkgLT4gKCkgQXN5bmMKICAgICBQYXVzZSgpIC0+ICgpIEFzeW5jCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5jcHAKaW5kZXggYmY0NjFjZGZmOGFkZDYxNGRmYjBlYmYxNDkzOTNl
NGVhNWMzYWJlYy4uZTZmYzY3N2M3MGNkMWQ3NDljNjk3ZDYyMWRlMTlhMzViZjI0ZWZhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVtb3RlVmlkZW9TYW1wbGUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
Ci1zdGF0aWMgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFRpbWVvdXQgeyAzMF9zIH07CitzdGF0
aWMgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFRpbWVvdXQgeyAxX3MgfTsKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTEyMywxMyArMTIzLDEzIEBAIHZvaWQgUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVm
ZXJlbmNlCiB7CiAgICAgYXV0byBtZWRpYVNhbXBsZSA9IG1fdmlkZW9GcmFtZU9iamVjdEhlYXAt
PnJldGlyZShXVEZNb3ZlKHNhbXBsZSksIGRlZmF1bHRUaW1lb3V0KTsKICAgICBpZiAoIW1lZGlh
U2FtcGxlKSB7Ci0gICAgICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygpOworICAgICAgICAvLyBJ
biBjYXNlIG9mIEdQVVByb2Nlc3MgY3Jhc2gsIHdlIG1pZ2h0IGVucXVldWUgcHJldmlvdXMgR1BV
UHJvY2VzcyBzYW1wbGVzLCBpZ25vcmUgdGhlbS4KICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBpZiAoIWlzPE1lZGlhU2FtcGxlQVZGT2JqQz4obWVkaWFTYW1wbGUpKSB7Ci0gICAgICAgIEFT
U0VSVF9JU19URVNUSU5HX0lQQygpOworICAgIEFTU0VSVChpczxNZWRpYVNhbXBsZUFWRk9iakM+
KG1lZGlhU2FtcGxlKSk7CisgICAgaWYgKCFpczxNZWRpYVNhbXBsZUFWRk9iakM+KG1lZGlhU2Ft
cGxlKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KKwogICAgIGF1dG8mIGF2Zk1lZGlhU2FtcGxl
ID0gZG93bmNhc3Q8TWVkaWFTYW1wbGVBVkZPYmpDPigqbWVkaWFTYW1wbGUpOwogICAgIE1lZGlh
U2FtcGxlQVZGT2JqQzo6c2V0QXNEaXNwbGF5SW1tZWRpYXRlbHkoYXZmTWVkaWFTYW1wbGUpOwog
ICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5lbnF1ZXVlU2FtcGxlKGF2Zk1lZGlhU2Ft
cGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RocmVhZFNhZmVPYmplY3RI
ZWFwLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UaHJlYWRTYWZlT2JqZWN0SGVhcC5oCmluZGV4
IDM5MjliN2U0NjZjMmMyYjRlOThmZDViNTM2ZThjOTg2N2IzZmI4MGUuLjI1NTA2NGMwZDhiNDY5
ODIzYzlmYzNlNzA2MzUxZTIwYWFhNmVjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1RocmVhZFNhZmVPYmplY3RIZWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGhy
ZWFkU2FmZU9iamVjdEhlYXAuaApAQCAtNTIsNiArNTIsOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
V3JpdGVSZWZlcmVuY2UgPSB0eXBlbmFtZSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tl
cjxJZGVudGlmaWVyPjo6V3JpdGVSZWZlcmVuY2U7CiAgICAgdXNpbmcgUmVmZXJlbmNlID0gdHlw
ZW5hbWUgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXI8SWRlbnRpZmllcj46OlJlZmVy
ZW5jZTsKIAorICAgIHZvaWQgYWRkKElkZW50aWZpZXIsIEhlbGRUeXBlJiYpOworCiAgICAgLy8g
V2FpdHMgdW50aWwgYSB3cml0ZSBjcmVhdGVzIHRoZSByZWZlcmVuY2UgYW5kIHRoZW4gcmV0aXJl
cyB0aGUgcmVhZCBvcgogICAgIC8vIHRpbWVzIG91dC4KICAgICBIZWxkVHlwZSByZXRpcmUoUmVh
ZFJlZmVyZW5jZSYmLCBJUEM6OlRpbWVvdXQpOwpAQCAtMTg3LDUgKzE4OSwxNCBAQCB2b2lkIFRo
cmVhZFNhZmVPYmplY3RIZWFwPElkZW50aWZpZXIsIEhlbGRUeXBlPjo6Y2xlYXIoKQogICAgIG1f
b2JqZWN0cy5jbGVhcigpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBJZGVudGlmaWVyLCB0eXBl
bmFtZSBIZWxkVHlwZT4KK3ZvaWQgVGhyZWFkU2FmZU9iamVjdEhlYXA8SWRlbnRpZmllciwgSGVs
ZFR5cGU+OjphZGQoSWRlbnRpZmllciBpZGVudGlmaWVyLCBIZWxkVHlwZSYmIG9iamVjdCkKK3sK
KyAgICBSZWZlcmVuY2UgcmVmZXJlbmNlIHsgaWRlbnRpZmllciwgMCB9OworICAgIExvY2tlciBs
b2NrZXIgeyBtX29iamVjdHNMb2NrIH07CisgICAgQVNTRVJUKCFtX29iamVjdHMuY29udGFpbnMo
cmVmZXJlbmNlKSk7CisgICAgbV9vYmplY3RzLmFkZChyZWZlcmVuY2UsIFJlZmVyZW5jZVN0YXRl
IHsgV1RGTW92ZShvYmplY3QpIH0pOworfQorCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDE2
ZmU2ZjljMDQ0NDE2NGFlNjE5N2RhYmZiMjVjMzJjNjBkNzI0OWIuLjFjOTQwMzU4MTg2MzI2MDVh
MjA1NGZjMzg2NDliNDNjM2IxOWViMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNzU2LDYgKzc1Niw3IEBA
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwCiBXZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlh
UmVjb3JkZXJQcml2YXRlLmNwcAogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQ
cm92aWRlci5jcHAKK1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcFByb3h5LmNwcAogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5jcHAKIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyLmNwcAogCkBAIC04ODYsNiArODg3LDcgQEAgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlTWVz
c2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlR1BVTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlR1BV
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3Nh
Z2VSZWNlaXZlci5jcHAKK1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiBSZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1v
dGVQaXBlbGluZUxheW91dE1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVF1ZXJ5U2V0TWVzc2Fn
ZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAppbmRleCAyYWY3ODI5MGY1
MDczZWExYzk3NjE5NzIzOGNmNTYyNGY2OWQ4YTFhLi4yZDdkYmZmZjE2NWZiNTlhNTM3YTJmZmI0
Mjk4OGMyMjJiOGQ0ZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcApAQCAtMzAsNiAr
MzAsNyBAQAogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZUNhcHR1
cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcC5oIgogI2luY2x1ZGUgIlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgiCiAjaW5jbHVk
ZSAiVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgpAQCAtNDAsNiArNDEsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZVJvdGF0
aW9uU2Vzc2lvblZULmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYUNvbnN0cmFpbnRzLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNhbXBsZUFWRk9iakMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlYWx0aW1l
VmlkZW9Tb3VyY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVZpZGVvU2FtcGxlLmg+CkBA
IC01NywxMSArNTksMTIgQEAgY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6U291
cmNlUHJveHkKICAgICAsIHByaXZhdGUgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9TYW1wbGVP
YnNlcnZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU291
cmNlUHJveHkoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIFJlZjxJUEM6OkNvbm5l
Y3Rpb24+JiYgY29ubmVjdGlvbiwgUHJvY2Vzc0lkZW50aXR5JiYgcmVzb3VyY2VPd25lciwgUmVm
PFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlKQorICAgIFNvdXJjZVByb3h5KFJlYWx0aW1l
TWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rp
b24sIFByb2Nlc3NJZGVudGl0eSYmIHJlc291cmNlT3duZXIsIFJlZjxSZWFsdGltZU1lZGlhU291
cmNlPiYmIHNvdXJjZSwgUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiYmIHZpZGVv
RnJhbWVPYmplY3RIZWFwKQogICAgICAgICA6IG1faWQoaWQpCiAgICAgICAgICwgbV9jb25uZWN0
aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCiAgICAgICAgICwgbV9yZXNvdXJjZU93bmVyKFdURk1v
dmUocmVzb3VyY2VPd25lcikpCiAgICAgICAgICwgbV9zb3VyY2UoV1RGTW92ZShzb3VyY2UpKQor
ICAgICAgICAsIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAoV1RGTW92ZSh2aWRlb0ZyYW1lT2JqZWN0
SGVhcCkpCiAgICAgewogICAgICAgICBtX3NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwogICAg
ICAgICBzd2l0Y2ggKG1fc291cmNlLT50eXBlKCkpIHsKQEAgLTE4MywxOSArMTg2LDM1IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBtX2NhcHR1cmVTZW1hcGhvcmUtPnNpZ25hbCgpOwogICAgIH0K
IAotICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlk
ZW9TYW1wbGVNZXRhZGF0YSBtZXRhZGF0YSkgZmluYWwKKyAgICBSZWZQdHI8TWVkaWFTYW1wbGU+
IHJvdGF0ZVZpZGVvRnJhbWVJZk5lZWRlZChNZWRpYVNhbXBsZSYgc2FtcGxlKQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiByZW1vdGVTYW1wbGU7CiAg
ICAgICAgIGlmIChtX3Nob3VsZEFwcGx5Um90YXRpb24gJiYgc2FtcGxlLnZpZGVvUm90YXRpb24o
KSAhPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSkgewogICAgICAgICAgICAgYXV0
byBwaXhlbEJ1ZmZlciA9IHJvdGF0ZVBpeGVsQnVmZmVyKHNhbXBsZSk7Ci0gICAgICAgICAgICBy
ZW1vdGVTYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHBpeGVsQnVmZmVyLmdldCgp
LCBzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICByZW1vdGVTYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHNhbXBsZSk7Ci0gICAg
ICAgIGlmIChyZW1vdGVTYW1wbGUpIHsKLSAgICAgICAgICAgIGlmIChtX3Jlc291cmNlT3duZXIp
Ci0gICAgICAgICAgICAgICAgcmVtb3RlU2FtcGxlLT5zZXRPd25lcnNoaXBJZGVudGl0eShtX3Jl
c291cmNlT3duZXIpOwotICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6VmlkZW9TYW1wbGVBdmFpbGFibGUobV9pZCwgV1RG
TW92ZSgqcmVtb3RlU2FtcGxlKSwgbWV0YWRhdGEpLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBN
ZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlKFdURk1vdmUocGl4ZWxCdWZmZXIp
LCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgc2FtcGxlLnZpZGVvTWlycm9yZWQo
KSwgc2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSwgc2FtcGxlLmRlY29kZVRpbWUoKSk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuICZzYW1wbGU7CisgICAgfQorCisgICAgdm9pZCB2aWRlb1Nh
bXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgc2FtcGxlLCBWaWRlb1NhbXBsZU1ldGFkYXRhIG1l
dGFkYXRhKSBmaW5hbAorICAgIHsKKyAgICAgICAgYXV0byB2aWRlb1NhbXBsZSA9IHJvdGF0ZVZp
ZGVvRnJhbWVJZk5lZWRlZChzYW1wbGUpOworICAgICAgICBpZiAoIXZpZGVvU2FtcGxlKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gcmVtb3RlU2FtcGxlID0gUmVtb3RlVmlk
ZW9TYW1wbGU6OmNyZWF0ZSgqdmlkZW9TYW1wbGUpOworICAgICAgICBpZiAoIXJlbW90ZVNhbXBs
ZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAobV9yZXNvdXJjZU93bmVyKQor
ICAgICAgICAgICAgcmVtb3RlU2FtcGxlLT5zZXRPd25lcnNoaXBJZGVudGl0eShtX3Jlc291cmNl
T3duZXIpOworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZp
ZXI+IHJlbW90ZUlkZW50aWZpZXI7CisgICAgICAgIGlmIChtX3ZpZGVvRnJhbWVPYmplY3RIZWFw
KSB7CisgICAgICAgICAgICByZW1vdGVJZGVudGlmaWVyID0gbV92aWRlb0ZyYW1lT2JqZWN0SGVh
cC0+Y3JlYXRlVmlkZW9GcmFtZShzYW1wbGUpOworICAgICAgICAgICAgcmVtb3RlU2FtcGxlLT5j
bGVhcklPU3VyZmFjZSgpOwogICAgICAgICB9CisKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6VmlkZW9TYW1wbGVBdmFpbGFi
bGUobV9pZCwgV1RGTW92ZSgqcmVtb3RlU2FtcGxlKSwgcmVtb3RlSWRlbnRpZmllciwgbWV0YWRh
dGEpLCAwKTsKICAgICB9CiAKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcm90YXRl
UGl4ZWxCdWZmZXIoTWVkaWFTYW1wbGUmIHNhbXBsZSkKQEAgLTI2MCw2ICsyNzksNyBAQCBwcml2
YXRlOgogICAgIHNpemVfdCBtX2ZyYW1lQ2h1bmtTaXplIHsgMCB9OwogICAgIE1lZGlhVGltZSBt
X3N0YXJ0VGltZTsKICAgICBib29sIG1fc2hvdWxkUmVzZXQgeyBmYWxzZSB9OworICAgIFJlZlB0
cjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gbV92aWRlb0ZyYW1lT2JqZWN0SGVhcDsKIH07
CiAKIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHkoVW5pcXVlUmVmPENvbm5lY3Rpb25Qcm94eT4mJiBjb25uZWN0aW9uUHJveHkpCkBAIC0z
MjQsNyArMzQ0LDcgQEAgdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpjcmVhdGVN
ZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWkKICAgICAgICAgfQogCiAgICAg
ICAgIEFTU0VSVCghbV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7Ci0gICAgICAgIGF1dG8gcHJveHkg
PSBtYWtlVW5pcXVlPFNvdXJjZVByb3h5PihpZCwgbV9jb25uZWN0aW9uUHJveHktPmNvbm5lY3Rp
b24oKSwgUHJvY2Vzc0lkZW50aXR5IHsgbV9jb25uZWN0aW9uUHJveHktPnJlc291cmNlT3duZXIo
KSB9LCBXVEZNb3ZlKHNvdXJjZSkpOworICAgICAgICBhdXRvIHByb3h5ID0gbWFrZVVuaXF1ZTxT
b3VyY2VQcm94eT4oaWQsIG1fY29ubmVjdGlvblByb3h5LT5jb25uZWN0aW9uKCksIFByb2Nlc3NJ
ZGVudGl0eSB7IG1fY29ubmVjdGlvblByb3h5LT5yZXNvdXJjZU93bmVyKCkgfSwgV1RGTW92ZShz
b3VyY2UpLCBtX2Nvbm5lY3Rpb25Qcm94eS0+cmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAoKSk7
CiAgICAgICAgIG1fcHJveGllcy5hZGQoaWQsIFdURk1vdmUocHJveHkpKTsKICAgICB9IGVsc2UK
ICAgICAgICAgaW52YWxpZENvbnN0cmFpbnRzID0gV1RGTW92ZShzb3VyY2VPckVycm9yLmVycm9y
TWVzc2FnZSk7CkBAIC0zOTAsNyArNDEwLDcgQEAgdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5OjpjbG9uZShSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBjbG9uZWRJRCwKICAg
ICBNRVNTQUdFX0NIRUNLKG1fcHJveGllcy5jb250YWlucyhjbG9uZWRJRCkpOwogICAgIE1FU1NB
R0VfQ0hFQ0soIW1fcHJveGllcy5jb250YWlucyhuZXdTb3VyY2VJRCkpOwogICAgIGlmIChhdXRv
KiBwcm94eSA9IG1fcHJveGllcy5nZXQoY2xvbmVkSUQpKQotICAgICAgICBtX3Byb3hpZXMuYWRk
KG5ld1NvdXJjZUlELCBtYWtlVW5pcXVlPFNvdXJjZVByb3h5PihuZXdTb3VyY2VJRCwgbV9jb25u
ZWN0aW9uUHJveHktPmNvbm5lY3Rpb24oKSwgUHJvY2Vzc0lkZW50aXR5IHsgbV9jb25uZWN0aW9u
UHJveHktPnJlc291cmNlT3duZXIoKSB9LCBwcm94eS0+c291cmNlKCkuY2xvbmUoKSkpOworICAg
ICAgICBtX3Byb3hpZXMuYWRkKG5ld1NvdXJjZUlELCBtYWtlVW5pcXVlPFNvdXJjZVByb3h5Pihu
ZXdTb3VyY2VJRCwgbV9jb25uZWN0aW9uUHJveHktPmNvbm5lY3Rpb24oKSwgUHJvY2Vzc0lkZW50
aXR5IHsgbV9jb25uZWN0aW9uUHJveHktPnJlc291cmNlT3duZXIoKSB9LCBwcm94eS0+c291cmNl
KCkuY2xvbmUoKSwgbV9jb25uZWN0aW9uUHJveHktPnJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
KCkpKTsKIH0KIAogdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpyZXF1ZXN0VG9F
bmQoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgc291cmNlSUQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5LmgKaW5kZXggZmE4MjljN2M0OTAzZDUxYjU3YTc4OTcxNzg0NzNmODBjYmYyODZkZS4u
ZDBlNDZiYjliNzU1ZWFlNTU3NWNlOGM5ZTRiYTlmYWY1MTM1MDkyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyUHJveHkuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0NhcHR1cmVEZXZpY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL09yaWVudGF0
aW9uTm90aWZpZXIuaD4KQEAgLTY1LDYgKzY2LDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFs
IHZvaWQgc2V0VENDSWRlbnRpdHkoKSB7IH0KICNlbmRpZgogICAgICAgICB2aXJ0dWFsIHZvaWQg
c3RhcnRQcm9kdWNpbmdEYXRhKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUpIHsg
fQorICAgICAgICB2aXJ0dWFsIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKiByZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB9OwogICAgIGV4cGxp
Y2l0IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkoVW5pcXVlUmVmPENvbm5lY3Rpb25Qcm94
eT4mJik7CiAgICAgflVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk5YzRkYWRhOTY0
NzcxMjllZTBmM2UyZDFlNmY2YTFmNDQwNjQzNTAuLjAxNjVmZTY3YmE1NjE5MDU2MTEzMjllYzM4
NGZlNWU4YzhiMjhlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtODQwLDYgKzg0MCw3IEBACiAJCTQxMUIyMjY0MUUzNzFCQTYwMDRG
NzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTFCMjI2MjFFMzcxMjQ0MDA0RjczNjMgLyogTGliV2ViUlRDTmV0
d29yay5oICovOyB9OwogCQk0MTFCODlDOTI3QjJCNzVEMDBGOUVCRDMgLyogV0tRdWVyeVBlcm1p
c3Npb25SZXN1bHRDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDExQjg5QzcyN0IyQjc1QzAwRjlFQkQzIC8qIFdLUXVlcnlQZXJtaXNzaW9u
UmVzdWx0Q2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0MTFCODlDQzI3QjJCODk4MDBGOUVCRDMgLyogUXVlcnlQZXJtaXNzaW9uUmVz
dWx0Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxMUI4OUNCMjdCMkI4OTYwMEY5RUJEMyAvKiBRdWVyeVBlcm1pc3Npb25SZXN1bHRDYWxs
YmFjay5oICovOyB9OworCQk0MTFCODlERTI3QjUwNjg2MDBGOUVCRDMgLyogUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXBQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDExQjg5REQyN0I0MjY2MzAwRjlFQkQzIC8qIFJlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwUHJveHkuaCAqLzsgfTsKIAkJNDEyODdENEUyMjVEMUVDQjAwOUEzRTI2IC8qIFdl
YlNvY2tldFRhc2tDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxMjg3RDRCMjI1QzA1QzQwMDlBM0UyNiAvKiBXZWJTb2NrZXRUYXNrQ29jb2Eu
bW0gKi87IH07CiAJCTQxMzA3NUFDMURFODVGMzcwMDM5RUM2OSAvKiBOZXR3b3JrUlRDTW9uaXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1
OUIxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENNb25pdG9yLmggKi87IH07CiAJCTQxMzA3
NUFEMURFODVGNTgwMDM5RUM2OSAvKiBMaWJXZWJSVENTb2NrZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NUEwMURFODVFRTcwMDM5RUM2OSAv
KiBMaWJXZWJSVENTb2NrZXQuaCAqLzsgfTsKQEAgLTQwNzQsNiArNDA3NSwxMCBAQAogCQk0MTFC
ODlDNzI3QjJCNzVDMDBGOUVCRDMgLyogV0tRdWVyeVBlcm1pc3Npb25SZXN1bHRDYWxsYmFjay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1F1ZXJ5UGVybWlzc2lvblJlc3Vs
dENhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMUI4OUM4MjdCMkI3
NUQwMEY5RUJEMyAvKiBXS1F1ZXJ5UGVybWlzc2lvblJlc3VsdENhbGxiYWNrLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUXVlcnlQZXJtaXNzaW9uUmVzdWx0Q2Fs
bGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTFCODlDQjI3QjJCODk2
MDBGOUVCRDMgLyogUXVlcnlQZXJtaXNzaW9uUmVzdWx0Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUXVlcnlQZXJtaXNzaW9uUmVzdWx0Q2FsbGJhY2suaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExQjg5REEyN0I0MjNDQjAwRjlFQkQzIC8qIFJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MTFCODlEQjI3QjQyNjYzMDBGOUVCRDMgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExQjg5REMyN0I0MjY2MzAwRjlF
QkQzIC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDExQjg5REQyN0I0MjY2MzAwRjlFQkQzIC8qIFJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXBQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI4N0Q0QjIy
NUMwNUM0MDA5QTNFMjYgLyogV2ViU29ja2V0VGFza0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViU29ja2V0VGFza0NvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTI4N0Q0QzIyNUMwNUM1MDA5QTNFMjYgLyogV2ViU29ja2V0
VGFza0NvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldFRh
c2tDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI4N0Q0RDIyNUMxNjFG
MDA5QTNFMjYgLyogV2ViU29ja2V0VGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJTb2NrZXRUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02OTA2
LDYgKzY5MTEsNyBAQAogCQkJCTA3RTE5RjA2MjNENERDODgwMDk0RkZCNCAvKiBSZW1vdGVUZXh0
VHJhY2tQcm94eS5oICovLAogCQkJCTdCNUEzREE4MjdBN0RDQkMwMDZDNkY5NyAvKiBSZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAgKi8sCiAJCQkJN0I1QTNEQTcyN0E3RENCQzAwNkM2Rjk3
IC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmggKi8sCisJCQkJNDExQjg5REEyN0I0MjND
QjAwRjlFQkQzIC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluICovLAog
CQkJCTA3MUJDNTg0MjNDQzJDMDkwMDY4MEQ3QyAvKiBSZW1vdGVWaWRlb1RyYWNrUHJveHkuY3Bw
ICovLAogCQkJCTA3MUJDNTg1MjNDQzJDMDkwMDY4MEQ3QyAvKiBSZW1vdGVWaWRlb1RyYWNrUHJv
eHkuaCAqLywKIAkJCQkwN0UxOUYwNTIzRDREQzg4MDA5NEZGQjQgLyogVGV4dFRyYWNrUHJpdmF0
ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaCAqLywKQEAgLTkyODUsNiArOTI5MSw5IEBACiAJCQkJNDFD
Qjg0MDMyNUNBQkY3QzAwMTBFMkIxIC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlLm1tICovLAogCQkJ
CTQxNzZFODkzMjNDMzRENkYwMDNFODNGRSAvKiBNZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwICov
LAogCQkJCTQxNzZFODkyMjNDMzRENkUwMDNFODNGRSAvKiBNZWRpYVJlY29yZGVyUHJvdmlkZXIu
aCAqLywKKwkJCQk0MTFCODlEQjI3QjQyNjYzMDBGOUVCRDMgLyogUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXBQcm94eS5jcHAgKi8sCisJCQkJNDExQjg5REQyN0I0MjY2MzAwRjlFQkQzIC8qIFJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuaCAqLywKKwkJCQk0MTFCODlEQzI3QjQyNjYz
MDBGOUVCRDMgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5tZXNzYWdlcy5pbiAq
LywKIAkJCQk0MTcyMTk4QzIzQjYxMkU4MDBBRTU2ODYgLyogUlRDRGVjb2RlcklkZW50aWZpZXIu
aCAqLywKIAkJCQk0MTU4NjQ5QTIzQkUwOTI0MDBBMEE2MUUgLyogUlRDRW5jb2RlcklkZW50aWZp
ZXIuaCAqLywKIAkJCQk0MUZDRDZCNzIzQ0RFNTNEMDBDNjI1NjcgLyogU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmNwcCAqLywKQEAgLTEzNDEyLDYgKzEzNDIxLDcgQEAKIAkJCQkwRjU5NDc5RDE4
N0IzQjYwMDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nVHJlZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUREMkE2ODYyNTYzM0M3MjAwRkY3QjZGIC8qIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5TWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFERDJBNjg3MjU2MzNDODcwMEZGN0I2RiAvKiBS
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDExQjg5REUyN0I1MDY4NjAwRjlFQkQzIC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NUJBODE3MUJBMjNFMTIwMDdDRDMzRCAvKiBS
ZW1vdGVXZWJJbnNwZWN0b3JVSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1QkE4MUYxQkEyNUIy
NzAwN0NEMzNEIC8qIFJlbW90ZVdlYkluc3BlY3RvclVJUHJveHkuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1NUJBODI1MUJBMjVDRkIwMDdDRDMzRCAvKiBSZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA1YzVkZTE4MjEyNjdiZDg1
NmRlZTU3NzE2NWY0NTRjYmQ0MjQyN2VhLi4yOGYzNzg3NjM5M2JjM2FjNTdlNDRmZDczZWExMjQ3
N2QyNDkyZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIlJlbW90
ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXIuaCIKICNpbmNsdWRlICJSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuaCIK
ICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZm
ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKQEAgLTE2NCw2ICsxNjUsMTMgQEAgdm9pZCBHUFVQ
cm9jZXNzQ29ubmVjdGlvbjo6cmVzZXRBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdChBdWRpb00KIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIoKS5yZXNldChpZGVudGlmaWVy
KTsKIH0KKworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSYgR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb246OnJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkoKQoreworICAgIGlmICghbV9y
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5KQorICAgICAgICBtX3JlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwUHJveHkgPSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5OjpjcmVh
dGUoKnRoaXMpOworICAgIHJldHVybiAqbV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5
OworfQogI2VuZGlmCiAKIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYgR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb246Om1lZGlhUGxheWVyTWFuYWdlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggM2Y5OGNiMTA5Nzc2MzQ2NmFi
MjA1ZGFhMDBlYTZjNTE2ZjkxMjNmNS4uODEzYTA1NDY5NzJjYzMyYWQ2MmFjOWZhMjhkMTFlNTRj
YTVmZWY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9j
ZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24uaApAQCAtNTEsNiArNTEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXI7CiBjbGFzcyBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXI7CitjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5Owog
Y2xhc3MgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKIGNsYXNzIFdlYlBhZ2U7CiBz
dHJ1Y3QgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Jbml0aWFsaXphdGlvblBhcmFtZXRlcnM7CkBAIC03
Nyw2ICs3OCw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKICAgICBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyJiBzYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCk7CiAgICAgdm9pZCByZXNldEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0KEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0SWRlbnRpZmllcik7CisgICAgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94
eSYgcmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSgpOwogI2VuZGlmCiAKICAgICBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXImIG1lZGlhUGxheWVyTWFuYWdlcigpOwpAQCAtMTQwLDYgKzE0
Miw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlcj4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOworICAgIFJlZlB0cjxS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5PiBtX3JlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwUHJveHk7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKFdFQl9BVURJ
TykKICAgICBSZWZQdHI8UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXI+IG1fYXVkaW9T
b3VyY2VQcm92aWRlck1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgKaW5kZXgg
ZjQyNTAyNjE1ZGEyNzJiM2JmNDZjZjQ2NDk2MWI3ZjhlYjJhMWYxYS4uZmIwMDFkYTc0ODIzOWYz
OGRkOWVkMDMyNWM1OWI3YjgzYzkyNTg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIu
aApAQCAtMjgsMTIgKzI4LDEzIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
TUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNr
ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NRdWFsaWZpZWQuaD4KICNpbmNsdWRlIDx3
dGYvT2JqZWN0SWRlbnRpZmllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogZW51bSBSZW1v
dGVWaWRlb0ZyYW1lSWRlbnRpZmllclR5cGUgeyB9OwotdXNpbmcgUmVtb3RlVmlkZW9GcmFtZUlk
ZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyVHlw
ZT47Cit1c2luZyBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciA9IFdlYkNvcmU6OlByb2Nlc3NR
dWFsaWZpZWQ8T2JqZWN0SWRlbnRpZmllcjxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllclR5cGU+
PjsKIHVzaW5nIFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlID0gT2JqZWN0SWRlbnRpZmll
clJlYWRSZWZlcmVuY2U8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+OwogdXNpbmcgUmVtb3Rl
VmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlID0gT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNl
PFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPjsKIHVzaW5nIFJlbW90ZVZpZGVvRnJhbWVSZWZl
cmVuY2UgPSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlm
aWVyPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcAppbmRleCA0YTAyNmYxYTRkNjQ1ZmVjYzJhNjFk
NDA0MGFhYTdiNDFkNTA1MTgxLi5iZGU2OWMzNzQ4YThiNTEyOTQwNzUwODA1MWQ4NTY0NTZkODYy
NTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZVZpZGVvRnJhbWVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCkBAIC0zMCwxMiArMzAsMjAgQEAKICNpbmNs
dWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXBNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94
eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGltZUluY29taW5nVmlkZW9Tb3Vy
Y2VDb2NvYS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVmUHRyPFJlbW90ZVZpZGVvRnJh
bWVQcm94eT4gUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpjcmVhdGUoR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24mIGdwdVByb2Nlc3NDb25uZWN0aW9uKQorUmVmPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4gUmVt
b3RlVmlkZW9GcmFtZVByb3h5OjpjcmVhdGUoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nl
c3NDb25uZWN0aW9uLCBQaXhlbEJ1ZmZlckNhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVWaWRlb0ZyYW1lUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24sIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUmVtb3RlVmlkZW9GcmFtZVByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9u
LCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgV1RGTW92ZShjYWxsYmFj
aykpKTsKK30KKworUmVmPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4gUmVtb3RlVmlkZW9GcmFtZVBy
b3h5OjpjcmVhdGVBbHJlYWR5SW5pdGlhbGl6ZWQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBj
b25uZWN0aW9uSUQsIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3Bl
cnRpZXMgcHJvcGVydGllcywgUGl4ZWxCdWZmZXJDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAg
IGF1dG8gZnJhbWUgPSBhZG9wdFJlZigqbmV3IFJlbW90ZVZpZGVvRnJhbWVQcm94eShjb25uZWN0
aW9uSUQsIGlkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKSk7CisgICAgZnJhbWUtPndhc0lu
aXRpYWxpemVkKHByb3BlcnRpZXMpOworICAgIHJldHVybiBmcmFtZTsKIH0KIAogUmVtb3RlVmlk
ZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cHJvcGVydGll
cyhjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpCkBAIC00MywxNiArNTEs
MjggQEAgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzIFJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6cHJvcGVydGllcyhjb25zdCBXZWJDb3IKICAgICByZXR1cm4gewogICAgICAgICBtZWRp
YVNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksCiAgICAgICAgIG1lZGlhU2FtcGxlLnZpZGVvTWly
cm9yZWQoKSwKLSAgICAgICAgbWVkaWFTYW1wbGUudmlkZW9Sb3RhdGlvbigpCisgICAgICAgIG1l
ZGlhU2FtcGxlLnZpZGVvUm90YXRpb24oKSwKKyAgICAgICAgbWVkaWFTYW1wbGUucHJlc2VudGF0
aW9uU2l6ZSgpLAorICAgICAgICBtZWRpYVNhbXBsZS52aWRlb1BpeGVsRm9ybWF0KCkKICAgICB9
OwogfQogCi1SZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlJlbW90ZVZpZGVvRnJhbWVQcm94eShHUFVQ
cm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIFJlbW90ZVZpZGVvRnJhbWVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlJlbW90ZVZpZGVv
RnJhbWVQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIFJl
bW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBpeGVsQnVmZmVyQ2FsbGJhY2sm
JiBjYWxsYmFjaykKICAgICA6IG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oJmdwdVByb2Nlc3NDb25u
ZWN0aW9uKQorICAgICwgbV9jb25uZWN0aW9uSUQoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVj
dGlvbigpLnVuaXF1ZUlEKCkpCiAgICAgLCBtX3JlZmVyZW5jZVRyYWNrZXIoaWRlbnRpZmllcikK
KyAgICAsIG1fcGl4ZWxCdWZmZXJDYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKIHsKICAgICBt
X2dwdVByb2Nlc3NDb25uZWN0aW9uLT5hZGRDbGllbnQoKnRoaXMpOwotICAgIG1fZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50
aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAgIGlmIChpZGVudGlmaWVyLnByb2Nlc3NJZGVu
dGlmaWVyKCkgPT0gUHJvY2Vzczo6aWRlbnRpZmllcigpKQorICAgICAgICBtX2dwdVByb2Nlc3ND
b25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlm
aWVyLm9iamVjdCgpLnRvVUludDY0KCksICp0aGlzKTsKK30KKworUmVtb3RlVmlkZW9GcmFtZVBy
b3h5OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHkoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25u
ZWN0aW9uSUQsIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBpeGVsQnVm
ZmVyQ2FsbGJhY2smJiBjYWxsYmFjaykKKyAgICA6IG1fY29ubmVjdGlvbklEKGNvbm5lY3Rpb25J
RCkKKyAgICAsIG1fcmVmZXJlbmNlVHJhY2tlcihpZGVudGlmaWVyKQorICAgICwgbV9waXhlbEJ1
ZmZlckNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKQorewogfQogCiBSZW1vdGVWaWRlb0ZyYW1l
UHJveHk6OlJlbW90ZVZpZGVvRnJhbWVQcm94eSgpCkBAIC02Myw2ICs4Myw3IEBAIFJlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5KCkKIAogUmVtb3RlVmlkZW9GcmFt
ZVByb3h5Ojp+UmVtb3RlVmlkZW9GcmFtZVByb3h5KCkKIHsKKyAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIG1ha2Ugc3VyZSB0byBjbG9zZSBpbiB3aGF0ZXZlciB0aHJlYWQgYnV0IGRpc2Nvbm5lY3Qg
aW4gbWFpbiB0aHJlYWQuCiAgICAgZGlzY29ubmVjdEdQVVByb2Nlc3NJZk5lZWRlZCgpOwogfQog
CkBAIC04MSw2ICsxMDIsMjggQEAgUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UgUmVtb3Rl
VmlkZW9GcmFtZVByb3h5OjpyZWFkKCkgY29uc3QKICAgICByZXR1cm4gbV9yZWZlcmVuY2VUcmFj
a2VyLnJlYWQoKTsKIH0KIAordm9pZCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmdldFBpeGVsQnVm
ZmVyKCkKK3sKKyAgICBBU1NFUlQobV9waXhlbEJ1ZmZlckxvY2suaXNIZWxkKCkpOworICAgIHN0
ZDo6ZXhjaGFuZ2UobV9waXhlbEJ1ZmZlckNhbGxiYWNrLCB7IH0pKCp0aGlzLCBbdGhpc10oYXV0
byBwaXhlbEJ1ZmZlcikgeworICAgICAgICBtX3BpeGVsQnVmZmVyID0gV1RGTW92ZShwaXhlbEJ1
ZmZlcik7CisgICAgICAgIGlmICghbV9waXhlbEJ1ZmZlcikgeworICAgICAgICAgICAgLy8gc29t
ZSBjb2RlIHBhdGhzIGRvIG5vdCBsaWtlIGVtcHR5IHBpeGVsIGJ1ZmZlcnMuCisgICAgICAgICAg
ICBtX3BpeGVsQnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRlQmxhY2tQaXhlbEJ1ZmZlcihzdGF0aWNf
Y2FzdDxzaXplX3Q+KG1fc2l6ZS53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX3NpemUu
aGVpZ2h0KCkpKTsKKyAgICAgICAgfQorICAgICAgICBtX3NlbWFwaG9yZS5zaWduYWwoKTsKKyAg
ICB9KTsKKyAgICBtX3NlbWFwaG9yZS53YWl0KCk7Cit9CisKK0NWUGl4ZWxCdWZmZXJSZWYgUmVt
b3RlVmlkZW9GcmFtZVByb3h5OjpwaXhlbEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgTG9ja2VyIGxv
Y2sobV9waXhlbEJ1ZmZlckxvY2spOworICAgIGlmICghbV9waXhlbEJ1ZmZlciAmJiBtX3BpeGVs
QnVmZmVyQ2FsbGJhY2spCisgICAgICAgIGNvbnN0X2Nhc3Q8UmVtb3RlVmlkZW9GcmFtZVByb3h5
Kj4odGhpcyktPmdldFBpeGVsQnVmZmVyKCk7CisgICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXIuZ2V0
KCk7Cit9CisKIE1lZGlhVGltZSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnByZXNlbnRhdGlvblRp
bWUoKSBjb25zdAogewogICAgICh2b2lkKSB3YWl0Rm9yV2FzSW5pdGlhbGl6ZWQoKTsKQEAgLTEw
Niw5ICsxNDksOCBAQCBib29sIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9NaXJyb3JlZCgp
IGNvbnN0CiAKIHVpbnQzMl90IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9QaXhlbEZvcm1h
dCgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFJlbW92ZSBmcm9tIHRoZSBiYXNlIGNsYXNzLgot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOworICAgICh2b2lkKSB3YWl0
Rm9yV2FzSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbV9waXhlbEZvcm1hdDsKIH0KIAogYm9v
bCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmhhbmRsZU1lc3NhZ2VUb1JlbW92ZWREZXN0aW5hdGlv
bihJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC0xMjgsMTggKzE3
MCwyMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhU2FtcGxlVmlkZW9GcmFtZT4gUmVt
b3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb0ZyYW1lKAogdm9pZCBSZW1vdGVWaWRlb0ZyYW1lUHJv
eHk6OmRpc2Nvbm5lY3RHUFVQcm9jZXNzSWZOZWVkZWQoKSBjb25zdAogewogICAgIGlmIChhdXRv
IGdwdVByb2Nlc3NDb25uZWN0aW9uID0gc3RkOjpleGNoYW5nZShtX2dwdVByb2Nlc3NDb25uZWN0
aW9uLCBudWxscHRyKSkgeworICAgICAgICBBU1NFUlQoaWRlbnRpZmllcigpLnByb2Nlc3NJZGVu
dGlmaWVyKCkgPT0gUHJvY2Vzczo6aWRlbnRpZmllcigpKTsKICAgICAgICAgZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24tPnJlbW92ZUNsaWVudCgqdGhpcyk7Ci0gICAgICAgIGdwdVByb2Nlc3NDb25uZWN0
aW9uLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVy
KCkudG9VSW50NjQoKSk7Ci0gICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OlJlbGVhc2VWaWRl
b0ZyYW1lKHdyaXRlKCkpLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5X
aGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5t
ZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90
ZVZpZGVvRnJhbWVQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkub2Jq
ZWN0KCkudG9VSW50NjQoKSk7CiAgICAgfQorICAgIGlmIChtX2Nvbm5lY3Rpb25JRCkKKyAgICAg
ICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKCptX2Nvbm5lY3Rpb25JRCwgTWVzc2FnZXM6OlJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpSZWxlYXNlVmlkZW9GcmFtZSh3cml0ZSgpKSwgMCwgSVBD
OjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkp
OwogfQogCiBib29sIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6d2FpdEZvcldhc0luaXRpYWxpemVk
KCkgY29uc3QKIHsKICAgICBpZiAobV93YXNJbml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICBBU1NFUlQoaWRlbnRpZmllcigpLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gUHJv
Y2Vzczo6aWRlbnRpZmllcigpKTsKICAgICBpZiAobV9ncHVQcm9jZXNzQ29ubmVjdGlvbikgewot
ICAgICAgICBpZiAobV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLndhaXRGb3JB
bmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Oldh
c0luaXRpYWxpemVkPihpZGVudGlmaWVyKCkudG9VSW50NjQoKSwgZGVmYXVsdFNlbmRUaW1lb3V0
KSkKKyAgICAgICAgaWYgKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS53YWl0
Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZVByb3h5
OjpXYXNJbml0aWFsaXplZD4oaWRlbnRpZmllcigpLm9iamVjdCgpLnRvVUludDY0KCksIGRlZmF1
bHRTZW5kVGltZW91dCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGlzY29u
bmVjdEdQVVByb2Nlc3NJZk5lZWRlZCgpOwogICAgIH0KQEAgLTE1MCw3ICsxOTYsOCBAQCB2b2lk
IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQ
cm9jZXNzQ29ubmVjdGlvbiYpCiB7CiAgICAgYXV0byBncHVQcm9jZXNzQ29ubmVjdGlvbiA9IHN0
ZDo6ZXhjaGFuZ2UobV9ncHVQcm9jZXNzQ29ubmVjdGlvbiwgbnVsbHB0cik7CiAgICAgZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24tPnJlbW92ZUNsaWVudCgqdGhpcyk7Ci0gICAgZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpKTsKKyAgICBBU1NFUlQoaWRlbnRpZmllcigpLnByb2Nlc3NJZGVudGlm
aWVyKCkgPT0gUHJvY2Vzczo6aWRlbnRpZmllcigpKTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlv
bi0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpS
ZW1vdGVWaWRlb0ZyYW1lUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigp
Lm9iamVjdCgpLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6
d2FzSW5pdGlhbGl6ZWQoc3RkOjpvcHRpb25hbDxQcm9wZXJ0aWVzPiYmIHByb3BlcnRpZXMpCkBA
IC0xNjMsNiArMjEwLDggQEAgdm9pZCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Ondhc0luaXRpYWxp
emVkKHN0ZDo6b3B0aW9uYWw8UHJvcGVydGllcz4mJiBwcm9wZXJ0aWUKICAgICBtX3ByZXNlbnRh
dGlvblRpbWUgPSBwcm9wZXJ0aWVzLT5wcmVzZW50YXRpb25UaW1lOwogICAgIG1fdmlkZW9Jc01p
cnJvcmVkID0gcHJvcGVydGllcy0+dmlkZW9Jc01pcnJvcmVkOwogICAgIG1fdmlkZW9Sb3RhdGlv
biA9IHByb3BlcnRpZXMtPnZpZGVvUm90YXRpb247CisgICAgbV9zaXplID0gcHJvcGVydGllcy0+
c2l6ZTsKKyAgICBtX3BpeGVsRm9ybWF0ID0gcHJvcGVydGllcy0+cGl4ZWxGb3JtYXQ7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
VmlkZW9GcmFtZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZVZpZGVvRnJhbWVQcm94eS5oCmluZGV4IGQ5NWVhYWY1NWRjODM5MjE1ZjA1Y2I2NmFkYTQy
MzFkNjQzMGI2YmMuLjk3NmNjNmNlNTJhYmM5MTM0MDU1MDcwZGU0YmRhODdhNDMxYmZhN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9G
cmFtZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVWaWRlb0ZyYW1lUHJveHkuaApAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9WaWRlb0ZyYW1lLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Cisj
aW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKIG5hbWVzcGFjZSBJUEMg
ewogY2xhc3MgQ29ubmVjdGlvbjsKQEAgLTQ1LDE4ICs0NywyNiBAQCBjbGFzcyBSZW1vdGVWaWRl
b0ZyYW1lUHJveHkgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6VmlkZW9GcmFtZSwgcHJpdmF0ZSBJ
UEM6Ok1lcwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFJlbW90ZVZpZGVvRnJhbWVQcm94eSk7CiBwdWJsaWM6CisgICAgdXNpbmcgUGl4ZWxC
dWZmZXJSZXN1bHRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmV0YWluUHRyPENWUGl4ZWxCdWZm
ZXJSZWY+JiYpPjsKKyAgICAvLyBDb21wbGV0aW9uSGFuZGxlciBidXQgaXQgbWlnaHQgbm90IGJl
IGNhbGxlZCBvbiB0aGUgc2FtZSB0aHJlYWQuCisgICAgdXNpbmcgUGl4ZWxCdWZmZXJDYWxsYmFj
ayA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVtb3RlVmlkZW9GcmFtZVByb3h5JiwgUGl4ZWxCdWZm
ZXJSZXN1bHRDYWxsYmFjayYmKT47CisKICAgICAvLyBDcmVhdGVzIGEgcHJvbWlzZSBvZiBhIE1l
ZGlhU2FtcGxlIHRoYXQgZXhpc3RzIGluIEdQVSBwcm9jZXNzLiBUaGUgb2JqZWN0IGNhbiBiZSB1
c2VkIGFzIG91dCBwYXJhbWV0ZXIgb2YgdGhlIGNyZWF0aW9uIG1lc3NhZ2UuCi0gICAgc3RhdGlj
IFJlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+IGNyZWF0ZShHUFVQcm9jZXNzQ29ubmVjdGlv
biYpOworICAgIHN0YXRpYyBSZWY8UmVtb3RlVmlkZW9GcmFtZVByb3h5PiBjcmVhdGUoR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24mLCBQaXhlbEJ1ZmZlckNhbGxiYWNrJiYgPSB7IH0pOwogCiAgICAgc3Ry
dWN0IFByb3BlcnRpZXMgewogICAgICAgICBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZTsKICAg
ICAgICAgYm9vbCB2aWRlb0lzTWlycm9yZWQgeyBmYWxzZSB9OwogICAgICAgICBWaWRlb1JvdGF0
aW9uIHZpZGVvUm90YXRpb24geyBWaWRlb1JvdGF0aW9uOjpOb25lIH07CisgICAgICAgIFdlYkNv
cmU6OkZsb2F0U2l6ZSBzaXplOworICAgICAgICB1aW50MzJfdCBwaXhlbEZvcm1hdDsKIAogICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFByb3BlcnRpZXM+IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsKIAorICAgIHN0YXRpYyBS
ZWY8UmVtb3RlVmlkZW9GcmFtZVByb3h5PiBjcmVhdGVBbHJlYWR5SW5pdGlhbGl6ZWQoSVBDOjpD
b25uZWN0aW9uOjpVbmlxdWVJRCwgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIsIFByb3BlcnRp
ZXMsIFBpeGVsQnVmZmVyQ2FsbGJhY2smJik7CisKICAgICBzdGF0aWMgUHJvcGVydGllcyBwcm9w
ZXJ0aWVzKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJik7CiAKICAgICB+UmVtb3RlVmlkZW9G
cmFtZVByb3h5KCkgZmluYWw7CkBAIC02NSwxOCArNzUsMTIgQEAgcHVibGljOgogICAgIFJlbW90
ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSB3cml0ZSgpIGNvbnN0OwogICAgIFJlbW90ZVZpZGVv
RnJhbWVSZWFkUmVmZXJlbmNlIHJlYWQoKSBjb25zdDsKIAotICAgIC8vIFdlYkNvcmU6OlZpZGVv
RnJhbWUgb3ZlcnJpZGVzLgotICAgIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3Qg
ZmluYWw7Ci0gICAgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uKCkgY29uc3QgZmluYWw7Ci0g
ICAgYm9vbCB2aWRlb01pcnJvcmVkKCkgY29uc3QgZmluYWw7Ci0gICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpNZWRpYVNhbXBsZVZpZGVvRnJhbWU+IHZpZGVvRnJhbWUoKSBjb25zdCBmaW5hbDsK
LSAgICAvLyBGSVhNRTogV2hlbiBWaWRlb0ZyYW1lIGlzIG5vdCBNZWRpYVNhbXBsZSwgdGhlc2Ug
d2lsbCBub3QgYmUgbmVlZGVkLgotICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3Jt
U2FtcGxlKCkgY29uc3QgZmluYWw7Ci0gICAgdWludDMyX3QgdmlkZW9QaXhlbEZvcm1hdCgpIGNv
bnN0IGZpbmFsOworICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIoKSBjb25zdCBmaW5h
bDsKIAogICAgIHN0YXRpYyBib29sIGhhbmRsZU1lc3NhZ2VUb1JlbW92ZWREZXN0aW5hdGlvbihJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIHByaXZhdGU6Ci0gICAgUmVtb3RlVmlk
ZW9GcmFtZVByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9uJiwgUmVtb3RlVmlkZW9GcmFtZUlkZW50
aWZpZXIpOworICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYs
IFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLCBQaXhlbEJ1ZmZlckNhbGxiYWNrJiYpOworICAg
IFJlbW90ZVZpZGVvRnJhbWVQcm94eShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBSZW1vdGVW
aWRlb0ZyYW1lSWRlbnRpZmllciwgUGl4ZWxCdWZmZXJDYWxsYmFjayYmKTsKICAgICBSZW1vdGVW
aWRlb0ZyYW1lUHJveHkoKTsKICAgICB2b2lkIGRpc2Nvbm5lY3RHUFVQcm9jZXNzSWZOZWVkZWQo
KSBjb25zdDsKICAgICBib29sIHdhaXRGb3JXYXNJbml0aWFsaXplZCgpIGNvbnN0IFdBUk5fVU5V
U0VEX1JFVFVSTjsKQEAgLTg3LDIzICs5MSw0NCBAQCBwcml2YXRlOgogICAgIC8vIEdQVVByb2Nl
c3NDb25uZWN0aW9uOjpDbGllbnQgb3ZlcnJpZGVzLgogICAgIHZvaWQgZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpIGZpbmFsOwogCisgICAgLy8gV2Vi
Q29yZTo6VmlkZW9GcmFtZSBvdmVycmlkZXMuCisgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRp
bWUoKSBjb25zdCBmaW5hbDsKKyAgICBWaWRlb1JvdGF0aW9uIHZpZGVvUm90YXRpb24oKSBjb25z
dCBmaW5hbDsKKyAgICBib29sIHZpZGVvTWlycm9yZWQoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhU2FtcGxlVmlkZW9GcmFtZT4gdmlkZW9GcmFtZSgpIGNv
bnN0IGZpbmFsOworICAgIC8vIEZJWE1FOiBXaGVuIFZpZGVvRnJhbWUgaXMgbm90IE1lZGlhU2Ft
cGxlLCB0aGVzZSB3aWxsIG5vdCBiZSBuZWVkZWQuCisgICAgV2ViQ29yZTo6UGxhdGZvcm1TYW1w
bGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBmaW5hbDsKKyAgICB1aW50MzJfdCB2aWRlb1BpeGVs
Rm9ybWF0KCkgY29uc3QgZmluYWw7CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIHByZXNlbnRhdGlv
blNpemUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NpemU7IH0KKwogICAgIC8vIE1lc3NhZ2Vz
LgogICAgIHZvaWQgd2FzSW5pdGlhbGl6ZWQoc3RkOjpvcHRpb25hbDxQcm9wZXJ0aWVzPiYmKTsK
ICAgICBzdGF0aWMgaW5saW5lIFNlY29uZHMgZGVmYXVsdFNlbmRUaW1lb3V0ID0gMzBfczsKIAor
ICAgIHZvaWQgZ2V0UGl4ZWxCdWZmZXIoKTsKKwogICAgIG11dGFibGUgR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24qIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24geyBudWxscHRyIH07CisgICAgc3RkOjpvcHRp
b25hbDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiBtX2Nvbm5lY3Rpb25JRDsKICAgICBSZW1v
dGVWaWRlb0ZyYW1lUmVmZXJlbmNlVHJhY2tlciBtX3JlZmVyZW5jZVRyYWNrZXI7CiAgICAgbXV0
YWJsZSBib29sIG1fd2FzSW5pdGlhbGl6ZWQgeyBmYWxzZSB9OwogICAgIE1lZGlhVGltZSBtX3By
ZXNlbnRhdGlvblRpbWU7CiAgICAgYm9vbCBtX3ZpZGVvSXNNaXJyb3JlZCB7IGZhbHNlIH07CiAg
ICAgVmlkZW9Sb3RhdGlvbiBtX3ZpZGVvUm90YXRpb24geyBWaWRlb1JvdGF0aW9uOjpOb25lIH07
CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fc2l6ZTsKKyAgICB1aW50MzJfdCBtX3BpeGVsRm9y
bWF0IHsgMCB9OworICAgIG11dGFibGUgTG9jayBtX3BpeGVsQnVmZmVyTG9jazsKKyAgICBSZXRh
aW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gbV9waXhlbEJ1ZmZlcjsKKyAgICBCaW5hcnlTZW1hcGhv
cmUgbV9zZW1hcGhvcmU7CisgICAgUGl4ZWxCdWZmZXJDYWxsYmFjayBtX3BpeGVsQnVmZmVyQ2Fs
bGJhY2s7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIFJlbW90ZVZpZGVv
RnJhbWVQcm94eTo6UHJvcGVydGllczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7
CiAgICAgZW5jb2RlciA8PCBwcmVzZW50YXRpb25UaW1lCiAgICAgICAgIDw8IHZpZGVvSXNNaXJy
b3JlZAotICAgICAgICA8PCB2aWRlb1JvdGF0aW9uOworICAgICAgICA8PCB2aWRlb1JvdGF0aW9u
CisgICAgICAgIDw8IHNpemUKKyAgICAgICAgPDwgcGl4ZWxGb3JtYXQ7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQ
cm9wZXJ0aWVzPiBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQpAQCAtMTExLDEyICsxMzYsMTYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRGVj
b2Rlcj4gc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM+IFJl
bW8KICAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhVGltZT4gcHJlc2VudGF0aW9uVGltZTsKICAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IHZpZGVvSXNNaXJyb3JlZDsKICAgICBzdGQ6Om9wdGlvbmFsPFZp
ZGVvUm90YXRpb24+IHZpZGVvUm90YXRpb247CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFNpemU+IHNpemU7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGl4ZWxGb3JtYXQ7
CiAgICAgZGVjb2RlciA+PiBwcmVzZW50YXRpb25UaW1lCiAgICAgICAgID4+IHZpZGVvSXNNaXJy
b3JlZAotICAgICAgICA+PiB2aWRlb1JvdGF0aW9uOworICAgICAgICA+PiB2aWRlb1JvdGF0aW9u
CisgICAgICAgID4+IHNpemUKKyAgICAgICAgPj4gcGl4ZWxGb3JtYXQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4g
UHJvcGVydGllcyB7IFdURk1vdmUoKnByZXNlbnRhdGlvblRpbWUpLCAqdmlkZW9Jc01pcnJvcmVk
LCAqdmlkZW9Sb3RhdGlvbiB9OworICAgIHJldHVybiBQcm9wZXJ0aWVzIHsgV1RGTW92ZSgqcHJl
c2VudGF0aW9uVGltZSksICp2aWRlb0lzTWlycm9yZWQsICp2aWRlb1JvdGF0aW9uLCAqc2l6ZSwg
KnBpeGVsRm9ybWF0IH07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5SWRlbnRpZmllci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHlJZGVudGlm
aWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDc5MmMwNDg2NTBkMGNhMjY0NjAwMDcyMzQ2NzAzMjgyZTcyYTRk
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlVmlkZW9GcmFtZVByb3h5SWRlbnRpZmllci5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNs
dWRlICJPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3VzaW5nIFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlID0gT2JqZWN0SWRlbnRpZmllclJl
YWRSZWZlcmVuY2U8V2ViQ29yZTo6UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+OwordXNpbmcg
UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlID0gT2JqZWN0SWRlbnRpZmllcldyaXRlUmVm
ZXJlbmNlPFdlYkNvcmU6OlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPjsKK3VzaW5nIFJlbW90
ZVZpZGVvRnJhbWVSZWZlcmVuY2UgPSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFdlYkNvcmU6
OlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPjsKK3VzaW5nIFJlbW90ZVZpZGVvRnJhbWVSZWZl
cmVuY2VUcmFja2VyID0gT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXI8V2ViQ29yZTo6
UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAppbmRleCBmMjBkMDc0
ZjNhNmQ0OTQwNDQ3ODYxYTM0MmI0MTlkY2RkZjI4OWJhLi4yNzUzZWRhM2ZjOWI5NmE5ZjQ5OGNi
MzY0NzY5N2QzMTE1ZDU4NjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKQEAgLTMyLDYgKzMyLDggQEAKICNp
bmNsdWRlICJMaWJXZWJSVENDb2RlY3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ0Nv
ZGVjc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJh
bWVQcm94eS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NWVXRpbGl0aWVzLmg+CkBAIC0xODQs
NiArMTg2LDcgQEAgdm9pZCBMaWJXZWJSVENDb2RlY3M6OmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0
aW9uT25NYWluVGhyZWFkV2l0aExvY2soKQogICAgIGF1dG8mIGdwdUNvbm5lY3Rpb24gPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogICAgIGdw
dUNvbm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlzKTsKICAgICBtX2Nvbm5lY3Rpb24gPSAmZ3B1Q29u
bmVjdGlvbi5jb25uZWN0aW9uKCk7CisgICAgbV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFBy
b3h5ID0gJmdwdUNvbm5lY3Rpb24ucmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSgpOwog
ICAgIG1fY29ubmVjdGlvbi0+YWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpMaWJX
ZWJSVENDb2RlY3M6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgdGhpcyk7CiAKICAgICBpZiAobV9s
b2dnaW5nTGV2ZWwpCkBAIC0zMTUsMTAgKzMxOCwyMyBAQCB2b2lkIExpYldlYlJUQ0NvZGVjczo6
ZmFpbGVkRGVjb2RpbmcoUlRDRGVjb2RlcklkZW50aWZpZXIgZGVjb2RlcklkZW50aWZpZXIpCiAg
ICAgICAgIGRlY29kZXItPmhhc0Vycm9yID0gdHJ1ZTsKIH0KIAotdm9pZCBMaWJXZWJSVENDb2Rl
Y3M6OmNvbXBsZXRlZERlY29kaW5nKFJUQ0RlY29kZXJJZGVudGlmaWVyIGRlY29kZXJJZGVudGlm
aWVyLCB1aW50MzJfdCB0aW1lU3RhbXAsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVt
b3RlU2FtcGxlKQordm9pZCBMaWJXZWJSVENDb2RlY3M6OmNvbXBsZXRlZERlY29kaW5nKFJUQ0Rl
Y29kZXJJZGVudGlmaWVyIGRlY29kZXJJZGVudGlmaWVyLCB1aW50MzJfdCB0aW1lU3RhbXAsIFdl
YkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtb3RlU2FtcGxlLCBzdGQ6Om9wdGlvbmFsPFJl
bW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPiByZW1vdGVGcmFtZUlkZW50aWZpZXIpCiB7CiAgICAg
QVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwogCisgICAgUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVQ
cm94eT4gcmVtb3RlVmlkZW9GcmFtZTsKKyAgICAvLyBXZSBhbHdheXMgY3JlYXRlIFJlbW90ZVZp
ZGVvRnJhbWVQcm94eSBzbyB0aGF0IHdlIGNhbiByZWxlYXNlIHRoZSBjb3JyZXNwb25kaW5nIEdQ
VVByb2Nlc3MgSU9TdXJmYWNlIHJpZ2h0IGF3YXkgaWYgdGhlcmUgaXMgbm8gdmlkZW8gc291cmNl
LgorICAgIGlmIChyZW1vdGVGcmFtZUlkZW50aWZpZXIpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fY29ubmVjdGlvbkxvY2sgfTsKKyAgICAgICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQ
cm9wZXJ0aWVzIHByb3BlcnRpZXMgeyByZW1vdGVTYW1wbGUudGltZSgpLCByZW1vdGVTYW1wbGUu
bWlycm9yZWQoKSwgcmVtb3RlU2FtcGxlLnJvdGF0aW9uKCksIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHJlbW90ZVNhbXBsZS5zaXplKCkud2lkdGgoKSksIHN0YXRpY19jYXN0PGZsb2F0PihyZW1vdGVT
YW1wbGUuc2l6ZSgpLmhlaWdodCgpKSB9LCByZW1vdGVTYW1wbGUudmlkZW9Gb3JtYXQoKSB9Owor
ICAgICAgICByZW1vdGVWaWRlb0ZyYW1lID0gUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpjcmVhdGVB
bHJlYWR5SW5pdGlhbGl6ZWQobV9jb25uZWN0aW9uLT51bmlxdWVJRCgpLCAqcmVtb3RlRnJhbWVJ
ZGVudGlmaWVyLCBwcm9wZXJ0aWVzLCBbcHJveHkgPSBtX3JlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwUHJveHldKGF1dG8mIGZyYW1lLCBhdXRvJiYgY2FsbGJhY2spIHsKKyAgICAgICAgICAgIGlm
ICghcHJveHkpIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayh7IH0pOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByb3h5LT5nZXRWaWRlb0Zy
YW1lQnVmZmVyKGZyYW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIH0pOworICAgIH0K
ICAgICAvLyBGSVhNRTogRG8gZXJyb3IgbG9nZ2luZy4KICAgICBhdXRvKiBkZWNvZGVyID0gbV9k
ZWNvZGVycy5nZXQoZGVjb2RlcklkZW50aWZpZXIpOwogICAgIGlmICghZGVjb2RlcikKQEAgLTMz
Miw2ICszNDgsMTQgQEAgdm9pZCBMaWJXZWJSVENDb2RlY3M6OmNvbXBsZXRlZERlY29kaW5nKFJU
Q0RlY29kZXJJZGVudGlmaWVyIGRlY29kZXJJZGVudGlmaWVyLAogICAgIGlmICghZGVjb2Rlci0+
ZGVjb2RlZEltYWdlQ2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChyZW1vdGVW
aWRlb0ZyYW1lKSB7CisgICAgICAgIHdlYnJ0Yzo6dmlkZW9EZWNvZGVyVGFza0NvbXBsZXRlKGRl
Y29kZXItPmRlY29kZWRJbWFnZUNhbGxiYWNrLCB0aW1lU3RhbXAsIHJlbW90ZVNhbXBsZS50aW1l
KCkudG9Eb3VibGUoKSwgcmVtb3RlVmlkZW9GcmFtZS5sZWFrUmVmKCksCisgICAgICAgICAgICBb
XShhdXRvKiBwb2ludGVyKSB7IHJldHVybiBzdGF0aWNfY2FzdDxSZW1vdGVWaWRlb0ZyYW1lUHJv
eHkqPihwb2ludGVyKS0+cGl4ZWxCdWZmZXIoKTsgfSwKKyAgICAgICAgICAgIFtdKGF1dG8qIHBv
aW50ZXIpIHsgc3RhdGljX2Nhc3Q8UmVtb3RlVmlkZW9GcmFtZVByb3h5Kj4ocG9pbnRlciktPmRl
cmVmKCk7IH0sCisgICAgICAgICAgICByZW1vdGVTYW1wbGUuc2l6ZSgpLndpZHRoKCksIHJlbW90
ZVNhbXBsZS5zaXplKCkuaGVpZ2h0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAg
aWYgKCFyZW1vdGVTYW1wbGUuc3VyZmFjZSgpKQogICAgICAgICByZXR1cm47CiAgICAgYXV0byBw
aXhlbEJ1ZmZlciA9IGNyZWF0ZUNWUGl4ZWxCdWZmZXIocmVtb3RlU2FtcGxlLnN1cmZhY2UoKSku
dmFsdWVfb3IobnVsbHB0cik7CkBAIC0zNDAsNyArMzY0LDcgQEAgdm9pZCBMaWJXZWJSVENDb2Rl
Y3M6OmNvbXBsZXRlZERlY29kaW5nKFJUQ0RlY29kZXJJZGVudGlmaWVyIGRlY29kZXJJZGVudGlm
aWVyLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgd2VicnRjOjp2aWRlb0RlY29kZXJU
YXNrQ29tcGxldGUoZGVjb2Rlci0+ZGVjb2RlZEltYWdlQ2FsbGJhY2ssIHRpbWVTdGFtcCwgcGl4
ZWxCdWZmZXIuZ2V0KCksIHJlbW90ZVNhbXBsZS50aW1lKCkudG9Eb3VibGUoKSk7CisgICAgd2Vi
cnRjOjp2aWRlb0RlY29kZXJUYXNrQ29tcGxldGUoZGVjb2Rlci0+ZGVjb2RlZEltYWdlQ2FsbGJh
Y2ssIHRpbWVTdGFtcCwgcmVtb3RlU2FtcGxlLnRpbWUoKS50b0RvdWJsZSgpLCBwaXhlbEJ1ZmZl
ci5nZXQoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGZvcm1hdE5hbWVGcm9tQ29kZWNU
eXBlKExpYldlYlJUQ0NvZGVjczo6VHlwZSB0eXBlKQpAQCAtNDM4LDIwICs0NjIsMzEgQEAgaW50
MzJfdCBMaWJXZWJSVENDb2RlY3M6OmVuY29kZUZyYW1lKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IHdlYnJ0Yzo6VmlkZW9GcmFtZSYKICAgICBpZiAoIWVuY29kZXIuY29ubmVjdGlvbikKICAgICAg
ICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKIAotICAgIGF1dG8gYnVmZmVyID0g
YWRvcHRDRih3ZWJydGM6OnBpeGVsQnVmZmVyRnJvbUZyYW1lKGZyYW1lKSk7Ci0gICAgaWYgKCFi
dWZmZXIpIHsKLSAgICAgICAgLy8gYnVmZmVyIGlzIG5vdCBuYXRpdmUsIHdlIG5lZWQgdG8gY29w
eSB0byBzaGFyZWQgdmlkZW8gZnJhbWUuCi0gICAgICAgIGlmICghY29weVNoYXJlZFZpZGVvRnJh
bWUoZW5jb2RlciwgZnJhbWUpKQotICAgICAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RF
Q19FUlJPUjsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNl
PiByZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZTsKKyAgICBpZiAoYXV0byBwcm92aWRlciA9
IHdlYnJ0Yzo6dmlkZW9GcmFtZUJ1ZmZlclByb3ZpZGVyKGZyYW1lKSkgeworICAgICAgICBhdXRv
JiBtZWRpYVNhbXBsZSA9ICpzdGF0aWNfY2FzdDxNZWRpYVNhbXBsZSo+KHByb3ZpZGVyKTsKKyAg
ICAgICAgaWYgKGlzPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4obWVkaWFTYW1wbGUpKQorICAgICAg
ICAgICAgcmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UgPSBkb3duY2FzdDxSZW1vdGVWaWRl
b0ZyYW1lUHJveHk+KG1lZGlhU2FtcGxlKS5yZWFkKCk7CiAgICAgfQorCisgICAgUmV0YWluUHRy
PENWUGl4ZWxCdWZmZXJSZWY+IGJ1ZmZlcjsKKyAgICBpZiAoIXJlbW90ZVZpZGVvRnJhbWVSZWFk
UmVmZXJlbmNlKSB7CisgICAgICAgIGJ1ZmZlciA9IGFkb3B0Q0Yod2VicnRjOjpwaXhlbEJ1ZmZl
ckZyb21GcmFtZShmcmFtZSkpOworICAgICAgICBpZiAoIWJ1ZmZlcikgeworICAgICAgICAgICAg
Ly8gYnVmZmVyIGlzIG5vdCBuYXRpdmUsIHdlIG5lZWQgdG8gY29weSB0byBzaGFyZWQgdmlkZW8g
ZnJhbWUuCisgICAgICAgICAgICBpZiAoIWNvcHlTaGFyZWRWaWRlb0ZyYW1lKGVuY29kZXIsIGZy
YW1lKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOwor
ICAgICAgICB9CisgICAgfQorCiAgICAgYXV0byBzYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6
Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgTWVkaWFUaW1lKGZyYW1lLnRpbWVzdGFtcF91cygpICogMTAw
MCwgMTAwMDAwMCksIHRvTWVkaWFTYW1wbGVWaWRlb1JvdGF0aW9uKGZyYW1lLnJvdGF0aW9uKCkp
LCBSZW1vdGVWaWRlb1NhbXBsZTo6U2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2U6Ok5vKTsKLSAgICBp
ZiAoIXNhbXBsZS0+c3VyZmFjZSgpKSB7CisgICAgaWYgKGJ1ZmZlciAmJiAhc2FtcGxlLT5zdXJm
YWNlKCkpIHsKICAgICAgICAgLy8gYnVmZmVyIGlzIG5vdCBJT1N1cmZhY2UsIHdlIG5lZWQgdG8g
Y29weSB0byBzaGFyZWQgdmlkZW8gZnJhbWUuCiAgICAgICAgIGlmICghY29weVNoYXJlZFZpZGVv
RnJhbWUoZW5jb2RlciwgYnVmZmVyLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiBXRUJSVENf
VklERU9fQ09ERUNfRVJST1I7CiAgICAgfQogCi0gICAgZW5jb2Rlci5jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6RW5jb2RlRnJhbWUgeyBlbmNvZGVyLmlk
ZW50aWZpZXIsICpzYW1wbGUsIGZyYW1lLnRpbWVzdGFtcCgpLCBzaG91bGRFbmNvZGVBc0tleUZy
YW1lIH0sIDApOworICAgIGVuY29kZXIuY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2Vi
UlRDQ29kZWNzUHJveHk6OkVuY29kZUZyYW1lIHsgZW5jb2Rlci5pZGVudGlmaWVyLCAqc2FtcGxl
LCBmcmFtZS50aW1lc3RhbXAoKSwgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSwgcmVtb3RlVmlkZW9G
cmFtZVJlYWRSZWZlcmVuY2UgfSwgMCk7CiAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19P
SzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3MuaAppbmRleCBhMDE3ZGU4Yjg0NTQxZGM2YzliMzdmZDI1YjM1N2MwMDk4
YjIyYzEyLi44NDcxYTE2ZTE2MDM3ODUwNDFjOWU3ZjdmNzE5OGE0OTM0ZTZkMmFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2Rl
Y3MuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2lu
Y2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUlRDRW5jb2RlcklkZW50
aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIlNoYXJlZFZpZGVvRnJhbWUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1BpeGVsQnVmZmVyQ29u
Zm9ybWVyQ1YuaD4KICNpbmNsdWRlIDxtYXA+CkBAIC02MCw2ICs2MSw4IEBAIHN0cnVjdCBXZWJL
aXRFbmNvZGVkRnJhbWVJbmZvOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eTsKKwogY2xhc3MgTGliV2ViUlRDQ29kZWNzIDogcHVi
bGljIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVyUmVmQ291bnRlZCwgcHVi
bGljIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgpAQCAtMTI4LDcgKzEzMSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBn
cHVQcm9jZXNzQ29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoKTsKIAogICAgIHZvaWQgZmFp
bGVkRGVjb2RpbmcoUlRDRGVjb2RlcklkZW50aWZpZXIpOwotICAgIHZvaWQgY29tcGxldGVkRGVj
b2RpbmcoUlRDRGVjb2RlcklkZW50aWZpZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwgV2ViQ29yZTo6
UmVtb3RlVmlkZW9TYW1wbGUmJik7CisgICAgdm9pZCBjb21wbGV0ZWREZWNvZGluZyhSVENEZWNv
ZGVySWRlbnRpZmllciwgdWludDMyX3QgdGltZVN0YW1wLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1Nh
bXBsZSYmLCBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPik7CiAgICAg
dm9pZCBjb21wbGV0ZWRFbmNvZGluZyhSVENFbmNvZGVySWRlbnRpZmllciwgSVBDOjpEYXRhUmVm
ZXJlbmNlJiYsIGNvbnN0IHdlYnJ0Yzo6V2ViS2l0RW5jb2RlZEZyYW1lSW5mbyYpOwogICAgIFJl
dGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBjb252ZXJ0VG9CR1JBKENWUGl4ZWxCdWZmZXJSZWYp
OwogCkBAIC0xNDksNiArMTUyLDcgQEAgcHJpdmF0ZToKIAogICAgIExvY2sgbV9jb25uZWN0aW9u
TG9jazsKICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb24gV1RGX0dVQVJE
RURfQllfTE9DSyhtX2Nvbm5lY3Rpb25Mb2NrKTsKKyAgICBSZWZQdHI8UmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXBQcm94eT4gbV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5IFdURl9H
VUFSREVEX0JZX0xPQ0sobV9jb25uZWN0aW9uTG9jayk7CiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZv
aWQoKT4+IG1fdGFza3NUb0Rpc3BhdGNoQWZ0ZXJFc3RhYmxpc2hpbmdDb25uZWN0aW9uOwogCiAg
ICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5pbgpp
bmRleCAyNWYyN2ZlYTgzZGU3YjU2ZmNhZmQ4ZDFmOGYzOGEzNDdhYjA2Y2JkLi43ZGI3OTUwODFl
YTVmMDYwMmY2ZjIyNjI3YjQ0NTU1M2E4YjcwNzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3Nh
Z2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAKIG1lc3NhZ2VzIC0+IExpYldlYlJUQ0NvZGVjcyBO
b3RSZWZDb3VudGVkIHsKICAgICBGYWlsZWREZWNvZGluZyhXZWJLaXQ6OlJUQ0RlY29kZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCi0gICAgQ29tcGxldGVkRGVjb2RpbmcoV2ViS2l0OjpSVENEZWNv
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50MzJfdCB0aW1lU3RhbXAsIFdlYkNvcmU6OlJl
bW90ZVZpZGVvU2FtcGxlIHNhbXBsZSkKKyAgICBDb21wbGV0ZWREZWNvZGluZyhXZWJLaXQ6OlJU
Q0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwgV2ViQ29y
ZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxlLCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6UmVtb3Rl
VmlkZW9GcmFtZUlkZW50aWZpZXI+IHJlbW90ZUZyYW1lSWRlbnRpZmllcikKIAogICAgIENvbXBs
ZXRlZEVuY29kaW5nKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgSVBD
OjpEYXRhUmVmZXJlbmNlIGRhdGEsIHN0cnVjdCB3ZWJydGM6OldlYktpdEVuY29kZWRGcmFtZUlu
Zm8gaW5mbyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKaW5kZXggNGY3N2YzNmU3MTcyNDU4
ZTFmZGZjZjkyMTM2NjM2ZTZjM2RhMmZmNS4uOTE4MGQxY2E3MmQwMWUzMjJlN2NhNGRlOWM4MzZk
NjhlY2M2YTFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFS
ZWNvcmRlck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVjb3JkZXJN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94eS5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvTWVkaWFTdHJlYW1Qcml2YXRlLmg+CkBAIC05MywyNiArOTQsMzQgQEAgTWVk
aWFSZWNvcmRlclByaXZhdGU6On5NZWRpYVJlY29yZGVyUHJpdmF0ZSgpCiAKIHZvaWQgTWVkaWFS
ZWNvcmRlclByaXZhdGU6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUs
IFZpZGVvU2FtcGxlTWV0YWRhdGEpCiB7CisgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0Zy
YW1lUmVhZFJlZmVyZW5jZT4gcmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2U7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiByZW1vdGVTYW1wbGU7CiAgICAgaWYgKHNo
b3VsZE11dGVWaWRlbygpKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBvcHRpbWl6ZSBz
ZW5kaW5nIGJsYWNrIGZyYW1lcyBieSBvbmx5IHNlbmRpbmcgd2lkdGgvaGVpZ2h0LgogICAgICAg
ICBpZiAoIW1fYmxhY2tGcmFtZSkgewotICAgICAgICAgICAgYXV0byBibGFja0ZyYW1lRGVzY3Jp
cHRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uKHNhbXBsZS5wbGF0Zm9y
bVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcik7Ci0gICAgICAgICAgICBhdXRvIGRpbWVu
c2lvbnMgPSBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25HZXREaW1lbnNpb25zKGJsYWNrRnJhbWVE
ZXNjcmlwdGlvbik7Ci0gICAgICAgICAgICBtX2JsYWNrRnJhbWUgPSBjcmVhdGVCbGFja1BpeGVs
QnVmZmVyKGRpbWVuc2lvbnMud2lkdGgsIGRpbWVuc2lvbnMuaGVpZ2h0KTsKKyAgICAgICAgICAg
IGF1dG8gc2l6ZSA9IHNhbXBsZS5wcmVzZW50YXRpb25TaXplKCk7CisgICAgICAgICAgICBtX2Js
YWNrRnJhbWUgPSBjcmVhdGVCbGFja1BpeGVsQnVmZmVyKHN0YXRpY19jYXN0PHNpemVfdD4oc2l6
ZS53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplLmhlaWdodCgpKSk7CiAgICAgICAg
IH0KICAgICAgICAgcmVtb3RlU2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShtX2Js
YWNrRnJhbWUuZ2V0KCksIHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksIHNhbXBsZS52aWRlb1Jv
dGF0aW9uKCksIFJlbW90ZVZpZGVvU2FtcGxlOjpTaG91bGRDaGVja0ZvcklPU3VyZmFjZTo6Tm8p
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmxhY2tGcmFtZSA9IG51bGxwdHI7Ci0gICAgICAg
IHJlbW90ZVNhbXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoc2FtcGxlLCBSZW1vdGVW
aWRlb1NhbXBsZTo6U2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2U6Ok5vKTsKKworICAgICAgICBpZiAo
aXM8UmVtb3RlVmlkZW9GcmFtZVByb3h5PihzYW1wbGUpKSB7CisgICAgICAgICAgICByZW1vdGVW
aWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSA9IGRvd25jYXN0PFJlbW90ZVZpZGVvRnJhbWVQcm94eT4o
c2FtcGxlKS5yZWFkKCk7CisgICAgICAgICAgICByZW1vdGVTYW1wbGUgPSBSZW1vdGVWaWRlb1Nh
bXBsZTo6Y3JlYXRlKG51bGxwdHIsIHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksIHNhbXBsZS52
aWRlb1JvdGF0aW9uKCksIFJlbW90ZVZpZGVvU2FtcGxlOjpTaG91bGRDaGVja0ZvcklPU3VyZmFj
ZTo6Tm8pOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJlbW90ZVNhbXBsZSA9IFJlbW90
ZVZpZGVvU2FtcGxlOjpjcmVhdGUoc2FtcGxlLCBSZW1vdGVWaWRlb1NhbXBsZTo6U2hvdWxkQ2hl
Y2tGb3JJT1N1cmZhY2U6Ok5vKTsKICAgICB9CiAKLSAgICBpZiAoIXJlbW90ZVNhbXBsZS0+c3Vy
ZmFjZSgpKSB7CisgICAgaWYgKGlzPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4oc2FtcGxlKSkKKyAg
ICAgICAgcmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UgPSBkb3duY2FzdDxSZW1vdGVWaWRl
b0ZyYW1lUHJveHk+KHNhbXBsZSkucmVhZCgpOworICAgIGVsc2UgaWYgKCFyZW1vdGVTYW1wbGUt
PnN1cmZhY2UoKSkgewogICAgICAgICAvLyBidWZmZXIgaXMgbm90IElPU3VyZmFjZSwgd2UgbmVl
ZCB0byBjb3B5IHRvIHNoYXJlZCB2aWRlbyBmcmFtZS4KICAgICAgICAgaWYgKCFjb3B5U2hhcmVk
VmlkZW9GcmFtZShyZW1vdGVTYW1wbGUtPmltYWdlQnVmZmVyKCkpKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVk
aWFSZWNvcmRlcjo6VmlkZW9TYW1wbGVBdmFpbGFibGUgeyBXVEZNb3ZlKCpyZW1vdGVTYW1wbGUp
IH0sIG1faWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVJlY29yZGVyOjpWaWRlb1NhbXBsZUF2YWlsYWJsZSB7IFdURk1vdmUoKnJlbW90ZVNh
bXBsZSksIHJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlIH0sIG1faWRlbnRpZmllcik7CiB9
CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kZmI5OTg3OWU0Y2ZjYzVmODU5NTk3NjNjNTUzYjFhZDViMDY0MDFiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXBQcm94eS5jcHAKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQ
cm94eS5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpICYm
IEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5
TWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JlZjxSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcFByb3h5PiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5OjpjcmVhdGUo
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eShjb25uZWN0aW9uKSk7Cit9CisK
K1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCisgICAgOiBtX2Nvbm5l
Y3Rpb25JRChjb25uZWN0aW9uLmNvbm5lY3Rpb24oKS51bmlxdWVJRCgpKQorICAgICwgbV9xdWV1
ZShXb3JrUXVldWU6OmNyZWF0ZSgiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSIsIFdv
cmtRdWV1ZTo6UU9TOjpVc2VySW50ZXJhY3RpdmUpKQoreworICAgIGNvbm5lY3Rpb24uYWRkQ2xp
ZW50KCp0aGlzKTsKKyAgICBjb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5hZGRXb3JrUXVldWVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9xdWV1ZSwgdGhpcyk7Cit9CisKK1JlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwUHJveHk6On5SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5KCkKK3sK
KyAgICBjbGVhckNhbGxiYWNrcygpOworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwUHJveHk6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24mIGNvbm5lY3Rpb24pCit7CisgICAgeworICAgICAgICBMb2NrZXIgbG9jayhtX2Nvbm5lY3Rp
b25Mb2NrKTsKKyAgICAgICAgbV9jb25uZWN0aW9uSUQgPSB7IH07CisgICAgfQorICAgIGNvbm5l
Y3Rpb24uY29ubmVjdGlvbigpLnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
KTsKKyAgICBjbGVhckNhbGxiYWNrcygpOworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwUHJveHk6OmNsZWFyQ2FsbGJhY2tzKCkKK3sKKyAgICBIYXNoTWFwPFJlbW90ZVZpZGVv
RnJhbWVJZGVudGlmaWVyLCBDYWxsYmFjaz4gY2FsbGJhY2tzOworICAgIHsKKyAgICAgICAgTG9j
a2VyIGxvY2sobV9jYWxsYmFja3NMb2NrKTsKKyAgICAgICAgY2FsbGJhY2tzID0gc3RkOjpleGNo
YW5nZShtX2NhbGxiYWNrcywgeyB9KTsKKyAgICB9CisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6
IGNhbGxiYWNrcy52YWx1ZXMoKSkKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKK30KKwordm9pZCBS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5OjpzZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBo
b3JlKElQQzo6U2VtYXBob3JlJiYgc2VtYXBob3JlKQoreworICAgIG1fc2hhcmVkVmlkZW9GcmFt
ZVJlYWRlci5zZXRTZW1hcGhvcmUoV1RGTW92ZShzZW1hcGhvcmUpKTsKK30KKwordm9pZCBSZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5OjpzZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5KGNv
bnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBpcGNIYW5kbGUpCit7CisgICAgbV9zaGFyZWRW
aWRlb0ZyYW1lUmVhZGVyLnNldFNoYXJlZE1lbW9yeShpcGNIYW5kbGUpOworfQorCitSZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5OjpDYWxsYmFjayBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcFByb3h5Ojp0YWtlQ2FsbGJhY2soUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKK3sKKyAgICBMb2NrZXIgbG9jayhtX2NhbGxiYWNrc0xvY2spOworICAgIHJldHVybiBt
X2NhbGxiYWNrcy50YWtlKGlkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwUHJveHk6OnZpZGVvRnJhbWVCdWZmZXJOb3RGb3VuZChSZW1vdGVWaWRlb0ZyYW1l
SWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvIGNhbGxiYWNrID0gdGFrZUNh
bGxiYWNrKGlkZW50aWZpZXIpKQorICAgICAgICBjYWxsYmFjayhudWxscHRyKTsKK30KKwordm9p
ZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5OjpuZXdWaWRlb0ZyYW1lQnVmZmVyKFJl
bW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byByZXN1bHQg
PSBtX3NoYXJlZFZpZGVvRnJhbWVSZWFkZXIucmVhZCgpOworICAgIGlmIChhdXRvIGNhbGxiYWNr
ID0gdGFrZUNhbGxiYWNrKGlkZW50aWZpZXIpKQorICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJl
c3VsdCkpOworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk6OmdldFZp
ZGVvRnJhbWVCdWZmZXIoY29uc3QgUmVtb3RlVmlkZW9GcmFtZVByb3h5JiBmcmFtZSwgQ2FsbGJh
Y2smJiBjYWxsYmFjaykKK3sKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrKG1fY2FsbGJhY2tz
TG9jayk7CisgICAgICAgIEFTU0VSVCghbV9jYWxsYmFja3MuY29udGFpbnMoZnJhbWUuaWRlbnRp
ZmllcigpKSk7CisgICAgICAgIG1fY2FsbGJhY2tzLmFkZChmcmFtZS5pZGVudGlmaWVyKCksIFdU
Rk1vdmUoY2FsbGJhY2spKTsKKyAgICB9CisgICAgTG9ja2VyIGxvY2sobV9jb25uZWN0aW9uTG9j
ayk7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb25JRCkgeworICAgICAgICB2aWRlb0ZyYW1lQnVmZmVy
Tm90Rm91bmQoZnJhbWUuaWRlbnRpZmllcigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uSUQsIE1lc3NhZ2VzOjpSZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcDo6R2V0VmlkZW9GcmFtZUJ1ZmZlcihmcmFtZS5yZWFkKCkpLCAw
LCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cFByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjNlODkzNGZkOTk2MmM2NjZkMzk2NWU1Nzk3MTIwOTdmMGZj
ZDNiZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuaApAQCAtMCwwICsxLDg4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQ
TEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIK
KyNpbmNsdWRlICJTaGFyZWRWaWRlb0ZyYW1lLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+
CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1
ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KKwordXNpbmcgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgPSBzdHJ1
Y3QgX19DVlBpeGVsQnVmZmVyUG9vbCo7CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgQ29ubmVj
dGlvbjsKK2NsYXNzIERlY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBS
ZW1vdGVWaWRlb0ZyYW1lUHJveHk7CisKK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
UHJveHkgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIs
IHB1YmxpYyBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwUHJveHk+IGNyZWF0ZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpOworICAgIH5SZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5KCk7CisKKyAgICB1c2luZyBDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYpPjsKKyAgICB2b2lkIGdldFZp
ZGVvRnJhbWVCdWZmZXIoY29uc3QgUmVtb3RlVmlkZW9GcmFtZVByb3h5JiwgQ2FsbGJhY2smJik7
CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94
eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2Vz
CisgICAgdm9pZCBzZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYp
OworICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeShjb25zdCBTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSYpOworICAgIHZvaWQgdmlkZW9GcmFtZUJ1ZmZlck5vdEZvdW5kKFJlbW90ZVZp
ZGVvRnJhbWVJZGVudGlmaWVyKTsKKyAgICB2b2lkIG5ld1ZpZGVvRnJhbWVCdWZmZXIoUmVtb3Rl
VmlkZW9GcmFtZUlkZW50aWZpZXIpOworCisgICAgLy8gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNs
aWVudAorICAgIHZvaWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29u
bmVjdGlvbiYpOworCisgICAgdm9pZCBjbGVhckNhbGxiYWNrcygpOworICAgIENhbGxiYWNrIHRh
a2VDYWxsYmFjayhSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAg
TG9jayBtX2Nvbm5lY3Rpb25Mb2NrOworICAgIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgbV9j
b25uZWN0aW9uSUQgV1RGX0dVQVJERURfQllfTE9DSyhtX2Nvbm5lY3Rpb25Mb2NrKTsKKyAgICBM
b2NrIG1fY2FsbGJhY2tzTG9jazsKKyAgICBIYXNoTWFwPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlm
aWVyLCBDYWxsYmFjaz4gbV9jYWxsYmFja3MgV1RGX0dVQVJERURfQllfTE9DSyhtX2NhbGxiYWNr
c0xvY2spOworICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CisgICAgU2hhcmVkVmlkZW9GcmFt
ZVJlYWRlciBtX3NoYXJlZFZpZGVvRnJhbWVSZWFkZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXBQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40N2UwZDY4Mzg3YmYzOWQ0NzBjNjgwNjk3
MjIwMjY2ODFmMDk4OWE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5tZXNzYWdlcy5p
bgpAQCAtMCwwICsxLDMyIEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxF
KEdQVV9QUk9DRVNTKQorCittZXNzYWdlcyAtPiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFBy
b3h5IE5vdFJlZkNvdW50ZWQgeworICAgIFNldFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhvcmUoSVBD
OjpTZW1hcGhvcmUgc2VtYXBob3JlKQorICAgIFNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkoV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBzdG9yYWdlSGFuZGxlKQorICAgIFZpZGVvRnJh
bWVCdWZmZXJOb3RGb3VuZChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCisgICAgTmV3VmlkZW9GcmFtZUJ1ZmZlcihXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5jcHAKaW5kZXggNmI2MmRhZGM3MjkyMWZiMjVjM2Q4Yzg5Yjc1MDM5Y2I3
NzdlYzg1YS4uZjM3YzE4ZjVmYzNiZWY5OTU4YmVlMGVjZTAxOGFiZjM2N2FjMzY1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9T
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCkBAIC0xNDQsNiArMTQ0LDcgQEAgdm9pZCBTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkK
ICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbikKICAgICAg
ICAgcmV0dXJuOworCiAgICAgaWYgKGlzPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4oc2FtcGxlKSkg
ewogICAgICAgICBhdXRvJiByZW1vdGVTYW1wbGUgPSBkb3duY2FzdDxSZW1vdGVWaWRlb0ZyYW1l
UHJveHk+KHNhbXBsZSk7CiAgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpFbnF1ZXVlU2FtcGxlIHsgcmVtb3RlU2FtcGxl
LnJlYWQoKSB9LCBtX2lkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAKaW5kZXgg
YjFlZjhmNTY0NTJmMWZjNjkxZmVkZTRjNDg0OWMzYjViMDZjNjY5My4uMTU2YTllYWNmZjk4ZDcw
NTljYWUyZWU1N2M1YjYxODgyOGUxYzBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwCkBA
IC0yOCw2ICsyOCw4IEBACiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
Q2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIK
ICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaD4KQEAgLTEz
Myw2ICsxMzUsMTIgQEAgdm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6ZGlkVXBkYXRl
U291cmNlQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qIGNvbm4KICAgICBzZXRDb25uZWN0aW9u
KGNvbm5lY3Rpb24pOwogfQogCit2b2lkIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjpzZXRS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5KFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
UHJveHkqIHByb3h5KQoreworICAgIExvY2tlciBsb2NrKG1fcmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXBQcm94eUxvY2spOworICAgIG1fcmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSA9
IHByb3h5OworfQorCiB2b2lkIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjpkaXNwYXRjaFRv
VGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBtX3F1ZXVlLT5kaXNw
YXRjaChXVEZNb3ZlKGNhbGxiYWNrKSk7CkBAIC0xNTAsMTUgKzE1OCwzNSBAQCB2b2lkIFJlbW90
ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjphdWRpb1N0b3JhZ2VDaGFuZ2VkKFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyYwogICAgIGl0ZXJhdG9yLT52YWx1ZS0+c2V0U3RvcmFnZShpcGNIYW5kbGUu
aGFuZGxlLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMsIFdURk1vdmUoc2VtYXBob3JlKSwg
bWVkaWFUaW1lLCBmcmFtZUNodW5rU2l6ZSk7CiB9CiAKLXZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBs
ZU1hbmFnZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFJlbW90ZVZpZGVvU2FtcGxlJiYgc2FtcGxlLCBWaWRlb1NhbXBsZU1l
dGFkYXRhIG1ldGFkYXRhKQordm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6dmlkZW9T
YW1wbGVBdmFpbGFibGUoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
UmVtb3RlVmlkZW9TYW1wbGUmJiBzYW1wbGUsIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFt
ZUlkZW50aWZpZXI+IHJlbW90ZUlkZW50aWZpZXIsIFZpZGVvU2FtcGxlTWV0YWRhdGEgbWV0YWRh
dGEpCiB7CiAgICAgQVNTRVJUKCFXVEY6OmlzTWFpblJ1bkxvb3AoKSk7CiAKKyAgICBSZWZQdHI8
TWVkaWFTYW1wbGU+IHZpZGVvRnJhbWU7CisgICAgLy8gV2UgYWx3YXlzIGNyZWF0ZSBSZW1vdGVW
aWRlb0ZyYW1lUHJveHkgc28gdGhhdCB3ZSBjYW4gcmVsZWFzZSB0aGUgY29ycmVzcG9uZGluZyBH
UFVQcm9jZXNzIElPU3VyZmFjZSByaWdodCBhd2F5IGlmIHRoZXJlIGlzIG5vIHZpZGVvIHNvdXJj
ZS4KKyAgICBpZiAocmVtb3RlSWRlbnRpZmllcikgeworICAgICAgICBSZW1vdGVWaWRlb0ZyYW1l
UHJveHk6OlByb3BlcnRpZXMgcHJvcGVydGllcyB7IHNhbXBsZS50aW1lKCksIHNhbXBsZS5taXJy
b3JlZCgpLCBzYW1wbGUucm90YXRpb24oKSwgeyBzdGF0aWNfY2FzdDxmbG9hdD4oc2FtcGxlLnNp
emUoKS53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNhbXBsZS5zaXplKCkuaGVpZ2h0KCkp
IH0sIHNhbXBsZS52aWRlb0Zvcm1hdCgpIH07CisgICAgICAgIAorICAgICAgICAvLyBGSVhNRTog
V2UgbmVlZCB0byBlaXRoZXIgZ2V0IEdQVVByb2Nlc3Mgb3IgVUlQcm9jZXNzIG9iamVjdCBoZWFw
IHByb3h5LiBGb3Igbm93IHdlIGFsd2F5cyBnbyB0byBHUFVQcm9jZXNzLgorICAgICAgICBMb2Nr
ZXIgbG9jayhtX3JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlMb2NrKTsKKyAgICAgICAg
dmlkZW9GcmFtZSA9IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6Y3JlYXRlQWxyZWFkeUluaXRpYWxp
emVkKG1fY29ubmVjdGlvbi0+dW5pcXVlSUQoKSwgKnJlbW90ZUlkZW50aWZpZXIsIHByb3BlcnRp
ZXMsIFtwcm94eSA9IG1fcmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eV0oYXV0byYgZnJh
bWUsIGF1dG8mJiBjYWxsYmFjaykgeworICAgICAgICAgICAgaWYgKCFwcm94eSkgeworICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcHJveHktPmdldFZpZGVvRnJhbWVCdWZmZXIoZnJhbWUsIFdU
Rk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgfSk7CisgICAgfQorCiAgICAgYXV0byBpdGVyYXRv
ciA9IG1fdmlkZW9Tb3VyY2VzLmZpbmQoaWRlbnRpZmllcik7CiAgICAgaWYgKGl0ZXJhdG9yID09
IG1fdmlkZW9Tb3VyY2VzLmVuZCgpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJU
QywgIlVuYWJsZSB0byBmaW5kIHNvdXJjZSAlbGx1IGZvciByZW1vdGVWaWRlb1NhbXBsZUF2YWls
YWJsZSIsIGlkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Cisg
ICAgaWYgKHZpZGVvRnJhbWUpIHsKKyAgICAgICAgaXRlcmF0b3ItPnZhbHVlLT52aWRlb0ZyYW1l
QXZhaWxhYmxlKHZpZGVvRnJhbWUucmVsZWFzZU5vbk51bGwoKSwgc2FtcGxlLnNpemUoKSwgbWV0
YWRhdGEpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGl0ZXJhdG9yLT52YWx1ZS0+dmlk
ZW9TYW1wbGVBdmFpbGFibGUoV1RGTW92ZShzYW1wbGUpLCBtZXRhZGF0YSk7CiB9CiAKQEAgLTI0
NywxMCArMjc1LDE1IEBAIHZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OlJlbW90ZVZp
ZGVvOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShSZW1vdGVWaWRlb1NhCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIHZpZGVvRnJhbWVBdmFp
bGFibGUoc2FtcGxlUmVmLnJlbGVhc2VOb25OdWxsKCksIHJlbW90ZVNhbXBsZS5zaXplKCksIG1l
dGFkYXRhKTsKK30KKwordm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6UmVtb3RlVmlk
ZW86OnZpZGVvRnJhbWVBdmFpbGFibGUoUmVmPE1lZGlhU2FtcGxlPiYmIHNhbXBsZSwgSW50U2l6
ZSBzaXplLCBWaWRlb1NhbXBsZU1ldGFkYXRhIG1ldGFkYXRhKQorewogICAgIHN3aXRjaE9uKG1f
c291cmNlLCBbJl0oUmVmPFJlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2U+JiBzb3VyY2UpIHsKLSAg
ICAgICAgc291cmNlLT52aWRlb1NhbXBsZUF2YWlsYWJsZSgqc2FtcGxlUmVmLCByZW1vdGVTYW1w
bGUuc2l6ZSgpLCBtZXRhZGF0YSk7CisgICAgICAgIHNvdXJjZS0+dmlkZW9TYW1wbGVBdmFpbGFi
bGUoc2FtcGxlLmdldCgpLCBzaXplLCBtZXRhZGF0YSk7CiAgICAgfSwgWyZdKFJlZjxSZW1vdGVS
ZWFsdGltZURpc3BsYXlTb3VyY2U+JiBzb3VyY2UpIHsKLSAgICAgICAgc291cmNlLT5yZW1vdGVW
aWRlb1NhbXBsZUF2YWlsYWJsZSgqc2FtcGxlUmVmLCBtZXRhZGF0YSk7CisgICAgICAgIHNvdXJj
ZS0+cmVtb3RlVmlkZW9TYW1wbGVBdmFpbGFibGUoc2FtcGxlLmdldCgpLCBtZXRhZGF0YSk7CiAg
ICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9S
ZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmgKaW5kZXggODZmNDkwYjc4MGZlNDljYTEx
YTEwNGFmN2I2OWJkMzNlNjhjMTcyNi4uYmYxZGE5ZGRjZTgwMTQwOThiNWEyNWFiZjU0NzQ1ODQw
NTE3MmEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90
ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmgKQEAgLTMzLDExICszMywxMyBAQAogI2lu
Y2x1ZGUgIlJlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UuaCIKICNpbmNsdWRlICJSZW1vdGVSZWFs
dGltZURpc3BsYXlTb3VyY2UuaCIKICNpbmNsdWRlICJSZW1vdGVSZWFsdGltZVZpZGVvU291cmNl
LmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJT
aGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9XZWJBdWRpb0J1ZmZlckxpc3QuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00Niw2ICs0OCw3IEBAIGNsYXNzIFJlbW90ZVZpZGVvU2FtcGxlOwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJv
eHk7CiAKIGNsYXNzIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyIDogcHVibGljIElQQzo6Q29u
bmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVyUmVmQ291bnRlZCB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CkBAIC02MCw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92
ZVNvdXJjZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllcik7CiAKICAgICB2
b2lkIGRpZFVwZGF0ZVNvdXJjZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKik7CisgICAgdm9p
ZCBzZXRSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5KFJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwUHJveHkqKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKQEAgLTcwLDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICAv
LyBNZXNzYWdlcwogICAgIHZvaWQgYXVkaW9TdG9yYWdlQ2hhbmdlZChXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlSWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmLCBj
b25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCB1aW50NjRfdCBudW1iZXJP
ZkZyYW1lcywgSVBDOjpTZW1hcGhvcmUmJiwgY29uc3QgTWVkaWFUaW1lJiwgc2l6ZV90IGZyYW1l
U2FtcGxlU2l6ZSk7CiAgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoV2ViQ29yZTo6UmVh
bHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIE1lZGlhVGltZSwgdWludDY0X3QgbnVtYmVyT2ZG
cmFtZXMpOwotICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYsIFdlYkNv
cmU6OlZpZGVvU2FtcGxlTWV0YWRhdGEpOworICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVZp
ZGVvU2FtcGxlJiYsIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+LCBX
ZWJDb3JlOjpWaWRlb1NhbXBsZU1ldGFkYXRhKTsKIAogICAgIHZvaWQgc2V0Q29ubmVjdGlvbihJ
UEM6OkNvbm5lY3Rpb24qKTsKIApAQCAtMTA2LDYgKzExMCw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGV4cGxpY2l0IFJlbW90ZVZpZGVvKFNvdXJjZSYmKTsKIAogICAgICAgICB2b2lkIHZpZGVvU2Ft
cGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYsIFdlYkNvcmU6OlZpZGVv
U2FtcGxlTWV0YWRhdGEpOworICAgICAgICB2b2lkIHZpZGVvRnJhbWVBdmFpbGFibGUoUmVmPFdl
YkNvcmU6Ok1lZGlhU2FtcGxlPiYmLCBXZWJDb3JlOjpJbnRTaXplLCBXZWJDb3JlOjpWaWRlb1Nh
bXBsZU1ldGFkYXRhKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFNvdXJjZSBtX3NvdXJjZTsK
QEAgLTExNSwxMCArMTIwLDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzUmVnaXN0ZXJlZFRv
UGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9OwogICAgIFJlZjxXb3JrUXVldWU+IG1f
cXVldWU7CiAgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwotCiAgICAg
Ly8gYmFja2dyb3VuZCB0aHJlYWQgbWVtYmVyCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUF1ZGlvPj4gbV9h
dWRpb1NvdXJjZXM7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRl
bnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvPj4gbV92aWRlb1NvdXJjZXM7CisK
KyAgICBMb2NrIG1fcmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eUxvY2s7CisgICAgUmVm
UHRyPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk+IG1fcmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXBQcm94eSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fcmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXBQcm94eUxvY2spOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFn
ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2Fw
dHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggODY1MWIzY2Q3OTlhMWY3NTRmMmU4
MDNjNDY4ODkwZThmNWFhZmE2Ni4uOTY3MjIxODQxZTBjZjI0YTk1ZWQ1ZWMyY2FkMjAxYzA2NDg0
ZjYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNh
cHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjUs
NyArMjUsNyBAQAogCiBtZXNzYWdlcyAtPiBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlciBOb3RS
ZWZDb3VudGVkIHsKICAgICBBdWRpb1N0b3JhZ2VDaGFuZ2VkKFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2VJZGVudGlmaWVyIGlkLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHN0
b3JhZ2VIYW5kbGUsIFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBkZXNjcmlwdGlv
biwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIElQQzo6U2VtYXBob3JlIGNhcHR1cmVTZW1hcGhv
cmUsIE1lZGlhVGltZSBtZWRpYVRpbWUsIHNpemVfdCBmcmFtZUNodW5rU2l6ZSk7Ci0gICAgVmlk
ZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIg
aWQsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSwgc3RydWN0IFdlYkNvcmU6OlZp
ZGVvU2FtcGxlTWV0YWRhdGEgbWV0YWRhdGEpCisgICAgVmlkZW9TYW1wbGVBdmFpbGFibGUoV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIFdlYkNvcmU6OlJlbW90ZVZp
ZGVvU2FtcGxlIHNhbXBsZSwgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVJ
ZGVudGlmaWVyPiByZW1vdGVJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6VmlkZW9TYW1wbGVN
ZXRhZGF0YSBtZXRhZGF0YSkKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAppbmRleCAx
ZWU5MjMwNjljZGM1OGM5ZDdhMjEwMjdlYzk0NjYzMGIyYzBlYjFlLi43MTFiNTU4NWE1ZDU5NjZi
MzViOTQwOWEzYzk0Mjk4MjlmMWUzNzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKQEAgLTIzMCwx
MiArMjMwLDE5IEBAIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OkF1ZGlvRmFjdG9yeTo6
c2V0U2hvdWxkQ2FwdHVyZUluR1BVUHJvY2Vzcyhib29sIHZhCiAgICAgbV9zaG91bGRDYXB0dXJl
SW5HUFVQcm9jZXNzID0gdmFsdWU7CiB9CiAKK3ZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6
OlZpZGVvRmFjdG9yeTo6c2V0U2hvdWxkQ2FwdHVyZUluR1BVUHJvY2Vzcyhib29sIHZhbHVlKQor
eworICAgIG1fc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcyA9IHZhbHVlOworfQorCiBDYXB0dXJl
U291cmNlT3JFcnJvciBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6VmlkZW9GYWN0b3J5OjpjcmVh
dGVWaWRlb0NhcHR1cmVTb3VyY2UoY29uc3QgQ2FwdHVyZURldmljZSYgZGV2aWNlLCBTdHJpbmcm
JiBoYXNoU2FsdCwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCiB7CiAjaWYg
IUVOQUJMRShHUFVfUFJPQ0VTUykKICAgICBpZiAobV9zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNz
KQogICAgICAgICByZXR1cm4gQ2FwdHVyZVNvdXJjZU9yRXJyb3IgeyAiVmlkZW8gY2FwdHVyZSBp
biBHUFVQcm9jZXNzIGlzIG5vdCBpbXBsZW1lbnRlZCJfcyB9OwogI2VuZGlmCisgICAgaWYgKG1f
c2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcykKKyAgICAgICAgbV9tYW5hZ2VyLm1fcmVtb3RlQ2Fw
dHVyZVNhbXBsZU1hbmFnZXIuc2V0UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSgmV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5yZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5KCkpOwogCiAgICAgYm9vbCBzaG91bGRVc2VJT1N1cmZh
Y2UgPSBmYWxzZTsKICAgICByZXR1cm4gQ2FwdHVyZVNvdXJjZU9yRXJyb3IoUmVhbHRpbWVWaWRl
b1NvdXJjZTo6Y3JlYXRlKFJlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZShkZXZpY2Us
IGNvbnN0cmFpbnRzLCB7IH0sIFdURk1vdmUoaGFzaFNhbHQpLCBtX21hbmFnZXIsIG1fc2hvdWxk
Q2FwdHVyZUluR1BVUHJvY2VzcyksIHNob3VsZFVzZUlPU3VyZmFjZSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIu
aAppbmRleCA3YzU0YTJhMzBjZDVlYTdmZGJkYjk4NjMzYmE4NDBhYWVlYTBkYWU1Li5mNGFiOTQz
OWRhODYxMjQ4MWZmNGFiNWMzMGEzZmY2MmNlOTExM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaApAQCAt
ODUsNyArODUsNyBAQCBwcml2YXRlOgogICAgIGNsYXNzIFZpZGVvRmFjdG9yeSA6IHB1YmxpYyBX
ZWJDb3JlOjpWaWRlb0NhcHR1cmVGYWN0b3J5IHsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxp
Y2l0IFZpZGVvRmFjdG9yeShVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciYgbWFuYWdlcikgOiBtX21h
bmFnZXIobWFuYWdlcikgeyB9Ci0gICAgICAgIHZvaWQgc2V0U2hvdWxkQ2FwdHVyZUluR1BVUHJv
Y2Vzcyhib29sIHZhbHVlKSB7IG1fc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcyA9IHZhbHVlOyB9
CisgICAgICAgIHZvaWQgc2V0U2hvdWxkQ2FwdHVyZUluR1BVUHJvY2Vzcyhib29sKTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIFdlYkNvcmU6OkNhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZVZp
ZGVvQ2FwdHVyZVNvdXJjZShjb25zdCBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlJiwgU3RyaW5nJiYg
aGFzaFNhbHQsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHMqKSBmaW5hbDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451611</attachid>
            <date>2022-02-10 15:23:14 -0800</date>
            <delta_ts>2022-02-11 00:46:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236356-20220211002309.patch</filename>
            <type>text/plain</type>
            <size>130269</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBmZDk0YzE1ZWNkMDQ5N2IzMWFkMzBkYmQ4MDI1YzJkYTZjYWIyYmNjLi45YzU5
MjU0OTljNzE5OTk1NWYyNDBlYmZiYWFlYTViOGYzZTcyYjg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMi0wMi0xMCAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCByZW1vdGUgdmlkZW8g
ZnJhbWVzIGluIFdlYlJUQyB2aWRlbyBwaXBlbGluZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIGEgd2F5IGZvciBPYmpDRnJhbWVCdWZm
ZXIgdG8gbm90IGRpcmVjdGx5IG93biBhIENWUGl4ZWxCdWZmZXJSZWYgYnV0IGEgcG9pbnRlcgor
ICAgICAgICB0aGF0IGNhbiBiZSB1c2VkIHRvIGdldCBhIENWUGl4ZWxCdWZmZXJSZWYuIFRoaXMg
aXMgdXNlZCB0byBhbGxvdyByZW1vdGUgZnJhbWVzIHRvIGJlIHNlbnQgb3ZlciB0byBsaWJ3ZWJy
dGMuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cDoKKyAgICAg
ICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAgICAgICAgKiBDb25m
aWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nk
ay9XZWJLaXQvV2ViS2l0RGVjb2Rlci5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dl
YktpdC9XZWJLaXREZWNvZGVyLm1tOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXRVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VXRpbGl0aWVzLm1tOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0
aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2Rr
L29iamMvbmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5tbToKKwogMjAyMi0wMi0wMyAgTWlj
aGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQgcHJvamVj
dHMgaGF2ZSBpbmNvcnJlY3QgaW5zdGFsbCBuYW1lIGZvciB0aGUgZnJhbWV3b3JrcyBmb3IgQ2F0
YWx5c3QgYnVpbGRzIHdpdGggdGhlIHN5c3RlbSBjb250ZW50IHBhdGgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1
NTE3MmRiNDJjYjMxOTBhYzQ3YzY2YzM2NjczNjUyN2QzNGM0YjMwLi41NmU1M2Y2MTBhNzAwMDc4
ZDJlZDg5ZDMxMDU2NDNlMTNlNDI3NzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIw
MjItMDItMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFN1
cHBvcnQgcmVtb3RlIHZpZGVvIGZyYW1lcyBpbiBXZWJSVEMgdmlkZW8gcGlwZWxpbmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjM1NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IHRvIHJlY2Vp
dmUvc2VuZCByZW1vdGUgZnJhbWVzIGFzIHdlYnJ0YyBWaWRlb0ZyYW1lIGJ1ZmZlcnMuCisgICAg
ICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9u
cy9XZWJDb3JlLnhjY29uZmlnOgorICAgICAgICAqIHBsYXRmb3JtL01lZGlhU2FtcGxlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vVmlk
ZW9GcmFtZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZUNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHA6CisKIDIw
MjItMDItMTAgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBJbWFnZUJ1ZmZlcjo6Z2V0L3B1dFBpeGVsQnVmZmVyIHNob3VsZCBub3QgZ28gdGhyb3VnaCBE
aXNwbGF5TGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAwMDdjMmM0MWNkOTUzZDU3ZDllNDhmOTUwZTRlYWRiZDMw
NzM1Y2MwLi40YTk5ZTFiYjk1YmIxMDVmN2FiMjJmOTJlMDEwN2RjN2Q2MjljM2ZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDU3IEBACisyMDIyLTAyLTEwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlbW90ZSB2aWRlbyBmcmFtZXMgaW4gV2ViUlRD
IHZpZGVvIHBpcGVsaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzYzNTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBbGxvdyByZWNlaXZpbmcgcmVtb3RlIHNhbXBsZXMgZnJvbSBjYW1lcmEgb3IgSFcg
ZGVjb2RlcnMuCisgICAgICAgIEluIHRoYXQgY2FzZSwgd2UgY3JlYXRlIHJlbW90ZSB2aWRlbyBm
cmFtZXMgYW5kIGFsbG93IHBpcGluZyB0aGVtIHRvIG91ciBleGlzdGluZyBwaXBlbGluZS4KKyAg
ICAgICAgV2UgdXBkYXRlIE1lZGlhUmVjb3JkZXIgYW5kIExpYldlYlJUQyBIVyBlbmNvZGVycyB0
byBkZWFsIHdpdGggdGhpcy4KKyAgICAgICAgU2luY2Ugd2UgaGF2ZSBhIGNvZGUgcGF0aCB0aGF0
IHJlcXVpcmVzIGdldHRpbmcgYWNjZXNzIHRvIHRoZSByYXcgcGl4ZWxzLCB3ZSBpbnRyb2R1Y2Ug
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eQorICAgICAgICB0byBhbGxvdyBnZXR0aW5n
IHRoYXQgZGF0YSB0aHJvdWdoIHNoYXJlZCBtZW1vcnkgYXN5bmNocm9ub3VzbHkuCisgICAgICAg
IFJlbW90ZVZpZGVvRnJhbWVQcm94eSB3aWxsIHRoZW4gdXNlIGEgc2VtYXBob3JlIHRvIGJsb2Nr
IG9uIHRoZSBhc3luYyBJUEMgcmVzdWx0LiAKKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVBy
b2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW06CisgICAgICAgICogR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgICogR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKiBT
aGFyZWQvVGhyZWFkU2FmZU9iamVjdEhlYXAuaDoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHku
aDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5SWRlbnRpZmllci5oOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcFByb3h5LmNwcDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1Jl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkubWVzc2FnZXMu
aW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVy
ZVNhbXBsZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2Fw
dHVyZVNhbXBsZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNh
cHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29j
b2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29j
b2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaDoKKwogMjAyMi0wMi0xMCAgRWxsaW90dCBXaWxs
aWFtcyAgPGVtd0BhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIG9mIHVudmVyc2lvbmVkICdweXRo
b24nIGluIE1hYyBidWlsZHMgY2F1c2luZyBmYWlsdXJlcyBpbiAxMi4zCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5l
eHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRj
LmlPUy5leHAKaW5kZXggY2E1NDczYTYyYWQ5OGJmNmI0ZTBjZWI2MDI4ODU2NDVkOTBmN2QyMy4u
YmJiYzA1ODI3Y2Y3NGE5M2EwMDJlNTA3NDc4MjExMGZjZjVjZGRkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJy
dGMuaU9TLmV4cApAQCAtMjIzLDggKzIyMywxMSBAQCBfX1pONndlYnJ0YzIyY3JlYXRlTG9jYWxI
MjY1RGVjb2RlckVVMTNibG9ja19wb2ludGVyRnZQMTBfX0NWQnVmZmVyampFCiBfX1pONndlYnJ0
YzIxY3JlYXRlTG9jYWxWUDlEZWNvZGVyRVUxM2Jsb2NrX3BvaW50ZXJGdlAxMF9fQ1ZCdWZmZXJq
akUKIF9fWk42d2VicnRjMTlyZWxlYXNlTG9jYWxEZWNvZGVyRVB2CiBfX1pONndlYnJ0YzExZGVj
b2RlRnJhbWVFUHZqUEtobQotX19aTjZ3ZWJydGMyNHZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZUVQ
dmpQMTBfX0NWQnVmZmVyagorX19aTjZ3ZWJydGMyNHZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZUVQ
dmpqUDEwX19DVkJ1ZmZlcgorX19aTjZ3ZWJydGMyNHZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZUVQ
dmpqUzBfUEZQMTBfX0NWQnVmZmVyUzBfRVBGdlMwX0VpaQogX19aTjZ3ZWJydGMyNHNldFZpZGVv
RGVjb2RlckNhbGxiYWNrc0VQRlB2UktOU18xNFNkcFZpZGVvRm9ybWF0RUVQRmlTMF9FUEZpUzBf
alBLaG10dEVQRmlTMF9TMF9FCitfX1pONndlYnJ0YzI0dG9XZWJSVENWaWRlb0ZyYW1lQnVmZmVy
RVB2UEZQMTBfX0NWQnVmZmVyUzBfRVBGdlMwX0VpaQorX19aTjZ3ZWJydGMyNHZpZGVvRnJhbWVC
dWZmZXJQcm92aWRlckVSS05TXzEwVmlkZW9GcmFtZUUKIF9fWk42d2VicnRjMTlzZXREZWNvZGVy
RnJhbWVTaXplRVB2dHQKIF9fWk42d2VicnRjMThSdHBDb2RlY0NhcGFiaWxpdHlDMUV2CiBfX1pO
NndlYnJ0YzI0ZW5jb2RlclZpZGVvVGFza0NvbXBsZXRlRVB2TlNfMTRWaWRlb0NvZGVjVHlwZUVQ
S2htUktOU18yMldlYktpdEVuY29kZWRGcmFtZUluZm9FCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3Np
bS5leHAKaW5kZXggY2E1NDczYTYyYWQ5OGJmNmI0ZTBjZWI2MDI4ODU2NDVkOTBmN2QyMy4uYmJi
YzA1ODI3Y2Y3NGE5M2EwMDJlNTA3NDc4MjExMGZjZjVjZGRkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJy
dGMuaU9Tc2ltLmV4cApAQCAtMjIzLDggKzIyMywxMSBAQCBfX1pONndlYnJ0YzIyY3JlYXRlTG9j
YWxIMjY1RGVjb2RlckVVMTNibG9ja19wb2ludGVyRnZQMTBfX0NWQnVmZmVyampFCiBfX1pONndl
YnJ0YzIxY3JlYXRlTG9jYWxWUDlEZWNvZGVyRVUxM2Jsb2NrX3BvaW50ZXJGdlAxMF9fQ1ZCdWZm
ZXJqakUKIF9fWk42d2VicnRjMTlyZWxlYXNlTG9jYWxEZWNvZGVyRVB2CiBfX1pONndlYnJ0YzEx
ZGVjb2RlRnJhbWVFUHZqUEtobQotX19aTjZ3ZWJydGMyNHZpZGVvRGVjb2RlclRhc2tDb21wbGV0
ZUVQdmpQMTBfX0NWQnVmZmVyagorX19aTjZ3ZWJydGMyNHZpZGVvRGVjb2RlclRhc2tDb21wbGV0
ZUVQdmpqUDEwX19DVkJ1ZmZlcgorX19aTjZ3ZWJydGMyNHZpZGVvRGVjb2RlclRhc2tDb21wbGV0
ZUVQdmpqUzBfUEZQMTBfX0NWQnVmZmVyUzBfRVBGdlMwX0VpaQogX19aTjZ3ZWJydGMyNHNldFZp
ZGVvRGVjb2RlckNhbGxiYWNrc0VQRlB2UktOU18xNFNkcFZpZGVvRm9ybWF0RUVQRmlTMF9FUEZp
UzBfalBLaG10dEVQRmlTMF9TMF9FCitfX1pONndlYnJ0YzI0dG9XZWJSVENWaWRlb0ZyYW1lQnVm
ZmVyRVB2UEZQMTBfX0NWQnVmZmVyUzBfRVBGdlMwX0VpaQorX19aTjZ3ZWJydGMyNHZpZGVvRnJh
bWVCdWZmZXJQcm92aWRlckVSS05TXzEwVmlkZW9GcmFtZUUKIF9fWk42d2VicnRjMTlzZXREZWNv
ZGVyRnJhbWVTaXplRVB2dHQKIF9fWk42d2VicnRjMThSdHBDb2RlY0NhcGFiaWxpdHlDMUV2CiBf
X1pONndlYnJ0YzI0ZW5jb2RlclZpZGVvVGFza0NvbXBsZXRlRVB2TlNfMTRWaWRlb0NvZGVjVHlw
ZUVQS2htUktOU18yMldlYktpdEVuY29kZWRGcmFtZUluZm9FCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5l
eHAKaW5kZXggY2E1NDczYTYyYWQ5OGJmNmI0ZTBjZWI2MDI4ODU2NDVkOTBmN2QyMy4uMmE1N2Rj
YTVhZjM4ZWRmM2UzYTBlOWE0ZWZlZjY0YzhhNjNlOWU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFj
LmV4cApAQCAtMjIzLDcgKzIyMywxMCBAQCBfX1pONndlYnJ0YzIyY3JlYXRlTG9jYWxIMjY1RGVj
b2RlckVVMTNibG9ja19wb2ludGVyRnZQMTBfX0NWQnVmZmVyampFCiBfX1pONndlYnJ0YzIxY3Jl
YXRlTG9jYWxWUDlEZWNvZGVyRVUxM2Jsb2NrX3BvaW50ZXJGdlAxMF9fQ1ZCdWZmZXJqakUKIF9f
Wk42d2VicnRjMTlyZWxlYXNlTG9jYWxEZWNvZGVyRVB2CiBfX1pONndlYnJ0YzExZGVjb2RlRnJh
bWVFUHZqUEtobQotX19aTjZ3ZWJydGMyNHZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZUVQdmpQMTBf
X0NWQnVmZmVyagorX19aTjZ3ZWJydGMyNHZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZUVQdmpqUDEw
X19DVkJ1ZmZlcgorX19aTjZ3ZWJydGMyNHZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZUVQdmpqUzBf
UEZQMTBfX0NWQnVmZmVyUzBfRVBGdlMwX0VpaQorX19aTjZ3ZWJydGMyNHRvV2ViUlRDVmlkZW9G
cmFtZUJ1ZmZlckVQdlBGUDEwX19DVkJ1ZmZlclMwX0VQRnZTMF9FaWkKK19fWk42d2VicnRjMjR2
aWRlb0ZyYW1lQnVmZmVyUHJvdmlkZXJFUktOU18xMFZpZGVvRnJhbWVFCiBfX1pONndlYnJ0YzI0
c2V0VmlkZW9EZWNvZGVyQ2FsbGJhY2tzRVBGUHZSS05TXzE0U2RwVmlkZW9Gb3JtYXRFRVBGaVMw
X0VQRmlTMF9qUEtobXR0RVBGaVMwX1MwX0UKIF9fWk42d2VicnRjMTlzZXREZWNvZGVyRnJhbWVT
aXplRVB2dHQKIF9fWk42d2VicnRjMThSdHBDb2RlY0NhcGFiaWxpdHlDMUV2CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdERlY29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9XZWJLaXQvV2ViS2l0RGVjb2Rlci5oCmluZGV4IGI4MjNlZDMyY2IzM2ZiM2E2NzRiNDI5
ODQwOGMyYWI4ZjVjYjA2YWQuLmVjNzMyZjVjY2JiNGQ1YThmODk2NTY3Mzg1YjUxYzcxODZiNTc5
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9XZWJLaXQvV2ViS2l0RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2Rlci5oCkBAIC01NCw3ICs1
NCw4IEBAIHVzaW5nIFZpZGVvRGVjb2RlclJlZ2lzdGVyRGVjb2RlQ29tcGxldGVDYWxsYmFjayA9
IGludDMyX3QoKikoV2ViS2l0VmlkZW9EZWNvZGVyCiB2b2lkIHNldFZpZGVvRGVjb2RlckNhbGxi
YWNrcyhWaWRlb0RlY29kZXJDcmVhdGVDYWxsYmFjaywgVmlkZW9EZWNvZGVyUmVsZWFzZUNhbGxi
YWNrLCBWaWRlb0RlY29kZXJEZWNvZGVDYWxsYmFjaywgVmlkZW9EZWNvZGVyUmVnaXN0ZXJEZWNv
ZGVDb21wbGV0ZUNhbGxiYWNrKTsKIAogc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNv
ZGVyRmFjdG9yeT4gY3JlYXRlV2ViS2l0RGVjb2RlckZhY3RvcnkoV2ViS2l0SDI2NSwgV2ViS2l0
VlA5LCBXZWJLaXRWUDlWVEIpOwotdm9pZCB2aWRlb0RlY29kZXJUYXNrQ29tcGxldGUodm9pZCog
Y2FsbGJhY2ssIHVpbnQzMl90IHRpbWVTdGFtcCwgQ1ZQaXhlbEJ1ZmZlclJlZiwgdWludDMyX3Qg
dGltZVN0YW1wUlRQKTsKK3ZvaWQgdmlkZW9EZWNvZGVyVGFza0NvbXBsZXRlKHZvaWQqIGNhbGxi
YWNrLCB1aW50MzJfdCB0aW1lU3RhbXAsIHVpbnQzMl90IHRpbWVTdGFtcFJUUCwgQ1ZQaXhlbEJ1
ZmZlclJlZik7Cit2b2lkIHZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZSh2b2lkKiBjYWxsYmFjaywg
dWludDMyX3QgdGltZVN0YW1wLCB1aW50MzJfdCB0aW1lU3RhbXBSVFAsIHZvaWQqLCBHZXRCdWZm
ZXJDYWxsYmFjaywgUmVsZWFzZUJ1ZmZlckNhbGxiYWNrLCBpbnQgd2lkdGgsIGludCBoZWlnaHQp
OwogCiB1c2luZyBMb2NhbERlY29kZXIgPSB2b2lkKjsKIHVzaW5nIExvY2FsRGVjb2RlckNhbGxi
YWNrID0gdm9pZCAoXikoQ1ZQaXhlbEJ1ZmZlclJlZiwgdWludDMyX3QgdGltZVN0YW1wLCB1aW50
MzJfdCB0aW1lU3RhbXBOcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXIubW0gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXIu
bW0KaW5kZXggYWE0MTg4NDg2ZDFhYmM3MDE5NjQ1YThiNThkOWY3M2E1MDQ2ZWM1MS4uYjdlMDY3
ZjBjOWY0NWMzYTYzZTM0Njk5OWQ5ZjEwYzMwOWM3ZDU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXREZWNvZGVy
Lm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9X
ZWJLaXQvV2ViS2l0RGVjb2Rlci5tbQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCAic2RrL29i
amMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJIMjY0LmgiCiAjaW1wb3J0
ICJzZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2RlckgyNjUuaCIK
ICNpbXBvcnQgInNkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVy
VlRCVlA5LmgiCisjaW1wb3J0ICJzZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVy
LmgiCiAKIEBpbnRlcmZhY2UgV0tfUlRDTG9jYWxWaWRlb0gyNjRIMjY1VlA5RGVjb2RlciA6IE5T
T2JqZWN0CiAtIChpbnN0YW5jZXR5cGUpaW5pdEgyNjREZWNvZGVyV2l0aENhbGxiYWNrOih3ZWJy
dGM6OkxvY2FsRGVjb2RlckNhbGxiYWNrKWNhbGxiYWNrOwpAQCAtMTczLDcgKzE3NCw3IEBAIFJl
bW90ZVZpZGVvRGVjb2Rlcjo6flJlbW90ZVZpZGVvRGVjb2RlcigpCiAgICAgdmlkZW9EZWNvZGVy
Q2FsbGJhY2tzKCkucmVsZWFzZUNhbGxiYWNrKG1faW50ZXJuYWxEZWNvZGVyKTsKIH0KIAotdm9p
ZCB2aWRlb0RlY29kZXJUYXNrQ29tcGxldGUodm9pZCogY2FsbGJhY2ssIHVpbnQzMl90IHRpbWVT
dGFtcCwgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgdWludDMyX3QgdGltZVN0YW1wUlRQ
KQordm9pZCB2aWRlb0RlY29kZXJUYXNrQ29tcGxldGUodm9pZCogY2FsbGJhY2ssIHVpbnQzMl90
IHRpbWVTdGFtcCwgdWludDMyX3QgdGltZVN0YW1wUlRQLCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVs
QnVmZmVyKQogewogICAgIGF1dG8gdmlkZW9GcmFtZSA9IFZpZGVvRnJhbWU6OkJ1aWxkZXIoKS5z
ZXRfdmlkZW9fZnJhbWVfYnVmZmVyKHBpeGVsQnVmZmVyVG9GcmFtZShwaXhlbEJ1ZmZlcikpCiAg
ICAgICAgIC5zZXRfdGltZXN0YW1wX3J0cCh0aW1lU3RhbXBSVFApCkBAIC0xODUsNiArMTg2LDE4
IEBAIHZvaWQgdmlkZW9EZWNvZGVyVGFza0NvbXBsZXRlKHZvaWQqIGNhbGxiYWNrLCB1aW50MzJf
dCB0aW1lU3RhbXAsIENWUGl4ZWxCdWZmZXJSCiAgICAgc3RhdGljX2Nhc3Q8RGVjb2RlZEltYWdl
Q2FsbGJhY2sqPihjYWxsYmFjayktPkRlY29kZWQodmlkZW9GcmFtZSk7CiB9CiAKK3ZvaWQgdmlk
ZW9EZWNvZGVyVGFza0NvbXBsZXRlKHZvaWQqIGNhbGxiYWNrLCB1aW50MzJfdCB0aW1lU3RhbXAs
IHVpbnQzMl90IHRpbWVTdGFtcFJUUCwgdm9pZCogcG9pbnRlciwgR2V0QnVmZmVyQ2FsbGJhY2sg
Z2V0QnVmZmVyQ2FsbGJhY2ssIFJlbGVhc2VCdWZmZXJDYWxsYmFjayByZWxlYXNlQnVmZmVyQ2Fs
bGJhY2ssIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBhdXRvIHZpZGVvRnJhbWUgPSBW
aWRlb0ZyYW1lOjpCdWlsZGVyKCkuc2V0X3ZpZGVvX2ZyYW1lX2J1ZmZlcih0b1dlYlJUQ1ZpZGVv
RnJhbWVCdWZmZXIocG9pbnRlciwgZ2V0QnVmZmVyQ2FsbGJhY2ssIHJlbGVhc2VCdWZmZXJDYWxs
YmFjaywgd2lkdGgsIGhlaWdodCkpCisgICAgICAgIC5zZXRfdGltZXN0YW1wX3J0cCh0aW1lU3Rh
bXBSVFApCisgICAgICAgIC5zZXRfdGltZXN0YW1wX21zKDApCisgICAgICAgIC5zZXRfcm90YXRp
b24oKFZpZGVvUm90YXRpb24pUlRDVmlkZW9Sb3RhdGlvbl8wKQorICAgICAgICAuYnVpbGQoKTsK
KyAgICB2aWRlb0ZyYW1lLnNldF90aW1lc3RhbXAodGltZVN0YW1wKTsKKworICAgIHN0YXRpY19j
YXN0PERlY29kZWRJbWFnZUNhbGxiYWNrKj4oY2FsbGJhY2spLT5EZWNvZGVkKHZpZGVvRnJhbWUp
OworfQorCiBib29sIFJlbW90ZVZpZGVvRGVjb2Rlcjo6Q29uZmlndXJlKGNvbnN0IFNldHRpbmdz
JikKIHsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0
aWxpdGllcy5oCmluZGV4IGEyM2ZhYTZlZDU3ZGY3YzMyMmM2NzBiNzczNWNhYjgzYzY2MTU5MzQu
LjJlZjhhMWU5MTUzODYxMWVmZTVhZjczNGY4MGNkN2E5YmE0ZjUzYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0
VXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaApAQCAtNTIsNCArNTIsOCBAQCBDVlBpeGVs
QnVmZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmKSBDRl9SRVRV
Uk5TX1JFVEFJTkVEOwogcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZl
cj4gcGl4ZWxCdWZmZXJUb0ZyYW1lKENWUGl4ZWxCdWZmZXJSZWYpOwogYm9vbCBjb3B5VmlkZW9G
cmFtZShjb25zdCBWaWRlb0ZyYW1lJiwgdWludDhfdCopOwogCit0eXBlZGVmIENWUGl4ZWxCdWZm
ZXJSZWYgKCpHZXRCdWZmZXJDYWxsYmFjaykodm9pZCopOwordHlwZWRlZiB2b2lkICgqUmVsZWFz
ZUJ1ZmZlckNhbGxiYWNrKSh2b2lkKik7CitydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRl
b0ZyYW1lQnVmZmVyPiB0b1dlYlJUQ1ZpZGVvRnJhbWVCdWZmZXIodm9pZCosIEdldEJ1ZmZlckNh
bGxiYWNrLCBSZWxlYXNlQnVmZmVyQ2FsbGJhY2ssIGludCB3aWR0aCwgaW50IGhlaWdodCk7Cit2
b2lkKiB2aWRlb0ZyYW1lQnVmZmVyUHJvdmlkZXIoY29uc3QgVmlkZW9GcmFtZSYpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dl
YktpdC9XZWJLaXRVdGlsaXRpZXMubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbQppbmRleCA3ZjZmYmIxMWU3
NjkzYWQ2NmRmOTI0YjkzZjRkMjhlN2VlODllMGE4Li5jZmE3OTZjNWMzYjBkYWE1OTRjMWNiMTY2
NDdkMzE1OTY0NWU5ZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbQorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxp
dGllcy5tbQpAQCAtNTIsNiArNTIsMjEgQEAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6Vmlk
ZW9GcmFtZUJ1ZmZlcj4gcGl4ZWxCdWZmZXJUb0ZyYW1lKENWUGl4ZWxCdWZmZXJSZWYKICAgICBy
ZXR1cm4gbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxPYmpDRnJhbWVCdWZmZXI+KGZyYW1lQnVm
ZmVyKTsKIH0KIAorcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4g
dG9XZWJSVENWaWRlb0ZyYW1lQnVmZmVyKHZvaWQqIHBvaW50ZXIsIEdldEJ1ZmZlckNhbGxiYWNr
IGdldEJ1ZmZlckNhbGxiYWNrLCBSZWxlYXNlQnVmZmVyQ2FsbGJhY2sgcmVsZWFzZUJ1ZmZlckNh
bGxiYWNrLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgcmV0dXJuIG5ldyBydGM6OlJl
ZkNvdW50ZWRPYmplY3Q8T2JqQ0ZyYW1lQnVmZmVyPihPYmpDRnJhbWVCdWZmZXI6OkJ1ZmZlclBy
b3ZpZGVyIHsgcG9pbnRlciwgZ2V0QnVmZmVyQ2FsbGJhY2ssIHJlbGVhc2VCdWZmZXJDYWxsYmFj
ayB9LCB3aWR0aCwgaGVpZ2h0KTsKK30KKwordm9pZCogdmlkZW9GcmFtZUJ1ZmZlclByb3ZpZGVy
KGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lKQoreworICAgIGF1dG8gYnVmZmVyID0gZnJhbWUudmlk
ZW9fZnJhbWVfYnVmZmVyKCk7CisgICAgaWYgKGJ1ZmZlci0+dHlwZSgpICE9IFZpZGVvRnJhbWVC
dWZmZXI6OlR5cGU6OmtOYXRpdmUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PE9iakNGcmFtZUJ1ZmZlcio+KGJ1ZmZlci5nZXQoKSktPmZyYW1lX2J1
ZmZlcl9wcm92aWRlcigpOworCit9CisKIHN0YXRpYyBib29sIENvcHlWaWRlb0ZyYW1lVG9QaXhl
bEJ1ZmZlcihjb25zdCB3ZWJydGM6Okk0MjBCdWZmZXJJbnRlcmZhY2UqIGZyYW1lLCBDVlBpeGVs
QnVmZmVyUmVmIHBpeGVsX2J1ZmZlcikgewogICAgIFJUQ19EQ0hFQ0socGl4ZWxfYnVmZmVyKTsK
ICAgICBSVENfRENIRUNLKENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxfYnVm
ZmVyKSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyRnVsbFJhbmdlIHx8
IENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxfYnVmZmVyKSA9PSBrQ1ZQaXhl
bEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyVmlkZW9SYW5nZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUv
c3JjL29iamNfZnJhbWVfYnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVyLmgKaW5kZXgg
Zjk0MWRhZDZlNGZlNTY5MDBlY2E5MDUwYzBhODM0ZWRiODU1ZjY4MS4uM2QyZWJkNzc5NjNhYmNh
NDRjY2VmZTA3M2YxMTFiZDViNTFlZDI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1
ZmZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL25hdGl2ZS9zcmMvb2JqY19mcmFtZV9idWZmZXIuaApAQCAtMTQsMTYgKzE0LDI3IEBA
CiAjaW1wb3J0IDxDb3JlVmlkZW8vQ29yZVZpZGVvLmg+CiAKICNpbmNsdWRlICJjb21tb25fdmlk
ZW8vaW5jbHVkZS92aWRlb19mcmFtZV9idWZmZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeW5j
aHJvbml6YXRpb24vbXV0ZXguaCIKIAogQHByb3RvY29sIFJUQ1ZpZGVvRnJhbWVCdWZmZXI7CiAK
IG5hbWVzcGFjZSB3ZWJydGMgewogCit0eXBlZGVmIENWUGl4ZWxCdWZmZXJSZWYgKCpHZXRCdWZm
ZXJDYWxsYmFjaykodm9pZCopOwordHlwZWRlZiB2b2lkICgqUmVsZWFzZUJ1ZmZlckNhbGxiYWNr
KSh2b2lkKik7CisKIGNsYXNzIE9iakNGcmFtZUJ1ZmZlciA6IHB1YmxpYyBWaWRlb0ZyYW1lQnVm
ZmVyIHsKICBwdWJsaWM6CiAgIGV4cGxpY2l0IE9iakNGcmFtZUJ1ZmZlcihpZDxSVENWaWRlb0Zy
YW1lQnVmZmVyPik7CiAgIH5PYmpDRnJhbWVCdWZmZXIoKSBvdmVycmlkZTsKIAorICBzdHJ1Y3Qg
QnVmZmVyUHJvdmlkZXIgeworICAgIHZvaWQgKnBvaW50ZXIgeyBudWxscHRyIH07CisgICAgR2V0
QnVmZmVyQ2FsbGJhY2sgZ2V0QnVmZmVyIHsgbnVsbHB0ciB9OworICAgIFJlbGVhc2VCdWZmZXJD
YWxsYmFjayByZWxlYXNlQnVmZmVyIHsgbnVsbHB0ciB9OworICB9OworICBPYmpDRnJhbWVCdWZm
ZXIoQnVmZmVyUHJvdmlkZXIsIGludCB3aWR0aCwgaW50IGhlaWdodCk7CisKICAgVHlwZSB0eXBl
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgaW50IHdpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0z
MiwxMSArNDMsMTQgQEAgY2xhc3MgT2JqQ0ZyYW1lQnVmZmVyIDogcHVibGljIFZpZGVvRnJhbWVC
dWZmZXIgewogICBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gVG9JNDIw
KCkgb3ZlcnJpZGU7CiAKICAgaWQ8UlRDVmlkZW9GcmFtZUJ1ZmZlcj4gd3JhcHBlZF9mcmFtZV9i
dWZmZXIoKSBjb25zdDsKKyAgdm9pZCogZnJhbWVfYnVmZmVyX3Byb3ZpZGVyKCkgeyByZXR1cm4g
ZnJhbWVfYnVmZmVyX3Byb3ZpZGVyXy5wb2ludGVyOyB9CiAKICBwcml2YXRlOgogICBpZDxSVENW
aWRlb0ZyYW1lQnVmZmVyPiBmcmFtZV9idWZmZXJfOworICBCdWZmZXJQcm92aWRlciBmcmFtZV9i
dWZmZXJfcHJvdmlkZXJfOwogICBpbnQgd2lkdGhfOwogICBpbnQgaGVpZ2h0XzsKKyAgbXV0YWJs
ZSB3ZWJydGM6Ok11dGV4IG11dGV4XzsKIH07CiAKIGlkPFJUQ1ZpZGVvRnJhbWVCdWZmZXI+IFRv
T2JqQ1ZpZGVvRnJhbWVCdWZmZXIoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVy
Lm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
bmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5tbQppbmRleCBhM2Q5YmE4MTJkYTU5Zjg1NzJh
NTMzYWQ2MmM1MmFiMGFjMGExOGMyLi4yZjU2YWNiMjk0M2JkNGM0ZDdkZmI1ZGIwMjFhMDA5MTgy
ODA3YTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVyLm1tCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2ZS9zcmMv
b2JqY19mcmFtZV9idWZmZXIubW0KQEAgLTEyLDYgKzEyLDcgQEAKIAogI2ltcG9ydCAiYmFzZS9S
VENWaWRlb0ZyYW1lQnVmZmVyLmgiCiAjaW1wb3J0ICJzZGsvb2JqYy9hcGkvdmlkZW9fZnJhbWVf
YnVmZmVyL1JUQ05hdGl2ZUk0MjBCdWZmZXIrUHJpdmF0ZS5oIgorI2ltcG9ydCAic2RrL29iamMv
Y29tcG9uZW50cy92aWRlb19mcmFtZV9idWZmZXIvUlRDQ1ZQaXhlbEJ1ZmZlci5oIgogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKIApAQCAtNTUsMTAgKzU2LDE1IEBAIGNsYXNzIE9iakNJNDIwRnJhbWVC
dWZmZXIgOiBwdWJsaWMgSTQyMEJ1ZmZlckludGVyZmFjZSB7CiBPYmpDRnJhbWVCdWZmZXI6Ok9i
akNGcmFtZUJ1ZmZlcihpZDxSVENWaWRlb0ZyYW1lQnVmZmVyPiBmcmFtZV9idWZmZXIpCiAgICAg
OiBmcmFtZV9idWZmZXJfKGZyYW1lX2J1ZmZlciksIHdpZHRoXyhmcmFtZV9idWZmZXIud2lkdGgp
LCBoZWlnaHRfKGZyYW1lX2J1ZmZlci5oZWlnaHQpIHt9CiAKK09iakNGcmFtZUJ1ZmZlcjo6T2Jq
Q0ZyYW1lQnVmZmVyKEJ1ZmZlclByb3ZpZGVyIHByb3ZpZGVyLCBpbnQgd2lkdGgsIGludCBoZWln
aHQpCisgICAgOiBmcmFtZV9idWZmZXJfcHJvdmlkZXJfKHByb3ZpZGVyKSwgd2lkdGhfKHdpZHRo
KSwgaGVpZ2h0XyhoZWlnaHQpIHsgfQorCiBPYmpDRnJhbWVCdWZmZXI6On5PYmpDRnJhbWVCdWZm
ZXIoKSB7CiAjaWYgZGVmaW5lZChXRUJSVENfV0VCS0lUX0JVSUxEKQogICBbZnJhbWVfYnVmZmVy
XyBjbG9zZV07CiAjZW5kaWYKKyAgaWYgKGZyYW1lX2J1ZmZlcl9wcm92aWRlcl8ucmVsZWFzZUJ1
ZmZlcikKKyAgICBmcmFtZV9idWZmZXJfcHJvdmlkZXJfLnJlbGVhc2VCdWZmZXIoZnJhbWVfYnVm
ZmVyX3Byb3ZpZGVyXy5wb2ludGVyKTsKIH0KIAogVmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZSBPYmpD
RnJhbWVCdWZmZXI6OnR5cGUoKSBjb25zdCB7CkBAIC03NSwxMiArODEsMjEgQEAgaW50IE9iakNG
cmFtZUJ1ZmZlcjo6aGVpZ2h0KCkgY29uc3QgewogCiBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1
ZmZlckludGVyZmFjZT4gT2JqQ0ZyYW1lQnVmZmVyOjpUb0k0MjAoKSB7CiAgIHJ0Yzo6c2NvcGVk
X3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiBidWZmZXIgPQotICAgICAgbmV3IHJ0Yzo6UmVm
Q291bnRlZE9iamVjdDxPYmpDSTQyMEZyYW1lQnVmZmVyPihbZnJhbWVfYnVmZmVyXyB0b0k0MjBd
KTsKKyAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8T2JqQ0k0MjBGcmFtZUJ1ZmZlcj4o
W3dyYXBwZWRfZnJhbWVfYnVmZmVyKCkgdG9JNDIwXSk7CiAKICAgcmV0dXJuIGJ1ZmZlcjsKIH0K
IAogaWQ8UlRDVmlkZW9GcmFtZUJ1ZmZlcj4gT2JqQ0ZyYW1lQnVmZmVyOjp3cmFwcGVkX2ZyYW1l
X2J1ZmZlcigpIGNvbnN0IHsKKyAgaWYgKGZyYW1lX2J1ZmZlcl8pCisgICAgcmV0dXJuIGZyYW1l
X2J1ZmZlcl87CisKKyAgeworICAgIHdlYnJ0Yzo6TXV0ZXhMb2NrIGxvY2soJm11dGV4Xyk7Cisg
ICAgaWYgKCFmcmFtZV9idWZmZXJfICYmIGZyYW1lX2J1ZmZlcl9wcm92aWRlcl8uZ2V0QnVmZmVy
KQorICAgICAgY29uc3RfY2FzdDxPYmpDRnJhbWVCdWZmZXIqPih0aGlzKS0+ZnJhbWVfYnVmZmVy
XyA9IFtbUlRDQ1ZQaXhlbEJ1ZmZlciBhbGxvY10gaW5pdFdpdGhQaXhlbEJ1ZmZlcjpmcmFtZV9i
dWZmZXJfcHJvdmlkZXJfLmdldEJ1ZmZlcihmcmFtZV9idWZmZXJfcHJvdmlkZXJfLnBvaW50ZXIp
XTsKKyAgfQorCiAgIHJldHVybiBmcmFtZV9idWZmZXJfOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTWVkaWFTYW1wbGUuaAppbmRleCBiNGZlNzE2NTc5ZmY4ZTdmYzM0MGQ4N2NjODkyZjFiYmI0
YjBkOGQ0Li5iMDY1MDRmNTdlZTkzNmI4ZTE5ODg3MWYzNTcyNzY1MzUzMDRhZmQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKIHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxl
QnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKK3R5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNW
UGl4ZWxCdWZmZXJSZWY7CiB0eXBlZGVmIHN0cnVjdCBfR3N0U2FtcGxlIEdzdFNhbXBsZTsKIHR5
cGVkZWYgc3RydWN0IE9wYXF1ZU1UUGx1Z2luQnl0ZVNvdXJjZSAqTVRQbHVnaW5CeXRlU291cmNl
UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3Qgb3BhcXVlQ01Gb3JtYXREZXNjcmlwdGlvbiAqQ01G
b3JtYXREZXNjcmlwdGlvblJlZjsKQEAgLTExMCw2ICsxMTEsOSBAQCBwdWJsaWM6CiAjaWYgZGVm
aW5lZChFTkFCTEVfVklERU8pICYmIEVOQUJMRV9WSURFTwogICAgIHZpcnR1YWwgc3RkOjpvcHRp
b25hbDxNZWRpYVNhbXBsZVZpZGVvRnJhbWU+IHZpZGVvRnJhbWUoKSBjb25zdCB7IHJldHVybiBz
dGQ6Om51bGxvcHQ7IH07CiAjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2aXJ0dWFs
IENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9
OworI2VuZGlmCiAKICAgICBib29sIGlzU3luYygpIGNvbnN0IHsgcmV0dXJuIGZsYWdzKCkgJiBJ
c1N5bmM7IH0KICAgICBib29sIGlzTm9uRGlzcGxheWluZygpIGNvbnN0IHsgcmV0dXJuIGZsYWdz
KCkgJiBJc05vbkRpc3BsYXlpbmc7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ZpZGVvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5j
cHAKaW5kZXggMzRlODE2ZWNkMDhjYjk1NTI0ZDZhYTJkNzFhZmNiOWYwYjkxNzg2Zi4uZjA3Njli
YTVlNTRhODgwYmU2MzkwOWE5Y2RhMDMyODdhMzdkM2NmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVmlkZW9GcmFtZS5jcHAKQEAgLTU4LDEyICs1OCw2IEBAIHNpemVfdCBWaWRlb0ZyYW1lOjpz
aXplSW5CeXRlcygpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLVdlYkNvcmU6OkZsb2F0U2l6
ZSBWaWRlb0ZyYW1lOjpwcmVzZW50YXRpb25TaXplKCkgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4geyB9OwotfQotCiB2b2lkIFZpZGVvRnJhbWU6Om9mZnNl
dFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5oCmluZGV4IGIyZDk1MDEwZDM2ZWI2
MmI5ZWFlMWI5OTgzN2I4NDc3MTQxZTA1ZmMuLmI2MzFmZDEzZTIyZTMxMjI2NjUwMDE0YmFmNzhk
ZWE5MGNhYTZmYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJh
bWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmgKQEAgLTQ4LDcg
KzQ4LDYgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVRpbWUgZHVyYXRpb24o
KSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBBdG9tU3RyaW5nIHRyYWNrSUQoKSBj
b25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25z
dCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCBXZWJDb3JlOjpGbG9hdFNpemUgcHJlc2VudGF0
aW9uU2l6ZSgpIGNvbnN0IGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb2Zmc2V0VGlt
ZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0VGltZXN0YW1wcyhjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKSBmaW5h
bDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRGl2aXNhYmxlKCkgY29uc3QgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1Nh
bXBsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1w
bGUuaAppbmRleCBjZDEwZDljMDVjYjhhMWQ4NmU2NDNkNWEzZmFhYWU1Yzc0ZjA4Nzk5Li5mMWRk
OTE5MDFmODQ5ZTA5YTI0NjY0OWZjZGRhNzhkMGRkYzlhY2U0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKQEAgLTU0LDYg
KzU0LDcgQEAgcHVibGljOgogICAgIENWUGl4ZWxCdWZmZXJSZWYgaW1hZ2VCdWZmZXIoKSBjb25z
dCB7IHJldHVybiBtX2ltYWdlQnVmZmVyLmdldCgpOyB9CiAKICAgICB2b2lkIHNldE93bmVyc2hp
cElkZW50aXR5KGNvbnN0IFByb2Nlc3NJZGVudGl0eSYpOworICAgIHZvaWQgY2xlYXJJT1N1cmZh
Y2UoKSB7IG1faW9TdXJmYWNlID0gbnVsbHB0cjsgfQogCiAgICAgY29uc3QgTWVkaWFUaW1lJiB0
aW1lKCkgY29uc3QgeyByZXR1cm4gbV90aW1lOyB9CiAgICAgdWludDMyX3QgdmlkZW9Gb3JtYXQo
KSBjb25zdCB7IHJldHVybiBtX3ZpZGVvRm9ybWF0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
bW0KaW5kZXggNTEyNjk2YTEzYWM3MmFjODhmODAwODY1NjJlMzExMDQ1YzQxYWM2NS4uNDJmZDE3
NDg3ZWE2Y2QxNzEwNTA1MDVmZjVmM2ZmNWVkZmJlN2UxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQy5tbQpAQCAtMjMwLDEwICsyMzAsOSBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c3VwcG9ydHNUeXBlKGNvbgogCiBz
dGF0aWMgaW5saW5lIENHQWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJhbnNmb3JtYXRpb25NYXRyaXgo
TWVkaWFTYW1wbGUmIHNhbXBsZSkKIHsKLSAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZm
ZXIgPSBzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuY21TYW1wbGVCdWZmZXI7Ci0gICAg
Q1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJS
ZWY+KFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihzYW1wbGVCdWZmZXIpKTsKLSAg
ICBzaXplX3Qgd2lkdGggPSBDVlBpeGVsQnVmZmVyR2V0V2lkdGgocGl4ZWxCdWZmZXIpOwotICAg
IHNpemVfdCBoZWlnaHQgPSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KHBpeGVsQnVmZmVyKTsKKyAg
ICBhdXRvIHNpemUgPSBzYW1wbGUucHJlc2VudGF0aW9uU2l6ZSgpOworICAgIHNpemVfdCB3aWR0
aCA9IHN0YXRpY19jYXN0PHNpemVfdD4oc2l6ZS53aWR0aCgpKTsKKyAgICBzaXplX3QgaGVpZ2h0
ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplLmhlaWdodCgpKTsKICAgICBpZiAoIXdpZHRoIHx8
ICFoZWlnaHQpCiAgICAgICAgIHJldHVybiBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5OwogCkBA
IC05ODcsMTAgKzk4Niw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSgpCiAgICAgaWYgKG1faW1hZ2VQYWludGVyLmNn
SW1hZ2UgfHwgIW1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQogICAgICAgICByZXR1cm47CiAK
LSAgICAvLyBGSVhNRTogRG9lcyBub3QgY3VycmVudGx5IHN1cHBvcnQgUmVtb3RlVmlkZW9GcmFt
ZVByb3h5LgotICAgIGlmICghaXM8TWVkaWFTYW1wbGVBVkZPYmpDPigqbV9pbWFnZVBhaW50ZXIu
bWVkaWFTYW1wbGUpKQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAoIW1faW1hZ2VQYWludGVy
LnBpeGVsQnVmZmVyQ29uZm9ybWVyKQogICAgICAgICBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZl
ckNvbmZvcm1lciA9IG1ha2VVbmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdl
IENGRGljdGlvbmFyeVJlZilAeyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBp
eGVsRm9ybWF0VHlwZUtleTogQChrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBKSB9KTsKIApAQCAt
OTk4LDggKzk5Myw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Ojp1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSgpCiAgICAgaWYgKCFtX2ltYWdlUGFpbnRlci5waXhl
bEJ1ZmZlckNvbmZvcm1lcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBwaXhlbEJ1ZmZl
ciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRJ
bWFnZUJ1ZmZlcihtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZS0+cGxhdGZvcm1TYW1wbGUoKS5z
YW1wbGUuY21TYW1wbGVCdWZmZXIpKTsKLSAgICBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID0gTmF0
aXZlSW1hZ2U6OmNyZWF0ZShtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3Jl
YXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpKTsKKyAgICBpZiAoYXV0byBwaXhl
bEJ1ZmZlciA9IG1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlLT5waXhlbEJ1ZmZlcigpKQorICAg
ICAgICBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2ltYWdl
UGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIo
cGl4ZWxCdWZmZXIpKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTYW1wbGVBVkZPYmpDLmgKaW5kZXggN2JlNzM1MWU1YmFhN2QyMWU2M2ZjNDk5YTI3MTIzNWVj
ZjRmYjliMS4uNWI0ZjdmMDBkYjMzYTViY2RmNjU2YzYwMjJmMTQ4MzRmNDFjNTkwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFTYW1wbGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKQEAgLTcyLDYgKzcyLDcg
QEAgcHVibGljOgogICAgIGJvb2wgdmlkZW9NaXJyb3JlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fbWlycm9yZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB1aW50MzJfdCB2aWRlb1BpeGVs
Rm9ybWF0KCkgY29uc3QgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxN
ZWRpYVNhbXBsZVZpZGVvRnJhbWU+IHZpZGVvRnJhbWUoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKCkgY29uc3QgZmluYWw7CiAg
ICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9zYW1w
bGUuZ2V0KCk7IH0KIAogICAgIGJvb2wgaXNIb21vZ2VuZW91cygpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTYW1wbGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCmluZGV4IGEzYTMxNTZiZmJhMGNh
Nzk5MWY2NmRkM2VmMjRjMzI0NGQwZTNkZjguLjUwMDQzNDBmZWY0OWU0MmViMmZkZjgzNGZmYzI3
OTE1M2Y1ODE0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9i
akMubW0KQEAgLTU1Niw0ICs1NTYsOSBAQCBzdGQ6Om9wdGlvbmFsPE1lZGlhU2FtcGxlOjpCeXRl
UmFuZ2U+IE1lZGlhU2FtcGxlQVZGT2JqQzo6Ynl0ZVJhbmdlRm9yQXR0YWNobWVudAogICAgIHJl
dHVybiB7IHsgQ2hlY2tlZFNpemUoYnl0ZU9mZnNldCksIHNpbmdsZVNpemVFbnRyeSB9IH07CiB9
CiAKK0NWUGl4ZWxCdWZmZXJSZWYgTWVkaWFTYW1wbGVBVkZPYmpDOjpwaXhlbEJ1ZmZlcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01T
YW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihtX3NhbXBsZS5nZXQoKSkpOworfQorCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVv
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
VmlkZW9Tb3VyY2UuY3BwCmluZGV4IDY4MjczZWJmN2YwM2E4YTkyNjhjMGQ4OGY1MTFlM2Y2YzI5
MzUwOTIuLjM5ZTNlN2UyM2VhMWYxNmQ2MWEzMjA2NDM1YmFhNzUyZDlhNmQ2YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
VmlkZW9Tb3VyY2UuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkK
ICNpbmNsdWRlICJJbWFnZVRyYW5zZmVyU2Vzc2lvblZULmgiCisjaW5jbHVkZSAiTWVkaWFTYW1w
bGVBVkZPYmpDLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTY5LDYgKzE3
MCwxNCBAQCB2b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnNvdXJjZVN0b3BwZWQoKQogI2lmIFBM
QVRGT1JNKENPQ09BKQogUmVmUHRyPE1lZGlhU2FtcGxlPiBSZWFsdGltZVZpZGVvU291cmNlOjph
ZGFwdFZpZGVvU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiB7CisgICAgaWYgKHNhbXBsZS5w
bGF0Zm9ybVNhbXBsZSgpLnR5cGUgIT0gUGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlw
ZSkgeworICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBtb3JlIGVmZmljaWVudGx5IGRvd25zYW1w
bGluZyBvZiByZW1vdGUgdmlkZW8gZnJhbWVzIGJ5IGRvd25zYW1wbGluZyBpbiBHUFVQcm9jZXNz
LgorICAgICAgICBhdXRvIG5ld1NhbXBsZSA9IE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1h
Z2VTYW1wbGUoc2FtcGxlLnBpeGVsQnVmZmVyKCksIHNhbXBsZS52aWRlb1JvdGF0aW9uKCksIHNh
bXBsZS52aWRlb01pcnJvcmVkKCksIHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksIHsgfSk7Cisg
ICAgICAgIGlmICghbmV3U2FtcGxlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHJldHVybiBhZGFwdFZpZGVvU2FtcGxlKCpuZXdTYW1wbGUpOworICAgIH0KKyAgICBBU1NF
UlQoc2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBQbGF0Zm9ybVNhbXBsZTo6Q01TYW1w
bGVCdWZmZXJUeXBlKTsKICAgICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24gfHwgbV9pbWFn
ZVRyYW5zZmVyU2Vzc2lvbi0+cGl4ZWxGb3JtYXQoKSAhPSBzYW1wbGUudmlkZW9QaXhlbEZvcm1h
dCgpKQogICAgICAgICBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uID0gSW1hZ2VUcmFuc2ZlclNlc3Np
b25WVDo6Y3JlYXRlKHNhbXBsZS52aWRlb1BpeGVsRm9ybWF0KCksIG1fc2hvdWxkVXNlSU9TdXJm
YWNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2Eu
aAppbmRleCBkMGZlOGUwNjU4MjJmODA3ZWJiNGQ2NWEzMDdiNGJlYzBiOGZhYTYyLi42NDY2ZDYx
OGRlNzQ5ZTVjNWY5MjYxZDI1MmRkOWIwYzE5ZTFhNTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNl
Q29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EuaApAQCAtMjksNiArMjksNyBAQAogCiAjaWYg
VVNFKExJQldFQlJUQykKIAorI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5jbHVkZSAiUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgiCiAKIHVzaW5nIENNU2FtcGxlQnVmZmVyUmVmID0g
c3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyKjsKQEAgLTQ5LDYgKzUwLDggQEAgcHJpdmF0ZToK
ICAgICBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYShydGM6OnNjb3BlZF9yZWZwdHI8
d2VicnRjOjpWaWRlb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7CiAgICAgUmV0YWluUHRy
PENWUGl4ZWxCdWZmZXJSZWY+IHBpeGVsQnVmZmVyRnJvbVZpZGVvRnJhbWUoY29uc3Qgd2VicnRj
OjpWaWRlb0ZyYW1lJik7CiAgICAgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgcGl4ZWxCdWZmZXJQb29s
KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgd2VicnRjOjpCdWZmZXJUeXBlKTsKKyAgICBS
ZWZQdHI8TWVkaWFTYW1wbGU+IHRvVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUm
LCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbik7CisgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBj
cmVhdGVNZWRpYVNhbXBsZUZyb21DVlBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYsIE1lZGlh
U2FtcGxlOjpWaWRlb1JvdGF0aW9uLCBpbnQ2NF90KTsKIAogICAgIC8vIHJ0Yzo6VmlkZW9TaW5r
SW50ZXJmYWNlCiAgICAgdm9pZCBPbkZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1t
CmluZGV4IDUzN2VhMGI1MTEzMWNjYzFjODVkMGIwM2VjM2E3NDJjYjYyNzk0NmQuLmExMDQ3YTNl
ODJiOGMyMTdlNGQwNTM2YmQ1NGIxYTcwZWFhMTdjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KQEAgLTExOCw3ICsxMTgsMzMgQEAgQ1ZQ
aXhlbEJ1ZmZlclBvb2xSZWYgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OnBpeGVs
QnVmZmVyUG9vbChzaXplX3Qgd2kKICAgICByZXR1cm4gbV9waXhlbEJ1ZmZlclBvb2wuZ2V0KCk7
CiB9CiAKLVJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBSZWFsdGltZUluY29taW5nVmlkZW9T
b3VyY2VDb2NvYTo6cGl4ZWxCdWZmZXJGcm9tVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVv
RnJhbWUmIGZyYW1lKQorUmVmUHRyPE1lZGlhU2FtcGxlPiBSZWFsdGltZUluY29taW5nVmlkZW9T
b3VyY2VDb2NvYTo6Y3JlYXRlTWVkaWFTYW1wbGVGcm9tQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVm
ZmVyUmVmIHBpeGVsQnVmZmVyLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwg
aW50NjRfdCB0aW1lU3RhbXApCit7CisgICAgQ01TYW1wbGVUaW1pbmdJbmZvIHRpbWluZ0luZm87
CisgICAgdGltaW5nSW5mby5wcmVzZW50YXRpb25UaW1lU3RhbXAgPSBQQUw6OkNNVGltZU1ha2Uo
dGltZVN0YW1wLCAxMDAwMDAwKTsKKyAgICB0aW1pbmdJbmZvLmRlY29kZVRpbWVTdGFtcCA9IFBB
TDo6a0NNVGltZUludmFsaWQ7CisgICAgdGltaW5nSW5mby5kdXJhdGlvbiA9IFBBTDo6a0NNVGlt
ZUludmFsaWQ7CisKKyAgICBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3Jp
cHRpb247CisgICAgT1NTdGF0dXMgb3N0YXR1cyA9IFBBTDo6Q01WaWRlb0Zvcm1hdERlc2NyaXB0
aW9uQ3JlYXRlRm9ySW1hZ2VCdWZmZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKENWSW1hZ2VCdWZm
ZXJSZWYpcGl4ZWxCdWZmZXIsICZmb3JtYXREZXNjcmlwdGlvbik7CisgICAgaWYgKG9zdGF0dXMg
IT0gbm9FcnIpIHsKKyAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElG
SUVSLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uIHdpdGgg
ZXJyb3IgIiwgc3RhdGljX2Nhc3Q8aW50Pihvc3RhdHVzKSk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKworICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlcjsKKyAgICBv
c3RhdHVzID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckNyZWF0ZVJlYWR5V2l0aEltYWdlQnVmZmVyKGtD
RkFsbG9jYXRvckRlZmF1bHQsIChDVkltYWdlQnVmZmVyUmVmKXBpeGVsQnVmZmVyLCBmb3JtYXRE
ZXNjcmlwdGlvbiwgJnRpbWluZ0luZm8sICZzYW1wbGVCdWZmZXIpOworICAgIENGUmVsZWFzZShm
b3JtYXREZXNjcmlwdGlvbik7CisgICAgaWYgKG9zdGF0dXMgIT0gbm9FcnIpIHsKKyAgICAgICAg
RVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAiRmFpbGVkIHRvIGNyZWF0
ZSB0aGUgc2FtcGxlIGJ1ZmZlciB3aXRoIGVycm9yICIsIHN0YXRpY19jYXN0PGludD4ob3N0YXR1
cykpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBhdXRvIHNhbXBsZSA9
IGFkb3B0Q0Yoc2FtcGxlQnVmZmVyKTsKKyAgICByZXR1cm4gTWVkaWFTYW1wbGVBVkZPYmpDOjpj
cmVhdGUoc2FtcGxlLmdldCgpLCByb3RhdGlvbik7Cit9CisKK1JlZlB0cjxNZWRpYVNhbXBsZT4g
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OnRvVmlkZW9GcmFtZShjb25zdCB3ZWJy
dGM6OlZpZGVvRnJhbWUmIGZyYW1lLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlv
bikKIHsKICAgICBpZiAobXV0ZWQoKSkgewogICAgICAgICBpZiAoIW1fYmxhY2tGcmFtZSB8fCBt
X2JsYWNrRnJhbWVXaWR0aCAhPSBmcmFtZS53aWR0aCgpIHx8IG1fYmxhY2tGcmFtZUhlaWdodCAh
PSBmcmFtZS5oZWlnaHQoKSkgewpAQCAtMTI2LDEyICsxNTIsMTYgQEAgUmV0YWluUHRyPENWUGl4
ZWxCdWZmZXJSZWY+IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpwaXhlbEJ1ZmZl
ckZyb21WaWQKICAgICAgICAgICAgIG1fYmxhY2tGcmFtZUhlaWdodCA9IGZyYW1lLmhlaWdodCgp
OwogICAgICAgICAgICAgbV9ibGFja0ZyYW1lID0gY3JlYXRlQmxhY2tQaXhlbEJ1ZmZlcihtX2Js
YWNrRnJhbWVXaWR0aCwgbV9ibGFja0ZyYW1lSGVpZ2h0KTsKICAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gbV9ibGFja0ZyYW1lLmdldCgpOworICAgICAgICByZXR1cm4gY3JlYXRlTWVkaWFTYW1w
bGVGcm9tQ1ZQaXhlbEJ1ZmZlcihtX2JsYWNrRnJhbWUuZ2V0KCksIHJvdGF0aW9uLCBmcmFtZS50
aW1lc3RhbXBfdXMoKSk7CiAgICAgfQogCisgICAgLy8gRklYTUU6IERldGVjdCB0aGUgY2FzZSBv
ZiBmcmFtZSBoYXZpbmcgYSBGcmFtZUJ1ZmZlclByb3ZpZGVyLgorICAgIGlmIChhdXRvIHByb3Zp
ZGVyID0gd2VicnRjOjp2aWRlb0ZyYW1lQnVmZmVyUHJvdmlkZXIoZnJhbWUpKQorICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8TWVkaWFTYW1wbGUqPihwcm92aWRlcik7CisKICAgICAvLyBJbiBj
YXNlIG9mIGluIG1lbW9yeSBzYW1wbGVzLCB3ZSBoYXZlIG5vbiBpbnRlcmxlYXZlZCBZVVYgZGF0
YSB3aGlsZSBDVlBpeGVsQnVmZmVycyBwcmVmZXIgaW50ZXJsZWF2ZWQgWVVWIGRhdGEuCiAgICAg
Ly8gTWF5YmUgd2Ugc2hvdWxkIGludHJvZHVjZSBhIE1lZGlhU2FtcGxlIHRoYXQgd291bGQgcmVw
cmVzZW50IG5vbiBpbnRlcmxlYXZlZCBZVVYgZGF0YSBhcyBhbiBvcHRpbWl6YXRpb24uCi0gICAg
cmV0dXJuIGFkb3B0Q0Yod2VicnRjOjpjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFtZSwg
W3RoaXNdKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgd2VicnRjOjpCdWZmZXJUeXBlIGJ1
ZmZlclR5cGUpIC0+IENWUGl4ZWxCdWZmZXJSZWYgeworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBh
ZG9wdENGKHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUsIFt0aGlzXShz
aXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHdlYnJ0Yzo6QnVmZmVyVHlwZSBidWZmZXJUeXBl
KSAtPiBDVlBpeGVsQnVmZmVyUmVmIHsKICAgICAgICAgYXV0byBwaXhlbEJ1ZmZlclBvb2wgPSB0
aGlzLT5waXhlbEJ1ZmZlclBvb2wod2lkdGgsIGhlaWdodCwgYnVmZmVyVHlwZSk7CiAgICAgICAg
IGlmICghcGl4ZWxCdWZmZXJQb29sKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0x
NDUsMTggKzE3NSwxOSBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlQ29jb2E6OnBpeGVsQnVmZmVyRnJvbVZpZAogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiBwaXhlbEJ1ZmZlcjsKICAgICB9KSk7CisgICAgcmV0dXJuIGNyZWF0ZU1lZGlh
U2FtcGxlRnJvbUNWUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIuZ2V0KCksIHJvdGF0aW9uLCBmcmFt
ZS50aW1lc3RhbXBfdXMoKSk7CiB9CiAKLXZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNl
Q29jb2E6Ok9uRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSkKK3ZvaWQgUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6Ok9uRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRl
b0ZyYW1lJiB3ZWJydGNWaWRlb0ZyYW1lKQogewogICAgIGlmICghaXNQcm9kdWNpbmdEYXRhKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHVuc2lnbmVkIHdpZHRoID0gZnJhbWUud2lkdGgoKTsK
LSAgICB1bnNpZ25lZCBoZWlnaHQgPSBmcmFtZS5oZWlnaHQoKTsKKyAgICB1bnNpZ25lZCB3aWR0
aCA9IHdlYnJ0Y1ZpZGVvRnJhbWUud2lkdGgoKTsKKyAgICB1bnNpZ25lZCBoZWlnaHQgPSB3ZWJy
dGNWaWRlb0ZyYW1lLmhlaWdodCgpOwogCiAgICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24g
cm90YXRpb247Ci0gICAgc3dpdGNoIChmcmFtZS5yb3RhdGlvbigpKSB7CisgICAgc3dpdGNoICh3
ZWJydGNWaWRlb0ZyYW1lLnJvdGF0aW9uKCkpIHsKICAgICBjYXNlIHdlYnJ0Yzo6a1ZpZGVvUm90
YXRpb25fMDoKICAgICAgICAgcm90YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6
Tm9uZTsKICAgICAgICAgYnJlYWs7CkBAIC0xNzQsNDAgKzIwNSwxNSBAQCB2b2lkIFJlYWx0aW1l
SW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpPbkZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFt
ZSYgZnJhbWUpCiAgICAgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgQUxXQVlT
X0xPR19JRihsb2dnZXJQdHIoKSAmJiAhKCsrbV9udW1iZXJPZkZyYW1lcyAlIDYwKSwgTE9HSURF
TlRJRklFUiwgImZyYW1lICIsIG1fbnVtYmVyT2ZGcmFtZXMsICIsIHJvdGF0aW9uICIsIGZyYW1l
LnJvdGF0aW9uKCksICIgc2l6ZSAiLCB3aWR0aCwgIngiLCBoZWlnaHQpOworICAgIEFMV0FZU19M
T0dfSUYobG9nZ2VyUHRyKCkgJiYgISgrK21fbnVtYmVyT2ZGcmFtZXMgJSA2MCksIExPR0lERU5U
SUZJRVIsICJmcmFtZSAiLCBtX251bWJlck9mRnJhbWVzLCAiLCByb3RhdGlvbiAiLCB3ZWJydGNW
aWRlb0ZyYW1lLnJvdGF0aW9uKCksICIgc2l6ZSAiLCB3aWR0aCwgIngiLCBoZWlnaHQpOwogI2Vu
ZGlmCiAKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gcGl4ZWxCdWZmZXJGcm9tVmlkZW9GcmFtZShm
cmFtZSk7Ci0gICAgaWYgKCFwaXhlbEJ1ZmZlcikgewotICAgICAgICBFUlJPUl9MT0dfSUYobG9n
Z2VyUHRyKCksIExPR0lERU5USUZJRVIsICJGYWlsZWQgdG8gZ2V0IGEgcGl4ZWwgYnVmZmVyIGZy
b20gYSBmcmFtZSIpOworICAgIGF1dG8gdmlkZW9GcmFtZSA9IHRvVmlkZW9GcmFtZSh3ZWJydGNW
aWRlb0ZyYW1lLCByb3RhdGlvbik7CisgICAgaWYgKCF2aWRlb0ZyYW1lKQogICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgQ01TYW1wbGVUaW1pbmdJbmZvIHRpbWluZ0luZm87Ci0gICAgdGlt
aW5nSW5mby5wcmVzZW50YXRpb25UaW1lU3RhbXAgPSBQQUw6OkNNVGltZU1ha2UoZnJhbWUudGlt
ZXN0YW1wX3VzKCksIDEwMDAwMDApOwotICAgIHRpbWluZ0luZm8uZGVjb2RlVGltZVN0YW1wID0g
UEFMOjprQ01UaW1lSW52YWxpZDsKLSAgICB0aW1pbmdJbmZvLmR1cmF0aW9uID0gUEFMOjprQ01U
aW1lSW52YWxpZDsKLQotICAgIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNj
cmlwdGlvbjsKLSAgICBPU1N0YXR1cyBvc3RhdHVzID0gUEFMOjpDTVZpZGVvRm9ybWF0RGVzY3Jp
cHRpb25DcmVhdGVGb3JJbWFnZUJ1ZmZlcihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoQ1ZJbWFnZUJ1
ZmZlclJlZilwaXhlbEJ1ZmZlciwgJmZvcm1hdERlc2NyaXB0aW9uKTsKLSAgICBpZiAob3N0YXR1
cyAhPSBub0VycikgewotICAgICAgICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5U
SUZJRVIsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb24gd2l0
aCBlcnJvciAiLCBzdGF0aWNfY2FzdDxpbnQ+KG9zdGF0dXMpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlcjsKLSAgICBvc3RhdHVz
ID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckNyZWF0ZVJlYWR5V2l0aEltYWdlQnVmZmVyKGtDRkFsbG9j
YXRvckRlZmF1bHQsIChDVkltYWdlQnVmZmVyUmVmKXBpeGVsQnVmZmVyLCBmb3JtYXREZXNjcmlw
dGlvbiwgJnRpbWluZ0luZm8sICZzYW1wbGVCdWZmZXIpOwotICAgIENGUmVsZWFzZShmb3JtYXRE
ZXNjcmlwdGlvbik7Ci0gICAgaWYgKG9zdGF0dXMgIT0gbm9FcnIpIHsKLSAgICAgICAgRVJST1Jf
TE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAiRmFpbGVkIHRvIGNyZWF0ZSB0aGUg
c2FtcGxlIGJ1ZmZlciB3aXRoIGVycm9yICIsIHN0YXRpY19jYXN0PGludD4ob3N0YXR1cykpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byBzYW1wbGUgPSBhZG9wdENGKHNhbXBs
ZUJ1ZmZlcik7CiAKICAgICBzZXRJbnRyaW5zaWNTaXplKEludFNpemUod2lkdGgsIGhlaWdodCkp
OwotCi0gICAgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUo
c2FtcGxlLmdldCgpLCByb3RhdGlvbiksIG1ldGFkYXRhRnJvbVZpZGVvRnJhbWUoZnJhbWUpKTsK
KyAgICB2aWRlb1NhbXBsZUF2YWlsYWJsZSgqdmlkZW9GcmFtZSwgbWV0YWRhdGFGcm9tVmlkZW9G
cmFtZSh3ZWJydGNWaWRlb0ZyYW1lKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuY3BwCmluZGV4
IDU4YzZiZGU0MzQ2NmVkMzhjNzdiZTY3NWEyYjcyMTIzZDcyZTcxMjIuLmEzNzU5NWViMzY5MzA4
YzU2Nzg2NmY3ODgzNDE2ZTNjOGRlZmZhNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcApAQCAtODMsOCArODMsOCBAQCB2b2lkIFJlYWx0
aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNh
bXBsZSYgc2FtcGxlLAogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBBU1NFUlQoc2FtcGxl
LnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBQbGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVCdWZmZXJU
eXBlKTsKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJl
Zj4oUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKHNhbXBsZS5wbGF0Zm9ybVNhbXBs
ZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcikpOworICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSB0aGUg
Y2FzZSBvZiBQbGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZS4KKyAgICBh
dXRvIHBpeGVsQnVmZmVyID0gc2FtcGxlLnBpeGVsQnVmZmVyKCk7CiAgICAgYXV0byBwaXhlbEZv
cm1hdFR5cGUgPSBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsQnVmZmVyKTsK
IAogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBjb252ZXJ0ZWRCdWZmZXIgPSBwaXhl
bEJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dAppbmRleCBlY2E4MDBlMjgwZWFhNGEwMWRlNWQwZGM4ZTUyMTU3MzhhOWEyMmZlLi5iMjdlNTQ5
YzE1ODhmNmRkYjM3ODkxNDU5ZmJkYjIyYmYyZGIyNWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xOTcsNiArMTk3LDcgQEAgJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ1JlbW90ZUNvZGVjcy5tZXNzYWdlcy5pbgor
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIp
L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmlu
CiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JV
SS5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKaW5kZXggNWMzYzY1NDY0YTViZTBmOGY0NDZkMGRmNjdhNWRjYjM0OWU3OWI4Mi4u
YzcyY2Q2OWM2MTRjNjQ1NGI0NzFhMWZmYjAxMmZhMTg5YjE4MTE0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0zODQsNiArMzg0LDkg
QEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVUZXh0
dXJlVmlld01lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZVJlY2VpdmVyLmNw
cAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBNZXNzYWdlc1JlcGxpZXMu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFBy
b3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dC9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFtZVBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVQcm94eU1lc3Nh
Z2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1h
a2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMzAxMzAwMTZmODY5
Y2FjYTFjMmNmMmNjY2VlN2I2NTU5ZmY3NTBiOC4uYzNiZTQzYTk4ODQ0ZmMwNWI4YjYxOTUzZWU4
MTg0N2ZlZTE5ODBjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5t
YWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjA2LDYgKzIw
Niw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lciBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZSBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlciBcCisJV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwUHJveHkgXAogCVdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcCBc
CiAJV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIgXAogCVdl
YlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXIgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCmluZGV4IDRhMzEyZWUzZDMzYjY3MmFiZWMzM2Q4NzM4MDdkNWNkNjkyYTU1NmYuLjc5
MGEwZjJmNGU2MmJmYzU3NmIyNWY0Yjc1ZDY3MDE1NmE1ODAwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAg
LTIwNiwyMCArMjA2LDIxIEBAIHByaXZhdGU6CiAgICAgICAgIG1fcHJvY2Vzcy5zZXRUQ0NJZGVu
dGl0eSgpOwogICAgIH0KICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCiAgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VHlwZSB0eXBlKSBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKHR5cGUgIT0gUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8pCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IG1fcHJvY2Vzcy5zdGFydENhcHR1cmluZ0F1ZGlvKCk7CiAgICAgfQotI2VuZGlmCiAKICAgICBj
b25zdCBQcm9jZXNzSWRlbnRpdHkmIHJlc291cmNlT3duZXIoKSBjb25zdCBmaW5hbAogICAgIHsK
ICAgICAgICAgcmV0dXJuIG1fcHJvY2Vzcy53ZWJQcm9jZXNzSWRlbnRpdHkoKTsKICAgICB9CiAK
KyAgICBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCogcmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXAoKSBmaW5hbCB7IHJldHVybiAmbV9wcm9jZXNzLnZpZGVvRnJhbWVPYmplY3RIZWFwKCk7IH0K
KwogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fcHJvY2VzczsKIH07CiAKQEAgLTIz
NywxNSArMjM4LDE4IEBAIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYgZ3B1UHJvY2VzcywgV2ViCiAgICAgLCBtX3dlYlByb2Nl
c3NJZGVudGl0eShXVEZNb3ZlKHBhcmFtZXRlcnMud2ViUHJvY2Vzc0lkZW50aXR5KSkKICAgICAs
IG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkobWFrZVVuaXF1ZVJlZjxSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eT4oKnRoaXMpKQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklE
KQotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQotICAgICwgbV9saWJXZWJS
VENDb2RlY3NQcm94eShMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlKCp0aGlzKSkKLSNlbmRp
ZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgICwgbV9z
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXI6OmNyZWF0ZSgqdGhpcykpCiAjZW5kaWYKICNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQogICAgICwgbV9jYXB0dXJlT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUo
KSkKICNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgLCBtX3ZpZGVvRnJhbWVP
YmplY3RIZWFwKFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpjcmVhdGUoKnRoaXMpKQorI2Vu
ZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCisgICAgLCBtX2xpYldl
YlJUQ0NvZGVjc1Byb3h5KExpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGUoKnRoaXMpKQorI2Vu
ZGlmCiAjaWYgSEFWRShBVURJVF9UT0tFTikKICAgICAsIG1fcHJlc2VudGluZ0FwcGxpY2F0aW9u
QXVkaXRUb2tlbihXVEZNb3ZlKHBhcmFtZXRlcnMucHJlc2VudGluZ0FwcGxpY2F0aW9uQXVkaXRU
b2tlbikpCiAjZW5kaWYKQEAgLTI1OCw5ICsyNjIsNiBAQCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKEdQVVByb2Nlc3MmIGdwdVByb2Nlc3MsIFdl
YgogI2lmIEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9OKSAmJiBIQVZFKEFWQVVESU9fUk9VVElO
R19BUkJJVEVSKQogICAgIGdwdVByb2Nlc3MuYXVkaW9TZXNzaW9uTWFuYWdlcigpLnNlc3Npb24o
KS5zZXRSb3V0aW5nQXJiaXRyYXRpb25DbGllbnQobV9yb3V0aW5nQXJiaXRyYXRvci5nZXQoKSk7
CiAjZW5kaWYKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIG1fdmlkZW9GcmFtZU9iamVj
dEhlYXAgPSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6Y3JlYXRlKCp0aGlzKTsKLSNlbmRp
ZgogCiAgICAgaWYgKCFwYXJhbWV0ZXJzLm92ZXJyaWRlTGFuZ3VhZ2VzLmlzRW1wdHkoKSkKICAg
ICAgICAgb3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKHBhcmFtZXRlcnMub3ZlcnJpZGVM
YW5ndWFnZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMTFhY2MwMGM3NGViNWQxMmY4MjgyZDQ0NjYzOTdkODdk
N2U5NzU5ZC4uZmIyMDI2ZDEwMTNjNzk4NWYwZmFhYWQ4ZGQ4NGI0OWQxMTYzNDRhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCkBAIC0yOTQsOSArMjk0LDYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI+IG1fcmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI7CiAg
ICAgVW5pcXVlUmVmPFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5PiBtX3JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OwogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwotI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQotICAgIFJlZjxMaWJXZWJSVENDb2Rl
Y3NQcm94eT4gbV9saWJXZWJSVENDb2RlY3NQcm94eTsKLSNlbmRpZgogI2lmIFBMQVRGT1JNKENP
Q09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5PiBtX3VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlcj4gbV9hdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdE1hbmFnZXI7CkBAIC0zMTMsNiArMzEwLDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fYWxs
b3dzRGlzcGxheUNhcHR1cmUgeyBmYWxzZSB9OwogICAgIElQQzo6U2NvcGVkQWN0aXZlTWVzc2Fn
ZVJlY2VpdmVRdWV1ZTxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gbV92aWRlb0ZyYW1lT2Jq
ZWN0SGVhcDsKICNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQor
ICAgIFJlZjxMaWJXZWJSVENDb2RlY3NQcm94eT4gbV9saWJXZWJSVENDb2RlY3NQcm94eTsKKyNl
bmRpZgogI2lmIEhBVkUoQVVESVRfVE9LRU4pCiAgICAgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tl
bl90PiBtX3ByZXNlbnRpbmdBcHBsaWNhdGlvbkF1ZGl0VG9rZW47CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXAuY3BwCmluZGV4IGY2Zjg4ZmMxNjc3Y2I5ZjJmNDcyODQ2ZTgzZjNmMjU0ZTNh
OTkxNWYuLmRmMGNhMzExMTM5YWVkY2Q2NTYwMTI1NzYzMDNjOTBjM2M3NGViMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwLmNwcApAQCAtMjksOSArMjksMTIgQEAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5TWVzc2FnZXMu
aCIKICNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVW
aWRlb0ZyYW1lUHJveHlNZXNzYWdlcy5oIgogCisjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNv
ZnRMaW5rLmg+CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBSZWY8UmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXA+IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpjcmVhdGUoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvblRvV2ViUHJvY2VzcykKQEAgLTY4LDE2ICs3MSw0MSBA
QCB2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjphZGRWaWRlb0ZyYW1lKFJlbW90ZVZp
ZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSYmCiAgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6OlByb3BlcnRpZXM+IHJlc3VsdDsKICAgICBpZiAoZnJhbWUpCiAgICAgICAgIHJl
c3VsdCA9IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cHJvcGVydGllcygqZnJhbWUpOwotICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpXYXNJbml0
aWFsaXplZChyZXN1bHQpLCAgd3JpdGUuaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpXYXNJbml0
aWFsaXplZChyZXN1bHQpLCAgd3JpdGUuaWRlbnRpZmllcigpLm9iamVjdCgpLnRvVUludDY0KCkp
OwogICAgIHJldGlyZShXVEZNb3ZlKHdyaXRlKSwgV1RGTW92ZShmcmFtZSksIHN0ZDo6bnVsbG9w
dCk7CiB9CiAKK1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIFJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwOjpjcmVhdGVWaWRlb0ZyYW1lKFJlZjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4mJiBmcmFt
ZSkKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcjo6
Z2VuZXJhdGVUaHJlYWRTYWZlKCk7CisgICAgYWRkKGlkZW50aWZpZXIsIFdURk1vdmUoZnJhbWUp
KTsKKyAgICByZXR1cm4gaWRlbnRpZmllcjsKK30KKwogdm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcDo6cmVsZWFzZVZpZGVvRnJhbWUoUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNl
JiYgd3JpdGUpCiB7CiAgICAgYXNzZXJ0SXNDdXJyZW50KG1fY29uc3VtZVRocmVhZCk7CiAgICAg
cmV0aXJlUmVtb3ZlKFdURk1vdmUod3JpdGUpKTsKIH0KIAordm9pZCBSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcDo6Z2V0VmlkZW9GcmFtZUJ1ZmZlcihSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVy
ZW5jZSYmIHJlYWQpCit7CisgICAgYXV0byBpZGVudGlmaWVyID0gcmVhZC5pZGVudGlmaWVyKCk7
CisgICAgYXV0byBtZWRpYVNhbXBsZSA9IHJldGlyZShXVEZNb3ZlKHJlYWQpLCAwX3MpOworCisg
ICAgaWYgKCFtZWRpYVNhbXBsZSkKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5OjpWaWRlb0ZyYW1lQnVmZmVyTm90Rm91
bmQgeyBpZGVudGlmaWVyIH0sIDApOworCisgICAgYXV0byBwbGF0Zm9ybVNhbXBsZSA9IG1lZGlh
U2FtcGxlLT5wbGF0Zm9ybVNhbXBsZSgpOworICAgIEFTU0VSVChwbGF0Zm9ybVNhbXBsZS50eXBl
ID09IFBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGUpOworCisgICAgbV9zaGFyZWRW
aWRlb0ZyYW1lV3JpdGVyLndyaXRlKHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6
Q01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihwbGF0Zm9ybVNhbXBsZS5zYW1wbGUuY21TYW1w
bGVCdWZmZXIpKSwKKyAgICAgICAgWyZdKGF1dG8mIHNlbWFwaG9yZSkgeyBtX2Nvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk6OlNldFNoYXJl
ZFZpZGVvRnJhbWVTZW1hcGhvcmUgeyBzZW1hcGhvcmUgfSwgMCk7IH0sCisgICAgICAgIFsmXShh
dXRvJiBoYW5kbGUpIHsgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcFByb3h5OjpTZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5IHsgaGFuZGxlIH0s
IDApOyB9CisgICAgKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwUHJveHk6Ok5ld1ZpZGVvRnJhbWVCdWZmZXIgeyBpZGVudGlmaWVy
IH0sIDApOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaAppbmRleCA1MTU5
YzgwNDY2ZjVmMTNmOTNiYzQyNTcwOTVkOTFiNDgwZWExNjNiLi4zMzRlNmM4Njg2OGFiZTc1YWVk
NWM1MjA5MmE5NzVkZjNjMTcwZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaApAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU2hh
cmVkVmlkZW9GcmFtZS5oIgogI2luY2x1ZGUgIlRocmVhZFNhZmVPYmplY3RIZWFwLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9NZWRpYVNhbXBsZS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRBc3NlcnRp
b25zLmg+CkBAIC00NCw2ICs0NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOwog
ICAgIH5SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCgpOwogCisgICAgUmVtb3RlVmlkZW9GcmFt
ZUlkZW50aWZpZXIgY3JlYXRlVmlkZW9GcmFtZShSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYp
OwogICAgIHZvaWQgYWRkVmlkZW9GcmFtZShSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2Um
JiwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiYmKTsKIAogICAgIHZvaWQgc3RvcExpc3Rl
bmluZ0ZvcklQQyhSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+JiYgcmVmRnJvbUNvbm5l
Y3Rpb24pOwpAQCAtNTUsMTAgKzU3LDEyIEBAIHByaXZhdGU6CiAKICAgICAvLyBNZXNzYWdlcy4K
ICAgICB2b2lkIHJlbGVhc2VWaWRlb0ZyYW1lKFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5j
ZSYmKTsKKyAgICB2b2lkIGdldFZpZGVvRnJhbWVCdWZmZXIoUmVtb3RlVmlkZW9GcmFtZVJlYWRS
ZWZlcmVuY2UmJik7CiAKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBtX2dwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgV1RGX0dVQVJERURfQllfTE9DSyhtX2NvbnN1bWVUaHJlYWQpOwog
ICAgIGNvbnN0IFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBUaHJlYWRB
c3NlcnRpb24gbV9jb25zdW1lVGhyZWFkIE5PX1VOSVFVRV9BRERSRVNTOworICAgIFNoYXJlZFZp
ZGVvRnJhbWVXcml0ZXIgbV9zaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOwogfTsKIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXAubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW4KaW5kZXggYTI3OGNlM2QwMzlkYmUxNzMx
ZDVhZjZjOGU0OTkxMGEzOTUyYTcxMi4uMWQzZDI0M2UxNTE3NWVmZjljOGQ3ZWZjYmJiZDBiMTUy
ZGU1Y2E2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5tZXNzYWdlcy5pbgpAQCAt
MjMsNiArMjMsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogbWVzc2FnZXMgLT4gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAgTm90UmVmQ291
bnRlZCB7CisgICAgR2V0VmlkZW9GcmFtZUJ1ZmZlcihXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVS
ZWFkUmVmZXJlbmNlIGlkZW50aWZpZXIpCiAgICAgUmVsZWFzZVZpZGVvRnJhbWUoV2ViS2l0OjpS
ZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UgaWRlbnRpZmllcikKIH0KLSNlbmRpZgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oCmluZGV4IGM3NzJjYjc3
NjBmMmQ1ODI5YWZjZDJiODVmNTkxM2EzMGMwMDc0NDQuLjhlZjI5Y2FlMjQwOTFkZWZjZDg5YzQx
NDA2MDRjNmZlYzk4MjIwMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUlRDRGVjb2RlcklkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJSVENFbmNvZGVySWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVv
RnJhbWVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAi
U2hhcmVkVmlkZW9GcmFtZS5oIgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CkBAIC01Myw2ICs1NCw3
IEBAIHVzaW5nIExvY2FsRW5jb2RlciA9IHZvaWQqOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcDsKIGNsYXNzIFNoYXJlZFZpZGVvRnJhbWVSZWFkZXI7CiAKIGNsYXNzIExpYldlYlJU
Q0NvZGVjc1Byb3h5IDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2Vp
dmVyUmVmQ291bnRlZCB7CkBAIC04Myw3ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVh
dGVFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0
b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mLCBib29sIHVzZUxvd0xhdGVuY3kpOwogICAg
IHZvaWQgcmVsZWFzZUVuY29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIpOwogICAgIHZvaWQgaW5p
dGlhbGl6ZUVuY29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIsIHVpbnQxNl90IHdpZHRoLCB1aW50
MTZfdCBoZWlnaHQsIHVuc2lnbmVkIHN0YXJ0Qml0cmF0ZSwgdW5zaWduZWQgbWF4Qml0cmF0ZSwg
dW5zaWduZWQgbWluQml0cmF0ZSwgdWludDMyX3QgbWF4RnJhbWVyYXRlKTsKLSAgICB2b2lkIGVu
Y29kZUZyYW1lKFJUQ0VuY29kZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBs
ZSYmLCB1aW50MzJfdCB0aW1lU3RhbXAsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSk7Cisg
ICAgdm9pZCBlbmNvZGVGcmFtZShSVENFbmNvZGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3Rl
VmlkZW9TYW1wbGUmJiwgdWludDMyX3QgdGltZVN0YW1wLCBib29sIHNob3VsZEVuY29kZUFzS2V5
RnJhbWUsIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2U+KTsKICAg
ICB2b2lkIHNldEVuY29kZVJhdGVzKFJUQ0VuY29kZXJJZGVudGlmaWVyLCB1aW50MzJfdCBiaXRS
YXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpOwogICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9GcmFtZVNl
bWFwaG9yZShSVENFbmNvZGVySWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJik7CiAgICAgdm9p
ZCBzZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5KFJUQ0VuY29kZXJJZGVudGlmaWVyLCBjb25zdCBT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpOwpAQCAtMTAxLDYgKzEwMyw3IEBAIHByaXZhdGU6CiAg
ICAgSGFzaE1hcDxSVENEZWNvZGVySWRlbnRpZmllciwgd2VicnRjOjpMb2NhbERlY29kZXI+IG1f
ZGVjb2RlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOyAvLyBPbmx5IG1vZGlmaWVkIG9u
IHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZSBidXQgbWF5IGdldCBhY2Nlc3NlZCBmcm9tIHRoZSBt
YWluIHRocmVhZC4KICAgICBIYXNoTWFwPFJUQ0VuY29kZXJJZGVudGlmaWVyLCBFbmNvZGVyPiBt
X2VuY29kZXJzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsgLy8gT25seSBtb2RpZmllZCBv
biB0aGUgbGliV2ViUlRDQ29kZWNzUXVldWUgYnV0IG1heSBnZXQgYWNjZXNzZWQgZnJvbSB0aGUg
bWFpbiB0aHJlYWQuCiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKKyAgICBSZWY8UmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFtZU9iamVjdEhlYXA7CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVj
c1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCA2YmIyMDg2MzhkYzIyYTg5ZWZiODlj
OWFmOTA2YTAzZWE2OWU3NDRlLi43M2QwYjU4ZDQ3YmQxNjA3NzVkNDhlNjY5YTdlM2QxZWU0YjUx
YWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTM0LDcgKzM0LDcgQEAg
bWVzc2FnZXMgLT4gTGliV2ViUlRDQ29kZWNzUHJveHkgTm90UmVmQ291bnRlZCB7CiAgICAgQ3Jl
YXRlRW5jb2RlcihXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyIGlkLCBTdHJpbmcgZm9ybWF0
TmFtZSwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IHBhcmFtZXRlcnMsIGJvb2wg
dXNlTG93TGF0ZW5jeSk7CiAgICAgUmVsZWFzZUVuY29kZXIoV2ViS2l0OjpSVENFbmNvZGVySWRl
bnRpZmllciBpZCkKICAgICBJbml0aWFsaXplRW5jb2RlcihXZWJLaXQ6OlJUQ0VuY29kZXJJZGVu
dGlmaWVyIGlkLCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0LCB1bnNpZ25lZCBzdGFy
dEJpdHJhdGUsIHVuc2lnbmVkIG1heEJpdHJhdGUsIHVuc2lnbmVkIG1pbkJpdHJhdGUsIHVpbnQz
Ml90IG1heEZyYW1lcmF0ZSkKLSAgICBFbmNvZGVGcmFtZShXZWJLaXQ6OlJUQ0VuY29kZXJJZGVu
dGlmaWVyIGlkLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUsIHVpbnQzMl90IHRp
bWVTdGFtcCwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKQorICAgIEVuY29kZUZyYW1lKFdl
YktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxl
IHNhbXBsZSwgdWludDMyX3QgdGltZVN0YW1wLCBib29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUs
IHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZT4gc2Ft
cGxlUmVmZXJlbmNlKQogICAgIFNldEVuY29kZVJhdGVzKFdlYktpdDo6UlRDRW5jb2RlcklkZW50
aWZpZXIgaWQsIHVpbnQzMl90IGJpdFJhdGUsIHVpbnQzMl90IGZyYW1lUmF0ZSkKICAgICBTZXRT
aGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQs
IElQQzo6U2VtYXBob3JlIHNlbWFwaG9yZSkKICAgICBTZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5
KFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUgc3RvcmFnZUhhbmRsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCmluZGV4IDIyZTIwNmFiOWE5MzJh
NTliY2VkNTMzOTNiZGM4YjMwMWFjNjgzNGIuLjIwZTE4OTQ1Zjg0YjVkZTk1MmM5YTgyNGIyOTY5
NzkwNzk1OGIyZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
TGliV2ViUlRDQ29kZWNzUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQpAQCAtMzIsMjEgKzMyLDI3IEBACiAjaW1wb3J0
ICJHUFVQcm9jZXNzLmgiCiAjaW1wb3J0ICJMaWJXZWJSVENDb2RlY3NNZXNzYWdlcy5oIgogI2lt
cG9ydCAiTGliV2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlcy5oIgorI2ltcG9ydCAiUmVtb3RlVmlk
ZW9GcmFtZUlkZW50aWZpZXIuaCIKKyNpbXBvcnQgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
LmgiCiAjaW1wb3J0ICJTaGFyZWRWaWRlb0ZyYW1lLmgiCiAjaW1wb3J0ICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ1ZVdGlsaXRpZXMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTGliV2ViUlRDUHJvdmlkZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTWVkaWFTYW1wbGVB
VkZPYmpDLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbW90ZVZpZGVvU2FtcGxlLmg+CiAjaW1wb3J0
IDx3ZWJydGMvc2RrL1dlYktpdC9XZWJLaXREZWNvZGVyLmg+CiAjaW1wb3J0IDx3ZWJydGMvc2Rr
L1dlYktpdC9XZWJLaXRFbmNvZGVyLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBv
cnQgPHd0Zi9NZWRpYVRpbWUuaD4KIAorI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5r
Lmg+CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBMaWJXZWJSVENDb2RlY3NQcm94eTo6TGliV2Vi
UlRDQ29kZWNzUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbikKICAg
ICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25uZWN0aW9uKQogICAgICwgbV9xdWV1
ZShjb25uZWN0aW9uLmdwdVByb2Nlc3MoKS5saWJXZWJSVENDb2RlY3NRdWV1ZSgpKQorICAgICwg
bV92aWRlb0ZyYW1lT2JqZWN0SGVhcChjb25uZWN0aW9uLnZpZGVvRnJhbWVPYmplY3RIZWFwKCkp
CiB7CiAgICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5hZGRUaHJl
YWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIHRoaXMpOwogfQpAQCAtNzcsMTIgKzgzLDIyIEBAIHZvaWQgTGliV2Vi
UlRDQ29kZWNzUHJveHk6OmNsb3NlKCkKIAogc3RhdGljIEZ1bmN0aW9uPHZvaWQoQ1ZQaXhlbEJ1
ZmZlclJlZiBwaXhlbEJ1ZmZlciwgdWludDMyX3QgdGltZVN0YW1wTnMsIHVpbnQzMl90IHRpbWVT
dGFtcCk+IGNyZWF0ZURlY29kZXJDYWxsYmFjayhSVENEZWNvZGVySWRlbnRpZmllciBpZGVudGlm
aWVyLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KQogewotICAgIHJldHVybiBbY29ubmVjdGlvbiA9IFJlZiB7IGdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY29ubmVjdGlvbigpIH0sIHJlc291cmNlT3duZXIgPSBncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLndlYlByb2Nlc3NJZGVudGl0eSgpLCBpZGVudGlmaWVyXSAoQ1ZQaXhlbEJ1ZmZlclJl
ZiBwaXhlbEJ1ZmZlciwgdWludDMyX3QgdGltZVN0YW1wTnMsIHVpbnQzMl90IHRpbWVTdGFtcCkg
ewotICAgICAgICBpZiAoYXV0byBzYW1wbGUgPSBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZTo6
Y3JlYXRlKHBpeGVsQnVmZmVyLCBNZWRpYVRpbWUodGltZVN0YW1wTnMsIDEpKSkgewotICAgICAg
ICAgICAgaWYgKHJlc291cmNlT3duZXIpCi0gICAgICAgICAgICAgICAgc2FtcGxlLT5zZXRPd25l
cnNoaXBJZGVudGl0eShyZXNvdXJjZU93bmVyKTsKLSAgICAgICAgICAgIGNvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjczo6Q29tcGxldGVkRGVjb2RpbmcgeyBpZGVudGlm
aWVyLCB0aW1lU3RhbXAsICpzYW1wbGUgfSwgMCk7Ci0gICAgICAgIH0KKyAgICByZXR1cm4gW2Nv
bm5lY3Rpb24gPSBSZWYgeyBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKSB9
LCByZXNvdXJjZU93bmVyID0gZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy53ZWJQcm9jZXNzSWRl
bnRpdHkoKSwgdmlkZW9GcmFtZU9iamVjdEhlYXAgPSBSZWYgeyBncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLnZpZGVvRnJhbWVPYmplY3RIZWFwKCkgfSwgaWRlbnRpZmllcl0gKENWUGl4ZWxCdWZm
ZXJSZWYgcGl4ZWxCdWZmZXIsIHVpbnQzMl90IHRpbWVTdGFtcE5zLCB1aW50MzJfdCB0aW1lU3Rh
bXApICBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBzYW1wbGUgPSBXZWJDb3JlOjpNZWRpYVNhbXBs
ZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlKHBpeGVsQnVmZmVyLCBXZWJDb3JlOjpNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgZmFsc2UsIE1lZGlhVGltZSh0aW1lU3RhbXBOcywg
MSksIHsgfSk7CisgICAgICAgIGlmICghc2FtcGxlKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGF1dG8gcmVtb3RlU2FtcGxlID0gV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGU6OmNy
ZWF0ZSgqc2FtcGxlKTsKKyAgICAgICAgaWYgKCFyZW1vdGVTYW1wbGUpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgaWYgKHJlc291cmNlT3duZXIpCisgICAgICAgICAgICByZW1vdGVT
YW1wbGUtPnNldE93bmVyc2hpcElkZW50aXR5KHJlc291cmNlT3duZXIpOworCisgICAgICAgIGF1
dG8gcmVtb3RlSWRlbnRpZmllciA9IHZpZGVvRnJhbWVPYmplY3RIZWFwLT5jcmVhdGVWaWRlb0Zy
YW1lKHNhbXBsZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgcmVtb3RlU2FtcGxlLT5jbGVh
cklPU3VyZmFjZSgpOworCisgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldl
YlJUQ0NvZGVjczo6Q29tcGxldGVkRGVjb2RpbmcgeyBpZGVudGlmaWVyLCB0aW1lU3RhbXAsICpy
ZW1vdGVTYW1wbGUsIHJlbW90ZUlkZW50aWZpZXIgfSwgMCk7CiAgICAgfTsKIH0KIApAQCAtMjEx
LDE1ICsyMjcsMjUgQEAgc3RhdGljIGlubGluZSB3ZWJydGM6OlZpZGVvUm90YXRpb24gdG9XZWJS
VENWaWRlb1JvdGF0aW9uKFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjoKIAogLy8gRm9yIHBlcmZvcm1h
bmNlIHJlYXNvbnMsIHRoaXMgZnVuY3Rpb24gYWNjZXNzZXMgbV9lbmNvZGVycyB3aXRob3V0IGxv
Y2tpbmcuIFRoaXMgaXMgc2FmZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gcnVucyBvbiB0aGUgbGli
V2ViUlRDQ29kZWNzUXVldWUKIC8vIGFuZCBtX2VuY29kZXJzIG9ubHkgZ2V0IG1vZGlmaWVkIG9u
IHRoaXMgcXVldWUuCi12b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjplbmNvZGVGcmFtZShSVENF
bmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYm
IHNhbXBsZSwgdWludDMyX3QgdGltZVN0YW1wLCBib29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUp
Cit2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjplbmNvZGVGcmFtZShSVENFbmNvZGVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHNhbXBsZSwgdWlu
dDMyX3QgdGltZVN0YW1wLCBib29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUsIHN0ZDo6b3B0aW9u
YWw8UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2U+IHNhbXBsZVJlZmVyZW5jZSkKIHsKKyAg
ICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXI7CisgICAgaWYgKHNhbXBs
ZVJlZmVyZW5jZSkgeworICAgICAgICBhdXRvIHNhbXBsZSA9IG1fdmlkZW9GcmFtZU9iamVjdEhl
YXAtPnJldGlyZShXVEZNb3ZlKCpzYW1wbGVSZWZlcmVuY2UpLCAwX3MpOworICAgICAgICBpZiAo
IXNhbXBsZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIHBsYXRmb3JtU2Ft
cGxlID0gc2FtcGxlLT5wbGF0Zm9ybVNhbXBsZSgpOworICAgICAgICBBU1NFUlQocGxhdGZvcm1T
YW1wbGUudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVCdWZmZXJUeXBl
KTsKKyAgICAgICAgcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihQ
QUw6OkNNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIocGxhdGZvcm1TYW1wbGUuc2FtcGxlLmNt
U2FtcGxlQnVmZmVyKSk7CisgICAgfQorCiAgICAgQVNTRVJUKGZpbmRFbmNvZGVyV2l0aG91dExv
Y2soaWRlbnRpZmllcikpOwogICAgIGF1dG8qIGVuY29kZXIgPSBmaW5kRW5jb2RlcldpdGhvdXRM
b2NrKGlkZW50aWZpZXIpOwogICAgIGlmICghZW5jb2RlcikKICAgICAgICAgcmV0dXJuOwogCiAj
aWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
PiBwaXhlbEJ1ZmZlcjsKICAgICBpZiAoc2FtcGxlLnN1cmZhY2UoKSkgewogICAgICAgICBpZiAo
YXV0byBidWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBpeGVsQnVmZmVyKHNhbXBsZS5zdXJmYWNl
KCkpKQogICAgICAgICAgICAgcGl4ZWxCdWZmZXIgPSBXVEZNb3ZlKCpidWZmZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRl
ci5jcHAKaW5kZXggNTFlOGEzN2Q3YWMyYjMyNDdiYTcwZDk0MDRmMjI4MTNkNmVjYjFmZS4uNTk0
YjgzZDVkOGViY2M4ZjEwYzRhNjBmNTQ0ZjhkMzkxNmU1Y2FlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBA
IC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwLmgiCiAjaW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VUcmFuc2Zl
clNlc3Npb25WVC5oPgpAQCAtNDIsNiArNDMsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIG1lZGlhUmVj
b3JkZXJEZWZhdWx0VGltZW91dCB7IDFfcyB9OwogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVk
aWFSZWNvcmRlcj4gUmVtb3RlTWVkaWFSZWNvcmRlcjo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIE1lZGlhUmVjb3JkZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIGJvb2wgcmVjb3JkQXVkaW8sIGJvb2wgcmVjb3JkVmlkZW8sIGNvbnN0
IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYgb3B0aW9ucykKIHsKQEAgLTU1LDYgKzU3LDcg
QEAgUmVtb3RlTWVkaWFSZWNvcmRlcjo6UmVtb3RlTWVkaWFSZWNvcmRlcihHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW8KICAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcyhncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50
aWZpZXIpCiAgICAgLCBtX3dyaXRlcihXVEZNb3ZlKHdyaXRlcikpCisgICAgLCBtX3ZpZGVvRnJh
bWVPYmplY3RIZWFwKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MudmlkZW9GcmFtZU9iamVjdEhl
YXAoKSkKIHsKICAgICBpZiAocmVjb3JkQXVkaW8pCiAgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1h
a2VVbmlxdWU8Q0FSaW5nQnVmZmVyPigpOwpAQCAtODYsMTAgKzg5LDE2IEBAIHZvaWQgUmVtb3Rl
TWVkaWFSZWNvcmRlcjo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZSB0aW1lLCB1aW50
NjRfdCBudW1iZXJPCiAgICAgbV93cml0ZXItPmFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKCptX2F1
ZGlvQnVmZmVyTGlzdCwgbV9kZXNjcmlwdGlvbiwgdGltZSwgbnVtYmVyT2ZGcmFtZXMpOwogfQog
Ci12b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6
OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtb3RlU2FtcGxlKQordm9pZCBSZW1vdGVNZWRpYVJlY29y
ZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJl
bW90ZVNhbXBsZSwgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZT4g
c2FtcGxlUmVmZXJlbmNlKQogewogICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gc2FtcGxlOwotICAg
IGlmICghcmVtb3RlU2FtcGxlLnN1cmZhY2UoKSkgeworICAgIGlmIChzYW1wbGVSZWZlcmVuY2Up
IHsKKyAgICAgICAgc2FtcGxlID0gbV92aWRlb0ZyYW1lT2JqZWN0SGVhcC0+cmV0aXJlKFdURk1v
dmUoKnNhbXBsZVJlZmVyZW5jZSksIG1lZGlhUmVjb3JkZXJEZWZhdWx0VGltZW91dCk7CisgICAg
ICAgIGlmICghc2FtcGxlKSB7CisgICAgICAgICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoIXJlbW90ZVNh
bXBsZS5zdXJmYWNlKCkpIHsKICAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IG1fc2hhcmVkVmlk
ZW9GcmFtZVJlYWRlci5yZWFkKCk7CiAgICAgICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5oCmluZGV4IGM2NjI5ZGJjNmNhYmIzNmY2MWI3ZTQ2MjdkMWY1
MDUwOTM3NjVhMDYuLjYwYjhkMDIxNGU3N2E1M2NjMDQ1YTBmOWZlYjgxYTM5MDQ5ZDNkZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlICJTaGFyZWRWaWRlb0ZyYW1lLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaD4KQEAgLTUyLDYgKzUzLDcg
QEAgc3RydWN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9uczsKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworY2xhc3MgUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXA7CiBjbGFzcyBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTsKIAogY2xhc3Mg
UmVtb3RlTWVkaWFSZWNvcmRlciA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewpAQCAt
NzIsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAg
dm9pZCBhdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZSYsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQ2NF90
IG51bWJlck9mRnJhbWVzKTsKICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRp
bWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxh
YmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYpOworICAgIHZvaWQgdmlkZW9TYW1wbGVB
dmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiwgc3RkOjpvcHRpb25hbDxSZW1v
dGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZT4pOwogICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYpOwogICAgIHZv
aWQgc3RvcFJlY29yZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
cGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTkwLDYgKzkyLDcgQEAgcHJp
dmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VUcmFuc2ZlclNlc3Npb25W
VD4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbjsKIAogICAgIFNoYXJlZFZpZGVvRnJhbWVSZWFkZXIg
bV9zaGFyZWRWaWRlb0ZyYW1lUmVhZGVyOworICAgIFJlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcD4gbV92aWRlb0ZyYW1lT2JqZWN0SGVhcDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5t
ZXNzYWdlcy5pbgppbmRleCBhY2FlZjhiOGM0MGRiZDVkN2ZiOWI2Yzg4NDhmOWRhNDY4ODcxNDkz
Li40OThmMjgxYWY4MDE4NzhlMDU0ZDMxZWU2ZWQyYjc5NzA4YjkwZTg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyLm1lc3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBACiBtZXNzYWdlcyAtPiBSZW1vdGVN
ZWRpYVJlY29yZGVyIE5vdFJlZkNvdW50ZWQgewogICAgIEF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFu
Z2VkKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29y
ZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJP
ZkZyYW1lcykKICAgICBBdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lIHRpbWUsIHVpbnQ2
NF90IG51bWJlck9mRnJhbWVzKQotICAgIFZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJl
bW90ZVZpZGVvU2FtcGxlIHNhbXBsZSkKKyAgICBWaWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3Jl
OjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUsIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVW
aWRlb0ZyYW1lUmVhZFJlZmVyZW5jZT4gcmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UpCiAg
ICAgRmV0Y2hEYXRhKCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSBidWZmZXIsIGRvdWJsZSB0aW1l
Q29kZSkgQXN5bmMKICAgICBTdG9wUmVjb3JkaW5nKCkgLT4gKCkgQXN5bmMKICAgICBQYXVzZSgp
IC0+ICgpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKaW5kZXggYmY0
NjFjZGZmOGFkZDYxNGRmYjBlYmYxNDkzOTNlNGVhNWMzYWJlYy4uZTZmYzY3N2M3MGNkMWQ3NDlj
Njk3ZDYyMWRlMTlhMzViZjI0ZWZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlVmlkZW9TYW1w
bGUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1zdGF0aWMgY29uc3RleHByIFNlY29uZHMgZGVm
YXVsdFRpbWVvdXQgeyAzMF9zIH07CitzdGF0aWMgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFRp
bWVvdXQgeyAxX3MgfTsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTEyMywxMyAr
MTIzLDEzIEBAIHZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2Ft
cGxlKFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlCiB7CiAgICAgYXV0byBtZWRpYVNhbXBs
ZSA9IG1fdmlkZW9GcmFtZU9iamVjdEhlYXAtPnJldGlyZShXVEZNb3ZlKHNhbXBsZSksIGRlZmF1
bHRUaW1lb3V0KTsKICAgICBpZiAoIW1lZGlhU2FtcGxlKSB7Ci0gICAgICAgIEFTU0VSVF9JU19U
RVNUSU5HX0lQQygpOworICAgICAgICAvLyBJbiBjYXNlIG9mIEdQVVByb2Nlc3MgY3Jhc2gsIHdl
IG1pZ2h0IGVucXVldWUgcHJldmlvdXMgR1BVUHJvY2VzcyBzYW1wbGVzLCBpZ25vcmUgdGhlbS4K
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIWlzPE1lZGlhU2FtcGxlQVZGT2JqQz4o
bWVkaWFTYW1wbGUpKSB7Ci0gICAgICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygpOworICAgIEFT
U0VSVChpczxNZWRpYVNhbXBsZUFWRk9iakM+KG1lZGlhU2FtcGxlKSk7CisgICAgaWYgKCFpczxN
ZWRpYVNhbXBsZUFWRk9iakM+KG1lZGlhU2FtcGxlKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0K
KwogICAgIGF1dG8mIGF2Zk1lZGlhU2FtcGxlID0gZG93bmNhc3Q8TWVkaWFTYW1wbGVBVkZPYmpD
PigqbWVkaWFTYW1wbGUpOwogICAgIE1lZGlhU2FtcGxlQVZGT2JqQzo6c2V0QXNEaXNwbGF5SW1t
ZWRpYXRlbHkoYXZmTWVkaWFTYW1wbGUpOwogICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LT5lbnF1ZXVlU2FtcGxlKGF2Zk1lZGlhU2FtcGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1RocmVhZFNhZmVPYmplY3RIZWFwLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9U
aHJlYWRTYWZlT2JqZWN0SGVhcC5oCmluZGV4IDM5MjliN2U0NjZjMmMyYjRlOThmZDViNTM2ZThj
OTg2N2IzZmI4MGUuLjI1NTA2NGMwZDhiNDY5ODIzYzlmYzNlNzA2MzUxZTIwYWFhNmVjYmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RocmVhZFNhZmVPYmplY3RIZWFwLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGhyZWFkU2FmZU9iamVjdEhlYXAuaApAQCAtNTIsNiAr
NTIsOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgV3JpdGVSZWZlcmVuY2UgPSB0eXBlbmFtZSBPYmpl
Y3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcjxJZGVudGlmaWVyPjo6V3JpdGVSZWZlcmVuY2U7
CiAgICAgdXNpbmcgUmVmZXJlbmNlID0gdHlwZW5hbWUgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5j
ZVRyYWNrZXI8SWRlbnRpZmllcj46OlJlZmVyZW5jZTsKIAorICAgIHZvaWQgYWRkKElkZW50aWZp
ZXIsIEhlbGRUeXBlJiYpOworCiAgICAgLy8gV2FpdHMgdW50aWwgYSB3cml0ZSBjcmVhdGVzIHRo
ZSByZWZlcmVuY2UgYW5kIHRoZW4gcmV0aXJlcyB0aGUgcmVhZCBvcgogICAgIC8vIHRpbWVzIG91
dC4KICAgICBIZWxkVHlwZSByZXRpcmUoUmVhZFJlZmVyZW5jZSYmLCBJUEM6OlRpbWVvdXQpOwpA
QCAtMTg3LDUgKzE4OSwxNCBAQCB2b2lkIFRocmVhZFNhZmVPYmplY3RIZWFwPElkZW50aWZpZXIs
IEhlbGRUeXBlPjo6Y2xlYXIoKQogICAgIG1fb2JqZWN0cy5jbGVhcigpOwogfQogCit0ZW1wbGF0
ZTx0eXBlbmFtZSBJZGVudGlmaWVyLCB0eXBlbmFtZSBIZWxkVHlwZT4KK3ZvaWQgVGhyZWFkU2Fm
ZU9iamVjdEhlYXA8SWRlbnRpZmllciwgSGVsZFR5cGU+OjphZGQoSWRlbnRpZmllciBpZGVudGlm
aWVyLCBIZWxkVHlwZSYmIG9iamVjdCkKK3sKKyAgICBSZWZlcmVuY2UgcmVmZXJlbmNlIHsgaWRl
bnRpZmllciwgMCB9OworICAgIExvY2tlciBsb2NrZXIgeyBtX29iamVjdHNMb2NrIH07CisgICAg
QVNTRVJUKCFtX29iamVjdHMuY29udGFpbnMocmVmZXJlbmNlKSk7CisgICAgbV9vYmplY3RzLmFk
ZChyZWZlcmVuY2UsIFJlZmVyZW5jZVN0YXRlIHsgV1RGTW92ZShvYmplY3QpIH0pOworfQorCiB9
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDMzNTNhMzZjMTg3NWUwNzUzZWYzYmRhOTAxYTMyN2Vl
ZjYxOGEyZTAuLjZjZGQxNGJkMDk0M2U5MGUwODhmNzRkNmVmMWQwMjI5MGUxZTFhYWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dApAQCAtNzU1LDYgKzc1NSw3IEBAIFdlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlh
U3RyYXRlZ3kuY3BwCiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAog
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAogV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAKK1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5LmNwcAogV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKIFdlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcAogCkBAIC04ODYsNiArODg3LDcg
QEAgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlR1BVTWVz
c2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlR1BVUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVWaWRlb0ZyYW1lUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVQaXBlbGluZUxheW91dE1lc3NhZ2VSZWNlaXZl
ci5jcHAKIFJlbW90ZVF1ZXJ5U2V0TWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5LmNwcAppbmRleCAyYWY3ODI5MGY1MDczZWExYzk3NjE5NzIzOGNmNTYyNGY2OWQ4YTFh
Li4yZDdkYmZmZjE2NWZiNTlhNTM3YTJmZmI0Mjk4OGMyMjJiOGQ0ZTFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJl
TWFuYWdlclByb3h5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ29ubmVjdGlv
bi5oIgogI2luY2x1ZGUgIlJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIgogI2luY2x1ZGUgIlNoYXJlZFJp
bmdCdWZmZXJTdG9yYWdlLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHlNZXNzYWdlcy5o
IgpAQCAtNDAsNiArNDEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9NZWRpYUNvbnN0cmFpbnRzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNhbXBsZUFW
Rk9iakMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1JlYWx0aW1lVmlkZW9Tb3VyY2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1JlbW90ZVZpZGVvU2FtcGxlLmg+CkBAIC01NywxMSArNTksMTIgQEAgY2xhc3MgVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6U291cmNlUHJveHkKICAgICAsIHByaXZhdGUgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VmlkZW9TYW1wbGVPYnNlcnZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU291cmNlUHJveHkoUmVhbHRpbWVNZWRpYVNvdXJjZUlk
ZW50aWZpZXIgaWQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgUHJvY2Vzc0lk
ZW50aXR5JiYgcmVzb3VyY2VPd25lciwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNl
KQorICAgIFNvdXJjZVByb3h5KFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBSZWY8
SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFByb2Nlc3NJZGVudGl0eSYmIHJlc291cmNl
T3duZXIsIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSwgUmVmUHRyPFJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwPiYmIHZpZGVvRnJhbWVPYmplY3RIZWFwKQogICAgICAgICA6IG1f
aWQoaWQpCiAgICAgICAgICwgbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCiAgICAg
ICAgICwgbV9yZXNvdXJjZU93bmVyKFdURk1vdmUocmVzb3VyY2VPd25lcikpCiAgICAgICAgICwg
bV9zb3VyY2UoV1RGTW92ZShzb3VyY2UpKQorICAgICAgICAsIG1fdmlkZW9GcmFtZU9iamVjdEhl
YXAoV1RGTW92ZSh2aWRlb0ZyYW1lT2JqZWN0SGVhcCkpCiAgICAgewogICAgICAgICBtX3NvdXJj
ZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICBzd2l0Y2ggKG1fc291cmNlLT50eXBlKCkp
IHsKQEAgLTE4MywxOSArMTg2LDM1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX2NhcHR1cmVT
ZW1hcGhvcmUtPnNpZ25hbCgpOwogICAgIH0KIAotICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFi
bGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlkZW9TYW1wbGVNZXRhZGF0YSBtZXRhZGF0YSkgZmlu
YWwKKyAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHJvdGF0ZVZpZGVvRnJhbWVJZk5lZWRlZChNZWRp
YVNhbXBsZSYgc2FtcGxlKQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZp
ZGVvU2FtcGxlPiByZW1vdGVTYW1wbGU7CiAgICAgICAgIGlmIChtX3Nob3VsZEFwcGx5Um90YXRp
b24gJiYgc2FtcGxlLnZpZGVvUm90YXRpb24oKSAhPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlv
bjo6Tm9uZSkgewogICAgICAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHJvdGF0ZVBpeGVsQnVm
ZmVyKHNhbXBsZSk7Ci0gICAgICAgICAgICByZW1vdGVTYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBs
ZTo6Y3JlYXRlKHBpeGVsQnVmZmVyLmdldCgpLCBzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpKTsK
LSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZW1vdGVTYW1wbGUgPSBSZW1vdGVWaWRlb1Nh
bXBsZTo6Y3JlYXRlKHNhbXBsZSk7Ci0gICAgICAgIGlmIChyZW1vdGVTYW1wbGUpIHsKLSAgICAg
ICAgICAgIGlmIChtX3Jlc291cmNlT3duZXIpCi0gICAgICAgICAgICAgICAgcmVtb3RlU2FtcGxl
LT5zZXRPd25lcnNoaXBJZGVudGl0eShtX3Jlc291cmNlT3duZXIpOwotICAgICAgICAgICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6Vmlk
ZW9TYW1wbGVBdmFpbGFibGUobV9pZCwgV1RGTW92ZSgqcmVtb3RlU2FtcGxlKSwgbWV0YWRhdGEp
LCAwKTsKKyAgICAgICAgICAgIHJldHVybiBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdl
U2FtcGxlKFdURk1vdmUocGl4ZWxCdWZmZXIpLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6
Tm9uZSwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSwgc2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSwg
c2FtcGxlLmRlY29kZVRpbWUoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICZzYW1wbGU7
CisgICAgfQorCisgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgc2Ft
cGxlLCBWaWRlb1NhbXBsZU1ldGFkYXRhIG1ldGFkYXRhKSBmaW5hbAorICAgIHsKKyAgICAgICAg
YXV0byB2aWRlb1NhbXBsZSA9IHJvdGF0ZVZpZGVvRnJhbWVJZk5lZWRlZChzYW1wbGUpOworICAg
ICAgICBpZiAoIXZpZGVvU2FtcGxlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1
dG8gcmVtb3RlU2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZSgqdmlkZW9TYW1wbGUp
OworICAgICAgICBpZiAoIXJlbW90ZVNhbXBsZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBpZiAobV9yZXNvdXJjZU93bmVyKQorICAgICAgICAgICAgcmVtb3RlU2FtcGxlLT5zZXRP
d25lcnNoaXBJZGVudGl0eShtX3Jlc291cmNlT3duZXIpOworCisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+IHJlbW90ZUlkZW50aWZpZXI7CisgICAgICAg
IGlmIChtX3ZpZGVvRnJhbWVPYmplY3RIZWFwKSB7CisgICAgICAgICAgICByZW1vdGVJZGVudGlm
aWVyID0gbV92aWRlb0ZyYW1lT2JqZWN0SGVhcC0+Y3JlYXRlVmlkZW9GcmFtZShzYW1wbGUpOwor
ICAgICAgICAgICAgcmVtb3RlU2FtcGxlLT5jbGVhcklPU3VyZmFjZSgpOwogICAgICAgICB9CisK
KyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDYXB0dXJlU2FtcGxl
TWFuYWdlcjo6VmlkZW9TYW1wbGVBdmFpbGFibGUobV9pZCwgV1RGTW92ZSgqcmVtb3RlU2FtcGxl
KSwgcmVtb3RlSWRlbnRpZmllciwgbWV0YWRhdGEpLCAwKTsKICAgICB9CiAKICAgICBSZXRhaW5Q
dHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcm90YXRlUGl4ZWxCdWZmZXIoTWVkaWFTYW1wbGUmIHNhbXBs
ZSkKQEAgLTI2MCw2ICsyNzksNyBAQCBwcml2YXRlOgogICAgIHNpemVfdCBtX2ZyYW1lQ2h1bmtT
aXplIHsgMCB9OwogICAgIE1lZGlhVGltZSBtX3N0YXJ0VGltZTsKICAgICBib29sIG1fc2hvdWxk
UmVzZXQgeyBmYWxzZSB9OworICAgIFJlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4g
bV92aWRlb0ZyYW1lT2JqZWN0SGVhcDsKIH07CiAKIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHk6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkoVW5pcXVlUmVmPENvbm5lY3Rpb25Qcm94
eT4mJiBjb25uZWN0aW9uUHJveHkpCkBAIC0zMjQsNyArMzQ0LDcgQEAgdm9pZCBVc2VyTWVkaWFD
YXB0dXJlTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRo
Q29uc3RyYWkKICAgICAgICAgfQogCiAgICAgICAgIEFTU0VSVCghbV9wcm94aWVzLmNvbnRhaW5z
KGlkKSk7Ci0gICAgICAgIGF1dG8gcHJveHkgPSBtYWtlVW5pcXVlPFNvdXJjZVByb3h5PihpZCwg
bV9jb25uZWN0aW9uUHJveHktPmNvbm5lY3Rpb24oKSwgUHJvY2Vzc0lkZW50aXR5IHsgbV9jb25u
ZWN0aW9uUHJveHktPnJlc291cmNlT3duZXIoKSB9LCBXVEZNb3ZlKHNvdXJjZSkpOworICAgICAg
ICBhdXRvIHByb3h5ID0gbWFrZVVuaXF1ZTxTb3VyY2VQcm94eT4oaWQsIG1fY29ubmVjdGlvblBy
b3h5LT5jb25uZWN0aW9uKCksIFByb2Nlc3NJZGVudGl0eSB7IG1fY29ubmVjdGlvblByb3h5LT5y
ZXNvdXJjZU93bmVyKCkgfSwgV1RGTW92ZShzb3VyY2UpLCBtX2Nvbm5lY3Rpb25Qcm94eS0+cmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXAoKSk7CiAgICAgICAgIG1fcHJveGllcy5hZGQoaWQsIFdU
Rk1vdmUocHJveHkpKTsKICAgICB9IGVsc2UKICAgICAgICAgaW52YWxpZENvbnN0cmFpbnRzID0g
V1RGTW92ZShzb3VyY2VPckVycm9yLmVycm9yTWVzc2FnZSk7CkBAIC0zOTAsNyArNDEwLDcgQEAg
dm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpjbG9uZShSZWFsdGltZU1lZGlhU291
cmNlSWRlbnRpZmllciBjbG9uZWRJRCwKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJveGllcy5jb250
YWlucyhjbG9uZWRJRCkpOwogICAgIE1FU1NBR0VfQ0hFQ0soIW1fcHJveGllcy5jb250YWlucyhu
ZXdTb3VyY2VJRCkpOwogICAgIGlmIChhdXRvKiBwcm94eSA9IG1fcHJveGllcy5nZXQoY2xvbmVk
SUQpKQotICAgICAgICBtX3Byb3hpZXMuYWRkKG5ld1NvdXJjZUlELCBtYWtlVW5pcXVlPFNvdXJj
ZVByb3h5PihuZXdTb3VyY2VJRCwgbV9jb25uZWN0aW9uUHJveHktPmNvbm5lY3Rpb24oKSwgUHJv
Y2Vzc0lkZW50aXR5IHsgbV9jb25uZWN0aW9uUHJveHktPnJlc291cmNlT3duZXIoKSB9LCBwcm94
eS0+c291cmNlKCkuY2xvbmUoKSkpOworICAgICAgICBtX3Byb3hpZXMuYWRkKG5ld1NvdXJjZUlE
LCBtYWtlVW5pcXVlPFNvdXJjZVByb3h5PihuZXdTb3VyY2VJRCwgbV9jb25uZWN0aW9uUHJveHkt
PmNvbm5lY3Rpb24oKSwgUHJvY2Vzc0lkZW50aXR5IHsgbV9jb25uZWN0aW9uUHJveHktPnJlc291
cmNlT3duZXIoKSB9LCBwcm94eS0+c291cmNlKCkuY2xvbmUoKSwgbV9jb25uZWN0aW9uUHJveHkt
PnJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKCkpKTsKIH0KIAogdm9pZCBVc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5OjpyZXF1ZXN0VG9FbmQoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZp
ZXIgc291cmNlSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmgKaW5kZXggZmE4MjljN2M0OTAzZDUx
YjU3YTc4OTcxNzg0NzNmODBjYmYyODZkZS4uZDBlNDZiYjliNzU1ZWFlNTU3NWNlOGM5ZTRiYTlm
YWY1MTM1MDkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaApAQCAtMjksNiArMjksNyBAQAog
CiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgor
I2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCiAjaW5jbHVkZSAiVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NhcHR1cmVEZXZpY2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL09yaWVudGF0aW9uTm90aWZpZXIuaD4KQEAgLTY1LDYgKzY2LDcg
QEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VENDSWRlbnRpdHkoKSB7IH0KICNl
bmRpZgogICAgICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUpIHsgfQorICAgICAgICB2aXJ0dWFsIFJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwKiByZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCgpIHsgcmV0dXJuIG51
bGxwdHI7IH0KICAgICB9OwogICAgIGV4cGxpY2l0IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkoVW5pcXVlUmVmPENvbm5lY3Rpb25Qcm94eT4mJik7CiAgICAgflVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDNhODU0ZGQwZTA5M2VjMDNiOGFhMWU3MzgzYjBjYWJjYjBhZDViNTIu
LjI0NzE1NTVmZjRiMjFiOWUwYTk4ZWMwYWNhNDJlMGJlZjc0NTc5MDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDA3MCw2ICs0MDcw
LDkgQEAKIAkJNDExQThERDkyMEREQjYwNTAwNjBEMzRGIC8qIFdLTW9ja01lZGlhRGV2aWNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTW9ja01lZGlhRGV2aWNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMUE4RERBMjBEREI2MDUwMDYwRDM0RiAvKiBX
S01vY2tNZWRpYURldmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXS01vY2tNZWRpYURldmljZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
MUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ05ldHdvcmsuaDsgcGF0aCA9IE5ldHdvcmsv
d2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDExQjg5RTQyN0I1RDU4MjAwRjlFQkQzIC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJv
eHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5tZXNz
YWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExQjg5RTUyN0I1RDU4MzAw
RjlFQkQzIC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0MTFCODlFNjI3QjVENTg0MDBGOUVCRDMgLyogUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXBQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEyODdENEIy
MjVDMDVDNDAwOUEzRTI2IC8qIFdlYlNvY2tldFRhc2tDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNvY2tldFRhc2tDb2NvYS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEyODdENEMyMjVDMDVDNTAwOUEzRTI2IC8qIFdlYlNvY2tl
dFRhc2tDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRU
YXNrQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEyODdENEQyMjVDMTYx
RjAwOUEzRTI2IC8qIFdlYlNvY2tldFRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViU29ja2V0VGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDE3
MSw3ICs0MTc0LDYgQEAKIAkJNDFDM0I4OTQyNjQ5M0I3QzAwNEVENERFIC8qIFJlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFn
ZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzUzNzhGMjFG
MTM2MkQwMDhCMUZBRCAvKiBfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzg1ODE5MUY1MTBERUUwMDY1RTA4NSAvKiBD
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTQxQ0I4NDAzMjVDQUJGN0MwMDEwRTJCMSAvKiBNZWRpYVJlY29yZGVyUHJpdmF0
ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhUmVjb3JkZXJQcml2YXRlLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUQxMjlEOTFGM0QxMDE0MDBEMTVFNDcgLyogV2Vi
Q2FjaGVTdG9yYWdlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ2FjaGVTdG9yYWdlUHJv
dmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFENUM2RDgyMzhFQjIwRDAw
QjlCM0NCIC8qIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDVDNkQ5MjM4RUIyMEUwMEI5QjNDQiAvKiBTZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC05MjgwLDExICs5MjgyLDEzIEBACiAJCQkJNDE3NkU4OTcyM0Mz
NjFCRDAwM0U4M0ZFIC8qIE1lZGlhUmVjb3JkZXJJZGVudGlmaWVyLmggKi8sCiAJCQkJNDE3NkU4
OTQyM0MzNEUyNjAwM0U4M0ZFIC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlLmNwcCAqLywKIAkJCQk0
MTc2RTg5NTIzQzM0RTI3MDAzRTgzRkUgLyogTWVkaWFSZWNvcmRlclByaXZhdGUuaCAqLywKLQkJ
CQk0MUNCODQwMzI1Q0FCRjdDMDAxMEUyQjEgLyogTWVkaWFSZWNvcmRlclByaXZhdGUubW0gKi8s
CiAJCQkJNDE3NkU4OTMyM0MzNEQ2RjAwM0U4M0ZFIC8qIE1lZGlhUmVjb3JkZXJQcm92aWRlci5j
cHAgKi8sCiAJCQkJNDE3NkU4OTIyM0MzNEQ2RTAwM0U4M0ZFIC8qIE1lZGlhUmVjb3JkZXJQcm92
aWRlci5oICovLAogCQkJCTQxNzIxOThDMjNCNjEyRTgwMEFFNTY4NiAvKiBSVENEZWNvZGVySWRl
bnRpZmllci5oICovLAogCQkJCTQxNTg2NDlBMjNCRTA5MjQwMEEwQTYxRSAvKiBSVENFbmNvZGVy
SWRlbnRpZmllci5oICovLAorCQkJCTQxMUI4OUU2MjdCNUQ1ODQwMEY5RUJEMyAvKiBSZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5LmNwcCAqLywKKwkJCQk0MTFCODlFNTI3QjVENTgzMDBG
OUVCRDMgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5oICovLAorCQkJCTQxMUI4
OUU0MjdCNUQ1ODIwMEY5RUJEMyAvKiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5Lm1l
c3NhZ2VzLmluICovLAogCQkJCTQxRkNENkI3MjNDREU1M0QwMEM2MjU2NyAvKiBTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIuY3BwICovLAogCQkJCTQxRkNENkIzMjNDREM2MDQwMEM2MjU2NyAvKiBT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCAqLywKIAkJCQk0MUZDRDZCODIzQ0RFNTNFMDBDNjI1
NjcgLyogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmluICovLApAQCAtMTM0NDQs
NyArMTM0NDgsNiBAQAogCQkJCUUxOEU2OTE4MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hp
bVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MEFCOEYzMjBBRTNCRDcwMEI4
QkU4NyAvKiBTZWNLZXlQcm94eVN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTREOUY1NzE5
MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk1MTY0NjU4MDI3QTlDNzc0MDBFMUYyQkEgLyogU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhh
bmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRkRFNjVBMTk1NEE0MkIwMEM0OEZGQSAvKiBT
ZXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDAyRDQ5MTk2QjM0NUQwMEI5QUQ0
NCAvKiBTZXNzaW9uU3RhdGVDb2RpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRTc5OUNFMjc2
MDQ5N0IwMDc0MDA4QSAvKiBTZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLmNwcAppbmRleCA1YzVkZTE4MjEyNjdiZDg1NmRlZTU3NzE2NWY0NTRjYmQ0MjQyN2VhLi4y
OGYzNzg3NjM5M2JjM2FjNTdlNDRmZDczZWExMjQ3N2QyNDkyZGUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAt
NDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIlJlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZh
Y3RvcnkuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCIKICNpbmNsdWRl
ICJSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIK
QEAgLTE2NCw2ICsxNjUsMTMgQEAgdm9pZCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6cmVzZXRBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdChBdWRpb00KIHsKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5hdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdE1hbmFnZXIoKS5yZXNldChpZGVudGlmaWVyKTsKIH0KKworUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXBQcm94eSYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OnJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwUHJveHkoKQoreworICAgIGlmICghbV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFBy
b3h5KQorICAgICAgICBtX3JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkgPSBSZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5OjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiAqbV9y
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5OworfQogI2VuZGlmCiAKIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlciYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246Om1lZGlhUGxheWVyTWFuYWdlcigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLmgKaW5kZXggM2Y5OGNiMTA5Nzc2MzQ2NmFiMjA1ZGFhMDBlYTZjNTE2ZjkxMjNmNS4uODEz
YTA1NDY5NzJjYzMyYWQ2MmFjOWZhMjhkMTFlNTRjYTVmZWY2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNTEsNiAr
NTEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUmVtb3RlQXVkaW9Tb3VyY2VQcm92
aWRlck1hbmFnZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI7CitjbGFzcyBSZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5OwogY2xhc3MgU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyTWFuYWdlcjsKIGNsYXNzIFdlYlBhZ2U7CiBzdHJ1Y3QgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25J
bml0aWFsaXphdGlvblBhcmFtZXRlcnM7CkBAIC03Nyw2ICs3OCw3IEBAIHB1YmxpYzoKICNpZiBQ
TEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNYW5hZ2VyJiBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCk7CiAg
ICAgdm9pZCByZXNldEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0KEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllcik7CisgICAg
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSYgcmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXBQcm94eSgpOwogI2VuZGlmCiAKICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXImIG1lZGlh
UGxheWVyTWFuYWdlcigpOwpAQCAtMTQwLDYgKzE0Miw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICNp
ZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcj4gbV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNYW5hZ2VyOworICAgIFJlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFBy
b3h5PiBtX3JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk7CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShDT0NPQSkgJiYgRU5BQkxFKFdFQl9BVURJTykKICAgICBSZWZQdHI8UmVtb3RlQXVkaW9T
b3VyY2VQcm92aWRlck1hbmFnZXI+IG1fYXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJh
bWVJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgKaW5kZXggZjQyNTAyNjE1ZGEyNzJiM2JmNDZjZjQ2NDk2
MWI3ZjhlYjJhMWYxYS4uZmIwMDFkYTc0ODIzOWYzOGRkOWVkMDMyNWM1OWI3YjgzYzkyNTg3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRl
b0ZyYW1lSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaApAQCAtMjgsMTIgKzI4LDEzIEBACiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAi
T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1By
b2Nlc3NRdWFsaWZpZWQuaD4KICNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogZW51bSBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllclR5cGUg
eyB9OwotdXNpbmcgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVy
PFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyVHlwZT47Cit1c2luZyBSZW1vdGVWaWRlb0ZyYW1l
SWRlbnRpZmllciA9IFdlYkNvcmU6OlByb2Nlc3NRdWFsaWZpZWQ8T2JqZWN0SWRlbnRpZmllcjxS
ZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllclR5cGU+PjsKIHVzaW5nIFJlbW90ZVZpZGVvRnJhbWVS
ZWFkUmVmZXJlbmNlID0gT2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2U8UmVtb3RlVmlkZW9G
cmFtZUlkZW50aWZpZXI+OwogdXNpbmcgUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlID0g
T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVy
PjsKIHVzaW5nIFJlbW90ZVZpZGVvRnJhbWVSZWZlcmVuY2UgPSBPYmplY3RJZGVudGlmaWVyUmVm
ZXJlbmNlPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNw
cAppbmRleCA0YTAyNmYxYTRkNjQ1ZmVjYzJhNjFkNDA0MGFhYTdiNDFkNTA1MTgxLi5iZGU2OWMz
NzQ4YThiNTEyOTQwNzUwODA1MWQ4NTY0NTZkODYyNTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHku
Y3BwCkBAIC0zMCwxMiArMzAsMjAgQEAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgiCiAjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4gUmVtb3RlVmlkZW9GcmFtZVBy
b3h5OjpjcmVhdGUoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uKQor
UmVmPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4gUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpjcmVhdGUo
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBQaXhlbEJ1ZmZlckNh
bGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVWaWRl
b0ZyYW1lUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlVmlkZW9G
cmFtZVByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmll
cjo6Z2VuZXJhdGUoKSwgV1RGTW92ZShjYWxsYmFjaykpKTsKK30KKworUmVmPFJlbW90ZVZpZGVv
RnJhbWVQcm94eT4gUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpjcmVhdGVBbHJlYWR5SW5pdGlhbGl6
ZWQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uSUQsIFJlbW90ZVZpZGVvRnJh
bWVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnRpZXMgcHJvcGVydGllcywgUGl4ZWxCdWZm
ZXJDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGF1dG8gZnJhbWUgPSBhZG9wdFJlZigqbmV3
IFJlbW90ZVZpZGVvRnJhbWVQcm94eShjb25uZWN0aW9uSUQsIGlkZW50aWZpZXIsIFdURk1vdmUo
Y2FsbGJhY2spKSk7CisgICAgZnJhbWUtPndhc0luaXRpYWxpemVkKHByb3BlcnRpZXMpOworICAg
IHJldHVybiBmcmFtZTsKIH0KIAogUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzIFJl
bW90ZVZpZGVvRnJhbWVQcm94eTo6cHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBs
ZSYgbWVkaWFTYW1wbGUpCkBAIC00MywxNiArNTEsMjggQEAgUmVtb3RlVmlkZW9GcmFtZVByb3h5
OjpQcm9wZXJ0aWVzIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cHJvcGVydGllcyhjb25zdCBXZWJD
b3IKICAgICByZXR1cm4gewogICAgICAgICBtZWRpYVNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCks
CiAgICAgICAgIG1lZGlhU2FtcGxlLnZpZGVvTWlycm9yZWQoKSwKLSAgICAgICAgbWVkaWFTYW1w
bGUudmlkZW9Sb3RhdGlvbigpCisgICAgICAgIG1lZGlhU2FtcGxlLnZpZGVvUm90YXRpb24oKSwK
KyAgICAgICAgbWVkaWFTYW1wbGUucHJlc2VudGF0aW9uU2l6ZSgpLAorICAgICAgICBtZWRpYVNh
bXBsZS52aWRlb1BpeGVsRm9ybWF0KCkKICAgICB9OwogfQogCi1SZW1vdGVWaWRlb0ZyYW1lUHJv
eHk6OlJlbW90ZVZpZGVvRnJhbWVQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24sIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OlJlbW90ZVZpZGVvRnJhbWVQcm94eShHUFVQcm9jZXNzQ29ubmVj
dGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFBpeGVsQnVmZmVyQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICA6IG1fZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oJmdwdVByb2Nlc3NDb25uZWN0aW9uKQorICAgICwgbV9jb25uZWN0aW9u
SUQoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnVuaXF1ZUlEKCkpCiAgICAgLCBt
X3JlZmVyZW5jZVRyYWNrZXIoaWRlbnRpZmllcikKKyAgICAsIG1fcGl4ZWxCdWZmZXJDYWxsYmFj
ayhXVEZNb3ZlKGNhbGxiYWNrKSkKIHsKICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5hZGRD
bGllbnQoKnRoaXMpOwotICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZl
ck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOwor
ICAgIGlmIChpZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gUHJvY2Vzczo6aWRlbnRp
ZmllcigpKQorICAgICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJN
YXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyLm9iamVjdCgpLnRvVUludDY0KCksICp0
aGlzKTsKK30KKworUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHko
SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uSUQsIFJlbW90ZVZpZGVvRnJhbWVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFBpeGVsQnVmZmVyQ2FsbGJhY2smJiBjYWxsYmFjaykKKyAg
ICA6IG1fY29ubmVjdGlvbklEKGNvbm5lY3Rpb25JRCkKKyAgICAsIG1fcmVmZXJlbmNlVHJhY2tl
cihpZGVudGlmaWVyKQorICAgICwgbV9waXhlbEJ1ZmZlckNhbGxiYWNrKFdURk1vdmUoY2FsbGJh
Y2spKQorewogfQogCiBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlJlbW90ZVZpZGVvRnJhbWVQcm94
eSgpCkBAIC02Myw2ICs4Myw3IEBAIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UmVtb3RlVmlkZW9G
cmFtZVByb3h5KCkKIAogUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp+UmVtb3RlVmlkZW9GcmFtZVBy
b3h5KCkKIHsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG1ha2Ugc3VyZSB0byBjbG9zZSBpbiB3
aGF0ZXZlciB0aHJlYWQgYnV0IGRpc2Nvbm5lY3QgaW4gbWFpbiB0aHJlYWQuCiAgICAgZGlzY29u
bmVjdEdQVVByb2Nlc3NJZk5lZWRlZCgpOwogfQogCkBAIC04MSw2ICsxMDIsMjggQEAgUmVtb3Rl
VmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpyZWFkKCkgY29u
c3QKICAgICByZXR1cm4gbV9yZWZlcmVuY2VUcmFja2VyLnJlYWQoKTsKIH0KIAordm9pZCBSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OmdldFBpeGVsQnVmZmVyKCkKK3sKKyAgICBBU1NFUlQobV9waXhl
bEJ1ZmZlckxvY2suaXNIZWxkKCkpOworICAgIHN0ZDo6ZXhjaGFuZ2UobV9waXhlbEJ1ZmZlckNh
bGxiYWNrLCB7IH0pKCp0aGlzLCBbdGhpc10oYXV0byBwaXhlbEJ1ZmZlcikgeworICAgICAgICBt
X3BpeGVsQnVmZmVyID0gV1RGTW92ZShwaXhlbEJ1ZmZlcik7CisgICAgICAgIGlmICghbV9waXhl
bEJ1ZmZlcikgeworICAgICAgICAgICAgLy8gc29tZSBjb2RlIHBhdGhzIGRvIG5vdCBsaWtlIGVt
cHR5IHBpeGVsIGJ1ZmZlcnMuCisgICAgICAgICAgICBtX3BpeGVsQnVmZmVyID0gV2ViQ29yZTo6
Y3JlYXRlQmxhY2tQaXhlbEJ1ZmZlcihzdGF0aWNfY2FzdDxzaXplX3Q+KG1fc2l6ZS53aWR0aCgp
KSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX3NpemUuaGVpZ2h0KCkpKTsKKyAgICAgICAgfQorICAg
ICAgICBtX3NlbWFwaG9yZS5zaWduYWwoKTsKKyAgICB9KTsKKyAgICBtX3NlbWFwaG9yZS53YWl0
KCk7Cit9CisKK0NWUGl4ZWxCdWZmZXJSZWYgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpwaXhlbEJ1
ZmZlcigpIGNvbnN0Cit7CisgICAgTG9ja2VyIGxvY2sobV9waXhlbEJ1ZmZlckxvY2spOworICAg
IGlmICghbV9waXhlbEJ1ZmZlciAmJiBtX3BpeGVsQnVmZmVyQ2FsbGJhY2spCisgICAgICAgIGNv
bnN0X2Nhc3Q8UmVtb3RlVmlkZW9GcmFtZVByb3h5Kj4odGhpcyktPmdldFBpeGVsQnVmZmVyKCk7
CisgICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXIuZ2V0KCk7Cit9CisKIE1lZGlhVGltZSBSZW1vdGVW
aWRlb0ZyYW1lUHJveHk6OnByZXNlbnRhdGlvblRpbWUoKSBjb25zdAogewogICAgICh2b2lkKSB3
YWl0Rm9yV2FzSW5pdGlhbGl6ZWQoKTsKQEAgLTEwNiw5ICsxNDksOCBAQCBib29sIFJlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6dmlkZW9NaXJyb3JlZCgpIGNvbnN0CiAKIHVpbnQzMl90IFJlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6dmlkZW9QaXhlbEZvcm1hdCgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6
IFJlbW92ZSBmcm9tIHRoZSBiYXNlIGNsYXNzLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiAwOworICAgICh2b2lkKSB3YWl0Rm9yV2FzSW5pdGlhbGl6ZWQoKTsKKyAgICBy
ZXR1cm4gbV9waXhlbEZvcm1hdDsKIH0KIAogYm9vbCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Omhh
bmRsZU1lc3NhZ2VUb1JlbW92ZWREZXN0aW5hdGlvbihJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIpCkBAIC0xMjgsMTggKzE3MCwyMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6Ok1lZGlhU2FtcGxlVmlkZW9GcmFtZT4gUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb0Zy
YW1lKAogdm9pZCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmRpc2Nvbm5lY3RHUFVQcm9jZXNzSWZO
ZWVkZWQoKSBjb25zdAogewogICAgIGlmIChhdXRvIGdwdVByb2Nlc3NDb25uZWN0aW9uID0gc3Rk
OjpleGNoYW5nZShtX2dwdVByb2Nlc3NDb25uZWN0aW9uLCBudWxscHRyKSkgeworICAgICAgICBB
U1NFUlQoaWRlbnRpZmllcigpLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gUHJvY2Vzczo6aWRlbnRp
ZmllcigpKTsKICAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPnJlbW92ZUNsaWVudCgqdGhp
cyk7Ci0gICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7Ci0gICAgICAgIGdw
dVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXA6OlJlbGVhc2VWaWRlb0ZyYW1lKHdyaXRlKCkpLCAwLCBJUEM6OlNl
bmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7Cisg
ICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkub2JqZWN0KCkudG9VSW50NjQoKSk7CiAgICAgfQor
ICAgIGlmIChtX2Nvbm5lY3Rpb25JRCkKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKCpt
X2Nvbm5lY3Rpb25JRCwgTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpSZWxl
YXNlVmlkZW9GcmFtZSh3cml0ZSgpKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3Nh
Z2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQogCiBib29sIFJlbW90ZVZpZGVvRnJh
bWVQcm94eTo6d2FpdEZvcldhc0luaXRpYWxpemVkKCkgY29uc3QKIHsKICAgICBpZiAobV93YXNJ
bml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBBU1NFUlQoaWRlbnRpZmll
cigpLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gUHJvY2Vzczo6aWRlbnRpZmllcigpKTsKICAgICBp
ZiAobV9ncHVQcm9jZXNzQ29ubmVjdGlvbikgewotICAgICAgICBpZiAobV9ncHVQcm9jZXNzQ29u
bmVjdGlvbi0+Y29ubmVjdGlvbigpLndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3Nh
Z2VzOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Oldhc0luaXRpYWxpemVkPihpZGVudGlmaWVyKCku
dG9VSW50NjQoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KSkKKyAgICAgICAgaWYgKG1fZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxN
ZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpXYXNJbml0aWFsaXplZD4oaWRlbnRpZmll
cigpLm9iamVjdCgpLnRvVUludDY0KCksIGRlZmF1bHRTZW5kVGltZW91dCkpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGlzY29ubmVjdEdQVVByb2Nlc3NJZk5lZWRlZCgpOwog
ICAgIH0KQEAgLTE1MCw3ICsxOTYsOCBAQCB2b2lkIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6Z3B1
UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpCiB7CiAgICAg
YXV0byBncHVQcm9jZXNzQ29ubmVjdGlvbiA9IHN0ZDo6ZXhjaGFuZ2UobV9ncHVQcm9jZXNzQ29u
bmVjdGlvbiwgbnVsbHB0cik7CiAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPnJlbW92ZUNsaWVu
dCgqdGhpcyk7Ci0gICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgp
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICBBU1NF
UlQoaWRlbnRpZmllcigpLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gUHJvY2Vzczo6aWRlbnRpZmll
cigpKTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpLm9iamVjdCgpLnRvVUludDY0KCkpOwogfQog
CiB2b2lkIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6d2FzSW5pdGlhbGl6ZWQoc3RkOjpvcHRpb25h
bDxQcm9wZXJ0aWVzPiYmIHByb3BlcnRpZXMpCkBAIC0xNjMsNiArMjEwLDggQEAgdm9pZCBSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6Ondhc0luaXRpYWxpemVkKHN0ZDo6b3B0aW9uYWw8UHJvcGVydGll
cz4mJiBwcm9wZXJ0aWUKICAgICBtX3ByZXNlbnRhdGlvblRpbWUgPSBwcm9wZXJ0aWVzLT5wcmVz
ZW50YXRpb25UaW1lOwogICAgIG1fdmlkZW9Jc01pcnJvcmVkID0gcHJvcGVydGllcy0+dmlkZW9J
c01pcnJvcmVkOwogICAgIG1fdmlkZW9Sb3RhdGlvbiA9IHByb3BlcnRpZXMtPnZpZGVvUm90YXRp
b247CisgICAgbV9zaXplID0gcHJvcGVydGllcy0+c2l6ZTsKKyAgICBtX3BpeGVsRm9ybWF0ID0g
cHJvcGVydGllcy0+cGl4ZWxGb3JtYXQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oCmluZGV4
IGQ5NWVhYWY1NWRjODM5MjE1ZjA1Y2I2NmFkYTQyMzFkNjQzMGI2YmMuLjk3NmNjNmNlNTJhYmM5
MTM0MDU1MDcwZGU0YmRhODdhNDMxYmZhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaApAQCAtMzEs
NiArMzEsOCBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJlbW90
ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9WaWRlb0ZyYW1lLmg+
CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5
U2VtYXBob3JlLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKQEAgLTQ1
LDE4ICs0NywyNiBAQCBjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lUHJveHkgZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6VmlkZW9GcmFtZSwgcHJpdmF0ZSBJUEM6Ok1lcwogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbW90ZVZpZGVvRnJhbWVQcm94
eSk7CiBwdWJsaWM6CisgICAgdXNpbmcgUGl4ZWxCdWZmZXJSZXN1bHRDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYpPjsKKyAgICAvLyBDb21wbGV0
aW9uSGFuZGxlciBidXQgaXQgbWlnaHQgbm90IGJlIGNhbGxlZCBvbiB0aGUgc2FtZSB0aHJlYWQu
CisgICAgdXNpbmcgUGl4ZWxCdWZmZXJDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVt
b3RlVmlkZW9GcmFtZVByb3h5JiwgUGl4ZWxCdWZmZXJSZXN1bHRDYWxsYmFjayYmKT47CisKICAg
ICAvLyBDcmVhdGVzIGEgcHJvbWlzZSBvZiBhIE1lZGlhU2FtcGxlIHRoYXQgZXhpc3RzIGluIEdQ
VSBwcm9jZXNzLiBUaGUgb2JqZWN0IGNhbiBiZSB1c2VkIGFzIG91dCBwYXJhbWV0ZXIgb2YgdGhl
IGNyZWF0aW9uIG1lc3NhZ2UuCi0gICAgc3RhdGljIFJlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lUHJv
eHk+IGNyZWF0ZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpOworICAgIHN0YXRpYyBSZWY8UmVtb3Rl
VmlkZW9GcmFtZVByb3h5PiBjcmVhdGUoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBQaXhlbEJ1ZmZl
ckNhbGxiYWNrJiYgPSB7IH0pOwogCiAgICAgc3RydWN0IFByb3BlcnRpZXMgewogICAgICAgICBN
ZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZTsKICAgICAgICAgYm9vbCB2aWRlb0lzTWlycm9yZWQg
eyBmYWxzZSB9OwogICAgICAgICBWaWRlb1JvdGF0aW9uIHZpZGVvUm90YXRpb24geyBWaWRlb1Jv
dGF0aW9uOjpOb25lIH07CisgICAgICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplOworICAgICAg
ICB1aW50MzJfdCBwaXhlbEZvcm1hdDsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3BlcnRpZXM+IGRlY29kZShEZWNv
ZGVyJik7CiAgICAgfTsKIAorICAgIHN0YXRpYyBSZWY8UmVtb3RlVmlkZW9GcmFtZVByb3h5PiBj
cmVhdGVBbHJlYWR5SW5pdGlhbGl6ZWQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgUmVtb3Rl
VmlkZW9GcmFtZUlkZW50aWZpZXIsIFByb3BlcnRpZXMsIFBpeGVsQnVmZmVyQ2FsbGJhY2smJik7
CisKICAgICBzdGF0aWMgUHJvcGVydGllcyBwcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6Ok1lZGlh
U2FtcGxlJik7CiAKICAgICB+UmVtb3RlVmlkZW9GcmFtZVByb3h5KCkgZmluYWw7CkBAIC02NSwx
OCArNzUsMTIgQEAgcHVibGljOgogICAgIFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSB3
cml0ZSgpIGNvbnN0OwogICAgIFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlIHJlYWQoKSBj
b25zdDsKIAotICAgIC8vIFdlYkNvcmU6OlZpZGVvRnJhbWUgb3ZlcnJpZGVzLgotICAgIE1lZGlh
VGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3QgZmluYWw7Ci0gICAgVmlkZW9Sb3RhdGlvbiB2
aWRlb1JvdGF0aW9uKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCB2aWRlb01pcnJvcmVkKCkgY29u
c3QgZmluYWw7Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYVNhbXBsZVZpZGVvRnJh
bWU+IHZpZGVvRnJhbWUoKSBjb25zdCBmaW5hbDsKLSAgICAvLyBGSVhNRTogV2hlbiBWaWRlb0Zy
YW1lIGlzIG5vdCBNZWRpYVNhbXBsZSwgdGhlc2Ugd2lsbCBub3QgYmUgbmVlZGVkLgotICAgIFdl
YkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3QgZmluYWw7Ci0gICAg
dWludDMyX3QgdmlkZW9QaXhlbEZvcm1hdCgpIGNvbnN0IGZpbmFsOworICAgIENWUGl4ZWxCdWZm
ZXJSZWYgcGl4ZWxCdWZmZXIoKSBjb25zdCBmaW5hbDsKIAogICAgIHN0YXRpYyBib29sIGhhbmRs
ZU1lc3NhZ2VUb1JlbW92ZWREZXN0aW5hdGlvbihJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKTsKIHByaXZhdGU6Ci0gICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5KEdQVVByb2Nlc3NDb25u
ZWN0aW9uJiwgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIpOworICAgIFJlbW90ZVZpZGVvRnJh
bWVQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYsIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVy
LCBQaXhlbEJ1ZmZlckNhbGxiYWNrJiYpOworICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94eShJUEM6
OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciwgUGl4ZWxC
dWZmZXJDYWxsYmFjayYmKTsKICAgICBSZW1vdGVWaWRlb0ZyYW1lUHJveHkoKTsKICAgICB2b2lk
IGRpc2Nvbm5lY3RHUFVQcm9jZXNzSWZOZWVkZWQoKSBjb25zdDsKICAgICBib29sIHdhaXRGb3JX
YXNJbml0aWFsaXplZCgpIGNvbnN0IFdBUk5fVU5VU0VEX1JFVFVSTjsKQEAgLTg3LDIzICs5MSw0
NCBAQCBwcml2YXRlOgogICAgIC8vIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQgb3ZlcnJp
ZGVzLgogICAgIHZvaWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29u
bmVjdGlvbiYpIGZpbmFsOwogCisgICAgLy8gV2ViQ29yZTo6VmlkZW9GcmFtZSBvdmVycmlkZXMu
CisgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUoKSBjb25zdCBmaW5hbDsKKyAgICBWaWRl
b1JvdGF0aW9uIHZpZGVvUm90YXRpb24oKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHZpZGVvTWly
cm9yZWQoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhU2Ft
cGxlVmlkZW9GcmFtZT4gdmlkZW9GcmFtZSgpIGNvbnN0IGZpbmFsOworICAgIC8vIEZJWE1FOiBX
aGVuIFZpZGVvRnJhbWUgaXMgbm90IE1lZGlhU2FtcGxlLCB0aGVzZSB3aWxsIG5vdCBiZSBuZWVk
ZWQuCisgICAgV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBm
aW5hbDsKKyAgICB1aW50MzJfdCB2aWRlb1BpeGVsRm9ybWF0KCkgY29uc3QgZmluYWw7CisgICAg
V2ViQ29yZTo6RmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX3NpemU7IH0KKwogICAgIC8vIE1lc3NhZ2VzLgogICAgIHZvaWQgd2FzSW5pdGlhbGl6ZWQo
c3RkOjpvcHRpb25hbDxQcm9wZXJ0aWVzPiYmKTsKICAgICBzdGF0aWMgaW5saW5lIFNlY29uZHMg
ZGVmYXVsdFNlbmRUaW1lb3V0ID0gMzBfczsKIAorICAgIHZvaWQgZ2V0UGl4ZWxCdWZmZXIoKTsK
KwogICAgIG11dGFibGUgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24qIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24geyBudWxscHRyIH07CisgICAgc3RkOjpvcHRpb25hbDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1
ZUlEPiBtX2Nvbm5lY3Rpb25JRDsKICAgICBSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlVHJhY2tl
ciBtX3JlZmVyZW5jZVRyYWNrZXI7CiAgICAgbXV0YWJsZSBib29sIG1fd2FzSW5pdGlhbGl6ZWQg
eyBmYWxzZSB9OwogICAgIE1lZGlhVGltZSBtX3ByZXNlbnRhdGlvblRpbWU7CiAgICAgYm9vbCBt
X3ZpZGVvSXNNaXJyb3JlZCB7IGZhbHNlIH07CiAgICAgVmlkZW9Sb3RhdGlvbiBtX3ZpZGVvUm90
YXRpb24geyBWaWRlb1JvdGF0aW9uOjpOb25lIH07CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1f
c2l6ZTsKKyAgICB1aW50MzJfdCBtX3BpeGVsRm9ybWF0IHsgMCB9OworICAgIG11dGFibGUgTG9j
ayBtX3BpeGVsQnVmZmVyTG9jazsKKyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gbV9w
aXhlbEJ1ZmZlcjsKKyAgICBCaW5hcnlTZW1hcGhvcmUgbV9zZW1hcGhvcmU7CisgICAgUGl4ZWxC
dWZmZXJDYWxsYmFjayBtX3BpeGVsQnVmZmVyQ2FsbGJhY2s7CiB9OwogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBFbmNvZGVyPiB2b2lkIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllczo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBwcmVzZW50YXRp
b25UaW1lCiAgICAgICAgIDw8IHZpZGVvSXNNaXJyb3JlZAotICAgICAgICA8PCB2aWRlb1JvdGF0
aW9uOworICAgICAgICA8PCB2aWRlb1JvdGF0aW9uCisgICAgICAgIDw8IHNpemUKKyAgICAgICAg
PDwgcGl4ZWxGb3JtYXQ7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0ZDo6b3B0
aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzPiBSZW1vdGVWaWRlb0ZyYW1l
UHJveHk6OlByb3BlcnRpZXM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMTExLDEyICsx
MzYsMTYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxSZW1vdGVW
aWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM+IFJlbW8KICAgICBzdGQ6Om9wdGlvbmFsPE1lZGlh
VGltZT4gcHJlc2VudGF0aW9uVGltZTsKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHZpZGVvSXNN
aXJyb3JlZDsKICAgICBzdGQ6Om9wdGlvbmFsPFZpZGVvUm90YXRpb24+IHZpZGVvUm90YXRpb247
CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+IHNpemU7CisgICAgc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gcGl4ZWxGb3JtYXQ7CiAgICAgZGVjb2RlciA+PiBwcmVzZW50YXRp
b25UaW1lCiAgICAgICAgID4+IHZpZGVvSXNNaXJyb3JlZAotICAgICAgICA+PiB2aWRlb1JvdGF0
aW9uOworICAgICAgICA+PiB2aWRlb1JvdGF0aW9uCisgICAgICAgID4+IHNpemUKKyAgICAgICAg
Pj4gcGl4ZWxGb3JtYXQ7CiAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gUHJvcGVydGllcyB7IFdURk1vdmUoKnByZXNl
bnRhdGlvblRpbWUpLCAqdmlkZW9Jc01pcnJvcmVkLCAqdmlkZW9Sb3RhdGlvbiB9OworICAgIHJl
dHVybiBQcm9wZXJ0aWVzIHsgV1RGTW92ZSgqcHJlc2VudGF0aW9uVGltZSksICp2aWRlb0lzTWly
cm9yZWQsICp2aWRlb1JvdGF0aW9uLCAqc2l6ZSwgKnBpeGVsRm9ybWF0IH07CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9G
cmFtZVByb3h5SWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVWaWRlb0ZyYW1lUHJveHlJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDc5MmMwNDg2
NTBkMGNhMjY0NjAwMDcyMzQ2NzAzMjgyZTcyYTRkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5SWRlbnRp
Zmllci5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJPYmplY3RJZGVudGlmaWVyUmVmZXJl
bmNlVHJhY2tlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZp
ZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIFJlbW90ZVZpZGVvRnJhbWVSZWFk
UmVmZXJlbmNlID0gT2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2U8V2ViQ29yZTo6UmVtb3Rl
VmlkZW9GcmFtZUlkZW50aWZpZXI+OwordXNpbmcgUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJl
bmNlID0gT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlPFdlYkNvcmU6OlJlbW90ZVZpZGVv
RnJhbWVJZGVudGlmaWVyPjsKK3VzaW5nIFJlbW90ZVZpZGVvRnJhbWVSZWZlcmVuY2UgPSBPYmpl
Y3RJZGVudGlmaWVyUmVmZXJlbmNlPFdlYkNvcmU6OlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVy
PjsKK3VzaW5nIFJlbW90ZVZpZGVvRnJhbWVSZWZlcmVuY2VUcmFja2VyID0gT2JqZWN0SWRlbnRp
ZmllclJlZmVyZW5jZVRyYWNrZXI8V2ViQ29yZTo6UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGli
V2ViUlRDQ29kZWNzLmNwcAppbmRleCBmMjBkMDc0ZjNhNmQ0OTQwNDQ3ODYxYTM0MmI0MTlkY2Rk
ZjI4OWJhLi4yNzUzZWRhM2ZjOWI5NmE5ZjQ5OGNiMzY0NzY5N2QzMTE1ZDU4NjVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjcy5jcHAKQEAgLTMyLDYgKzMyLDggQEAKICNpbmNsdWRlICJMaWJXZWJSVENDb2RlY3NNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94
eS5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94eS5oIgogI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0NWVXRpbGl0aWVzLmg+CkBAIC0xODQsNiArMTg2LDcgQEAgdm9pZCBMaWJXZWJSVEND
b2RlY3M6OmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uT25NYWluVGhyZWFkV2l0aExvY2soKQog
ICAgIGF1dG8mIGdwdUNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVH
UFVQcm9jZXNzQ29ubmVjdGlvbigpOwogICAgIGdwdUNvbm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlz
KTsKICAgICBtX2Nvbm5lY3Rpb24gPSAmZ3B1Q29ubmVjdGlvbi5jb25uZWN0aW9uKCk7CisgICAg
bV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5ID0gJmdwdUNvbm5lY3Rpb24ucmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSgpOwogICAgIG1fY29ubmVjdGlvbi0+YWRkVGhyZWFk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3M6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgdGhpcyk7CiAKICAgICBpZiAobV9sb2dnaW5nTGV2ZWwpCkBAIC0zMTUsMTAgKzMx
OCwyMyBAQCB2b2lkIExpYldlYlJUQ0NvZGVjczo6ZmFpbGVkRGVjb2RpbmcoUlRDRGVjb2Rlcklk
ZW50aWZpZXIgZGVjb2RlcklkZW50aWZpZXIpCiAgICAgICAgIGRlY29kZXItPmhhc0Vycm9yID0g
dHJ1ZTsKIH0KIAotdm9pZCBMaWJXZWJSVENDb2RlY3M6OmNvbXBsZXRlZERlY29kaW5nKFJUQ0Rl
Y29kZXJJZGVudGlmaWVyIGRlY29kZXJJZGVudGlmaWVyLCB1aW50MzJfdCB0aW1lU3RhbXAsIFdl
YkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtb3RlU2FtcGxlKQordm9pZCBMaWJXZWJSVEND
b2RlY3M6OmNvbXBsZXRlZERlY29kaW5nKFJUQ0RlY29kZXJJZGVudGlmaWVyIGRlY29kZXJJZGVu
dGlmaWVyLCB1aW50MzJfdCB0aW1lU3RhbXAsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYg
cmVtb3RlU2FtcGxlLCBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPiBy
ZW1vdGVGcmFtZUlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwog
CisgICAgUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4gcmVtb3RlVmlkZW9GcmFtZTsKKyAg
ICAvLyBXZSBhbHdheXMgY3JlYXRlIFJlbW90ZVZpZGVvRnJhbWVQcm94eSBzbyB0aGF0IHdlIGNh
biByZWxlYXNlIHRoZSBjb3JyZXNwb25kaW5nIEdQVVByb2Nlc3MgSU9TdXJmYWNlIHJpZ2h0IGF3
YXkgaWYgdGhlcmUgaXMgbm8gdmlkZW8gc291cmNlLgorICAgIGlmIChyZW1vdGVGcmFtZUlkZW50
aWZpZXIpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbkxvY2sgfTsKKyAg
ICAgICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzIHByb3BlcnRpZXMgeyByZW1v
dGVTYW1wbGUudGltZSgpLCByZW1vdGVTYW1wbGUubWlycm9yZWQoKSwgcmVtb3RlU2FtcGxlLnJv
dGF0aW9uKCksIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlbW90ZVNhbXBsZS5zaXplKCkud2lkdGgo
KSksIHN0YXRpY19jYXN0PGZsb2F0PihyZW1vdGVTYW1wbGUuc2l6ZSgpLmhlaWdodCgpKSB9LCBy
ZW1vdGVTYW1wbGUudmlkZW9Gb3JtYXQoKSB9OworICAgICAgICByZW1vdGVWaWRlb0ZyYW1lID0g
UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpjcmVhdGVBbHJlYWR5SW5pdGlhbGl6ZWQobV9jb25uZWN0
aW9uLT51bmlxdWVJRCgpLCAqcmVtb3RlRnJhbWVJZGVudGlmaWVyLCBwcm9wZXJ0aWVzLCBbcHJv
eHkgPSBtX3JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHldKGF1dG8mIGZyYW1lLCBhdXRv
JiYgY2FsbGJhY2spIHsKKyAgICAgICAgICAgIGlmICghcHJveHkpIHsKKyAgICAgICAgICAgICAg
ICBjYWxsYmFjayh7IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHByb3h5LT5nZXRWaWRlb0ZyYW1lQnVmZmVyKGZyYW1lLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CisgICAgICAgIH0pOworICAgIH0KICAgICAvLyBGSVhNRTogRG8gZXJyb3IgbG9n
Z2luZy4KICAgICBhdXRvKiBkZWNvZGVyID0gbV9kZWNvZGVycy5nZXQoZGVjb2RlcklkZW50aWZp
ZXIpOwogICAgIGlmICghZGVjb2RlcikKQEAgLTMzMiw2ICszNDgsMTQgQEAgdm9pZCBMaWJXZWJS
VENDb2RlY3M6OmNvbXBsZXRlZERlY29kaW5nKFJUQ0RlY29kZXJJZGVudGlmaWVyIGRlY29kZXJJ
ZGVudGlmaWVyLAogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlZEltYWdlQ2FsbGJhY2spCiAgICAg
ICAgIHJldHVybjsKIAorICAgIGlmIChyZW1vdGVWaWRlb0ZyYW1lKSB7CisgICAgICAgIHdlYnJ0
Yzo6dmlkZW9EZWNvZGVyVGFza0NvbXBsZXRlKGRlY29kZXItPmRlY29kZWRJbWFnZUNhbGxiYWNr
LCB0aW1lU3RhbXAsIHJlbW90ZVNhbXBsZS50aW1lKCkudG9Eb3VibGUoKSwgcmVtb3RlVmlkZW9G
cmFtZS5sZWFrUmVmKCksCisgICAgICAgICAgICBbXShhdXRvKiBwb2ludGVyKSB7IHJldHVybiBz
dGF0aWNfY2FzdDxSZW1vdGVWaWRlb0ZyYW1lUHJveHkqPihwb2ludGVyKS0+cGl4ZWxCdWZmZXIo
KTsgfSwKKyAgICAgICAgICAgIFtdKGF1dG8qIHBvaW50ZXIpIHsgc3RhdGljX2Nhc3Q8UmVtb3Rl
VmlkZW9GcmFtZVByb3h5Kj4ocG9pbnRlciktPmRlcmVmKCk7IH0sCisgICAgICAgICAgICByZW1v
dGVTYW1wbGUuc2l6ZSgpLndpZHRoKCksIHJlbW90ZVNhbXBsZS5zaXplKCkuaGVpZ2h0KCkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKCFyZW1vdGVTYW1wbGUuc3VyZmFjZSgp
KQogICAgICAgICByZXR1cm47CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGNyZWF0ZUNWUGl4ZWxC
dWZmZXIocmVtb3RlU2FtcGxlLnN1cmZhY2UoKSkudmFsdWVfb3IobnVsbHB0cik7CkBAIC0zNDAs
NyArMzY0LDcgQEAgdm9pZCBMaWJXZWJSVENDb2RlY3M6OmNvbXBsZXRlZERlY29kaW5nKFJUQ0Rl
Y29kZXJJZGVudGlmaWVyIGRlY29kZXJJZGVudGlmaWVyLAogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgd2VicnRjOjp2aWRlb0RlY29kZXJUYXNrQ29tcGxldGUoZGVjb2Rlci0+ZGVjb2Rl
ZEltYWdlQ2FsbGJhY2ssIHRpbWVTdGFtcCwgcGl4ZWxCdWZmZXIuZ2V0KCksIHJlbW90ZVNhbXBs
ZS50aW1lKCkudG9Eb3VibGUoKSk7CisgICAgd2VicnRjOjp2aWRlb0RlY29kZXJUYXNrQ29tcGxl
dGUoZGVjb2Rlci0+ZGVjb2RlZEltYWdlQ2FsbGJhY2ssIHRpbWVTdGFtcCwgcmVtb3RlU2FtcGxl
LnRpbWUoKS50b0RvdWJsZSgpLCBwaXhlbEJ1ZmZlci5nZXQoKSk7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgU3RyaW5nIGZvcm1hdE5hbWVGcm9tQ29kZWNUeXBlKExpYldlYlJUQ0NvZGVjczo6VHlwZSB0
eXBlKQpAQCAtNDM4LDIwICs0NjIsMzEgQEAgaW50MzJfdCBMaWJXZWJSVENDb2RlY3M6OmVuY29k
ZUZyYW1lKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYKICAgICBp
ZiAoIWVuY29kZXIuY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RF
Q19FUlJPUjsKIAotICAgIGF1dG8gYnVmZmVyID0gYWRvcHRDRih3ZWJydGM6OnBpeGVsQnVmZmVy
RnJvbUZyYW1lKGZyYW1lKSk7Ci0gICAgaWYgKCFidWZmZXIpIHsKLSAgICAgICAgLy8gYnVmZmVy
IGlzIG5vdCBuYXRpdmUsIHdlIG5lZWQgdG8gY29weSB0byBzaGFyZWQgdmlkZW8gZnJhbWUuCi0g
ICAgICAgIGlmICghY29weVNoYXJlZFZpZGVvRnJhbWUoZW5jb2RlciwgZnJhbWUpKQotICAgICAg
ICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKKyAgICBzdGQ6Om9wdGlvbmFs
PFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlPiByZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVy
ZW5jZTsKKyAgICBpZiAoYXV0byBwcm92aWRlciA9IHdlYnJ0Yzo6dmlkZW9GcmFtZUJ1ZmZlclBy
b3ZpZGVyKGZyYW1lKSkgeworICAgICAgICBhdXRvJiBtZWRpYVNhbXBsZSA9ICpzdGF0aWNfY2Fz
dDxNZWRpYVNhbXBsZSo+KHByb3ZpZGVyKTsKKyAgICAgICAgaWYgKGlzPFJlbW90ZVZpZGVvRnJh
bWVQcm94eT4obWVkaWFTYW1wbGUpKQorICAgICAgICAgICAgcmVtb3RlVmlkZW9GcmFtZVJlYWRS
ZWZlcmVuY2UgPSBkb3duY2FzdDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+KG1lZGlhU2FtcGxlKS5y
ZWFkKCk7CiAgICAgfQorCisgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IGJ1ZmZlcjsK
KyAgICBpZiAoIXJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlKSB7CisgICAgICAgIGJ1ZmZl
ciA9IGFkb3B0Q0Yod2VicnRjOjpwaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFtZSkpOworICAgICAg
ICBpZiAoIWJ1ZmZlcikgeworICAgICAgICAgICAgLy8gYnVmZmVyIGlzIG5vdCBuYXRpdmUsIHdl
IG5lZWQgdG8gY29weSB0byBzaGFyZWQgdmlkZW8gZnJhbWUuCisgICAgICAgICAgICBpZiAoIWNv
cHlTaGFyZWRWaWRlb0ZyYW1lKGVuY29kZXIsIGZyYW1lKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOworICAgICAgICB9CisgICAgfQorCiAgICAgYXV0
byBzYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgTWVkaWFU
aW1lKGZyYW1lLnRpbWVzdGFtcF91cygpICogMTAwMCwgMTAwMDAwMCksIHRvTWVkaWFTYW1wbGVW
aWRlb1JvdGF0aW9uKGZyYW1lLnJvdGF0aW9uKCkpLCBSZW1vdGVWaWRlb1NhbXBsZTo6U2hvdWxk
Q2hlY2tGb3JJT1N1cmZhY2U6Ok5vKTsKLSAgICBpZiAoIXNhbXBsZS0+c3VyZmFjZSgpKSB7Cisg
ICAgaWYgKGJ1ZmZlciAmJiAhc2FtcGxlLT5zdXJmYWNlKCkpIHsKICAgICAgICAgLy8gYnVmZmVy
IGlzIG5vdCBJT1N1cmZhY2UsIHdlIG5lZWQgdG8gY29weSB0byBzaGFyZWQgdmlkZW8gZnJhbWUu
CiAgICAgICAgIGlmICghY29weVNoYXJlZFZpZGVvRnJhbWUoZW5jb2RlciwgYnVmZmVyLmdldCgp
KSkKICAgICAgICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7CiAgICAgfQog
Ci0gICAgZW5jb2Rlci5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQ
cm94eTo6RW5jb2RlRnJhbWUgeyBlbmNvZGVyLmlkZW50aWZpZXIsICpzYW1wbGUsIGZyYW1lLnRp
bWVzdGFtcCgpLCBzaG91bGRFbmNvZGVBc0tleUZyYW1lIH0sIDApOworICAgIGVuY29kZXIuY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkVuY29kZUZyYW1l
IHsgZW5jb2Rlci5pZGVudGlmaWVyLCAqc2FtcGxlLCBmcmFtZS50aW1lc3RhbXAoKSwgc2hvdWxk
RW5jb2RlQXNLZXlGcmFtZSwgcmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UgfSwgMCk7CiAg
ICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaAppbmRleCBhMDE3
ZGU4Yjg0NTQxZGM2YzliMzdmZDI1YjM1N2MwMDk4YjIyYzEyLi44NDcxYTE2ZTE2MDM3ODUwNDFj
OWU3ZjdmNzE5OGE0OTM0ZTZkMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiUlRDRW5jb2RlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVW
aWRlb0ZyYW1lSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNoYXJlZFZpZGVvRnJhbWUuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaD4KICNpbmNsdWRlIDxtYXA+
CkBAIC02MCw2ICs2MSw4IEBAIHN0cnVjdCBXZWJLaXRFbmNvZGVkRnJhbWVJbmZvOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eTsK
KwogY2xhc3MgTGliV2ViUlRDQ29kZWNzIDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFk
TWVzc2FnZVJlY2VpdmVyUmVmQ291bnRlZCwgcHVibGljIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpD
bGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtMTI4LDcg
KzEzMSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbk1heU5vTG9u
Z2VyQmVOZWVkZWQoKTsKIAogICAgIHZvaWQgZmFpbGVkRGVjb2RpbmcoUlRDRGVjb2RlcklkZW50
aWZpZXIpOwotICAgIHZvaWQgY29tcGxldGVkRGVjb2RpbmcoUlRDRGVjb2RlcklkZW50aWZpZXIs
IHVpbnQzMl90IHRpbWVTdGFtcCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJik7CisgICAg
dm9pZCBjb21wbGV0ZWREZWNvZGluZyhSVENEZWNvZGVySWRlbnRpZmllciwgdWludDMyX3QgdGlt
ZVN0YW1wLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmLCBzdGQ6Om9wdGlvbmFsPFJlbW90
ZVZpZGVvRnJhbWVJZGVudGlmaWVyPik7CiAgICAgdm9pZCBjb21wbGV0ZWRFbmNvZGluZyhSVENF
bmNvZGVySWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGNvbnN0IHdlYnJ0Yzo6V2Vi
S2l0RW5jb2RlZEZyYW1lSW5mbyYpOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBj
b252ZXJ0VG9CR1JBKENWUGl4ZWxCdWZmZXJSZWYpOwogCkBAIC0xNDksNiArMTUyLDcgQEAgcHJp
dmF0ZToKIAogICAgIExvY2sgbV9jb25uZWN0aW9uTG9jazsKICAgICBSZWZQdHI8SVBDOjpDb25u
ZWN0aW9uPiBtX2Nvbm5lY3Rpb24gV1RGX0dVQVJERURfQllfTE9DSyhtX2Nvbm5lY3Rpb25Mb2Nr
KTsKKyAgICBSZWZQdHI8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eT4gbV9yZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5IFdURl9HVUFSREVEX0JZX0xPQ0sobV9jb25uZWN0aW9u
TG9jayk7CiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IG1fdGFza3NUb0Rpc3BhdGNoQWZ0
ZXJFc3RhYmxpc2hpbmdDb25uZWN0aW9uOwogCiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJU
Q0NvZGVjcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L0xpYldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5pbgppbmRleCAyNWYyN2ZlYTgzZGU3YjU2ZmNhZmQ4
ZDFmOGYzOGEzNDdhYjA2Y2JkLi43ZGI3OTUwODFlYTVmMDYwMmY2ZjIyNjI3YjQ0NTU1M2E4Yjcw
NzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAK
IG1lc3NhZ2VzIC0+IExpYldlYlJUQ0NvZGVjcyBOb3RSZWZDb3VudGVkIHsKICAgICBGYWlsZWRE
ZWNvZGluZyhXZWJLaXQ6OlJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCi0gICAgQ29t
cGxldGVkRGVjb2RpbmcoV2ViS2l0OjpSVENEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCB1
aW50MzJfdCB0aW1lU3RhbXAsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSkKKyAg
ICBDb21wbGV0ZWREZWNvZGluZyhXZWJLaXQ6OlJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxl
LCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+IHJlbW90
ZUZyYW1lSWRlbnRpZmllcikKIAogICAgIENvbXBsZXRlZEVuY29kaW5nKFdlYktpdDo6UlRDRW5j
b2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEsIHN0cnVj
dCB3ZWJydGM6OldlYktpdEVuY29kZWRGcmFtZUluZm8gaW5mbyk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJp
dmF0ZS5jcHAKaW5kZXggNGY3N2YzNmU3MTcyNDU4ZTFmZGZjZjkyMTM2NjM2ZTZjM2RhMmZmNS4u
OTE4MGQxY2E3MmQwMWUzMjJlN2NhNGRlOWM4MzZkNjhlY2M2YTFjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQ
cml2YXRlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXJNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVjb3JkZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90
ZVZpZGVvRnJhbWVQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTdHJlYW1Qcml2
YXRlLmg+CkBAIC05MywyNiArOTQsMzQgQEAgTWVkaWFSZWNvcmRlclByaXZhdGU6On5NZWRpYVJl
Y29yZGVyUHJpdmF0ZSgpCiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OnZpZGVvU2FtcGxl
QXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUsIFZpZGVvU2FtcGxlTWV0YWRhdGEpCiB7Cisg
ICAgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZT4gcmVtb3RlVmlk
ZW9GcmFtZVJlYWRSZWZlcmVuY2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2Ft
cGxlPiByZW1vdGVTYW1wbGU7CiAgICAgaWYgKHNob3VsZE11dGVWaWRlbygpKSB7CisgICAgICAg
IC8vIEZJWE1FOiBXZSBjb3VsZCBvcHRpbWl6ZSBzZW5kaW5nIGJsYWNrIGZyYW1lcyBieSBvbmx5
IHNlbmRpbmcgd2lkdGgvaGVpZ2h0LgogICAgICAgICBpZiAoIW1fYmxhY2tGcmFtZSkgewotICAg
ICAgICAgICAgYXV0byBibGFja0ZyYW1lRGVzY3JpcHRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldEZv
cm1hdERlc2NyaXB0aW9uKHNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1
ZmZlcik7Ci0gICAgICAgICAgICBhdXRvIGRpbWVuc2lvbnMgPSBDTVZpZGVvRm9ybWF0RGVzY3Jp
cHRpb25HZXREaW1lbnNpb25zKGJsYWNrRnJhbWVEZXNjcmlwdGlvbik7Ci0gICAgICAgICAgICBt
X2JsYWNrRnJhbWUgPSBjcmVhdGVCbGFja1BpeGVsQnVmZmVyKGRpbWVuc2lvbnMud2lkdGgsIGRp
bWVuc2lvbnMuaGVpZ2h0KTsKKyAgICAgICAgICAgIGF1dG8gc2l6ZSA9IHNhbXBsZS5wcmVzZW50
YXRpb25TaXplKCk7CisgICAgICAgICAgICBtX2JsYWNrRnJhbWUgPSBjcmVhdGVCbGFja1BpeGVs
QnVmZmVyKHN0YXRpY19jYXN0PHNpemVfdD4oc2l6ZS53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8c2l6
ZV90PihzaXplLmhlaWdodCgpKSk7CiAgICAgICAgIH0KICAgICAgICAgcmVtb3RlU2FtcGxlID0g
UmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShtX2JsYWNrRnJhbWUuZ2V0KCksIHNhbXBsZS5wcmVz
ZW50YXRpb25UaW1lKCksIHNhbXBsZS52aWRlb1JvdGF0aW9uKCksIFJlbW90ZVZpZGVvU2FtcGxl
OjpTaG91bGRDaGVja0ZvcklPU3VyZmFjZTo6Tm8pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1f
YmxhY2tGcmFtZSA9IG51bGxwdHI7Ci0gICAgICAgIHJlbW90ZVNhbXBsZSA9IFJlbW90ZVZpZGVv
U2FtcGxlOjpjcmVhdGUoc2FtcGxlLCBSZW1vdGVWaWRlb1NhbXBsZTo6U2hvdWxkQ2hlY2tGb3JJ
T1N1cmZhY2U6Ok5vKTsKKworICAgICAgICBpZiAoaXM8UmVtb3RlVmlkZW9GcmFtZVByb3h5Pihz
YW1wbGUpKSB7CisgICAgICAgICAgICByZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSA9IGRv
d25jYXN0PFJlbW90ZVZpZGVvRnJhbWVQcm94eT4oc2FtcGxlKS5yZWFkKCk7CisgICAgICAgICAg
ICByZW1vdGVTYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKG51bGxwdHIsIHNhbXBs
ZS5wcmVzZW50YXRpb25UaW1lKCksIHNhbXBsZS52aWRlb1JvdGF0aW9uKCksIFJlbW90ZVZpZGVv
U2FtcGxlOjpTaG91bGRDaGVja0ZvcklPU3VyZmFjZTo6Tm8pOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIHJlbW90ZVNhbXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoc2FtcGxl
LCBSZW1vdGVWaWRlb1NhbXBsZTo6U2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2U6Ok5vKTsKICAgICB9
CiAKLSAgICBpZiAoIXJlbW90ZVNhbXBsZS0+c3VyZmFjZSgpKSB7CisgICAgaWYgKGlzPFJlbW90
ZVZpZGVvRnJhbWVQcm94eT4oc2FtcGxlKSkKKyAgICAgICAgcmVtb3RlVmlkZW9GcmFtZVJlYWRS
ZWZlcmVuY2UgPSBkb3duY2FzdDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+KHNhbXBsZSkucmVhZCgp
OworICAgIGVsc2UgaWYgKCFyZW1vdGVTYW1wbGUtPnN1cmZhY2UoKSkgewogICAgICAgICAvLyBi
dWZmZXIgaXMgbm90IElPU3VyZmFjZSwgd2UgbmVlZCB0byBjb3B5IHRvIHNoYXJlZCB2aWRlbyBm
cmFtZS4KICAgICAgICAgaWYgKCFjb3B5U2hhcmVkVmlkZW9GcmFtZShyZW1vdGVTYW1wbGUtPmlt
YWdlQnVmZmVyKCkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6VmlkZW9TYW1wbGVBdmFp
bGFibGUgeyBXVEZNb3ZlKCpyZW1vdGVTYW1wbGUpIH0sIG1faWRlbnRpZmllcik7CisgICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpWaWRlb1NhbXBs
ZUF2YWlsYWJsZSB7IFdURk1vdmUoKnJlbW90ZVNhbXBsZSksIHJlbW90ZVZpZGVvRnJhbWVSZWFk
UmVmZXJlbmNlIH0sIG1faWRlbnRpZmllcik7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcFByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZmI5OTg3OWU0Y2ZjYzVmODU5NTk3
NjNjNTUzYjFhZDViMDY0MDFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5jcHAKQEAg
LTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5oIgorCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2lu
Y2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5TWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1JlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5PiBSZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcFByb3h5OjpjcmVhdGUoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXBQcm94eShjb25uZWN0aW9uKSk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
UHJveHk6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24mIGNvbm5lY3Rpb24pCisgICAgOiBtX2Nvbm5lY3Rpb25JRChjb25uZWN0aW9uLmNvbm5lY3Rp
b24oKS51bmlxdWVJRCgpKQorICAgICwgbV9xdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSIsIFdvcmtRdWV1ZTo6UU9TOjpVc2VySW50ZXJhY3Rp
dmUpKQoreworICAgIGNvbm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlzKTsKKyAgICBjb25uZWN0aW9u
LmNvbm5lY3Rpb24oKS5hZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9xdWV1
ZSwgdGhpcyk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk6On5SZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5KCkKK3sKKyAgICBjbGVhckNhbGxiYWNrcygpOworfQor
Cit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk6OmdwdVByb2Nlc3NDb25uZWN0
aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgewor
ICAgICAgICBMb2NrZXIgbG9jayhtX2Nvbm5lY3Rpb25Mb2NrKTsKKyAgICAgICAgbV9jb25uZWN0
aW9uSUQgPSB7IH07CisgICAgfQorICAgIGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnJlbW92ZVdv
cmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXBQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICBjbGVhckNhbGxiYWNrcygpOwor
fQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk6OmNsZWFyQ2FsbGJhY2tz
KCkKK3sKKyAgICBIYXNoTWFwPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLCBDYWxsYmFjaz4g
Y2FsbGJhY2tzOworICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2sobV9jYWxsYmFja3NMb2NrKTsK
KyAgICAgICAgY2FsbGJhY2tzID0gc3RkOjpleGNoYW5nZShtX2NhbGxiYWNrcywgeyB9KTsKKyAg
ICB9CisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGNhbGxiYWNrcy52YWx1ZXMoKSkKKyAgICAg
ICAgY2FsbGJhY2soeyB9KTsKK30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFBy
b3h5OjpzZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYgc2VtYXBo
b3JlKQoreworICAgIG1fc2hhcmVkVmlkZW9GcmFtZVJlYWRlci5zZXRTZW1hcGhvcmUoV1RGTW92
ZShzZW1hcGhvcmUpKTsKK30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5
OjpzZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5KGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
JiBpcGNIYW5kbGUpCit7CisgICAgbV9zaGFyZWRWaWRlb0ZyYW1lUmVhZGVyLnNldFNoYXJlZE1l
bW9yeShpcGNIYW5kbGUpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5OjpD
YWxsYmFjayBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5Ojp0YWtlQ2FsbGJhY2soUmVt
b3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBMb2NrZXIgbG9jayht
X2NhbGxiYWNrc0xvY2spOworICAgIHJldHVybiBtX2NhbGxiYWNrcy50YWtlKGlkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk6OnZpZGVvRnJhbWVC
dWZmZXJOb3RGb3VuZChSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyKQorewor
ICAgIGlmIChhdXRvIGNhbGxiYWNrID0gdGFrZUNhbGxiYWNrKGlkZW50aWZpZXIpKQorICAgICAg
ICBjYWxsYmFjayhudWxscHRyKTsKK30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cFByb3h5OjpuZXdWaWRlb0ZyYW1lQnVmZmVyKFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCit7CisgICAgYXV0byByZXN1bHQgPSBtX3NoYXJlZFZpZGVvRnJhbWVSZWFkZXIu
cmVhZCgpOworICAgIGlmIChhdXRvIGNhbGxiYWNrID0gdGFrZUNhbGxiYWNrKGlkZW50aWZpZXIp
KQorICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkpOworfQorCit2b2lkIFJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwUHJveHk6OmdldFZpZGVvRnJhbWVCdWZmZXIoY29uc3QgUmVtb3Rl
VmlkZW9GcmFtZVByb3h5JiBmcmFtZSwgQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICB7Cisg
ICAgICAgIExvY2tlciBsb2NrKG1fY2FsbGJhY2tzTG9jayk7CisgICAgICAgIEFTU0VSVCghbV9j
YWxsYmFja3MuY29udGFpbnMoZnJhbWUuaWRlbnRpZmllcigpKSk7CisgICAgICAgIG1fY2FsbGJh
Y2tzLmFkZChmcmFtZS5pZGVudGlmaWVyKCksIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICB9Cisg
ICAgTG9ja2VyIGxvY2sobV9jb25uZWN0aW9uTG9jayk7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb25J
RCkgeworICAgICAgICB2aWRlb0ZyYW1lQnVmZmVyTm90Rm91bmQoZnJhbWUuaWRlbnRpZmllcigp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9j
b25uZWN0aW9uSUQsIE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6R2V0Vmlk
ZW9GcmFtZUJ1ZmZlcihmcmFtZS5yZWFkKCkpLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNo
TWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7Cit9CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjNlODkz
NGZkOTk2MmM2NjZkMzk2NWU1Nzk3MTIwOTdmMGZjZDNiZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwUHJveHkuaApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkdQVVByb2Nl
c3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAi
UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRWaWRlb0ZyYW1l
LmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KKwordXNp
bmcgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgPSBzdHJ1Y3QgX19DVlBpeGVsQnVmZmVyUG9vbCo7CisK
K25hbWVzcGFjZSBJUEMgeworY2xhc3MgQ29ubmVjdGlvbjsKK2NsYXNzIERlY29kZXI7Cit9CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lUHJveHk7CisKK2Ns
YXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkgOiBwdWJsaWMgSVBDOjpDb25uZWN0
aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBHUFVQcm9jZXNzQ29ubmVjdGlv
bjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk+IGNyZWF0ZShHUFVQcm9j
ZXNzQ29ubmVjdGlvbiYpOworICAgIH5SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5KCk7
CisKKyAgICB1c2luZyBDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmV0YWluUHRyPENWUGl4ZWxC
dWZmZXJSZWY+JiYpPjsKKyAgICB2b2lkIGdldFZpZGVvRnJhbWVCdWZmZXIoY29uc3QgUmVtb3Rl
VmlkZW9GcmFtZVByb3h5JiwgQ2FsbGJhY2smJik7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQg
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpOwor
CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdm9pZCBzZXRTaGFyZWRWaWRlb0Zy
YW1lU2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYpOworICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9G
cmFtZU1lbW9yeShjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpOworICAgIHZvaWQgdmlk
ZW9GcmFtZUJ1ZmZlck5vdEZvdW5kKFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyKTsKKyAgICB2
b2lkIG5ld1ZpZGVvRnJhbWVCdWZmZXIoUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIpOworCisg
ICAgLy8gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudAorICAgIHZvaWQgZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpOworCisgICAgdm9pZCBjbGVh
ckNhbGxiYWNrcygpOworICAgIENhbGxiYWNrIHRha2VDYWxsYmFjayhSZW1vdGVWaWRlb0ZyYW1l
SWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgTG9jayBtX2Nvbm5lY3Rpb25Mb2NrOworICAg
IElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgbV9jb25uZWN0aW9uSUQgV1RGX0dVQVJERURfQllf
TE9DSyhtX2Nvbm5lY3Rpb25Mb2NrKTsKKyAgICBMb2NrIG1fY2FsbGJhY2tzTG9jazsKKyAgICBI
YXNoTWFwPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLCBDYWxsYmFjaz4gbV9jYWxsYmFja3Mg
V1RGX0dVQVJERURfQllfTE9DSyhtX2NhbGxiYWNrc0xvY2spOworICAgIFJlZjxXb3JrUXVldWU+
IG1fcXVldWU7CisgICAgU2hhcmVkVmlkZW9GcmFtZVJlYWRlciBtX3NoYXJlZFZpZGVvRnJhbWVS
ZWFkZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40N2UwZDY4Mzg3YmYzOWQ0NzBjNjgwNjk3MjIwMjY2ODFmMDk4OWE5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXBQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMyIEBACisjIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCittZXNzYWdlcyAt
PiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIFNl
dFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUgc2VtYXBob3JlKQorICAg
IFNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSBzdG9yYWdlSGFuZGxlKQorICAgIFZpZGVvRnJhbWVCdWZmZXJOb3RGb3VuZChXZWJLaXQ6OlJl
bW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgTmV3VmlkZW9GcmFtZUJ1
ZmZlcihXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit9CisK
KyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5B
QkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKaW5kZXggNmI2
MmRhZGM3MjkyMWZiMjVjM2Q4Yzg5Yjc1MDM5Y2I3NzdlYzg1YS4uZjM3YzE4ZjVmYzNiZWY5OTU4
YmVlMGVjZTAxOGFiZjM2N2FjMzY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3Bw
CkBAIC0xNDQsNiArMTQ0LDcgQEAgdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVl
dWVTYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICgh
bV9ncHVQcm9jZXNzQ29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKGlzPFJl
bW90ZVZpZGVvRnJhbWVQcm94eT4oc2FtcGxlKSkgewogICAgICAgICBhdXRvJiByZW1vdGVTYW1w
bGUgPSBkb3duY2FzdDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+KHNhbXBsZSk7CiAgICAgICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjpFbnF1ZXVlU2FtcGxlIHsgcmVtb3RlU2FtcGxlLnJlYWQoKSB9LCBtX2lkZW50aWZpZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVD
YXB0dXJlU2FtcGxlTWFuYWdlci5jcHAKaW5kZXggYjFlZjhmNTY0NTJmMWZjNjkxZmVkZTRjNDg0
OWMzYjViMDZjNjY5My4uMTU2YTllYWNmZjk4ZDcwNTljYWUyZWU1N2M1YjYxODgyOGUxYzBhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVt
b3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuaCIKKyNpbmNs
dWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVy
U3RvcmFnZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0lt
YWdlVHJhbnNmZXJTZXNzaW9uVlQuaD4KQEAgLTEzMyw2ICsxMzUsMTIgQEAgdm9pZCBSZW1vdGVD
YXB0dXJlU2FtcGxlTWFuYWdlcjo6ZGlkVXBkYXRlU291cmNlQ29ubmVjdGlvbihJUEM6OkNvbm5l
Y3Rpb24qIGNvbm4KICAgICBzZXRDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwogfQogCit2b2lkIFJl
bW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjpzZXRSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFBy
b3h5KFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkqIHByb3h5KQoreworICAgIExvY2tl
ciBsb2NrKG1fcmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eUxvY2spOworICAgIG1fcmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSA9IHByb3h5OworfQorCiB2b2lkIFJlbW90ZUNh
cHR1cmVTYW1wbGVNYW5hZ2VyOjpkaXNwYXRjaFRvVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiBj
YWxsYmFjaykKIHsKICAgICBtX3F1ZXVlLT5kaXNwYXRjaChXVEZNb3ZlKGNhbGxiYWNrKSk7CkBA
IC0xNTAsMTUgKzE1OCwzNSBAQCB2b2lkIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjphdWRp
b1N0b3JhZ2VDaGFuZ2VkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyYwogICAgIGl0ZXJhdG9y
LT52YWx1ZS0+c2V0U3RvcmFnZShpcGNIYW5kbGUuaGFuZGxlLCBkZXNjcmlwdGlvbiwgbnVtYmVy
T2ZGcmFtZXMsIFdURk1vdmUoc2VtYXBob3JlKSwgbWVkaWFUaW1lLCBmcmFtZUNodW5rU2l6ZSk7
CiB9CiAKLXZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OnZpZGVvU2FtcGxlQXZhaWxh
YmxlKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbW90ZVZpZGVv
U2FtcGxlJiYgc2FtcGxlLCBWaWRlb1NhbXBsZU1ldGFkYXRhIG1ldGFkYXRhKQordm9pZCBSZW1v
dGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoUmVhbHRpbWVNZWRp
YVNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlVmlkZW9TYW1wbGUmJiBzYW1wbGUs
IHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+IHJlbW90ZUlkZW50aWZp
ZXIsIFZpZGVvU2FtcGxlTWV0YWRhdGEgbWV0YWRhdGEpCiB7CiAgICAgQVNTRVJUKCFXVEY6Omlz
TWFpblJ1bkxvb3AoKSk7CiAKKyAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHZpZGVvRnJhbWU7Cisg
ICAgLy8gV2UgYWx3YXlzIGNyZWF0ZSBSZW1vdGVWaWRlb0ZyYW1lUHJveHkgc28gdGhhdCB3ZSBj
YW4gcmVsZWFzZSB0aGUgY29ycmVzcG9uZGluZyBHUFVQcm9jZXNzIElPU3VyZmFjZSByaWdodCBh
d2F5IGlmIHRoZXJlIGlzIG5vIHZpZGVvIHNvdXJjZS4KKyAgICBpZiAocmVtb3RlSWRlbnRpZmll
cikgeworICAgICAgICBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMgcHJvcGVydGll
cyB7IHNhbXBsZS50aW1lKCksIHNhbXBsZS5taXJyb3JlZCgpLCBzYW1wbGUucm90YXRpb24oKSwg
eyBzdGF0aWNfY2FzdDxmbG9hdD4oc2FtcGxlLnNpemUoKS53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHNhbXBsZS5zaXplKCkuaGVpZ2h0KCkpIH0sIHNhbXBsZS52aWRlb0Zvcm1hdCgpIH07
CisgICAgICAgIAorICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBlaXRoZXIgZ2V0IEdQVVBy
b2Nlc3Mgb3IgVUlQcm9jZXNzIG9iamVjdCBoZWFwIHByb3h5LiBGb3Igbm93IHdlIGFsd2F5cyBn
byB0byBHUFVQcm9jZXNzLgorICAgICAgICBMb2NrZXIgbG9jayhtX3JlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwUHJveHlMb2NrKTsKKyAgICAgICAgdmlkZW9GcmFtZSA9IFJlbW90ZVZpZGVvRnJh
bWVQcm94eTo6Y3JlYXRlQWxyZWFkeUluaXRpYWxpemVkKG1fY29ubmVjdGlvbi0+dW5pcXVlSUQo
KSwgKnJlbW90ZUlkZW50aWZpZXIsIHByb3BlcnRpZXMsIFtwcm94eSA9IG1fcmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXBQcm94eV0oYXV0byYgZnJhbWUsIGF1dG8mJiBjYWxsYmFjaykgeworICAg
ICAgICAgICAgaWYgKCFwcm94eSkgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHsgfSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJveHkt
PmdldFZpZGVvRnJhbWVCdWZmZXIoZnJhbWUsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAg
fSk7CisgICAgfQorCiAgICAgYXV0byBpdGVyYXRvciA9IG1fdmlkZW9Tb3VyY2VzLmZpbmQoaWRl
bnRpZmllcik7CiAgICAgaWYgKGl0ZXJhdG9yID09IG1fdmlkZW9Tb3VyY2VzLmVuZCgpKSB7CiAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIlVuYWJsZSB0byBmaW5kIHNvdXJjZSAl
bGx1IGZvciByZW1vdGVWaWRlb1NhbXBsZUF2YWlsYWJsZSIsIGlkZW50aWZpZXIudG9VSW50NjQo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKHZpZGVvRnJhbWUpIHsKKyAgICAg
ICAgaXRlcmF0b3ItPnZhbHVlLT52aWRlb0ZyYW1lQXZhaWxhYmxlKHZpZGVvRnJhbWUucmVsZWFz
ZU5vbk51bGwoKSwgc2FtcGxlLnNpemUoKSwgbWV0YWRhdGEpOworICAgICAgICByZXR1cm47Cisg
ICAgfQogICAgIGl0ZXJhdG9yLT52YWx1ZS0+dmlkZW9TYW1wbGVBdmFpbGFibGUoV1RGTW92ZShz
YW1wbGUpLCBtZXRhZGF0YSk7CiB9CiAKQEAgLTI0NywxMCArMjc1LDE1IEBAIHZvaWQgUmVtb3Rl
Q2FwdHVyZVNhbXBsZU1hbmFnZXI6OlJlbW90ZVZpZGVvOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShS
ZW1vdGVWaWRlb1NhCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQorICAgIHZpZGVvRnJhbWVBdmFpbGFibGUoc2FtcGxlUmVmLnJlbGVhc2VOb25O
dWxsKCksIHJlbW90ZVNhbXBsZS5zaXplKCksIG1ldGFkYXRhKTsKK30KKwordm9pZCBSZW1vdGVD
YXB0dXJlU2FtcGxlTWFuYWdlcjo6UmVtb3RlVmlkZW86OnZpZGVvRnJhbWVBdmFpbGFibGUoUmVm
PE1lZGlhU2FtcGxlPiYmIHNhbXBsZSwgSW50U2l6ZSBzaXplLCBWaWRlb1NhbXBsZU1ldGFkYXRh
IG1ldGFkYXRhKQorewogICAgIHN3aXRjaE9uKG1fc291cmNlLCBbJl0oUmVmPFJlbW90ZVJlYWx0
aW1lVmlkZW9Tb3VyY2U+JiBzb3VyY2UpIHsKLSAgICAgICAgc291cmNlLT52aWRlb1NhbXBsZUF2
YWlsYWJsZSgqc2FtcGxlUmVmLCByZW1vdGVTYW1wbGUuc2l6ZSgpLCBtZXRhZGF0YSk7CisgICAg
ICAgIHNvdXJjZS0+dmlkZW9TYW1wbGVBdmFpbGFibGUoc2FtcGxlLmdldCgpLCBzaXplLCBtZXRh
ZGF0YSk7CiAgICAgfSwgWyZdKFJlZjxSZW1vdGVSZWFsdGltZURpc3BsYXlTb3VyY2U+JiBzb3Vy
Y2UpIHsKLSAgICAgICAgc291cmNlLT5yZW1vdGVWaWRlb1NhbXBsZUF2YWlsYWJsZSgqc2FtcGxl
UmVmLCBtZXRhZGF0YSk7CisgICAgICAgIHNvdXJjZS0+cmVtb3RlVmlkZW9TYW1wbGVBdmFpbGFi
bGUoc2FtcGxlLmdldCgpLCBtZXRhZGF0YSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5h
Z2VyLmgKaW5kZXggODZmNDkwYjc4MGZlNDljYTExYTEwNGFmN2I2OWJkMzNlNjhjMTcyNi4uYmYx
ZGE5ZGRjZTgwMTQwOThiNWEyNWFiZjU0NzQ1ODQwNTE3MmEzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5h
Z2VyLmgKQEAgLTMzLDExICszMywxMyBAQAogI2luY2x1ZGUgIlJlbW90ZVJlYWx0aW1lQXVkaW9T
b3VyY2UuaCIKICNpbmNsdWRlICJSZW1vdGVSZWFsdGltZURpc3BsYXlTb3VyY2UuaCIKICNpbmNs
dWRlICJSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9G
cmFtZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FS
aW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJBdWRpb0J1ZmZlckxpc3QuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8
d3RmL1dvcmtRdWV1ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw2ICs0OCw3IEBA
IGNsYXNzIFJlbW90ZVZpZGVvU2FtcGxlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNz
IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk7CiAKIGNsYXNzIFJlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyIDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2Vp
dmVyUmVmQ291bnRlZCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC02MCw2ICs2
Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVNvdXJjZShXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlSWRlbnRpZmllcik7CiAKICAgICB2b2lkIGRpZFVwZGF0ZVNvdXJjZUNvbm5lY3Rp
b24oSVBDOjpDb25uZWN0aW9uKik7CisgICAgdm9pZCBzZXRSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcFByb3h5KFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkqKTsKIAogICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKQEAg
LTcwLDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlcwogICAgIHZvaWQgYXVkaW9T
dG9yYWdlQ2hhbmdlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgY29u
c3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24mLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgSVBDOjpTZW1hcGhvcmUmJiwg
Y29uc3QgTWVkaWFUaW1lJiwgc2l6ZV90IGZyYW1lU2FtcGxlU2l6ZSk7CiAgICAgdm9pZCBhdWRp
b1NhbXBsZXNBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIs
IE1lZGlhVGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpOwotICAgIHZvaWQgdmlkZW9TYW1w
bGVBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIFdlYkNv
cmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYsIFdlYkNvcmU6OlZpZGVvU2FtcGxlTWV0YWRhdGEpOwor
ICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYsIHN0ZDo6b3B0aW9uYWw8
UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpWaWRlb1NhbXBsZU1ldGFkYXRh
KTsKIAogICAgIHZvaWQgc2V0Q29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qKTsKIApAQCAtMTA2
LDYgKzExMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IFJlbW90ZVZpZGVvKFNvdXJj
ZSYmKTsKIAogICAgICAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90
ZVZpZGVvU2FtcGxlJiYsIFdlYkNvcmU6OlZpZGVvU2FtcGxlTWV0YWRhdGEpOworICAgICAgICB2
b2lkIHZpZGVvRnJhbWVBdmFpbGFibGUoUmVmPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiYmLCBXZWJD
b3JlOjpJbnRTaXplLCBXZWJDb3JlOjpWaWRlb1NhbXBsZU1ldGFkYXRhKTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIFNvdXJjZSBtX3NvdXJjZTsKQEAgLTExNSwxMCArMTIwLDEyIEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2lzUmVnaXN0ZXJlZFRvUGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24geyBm
YWxzZSB9OwogICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CiAgICAgUmVmUHRyPElQQzo6Q29u
bmVjdGlvbj4gbV9jb25uZWN0aW9uOwotCiAgICAgLy8gYmFja2dyb3VuZCB0aHJlYWQgbWVtYmVy
CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUF1ZGlvPj4gbV9hdWRpb1NvdXJjZXM7CiAgICAgSGFzaE1hcDxX
ZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZVZpZGVvPj4gbV92aWRlb1NvdXJjZXM7CisKKyAgICBMb2NrIG1fcmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXBQcm94eUxvY2s7CisgICAgUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwUHJveHk+IG1fcmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSBXVEZfR1VBUkRFRF9C
WV9MT0NLKG1fcmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eUxvY2spOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMu
aW4KaW5kZXggODY1MWIzY2Q3OTlhMWY3NTRmMmU4MDNjNDY4ODkwZThmNWFhZmE2Ni4uOTY3MjIx
ODQxZTBjZjI0YTk1ZWQ1ZWMyY2FkMjAxYzA2NDg0ZjYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2Ft
cGxlTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQAogCiBtZXNzYWdlcyAtPiBS
ZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlciBOb3RSZWZDb3VudGVkIHsKICAgICBBdWRpb1N0b3Jh
Z2VDaGFuZ2VkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBXZWJL
aXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHN0b3JhZ2VIYW5kbGUsIFdlYkNvcmU6OkNBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMs
IElQQzo6U2VtYXBob3JlIGNhcHR1cmVTZW1hcGhvcmUsIE1lZGlhVGltZSBtZWRpYVRpbWUsIHNp
emVfdCBmcmFtZUNodW5rU2l6ZSk7Ci0gICAgVmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2Ft
cGxlIHNhbXBsZSwgc3RydWN0IFdlYkNvcmU6OlZpZGVvU2FtcGxlTWV0YWRhdGEgbWV0YWRhdGEp
CisgICAgVmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlk
ZW50aWZpZXIgaWQsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSwgc3RkOjpvcHRp
b25hbDxXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPiByZW1vdGVJZGVudGlmaWVy
LCBzdHJ1Y3QgV2ViQ29yZTo6VmlkZW9TYW1wbGVNZXRhZGF0YSBtZXRhZGF0YSkKIH0KIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAppbmRleCAxZWU5MjMwNjljZGM1OGM5ZDdhMjEwMjdlYzk0
NjYzMGIyYzBlYjFlLi43MTFiNTU4NWE1ZDU5NjZiMzViOTQwOWEzYzk0Mjk4MjlmMWUzNzZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlci5jcHAKQEAgLTIzMCwxMiArMjMwLDE5IEBAIHZvaWQgVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXI6OkF1ZGlvRmFjdG9yeTo6c2V0U2hvdWxkQ2FwdHVyZUluR1BVUHJvY2Vz
cyhib29sIHZhCiAgICAgbV9zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzID0gdmFsdWU7CiB9CiAK
K3ZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlZpZGVvRmFjdG9yeTo6c2V0U2hvdWxkQ2Fw
dHVyZUluR1BVUHJvY2Vzcyhib29sIHZhbHVlKQoreworICAgIG1fc2hvdWxkQ2FwdHVyZUluR1BV
UHJvY2VzcyA9IHZhbHVlOworfQorCiBDYXB0dXJlU291cmNlT3JFcnJvciBVc2VyTWVkaWFDYXB0
dXJlTWFuYWdlcjo6VmlkZW9GYWN0b3J5OjpjcmVhdGVWaWRlb0NhcHR1cmVTb3VyY2UoY29uc3Qg
Q2FwdHVyZURldmljZSYgZGV2aWNlLCBTdHJpbmcmJiBoYXNoU2FsdCwgY29uc3QgTWVkaWFDb25z
dHJhaW50cyogY29uc3RyYWludHMpCiB7CiAjaWYgIUVOQUJMRShHUFVfUFJPQ0VTUykKICAgICBp
ZiAobV9zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKQogICAgICAgICByZXR1cm4gQ2FwdHVyZVNv
dXJjZU9yRXJyb3IgeyAiVmlkZW8gY2FwdHVyZSBpbiBHUFVQcm9jZXNzIGlzIG5vdCBpbXBsZW1l
bnRlZCJfcyB9OwogI2VuZGlmCisgICAgaWYgKG1fc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcykK
KyAgICAgICAgbV9tYW5hZ2VyLm1fcmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuc2V0UmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSgmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5KCkp
OwogCiAgICAgYm9vbCBzaG91bGRVc2VJT1N1cmZhY2UgPSBmYWxzZTsKICAgICByZXR1cm4gQ2Fw
dHVyZVNvdXJjZU9yRXJyb3IoUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlKFJlbW90ZVJlYWx0
aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZShkZXZpY2UsIGNvbnN0cmFpbnRzLCB7IH0sIFdURk1vdmUo
aGFzaFNhbHQpLCBtX21hbmFnZXIsIG1fc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcyksIHNob3Vs
ZFVzZUlPU3VyZmFjZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaAppbmRleCA3YzU0YTJhMzBjZDVlYTdmZGJk
Yjk4NjMzYmE4NDBhYWVlYTBkYWU1Li5mNGFiOTQzOWRhODYxMjQ4MWZmNGFiNWMzMGEzZmY2MmNl
OTExM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaApAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogICAg
IGNsYXNzIFZpZGVvRmFjdG9yeSA6IHB1YmxpYyBXZWJDb3JlOjpWaWRlb0NhcHR1cmVGYWN0b3J5
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IFZpZGVvRmFjdG9yeShVc2VyTWVkaWFD
YXB0dXJlTWFuYWdlciYgbWFuYWdlcikgOiBtX21hbmFnZXIobWFuYWdlcikgeyB9Ci0gICAgICAg
IHZvaWQgc2V0U2hvdWxkQ2FwdHVyZUluR1BVUHJvY2Vzcyhib29sIHZhbHVlKSB7IG1fc2hvdWxk
Q2FwdHVyZUluR1BVUHJvY2VzcyA9IHZhbHVlOyB9CisgICAgICAgIHZvaWQgc2V0U2hvdWxkQ2Fw
dHVyZUluR1BVUHJvY2Vzcyhib29sKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFdlYkNvcmU6
OkNhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZVZpZGVvQ2FwdHVyZVNvdXJjZShjb25zdCBXZWJD
b3JlOjpDYXB0dXJlRGV2aWNlJiwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IFdlYkNvcmU6Ok1l
ZGlhQ29uc3RyYWludHMqKSBmaW5hbDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451652</attachid>
            <date>2022-02-11 00:46:13 -0800</date>
            <delta_ts>2022-02-11 01:49:13 -0800</delta_ts>
            <desc>Combined patch</desc>
            <filename>bug-236356-20220211094607.patch</filename>
            <type>text/plain</type>
            <size>232709</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBmZDk0YzE1ZWNkMDQ5N2IzMWFkMzBkYmQ4MDI1YzJkYTZjYWIyYmNjLi4xYjUy
ZDk3ODJkM2I4NDVlMDU0YTJhMzYwNDBiN2E2MTcwNzU1NzgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMi0wMi0xMSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCByZW1vdGUgdmlkZW8g
ZnJhbWVzIGluIFdlYlJUQyB2aWRlbyBwaXBlbGluZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIGEgd2F5IGZvciBPYmpDRnJhbWVCdWZm
ZXIgdG8gbm90IGRpcmVjdGx5IG93biBhIENWUGl4ZWxCdWZmZXJSZWYgYnV0IGEgcG9pbnRlcgor
ICAgICAgICB0aGF0IGNhbiBiZSB1c2VkIHRvIGdldCBhIENWUGl4ZWxCdWZmZXJSZWYuIFRoaXMg
aXMgdXNlZCB0byBhbGxvdyByZW1vdGUgZnJhbWVzIHRvIGJlIHNlbnQgb3ZlciB0byBsaWJ3ZWJy
dGMuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cDoKKyAgICAg
ICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAgICAgICAgKiBDb25m
aWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nk
ay9XZWJLaXQvV2ViS2l0RGVjb2Rlci5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dl
YktpdC9XZWJLaXREZWNvZGVyLm1tOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXRVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VXRpbGl0aWVzLm1tOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0
aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2Rr
L29iamMvbmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5tbToKKwogMjAyMi0wMi0wMyAgTWlj
aGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQgcHJvamVj
dHMgaGF2ZSBpbmNvcnJlY3QgaW5zdGFsbCBuYW1lIGZvciB0aGUgZnJhbWV3b3JrcyBmb3IgQ2F0
YWx5c3QgYnVpbGRzIHdpdGggdGhlIHN5c3RlbSBjb250ZW50IHBhdGgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5
NGIyYmFkNWQxMzRkNjUyOTZmOTEyNTE1ZjZlNDU5OTNmYWNlNzE1Li4xNzQ4ODlhZGJiM2Q4NDI2
MWQzODk3YjViNjFmZjlkZmY0MDUzMjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODAgQEAKKzIw
MjItMDItMTEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFN1
cHBvcnQgcmVtb3RlIHZpZGVvIGZyYW1lcyBpbiBXZWJSVEMgdmlkZW8gcGlwZWxpbmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjM1NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IHRvIHJlY2Vp
dmUvc2VuZCByZW1vdGUgZnJhbWVzIGFzIHdlYnJ0YyBWaWRlb0ZyYW1lIGJ1ZmZlcnMuCisgICAg
ICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9u
cy9XZWJDb3JlLnhjY29uZmlnOgorICAgICAgICAqIHBsYXRmb3JtL01lZGlhU2FtcGxlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vVmlk
ZW9GcmFtZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZUNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHA6CisKKzIw
MjItMDItMTEgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbnRyb2R1Y2UgYSBSZW1vdGVNZWRpYVNhbXBsZVByb3h5IHRvIHJlcHJlc2VudCBjYXB0dXJl
ZCB2aWRlbyBmcmFtZXMgdXNlZCBpbiBNZWRpYSBTdHJlYW1zIGFuZCBwcmVzZW50IGluIEdQVVAK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjA5OQor
CisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgQWRkIFZpZGVv
RnJhbWUgOiBwdWJsaWMgTWVkaWFTdHJlYW0sIGJhc2UgY2xhc3MgZm9yIE1lZGlhIFN0cmVhbSB2
aWRlbyBmcmFtZXMuCisgICAgICAgIEN1cnJlbnRseSBpbmhlcml0cyBmcm9tIE1lZGlhU2FtcGxl
LCBidXQgbGF0ZXIgd2lsbCByZW1vdmUgdGhlIE1lZGlhU2FtcGxlLgorCisgICAgICAgIFRoZSBX
ZWJDb3JlOjpWaWRlb0ZyYW1lIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gdmFyaW91cyBlbnRy
eS1wb2ludHMgdGhhdAorICAgICAgICBjdXJyZW50bHkgYXJlIGN1cnJlbnRseSB0eXBlZCBhczoK
KyAgICAgICAgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZpZGVv
U2FtcGxlTWV0YWRhdGEsIC4uLikuCisgICAgICAgIFRoZSBuZXcgY2xhc3MgV2ViS2l0OjpSZW1v
dGVWaWRlb0ZyYW1lUHJveHkgOiBwdWJsaWMgVmlkZW9GcmFtZSBjYW4gYmUgcGFzc2VkIHRvIHRo
ZXNlIEFQSXMuCisgICAgICAgIFRoZSBBUEkgZW50cnlwb2ludHMgYXJlIG5vdCB5ZXQgY2hhbmdl
ZCBpbiBvcmRlciB0byBwYXJ0aWFsbHkgcm9sbCB0aGUgY2hhbmdlcyBpbi4KKyAgICAgICAgTGF0
ZXIgb24sIHRoZSBlbnRyeXBvaW50cyB3aWxsIGJlIHNpbWlsYXIgdG86CisgICAgICAgICAgIHZv
aWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoVmlkZW9GcmFtZSYsIFZpZGVvU2FtcGxlTWV0YWRhdGEs
IC4uLikuCisKKyAgICAgICAgUmVtb3ZlcyBNZWRpYVNhbXBsZTo6c2V0VHJhY2tJRCBhcyB0aGF0
IGlzIG5vdCB1c2VkLgorICAgICAgICBDaGFuZ2VzIE1lZGlhU2FtcGxlOjpwbGF0Zm9ybVNhbXBs
ZSgpIHRvIGNvbnN0LCBzbyB0aGF0IGl0IGNhbiBiZSBjYWxsZWQgZnJvbQorICAgICAgICBjb25z
dCBjb250ZXh0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0b3IuCisKKyAgICAgICAg
KiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9NZWRpYVNh
bXBsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmRlY29kZVRpbWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9GcmFtZTo6ZHVyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9GcmFtZTo6dHJhY2tJRCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjpz
aXplSW5CeXRlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjpwcmVzZW50
YXRpb25TaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6Om9mZnNldFRp
bWVzdGFtcHNCeSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjpzZXRUaW1lc3RhbXBz
KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmlzRGl2aXNhYmxlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmRpdmlkZSk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb0ZyYW1lOjpjcmVhdGVOb25EaXNwbGF5aW5nQ29weSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb0ZyYW1lOjpmbGFncyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Zy
YW1lOjpieXRlUmFuZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6ZHVt
cCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vVmlkZW9GcmFtZS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjplbnF1ZXVlU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaDoKKyAgICAgICAgKGlz
VHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTYW1wbGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpD
OjpwbGF0Zm9ybVNhbXBsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2FtcGxlR1N0cmVhbWVyOjpwbGF0Zm9ybVNhbXBsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTYW1wbGU6OnBsYXRmb3JtU2FtcGxlIGNvbnN0KToK
KwogMjAyMi0wMi0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgog
CiAgICAgICAgIFRhYiBjaGFyYWN0ZXJzIGFuZCBjaCB1bml0cyBkbyBub3Qgb2JleSBzeW50aGV0
aWMgYm9sZCB3aWR0aCBhZGp1c3RtZW50cyBjb3JyZWN0bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjA3Nzg5Zjc3
ZDVkZjBhMDAzNTU2MTVlMTAzMTdiZTNlZDE5MDQ3ZS4uZTlmMWE4MzYwOGI2MjdlM2IyNDE2NzVl
OTBmNGVjMDc5NjcwMTRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMzggQEAKKzIwMjItMDItMTEg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgcmVt
b3RlIHZpZGVvIGZyYW1lcyBpbiBXZWJSVEMgdmlkZW8gcGlwZWxpbmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjM1NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IHJlY2VpdmluZyByZW1vdGUg
c2FtcGxlcyBmcm9tIGNhbWVyYSBvciBIVyBkZWNvZGVycy4KKyAgICAgICAgSW4gdGhhdCBjYXNl
LCB3ZSBjcmVhdGUgcmVtb3RlIHZpZGVvIGZyYW1lcyBhbmQgYWxsb3cgcGlwaW5nIHRoZW0gdG8g
b3VyIGV4aXN0aW5nIHBpcGVsaW5lLgorICAgICAgICBXZSB1cGRhdGUgTWVkaWFSZWNvcmRlciBh
bmQgTGliV2ViUlRDIEhXIGVuY29kZXJzIHRvIGRlYWwgd2l0aCB0aGlzLgorICAgICAgICBTaW5j
ZSB3ZSBoYXZlIGEgY29kZSBwYXRoIHRoYXQgcmVxdWlyZXMgZ2V0dGluZyBhY2Nlc3MgdG8gdGhl
IHJhdyBwaXhlbHMsIHdlIGludHJvZHVjZSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5
CisgICAgICAgIHRvIGFsbG93IGdldHRpbmcgdGhhdCBkYXRhIHRocm91Z2ggc2hhcmVkIG1lbW9y
eSBhc3luY2hyb25vdXNseS4KKyAgICAgICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5IHdpbGwgdGhl
biB1c2UgYSBzZW1hcGhvcmUgdG8gYmxvY2sgb24gdGhlIGFzeW5jIElQQyByZXN1bHQuIAorCisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6
CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHA6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVz
c2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJv
eHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQ
cm94eS5tbToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVy
LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmg6
CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIuY3BwOgorICAgICAgICAqIFNoYXJlZC9UaHJlYWRTYWZlT2JqZWN0SGVhcC5oOgor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVu
dGlmaWVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFt
ZVByb3h5LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0Zy
YW1lUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0Zy
YW1lUHJveHlJZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGli
V2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5o
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXBQcm94eS5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5jcHA6CisgICAgICAgICog
V2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW46
CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHA6
CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oOgor
CisyMDIyLTAyLTExICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgSW50cm9kdWNlIGEgUmVtb3RlTWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2Fw
dHVyZWQgdmlkZW8gZnJhbWVzIHVzZWQgaW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBH
UFVQCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYw
OTkKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFdlYkNv
bnRlbnQgcHJvY2VzczoKKyAgICAgICAgQWRkIFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5
LCBXZWJDb250ZW50IHByb2Nlc3Mgc2lkZSBwcm94eSBvYmplY3QgdGhhdAorICAgICAgICBXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMgY2FuIHVzZS4KKworICAg
ICAgICBSZW1vdGVWaWRlb0ZyYW1lUHJveHkgY2FuIGJlIHNlbnQgdG8gdGhlIEdQVVAgYW5kIHRo
ZSB0aGUgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLiBTbworICAgICAgICB0aGUgY2FwdHVyZWQg
Y29udGVudCBzaG93cyBpbiBjb21wb3NpdGluZyB0aHJvdWdoIHZpZGVvIGVsZW1lbnQuCisKKyAg
ICAgICAgQXQgdGhlIG1vbWVudCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMg
Y2Fubm90IHBhaW50IFJlbW90ZVZpZGVvRnJhbWVQcm94eSB0byB0aGUKKyAgICAgICAgZG9jdW1l
bnQgQ1NTIHBhaW50ZWQgY29udGVudCwgQ29udGV4dDJEIG9yIFdlYkdMIGNhbnZhcy4KKworICAg
ICAgICBHUFVQOgorICAgICAgICBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCBpcyBhIG1hcHBp
bmcKKyAgICAgICAgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgLT4gTWVkaWFTYW1wbGUuIEN1
cnJlbnRseSBhbGwgb2JqZWN0cworICAgICAgICBtYXAgdG8gbm9ybWFsIE1lZGlhU2FtcGxlQVZG
T2JqQy4KKworICAgICAgICBBZGQgYW4gZXhhbXBsZSBpbXBsZW1lbnRhdGlvbiB3aGVyZSBhIHJl
bW90ZSBNZWRpYVNhbXBsZSBpcyByZXR1cm5lZCBieSBJUEM6CisgICAgICAgIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpLgorCisg
ICAgICAgIFRoZSBHUFVQIG9iamVjdCBwb2ludGVkIGJ5IFJlbW90ZVZpZGVvRnJhbWVJZGVudGlm
aWVyIGlzOgorICAgICAgICAtIGNyZWF0ZWQgaW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBh
aW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgaW4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wgdGhyZWFkCisgICAgICAgIC0gY29uc3VtZWQgaW4gUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjplbnF1ZXVlU2FtcGxlIGluIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ck1hbmFnZXIgdGhyZWFkCisgICAgICAgIC0gcmVsZWFzZWQgaW4gUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXA6OnJlbGVhc2VWaWRlb0ZyYW1lIGluIEdQVVAgbWFpbiB0aHJlYWQKKyAgICAgICAg
QWxsIG9mIHRoZXNlIG1lc3NhZ2VzIGFyZSBhc3luY2hyb25vdXMgYW5kIGNhbiBhcnJpdmUgdG8g
dGhlaXIgZGVzdGluYXRpb24gaW4gYW55IG9yZGVyLgorICAgICAgICBGb3IgZXhhbXBsZSwgcmVx
dWVzdCB0byByZWxlYXNlIHRoZSB2aWRlbyBmcmFtZSBjYW4gaGFwcGVuIGJlZm9yZSB0aGUgbWVz
c2FnZSB0byBjcmVhdGUgdGhlIHZpZGVvIGZyYW1lIGhhcyBiZWVuCisgICAgICAgIHJlY2VpdmVk
LgorCisgICAgICAgIFRvIHNvbHZlIHRoZSBvcmRlcmluZyBpc3N1ZSwgaW50cm9kdWNlIHJlYWRl
cnMtd3JpdGVycyByZWZlcmVuY2UgY291bnRpbmcgbWV0aG9kIHZpYSBmb2xsb3dpbmcgY2xhc3Nl
czoKKyAgICAgICAgIC0gT2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UKKyAgICAgICAgIC0g
T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlCisgICAgICAgICAtIE9iamVjdElkZW50aWZp
ZXJSZWZlcmVuY2VUcmFja2VyCisKKyAgICAgICAgT2JqZWN0SWRlbnRpZmllciBpZGVudGlmaWVz
IHRoZSBvYmplY3QuCisgICAgICAgIE9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZSBpZGVu
dGlmaWVzIGEgbmV3IHZlcnNpb24gb2YgdGhlIGNvbnRlbnQgcG9pbnRlZCBieSB0aGUgaWRlbnRp
Zmllci4KKyAgICAgICAgUHNldWRvY29kZSBleGFtcGxlczoKKyAgICAgICAgICBXcml0ZVJlZmVy
ZW5jZSB7IGlkZW50aWZpZXIgPSAxLCBwZW5kaW5nUmVhZHMgPSAwLCB2ZXJzaW9uID0gMCB9IG1l
YW5zOgorICAgICAgICAgICAgIkVuZCB0aGUgbGlmZS10aW1lIG9mIGlkZW50aWZpZXIgMSwgdmVy
c2lvbiAwLiBDcmVhdGUgdmVyc2lvbiA9IDEiCisgICAgICAgICAgICBUaGlzIGlzIGhvdyBpbml0
aWFsIG9iamVjdCBpcyBhc3NpZ25lZCB0byB0aGUgcmVmZXJlbmNlLgorICAgICAgICAgIFdyaXRl
UmVmZXJlbmNlIHsgaWRlbnRpZmllciA9IDEsIHBlbmRpbmdSZWFkcyA9IDc3LCB2ZXJzaW9uID0g
MzIgfSBtZWFucworICAgICAgICAgICAgIkVuZCB0aGUgbGlmZS10aW1lIG9mIGlkZW50aWZpZXIg
MSwgdmVyc2lvbiAzMiB3aGVuIGFsbCA3NyByZWFkcyBoYXZlIGNvbXBsZXRlZC4gQ3JlYXRlIHZl
cnNpb24gPSAzMyIKKworICAgICAgICBPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZSBkZWNs
YXJlcyBhIHJlYWQgZGVwZW5kZW5jeSB0byBhIHNwZWNpZmljIHZlcnNpb24gb2YgdGhlIGNvbnRl
bnQgcG9pbnRlZCBieSB0aGUgaWRlbnRpZmllci4KKyAgICAgICAgUHNldWRvY29kZSBleGFtcGxl
czoKKyAgICAgICAgICAgUmVhZFJlZmVyZW5jZSB7IGlkZW50aWZpZXIgPSAxLCB2ZXJzaW9uID0g
MzIgfSBtZWFucworICAgICAgICAgICAiQ29tcGxldGUgb25lIHJlYWQgb2YgaWRlbnRpZmllciAx
LCB2ZXJzaW9uIDMyIi4KKworICAgICAgICBDcmVhdGVzLCB1cGRhdGVzIGFuZCBkZXN0cnVjdGlv
bnMgYXJlIFdyaXRlUmVmZXJlbmNlcy4KKyAgICAgICAgUmVhZHMgYXJlIFJlYWRSZWZlcmVuY2Vz
LgorCisgICAgICAgIFRoZSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlciBjcmVhdGVz
IHdyaXRlIGFuZCByZWFkIHJlZmVyZW5jZXMgaW4gdGhlIFByb3h5IC11c2luZyBwcm9jZXNzIChX
ZWJDb250ZW50IHByb2Nlc3MpLgorCisgICAgICAgIFRoZSBhZGRlZCBUaHJlYWRTYWZlT2JqZWN0
SGVhcCByZXNvbHZlcyB0aGUgcmVhZCBhbmQgd3JpdGUgcmVmZXJlbmNlcyBpbiB0aGUgcmVhbCBv
YmplY3QgcHJvY2VzcyAoR1BVUCBpbiB0aGlzIGNhc2UpLgorICAgICAgICBSZWFkcyBhbmQgd3Jp
dGVzIGFyZSBibG9ja2luZyB0aGUgcmVxdWVzdGluZyB0aHJlYWQgYXBwcm9wcmlhdGVseToKKyAg
ICAgICAgIC0gUmVhZCBvZiB1bmtub3duIHZlcnNpb24gb2YgdGhlIGlkZW50aWZpZXIgYmxvY2tz
IHVudGlsIHRoZSB3cml0ZSBjcmVhdGVzIHRoZSB2ZXJzaW9uCisgICAgICAgICAtIFdyaXRlIG9m
IG5ldyB2ZXJzaW9uIG9mIHRoZSBpZGVudGlmaWVyIGJsb2NrcyB1bnRpbCB0aGUgcmVhZHMgaGF2
ZSByZXRpcmVkLCBvciBjcmVhdGVzIHBhcmFsbGVsLCBuZXcgdmVyc2lvbgorICAgICAgICAgICBv
ZiB0aGUgY29udGVudCBpbiBjYXNlIG9mIGNvcHktb24td3JpdGUgc2NoZW1lcy4KKworICAgICAg
ICBJbiB0aGlzIGNvbW1pdCBvYmplY3RzIHBvaW50ZWQgYnkgUmVtb3RlVmlkZW9GcmFtZUlkZW50
aWZpZXIgYXJlIGltbXV0YWJsZSB1bnRpbCBkZXN0cm95ZWQsIHNvIHRoZXJlIGlzIG5vIHVwZGF0
ZSBvcgorICAgICAgICBjb3B5LW9uLXdyaXRlIHNjaGVtZSBoZXJlLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnZpZGVvRnJhbWVPYmplY3RIZWFwIGNvbnN0KToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBhaW50Q29tcG9zaXRl
ZFJlc3VsdHNUb01lZGlhU2FtcGxlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6flJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXA6OnN0b3BMaXN0ZW5pbmdGb3JJUEMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6YWRkVmlkZW9GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpyZWxlYXNlVmlkZW9GcmFtZSk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oOiBBZGRlZC4K
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1l
c3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBHUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6UmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlQ1YpOgorICAgICAgICAqIEdQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oOgorICAgICAgICAq
IEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlcjo6Y3JlYXRlTGF5ZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAodHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9k
ZWNsYXJlZCk6CisgICAgICAgIChoZWFkZXJzX2Zvcl90eXBlKToKKyAgICAgICAgKiBTaGFyZWQv
SVBDVGVzdGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGVyOjpzdGFydE1lc3NhZ2VU
ZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6aXNUZXN0aW5nSVBDKToKKyAgICAgICAgKiBTaGFy
ZWQvSVBDVGVzdGVyLmg6CisgICAgICAgIChXZWJLaXQ6OmlzVGVzdGluZ0lQQyk6CisgICAgICAg
ICogU2hhcmVkL09iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlOjpPYmplY3RJZGVudGlmaWVy
UmVmZXJlbmNlKToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTo6
aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZl
cmVuY2U6OnZlcnNpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVy
UmVmZXJlbmNlOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRl
bnRpZmllclJlZmVyZW5jZTo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZTo6T2JqZWN0SWRlbnRpZmll
clJlYWRSZWZlcmVuY2UpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVhZFJl
ZmVyZW5jZTo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50
aWZpZXJSZWFkUmVmZXJlbmNlOjp2ZXJzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2Jq
ZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2U6OnJlZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZTo6ZGVjb2RlKToKKyAg
ICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlOjpPYmplY3RJZGVu
dGlmaWVyV3JpdGVSZWZlcmVuY2UpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVy
V3JpdGVSZWZlcmVuY2U6OmlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmpl
Y3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U6OnZlcnNpb24gY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U6OnBlbmRpbmdSZWFkcyBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTo6cmVmZXJl
bmNlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJl
bmNlOjpyZXRpcmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyV3Jp
dGVSZWZlcmVuY2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50
aWZpZXJXcml0ZVJlZmVyZW5jZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRl
bnRpZmllclJlZmVyZW5jZVRyYWNrZXI6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2Vy
KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXI6OnJl
YWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJh
Y2tlcjo6d3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVm
ZXJlbmNlVHJhY2tlcjo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OmFkZCk6
CisgICAgICAgIChXZWJLaXQ6Om9wZXJhdG9yPDwpOgorICAgICAgICAoV1RGOjpEZWZhdWx0SGFz
aDxXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4+OjpoYXNoKToKKyAgICAgICAg
KFdURjo6RGVmYXVsdEhhc2g8V2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+Pjo6
ZXF1YWwpOgorICAgICAgICAqIFNoYXJlZC9UaHJlYWRTYWZlT2JqZWN0SGVhcC5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6VGhyZWFkU2FmZU9iamVjdEhlYXA6OlJlZmVyZW5jZVN0YXRlOjpS
ZWZlcmVuY2VTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkhlbGRUeXBlPjo6cmV0aXJlKToKKyAg
ICAgICAgKFdlYktpdDo6SGVsZFR5cGU+OjpyZXRpcmVSZW1vdmUpOgorICAgICAgICAoV2ViS2l0
OjpIZWxkVHlwZT46OmNsZWFyKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVh
ZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFTYW1w
bGVCeXRlUmFuZ2U6OnBsYXRmb3JtU2FtcGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvbWFj
L01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmg6CisgICAgICAgICogU291
cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWlu
dENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlD
b2NvYS5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1l
SWRlbnRpZmllci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIu
aC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHku
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnByb3BlcnRpZXMp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlJlbW90ZVZpZGVvRnJh
bWVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6flJlbW90
ZVZpZGVvRnJhbWVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94
eTo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6d3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJv
eHk6OnJlYWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6
OnByZXNlbnRhdGlvblRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6OnBsYXRmb3JtU2FtcGxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
VmlkZW9GcmFtZVByb3h5Ojp2aWRlb1JvdGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb01pcnJvcmVkIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb1BpeGVsRm9ybWF0IGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb0ZyYW1lIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpkaXNjb25uZWN0R1BVUHJv
Y2Vzc0lmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVBy
b3h5Ojp3YWl0Rm9yV2FzSW5pdGlhbGl6ZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Ondhc0luaXRpYWxpemVkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9w
ZXJ0aWVzOjpkZWNvZGUpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkubWVzc2FnZXMuaW46IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5oLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik6Cisg
ICAgICAgIChXZWJLaXQ6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6flNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
ZW5xdWV1ZVNhbXBsZSk6CisgICAgICAgIChXZWJLaXQ6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OlNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZGlzY29ubmVjdEdQVVByb2Nlc3NDb25uZWN0aW9uSWZOZWVk
ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIuaDoKKwogMjAyMi0wMi0xMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1bR1RLXSBCdWJibGV3cmFwTGF1bmNoZXIgbGVha3Mg
RC1CdXMgcHJveHkgc29ja2V0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCmluZGV4IGNhNTQ3M2E2
MmFkOThiZjZiNGUwY2ViNjAyODg1NjQ1ZDkwZjdkMjMuLmJiYmMwNTgyN2NmNzRhOTNhMDAyZTUw
NzQ3ODIxMTBmY2Y1Y2RkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAKQEAgLTIyMyw4ICsy
MjMsMTEgQEAgX19aTjZ3ZWJydGMyMmNyZWF0ZUxvY2FsSDI2NURlY29kZXJFVTEzYmxvY2tfcG9p
bnRlckZ2UDEwX19DVkJ1ZmZlcmpqRQogX19aTjZ3ZWJydGMyMWNyZWF0ZUxvY2FsVlA5RGVjb2Rl
ckVVMTNibG9ja19wb2ludGVyRnZQMTBfX0NWQnVmZmVyampFCiBfX1pONndlYnJ0YzE5cmVsZWFz
ZUxvY2FsRGVjb2RlckVQdgogX19aTjZ3ZWJydGMxMWRlY29kZUZyYW1lRVB2alBLaG0KLV9fWk42
d2VicnRjMjR2aWRlb0RlY29kZXJUYXNrQ29tcGxldGVFUHZqUDEwX19DVkJ1ZmZlcmoKK19fWk42
d2VicnRjMjR2aWRlb0RlY29kZXJUYXNrQ29tcGxldGVFUHZqalAxMF9fQ1ZCdWZmZXIKK19fWk42
d2VicnRjMjR2aWRlb0RlY29kZXJUYXNrQ29tcGxldGVFUHZqalMwX1BGUDEwX19DVkJ1ZmZlclMw
X0VQRnZTMF9FaWkKIF9fWk42d2VicnRjMjRzZXRWaWRlb0RlY29kZXJDYWxsYmFja3NFUEZQdlJL
TlNfMTRTZHBWaWRlb0Zvcm1hdEVFUEZpUzBfRVBGaVMwX2pQS2htdHRFUEZpUzBfUzBfRQorX19a
TjZ3ZWJydGMyNHRvV2ViUlRDVmlkZW9GcmFtZUJ1ZmZlckVQdlBGUDEwX19DVkJ1ZmZlclMwX0VQ
RnZTMF9FaWkKK19fWk42d2VicnRjMjR2aWRlb0ZyYW1lQnVmZmVyUHJvdmlkZXJFUktOU18xMFZp
ZGVvRnJhbWVFCiBfX1pONndlYnJ0YzE5c2V0RGVjb2RlckZyYW1lU2l6ZUVQdnR0CiBfX1pONndl
YnJ0YzE4UnRwQ29kZWNDYXBhYmlsaXR5QzFFdgogX19aTjZ3ZWJydGMyNGVuY29kZXJWaWRlb1Rh
c2tDb21wbGV0ZUVQdk5TXzE0VmlkZW9Db2RlY1R5cGVFUEtobVJLTlNfMjJXZWJLaXRFbmNvZGVk
RnJhbWVJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZp
Z3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCmluZGV4IGNhNTQ3M2E2MmFk
OThiZjZiNGUwY2ViNjAyODg1NjQ1ZDkwZjdkMjMuLmJiYmMwNTgyN2NmNzRhOTNhMDAyZTUwNzQ3
ODIxMTBmY2Y1Y2RkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9D
b25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKQEAgLTIyMyw4
ICsyMjMsMTEgQEAgX19aTjZ3ZWJydGMyMmNyZWF0ZUxvY2FsSDI2NURlY29kZXJFVTEzYmxvY2tf
cG9pbnRlckZ2UDEwX19DVkJ1ZmZlcmpqRQogX19aTjZ3ZWJydGMyMWNyZWF0ZUxvY2FsVlA5RGVj
b2RlckVVMTNibG9ja19wb2ludGVyRnZQMTBfX0NWQnVmZmVyampFCiBfX1pONndlYnJ0YzE5cmVs
ZWFzZUxvY2FsRGVjb2RlckVQdgogX19aTjZ3ZWJydGMxMWRlY29kZUZyYW1lRVB2alBLaG0KLV9f
Wk42d2VicnRjMjR2aWRlb0RlY29kZXJUYXNrQ29tcGxldGVFUHZqUDEwX19DVkJ1ZmZlcmoKK19f
Wk42d2VicnRjMjR2aWRlb0RlY29kZXJUYXNrQ29tcGxldGVFUHZqalAxMF9fQ1ZCdWZmZXIKK19f
Wk42d2VicnRjMjR2aWRlb0RlY29kZXJUYXNrQ29tcGxldGVFUHZqalMwX1BGUDEwX19DVkJ1ZmZl
clMwX0VQRnZTMF9FaWkKIF9fWk42d2VicnRjMjRzZXRWaWRlb0RlY29kZXJDYWxsYmFja3NFUEZQ
dlJLTlNfMTRTZHBWaWRlb0Zvcm1hdEVFUEZpUzBfRVBGaVMwX2pQS2htdHRFUEZpUzBfUzBfRQor
X19aTjZ3ZWJydGMyNHRvV2ViUlRDVmlkZW9GcmFtZUJ1ZmZlckVQdlBGUDEwX19DVkJ1ZmZlclMw
X0VQRnZTMF9FaWkKK19fWk42d2VicnRjMjR2aWRlb0ZyYW1lQnVmZmVyUHJvdmlkZXJFUktOU18x
MFZpZGVvRnJhbWVFCiBfX1pONndlYnJ0YzE5c2V0RGVjb2RlckZyYW1lU2l6ZUVQdnR0CiBfX1pO
NndlYnJ0YzE4UnRwQ29kZWNDYXBhYmlsaXR5QzFFdgogX19aTjZ3ZWJydGMyNGVuY29kZXJWaWRl
b1Rhc2tDb21wbGV0ZUVQdk5TXzE0VmlkZW9Db2RlY1R5cGVFUEtobVJLTlNfMjJXZWJLaXRFbmNv
ZGVkRnJhbWVJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0Nv
bmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCmluZGV4IGNhNTQ3M2E2MmFkOThi
ZjZiNGUwY2ViNjAyODg1NjQ1ZDkwZjdkMjMuLjJhNTdkY2E1YWYzOGVkZjNlM2EwZTlhNGVmZWY2
NGM4YTYzZTllNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25m
aWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAKQEAgLTIyMyw3ICsyMjMsMTAg
QEAgX19aTjZ3ZWJydGMyMmNyZWF0ZUxvY2FsSDI2NURlY29kZXJFVTEzYmxvY2tfcG9pbnRlckZ2
UDEwX19DVkJ1ZmZlcmpqRQogX19aTjZ3ZWJydGMyMWNyZWF0ZUxvY2FsVlA5RGVjb2RlckVVMTNi
bG9ja19wb2ludGVyRnZQMTBfX0NWQnVmZmVyampFCiBfX1pONndlYnJ0YzE5cmVsZWFzZUxvY2Fs
RGVjb2RlckVQdgogX19aTjZ3ZWJydGMxMWRlY29kZUZyYW1lRVB2alBLaG0KLV9fWk42d2VicnRj
MjR2aWRlb0RlY29kZXJUYXNrQ29tcGxldGVFUHZqUDEwX19DVkJ1ZmZlcmoKK19fWk42d2VicnRj
MjR2aWRlb0RlY29kZXJUYXNrQ29tcGxldGVFUHZqalAxMF9fQ1ZCdWZmZXIKK19fWk42d2VicnRj
MjR2aWRlb0RlY29kZXJUYXNrQ29tcGxldGVFUHZqalMwX1BGUDEwX19DVkJ1ZmZlclMwX0VQRnZT
MF9FaWkKK19fWk42d2VicnRjMjR0b1dlYlJUQ1ZpZGVvRnJhbWVCdWZmZXJFUHZQRlAxMF9fQ1ZC
dWZmZXJTMF9FUEZ2UzBfRWlpCitfX1pONndlYnJ0YzI0dmlkZW9GcmFtZUJ1ZmZlclByb3ZpZGVy
RVJLTlNfMTBWaWRlb0ZyYW1lRQogX19aTjZ3ZWJydGMyNHNldFZpZGVvRGVjb2RlckNhbGxiYWNr
c0VQRlB2UktOU18xNFNkcFZpZGVvRm9ybWF0RUVQRmlTMF9FUEZpUzBfalBLaG10dEVQRmlTMF9T
MF9FCiBfX1pONndlYnJ0YzE5c2V0RGVjb2RlckZyYW1lU2l6ZUVQdnR0CiBfX1pONndlYnJ0YzE4
UnRwQ29kZWNDYXBhYmlsaXR5QzFFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXREZWNvZGVyLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29k
ZXIuaAppbmRleCBiODIzZWQzMmNiMzNmYjNhNjc0YjQyOTg0MDhjMmFiOGY1Y2IwNmFkLi5lYzcz
MmY1Y2NiYjRkNWE4Zjg5NjU2NzM4NWI1MWM3MTg2YjU3OWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29k
ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
V2ViS2l0L1dlYktpdERlY29kZXIuaApAQCAtNTQsNyArNTQsOCBAQCB1c2luZyBWaWRlb0RlY29k
ZXJSZWdpc3RlckRlY29kZUNvbXBsZXRlQ2FsbGJhY2sgPSBpbnQzMl90KCopKFdlYktpdFZpZGVv
RGVjb2Rlcgogdm9pZCBzZXRWaWRlb0RlY29kZXJDYWxsYmFja3MoVmlkZW9EZWNvZGVyQ3JlYXRl
Q2FsbGJhY2ssIFZpZGVvRGVjb2RlclJlbGVhc2VDYWxsYmFjaywgVmlkZW9EZWNvZGVyRGVjb2Rl
Q2FsbGJhY2ssIFZpZGVvRGVjb2RlclJlZ2lzdGVyRGVjb2RlQ29tcGxldGVDYWxsYmFjayk7CiAK
IHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IGNyZWF0ZVdlYktp
dERlY29kZXJGYWN0b3J5KFdlYktpdEgyNjUsIFdlYktpdFZQOSwgV2ViS2l0VlA5VlRCKTsKLXZv
aWQgdmlkZW9EZWNvZGVyVGFza0NvbXBsZXRlKHZvaWQqIGNhbGxiYWNrLCB1aW50MzJfdCB0aW1l
U3RhbXAsIENWUGl4ZWxCdWZmZXJSZWYsIHVpbnQzMl90IHRpbWVTdGFtcFJUUCk7Cit2b2lkIHZp
ZGVvRGVjb2RlclRhc2tDb21wbGV0ZSh2b2lkKiBjYWxsYmFjaywgdWludDMyX3QgdGltZVN0YW1w
LCB1aW50MzJfdCB0aW1lU3RhbXBSVFAsIENWUGl4ZWxCdWZmZXJSZWYpOwordm9pZCB2aWRlb0Rl
Y29kZXJUYXNrQ29tcGxldGUodm9pZCogY2FsbGJhY2ssIHVpbnQzMl90IHRpbWVTdGFtcCwgdWlu
dDMyX3QgdGltZVN0YW1wUlRQLCB2b2lkKiwgR2V0QnVmZmVyQ2FsbGJhY2ssIFJlbGVhc2VCdWZm
ZXJDYWxsYmFjaywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKIAogdXNpbmcgTG9jYWxEZWNvZGVy
ID0gdm9pZCo7CiB1c2luZyBMb2NhbERlY29kZXJDYWxsYmFjayA9IHZvaWQgKF4pKENWUGl4ZWxC
dWZmZXJSZWYsIHVpbnQzMl90IHRpbWVTdGFtcCwgdWludDMyX3QgdGltZVN0YW1wTnMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dl
YktpdC9XZWJLaXREZWNvZGVyLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXREZWNvZGVyLm1tCmluZGV4IGFhNDE4ODQ4NmQxYWJj
NzAxOTY0NWE4YjU4ZDlmNzNhNTA0NmVjNTEuLmI3ZTA2N2YwYzlmNDVjM2E2M2UzNDY5OTlkOWYx
MGMzMDljN2Q1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2Rlci5tbQorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXIubW0K
QEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgInNkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29k
ZWMvUlRDVmlkZW9EZWNvZGVySDI2NC5oIgogI2ltcG9ydCAic2RrL29iamMvY29tcG9uZW50cy92
aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJIMjY1LmgiCiAjaW1wb3J0ICJzZGsvb2JqYy9jb21w
b25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2RlclZUQlZQOS5oIgorI2ltcG9ydCAic2Rr
L29iamMvbmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5oIgogCiBAaW50ZXJmYWNlIFdLX1JU
Q0xvY2FsVmlkZW9IMjY0SDI2NVZQOURlY29kZXIgOiBOU09iamVjdAogLSAoaW5zdGFuY2V0eXBl
KWluaXRIMjY0RGVjb2RlcldpdGhDYWxsYmFjazood2VicnRjOjpMb2NhbERlY29kZXJDYWxsYmFj
ayljYWxsYmFjazsKQEAgLTE3Myw3ICsxNzQsNyBAQCBSZW1vdGVWaWRlb0RlY29kZXI6On5SZW1v
dGVWaWRlb0RlY29kZXIoKQogICAgIHZpZGVvRGVjb2RlckNhbGxiYWNrcygpLnJlbGVhc2VDYWxs
YmFjayhtX2ludGVybmFsRGVjb2Rlcik7CiB9CiAKLXZvaWQgdmlkZW9EZWNvZGVyVGFza0NvbXBs
ZXRlKHZvaWQqIGNhbGxiYWNrLCB1aW50MzJfdCB0aW1lU3RhbXAsIENWUGl4ZWxCdWZmZXJSZWYg
cGl4ZWxCdWZmZXIsIHVpbnQzMl90IHRpbWVTdGFtcFJUUCkKK3ZvaWQgdmlkZW9EZWNvZGVyVGFz
a0NvbXBsZXRlKHZvaWQqIGNhbGxiYWNrLCB1aW50MzJfdCB0aW1lU3RhbXAsIHVpbnQzMl90IHRp
bWVTdGFtcFJUUCwgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcikKIHsKICAgICBhdXRvIHZp
ZGVvRnJhbWUgPSBWaWRlb0ZyYW1lOjpCdWlsZGVyKCkuc2V0X3ZpZGVvX2ZyYW1lX2J1ZmZlcihw
aXhlbEJ1ZmZlclRvRnJhbWUocGl4ZWxCdWZmZXIpKQogICAgICAgICAuc2V0X3RpbWVzdGFtcF9y
dHAodGltZVN0YW1wUlRQKQpAQCAtMTg1LDYgKzE4NiwxOCBAQCB2b2lkIHZpZGVvRGVjb2RlclRh
c2tDb21wbGV0ZSh2b2lkKiBjYWxsYmFjaywgdWludDMyX3QgdGltZVN0YW1wLCBDVlBpeGVsQnVm
ZmVyUgogICAgIHN0YXRpY19jYXN0PERlY29kZWRJbWFnZUNhbGxiYWNrKj4oY2FsbGJhY2spLT5E
ZWNvZGVkKHZpZGVvRnJhbWUpOwogfQogCit2b2lkIHZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZSh2
b2lkKiBjYWxsYmFjaywgdWludDMyX3QgdGltZVN0YW1wLCB1aW50MzJfdCB0aW1lU3RhbXBSVFAs
IHZvaWQqIHBvaW50ZXIsIEdldEJ1ZmZlckNhbGxiYWNrIGdldEJ1ZmZlckNhbGxiYWNrLCBSZWxl
YXNlQnVmZmVyQ2FsbGJhY2sgcmVsZWFzZUJ1ZmZlckNhbGxiYWNrLCBpbnQgd2lkdGgsIGludCBo
ZWlnaHQpCit7CisgICAgYXV0byB2aWRlb0ZyYW1lID0gVmlkZW9GcmFtZTo6QnVpbGRlcigpLnNl
dF92aWRlb19mcmFtZV9idWZmZXIodG9XZWJSVENWaWRlb0ZyYW1lQnVmZmVyKHBvaW50ZXIsIGdl
dEJ1ZmZlckNhbGxiYWNrLCByZWxlYXNlQnVmZmVyQ2FsbGJhY2ssIHdpZHRoLCBoZWlnaHQpKQor
ICAgICAgICAuc2V0X3RpbWVzdGFtcF9ydHAodGltZVN0YW1wUlRQKQorICAgICAgICAuc2V0X3Rp
bWVzdGFtcF9tcygwKQorICAgICAgICAuc2V0X3JvdGF0aW9uKChWaWRlb1JvdGF0aW9uKVJUQ1Zp
ZGVvUm90YXRpb25fMCkKKyAgICAgICAgLmJ1aWxkKCk7CisgICAgdmlkZW9GcmFtZS5zZXRfdGlt
ZXN0YW1wKHRpbWVTdGFtcCk7CisKKyAgICBzdGF0aWNfY2FzdDxEZWNvZGVkSW1hZ2VDYWxsYmFj
ayo+KGNhbGxiYWNrKS0+RGVjb2RlZCh2aWRlb0ZyYW1lKTsKK30KKwogYm9vbCBSZW1vdGVWaWRl
b0RlY29kZXI6OkNvbmZpZ3VyZShjb25zdCBTZXR0aW5ncyYpCiB7CiAgICAgcmV0dXJuIHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaAppbmRleCBhMjNmYWE2
ZWQ1N2RmN2MzMjJjNjcwYjc3MzVjYWI4M2M2NjE1OTM0Li4yZWY4YTFlOTE1Mzg2MTFlZmU1YWY3
MzRmODBjZDdhOWJhNGY1M2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRp
bGl0aWVzLmgKQEAgLTUyLDQgKzUyLDggQEAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlckZy
b21GcmFtZShjb25zdCBWaWRlb0ZyYW1lJikgQ0ZfUkVUVVJOU19SRVRBSU5FRDsKIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+IHBpeGVsQnVmZmVyVG9GcmFtZShD
VlBpeGVsQnVmZmVyUmVmKTsKIGJvb2wgY29weVZpZGVvRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYs
IHVpbnQ4X3QqKTsKIAordHlwZWRlZiBDVlBpeGVsQnVmZmVyUmVmICgqR2V0QnVmZmVyQ2FsbGJh
Y2spKHZvaWQqKTsKK3R5cGVkZWYgdm9pZCAoKlJlbGVhc2VCdWZmZXJDYWxsYmFjaykodm9pZCop
OworcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gdG9XZWJSVENW
aWRlb0ZyYW1lQnVmZmVyKHZvaWQqLCBHZXRCdWZmZXJDYWxsYmFjaywgUmVsZWFzZUJ1ZmZlckNh
bGxiYWNrLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwordm9pZCogdmlkZW9GcmFtZUJ1ZmZlclBy
b3ZpZGVyKGNvbnN0IFZpZGVvRnJhbWUmKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1t
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9X
ZWJLaXRVdGlsaXRpZXMubW0KaW5kZXggN2Y2ZmJiMTFlNzY5M2FkNjZkZjkyNGI5M2Y0ZDI4ZTdl
ZTg5ZTBhOC4uY2ZhNzk2YzVjM2IwZGFhNTk0YzFjYjE2NjQ3ZDMxNTk2NDVlOWVhMCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXRVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW0KQEAgLTUyLDYgKzUyLDIx
IEBAIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+IHBpeGVsQnVm
ZmVyVG9GcmFtZShDVlBpeGVsQnVmZmVyUmVmCiAgICAgcmV0dXJuIG5ldyBydGM6OlJlZkNvdW50
ZWRPYmplY3Q8T2JqQ0ZyYW1lQnVmZmVyPihmcmFtZUJ1ZmZlcik7CiB9CiAKK3J0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+IHRvV2ViUlRDVmlkZW9GcmFtZUJ1ZmZl
cih2b2lkKiBwb2ludGVyLCBHZXRCdWZmZXJDYWxsYmFjayBnZXRCdWZmZXJDYWxsYmFjaywgUmVs
ZWFzZUJ1ZmZlckNhbGxiYWNrIHJlbGVhc2VCdWZmZXJDYWxsYmFjaywgaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KQoreworICAgIHJldHVybiBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PE9iakNGcmFt
ZUJ1ZmZlcj4oT2JqQ0ZyYW1lQnVmZmVyOjpCdWZmZXJQcm92aWRlciB7IHBvaW50ZXIsIGdldEJ1
ZmZlckNhbGxiYWNrLCByZWxlYXNlQnVmZmVyQ2FsbGJhY2sgfSwgd2lkdGgsIGhlaWdodCk7Cit9
CisKK3ZvaWQqIHZpZGVvRnJhbWVCdWZmZXJQcm92aWRlcihjb25zdCBWaWRlb0ZyYW1lJiBmcmFt
ZSkKK3sKKyAgICBhdXRvIGJ1ZmZlciA9IGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpOworICAg
IGlmIChidWZmZXItPnR5cGUoKSAhPSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprTmF0aXZlKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxPYmpDRnJh
bWVCdWZmZXIqPihidWZmZXIuZ2V0KCkpLT5mcmFtZV9idWZmZXJfcHJvdmlkZXIoKTsKKworfQor
CiBzdGF0aWMgYm9vbCBDb3B5VmlkZW9GcmFtZVRvUGl4ZWxCdWZmZXIoY29uc3Qgd2VicnRjOjpJ
NDIwQnVmZmVySW50ZXJmYWNlKiBmcmFtZSwgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbF9idWZmZXIp
IHsKICAgICBSVENfRENIRUNLKHBpeGVsX2J1ZmZlcik7CiAgICAgUlRDX0RDSEVDSyhDVlBpeGVs
QnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsX2J1ZmZlcikgPT0ga0NWUGl4ZWxGb3JtYXRU
eXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1bGxSYW5nZSB8fCBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxG
b3JtYXRUeXBlKHBpeGVsX2J1ZmZlcikgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhC
aVBsYW5hclZpZGVvUmFuZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0
aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5oCmluZGV4IGY5NDFkYWQ2ZTRmZTU2OTAwZWNhOTA1
MGMwYTgzNGVkYjg1NWY2ODEuLjNkMmViZDc3OTYzYWJjYTQ0Y2NlZmUwNzNmMTExYmQ1YjUxZWQy
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL25hdGl2ZS9zcmMvb2JqY19mcmFtZV9idWZmZXIuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUvc3JjL29iamNf
ZnJhbWVfYnVmZmVyLmgKQEAgLTE0LDE2ICsxNCwyNyBAQAogI2ltcG9ydCA8Q29yZVZpZGVvL0Nv
cmVWaWRlby5oPgogCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1ZGUvdmlkZW9fZnJhbWVf
YnVmZmVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3luY2hyb25pemF0aW9uL211dGV4LmgiCiAK
IEBwcm90b2NvbCBSVENWaWRlb0ZyYW1lQnVmZmVyOwogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAor
dHlwZWRlZiBDVlBpeGVsQnVmZmVyUmVmICgqR2V0QnVmZmVyQ2FsbGJhY2spKHZvaWQqKTsKK3R5
cGVkZWYgdm9pZCAoKlJlbGVhc2VCdWZmZXJDYWxsYmFjaykodm9pZCopOworCiBjbGFzcyBPYmpD
RnJhbWVCdWZmZXIgOiBwdWJsaWMgVmlkZW9GcmFtZUJ1ZmZlciB7CiAgcHVibGljOgogICBleHBs
aWNpdCBPYmpDRnJhbWVCdWZmZXIoaWQ8UlRDVmlkZW9GcmFtZUJ1ZmZlcj4pOwogICB+T2JqQ0Zy
YW1lQnVmZmVyKCkgb3ZlcnJpZGU7CiAKKyAgc3RydWN0IEJ1ZmZlclByb3ZpZGVyIHsKKyAgICB2
b2lkICpwb2ludGVyIHsgbnVsbHB0ciB9OworICAgIEdldEJ1ZmZlckNhbGxiYWNrIGdldEJ1ZmZl
ciB7IG51bGxwdHIgfTsKKyAgICBSZWxlYXNlQnVmZmVyQ2FsbGJhY2sgcmVsZWFzZUJ1ZmZlciB7
IG51bGxwdHIgfTsKKyAgfTsKKyAgT2JqQ0ZyYW1lQnVmZmVyKEJ1ZmZlclByb3ZpZGVyLCBpbnQg
d2lkdGgsIGludCBoZWlnaHQpOworCiAgIFR5cGUgdHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAg
IGludCB3aWR0aCgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMzIsMTEgKzQzLDE0IEBAIGNsYXNzIE9i
akNGcmFtZUJ1ZmZlciA6IHB1YmxpYyBWaWRlb0ZyYW1lQnVmZmVyIHsKICAgcnRjOjpzY29wZWRf
cmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IFRvSTQyMCgpIG92ZXJyaWRlOwogCiAgIGlkPFJU
Q1ZpZGVvRnJhbWVCdWZmZXI+IHdyYXBwZWRfZnJhbWVfYnVmZmVyKCkgY29uc3Q7CisgIHZvaWQq
IGZyYW1lX2J1ZmZlcl9wcm92aWRlcigpIHsgcmV0dXJuIGZyYW1lX2J1ZmZlcl9wcm92aWRlcl8u
cG9pbnRlcjsgfQogCiAgcHJpdmF0ZToKICAgaWQ8UlRDVmlkZW9GcmFtZUJ1ZmZlcj4gZnJhbWVf
YnVmZmVyXzsKKyAgQnVmZmVyUHJvdmlkZXIgZnJhbWVfYnVmZmVyX3Byb3ZpZGVyXzsKICAgaW50
IHdpZHRoXzsKICAgaW50IGhlaWdodF87CisgIG11dGFibGUgd2VicnRjOjpNdXRleCBtdXRleF87
CiB9OwogCiBpZDxSVENWaWRlb0ZyYW1lQnVmZmVyPiBUb09iakNWaWRlb0ZyYW1lQnVmZmVyKApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvbmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2ZS9zcmMvb2JqY19mcmFtZV9i
dWZmZXIubW0KaW5kZXggYTNkOWJhODEyZGE1OWY4NTcyYTUzM2FkNjJjNTJhYjBhYzBhMThjMi4u
MmY1NmFjYjI5NDNiZDRjNGQ3ZGZiNWRiMDIxYTAwOTE4MjgwN2E4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0aXZlL3Ny
Yy9vYmpjX2ZyYW1lX2J1ZmZlci5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVyLm1tCkBA
IC0xMiw2ICsxMiw3IEBACiAKICNpbXBvcnQgImJhc2UvUlRDVmlkZW9GcmFtZUJ1ZmZlci5oIgog
I2ltcG9ydCAic2RrL29iamMvYXBpL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVENOYXRpdmVJNDIwQnVm
ZmVyK1ByaXZhdGUuaCIKKyNpbXBvcnQgInNkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fZnJhbWVf
YnVmZmVyL1JUQ0NWUGl4ZWxCdWZmZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTU1
LDEwICs1NiwxNSBAQCBjbGFzcyBPYmpDSTQyMEZyYW1lQnVmZmVyIDogcHVibGljIEk0MjBCdWZm
ZXJJbnRlcmZhY2UgewogT2JqQ0ZyYW1lQnVmZmVyOjpPYmpDRnJhbWVCdWZmZXIoaWQ8UlRDVmlk
ZW9GcmFtZUJ1ZmZlcj4gZnJhbWVfYnVmZmVyKQogICAgIDogZnJhbWVfYnVmZmVyXyhmcmFtZV9i
dWZmZXIpLCB3aWR0aF8oZnJhbWVfYnVmZmVyLndpZHRoKSwgaGVpZ2h0XyhmcmFtZV9idWZmZXIu
aGVpZ2h0KSB7fQogCitPYmpDRnJhbWVCdWZmZXI6Ok9iakNGcmFtZUJ1ZmZlcihCdWZmZXJQcm92
aWRlciBwcm92aWRlciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorICAgIDogZnJhbWVfYnVmZmVy
X3Byb3ZpZGVyXyhwcm92aWRlciksIHdpZHRoXyh3aWR0aCksIGhlaWdodF8oaGVpZ2h0KSB7IH0K
KwogT2JqQ0ZyYW1lQnVmZmVyOjp+T2JqQ0ZyYW1lQnVmZmVyKCkgewogI2lmIGRlZmluZWQoV0VC
UlRDX1dFQktJVF9CVUlMRCkKICAgW2ZyYW1lX2J1ZmZlcl8gY2xvc2VdOwogI2VuZGlmCisgIGlm
IChmcmFtZV9idWZmZXJfcHJvdmlkZXJfLnJlbGVhc2VCdWZmZXIpCisgICAgZnJhbWVfYnVmZmVy
X3Byb3ZpZGVyXy5yZWxlYXNlQnVmZmVyKGZyYW1lX2J1ZmZlcl9wcm92aWRlcl8ucG9pbnRlcik7
CiB9CiAKIFZpZGVvRnJhbWVCdWZmZXI6OlR5cGUgT2JqQ0ZyYW1lQnVmZmVyOjp0eXBlKCkgY29u
c3QgewpAQCAtNzUsMTIgKzgxLDIxIEBAIGludCBPYmpDRnJhbWVCdWZmZXI6OmhlaWdodCgpIGNv
bnN0IHsKIAogcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IE9iakNGcmFt
ZUJ1ZmZlcjo6VG9JNDIwKCkgewogICBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVy
ZmFjZT4gYnVmZmVyID0KLSAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8T2JqQ0k0MjBG
cmFtZUJ1ZmZlcj4oW2ZyYW1lX2J1ZmZlcl8gdG9JNDIwXSk7CisgICAgICBuZXcgcnRjOjpSZWZD
b3VudGVkT2JqZWN0PE9iakNJNDIwRnJhbWVCdWZmZXI+KFt3cmFwcGVkX2ZyYW1lX2J1ZmZlcigp
IHRvSTQyMF0pOwogCiAgIHJldHVybiBidWZmZXI7CiB9CiAKIGlkPFJUQ1ZpZGVvRnJhbWVCdWZm
ZXI+IE9iakNGcmFtZUJ1ZmZlcjo6d3JhcHBlZF9mcmFtZV9idWZmZXIoKSBjb25zdCB7CisgIGlm
IChmcmFtZV9idWZmZXJfKQorICAgIHJldHVybiBmcmFtZV9idWZmZXJfOworCisgIHsKKyAgICB3
ZWJydGM6Ok11dGV4TG9jayBsb2NrKCZtdXRleF8pOworICAgIGlmICghZnJhbWVfYnVmZmVyXyAm
JiBmcmFtZV9idWZmZXJfcHJvdmlkZXJfLmdldEJ1ZmZlcikKKyAgICAgIGNvbnN0X2Nhc3Q8T2Jq
Q0ZyYW1lQnVmZmVyKj4odGhpcyktPmZyYW1lX2J1ZmZlcl8gPSBbW1JUQ0NWUGl4ZWxCdWZmZXIg
YWxsb2NdIGluaXRXaXRoUGl4ZWxCdWZmZXI6ZnJhbWVfYnVmZmVyX3Byb3ZpZGVyXy5nZXRCdWZm
ZXIoZnJhbWVfYnVmZmVyX3Byb3ZpZGVyXy5wb2ludGVyKV07CisgIH0KKwogICByZXR1cm4gZnJh
bWVfYnVmZmVyXzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMDhhMDFlNTc4ZDhhMzUyN2U2
ZmVlNDQyY2U5MDgxMWFmNWJhZmFjMi4uODA1MDAxM2VkNjVmNDBjODhmMDQzNjEyNzgwMjVkNDYw
NGZiMzAxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMzQ5LDYgKzEzNDksNyBAQCBzZXQoV2Vi
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vVXNlckFnZW50LmgK
ICAgICBwbGF0Zm9ybS9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmgKICAgICBwbGF0Zm9y
bS9WYWxpZGF0aW9uQnViYmxlLmgKKyAgICBwbGF0Zm9ybS9WaWRlb0ZyYW1lLmgKICAgICBwbGF0
Zm9ybS9WaWRlb0ZyYW1lTWV0YWRhdGEuaAogICAgIHBsYXRmb3JtL1ZpZGVvU2FtcGxlTWV0YWRh
dGEuaAogICAgIHBsYXRmb3JtL1dlYkdMU3RhdGVUcmFja2VyLmgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
MWVkZDcxODM4Y2QyN2QzN2MyOWQ3OWY0YWIzM2E4YmQ3NWU3YTU4YS4uNjE0MmQyNDNkYjI4ODBj
NTFlZmVmNThhMDRjOWIwYmE3NTNmNjA0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5MjYsNiArMTky
Niw3IEBAIHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCiBwbGF0Zm9ybS9UaHJlYWRUaW1l
cnMuY3BwCiBwbGF0Zm9ybS9UaW1lci5jcHAKIHBsYXRmb3JtL1VzZXJBY3Rpdml0eS5jcHAKK3Bs
YXRmb3JtL1ZpZGVvRnJhbWUuY3BwCiBwbGF0Zm9ybS9XZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIu
Y3BwCiBwbGF0Zm9ybS9XZWJHTFN0YXRlVHJhY2tlci5jcHAKIHBsYXRmb3JtL1dpZGdldC5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBlNjM3ZjNmZDYxMWVkMGExZjdiYTVjZWJiMDE2NWQ1NjQzYTNlZGE1Li4xNjRlNTJhZTU1
ZjI0M2YyNTQ1ZDA5MzA2NDk4OThkYzc3NTQ2NDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNDA3LDYgKzI0MDcsNyBAQAog
CQk3QjEwMzM5RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUQyNTQ5NzIw
MTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyog
R3JhcGhpY3NDb250ZXh0R0xDVkNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250
ZXh0R0xDVkNvY29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJN0I0NDEwRTEyNzk1OEZDNTAwMEI0RjhBIC8qIE1lZGlhU2FtcGxlVmlkZW9GcmFt
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I0NDEw
REYyNzk1OEZDNDAwMEI0RjhBIC8qIE1lZGlhU2FtcGxlVmlkZW9GcmFtZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCNUEzREFGMjdBQkY4QzUw
MDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjVBM0RBRDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNjA5NERE
MjcwQzQ0QkQwMDY0ODM1QyAvKiBBTkdMRVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8qIEFO
R0xFVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJN0I2REM4MTkyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1
cmZhY2VTd2FwQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3QjcyMEIwQzI3NDNEQkE3MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTExNTIwLDYgKzExNTIxLDggQEAKIAkJN0IxNjE5MTAyNzE5ODgwRTAw
QzQwRUFDIC8qIFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDQxMERGMjc5NThGQzQwMDBCNEY4QSAvKiBNZWRpYVNh
bXBsZVZpZGVvRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFT
YW1wbGVWaWRlb0ZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDQxMEUy
Mjc5NThGREUwMDBCNEY4QSAvKiBNZWRpYVNhbXBsZVZpZGVvRnJhbWVBVkYubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBNZWRpYVNhbXBsZVZpZGVvRnJhbWVBVkYubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdCNUEzREFCMjdBQkY4QzQwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZGVvRnJhbWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBRDI3QUJGOEM0MDA2QzZGOTcgLyog
VmlkZW9GcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0ZyYW1l
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNkRDODE1MjU3MTJFOTEwMDM4MEM3
MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNkRDODE3MjU3MTJFOTIw
MDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjcyMEIwQTI3NDNEQkE2MDAw
OEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzAxNTEsNiArMzAxNTQsOCBA
QAogCQkJCUEzQUY5RDgyMjAzMjUzMjQwMDZDQUQwNiAvKiBVc2VyQWdlbnQuaCAqLywKIAkJCQk3
MUM5MTYwNzFEMTQ4M0EzMDBBQ0E0N0QgLyogVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5o
ICovLAogCQkJCTgzQzQ1QjhEMURDMkI2N0MwMDg4NzFCQSAvKiBWYWxpZGF0aW9uQnViYmxlLmgg
Ki8sCisJCQkJN0I1QTNEQUIyN0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuY3BwICovLAor
CQkJCTdCNUEzREFEMjdBQkY4QzQwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmggKi8sCiAJCQkJNDFE
RUVGQjQyNzE5QkExOTAwQ0I4RDc0IC8qIFZpZGVvRnJhbWVNZXRhZGF0YS5oICovLAogCQkJCTQx
NjA0OTMxMjc0M0IwRTcwMEE4NkZBMCAvKiBWaWRlb1NhbXBsZU1ldGFkYXRhLmggKi8sCiAJCQkJ
NTE1Rjc5NTExQ0ZDQTNDNzAwQ0NFRDkzIC8qIFdlYkNvcmVDcm9zc1RocmVhZENvcGllci5jcHAg
Ki8sCkBAIC0zNzgyNyw2ICszNzgzMiw3IEBACiAJCQkJMEYxQTBDMzgyMjlBNDgxODAwRDM3QURC
IC8qIFZlbG9jaXR5RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBMjU3MTUxMjkzQzAxMDAw
N0EyNjNEIC8qIFZlcnRpY2FsUG9zaXRpb25DYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Qz
RUVGM0IyNTc5OUZBMTAwNjU2M0JCIC8qIFZpZGVvQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJN0I1QTNEQUYyN0FCRjhDNTAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxREVFRkI2MjcxOUJBMUEwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lTWV0YWRh
dGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREVFRkIwMjcxOUIyOTAwMENCOEQ3NCAvKiBWaWRl
b0ZyYW1lUmVxdWVzdENhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkIwRDRDMDFDNTdG
RDY2MDA3N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKaW5kZXggMTgzOTk3MjI2MGY3
MGUwMDczNjc5NzkxNzIyNjI1ZjU2YjI1M2YwOC4uYjA2NTA0ZjU3ZWU5MzZiOGUxOTg4NzFmMzU3
Mjc2NTM1MzA0YWZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFT
YW1wbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogCiB0eXBlZGVm
IHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7Cit0eXBlZGVm
IHN0cnVjdCBfX0NWQnVmZmVyICpDVlBpeGVsQnVmZmVyUmVmOwogdHlwZWRlZiBzdHJ1Y3QgX0dz
dFNhbXBsZSBHc3RTYW1wbGU7CiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVNVFBsdWdpbkJ5dGVTb3Vy
Y2UgKk1UUGx1Z2luQnl0ZVNvdXJjZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNN
Rm9ybWF0RGVzY3JpcHRpb24gKkNNRm9ybWF0RGVzY3JpcHRpb25SZWY7CkBAIC00OSw5ICs1MCwx
MCBAQCBzdHJ1Y3QgUGxhdGZvcm1TYW1wbGUgewogICAgICAgICBDTVNhbXBsZUJ1ZmZlclR5cGUs
CiAgICAgICAgIEdTdHJlYW1lclNhbXBsZVR5cGUsCiAgICAgICAgIEJ5dGVSYW5nZVNhbXBsZVR5
cGUsCisgICAgICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94eVR5cGUsIC8vIEZJWE1FOiBUbyBiZSBy
ZW1vdmVkIHdoZW4gVmlkZW9GcmFtZSBpcyBub3QgTWVkaWFTYW1wbGUuCiAgICAgfSB0eXBlOwog
ICAgIHVuaW9uIHsKLSAgICAgICAgTW9ja1NhbXBsZUJveCogbW9ja1NhbXBsZUJveDsKKyAgICAg
ICAgY29uc3QgTW9ja1NhbXBsZUJveCogbW9ja1NhbXBsZUJveDsKICAgICAgICAgQ01TYW1wbGVC
dWZmZXJSZWYgY21TYW1wbGVCdWZmZXI7CiAgICAgICAgIEdzdFNhbXBsZSogZ3N0U2FtcGxlOwog
ICAgICAgICBzdGQ6OnBhaXI8TVRQbHVnaW5CeXRlU291cmNlUmVmLCBDTUZvcm1hdERlc2NyaXB0
aW9uUmVmPiBieXRlUmFuZ2VTYW1wbGU7CkBAIC02Niw3ICs2OCw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTWVk
aWFUaW1lIGR1cmF0aW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgQXRvbVN0cmluZyB0cmFj
a0lEKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0cmlu
ZyYpID0gMDsKICAgICB2aXJ0dWFsIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikgPSAwOwpAQCAt
OTAsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIEhhc1N5bmNJbmZvID0gMSA8PCAzLAogICAg
IH07CiAgICAgdmlydHVhbCBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0
dWFsIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgPSAwOworICAgIHZpcnR1YWwgUGxh
dGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCA9IDA7CiAKICAgICBzdHJ1Y3QgQnl0
ZVJhbmdlIHsKICAgICAgICAgc2l6ZV90IGJ5dGVPZmZzZXQgeyAwIH07CkBAIC0xMTAsNiArMTEx
LDkgQEAgcHVibGljOgogI2lmIGRlZmluZWQoRU5BQkxFX1ZJREVPKSAmJiBFTkFCTEVfVklERU8K
ICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8TWVkaWFTYW1wbGVWaWRlb0ZyYW1lPiB2aWRlb0Zy
YW1lKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9OwogI2VuZGlmCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgdmlydHVhbCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfTsKKyNlbmRpZgogCiAgICAgYm9vbCBpc1N5bmMoKSBjb25z
dCB7IHJldHVybiBmbGFncygpICYgSXNTeW5jOyB9CiAgICAgYm9vbCBpc05vbkRpc3BsYXlpbmco
KSBjb25zdCB7IHJldHVybiBmbGFncygpICYgSXNOb25EaXNwbGF5aW5nOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwNzY5YmE1ZTU0YTg4MGJlNjM5
MDlhOWNkYTAzMjg3YTM3ZDNjZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWaWRlb0ZyYW1lLmgiCisKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1ZpZGVvRnJhbWU6OlZpZGVv
RnJhbWUoKSA9IGRlZmF1bHQ7CisKK1ZpZGVvRnJhbWU6On5WaWRlb0ZyYW1lKCkgPSBkZWZhdWx0
OworCitNZWRpYVRpbWUgVmlkZW9GcmFtZTo6ZGVjb2RlVGltZSgpIGNvbnN0Cit7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworTWVkaWFUaW1lIFZpZGVv
RnJhbWU6OmR1cmF0aW9uKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4geyB9OworfQorCitBdG9tU3RyaW5nIFZpZGVvRnJhbWU6OnRyYWNrSUQoKSBjb25z
dAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7IH07Cit9CisKK3Np
emVfdCBWaWRlb0ZyYW1lOjpzaXplSW5CeXRlcygpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgVmlkZW9GcmFtZTo6b2Zmc2V0VGlt
ZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Cit9CisKK3ZvaWQgVmlkZW9GcmFtZTo6c2V0VGltZXN0YW1wcyhjb25zdCBNZWRpYVRpbWUmLCBj
b25zdCBNZWRpYVRpbWUmKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitib29s
IFZpZGVvRnJhbWU6OmlzRGl2aXNhYmxlKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0ZDo6cGFpcjxSZWZQdHI8V2ViQ29yZTo6
TWVkaWFTYW1wbGU+LCBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+PiBWaWRlb0ZyYW1lOjpk
aXZpZGUoY29uc3QgTWVkaWFUaW1lJiwgVXNlRW5kVGltZSkKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4geyBudWxscHRyLCBudWxscHRyIH07Cit9CisKK1JlZjxXZWJD
b3JlOjpNZWRpYVNhbXBsZT4gVmlkZW9GcmFtZTo6Y3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBj
b25zdAoreworICAgIENSQVNIKCk7Cit9CisKK01lZGlhU2FtcGxlOjpTYW1wbGVGbGFncyBWaWRl
b0ZyYW1lOjpmbGFncygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE1lZGlhU2FtcGxlOjpTYW1wbGVG
bGFnczo6Tm9uZTsKK30KKworc3RkOjpvcHRpb25hbDxNZWRpYVNhbXBsZTo6Qnl0ZVJhbmdlPiBW
aWRlb0ZyYW1lOjpieXRlUmFuZ2UoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBSZW1vdmUgZnJv
bSB0aGUgYmFzZSBjbGFzcy4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworfQorCit2b2lkIFZpZGVvRnJhbWU6OmR1bXAoUHJpbnRTdHJlYW0mKSBj
b25zdAoreworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVmlkZW9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI2MzFmZDEzZTIyZTMxMjI2NjUwMDE0YmFmNzhkZWE5MGNhYTZmYjIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmgKQEAg
LTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworLy8gQSBjbGFzcyByZXByZXNlbnRpbmcgYSB2aWRlbyBmcmFtZSBmcm9tIGEgZGVj
b2RlciwgY2FwdHVyZSBzb3VyY2UsIG9yIHNpbWlsYXIuCisvLyBGSVhNRTogQ3VycmVudGx5IGZv
ciBpbXBsZW1lbnRhdGlvbiBwdXJwb3NlcyBpbmhlcnRzIGZyb20gTWVkaWFTYW1wbGUgdW50aWwg
Y2FwdHVyZSBjb2RlCisvLyBzdG9wcyByZWZlcnJpbmcgdG8gTWVkaWFTYW1wbGUKK2NsYXNzIFZp
ZGVvRnJhbWUgOiBwdWJsaWMgTWVkaWFTYW1wbGUgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQ
T1JUIH5WaWRlb0ZyYW1lKCk7CisKK3Byb3RlY3RlZDoKKyAgICBXRUJDT1JFX0VYUE9SVCBWaWRl
b0ZyYW1lKCk7CisKK3ByaXZhdGU6CisgICAgLy8gRklYTUU6IFRoZXNlIGFyZSBub3QgaW50ZW5k
ZWQgdG8gYmUgdXNlZCBmb3IgdGhlc2Ugb2JqZWN0cy4KKyAgICAvLyBXZWJDb3JlOjpNZWRpYVNh
bXBsZSBvdmVycmlkZXMuCisgICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFUaW1lIGRlY29kZVRpbWUo
KSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVRpbWUgZHVyYXRpb24oKSBj
b25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBBdG9tU3RyaW5nIHRyYWNrSUQoKSBjb25z
dCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBm
aW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBN
ZWRpYVRpbWUmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRpbWVzdGFtcHMo
Y29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBpc0RpdmlzYWJsZSgpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0ZDo6cGFpcjxSZWZQdHI8TWVkaWFTYW1wbGU+LCBSZWZQdHI8TWVkaWFTYW1wbGU+PiBkaXZp
ZGUoY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBVc2VFbmRUaW1lID0gVXNlRW5k
VGltZTo6RG9Ob3RVc2UpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxXZWJDb3JlOjpN
ZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25zdCBmaW5hbDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IGZpbmFsOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBmaW5h
bDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBmaW5h
bDsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAppbmRleCBjZDEwZDljMDVjYjhhMWQ4NmU2NDNk
NWEzZmFhYWU1Yzc0ZjA4Nzk5Li5mMWRkOTE5MDFmODQ5ZTA5YTI0NjY0OWZjZGRhNzhkMGRkYzlh
Y2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVW
aWRlb1NhbXBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZVZpZGVvU2FtcGxlLmgKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgogICAgIENWUGl4ZWxCdWZm
ZXJSZWYgaW1hZ2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyLmdldCgpOyB9
CiAKICAgICB2b2lkIHNldE93bmVyc2hpcElkZW50aXR5KGNvbnN0IFByb2Nlc3NJZGVudGl0eSYp
OworICAgIHZvaWQgY2xlYXJJT1N1cmZhY2UoKSB7IG1faW9TdXJmYWNlID0gbnVsbHB0cjsgfQog
CiAgICAgY29uc3QgTWVkaWFUaW1lJiB0aW1lKCkgY29uc3QgeyByZXR1cm4gbV90aW1lOyB9CiAg
ICAgdWludDMyX3QgdmlkZW9Gb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvRm9ybWF0OyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLm1tCmluZGV4IGMxMjZiOTNlODcwNmY5NTUzMGY2MTI2ZjhhZDI1ZmFmNjIyMmFk
NzEuLjliZjRiMGI4ZDVjNDgxYTUzNGZkOTBjZjE2Yzk1NTlmYjZjZDcxNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2Fs
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lm1tCkBAIC0zMzQsNiArMzM0LDkgQEAgdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6ZW5xdWV1ZVNhbXBsZShNZWRpYVNhbXBsZSYgc2FtcGxlKQogdm9pZCBMb2NhbFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZUJ1ZmZlcihNZWRpYVNhbXBsZSYgc2FtcGxl
KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIC8vIEZJWE1FOiBMb2NhbCBw
bGF5YmFjayBvZiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkgaXMgbm90IGltcGxlbWVudGVkLgorICAg
IGlmICghaXM8TWVkaWFTYW1wbGVBVkZPYmpDPihzYW1wbGUpKQorICAgICAgICByZXR1cm47CiAK
ICAgICBhdXRvIHNhbXBsZVRvRW5xdWV1ZSA9IHNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBs
ZS5jbVNhbXBsZUJ1ZmZlcjsKICAgICBhdXRvIG5vdyA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERv
dWJsZShNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkgKyBy
ZW5kZXJlckxhdGVuY3kpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IDJiYmQ2YTRj
YjBkMjJkMmRmOTk3NzVlZTVlZTI3Yzc4YTIwZDU5NTUuLjQyZmQxNzQ4N2VhNmNkMTcxMDUwNTA1
ZmY1ZjNmZjVlZGZiZTdlMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTIzMCwx
MCArMjMwLDkgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OnN1cHBvcnRzVHlwZShjb24KIAogc3RhdGljIGlubGluZSBDR0Fm
ZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KE1lZGlhU2FtcGxlJiBzYW1w
bGUpCiB7Ci0gICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyID0gc2FtcGxlLnBsYXRm
b3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVmZmVyOwotICAgIENWUGl4ZWxCdWZmZXJSZWYg
cGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihQQUw6OkNNU2FtcGxl
QnVmZmVyR2V0SW1hZ2VCdWZmZXIoc2FtcGxlQnVmZmVyKSk7Ci0gICAgc2l6ZV90IHdpZHRoID0g
Q1ZQaXhlbEJ1ZmZlckdldFdpZHRoKHBpeGVsQnVmZmVyKTsKLSAgICBzaXplX3QgaGVpZ2h0ID0g
Q1ZQaXhlbEJ1ZmZlckdldEhlaWdodChwaXhlbEJ1ZmZlcik7CisgICAgYXV0byBzaXplID0gc2Ft
cGxlLnByZXNlbnRhdGlvblNpemUoKTsKKyAgICBzaXplX3Qgd2lkdGggPSBzdGF0aWNfY2FzdDxz
aXplX3Q+KHNpemUud2lkdGgoKSk7CisgICAgc2l6ZV90IGhlaWdodCA9IHN0YXRpY19jYXN0PHNp
emVfdD4oc2l6ZS5oZWlnaHQoKSk7CiAgICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KQogICAgICAg
ICByZXR1cm4gQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eTsKIApAQCAtOTk0LDggKzk5Myw4IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVDdXJyZW50
RnJhbWVJbWFnZSgpCiAgICAgaWYgKCFtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1l
cikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0
PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihtX2lt
YWdlUGFpbnRlci5tZWRpYVNhbXBsZS0+cGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuY21TYW1wbGVC
dWZmZXIpKTsKLSAgICBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0
ZShtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4
ZWxCdWZmZXIocGl4ZWxCdWZmZXIpKTsKKyAgICBpZiAoYXV0byBwaXhlbEJ1ZmZlciA9IG1faW1h
Z2VQYWludGVyLm1lZGlhU2FtcGxlLT5waXhlbEJ1ZmZlcigpKQorICAgICAgICBtX2ltYWdlUGFp
bnRlci5jZ0ltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2ltYWdlUGFpbnRlci5waXhlbEJ1
ZmZlckNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpKTsK
IH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpD
LmgKaW5kZXggNjNkYjljMDAzYzA1MTljNjY1NjYxMjFlN2M2ZmI1MWRmMmY3NzFjMS4uNWI0Zjdm
MDBkYjMzYTViY2RmNjU2YzYwMjJmMTQ4MzRmNDFjNTkwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZP
YmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKQEAgLTU0LDEzICs1NCwxMiBAQCBwdWJsaWM6CiAg
ICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBBdG9tU3RyaW5n
IHRyYWNrSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lkOyB9Ci0gICAgdm9pZCBzZXRU
cmFja0lEKGNvbnN0IFN0cmluZyYgaWQpIG92ZXJyaWRlIHsgbV9pZCA9IGlkOyB9CiAKICAgICBz
aXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBvdmVycmlkZTsKICAgICBGbG9hdFNpemUgcHJlc2Vu
dGF0aW9uU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBj
b25zdCBvdmVycmlkZTsKLSAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIG92ZXJy
aWRlOworICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYpIG92ZXJy
aWRlOwpAQCAtNzMsNiArNzIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB2aWRlb01pcnJvcmVkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9taXJyb3JlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JU
IHVpbnQzMl90IHZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGQ6Om9wdGlvbmFsPE1lZGlhU2FtcGxlVmlkZW9GcmFtZT4gdmlkZW9GcmFtZSgpIGNv
bnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZm
ZXIoKSBjb25zdCBmaW5hbDsKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX3NhbXBsZS5nZXQoKTsgfQogCiAgICAgYm9vbCBpc0hvbW9nZW5lb3Vz
KCkgY29uc3Q7CkBAIC05NywzICs5Nyw3IEBAIHByb3RlY3RlZDoKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpNZWRp
YVNhbXBsZUFWRk9iakMpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkgeyByZXR1cm4gbWVkaWFTYW1wbGUucGxhdGZvcm1TYW1w
bGUoKS50eXBlID09IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGU7
IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhU2FtcGxlQVZGT2JqQy5tbQppbmRleCAyY2U2Y2VkZWE1NWRmZTQyOTUzYzJjOWJmMmYy
NjllYTEzYzQ2YzNiLi41MDA0MzQwZmVmNDllNDJlYjJmZGY4MzRmZmMyNzkxNTNmNTgxNGU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCkBAIC0xNTMs
NyArMTUzLDcgQEAgc2l6ZV90IE1lZGlhU2FtcGxlQVZGT2JqQzo6c2l6ZUluQnl0ZXMoKSBjb25z
dAogICAgIHJldHVybiBQQUw6OkNNU2FtcGxlQnVmZmVyR2V0VG90YWxTYW1wbGVTaXplKG1fc2Ft
cGxlLmdldCgpKTsKIH0KIAotUGxhdGZvcm1TYW1wbGUgTWVkaWFTYW1wbGVBVkZPYmpDOjpwbGF0
Zm9ybVNhbXBsZSgpCitQbGF0Zm9ybVNhbXBsZSBNZWRpYVNhbXBsZUFWRk9iakM6OnBsYXRmb3Jt
U2FtcGxlKCkgY29uc3QKIHsKICAgICBQbGF0Zm9ybVNhbXBsZSBzYW1wbGUgPSB7IFBsYXRmb3Jt
U2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGUsIHsgLmNtU2FtcGxlQnVmZmVyID0gbV9zYW1wbGUu
Z2V0KCkgfSB9OwogICAgIHJldHVybiBzYW1wbGU7CkBAIC01NTYsNCArNTU2LDkgQEAgc3RkOjpv
cHRpb25hbDxNZWRpYVNhbXBsZTo6Qnl0ZVJhbmdlPiBNZWRpYVNhbXBsZUFWRk9iakM6OmJ5dGVS
YW5nZUZvckF0dGFjaG1lbnQKICAgICByZXR1cm4geyB7IENoZWNrZWRTaXplKGJ5dGVPZmZzZXQp
LCBzaW5nbGVTaXplRW50cnkgfSB9OwogfQogCitDVlBpeGVsQnVmZmVyUmVmIE1lZGlhU2FtcGxl
QVZGT2JqQzo6cGl4ZWxCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxD
VlBpeGVsQnVmZmVyUmVmPihQQUw6OkNNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIobV9zYW1w
bGUuZ2V0KCkpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5jcHAK
aW5kZXggOWU3YzA4OTYwNmE3YjEzOWE5YTYyMzhlNTFkZjhmMGZkZWQ3ZDMzNy4uMjdmOTc5NWVh
NGRhOGE3NDgyMDY5MzdkNDIzZDY4YmI1NjM1YmQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1w
bGVHU3RyZWFtZXIuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBNZWRpYVNhbXBsZUdTdHJl
YW1lcjo6b2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYgdGltZXN0YW1wT2Zmc2V0
KQogICAgIH0KIH0KIAotUGxhdGZvcm1TYW1wbGUgTWVkaWFTYW1wbGVHU3RyZWFtZXI6OnBsYXRm
b3JtU2FtcGxlKCkKK1BsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxlR1N0cmVhbWVyOjpwbGF0Zm9y
bVNhbXBsZSgpIGNvbnN0CiB7CiAgICAgUGxhdGZvcm1TYW1wbGUgc2FtcGxlID0geyBQbGF0Zm9y
bVNhbXBsZTo6R1N0cmVhbWVyU2FtcGxlVHlwZSwgeyAuZ3N0U2FtcGxlID0gbV9zYW1wbGUuZ2V0
KCkgfSB9OwogICAgIHJldHVybiBzYW1wbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1l
ci5oCmluZGV4IDFkNzFhMzM5NjljZmJjNjc1ZGVlY2VhNzhlNjRmMmQ2ODk5ZTQxZWIuLjNiNWE2
OWFhNzZhNmFhZjE3YTU2MTc2YzFmYjIzOWE0ZjkxMGIwYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNh
bXBsZUdTdHJlYW1lci5oCkBAIC01Myw3ICs1Myw2IEBAIHB1YmxpYzoKICAgICBNZWRpYVRpbWUg
ZGVjb2RlVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZHRzOyB9CiAgICAgTWVkaWFU
aW1lIGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQogICAg
IEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdHJhY2tJZDsg
fQotICAgIHZvaWQgc2V0VHJhY2tJRChjb25zdCBTdHJpbmcmIHRyYWNrSWQpIG92ZXJyaWRlIHsg
bV90cmFja0lkID0gdHJhY2tJZDsgfQogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXpl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wcmVzZW50YXRpb25TaXplOyB9CiAgICAgdm9p
ZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJpZGU7CkBAIC02Miw3
ICs2MSw3IEBAIHB1YmxpYzoKICAgICBzdGQ6OnBhaXI8UmVmUHRyPE1lZGlhU2FtcGxlPiwgUmVm
UHRyPE1lZGlhU2FtcGxlPj4gZGl2aWRlKGNvbnN0IE1lZGlhVGltZSYsIFVzZUVuZFRpbWUpIG92
ZXJyaWRlICB7IHJldHVybiB7IG51bGxwdHIsIG51bGxwdHIgfTsgfQogICAgIFJlZjxNZWRpYVNh
bXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25zdCBvdmVycmlkZTsKICAgICBTYW1w
bGVGbGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZmxhZ3M7IH0KLSAgICBQ
bGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIG92ZXJyaWRlOworICAgIFBsYXRmb3JtU2Ft
cGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxC
eXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsgfQogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJl
ZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZVZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmluZGV4IDY4MjczZWJmN2YwM2E4YTkyNjhjMGQ4OGY1
MTFlM2Y2YzI5MzUwOTIuLjM5ZTNlN2UyM2VhMWYxNmQ2MWEzMjA2NDM1YmFhNzUyZDlhNmQ2YTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
VmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpZiBQTEFURk9S
TShDT0NPQSkKICNpbmNsdWRlICJJbWFnZVRyYW5zZmVyU2Vzc2lvblZULmgiCisjaW5jbHVkZSAi
TWVkaWFTYW1wbGVBVkZPYmpDLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MTY5LDYgKzE3MCwxNCBAQCB2b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnNvdXJjZVN0b3BwZWQo
KQogI2lmIFBMQVRGT1JNKENPQ09BKQogUmVmUHRyPE1lZGlhU2FtcGxlPiBSZWFsdGltZVZpZGVv
U291cmNlOjphZGFwdFZpZGVvU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiB7CisgICAgaWYg
KHNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnR5cGUgIT0gUGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxl
QnVmZmVyVHlwZSkgeworICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBtb3JlIGVmZmljaWVudGx5
IGRvd25zYW1wbGluZyBvZiByZW1vdGUgdmlkZW8gZnJhbWVzIGJ5IGRvd25zYW1wbGluZyBpbiBH
UFVQcm9jZXNzLgorICAgICAgICBhdXRvIG5ld1NhbXBsZSA9IE1lZGlhU2FtcGxlQVZGT2JqQzo6
Y3JlYXRlSW1hZ2VTYW1wbGUoc2FtcGxlLnBpeGVsQnVmZmVyKCksIHNhbXBsZS52aWRlb1JvdGF0
aW9uKCksIHNhbXBsZS52aWRlb01pcnJvcmVkKCksIHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCks
IHsgfSk7CisgICAgICAgIGlmICghbmV3U2FtcGxlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIHJldHVybiBhZGFwdFZpZGVvU2FtcGxlKCpuZXdTYW1wbGUpOworICAgIH0K
KyAgICBBU1NFUlQoc2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBQbGF0Zm9ybVNhbXBs
ZTo6Q01TYW1wbGVCdWZmZXJUeXBlKTsKICAgICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24g
fHwgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+cGl4ZWxGb3JtYXQoKSAhPSBzYW1wbGUudmlkZW9Q
aXhlbEZvcm1hdCgpKQogICAgICAgICBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uID0gSW1hZ2VUcmFu
c2ZlclNlc3Npb25WVDo6Y3JlYXRlKHNhbXBsZS52aWRlb1BpeGVsRm9ybWF0KCksIG1fc2hvdWxk
VXNlSU9TdXJmYWNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291
cmNlQ29jb2EuaAppbmRleCBkMGZlOGUwNjU4MjJmODA3ZWJiNGQ2NWEzMDdiNGJlYzBiOGZhYTYy
Li42NDY2ZDYxOGRlNzQ5ZTVjNWY5MjYxZDI1MmRkOWIwYzE5ZTFhNTc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EuaApAQCAtMjksNiArMjksNyBA
QAogCiAjaWYgVVNFKExJQldFQlJUQykKIAorI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5j
bHVkZSAiUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgiCiAKIHVzaW5nIENNU2FtcGxlQnVm
ZmVyUmVmID0gc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyKjsKQEAgLTQ5LDYgKzUwLDggQEAg
cHJpdmF0ZToKICAgICBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYShydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7CiAgICAg
UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHBpeGVsQnVmZmVyRnJvbVZpZGVvRnJhbWUoY29u
c3Qgd2VicnRjOjpWaWRlb0ZyYW1lJik7CiAgICAgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgcGl4ZWxC
dWZmZXJQb29sKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgd2VicnRjOjpCdWZmZXJUeXBl
KTsKKyAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHRvVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZp
ZGVvRnJhbWUmLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbik7CisgICAgUmVmUHRyPE1lZGlh
U2FtcGxlPiBjcmVhdGVNZWRpYVNhbXBsZUZyb21DVlBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJS
ZWYsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uLCBpbnQ2NF90KTsKIAogICAgIC8vIHJ0Yzo6
VmlkZW9TaW5rSW50ZXJmYWNlCiAgICAgdm9pZCBPbkZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9G
cmFtZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJj
ZUNvY29hLm1tCmluZGV4IDUzN2VhMGI1MTEzMWNjYzFjODVkMGIwM2VjM2E3NDJjYjYyNzk0NmQu
LmExMDQ3YTNlODJiOGMyMTdlNGQwNTM2YmQ1NGIxYTcwZWFhMTdjNTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KQEAgLTExOCw3ICsxMTgs
MzMgQEAgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29j
b2E6OnBpeGVsQnVmZmVyUG9vbChzaXplX3Qgd2kKICAgICByZXR1cm4gbV9waXhlbEJ1ZmZlclBv
b2wuZ2V0KCk7CiB9CiAKLVJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBSZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2VDb2NvYTo6cGl4ZWxCdWZmZXJGcm9tVmlkZW9GcmFtZShjb25zdCB3ZWJy
dGM6OlZpZGVvRnJhbWUmIGZyYW1lKQorUmVmUHRyPE1lZGlhU2FtcGxlPiBSZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2VDb2NvYTo6Y3JlYXRlTWVkaWFTYW1wbGVGcm9tQ1ZQaXhlbEJ1ZmZlcihD
VlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiBy
b3RhdGlvbiwgaW50NjRfdCB0aW1lU3RhbXApCit7CisgICAgQ01TYW1wbGVUaW1pbmdJbmZvIHRp
bWluZ0luZm87CisgICAgdGltaW5nSW5mby5wcmVzZW50YXRpb25UaW1lU3RhbXAgPSBQQUw6OkNN
VGltZU1ha2UodGltZVN0YW1wLCAxMDAwMDAwKTsKKyAgICB0aW1pbmdJbmZvLmRlY29kZVRpbWVT
dGFtcCA9IFBBTDo6a0NNVGltZUludmFsaWQ7CisgICAgdGltaW5nSW5mby5kdXJhdGlvbiA9IFBB
TDo6a0NNVGltZUludmFsaWQ7CisKKyAgICBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9y
bWF0RGVzY3JpcHRpb247CisgICAgT1NTdGF0dXMgb3N0YXR1cyA9IFBBTDo6Q01WaWRlb0Zvcm1h
dERlc2NyaXB0aW9uQ3JlYXRlRm9ySW1hZ2VCdWZmZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKENW
SW1hZ2VCdWZmZXJSZWYpcGl4ZWxCdWZmZXIsICZmb3JtYXREZXNjcmlwdGlvbik7CisgICAgaWYg
KG9zdGF0dXMgIT0gbm9FcnIpIHsKKyAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBM
T0dJREVOVElGSUVSLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgQ01WaWRlb0Zvcm1hdERlc2NyaXB0
aW9uIHdpdGggZXJyb3IgIiwgc3RhdGljX2Nhc3Q8aW50Pihvc3RhdHVzKSk7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKworICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZl
cjsKKyAgICBvc3RhdHVzID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckNyZWF0ZVJlYWR5V2l0aEltYWdl
QnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIChDVkltYWdlQnVmZmVyUmVmKXBpeGVsQnVmZmVy
LCBmb3JtYXREZXNjcmlwdGlvbiwgJnRpbWluZ0luZm8sICZzYW1wbGVCdWZmZXIpOworICAgIENG
UmVsZWFzZShmb3JtYXREZXNjcmlwdGlvbik7CisgICAgaWYgKG9zdGF0dXMgIT0gbm9FcnIpIHsK
KyAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAiRmFpbGVk
IHRvIGNyZWF0ZSB0aGUgc2FtcGxlIGJ1ZmZlciB3aXRoIGVycm9yICIsIHN0YXRpY19jYXN0PGlu
dD4ob3N0YXR1cykpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBhdXRv
IHNhbXBsZSA9IGFkb3B0Q0Yoc2FtcGxlQnVmZmVyKTsKKyAgICByZXR1cm4gTWVkaWFTYW1wbGVB
VkZPYmpDOjpjcmVhdGUoc2FtcGxlLmdldCgpLCByb3RhdGlvbik7Cit9CisKK1JlZlB0cjxNZWRp
YVNhbXBsZT4gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OnRvVmlkZW9GcmFtZShj
b25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlv
biByb3RhdGlvbikKIHsKICAgICBpZiAobXV0ZWQoKSkgewogICAgICAgICBpZiAoIW1fYmxhY2tG
cmFtZSB8fCBtX2JsYWNrRnJhbWVXaWR0aCAhPSBmcmFtZS53aWR0aCgpIHx8IG1fYmxhY2tGcmFt
ZUhlaWdodCAhPSBmcmFtZS5oZWlnaHQoKSkgewpAQCAtMTI2LDEyICsxNTIsMTYgQEAgUmV0YWlu
UHRyPENWUGl4ZWxCdWZmZXJSZWY+IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpw
aXhlbEJ1ZmZlckZyb21WaWQKICAgICAgICAgICAgIG1fYmxhY2tGcmFtZUhlaWdodCA9IGZyYW1l
LmhlaWdodCgpOwogICAgICAgICAgICAgbV9ibGFja0ZyYW1lID0gY3JlYXRlQmxhY2tQaXhlbEJ1
ZmZlcihtX2JsYWNrRnJhbWVXaWR0aCwgbV9ibGFja0ZyYW1lSGVpZ2h0KTsKICAgICAgICAgfQot
ICAgICAgICByZXR1cm4gbV9ibGFja0ZyYW1lLmdldCgpOworICAgICAgICByZXR1cm4gY3JlYXRl
TWVkaWFTYW1wbGVGcm9tQ1ZQaXhlbEJ1ZmZlcihtX2JsYWNrRnJhbWUuZ2V0KCksIHJvdGF0aW9u
LCBmcmFtZS50aW1lc3RhbXBfdXMoKSk7CiAgICAgfQogCisgICAgLy8gRklYTUU6IERldGVjdCB0
aGUgY2FzZSBvZiBmcmFtZSBoYXZpbmcgYSBGcmFtZUJ1ZmZlclByb3ZpZGVyLgorICAgIGlmIChh
dXRvIHByb3ZpZGVyID0gd2VicnRjOjp2aWRlb0ZyYW1lQnVmZmVyUHJvdmlkZXIoZnJhbWUpKQor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWVkaWFTYW1wbGUqPihwcm92aWRlcik7CisKICAg
ICAvLyBJbiBjYXNlIG9mIGluIG1lbW9yeSBzYW1wbGVzLCB3ZSBoYXZlIG5vbiBpbnRlcmxlYXZl
ZCBZVVYgZGF0YSB3aGlsZSBDVlBpeGVsQnVmZmVycyBwcmVmZXIgaW50ZXJsZWF2ZWQgWVVWIGRh
dGEuCiAgICAgLy8gTWF5YmUgd2Ugc2hvdWxkIGludHJvZHVjZSBhIE1lZGlhU2FtcGxlIHRoYXQg
d291bGQgcmVwcmVzZW50IG5vbiBpbnRlcmxlYXZlZCBZVVYgZGF0YSBhcyBhbiBvcHRpbWl6YXRp
b24uCi0gICAgcmV0dXJuIGFkb3B0Q0Yod2VicnRjOjpjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFt
ZShmcmFtZSwgW3RoaXNdKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgd2VicnRjOjpCdWZm
ZXJUeXBlIGJ1ZmZlclR5cGUpIC0+IENWUGl4ZWxCdWZmZXJSZWYgeworICAgIGF1dG8gcGl4ZWxC
dWZmZXIgPSBhZG9wdENGKHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUs
IFt0aGlzXShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHdlYnJ0Yzo6QnVmZmVyVHlwZSBi
dWZmZXJUeXBlKSAtPiBDVlBpeGVsQnVmZmVyUmVmIHsKICAgICAgICAgYXV0byBwaXhlbEJ1ZmZl
clBvb2wgPSB0aGlzLT5waXhlbEJ1ZmZlclBvb2wod2lkdGgsIGhlaWdodCwgYnVmZmVyVHlwZSk7
CiAgICAgICAgIGlmICghcGl4ZWxCdWZmZXJQb29sKQogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0xNDUsMTggKzE3NSwxOSBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OnBpeGVsQnVmZmVyRnJvbVZpZAogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBwaXhlbEJ1ZmZlcjsKICAgICB9KSk7CisgICAgcmV0dXJuIGNy
ZWF0ZU1lZGlhU2FtcGxlRnJvbUNWUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIuZ2V0KCksIHJvdGF0
aW9uLCBmcmFtZS50aW1lc3RhbXBfdXMoKSk7CiB9CiAKLXZvaWQgUmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlQ29jb2E6Ok9uRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSkK
K3ZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6Ok9uRnJhbWUoY29uc3Qgd2Vi
cnRjOjpWaWRlb0ZyYW1lJiB3ZWJydGNWaWRlb0ZyYW1lKQogewogICAgIGlmICghaXNQcm9kdWNp
bmdEYXRhKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVuc2lnbmVkIHdpZHRoID0gZnJhbWUu
d2lkdGgoKTsKLSAgICB1bnNpZ25lZCBoZWlnaHQgPSBmcmFtZS5oZWlnaHQoKTsKKyAgICB1bnNp
Z25lZCB3aWR0aCA9IHdlYnJ0Y1ZpZGVvRnJhbWUud2lkdGgoKTsKKyAgICB1bnNpZ25lZCBoZWln
aHQgPSB3ZWJydGNWaWRlb0ZyYW1lLmhlaWdodCgpOwogCiAgICAgTWVkaWFTYW1wbGU6OlZpZGVv
Um90YXRpb24gcm90YXRpb247Ci0gICAgc3dpdGNoIChmcmFtZS5yb3RhdGlvbigpKSB7CisgICAg
c3dpdGNoICh3ZWJydGNWaWRlb0ZyYW1lLnJvdGF0aW9uKCkpIHsKICAgICBjYXNlIHdlYnJ0Yzo6
a1ZpZGVvUm90YXRpb25fMDoKICAgICAgICAgcm90YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9S
b3RhdGlvbjo6Tm9uZTsKICAgICAgICAgYnJlYWs7CkBAIC0xNzQsNDAgKzIwNSwxNSBAQCB2b2lk
IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpPbkZyYW1lKGNvbnN0IHdlYnJ0Yzo6
VmlkZW9GcmFtZSYgZnJhbWUpCiAgICAgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0g
ICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSAmJiAhKCsrbV9udW1iZXJPZkZyYW1lcyAlIDYw
KSwgTE9HSURFTlRJRklFUiwgImZyYW1lICIsIG1fbnVtYmVyT2ZGcmFtZXMsICIsIHJvdGF0aW9u
ICIsIGZyYW1lLnJvdGF0aW9uKCksICIgc2l6ZSAiLCB3aWR0aCwgIngiLCBoZWlnaHQpOworICAg
IEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCkgJiYgISgrK21fbnVtYmVyT2ZGcmFtZXMgJSA2MCks
IExPR0lERU5USUZJRVIsICJmcmFtZSAiLCBtX251bWJlck9mRnJhbWVzLCAiLCByb3RhdGlvbiAi
LCB3ZWJydGNWaWRlb0ZyYW1lLnJvdGF0aW9uKCksICIgc2l6ZSAiLCB3aWR0aCwgIngiLCBoZWln
aHQpOwogI2VuZGlmCiAKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gcGl4ZWxCdWZmZXJGcm9tVmlk
ZW9GcmFtZShmcmFtZSk7Ci0gICAgaWYgKCFwaXhlbEJ1ZmZlcikgewotICAgICAgICBFUlJPUl9M
T0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsICJGYWlsZWQgdG8gZ2V0IGEgcGl4ZWwg
YnVmZmVyIGZyb20gYSBmcmFtZSIpOworICAgIGF1dG8gdmlkZW9GcmFtZSA9IHRvVmlkZW9GcmFt
ZSh3ZWJydGNWaWRlb0ZyYW1lLCByb3RhdGlvbik7CisgICAgaWYgKCF2aWRlb0ZyYW1lKQogICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ01TYW1wbGVUaW1pbmdJbmZvIHRpbWluZ0luZm87
Ci0gICAgdGltaW5nSW5mby5wcmVzZW50YXRpb25UaW1lU3RhbXAgPSBQQUw6OkNNVGltZU1ha2Uo
ZnJhbWUudGltZXN0YW1wX3VzKCksIDEwMDAwMDApOwotICAgIHRpbWluZ0luZm8uZGVjb2RlVGlt
ZVN0YW1wID0gUEFMOjprQ01UaW1lSW52YWxpZDsKLSAgICB0aW1pbmdJbmZvLmR1cmF0aW9uID0g
UEFMOjprQ01UaW1lSW52YWxpZDsKLQotICAgIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiBm
b3JtYXREZXNjcmlwdGlvbjsKLSAgICBPU1N0YXR1cyBvc3RhdHVzID0gUEFMOjpDTVZpZGVvRm9y
bWF0RGVzY3JpcHRpb25DcmVhdGVGb3JJbWFnZUJ1ZmZlcihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAo
Q1ZJbWFnZUJ1ZmZlclJlZilwaXhlbEJ1ZmZlciwgJmZvcm1hdERlc2NyaXB0aW9uKTsKLSAgICBp
ZiAob3N0YXR1cyAhPSBub0VycikgewotICAgICAgICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCks
IExPR0lERU5USUZJRVIsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBDTVZpZGVvRm9ybWF0RGVzY3Jp
cHRpb24gd2l0aCBlcnJvciAiLCBzdGF0aWNfY2FzdDxpbnQ+KG9zdGF0dXMpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlcjsKLSAg
ICBvc3RhdHVzID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckNyZWF0ZVJlYWR5V2l0aEltYWdlQnVmZmVy
KGtDRkFsbG9jYXRvckRlZmF1bHQsIChDVkltYWdlQnVmZmVyUmVmKXBpeGVsQnVmZmVyLCBmb3Jt
YXREZXNjcmlwdGlvbiwgJnRpbWluZ0luZm8sICZzYW1wbGVCdWZmZXIpOwotICAgIENGUmVsZWFz
ZShmb3JtYXREZXNjcmlwdGlvbik7Ci0gICAgaWYgKG9zdGF0dXMgIT0gbm9FcnIpIHsKLSAgICAg
ICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAiRmFpbGVkIHRvIGNy
ZWF0ZSB0aGUgc2FtcGxlIGJ1ZmZlciB3aXRoIGVycm9yICIsIHN0YXRpY19jYXN0PGludD4ob3N0
YXR1cykpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byBzYW1wbGUgPSBhZG9w
dENGKHNhbXBsZUJ1ZmZlcik7CiAKICAgICBzZXRJbnRyaW5zaWNTaXplKEludFNpemUod2lkdGgs
IGhlaWdodCkpOwotCi0gICAgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGVBVkZPYmpD
OjpjcmVhdGUoc2FtcGxlLmdldCgpLCByb3RhdGlvbiksIG1ldGFkYXRhRnJvbVZpZGVvRnJhbWUo
ZnJhbWUpKTsKKyAgICB2aWRlb1NhbXBsZUF2YWlsYWJsZSgqdmlkZW9GcmFtZSwgbWV0YWRhdGFG
cm9tVmlkZW9GcmFtZSh3ZWJydGNWaWRlb0ZyYW1lKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2Eu
Y3BwCmluZGV4IDU4YzZiZGU0MzQ2NmVkMzhjNzdiZTY3NWEyYjcyMTIzZDcyZTcxMjIuLmEzNzU5
NWViMzY5MzA4YzU2Nzg2NmY3ODgzNDE2ZTNjOGRlZmZhNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2VDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcApAQCAtODMsOCArODMsOCBAQCB2
b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjp2aWRlb1NhbXBsZUF2YWlsYWJs
ZShNZWRpYVNhbXBsZSYgc2FtcGxlLAogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBBU1NF
UlQoc2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBQbGF0Zm9ybVNhbXBsZTo6Q01TYW1w
bGVCdWZmZXJUeXBlKTsKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhl
bEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKHNhbXBsZS5wbGF0
Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcikpOworICAgIC8vIEZJWE1FOiBPcHRp
bWl6ZSB0aGUgY2FzZSBvZiBQbGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlw
ZS4KKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gc2FtcGxlLnBpeGVsQnVmZmVyKCk7CiAgICAgYXV0
byBwaXhlbEZvcm1hdFR5cGUgPSBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVs
QnVmZmVyKTsKIAogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBjb252ZXJ0ZWRCdWZm
ZXIgPSBwaXhlbEJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAK
aW5kZXggNWNiNjBiOWVmNmVmNTdhNDNiNGVlZjcyYTEzNzY3OWIxYWViZDY1Yi4uNGFjNjlhY2Q5
YTAwY2Y2ZTE5OWEzM2FhYzQ3M2Q4Y2Q4NWRjNWU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNl
QnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTU4LDEwICs1OCw5IEBAIHByaXZhdGU6CiAgICAgTWVkaWFU
aW1lIGRlY29kZVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JveC5kZWNvZGVUaW1l
c3RhbXAoKTsgfQogICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fYm94LmR1cmF0aW9uKCk7IH0KICAgICBBdG9tU3RyaW5nIHRyYWNrSUQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2lkOyB9Ci0gICAgdm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0cmlu
ZyYgaWQpIG92ZXJyaWRlIHsgbV9pZCA9IGlkOyB9CiAgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc2l6ZW9mKG1fYm94KTsgfQogICAgIFNhbXBsZUZsYWdz
IGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1w
bGUoKSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBGbG9hdFNpemUgcHJlc2Vu
dGF0aW9uU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0U2l6ZSgpOyB9CiAgICAg
dm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CkBAIC04Nyw3ICs4Niw3IEBA
IE1lZGlhU2FtcGxlOjpTYW1wbGVGbGFncyBNb2NrTWVkaWFTYW1wbGU6OmZsYWdzKCkgY29uc3QK
ICAgICByZXR1cm4gU2FtcGxlRmxhZ3MoZmxhZ3MpOwogfQogCi1QbGF0Zm9ybVNhbXBsZSBNb2Nr
TWVkaWFTYW1wbGU6OnBsYXRmb3JtU2FtcGxlKCkKK1BsYXRmb3JtU2FtcGxlIE1vY2tNZWRpYVNh
bXBsZTo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogewogICAgIFBsYXRmb3JtU2FtcGxlIHNhbXBs
ZSA9IHsgUGxhdGZvcm1TYW1wbGU6Ok1vY2tTYW1wbGVCb3hUeXBlLCB7ICZtX2JveCB9IH07CiAg
ICAgcmV0dXJuIHNhbXBsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IDI5ZjRjNzgxODE4MGRlMmNi
MjQ5NTA3MmU4NDYwYTUwYWQzNjRhNDAuLjBkOGY2ZWFlMTkwMGNhZjYwOTZhYjA1MTFlMTNiYzBj
OGRlZGIzYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMTc4LDYgKzE3OCw3IEBAIHNldChXZWJL
aXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291
cmNlUHJveHkKICAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5l
clByb3h5CiAgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eQorICAg
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAKIAogICAgIEdQVVBy
b2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5CiAgICAgR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyCkBA
IC0yNzksNiArMjgwLDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbgorICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVv
RnJhbWVQcm94eQogICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRM
aXN0ZW5lcgogICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1v
dGUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Cmlu
ZGV4IGY5Mjc1ZmY2MTM4YzQ5MTQ2OTBhYzBhMDllZGMxNjBhY2UwOWFiZjUuLmIyN2U1NDljMTU4
OGY2ZGRiMzc4OTE0NTlmYmRiMjJiZjJkYjI1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTY3LDYgKzY3LDcgQEAgJChQUk9KRUNUX0RJ
UikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5Lm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5l
clByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mv
d2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0xOTEsMTAgKzE5Miwx
MiBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29k
ZXJBVkYubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24ubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0
ZW5lci5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDUmVtb3RlQ29kZWNzLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HZW9sb2Nh
dGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dl
YlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA5MmQy
MDYwOTkzNDE3N2FlYzk3ZTg4NmM2NmNlOGQ5MTM3ODI0MDgzLi5jNzJjZDY5YzYxNGM2NDU0YjQ3
MWExZmZiMDEyZmExODliMTgxMTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTM4MSw2ICszODEsMTUgQEAgJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVUZXh0dXJlTWVzc2FnZXNSZXBsaWVz
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVGV4
dHVyZVZpZXdNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVRleHR1cmVWaWV3TWVzc2FnZXMuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVUZXh0dXJlVmlld01lc3NhZ2Vz
UmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1Jl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cE1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQv
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5TWVzc2FnZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcFByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFtZVByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1v
dGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvVHJh
Y2tQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9UcmFja1Byb3h5TWVzc2FnZXMuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb1RyYWNrUHJveHlN
ZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDI5ZTRjODQ2
NjM0NWIzMzk4M2RlNzQ4Mjg3Yjk0MTU0NjQ3ZjI5YmQuLmMzYmU0M2E5ODg0NGZjMDViOGI2MTk1
M2VlODE4NDdmZWUxOTgwY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTIwMiw5
ICsyMDIsMTEgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uIFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkZNYW5hZ2VyIFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uIFwKKwlXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJv
eHkgXAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lciBc
CiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZSBcCiAJV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlciBcCisJV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkgXAogCVdlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcCBcCiAJV2ViUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIgXAogCVdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvckludGVycnVwdERpc3BhdGNoZXIgXApAQCAtMzAwLDYgKzMwMiw3IEBAIE1FU1NBR0Vf
UkVDRUlWRVJTID0gXAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkgXAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBcCiAJR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlciBcCisJR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVNvdXJjZVByb3h5IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1h
bmRMaXN0ZW5lclByb3h5IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclBy
b3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAppbmRleCA0ZDUyNGU4Yjg2NzlhODMwYzQ1ZWI2YjViYzEwNGI3NTQx
MDRiNjNlLi43OTBhMGYyZjRlNjJiZmM1NzZiMjVmNGI3NWQ2NzAxNTZhNTgwMDkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCkBAIC0xNDEsNiArMTQxLDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNlbmRpZgogCkBAIC0yMDUsMjAgKzIwNiwyMSBA
QCBwcml2YXRlOgogICAgICAgICBtX3Byb2Nlc3Muc2V0VENDSWRlbnRpdHkoKTsKICAgICB9CiAj
ZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKwogICAg
IHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSkg
ZmluYWwKICAgICB7CiAgICAgICAgIGlmICh0eXBlICE9IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5
cGU6OkF1ZGlvKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX3Byb2Nlc3Muc3RhcnRD
YXB0dXJpbmdBdWRpbygpOwogICAgIH0KLSNlbmRpZgogCiAgICAgY29uc3QgUHJvY2Vzc0lkZW50
aXR5JiByZXNvdXJjZU93bmVyKCkgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBt
X3Byb2Nlc3Mud2ViUHJvY2Vzc0lkZW50aXR5KCk7CiAgICAgfQogCisgICAgUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXAqIHJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKCkgZmluYWwgeyByZXR1
cm4gJm1fcHJvY2Vzcy52aWRlb0ZyYW1lT2JqZWN0SGVhcCgpOyB9CisKICAgICBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiBtX3Byb2Nlc3M7CiB9OwogCkBAIC0yMzYsMTUgKzIzOCwxOCBAQCBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKEdQVVBy
b2Nlc3MmIGdwdVByb2Nlc3MsIFdlYgogICAgICwgbV93ZWJQcm9jZXNzSWRlbnRpdHkoV1RGTW92
ZShwYXJhbWV0ZXJzLndlYlByb2Nlc3NJZGVudGl0eSkpCiAgICAgLCBtX3JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5KG1ha2VVbmlxdWVSZWY8UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk+KCp0aGlzKSkKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKLSNpZiBQTEFURk9STShD
T0NPQSkgJiYgVVNFKExJQldFQlJUQykKLSAgICAsIG1fbGliV2ViUlRDQ29kZWNzUHJveHkoTGli
V2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZSgqdGhpcykpCi0jZW5kaWYKICNpZiBQTEFURk9STShD
T0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICAsIG1fc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyTWFuYWdlcihSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpjcmVh
dGUoKnRoaXMpKQogI2VuZGlmCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICAsIG1fY2Fw
dHVyZU9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpCiAjZW5kaWYKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorICAgICwgbV92aWRlb0ZyYW1lT2JqZWN0SGVhcChSZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcDo6Y3JlYXRlKCp0aGlzKSkKKyNlbmRpZgorI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQorICAgICwgbV9saWJXZWJSVENDb2RlY3NQcm94eShM
aWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlKCp0aGlzKSkKKyNlbmRpZgogI2lmIEhBVkUoQVVE
SVRfVE9LRU4pCiAgICAgLCBtX3ByZXNlbnRpbmdBcHBsaWNhdGlvbkF1ZGl0VG9rZW4oV1RGTW92
ZShwYXJhbWV0ZXJzLnByZXNlbnRpbmdBcHBsaWNhdGlvbkF1ZGl0VG9rZW4pKQogI2VuZGlmCkBA
IC0zMDAsNyArMzA1LDkgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9z
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAgICAgICAgIG1fYXVkaW9TZXNzaW9uUHJv
eHkgPSBudWxscHRyOwogICAgIH0KICNlbmRpZgotCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KyAgICBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwLnJlc2V0KCk7CisjZW5kaWYKICAgICAvLyBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kIG9iamVjdHMgcmVmIHRoZWlyIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3Mgc28gd2UgbmVlZCB0byBtYWtlIHN1cmUKICAgICAvLyB0byBicmVhayB0aGUgcmVmZXJl
bmNlIGN5Y2xlIGJ5IGRlc3Ryb3lpbmcgdGhlbS4KICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRNYXAuY2xlYXIoKTsKQEAgLTk0MSw4ICs5NDgsMTUgQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpzZXRDYXB0dXJlQXR0cmlidXRpb25TdHJpbmcoKSBjb25zdAogewogfQogI2Vu
ZGlmCisKK1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjp2aWRlb0ZyYW1lT2JqZWN0SGVhcCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICptX3ZpZGVv
RnJhbWVPYmplY3RIZWFwLmdldCgpOworfQorCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkKIAorCiAjaWYgUExBVEZPUk0oTUFDKQogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpkaXNwbGF5Q29uZmlndXJhdGlvbkNoYW5nZWQoQ0dEaXJlY3REaXNwbGF5SUQsIENHRGlzcGxh
eUNoYW5nZVN1bW1hcnlGbGFncyBmbGFncykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDYyNGUzZmEzNTFjZjBi
MDM1ZTJlMTNhOTMzMjVkZGQ0YzM0MmIxNDkuLmZiMjAyNmQxMDEzYzc5ODVmMGZhYWFkOGRkODRi
NDlkMTE2MzQ0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMTA2LDYgKzEwNiwxMSBAQCBzdHJ1Y3QgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVyczsKIGNsYXNzIFJlbW90ZVdDTGF5ZXJU
cmVlSG9zdDsKICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK2NsYXNzIFJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwOworI2VuZGlmCisKKwogY2xhc3MgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcwogICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+CiAgICAgLCBwdWJs
aWMgV2ViQ29yZTo6Tm93UGxheWluZ01hbmFnZXI6OkNsaWVudApAQCAtMTQxLDYgKzE0Niw3IEBA
IHB1YmxpYzoKICAgICBib29sIGFsbG93c0F1ZGlvQ2FwdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YWxsb3dzQXVkaW9DYXB0dXJlOyB9CiAgICAgYm9vbCBhbGxvd3NWaWRlb0NhcHR1cmUoKSBjb25z
dCB7IHJldHVybiBtX2FsbG93c1ZpZGVvQ2FwdHVyZTsgfQogICAgIGJvb2wgYWxsb3dzRGlzcGxh
eUNhcHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0Rpc3BsYXlDYXB0dXJlOyB9CisgICAg
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAmIHZpZGVvRnJhbWVPYmplY3RIZWFwKCkgY29uc3Q7
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQpA
QCAtMjg4LDkgKzI5NCw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1l
ZGlhUmVzb3VyY2VNYW5hZ2VyPiBtX3JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOwogICAgIFVu
aXF1ZVJlZjxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eT4gbV9yZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKLSNpZiBQTEFU
Rk9STShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykKLSAgICBSZWY8TGliV2ViUlRDQ29kZWNzUHJv
eHk+IG1fbGliV2ViUlRDQ29kZWNzUHJveHk7Ci0jZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkg
JiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJQcm94eT4gbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdE1hbmFnZXI+IG1fYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyOwpAQCAtMzA1LDYgKzMwOCwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hbGxvd3NB
dWRpb0NhcHR1cmUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbGxvd3NWaWRlb0NhcHR1cmUgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9hbGxvd3NEaXNwbGF5Q2FwdHVyZSB7IGZhbHNlIH07CisgICAg
SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwPiBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwOworI2VuZGlmCisjaWYgUExBVEZPUk0oQ09D
T0EpICYmIFVTRShMSUJXRUJSVEMpCisgICAgUmVmPExpYldlYlJUQ0NvZGVjc1Byb3h5PiBtX2xp
YldlYlJUQ0NvZGVjc1Byb3h5OwogI2VuZGlmCiAjaWYgSEFWRShBVURJVF9UT0tFTikKICAgICBz
dGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IG1fcHJlc2VudGluZ0FwcGxpY2F0aW9uQXVkaXRU
b2tlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCmluZGV4IGVjYjRiNTc2N2NjOWE4ZTI2ODY0
NmRjZTM5ZDI2NjJjMzQyYzMzYjYuLjk4MDA1NzhiNTIwODQzMTdlODg2NTJkZmM1MmM3NmNjMWMy
ZmY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApAQCAtNDIsNiArNDIsMTAgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMQ1YuaD4KICNlbmRpZgogCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5o
IgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKQEAgLTY4LDYgKzcyLDkgQEAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUMKICAgICAsIG1fc3Ry
ZWFtQ29ubmVjdGlvbihJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb246OmNyZWF0ZShncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92ZShzdHJlYW0pLCByZW1vdGVH
cmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpKSkKICAgICAsIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKICAgICAsIG1fcmVu
ZGVyaW5nQmFja2VuZChyZW5kZXJpbmdCYWNrZW5kKQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisgICAgLCBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
dmlkZW9GcmFtZU9iamVjdEhlYXAoKSkKKyNlbmRpZgogICAgICwgbV9yZW5kZXJpbmdSZXNvdXJj
ZXNSZXF1ZXN0KFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDo6YWNxdWlyZSgp
KQogICAgICwgbV93ZWJQcm9jZXNzSWRlbnRpZmllcihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LndlYlByb2Nlc3NJZGVudGlmaWVyKCkpCiB7CkBAIC0yMjMsNiArMjMwLDE0IEBAIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhc1dpdGhR
dWFsaWZpZWRJZGVudGlmCiAgICAgcGFpbnRQaXhlbEJ1ZmZlclRvSW1hZ2VCdWZmZXIobV9jb250
ZXh0LT5yZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGluZygpLCBpbWFnZUJ1ZmZlciwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01l
ZGlhU2FtcGxlKFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSYmIHdyaXRlKQoreworICAg
IGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CisgICAgbV92aWRlb0ZyYW1lT2JqZWN0
SGVhcC0+YWRkVmlkZW9GcmFtZShXVEZNb3ZlKHdyaXRlKSwgbV9jb250ZXh0LT5wYWludENvbXBv
c2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpKTsKK30KKyNlbmRpZgorCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpwYWludFBpeGVsQnVmZmVyVG9JbWFnZUJ1ZmZlcihzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiYmIHBpeGVsQnVmZmVyLCBRdWFsaWZpZWRSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgdGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggZWIyMGQxNmMzNzdmNWYzZTAwN2YyMWJhMjU2
MjRkZDE5ZTM2YmIxNy4uMTBjMDYzNjE4NjdkNWU4ODNlYjlkNmE4NTMyNWNkOTEwZmJkZTMxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTU0LDYgKzU0LDEwIEBACiAjaW5jbHVkZSAiV0ND
b250ZW50QnVmZmVySWRlbnRpZmllci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCisjZW5kaWYKKwog
I2lmIFBMQVRGT1JNKENPQ09BKQogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0
OwpAQCAtNjEsNiArNjUsOSBAQCBjbGFzcyBNYWNoU2VuZFJpZ2h0OwogI2VuZGlmCiAKIG5hbWVz
cGFjZSBXZWJLaXQgeworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCitjbGFzcyBSZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcDsKKyNlbmRpZgogCiAvLyBHUFUgcHJvY2VzcyBzaWRlIGltcGxlbWVu
dGF0aW9uIG9mIHRoYXQgcmVjZWl2ZXMgbWVzc2FnZXMgYWJvdXQgR3JhcGhpY3NDb250ZXh0R0wg
Y2FsbHMKIC8vIGFuZCBpc3N1ZXMgcmVhbCBHcmFwaGljc0NvbnRleHRHTCBjYWxscyBiYXNlZCBv
biB0aGUgcmVjZWl2ZWQgbWVzc2FnZXMuCkBAIC0xMDgsNiArMTE1LDkgQEAgcHJvdGVjdGVkOgog
ICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IodWludDMyX3QgZXJyb3IpOwogICAgIHZvaWQgcGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcGFpbnRDb21w
b3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorICAgIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoUmVtb3RlVmlk
ZW9GcmFtZVdyaXRlUmVmZXJlbmNlJiYpOworI2VuZGlmCiAgICAgdm9pZCBjb3B5VGV4dHVyZUZy
b21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIsIHVpbnQzMl90IHRleHR1cmUs
IHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxGb3JtYXQs
IHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBi
b29sIGZsaXBZLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHNp
bXVsYXRlRXZlbnRGb3JUZXN0aW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpTaW11bGF0
ZWRFdmVudEZvclRlc3RpbmcpOwogCkBAIC0xMzAsNiArMTQwLDkgQEAgcHJvdGVjdGVkOgogICAg
IFJlZlB0cjxQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMPiBtX2NvbnRleHQgV1RGX0dVQVJERURf
QllfTE9DSyhtX3N0cmVhbVRocmVhZCk7CiAgICAgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyOwogICAgIFJlZjxSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kPiBtX3JlbmRlcmluZ0JhY2tlbmQ7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAg
ICBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFtZU9iamVjdEhlYXA7
CisjZW5kaWYKICAgICBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QgbV9yZW5k
ZXJpbmdSZXNvdXJjZXNSZXF1ZXN0OwogICAgIE5PX1VOSVFVRV9BRERSRVNTIFRocmVhZEFzc2Vy
dGlvbiBtX3N0cmVhbVRocmVhZDsKICAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBtX3dl
YlByb2Nlc3NJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2Vz
LmluCmluZGV4IGM4YWIyOTc3MjkzMGJmZDQwOGEwM2NlYjM3YTBjMjk4OThlMzAyYjIuLjkwOTdi
NDI3MGJmNTNkYTI0YzA5M2E1N2VhM2NjYjE3YTI5MDdmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTQyLDYgKzQyLDkgQEAgbWVzc2FnZXMgLT4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0gewogICAgIHZvaWQgUGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIGltYWdlQnVmZmVyKSAtPiAoKSBTeW5jaHJvbm91cwogICAgIHZvaWQgUGFpbnRDb21w
b3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAgICB2b2lkIENvcHlUZXh0dXJlRnJv
bU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50MzJf
dCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVy
bmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIGJvb2wgcHJlbXVsdGlw
bHlBbHBoYSwgYm9vbCBmbGlwWSkgLT4gKGJvb2wgc3VjY2VzcykgU3luY2hyb25vdXMKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorICAgIHZvaWQgUGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVk
aWFTYW1wbGUoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UgcmVzdWx0KQor
I2VuZGlmCiAgICAgdm9pZCBTaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTDo6U2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nIGV2ZW50KQogCiAgICAgdm9pZCBN
b3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3lu
Y2hyb25vdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmMGNhMzExMTM5
YWVkY2Q2NTYwMTI1NzYzMDNjOTBjM2M3NGViMDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwCkBA
IC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5TWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRl
b0ZyYW1lUHJveHlNZXNzYWdlcy5oIgorCisjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRM
aW5rLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXA+IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpjcmVhdGUoR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgY29ubmVjdGlvblRvV2ViUHJvY2VzcykKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcChjb25uZWN0aW9uVG9XZWJQcm9jZXNz
KSk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uVG9XZWJQcm9jZXNz
KQorICAgIDogbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCZjb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKQorICAgICwgbV9jb25uZWN0aW9uKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29u
bmVjdGlvbigpKQoreworICAgIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJl
Y2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7Cit9CisKK1JlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwOjp+UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAoKQoreworICAg
IEFTU0VSVCghbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKTsKK30KKwordm9pZCBSZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcDo6c3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8UmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXA+JiYgcmVmRnJvbUNvbm5lY3Rpb24pCit7CisgICAgYXNzZXJ0SXNDdXJy
ZW50KG1fY29uc3VtZVRocmVhZCk7CisgICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MgPSBzdGQ6OmV4Y2hhbmdlKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgbnVsbHB0
cikpIHsKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVy
TWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICAgICAgLy8gQ2xpZW50cyBtaWdo
dCBob2xkIG9uIHRvIHRoZSByZWYgYWZ0ZXIgdGhpcyBoYXBwZW5zLiBUaGV5IHNob3VsZCBhbHNv
IHN0b3AgdGhlbXNlbHZlcywgYnV0IGlmIHRoZXkgZG8gbm90LAorICAgICAgICAvLyBhdm9pZCBi
aWcgbWVtb3J5IGxlYWtzIGJ5IGNsZWFyaW5nIHRoZSBmcmFtZXMuIFRoZSBjbGllbnRzIHNob3Vs
ZCBmYWlsIGdyYWNlZnVsbHkgKGRvIG5vdGhpbmcpIGluIGNhc2UgdGhleSBmYWlsIHRvIGxvb2sg
dXAKKyAgICAgICAgLy8gZnJhbWVzLgorICAgICAgICBjbGVhcigpOworICAgICAgICAvLyBUT0RP
OiBhZGQgY2FuIGhhcHBlbiBhZnRlciBzdG9wcGluZy4KKyAgICB9Cit9Cit2b2lkIFJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwOjphZGRWaWRlb0ZyYW1lKFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJl
ZmVyZW5jZSYmIHdyaXRlLCBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYgZnJhbWUpCit7
CisgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM+IHJl
c3VsdDsKKyAgICBpZiAoZnJhbWUpCisgICAgICAgIHJlc3VsdCA9IFJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6cHJvcGVydGllcygqZnJhbWUpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpXYXNJbml0aWFsaXplZChyZXN1bHQpLCAgd3JpdGUu
aWRlbnRpZmllcigpLm9iamVjdCgpLnRvVUludDY0KCkpOworICAgIHJldGlyZShXVEZNb3ZlKHdy
aXRlKSwgV1RGTW92ZShmcmFtZSksIHN0ZDo6bnVsbG9wdCk7Cit9CisKK1JlbW90ZVZpZGVvRnJh
bWVJZGVudGlmaWVyIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpjcmVhdGVWaWRlb0ZyYW1l
KFJlZjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4mJiBmcmFtZSkKK3sKKyAgICBhdXRvIGlkZW50aWZp
ZXIgPSBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcjo6Z2VuZXJhdGVUaHJlYWRTYWZlKCk7Cisg
ICAgYWRkKGlkZW50aWZpZXIsIFdURk1vdmUoZnJhbWUpKTsKKyAgICByZXR1cm4gaWRlbnRpZmll
cjsKK30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6cmVsZWFzZVZpZGVvRnJh
bWUoUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJiYgd3JpdGUpCit7CisgICAgYXNzZXJ0
SXNDdXJyZW50KG1fY29uc3VtZVRocmVhZCk7CisgICAgcmV0aXJlUmVtb3ZlKFdURk1vdmUod3Jp
dGUpKTsKK30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6Z2V0VmlkZW9GcmFt
ZUJ1ZmZlcihSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSYmIHJlYWQpCit7CisgICAgYXV0
byBpZGVudGlmaWVyID0gcmVhZC5pZGVudGlmaWVyKCk7CisgICAgYXV0byBtZWRpYVNhbXBsZSA9
IHJldGlyZShXVEZNb3ZlKHJlYWQpLCAwX3MpOworCisgICAgaWYgKCFtZWRpYVNhbXBsZSkKKyAg
ICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcFByb3h5OjpWaWRlb0ZyYW1lQnVmZmVyTm90Rm91bmQgeyBpZGVudGlmaWVyIH0sIDApOwor
CisgICAgYXV0byBwbGF0Zm9ybVNhbXBsZSA9IG1lZGlhU2FtcGxlLT5wbGF0Zm9ybVNhbXBsZSgp
OworICAgIEFTU0VSVChwbGF0Zm9ybVNhbXBsZS50eXBlID09IFBsYXRmb3JtU2FtcGxlOjpDTVNh
bXBsZUJ1ZmZlclR5cGUpOworCisgICAgbV9zaGFyZWRWaWRlb0ZyYW1lV3JpdGVyLndyaXRlKHN0
YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1
ZmZlcihwbGF0Zm9ybVNhbXBsZS5zYW1wbGUuY21TYW1wbGVCdWZmZXIpKSwKKyAgICAgICAgWyZd
KGF1dG8mIHNlbWFwaG9yZSkgeyBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwUHJveHk6OlNldFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhvcmUgeyBz
ZW1hcGhvcmUgfSwgMCk7IH0sCisgICAgICAgIFsmXShhdXRvJiBoYW5kbGUpIHsgbV9jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5OjpTZXRT
aGFyZWRWaWRlb0ZyYW1lTWVtb3J5IHsgaGFuZGxlIH0sIDApOyB9CisgICAgKTsKKyAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk6
Ok5ld1ZpZGVvRnJhbWVCdWZmZXIgeyBpZGVudGlmaWVyIH0sIDApOworfQorCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMzRlNmM4Njg2OGFiZTc1YWVkNWM1
MjA5MmE5NzVkZjNjMTcwZjBiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgKQEAgLTAsMCArMSw3MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlm
aWVyLmgiCisjaW5jbHVkZSAiU2hhcmVkVmlkZW9GcmFtZS5oIgorI2luY2x1ZGUgIlRocmVhZFNh
ZmVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNhbXBsZS5oPgorI2luY2x1
ZGUgPHd0Zi9UaHJlYWRBc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3Mg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKKworLy8gSG9sZHMgcmVmZXJlbmNlcyB0byBhbGwg
VmlkZW9GcmFtZSBpbnN0YW5jZXMgdGhhdCBhcmUgbWFwcGVkIGZyb20gV2ViIHByb2Nlc3MgdG8g
R1BVIHByb2Nlc3MgdHdvIHByb2Nlc3Nlcy4KKy8vIEFzIGN1cnJlbnRseSB0aGVyZSBpcyBubyBz
cGVjaWFsIHN0YXRlIGZvciBSZW1vdGVWaWRlb0ZyYW1lLCB0aGUgb2JqZWN0IGhlYXAgc3RvcmVz
IFZpZGVvRnJhbWUgaW5zdGFuY2VzIChNZWRpYVNhbXBsZSkuCisvLyBBcyBjdXJyZW50bHkgdGhl
cmUgaXMgbm8gUmVtb3RlVmlkZW9GcmFtZSwgcmVzcG9uc2libGUgZm9yIGRpc3BhdGNoaW5nIHRo
ZSBWaWRlb0ZyYW1lIG1ldGhvZHMgdG8gdGhlIG9iamVjdHMuCisvLyBDb25zdW1lIHRocmVhZCBp
cyB0aGUgdGhyZWFkIHRoYXQgdXNlcyB0aGUgVmlkZW9GcmFtZS4gRm9yIEdQVVAgdGhpcyBpcyB0
aGUgbWVkaWEgcGxheWVyIHRocmVhZCwgdGhlIG1haW4gdGhyZWFkLgorLy8gRklYTUU6IGN1cnJl
bnRseSBWaWRlb0ZyYW1lIGluc3RhbmNlcyBhcmUgTWVkaWFTYW1wbGUgaW5zdGFuY2VzLgorY2xh
c3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZU9i
amVjdEhlYXA8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJDb3JlOjpNZWRp
YVNhbXBsZT4+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBjcmVhdGUoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYpOworICAgIH5SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCgpOworCisg
ICAgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgY3JlYXRlVmlkZW9GcmFtZShSZWY8V2ViQ29y
ZTo6TWVkaWFTYW1wbGU+JiYpOworICAgIHZvaWQgYWRkVmlkZW9GcmFtZShSZW1vdGVWaWRlb0Zy
YW1lV3JpdGVSZWZlcmVuY2UmJiwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiYmKTsKKwor
ICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXA+JiYgcmVmRnJvbUNvbm5lY3Rpb24pOworcHJpdmF0ZToKKyAgICBSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CisKKyAgICAvLyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciBvdmVycmlkZXMuCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzLgor
ICAgIHZvaWQgcmVsZWFzZVZpZGVvRnJhbWUoUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNl
JiYpOworICAgIHZvaWQgZ2V0VmlkZW9GcmFtZUJ1ZmZlcihSZW1vdGVWaWRlb0ZyYW1lUmVhZFJl
ZmVyZW5jZSYmKTsKKworICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIG1fZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY29uc3VtZVRocmVhZCk7Cisg
ICAgY29uc3QgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIFRocmVhZEFz
c2VydGlvbiBtX2NvbnN1bWVUaHJlYWQgTk9fVU5JUVVFX0FERFJFU1M7CisgICAgU2hhcmVkVmlk
ZW9GcmFtZVdyaXRlciBtX3NoYXJlZFZpZGVvRnJhbWVXcml0ZXI7Cit9OworCisKKworfQorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MWQzZDI0M2UxNTE3NWVmZjljOGQ3ZWZjYmJiZDBiMTUyZGU1Y2E2MgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcC5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI5IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorbWVzc2FnZXMgLT4gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAgTm90UmVmQ291
bnRlZCB7CisgICAgR2V0VmlkZW9GcmFtZUJ1ZmZlcihXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVS
ZWFkUmVmZXJlbmNlIGlkZW50aWZpZXIpCisgICAgUmVsZWFzZVZpZGVvRnJhbWUoV2ViS2l0OjpS
ZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UgaWRlbnRpZmllcikKK30KKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQ
cm94eS5oCmluZGV4IGM3NzJjYjc3NjBmMmQ1ODI5YWZjZDJiODVmNTkxM2EzMGMwMDc0NDQuLjhl
ZjI5Y2FlMjQwOTFkZWZjZDg5YzQxNDA2MDRjNmZlYzk4MjIwMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUlRD
RGVjb2RlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENFbmNvZGVySWRlbnRpZmllci5oIgor
I2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVk
TWVtb3J5LmgiCiAjaW5jbHVkZSAiU2hhcmVkVmlkZW9GcmFtZS5oIgogI2luY2x1ZGUgPHd0Zi9M
b2NrLmg+CkBAIC01Myw2ICs1NCw3IEBAIHVzaW5nIExvY2FsRW5jb2RlciA9IHZvaWQqOwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFz
cyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDsKIGNsYXNzIFNoYXJlZFZpZGVvRnJhbWVSZWFk
ZXI7CiAKIGNsYXNzIExpYldlYlJUQ0NvZGVjc1Byb3h5IDogcHVibGljIElQQzo6Q29ubmVjdGlv
bjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVyUmVmQ291bnRlZCB7CkBAIC04Myw3ICs4NSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjcmVhdGVFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mLCBib29s
IHVzZUxvd0xhdGVuY3kpOwogICAgIHZvaWQgcmVsZWFzZUVuY29kZXIoUlRDRW5jb2RlcklkZW50
aWZpZXIpOwogICAgIHZvaWQgaW5pdGlhbGl6ZUVuY29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIs
IHVpbnQxNl90IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQsIHVuc2lnbmVkIHN0YXJ0Qml0cmF0ZSwg
dW5zaWduZWQgbWF4Qml0cmF0ZSwgdW5zaWduZWQgbWluQml0cmF0ZSwgdWludDMyX3QgbWF4RnJh
bWVyYXRlKTsKLSAgICB2b2lkIGVuY29kZUZyYW1lKFJUQ0VuY29kZXJJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmLCB1aW50MzJfdCB0aW1lU3RhbXAsIGJvb2wgc2hvdWxk
RW5jb2RlQXNLZXlGcmFtZSk7CisgICAgdm9pZCBlbmNvZGVGcmFtZShSVENFbmNvZGVySWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiwgdWludDMyX3QgdGltZVN0YW1wLCBi
b29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUsIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFt
ZVJlYWRSZWZlcmVuY2U+KTsKICAgICB2b2lkIHNldEVuY29kZVJhdGVzKFJUQ0VuY29kZXJJZGVu
dGlmaWVyLCB1aW50MzJfdCBiaXRSYXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpOwogICAgIHZvaWQg
c2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFwaG9yZShSVENFbmNvZGVySWRlbnRpZmllciwgSVBDOjpT
ZW1hcGhvcmUmJik7CiAgICAgdm9pZCBzZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5KFJUQ0VuY29k
ZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpOwpAQCAtMTAxLDYg
KzEwMyw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxSVENEZWNvZGVySWRlbnRpZmllciwgd2Vi
cnRjOjpMb2NhbERlY29kZXI+IG1fZGVjb2RlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2sp
OyAvLyBPbmx5IG1vZGlmaWVkIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZSBidXQgbWF5IGdl
dCBhY2Nlc3NlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KICAgICBIYXNoTWFwPFJUQ0VuY29kZXJJ
ZGVudGlmaWVyLCBFbmNvZGVyPiBtX2VuY29kZXJzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2Nr
KTsgLy8gT25seSBtb2RpZmllZCBvbiB0aGUgbGliV2ViUlRDQ29kZWNzUXVldWUgYnV0IG1heSBn
ZXQgYWNjZXNzZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9x
dWV1ZTsKKyAgICBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFtZU9i
amVjdEhlYXA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCA2
YmIyMDg2MzhkYzIyYTg5ZWZiODljOWFmOTA2YTAzZWE2OWU3NDRlLi43M2QwYjU4ZDQ3YmQxNjA3
NzVkNDhlNjY5YTdlM2QxZWU0YjUxYWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMu
aW4KQEAgLTM0LDcgKzM0LDcgQEAgbWVzc2FnZXMgLT4gTGliV2ViUlRDQ29kZWNzUHJveHkgTm90
UmVmQ291bnRlZCB7CiAgICAgQ3JlYXRlRW5jb2RlcihXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlm
aWVyIGlkLCBTdHJpbmcgZm9ybWF0TmFtZSwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmlu
Zz4+IHBhcmFtZXRlcnMsIGJvb2wgdXNlTG93TGF0ZW5jeSk7CiAgICAgUmVsZWFzZUVuY29kZXIo
V2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCkKICAgICBJbml0aWFsaXplRW5jb2RlcihX
ZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyIGlkLCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3Qg
aGVpZ2h0LCB1bnNpZ25lZCBzdGFydEJpdHJhdGUsIHVuc2lnbmVkIG1heEJpdHJhdGUsIHVuc2ln
bmVkIG1pbkJpdHJhdGUsIHVpbnQzMl90IG1heEZyYW1lcmF0ZSkKLSAgICBFbmNvZGVGcmFtZShX
ZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyIGlkLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBs
ZSBzYW1wbGUsIHVpbnQzMl90IHRpbWVTdGFtcCwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1l
KQorICAgIEVuY29kZUZyYW1lKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQsIFdlYkNv
cmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSwgdWludDMyX3QgdGltZVN0YW1wLCBib29sIHNo
b3VsZEVuY29kZUFzS2V5RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRlb0Zy
YW1lUmVhZFJlZmVyZW5jZT4gc2FtcGxlUmVmZXJlbmNlKQogICAgIFNldEVuY29kZVJhdGVzKFdl
YktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQsIHVpbnQzMl90IGJpdFJhdGUsIHVpbnQzMl90
IGZyYW1lUmF0ZSkKICAgICBTZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlKFdlYktpdDo6UlRD
RW5jb2RlcklkZW50aWZpZXIgaWQsIElQQzo6U2VtYXBob3JlIHNlbWFwaG9yZSkKICAgICBTZXRT
aGFyZWRWaWRlb0ZyYW1lTWVtb3J5KFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQsIFdl
YktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3RvcmFnZUhhbmRsZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0g
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1t
CmluZGV4IDIyZTIwNmFiOWE5MzJhNTliY2VkNTMzOTNiZGM4YjMwMWFjNjgzNGIuLjIwZTE4OTQ1
Zjg0YjVkZTk1MmM5YTgyNGIyOTY5NzkwNzk1OGIyZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQpAQCAtMzIs
MjEgKzMyLDI3IEBACiAjaW1wb3J0ICJHUFVQcm9jZXNzLmgiCiAjaW1wb3J0ICJMaWJXZWJSVEND
b2RlY3NNZXNzYWdlcy5oIgogI2ltcG9ydCAiTGliV2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlcy5o
IgorI2ltcG9ydCAiUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIKKyNpbXBvcnQgIlJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCiAjaW1wb3J0ICJTaGFyZWRWaWRlb0ZyYW1lLmgiCiAj
aW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ1ZVdGls
aXRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvTGliV2ViUlRDUHJvdmlkZXIuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvTWVkaWFTYW1wbGVBVkZPYmpDLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbW90ZVZp
ZGVvU2FtcGxlLmg+CiAjaW1wb3J0IDx3ZWJydGMvc2RrL1dlYktpdC9XZWJLaXREZWNvZGVyLmg+
CiAjaW1wb3J0IDx3ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRFbmNvZGVyLmg+CiAjaW1wb3J0IDx3
dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9NZWRpYVRpbWUuaD4KIAorI2ltcG9ydCA8cGFs
L2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBMaWJXZWJS
VENDb2RlY3NQcm94eTo6TGliV2ViUlRDQ29kZWNzUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgY29ubmVjdGlvbikKICAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25u
ZWN0aW9uKQogICAgICwgbV9xdWV1ZShjb25uZWN0aW9uLmdwdVByb2Nlc3MoKS5saWJXZWJSVEND
b2RlY3NRdWV1ZSgpKQorICAgICwgbV92aWRlb0ZyYW1lT2JqZWN0SGVhcChjb25uZWN0aW9uLnZp
ZGVvRnJhbWVPYmplY3RIZWFwKCkpCiB7CiAgICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNvbm5lY3Rpb24oKS5hZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkxpYldlYlJU
Q0NvZGVjc1Byb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMpOwogfQpAQCAtNzcsMTIg
KzgzLDIyIEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNsb3NlKCkKIAogc3RhdGljIEZ1
bmN0aW9uPHZvaWQoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgdWludDMyX3QgdGltZVN0
YW1wTnMsIHVpbnQzMl90IHRpbWVTdGFtcCk+IGNyZWF0ZURlY29kZXJDYWxsYmFjayhSVENEZWNv
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKQogewotICAgIHJldHVybiBbY29ubmVjdGlvbiA9IFJlZiB7
IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpIH0sIHJlc291cmNlT3duZXIg
PSBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLndlYlByb2Nlc3NJZGVudGl0eSgpLCBpZGVudGlm
aWVyXSAoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgdWludDMyX3QgdGltZVN0YW1wTnMs
IHVpbnQzMl90IHRpbWVTdGFtcCkgewotICAgICAgICBpZiAoYXV0byBzYW1wbGUgPSBXZWJDb3Jl
OjpSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHBpeGVsQnVmZmVyLCBNZWRpYVRpbWUodGltZVN0
YW1wTnMsIDEpKSkgewotICAgICAgICAgICAgaWYgKHJlc291cmNlT3duZXIpCi0gICAgICAgICAg
ICAgICAgc2FtcGxlLT5zZXRPd25lcnNoaXBJZGVudGl0eShyZXNvdXJjZU93bmVyKTsKLSAgICAg
ICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjczo6Q29tcGxl
dGVkRGVjb2RpbmcgeyBpZGVudGlmaWVyLCB0aW1lU3RhbXAsICpzYW1wbGUgfSwgMCk7Ci0gICAg
ICAgIH0KKyAgICByZXR1cm4gW2Nvbm5lY3Rpb24gPSBSZWYgeyBncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNvbm5lY3Rpb24oKSB9LCByZXNvdXJjZU93bmVyID0gZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy53ZWJQcm9jZXNzSWRlbnRpdHkoKSwgdmlkZW9GcmFtZU9iamVjdEhlYXAgPSBSZWYg
eyBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLnZpZGVvRnJhbWVPYmplY3RIZWFwKCkgfSwgaWRl
bnRpZmllcl0gKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIHVpbnQzMl90IHRpbWVTdGFt
cE5zLCB1aW50MzJfdCB0aW1lU3RhbXApICBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBzYW1wbGUg
PSBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlKHBpeGVsQnVm
ZmVyLCBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgZmFsc2UsIE1l
ZGlhVGltZSh0aW1lU3RhbXBOcywgMSksIHsgfSk7CisgICAgICAgIGlmICghc2FtcGxlKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gcmVtb3RlU2FtcGxlID0gV2ViQ29yZTo6
UmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZSgqc2FtcGxlKTsKKyAgICAgICAgaWYgKCFyZW1vdGVT
YW1wbGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHJlc291cmNlT3duZXIp
CisgICAgICAgICAgICByZW1vdGVTYW1wbGUtPnNldE93bmVyc2hpcElkZW50aXR5KHJlc291cmNl
T3duZXIpOworCisgICAgICAgIGF1dG8gcmVtb3RlSWRlbnRpZmllciA9IHZpZGVvRnJhbWVPYmpl
Y3RIZWFwLT5jcmVhdGVWaWRlb0ZyYW1lKHNhbXBsZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAg
ICAgcmVtb3RlU2FtcGxlLT5jbGVhcklPU3VyZmFjZSgpOworCisgICAgICAgIGNvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjczo6Q29tcGxldGVkRGVjb2RpbmcgeyBpZGVu
dGlmaWVyLCB0aW1lU3RhbXAsICpyZW1vdGVTYW1wbGUsIHJlbW90ZUlkZW50aWZpZXIgfSwgMCk7
CiAgICAgfTsKIH0KIApAQCAtMjExLDE1ICsyMjcsMjUgQEAgc3RhdGljIGlubGluZSB3ZWJydGM6
OlZpZGVvUm90YXRpb24gdG9XZWJSVENWaWRlb1JvdGF0aW9uKFdlYkNvcmU6Ok1lZGlhU2FtcGxl
OjoKIAogLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHRoaXMgZnVuY3Rpb24gYWNjZXNzZXMg
bV9lbmNvZGVycyB3aXRob3V0IGxvY2tpbmcuIFRoaXMgaXMgc2FmZSBiZWNhdXNlIHRoaXMgZnVu
Y3Rpb24gcnVucyBvbiB0aGUgbGliV2ViUlRDQ29kZWNzUXVldWUKIC8vIGFuZCBtX2VuY29kZXJz
IG9ubHkgZ2V0IG1vZGlmaWVkIG9uIHRoaXMgcXVldWUuCi12b2lkIExpYldlYlJUQ0NvZGVjc1By
b3h5OjplbmNvZGVGcmFtZShSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZW1vdGVWaWRlb1NhbXBsZSYmIHNhbXBsZSwgdWludDMyX3QgdGltZVN0YW1wLCBib29sIHNo
b3VsZEVuY29kZUFzS2V5RnJhbWUpCit2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjplbmNvZGVG
cmFtZShSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVWaWRl
b1NhbXBsZSYmIHNhbXBsZSwgdWludDMyX3QgdGltZVN0YW1wLCBib29sIHNob3VsZEVuY29kZUFz
S2V5RnJhbWUsIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2U+IHNh
bXBsZVJlZmVyZW5jZSkKIHsKKyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcGl4ZWxC
dWZmZXI7CisgICAgaWYgKHNhbXBsZVJlZmVyZW5jZSkgeworICAgICAgICBhdXRvIHNhbXBsZSA9
IG1fdmlkZW9GcmFtZU9iamVjdEhlYXAtPnJldGlyZShXVEZNb3ZlKCpzYW1wbGVSZWZlcmVuY2Up
LCAwX3MpOworICAgICAgICBpZiAoIXNhbXBsZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBhdXRvIHBsYXRmb3JtU2FtcGxlID0gc2FtcGxlLT5wbGF0Zm9ybVNhbXBsZSgpOworICAg
ICAgICBBU1NFUlQocGxhdGZvcm1TYW1wbGUudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBs
ZTo6Q01TYW1wbGVCdWZmZXJUeXBlKTsKKyAgICAgICAgcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2Fz
dDxDVlBpeGVsQnVmZmVyUmVmPihQQUw6OkNNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIocGxh
dGZvcm1TYW1wbGUuc2FtcGxlLmNtU2FtcGxlQnVmZmVyKSk7CisgICAgfQorCiAgICAgQVNTRVJU
KGZpbmRFbmNvZGVyV2l0aG91dExvY2soaWRlbnRpZmllcikpOwogICAgIGF1dG8qIGVuY29kZXIg
PSBmaW5kRW5jb2RlcldpdGhvdXRMb2NrKGlkZW50aWZpZXIpOwogICAgIGlmICghZW5jb2RlcikK
ICAgICAgICAgcmV0dXJuOwogCiAjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgIFJldGFp
blB0cjxDVlBpeGVsQnVmZmVyUmVmPiBwaXhlbEJ1ZmZlcjsKICAgICBpZiAoc2FtcGxlLnN1cmZh
Y2UoKSkgewogICAgICAgICBpZiAoYXV0byBidWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBpeGVs
QnVmZmVyKHNhbXBsZS5zdXJmYWNlKCkpKQogICAgICAgICAgICAgcGl4ZWxCdWZmZXIgPSBXVEZN
b3ZlKCpidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggNTFlOGEzN2Q3YWMyYjMyNDdiYTcwZDk0
MDRmMjI4MTNkNmVjYjFmZS4uNTk0YjgzZDVkOGViY2M4ZjEwYzRhNjBmNTQ0ZjhkMzkxNmU1Y2Fl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUg
IlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCiAjaW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZl
clN0b3JhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oPgpAQCAtNDIsNiArNDMsNyBAQAogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworc3RhdGljIGNvbnN0
ZXhwciBTZWNvbmRzIG1lZGlhUmVjb3JkZXJEZWZhdWx0VGltZW91dCB7IDFfcyB9OwogCiBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFSZWNvcmRlcj4gUmVtb3RlTWVkaWFSZWNvcmRlcjo6Y3Jl
YXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Ms
IE1lZGlhUmVjb3JkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgcmVjb3JkQXVkaW8sIGJv
b2wgcmVjb3JkVmlkZW8sIGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYgb3B0aW9u
cykKIHsKQEAgLTU1LDYgKzU3LDcgQEAgUmVtb3RlTWVkaWFSZWNvcmRlcjo6UmVtb3RlTWVkaWFS
ZWNvcmRlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW8KICAgICA6IG1f
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQogICAg
ICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX3dyaXRlcihXVEZNb3ZlKHdyaXRl
cikpCisgICAgLCBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MudmlkZW9GcmFtZU9iamVjdEhlYXAoKSkKIHsKICAgICBpZiAocmVjb3JkQXVkaW8pCiAgICAg
ICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWU8Q0FSaW5nQnVmZmVyPigpOwpAQCAtODYsMTAg
Kzg5LDE2IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6YXVkaW9TYW1wbGVzQXZhaWxhYmxl
KE1lZGlhVGltZSB0aW1lLCB1aW50NjRfdCBudW1iZXJPCiAgICAgbV93cml0ZXItPmFwcGVuZEF1
ZGlvU2FtcGxlQnVmZmVyKCptX2F1ZGlvQnVmZmVyTGlzdCwgbV9kZXNjcmlwdGlvbiwgdGltZSwg
bnVtYmVyT2ZGcmFtZXMpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2Ft
cGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtb3RlU2FtcGxlKQor
dm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpS
ZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW90ZVNhbXBsZSwgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRl
b0ZyYW1lUmVhZFJlZmVyZW5jZT4gc2FtcGxlUmVmZXJlbmNlKQogewogICAgIFJlZlB0cjxNZWRp
YVNhbXBsZT4gc2FtcGxlOwotICAgIGlmICghcmVtb3RlU2FtcGxlLnN1cmZhY2UoKSkgeworICAg
IGlmIChzYW1wbGVSZWZlcmVuY2UpIHsKKyAgICAgICAgc2FtcGxlID0gbV92aWRlb0ZyYW1lT2Jq
ZWN0SGVhcC0+cmV0aXJlKFdURk1vdmUoKnNhbXBsZVJlZmVyZW5jZSksIG1lZGlhUmVjb3JkZXJE
ZWZhdWx0VGltZW91dCk7CisgICAgICAgIGlmICghc2FtcGxlKSB7CisgICAgICAgICAgICBBU1NF
UlRfSVNfVEVTVElOR19JUEMoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
IH0gZWxzZSBpZiAoIXJlbW90ZVNhbXBsZS5zdXJmYWNlKCkpIHsKICAgICAgICAgYXV0byBwaXhl
bEJ1ZmZlciA9IG1fc2hhcmVkVmlkZW9GcmFtZVJlYWRlci5yZWFkKCk7CiAgICAgICAgIGlmICgh
cGl4ZWxCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCmluZGV4IGM2NjI5ZGJj
NmNhYmIzNmY2MWI3ZTQ2MjdkMWY1MDUwOTM3NjVhMDYuLjYwYjhkMDIxNGU3N2E1M2NjMDQ1YTBm
OWZlYjgxYTM5MDQ5ZDNkZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFt
ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlICJTaGFy
ZWRWaWRlb0ZyYW1lLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24uaD4KQEAgLTUyLDYgKzUzLDcgQEAgc3RydWN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9u
czsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OworY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CiBjbGFzcyBTaGFyZWRSaW5nQnVm
ZmVyU3RvcmFnZTsKIAogY2xhc3MgUmVtb3RlTWVkaWFSZWNvcmRlciA6IHByaXZhdGUgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIgewpAQCAtNzIsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6
TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBhdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChjb25z
dCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbiYsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKICAgICB2b2lkIGF1ZGlvU2Ft
cGxlc0F2YWlsYWJsZShNZWRpYVRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKLSAgICB2
b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYpOwor
ICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUm
Jiwgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZT4pOwogICAgIHZv
aWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYs
IGRvdWJsZSk+JiYpOwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgcGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
QEAgLTkwLDYgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
SW1hZ2VUcmFuc2ZlclNlc3Npb25WVD4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbjsKIAogICAgIFNo
YXJlZFZpZGVvRnJhbWVSZWFkZXIgbV9zaGFyZWRWaWRlb0ZyYW1lUmVhZGVyOworICAgIFJlZjxS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gbV92aWRlb0ZyYW1lT2JqZWN0SGVhcDsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbgppbmRleCBhY2FlZjhiOGM0MGRiZDVkN2Zi
OWI2Yzg4NDhmOWRhNDY4ODcxNDkzLi40OThmMjgxYWY4MDE4NzhlMDU0ZDMxZWU2ZWQyYjc5NzA4
YjkwZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBA
CiBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVJlY29yZGVyIE5vdFJlZkNvdW50ZWQgewogICAgIEF1
ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUg
c3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0
aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKICAgICBBdWRpb1NhbXBsZXNBdmFpbGFibGUo
TWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQotICAgIFZpZGVvU2FtcGxl
QXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSkKKyAgICBWaWRlb1Nh
bXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUsIHN0ZDo6b3B0
aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZT4gcmVtb3RlVmlkZW9G
cmFtZVJlYWRSZWZlcmVuY2UpCiAgICAgRmV0Y2hEYXRhKCkgLT4gKElQQzo6RGF0YVJlZmVyZW5j
ZSBidWZmZXIsIGRvdWJsZSB0aW1lQ29kZSkgQXN5bmMKICAgICBTdG9wUmVjb3JkaW5nKCkgLT4g
KCkgQXN5bmMKICAgICBQYXVzZSgpIC0+ICgpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5jcHAKaW5kZXggNzI0YThjOTZiN2U3ZTVlMGRiYWJhMDgyMzFiYjhiNzhmOWJiZjBj
MC4uZTZmYzY3N2M3MGNkMWQ3NDljNjk3ZDYyMWRlMTlhMzViZjI0ZWZhOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
IAorI2luY2x1ZGUgIklQQ1Rlc3Rlci5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZXMuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg+CkBAIC0zNSwxOCArMzcsMjIg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVZpZGVvU2FtcGxlLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgeworc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRUaW1lb3V0IHsgMV9zIH07
CisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyPiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNy
ZWF0ZShTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxJ
UEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI+IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3Jl
YXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb24sIFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4m
JiBjb25uZWN0aW9uKQogewotICAgIGF1dG8gbGF5ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPihuZXcgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyKGlkZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvbikpKTsKKyAgICBhdXRvIGxheWVyID0g
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4obmV3IFJlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihncHVDb25uZWN0aW9uLCBpZGVudGlmaWVyLCBXVEZN
b3ZlKGNvbm5lY3Rpb24pKSk7CiAgICAgcmV0dXJuIGxheWVyLT5tX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllciA/IFdURk1vdmUobGF5ZXIpIDogbnVsbHB0cjsKIH0KIAotUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVySWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9u
PiYmIGNvbm5lY3Rpb24pCi0gICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKK1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb24sIFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25u
ZWN0aW9uKQorICAgIDogbV9ncHVDb25uZWN0aW9uKGdwdUNvbm5lY3Rpb24pCisgICAgLCBtX2lk
ZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rp
b24pKQogICAgICwgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoTG9jYWxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OmNyZWF0ZSgqdGhpcykpCisgICAgLCBtX3ZpZGVvRnJhbWVPYmplY3RIZWFw
KG1fZ3B1Q29ubmVjdGlvbi52aWRlb0ZyYW1lT2JqZWN0SGVhcCgpKQogewogICAgIEFTU0VSVCht
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik7CiB9CkBAIC0xMTMsNyArMTE5LDIzIEBAIHZvaWQg
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpwYXVzZSgpCiAgICAgbV9zYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXItPnBhdXNlKCk7CiB9CiAKLXZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKFJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtb3RlU2FtcGxl
KQordm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoUmVt
b3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UmJiBzYW1wbGUpCit7CisgICAgYXV0byBtZWRpYVNh
bXBsZSA9IG1fdmlkZW9GcmFtZU9iamVjdEhlYXAtPnJldGlyZShXVEZNb3ZlKHNhbXBsZSksIGRl
ZmF1bHRUaW1lb3V0KTsKKyAgICBpZiAoIW1lZGlhU2FtcGxlKSB7CisgICAgICAgIC8vIEluIGNh
c2Ugb2YgR1BVUHJvY2VzcyBjcmFzaCwgd2UgbWlnaHQgZW5xdWV1ZSBwcmV2aW91cyBHUFVQcm9j
ZXNzIHNhbXBsZXMsIGlnbm9yZSB0aGVtLgorICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFT
U0VSVChpczxNZWRpYVNhbXBsZUFWRk9iakM+KG1lZGlhU2FtcGxlKSk7CisgICAgaWYgKCFpczxN
ZWRpYVNhbXBsZUFWRk9iakM+KG1lZGlhU2FtcGxlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byYgYXZmTWVkaWFTYW1wbGUgPSBkb3duY2FzdDxNZWRpYVNhbXBsZUFWRk9iakM+KCptZWRp
YVNhbXBsZSk7CisgICAgTWVkaWFTYW1wbGVBVkZPYmpDOjpzZXRBc0Rpc3BsYXlJbW1lZGlhdGVs
eShhdmZNZWRpYVNhbXBsZSk7CisgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPmVucXVl
dWVTYW1wbGUoYXZmTWVkaWFTYW1wbGUpOworfQorCit2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZUNWKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYg
cmVtb3RlU2FtcGxlKQogewogICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gc2FtcGxlOwogICAgIGlm
ICghcmVtb3RlU2FtcGxlLnN1cmZhY2UoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmgKaW5kZXggNzI1YjNkMjZiNzFjNzg4NmRjNDg4ODI3ZDBhNmY3ZDI1MmFhN2EwZC4uODAyYzkw
ZmU5ZWI2NjRiYTkzMjFkN2E4YmRlNWQ5ODRmNDAzZjFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5oCkBAIC0zMCwxMCArMzAsMTIgQEAKICNpbmNsdWRlICJMYXllckhvc3RpbmdD
b250ZXh0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVNlbmRlci5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNo
YXJlZFZpZGVvRnJhbWUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFk
QXNzZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbWFnZVRyYW5zZmVy
U2Vzc2lvblZUOwpAQCAtNDIsMTEgKzQ0LDEzIEBAIGNsYXNzIFJlbW90ZVZpZGVvU2FtcGxlOwog
fTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OworY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CiAKIGNsYXNzIFJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllciA6IHB1YmxpYyBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI6OkNsaWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6
TWVzc2FnZVNlbmRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+
IGNyZWF0ZShTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25u
ZWN0aW9uPiYmKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcj4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKICAg
ICB+UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKCk7CiAKICAgICB1c2luZyBXZWJDb3Jl
OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNsaWVudDo6d2Vha1B0ckZhY3Rvcnk7CkBAIC02
MSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBDR1JlY3QgYm91bmRzKCkgY29uc3Q7CiAgICAgCiBw
cml2YXRlOgotICAgIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKKyAgICBSZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYp
OwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdm9pZCBzZXRMb2dJZGVudGlmaWVy
KFN0cmluZyYmKTsKQEAgLTczLDcgKzc3LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGZsdXNoQW5k
UmVtb3ZlSW1hZ2UoKTsKICAgICB2b2lkIHBsYXkoKTsKICAgICB2b2lkIHBhdXNlKCk7Ci0gICAg
dm9pZCBlbnF1ZXVlU2FtcGxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYpOworICAgIHZv
aWQgZW5xdWV1ZVNhbXBsZShSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSYmKTsKKyAgICB2
b2lkIGVucXVldWVTYW1wbGVDVihXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmKTsKICAgICB2
b2lkIGNsZWFyRW5xdWV1ZWRTYW1wbGVzKCk7CiAgICAgdm9pZCBzZXRTaGFyZWRWaWRlb0ZyYW1l
U2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYpOwogICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9GcmFt
ZU1lbW9yeShjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpOwpAQCAtODUsMTIgKzkwLDE2
IEBAIHByaXZhdGU6CiAgICAgLy8gV2ViQ29yZTo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpD
bGllbnQKICAgICB2b2lkIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllclN0YXR1c0RpZEZhaWwoKSBm
aW5hbDsKIAorICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlvbiBX
VEZfR1VBUkRFRF9CWV9MT0NLKG1fY29uc3VtZVRocmVhZCk7CiAgICAgU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgUmVmPElQQzo6Q29ubmVjdGlv
bj4gbV9jb25uZWN0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZVRyYW5z
ZmVyU2Vzc2lvblZUPiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1f
bGF5ZXJIb3N0aW5nQ29udGV4dDsKICAgICBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyIG1fc2hhcmVk
VmlkZW9GcmFtZVJlYWRlcjsKKyAgICBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1f
dmlkZW9GcmFtZU9iamVjdEhlYXA7CisgICAgVGhyZWFkQXNzZXJ0aW9uIG1fY29uc3VtZVRocmVh
ZCBOT19VTklRVUVfQUREUkVTUzsKKwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgppbmRleCBlNTA0ODMxNDFlZmVmYWZiNDNkY2E2MDhj
ZGMzN2Q2MjE2ZjdlY2RmLi4zY2ExZjkzMjcwNzI3ZGUwYzJiNzU0NDdhYjg5YjY0NjMyYWJhNzE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgpA
QCAtMzIsNyArMzIsOCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgVXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0IGJv
dW5kcywgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24pCiAgICAg
Rmx1c2goKQogICAgIEZsdXNoQW5kUmVtb3ZlSW1hZ2UoKQotICAgIEVucXVldWVTYW1wbGUoV2Vi
Q29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxlKQorICAgIEVucXVldWVTYW1wbGUoV2ViS2l0
OjpSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSBzYW1wbGUpCisgICAgRW5xdWV1ZVNhbXBs
ZUNWKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSkKICAgICBDbGVhckVucXVldWVk
U2FtcGxlcygpCiAgICAgUGxheSgpCiAgICAgUGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKaW5kZXggYTU0NDVkN2ZkNWNjYmI1YWQwMGNkZWNl
YzVkMDNmNjMzNGI1ZDE1MS4uNzZlNzk5YzM1YWYyZWRkMjM2NmQ3Y2FjZGQzZTVlNzE5NzVjNTZk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCkBA
IC04MSw3ICs4MSw3IEBAIGJvb2wgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
cjo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29uCiB2b2lkIFJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OmNyZWF0ZUxheWVyKFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBoaWRlUm9vdExheWVyLCBXZWJDb3Jl
OjpJbnRTaXplIHNpemUsIExheWVyQ3JlYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAg
IGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
aWRlbnRpZmllciwgaGlkZVJvb3RMYXllciwgc2l6ZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBsYXllciA9IFJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcjo6Y3JlYXRlKGlkZW50aWZpZXIsIG1fY29ubmVjdGlvbi5jb3B5UmVmKCkp
OworICAgICAgICBhdXRvIGxheWVyID0gUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpj
cmVhdGUobV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBpZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24u
Y29weVJlZigpKTsKICAgICAgICAgYXV0byYgbGF5ZXJSZWZlcmVuY2UgPSAqbGF5ZXI7CiAgICAg
ICAgIGxheWVyUmVmZXJlbmNlLmluaXRpYWxpemUoaGlkZVJvb3RMYXllciwgc2l6ZSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBpZGVudGlmaWVyLCBsYXllciA9IFdURk1vdmUobGF5ZXIpXShhdXRvIGxheWVySWQpIG11
dGFibGUgewogICAgICAgICAgICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IGlkZW50aWZpZXIsIGxheWVyID0gV1RGTW92ZShsYXllciksIGxheWVySWQgPSBXVEZNb3ZlKGxh
eWVySWQpXSgpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKaW5kZXggNzU4ZDUwNTU2ZmYyZjZlNDczNzdkMTRlODI2NmJjNWUzZWFjNDFhNi4uMjI0YmZm
ZjZmOGU2YmJmMDA3YTI2NTUwYzMxNDhkZDMzNTNlYTEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0zNDcsNiArMzQ3LDkgQEAgZGVmIHR5cGVzX3RoYXRf
Y2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVNZWRpYVJl
c291cmNlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZU1lZGlhU291cmNlSWRl
bnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyJywK
KyAgICAgICAgJ1dlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJywKKyAgICAg
ICAgJ1dlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UnLAogICAgICAgICAnV2Vi
S2l0OjpSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YktpdDo6UmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyJywKQEAgLTg4Myw2ICs4ODYsOCBAQCBkZWYgaGVhZGVy
c19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYktpdDo6UGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbic6IFsnIlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25XZWJLaXQuaCInXSwKICAgICAgICAg
J1dlYktpdDo6UGF5bWVudFNldHVwRmVhdHVyZXMnOiBbJyJBcHBsZVBheVBheW1lbnRTZXR1cEZl
YXR1cmVzV2ViS2l0LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OlJlc3BlY3RTZWxlY3Rpb25BbmNo
b3InOiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlVmlkZW9G
cmFtZVJlYWRSZWZlcmVuY2UnOiBbJyJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIiddLAor
ICAgICAgICAnV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UnOiBbJyJSZW1v
dGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIiddLAogICAgICAgICAnV2ViS2l0OjpTZWxlY3Rpb25G
bGFncyc6IFsnIkdlc3R1cmVUeXBlcy5oIiddLAogICAgICAgICAnV2ViS2l0OjpTZWxlY3Rpb25U
b3VjaCc6IFsnIkdlc3R1cmVUeXBlcy5oIiddLAogICAgICAgICAnV2ViS2l0OjpUYXBJZGVudGlm
aWVyJzogWyciSWRlbnRpZmllclR5cGVzLmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9JUENUZXN0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmNw
cAppbmRleCBiYWJhMGIwODg3N2M0NzJhNTA3MWZmM2FhM2Q4ODAxMDJmNTdjODlhLi5hOGQyNTdl
YzY3MzVmMTBkYTU5NTQ4MzAwY2U2ZmUzZjJjZGY5YmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9JUENUZXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rl
c3Rlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiRGVjb2Rlci5oIgogCisjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPGRsZmNuLmg+
CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KQEAgLTQ4LDYgKzQ5LDgg
QEAgc3RydWN0IFNlbmRNZXNzYWdlQ29udGV4dCB7CiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uOwogICAgIHN0ZDo6YXRvbWljPGJvb2w+JiBzaG91bGRTdG9wOwogfTsKKworc3RhdGlj
IHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBvbmdvaW5nSVBDVGVzdHMgeyAwIH07CiB9CiAKIGV4dGVy
biAiQyIgewpAQCAtMTE1LDcgKzExOCw5IEBAIHZvaWQgSVBDVGVzdGVyOjpzdGFydE1lc3NhZ2VU
ZXN0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RyaW5nJiYgZHJpdmVyCiAgICAg
aWYgKCFtX3Rlc3RRdWV1ZSkKICAgICAgICAgbV90ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0
ZSgiSVBDIHRlc3Rpbmcgd29yayBxdWV1ZSIpOwogICAgIG1fdGVzdFF1ZXVlLT5kaXNwYXRjaChb
Y29ubmVjdGlvbiA9IFJlZiB7IGNvbm5lY3Rpb24gfSwgJnNob3VsZFN0b3AgPSBtX3Nob3VsZFN0
b3AsIGRyaXZlck5hbWUgPSBXVEZNb3ZlKGRyaXZlck5hbWUpXSgpIG11dGFibGUgeworICAgICAg
ICBvbmdvaW5nSVBDVGVzdHMrKzsKICAgICAgICAgcnVuTWVzc2FnZVRlc3RpbmcoY29ubmVjdGlv
biwgc2hvdWxkU3RvcCwgV1RGTW92ZShkcml2ZXJOYW1lKSk7CisgICAgICAgIG9uZ29pbmdJUENU
ZXN0cy0tOwogICAgIH0pOwogfQogCkBAIC0xMzQsNiArMTM5LDExIEBAIHZvaWQgSVBDVGVzdGVy
OjpzdG9wSWZOZWVkZWQoKQogICAgIH0KIH0KIAorYm9vbCBpc1Rlc3RpbmdJUEMoKQoreworICAg
IHJldHVybiBvbmdvaW5nSVBDVGVzdHM7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQ
Q1Rlc3Rlci5oCmluZGV4IDQ0OTkwOTM1YmQ1NTFkNGVlYjU4MzU0M2UxMmVjZmQzYjg0NzE4NWUu
LmVhNDkzMzU2ZDQzOTJjM2ZhN2I1ZjdmNWUyYjU2NGY2NTMzMjdmZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0lQQ1Rlc3Rlci5oCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5B
QkxFKElQQ19URVNUSU5HX0FQSSkKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2lu
Y2x1ZGUgPGF0b21pYz4KQEAgLTMzLDYgKzMyLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CisjZGVmaW5lIEFTU0VSVF9JU19URVNUSU5HX0lQQygpIEFTU0VSVChpc1Rlc3RpbmdJUEMoKSwg
IlVudHJ1c3RlZCBjb25uZWN0aW9uIHNlbnQgaW52YWxpZCBkYXRhLiBTaG91bGQgb25seSBoYXBw
ZW4gd2hlbiB0ZXN0aW5nIElQQy4iKQorCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKwor
Ly8gRnVuY3Rpb24gdG8gY2hlY2sgd2hlbiBhc3NlcnRpbmcgSVBDLXJlbGF0ZWQgZmFpbHVyZXMs
IHNvIHRoYXQgSVBDIHRlc3Rpbmcgc2tpcHMgdGhlIGFzc2VydGlvbnMKKy8vIGFuZCBleHBvc2Vz
IGJ1Z3MgdW5kZXJuZWF0aC4KK2Jvb2wgaXNUZXN0aW5nSVBDKCk7CisKIGNsYXNzIElQQ1Rlc3Rl
ciBmaW5hbCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgSVBD
VGVzdGVyKCk7CkBAIC01Miw2ICs1OSwxMyBAQCBwcml2YXRlOgogICAgIHN0ZDo6YXRvbWljPGJv
b2w+IG1fc2hvdWxkU3RvcCB7IGZhbHNlIH07CiB9OwogCisjZWxzZQorCitjb25zdGV4cHIgaW5s
aW5lIGJvb2wgaXNUZXN0aW5nSVBDKCkKK3sKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKICNlbmRp
ZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9PYmplY3RJZGVudGlmaWVy
UmVmZXJlbmNlVHJhY2tlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvT2JqZWN0SWRlbnRpZmll
clJlZmVyZW5jZVRyYWNrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTI1N2Q4NDI1YmEwNDM2ZDQ3MzlhOThj
NDVlOTIzYTNmMjkxNzhkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIuaApAQCAtMCwwICsxLDIyNiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorI2luY2x1
ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRz
Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCisvLyBUeXBlIGZvciB0aGUga2V5IGluIG1hcHBpbmcgZnJvbSBvYmplY3QgaWRlbnRpZmll
ciByZWZlcmVuY2VzIHRvIG9iamVjdCBzdGF0ZS4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFz
cyBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlIHsKK3B1YmxpYzoKKyAgICBPYmplY3RJZGVudGlm
aWVyUmVmZXJlbmNlKCkgPSBkZWZhdWx0OworICAgIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2Uo
VCBpZGVudGlmaWVyLCB1aW50NjRfdCB2ZXJzaW9uKQorICAgICAgICA6IG1faWRlbnRpZmllcihp
ZGVudGlmaWVyKQorICAgICAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQorICAgIHsKKyAgICB9Cisg
ICAgZXhwbGljaXQgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZShXVEY6Okhhc2hUYWJsZURlbGV0
ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogbV9pZGVudGlmaWVyKFdURjo6SGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKQorICAgIHsKKyAgICB9CisgICAgVCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV9pZGVudGlmaWVyOyB9CisgICAgdWludDY0X3QgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1f
dmVyc2lvbjsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPYmplY3RJZGVudGlmaWVyUmVm
ZXJlbmNlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvdGhlci5tX2lkZW50
aWZpZXIgPT0gbV9pZGVudGlmaWVyICYmIG90aGVyLm1fdmVyc2lvbiA9PSBtX3ZlcnNpb247Cisg
ICAgfQorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1faWRlbnRpZmllci5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOworICAg
IH0KK3ByaXZhdGU6CisgICAgVCBtX2lkZW50aWZpZXI7CisgICAgdWludDY0X3QgbV92ZXJzaW9u
IHsgMCB9OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBPYmplY3RJZGVudGlm
aWVyUmVhZFJlZmVyZW5jZSB7CitwdWJsaWM6CisgICAgT2JqZWN0SWRlbnRpZmllclJlYWRSZWZl
cmVuY2UoVCBpZGVudGlmaWVyLCB1aW50NjRfdCB2ZXJzaW9uKQorICAgICAgICA6IG1faWRlbnRp
ZmllcihpZGVudGlmaWVyKQorICAgICAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQorICAgIHsKKyAg
ICB9CisgICAgVCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9Cisg
ICAgdWludDY0X3QgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsgfQorICAgIE9i
amVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4gcmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4geyBt
X2lkZW50aWZpZXIsIG1fdmVyc2lvbiB9OyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
ZW5jb2RlciA8PCBtX2lkZW50aWZpZXI7CisgICAgICAgIGVuY29kZXIgPDwgbV92ZXJzaW9uOwor
ICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPFQ+IGlkZW50aWZpZXI7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHZlcnNpb247CisgICAgICAgIGRlY29kZXIgPj4gaWRlbnRp
ZmllcgorICAgICAgICAgICAgPj4gdmVyc2lvbjsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmlzVmFs
aWQoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBP
YmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZSB7IFdURk1vdmUoKmlkZW50aWZpZXIpLCAqdmVy
c2lvbiB9OworICAgIH0KKworcHJpdmF0ZToKKyAgICBUIG1faWRlbnRpZmllcjsKKyAgICB1aW50
NjRfdCBtX3ZlcnNpb24geyAwIH07Cit9OworCisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFz
cyBPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UgeworcHVibGljOgorICAgIE9iamVjdElk
ZW50aWZpZXJXcml0ZVJlZmVyZW5jZShUIGlkZW50aWZpZXIsIHVpbnQ2NF90IHZlcnNpb24sIHVp
bnQ2NF90IHBlbmRpbmdSZWFkcykKKyAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikK
KyAgICAgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKKyAgICAgICAgLCBtX3BlbmRpbmdSZWFkcyhw
ZW5kaW5nUmVhZHMpCisgICAgeworICAgIH0KKyAgICBUIGlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICB1aW50NjRfdCB2ZXJzaW9uKCkgY29uc3QgeyByZXR1
cm4gbV92ZXJzaW9uOyB9CisgICAgdWludDY0X3QgcGVuZGluZ1JlYWRzKCkgY29uc3QgeyByZXR1
cm4gbV9wZW5kaW5nUmVhZHM7IH0KKyAgICBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+IHJl
ZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIHsgbV9pZGVudGlmaWVyLCBtX3ZlcnNpb24gfTsgfQor
ICAgIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4gcmV0aXJlKCkgY29uc3QgJiYgeyByZXR1
cm4geyBtX2lkZW50aWZpZXIsIG1fdmVyc2lvbiArIDEgfTsgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7
CisgICAgICAgIGVuY29kZXIgPDwgbV9pZGVudGlmaWVyOworICAgICAgICBlbmNvZGVyIDw8IG1f
dmVyc2lvbjsKKyAgICAgICAgZW5jb2RlciA8PCBtX3BlbmRpbmdSZWFkczsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxPYmplY3RJ
ZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxUPiBpZGVudGlmaWVyOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiB2ZXJzaW9uOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBw
ZW5kaW5nUmVhZHM7CisKKyAgICAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyCisgICAgICAgICAg
ICA+PiB2ZXJzaW9uCisgICAgICAgICAgICA+PiBwZW5kaW5nUmVhZHM7CisgICAgICAgIGlmICgh
ZGVjb2Rlci5pc1ZhbGlkKCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlIHsgV1RGTW92ZSgqaWRl
bnRpZmllciksICp2ZXJzaW9uLCAqcGVuZGluZ1JlYWRzIH07CisgICAgfQorCitwcml2YXRlOgor
ICAgIFQgbV9pZGVudGlmaWVyOworICAgIHVpbnQ2NF90IG1fdmVyc2lvbiB7IDAgfTsKKyAgICB1
aW50NjRfdCBtX3BlbmRpbmdSZWFkcyB7IDAgfTsKK307CisKKy8vIENsYXNzIHRvIGdlbmVyYXRl
IHJlYWQgYW5kIHdyaXRlIHJlZmVyZW5jZXMgdG8gYW4gT2JqZWN0SWRlbnRpZmVyLgordGVtcGxh
dGU8dHlwZW5hbWUgVD4KK2NsYXNzIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyIHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tl
cik7CitwdWJsaWM6CisgICAgdXNpbmcgUmVhZFJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJS
ZWFkUmVmZXJlbmNlPFQ+OworICAgIHVzaW5nIFdyaXRlUmVmZXJlbmNlID0gT2JqZWN0SWRlbnRp
ZmllcldyaXRlUmVmZXJlbmNlPFQ+OworICAgIHVzaW5nIFJlZmVyZW5jZSA9IE9iamVjdElkZW50
aWZpZXJSZWZlcmVuY2U8VD47CisKKyAgICBleHBsaWNpdCBPYmplY3RJZGVudGlmaWVyUmVmZXJl
bmNlVHJhY2tlcihUIGlkZW50aWZpZXIpCisgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCisgICAgeworICAgIH0KKyAgICAvLyBUaHJlYWQgc2FmZS4KKyAgICBSZWFkUmVmZXJlbmNl
IHJlYWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgbV9wZW5kaW5nUmVhZHMrKzsKKyAgICAgICAg
cmV0dXJuIHsgbV9pZGVudGlmaWVyLCBtX3ZlcnNpb24gfTsKKyAgICB9CisgICAgLy8gTm90IHRo
cmVhZCBzYWZlLiBDbGllbnQgbXVzdCBjb29yZGluYXRlIHdyaXRlcyBhbmQgcmVhZHMgYW55d2F5
LgorICAgIFdyaXRlUmVmZXJlbmNlIHdyaXRlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biB7IG1faWRlbnRpZmllciwgbV92ZXJzaW9uKyssIG1fcGVuZGluZ1JlYWRzLmV4Y2hhbmdlKDAp
IH07CisgICAgfQorICAgIFQgaWRlbnRpZmllcigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9pZGVudGlmaWVyOworICAgIH0KK3ByaXZhdGU6CisgICAgY29uc3QgVCBtX2lkZW50aWZp
ZXI7CisgICAgbXV0YWJsZSBzdGQ6OmF0b21pYzx1aW50NjRfdD4gbV9wZW5kaW5nUmVhZHMgeyAw
IH07CisgICAgbXV0YWJsZSB1aW50NjRfdCBtX3ZlcnNpb24geyAwIH07Cit9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIE9iamVjdElkZW50
aWZpZXJSZWZlcmVuY2U8VD4gcmVmZXJlbmNlKQoreworICAgIGFkZChoYXNoZXIsIHJlZmVyZW5j
ZS5pZGVudGlmaWVyKCkpOworICAgIGFkZChoYXNoZXIsIHJlZmVyZW5jZS52ZXJzaW9uKCkpOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+JiByZWZl
cmVuY2UpCit7CisgICAgdHMgPDwgIk9iamVjdElkZW50aWZpZXJSZWZlcmVuY2UoIiA8PCByZWZl
cmVuY2UuaWRlbnRpZmllcigpIDw8ICIsICIgPDwgcmVmZXJlbmNlLnZlcnNpb24oKSA8PCAiKSI7
CisgICAgcmV0dXJuIHRzOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgV2ViS2l0OjpPYmplY3RJZGVudGlmaWVy
UmVhZFJlZmVyZW5jZTxUPiYgcmVmZXJlbmNlKQoreworICAgIHRzIDw8ICJPYmplY3RJZGVudGlm
aWVyUmVhZFJlZmVyZW5jZSgiIDw8IHJlZmVyZW5jZS5pZGVudGlmaWVyKCkgPDwgIiwgIiA8PCBy
ZWZlcmVuY2UudmVyc2lvbigpIDw8ICIpIjsKKyAgICByZXR1cm4gdHM7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTxUPiYgcmVmZXJlbmNlKQor
eworICAgIHRzIDw8ICJPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UoIiA8PCByZWZlcmVu
Y2UuaWRlbnRpZmllcigpIDw8ICIsICIgPDwgcmVmZXJlbmNlLnZlcnNpb24oKSA8PCAiLCAiIDw8
IHJlZmVyZW5jZS5wZW5kaW5nUmVhZHMoKSA8PCAiKSI7CisgICAgcmV0dXJuIHRzOworfQorCit9
CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRy
YWl0czxXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4+IDogU2ltcGxlQ2xhc3NI
YXNoVHJhaXRzPFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPj4geworICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gSGFzaFRyYWl0czxUPjo6ZW1w
dHlWYWx1ZUlzWmVybzsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0
SGFzaDxXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4+IHsKKyAgICBzdGF0aWMg
dW5zaWduZWQgaGFzaChjb25zdCBXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4m
IHJlZmVyZW5jZSkKKyAgICB7CisgICAgICAgIHJldHVybiBjb21wdXRlSGFzaChyZWZlcmVuY2Up
OworICAgIH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJLaXQ6Ok9iamVjdElkZW50
aWZpZXJSZWZlcmVuY2U8VD4mIGEsIGNvbnN0IFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVy
ZW5jZTxUPiYgYikKKyAgICB7CisgICAgICAgIHJldHVybiBhID09IGI7CisgICAgfQorICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IERlZmF1
bHRIYXNoPFQ+OjpzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZDsKK307CisKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UaHJlYWRTYWZlT2JqZWN0SGVh
cC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGhyZWFkU2FmZU9iamVjdEhlYXAuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yNTUwNjRjMGQ4YjQ2OTgyM2M5ZmMzZTcwNjM1MWUyMGFhYTZlY2JkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGhyZWFkU2FmZU9iamVjdEhlYXAuaApAQCAt
MCwwICsxLDIwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIklQQ1Rlc3Rlci5o
IgorI2luY2x1ZGUgIk9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyLmgiCisjaW5jbHVk
ZSA8d3RmL0NvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8g
Q29udGFpbmVyIHRoYXQgaG9sZHMgaWRlbnRpZmllciAtPiBvYmplY3QgbWFwcGluZyBiZXR3ZWVu
IHR3byBwcm9jZXNzZXMuCisvLyBVc2VkIGluIHNjZW5hcmlvcyB3aGVyZSB0aGUgaG9sZGVyIHBy
b2Nlc3MgcHJvY2Vzc2VzIG1lc3NhZ2VzIHdpdGggdGhlIG9iamVjdCByZWZlcmVuY2VzIGluIG11
bHRpcGxlCisvLyB0aHJlYWRzLiBgVGhyZWFkU2FmZU9iamVjdEhlYXBgIHRyYWNrcyB0aGUgcmVh
ZCBhbmQgd3JpdGUgcmVmZXJlbmNlcyB0byB0aGUgY29udGVudCBwb2ludGVkCisvLyBieSBhIHBh
cnRpY3VsYXIgaWRlbnRpZmllci4KKy8vIFBlbmRpbmcgcmVhZHMgbWF5IGJsb2NrIG5ldyB3cml0
ZXMuIEFsdGVybmF0aXZlbHkgbmV3IHdyaXRlcyBjYW4gc2tpcCBhaGVhZCBvZiB0aGUgcmVhZHMs
CisvLyBmb3IgZXhhbXBsZSBpbiBjb3B5LW9uLXdyaXRlIHNjZW5hcmlvcy4KKy8vIFBlbmRpbmcg
d3JpdGVzIGJsb2NrIHJlYWRzLgorLy8gQ3VycmVudGx5IGltcGxlbWVudGVkIG9ubHkgZm9yIHJl
YWQtb25seSAoY3JlYXRlLXJlYWQtZGVzdHJveSkgb3IgY29weS1vbi13cml0ZSB0eXBlcywKKy8v
IGUuZy4gbm8gdHdvLXBoYXNlIGdldCgpIG9wZXJhdGlvbnMgYXJlIG5vdCBpbXBsZW1lbnRlZCB5
ZXQuCit0ZW1wbGF0ZTx0eXBlbmFtZSBJZGVudGlmaWVyLCB0eXBlbmFtZSBIZWxkVHlwZT4KK2Ns
YXNzIFRocmVhZFNhZmVPYmplY3RIZWFwIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRo
cmVhZFNhZmVPYmplY3RIZWFwPElkZW50aWZpZXIsIEhlbGRUeXBlPj4geworcHVibGljOgorICAg
IHVzaW5nIFJlYWRSZWZlcmVuY2UgPSB0eXBlbmFtZSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNl
VHJhY2tlcjxJZGVudGlmaWVyPjo6UmVhZFJlZmVyZW5jZTsKKyAgICB1c2luZyBXcml0ZVJlZmVy
ZW5jZSA9IHR5cGVuYW1lIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyPElkZW50aWZp
ZXI+OjpXcml0ZVJlZmVyZW5jZTsKKyAgICB1c2luZyBSZWZlcmVuY2UgPSB0eXBlbmFtZSBPYmpl
Y3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcjxJZGVudGlmaWVyPjo6UmVmZXJlbmNlOworCisg
ICAgdm9pZCBhZGQoSWRlbnRpZmllciwgSGVsZFR5cGUmJik7CisKKyAgICAvLyBXYWl0cyB1bnRp
bCBhIHdyaXRlIGNyZWF0ZXMgdGhlIHJlZmVyZW5jZSBhbmQgdGhlbiByZXRpcmVzIHRoZSByZWFk
IG9yCisgICAgLy8gdGltZXMgb3V0LgorICAgIEhlbGRUeXBlIHJldGlyZShSZWFkUmVmZXJlbmNl
JiYsIElQQzo6VGltZW91dCk7CisKKyAgICAvLyBJbnNlcnRzIGEgbmV3IHZlcnNpb24gb2YgdGhl
IG9iamVjdCBvciByZW1vdmVzIGFuIG9sZCBvbmUgYW5kIHRoZW4gcmV0aXJlcyB0aGUgd3JpdGUg
b3IKKyAgICAvLyB0aW1lcyBvdXQuCisgICAgLy8gSWYgdGltZW91dCBpcyBwYXNzZWQsIHdhaXRz
IHVudGlsIHBlbmRpbmcgcmVhZHMgYXJlIGRvbmUuCisgICAgLy8gSXQgaXMgYSBjYWxsZXIgZXJy
b3IgdG8gbm90IHdhaXQgYW5kIG11dGF0ZSB0aGUgb2xkIG9iamVjdC4KKyAgICB2b2lkIHJldGly
ZShXcml0ZVJlZmVyZW5jZSYmLCBzdGQ6Om9wdGlvbmFsPEhlbGRUeXBlPiYmIG5ld09iamVjdCwg
c3RkOjpvcHRpb25hbDxJUEM6OlRpbWVvdXQ+KTsKKworICAgIHZvaWQgcmV0aXJlUmVtb3ZlKFdy
aXRlUmVmZXJlbmNlJiYpOworCisgICAgdm9pZCBjbGVhcigpOworcHJpdmF0ZToKKyAgICBMb2Nr
IG1fb2JqZWN0c0xvY2s7CisgICAgQ29uZGl0aW9uIG1fb2JqZWN0c0NvbmRpdGlvbjsKKyAgICBz
dHJ1Y3QgUmVmZXJlbmNlU3RhdGUgeworICAgICAgICB1aW50NjRfdCByZXRpcmVkUmVhZHMgeyAw
IH07CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbmFsUmVhZDsgLy8gUmVtb3Zl
IGFmdGVyIGBmaW5hbFJlYWRgIHJlYWRzLgorICAgICAgICBzdGQ6Om9wdGlvbmFsPEhlbGRUeXBl
PiBvYmplY3Q7IC8vIE9iamVjdCBvciB0b21ic3RvbmUuCisKKyAgICAgICAgUmVmZXJlbmNlU3Rh
dGUoKSA9IGRlZmF1bHQ7CisgICAgICAgIGV4cGxpY2l0IFJlZmVyZW5jZVN0YXRlKEhlbGRUeXBl
JiYgb2JqZWN0KQorICAgICAgICAgICAgOiBvYmplY3QoV1RGTW92ZShvYmplY3QpKQorICAgICAg
ICB7CisgICAgICAgIH0KKyAgICAgICAgLy8gVG9tYnN0b25lIGNvbnN0cnVjdG9yLgorICAgICAg
ICBleHBsaWNpdCBSZWZlcmVuY2VTdGF0ZSh1aW50NjRfdCBmaW5hbFJlYWQpCisgICAgICAgICAg
ICA6IGZpbmFsUmVhZChmaW5hbFJlYWQpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgIH07Cisg
ICAgSGFzaE1hcDxSZWZlcmVuY2UsIFJlZmVyZW5jZVN0YXRlPiBtX29iamVjdHMgV1RGX0dVQVJE
RURfQllfTE9DSyhtX29iamVjdHNMb2NrKTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIElkZW50
aWZpZXIsIHR5cGVuYW1lIEhlbGRUeXBlPgorSGVsZFR5cGUgVGhyZWFkU2FmZU9iamVjdEhlYXA8
SWRlbnRpZmllciwgSGVsZFR5cGU+OjpyZXRpcmUoUmVhZFJlZmVyZW5jZSYmIHJlYWQsIElQQzo6
VGltZW91dCB0aW1lb3V0KQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX29iamVjdHNMb2NrIH07
CisgICAgZG8geworICAgICAgICBhdXRvIGl0ID0gbV9vYmplY3RzLmZpbmQocmVhZC5yZWZlcmVu
Y2UoKSk7CisgICAgICAgIGlmIChpdCAhPSBtX29iamVjdHMuZW5kKCkpIHsKKyAgICAgICAgICAg
IGF1dG8mIHN0YXRlID0gaXQtPnZhbHVlOworICAgICAgICAgICAgaWYgKHN0YXRlLm9iamVjdCkg
eworICAgICAgICAgICAgICAgIEhlbGRUeXBlIHJlc3VsdCA9ICpzdGF0ZS5vYmplY3Q7CisgICAg
ICAgICAgICAgICAgc3RhdGUucmV0aXJlZFJlYWRzKys7CisgICAgICAgICAgICAgICAgaWYgKHN0
YXRlLmZpbmFsUmVhZCkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3RhdGUuZmluYWxS
ZWFkID49IHN0YXRlLnJldGlyZWRSZWFkcyk7IC8vIFRydXN0ZWQgYXNzZXJ0IGJlY2F1c2UgdGhp
cyBpcyBlbnN1cmVkIG9uIGBmaW5hbFJlYWRgIGFzc2lnbm1lbnQuCisgICAgICAgICAgICAgICAg
ICAgIGlmIChzdGF0ZS5maW5hbFJlYWQgPT0gc3RhdGUucmV0aXJlZFJlYWRzKQorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9vYmplY3RzLnJlbW92ZShpdCk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIG1fb2JqZWN0c0NvbmRpdGlvbi5ub3RpZnlBbGwoKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGlmICghbV9vYmplY3RzQ29uZGl0aW9uLndhaXRVbnRpbChtX29iamVjdHNMb2NrLCB0aW1lb3V0
LmRlYWRsaW5lKCkpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfSB3aGlsZSAodHJ1ZSk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIElkZW50aWZpZXIsIHR5
cGVuYW1lIEhlbGRUeXBlPgordm9pZCBUaHJlYWRTYWZlT2JqZWN0SGVhcDxJZGVudGlmaWVyLCBI
ZWxkVHlwZT46OnJldGlyZShXcml0ZVJlZmVyZW5jZSYmIHdyaXRlLCBzdGQ6Om9wdGlvbmFsPEhl
bGRUeXBlPiYmIG9iamVjdCwgc3RkOjpvcHRpb25hbDxJUEM6OlRpbWVvdXQ+IHRpbWVvdXQpCit7
CisgICAgY29uc3QgYm9vbCB3YWl0Rm9yUGVuZGluZ1JlYWRzID0gdGltZW91dC5oYXNfdmFsdWUo
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9vYmplY3RzTG9jayB9OworICAgIGRvIHsKKyAgICAg
ICAgYXV0byBpdCA9IG1fb2JqZWN0cy5maW5kKHdyaXRlLnJlZmVyZW5jZSgpKTsKKyAgICAgICAg
aWYgKGl0ICE9IG1fb2JqZWN0cy5lbmQoKSkgeworICAgICAgICAgICAgYXV0byYgc3RhdGUgPSBp
dC0+dmFsdWU7CisgICAgICAgICAgICBpZiAoc3RhdGUuZmluYWxSZWFkICYmIHN0YXRlLm9iamVj
dCkgeworICAgICAgICAgICAgICAgIC8vIFdyaXRlIHJlcGxheTogYGZpbmFsUmVhZGAgaXMgYXNz
aWduZWQgb24gd3JpdGUuIENhbm5vdCBoYXZlIHRoZSBzYW1lIHZlcnNpb24gd2l0aCB3cml0ZXMu
CisgICAgICAgICAgICAgICAgQVNTRVJUX0lTX1RFU1RJTkdfSVBDKCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN0YXRlLnJldGlyZWRS
ZWFkcyA+IHdyaXRlLnBlbmRpbmdSZWFkcygpKSB7CisgICAgICAgICAgICAgICAgLy8gV3JpdGUg
dW5kZXJmbG93OiBtb3JlIHJlYWRzIGhhdmUgYmVlbiBkb25lIHRoYW4gdGhlIHNlbmRlciBjbGFp
bXMgaXMgdGhlIG1heGltdW0uCisgICAgICAgICAgICAgICAgQVNTRVJUX0lTX1RFU1RJTkdfSVBD
KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
Ly8gSXQgaXMgbGlrZWx5IGEgY2FsbGVyIGVycm9yIHRvIHRyeSB0byBhZGQgYSBuZXcgcmVmZXJl
bmNlIHdpdGggdGhlIHNhbWUgY2xpZW50IG9iamVjdCB3aXRob3V0CisgICAgICAgICAgICAvLyB3
YWl0aW5nIGZvciBwZW5kaW5nIHJlYWRzIG9uIHRoZSBvbGQgcmVmZXJlbmNlLgorICAgICAgICAg
ICAgQVNTRVJUKHdhaXRGb3JQZW5kaW5nUmVhZHMgfHwgIXN0YXRlLm9iamVjdCB8fCAqc3RhdGUu
b2JqZWN0ICE9IG9iamVjdCk7CisKKyAgICAgICAgICAgIGlmIChzdGF0ZS5yZXRpcmVkUmVhZHMg
PT0gd3JpdGUucGVuZGluZ1JlYWRzKCkgfHwgIXdhaXRGb3JQZW5kaW5nUmVhZHMpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoc3RhdGUucmV0aXJlZFJlYWRzIDwgd3JpdGUucGVuZGluZ1JlYWRzKCkp
CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLmZpbmFsUmVhZCA9IHdyaXRlLnBlbmRpbmdSZWFk
cygpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0YXRlLnJldGlyZWRSZWFkcyA9PSB3cml0
ZS5wZW5kaW5nUmVhZHMoKSkKKyAgICAgICAgICAgICAgICAgICAgbV9vYmplY3RzLnJlbW92ZShp
dCk7CisgICAgICAgICAgICAgICAgaWYgKG9iamVjdCkgeworICAgICAgICAgICAgICAgICAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoV1RGTW92ZSh3cml0ZSkucmV0aXJlKCksIFJl
ZmVyZW5jZVN0YXRlIHsgV1RGTW92ZSgqb2JqZWN0KSB9KTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYXV0
byYgbmV3U3RhdGUgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gRW50cnkgd2FzIGEgdG9tYnN0b25lLgorICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG5ld1N0YXRlLmZpbmFsUmVhZCAmJiAhKm5ld1N0YXRlLmZpbmFsUmVhZCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fb2JqZWN0cy5yZW1vdmUoYWRkUmVzdWx0Lml0ZXJh
dG9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIW5ld1N0YXRlLm9iamVj
dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1N0YXRlLm9iamVjdCA9IFdURk1v
dmUoKm9iamVjdCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5ld1N0YXRl
Lm9iamVjdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdyaXRlIHJlcGxheTog
dGhlIHJldGlyZWQgd3JpdGUgYWxyZWFkeSBleGlzdHMsIHRoZSBlbnRyeSB3YXMgbm90IGEgdG9t
YnN0b25lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9JU19URVNUSU5HX0lQ
QygpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBt
X29iamVjdHNDb25kaXRpb24ubm90aWZ5QWxsKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICghd2Fp
dEZvclBlbmRpbmdSZWFkcyB8fCAhd3JpdGUucGVuZGluZ1JlYWRzKCkpIHsKKyAgICAgICAgICAg
IC8vIFdyaXRlIHRoZSB0b21ic3RvbmUuCisgICAgICAgICAgICBtX29iamVjdHMuYWRkKHdyaXRl
LnJlZmVyZW5jZSgpLCBSZWZlcmVuY2VTdGF0ZSB7IHdyaXRlLnBlbmRpbmdSZWFkcygpIH0pOwor
ICAgICAgICAgICAgaWYgKG9iamVjdCkKKyAgICAgICAgICAgICAgICBtX29iamVjdHMuYWRkKFdU
Rk1vdmUod3JpdGUpLnJldGlyZSgpLCBSZWZlcmVuY2VTdGF0ZSB7IFdURk1vdmUoKm9iamVjdCkg
fSk7CisgICAgICAgICAgICBtX29iamVjdHNDb25kaXRpb24ubm90aWZ5QWxsKCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHRpbWVvdXQpOworICAgICAg
ICBpZiAoIW1fb2JqZWN0c0NvbmRpdGlvbi53YWl0VW50aWwobV9vYmplY3RzTG9jaywgdGltZW91
dC0+ZGVhZGxpbmUoKSkpCisgICAgICAgICAgICBicmVhazsKKyAgICB9IHdoaWxlICh0cnVlKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgSWRlbnRpZmllciwgdHlwZW5hbWUgSGVsZFR5cGU+Cit2
b2lkIFRocmVhZFNhZmVPYmplY3RIZWFwPElkZW50aWZpZXIsIEhlbGRUeXBlPjo6cmV0aXJlUmVt
b3ZlKFdyaXRlUmVmZXJlbmNlJiYgb2JqZWN0KQoreworICAgIHJldGlyZShXVEZNb3ZlKG9iamVj
dCksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
SWRlbnRpZmllciwgdHlwZW5hbWUgSGVsZFR5cGU+Cit2b2lkIFRocmVhZFNhZmVPYmplY3RIZWFw
PElkZW50aWZpZXIsIEhlbGRUeXBlPjo6Y2xlYXIoKQoreworICAgIExvY2tlciBsb2NrZXIgeyBt
X29iamVjdHNMb2NrIH07CisgICAgbV9vYmplY3RzLmNsZWFyKCk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIElkZW50aWZpZXIsIHR5cGVuYW1lIEhlbGRUeXBlPgordm9pZCBUaHJlYWRTYWZlT2Jq
ZWN0SGVhcDxJZGVudGlmaWVyLCBIZWxkVHlwZT46OmFkZChJZGVudGlmaWVyIGlkZW50aWZpZXIs
IEhlbGRUeXBlJiYgb2JqZWN0KQoreworICAgIFJlZmVyZW5jZSByZWZlcmVuY2UgeyBpZGVudGlm
aWVyLCAwIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1fb2JqZWN0c0xvY2sgfTsKKyAgICBBU1NF
UlQoIW1fb2JqZWN0cy5jb250YWlucyhyZWZlcmVuY2UpKTsKKyAgICBtX29iamVjdHMuYWRkKHJl
ZmVyZW5jZSwgUmVmZXJlbmNlU3RhdGUgeyBXVEZNb3ZlKG9iamVjdCkgfSk7Cit9CisKK30KKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVh
ZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9N
ZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5jcHAKaW5kZXggNGRlMWQwZWQy
YTdiZTQ5ZTNjYmJiOTVlMzc3ZjU0NTA5ZmFjMDdhZC4uNzhmNzMxMzRjZTZhN2EyMTRjZGM5ZGUw
NWM0NzUzNzJlMTdjOWEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01l
ZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuY3Bw
CkBAIC02Niw3ICs2Niw3IEBAIEF0b21TdHJpbmcgTWVkaWFTYW1wbGVCeXRlUmFuZ2U6OnRyYWNr
SUQoKSBjb25zdAogICAgIHJldHVybiBBdG9tU3RyaW5nOjpudW1iZXIobV90cmFja0lEKTsKIH0K
IAotUGxhdGZvcm1TYW1wbGUgTWVkaWFTYW1wbGVCeXRlUmFuZ2U6OnBsYXRmb3JtU2FtcGxlKCkK
K1BsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxlQnl0ZVJhbmdlOjpwbGF0Zm9ybVNhbXBsZSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIHsKICAgICAgICAgUGxhdGZvcm1TYW1wbGU6OkJ5dGVSYW5nZVNh
bXBsZVR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3Jt
YXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCmluZGV4IGI4ZTRkNzZj
ZTZmMzkyODU3NmU5ZmIxZWY5NjJiNDA0OTdlM2RjMzEuLmY4MzM2YmYwMTM3MjEwOTBkYTE5Mzc4
ZmI1YTQ1M2M4ZGFjYTU3NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9N
ZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCkBA
IC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0
ZVJhbmdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9ieXRlUmFuZ2U7IH0KIAogICAgIEF0b21T
dHJpbmcgdHJhY2tJRCgpIGNvbnN0IGZpbmFsOwotICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxl
IHBsYXRmb3JtU2FtcGxlKCkgZmluYWw7CisgICAgV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGUgcGxh
dGZvcm1TYW1wbGUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShj
b25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKICAgICB2b2lkIHNldFRpbWVzdGFtcHMoY29uc3QgTWVk
aWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGY1YzVi
ZGM5ZWY4ODQzNzg4Mzk5ZmFhY2VlNWUyOTRlOGFkOWE2YTMuLjZjZGQxNGJkMDk0M2U5MGUwODhm
NzRkNmVmMWQwMjI5MGUxZTFhYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNzAsNiArNzAsNyBAQCBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVz
b3VyY2VMb2FkZXIuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5h
Z2VyLmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAK
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHAKIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcApAQCAtNzQ1LDYgKzc0Niw3IEBAIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuY3Bw
CiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuY3BwIEBuby11
bmlmeQogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcAor
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcAogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcAogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwCkBAIC03NTMsNiArNzU1LDcgQEAgV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHAKIFdlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3MuY3BwCiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRl
clByaXZhdGUuY3BwCiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByb3ZpZGVy
LmNwcAorV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJv
eHkuY3BwCiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNw
cAogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIu
Y3BwCiAKQEAgLTg4Myw2ICs4ODYsOSBAQCBSZW1vdGVEZXZpY2VNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiBSZW1vdGVFeHRlcm5hbFRleHR1cmVNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVHUFVNZXNz
YWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVHUFVQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZVJlY2VpdmVyLmNwcAorUmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXBQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90ZVZpZGVvRnJhbWVQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVBpcGVsaW5lTGF5b3V0TWVzc2FnZVJlY2VpdmVy
LmNwcAogUmVtb3RlUXVlcnlTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVRdWV1ZU1lc3Nh
Z2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggMmFmNzgyOTBm
NTA3M2VhMWM5NzYxOTcyMzhjZjU2MjRmNjlkOGExYS4uMmQ3ZGJmZmYxNjVmYjU5YTUzN2EyZmZi
NDI5ODhjMjIyYjhkNGUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKQEAgLTMwLDYg
KzMwLDcgQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVDYXB0
dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXAuaCIKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogI2luY2x1
ZGUgIlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKQEAgLTQwLDYgKzQxLDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VSb3Rh
dGlvblNlc3Npb25WVC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFDb25zdHJhaW50cy5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTYW1wbGVBVkZPYmpDLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGlt
ZVZpZGVvU291cmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVWaWRlb1NhbXBsZS5oPgpA
QCAtNTcsMTEgKzU5LDEyIEBAIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OlNv
dXJjZVByb3h5CiAgICAgLCBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxl
T2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNv
dXJjZVByb3h5KFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpDb25u
ZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFByb2Nlc3NJZGVudGl0eSYmIHJlc291cmNlT3duZXIsIFJl
ZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSkKKyAgICBTb3VyY2VQcm94eShSZWFsdGlt
ZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0
aW9uLCBQcm9jZXNzSWRlbnRpdHkmJiByZXNvdXJjZU93bmVyLCBSZWY8UmVhbHRpbWVNZWRpYVNv
dXJjZT4mJiBzb3VyY2UsIFJlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4mJiB2aWRl
b0ZyYW1lT2JqZWN0SGVhcCkKICAgICAgICAgOiBtX2lkKGlkKQogICAgICAgICAsIG1fY29ubmVj
dGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICAgICAsIG1fcmVzb3VyY2VPd25lcihXVEZN
b3ZlKHJlc291cmNlT3duZXIpKQogICAgICAgICAsIG1fc291cmNlKFdURk1vdmUoc291cmNlKSkK
KyAgICAgICAgLCBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwKFdURk1vdmUodmlkZW9GcmFtZU9iamVj
dEhlYXApKQogICAgIHsKICAgICAgICAgbV9zb3VyY2UtPmFkZE9ic2VydmVyKCp0aGlzKTsKICAg
ICAgICAgc3dpdGNoIChtX3NvdXJjZS0+dHlwZSgpKSB7CkBAIC0xODMsMTkgKzE4NiwzNSBAQCBw
cml2YXRlOgogICAgICAgICAgICAgbV9jYXB0dXJlU2VtYXBob3JlLT5zaWduYWwoKTsKICAgICB9
CiAKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUsIFZp
ZGVvU2FtcGxlTWV0YWRhdGEgbWV0YWRhdGEpIGZpbmFsCisgICAgUmVmUHRyPE1lZGlhU2FtcGxl
PiByb3RhdGVWaWRlb0ZyYW1lSWZOZWVkZWQoTWVkaWFTYW1wbGUmIHNhbXBsZSkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gcmVtb3RlU2FtcGxlOwog
ICAgICAgICBpZiAobV9zaG91bGRBcHBseVJvdGF0aW9uICYmIHNhbXBsZS52aWRlb1JvdGF0aW9u
KCkgIT0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUpIHsKICAgICAgICAgICAgIGF1
dG8gcGl4ZWxCdWZmZXIgPSByb3RhdGVQaXhlbEJ1ZmZlcihzYW1wbGUpOwotICAgICAgICAgICAg
cmVtb3RlU2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShwaXhlbEJ1ZmZlci5nZXQo
KSwgc2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgcmVtb3RlU2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShzYW1wbGUpOwotICAg
ICAgICBpZiAocmVtb3RlU2FtcGxlKSB7Ci0gICAgICAgICAgICBpZiAobV9yZXNvdXJjZU93bmVy
KQotICAgICAgICAgICAgICAgIHJlbW90ZVNhbXBsZS0+c2V0T3duZXJzaGlwSWRlbnRpdHkobV9y
ZXNvdXJjZU93bmVyKTsKLSAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OlZpZGVvU2FtcGxlQXZhaWxhYmxlKG1faWQsIFdU
Rk1vdmUoKnJlbW90ZVNhbXBsZSksIG1ldGFkYXRhKSwgMCk7CisgICAgICAgICAgICByZXR1cm4g
TWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKHBpeGVsQnVmZmVy
KSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUsIHNhbXBsZS52aWRlb01pcnJvcmVk
KCksIHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksIHNhbXBsZS5kZWNvZGVUaW1lKCkpOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiAmc2FtcGxlOworICAgIH0KKworICAgIHZvaWQgdmlkZW9T
YW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlkZW9TYW1wbGVNZXRhZGF0YSBt
ZXRhZGF0YSkgZmluYWwKKyAgICB7CisgICAgICAgIGF1dG8gdmlkZW9TYW1wbGUgPSByb3RhdGVW
aWRlb0ZyYW1lSWZOZWVkZWQoc2FtcGxlKTsKKyAgICAgICAgaWYgKCF2aWRlb1NhbXBsZSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIHJlbW90ZVNhbXBsZSA9IFJlbW90ZVZp
ZGVvU2FtcGxlOjpjcmVhdGUoKnZpZGVvU2FtcGxlKTsKKyAgICAgICAgaWYgKCFyZW1vdGVTYW1w
bGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKG1fcmVzb3VyY2VPd25lcikK
KyAgICAgICAgICAgIHJlbW90ZVNhbXBsZS0+c2V0T3duZXJzaGlwSWRlbnRpdHkobV9yZXNvdXJj
ZU93bmVyKTsKKworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlm
aWVyPiByZW1vdGVJZGVudGlmaWVyOworICAgICAgICBpZiAobV92aWRlb0ZyYW1lT2JqZWN0SGVh
cCkgeworICAgICAgICAgICAgcmVtb3RlSWRlbnRpZmllciA9IG1fdmlkZW9GcmFtZU9iamVjdEhl
YXAtPmNyZWF0ZVZpZGVvRnJhbWUoc2FtcGxlKTsKKyAgICAgICAgICAgIHJlbW90ZVNhbXBsZS0+
Y2xlYXJJT1N1cmZhY2UoKTsKICAgICAgICAgfQorCisgICAgICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OlZpZGVvU2FtcGxlQXZhaWxh
YmxlKG1faWQsIFdURk1vdmUoKnJlbW90ZVNhbXBsZSksIHJlbW90ZUlkZW50aWZpZXIsIG1ldGFk
YXRhKSwgMCk7CiAgICAgfQogCiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHJvdGF0
ZVBpeGVsQnVmZmVyKE1lZGlhU2FtcGxlJiBzYW1wbGUpCkBAIC0yNjAsNiArMjc5LDcgQEAgcHJp
dmF0ZToKICAgICBzaXplX3QgbV9mcmFtZUNodW5rU2l6ZSB7IDAgfTsKICAgICBNZWRpYVRpbWUg
bV9zdGFydFRpbWU7CiAgICAgYm9vbCBtX3Nob3VsZFJlc2V0IHsgZmFsc2UgfTsKKyAgICBSZWZQ
dHI8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFtZU9iamVjdEhlYXA7CiB9
OwogCiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5KFVuaXF1ZVJlZjxDb25uZWN0aW9uUHJveHk+JiYgY29ubmVjdGlvblByb3h5KQpAQCAt
MzI0LDcgKzM0NCw3IEBAIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Y3JlYXRl
TWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpCiAgICAgICAgIH0KIAogICAg
ICAgICBBU1NFUlQoIW1fcHJveGllcy5jb250YWlucyhpZCkpOwotICAgICAgICBhdXRvIHByb3h5
ID0gbWFrZVVuaXF1ZTxTb3VyY2VQcm94eT4oaWQsIG1fY29ubmVjdGlvblByb3h5LT5jb25uZWN0
aW9uKCksIFByb2Nlc3NJZGVudGl0eSB7IG1fY29ubmVjdGlvblByb3h5LT5yZXNvdXJjZU93bmVy
KCkgfSwgV1RGTW92ZShzb3VyY2UpKTsKKyAgICAgICAgYXV0byBwcm94eSA9IG1ha2VVbmlxdWU8
U291cmNlUHJveHk+KGlkLCBtX2Nvbm5lY3Rpb25Qcm94eS0+Y29ubmVjdGlvbigpLCBQcm9jZXNz
SWRlbnRpdHkgeyBtX2Nvbm5lY3Rpb25Qcm94eS0+cmVzb3VyY2VPd25lcigpIH0sIFdURk1vdmUo
c291cmNlKSwgbV9jb25uZWN0aW9uUHJveHktPnJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKCkp
OwogICAgICAgICBtX3Byb3hpZXMuYWRkKGlkLCBXVEZNb3ZlKHByb3h5KSk7CiAgICAgfSBlbHNl
CiAgICAgICAgIGludmFsaWRDb25zdHJhaW50cyA9IFdURk1vdmUoc291cmNlT3JFcnJvci5lcnJv
ck1lc3NhZ2UpOwpAQCAtMzkwLDcgKzQxMCw3IEBAIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJQcm94eTo6Y2xvbmUoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgY2xvbmVkSUQsCiAg
ICAgTUVTU0FHRV9DSEVDSyhtX3Byb3hpZXMuY29udGFpbnMoY2xvbmVkSUQpKTsKICAgICBNRVNT
QUdFX0NIRUNLKCFtX3Byb3hpZXMuY29udGFpbnMobmV3U291cmNlSUQpKTsKICAgICBpZiAoYXV0
byogcHJveHkgPSBtX3Byb3hpZXMuZ2V0KGNsb25lZElEKSkKLSAgICAgICAgbV9wcm94aWVzLmFk
ZChuZXdTb3VyY2VJRCwgbWFrZVVuaXF1ZTxTb3VyY2VQcm94eT4obmV3U291cmNlSUQsIG1fY29u
bmVjdGlvblByb3h5LT5jb25uZWN0aW9uKCksIFByb2Nlc3NJZGVudGl0eSB7IG1fY29ubmVjdGlv
blByb3h5LT5yZXNvdXJjZU93bmVyKCkgfSwgcHJveHktPnNvdXJjZSgpLmNsb25lKCkpKTsKKyAg
ICAgICAgbV9wcm94aWVzLmFkZChuZXdTb3VyY2VJRCwgbWFrZVVuaXF1ZTxTb3VyY2VQcm94eT4o
bmV3U291cmNlSUQsIG1fY29ubmVjdGlvblByb3h5LT5jb25uZWN0aW9uKCksIFByb2Nlc3NJZGVu
dGl0eSB7IG1fY29ubmVjdGlvblByb3h5LT5yZXNvdXJjZU93bmVyKCkgfSwgcHJveHktPnNvdXJj
ZSgpLmNsb25lKCksIG1fY29ubmVjdGlvblByb3h5LT5yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cCgpKSk7CiB9CiAKIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6cmVxdWVzdFRv
RW5kKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIHNvdXJjZUlEKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJQcm94eS5oCmluZGV4IGZhODI5YzdjNDkwM2Q1MWI1N2E3ODk3MTc4NDczZjgwY2JmMjg2ZGUu
LmQwZTQ2YmI5Yjc1NWVhZTU1NzVjZThjOWU0YmE5ZmFmNTEzNTA5MjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5LmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcC5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9DYXB0dXJlRGV2aWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9PcmllbnRh
dGlvbk5vdGlmaWVyLmg+CkBAIC02NSw2ICs2Niw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVh
bCB2b2lkIHNldFRDQ0lkZW50aXR5KCkgeyB9CiAjZW5kaWYKICAgICAgICAgdmlydHVhbCB2b2lk
IHN0YXJ0UHJvZHVjaW5nRGF0YShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlKSB7
IH0KKyAgICAgICAgdmlydHVhbCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCogcmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXAoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgfTsKICAgICBleHBs
aWNpdCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KFVuaXF1ZVJlZjxDb25uZWN0aW9uUHJv
eHk+JiYpOwogICAgIH5Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwYzY4MTg1ZGY5
OWFhNzU3OGU1MGI3MjIzZjEwNWQ2OTdlNTc3MzQ0Li4yNDcxNTU1ZmY0YjIxYjllMGE5OGVjMGFj
YTQyZTBiZWY3NDU3OTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTQwNzAsNiArNDA3MCw5IEBACiAJCTQxMUE4REQ5MjBEREI2MDUw
MDYwRDM0RiAvKiBXS01vY2tNZWRpYURldmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS01vY2tNZWRpYURldmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTFBOEREQTIwRERCNjA1MDA2MEQzNEYgLyogV0tNb2NrTWVkaWFEZXZpY2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tNb2NrTWVkaWFEZXZpY2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTFCMjI2MjFFMzcxMjQ0MDA0RjczNjMgLyog
TGliV2ViUlRDTmV0d29yay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJX
ZWJSVENOZXR3b3JrLmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMUI4OUU0MjdCNUQ1ODIwMEY5RUJEMyAv
KiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxMUI4OUU1MjdCNUQ1ODMwMEY5RUJEMyAvKiBSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExQjg5RTYyN0I1RDU4
NDAwRjlFQkQzIC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjg3RDRCMjI1QzA1QzQwMDlBM0UyNiAvKiBXZWJTb2Nr
ZXRUYXNrQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJTb2NrZXRUYXNrQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjg3
RDRDMjI1QzA1QzUwMDlBM0UyNiAvKiBXZWJTb2NrZXRUYXNrQ29jb2EuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0VGFza0NvY29hLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxMjg3RDREMjI1QzE2MUYwMDlBM0UyNiAvKiBXZWJTb2NrZXRUYXNr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldFRhc2suaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxNzEsNyArNDE3NCw2IEBACiAJCTQxQzNCODk0
MjY0OTNCN0MwMDRFRDRERSAvKiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MUM1Mzc4RjIxRjEzNjJEMDA4QjFGQUQgLyogX1dLV2Vic2l0
ZURhdGFTdG9yZURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9X
S1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUM4NTgxOTFGNTEwREVFMDA2NUUwODUgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MUNCODQwMzI1Q0FCRjdD
MDAxMEUyQjEgLyogTWVkaWFSZWNvcmRlclByaXZhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBNZWRpYVJlY29yZGVyUHJpdmF0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFEMTI5RDkxRjNEMTAxNDAwRDE1RTQ3IC8qIFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxRDVDNkQ4MjM4RUIyMEQwMEI5QjNDQiAvKiBTZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MUQ1QzZEOTIzOEVCMjBFMDBCOUIzQ0IgLyogU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTExMSw2
ICs1MTEzLDEzIEBACiAJCTdCNDgzRjFFMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2
ZVF1ZXVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2
ZVF1ZXVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjUwRTk3RjI3NzFGNkNF
MDAzREFBQzQgLyogSVBDVGVzdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElQQ1Rlc3Rlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNTBFOTgwMjc3MUY2Q0YwMDNEQUFD
NCAvKiBJUENUZXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSVBDVGVzdGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREEwMjdBN0RDMUEwMDZDNkY5NyAvKiBSZW1vdGVWaWRl
b0ZyYW1lSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QjVBM0RBMTI3QTdEQzFBMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZVByb3h5Lm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQTIyN0E3REMxQTAwNkM2
Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0I1QTNEQTMyN0E3REM2QzAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94eS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1l
UHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBNzI3QTdEQ0JD
MDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQTgyN0E3RENCQzAwNkM2Rjk3IC8qIFJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I1QTNEQzUyN0FFNTAxQTAwNkM2Rjk3IC8qIE9iamVjdElkZW50aWZpZXJSZWZl
cmVuY2VUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VU
cmFja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNjRDMEI2MjU0QzVDMjUw
MDA2QjRBRiAvKiBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCNzMxMjMxMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzEyMzIyNUNDODUyMzAwM0IyNzk2
IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC01MTM2LDYgKzUxNDUsNyBAQAogCQk3QkNGNzBDRTI2MTQ5MzVG
MDBFNEZCNzAgLyogU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QkREQTMzRjI3NTY1MkVBMDAzODY1OUUgLyogQXV4aWxp
YXJ5UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXhpbGlhcnlQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdCRERBMzQwMjc1NjUyRUEwMDM4NjU5RSAvKiBBdXhpbGlhcnlQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1eGlsaWFyeVByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkUzN0Y2RjI3QjE0
NzVGMDA3QTZDRDMgLyogVGhyZWFkU2FmZU9iamVjdEhlYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhy
ZWFkU2FmZU9iamVjdEhlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2
NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlv
bnNHZW5lcmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCRTcyNjY4MjU3NjgwRUYwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENv
Y29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2Eu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzA2NUYyOTFDOENEOTVGMDBDMkQ5
NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBl
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02ODAwLDYgKzY4MTAsMTAgQEAK
IAkJCQlDRDgyNTJEMTI1RDQ2NEFCMDA4NjJGRDggLyogUmVtb3RlUmVtb3RlQ29tbWFuZExpc3Rl
bmVyLmggKi8sCiAJCQkJQ0Q4MjUyRDMyNUQ0NjRCRjAwODYyRkQ4IC8qIFJlbW90ZVJlbW90ZUNv
bW1hbmRMaXN0ZW5lci5tZXNzYWdlcy5pbiAqLywKIAkJCQlDRDgyNTJENDI1RDQ2NTEwMDA4NjJG
RDggLyogUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVySWRlbnRpZmllci5oICovLAorCQkJCTdC
NUEzREEwMjdBN0RDMUEwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oICov
LAorCQkJCTdCNUEzREEzMjdBN0RDNkMwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lUHJveHku
Y3BwICovLAorCQkJCTdCNUEzREEyMjdBN0RDMUEwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1l
UHJveHkuaCAqLywKKwkJCQk3QjVBM0RBMTI3QTdEQzFBMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9G
cmFtZVByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJCTFERDJBNjNBMjU1REU2RDEwMEZGN0I2RiAv
KiBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcCAqLywKIAkJCQkxREQyQTYzOTI1NURFNkQx
MDBGRjdCNkYgLyogU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oICovLAogCQkJCTFERDJBNjZG
MjU2MjJGMTEwMEZGN0I2RiAvKiBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmlu
ICovLApAQCAtNjg5MCw2ICs2OTA0LDggQEAKIAkJCQkxREQyQTY2NjI1NjFFRDA0MDBGRjdCNkYg
LyogUmVtb3RlU291cmNlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJMDdFMTlGMDcy
M0Q0REM4ODAwOTRGRkI0IC8qIFJlbW90ZVRleHRUcmFja1Byb3h5LmNwcCAqLywKIAkJCQkwN0Ux
OUYwNjIzRDREQzg4MDA5NEZGQjQgLyogUmVtb3RlVGV4dFRyYWNrUHJveHkuaCAqLywKKwkJCQk3
QjVBM0RBODI3QTdEQ0JDMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3Bw
ICovLAorCQkJCTdCNUEzREE3MjdBN0RDQkMwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcC5oICovLAogCQkJCTA3MUJDNTg0MjNDQzJDMDkwMDY4MEQ3QyAvKiBSZW1vdGVWaWRl
b1RyYWNrUHJveHkuY3BwICovLAogCQkJCTA3MUJDNTg1MjNDQzJDMDkwMDY4MEQ3QyAvKiBSZW1v
dGVWaWRlb1RyYWNrUHJveHkuaCAqLywKIAkJCQkwN0UxOUYwNTIzRDREQzg4MDA5NEZGQjQgLyog
VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaCAqLywKQEAgLTcyNjcsNiArNzI4
Myw3IEBACiAJCQkJMUFEQ0I4NjgxODk4MzFCMzAwMjJFRTVBIC8qIE5hdmlnYXRpb25BY3Rpb25E
YXRhLmNwcCAqLywKIAkJCQkxQURDQjg2OTE4OTgzMUIzMDAyMkVFNUEgLyogTmF2aWdhdGlvbkFj
dGlvbkRhdGEuaCAqLywKIAkJCQk1Q0Q3NDhCNTIzQzhFQjE5MDA5MkE5QjUgLyogTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXIuaCAqLywKKwkJCQk3QjVBM0RDNTI3QUU1MDFBMDA2QzZGOTcg
LyogT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIuaCAqLywKIAkJCQk3QUZCRDM2RTIx
RTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5jcHAgKi8sCiAJCQkJN0FGQkQzNkQy
MUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCAqLywKIAkJCQlCQ0M0M0FCODEy
N0I5NURDMDAzMTdGMTYgLyogUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcCAqLywKQEAgLTczMDcs
NiArNzMyNCw3IEBACiAJCQkJODNGOTY0NEMxRkEwRjc2MzAwQzQ3NzUwIC8qIFNoYXJlZFN0cmlu
Z0hhc2hUYWJsZVJlYWRPbmx5LmggKi8sCiAJCQkJMUE1RTREQTMxMkQzQkQzRDAwOTlBMkJCIC8q
IFRleHRDaGVja2VyU3RhdGUuaCAqLywKIAkJCQlGNEE3Q0U4NDI2NjdFQjRFMDAyMjg2ODUgLyog
VGV4dFJlY29nbml0aW9uVXBkYXRlUmVzdWx0LmggKi8sCisJCQkJN0JFMzdGNkYyN0IxNDc1RjAw
N0E2Q0QzIC8qIFRocmVhZFNhZmVPYmplY3RIZWFwLmggKi8sCiAJCQkJMkZENDNCOTIxRkEwMDZB
MzAwODNGNTFDIC8qIFRvdWNoQmFyTWVudURhdGEuY3BwICovLAogCQkJCTJGRDQzQjkxMUZBMDA2
QTEwMDgzRjUxQyAvKiBUb3VjaEJhck1lbnVEYXRhLmggKi8sCiAJCQkJMkY4MDlERDUxRkJEMUJD
OTAwNUZFNjNBIC8qIFRvdWNoQmFyTWVudUl0ZW1EYXRhLmNwcCAqLywKQEAgLTkyNjQsMTEgKzky
ODIsMTMgQEAKIAkJCQk0MTc2RTg5NzIzQzM2MUJEMDAzRTgzRkUgLyogTWVkaWFSZWNvcmRlcklk
ZW50aWZpZXIuaCAqLywKIAkJCQk0MTc2RTg5NDIzQzM0RTI2MDAzRTgzRkUgLyogTWVkaWFSZWNv
cmRlclByaXZhdGUuY3BwICovLAogCQkJCTQxNzZFODk1MjNDMzRFMjcwMDNFODNGRSAvKiBNZWRp
YVJlY29yZGVyUHJpdmF0ZS5oICovLAotCQkJCTQxQ0I4NDAzMjVDQUJGN0MwMDEwRTJCMSAvKiBN
ZWRpYVJlY29yZGVyUHJpdmF0ZS5tbSAqLywKIAkJCQk0MTc2RTg5MzIzQzM0RDZGMDAzRTgzRkUg
LyogTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcCAqLywKIAkJCQk0MTc2RTg5MjIzQzM0RDZFMDAz
RTgzRkUgLyogTWVkaWFSZWNvcmRlclByb3ZpZGVyLmggKi8sCiAJCQkJNDE3MjE5OEMyM0I2MTJF
ODAwQUU1Njg2IC8qIFJUQ0RlY29kZXJJZGVudGlmaWVyLmggKi8sCiAJCQkJNDE1ODY0OUEyM0JF
MDkyNDAwQTBBNjFFIC8qIFJUQ0VuY29kZXJJZGVudGlmaWVyLmggKi8sCisJCQkJNDExQjg5RTYy
N0I1RDU4NDAwRjlFQkQzIC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuY3BwICov
LAorCQkJCTQxMUI4OUU1MjdCNUQ1ODMwMEY5RUJEMyAvKiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcFByb3h5LmggKi8sCisJCQkJNDExQjg5RTQyN0I1RDU4MjAwRjlFQkQzIC8qIFJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDFGQ0Q2QjcyM0NE
RTUzRDAwQzYyNTY3IC8qIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAgKi8sCiAJCQkJNDFG
Q0Q2QjMyM0NEQzYwNDAwQzYyNTY3IC8qIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oICovLAog
CQkJCTQxRkNENkI4MjNDREU1M0UwMEM2MjU2NyAvKiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
bWVzc2FnZXMuaW4gKi8sCkBAIC0xMzQyOCw3ICsxMzQ0OCw2IEBACiAJCQkJRTE4RTY5MTgxNjlC
NjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTcwQUI4RjMyMEFFM0JENzAwQjhCRTg3IC8qIFNlY0tleVByb3h5U3RvcmUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxNEQ5RjU3MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxNjQ2NTgwMjdBOUM3NzQwMEUxRjJCQSAvKiBT
ZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFG
REU2NUExOTU0QTQyQjAwQzQ4RkZBIC8qIFNlc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUEwMDJENDkxOTZCMzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTNFNzk5Q0UyNzYwNDk3QjAwNzQwMDhBIC8qIFNlc3Npb25TdG9yYWdl
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IGUyOWY0YmQ1NjEzMmVjZDY3
MTcxYmMzN2NiMmNjNTYxYmUxMjkzNTkuLjI4ZjM3ODc2MzkzYmMzYWM1N2U0NGZkNzNlYTEyNDc3
ZDI0OTJkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiUmVtb3Rl
TWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lck1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5oIgog
I2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaCIKICNpbmNsdWRlICJT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZl
clByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIgpAQCAtNzYsNiArNzcsMTEgQEAKICNpbmNsdWRlICJV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VzLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCisjaW5jbHVk
ZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5TWVzc2FnZXMuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxF
KFdFQkdMKQogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKICNpbmNs
dWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaCIKQEAgLTE1OSw2ICsx
NjUsMTMgQEAgdm9pZCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6cmVzZXRBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdChBdWRpb00KIHsKICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5hdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIo
KS5yZXNldChpZGVudGlmaWVyKTsKIH0KKworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94
eSYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OnJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHko
KQoreworICAgIGlmICghbV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5KQorICAgICAg
ICBtX3JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkgPSBSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcFByb3h5OjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiAqbV9yZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcFByb3h5OworfQogI2VuZGlmCiAKIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
ciYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246Om1lZGlhUGxheWVyTWFuYWdlcigpCkBAIC0yMDgsNiAr
MjIxLDEwIEBAIGJvb2wgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjCiAgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpCiAgICAgICAgIHJldHVybiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpoYW5kbGVNZXNzYWdlVG9SZW1vdmVkRGVzdGluYXRpb24oY29ubmVjdGlv
biwgZGVjb2Rlcik7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNUykKKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJh
bWVQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKQorICAgICAgICByZXR1cm4gUmVtb3RlVmlk
ZW9GcmFtZVByb3h5OjpoYW5kbGVNZXNzYWdlVG9SZW1vdmVkRGVzdGluYXRpb24oY29ubmVjdGlv
biwgZGVjb2Rlcik7CisjZW5kaWYKIAogI2lmIFVTRShBVURJT19TRVNTSU9OKQogICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQXVkaW9TZXNz
aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAzZjk4Y2IxMDk3NzYzNDY2
YWIyMDVkYWEwMGVhNmM1MTZmOTEyM2Y1Li44MTNhMDU0Njk3MmNjMzJhZDYyYWM5ZmEyOGQxMWU1
NGNhNWZlZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzQ29ubmVjdGlvbi5oCkBAIC01MSw2ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlcjsKIGNsYXNzIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlcjsKK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk7
CiBjbGFzcyBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOwogY2xhc3MgV2ViUGFnZTsK
IHN0cnVjdCBHUFVQcm9jZXNzQ29ubmVjdGlvbkluaXRpYWxpemF0aW9uUGFyYW1ldGVyczsKQEAg
LTc3LDYgKzc4LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQogICAgIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXImIHNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllck1hbmFnZXIoKTsKICAgICB2b2lkIHJlc2V0QXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQoQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFBy
b3h5JiByZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5KCk7CiAjZW5kaWYKIAogICAgIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlciYgbWVkaWFQbGF5ZXJNYW5hZ2VyKCk7CkBAIC0xNDAsNiAr
MTQyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
TUVESUFfU1RSRUFNKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyPiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CisgICAgUmVmUHRy
PFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk+IG1fcmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXBQcm94eTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoV0VCX0FV
RElPKQogICAgIFJlZlB0cjxSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlcj4gbV9hdWRp
b1NvdXJjZVByb3ZpZGVyTWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkuY3BwCmluZGV4IDdhZTFlZTc2ZGM0YjA3YzQwM2Y2MGI4YWQxM2RhZDliODdiZGVkMGEu
LjAwZDRhOGJkZGM1YzA0MWZmYjAzOTQ5MDJlOTc5OTcxNTE1YzM0YmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtMzUsNiArMzUsMTAgQEAKICNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgogCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHku
aCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CkBAIC0xMTgsNiArMTIyLDIxIEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJiBiCiAgICAgfQog
fQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK1JlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBs
ZT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1Rv
TWVkaWFTYW1wbGUoKQoreworICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIGF1dG8gbWVkaWFTYW1wbGUgPSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6
OmNyZWF0ZSgqbV9ncHVQcm9jZXNzQ29ubmVjdGlvbik7CisgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBhaW50Q29tcG9zaXRlZFJl
c3VsdHNUb01lZGlhU2FtcGxlKG1lZGlhU2FtcGxlLT53cml0ZSgpKSk7CisgICAgaWYgKCFzZW5k
UmVzdWx0KSB7CisgICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9CisgICAgcmV0dXJuIG1lZGlhU2FtcGxlOworfQorI2VuZGlmCisKIGJvb2wg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQ
bGF5ZXImIG1lZGlhUGxheWVyLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQog
ewogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oCmluZGV4IDI5ZjAxOTg3MTk1NTk5ODc5MmVlNzc5NWQ5YWE2MGMyZjM5NzM5NzEu
LjVkMWNhYjIxOGY3ODVjYmExMTQ2YTg5MTIyYjMwZDEwY2M2ODMwN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC02NSw2ICs2NSw5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRS
ZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSBmaW5hbDsKICAg
ICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpJbWFnZUJ1ZmZl
ciYpIGZpbmFsOworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgUmVmUHRyPFdlYkNvcmU6
Ok1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFs
OworI2VuZGlmCiAgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikgZmlu
YWw7CiAgICAgR0NHTGVudW0gZ2V0RXJyb3IoKSBmaW5hbDsKICAgICBib29sIGNvcHlUZXh0dXJl
RnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVyJiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJl
LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwg
Ym9vbCBmbGlwWSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUNvY29hLm1tCmluZGV4IGZmN2UxNDhkNmI1ZWViYTAyNGE5M2UzZWIy
MTI2MmJhYjcyMjgwOGMuLjBiOGJiYTE2Y2ZlYzE2YjJiYTE4NzE3MWFmZDliM2IzMTMxZDY3ZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2Ev
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUNvY29hLm1tCkBAIC0zNCw3ICszNCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NWVXRpbGl0aWVz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvTWVk
aWFTYW1wbGVBVkZPYmpDLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTk5LDkgKzk4LDYgQEAgcHVibGljOgogI2lmIEVOQUJM
RShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTENWKiBhc0NWKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCi0jaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKLSAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBhaW50
Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgZmluYWw7Ci0jZW5kaWYKIHByaXZhdGU6
CiAgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0
aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5k
ZXJpbmdCYWNrZW5kKQogICAgICAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpCkBAIC0xMTQs
MjAgKzExMCw2IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk7CiB9OwogCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLVJlZlB0cjxXZWJD
b3JlOjpNZWRpYVNhbXBsZT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpwYWlu
dENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpCi17Ci0gICAgaWYgKCFtX2Rpc3BsYXlC
dWZmZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
cmVtb3RlIE1lZGlhU2FtcGxlLgotICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFj
ZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChtX2Rpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpLCBX
ZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci0gICAgYXV0byBwaXhlbEJ1
ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUNWUGl4ZWxCdWZmZXIoc3VyZmFjZS0+c3VyZmFjZSgpKTsK
LSAgICBpZiAoIXBpeGVsQnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1
cm4gV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3Zl
KCpwaXhlbEJ1ZmZlciksIFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6VmlkZW9Sb3RhdGlv
bjo6VXBzaWRlRG93biwgdHJ1ZSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Q29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBpZiAoaXNDb250
ZXh0TG9zdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiMDAx
ZGE3NDgyMzlmMzhkZDllZDAzMjVjNTliN2I4M2M5MjU4NzMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVudGlm
aWVyLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAi
T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1By
b2Nlc3NRdWFsaWZpZWQuaD4KKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllclR5cGUg
eyB9OwordXNpbmcgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgPSBXZWJDb3JlOjpQcm9jZXNz
UXVhbGlmaWVkPE9iamVjdElkZW50aWZpZXI8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXJUeXBl
Pj47Cit1c2luZyBSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZp
ZXJSZWFkUmVmZXJlbmNlPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPjsKK3VzaW5nIFJlbW90
ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5j
ZTxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj47Cit1c2luZyBSZW1vdGVWaWRlb0ZyYW1lUmVm
ZXJlbmNlID0gT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRp
Zmllcj47Cit1c2luZyBSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlVHJhY2tlciA9IE9iamVjdElk
ZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPjsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmJkZTY5YzM3NDhhOGI1MTI5NDA3NTA4MDUxZDg1NjQ1NmQ4NjI1NDkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVQcm94eS5jcHAKQEAgLTAsMCArMSwyMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdl
cy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2Eu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JlZjxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+IFJl
bW90ZVZpZGVvRnJhbWVQcm94eTo6Y3JlYXRlKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9j
ZXNzQ29ubmVjdGlvbiwgUGl4ZWxCdWZmZXJDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVZpZGVvRnJhbWVQcm94eShncHVQcm9jZXNzQ29ubmVj
dGlvbiwgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI6OmdlbmVyYXRlKCksIFdURk1vdmUoY2Fs
bGJhY2spKSk7Cit9CisKK1JlZjxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+IFJlbW90ZVZpZGVvRnJh
bWVQcm94eTo6Y3JlYXRlQWxyZWFkeUluaXRpYWxpemVkKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVl
SUQgY29ubmVjdGlvbklELCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyLCBQ
cm9wZXJ0aWVzIHByb3BlcnRpZXMsIFBpeGVsQnVmZmVyQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sK
KyAgICBhdXRvIGZyYW1lID0gYWRvcHRSZWYoKm5ldyBSZW1vdGVWaWRlb0ZyYW1lUHJveHkoY29u
bmVjdGlvbklELCBpZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSkpOworICAgIGZyYW1lLT53
YXNJbml0aWFsaXplZChwcm9wZXJ0aWVzKTsKKyAgICByZXR1cm4gZnJhbWU7Cit9CisKK1JlbW90
ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnByb3Bl
cnRpZXMoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKQoreworICAgIHJl
dHVybiB7CisgICAgICAgIG1lZGlhU2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSwKKyAgICAgICAg
bWVkaWFTYW1wbGUudmlkZW9NaXJyb3JlZCgpLAorICAgICAgICBtZWRpYVNhbXBsZS52aWRlb1Jv
dGF0aW9uKCksCisgICAgICAgIG1lZGlhU2FtcGxlLnByZXNlbnRhdGlvblNpemUoKSwKKyAgICAg
ICAgbWVkaWFTYW1wbGUudmlkZW9QaXhlbEZvcm1hdCgpCisgICAgfTsKK30KKworUmVtb3RlVmlk
ZW9GcmFtZVByb3h5OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24m
IGdwdVByb2Nlc3NDb25uZWN0aW9uLCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBpZGVudGlm
aWVyLCBQaXhlbEJ1ZmZlckNhbGxiYWNrJiYgY2FsbGJhY2spCisgICAgOiBtX2dwdVByb2Nlc3ND
b25uZWN0aW9uKCZncHVQcm9jZXNzQ29ubmVjdGlvbikKKyAgICAsIG1fY29ubmVjdGlvbklEKGdw
dVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS51bmlxdWVJRCgpKQorICAgICwgbV9yZWZl
cmVuY2VUcmFja2VyKGlkZW50aWZpZXIpCisgICAgLCBtX3BpeGVsQnVmZmVyQ2FsbGJhY2soV1RG
TW92ZShjYWxsYmFjaykpCit7CisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+YWRkQ2xpZW50
KCp0aGlzKTsKKyAgICBpZiAoaWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IFByb2Nl
c3M6OmlkZW50aWZpZXIoKSkKKyAgICAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+bWVzc2Fn
ZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllci5vYmplY3QoKS50b1VJ
bnQ2NCgpLCAqdGhpcyk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVQcm94eTo6UmVtb3RlVmlkZW9G
cmFtZVByb3h5KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklELCBSZW1vdGVW
aWRlb0ZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyLCBQaXhlbEJ1ZmZlckNhbGxiYWNrJiYgY2Fs
bGJhY2spCisgICAgOiBtX2Nvbm5lY3Rpb25JRChjb25uZWN0aW9uSUQpCisgICAgLCBtX3JlZmVy
ZW5jZVRyYWNrZXIoaWRlbnRpZmllcikKKyAgICAsIG1fcGl4ZWxCdWZmZXJDYWxsYmFjayhXVEZN
b3ZlKGNhbGxiYWNrKSkKK3sKK30KKworUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpSZW1vdGVWaWRl
b0ZyYW1lUHJveHkoKQorICAgIDogbV9ncHVQcm9jZXNzQ29ubmVjdGlvbihudWxscHRyKQorICAg
ICwgbV9yZWZlcmVuY2VUcmFja2VyKFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyOjpnZW5lcmF0
ZSgpKQoreworfQorCitSZW1vdGVWaWRlb0ZyYW1lUHJveHk6On5SZW1vdGVWaWRlb0ZyYW1lUHJv
eHkoKQoreworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbWFrZSBzdXJlIHRvIGNsb3NlIGluIHdo
YXRldmVyIHRocmVhZCBidXQgZGlzY29ubmVjdCBpbiBtYWluIHRocmVhZC4KKyAgICBkaXNjb25u
ZWN0R1BVUHJvY2Vzc0lmTmVlZGVkKCk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVy
IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6aWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fcmVmZXJlbmNlVHJhY2tlci5pZGVudGlmaWVyKCk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVX
cml0ZVJlZmVyZW5jZSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OndyaXRlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9yZWZlcmVuY2VUcmFja2VyLndyaXRlKCk7Cit9CisKK1JlbW90ZVZpZGVvRnJh
bWVSZWFkUmVmZXJlbmNlIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cmVhZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fcmVmZXJlbmNlVHJhY2tlci5yZWFkKCk7Cit9CisKK3ZvaWQgUmVtb3RlVmlk
ZW9GcmFtZVByb3h5OjpnZXRQaXhlbEJ1ZmZlcigpCit7CisgICAgQVNTRVJUKG1fcGl4ZWxCdWZm
ZXJMb2NrLmlzSGVsZCgpKTsKKyAgICBzdGQ6OmV4Y2hhbmdlKG1fcGl4ZWxCdWZmZXJDYWxsYmFj
aywgeyB9KSgqdGhpcywgW3RoaXNdKGF1dG8gcGl4ZWxCdWZmZXIpIHsKKyAgICAgICAgbV9waXhl
bEJ1ZmZlciA9IFdURk1vdmUocGl4ZWxCdWZmZXIpOworICAgICAgICBpZiAoIW1fcGl4ZWxCdWZm
ZXIpIHsKKyAgICAgICAgICAgIC8vIHNvbWUgY29kZSBwYXRocyBkbyBub3QgbGlrZSBlbXB0eSBw
aXhlbCBidWZmZXJzLgorICAgICAgICAgICAgbV9waXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNyZWF0
ZUJsYWNrUGl4ZWxCdWZmZXIoc3RhdGljX2Nhc3Q8c2l6ZV90PihtX3NpemUud2lkdGgoKSksIHN0
YXRpY19jYXN0PHNpemVfdD4obV9zaXplLmhlaWdodCgpKSk7CisgICAgICAgIH0KKyAgICAgICAg
bV9zZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgfSk7CisgICAgbV9zZW1hcGhvcmUud2FpdCgpOwor
fQorCitDVlBpeGVsQnVmZmVyUmVmIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cGl4ZWxCdWZmZXIo
KSBjb25zdAoreworICAgIExvY2tlciBsb2NrKG1fcGl4ZWxCdWZmZXJMb2NrKTsKKyAgICBpZiAo
IW1fcGl4ZWxCdWZmZXIgJiYgbV9waXhlbEJ1ZmZlckNhbGxiYWNrKQorICAgICAgICBjb25zdF9j
YXN0PFJlbW90ZVZpZGVvRnJhbWVQcm94eSo+KHRoaXMpLT5nZXRQaXhlbEJ1ZmZlcigpOworICAg
IHJldHVybiBtX3BpeGVsQnVmZmVyLmdldCgpOworfQorCitNZWRpYVRpbWUgUmVtb3RlVmlkZW9G
cmFtZVByb3h5OjpwcmVzZW50YXRpb25UaW1lKCkgY29uc3QKK3sKKyAgICAodm9pZCkgd2FpdEZv
cldhc0luaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fcHJlc2VudGF0aW9uVGltZTsKK30KKwor
V2ViQ29yZTo6UGxhdGZvcm1TYW1wbGUgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpwbGF0Zm9ybVNh
bXBsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OlJl
bW90ZVZpZGVvRnJhbWVQcm94eVR5cGUsIHsgfSB9OworfQorCitNZWRpYVNhbXBsZTo6VmlkZW9S
b3RhdGlvbiBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnZpZGVvUm90YXRpb24oKSBjb25zdAorewor
ICAgICh2b2lkKSB3YWl0Rm9yV2FzSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbV92aWRlb1Jv
dGF0aW9uOworfQorCitib29sIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9NaXJyb3JlZCgp
IGNvbnN0Cit7CisgICAgKHZvaWQpIHdhaXRGb3JXYXNJbml0aWFsaXplZCgpOworICAgIHJldHVy
biBtX3ZpZGVvSXNNaXJyb3JlZDsKK30KKwordWludDMyX3QgUmVtb3RlVmlkZW9GcmFtZVByb3h5
Ojp2aWRlb1BpeGVsRm9ybWF0KCkgY29uc3QKK3sKKyAgICAodm9pZCkgd2FpdEZvcldhc0luaXRp
YWxpemVkKCk7CisgICAgcmV0dXJuIG1fcGl4ZWxGb3JtYXQ7Cit9CisKK2Jvb2wgUmVtb3RlVmlk
ZW9GcmFtZVByb3h5OjpoYW5kbGVNZXNzYWdlVG9SZW1vdmVkRGVzdGluYXRpb24oSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIC8vIFNraXAgbWVzc2FnZXMg
aW50ZW5kZWQgZm9yIGFscmVhZHkgcmVtb3ZlZCBtZXNzYWdlUmVjZWl2ZXJNYXAoKSBkZXN0aW5h
dGlvbnMuCisgICAgLy8gVGhlc2UgYXJlIGJ1c2luZXNzIGFzIHVzdWFsLiBUaGVzZSBjYW4gaGFw
cGVuIGZvciBleGFtcGxlIGJ5OgorICAgIC8vICAtIFRoZSBvYmplY3QgaXMgY3JlYXRlZCBhbmQg
aW1tZWRpYXRlbHkgZGVzdHJveWVkLCBiZWZvcmUgV2FzSW5pdGlhbGl6ZWQgd2FzIGhhbmRsZWQu
CisgICAgQVNTRVJUKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlVmlk
ZW9GcmFtZVByb3h5OjpXYXNJbml0aWFsaXplZDo6bmFtZSgpKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYVNhbXBsZVZpZGVvRnJhbWU+IFJlbW90
ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9GcmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKK30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmRpc2Nvbm5lY3RHUFVQ
cm9jZXNzSWZOZWVkZWQoKSBjb25zdAoreworICAgIGlmIChhdXRvIGdwdVByb2Nlc3NDb25uZWN0
aW9uID0gc3RkOjpleGNoYW5nZShtX2dwdVByb2Nlc3NDb25uZWN0aW9uLCBudWxscHRyKSkgewor
ICAgICAgICBBU1NFUlQoaWRlbnRpZmllcigpLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gUHJvY2Vz
czo6aWRlbnRpZmllcigpKTsKKyAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPnJlbW92ZUNs
aWVudCgqdGhpcyk7CisgICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2
ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkub2JqZWN0KCkudG9VSW50
NjQoKSk7CisgICAgfQorICAgIGlmIChtX2Nvbm5lY3Rpb25JRCkKKyAgICAgICAgSVBDOjpDb25u
ZWN0aW9uOjpzZW5kKCptX2Nvbm5lY3Rpb25JRCwgTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwOjpSZWxlYXNlVmlkZW9GcmFtZSh3cml0ZSgpKSwgMCwgSVBDOjpTZW5kT3B0aW9u
OjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworfQorCitib29s
IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6d2FpdEZvcldhc0luaXRpYWxpemVkKCkgY29uc3QKK3sK
KyAgICBpZiAobV93YXNJbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBB
U1NFUlQoaWRlbnRpZmllcigpLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gUHJvY2Vzczo6aWRlbnRp
ZmllcigpKTsKKyAgICBpZiAobV9ncHVQcm9jZXNzQ29ubmVjdGlvbikgeworICAgICAgICBpZiAo
bV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLndhaXRGb3JBbmREaXNwYXRjaElt
bWVkaWF0ZWx5PE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Oldhc0luaXRpYWxpemVk
PihpZGVudGlmaWVyKCkub2JqZWN0KCkudG9VSW50NjQoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkaXNjb25uZWN0R1BVUHJvY2Vzc0lm
TmVlZGVkKCk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVWaWRl
b0ZyYW1lUHJveHk6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24mKQoreworICAgIGF1dG8gZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPSBzdGQ6OmV4Y2hhbmdl
KG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIG51bGxwdHIpOworICAgIGdwdVByb2Nlc3NDb25uZWN0
aW9uLT5yZW1vdmVDbGllbnQoKnRoaXMpOworICAgIEFTU0VSVChpZGVudGlmaWVyKCkucHJvY2Vz
c0lkZW50aWZpZXIoKSA9PSBQcm9jZXNzOjppZGVudGlmaWVyKCkpOworICAgIGdwdVByb2Nlc3ND
b25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVu
dGlmaWVyKCkub2JqZWN0KCkudG9VSW50NjQoKSk7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFt
ZVByb3h5Ojp3YXNJbml0aWFsaXplZChzdGQ6Om9wdGlvbmFsPFByb3BlcnRpZXM+JiYgcHJvcGVy
dGllcykKK3sKKyAgICBtX3dhc0luaXRpYWxpemVkID0gdHJ1ZTsKKyAgICBpZiAoIXByb3BlcnRp
ZXMpCisgICAgICAgIHJldHVybjsKKyAgICAvLyBGSVhNRTogV2hlbiBzb3VyY2UgZmFpbHMgdG8g
cHJvZHVjZSBhIHNhbXBsZSBkdWUgdG8gc29tZSBlcnJvciwgdGhlIHByb3BlcnRpZXMgYXJlIGRp
c2VuZ2FnZWQuCisgICAgLy8gV2Ugc2hvdWxkIHBlcmhhcHMgY2hlY2sgdGhpcyBhdCB0aGUgc3Vi
bWl0IHRpbWUuCisgICAgbV9wcmVzZW50YXRpb25UaW1lID0gcHJvcGVydGllcy0+cHJlc2VudGF0
aW9uVGltZTsKKyAgICBtX3ZpZGVvSXNNaXJyb3JlZCA9IHByb3BlcnRpZXMtPnZpZGVvSXNNaXJy
b3JlZDsKKyAgICBtX3ZpZGVvUm90YXRpb24gPSBwcm9wZXJ0aWVzLT52aWRlb1JvdGF0aW9uOwor
ICAgIG1fc2l6ZSA9IHByb3BlcnRpZXMtPnNpemU7CisgICAgbV9waXhlbEZvcm1hdCA9IHByb3Bl
cnRpZXMtPnBpeGVsRm9ybWF0OworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjk3NmNjNmNlNTJhYmM5MTM0MDU1MDcwZGU0YmRhODdhNDMxYmZhN2IKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVQcm94eS5oCkBAIC0wLDAgKzEsMTU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisK
KyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9WaWRlb0ZyYW1lLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5j
bHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CisKK25hbWVzcGFjZSBJUEMgewor
Y2xhc3MgQ29ubmVjdGlvbjsKK2NsYXNzIERlY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKKworY2xhc3MgUmVtb3RlVmlkZW9GcmFt
ZVByb3h5IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlZpZGVvRnJhbWUsIHByaXZhdGUgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVt
b3RlVmlkZW9GcmFtZVByb3h5KTsKK3B1YmxpYzoKKyAgICB1c2luZyBQaXhlbEJ1ZmZlclJlc3Vs
dENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4mJik+
OworICAgIC8vIENvbXBsZXRpb25IYW5kbGVyIGJ1dCBpdCBtaWdodCBub3QgYmUgY2FsbGVkIG9u
IHRoZSBzYW1lIHRocmVhZC4KKyAgICB1c2luZyBQaXhlbEJ1ZmZlckNhbGxiYWNrID0gRnVuY3Rp
b248dm9pZChjb25zdCBSZW1vdGVWaWRlb0ZyYW1lUHJveHkmLCBQaXhlbEJ1ZmZlclJlc3VsdENh
bGxiYWNrJiYpPjsKKworICAgIC8vIENyZWF0ZXMgYSBwcm9taXNlIG9mIGEgTWVkaWFTYW1wbGUg
dGhhdCBleGlzdHMgaW4gR1BVIHByb2Nlc3MuIFRoZSBvYmplY3QgY2FuIGJlIHVzZWQgYXMgb3V0
IHBhcmFtZXRlciBvZiB0aGUgY3JlYXRpb24gbWVzc2FnZS4KKyAgICBzdGF0aWMgUmVmPFJlbW90
ZVZpZGVvRnJhbWVQcm94eT4gY3JlYXRlKEdQVVByb2Nlc3NDb25uZWN0aW9uJiwgUGl4ZWxCdWZm
ZXJDYWxsYmFjayYmID0geyB9KTsKKworICAgIHN0cnVjdCBQcm9wZXJ0aWVzIHsKKyAgICAgICAg
TWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWU7CisgICAgICAgIGJvb2wgdmlkZW9Jc01pcnJvcmVk
IHsgZmFsc2UgfTsKKyAgICAgICAgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uIHsgVmlkZW9S
b3RhdGlvbjo6Tm9uZSB9OworICAgICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZTsKKyAgICAg
ICAgdWludDMyX3QgcGl4ZWxGb3JtYXQ7CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm9wZXJ0aWVzPiBkZWNvZGUoRGVj
b2RlciYpOworICAgIH07CisKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4g
Y3JlYXRlQWxyZWFkeUluaXRpYWxpemVkKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFJlbW90
ZVZpZGVvRnJhbWVJZGVudGlmaWVyLCBQcm9wZXJ0aWVzLCBQaXhlbEJ1ZmZlckNhbGxiYWNrJiYp
OworCisgICAgc3RhdGljIFByb3BlcnRpZXMgcHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpNZWRp
YVNhbXBsZSYpOworCisgICAgflJlbW90ZVZpZGVvRnJhbWVQcm94eSgpIGZpbmFsOworCisgICAg
UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0OworICAgIFJlbW90
ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSB3cml0ZSgpIGNvbnN0OworICAgIFJlbW90ZVZpZGVv
RnJhbWVSZWFkUmVmZXJlbmNlIHJlYWQoKSBjb25zdDsKKworICAgIENWUGl4ZWxCdWZmZXJSZWYg
cGl4ZWxCdWZmZXIoKSBjb25zdCBmaW5hbDsKKworICAgIHN0YXRpYyBib29sIGhhbmRsZU1lc3Nh
Z2VUb1JlbW92ZWREZXN0aW5hdGlvbihJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsK
K3ByaXZhdGU6CisgICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9u
JiwgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIsIFBpeGVsQnVmZmVyQ2FsbGJhY2smJik7Cisg
ICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFJlbW90
ZVZpZGVvRnJhbWVJZGVudGlmaWVyLCBQaXhlbEJ1ZmZlckNhbGxiYWNrJiYpOworICAgIFJlbW90
ZVZpZGVvRnJhbWVQcm94eSgpOworICAgIHZvaWQgZGlzY29ubmVjdEdQVVByb2Nlc3NJZk5lZWRl
ZCgpIGNvbnN0OworICAgIGJvb2wgd2FpdEZvcldhc0luaXRpYWxpemVkKCkgY29uc3QgV0FSTl9V
TlVTRURfUkVUVVJOOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgor
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
JikgZmluYWw7CisKKyAgICAvLyBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50IG92ZXJyaWRl
cy4KKyAgICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24mKSBmaW5hbDsKKworICAgIC8vIFdlYkNvcmU6OlZpZGVvRnJhbWUgb3ZlcnJpZGVzLgor
ICAgIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3QgZmluYWw7CisgICAgVmlkZW9S
b3RhdGlvbiB2aWRlb1JvdGF0aW9uKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCB2aWRlb01pcnJv
cmVkKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYVNhbXBs
ZVZpZGVvRnJhbWU+IHZpZGVvRnJhbWUoKSBjb25zdCBmaW5hbDsKKyAgICAvLyBGSVhNRTogV2hl
biBWaWRlb0ZyYW1lIGlzIG5vdCBNZWRpYVNhbXBsZSwgdGhlc2Ugd2lsbCBub3QgYmUgbmVlZGVk
LgorICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3QgZmlu
YWw7CisgICAgdWludDMyX3QgdmlkZW9QaXhlbEZvcm1hdCgpIGNvbnN0IGZpbmFsOworICAgIFdl
YkNvcmU6OkZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9zaXplOyB9CisKKyAgICAvLyBNZXNzYWdlcy4KKyAgICB2b2lkIHdhc0luaXRpYWxpemVkKHN0
ZDo6b3B0aW9uYWw8UHJvcGVydGllcz4mJik7CisgICAgc3RhdGljIGlubGluZSBTZWNvbmRzIGRl
ZmF1bHRTZW5kVGltZW91dCA9IDMwX3M7CisKKyAgICB2b2lkIGdldFBpeGVsQnVmZmVyKCk7CisK
KyAgICBtdXRhYmxlIEdQVVByb2Nlc3NDb25uZWN0aW9uKiBtX2dwdVByb2Nlc3NDb25uZWN0aW9u
IHsgbnVsbHB0ciB9OworICAgIHN0ZDo6b3B0aW9uYWw8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJ
RD4gbV9jb25uZWN0aW9uSUQ7CisgICAgUmVtb3RlVmlkZW9GcmFtZVJlZmVyZW5jZVRyYWNrZXIg
bV9yZWZlcmVuY2VUcmFja2VyOworICAgIG11dGFibGUgYm9vbCBtX3dhc0luaXRpYWxpemVkIHsg
ZmFsc2UgfTsKKyAgICBNZWRpYVRpbWUgbV9wcmVzZW50YXRpb25UaW1lOworICAgIGJvb2wgbV92
aWRlb0lzTWlycm9yZWQgeyBmYWxzZSB9OworICAgIFZpZGVvUm90YXRpb24gbV92aWRlb1JvdGF0
aW9uIHsgVmlkZW9Sb3RhdGlvbjo6Tm9uZSB9OworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX3Np
emU7CisgICAgdWludDMyX3QgbV9waXhlbEZvcm1hdCB7IDAgfTsKKyAgICBtdXRhYmxlIExvY2sg
bV9waXhlbEJ1ZmZlckxvY2s7CisgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IG1fcGl4
ZWxCdWZmZXI7CisgICAgQmluYXJ5U2VtYXBob3JlIG1fc2VtYXBob3JlOworICAgIFBpeGVsQnVm
ZmVyQ2FsbGJhY2sgbV9waXhlbEJ1ZmZlckNhbGxiYWNrOworfTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgRW5jb2Rlcj4gdm9pZCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgcHJlc2VudGF0aW9u
VGltZQorICAgICAgICA8PCB2aWRlb0lzTWlycm9yZWQKKyAgICAgICAgPDwgdmlkZW9Sb3RhdGlv
bgorICAgICAgICA8PCBzaXplCisgICAgICAgIDw8IHBpeGVsRm9ybWF0OworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6
UHJvcGVydGllcz4gUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhVGltZT4gcHJlc2VudGF0
aW9uVGltZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHZpZGVvSXNNaXJyb3JlZDsKKyAgICBz
dGQ6Om9wdGlvbmFsPFZpZGVvUm90YXRpb24+IHZpZGVvUm90YXRpb247CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpGbG9hdFNpemU+IHNpemU7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gcGl4ZWxGb3JtYXQ7CisgICAgZGVjb2RlciA+PiBwcmVzZW50YXRpb25UaW1lCisgICAgICAg
ID4+IHZpZGVvSXNNaXJyb3JlZAorICAgICAgICA+PiB2aWRlb1JvdGF0aW9uCisgICAgICAgID4+
IHNpemUKKyAgICAgICAgPj4gcGl4ZWxGb3JtYXQ7CisgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQo
KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gUHJvcGVydGllcyB7
IFdURk1vdmUoKnByZXNlbnRhdGlvblRpbWUpLCAqdmlkZW9Jc01pcnJvcmVkLCAqdmlkZW9Sb3Rh
dGlvbiwgKnNpemUsICpwaXhlbEZvcm1hdCB9OworfQorCit9CitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0JFR0lOKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5KQorICAgIHN0YXRpYyBib29s
IGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJu
IG1lZGlhU2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNh
bXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19FTkQoKQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpWaWRlb0ZyYW1l
KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVk
aWFTYW1wbGUpIHsgcmV0dXJuIG1lZGlhU2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBX
ZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZTsgfQorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVBy
b3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiOTMwMDY0YTYxYzhlNjNlNTZjMmUzNjY2NmM3
YzU5NzQwMjE1ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworbWVzc2FnZXMgLT4gUmVtb3RlVmlkZW9GcmFtZVByb3h5IE5vdFJlZkNvdW50
ZWQgeworICAgIFdhc0luaXRpYWxpemVkKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRl
b0ZyYW1lUHJveHk6OlByb3BlcnRpZXM+IHByb3BlcnRpZXMpCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1l
UHJveHlJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZVZpZGVvRnJhbWVQcm94eUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NzkyYzA0ODY1MGQw
Y2EyNjQ2MDAwNzIzNDY3MDMyODJlNzJhNGQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHlJZGVudGlmaWVy
LmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VU
cmFja2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZl
cmVuY2UgPSBPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZTxXZWJDb3JlOjpSZW1vdGVWaWRl
b0ZyYW1lSWRlbnRpZmllcj47Cit1c2luZyBSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2Ug
PSBPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U8V2ViQ29yZTo6UmVtb3RlVmlkZW9GcmFt
ZUlkZW50aWZpZXI+OwordXNpbmcgUmVtb3RlVmlkZW9GcmFtZVJlZmVyZW5jZSA9IE9iamVjdElk
ZW50aWZpZXJSZWZlcmVuY2U8V2ViQ29yZTo6UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+Owor
dXNpbmcgUmVtb3RlVmlkZW9GcmFtZVJlZmVyZW5jZVRyYWNrZXIgPSBPYmplY3RJZGVudGlmaWVy
UmVmZXJlbmNlVHJhY2tlcjxXZWJDb3JlOjpSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj47CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJU
Q0NvZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3MuY3BwCmluZGV4IGYyMGQwNzRmM2E2ZDQ5NDA0NDc4NjFhMzQyYjQxOWRjZGRmMjg5
YmEuLjI3NTNlZGEzZmM5Yjk2YTlmNDk4Y2IzNjQ3Njk3ZDMxMTVkNTg2NWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNz
LmNwcApAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjc01lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5Lmgi
CisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQ1ZVdGlsaXRpZXMuaD4KQEAgLTE4NCw2ICsxODYsNyBAQCB2b2lkIExpYldlYlJUQ0NvZGVj
czo6ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Pbk1haW5UaHJlYWRXaXRoTG9jaygpCiAgICAg
YXV0byYgZ3B1Q29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVBy
b2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgZ3B1Q29ubmVjdGlvbi5hZGRDbGllbnQoKnRoaXMpOwog
ICAgIG1fY29ubmVjdGlvbiA9ICZncHVDb25uZWN0aW9uLmNvbm5lY3Rpb24oKTsKKyAgICBtX3Jl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkgPSAmZ3B1Q29ubmVjdGlvbi5yZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcFByb3h5KCk7CiAgICAgbV9jb25uZWN0aW9uLT5hZGRUaHJlYWRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjczo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCB0aGlzKTsKIAogICAgIGlmIChtX2xvZ2dpbmdMZXZlbCkKQEAgLTMxNSwxMCArMzE4LDIz
IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzOjpmYWlsZWREZWNvZGluZyhSVENEZWNvZGVySWRlbnRp
ZmllciBkZWNvZGVySWRlbnRpZmllcikKICAgICAgICAgZGVjb2Rlci0+aGFzRXJyb3IgPSB0cnVl
OwogfQogCi12b2lkIExpYldlYlJUQ0NvZGVjczo6Y29tcGxldGVkRGVjb2RpbmcoUlRDRGVjb2Rl
cklkZW50aWZpZXIgZGVjb2RlcklkZW50aWZpZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwgV2ViQ29y
ZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vdGVTYW1wbGUpCit2b2lkIExpYldlYlJUQ0NvZGVj
czo6Y29tcGxldGVkRGVjb2RpbmcoUlRDRGVjb2RlcklkZW50aWZpZXIgZGVjb2RlcklkZW50aWZp
ZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1v
dGVTYW1wbGUsIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+IHJlbW90
ZUZyYW1lSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7CiAKKyAg
ICBSZWZQdHI8UmVtb3RlVmlkZW9GcmFtZVByb3h5PiByZW1vdGVWaWRlb0ZyYW1lOworICAgIC8v
IFdlIGFsd2F5cyBjcmVhdGUgUmVtb3RlVmlkZW9GcmFtZVByb3h5IHNvIHRoYXQgd2UgY2FuIHJl
bGVhc2UgdGhlIGNvcnJlc3BvbmRpbmcgR1BVUHJvY2VzcyBJT1N1cmZhY2UgcmlnaHQgYXdheSBp
ZiB0aGVyZSBpcyBubyB2aWRlbyBzb3VyY2UuCisgICAgaWYgKHJlbW90ZUZyYW1lSWRlbnRpZmll
cikgeworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uTG9jayB9OworICAgICAg
ICBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMgcHJvcGVydGllcyB7IHJlbW90ZVNh
bXBsZS50aW1lKCksIHJlbW90ZVNhbXBsZS5taXJyb3JlZCgpLCByZW1vdGVTYW1wbGUucm90YXRp
b24oKSwgeyBzdGF0aWNfY2FzdDxmbG9hdD4ocmVtb3RlU2FtcGxlLnNpemUoKS53aWR0aCgpKSwg
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlbW90ZVNhbXBsZS5zaXplKCkuaGVpZ2h0KCkpIH0sIHJlbW90
ZVNhbXBsZS52aWRlb0Zvcm1hdCgpIH07CisgICAgICAgIHJlbW90ZVZpZGVvRnJhbWUgPSBSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OmNyZWF0ZUFscmVhZHlJbml0aWFsaXplZChtX2Nvbm5lY3Rpb24t
PnVuaXF1ZUlEKCksICpyZW1vdGVGcmFtZUlkZW50aWZpZXIsIHByb3BlcnRpZXMsIFtwcm94eSA9
IG1fcmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eV0oYXV0byYgZnJhbWUsIGF1dG8mJiBj
YWxsYmFjaykgeworICAgICAgICAgICAgaWYgKCFwcm94eSkgeworICAgICAgICAgICAgICAgIGNh
bGxiYWNrKHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgcHJveHktPmdldFZpZGVvRnJhbWVCdWZmZXIoZnJhbWUsIFdURk1vdmUoY2FsbGJh
Y2spKTsKKyAgICAgICAgfSk7CisgICAgfQogICAgIC8vIEZJWE1FOiBEbyBlcnJvciBsb2dnaW5n
LgogICAgIGF1dG8qIGRlY29kZXIgPSBtX2RlY29kZXJzLmdldChkZWNvZGVySWRlbnRpZmllcik7
CiAgICAgaWYgKCFkZWNvZGVyKQpAQCAtMzMyLDYgKzM0OCwxNCBAQCB2b2lkIExpYldlYlJUQ0Nv
ZGVjczo6Y29tcGxldGVkRGVjb2RpbmcoUlRDRGVjb2RlcklkZW50aWZpZXIgZGVjb2RlcklkZW50
aWZpZXIsCiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVkSW1hZ2VDYWxsYmFjaykKICAgICAgICAg
cmV0dXJuOwogCisgICAgaWYgKHJlbW90ZVZpZGVvRnJhbWUpIHsKKyAgICAgICAgd2VicnRjOjp2
aWRlb0RlY29kZXJUYXNrQ29tcGxldGUoZGVjb2Rlci0+ZGVjb2RlZEltYWdlQ2FsbGJhY2ssIHRp
bWVTdGFtcCwgcmVtb3RlU2FtcGxlLnRpbWUoKS50b0RvdWJsZSgpLCByZW1vdGVWaWRlb0ZyYW1l
LmxlYWtSZWYoKSwKKyAgICAgICAgICAgIFtdKGF1dG8qIHBvaW50ZXIpIHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFJlbW90ZVZpZGVvRnJhbWVQcm94eSo+KHBvaW50ZXIpLT5waXhlbEJ1ZmZlcigpOyB9
LAorICAgICAgICAgICAgW10oYXV0byogcG9pbnRlcikgeyBzdGF0aWNfY2FzdDxSZW1vdGVWaWRl
b0ZyYW1lUHJveHkqPihwb2ludGVyKS0+ZGVyZWYoKTsgfSwKKyAgICAgICAgICAgIHJlbW90ZVNh
bXBsZS5zaXplKCkud2lkdGgoKSwgcmVtb3RlU2FtcGxlLnNpemUoKS5oZWlnaHQoKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoIXJlbW90ZVNhbXBsZS5zdXJmYWNlKCkpCiAg
ICAgICAgIHJldHVybjsKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gY3JlYXRlQ1ZQaXhlbEJ1ZmZl
cihyZW1vdGVTYW1wbGUuc3VyZmFjZSgpKS52YWx1ZV9vcihudWxscHRyKTsKQEAgLTM0MCw3ICsz
NjQsNyBAQCB2b2lkIExpYldlYlJUQ0NvZGVjczo6Y29tcGxldGVkRGVjb2RpbmcoUlRDRGVjb2Rl
cklkZW50aWZpZXIgZGVjb2RlcklkZW50aWZpZXIsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICB3ZWJydGM6OnZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZShkZWNvZGVyLT5kZWNvZGVkSW1h
Z2VDYWxsYmFjaywgdGltZVN0YW1wLCBwaXhlbEJ1ZmZlci5nZXQoKSwgcmVtb3RlU2FtcGxlLnRp
bWUoKS50b0RvdWJsZSgpKTsKKyAgICB3ZWJydGM6OnZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZShk
ZWNvZGVyLT5kZWNvZGVkSW1hZ2VDYWxsYmFjaywgdGltZVN0YW1wLCByZW1vdGVTYW1wbGUudGlt
ZSgpLnRvRG91YmxlKCksIHBpeGVsQnVmZmVyLmdldCgpKTsKIH0KIAogc3RhdGljIGlubGluZSBT
dHJpbmcgZm9ybWF0TmFtZUZyb21Db2RlY1R5cGUoTGliV2ViUlRDQ29kZWNzOjpUeXBlIHR5cGUp
CkBAIC00MzgsMjAgKzQ2MiwzMSBAQCBpbnQzMl90IExpYldlYlJUQ0NvZGVjczo6ZW5jb2RlRnJh
bWUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJgogICAgIGlmICgh
ZW5jb2Rlci5jb25uZWN0aW9uKQogICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VS
Uk9SOwogCi0gICAgYXV0byBidWZmZXIgPSBhZG9wdENGKHdlYnJ0Yzo6cGl4ZWxCdWZmZXJGcm9t
RnJhbWUoZnJhbWUpKTsKLSAgICBpZiAoIWJ1ZmZlcikgewotICAgICAgICAvLyBidWZmZXIgaXMg
bm90IG5hdGl2ZSwgd2UgbmVlZCB0byBjb3B5IHRvIHNoYXJlZCB2aWRlbyBmcmFtZS4KLSAgICAg
ICAgaWYgKCFjb3B5U2hhcmVkVmlkZW9GcmFtZShlbmNvZGVyLCBmcmFtZSkpCi0gICAgICAgICAg
ICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOworICAgIHN0ZDo6b3B0aW9uYWw8UmVt
b3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2U+IHJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNl
OworICAgIGlmIChhdXRvIHByb3ZpZGVyID0gd2VicnRjOjp2aWRlb0ZyYW1lQnVmZmVyUHJvdmlk
ZXIoZnJhbWUpKSB7CisgICAgICAgIGF1dG8mIG1lZGlhU2FtcGxlID0gKnN0YXRpY19jYXN0PE1l
ZGlhU2FtcGxlKj4ocHJvdmlkZXIpOworICAgICAgICBpZiAoaXM8UmVtb3RlVmlkZW9GcmFtZVBy
b3h5PihtZWRpYVNhbXBsZSkpCisgICAgICAgICAgICByZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVy
ZW5jZSA9IGRvd25jYXN0PFJlbW90ZVZpZGVvRnJhbWVQcm94eT4obWVkaWFTYW1wbGUpLnJlYWQo
KTsKICAgICB9CisKKyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gYnVmZmVyOworICAg
IGlmICghcmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UpIHsKKyAgICAgICAgYnVmZmVyID0g
YWRvcHRDRih3ZWJydGM6OnBpeGVsQnVmZmVyRnJvbUZyYW1lKGZyYW1lKSk7CisgICAgICAgIGlm
ICghYnVmZmVyKSB7CisgICAgICAgICAgICAvLyBidWZmZXIgaXMgbm90IG5hdGl2ZSwgd2UgbmVl
ZCB0byBjb3B5IHRvIHNoYXJlZCB2aWRlbyBmcmFtZS4KKyAgICAgICAgICAgIGlmICghY29weVNo
YXJlZFZpZGVvRnJhbWUoZW5jb2RlciwgZnJhbWUpKQorICAgICAgICAgICAgICAgIHJldHVybiBX
RUJSVENfVklERU9fQ09ERUNfRVJST1I7CisgICAgICAgIH0KKyAgICB9CisKICAgICBhdXRvIHNh
bXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoYnVmZmVyLmdldCgpLCBNZWRpYVRpbWUo
ZnJhbWUudGltZXN0YW1wX3VzKCkgKiAxMDAwLCAxMDAwMDAwKSwgdG9NZWRpYVNhbXBsZVZpZGVv
Um90YXRpb24oZnJhbWUucm90YXRpb24oKSksIFJlbW90ZVZpZGVvU2FtcGxlOjpTaG91bGRDaGVj
a0ZvcklPU3VyZmFjZTo6Tm8pOwotICAgIGlmICghc2FtcGxlLT5zdXJmYWNlKCkpIHsKKyAgICBp
ZiAoYnVmZmVyICYmICFzYW1wbGUtPnN1cmZhY2UoKSkgewogICAgICAgICAvLyBidWZmZXIgaXMg
bm90IElPU3VyZmFjZSwgd2UgbmVlZCB0byBjb3B5IHRvIHNoYXJlZCB2aWRlbyBmcmFtZS4KICAg
ICAgICAgaWYgKCFjb3B5U2hhcmVkVmlkZW9GcmFtZShlbmNvZGVyLCBidWZmZXIuZ2V0KCkpKQog
ICAgICAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKICAgICB9CiAKLSAg
ICBlbmNvZGVyLmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5
OjpFbmNvZGVGcmFtZSB7IGVuY29kZXIuaWRlbnRpZmllciwgKnNhbXBsZSwgZnJhbWUudGltZXN0
YW1wKCksIHNob3VsZEVuY29kZUFzS2V5RnJhbWUgfSwgMCk7CisgICAgZW5jb2Rlci5jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6RW5jb2RlRnJhbWUgeyBl
bmNvZGVyLmlkZW50aWZpZXIsICpzYW1wbGUsIGZyYW1lLnRpbWVzdGFtcCgpLCBzaG91bGRFbmNv
ZGVBc0tleUZyYW1lLCByZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSB9LCAwKTsKICAgICBy
ZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCmluZGV4IGEwMTdkZThi
ODQ1NDFkYzZjOWIzN2ZkMjViMzU3YzAwOThiMjJjMTIuLjg0NzFhMTZlMTYwMzc4NTA0MWM5ZTdm
N2Y3MTk4YTQ5MzRlNmQyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUlRDRGVjb2RlcklkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJSVENFbmNvZGVySWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVv
RnJhbWVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkVmlkZW9GcmFtZS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oPgogI2luY2x1ZGUgPG1hcD4KQEAg
LTYwLDYgKzYxLDggQEAgc3RydWN0IFdlYktpdEVuY29kZWRGcmFtZUluZm87CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCitjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5OworCiBj
bGFzcyBMaWJXZWJSVENDb2RlY3MgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpUaHJlYWRNZXNz
YWdlUmVjZWl2ZXJSZWZDb3VudGVkLCBwdWJsaWMgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVu
dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0xMjgsNyArMTMx
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0aW9uTWF5Tm9Mb25nZXJC
ZU5lZWRlZCgpOwogCiAgICAgdm9pZCBmYWlsZWREZWNvZGluZyhSVENEZWNvZGVySWRlbnRpZmll
cik7Ci0gICAgdm9pZCBjb21wbGV0ZWREZWNvZGluZyhSVENEZWNvZGVySWRlbnRpZmllciwgdWlu
dDMyX3QgdGltZVN0YW1wLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmKTsKKyAgICB2b2lk
IGNvbXBsZXRlZERlY29kaW5nKFJUQ0RlY29kZXJJZGVudGlmaWVyLCB1aW50MzJfdCB0aW1lU3Rh
bXAsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYsIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlk
ZW9GcmFtZUlkZW50aWZpZXI+KTsKICAgICB2b2lkIGNvbXBsZXRlZEVuY29kaW5nKFJUQ0VuY29k
ZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UmJiwgY29uc3Qgd2VicnRjOjpXZWJLaXRF
bmNvZGVkRnJhbWVJbmZvJik7CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IGNvbnZl
cnRUb0JHUkEoQ1ZQaXhlbEJ1ZmZlclJlZik7CiAKQEAgLTE0OSw2ICsxNTIsNyBAQCBwcml2YXRl
OgogCiAgICAgTG9jayBtX2Nvbm5lY3Rpb25Mb2NrOwogICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rp
b24+IG1fY29ubmVjdGlvbiBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY29ubmVjdGlvbkxvY2spOwor
ICAgIFJlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5PiBtX3JlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwUHJveHkgV1RGX0dVQVJERURfQllfTE9DSyhtX2Nvbm5lY3Rpb25Mb2Nr
KTsKICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZCgpPj4gbV90YXNrc1RvRGlzcGF0Y2hBZnRlckVz
dGFibGlzaGluZ0Nvbm5lY3Rpb247CiAKICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGli
V2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluCmluZGV4IDI1ZjI3ZmVhODNkZTdiNTZmY2FmZDhkMWY4
ZjM4YTM0N2FiMDZjYmQuLjdkYjc5NTA4MWVhNWYwNjAyZjZmMjI2MjdiNDQ1NTUzYThiNzA3NDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJU
Q0NvZGVjcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKIAogbWVz
c2FnZXMgLT4gTGliV2ViUlRDQ29kZWNzIE5vdFJlZkNvdW50ZWQgewogICAgIEZhaWxlZERlY29k
aW5nKFdlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKLSAgICBDb21wbGV0
ZWREZWNvZGluZyhXZWJLaXQ6OlJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQz
Ml90IHRpbWVTdGFtcCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxlKQorICAgIENv
bXBsZXRlZERlY29kaW5nKFdlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
dWludDMyX3QgdGltZVN0YW1wLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUsIHN0
ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj4gcmVtb3RlRnJh
bWVJZGVudGlmaWVyKQogCiAgICAgQ29tcGxldGVkRW5jb2RpbmcoV2ViS2l0OjpSVENFbmNvZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgc3RydWN0IHdl
YnJ0Yzo6V2ViS2l0RW5jb2RlZEZyYW1lSW5mbyBpbmZvKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRl
LmNwcAppbmRleCA0Zjc3ZjM2ZTcxNzI0NThlMWZkZmNmOTIxMzY2MzZlNmMzZGEyZmY1Li45MTgw
ZDFjYTcyZDAxZTMyMmU3Y2E0ZGU5YzgzNmQ2OGVjYzZhMWMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZh
dGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiUmVtb3RlTWVkaWFSZWNvcmRlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlk
ZW9GcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQ0FSaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVN0cmVhbVByaXZhdGUu
aD4KQEAgLTkzLDI2ICs5NCwzNCBAQCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6fk1lZGlhUmVjb3Jk
ZXJQcml2YXRlKCkKIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6dmlkZW9TYW1wbGVBdmFp
bGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlkZW9TYW1wbGVNZXRhZGF0YSkKIHsKKyAgICBz
dGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlPiByZW1vdGVWaWRlb0Zy
YW1lUmVhZFJlZmVyZW5jZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+
IHJlbW90ZVNhbXBsZTsKICAgICBpZiAoc2hvdWxkTXV0ZVZpZGVvKCkpIHsKKyAgICAgICAgLy8g
RklYTUU6IFdlIGNvdWxkIG9wdGltaXplIHNlbmRpbmcgYmxhY2sgZnJhbWVzIGJ5IG9ubHkgc2Vu
ZGluZyB3aWR0aC9oZWlnaHQuCiAgICAgICAgIGlmICghbV9ibGFja0ZyYW1lKSB7Ci0gICAgICAg
ICAgICBhdXRvIGJsYWNrRnJhbWVEZXNjcmlwdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0Rm9ybWF0
RGVzY3JpcHRpb24oc2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVmZmVy
KTsKLSAgICAgICAgICAgIGF1dG8gZGltZW5zaW9ucyA9IENNVmlkZW9Gb3JtYXREZXNjcmlwdGlv
bkdldERpbWVuc2lvbnMoYmxhY2tGcmFtZURlc2NyaXB0aW9uKTsKLSAgICAgICAgICAgIG1fYmxh
Y2tGcmFtZSA9IGNyZWF0ZUJsYWNrUGl4ZWxCdWZmZXIoZGltZW5zaW9ucy53aWR0aCwgZGltZW5z
aW9ucy5oZWlnaHQpOworICAgICAgICAgICAgYXV0byBzaXplID0gc2FtcGxlLnByZXNlbnRhdGlv
blNpemUoKTsKKyAgICAgICAgICAgIG1fYmxhY2tGcmFtZSA9IGNyZWF0ZUJsYWNrUGl4ZWxCdWZm
ZXIoc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplLndpZHRoKCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+
KHNpemUuaGVpZ2h0KCkpKTsKICAgICAgICAgfQogICAgICAgICByZW1vdGVTYW1wbGUgPSBSZW1v
dGVWaWRlb1NhbXBsZTo6Y3JlYXRlKG1fYmxhY2tGcmFtZS5nZXQoKSwgc2FtcGxlLnByZXNlbnRh
dGlvblRpbWUoKSwgc2FtcGxlLnZpZGVvUm90YXRpb24oKSwgUmVtb3RlVmlkZW9TYW1wbGU6OlNo
b3VsZENoZWNrRm9ySU9TdXJmYWNlOjpObyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9ibGFj
a0ZyYW1lID0gbnVsbHB0cjsKLSAgICAgICAgcmVtb3RlU2FtcGxlID0gUmVtb3RlVmlkZW9TYW1w
bGU6OmNyZWF0ZShzYW1wbGUsIFJlbW90ZVZpZGVvU2FtcGxlOjpTaG91bGRDaGVja0ZvcklPU3Vy
ZmFjZTo6Tm8pOworCisgICAgICAgIGlmIChpczxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+KHNhbXBs
ZSkpIHsKKyAgICAgICAgICAgIHJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlID0gZG93bmNh
c3Q8UmVtb3RlVmlkZW9GcmFtZVByb3h5PihzYW1wbGUpLnJlYWQoKTsKKyAgICAgICAgICAgIHJl
bW90ZVNhbXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUobnVsbHB0ciwgc2FtcGxlLnBy
ZXNlbnRhdGlvblRpbWUoKSwgc2FtcGxlLnZpZGVvUm90YXRpb24oKSwgUmVtb3RlVmlkZW9TYW1w
bGU6OlNob3VsZENoZWNrRm9ySU9TdXJmYWNlOjpObyk7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgcmVtb3RlU2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShzYW1wbGUsIFJl
bW90ZVZpZGVvU2FtcGxlOjpTaG91bGRDaGVja0ZvcklPU3VyZmFjZTo6Tm8pOwogICAgIH0KIAot
ICAgIGlmICghcmVtb3RlU2FtcGxlLT5zdXJmYWNlKCkpIHsKKyAgICBpZiAoaXM8UmVtb3RlVmlk
ZW9GcmFtZVByb3h5PihzYW1wbGUpKQorICAgICAgICByZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVy
ZW5jZSA9IGRvd25jYXN0PFJlbW90ZVZpZGVvRnJhbWVQcm94eT4oc2FtcGxlKS5yZWFkKCk7Cisg
ICAgZWxzZSBpZiAoIXJlbW90ZVNhbXBsZS0+c3VyZmFjZSgpKSB7CiAgICAgICAgIC8vIGJ1ZmZl
ciBpcyBub3QgSU9TdXJmYWNlLCB3ZSBuZWVkIHRvIGNvcHkgdG8gc2hhcmVkIHZpZGVvIGZyYW1l
LgogICAgICAgICBpZiAoIWNvcHlTaGFyZWRWaWRlb0ZyYW1lKHJlbW90ZVNhbXBsZS0+aW1hZ2VC
dWZmZXIoKSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9jb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpWaWRlb1NhbXBsZUF2YWlsYWJs
ZSB7IFdURk1vdmUoKnJlbW90ZVNhbXBsZSkgfSwgbV9pZGVudGlmaWVyKTsKKyAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OlZpZGVvU2FtcGxlQXZh
aWxhYmxlIHsgV1RGTW92ZSgqcmVtb3RlU2FtcGxlKSwgcmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZl
cmVuY2UgfSwgbV9pZGVudGlmaWVyKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmYjk5ODc5ZTRjZmNjNWY4NTk1OTc2M2M1
NTNiMWFkNWIwNjQwMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5LmNwcApAQCAtMCww
ICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVk
ZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk+IFJlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwUHJveHk6OmNyZWF0ZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgY29ubmVjdGlv
bikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cFByb3h5KGNvbm5lY3Rpb24pKTsKK30KKworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94
eTo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYg
Y29ubmVjdGlvbikKKyAgICA6IG1fY29ubmVjdGlvbklEKGNvbm5lY3Rpb24uY29ubmVjdGlvbigp
LnVuaXF1ZUlEKCkpCisgICAgLCBtX3F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJSZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcFByb3h5IiwgV29ya1F1ZXVlOjpRT1M6OlVzZXJJbnRlcmFjdGl2ZSkp
Cit7CisgICAgY29ubmVjdGlvbi5hZGRDbGllbnQoKnRoaXMpOworICAgIGNvbm5lY3Rpb24uY29u
bmVjdGlvbigpLmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXBQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3F1ZXVlLCB0
aGlzKTsKK30KKworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eTo6flJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwUHJveHkoKQoreworICAgIGNsZWFyQ2FsbGJhY2tzKCk7Cit9CisKK3Zv
aWQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25E
aWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICB7CisgICAg
ICAgIExvY2tlciBsb2NrKG1fY29ubmVjdGlvbkxvY2spOworICAgICAgICBtX2Nvbm5lY3Rpb25J
RCA9IHsgfTsKKyAgICB9CisgICAgY29ubmVjdGlvbi5jb25uZWN0aW9uKCkucmVtb3ZlV29ya1F1
ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworICAgIGNsZWFyQ2FsbGJhY2tzKCk7Cit9CisK
K3ZvaWQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eTo6Y2xlYXJDYWxsYmFja3MoKQor
eworICAgIEhhc2hNYXA8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIsIENhbGxiYWNrPiBjYWxs
YmFja3M7CisgICAgeworICAgICAgICBMb2NrZXIgbG9jayhtX2NhbGxiYWNrc0xvY2spOworICAg
ICAgICBjYWxsYmFja3MgPSBzdGQ6OmV4Y2hhbmdlKG1fY2FsbGJhY2tzLCB7IH0pOworICAgIH0K
KyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzLnZhbHVlcygpKQorICAgICAgICBj
YWxsYmFjayh7IH0pOworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk6
OnNldFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUp
Cit7CisgICAgbV9zaGFyZWRWaWRlb0ZyYW1lUmVhZGVyLnNldFNlbWFwaG9yZShXVEZNb3ZlKHNl
bWFwaG9yZSkpOworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk6OnNl
dFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGlw
Y0hhbmRsZSkKK3sKKyAgICBtX3NoYXJlZFZpZGVvRnJhbWVSZWFkZXIuc2V0U2hhcmVkTWVtb3J5
KGlwY0hhbmRsZSk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk6OkNhbGxi
YWNrIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk6OnRha2VDYWxsYmFjayhSZW1vdGVW
aWRlb0ZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIExvY2tlciBsb2NrKG1fY2Fs
bGJhY2tzTG9jayk7CisgICAgcmV0dXJuIG1fY2FsbGJhY2tzLnRha2UoaWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eTo6dmlkZW9GcmFtZUJ1ZmZl
ck5vdEZvdW5kKFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAg
aWYgKGF1dG8gY2FsbGJhY2sgPSB0YWtlQ2FsbGJhY2soaWRlbnRpZmllcikpCisgICAgICAgIGNh
bGxiYWNrKG51bGxwdHIpOworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJv
eHk6Om5ld1ZpZGVvRnJhbWVCdWZmZXIoUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fc2hhcmVkVmlkZW9GcmFtZVJlYWRlci5yZWFk
KCk7CisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSB0YWtlQ2FsbGJhY2soaWRlbnRpZmllcikpCisg
ICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KSk7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXBQcm94eTo6Z2V0VmlkZW9GcmFtZUJ1ZmZlcihjb25zdCBSZW1vdGVWaWRl
b0ZyYW1lUHJveHkmIGZyYW1lLCBDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIHsKKyAgICAg
ICAgTG9ja2VyIGxvY2sobV9jYWxsYmFja3NMb2NrKTsKKyAgICAgICAgQVNTRVJUKCFtX2NhbGxi
YWNrcy5jb250YWlucyhmcmFtZS5pZGVudGlmaWVyKCkpKTsKKyAgICAgICAgbV9jYWxsYmFja3Mu
YWRkKGZyYW1lLmlkZW50aWZpZXIoKSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIH0KKyAgICBM
b2NrZXIgbG9jayhtX2Nvbm5lY3Rpb25Mb2NrKTsKKyAgICBpZiAoIW1fY29ubmVjdGlvbklEKSB7
CisgICAgICAgIHZpZGVvRnJhbWVCdWZmZXJOb3RGb3VuZChmcmFtZS5pZGVudGlmaWVyKCkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5l
Y3Rpb25JRCwgTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpHZXRWaWRlb0Zy
YW1lQnVmZmVyKGZyYW1lLnJlYWQoKSksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNz
YWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKK30KKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42M2U4OTM0ZmQ5
OTYyYzY2NmQzOTY1ZTU3OTcxMjA5N2YwZmNkM2JkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQ
cm94eS5oCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BS
T0NFU1MpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1v
dGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNoYXJlZFZpZGVvRnJhbWUuaCIK
KyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgorCit1c2luZyBD
VlBpeGVsQnVmZmVyUG9vbFJlZiA9IHN0cnVjdCBfX0NWUGl4ZWxCdWZmZXJQb29sKjsKKworbmFt
ZXNwYWNlIElQQyB7CitjbGFzcyBDb25uZWN0aW9uOworY2xhc3MgRGVjb2RlcjsKK30KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVQcm94eTsKKworY2xhc3Mg
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246
OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciwgcHVibGljIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpD
bGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRp
YyBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eT4gY3JlYXRlKEdQVVByb2Nlc3ND
b25uZWN0aW9uJik7CisgICAgflJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkoKTsKKwor
ICAgIHVzaW5nIENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZl
clJlZj4mJik+OworICAgIHZvaWQgZ2V0VmlkZW9GcmFtZUJ1ZmZlcihjb25zdCBSZW1vdGVWaWRl
b0ZyYW1lUHJveHkmLCBDYWxsYmFjayYmKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBSZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9uJik7CisKKyAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIHNldFNoYXJlZFZpZGVvRnJhbWVT
ZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUmJik7CisgICAgdm9pZCBzZXRTaGFyZWRWaWRlb0ZyYW1l
TWVtb3J5KGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik7CisgICAgdm9pZCB2aWRlb0Zy
YW1lQnVmZmVyTm90Rm91bmQoUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIpOworICAgIHZvaWQg
bmV3VmlkZW9GcmFtZUJ1ZmZlcihSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcik7CisKKyAgICAv
LyBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50CisgICAgdm9pZCBncHVQcm9jZXNzQ29ubmVj
dGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJik7CisKKyAgICB2b2lkIGNsZWFyQ2Fs
bGJhY2tzKCk7CisgICAgQ2FsbGJhY2sgdGFrZUNhbGxiYWNrKFJlbW90ZVZpZGVvRnJhbWVJZGVu
dGlmaWVyKTsKKworcHJpdmF0ZToKKyAgICBMb2NrIG1fY29ubmVjdGlvbkxvY2s7CisgICAgSVBD
OjpDb25uZWN0aW9uOjpVbmlxdWVJRCBtX2Nvbm5lY3Rpb25JRCBXVEZfR1VBUkRFRF9CWV9MT0NL
KG1fY29ubmVjdGlvbkxvY2spOworICAgIExvY2sgbV9jYWxsYmFja3NMb2NrOworICAgIEhhc2hN
YXA8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIsIENhbGxiYWNrPiBtX2NhbGxiYWNrcyBXVEZf
R1VBUkRFRF9CWV9MT0NLKG1fY2FsbGJhY2tzTG9jayk7CisgICAgUmVmPFdvcmtRdWV1ZT4gbV9x
dWV1ZTsKKyAgICBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyIG1fc2hhcmVkVmlkZW9GcmFtZVJlYWRl
cjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ3ZTBkNjgzODdiZjM5ZDQ3MGM2ODA2OTcyMjAyNjY4MWYwOTg5YTkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzIgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisj
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYm
IFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCisKK21lc3NhZ2VzIC0+IFJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgU2V0U2hh
cmVkVmlkZW9GcmFtZVNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSBzZW1hcGhvcmUpCisgICAgU2V0
U2hhcmVkVmlkZW9GcmFtZU1lbW9yeShXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHN0
b3JhZ2VIYW5kbGUpCisgICAgVmlkZW9GcmFtZUJ1ZmZlck5vdEZvdW5kKFdlYktpdDo6UmVtb3Rl
VmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBOZXdWaWRlb0ZyYW1lQnVmZmVy
KFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllcikKK30KKworI2Vu
ZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
R1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAppbmRleCBlNWVmNDZl
NjA4MjM5NDYyYWE0MDQ4Y2I3ZDNmYTAzNDJlOThiNTc1Li5mMzdjMThmNWZjM2JlZjk5NThiZWUw
ZWNlMDE4YWJmMzY3YWMzNjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHku
aCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgpAQCAt
NDksMTIgKzUwLDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+
IFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3JlYXRlKFNhbXBsCiAKIFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXImIG1hbmFnZXIsIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
Q2xpZW50JiBjbGllbnQpCiAgICAgOiBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIo
Y2xpZW50KQorICAgICwgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbigmV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSkKICAgICAsIG1fbWFuYWdlcihtYW5h
Z2VyKQotICAgICwgbV9jb25uZWN0aW9uKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpKQorICAgICwgbV9jb25uZWN0aW9uKG1f
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKSkKICAgICAsIG1faWRlbnRpZmllcihT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQogewogICAgIG1h
bmFnZXIuYWRkTGF5ZXIoKnRoaXMpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuYWRkQ2xpZW50KCp0aGlzKTsKKyAgICBtX2dwdVByb2Nl
c3NDb25uZWN0aW9uLT5hZGRDbGllbnQoKnRoaXMpOwogfQogCiB2b2lkIFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6aW5pdGlhbGl6ZShib29sIGhpZGVSb290TGF5ZXIsIEludFNpemUgc2l6ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKQEAgLTc4LDcgKzgwLDcg
QEAgdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnNldExvZ0lkZW50aWZpZXIoU3RyaW5n
JiYgbG9nSWRlbnRpZmllcikKIAogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp+U2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyKCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVH
UFVQcm9jZXNzQ29ubmVjdGlvbigpLnJlbW92ZUNsaWVudCgqdGhpcyk7CisgICAgZGlzY29ubmVj
dEdQVVByb2Nlc3NDb25uZWN0aW9uSWZOZWVkZWQoKTsKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OlJlbGVhc2VM
YXllciB7IG1faWRlbnRpZmllciB9LCAwKTsKICAgICBpZiAobV9tYW5hZ2VyKQogICAgICAgICBt
X21hbmFnZXItPnJlbW92ZUxheWVyKCp0aGlzKTsKQEAgLTE0MCw2ICsxNDIsMTQgQEAgdm9pZCBT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBs
ZSkKIHsKICAgICBpZiAobV9wYXVzZWQpCiAgICAgICAgIHJldHVybjsKKyAgICBpZiAoIW1fZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChpczxSZW1vdGVW
aWRlb0ZyYW1lUHJveHk+KHNhbXBsZSkpIHsKKyAgICAgICAgYXV0byYgcmVtb3RlU2FtcGxlID0g
ZG93bmNhc3Q8UmVtb3RlVmlkZW9GcmFtZVByb3h5PihzYW1wbGUpOworICAgICAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6RW5x
dWV1ZVNhbXBsZSB7IHJlbW90ZVNhbXBsZS5yZWFkKCkgfSwgbV9pZGVudGlmaWVyKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KIAogICAgIGF1dG8gcmVtb3RlU2FtcGxlID0gUmVtb3RlVmlkZW9T
YW1wbGU6OmNyZWF0ZShzYW1wbGUsIFJlbW90ZVZpZGVvU2FtcGxlOjpTaG91bGRDaGVja0ZvcklP
U3VyZmFjZTo6Tm8pOwogICAgIGlmICghcmVtb3RlU2FtcGxlLT5zdXJmYWNlKCkpIHsKQEAgLTE0
OCw3ICsxNTgsNyBAQCB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBs
ZShNZWRpYVNhbXBsZSYgc2FtcGxlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjpFbnF1ZXVlU2FtcGxlIHsgKnJlbW90ZVNhbXBsZSB9LCBtX2lkZW50aWZpZXIpOworICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjpFbnF1ZXVlU2FtcGxlQ1YgeyAqcmVtb3RlU2FtcGxlIH0sIG1faWRlbnRpZmllcik7CiB9
CiAKIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjbGVhckVucXVldWVkU2FtcGxlcygp
CkBAIC0xNzEsMTEgKzE4MSwxOCBAQCB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6c2V0
RGlkRmFpbChib29sIHZhbHVlKQogdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmdwdVBy
b2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKQogewogICAgIG1f
c2hhcmVkVmlkZW9GcmFtZVdyaXRlci5kaXNhYmxlKCk7CisgICAgZGlzY29ubmVjdEdQVVByb2Nl
c3NDb25uZWN0aW9uSWZOZWVkZWQoKTsKICAgICBtX2RpZEZhaWwgPSB0cnVlOwogICAgIGlmICht
X2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPnNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllclN0YXR1
c0RpZEZhaWwoKTsKIH0KIAordm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmRpc2Nvbm5l
Y3RHUFVQcm9jZXNzQ29ubmVjdGlvbklmTmVlZGVkKCkKK3sKKyAgICBpZiAoYXV0byogZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIG51
bGxwdHIpKQorICAgICAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi0+cmVtb3ZlQ2xpZW50KCp0aGlz
KTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKaW5kZXggNTYz
NjlhZGRmMGFiZjM0NmIwZDIxYzg1MDZkNjljYjNkM2I0MGUzOS4uMDQ0NGVjZjJiODYyNzk0NDMy
MTExM2U2OWQyNmIxMmIyNTViZmFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKQEAg
LTUyLDYgKzUyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyJiwgV2ViQ29yZTo6U2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjpDbGllbnQmKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RHUFVQcm9j
ZXNzQ29ubmVjdGlvbklmTmVlZGVkKCk7CiAKICAgICAvLyBXZWJDb3JlOjpTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIKICAgICB2b2lkIGluaXRpYWxpemUoYm9vbCBoaWRlUm9vdExheWVyLCBXZWJD
b3JlOjpJbnRTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKQEAg
LTc2LDYgKzc3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldERpZEZhaWwoYm9vbCk7CiAgICAg
Ym9vbCBjb3B5U2hhcmVkVmlkZW9GcmFtZShDVlBpeGVsQnVmZmVyUmVmKTsKIAorICAgIEdQVVBy
b2Nlc3NDb25uZWN0aW9uKiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uOwogICAgIFdlYWtQdHI8U2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcj4gbV9tYW5hZ2VyOwogICAgIFJlZjxJUEM6OkNv
bm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVu
dGlmaWVyIG1faWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwCmluZGV4IGIxZWY4
ZjU2NDUyZjFmYzY5MWZlZGU0YzQ4NDljM2I1YjA2YzY2OTMuLjE1NmE5ZWFjZmY5OGQ3MDU5Y2Fl
MmVlNTdjNWI2MTg4MjhlMWMwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmNwcApAQCAtMjgs
NiArMjgsOCBAQAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlbW90ZUNhcHR1
cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcFByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCiAjaW5j
bHVkZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmg+CkBAIC0xMzMsNiAr
MTM1LDEyIEBAIHZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OmRpZFVwZGF0ZVNvdXJj
ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKiBjb25uCiAgICAgc2V0Q29ubmVjdGlvbihjb25u
ZWN0aW9uKTsKIH0KIAordm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6c2V0UmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eShSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5
KiBwcm94eSkKK3sKKyAgICBMb2NrZXIgbG9jayhtX3JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
UHJveHlMb2NrKTsKKyAgICBtX3JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkgPSBwcm94
eTsKK30KKwogdm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6ZGlzcGF0Y2hUb1RocmVh
ZChGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2go
V1RGTW92ZShjYWxsYmFjaykpOwpAQCAtMTUwLDE1ICsxNTgsMzUgQEAgdm9pZCBSZW1vdGVDYXB0
dXJlU2FtcGxlTWFuYWdlcjo6YXVkaW9TdG9yYWdlQ2hhbmdlZChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmMKICAgICBpdGVyYXRvci0+dmFsdWUtPnNldFN0b3JhZ2UoaXBjSGFuZGxlLmhhbmRs
ZSwgZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzLCBXVEZNb3ZlKHNlbWFwaG9yZSksIG1lZGlh
VGltZSwgZnJhbWVDaHVua1NpemUpOwogfQogCi12b2lkIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5h
Z2VyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBSZW1vdGVWaWRlb1NhbXBsZSYmIHNhbXBsZSwgVmlkZW9TYW1wbGVNZXRhZGF0
YSBtZXRhZGF0YSkKK3ZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OnZpZGVvU2FtcGxl
QXZhaWxhYmxlKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbW90
ZVZpZGVvU2FtcGxlJiYgc2FtcGxlLCBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVJZGVu
dGlmaWVyPiByZW1vdGVJZGVudGlmaWVyLCBWaWRlb1NhbXBsZU1ldGFkYXRhIG1ldGFkYXRhKQog
ewogICAgIEFTU0VSVCghV1RGOjppc01haW5SdW5Mb29wKCkpOwogCisgICAgUmVmUHRyPE1lZGlh
U2FtcGxlPiB2aWRlb0ZyYW1lOworICAgIC8vIFdlIGFsd2F5cyBjcmVhdGUgUmVtb3RlVmlkZW9G
cmFtZVByb3h5IHNvIHRoYXQgd2UgY2FuIHJlbGVhc2UgdGhlIGNvcnJlc3BvbmRpbmcgR1BVUHJv
Y2VzcyBJT1N1cmZhY2UgcmlnaHQgYXdheSBpZiB0aGVyZSBpcyBubyB2aWRlbyBzb3VyY2UuCisg
ICAgaWYgKHJlbW90ZUlkZW50aWZpZXIpIHsKKyAgICAgICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5
OjpQcm9wZXJ0aWVzIHByb3BlcnRpZXMgeyBzYW1wbGUudGltZSgpLCBzYW1wbGUubWlycm9yZWQo
KSwgc2FtcGxlLnJvdGF0aW9uKCksIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNhbXBsZS5zaXplKCku
d2lkdGgoKSksIHN0YXRpY19jYXN0PGZsb2F0PihzYW1wbGUuc2l6ZSgpLmhlaWdodCgpKSB9LCBz
YW1wbGUudmlkZW9Gb3JtYXQoKSB9OworICAgICAgICAKKyAgICAgICAgLy8gRklYTUU6IFdlIG5l
ZWQgdG8gZWl0aGVyIGdldCBHUFVQcm9jZXNzIG9yIFVJUHJvY2VzcyBvYmplY3QgaGVhcCBwcm94
eS4gRm9yIG5vdyB3ZSBhbHdheXMgZ28gdG8gR1BVUHJvY2Vzcy4KKyAgICAgICAgTG9ja2VyIGxv
Y2sobV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5TG9jayk7CisgICAgICAgIHZpZGVv
RnJhbWUgPSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmNyZWF0ZUFscmVhZHlJbml0aWFsaXplZCht
X2Nvbm5lY3Rpb24tPnVuaXF1ZUlEKCksICpyZW1vdGVJZGVudGlmaWVyLCBwcm9wZXJ0aWVzLCBb
cHJveHkgPSBtX3JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHldKGF1dG8mIGZyYW1lLCBh
dXRvJiYgY2FsbGJhY2spIHsKKyAgICAgICAgICAgIGlmICghcHJveHkpIHsKKyAgICAgICAgICAg
ICAgICBjYWxsYmFjayh7IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHByb3h5LT5nZXRWaWRlb0ZyYW1lQnVmZmVyKGZyYW1lLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CisgICAgICAgIH0pOworICAgIH0KKwogICAgIGF1dG8gaXRlcmF0b3IgPSBt
X3ZpZGVvU291cmNlcy5maW5kKGlkZW50aWZpZXIpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX3Zp
ZGVvU291cmNlcy5lbmQoKSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJV
bmFibGUgdG8gZmluZCBzb3VyY2UgJWxsdSBmb3IgcmVtb3RlVmlkZW9TYW1wbGVBdmFpbGFibGUi
LCBpZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlm
ICh2aWRlb0ZyYW1lKSB7CisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS0+dmlkZW9GcmFtZUF2YWls
YWJsZSh2aWRlb0ZyYW1lLnJlbGVhc2VOb25OdWxsKCksIHNhbXBsZS5zaXplKCksIG1ldGFkYXRh
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBpdGVyYXRvci0+dmFsdWUtPnZpZGVvU2Ft
cGxlQXZhaWxhYmxlKFdURk1vdmUoc2FtcGxlKSwgbWV0YWRhdGEpOwogfQogCkBAIC0yNDcsMTAg
KzI3NSwxNSBAQCB2b2lkIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjpSZW1vdGVWaWRlbzo6
dmlkZW9TYW1wbGVBdmFpbGFibGUoUmVtb3RlVmlkZW9TYQogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICB2aWRlb0ZyYW1lQXZhaWxhYmxl
KHNhbXBsZVJlZi5yZWxlYXNlTm9uTnVsbCgpLCByZW1vdGVTYW1wbGUuc2l6ZSgpLCBtZXRhZGF0
YSk7Cit9CisKK3ZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OlJlbW90ZVZpZGVvOjp2
aWRlb0ZyYW1lQXZhaWxhYmxlKFJlZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUsIEludFNpemUgc2l6
ZSwgVmlkZW9TYW1wbGVNZXRhZGF0YSBtZXRhZGF0YSkKK3sKICAgICBzd2l0Y2hPbihtX3NvdXJj
ZSwgWyZdKFJlZjxSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlPiYgc291cmNlKSB7Ci0gICAgICAg
IHNvdXJjZS0+dmlkZW9TYW1wbGVBdmFpbGFibGUoKnNhbXBsZVJlZiwgcmVtb3RlU2FtcGxlLnNp
emUoKSwgbWV0YWRhdGEpOworICAgICAgICBzb3VyY2UtPnZpZGVvU2FtcGxlQXZhaWxhYmxlKHNh
bXBsZS5nZXQoKSwgc2l6ZSwgbWV0YWRhdGEpOwogICAgIH0sIFsmXShSZWY8UmVtb3RlUmVhbHRp
bWVEaXNwbGF5U291cmNlPiYgc291cmNlKSB7Ci0gICAgICAgIHNvdXJjZS0+cmVtb3RlVmlkZW9T
YW1wbGVBdmFpbGFibGUoKnNhbXBsZVJlZiwgbWV0YWRhdGEpOworICAgICAgICBzb3VyY2UtPnJl
bW90ZVZpZGVvU2FtcGxlQXZhaWxhYmxlKHNhbXBsZS5nZXQoKSwgbWV0YWRhdGEpOwogICAgIH0p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3Rl
Q2FwdHVyZVNhbXBsZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9S
ZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5oCmluZGV4IDg2ZjQ5MGI3ODBmZTQ5Y2ExMWExMDRh
ZjdiNjliZDMzZTY4YzE3MjYuLmJmMWRhOWRkY2U4MDE0MDk4YjVhMjVhYmY1NDc0NTg0MDUxNzJh
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0
dXJlU2FtcGxlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9S
ZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5oCkBAIC0zMywxMSArMzMsMTMgQEAKICNpbmNsdWRl
ICJSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVhbHRpbWVE
aXNwbGF5U291cmNlLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5oIgor
I2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVk
TWVtb3J5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2Vi
QXVkaW9CdWZmZXJMaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNDYsNiArNDgsNyBAQCBjbGFzcyBSZW1vdGVWaWRlb1NhbXBsZTsKIH0KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CitjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5Owog
CiBjbGFzcyBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlciA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rp
b246OlRocmVhZE1lc3NhZ2VSZWNlaXZlclJlZkNvdW50ZWQgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwpAQCAtNjAsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVTb3Vy
Y2UoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCBk
aWRVcGRhdGVTb3VyY2VDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiopOworICAgIHZvaWQgc2V0
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eShSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cFByb3h5Kik7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpOwogCkBAIC03MCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgLy8gTWVz
c2FnZXMKICAgICB2b2lkIGF1ZGlvU3RvcmFnZUNoYW5nZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgY29uc3Qg
V2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgdWludDY0X3QgbnVtYmVyT2ZGcmFt
ZXMsIElQQzo6U2VtYXBob3JlJiYsIGNvbnN0IE1lZGlhVGltZSYsIHNpemVfdCBmcmFtZVNhbXBs
ZVNpemUpOwogICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2VJZGVudGlmaWVyLCBNZWRpYVRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVz
KTsKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFT
b3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmLCBXZWJDb3JlOjpW
aWRlb1NhbXBsZU1ldGFkYXRhKTsKKyAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1Nh
bXBsZSYmLCBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPiwgV2ViQ29y
ZTo6VmlkZW9TYW1wbGVNZXRhZGF0YSk7CiAKICAgICB2b2lkIHNldENvbm5lY3Rpb24oSVBDOjpD
b25uZWN0aW9uKik7CiAKQEAgLTEwNiw2ICsxMTAsNyBAQCBwcml2YXRlOgogICAgICAgICBleHBs
aWNpdCBSZW1vdGVWaWRlbyhTb3VyY2UmJik7CiAKICAgICAgICAgdm9pZCB2aWRlb1NhbXBsZUF2
YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmLCBXZWJDb3JlOjpWaWRlb1NhbXBs
ZU1ldGFkYXRhKTsKKyAgICAgICAgdm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFJlZjxXZWJDb3Jl
OjpNZWRpYVNhbXBsZT4mJiwgV2ViQ29yZTo6SW50U2l6ZSwgV2ViQ29yZTo6VmlkZW9TYW1wbGVN
ZXRhZGF0YSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBTb3VyY2UgbV9zb3VyY2U7CkBAIC0x
MTUsMTAgKzEyMCwxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1JlZ2lzdGVyZWRUb1BhcmVu
dFByb2Nlc3NDb25uZWN0aW9uIHsgZmFsc2UgfTsKICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVl
OwogICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKLQogICAgIC8vIGJh
Y2tncm91bmQgdGhyZWFkIG1lbWJlcgogICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVBdWRpbz4+IG1fYXVkaW9T
b3VyY2VzOwogICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZp
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlbz4+IG1fdmlkZW9Tb3VyY2VzOworCisgICAg
TG9jayBtX3JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlMb2NrOworICAgIFJlZlB0cjxS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5PiBtX3JlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwUHJveHkgV1RGX0dVQVJERURfQllfTE9DSyhtX3JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
UHJveHlMb2NrKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IDg2NTFiM2NkNzk5YTFmNzU0ZjJlODAzYzQ2
ODg5MGU4ZjVhYWZhNjYuLjk2NzIyMTg0MWUwY2YyNGE5NWVkNWVjMmNhZDIwMWMwNjQ4NGY2MDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJl
U2FtcGxlTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1
LDcgQEAKIAogbWVzc2FnZXMgLT4gUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIgTm90UmVmQ291
bnRlZCB7CiAgICAgQXVkaW9TdG9yYWdlQ2hhbmdlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlSWRlbnRpZmllciBpZCwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBzdG9yYWdl
SGFuZGxlLCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIHVp
bnQ2NF90IG51bWJlck9mRnJhbWVzLCBJUEM6OlNlbWFwaG9yZSBjYXB0dXJlU2VtYXBob3JlLCBN
ZWRpYVRpbWUgbWVkaWFUaW1lLCBzaXplX3QgZnJhbWVDaHVua1NpemUpOwotICAgIFZpZGVvU2Ft
cGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBX
ZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUsIHN0cnVjdCBXZWJDb3JlOjpWaWRlb1Nh
bXBsZU1ldGFkYXRhIG1ldGFkYXRhKQorICAgIFZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1Nh
bXBsZSBzYW1wbGUsIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lSWRlbnRp
Zmllcj4gcmVtb3RlSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlZpZGVvU2FtcGxlTWV0YWRh
dGEgbWV0YWRhdGEpCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKaW5kZXggMWVlOTIz
MDY5Y2RjNThjOWQ3YTIxMDI3ZWM5NDY2MzBiMmMwZWIxZS4uNzExYjU1ODVhNWQ1OTY2YjM1Yjk0
MDlhM2M5NDI5ODI5ZjFlMzc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCkBAIC0yMzAsMTIgKzIz
MCwxOSBAQCB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpBdWRpb0ZhY3Rvcnk6OnNldFNo
b3VsZENhcHR1cmVJbkdQVVByb2Nlc3MoYm9vbCB2YQogICAgIG1fc2hvdWxkQ2FwdHVyZUluR1BV
UHJvY2VzcyA9IHZhbHVlOwogfQogCit2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpWaWRl
b0ZhY3Rvcnk6OnNldFNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MoYm9vbCB2YWx1ZSkKK3sKKyAg
ICBtX3Nob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MgPSB2YWx1ZTsKK30KKwogQ2FwdHVyZVNvdXJj
ZU9yRXJyb3IgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlZpZGVvRmFjdG9yeTo6Y3JlYXRlVmlk
ZW9DYXB0dXJlU291cmNlKGNvbnN0IENhcHR1cmVEZXZpY2UmIGRldmljZSwgU3RyaW5nJiYgaGFz
aFNhbHQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQogewogI2lmICFFTkFC
TEUoR1BVX1BST0NFU1MpCiAgICAgaWYgKG1fc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcykKICAg
ICAgICAgcmV0dXJuIENhcHR1cmVTb3VyY2VPckVycm9yIHsgIlZpZGVvIGNhcHR1cmUgaW4gR1BV
UHJvY2VzcyBpcyBub3QgaW1wbGVtZW50ZWQiX3MgfTsKICNlbmRpZgorICAgIGlmIChtX3Nob3Vs
ZENhcHR1cmVJbkdQVVByb2Nlc3MpCisgICAgICAgIG1fbWFuYWdlci5tX3JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyLnNldFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkoJldlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkucmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXBQcm94eSgpKTsKIAogICAgIGJvb2wgc2hvdWxkVXNlSU9TdXJmYWNlID0g
ZmFsc2U7CiAgICAgcmV0dXJuIENhcHR1cmVTb3VyY2VPckVycm9yKFJlYWx0aW1lVmlkZW9Tb3Vy
Y2U6OmNyZWF0ZShSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUoZGV2aWNlLCBjb25z
dHJhaW50cywgeyB9LCBXVEZNb3ZlKGhhc2hTYWx0KSwgbV9tYW5hZ2VyLCBtX3Nob3VsZENhcHR1
cmVJbkdQVVByb2Nlc3MpLCBzaG91bGRVc2VJT1N1cmZhY2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgKaW5k
ZXggN2M1NGEyYTMwY2Q1ZWE3ZmRiZGI5ODYzM2JhODQwYWFlZWEwZGFlNS4uZjRhYjk0MzlkYTg2
MTI0ODFmZjRhYjVjMzBhM2ZmNjJjZTkxMTNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgKQEAgLTg1LDcg
Kzg1LDcgQEAgcHJpdmF0ZToKICAgICBjbGFzcyBWaWRlb0ZhY3RvcnkgOiBwdWJsaWMgV2ViQ29y
ZTo6VmlkZW9DYXB0dXJlRmFjdG9yeSB7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBW
aWRlb0ZhY3RvcnkoVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXImIG1hbmFnZXIpIDogbV9tYW5hZ2Vy
KG1hbmFnZXIpIHsgfQotICAgICAgICB2b2lkIHNldFNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3Mo
Ym9vbCB2YWx1ZSkgeyBtX3Nob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MgPSB2YWx1ZTsgfQorICAg
ICAgICB2b2lkIHNldFNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MoYm9vbCk7CiAKICAgICBwcml2
YXRlOgogICAgICAgICBXZWJDb3JlOjpDYXB0dXJlU291cmNlT3JFcnJvciBjcmVhdGVWaWRlb0Nh
cHR1cmVTb3VyY2UoY29uc3QgV2ViQ29yZTo6Q2FwdHVyZURldmljZSYsIFN0cmluZyYmIGhhc2hT
YWx0LCBjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzKikgZmluYWw7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjdhNjdhYTgzMTM0MjU1
YTJiMGFmNjNiYjQzY2YyMGFiN2Y2MWQ4MS4uYWM3ZDE2ZDJmMDliYWUzNTg5Y2EwMmYxYzU0Y2Ew
NDZhMzAzOWVmOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTAyLTExICBLaW1tbyBLaW5udW5lbiAgPGtraW5u
dW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEgUmVtb3RlTWVkaWFTYW1wbGVQ
cm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVzIHVzZWQgaW4gTWVkaWEgU3Ry
ZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFi
bGV0LgorCisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwOgorCiAyMDIyLTAyLTEw
ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCByZXZlcnRpbmcgcjI4OTUyNS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2Vu
ZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAppbmRl
eCAzMGY3ZmQ4MmIzMzFhMDZmNGM0ZTBjYjRlM2I4OWY3NWZmZTZiMTgxLi4zMzI1NzNjOWRiMmEy
ZjA2MDE1ZGI5Y2RlNWJlMjI5Y2EzNDk1MDY4IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2dl
bmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmds
CkBAIC05NCw3ICs5NCwxMCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBO
b3RSZWZDb3VudGVkIFN0cmVhbSB7ewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgUHJl
cGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJv
bm91cyBOb3RTdHJlYW1FbmNvZGFibGVSZXBseQogI2VuZGlmCi0jaWYgIVBMQVRGT1JNKENPQ09B
KQorI2lmIFVTRShHUkFQSElDU19MQVlFUl9XQykKKyAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5
KCkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpXQ0NvbnRlbnRCdWZmZXJJZGVudGlmaWVyPiBj
b250ZW50QnVmZmVyKSBTeW5jaHJvbm91cworI2VuZGlmCisjaWYgIVBMQVRGT1JNKENPQ09BKSAm
JiAhVVNFKEdSQVBISUNTX0xBWUVSX1dDKQogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAt
PiAoKSBTeW5jaHJvbm91cwogI2VuZGlmCiAgICAgdm9pZCBFbnN1cmVFeHRlbnNpb25FbmFibGVk
KFN0cmluZyBleHRlbnNpb24pCkBAIC0xMDQsNiArMTA3LDkgQEAgbWVzc2FnZXMgLT4gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0ge3sKICAgICB2b2lkIFBhaW50
UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAgICB2b2lkIFBhaW50Q29tcG9z
aXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
aW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBDb3B5VGV4dHVyZUZyb21N
ZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDMyX3Qg
dGV4dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5h
bEZvcm1hdCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11bHRpcGx5
QWxwaGEsIGJvb2wgZmxpcFkpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKyAgICB2b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlh
U2FtcGxlKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlIHJlc3VsdCkKKyNl
bmRpZgogICAgIHZvaWQgU2ltdWxhdGVFdmVudEZvclRlc3RpbmcoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0w6OlNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZyBldmVudCkKIHt9CiB9fQpAQCAtMjMy
LDcgKzIzOCw3IEBAIGRlZiBjcmVhdGVfY3BwX3R5cGVfY29udGFpbmVyKHR5cGVfbmFtZSA6IHN0
cikgLT4gT3B0aW9uYWxbY3BwX3R5cGVfY29udGFpbmVyXToKICAgICAgICAgcmV0dXJuIE5vbmUK
ICAgICBjb250YWluZXJfbmFtZSA9IG1bMV0KICAgICAjIEFsbCB0ZW1wbGF0ZXMgYXJlIGNvbnRh
aW5lcnMgZXhjZXB0IHRoZXNlIGJlbG93LgotICAgIGlmIGNvbnRhaW5lcl9uYW1lIGluIFsnUmVm
UHRyJywgJ1JlZiddOgorICAgIGlmIGNvbnRhaW5lcl9uYW1lIGluIFsnUmVmUHRyJywgJ1JlZics
ICdSZXRhaW5QdHInLCAnc3RkOjpvcHRpb25hbCddOgogICAgICAgICByZXR1cm4gTm9uZQogICAg
IHRlbXBsYXRlcyA9IG1bMl0KICAgICBhcml0eSA9IE5vbmUKQEAgLTY0MCw3ICs2NDYsMTMgQEAg
Y2xhc3Mgd2Via2l0X2lwY19jcHBfcHJveHlfaW1wbChvYmplY3QpOgogICAgICAgICAgICAgICAg
IHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbby50eXBlXQogICAgICAgICAgICAg
ICAgIGFzc2VydChpc2luc3RhbmNlKHdlYmtpdF9pcGNfdHlwZSwgY3BwX3R5cGVfY29udGFpbmVy
KSkKICAgICAgICAgICAgICAgICB2ID0gY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGUsIG8ubmFtZSAr
ICJSZXBseSIpCi0gICAgICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3Ry
KHYudHlwZSl9IHtzdHIodi5uYW1lKX07Il0KKyAgICAgICAgICAgICAgICBpZiBvLnR5cGUuaXNf
ZHluYW1pY19zcGFuKCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMg
Kz0gW2Yie3N0cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9OyJdCisgICAgICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogTGlrZWx5IHRoaXMgY3JlYXRlcyBhIGRh
bmdsaW5nIHJlZmVyZW5jZSBzcGFuPGludCwgMj4gYVJlcGx5ID0geyB7IH0gfTsuCisgICAgICAg
ICAgICAgICAgICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NTg4OQorICAgICAgICAgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIo
di50eXBlKX0ge3N0cih2Lm5hbWUpfSB7eyB7eyB9fSB9fTsiXQorCiAgICAgICAgICAgICAgICAg
c2VsZi5vdXRfZXhwcnMgKz0gW2NwcF9leHByKHYudHlwZSwgdi5uYW1lKV0KICAgICAgICAgICAg
ICAgICBpZiBvLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6CiAgICAgICAgICAgICAgICAgICAgIHNl
bGYuaW5fZXhwcnMgKz0gW2NwcF9leHByKGdldF9jcHBfdHlwZSgic2l6ZV90IiksIGYie28ubmFt
ZX0uYnVmU2l6ZSIpXQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NhbXBsZU1hcC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2Ft
cGxlTWFwLmNwcAppbmRleCBkMTQ2Y2VjNGYyZWM0Y2Y2OTEyZDdmMDQ4ZDI4ODE1N2FkZmRjMWI4
Li5jNDVjNjdhMzE2NmJmZmI5ODc3YmMwZDgzNGZlZjg0NGE0ODY2NTE5IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcApAQCAtNTcsNyArNTcs
NiBAQCBwdWJsaWM6CiAgICAgTWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2RlY29kZVRpbWU7IH0KICAgICBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2R1cmF0aW9uOyB9CiAgICAgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV90cmFja0lEOyB9Ci0gICAgdm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0
cmluZyYgdHJhY2tJRCkgZmluYWwgeyBtX3RyYWNrSUQgPSB0cmFja0lEOyB9CiAgICAgc2l6ZV90
IHNpemVJbkJ5dGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zaXplSW5CeXRlczsgfQogICAg
IEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcmVz
ZW50YXRpb25TaXplOyB9CiAgICAgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFU
aW1lJiBvZmZzZXQpIGZpbmFsIHsgbV9wcmVzZW50YXRpb25UaW1lICs9IG9mZnNldDsgbV9kZWNv
ZGVUaW1lICs9IG9mZnNldDsgfQpAQCAtNzEsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBjcmVhdGUobV9wcmVzZW50YXRpb25UaW1lLCBtX2RlY29kZVRpbWUsIG1fZHVyYXRpb24s
IHN0YXRpY19jYXN0PFNhbXBsZUZsYWdzPihtX2ZsYWdzIHwgSXNOb25EaXNwbGF5aW5nKSk7CiAg
ICAgfQogICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9mbGFn
czsgfQotICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgZmluYWwgeyByZXR1cm4g
eyBQbGF0Zm9ybVNhbXBsZTo6Tm9uZSwge251bGxwdHJ9fTsgfQorICAgIFBsYXRmb3JtU2FtcGxl
IHBsYXRmb3JtU2FtcGxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4geyBQbGF0Zm9ybVNhbXBsZTo6
Tm9uZSwgeyBudWxscHRyIH0gfTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRl
UmFuZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogICAgIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYpIGNvbnN0IGZpbmFsIHsgfQo=
</data>
<flag name="commit-queue"
          id="478456"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451654</attachid>
            <date>2022-02-11 00:58:26 -0800</date>
            <delta_ts>2022-02-11 03:58:34 -0800</delta_ts>
            <desc>Combined patch</desc>
            <filename>bug-236356-20220211095814.patch</filename>
            <type>text/plain</type>
            <size>232829</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBmZDk0YzE1ZWNkMDQ5N2IzMWFkMzBkYmQ4MDI1YzJkYTZjYWIyYmNjLi4xYjUy
ZDk3ODJkM2I4NDVlMDU0YTJhMzYwNDBiN2E2MTcwNzU1NzgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMi0wMi0xMSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCByZW1vdGUgdmlkZW8g
ZnJhbWVzIGluIFdlYlJUQyB2aWRlbyBwaXBlbGluZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIGEgd2F5IGZvciBPYmpDRnJhbWVCdWZm
ZXIgdG8gbm90IGRpcmVjdGx5IG93biBhIENWUGl4ZWxCdWZmZXJSZWYgYnV0IGEgcG9pbnRlcgor
ICAgICAgICB0aGF0IGNhbiBiZSB1c2VkIHRvIGdldCBhIENWUGl4ZWxCdWZmZXJSZWYuIFRoaXMg
aXMgdXNlZCB0byBhbGxvdyByZW1vdGUgZnJhbWVzIHRvIGJlIHNlbnQgb3ZlciB0byBsaWJ3ZWJy
dGMuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cDoKKyAgICAg
ICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAgICAgICAgKiBDb25m
aWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nk
ay9XZWJLaXQvV2ViS2l0RGVjb2Rlci5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dl
YktpdC9XZWJLaXREZWNvZGVyLm1tOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXRVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VXRpbGl0aWVzLm1tOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0
aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2Rr
L29iamMvbmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5tbToKKwogMjAyMi0wMi0wMyAgTWlj
aGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQgcHJvamVj
dHMgaGF2ZSBpbmNvcnJlY3QgaW5zdGFsbCBuYW1lIGZvciB0aGUgZnJhbWV3b3JrcyBmb3IgQ2F0
YWx5c3QgYnVpbGRzIHdpdGggdGhlIHN5c3RlbSBjb250ZW50IHBhdGgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5
NGIyYmFkNWQxMzRkNjUyOTZmOTEyNTE1ZjZlNDU5OTNmYWNlNzE1Li4xNzQ4ODlhZGJiM2Q4NDI2
MWQzODk3YjViNjFmZjlkZmY0MDUzMjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODAgQEAKKzIw
MjItMDItMTEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFN1
cHBvcnQgcmVtb3RlIHZpZGVvIGZyYW1lcyBpbiBXZWJSVEMgdmlkZW8gcGlwZWxpbmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjM1NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IHRvIHJlY2Vp
dmUvc2VuZCByZW1vdGUgZnJhbWVzIGFzIHdlYnJ0YyBWaWRlb0ZyYW1lIGJ1ZmZlcnMuCisgICAg
ICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9u
cy9XZWJDb3JlLnhjY29uZmlnOgorICAgICAgICAqIHBsYXRmb3JtL01lZGlhU2FtcGxlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vVmlk
ZW9GcmFtZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZUNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHA6CisKKzIw
MjItMDItMTEgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbnRyb2R1Y2UgYSBSZW1vdGVNZWRpYVNhbXBsZVByb3h5IHRvIHJlcHJlc2VudCBjYXB0dXJl
ZCB2aWRlbyBmcmFtZXMgdXNlZCBpbiBNZWRpYSBTdHJlYW1zIGFuZCBwcmVzZW50IGluIEdQVVAK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjA5OQor
CisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgQWRkIFZpZGVv
RnJhbWUgOiBwdWJsaWMgTWVkaWFTdHJlYW0sIGJhc2UgY2xhc3MgZm9yIE1lZGlhIFN0cmVhbSB2
aWRlbyBmcmFtZXMuCisgICAgICAgIEN1cnJlbnRseSBpbmhlcml0cyBmcm9tIE1lZGlhU2FtcGxl
LCBidXQgbGF0ZXIgd2lsbCByZW1vdmUgdGhlIE1lZGlhU2FtcGxlLgorCisgICAgICAgIFRoZSBX
ZWJDb3JlOjpWaWRlb0ZyYW1lIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gdmFyaW91cyBlbnRy
eS1wb2ludHMgdGhhdAorICAgICAgICBjdXJyZW50bHkgYXJlIGN1cnJlbnRseSB0eXBlZCBhczoK
KyAgICAgICAgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZpZGVv
U2FtcGxlTWV0YWRhdGEsIC4uLikuCisgICAgICAgIFRoZSBuZXcgY2xhc3MgV2ViS2l0OjpSZW1v
dGVWaWRlb0ZyYW1lUHJveHkgOiBwdWJsaWMgVmlkZW9GcmFtZSBjYW4gYmUgcGFzc2VkIHRvIHRo
ZXNlIEFQSXMuCisgICAgICAgIFRoZSBBUEkgZW50cnlwb2ludHMgYXJlIG5vdCB5ZXQgY2hhbmdl
ZCBpbiBvcmRlciB0byBwYXJ0aWFsbHkgcm9sbCB0aGUgY2hhbmdlcyBpbi4KKyAgICAgICAgTGF0
ZXIgb24sIHRoZSBlbnRyeXBvaW50cyB3aWxsIGJlIHNpbWlsYXIgdG86CisgICAgICAgICAgIHZv
aWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoVmlkZW9GcmFtZSYsIFZpZGVvU2FtcGxlTWV0YWRhdGEs
IC4uLikuCisKKyAgICAgICAgUmVtb3ZlcyBNZWRpYVNhbXBsZTo6c2V0VHJhY2tJRCBhcyB0aGF0
IGlzIG5vdCB1c2VkLgorICAgICAgICBDaGFuZ2VzIE1lZGlhU2FtcGxlOjpwbGF0Zm9ybVNhbXBs
ZSgpIHRvIGNvbnN0LCBzbyB0aGF0IGl0IGNhbiBiZSBjYWxsZWQgZnJvbQorICAgICAgICBjb25z
dCBjb250ZXh0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0b3IuCisKKyAgICAgICAg
KiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9NZWRpYVNh
bXBsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmRlY29kZVRpbWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9GcmFtZTo6ZHVyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9GcmFtZTo6dHJhY2tJRCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjpz
aXplSW5CeXRlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjpwcmVzZW50
YXRpb25TaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6Om9mZnNldFRp
bWVzdGFtcHNCeSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjpzZXRUaW1lc3RhbXBz
KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmlzRGl2aXNhYmxlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmRpdmlkZSk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb0ZyYW1lOjpjcmVhdGVOb25EaXNwbGF5aW5nQ29weSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb0ZyYW1lOjpmbGFncyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Zy
YW1lOjpieXRlUmFuZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6ZHVt
cCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vVmlkZW9GcmFtZS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjplbnF1ZXVlU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaDoKKyAgICAgICAgKGlz
VHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTYW1wbGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpD
OjpwbGF0Zm9ybVNhbXBsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2FtcGxlR1N0cmVhbWVyOjpwbGF0Zm9ybVNhbXBsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTYW1wbGU6OnBsYXRmb3JtU2FtcGxlIGNvbnN0KToK
KwogMjAyMi0wMi0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgog
CiAgICAgICAgIFRhYiBjaGFyYWN0ZXJzIGFuZCBjaCB1bml0cyBkbyBub3Qgb2JleSBzeW50aGV0
aWMgYm9sZCB3aWR0aCBhZGp1c3RtZW50cyBjb3JyZWN0bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjA3Nzg5Zjc3
ZDVkZjBhMDAzNTU2MTVlMTAzMTdiZTNlZDE5MDQ3ZS4uZDIwMTczNzAwOGE2NDdjMjczMDIwYzc0
MjM0M2ZhMjQxMjlkMjVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMzkgQEAKKzIwMjItMDItMTEg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgcmVt
b3RlIHZpZGVvIGZyYW1lcyBpbiBXZWJSVEMgdmlkZW8gcGlwZWxpbmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjM1NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IHJlY2VpdmluZyByZW1vdGUg
c2FtcGxlcyBmcm9tIGNhbWVyYSBvciBIVyBkZWNvZGVycy4KKyAgICAgICAgSW4gdGhhdCBjYXNl
LCB3ZSBjcmVhdGUgcmVtb3RlIHZpZGVvIGZyYW1lcyBhbmQgYWxsb3cgcGlwaW5nIHRoZW0gdG8g
b3VyIGV4aXN0aW5nIHBpcGVsaW5lLgorICAgICAgICBXZSB1cGRhdGUgTWVkaWFSZWNvcmRlciBh
bmQgTGliV2ViUlRDIEhXIGVuY29kZXJzIHRvIGRlYWwgd2l0aCB0aGlzLgorICAgICAgICBTaW5j
ZSB3ZSBoYXZlIGEgY29kZSBwYXRoIHRoYXQgcmVxdWlyZXMgZ2V0dGluZyBhY2Nlc3MgdG8gdGhl
IHJhdyBwaXhlbHMsIHdlIGludHJvZHVjZSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5
CisgICAgICAgIHRvIGFsbG93IGdldHRpbmcgdGhhdCBkYXRhIHRocm91Z2ggc2hhcmVkIG1lbW9y
eSBhc3luY2hyb25vdXNseS4KKyAgICAgICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5IHdpbGwgdGhl
biB1c2UgYSBzZW1hcGhvcmUgdG8gYmxvY2sgb24gdGhlIGFzeW5jIElQQyByZXN1bHQuIAorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vz
cy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwOgorICAgICAgICAqIFNoYXJl
ZC9UaHJlYWRTYWZlT2JqZWN0SGVhcC5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oOgor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHlJZGVudGlmaWVyLmg6IEFkZGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHA6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
UHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5tZXNzYWdlcy5pbjog
QWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2Ft
cGxlTWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJl
U2FtcGxlTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVy
ZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oOgorCisyMDIyLTAyLTExICBLaW1tbyBLaW5udW5lbiAg
PGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEgUmVtb3RlTWVkaWFT
YW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVzIHVzZWQgaW4gTWVk
aWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vl
bm4gRmFibGV0LgorCisgICAgICAgIFdlYkNvbnRlbnQgcHJvY2VzczoKKyAgICAgICAgQWRkIFdl
YktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5LCBXZWJDb250ZW50IHByb2Nlc3Mgc2lkZSBwcm94
eSBvYmplY3QgdGhhdAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakMgY2FuIHVzZS4KKworICAgICAgICBSZW1vdGVWaWRlb0ZyYW1lUHJveHkgY2Fu
IGJlIHNlbnQgdG8gdGhlIEdQVVAgYW5kIHRoZSB0aGUgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LiBTbworICAgICAgICB0aGUgY2FwdHVyZWQgY29udGVudCBzaG93cyBpbiBjb21wb3NpdGluZyB0
aHJvdWdoIHZpZGVvIGVsZW1lbnQuCisKKyAgICAgICAgQXQgdGhlIG1vbWVudCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMgY2Fubm90IHBhaW50IFJlbW90ZVZpZGVvRnJhbWVQ
cm94eSB0byB0aGUKKyAgICAgICAgZG9jdW1lbnQgQ1NTIHBhaW50ZWQgY29udGVudCwgQ29udGV4
dDJEIG9yIFdlYkdMIGNhbnZhcy4KKworICAgICAgICBHUFVQOgorICAgICAgICBSZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcCBpcyBhIG1hcHBpbmcKKyAgICAgICAgUmVtb3RlVmlkZW9GcmFtZUlk
ZW50aWZpZXIgLT4gTWVkaWFTYW1wbGUuIEN1cnJlbnRseSBhbGwgb2JqZWN0cworICAgICAgICBt
YXAgdG8gbm9ybWFsIE1lZGlhU2FtcGxlQVZGT2JqQy4KKworICAgICAgICBBZGQgYW4gZXhhbXBs
ZSBpbXBsZW1lbnRhdGlvbiB3aGVyZSBhIHJlbW90ZSBNZWRpYVNhbXBsZSBpcyByZXR1cm5lZCBi
eSBJUEM6CisgICAgICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRS
ZXN1bHRzVG9NZWRpYVNhbXBsZSgpLgorCisgICAgICAgIFRoZSBHUFVQIG9iamVjdCBwb2ludGVk
IGJ5IFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlzOgorICAgICAgICAtIGNyZWF0ZWQgaW4g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2Ft
cGxlKCkgaW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgdGhyZWFkCisgICAgICAgIC0gY29uc3Vt
ZWQgaW4gUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlIGluIFJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIgdGhyZWFkCisgICAgICAgIC0gcmVs
ZWFzZWQgaW4gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OnJlbGVhc2VWaWRlb0ZyYW1lIGlu
IEdQVVAgbWFpbiB0aHJlYWQKKyAgICAgICAgQWxsIG9mIHRoZXNlIG1lc3NhZ2VzIGFyZSBhc3lu
Y2hyb25vdXMgYW5kIGNhbiBhcnJpdmUgdG8gdGhlaXIgZGVzdGluYXRpb24gaW4gYW55IG9yZGVy
LgorICAgICAgICBGb3IgZXhhbXBsZSwgcmVxdWVzdCB0byByZWxlYXNlIHRoZSB2aWRlbyBmcmFt
ZSBjYW4gaGFwcGVuIGJlZm9yZSB0aGUgbWVzc2FnZSB0byBjcmVhdGUgdGhlIHZpZGVvIGZyYW1l
IGhhcyBiZWVuCisgICAgICAgIHJlY2VpdmVkLgorCisgICAgICAgIFRvIHNvbHZlIHRoZSBvcmRl
cmluZyBpc3N1ZSwgaW50cm9kdWNlIHJlYWRlcnMtd3JpdGVycyByZWZlcmVuY2UgY291bnRpbmcg
bWV0aG9kIHZpYSBmb2xsb3dpbmcgY2xhc3NlczoKKyAgICAgICAgIC0gT2JqZWN0SWRlbnRpZmll
clJlYWRSZWZlcmVuY2UKKyAgICAgICAgIC0gT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNl
CisgICAgICAgICAtIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyCisKKyAgICAgICAg
T2JqZWN0SWRlbnRpZmllciBpZGVudGlmaWVzIHRoZSBvYmplY3QuCisgICAgICAgIE9iamVjdElk
ZW50aWZpZXJXcml0ZVJlZmVyZW5jZSBpZGVudGlmaWVzIGEgbmV3IHZlcnNpb24gb2YgdGhlIGNv
bnRlbnQgcG9pbnRlZCBieSB0aGUgaWRlbnRpZmllci4KKyAgICAgICAgUHNldWRvY29kZSBleGFt
cGxlczoKKyAgICAgICAgICBXcml0ZVJlZmVyZW5jZSB7IGlkZW50aWZpZXIgPSAxLCBwZW5kaW5n
UmVhZHMgPSAwLCB2ZXJzaW9uID0gMCB9IG1lYW5zOgorICAgICAgICAgICAgIkVuZCB0aGUgbGlm
ZS10aW1lIG9mIGlkZW50aWZpZXIgMSwgdmVyc2lvbiAwLiBDcmVhdGUgdmVyc2lvbiA9IDEiCisg
ICAgICAgICAgICBUaGlzIGlzIGhvdyBpbml0aWFsIG9iamVjdCBpcyBhc3NpZ25lZCB0byB0aGUg
cmVmZXJlbmNlLgorICAgICAgICAgIFdyaXRlUmVmZXJlbmNlIHsgaWRlbnRpZmllciA9IDEsIHBl
bmRpbmdSZWFkcyA9IDc3LCB2ZXJzaW9uID0gMzIgfSBtZWFucworICAgICAgICAgICAgIkVuZCB0
aGUgbGlmZS10aW1lIG9mIGlkZW50aWZpZXIgMSwgdmVyc2lvbiAzMiB3aGVuIGFsbCA3NyByZWFk
cyBoYXZlIGNvbXBsZXRlZC4gQ3JlYXRlIHZlcnNpb24gPSAzMyIKKworICAgICAgICBPYmplY3RJ
ZGVudGlmaWVyUmVhZFJlZmVyZW5jZSBkZWNsYXJlcyBhIHJlYWQgZGVwZW5kZW5jeSB0byBhIHNw
ZWNpZmljIHZlcnNpb24gb2YgdGhlIGNvbnRlbnQgcG9pbnRlZCBieSB0aGUgaWRlbnRpZmllci4K
KyAgICAgICAgUHNldWRvY29kZSBleGFtcGxlczoKKyAgICAgICAgICAgUmVhZFJlZmVyZW5jZSB7
IGlkZW50aWZpZXIgPSAxLCB2ZXJzaW9uID0gMzIgfSBtZWFucworICAgICAgICAgICAiQ29tcGxl
dGUgb25lIHJlYWQgb2YgaWRlbnRpZmllciAxLCB2ZXJzaW9uIDMyIi4KKworICAgICAgICBDcmVh
dGVzLCB1cGRhdGVzIGFuZCBkZXN0cnVjdGlvbnMgYXJlIFdyaXRlUmVmZXJlbmNlcy4KKyAgICAg
ICAgUmVhZHMgYXJlIFJlYWRSZWZlcmVuY2VzLgorCisgICAgICAgIFRoZSBPYmplY3RJZGVudGlm
aWVyUmVmZXJlbmNlVHJhY2tlciBjcmVhdGVzIHdyaXRlIGFuZCByZWFkIHJlZmVyZW5jZXMgaW4g
dGhlIFByb3h5IC11c2luZyBwcm9jZXNzIChXZWJDb250ZW50IHByb2Nlc3MpLgorCisgICAgICAg
IFRoZSBhZGRlZCBUaHJlYWRTYWZlT2JqZWN0SGVhcCByZXNvbHZlcyB0aGUgcmVhZCBhbmQgd3Jp
dGUgcmVmZXJlbmNlcyBpbiB0aGUgcmVhbCBvYmplY3QgcHJvY2VzcyAoR1BVUCBpbiB0aGlzIGNh
c2UpLgorICAgICAgICBSZWFkcyBhbmQgd3JpdGVzIGFyZSBibG9ja2luZyB0aGUgcmVxdWVzdGlu
ZyB0aHJlYWQgYXBwcm9wcmlhdGVseToKKyAgICAgICAgIC0gUmVhZCBvZiB1bmtub3duIHZlcnNp
b24gb2YgdGhlIGlkZW50aWZpZXIgYmxvY2tzIHVudGlsIHRoZSB3cml0ZSBjcmVhdGVzIHRoZSB2
ZXJzaW9uCisgICAgICAgICAtIFdyaXRlIG9mIG5ldyB2ZXJzaW9uIG9mIHRoZSBpZGVudGlmaWVy
IGJsb2NrcyB1bnRpbCB0aGUgcmVhZHMgaGF2ZSByZXRpcmVkLCBvciBjcmVhdGVzIHBhcmFsbGVs
LCBuZXcgdmVyc2lvbgorICAgICAgICAgICBvZiB0aGUgY29udGVudCBpbiBjYXNlIG9mIGNvcHkt
b24td3JpdGUgc2NoZW1lcy4KKworICAgICAgICBJbiB0aGlzIGNvbW1pdCBvYmplY3RzIHBvaW50
ZWQgYnkgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgYXJlIGltbXV0YWJsZSB1bnRpbCBkZXN0
cm95ZWQsIHNvIHRoZXJlIGlzIG5vIHVwZGF0ZSBvcgorICAgICAgICBjb3B5LW9uLXdyaXRlIHNj
aGVtZSBoZXJlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZSk6
CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnZpZGVvRnJhbWVP
YmplY3RIZWFwIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmg6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cDo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcDo6flJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OnN0b3BMaXN0ZW5pbmdGb3JJ
UEMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6YWRkVmlk
ZW9GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpy
ZWxlYXNlVmlkZW9GcmFtZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcC5oOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5t
ZXNzYWdlcy5pbi4KKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcjo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVl
U2FtcGxlQ1YpOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6Y3JlYXRlTGF5
ZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAodHlw
ZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCk6CisgICAgICAgIChoZWFkZXJzX2Zv
cl90eXBlKToKKyAgICAgICAgKiBTaGFyZWQvSVBDVGVzdGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SVBDVGVzdGVyOjpzdGFydE1lc3NhZ2VUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6aXNU
ZXN0aW5nSVBDKToKKyAgICAgICAgKiBTaGFyZWQvSVBDVGVzdGVyLmg6CisgICAgICAgIChXZWJL
aXQ6OmlzVGVzdGluZ0lQQyk6CisgICAgICAgICogU2hhcmVkL09iamVjdElkZW50aWZpZXJSZWZl
cmVuY2VUcmFja2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVy
UmVmZXJlbmNlOjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYktpdDo6
T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U6OnZlcnNpb24gY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlOjpvcGVyYXRvcj09IGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTo6aXNIYXNoVGFibGVE
ZWxldGVkVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVh
ZFJlZmVyZW5jZTo6T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UpOgorICAgICAgICAoV2Vi
S2l0OjpPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZTo6aWRlbnRpZmllciBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlOjp2ZXJzaW9uIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2U6OnJl
ZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWFkUmVm
ZXJlbmNlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVy
UmVhZFJlZmVyZW5jZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmll
cldyaXRlUmVmZXJlbmNlOjpPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UpOgorICAgICAg
ICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U6OmlkZW50aWZpZXIgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U6OnZl
cnNpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZl
cmVuY2U6OnBlbmRpbmdSZWFkcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50
aWZpZXJXcml0ZVJlZmVyZW5jZTo6cmVmZXJlbmNlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlOjpyZXRpcmUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U6OmVuY29kZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTo6ZGVjb2RlKToK
KyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXI6Ok9iamVj
dElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyKToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRl
bnRpZmllclJlZmVyZW5jZVRyYWNrZXI6OnJlYWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpP
YmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcjo6d3JpdGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcjo6aWRlbnRpZmllciBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OmFkZCk6CisgICAgICAgIChXZWJLaXQ6Om9wZXJhdG9yPDwp
OgorICAgICAgICAoV1RGOjpEZWZhdWx0SGFzaDxXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZl
cmVuY2U8VD4+OjpoYXNoKToKKyAgICAgICAgKFdURjo6RGVmYXVsdEhhc2g8V2ViS2l0OjpPYmpl
Y3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+Pjo6ZXF1YWwpOgorICAgICAgICAqIFNoYXJlZC9UaHJl
YWRTYWZlT2JqZWN0SGVhcC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VGhyZWFkU2FmZU9i
amVjdEhlYXA6OlJlZmVyZW5jZVN0YXRlOjpSZWZlcmVuY2VTdGF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OkhlbGRUeXBlPjo6cmV0aXJlKToKKyAgICAgICAgKFdlYktpdDo6SGVsZFR5cGU+OjpyZXRp
cmVSZW1vdmUpOgorICAgICAgICAoV2ViS2l0OjpIZWxkVHlwZT46OmNsZWFyKToKKyAgICAgICAg
KiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFTYW1wbGVCeXRlUmFuZ2U6OnBsYXRmb3JtU2FtcGxlIGNv
bnN0KToKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxl
Qnl0ZVJhbmdlLmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBs
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVW
aWRlb0ZyYW1lUHJveHk6OnByb3BlcnRpZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRl
b0ZyYW1lUHJveHk6OlJlbW90ZVZpZGVvRnJhbWVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVZpZGVvRnJhbWVQcm94eTo6flJlbW90ZVZpZGVvRnJhbWVQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6d3JpdGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnJlYWQgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnByZXNlbnRhdGlvblRpbWUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnBsYXRmb3JtU2FtcGxlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb1JvdGF0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb01p
cnJvcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2
aWRlb1BpeGVsRm9ybWF0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFt
ZVByb3h5Ojp2aWRlb0ZyYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9G
cmFtZVByb3h5OjpkaXNjb25uZWN0R1BVUHJvY2Vzc0lmTmVlZGVkIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp3YWl0Rm9yV2FzSW5pdGlhbGl6ZWQgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmdwdVByb2Nlc3ND
b25uZWN0aW9uRGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJv
eHk6Ondhc0luaXRpYWxpemVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVWaWRlb0ZyYW1lUHJveHkuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVv
RnJhbWVQcm94eTo6UHJvcGVydGllczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzOjpkZWNvZGUpOgorICAgICAgICAoaXNU
eXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJv
eHkubWVzc2FnZXMuaW46IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rl
ci5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6flNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik6CisgICAgICAgIChXZWJLaXQ6
OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZSk6CisgICAgICAgIChXZWJL
aXQ6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9z
ZSk6CisgICAgICAgIChXZWJLaXQ6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZGlzY29ubmVj
dEdQVVByb2Nlc3NDb25uZWN0aW9uSWZOZWVkZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaDoKKwogMjAyMi0wMi0xMSAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1bR1RL
XSBCdWJibGV3cmFwTGF1bmNoZXIgbGVha3MgRC1CdXMgcHJveHkgc29ja2V0cwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5p
T1MuZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndl
YnJ0Yy5pT1MuZXhwCmluZGV4IGNhNTQ3M2E2MmFkOThiZjZiNGUwY2ViNjAyODg1NjQ1ZDkwZjdk
MjMuLmJiYmMwNTgyN2NmNzRhOTNhMDAyZTUwNzQ3ODIxMTBmY2Y1Y2RkZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9T
LmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGli
d2VicnRjLmlPUy5leHAKQEAgLTIyMyw4ICsyMjMsMTEgQEAgX19aTjZ3ZWJydGMyMmNyZWF0ZUxv
Y2FsSDI2NURlY29kZXJFVTEzYmxvY2tfcG9pbnRlckZ2UDEwX19DVkJ1ZmZlcmpqRQogX19aTjZ3
ZWJydGMyMWNyZWF0ZUxvY2FsVlA5RGVjb2RlckVVMTNibG9ja19wb2ludGVyRnZQMTBfX0NWQnVm
ZmVyampFCiBfX1pONndlYnJ0YzE5cmVsZWFzZUxvY2FsRGVjb2RlckVQdgogX19aTjZ3ZWJydGMx
MWRlY29kZUZyYW1lRVB2alBLaG0KLV9fWk42d2VicnRjMjR2aWRlb0RlY29kZXJUYXNrQ29tcGxl
dGVFUHZqUDEwX19DVkJ1ZmZlcmoKK19fWk42d2VicnRjMjR2aWRlb0RlY29kZXJUYXNrQ29tcGxl
dGVFUHZqalAxMF9fQ1ZCdWZmZXIKK19fWk42d2VicnRjMjR2aWRlb0RlY29kZXJUYXNrQ29tcGxl
dGVFUHZqalMwX1BGUDEwX19DVkJ1ZmZlclMwX0VQRnZTMF9FaWkKIF9fWk42d2VicnRjMjRzZXRW
aWRlb0RlY29kZXJDYWxsYmFja3NFUEZQdlJLTlNfMTRTZHBWaWRlb0Zvcm1hdEVFUEZpUzBfRVBG
aVMwX2pQS2htdHRFUEZpUzBfUzBfRQorX19aTjZ3ZWJydGMyNHRvV2ViUlRDVmlkZW9GcmFtZUJ1
ZmZlckVQdlBGUDEwX19DVkJ1ZmZlclMwX0VQRnZTMF9FaWkKK19fWk42d2VicnRjMjR2aWRlb0Zy
YW1lQnVmZmVyUHJvdmlkZXJFUktOU18xMFZpZGVvRnJhbWVFCiBfX1pONndlYnJ0YzE5c2V0RGVj
b2RlckZyYW1lU2l6ZUVQdnR0CiBfX1pONndlYnJ0YzE4UnRwQ29kZWNDYXBhYmlsaXR5QzFFdgog
X19aTjZ3ZWJydGMyNGVuY29kZXJWaWRlb1Rhc2tDb21wbGV0ZUVQdk5TXzE0VmlkZW9Db2RlY1R5
cGVFUEtobVJLTlNfMjJXZWJLaXRFbmNvZGVkRnJhbWVJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhw
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5p
T1NzaW0uZXhwCmluZGV4IGNhNTQ3M2E2MmFkOThiZjZiNGUwY2ViNjAyODg1NjQ1ZDkwZjdkMjMu
LmJiYmMwNTgyN2NmNzRhOTNhMDAyZTUwNzQ3ODIxMTBmY2Y1Y2RkZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2lt
LmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGli
d2VicnRjLmlPU3NpbS5leHAKQEAgLTIyMyw4ICsyMjMsMTEgQEAgX19aTjZ3ZWJydGMyMmNyZWF0
ZUxvY2FsSDI2NURlY29kZXJFVTEzYmxvY2tfcG9pbnRlckZ2UDEwX19DVkJ1ZmZlcmpqRQogX19a
TjZ3ZWJydGMyMWNyZWF0ZUxvY2FsVlA5RGVjb2RlckVVMTNibG9ja19wb2ludGVyRnZQMTBfX0NW
QnVmZmVyampFCiBfX1pONndlYnJ0YzE5cmVsZWFzZUxvY2FsRGVjb2RlckVQdgogX19aTjZ3ZWJy
dGMxMWRlY29kZUZyYW1lRVB2alBLaG0KLV9fWk42d2VicnRjMjR2aWRlb0RlY29kZXJUYXNrQ29t
cGxldGVFUHZqUDEwX19DVkJ1ZmZlcmoKK19fWk42d2VicnRjMjR2aWRlb0RlY29kZXJUYXNrQ29t
cGxldGVFUHZqalAxMF9fQ1ZCdWZmZXIKK19fWk42d2VicnRjMjR2aWRlb0RlY29kZXJUYXNrQ29t
cGxldGVFUHZqalMwX1BGUDEwX19DVkJ1ZmZlclMwX0VQRnZTMF9FaWkKIF9fWk42d2VicnRjMjRz
ZXRWaWRlb0RlY29kZXJDYWxsYmFja3NFUEZQdlJLTlNfMTRTZHBWaWRlb0Zvcm1hdEVFUEZpUzBf
RVBGaVMwX2pQS2htdHRFUEZpUzBfUzBfRQorX19aTjZ3ZWJydGMyNHRvV2ViUlRDVmlkZW9GcmFt
ZUJ1ZmZlckVQdlBGUDEwX19DVkJ1ZmZlclMwX0VQRnZTMF9FaWkKK19fWk42d2VicnRjMjR2aWRl
b0ZyYW1lQnVmZmVyUHJvdmlkZXJFUktOU18xMFZpZGVvRnJhbWVFCiBfX1pONndlYnJ0YzE5c2V0
RGVjb2RlckZyYW1lU2l6ZUVQdnR0CiBfX1pONndlYnJ0YzE4UnRwQ29kZWNDYXBhYmlsaXR5QzFF
dgogX19aTjZ3ZWJydGMyNGVuY29kZXJWaWRlb1Rhc2tDb21wbGV0ZUVQdk5TXzE0VmlkZW9Db2Rl
Y1R5cGVFUEtobVJLTlNfMjJXZWJLaXRFbmNvZGVkRnJhbWVJbmZvRQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhw
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5t
YWMuZXhwCmluZGV4IGNhNTQ3M2E2MmFkOThiZjZiNGUwY2ViNjAyODg1NjQ1ZDkwZjdkMjMuLjJh
NTdkY2E1YWYzOGVkZjNlM2EwZTlhNGVmZWY2NGM4YTYzZTllNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRj
Lm1hYy5leHAKQEAgLTIyMyw3ICsyMjMsMTAgQEAgX19aTjZ3ZWJydGMyMmNyZWF0ZUxvY2FsSDI2
NURlY29kZXJFVTEzYmxvY2tfcG9pbnRlckZ2UDEwX19DVkJ1ZmZlcmpqRQogX19aTjZ3ZWJydGMy
MWNyZWF0ZUxvY2FsVlA5RGVjb2RlckVVMTNibG9ja19wb2ludGVyRnZQMTBfX0NWQnVmZmVyampF
CiBfX1pONndlYnJ0YzE5cmVsZWFzZUxvY2FsRGVjb2RlckVQdgogX19aTjZ3ZWJydGMxMWRlY29k
ZUZyYW1lRVB2alBLaG0KLV9fWk42d2VicnRjMjR2aWRlb0RlY29kZXJUYXNrQ29tcGxldGVFUHZq
UDEwX19DVkJ1ZmZlcmoKK19fWk42d2VicnRjMjR2aWRlb0RlY29kZXJUYXNrQ29tcGxldGVFUHZq
alAxMF9fQ1ZCdWZmZXIKK19fWk42d2VicnRjMjR2aWRlb0RlY29kZXJUYXNrQ29tcGxldGVFUHZq
alMwX1BGUDEwX19DVkJ1ZmZlclMwX0VQRnZTMF9FaWkKK19fWk42d2VicnRjMjR0b1dlYlJUQ1Zp
ZGVvRnJhbWVCdWZmZXJFUHZQRlAxMF9fQ1ZCdWZmZXJTMF9FUEZ2UzBfRWlpCitfX1pONndlYnJ0
YzI0dmlkZW9GcmFtZUJ1ZmZlclByb3ZpZGVyRVJLTlNfMTBWaWRlb0ZyYW1lRQogX19aTjZ3ZWJy
dGMyNHNldFZpZGVvRGVjb2RlckNhbGxiYWNrc0VQRlB2UktOU18xNFNkcFZpZGVvRm9ybWF0RUVQ
RmlTMF9FUEZpUzBfalBLaG10dEVQRmlTMF9TMF9FCiBfX1pONndlYnJ0YzE5c2V0RGVjb2RlckZy
YW1lU2l6ZUVQdnR0CiBfX1pONndlYnJ0YzE4UnRwQ29kZWNDYXBhYmlsaXR5QzFFdgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXREZWNvZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXIuaAppbmRleCBiODIzZWQzMmNiMzNmYjNhNjc0
YjQyOTg0MDhjMmFiOGY1Y2IwNmFkLi5lYzczMmY1Y2NiYjRkNWE4Zjg5NjU2NzM4NWI1MWM3MTg2
YjU3OWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXIuaApAQCAtNTQs
NyArNTQsOCBAQCB1c2luZyBWaWRlb0RlY29kZXJSZWdpc3RlckRlY29kZUNvbXBsZXRlQ2FsbGJh
Y2sgPSBpbnQzMl90KCopKFdlYktpdFZpZGVvRGVjb2Rlcgogdm9pZCBzZXRWaWRlb0RlY29kZXJD
YWxsYmFja3MoVmlkZW9EZWNvZGVyQ3JlYXRlQ2FsbGJhY2ssIFZpZGVvRGVjb2RlclJlbGVhc2VD
YWxsYmFjaywgVmlkZW9EZWNvZGVyRGVjb2RlQ2FsbGJhY2ssIFZpZGVvRGVjb2RlclJlZ2lzdGVy
RGVjb2RlQ29tcGxldGVDYWxsYmFjayk7CiAKIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVv
RGVjb2RlckZhY3Rvcnk+IGNyZWF0ZVdlYktpdERlY29kZXJGYWN0b3J5KFdlYktpdEgyNjUsIFdl
YktpdFZQOSwgV2ViS2l0VlA5VlRCKTsKLXZvaWQgdmlkZW9EZWNvZGVyVGFza0NvbXBsZXRlKHZv
aWQqIGNhbGxiYWNrLCB1aW50MzJfdCB0aW1lU3RhbXAsIENWUGl4ZWxCdWZmZXJSZWYsIHVpbnQz
Ml90IHRpbWVTdGFtcFJUUCk7Cit2b2lkIHZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZSh2b2lkKiBj
YWxsYmFjaywgdWludDMyX3QgdGltZVN0YW1wLCB1aW50MzJfdCB0aW1lU3RhbXBSVFAsIENWUGl4
ZWxCdWZmZXJSZWYpOwordm9pZCB2aWRlb0RlY29kZXJUYXNrQ29tcGxldGUodm9pZCogY2FsbGJh
Y2ssIHVpbnQzMl90IHRpbWVTdGFtcCwgdWludDMyX3QgdGltZVN0YW1wUlRQLCB2b2lkKiwgR2V0
QnVmZmVyQ2FsbGJhY2ssIFJlbGVhc2VCdWZmZXJDYWxsYmFjaywgaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KTsKIAogdXNpbmcgTG9jYWxEZWNvZGVyID0gdm9pZCo7CiB1c2luZyBMb2NhbERlY29kZXJD
YWxsYmFjayA9IHZvaWQgKF4pKENWUGl4ZWxCdWZmZXJSZWYsIHVpbnQzMl90IHRpbWVTdGFtcCwg
dWludDMyX3QgdGltZVN0YW1wTnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXREZWNvZGVyLm1tIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXREZWNv
ZGVyLm1tCmluZGV4IGFhNDE4ODQ4NmQxYWJjNzAxOTY0NWE4YjU4ZDlmNzNhNTA0NmVjNTEuLmI3
ZTA2N2YwYzlmNDVjM2E2M2UzNDY5OTlkOWYxMGMzMDljN2Q1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVj
b2Rlci5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvV2ViS2l0L1dlYktpdERlY29kZXIubW0KQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgInNk
ay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVySDI2NC5oIgogI2lt
cG9ydCAic2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJIMjY1
LmgiCiAjaW1wb3J0ICJzZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVj
b2RlclZUQlZQOS5oIgorI2ltcG9ydCAic2RrL29iamMvbmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1
ZmZlci5oIgogCiBAaW50ZXJmYWNlIFdLX1JUQ0xvY2FsVmlkZW9IMjY0SDI2NVZQOURlY29kZXIg
OiBOU09iamVjdAogLSAoaW5zdGFuY2V0eXBlKWluaXRIMjY0RGVjb2RlcldpdGhDYWxsYmFjazoo
d2VicnRjOjpMb2NhbERlY29kZXJDYWxsYmFjayljYWxsYmFjazsKQEAgLTE3Myw3ICsxNzQsNyBA
QCBSZW1vdGVWaWRlb0RlY29kZXI6On5SZW1vdGVWaWRlb0RlY29kZXIoKQogICAgIHZpZGVvRGVj
b2RlckNhbGxiYWNrcygpLnJlbGVhc2VDYWxsYmFjayhtX2ludGVybmFsRGVjb2Rlcik7CiB9CiAK
LXZvaWQgdmlkZW9EZWNvZGVyVGFza0NvbXBsZXRlKHZvaWQqIGNhbGxiYWNrLCB1aW50MzJfdCB0
aW1lU3RhbXAsIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIHVpbnQzMl90IHRpbWVTdGFt
cFJUUCkKK3ZvaWQgdmlkZW9EZWNvZGVyVGFza0NvbXBsZXRlKHZvaWQqIGNhbGxiYWNrLCB1aW50
MzJfdCB0aW1lU3RhbXAsIHVpbnQzMl90IHRpbWVTdGFtcFJUUCwgQ1ZQaXhlbEJ1ZmZlclJlZiBw
aXhlbEJ1ZmZlcikKIHsKICAgICBhdXRvIHZpZGVvRnJhbWUgPSBWaWRlb0ZyYW1lOjpCdWlsZGVy
KCkuc2V0X3ZpZGVvX2ZyYW1lX2J1ZmZlcihwaXhlbEJ1ZmZlclRvRnJhbWUocGl4ZWxCdWZmZXIp
KQogICAgICAgICAuc2V0X3RpbWVzdGFtcF9ydHAodGltZVN0YW1wUlRQKQpAQCAtMTg1LDYgKzE4
NiwxOCBAQCB2b2lkIHZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZSh2b2lkKiBjYWxsYmFjaywgdWlu
dDMyX3QgdGltZVN0YW1wLCBDVlBpeGVsQnVmZmVyUgogICAgIHN0YXRpY19jYXN0PERlY29kZWRJ
bWFnZUNhbGxiYWNrKj4oY2FsbGJhY2spLT5EZWNvZGVkKHZpZGVvRnJhbWUpOwogfQogCit2b2lk
IHZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZSh2b2lkKiBjYWxsYmFjaywgdWludDMyX3QgdGltZVN0
YW1wLCB1aW50MzJfdCB0aW1lU3RhbXBSVFAsIHZvaWQqIHBvaW50ZXIsIEdldEJ1ZmZlckNhbGxi
YWNrIGdldEJ1ZmZlckNhbGxiYWNrLCBSZWxlYXNlQnVmZmVyQ2FsbGJhY2sgcmVsZWFzZUJ1ZmZl
ckNhbGxiYWNrLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgYXV0byB2aWRlb0ZyYW1l
ID0gVmlkZW9GcmFtZTo6QnVpbGRlcigpLnNldF92aWRlb19mcmFtZV9idWZmZXIodG9XZWJSVENW
aWRlb0ZyYW1lQnVmZmVyKHBvaW50ZXIsIGdldEJ1ZmZlckNhbGxiYWNrLCByZWxlYXNlQnVmZmVy
Q2FsbGJhY2ssIHdpZHRoLCBoZWlnaHQpKQorICAgICAgICAuc2V0X3RpbWVzdGFtcF9ydHAodGlt
ZVN0YW1wUlRQKQorICAgICAgICAuc2V0X3RpbWVzdGFtcF9tcygwKQorICAgICAgICAuc2V0X3Jv
dGF0aW9uKChWaWRlb1JvdGF0aW9uKVJUQ1ZpZGVvUm90YXRpb25fMCkKKyAgICAgICAgLmJ1aWxk
KCk7CisgICAgdmlkZW9GcmFtZS5zZXRfdGltZXN0YW1wKHRpbWVTdGFtcCk7CisKKyAgICBzdGF0
aWNfY2FzdDxEZWNvZGVkSW1hZ2VDYWxsYmFjayo+KGNhbGxiYWNrKS0+RGVjb2RlZCh2aWRlb0Zy
YW1lKTsKK30KKwogYm9vbCBSZW1vdGVWaWRlb0RlY29kZXI6OkNvbmZpZ3VyZShjb25zdCBTZXR0
aW5ncyYpCiB7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJL
aXRVdGlsaXRpZXMuaAppbmRleCBhMjNmYWE2ZWQ1N2RmN2MzMjJjNjcwYjc3MzVjYWI4M2M2NjE1
OTM0Li4yZWY4YTFlOTE1Mzg2MTFlZmU1YWY3MzRmODBjZDdhOWJhNGY1M2M2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdFV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmgKQEAgLTUyLDQgKzUyLDggQEAgQ1ZQ
aXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRlb0ZyYW1lJikgQ0Zf
UkVUVVJOU19SRVRBSU5FRDsKIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVC
dWZmZXI+IHBpeGVsQnVmZmVyVG9GcmFtZShDVlBpeGVsQnVmZmVyUmVmKTsKIGJvb2wgY29weVZp
ZGVvRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYsIHVpbnQ4X3QqKTsKIAordHlwZWRlZiBDVlBpeGVs
QnVmZmVyUmVmICgqR2V0QnVmZmVyQ2FsbGJhY2spKHZvaWQqKTsKK3R5cGVkZWYgdm9pZCAoKlJl
bGVhc2VCdWZmZXJDYWxsYmFjaykodm9pZCopOworcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6
VmlkZW9GcmFtZUJ1ZmZlcj4gdG9XZWJSVENWaWRlb0ZyYW1lQnVmZmVyKHZvaWQqLCBHZXRCdWZm
ZXJDYWxsYmFjaywgUmVsZWFzZUJ1ZmZlckNhbGxiYWNrLCBpbnQgd2lkdGgsIGludCBoZWlnaHQp
Owordm9pZCogdmlkZW9GcmFtZUJ1ZmZlclByb3ZpZGVyKGNvbnN0IFZpZGVvRnJhbWUmKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW0KaW5kZXggN2Y2ZmJi
MTFlNzY5M2FkNjZkZjkyNGI5M2Y0ZDI4ZTdlZTg5ZTBhOC4uY2ZhNzk2YzVjM2IwZGFhNTk0YzFj
YjE2NjQ3ZDMxNTk2NDVlOWVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW0KKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRV
dGlsaXRpZXMubW0KQEAgLTUyLDYgKzUyLDIxIEBAIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
OlZpZGVvRnJhbWVCdWZmZXI+IHBpeGVsQnVmZmVyVG9GcmFtZShDVlBpeGVsQnVmZmVyUmVmCiAg
ICAgcmV0dXJuIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8T2JqQ0ZyYW1lQnVmZmVyPihmcmFt
ZUJ1ZmZlcik7CiB9CiAKK3J0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZm
ZXI+IHRvV2ViUlRDVmlkZW9GcmFtZUJ1ZmZlcih2b2lkKiBwb2ludGVyLCBHZXRCdWZmZXJDYWxs
YmFjayBnZXRCdWZmZXJDYWxsYmFjaywgUmVsZWFzZUJ1ZmZlckNhbGxiYWNrIHJlbGVhc2VCdWZm
ZXJDYWxsYmFjaywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIHJldHVybiBuZXcgcnRj
OjpSZWZDb3VudGVkT2JqZWN0PE9iakNGcmFtZUJ1ZmZlcj4oT2JqQ0ZyYW1lQnVmZmVyOjpCdWZm
ZXJQcm92aWRlciB7IHBvaW50ZXIsIGdldEJ1ZmZlckNhbGxiYWNrLCByZWxlYXNlQnVmZmVyQ2Fs
bGJhY2sgfSwgd2lkdGgsIGhlaWdodCk7Cit9CisKK3ZvaWQqIHZpZGVvRnJhbWVCdWZmZXJQcm92
aWRlcihjb25zdCBWaWRlb0ZyYW1lJiBmcmFtZSkKK3sKKyAgICBhdXRvIGJ1ZmZlciA9IGZyYW1l
LnZpZGVvX2ZyYW1lX2J1ZmZlcigpOworICAgIGlmIChidWZmZXItPnR5cGUoKSAhPSBWaWRlb0Zy
YW1lQnVmZmVyOjpUeXBlOjprTmF0aXZlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxPYmpDRnJhbWVCdWZmZXIqPihidWZmZXIuZ2V0KCkpLT5mcmFt
ZV9idWZmZXJfcHJvdmlkZXIoKTsKKworfQorCiBzdGF0aWMgYm9vbCBDb3B5VmlkZW9GcmFtZVRv
UGl4ZWxCdWZmZXIoY29uc3Qgd2VicnRjOjpJNDIwQnVmZmVySW50ZXJmYWNlKiBmcmFtZSwgQ1ZQ
aXhlbEJ1ZmZlclJlZiBwaXhlbF9idWZmZXIpIHsKICAgICBSVENfRENIRUNLKHBpeGVsX2J1ZmZl
cik7CiAgICAgUlRDX0RDSEVDSyhDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVs
X2J1ZmZlcikgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1bGxSYW5n
ZSB8fCBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsX2J1ZmZlcikgPT0ga0NW
UGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hclZpZGVvUmFuZ2UpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0
aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5oCmlu
ZGV4IGY5NDFkYWQ2ZTRmZTU2OTAwZWNhOTA1MGMwYTgzNGVkYjg1NWY2ODEuLjNkMmViZDc3OTYz
YWJjYTQ0Y2NlZmUwNzNmMTExYmQ1YjUxZWQyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2ZS9zcmMvb2JqY19mcmFt
ZV9idWZmZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVyLmgKQEAgLTE0LDE2ICsxNCwy
NyBAQAogI2ltcG9ydCA8Q29yZVZpZGVvL0NvcmVWaWRlby5oPgogCiAjaW5jbHVkZSAiY29tbW9u
X3ZpZGVvL2luY2x1ZGUvdmlkZW9fZnJhbWVfYnVmZmVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
c3luY2hyb25pemF0aW9uL211dGV4LmgiCiAKIEBwcm90b2NvbCBSVENWaWRlb0ZyYW1lQnVmZmVy
OwogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAordHlwZWRlZiBDVlBpeGVsQnVmZmVyUmVmICgqR2V0
QnVmZmVyQ2FsbGJhY2spKHZvaWQqKTsKK3R5cGVkZWYgdm9pZCAoKlJlbGVhc2VCdWZmZXJDYWxs
YmFjaykodm9pZCopOworCiBjbGFzcyBPYmpDRnJhbWVCdWZmZXIgOiBwdWJsaWMgVmlkZW9GcmFt
ZUJ1ZmZlciB7CiAgcHVibGljOgogICBleHBsaWNpdCBPYmpDRnJhbWVCdWZmZXIoaWQ8UlRDVmlk
ZW9GcmFtZUJ1ZmZlcj4pOwogICB+T2JqQ0ZyYW1lQnVmZmVyKCkgb3ZlcnJpZGU7CiAKKyAgc3Ry
dWN0IEJ1ZmZlclByb3ZpZGVyIHsKKyAgICB2b2lkICpwb2ludGVyIHsgbnVsbHB0ciB9OworICAg
IEdldEJ1ZmZlckNhbGxiYWNrIGdldEJ1ZmZlciB7IG51bGxwdHIgfTsKKyAgICBSZWxlYXNlQnVm
ZmVyQ2FsbGJhY2sgcmVsZWFzZUJ1ZmZlciB7IG51bGxwdHIgfTsKKyAgfTsKKyAgT2JqQ0ZyYW1l
QnVmZmVyKEJ1ZmZlclByb3ZpZGVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOworCiAgIFR5cGUg
dHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgIGludCB3aWR0aCgpIGNvbnN0IG92ZXJyaWRlOwpA
QCAtMzIsMTEgKzQzLDE0IEBAIGNsYXNzIE9iakNGcmFtZUJ1ZmZlciA6IHB1YmxpYyBWaWRlb0Zy
YW1lQnVmZmVyIHsKICAgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IFRv
STQyMCgpIG92ZXJyaWRlOwogCiAgIGlkPFJUQ1ZpZGVvRnJhbWVCdWZmZXI+IHdyYXBwZWRfZnJh
bWVfYnVmZmVyKCkgY29uc3Q7CisgIHZvaWQqIGZyYW1lX2J1ZmZlcl9wcm92aWRlcigpIHsgcmV0
dXJuIGZyYW1lX2J1ZmZlcl9wcm92aWRlcl8ucG9pbnRlcjsgfQogCiAgcHJpdmF0ZToKICAgaWQ8
UlRDVmlkZW9GcmFtZUJ1ZmZlcj4gZnJhbWVfYnVmZmVyXzsKKyAgQnVmZmVyUHJvdmlkZXIgZnJh
bWVfYnVmZmVyX3Byb3ZpZGVyXzsKICAgaW50IHdpZHRoXzsKICAgaW50IGhlaWdodF87CisgIG11
dGFibGUgd2VicnRjOjpNdXRleCBtdXRleF87CiB9OwogCiBpZDxSVENWaWRlb0ZyYW1lQnVmZmVy
PiBUb09iakNWaWRlb0ZyYW1lQnVmZmVyKApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1
ZmZlci5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL25hdGl2ZS9zcmMvb2JqY19mcmFtZV9idWZmZXIubW0KaW5kZXggYTNkOWJhODEyZGE1OWY4
NTcyYTUzM2FkNjJjNTJhYjBhYzBhMThjMi4uMmY1NmFjYjI5NDNiZDRjNGQ3ZGZiNWRiMDIxYTAw
OTE4MjgwN2E4NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvbmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5tbQorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUv
c3JjL29iamNfZnJhbWVfYnVmZmVyLm1tCkBAIC0xMiw2ICsxMiw3IEBACiAKICNpbXBvcnQgImJh
c2UvUlRDVmlkZW9GcmFtZUJ1ZmZlci5oIgogI2ltcG9ydCAic2RrL29iamMvYXBpL3ZpZGVvX2Zy
YW1lX2J1ZmZlci9SVENOYXRpdmVJNDIwQnVmZmVyK1ByaXZhdGUuaCIKKyNpbXBvcnQgInNkay9v
YmpjL2NvbXBvbmVudHMvdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ0NWUGl4ZWxCdWZmZXIuaCIKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTU1LDEwICs1NiwxNSBAQCBjbGFzcyBPYmpDSTQyMEZy
YW1lQnVmZmVyIDogcHVibGljIEk0MjBCdWZmZXJJbnRlcmZhY2UgewogT2JqQ0ZyYW1lQnVmZmVy
OjpPYmpDRnJhbWVCdWZmZXIoaWQ8UlRDVmlkZW9GcmFtZUJ1ZmZlcj4gZnJhbWVfYnVmZmVyKQog
ICAgIDogZnJhbWVfYnVmZmVyXyhmcmFtZV9idWZmZXIpLCB3aWR0aF8oZnJhbWVfYnVmZmVyLndp
ZHRoKSwgaGVpZ2h0XyhmcmFtZV9idWZmZXIuaGVpZ2h0KSB7fQogCitPYmpDRnJhbWVCdWZmZXI6
Ok9iakNGcmFtZUJ1ZmZlcihCdWZmZXJQcm92aWRlciBwcm92aWRlciwgaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KQorICAgIDogZnJhbWVfYnVmZmVyX3Byb3ZpZGVyXyhwcm92aWRlciksIHdpZHRoXyh3
aWR0aCksIGhlaWdodF8oaGVpZ2h0KSB7IH0KKwogT2JqQ0ZyYW1lQnVmZmVyOjp+T2JqQ0ZyYW1l
QnVmZmVyKCkgewogI2lmIGRlZmluZWQoV0VCUlRDX1dFQktJVF9CVUlMRCkKICAgW2ZyYW1lX2J1
ZmZlcl8gY2xvc2VdOwogI2VuZGlmCisgIGlmIChmcmFtZV9idWZmZXJfcHJvdmlkZXJfLnJlbGVh
c2VCdWZmZXIpCisgICAgZnJhbWVfYnVmZmVyX3Byb3ZpZGVyXy5yZWxlYXNlQnVmZmVyKGZyYW1l
X2J1ZmZlcl9wcm92aWRlcl8ucG9pbnRlcik7CiB9CiAKIFZpZGVvRnJhbWVCdWZmZXI6OlR5cGUg
T2JqQ0ZyYW1lQnVmZmVyOjp0eXBlKCkgY29uc3QgewpAQCAtNzUsMTIgKzgxLDIxIEBAIGludCBP
YmpDRnJhbWVCdWZmZXI6OmhlaWdodCgpIGNvbnN0IHsKIAogcnRjOjpzY29wZWRfcmVmcHRyPEk0
MjBCdWZmZXJJbnRlcmZhY2U+IE9iakNGcmFtZUJ1ZmZlcjo6VG9JNDIwKCkgewogICBydGM6OnNj
b3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gYnVmZmVyID0KLSAgICAgIG5ldyBydGM6
OlJlZkNvdW50ZWRPYmplY3Q8T2JqQ0k0MjBGcmFtZUJ1ZmZlcj4oW2ZyYW1lX2J1ZmZlcl8gdG9J
NDIwXSk7CisgICAgICBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PE9iakNJNDIwRnJhbWVCdWZm
ZXI+KFt3cmFwcGVkX2ZyYW1lX2J1ZmZlcigpIHRvSTQyMF0pOwogCiAgIHJldHVybiBidWZmZXI7
CiB9CiAKIGlkPFJUQ1ZpZGVvRnJhbWVCdWZmZXI+IE9iakNGcmFtZUJ1ZmZlcjo6d3JhcHBlZF9m
cmFtZV9idWZmZXIoKSBjb25zdCB7CisgIGlmIChmcmFtZV9idWZmZXJfKQorICAgIHJldHVybiBm
cmFtZV9idWZmZXJfOworCisgIHsKKyAgICB3ZWJydGM6Ok11dGV4TG9jayBsb2NrKCZtdXRleF8p
OworICAgIGlmICghZnJhbWVfYnVmZmVyXyAmJiBmcmFtZV9idWZmZXJfcHJvdmlkZXJfLmdldEJ1
ZmZlcikKKyAgICAgIGNvbnN0X2Nhc3Q8T2JqQ0ZyYW1lQnVmZmVyKj4odGhpcyktPmZyYW1lX2J1
ZmZlcl8gPSBbW1JUQ0NWUGl4ZWxCdWZmZXIgYWxsb2NdIGluaXRXaXRoUGl4ZWxCdWZmZXI6ZnJh
bWVfYnVmZmVyX3Byb3ZpZGVyXy5nZXRCdWZmZXIoZnJhbWVfYnVmZmVyX3Byb3ZpZGVyXy5wb2lu
dGVyKV07CisgIH0KKwogICByZXR1cm4gZnJhbWVfYnVmZmVyXzsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKaW5kZXggMDhhMDFlNTc4ZDhhMzUyN2U2ZmVlNDQyY2U5MDgxMWFmNWJhZmFjMi4uODA1MDAx
M2VkNjVmNDBjODhmMDQzNjEyNzgwMjVkNDYwNGZiMzAxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC0xMzQ5LDYgKzEzNDksNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgcGxhdGZvcm0vVXNlckFnZW50LmgKICAgICBwbGF0Zm9ybS9Vc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uLmgKICAgICBwbGF0Zm9ybS9WYWxpZGF0aW9uQnViYmxlLmgKKyAgICBwbGF0
Zm9ybS9WaWRlb0ZyYW1lLmgKICAgICBwbGF0Zm9ybS9WaWRlb0ZyYW1lTWV0YWRhdGEuaAogICAg
IHBsYXRmb3JtL1ZpZGVvU2FtcGxlTWV0YWRhdGEuaAogICAgIHBsYXRmb3JtL1dlYkdMU3RhdGVU
cmFja2VyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMWVkZDcxODM4Y2QyN2QzN2MyOWQ3OWY0YWIzM2E4
YmQ3NWU3YTU4YS4uNjE0MmQyNDNkYjI4ODBjNTFlZmVmNThhMDRjOWIwYmE3NTNmNjA0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKQEAgLTE5MjYsNiArMTkyNiw3IEBAIHBsYXRmb3JtL1RocmVhZEdsb2JhbERh
dGEuY3BwCiBwbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwCiBwbGF0Zm9ybS9UaW1lci5jcHAKIHBs
YXRmb3JtL1VzZXJBY3Rpdml0eS5jcHAKK3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwCiBwbGF0Zm9y
bS9XZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCiBwbGF0Zm9ybS9XZWJHTFN0YXRlVHJhY2tl
ci5jcHAKIHBsYXRmb3JtL1dpZGdldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlNjM3ZjNmZDYxMWVkMGExZjdiYTVjZWJi
MDE2NWQ1NjQzYTNlZGE1Li4xNjRlNTJhZTU1ZjI0M2YyNTQ1ZDA5MzA2NDk4OThkYzc3NTQ2NDZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0yNDA3LDYgKzI0MDcsNyBAQAogCQk3QjEwMzM5RTI1NDk3MjE3MDBDOEMxQUMgLyog
R3JhcGhpY3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdM
Q1YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5QzI1NDk3
MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I0NDEwRTEyNzk1OEZDNTAwMEI0
RjhBIC8qIE1lZGlhU2FtcGxlVmlkZW9GcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0I0NDEwREYyNzk1OEZDNDAwMEI0RjhBIC8qIE1lZGlhU2Ft
cGxlVmlkZW9GcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTdCNUEzREFGMjdBQkY4QzUwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjVBM0RBRDI3QUJGOEM0
MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTdCNjA5NEREMjcwQzQ0QkQwMDY0ODM1QyAvKiBBTkdMRVV0aWxp
dGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JC
MzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I2REM4MTkyNTcxMkU5MjAwMzgw
QzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjZEQzgxNzI1NzEyRTkyMDAzODBD
NzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjcyMEIwQzI3NDNEQkE3MDAw
OEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjcyMEIwQTI3NDNEQkE2MDAw
OEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExNTIwLDYgKzExNTIx
LDggQEAKIAkJN0IxNjE5MTAyNzE5ODgwRTAwQzQwRUFDIC8qIFdlYlByb2Nlc3NHcmFwaGljc0Nv
bnRleHRHTENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHJvY2Vzc0dyYXBoaWNz
Q29udGV4dEdMQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDQxMERG
Mjc5NThGQzQwMDBCNEY4QSAvKiBNZWRpYVNhbXBsZVZpZGVvRnJhbWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTYW1wbGVWaWRlb0ZyYW1lLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCNDQxMEUyMjc5NThGREUwMDBCNEY4QSAvKiBNZWRpYVNhbXBs
ZVZpZGVvRnJhbWVBVkYubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVNhbXBsZVZpZGVv
RnJhbWVBVkYubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREFCMjdBQkY4
QzQwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFZpZGVvRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QjVBM0RBRDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBWaWRlb0ZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCNkRDODE1MjU3MTJFOTEwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFw
aGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFw
aGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMzAxNTEsNiArMzAxNTQsOCBAQAogCQkJCUEzQUY5RDgyMjAzMjUzMjQwMDZDQUQw
NiAvKiBVc2VyQWdlbnQuaCAqLywKIAkJCQk3MUM5MTYwNzFEMTQ4M0EzMDBBQ0E0N0QgLyogVXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oICovLAogCQkJCTgzQzQ1QjhEMURDMkI2N0MwMDg4
NzFCQSAvKiBWYWxpZGF0aW9uQnViYmxlLmggKi8sCisJCQkJN0I1QTNEQUIyN0FCRjhDNDAwNkM2
Rjk3IC8qIFZpZGVvRnJhbWUuY3BwICovLAorCQkJCTdCNUEzREFEMjdBQkY4QzQwMDZDNkY5NyAv
KiBWaWRlb0ZyYW1lLmggKi8sCiAJCQkJNDFERUVGQjQyNzE5QkExOTAwQ0I4RDc0IC8qIFZpZGVv
RnJhbWVNZXRhZGF0YS5oICovLAogCQkJCTQxNjA0OTMxMjc0M0IwRTcwMEE4NkZBMCAvKiBWaWRl
b1NhbXBsZU1ldGFkYXRhLmggKi8sCiAJCQkJNTE1Rjc5NTExQ0ZDQTNDNzAwQ0NFRDkzIC8qIFdl
YkNvcmVDcm9zc1RocmVhZENvcGllci5jcHAgKi8sCkBAIC0zNzgyNyw2ICszNzgzMiw3IEBACiAJ
CQkJMEYxQTBDMzgyMjlBNDgxODAwRDM3QURCIC8qIFZlbG9jaXR5RGF0YS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkNBMjU3MTUxMjkzQzAxMDAwN0EyNjNEIC8qIFZlcnRpY2FsUG9zaXRpb25DYWNo
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzRUVGM0IyNTc5OUZBMTAwNjU2M0JCIC8qIFZpZGVv
Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I1QTNEQUYyN0FCRjhDNTAwNkM2
Rjk3IC8qIFZpZGVvRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREVFRkI2MjcxOUJBMUEw
MENCOEQ3NCAvKiBWaWRlb0ZyYW1lTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREVF
RkIwMjcxOUIyOTAwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lUmVxdWVzdENhbGxiYWNrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MkIwRDRDMDFDNTdGRDY2MDA3N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlh
U2FtcGxlLmgKaW5kZXggMTgzOTk3MjI2MGY3MGUwMDczNjc5NzkxNzIyNjI1ZjU2YjI1M2YwOC4u
YjA2NTA0ZjU3ZWU5MzZiOGUxOTg4NzFmMzU3Mjc2NTM1MzA0YWZkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NZWRpYVNhbXBsZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbVN0cmluZy5oPgogCiB0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAq
Q01TYW1wbGVCdWZmZXJSZWY7Cit0eXBlZGVmIHN0cnVjdCBfX0NWQnVmZmVyICpDVlBpeGVsQnVm
ZmVyUmVmOwogdHlwZWRlZiBzdHJ1Y3QgX0dzdFNhbXBsZSBHc3RTYW1wbGU7CiB0eXBlZGVmIHN0
cnVjdCBPcGFxdWVNVFBsdWdpbkJ5dGVTb3VyY2UgKk1UUGx1Z2luQnl0ZVNvdXJjZVJlZjsKIHR5
cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24gKkNNRm9ybWF0RGVz
Y3JpcHRpb25SZWY7CkBAIC00OSw5ICs1MCwxMCBAQCBzdHJ1Y3QgUGxhdGZvcm1TYW1wbGUgewog
ICAgICAgICBDTVNhbXBsZUJ1ZmZlclR5cGUsCiAgICAgICAgIEdTdHJlYW1lclNhbXBsZVR5cGUs
CiAgICAgICAgIEJ5dGVSYW5nZVNhbXBsZVR5cGUsCisgICAgICAgIFJlbW90ZVZpZGVvRnJhbWVQ
cm94eVR5cGUsIC8vIEZJWE1FOiBUbyBiZSByZW1vdmVkIHdoZW4gVmlkZW9GcmFtZSBpcyBub3Qg
TWVkaWFTYW1wbGUuCiAgICAgfSB0eXBlOwogICAgIHVuaW9uIHsKLSAgICAgICAgTW9ja1NhbXBs
ZUJveCogbW9ja1NhbXBsZUJveDsKKyAgICAgICAgY29uc3QgTW9ja1NhbXBsZUJveCogbW9ja1Nh
bXBsZUJveDsKICAgICAgICAgQ01TYW1wbGVCdWZmZXJSZWYgY21TYW1wbGVCdWZmZXI7CiAgICAg
ICAgIEdzdFNhbXBsZSogZ3N0U2FtcGxlOwogICAgICAgICBzdGQ6OnBhaXI8TVRQbHVnaW5CeXRl
U291cmNlUmVmLCBDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBieXRlUmFuZ2VTYW1wbGU7CkBAIC02
Niw3ICs2OCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHNpemVfdCBz
aXplSW5CeXRlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBwcmVzZW50YXRp
b25TaXplKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnko
Y29uc3QgTWVkaWFUaW1lJikgPSAwOwpAQCAtOTAsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgICAg
IEhhc1N5bmNJbmZvID0gMSA8PCAzLAogICAgIH07CiAgICAgdmlydHVhbCBTYW1wbGVGbGFncyBm
bGFncygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2Ft
cGxlKCkgPSAwOworICAgIHZpcnR1YWwgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBj
b25zdCA9IDA7CiAKICAgICBzdHJ1Y3QgQnl0ZVJhbmdlIHsKICAgICAgICAgc2l6ZV90IGJ5dGVP
ZmZzZXQgeyAwIH07CkBAIC0xMTAsNiArMTExLDkgQEAgcHVibGljOgogI2lmIGRlZmluZWQoRU5B
QkxFX1ZJREVPKSAmJiBFTkFCTEVfVklERU8KICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8TWVk
aWFTYW1wbGVWaWRlb0ZyYW1lPiB2aWRlb0ZyYW1lKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxs
b3B0OyB9OwogI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdmlydHVhbCBDVlBpeGVs
QnVmZmVyUmVmIHBpeGVsQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfTsKKyNlbmRp
ZgogCiAgICAgYm9vbCBpc1N5bmMoKSBjb25zdCB7IHJldHVybiBmbGFncygpICYgSXNTeW5jOyB9
CiAgICAgYm9vbCBpc05vbkRpc3BsYXlpbmcoKSBjb25zdCB7IHJldHVybiBmbGFncygpICYgSXNO
b25EaXNwbGF5aW5nOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRl
b0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmYwNzY5YmE1ZTU0YTg4MGJlNjM5MDlhOWNkYTAzMjg3YTM3ZDNjZjQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcApAQCAtMCww
ICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJW
aWRlb0ZyYW1lLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1ZpZGVvRnJhbWU6OlZpZGVvRnJhbWUoKSA9IGRlZmF1bHQ7CisKK1ZpZGVvRnJh
bWU6On5WaWRlb0ZyYW1lKCkgPSBkZWZhdWx0OworCitNZWRpYVRpbWUgVmlkZW9GcmFtZTo6ZGVj
b2RlVGltZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IHsgfTsKK30KKworTWVkaWFUaW1lIFZpZGVvRnJhbWU6OmR1cmF0aW9uKCkgY29uc3QKK3sKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OworfQorCitBdG9tU3RyaW5n
IFZpZGVvRnJhbWU6OnRyYWNrSUQoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiB7IH07Cit9CisKK3NpemVfdCBWaWRlb0ZyYW1lOjpzaXplSW5CeXRlcygp
IGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisK
K3ZvaWQgVmlkZW9GcmFtZTo6b2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYpCit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgVmlkZW9GcmFtZTo6c2V0VGlt
ZXN0YW1wcyhjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKQoreworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworfQorCitib29sIFZpZGVvRnJhbWU6OmlzRGl2aXNhYmxlKCkgY29u
c3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3N0ZDo6cGFpcjxSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+LCBSZWZQdHI8V2ViQ29yZTo6
TWVkaWFTYW1wbGU+PiBWaWRlb0ZyYW1lOjpkaXZpZGUoY29uc3QgTWVkaWFUaW1lJiwgVXNlRW5k
VGltZSkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyBudWxscHRy
LCBudWxscHRyIH07Cit9CisKK1JlZjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gVmlkZW9GcmFtZTo6
Y3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25zdAoreworICAgIENSQVNIKCk7Cit9CisKK01l
ZGlhU2FtcGxlOjpTYW1wbGVGbGFncyBWaWRlb0ZyYW1lOjpmbGFncygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE1lZGlhU2FtcGxlOjpTYW1wbGVGbGFnczo6Tm9uZTsKK30KKworc3RkOjpvcHRpb25h
bDxNZWRpYVNhbXBsZTo6Qnl0ZVJhbmdlPiBWaWRlb0ZyYW1lOjpieXRlUmFuZ2UoKSBjb25zdAor
eworICAgIC8vIEZJWE1FOiBSZW1vdmUgZnJvbSB0aGUgYmFzZSBjbGFzcy4KKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCit2b2lkIFZpZGVv
RnJhbWU6OmR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdAoreworfQorCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2MzFmZDEzZTIyZTMxMjI2
NjUwMDE0YmFmNzhkZWE5MGNhYTZmYjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlh
U2FtcGxlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gQSBjbGFzcyByZXByZXNlbnRp
bmcgYSB2aWRlbyBmcmFtZSBmcm9tIGEgZGVjb2RlciwgY2FwdHVyZSBzb3VyY2UsIG9yIHNpbWls
YXIuCisvLyBGSVhNRTogQ3VycmVudGx5IGZvciBpbXBsZW1lbnRhdGlvbiBwdXJwb3NlcyBpbmhl
cnRzIGZyb20gTWVkaWFTYW1wbGUgdW50aWwgY2FwdHVyZSBjb2RlCisvLyBzdG9wcyByZWZlcnJp
bmcgdG8gTWVkaWFTYW1wbGUKK2NsYXNzIFZpZGVvRnJhbWUgOiBwdWJsaWMgTWVkaWFTYW1wbGUg
eworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIH5WaWRlb0ZyYW1lKCk7CisKK3Byb3RlY3Rl
ZDoKKyAgICBXRUJDT1JFX0VYUE9SVCBWaWRlb0ZyYW1lKCk7CisKK3ByaXZhdGU6CisgICAgLy8g
RklYTUU6IFRoZXNlIGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgdGhlc2Ugb2JqZWN0
cy4KKyAgICAvLyBXZWJDb3JlOjpNZWRpYVNhbXBsZSBvdmVycmlkZXMuCisgICAgV0VCQ09SRV9F
WFBPUlQgTWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBBdG9tU3RyaW5nIHRyYWNrSUQoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
aXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFU
aW1lJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0RpdmlzYWJsZSgpIGNvbnN0
IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxSZWZQdHI8TWVkaWFTYW1wbGU+
LCBSZWZQdHI8TWVkaWFTYW1wbGU+PiBkaXZpZGUoY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRp
b25UaW1lLCBVc2VFbmRUaW1lID0gVXNlRW5kVGltZTo6RG9Ob3RVc2UpIGZpbmFsOworICAgIFdF
QkNPUkVfRVhQT1JUIFJlZjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWlu
Z0NvcHkoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTYW1wbGVGbGFncyBmbGFn
cygpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJh
bmdlPiBieXRlUmFuZ2UoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBmaW5hbDsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaApp
bmRleCBjZDEwZDljMDVjYjhhMWQ4NmU2NDNkNWEzZmFhYWU1Yzc0ZjA4Nzk5Li5mMWRkOTE5MDFm
ODQ5ZTA5YTI0NjY0OWZjZGRhNzhkMGRkYzlhY2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKQEAgLTU0LDYgKzU0LDcg
QEAgcHVibGljOgogICAgIENWUGl4ZWxCdWZmZXJSZWYgaW1hZ2VCdWZmZXIoKSBjb25zdCB7IHJl
dHVybiBtX2ltYWdlQnVmZmVyLmdldCgpOyB9CiAKICAgICB2b2lkIHNldE93bmVyc2hpcElkZW50
aXR5KGNvbnN0IFByb2Nlc3NJZGVudGl0eSYpOworICAgIHZvaWQgY2xlYXJJT1N1cmZhY2UoKSB7
IG1faW9TdXJmYWNlID0gbnVsbHB0cjsgfQogCiAgICAgY29uc3QgTWVkaWFUaW1lJiB0aW1lKCkg
Y29uc3QgeyByZXR1cm4gbV90aW1lOyB9CiAgICAgdWludDMyX3QgdmlkZW9Gb3JtYXQoKSBjb25z
dCB7IHJldHVybiBtX3ZpZGVvRm9ybWF0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCmluZGV4IGMxMjZiOTNlODcw
NmY5NTUzMGY2MTI2ZjhhZDI1ZmFmNjIyMmFkNzEuLjliZjRiMGI4ZDVjNDgxYTUzNGZkOTBjZjE2
Yzk1NTlmYjZjZDcxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xv
Y2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCkBAIC0zMzQsNiArMzM0LDkgQEAgdm9pZCBM
b2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZShNZWRpYVNhbXBsZSYg
c2FtcGxlKQogdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBs
ZUJ1ZmZlcihNZWRpYVNhbXBsZSYgc2FtcGxlKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOworICAgIC8vIEZJWE1FOiBMb2NhbCBwbGF5YmFjayBvZiBSZW1vdGVWaWRlb0ZyYW1lUHJv
eHkgaXMgbm90IGltcGxlbWVudGVkLgorICAgIGlmICghaXM8TWVkaWFTYW1wbGVBVkZPYmpDPihz
YW1wbGUpKQorICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHNhbXBsZVRvRW5xdWV1ZSA9IHNh
bXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcjsKICAgICBhdXRvIG5v
dyA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShNb25vdG9uaWNUaW1lOjpub3coKS5zZWNv
bmRzU2luY2VFcG9jaCgpLnZhbHVlKCkgKyByZW5kZXJlckxhdGVuY3kpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDLm1tCmluZGV4IDJiYmQ2YTRjYjBkMjJkMmRmOTk3NzVlZTVlZTI3Yzc4YTIwZDU5
NTUuLjQyZmQxNzQ4N2VhNmNkMTcxMDUwNTA1ZmY1ZjNmZjVlZGZiZTdlMTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMubW0KQEAgLTIzMCwxMCArMjMwLDkgQEAgTWVkaWFQbGF5ZXI6OlN1cHBv
cnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnN1cHBvcnRzVHlw
ZShjb24KIAogc3RhdGljIGlubGluZSBDR0FmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybWF0
aW9uTWF0cml4KE1lZGlhU2FtcGxlJiBzYW1wbGUpCiB7Ci0gICAgQ01TYW1wbGVCdWZmZXJSZWYg
c2FtcGxlQnVmZmVyID0gc2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVm
ZmVyOwotICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBp
eGVsQnVmZmVyUmVmPihQQUw6OkNNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIoc2FtcGxlQnVm
ZmVyKSk7Ci0gICAgc2l6ZV90IHdpZHRoID0gQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoKHBpeGVsQnVm
ZmVyKTsKLSAgICBzaXplX3QgaGVpZ2h0ID0gQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChwaXhlbEJ1
ZmZlcik7CisgICAgYXV0byBzaXplID0gc2FtcGxlLnByZXNlbnRhdGlvblNpemUoKTsKKyAgICBz
aXplX3Qgd2lkdGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNpemUud2lkdGgoKSk7CisgICAgc2l6
ZV90IGhlaWdodCA9IHN0YXRpY19jYXN0PHNpemVfdD4oc2l6ZS5oZWlnaHQoKSk7CiAgICAgaWYg
KCF3aWR0aCB8fCAhaGVpZ2h0KQogICAgICAgICByZXR1cm4gQ0dBZmZpbmVUcmFuc2Zvcm1JZGVu
dGl0eTsKIApAQCAtOTk0LDggKzk5Myw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSgpCiAgICAgaWYgKCFtX2ltYWdl
UGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01TYW1w
bGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZS0+cGxhdGZv
cm1TYW1wbGUoKS5zYW1wbGUuY21TYW1wbGVCdWZmZXIpKTsKLSAgICBtX2ltYWdlUGFpbnRlci5j
Z0ltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNv
bmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpKTsKKyAgICBp
ZiAoYXV0byBwaXhlbEJ1ZmZlciA9IG1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlLT5waXhlbEJ1
ZmZlcigpKQorICAgICAgICBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID0gTmF0aXZlSW1hZ2U6OmNy
ZWF0ZShtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9t
UGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2Ft
cGxlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKaW5kZXggNjNkYjljMDAzYzA1MTljNjY1NjYx
MjFlN2M2ZmI1MWRmMmY3NzFjMS4uNWI0ZjdmMDBkYjMzYTViY2RmNjU2YzYwMjJmMTQ4MzRmNDFj
NTkwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKQEAg
LTU0LDEzICs1NCwxMiBAQCBwdWJsaWM6CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBBdG9tU3RyaW5nIHRyYWNrSUQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2lkOyB9Ci0gICAgdm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0cmluZyYgaWQpIG92ZXJy
aWRlIHsgbV9pZCA9IGlkOyB9CiAKICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVycmlkZTsKLSAgICBQbGF0Zm9ybVNh
bXBsZSBwbGF0Zm9ybVNhbXBsZSgpIG92ZXJyaWRlOworICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRm
b3JtU2FtcGxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+
IGJ5dGVSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHVt
cChQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgb2Zmc2V0VGltZXN0YW1w
c0J5KGNvbnN0IE1lZGlhVGltZSYpIG92ZXJyaWRlOwpAQCAtNzMsNiArNzIsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCB2aWRlb01pcnJvcmVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9taXJy
b3JlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHVpbnQzMl90IHZpZGVvUGl4ZWxGb3JtYXQoKSBj
b25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPE1lZGlhU2FtcGxl
VmlkZW9GcmFtZT4gdmlkZW9GcmFtZSgpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JU
IENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIoKSBjb25zdCBmaW5hbDsKICAgICBDTVNhbXBs
ZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZS5nZXQoKTsg
fQogCiAgICAgYm9vbCBpc0hvbW9nZW5lb3VzKCkgY29uc3Q7CkBAIC05NywzICs5Nyw3IEBAIHBy
b3RlY3RlZDoKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakMpCisgICAgc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkgeyByZXR1
cm4gbWVkaWFTYW1wbGUucGxhdGZvcm1TYW1wbGUoKS50eXBlID09IFdlYkNvcmU6OlBsYXRmb3Jt
U2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGU7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5E
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQppbmRleCAy
Y2U2Y2VkZWE1NWRmZTQyOTUzYzJjOWJmMmYyNjllYTEzYzQ2YzNiLi41MDA0MzQwZmVmNDllNDJl
YjJmZGY4MzRmZmMyNzkxNTNmNTgxNGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTYW1wbGVBVkZPYmpDLm1tCkBAIC0xNTMsNyArMTUzLDcgQEAgc2l6ZV90IE1lZGlhU2FtcGxl
QVZGT2JqQzo6c2l6ZUluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiBQQUw6OkNNU2FtcGxlQnVm
ZmVyR2V0VG90YWxTYW1wbGVTaXplKG1fc2FtcGxlLmdldCgpKTsKIH0KIAotUGxhdGZvcm1TYW1w
bGUgTWVkaWFTYW1wbGVBVkZPYmpDOjpwbGF0Zm9ybVNhbXBsZSgpCitQbGF0Zm9ybVNhbXBsZSBN
ZWRpYVNhbXBsZUFWRk9iakM6OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKIHsKICAgICBQbGF0Zm9y
bVNhbXBsZSBzYW1wbGUgPSB7IFBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGUsIHsg
LmNtU2FtcGxlQnVmZmVyID0gbV9zYW1wbGUuZ2V0KCkgfSB9OwogICAgIHJldHVybiBzYW1wbGU7
CkBAIC01NTYsNCArNTU2LDkgQEAgc3RkOjpvcHRpb25hbDxNZWRpYVNhbXBsZTo6Qnl0ZVJhbmdl
PiBNZWRpYVNhbXBsZUFWRk9iakM6OmJ5dGVSYW5nZUZvckF0dGFjaG1lbnQKICAgICByZXR1cm4g
eyB7IENoZWNrZWRTaXplKGJ5dGVPZmZzZXQpLCBzaW5nbGVTaXplRW50cnkgfSB9OwogfQogCitD
VlBpeGVsQnVmZmVyUmVmIE1lZGlhU2FtcGxlQVZGT2JqQzo6cGl4ZWxCdWZmZXIoKSBjb25zdAor
eworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihQQUw6OkNNU2FtcGxl
QnVmZmVyR2V0SW1hZ2VCdWZmZXIobV9zYW1wbGUuZ2V0KCkpKTsKK30KKwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxl
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVNhbXBsZUdTdHJlYW1lci5jcHAKaW5kZXggOWU3YzA4OTYwNmE3YjEzOWE5YTYyMzhl
NTFkZjhmMGZkZWQ3ZDMzNy4uMjdmOTc5NWVhNGRhOGE3NDgyMDY5MzdkNDIzZDY4YmI1NjM1YmQw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhU2FtcGxlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuY3BwCkBAIC0yMzUsNyArMjM1
LDcgQEAgdm9pZCBNZWRpYVNhbXBsZUdTdHJlYW1lcjo6b2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0
IE1lZGlhVGltZSYgdGltZXN0YW1wT2Zmc2V0KQogICAgIH0KIH0KIAotUGxhdGZvcm1TYW1wbGUg
TWVkaWFTYW1wbGVHU3RyZWFtZXI6OnBsYXRmb3JtU2FtcGxlKCkKK1BsYXRmb3JtU2FtcGxlIE1l
ZGlhU2FtcGxlR1N0cmVhbWVyOjpwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0CiB7CiAgICAgUGxhdGZv
cm1TYW1wbGUgc2FtcGxlID0geyBQbGF0Zm9ybVNhbXBsZTo6R1N0cmVhbWVyU2FtcGxlVHlwZSwg
eyAuZ3N0U2FtcGxlID0gbV9zYW1wbGUuZ2V0KCkgfSB9OwogICAgIHJldHVybiBzYW1wbGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFTYW1wbGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oCmluZGV4IDFkNzFhMzM5NjljZmJjNjc1ZGVl
Y2VhNzhlNjRmMmQ2ODk5ZTQxZWIuLjNiNWE2OWFhNzZhNmFhZjE3YTU2MTc2YzFmYjIzOWE0Zjkx
MGIwYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oCkBAIC01Myw3ICs1Myw2
IEBAIHB1YmxpYzoKICAgICBNZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fZHRzOyB9CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9kdXJhdGlvbjsgfQogICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fdHJhY2tJZDsgfQotICAgIHZvaWQgc2V0VHJhY2tJRChjb25zdCBT
dHJpbmcmIHRyYWNrSWQpIG92ZXJyaWRlIHsgbV90cmFja0lkID0gdHJhY2tJZDsgfQogICAgIHNp
emVfdCBzaXplSW5CeXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2l6ZTsgfQogICAg
IEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9w
cmVzZW50YXRpb25TaXplOyB9CiAgICAgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVk
aWFUaW1lJikgb3ZlcnJpZGU7CkBAIC02Miw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBzdGQ6OnBh
aXI8UmVmUHRyPE1lZGlhU2FtcGxlPiwgUmVmUHRyPE1lZGlhU2FtcGxlPj4gZGl2aWRlKGNvbnN0
IE1lZGlhVGltZSYsIFVzZUVuZFRpbWUpIG92ZXJyaWRlICB7IHJldHVybiB7IG51bGxwdHIsIG51
bGxwdHIgfTsgfQogICAgIFJlZjxNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0NvcHko
KSBjb25zdCBvdmVycmlkZTsKICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fZmxhZ3M7IH0KLSAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgp
IG92ZXJyaWRlOworICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiBn
ZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmluZGV4
IDY4MjczZWJmN2YwM2E4YTkyNjhjMGQ4OGY1MTFlM2Y2YzI5MzUwOTIuLjM5ZTNlN2UyM2VhMWYx
NmQ2MWEzMjA2NDM1YmFhNzUyZDlhNmQ2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC0z
MCw2ICszMCw3IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJJbWFnZVRyYW5z
ZmVyU2Vzc2lvblZULmgiCisjaW5jbHVkZSAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCiAjZW5kaWYK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTY5LDYgKzE3MCwxNCBAQCB2b2lkIFJlYWx0aW1l
VmlkZW9Tb3VyY2U6OnNvdXJjZVN0b3BwZWQoKQogI2lmIFBMQVRGT1JNKENPQ09BKQogUmVmUHRy
PE1lZGlhU2FtcGxlPiBSZWFsdGltZVZpZGVvU291cmNlOjphZGFwdFZpZGVvU2FtcGxlKE1lZGlh
U2FtcGxlJiBzYW1wbGUpCiB7CisgICAgaWYgKHNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnR5cGUg
IT0gUGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZSkgeworICAgICAgICAvLyBGSVhN
RTogU3VwcG9ydCBtb3JlIGVmZmljaWVudGx5IGRvd25zYW1wbGluZyBvZiByZW1vdGUgdmlkZW8g
ZnJhbWVzIGJ5IGRvd25zYW1wbGluZyBpbiBHUFVQcm9jZXNzLgorICAgICAgICBhdXRvIG5ld1Nh
bXBsZSA9IE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUoc2FtcGxlLnBpeGVs
QnVmZmVyKCksIHNhbXBsZS52aWRlb1JvdGF0aW9uKCksIHNhbXBsZS52aWRlb01pcnJvcmVkKCks
IHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksIHsgfSk7CisgICAgICAgIGlmICghbmV3U2FtcGxl
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBhZGFwdFZpZGVv
U2FtcGxlKCpuZXdTYW1wbGUpOworICAgIH0KKyAgICBBU1NFUlQoc2FtcGxlLnBsYXRmb3JtU2Ft
cGxlKCkudHlwZSA9PSBQbGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVCdWZmZXJUeXBlKTsKICAgICBp
ZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24gfHwgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+cGl4
ZWxGb3JtYXQoKSAhPSBzYW1wbGUudmlkZW9QaXhlbEZvcm1hdCgpKQogICAgICAgICBtX2ltYWdl
VHJhbnNmZXJTZXNzaW9uID0gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlKHNhbXBsZS52
aWRlb1BpeGVsRm9ybWF0KCksIG1fc2hvdWxkVXNlSU9TdXJmYWNlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EuaAppbmRleCBkMGZlOGUwNjU4MjJm
ODA3ZWJiNGQ2NWEzMDdiNGJlYzBiOGZhYTYyLi42NDY2ZDYxOGRlNzQ5ZTVjNWY5MjYxZDI1MmRk
OWIwYzE5ZTFhNTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291
cmNlQ29jb2EuaApAQCAtMjksNiArMjksNyBAQAogCiAjaWYgVVNFKExJQldFQlJUQykKIAorI2lu
Y2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291
cmNlLmgiCiAKIHVzaW5nIENNU2FtcGxlQnVmZmVyUmVmID0gc3RydWN0IG9wYXF1ZUNNU2FtcGxl
QnVmZmVyKjsKQEAgLTQ5LDYgKzUwLDggQEAgcHJpdmF0ZToKICAgICBSZWFsdGltZUluY29taW5n
VmlkZW9Tb3VyY2VDb2NvYShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNrSW50
ZXJmYWNlPiYmLCBTdHJpbmcmJik7CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHBp
eGVsQnVmZmVyRnJvbVZpZGVvRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJik7CiAgICAg
Q1ZQaXhlbEJ1ZmZlclBvb2xSZWYgcGl4ZWxCdWZmZXJQb29sKHNpemVfdCB3aWR0aCwgc2l6ZV90
IGhlaWdodCwgd2VicnRjOjpCdWZmZXJUeXBlKTsKKyAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHRv
VmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmLCBNZWRpYVNhbXBsZTo6VmlkZW9S
b3RhdGlvbik7CisgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBjcmVhdGVNZWRpYVNhbXBsZUZyb21D
VlBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9u
LCBpbnQ2NF90KTsKIAogICAgIC8vIHJ0Yzo6VmlkZW9TaW5rSW50ZXJmYWNlCiAgICAgdm9pZCBP
bkZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tCmluZGV4IDUzN2VhMGI1MTEzMWNj
YzFjODVkMGIwM2VjM2E3NDJjYjYyNzk0NmQuLmExMDQ3YTNlODJiOGMyMTdlNGQwNTM2YmQ1NGIx
YTcwZWFhMTdjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291
cmNlQ29jb2EubW0KQEAgLTExOCw3ICsxMTgsMzMgQEAgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OnBpeGVsQnVmZmVyUG9vbChzaXplX3Qgd2kK
ICAgICByZXR1cm4gbV9waXhlbEJ1ZmZlclBvb2wuZ2V0KCk7CiB9CiAKLVJldGFpblB0cjxDVlBp
eGVsQnVmZmVyUmVmPiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6cGl4ZWxCdWZm
ZXJGcm9tVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lKQorUmVmUHRy
PE1lZGlhU2FtcGxlPiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6Y3JlYXRlTWVk
aWFTYW1wbGVGcm9tQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCBN
ZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgaW50NjRfdCB0aW1lU3RhbXApCit7
CisgICAgQ01TYW1wbGVUaW1pbmdJbmZvIHRpbWluZ0luZm87CisgICAgdGltaW5nSW5mby5wcmVz
ZW50YXRpb25UaW1lU3RhbXAgPSBQQUw6OkNNVGltZU1ha2UodGltZVN0YW1wLCAxMDAwMDAwKTsK
KyAgICB0aW1pbmdJbmZvLmRlY29kZVRpbWVTdGFtcCA9IFBBTDo6a0NNVGltZUludmFsaWQ7Cisg
ICAgdGltaW5nSW5mby5kdXJhdGlvbiA9IFBBTDo6a0NNVGltZUludmFsaWQ7CisKKyAgICBDTVZp
ZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb247CisgICAgT1NTdGF0dXMg
b3N0YXR1cyA9IFBBTDo6Q01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlRm9ySW1hZ2VCdWZm
ZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKENWSW1hZ2VCdWZmZXJSZWYpcGl4ZWxCdWZmZXIsICZm
b3JtYXREZXNjcmlwdGlvbik7CisgICAgaWYgKG9zdGF0dXMgIT0gbm9FcnIpIHsKKyAgICAgICAg
RVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAiRmFpbGVkIHRvIGluaXRp
YWxpemUgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uIHdpdGggZXJyb3IgIiwgc3RhdGljX2Nhc3Q8
aW50Pihvc3RhdHVzKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIENN
U2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlcjsKKyAgICBvc3RhdHVzID0gUEFMOjpDTVNhbXBs
ZUJ1ZmZlckNyZWF0ZVJlYWR5V2l0aEltYWdlQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIChD
VkltYWdlQnVmZmVyUmVmKXBpeGVsQnVmZmVyLCBmb3JtYXREZXNjcmlwdGlvbiwgJnRpbWluZ0lu
Zm8sICZzYW1wbGVCdWZmZXIpOworICAgIENGUmVsZWFzZShmb3JtYXREZXNjcmlwdGlvbik7Cisg
ICAgaWYgKG9zdGF0dXMgIT0gbm9FcnIpIHsKKyAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0
cigpLCBMT0dJREVOVElGSUVSLCAiRmFpbGVkIHRvIGNyZWF0ZSB0aGUgc2FtcGxlIGJ1ZmZlciB3
aXRoIGVycm9yICIsIHN0YXRpY19jYXN0PGludD4ob3N0YXR1cykpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKKyAgICBhdXRvIHNhbXBsZSA9IGFkb3B0Q0Yoc2FtcGxlQnVmZmVy
KTsKKyAgICByZXR1cm4gTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUoc2FtcGxlLmdldCgpLCBy
b3RhdGlvbik7Cit9CisKK1JlZlB0cjxNZWRpYVNhbXBsZT4gUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlQ29jb2E6OnRvVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1l
LCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKIHsKICAgICBpZiAobXV0ZWQo
KSkgewogICAgICAgICBpZiAoIW1fYmxhY2tGcmFtZSB8fCBtX2JsYWNrRnJhbWVXaWR0aCAhPSBm
cmFtZS53aWR0aCgpIHx8IG1fYmxhY2tGcmFtZUhlaWdodCAhPSBmcmFtZS5oZWlnaHQoKSkgewpA
QCAtMTI2LDEyICsxNTIsMTYgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IFJlYWx0aW1l
SW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpwaXhlbEJ1ZmZlckZyb21WaWQKICAgICAgICAgICAg
IG1fYmxhY2tGcmFtZUhlaWdodCA9IGZyYW1lLmhlaWdodCgpOwogICAgICAgICAgICAgbV9ibGFj
a0ZyYW1lID0gY3JlYXRlQmxhY2tQaXhlbEJ1ZmZlcihtX2JsYWNrRnJhbWVXaWR0aCwgbV9ibGFj
a0ZyYW1lSGVpZ2h0KTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbV9ibGFja0ZyYW1lLmdl
dCgpOworICAgICAgICByZXR1cm4gY3JlYXRlTWVkaWFTYW1wbGVGcm9tQ1ZQaXhlbEJ1ZmZlciht
X2JsYWNrRnJhbWUuZ2V0KCksIHJvdGF0aW9uLCBmcmFtZS50aW1lc3RhbXBfdXMoKSk7CiAgICAg
fQogCisgICAgLy8gRklYTUU6IERldGVjdCB0aGUgY2FzZSBvZiBmcmFtZSBoYXZpbmcgYSBGcmFt
ZUJ1ZmZlclByb3ZpZGVyLgorICAgIGlmIChhdXRvIHByb3ZpZGVyID0gd2VicnRjOjp2aWRlb0Zy
YW1lQnVmZmVyUHJvdmlkZXIoZnJhbWUpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWVk
aWFTYW1wbGUqPihwcm92aWRlcik7CisKICAgICAvLyBJbiBjYXNlIG9mIGluIG1lbW9yeSBzYW1w
bGVzLCB3ZSBoYXZlIG5vbiBpbnRlcmxlYXZlZCBZVVYgZGF0YSB3aGlsZSBDVlBpeGVsQnVmZmVy
cyBwcmVmZXIgaW50ZXJsZWF2ZWQgWVVWIGRhdGEuCiAgICAgLy8gTWF5YmUgd2Ugc2hvdWxkIGlu
dHJvZHVjZSBhIE1lZGlhU2FtcGxlIHRoYXQgd291bGQgcmVwcmVzZW50IG5vbiBpbnRlcmxlYXZl
ZCBZVVYgZGF0YSBhcyBhbiBvcHRpbWl6YXRpb24uCi0gICAgcmV0dXJuIGFkb3B0Q0Yod2VicnRj
OjpjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFtZSwgW3RoaXNdKHNpemVfdCB3aWR0aCwg
c2l6ZV90IGhlaWdodCwgd2VicnRjOjpCdWZmZXJUeXBlIGJ1ZmZlclR5cGUpIC0+IENWUGl4ZWxC
dWZmZXJSZWYgeworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBhZG9wdENGKHdlYnJ0Yzo6Y3JlYXRl
UGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUsIFt0aGlzXShzaXplX3Qgd2lkdGgsIHNpemVfdCBo
ZWlnaHQsIHdlYnJ0Yzo6QnVmZmVyVHlwZSBidWZmZXJUeXBlKSAtPiBDVlBpeGVsQnVmZmVyUmVm
IHsKICAgICAgICAgYXV0byBwaXhlbEJ1ZmZlclBvb2wgPSB0aGlzLT5waXhlbEJ1ZmZlclBvb2wo
d2lkdGgsIGhlaWdodCwgYnVmZmVyVHlwZSk7CiAgICAgICAgIGlmICghcGl4ZWxCdWZmZXJQb29s
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNDUsMTggKzE3NSwxOSBAQCBSZXRh
aW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6
OnBpeGVsQnVmZmVyRnJvbVZpZAogICAgICAgICB9CiAgICAgICAgIHJldHVybiBwaXhlbEJ1ZmZl
cjsKICAgICB9KSk7CisgICAgcmV0dXJuIGNyZWF0ZU1lZGlhU2FtcGxlRnJvbUNWUGl4ZWxCdWZm
ZXIocGl4ZWxCdWZmZXIuZ2V0KCksIHJvdGF0aW9uLCBmcmFtZS50aW1lc3RhbXBfdXMoKSk7CiB9
CiAKLXZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6Ok9uRnJhbWUoY29uc3Qg
d2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSkKK3ZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291
cmNlQ29jb2E6Ok9uRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiB3ZWJydGNWaWRlb0Zy
YW1lKQogewogICAgIGlmICghaXNQcm9kdWNpbmdEYXRhKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHVuc2lnbmVkIHdpZHRoID0gZnJhbWUud2lkdGgoKTsKLSAgICB1bnNpZ25lZCBoZWlnaHQg
PSBmcmFtZS5oZWlnaHQoKTsKKyAgICB1bnNpZ25lZCB3aWR0aCA9IHdlYnJ0Y1ZpZGVvRnJhbWUu
d2lkdGgoKTsKKyAgICB1bnNpZ25lZCBoZWlnaHQgPSB3ZWJydGNWaWRlb0ZyYW1lLmhlaWdodCgp
OwogCiAgICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb247Ci0gICAgc3dpdGNo
IChmcmFtZS5yb3RhdGlvbigpKSB7CisgICAgc3dpdGNoICh3ZWJydGNWaWRlb0ZyYW1lLnJvdGF0
aW9uKCkpIHsKICAgICBjYXNlIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMDoKICAgICAgICAgcm90
YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZTsKICAgICAgICAgYnJlYWs7
CkBAIC0xNzQsNDAgKzIwNSwxNSBAQCB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNv
Y29hOjpPbkZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhbWUpCiAgICAgfQogCiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSAm
JiAhKCsrbV9udW1iZXJPZkZyYW1lcyAlIDYwKSwgTE9HSURFTlRJRklFUiwgImZyYW1lICIsIG1f
bnVtYmVyT2ZGcmFtZXMsICIsIHJvdGF0aW9uICIsIGZyYW1lLnJvdGF0aW9uKCksICIgc2l6ZSAi
LCB3aWR0aCwgIngiLCBoZWlnaHQpOworICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCkgJiYg
ISgrK21fbnVtYmVyT2ZGcmFtZXMgJSA2MCksIExPR0lERU5USUZJRVIsICJmcmFtZSAiLCBtX251
bWJlck9mRnJhbWVzLCAiLCByb3RhdGlvbiAiLCB3ZWJydGNWaWRlb0ZyYW1lLnJvdGF0aW9uKCks
ICIgc2l6ZSAiLCB3aWR0aCwgIngiLCBoZWlnaHQpOwogI2VuZGlmCiAKLSAgICBhdXRvIHBpeGVs
QnVmZmVyID0gcGl4ZWxCdWZmZXJGcm9tVmlkZW9GcmFtZShmcmFtZSk7Ci0gICAgaWYgKCFwaXhl
bEJ1ZmZlcikgewotICAgICAgICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJ
RVIsICJGYWlsZWQgdG8gZ2V0IGEgcGl4ZWwgYnVmZmVyIGZyb20gYSBmcmFtZSIpOworICAgIGF1
dG8gdmlkZW9GcmFtZSA9IHRvVmlkZW9GcmFtZSh3ZWJydGNWaWRlb0ZyYW1lLCByb3RhdGlvbik7
CisgICAgaWYgKCF2aWRlb0ZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ01T
YW1wbGVUaW1pbmdJbmZvIHRpbWluZ0luZm87Ci0gICAgdGltaW5nSW5mby5wcmVzZW50YXRpb25U
aW1lU3RhbXAgPSBQQUw6OkNNVGltZU1ha2UoZnJhbWUudGltZXN0YW1wX3VzKCksIDEwMDAwMDAp
OwotICAgIHRpbWluZ0luZm8uZGVjb2RlVGltZVN0YW1wID0gUEFMOjprQ01UaW1lSW52YWxpZDsK
LSAgICB0aW1pbmdJbmZvLmR1cmF0aW9uID0gUEFMOjprQ01UaW1lSW52YWxpZDsKLQotICAgIENN
VmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbjsKLSAgICBPU1N0YXR1
cyBvc3RhdHVzID0gUEFMOjpDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGVGb3JJbWFnZUJ1
ZmZlcihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoQ1ZJbWFnZUJ1ZmZlclJlZilwaXhlbEJ1ZmZlciwg
JmZvcm1hdERlc2NyaXB0aW9uKTsKLSAgICBpZiAob3N0YXR1cyAhPSBub0VycikgewotICAgICAg
ICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsICJGYWlsZWQgdG8gaW5p
dGlhbGl6ZSBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb24gd2l0aCBlcnJvciAiLCBzdGF0aWNfY2Fz
dDxpbnQ+KG9zdGF0dXMpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIENNU2FtcGxl
QnVmZmVyUmVmIHNhbXBsZUJ1ZmZlcjsKLSAgICBvc3RhdHVzID0gUEFMOjpDTVNhbXBsZUJ1ZmZl
ckNyZWF0ZVJlYWR5V2l0aEltYWdlQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIChDVkltYWdl
QnVmZmVyUmVmKXBpeGVsQnVmZmVyLCBmb3JtYXREZXNjcmlwdGlvbiwgJnRpbWluZ0luZm8sICZz
YW1wbGVCdWZmZXIpOwotICAgIENGUmVsZWFzZShmb3JtYXREZXNjcmlwdGlvbik7Ci0gICAgaWYg
KG9zdGF0dXMgIT0gbm9FcnIpIHsKLSAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBM
T0dJREVOVElGSUVSLCAiRmFpbGVkIHRvIGNyZWF0ZSB0aGUgc2FtcGxlIGJ1ZmZlciB3aXRoIGVy
cm9yICIsIHN0YXRpY19jYXN0PGludD4ob3N0YXR1cykpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgYXV0byBzYW1wbGUgPSBhZG9wdENGKHNhbXBsZUJ1ZmZlcik7CiAKICAgICBzZXRJ
bnRyaW5zaWNTaXplKEludFNpemUod2lkdGgsIGhlaWdodCkpOwotCi0gICAgdmlkZW9TYW1wbGVB
dmFpbGFibGUoTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUoc2FtcGxlLmdldCgpLCByb3RhdGlv
biksIG1ldGFkYXRhRnJvbVZpZGVvRnJhbWUoZnJhbWUpKTsKKyAgICB2aWRlb1NhbXBsZUF2YWls
YWJsZSgqdmlkZW9GcmFtZSwgbWV0YWRhdGFGcm9tVmlkZW9GcmFtZSh3ZWJydGNWaWRlb0ZyYW1l
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VD
b2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuY3BwCmluZGV4IDU4YzZiZGU0MzQ2NmVkMzhjNzdi
ZTY3NWEyYjcyMTIzZDcyZTcxMjIuLmEzNzU5NWViMzY5MzA4YzU2Nzg2NmY3ODgzNDE2ZTNjOGRl
ZmZhNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNv
Y29hLmNwcApAQCAtODMsOCArODMsOCBAQCB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJj
ZUNvY29hOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgc2FtcGxlLAogICAgICAg
ICBicmVhazsKICAgICB9CiAKLSAgICBBU1NFUlQoc2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlw
ZSA9PSBQbGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVCdWZmZXJUeXBlKTsKLSAgICBhdXRvIHBpeGVs
QnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1ZmZl
ckdldEltYWdlQnVmZmVyKHNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1
ZmZlcikpOworICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSB0aGUgY2FzZSBvZiBQbGF0Zm9ybVNhbXBs
ZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZS4KKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gc2Ft
cGxlLnBpeGVsQnVmZmVyKCk7CiAgICAgYXV0byBwaXhlbEZvcm1hdFR5cGUgPSBDVlBpeGVsQnVm
ZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsQnVmZmVyKTsKIAogICAgIFJldGFpblB0cjxDVlBp
eGVsQnVmZmVyUmVmPiBjb252ZXJ0ZWRCdWZmZXIgPSBwaXhlbEJ1ZmZlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKaW5kZXggNWNiNjBiOWVmNmVmNTdhNDNiNGVlZjcy
YTEzNzY3OWIxYWViZDY1Yi4uNGFjNjlhY2Q5YTAwY2Y2ZTE5OWEzM2FhYzQ3M2Q4Y2Q4NWRjNWU1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTU4LDEwICs1
OCw5IEBAIHByaXZhdGU6CiAgICAgTWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2JveC5kZWNvZGVUaW1lc3RhbXAoKTsgfQogICAgIE1lZGlhVGltZSBkdXJh
dGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYm94LmR1cmF0aW9uKCk7IH0KICAgICBB
dG9tU3RyaW5nIHRyYWNrSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lkOyB9Ci0gICAg
dm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0cmluZyYgaWQpIG92ZXJyaWRlIHsgbV9pZCA9IGlkOyB9
CiAgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc2l6ZW9m
KG1fYm94KTsgfQogICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
UGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybVNh
bXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8
Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxv
cHQ7IH0KICAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIEZsb2F0U2l6ZSgpOyB9CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Qg
b3ZlcnJpZGU7CkBAIC04Nyw3ICs4Niw3IEBAIE1lZGlhU2FtcGxlOjpTYW1wbGVGbGFncyBNb2Nr
TWVkaWFTYW1wbGU6OmZsYWdzKCkgY29uc3QKICAgICByZXR1cm4gU2FtcGxlRmxhZ3MoZmxhZ3Mp
OwogfQogCi1QbGF0Zm9ybVNhbXBsZSBNb2NrTWVkaWFTYW1wbGU6OnBsYXRmb3JtU2FtcGxlKCkK
K1BsYXRmb3JtU2FtcGxlIE1vY2tNZWRpYVNhbXBsZTo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAog
ewogICAgIFBsYXRmb3JtU2FtcGxlIHNhbXBsZSA9IHsgUGxhdGZvcm1TYW1wbGU6Ok1vY2tTYW1w
bGVCb3hUeXBlLCB7ICZtX2JveCB9IH07CiAgICAgcmV0dXJuIHNhbXBsZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMu
dHh0CmluZGV4IDI5ZjRjNzgxODE4MGRlMmNiMjQ5NTA3MmU4NDYwYTUwYWQzNjRhNDAuLjk3NmY2
M2UyY2RiYWNhYzY4MGE4NjgzZmJmZDFlNTQ5OGRlODA4NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApA
QCAtMTc4LDYgKzE3OCw3IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkKICAgICBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lclByb3h5CiAgICAgR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eQorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXAKIAogICAgIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1By
b3h5CiAgICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyCkBAIC0yNzksMTAgKzI4MCwxMiBAQCBzZXQoV2ViS2l0
X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2UKICAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24K
ICAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uCisgICAgV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5CiAgICAgV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyCiAgICAgV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZQogCiAgICAgV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjcworICAgIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcFByb3h5CiAgICAgV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcgogCiAgICAgV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdAppbmRleCBmOTI3NWZmNjEzOGM0OTE0NjkwYWMwYTA5ZWRjMTYwYWNlMDlhYmY1Li5iMjdl
NTQ5YzE1ODhmNmRkYjM3ODkxNDU5ZmJkYjIyYmYyZGIyNWMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC02Nyw2ICs2Nyw3IEBAICQoUFJP
SkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5k
TGlzdGVuZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5tZXNzYWdlcy5pbgorJChQUk9KRUNU
X0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb1RyYWNrUHJv
eHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQ
cm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTkxLDEw
ICsxOTIsMTIgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVSZW1vdGVDb21t
YW5kTGlzdGVuZXIubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L0xpYldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL0xpYldlYlJUQ1JlbW90ZUNvZGVjcy5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJ
UikvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHku
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3Mv
R2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5p
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxl
bGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5k
ZXggOTJkMjA2MDk5MzQxNzdhZWM5N2U4ODZjNjZjZThkOTEzNzgyNDA4My4uYzcyY2Q2OWM2MTRj
NjQ1NGI0NzFhMWZmYjAxMmZhMTg5YjE4MTE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0zODEsNiArMzgxLDE1IEBAICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVGV4dHVyZU1lc3NhZ2Vz
UmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1Jl
bW90ZVRleHR1cmVWaWV3TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVUZXh0dXJlVmlld01lc3NhZ2VzLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVGV4dHVyZVZpZXdN
ZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdC9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXBNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXBQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eU1lc3Nh
Z2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQvUmVtb3RlVmlkZW9GcmFtZVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlc1JlcGxp
ZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVW
aWRlb1RyYWNrUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvVHJhY2tQcm94eU1lc3NhZ2VzLmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9UcmFj
a1Byb3h5TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAy
OWU0Yzg0NjYzNDViMzM5ODNkZTc0ODI4N2I5NDE1NDY0N2YyOWJkLi5jM2JlNDNhOTg4NDRmYzA1
YjhiNjE5NTNlZTgxODQ3ZmVlMTk4MGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBA
IC0yMDIsOSArMjAyLDExIEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbiBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlciBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbiBcCisJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9G
cmFtZVByb3h5IFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5kTGlz
dGVuZXIgXAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUg
XAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIgXAor
CVdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5IFwK
IAlXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAgXAogCVdlYlByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyIFwKIAlXZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyIFwKQEAgLTMwMCw2ICszMDIsNyBAQCBN
RVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkg
XAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIgXAorCUdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAgXAogCUdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eSBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVSZW1v
dGVDb21tYW5kTGlzdGVuZXJQcm94eSBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VC
dWZmZXJQcm94eSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNGQ1MjRlOGI4Njc5YTgzMGM0NWViNmI1YmMx
MDRiNzU0MTA0YjYzZS4uNzkwYTBmMmY0ZTYyYmZjNTc2YjI1ZjRiNzVkNjcwMTU2YTU4MDA5MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcApAQCAtMTQxLDYgKzE0MSw3IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjZW5kaWYKIApAQCAtMjA1LDIwICsy
MDYsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgbV9wcm9jZXNzLnNldFRDQ0lkZW50aXR5KCk7CiAg
ICAgfQogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKICAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
IHR5cGUpIGZpbmFsCiAgICAgewogICAgICAgICBpZiAodHlwZSAhPSBSZWFsdGltZU1lZGlhU291
cmNlOjpUeXBlOjpBdWRpbykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9wcm9jZXNz
LnN0YXJ0Q2FwdHVyaW5nQXVkaW8oKTsKICAgICB9Ci0jZW5kaWYKIAogICAgIGNvbnN0IFByb2Nl
c3NJZGVudGl0eSYgcmVzb3VyY2VPd25lcigpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICBy
ZXR1cm4gbV9wcm9jZXNzLndlYlByb2Nlc3NJZGVudGl0eSgpOwogICAgIH0KIAorICAgIFJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwKiByZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCgpIGZpbmFs
IHsgcmV0dXJuICZtX3Byb2Nlc3MudmlkZW9GcmFtZU9iamVjdEhlYXAoKTsgfQorCiAgICAgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9wcm9jZXNzOwogfTsKIApAQCAtMjM2LDE1ICsyMzgs
MTggQEAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyhHUFVQcm9jZXNzJiBncHVQcm9jZXNzLCBXZWIKICAgICAsIG1fd2ViUHJvY2Vzc0lkZW50aXR5
KFdURk1vdmUocGFyYW1ldGVycy53ZWJQcm9jZXNzSWRlbnRpdHkpKQogICAgICwgbV9yZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eShtYWtlVW5pcXVlUmVmPFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5PigqdGhpcykpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCi0jaWYgUExB
VEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCi0gICAgLCBtX2xpYldlYlJUQ0NvZGVjc1By
b3h5KExpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGUoKnRoaXMpKQotI2VuZGlmCiAjaWYgUExB
VEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgLCBtX3NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1hbmFnZXIoUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
cjo6Y3JlYXRlKCp0aGlzKSkKICNlbmRpZgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAg
LCBtX2NhcHR1cmVPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKQogI2VuZGlm
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAsIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAo
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmNyZWF0ZSgqdGhpcykpCisjZW5kaWYKKyNpZiBQ
TEFURk9STShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykKKyAgICAsIG1fbGliV2ViUlRDQ29kZWNz
UHJveHkoTGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZSgqdGhpcykpCisjZW5kaWYKICNpZiBI
QVZFKEFVRElUX1RPS0VOKQogICAgICwgbV9wcmVzZW50aW5nQXBwbGljYXRpb25BdWRpdFRva2Vu
KFdURk1vdmUocGFyYW1ldGVycy5wcmVzZW50aW5nQXBwbGljYXRpb25BdWRpdFRva2VuKSkKICNl
bmRpZgpAQCAtMzAwLDcgKzMwNSw5IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogICAgICAgICBtX2F1ZGlvU2Vz
c2lvblByb3h5ID0gbnVsbHB0cjsKICAgICB9CiAjZW5kaWYKLQorI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisgICAgbV92aWRlb0ZyYW1lT2JqZWN0SGVhcC5yZXNldCgpOworI2VuZGlmCiAgICAg
Ly8gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBvYmplY3RzIHJlZiB0aGVpciBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzIHNvIHdlIG5lZWQgdG8gbWFrZSBzdXJlCiAgICAgLy8gdG8gYnJlYWsgdGhl
IHJlZmVyZW5jZSBjeWNsZSBieSBkZXN0cm95aW5nIHRoZW0uCiAgICAgbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kTWFwLmNsZWFyKCk7CkBAIC05NDEsOCArOTQ4LDE1IEBAIGJvb2wgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6c2V0Q2FwdHVyZUF0dHJpYnV0aW9uU3RyaW5nKCkgY29uc3QKIHsK
IH0KICNlbmRpZgorCitSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCYgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6dmlkZW9GcmFtZU9iamVjdEhlYXAoKSBjb25zdAoreworICAgIHJldHVybiAq
bV92aWRlb0ZyYW1lT2JqZWN0SGVhcC5nZXQoKTsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pCiAKKwogI2lmIFBMQVRGT1JNKE1BQykKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6ZGlzcGxheUNvbmZpZ3VyYXRpb25DaGFuZ2VkKENHRGlyZWN0RGlzcGxheUlELCBD
R0Rpc3BsYXlDaGFuZ2VTdW1tYXJ5RmxhZ3MgZmxhZ3MpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA2MjRlM2Zh
MzUxY2YwYjAzNWUyZTEzYTkzMzI1ZGRkNGMzNDJiMTQ5Li5mYjIwMjZkMTAxM2M3OTg1ZjBmYWFh
ZDhkZDg0YjQ5ZDExNjM0NGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTEwNiw2ICsxMDYsMTEgQEAgc3RydWN0
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM7CiBjbGFzcyBSZW1vdGVX
Q0xheWVyVHJlZUhvc3Q7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCitjbGFz
cyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDsKKyNlbmRpZgorCisKIGNsYXNzIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MKICAgICA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPgogICAg
ICwgcHVibGljIFdlYkNvcmU6Ok5vd1BsYXlpbmdNYW5hZ2VyOjpDbGllbnQKQEAgLTE0MSw2ICsx
NDYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhbGxvd3NBdWRpb0NhcHR1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2FsbG93c0F1ZGlvQ2FwdHVyZTsgfQogICAgIGJvb2wgYWxsb3dzVmlkZW9DYXB0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NWaWRlb0NhcHR1cmU7IH0KICAgICBib29sIGFsbG93
c0Rpc3BsYXlDYXB0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NEaXNwbGF5Q2FwdHVyZTsg
fQorICAgIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwJiB2aWRlb0ZyYW1lT2JqZWN0SGVhcCgp
IGNvbnN0OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKQEAgLTI4OCw5ICsyOTQsNiBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcj4gbV9yZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjsK
ICAgICBVbmlxdWVSZWY8UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk+IG1fcmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk7CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7Ci0j
aWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCi0gICAgUmVmPExpYldlYlJUQ0Nv
ZGVjc1Byb3h5PiBtX2xpYldlYlJUQ0NvZGVjc1Byb3h5OwotI2VuZGlmCiAjaWYgUExBVEZPUk0o
Q09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgc3RkOjp1bmlxdWVfcHRyPFVzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk+IG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRNYW5hZ2VyPiBtX2F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlcjsKQEAgLTMwNSw2ICszMDgsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
YWxsb3dzQXVkaW9DYXB0dXJlIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWxsb3dzVmlkZW9DYXB0
dXJlIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWxsb3dzRGlzcGxheUNhcHR1cmUgeyBmYWxzZSB9
OworICAgIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcD4gbV92aWRlb0ZyYW1lT2JqZWN0SGVhcDsKKyNlbmRpZgorI2lmIFBMQVRG
T1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQorICAgIFJlZjxMaWJXZWJSVENDb2RlY3NQcm94
eT4gbV9saWJXZWJSVENDb2RlY3NQcm94eTsKICNlbmRpZgogI2lmIEhBVkUoQVVESVRfVE9LRU4p
CiAgICAgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBtX3ByZXNlbnRpbmdBcHBsaWNhdGlv
bkF1ZGl0VG9rZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCBlY2I0YjU3NjdjYzlh
OGUyNjg2NDZkY2UzOWQyNjYyYzM0MmMzM2I2Li45ODAwNTc4YjUyMDg0MzE3ZTg4NjUyZGZjNTJj
NzZjYzFjMmZmNDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTQyLDYgKzQyLDEw
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTENWLmg+CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXAuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CkBAIC02OCw2ICs3Miw5IEBAIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDCiAgICAg
LCBtX3N0cmVhbUNvbm5lY3Rpb24oSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGUo
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCksIFdURk1vdmUoc3RyZWFtKSwg
cmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKSkpCiAgICAgLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcihncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCiAgICAg
LCBtX3JlbmRlcmluZ0JhY2tlbmQocmVuZGVyaW5nQmFja2VuZCkKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorICAgICwgbV92aWRlb0ZyYW1lT2JqZWN0SGVhcChncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLnZpZGVvRnJhbWVPYmplY3RIZWFwKCkpCisjZW5kaWYKICAgICAsIG1fcmVuZGVyaW5n
UmVzb3VyY2VzUmVxdWVzdChTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3Q6OmFj
cXVpcmUoKSkKICAgICAsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIoZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy53ZWJQcm9jZXNzSWRlbnRpZmllcigpKQogewpAQCAtMjIzLDYgKzIzMCwxNCBAQCB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52
YXNXaXRoUXVhbGlmaWVkSWRlbnRpZgogICAgIHBhaW50UGl4ZWxCdWZmZXJUb0ltYWdlQnVmZmVy
KG1fY29udGV4dC0+cmVhZENvbXBvc2l0ZWRSZXN1bHRzRm9yUGFpbnRpbmcoKSwgaW1hZ2VCdWZm
ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAorI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1
bHRzVG9NZWRpYVNhbXBsZShSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UmJiB3cml0ZSkK
K3sKKyAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOworICAgIG1fdmlkZW9GcmFt
ZU9iamVjdEhlYXAtPmFkZFZpZGVvRnJhbWUoV1RGTW92ZSh3cml0ZSksIG1fY29udGV4dC0+cGFp
bnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSk7Cit9CisjZW5kaWYKKwogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRQaXhlbEJ1ZmZlclRvSW1hZ2VCdWZmZXIoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4mJiBwaXhlbEJ1ZmZlciwgUXVhbGlmaWVk
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVh
bVRocmVhZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IGViMjBkMTZjMzc3ZjVmM2UwMDdm
MjFiYTI1NjI0ZGQxOWUzNmJiMTcuLjEwYzA2MzYxODY3ZDVlODgzZWI5ZDZhODUzMjVjZDkxMGZi
ZGUzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC01NCw2ICs1NCwxMCBAQAogI2luY2x1
ZGUgIldDQ29udGVudEJ1ZmZlcklkZW50aWZpZXIuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgorI2Vu
ZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFjaFNl
bmRSaWdodDsKQEAgLTYxLDYgKzY1LDkgQEAgY2xhc3MgTWFjaFNlbmRSaWdodDsKICNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorY2xhc3MgUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CisjZW5kaWYKIAogLy8gR1BVIHByb2Nlc3Mgc2lkZSBp
bXBsZW1lbnRhdGlvbiBvZiB0aGF0IHJlY2VpdmVzIG1lc3NhZ2VzIGFib3V0IEdyYXBoaWNzQ29u
dGV4dEdMIGNhbGxzCiAvLyBhbmQgaXNzdWVzIHJlYWwgR3JhcGhpY3NDb250ZXh0R0wgY2FsbHMg
YmFzZWQgb24gdGhlIHJlY2VpdmVkIG1lc3NhZ2VzLgpAQCAtMTA4LDYgKzExNSw5IEBAIHByb3Rl
Y3RlZDoKICAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9yKTsKICAgICB2
b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHBh
aW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKyAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKFJl
bW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSYmKTsKKyNlbmRpZgogICAgIHZvaWQgY29weVRl
eHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyLCB1aW50MzJfdCB0
ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFs
Rm9ybWF0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbCBmbGlwWSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAg
dm9pZCBzaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6
U2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nKTsKIApAQCAtMTMwLDYgKzE0MCw5IEBAIHByb3RlY3Rl
ZDoKICAgICBSZWZQdHI8UGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTD4gbV9jb250ZXh0IFdURl9H
VUFSREVEX0JZX0xPQ0sobV9zdHJlYW1UaHJlYWQpOwogICAgIEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcjsKICAgICBSZWY8UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZD4gbV9yZW5kZXJpbmdCYWNrZW5kOworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisgICAgUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBtX3ZpZGVvRnJhbWVPYmpl
Y3RIZWFwOworI2VuZGlmCiAgICAgU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0
IG1fcmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDsKICAgICBOT19VTklRVUVfQUREUkVTUyBUaHJl
YWRBc3NlcnRpb24gbV9zdHJlYW1UaHJlYWQ7CiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIgbV93ZWJQcm9jZXNzSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5t
ZXNzYWdlcy5pbgppbmRleCBjOGFiMjk3NzI5MzBiZmQ0MDhhMDNjZWIzN2EwYzI5ODk4ZTMwMmIy
Li45MDk3YjQyNzBiZjUzZGEyNGMwOTNhNTdlYTNjY2IxN2EyOTA3ZmY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC00Miw2ICs0Miw5IEBAIG1lc3NhZ2Vz
IC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICB2
b2lkIFBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAgICB2b2lkIFBh
aW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBDb3B5VGV4
dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwg
dWludDMyX3QgdGV4dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJf
dCBpbnRlcm5hbEZvcm1hdCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHBy
ZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3Vz
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICB2b2lkIFBhaW50Q29tcG9zaXRlZFJlc3Vs
dHNUb01lZGlhU2FtcGxlKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlIHJl
c3VsdCkKKyNlbmRpZgogICAgIHZvaWQgU2ltdWxhdGVFdmVudEZvclRlc3RpbmcoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0w6OlNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZyBldmVudCkKIAogICAg
IHZvaWQgTW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkgLT4gKGJvb2wgcmV0dXJuVmFs
dWUpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODg3
MGM2ZjQ3ZTZmNDQ3OTZjNjNhODc5Yzk4NjdmYmI1NDcwNjhkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
LmNwcApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIgorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eU1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCisjaW5jbHVkZSAiUmVt
b3RlVmlkZW9GcmFtZVByb3h5TWVzc2FnZXMuaCIKKworI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVk
aWFTb2Z0TGluay5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVmPFJlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwPiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6Y3JlYXRlKEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAoY29ubmVjdGlvblRvV2Vi
UHJvY2VzcykpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6UmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXAoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvblRvV2Vi
UHJvY2VzcykKKyAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygmY29ubmVjdGlvblRv
V2ViUHJvY2VzcykKKyAgICAsIG1fY29ubmVjdGlvbihtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MtPmNvbm5lY3Rpb24oKSkKK3sKKyAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1l
c3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXA6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOworfQorCitS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6flJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKCkK
K3sKKyAgICBBU1NFUlQoIW1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyk7Cit9CisKK3ZvaWQg
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiYmIHJlZkZyb21Db25uZWN0aW9uKQoreworICAgIGFzc2Vy
dElzQ3VycmVudChtX2NvbnN1bWVUaHJlYWQpOworICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzID0gc3RkOjpleGNoYW5nZShtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Ms
IG51bGxwdHIpKSB7CisgICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VS
ZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXA6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgICAgIC8vIENsaWVu
dHMgbWlnaHQgaG9sZCBvbiB0byB0aGUgcmVmIGFmdGVyIHRoaXMgaGFwcGVucy4gVGhleSBzaG91
bGQgYWxzbyBzdG9wIHRoZW1zZWx2ZXMsIGJ1dCBpZiB0aGV5IGRvIG5vdCwKKyAgICAgICAgLy8g
YXZvaWQgYmlnIG1lbW9yeSBsZWFrcyBieSBjbGVhcmluZyB0aGUgZnJhbWVzLiBUaGUgY2xpZW50
cyBzaG91bGQgZmFpbCBncmFjZWZ1bGx5IChkbyBub3RoaW5nKSBpbiBjYXNlIHRoZXkgZmFpbCB0
byBsb29rIHVwCisgICAgICAgIC8vIGZyYW1lcy4KKyAgICAgICAgY2xlYXIoKTsKKyAgICAgICAg
Ly8gVE9ETzogYWRkIGNhbiBoYXBwZW4gYWZ0ZXIgc3RvcHBpbmcuCisgICAgfQorfQordm9pZCBS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6YWRkVmlkZW9GcmFtZShSZW1vdGVWaWRlb0ZyYW1l
V3JpdGVSZWZlcmVuY2UmJiB3cml0ZSwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiYmIGZy
YW1lKQoreworICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0
aWVzPiByZXN1bHQ7CisgICAgaWYgKGZyYW1lKQorICAgICAgICByZXN1bHQgPSBSZW1vdGVWaWRl
b0ZyYW1lUHJveHk6OnByb3BlcnRpZXMoKmZyYW1lKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6V2FzSW5pdGlhbGl6ZWQocmVzdWx0KSwg
IHdyaXRlLmlkZW50aWZpZXIoKS5vYmplY3QoKS50b1VJbnQ2NCgpKTsKKyAgICByZXRpcmUoV1RG
TW92ZSh3cml0ZSksIFdURk1vdmUoZnJhbWUpLCBzdGQ6Om51bGxvcHQpOworfQorCitSZW1vdGVW
aWRlb0ZyYW1lSWRlbnRpZmllciBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6Y3JlYXRlUmVt
b3RlVmlkZW9GcmFtZShSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYgZnJhbWUpCit7CisgICAg
YXV0byBpZGVudGlmaWVyID0gUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI6OmdlbmVyYXRlVGhy
ZWFkU2FmZSgpOworICAgIGFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGZyYW1lKSk7CisgICAgcmV0
dXJuIGlkZW50aWZpZXI7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OnJl
bGVhc2VWaWRlb0ZyYW1lKFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSYmIHdyaXRlKQor
eworICAgIGFzc2VydElzQ3VycmVudChtX2NvbnN1bWVUaHJlYWQpOworICAgIHJldGlyZVJlbW92
ZShXVEZNb3ZlKHdyaXRlKSk7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6
OmdldFZpZGVvRnJhbWVCdWZmZXIoUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UmJiByZWFk
KQoreworICAgIGF1dG8gaWRlbnRpZmllciA9IHJlYWQuaWRlbnRpZmllcigpOworICAgIGF1dG8g
bWVkaWFTYW1wbGUgPSByZXRpcmUoV1RGTW92ZShyZWFkKSwgMF9zKTsKKworICAgIGlmICghbWVk
aWFTYW1wbGUpCisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXBQcm94eTo6VmlkZW9GcmFtZUJ1ZmZlck5vdEZvdW5kIHsgaWRlbnRp
ZmllciB9LCAwKTsKKworICAgIGF1dG8gcGxhdGZvcm1TYW1wbGUgPSBtZWRpYVNhbXBsZS0+cGxh
dGZvcm1TYW1wbGUoKTsKKyAgICBBU1NFUlQocGxhdGZvcm1TYW1wbGUudHlwZSA9PSBQbGF0Zm9y
bVNhbXBsZTo6Q01TYW1wbGVCdWZmZXJUeXBlKTsKKworICAgIG1fc2hhcmVkVmlkZW9GcmFtZVdy
aXRlci53cml0ZShzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihQQUw6OkNNU2FtcGxlQnVm
ZmVyR2V0SW1hZ2VCdWZmZXIocGxhdGZvcm1TYW1wbGUuc2FtcGxlLmNtU2FtcGxlQnVmZmVyKSks
CisgICAgICAgIFsmXShhdXRvJiBzZW1hcGhvcmUpIHsgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5OjpTZXRTaGFyZWRWaWRlb0ZyYW1l
U2VtYXBob3JlIHsgc2VtYXBob3JlIH0sIDApOyB9LAorICAgICAgICBbJl0oYXV0byYgaGFuZGxl
KSB7IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXBQcm94eTo6U2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeSB7IGhhbmRsZSB9LCAwKTsgfQorICAg
ICk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcFByb3h5OjpOZXdWaWRlb0ZyYW1lQnVmZmVyIHsgaWRlbnRpZmllciB9LCAwKTsKK30K
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE1ODU1MDU4
OWEwMmUxN2JkYWNhMzZkZTliZGYyYTdjYzBmMGFhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oCkBA
IC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJSZW1vdGVWaWRl
b0ZyYW1lSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNoYXJlZFZpZGVvRnJhbWUuaCIKKyNpbmNs
dWRlICJUaHJlYWRTYWZlT2JqZWN0SGVhcC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTYW1w
bGUuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkQXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisKKy8vIEhvbGRzIHJlZmVy
ZW5jZXMgdG8gYWxsIFZpZGVvRnJhbWUgaW5zdGFuY2VzIHRoYXQgYXJlIG1hcHBlZCBmcm9tIFdl
YiBwcm9jZXNzIHRvIEdQVSBwcm9jZXNzIHR3byBwcm9jZXNzZXMuCisvLyBBcyBjdXJyZW50bHkg
dGhlcmUgaXMgbm8gc3BlY2lhbCBzdGF0ZSBmb3IgUmVtb3RlVmlkZW9GcmFtZSwgdGhlIG9iamVj
dCBoZWFwIHN0b3JlcyBWaWRlb0ZyYW1lIGluc3RhbmNlcyAoTWVkaWFTYW1wbGUpLgorLy8gQXMg
Y3VycmVudGx5IHRoZXJlIGlzIG5vIFJlbW90ZVZpZGVvRnJhbWUsIHJlc3BvbnNpYmxlIGZvciBk
aXNwYXRjaGluZyB0aGUgVmlkZW9GcmFtZSBtZXRob2RzIHRvIHRoZSBvYmplY3RzLgorLy8gQ29u
c3VtZSB0aHJlYWQgaXMgdGhlIHRocmVhZCB0aGF0IHVzZXMgdGhlIFZpZGVvRnJhbWUuIEZvciBH
UFVQIHRoaXMgaXMgdGhlIG1lZGlhIHBsYXllciB0aHJlYWQsIHRoZSBtYWluIHRocmVhZC4KKy8v
IEZJWE1FOiBjdXJyZW50bHkgVmlkZW9GcmFtZSBpbnN0YW5jZXMgYXJlIE1lZGlhU2FtcGxlIGlu
c3RhbmNlcy4KK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwIGZpbmFsIDogcHVibGlj
IFRocmVhZFNhZmVPYmplY3RIZWFwPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLCBSZWZQdHI8
V2ViQ29yZTo6TWVkaWFTYW1wbGU+PiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gY3JlYXRl
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKKyAgICB+UmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXAoKTsKKworICAgIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGNyZWF0ZVJlbW90ZVZp
ZGVvRnJhbWUoUmVmPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiYmKTsKKyAgICB2b2lkIGFkZFZpZGVv
RnJhbWUoUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJiYsIFJlZlB0cjxXZWJDb3JlOjpN
ZWRpYVNhbXBsZT4mJik7CisKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiYmIHJlZkZyb21Db25uZWN0aW9uKTsKK3ByaXZhdGU6Cisg
ICAgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYp
OworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgorICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisK
KyAgICAvLyBNZXNzYWdlcy4KKyAgICB2b2lkIHJlbGVhc2VWaWRlb0ZyYW1lKFJlbW90ZVZpZGVv
RnJhbWVXcml0ZVJlZmVyZW5jZSYmKTsKKyAgICB2b2lkIGdldFZpZGVvRnJhbWVCdWZmZXIoUmVt
b3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UmJik7CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgV1RGX0dVQVJERURfQllfTE9DSyht
X2NvbnN1bWVUaHJlYWQpOworICAgIGNvbnN0IFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVj
dGlvbjsKKyAgICBUaHJlYWRBc3NlcnRpb24gbV9jb25zdW1lVGhyZWFkIE5PX1VOSVFVRV9BRERS
RVNTOworICAgIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXIgbV9zaGFyZWRWaWRlb0ZyYW1lV3JpdGVy
OworfTsKKworCisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3Nh
Z2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjFkM2QyNDNlMTUxNzVlZmY5YzhkN2VmY2JiYmQwYjE1MmRlNWNh
NjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyOSBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK21lc3NhZ2VzIC0+IFJlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwIE5vdFJlZkNvdW50ZWQgeworICAgIEdldFZpZGVvRnJhbWVCdWZmZXIoV2ViS2l0
OjpSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSBpZGVudGlmaWVyKQorICAgIFJlbGVhc2VW
aWRlb0ZyYW1lKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlIGlkZW50aWZp
ZXIpCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaAppbmRleCBjNzcyY2I3NzYwZjJkNTgyOWFmY2QyYjg1
ZjU5MTNhMzBjMDA3NDQ0Li44ZWYyOWNhZTI0MDkxZGVmY2Q4OWM0MTQwNjA0YzZmZWM5ODIyMDI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3NQcm94eS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUlRDRW5j
b2RlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgIlNoYXJlZFZpZGVvRnJhbWUu
aCIKICNpbmNsdWRlIDx3dGYvTG9jay5oPgpAQCAtNTMsNiArNTQsNyBAQCB1c2luZyBMb2NhbEVu
Y29kZXIgPSB2b2lkKjsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOworY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CiBjbGFzcyBT
aGFyZWRWaWRlb0ZyYW1lUmVhZGVyOwogCiBjbGFzcyBMaWJXZWJSVENDb2RlY3NQcm94eSA6IHB1
YmxpYyBJUEM6OkNvbm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZlclJlZkNvdW50ZWQgewpA
QCAtODMsNyArODUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlRW5jb2RlcihSVENFbmNv
ZGVySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJp
bmcsIFN0cmluZz4+JiwgYm9vbCB1c2VMb3dMYXRlbmN5KTsKICAgICB2b2lkIHJlbGVhc2VFbmNv
ZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyKTsKICAgICB2b2lkIGluaXRpYWxpemVFbmNvZGVyKFJU
Q0VuY29kZXJJZGVudGlmaWVyLCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0LCB1bnNp
Z25lZCBzdGFydEJpdHJhdGUsIHVuc2lnbmVkIG1heEJpdHJhdGUsIHVuc2lnbmVkIG1pbkJpdHJh
dGUsIHVpbnQzMl90IG1heEZyYW1lcmF0ZSk7Ci0gICAgdm9pZCBlbmNvZGVGcmFtZShSVENFbmNv
ZGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiwgdWludDMyX3QgdGlt
ZVN0YW1wLCBib29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUpOworICAgIHZvaWQgZW5jb2RlRnJh
bWUoUlRDRW5jb2RlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYsIHVp
bnQzMl90IHRpbWVTdGFtcCwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lLCBzdGQ6Om9wdGlv
bmFsPFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlPik7CiAgICAgdm9pZCBzZXRFbmNvZGVS
YXRlcyhSVENFbmNvZGVySWRlbnRpZmllciwgdWludDMyX3QgYml0UmF0ZSwgdWludDMyX3QgZnJh
bWVSYXRlKTsKICAgICB2b2lkIHNldFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhvcmUoUlRDRW5jb2Rl
cklkZW50aWZpZXIsIElQQzo6U2VtYXBob3JlJiYpOwogICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9G
cmFtZU1lbW9yeShSVENFbmNvZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUmKTsKQEAgLTEwMSw2ICsxMDMsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8UlRDRGVj
b2RlcklkZW50aWZpZXIsIHdlYnJ0Yzo6TG9jYWxEZWNvZGVyPiBtX2RlY29kZXJzIFdURl9HVUFS
REVEX0JZX0xPQ0sobV9sb2NrKTsgLy8gT25seSBtb2RpZmllZCBvbiB0aGUgbGliV2ViUlRDQ29k
ZWNzUXVldWUgYnV0IG1heSBnZXQgYWNjZXNzZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCiAgICAg
SGFzaE1hcDxSVENFbmNvZGVySWRlbnRpZmllciwgRW5jb2Rlcj4gbV9lbmNvZGVycyBXVEZfR1VB
UkRFRF9CWV9MT0NLKG1fbG9jayk7IC8vIE9ubHkgbW9kaWZpZWQgb24gdGhlIGxpYldlYlJUQ0Nv
ZGVjc1F1ZXVlIGJ1dCBtYXkgZ2V0IGFjY2Vzc2VkIGZyb20gdGhlIG1haW4gdGhyZWFkLgogICAg
IFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CisgICAgUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwPiBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggNmJiMjA4NjM4ZGMyMmE4OWVmYjg5YzlhZjkwNmEwM2VhNjllNzQ0
ZS4uNzNkMGI1OGQ0N2JkMTYwNzc1ZDQ4ZTY2OWE3ZTNkMWVlNGI1MWFhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0zNCw3ICszNCw3IEBAIG1lc3NhZ2VzIC0+IExpYldl
YlJUQ0NvZGVjc1Byb3h5IE5vdFJlZkNvdW50ZWQgewogICAgIENyZWF0ZUVuY29kZXIoV2ViS2l0
OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwgU3RyaW5nIGZvcm1hdE5hbWUsIFZlY3RvcjxzdGQ6
OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBwYXJhbWV0ZXJzLCBib29sIHVzZUxvd0xhdGVuY3kpOwog
ICAgIFJlbGVhc2VFbmNvZGVyKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQpCiAgICAg
SW5pdGlhbGl6ZUVuY29kZXIoV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwgdWludDE2
X3Qgd2lkdGgsIHVpbnQxNl90IGhlaWdodCwgdW5zaWduZWQgc3RhcnRCaXRyYXRlLCB1bnNpZ25l
ZCBtYXhCaXRyYXRlLCB1bnNpZ25lZCBtaW5CaXRyYXRlLCB1aW50MzJfdCBtYXhGcmFtZXJhdGUp
Ci0gICAgRW5jb2RlRnJhbWUoV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwgV2ViQ29y
ZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxlLCB1aW50MzJfdCB0aW1lU3RhbXAsIGJvb2wgc2hv
dWxkRW5jb2RlQXNLZXlGcmFtZSkKKyAgICBFbmNvZGVGcmFtZShXZWJLaXQ6OlJUQ0VuY29kZXJJ
ZGVudGlmaWVyIGlkLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUsIHVpbnQzMl90
IHRpbWVTdGFtcCwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lLCBzdGQ6Om9wdGlvbmFsPFdl
YktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2U+IHNhbXBsZVJlZmVyZW5jZSkKICAg
ICBTZXRFbmNvZGVSYXRlcyhXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyIGlkLCB1aW50MzJf
dCBiaXRSYXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpCiAgICAgU2V0U2hhcmVkVmlkZW9GcmFtZVNl
bWFwaG9yZShXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyIGlkLCBJUEM6OlNlbWFwaG9yZSBz
ZW1hcGhvcmUpCiAgICAgU2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeShXZWJLaXQ6OlJUQ0VuY29k
ZXJJZGVudGlmaWVyIGlkLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHN0b3JhZ2VI
YW5kbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldl
YlJUQ0NvZGVjc1Byb3h5Lm1tIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3NQcm94eS5tbQppbmRleCAyMmUyMDZhYjlhOTMyYTU5YmNlZDUzMzkzYmRjOGIz
MDFhYzY4MzRiLi43ZDhhNDgzYmY5ZmE5YTZjMTU5MDNlYWNmZDkwYTE5ZTVmMTFlZDFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1By
b3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzUHJveHkubW0KQEAgLTMyLDIxICszMiwyNyBAQAogI2ltcG9ydCAiR1BVUHJvY2Vzcy5oIgog
I2ltcG9ydCAiTGliV2ViUlRDQ29kZWNzTWVzc2FnZXMuaCIKICNpbXBvcnQgIkxpYldlYlJUQ0Nv
ZGVjc1Byb3h5TWVzc2FnZXMuaCIKKyNpbXBvcnQgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVy
LmgiCisjaW1wb3J0ICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIgogI2ltcG9ydCAiU2hh
cmVkVmlkZW9GcmFtZS5oIgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW1w
b3J0IDxXZWJDb3JlL0NWVXRpbGl0aWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xpYldlYlJUQ1By
b3ZpZGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL01lZGlhU2FtcGxlQVZGT2JqQy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9SZW1vdGVWaWRlb1NhbXBsZS5oPgogI2ltcG9ydCA8d2VicnRjL3Nkay9XZWJL
aXQvV2ViS2l0RGVjb2Rlci5oPgogI2ltcG9ydCA8d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RW5j
b2Rlci5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvTWVkaWFUaW1l
Lmg+CiAKKyNpbXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogTGliV2ViUlRDQ29kZWNzUHJveHk6OkxpYldlYlJUQ0NvZGVjc1Byb3h5KEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24pCiAgICAgOiBtX2dwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoY29ubmVjdGlvbikKICAgICAsIG1fcXVldWUoY29ubmVjdGlvbi5ncHVQ
cm9jZXNzKCkubGliV2ViUlRDQ29kZWNzUXVldWUoKSkKKyAgICAsIG1fdmlkZW9GcmFtZU9iamVj
dEhlYXAoY29ubmVjdGlvbi52aWRlb0ZyYW1lT2JqZWN0SGVhcCgpKQogewogICAgIG1fZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuYWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0
aGlzKTsKIH0KQEAgLTc3LDEyICs4MywyMiBAQCB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5Ojpj
bG9zZSgpCiAKIHN0YXRpYyBGdW5jdGlvbjx2b2lkKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZm
ZXIsIHVpbnQzMl90IHRpbWVTdGFtcE5zLCB1aW50MzJfdCB0aW1lU3RhbXApPiBjcmVhdGVEZWNv
ZGVyQ2FsbGJhY2soUlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKIHsKLSAgICByZXR1cm4g
W2Nvbm5lY3Rpb24gPSBSZWYgeyBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24o
KSB9LCByZXNvdXJjZU93bmVyID0gZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy53ZWJQcm9jZXNz
SWRlbnRpdHkoKSwgaWRlbnRpZmllcl0gKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIHVp
bnQzMl90IHRpbWVTdGFtcE5zLCB1aW50MzJfdCB0aW1lU3RhbXApIHsKLSAgICAgICAgaWYgKGF1
dG8gc2FtcGxlID0gV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShwaXhlbEJ1ZmZl
ciwgTWVkaWFUaW1lKHRpbWVTdGFtcE5zLCAxKSkpIHsKLSAgICAgICAgICAgIGlmIChyZXNvdXJj
ZU93bmVyKQotICAgICAgICAgICAgICAgIHNhbXBsZS0+c2V0T3duZXJzaGlwSWRlbnRpdHkocmVz
b3VyY2VPd25lcik7Ci0gICAgICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJX
ZWJSVENDb2RlY3M6OkNvbXBsZXRlZERlY29kaW5nIHsgaWRlbnRpZmllciwgdGltZVN0YW1wLCAq
c2FtcGxlIH0sIDApOwotICAgICAgICB9CisgICAgcmV0dXJuIFtjb25uZWN0aW9uID0gUmVmIHsg
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkgfSwgcmVzb3VyY2VPd25lciA9
IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mud2ViUHJvY2Vzc0lkZW50aXR5KCksIHZpZGVvRnJh
bWVPYmplY3RIZWFwID0gUmVmIHsgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy52aWRlb0ZyYW1l
T2JqZWN0SGVhcCgpIH0sIGlkZW50aWZpZXJdIChDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVy
LCB1aW50MzJfdCB0aW1lU3RhbXBOcywgdWludDMyX3QgdGltZVN0YW1wKSAgbXV0YWJsZSB7Cisg
ICAgICAgIGF1dG8gc2FtcGxlID0gV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGVJ
bWFnZVNhbXBsZShwaXhlbEJ1ZmZlciwgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b246Ok5vbmUsIGZhbHNlLCBNZWRpYVRpbWUodGltZVN0YW1wTnMsIDEpLCB7IH0pOworICAgICAg
ICBpZiAoIXNhbXBsZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIHJlbW90
ZVNhbXBsZSA9IFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoKnNhbXBsZSk7Cisg
ICAgICAgIGlmICghcmVtb3RlU2FtcGxlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGlmIChyZXNvdXJjZU93bmVyKQorICAgICAgICAgICAgcmVtb3RlU2FtcGxlLT5zZXRPd25lcnNo
aXBJZGVudGl0eShyZXNvdXJjZU93bmVyKTsKKworICAgICAgICBhdXRvIHJlbW90ZUlkZW50aWZp
ZXIgPSB2aWRlb0ZyYW1lT2JqZWN0SGVhcC0+Y3JlYXRlUmVtb3RlVmlkZW9GcmFtZShzYW1wbGUu
cmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIHJlbW90ZVNhbXBsZS0+Y2xlYXJJT1N1cmZhY2Uo
KTsKKworICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3M6
OkNvbXBsZXRlZERlY29kaW5nIHsgaWRlbnRpZmllciwgdGltZVN0YW1wLCAqcmVtb3RlU2FtcGxl
LCByZW1vdGVJZGVudGlmaWVyIH0sIDApOwogICAgIH07CiB9CiAKQEAgLTIxMSwxNSArMjI3LDI1
IEBAIHN0YXRpYyBpbmxpbmUgd2VicnRjOjpWaWRlb1JvdGF0aW9uIHRvV2ViUlRDVmlkZW9Sb3Rh
dGlvbihXZWJDb3JlOjpNZWRpYVNhbXBsZTo6CiAKIC8vIEZvciBwZXJmb3JtYW5jZSByZWFzb25z
LCB0aGlzIGZ1bmN0aW9uIGFjY2Vzc2VzIG1fZW5jb2RlcnMgd2l0aG91dCBsb2NraW5nLiBUaGlz
IGlzIHNhZmUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIHJ1bnMgb24gdGhlIGxpYldlYlJUQ0NvZGVj
c1F1ZXVlCiAvLyBhbmQgbV9lbmNvZGVycyBvbmx5IGdldCBtb2RpZmllZCBvbiB0aGlzIHF1ZXVl
Lgotdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6ZW5jb2RlRnJhbWUoUlRDRW5jb2RlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiBzYW1wbGUsIHVp
bnQzMl90IHRpbWVTdGFtcCwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKQordm9pZCBMaWJX
ZWJSVENDb2RlY3NQcm94eTo6ZW5jb2RlRnJhbWUoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiBzYW1wbGUsIHVpbnQzMl90IHRpbWVT
dGFtcCwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lLCBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZp
ZGVvRnJhbWVSZWFkUmVmZXJlbmNlPiBzYW1wbGVSZWZlcmVuY2UpCiB7CisgICAgUmV0YWluUHRy
PENWUGl4ZWxCdWZmZXJSZWY+IHBpeGVsQnVmZmVyOworICAgIGlmIChzYW1wbGVSZWZlcmVuY2Up
IHsKKyAgICAgICAgYXV0byBzYW1wbGUgPSBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwLT5yZXRpcmUo
V1RGTW92ZSgqc2FtcGxlUmVmZXJlbmNlKSwgMF9zKTsKKyAgICAgICAgaWYgKCFzYW1wbGUpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byBwbGF0Zm9ybVNhbXBsZSA9IHNhbXBs
ZS0+cGxhdGZvcm1TYW1wbGUoKTsKKyAgICAgICAgQVNTRVJUKHBsYXRmb3JtU2FtcGxlLnR5cGUg
PT0gV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZSk7CisgICAgICAg
IHBpeGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBs
ZUJ1ZmZlckdldEltYWdlQnVmZmVyKHBsYXRmb3JtU2FtcGxlLnNhbXBsZS5jbVNhbXBsZUJ1ZmZl
cikpOworICAgIH0KKwogICAgIEFTU0VSVChmaW5kRW5jb2RlcldpdGhvdXRMb2NrKGlkZW50aWZp
ZXIpKTsKICAgICBhdXRvKiBlbmNvZGVyID0gZmluZEVuY29kZXJXaXRob3V0TG9jayhpZGVudGlm
aWVyKTsKICAgICBpZiAoIWVuY29kZXIpCiAgICAgICAgIHJldHVybjsKIAogI2lmICFQTEFURk9S
TShNQUNDQVRBTFlTVCkKLSAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcGl4ZWxCdWZm
ZXI7CiAgICAgaWYgKHNhbXBsZS5zdXJmYWNlKCkpIHsKICAgICAgICAgaWYgKGF1dG8gYnVmZmVy
ID0gV2ViQ29yZTo6Y3JlYXRlQ1ZQaXhlbEJ1ZmZlcihzYW1wbGUuc3VyZmFjZSgpKSkKICAgICAg
ICAgICAgIHBpeGVsQnVmZmVyID0gV1RGTW92ZSgqYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4
IDUxZThhMzdkN2FjMmIzMjQ3YmE3MGQ5NDA0ZjIyODEzZDZlY2IxZmUuLjU5NGI4M2Q1ZDhlYmNj
OGYxMGM0YTYwZjU0NGY4ZDM5MTZlNWNhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAtMzAsNiArMzAs
NyBAQAogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIgog
I2luY2x1ZGUgIlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9D
QVJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQu
aD4KQEAgLTQyLDYgKzQzLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKK3N0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBtZWRpYVJlY29yZGVyRGVmYXVs
dFRpbWVvdXQgeyAxX3MgfTsKIAogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUmVjb3JkZXI+
IFJlbW90ZU1lZGlhUmVjb3JkZXI6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBNZWRpYVJlY29yZGVySWRlbnRpZmllciBpZGVudGlm
aWVyLCBib29sIHJlY29yZEF1ZGlvLCBib29sIHJlY29yZFZpZGVvLCBjb25zdCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZU9wdGlvbnMmIG9wdGlvbnMpCiB7CkBAIC01NSw2ICs1Nyw3IEBAIFJlbW90ZU1l
ZGlhUmVjb3JkZXI6OlJlbW90ZU1lZGlhUmVjb3JkZXIoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgZ3B1Q29ubmVjdGlvCiAgICAgOiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcykKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAg
ICwgbV93cml0ZXIoV1RGTW92ZSh3cml0ZXIpKQorICAgICwgbV92aWRlb0ZyYW1lT2JqZWN0SGVh
cChncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLnZpZGVvRnJhbWVPYmplY3RIZWFwKCkpCiB7CiAg
ICAgaWYgKHJlY29yZEF1ZGlvKQogICAgICAgICBtX3JpbmdCdWZmZXIgPSBtYWtlVW5pcXVlPENB
UmluZ0J1ZmZlcj4oKTsKQEAgLTg2LDEwICs4OSwxNiBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3Jk
ZXI6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRpbWUgdGltZSwgdWludDY0X3QgbnVtYmVy
TwogICAgIG1fd3JpdGVyLT5hcHBlbmRBdWRpb1NhbXBsZUJ1ZmZlcigqbV9hdWRpb0J1ZmZlckxp
c3QsIG1fZGVzY3JpcHRpb24sIHRpbWUsIG51bWJlck9mRnJhbWVzKTsKIH0KIAotdm9pZCBSZW1v
dGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRl
b1NhbXBsZSYmIHJlbW90ZVNhbXBsZSkKK3ZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6dmlkZW9T
YW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vdGVTYW1wbGUs
IHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2U+IHNhbXBsZVJlZmVy
ZW5jZSkKIHsKICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHNhbXBsZTsKLSAgICBpZiAoIXJlbW90
ZVNhbXBsZS5zdXJmYWNlKCkpIHsKKyAgICBpZiAoc2FtcGxlUmVmZXJlbmNlKSB7CisgICAgICAg
IHNhbXBsZSA9IG1fdmlkZW9GcmFtZU9iamVjdEhlYXAtPnJldGlyZShXVEZNb3ZlKCpzYW1wbGVS
ZWZlcmVuY2UpLCBtZWRpYVJlY29yZGVyRGVmYXVsdFRpbWVvdXQpOworICAgICAgICBpZiAoIXNh
bXBsZSkgeworICAgICAgICAgICAgQVNTRVJUX0lTX1RFU1RJTkdfSVBDKCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKCFyZW1vdGVTYW1wbGUuc3VyZmFj
ZSgpKSB7CiAgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBtX3NoYXJlZFZpZGVvRnJhbWVSZWFk
ZXIucmVhZCgpOwogICAgICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlh
UmVjb3JkZXIuaAppbmRleCBjNjYyOWRiYzZjYWJiMzZmNjFiN2U0NjI3ZDFmNTA1MDkzNzY1YTA2
Li42MGI4ZDAyMTRlNzdhNTNjYzA0NWEwZjlmZWI4MWEzOTA0OWQzZGQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaApA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJN
ZWRpYVJlY29yZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgor
I2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVk
TWVtb3J5LmgiCiAjaW5jbHVkZSAiU2hhcmVkVmlkZW9GcmFtZS5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmg+CkBAIC01Miw2ICs1Myw3IEBAIHN0cnVjdCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnM7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwOwogY2xhc3MgU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U7CiAKIGNsYXNzIFJlbW90ZU1lZGlh
UmVjb3JkZXIgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKQEAgLTcyLDcgKzc0LDcg
QEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgYXVkaW9T
YW1wbGVzU3RvcmFnZUNoYW5nZWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmLCBjb25z
dCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCB1aW50NjRfdCBudW1iZXJPZkZy
YW1lcyk7CiAgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lLCB1aW50NjRf
dCBudW1iZXJPZkZyYW1lcyk7Ci0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3Jl
OjpSZW1vdGVWaWRlb1NhbXBsZSYmKTsKKyAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFdl
YkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYsIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFt
ZVJlYWRSZWZlcmVuY2U+KTsKICAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKElQQzo6RGF0YVJlZmVyZW5jZSYmLCBkb3VibGUpPiYmKTsKICAgICB2b2lkIHN0b3BSZWNv
cmRpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHBhdXNlKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC05MCw2ICs5Miw3IEBAIHByaXZhdGU6CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9uVlQ+IG1faW1hZ2VU
cmFuc2ZlclNlc3Npb247CiAKICAgICBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyIG1fc2hhcmVkVmlk
ZW9GcmFtZVJlYWRlcjsKKyAgICBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlk
ZW9GcmFtZU9iamVjdEhlYXA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW4K
aW5kZXggYWNhZWY4YjhjNDBkYmQ1ZDdmYjliNmM4ODQ4ZjlkYTQ2ODg3MTQ5My4uNDk4ZjI4MWFm
ODAxODc4ZTA1NGQzMWVlNmVkMmI3OTcwOGI5MGU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNz
YWdlcy5pbgpAQCAtMjYsNyArMjYsNyBAQAogbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFSZWNvcmRl
ciBOb3RSZWZDb3VudGVkIHsKICAgICBBdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChXZWJLaXQ6
OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHN0b3JhZ2VIYW5kbGUsIFdlYkNvcmU6OkNBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCiAg
ICAgQXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZSB0aW1lLCB1aW50NjRfdCBudW1iZXJP
ZkZyYW1lcykKLSAgICBWaWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1Nh
bXBsZSBzYW1wbGUpCisgICAgVmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlk
ZW9TYW1wbGUgc2FtcGxlLCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVJl
YWRSZWZlcmVuY2U+IHJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlKQogICAgIEZldGNoRGF0
YSgpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgYnVmZmVyLCBkb3VibGUgdGltZUNvZGUpIEFzeW5j
CiAgICAgU3RvcFJlY29yZGluZygpIC0+ICgpIEFzeW5jCiAgICAgUGF1c2UoKSAtPiAoKSBBc3lu
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCmluZGV4IDcyNGE4Yzk2YjdlN2U1
ZTBkYmFiYTA4MjMxYmI4Yjc4ZjliYmYwYzAuLmU2ZmM2NzdjNzBjZDFkNzQ5YzY5N2Q2MjFkZTE5
YTM1YmYyNGVmYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKQEAgLTI4
LDYgKzI4LDggQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJJUENUZXN0ZXIuaCIKKyNpbmNs
dWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIgogI2luY2x1ZGUgIlNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZVRyYW5zZmVy
U2Vzc2lvblZULmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5oPgpAQCAtMzUsMTggKzM3LDIyIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVWaWRl
b1NhbXBsZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK3N0YXRpYyBjb25zdGV4cHIgU2Vjb25k
cyBkZWZhdWx0VGltZW91dCB7IDFfcyB9OworCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAot
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCitz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBn
cHVDb25uZWN0aW9uLCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKIHsKLSAgICBhdXRvIGxheWVy
ID0gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4obmV3IFJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rp
b24pKSk7CisgICAgYXV0byBsYXllciA9IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI+KG5ldyBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoZ3B1Q29u
bmVjdGlvbiwgaWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0aW9uKSkpOwogICAgIHJldHVybiBs
YXllci0+bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgPyBXVEZNb3ZlKGxheWVyKSA6IG51bGxw
dHI7CiB9CiAKLVJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6UmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQotICAgIDogbV9pZGVudGlm
aWVyKGlkZW50aWZpZXIpCitSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25u
ZWN0aW9uLCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJl
ZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKKyAgICA6IG1fZ3B1Q29ubmVjdGlvbihn
cHVDb25uZWN0aW9uKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX2Nv
bm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKICAgICAsIG1fc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyKExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUoKnRoaXMpKQorICAg
ICwgbV92aWRlb0ZyYW1lT2JqZWN0SGVhcChtX2dwdUNvbm5lY3Rpb24udmlkZW9GcmFtZU9iamVj
dEhlYXAoKSkKIHsKICAgICBBU1NFUlQobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpOwogfQpA
QCAtMTEzLDcgKzExOSwyMyBAQCB2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
cGF1c2UoKQogICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5wYXVzZSgpOwogfQogCi12
b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZShSZW1vdGVW
aWRlb1NhbXBsZSYmIHJlbW90ZVNhbXBsZSkKK3ZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyOjplbnF1ZXVlU2FtcGxlKFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlJiYgc2Ft
cGxlKQoreworICAgIGF1dG8gbWVkaWFTYW1wbGUgPSBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwLT5y
ZXRpcmUoV1RGTW92ZShzYW1wbGUpLCBkZWZhdWx0VGltZW91dCk7CisgICAgaWYgKCFtZWRpYVNh
bXBsZSkgeworICAgICAgICAvLyBJbiBjYXNlIG9mIEdQVVByb2Nlc3MgY3Jhc2gsIHdlIG1pZ2h0
IGVucXVldWUgcHJldmlvdXMgR1BVUHJvY2VzcyBzYW1wbGVzLCBpZ25vcmUgdGhlbS4KKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlQoaXM8TWVkaWFTYW1wbGVBVkZPYmpDPihtZWRp
YVNhbXBsZSkpOworICAgIGlmICghaXM8TWVkaWFTYW1wbGVBVkZPYmpDPihtZWRpYVNhbXBsZSkp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIGF2Zk1lZGlhU2FtcGxlID0gZG93bmNhc3Q8
TWVkaWFTYW1wbGVBVkZPYmpDPigqbWVkaWFTYW1wbGUpOworICAgIE1lZGlhU2FtcGxlQVZGT2Jq
Qzo6c2V0QXNEaXNwbGF5SW1tZWRpYXRlbHkoYXZmTWVkaWFTYW1wbGUpOworICAgIG1fc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLT5lbnF1ZXVlU2FtcGxlKGF2Zk1lZGlhU2FtcGxlKTsKK30KKwor
dm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGVDVihXZWJD
b3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW90ZVNhbXBsZSkKIHsKICAgICBSZWZQdHI8TWVk
aWFTYW1wbGU+IHNhbXBsZTsKICAgICBpZiAoIXJlbW90ZVNhbXBsZS5zdXJmYWNlKCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCmluZGV4IDcyNWIzZDI2YjcxYzc4ODZkYzQ4ODgy
N2QwYTZmN2QyNTJhYTdhMGQuLjgwMmM5MGZlOWViNjY0YmE5MzIxZDdhOGJkZTVkOTg0ZjQwM2Yx
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApAQCAtMzAsMTAgKzMwLDEyIEBA
CiAjaW5jbHVkZSAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRl
b0ZyYW1lSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFyZWRWaWRlb0ZyYW1lLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1l
Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZEFzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDsKQEAgLTQyLDExICs0NCwxMyBAQCBj
bGFzcyBSZW1vdGVWaWRlb1NhbXBsZTsKIH07CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworY2xhc3Mg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwOwogCiBjbGFzcyBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgOiBwdWJsaWMgV2Vi
Q29yZTo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpDbGllbnQsIHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBjcmVhdGUoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
SWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJik7CisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IGNyZWF0ZShHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiwgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciwgUmVm
PElQQzo6Q29ubmVjdGlvbj4mJik7CiAgICAgflJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cigpOwogCiAgICAgdXNpbmcgV2ViQ29yZTo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpDbGll
bnQ6OndlYWtQdHJGYWN0b3J5OwpAQCAtNjEsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgQ0dSZWN0
IGJvdW5kcygpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKLSAgICBSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciwgUmVmPElQQzo6
Q29ubmVjdGlvbj4mJik7CisgICAgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVy
LCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAog
ICAgIHZvaWQgc2V0TG9nSWRlbnRpZmllcihTdHJpbmcmJik7CkBAIC03Myw3ICs3Nyw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBmbHVzaEFuZFJlbW92ZUltYWdlKCk7CiAgICAgdm9pZCBwbGF5KCk7
CiAgICAgdm9pZCBwYXVzZSgpOwotICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShXZWJDb3JlOjpSZW1v
dGVWaWRlb1NhbXBsZSYmKTsKKyAgICB2b2lkIGVucXVldWVTYW1wbGUoUmVtb3RlVmlkZW9GcmFt
ZVJlYWRSZWZlcmVuY2UmJik7CisgICAgdm9pZCBlbnF1ZXVlU2FtcGxlQ1YoV2ViQ29yZTo6UmVt
b3RlVmlkZW9TYW1wbGUmJik7CiAgICAgdm9pZCBjbGVhckVucXVldWVkU2FtcGxlcygpOwogICAg
IHZvaWQgc2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmKTsKICAg
ICB2b2lkIHNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUmKTsKQEAgLTg1LDEyICs5MCwxNiBAQCBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6OlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Q2xpZW50CiAgICAgdm9pZCBzYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJTdGF0dXNEaWRGYWlsKCkgZmluYWw7CiAKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBtX2dwdUNvbm5lY3Rpb24gV1RGX0dVQVJERURfQllfTE9DSyhtX2NvbnN1bWVUaHJl
YWQpOwogICAgIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgbV9pZGVudGlmaWVy
OwogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6SW1hZ2VUcmFuc2ZlclNlc3Npb25WVD4gbV9pbWFnZVRyYW5zZmVyU2Vz
c2lvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI+IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxMYXllckhvc3RpbmdDb250ZXh0PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7CiAgICAgU2hhcmVk
VmlkZW9GcmFtZVJlYWRlciBtX3NoYXJlZFZpZGVvRnJhbWVSZWFkZXI7CisgICAgUmVmPFJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwOworICAgIFRocmVh
ZEFzc2VydGlvbiBtX2NvbnN1bWVUaHJlYWQgTk9fVU5JUVVFX0FERFJFU1M7CisKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4KaW5kZXgg
ZTUwNDgzMTQxZWZlZmFmYjQzZGNhNjA4Y2RjMzdkNjIxNmY3ZWNkZi4uM2NhMWY5MzI3MDcyN2Rl
MGMyYjc1NDQ3YWI4OWI2NDYzMmFiYTcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4KQEAgLTMyLDcgKzMyLDggQEAgbWVzc2FnZXMgLT4gUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIE5vdFJlZkNvdW50ZWQgewogICAgIFVwZGF0ZUJv
dW5kc0FuZFBvc2l0aW9uKENHUmVjdCBib3VuZHMsIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uIHJvdGF0aW9uKQogICAgIEZsdXNoKCkKICAgICBGbHVzaEFuZFJlbW92ZUltYWdl
KCkKLSAgICBFbnF1ZXVlU2FtcGxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSkK
KyAgICBFbnF1ZXVlU2FtcGxlKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2Ug
c2FtcGxlKQorICAgIEVucXVldWVTYW1wbGVDVihXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBz
YW1wbGUpCiAgICAgQ2xlYXJFbnF1ZXVlZFNhbXBsZXMoKQogICAgIFBsYXkoKQogICAgIFBhdXNl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCmluZGV4
IGE1NDQ1ZDdmZDVjY2JiNWFkMDBjZGVjZWM1ZDAzZjYzMzRiNWQxNTEuLjc2ZTc5OWMzNWFmMmVk
ZDIzNjZkN2NhY2RkM2U1ZTcxOTc1YzU2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcApAQCAtODEsNyArODEsNyBAQCBib29sIFJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbgogdm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpjcmVh
dGVMYXllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJv
b2wgaGlkZVJvb3RMYXllciwgV2ViQ29yZTo6SW50U2l6ZSBzaXplLCBMYXllckNyZWF0aW9uQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBjYWxsT25NYWluUnVuTG9vcChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGlkZW50aWZpZXIsIGhpZGVSb290TGF5ZXIsIHNpemUs
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8g
bGF5ZXIgPSBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShpZGVudGlmaWVy
LCBtX2Nvbm5lY3Rpb24uY29weVJlZigpKTsKKyAgICAgICAgYXV0byBsYXllciA9IFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3JlYXRlKG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcywg
aWRlbnRpZmllciwgbV9jb25uZWN0aW9uLmNvcHlSZWYoKSk7CiAgICAgICAgIGF1dG8mIGxheWVy
UmVmZXJlbmNlID0gKmxheWVyOwogICAgICAgICBsYXllclJlZmVyZW5jZS5pbml0aWFsaXplKGhp
ZGVSb290TGF5ZXIsIHNpemUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgaWRlbnRpZmllciwgbGF5ZXIgPSBXVEZNb3Zl
KGxheWVyKV0oYXV0byBsYXllcklkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGRpc3BhdGNoVG9U
aHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBpZGVudGlmaWVyLCBsYXllciA9IFdURk1vdmUobGF5
ZXIpLCBsYXllcklkID0gV1RGTW92ZShsYXllcklkKV0oKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDc1OGQ1MDU1NmZmMmY2ZTQ3Mzc3ZDE0
ZTgyNjZiYzVlM2VhYzQxYTYuLjIyNGJmZmY2ZjhlNmJiZjAwN2EyNjU1MGMzMTQ4ZGQzMzUzZWEx
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
KysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMzQ3LDYg
KzM0Nyw5IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAg
ICAgICAgICdXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJywKICAgICAg
ICAgJ1dlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXInLAogICAgICAgICAnV2Vi
S2l0OjpSZW1vdGVNZWRpYVNvdXJjZUlkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpSZW1v
dGVWaWRlb0ZyYW1lSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZVZpZGVvRnJh
bWVXcml0ZVJlZmVyZW5jZScsCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVSZWFk
UmVmZXJlbmNlJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVy
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZp
ZXInLAogICAgICAgICAnV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcicsCkBAIC04
ODMsNiArODg2LDggQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJL
aXQ6OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24nOiBbJyJQYXltZW50U2V0dXBDb25maWd1cmF0
aW9uV2ViS2l0LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVzJzog
WyciQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlc1dlYktpdC5oIiddLAogICAgICAgICAnV2Vi
S2l0OjpSZXNwZWN0U2VsZWN0aW9uQW5jaG9yJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCisgICAg
ICAgICdXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlJzogWyciUmVtb3RlVmlk
ZW9GcmFtZUlkZW50aWZpZXIuaCInXSwKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlVmlkZW9GcmFt
ZVdyaXRlUmVmZXJlbmNlJzogWyciUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCInXSwKICAg
ICAgICAgJ1dlYktpdDo6U2VsZWN0aW9uRmxhZ3MnOiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKICAg
ICAgICAgJ1dlYktpdDo6U2VsZWN0aW9uVG91Y2gnOiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKICAg
ICAgICAgJ1dlYktpdDo6VGFwSWRlbnRpZmllcic6IFsnIklkZW50aWZpZXJUeXBlcy5oIiddLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5jcHAKaW5kZXggYmFiYTBiMDg4NzdjNDcyYTUwNzFmZjNh
YTNkODgwMTAyZjU3Yzg5YS4uYThkMjU3ZWM2NzM1ZjEwZGE1OTU0ODMwMGNlNmZlM2YyY2RmOWJh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIKIAorI2luY2x1ZGUgPGF0
b21pYz4KICNpbmNsdWRlIDxkbGZjbi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8
dW5pc3RkLmg+CkBAIC00OCw2ICs0OSw4IEBAIHN0cnVjdCBTZW5kTWVzc2FnZUNvbnRleHQgewog
ICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbjsKICAgICBzdGQ6OmF0b21pYzxib29sPiYg
c2hvdWxkU3RvcDsKIH07CisKK3N0YXRpYyBzdGQ6OmF0b21pYzx1bnNpZ25lZD4gb25nb2luZ0lQ
Q1Rlc3RzIHsgMCB9OwogfQogCiBleHRlcm4gIkMiIHsKQEAgLTExNSw3ICsxMTgsOSBAQCB2b2lk
IElQQ1Rlc3Rlcjo6c3RhcnRNZXNzYWdlVGVzdGluZyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIFN0cmluZyYmIGRyaXZlcgogICAgIGlmICghbV90ZXN0UXVldWUpCiAgICAgICAgIG1fdGVz
dFF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIklQQyB0ZXN0aW5nIHdvcmsgcXVldWUiKTsKICAg
ICBtX3Rlc3RRdWV1ZS0+ZGlzcGF0Y2goW2Nvbm5lY3Rpb24gPSBSZWYgeyBjb25uZWN0aW9uIH0s
ICZzaG91bGRTdG9wID0gbV9zaG91bGRTdG9wLCBkcml2ZXJOYW1lID0gV1RGTW92ZShkcml2ZXJO
YW1lKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgb25nb2luZ0lQQ1Rlc3RzKys7CiAgICAgICAgIHJ1
bk1lc3NhZ2VUZXN0aW5nKGNvbm5lY3Rpb24sIHNob3VsZFN0b3AsIFdURk1vdmUoZHJpdmVyTmFt
ZSkpOworICAgICAgICBvbmdvaW5nSVBDVGVzdHMtLTsKICAgICB9KTsKIH0KIApAQCAtMTM0LDYg
KzEzOSwxMSBAQCB2b2lkIElQQ1Rlc3Rlcjo6c3RvcElmTmVlZGVkKCkKICAgICB9CiB9CiAKK2Jv
b2wgaXNUZXN0aW5nSVBDKCkKK3sKKyAgICByZXR1cm4gb25nb2luZ0lQQ1Rlc3RzOworfQorCiB9
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaAppbmRleCA0NDk5MDkzNWJkNTUxZDRl
ZWI1ODM1NDNlMTJlY2ZkM2I4NDcxODVlLi5lYTQ5MzM1NmQ0MzkyYzNmYTdiNWY3ZjVlMmI1NjRm
NjUzMzI3ZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaApAQCAtMjUsNyArMjUsNiBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCiAKICNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxhdG9taWM+CkBAIC0zMyw2ICszMiwxNCBA
QAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorI2RlZmluZSBBU1NFUlRfSVNfVEVTVElOR19JUEMo
KSBBU1NFUlQoaXNUZXN0aW5nSVBDKCksICJVbnRydXN0ZWQgY29ubmVjdGlvbiBzZW50IGludmFs
aWQgZGF0YS4gU2hvdWxkIG9ubHkgaGFwcGVuIHdoZW4gdGVzdGluZyBJUEMuIikKKworI2lmIEVO
QUJMRShJUENfVEVTVElOR19BUEkpCisKKy8vIEZ1bmN0aW9uIHRvIGNoZWNrIHdoZW4gYXNzZXJ0
aW5nIElQQy1yZWxhdGVkIGZhaWx1cmVzLCBzbyB0aGF0IElQQyB0ZXN0aW5nIHNraXBzIHRoZSBh
c3NlcnRpb25zCisvLyBhbmQgZXhwb3NlcyBidWdzIHVuZGVybmVhdGguCitib29sIGlzVGVzdGlu
Z0lQQygpOworCiBjbGFzcyBJUENUZXN0ZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIgewogcHVibGljOgogICAgIElQQ1Rlc3RlcigpOwpAQCAtNTIsNiArNTksMTMgQEAgcHJp
dmF0ZToKICAgICBzdGQ6OmF0b21pYzxib29sPiBtX3Nob3VsZFN0b3AgeyBmYWxzZSB9OwogfTsK
IAorI2Vsc2UKKworY29uc3RleHByIGlubGluZSBib29sIGlzVGVzdGluZ0lQQygpCit7CisgICAg
cmV0dXJuIGZhbHNlOwogfQogCiAjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL09iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTUyNTdkODQyNWJhMDQzNmQ0NzM5YTk4YzQ1ZTkyM2EzZjI5MTc4ZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL09iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2Vy
LmgKQEAgLTAsMCArMSwyMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKKyNpbmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8dXRpbGl0eT4K
KyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KKyNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmll
ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gVHlwZSBmb3IgdGhlIGtleSBpbiBtYXBw
aW5nIGZyb20gb2JqZWN0IGlkZW50aWZpZXIgcmVmZXJlbmNlcyB0byBvYmplY3Qgc3RhdGUuCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZSB7Citw
dWJsaWM6CisgICAgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZSgpID0gZGVmYXVsdDsKKyAgICBP
YmplY3RJZGVudGlmaWVyUmVmZXJlbmNlKFQgaWRlbnRpZmllciwgdWludDY0X3QgdmVyc2lvbikK
KyAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAgLCBtX3ZlcnNpb24o
dmVyc2lvbikKKyAgICB7CisgICAgfQorICAgIGV4cGxpY2l0IE9iamVjdElkZW50aWZpZXJSZWZl
cmVuY2UoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1faWRlbnRp
ZmllcihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKKyAgICB7CisgICAgfQorICAgIFQgaWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIHVpbnQ2NF90IHZl
cnNpb24oKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb247IH0KKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gb3RoZXIubV9pZGVudGlmaWVyID09IG1faWRlbnRpZmllciAmJiBvdGhlci5t
X3ZlcnNpb24gPT0gbV92ZXJzaW9uOworICAgIH0KKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2lkZW50aWZpZXIuaXNIYXNo
VGFibGVEZWxldGVkVmFsdWUoKTsKKyAgICB9Citwcml2YXRlOgorICAgIFQgbV9pZGVudGlmaWVy
OworICAgIHVpbnQ2NF90IG1fdmVyc2lvbiB7IDAgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitzdHJ1Y3QgT2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UgeworcHVibGljOgorICAg
IE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlKFQgaWRlbnRpZmllciwgdWludDY0X3QgdmVy
c2lvbikKKyAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAgLCBtX3Zl
cnNpb24odmVyc2lvbikKKyAgICB7CisgICAgfQorICAgIFQgaWRlbnRpZmllcigpIGNvbnN0IHsg
cmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIHVpbnQ2NF90IHZlcnNpb24oKSBjb25zdCB7IHJl
dHVybiBtX3ZlcnNpb247IH0KKyAgICBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+IHJlZmVy
ZW5jZSgpIGNvbnN0IHsgcmV0dXJuIHsgbV9pZGVudGlmaWVyLCBtX3ZlcnNpb24gfTsgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgbV9pZGVudGlmaWVyOworICAgICAg
ICBlbmNvZGVyIDw8IG1fdmVyc2lvbjsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2U+
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxU
PiBpZGVudGlmaWVyOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2ZXJzaW9uOwor
ICAgICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXIKKyAgICAgICAgICAgID4+IHZlcnNpb247Cisg
ICAgICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gT2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UgeyBX
VEZNb3ZlKCppZGVudGlmaWVyKSwgKnZlcnNpb24gfTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
VCBtX2lkZW50aWZpZXI7CisgICAgdWludDY0X3QgbV92ZXJzaW9uIHsgMCB9OworfTsKKworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNl
IHsKK3B1YmxpYzoKKyAgICBPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UoVCBpZGVudGlm
aWVyLCB1aW50NjRfdCB2ZXJzaW9uLCB1aW50NjRfdCBwZW5kaW5nUmVhZHMpCisgICAgICAgIDog
bV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgICAgICwgbV92ZXJzaW9uKHZlcnNpb24pCisg
ICAgICAgICwgbV9wZW5kaW5nUmVhZHMocGVuZGluZ1JlYWRzKQorICAgIHsKKyAgICB9CisgICAg
VCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgdWludDY0
X3QgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsgfQorICAgIHVpbnQ2NF90IHBl
bmRpbmdSZWFkcygpIGNvbnN0IHsgcmV0dXJuIG1fcGVuZGluZ1JlYWRzOyB9CisgICAgT2JqZWN0
SWRlbnRpZmllclJlZmVyZW5jZTxUPiByZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiB7IG1faWRl
bnRpZmllciwgbV92ZXJzaW9uIH07IH0KKyAgICBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+
IHJldGlyZSgpIGNvbnN0ICYmIHsgcmV0dXJuIHsgbV9pZGVudGlmaWVyLCBtX3ZlcnNpb24gKyAx
IH07IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IG1faWRlbnRpZmll
cjsKKyAgICAgICAgZW5jb2RlciA8PCBtX3ZlcnNpb247CisgICAgICAgIGVuY29kZXIgPDwgbV9w
ZW5kaW5nUmVhZHM7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlPiBkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VD4gaWRlbnRp
ZmllcjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdmVyc2lvbjsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGVuZGluZ1JlYWRzOworCisgICAgICAgIGRlY29kZXIg
Pj4gaWRlbnRpZmllcgorICAgICAgICAgICAgPj4gdmVyc2lvbgorICAgICAgICAgICAgPj4gcGVu
ZGluZ1JlYWRzOworICAgICAgICBpZiAoIWRlY29kZXIuaXNWYWxpZCgpKQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIE9iamVjdElkZW50aWZpZXJXcml0
ZVJlZmVyZW5jZSB7IFdURk1vdmUoKmlkZW50aWZpZXIpLCAqdmVyc2lvbiwgKnBlbmRpbmdSZWFk
cyB9OworICAgIH0KKworcHJpdmF0ZToKKyAgICBUIG1faWRlbnRpZmllcjsKKyAgICB1aW50NjRf
dCBtX3ZlcnNpb24geyAwIH07CisgICAgdWludDY0X3QgbV9wZW5kaW5nUmVhZHMgeyAwIH07Cit9
OworCisvLyBDbGFzcyB0byBnZW5lcmF0ZSByZWFkIGFuZCB3cml0ZSByZWZlcmVuY2VzIHRvIGFu
IE9iamVjdElkZW50aWZlci4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBPYmplY3RJZGVu
dGlmaWVyUmVmZXJlbmNlVHJhY2tlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoT2JqZWN0
SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIpOworcHVibGljOgorICAgIHVzaW5nIFJlYWRSZWZl
cmVuY2UgPSBPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZTxUPjsKKyAgICB1c2luZyBXcml0
ZVJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTxUPjsKKyAgICB1c2lu
ZyBSZWZlcmVuY2UgPSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+OworCisgICAgZXhwbGlj
aXQgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIoVCBpZGVudGlmaWVyKQorICAgICAg
ICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgIHsKKyAgICB9CisgICAgLy8gVGhyZWFk
IHNhZmUuCisgICAgUmVhZFJlZmVyZW5jZSByZWFkKCkgY29uc3QKKyAgICB7CisgICAgICAgIG1f
cGVuZGluZ1JlYWRzKys7CisgICAgICAgIHJldHVybiB7IG1faWRlbnRpZmllciwgbV92ZXJzaW9u
IH07CisgICAgfQorICAgIC8vIE5vdCB0aHJlYWQgc2FmZS4gQ2xpZW50IG11c3QgY29vcmRpbmF0
ZSB3cml0ZXMgYW5kIHJlYWRzIGFueXdheS4KKyAgICBXcml0ZVJlZmVyZW5jZSB3cml0ZSgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4geyBtX2lkZW50aWZpZXIsIG1fdmVyc2lvbisrLCBt
X3BlbmRpbmdSZWFkcy5leGNoYW5nZSgwKSB9OworICAgIH0KKyAgICBUIGlkZW50aWZpZXIoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllcjsKKyAgICB9Citwcml2YXRl
OgorICAgIGNvbnN0IFQgbV9pZGVudGlmaWVyOworICAgIG11dGFibGUgc3RkOjphdG9taWM8dWlu
dDY0X3Q+IG1fcGVuZGluZ1JlYWRzIHsgMCB9OworICAgIG11dGFibGUgdWludDY0X3QgbV92ZXJz
aW9uIHsgMCB9OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgYWRkKEhh
c2hlciYgaGFzaGVyLCBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+IHJlZmVyZW5jZSkKK3sK
KyAgICBhZGQoaGFzaGVyLCByZWZlcmVuY2UuaWRlbnRpZmllcigpKTsKKyAgICBhZGQoaGFzaGVy
LCByZWZlcmVuY2UudmVyc2lvbigpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1RleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFdlYktpdDo6T2JqZWN0SWRl
bnRpZmllclJlZmVyZW5jZTxUPiYgcmVmZXJlbmNlKQoreworICAgIHRzIDw8ICJPYmplY3RJZGVu
dGlmaWVyUmVmZXJlbmNlKCIgPDwgcmVmZXJlbmNlLmlkZW50aWZpZXIoKSA8PCAiLCAiIDw8IHJl
ZmVyZW5jZS52ZXJzaW9uKCkgPDwgIikiOworICAgIHJldHVybiB0czsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4KK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2U8VD4mIHJlZmVyZW5jZSkKK3sK
KyAgICB0cyA8PCAiT2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UoIiA8PCByZWZlcmVuY2Uu
aWRlbnRpZmllcigpIDw8ICIsICIgPDwgcmVmZXJlbmNlLnZlcnNpb24oKSA8PCAiKSI7CisgICAg
cmV0dXJuIHRzOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyV3JpdGVS
ZWZlcmVuY2U8VD4mIHJlZmVyZW5jZSkKK3sKKyAgICB0cyA8PCAiT2JqZWN0SWRlbnRpZmllcldy
aXRlUmVmZXJlbmNlKCIgPDwgcmVmZXJlbmNlLmlkZW50aWZpZXIoKSA8PCAiLCAiIDw8IHJlZmVy
ZW5jZS52ZXJzaW9uKCkgPDwgIiwgIiA8PCByZWZlcmVuY2UucGVuZGluZ1JlYWRzKCkgPDwgIiki
OworICAgIHJldHVybiB0czsKK30KKworfQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVm
ZXJlbmNlPFQ+PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxXZWJLaXQ6Ok9iamVjdElkZW50aWZp
ZXJSZWZlcmVuY2U8VD4+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgZW1wdHlWYWx1ZUlz
WmVybyA9IEhhc2hUcmFpdHM8VD46OmVtcHR5VmFsdWVJc1plcm87Cit9OworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVm
ZXJlbmNlPFQ+PiB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViS2l0OjpPYmpl
Y3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+JiByZWZlcmVuY2UpCisgICAgeworICAgICAgICByZXR1
cm4gY29tcHV0ZUhhc2gocmVmZXJlbmNlKTsKKyAgICB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwo
Y29uc3QgV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+JiBhLCBjb25zdCBXZWJL
aXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4mIGIpCisgICAgeworICAgICAgICByZXR1
cm4gYSA9PSBiOworICAgIH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFy
ZVRvRW1wdHlPckRlbGV0ZWQgPSBEZWZhdWx0SGFzaDxUPjo6c2FmZVRvQ29tcGFyZVRvRW1wdHlP
ckRlbGV0ZWQ7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvVGhyZWFkU2FmZU9iamVjdEhlYXAuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RocmVh
ZFNhZmVPYmplY3RIZWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjU1MDY0YzBkOGI0Njk4MjNjOWZjM2U3MDYz
NTFlMjBhYWE2ZWNiZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Ro
cmVhZFNhZmVPYmplY3RIZWFwLmgKQEAgLTAsMCArMSwyMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKyNpbmNsdWRlICJJUENUZXN0ZXIuaCIKKyNpbmNsdWRlICJPYmplY3RJZGVudGlmaWVyUmVm
ZXJlbmNlVHJhY2tlci5oIgorI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1RocmVh
ZEFzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIENvbnRhaW5lciB0aGF0IGhvbGRzIGlkZW50aWZpZXIg
LT4gb2JqZWN0IG1hcHBpbmcgYmV0d2VlbiB0d28gcHJvY2Vzc2VzLgorLy8gVXNlZCBpbiBzY2Vu
YXJpb3Mgd2hlcmUgdGhlIGhvbGRlciBwcm9jZXNzIHByb2Nlc3NlcyBtZXNzYWdlcyB3aXRoIHRo
ZSBvYmplY3QgcmVmZXJlbmNlcyBpbiBtdWx0aXBsZQorLy8gdGhyZWFkcy4gYFRocmVhZFNhZmVP
YmplY3RIZWFwYCB0cmFja3MgdGhlIHJlYWQgYW5kIHdyaXRlIHJlZmVyZW5jZXMgdG8gdGhlIGNv
bnRlbnQgcG9pbnRlZAorLy8gYnkgYSBwYXJ0aWN1bGFyIGlkZW50aWZpZXIuCisvLyBQZW5kaW5n
IHJlYWRzIG1heSBibG9jayBuZXcgd3JpdGVzLiBBbHRlcm5hdGl2ZWx5IG5ldyB3cml0ZXMgY2Fu
IHNraXAgYWhlYWQgb2YgdGhlIHJlYWRzLAorLy8gZm9yIGV4YW1wbGUgaW4gY29weS1vbi13cml0
ZSBzY2VuYXJpb3MuCisvLyBQZW5kaW5nIHdyaXRlcyBibG9jayByZWFkcy4KKy8vIEN1cnJlbnRs
eSBpbXBsZW1lbnRlZCBvbmx5IGZvciByZWFkLW9ubHkgKGNyZWF0ZS1yZWFkLWRlc3Ryb3kpIG9y
IGNvcHktb24td3JpdGUgdHlwZXMsCisvLyBlLmcuIG5vIHR3by1waGFzZSBnZXQoKSBvcGVyYXRp
b25zIGFyZSBub3QgaW1wbGVtZW50ZWQgeWV0LgordGVtcGxhdGU8dHlwZW5hbWUgSWRlbnRpZmll
ciwgdHlwZW5hbWUgSGVsZFR5cGU+CitjbGFzcyBUaHJlYWRTYWZlT2JqZWN0SGVhcCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWRTYWZlT2JqZWN0SGVhcDxJZGVudGlmaWVyLCBI
ZWxkVHlwZT4+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBSZWFkUmVmZXJlbmNlID0gdHlwZW5hbWUg
T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXI8SWRlbnRpZmllcj46OlJlYWRSZWZlcmVu
Y2U7CisgICAgdXNpbmcgV3JpdGVSZWZlcmVuY2UgPSB0eXBlbmFtZSBPYmplY3RJZGVudGlmaWVy
UmVmZXJlbmNlVHJhY2tlcjxJZGVudGlmaWVyPjo6V3JpdGVSZWZlcmVuY2U7CisgICAgdXNpbmcg
UmVmZXJlbmNlID0gdHlwZW5hbWUgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXI8SWRl
bnRpZmllcj46OlJlZmVyZW5jZTsKKworICAgIHZvaWQgYWRkKElkZW50aWZpZXIsIEhlbGRUeXBl
JiYpOworCisgICAgLy8gV2FpdHMgdW50aWwgYSB3cml0ZSBjcmVhdGVzIHRoZSByZWZlcmVuY2Ug
YW5kIHRoZW4gcmV0aXJlcyB0aGUgcmVhZCBvcgorICAgIC8vIHRpbWVzIG91dC4KKyAgICBIZWxk
VHlwZSByZXRpcmUoUmVhZFJlZmVyZW5jZSYmLCBJUEM6OlRpbWVvdXQpOworCisgICAgLy8gSW5z
ZXJ0cyBhIG5ldyB2ZXJzaW9uIG9mIHRoZSBvYmplY3Qgb3IgcmVtb3ZlcyBhbiBvbGQgb25lIGFu
ZCB0aGVuIHJldGlyZXMgdGhlIHdyaXRlIG9yCisgICAgLy8gdGltZXMgb3V0LgorICAgIC8vIElm
IHRpbWVvdXQgaXMgcGFzc2VkLCB3YWl0cyB1bnRpbCBwZW5kaW5nIHJlYWRzIGFyZSBkb25lLgor
ICAgIC8vIEl0IGlzIGEgY2FsbGVyIGVycm9yIHRvIG5vdCB3YWl0IGFuZCBtdXRhdGUgdGhlIG9s
ZCBvYmplY3QuCisgICAgdm9pZCByZXRpcmUoV3JpdGVSZWZlcmVuY2UmJiwgc3RkOjpvcHRpb25h
bDxIZWxkVHlwZT4mJiBuZXdPYmplY3QsIHN0ZDo6b3B0aW9uYWw8SVBDOjpUaW1lb3V0Pik7CisK
KyAgICB2b2lkIHJldGlyZVJlbW92ZShXcml0ZVJlZmVyZW5jZSYmKTsKKworICAgIHZvaWQgY2xl
YXIoKTsKK3ByaXZhdGU6CisgICAgTG9jayBtX29iamVjdHNMb2NrOworICAgIENvbmRpdGlvbiBt
X29iamVjdHNDb25kaXRpb247CisgICAgc3RydWN0IFJlZmVyZW5jZVN0YXRlIHsKKyAgICAgICAg
dWludDY0X3QgcmV0aXJlZFJlYWRzIHsgMCB9OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmaW5hbFJlYWQ7IC8vIFJlbW92ZSBhZnRlciBgZmluYWxSZWFkYCByZWFkcy4KKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxIZWxkVHlwZT4gb2JqZWN0OyAvLyBPYmplY3Qgb3IgdG9tYnN0b25l
LgorCisgICAgICAgIFJlZmVyZW5jZVN0YXRlKCkgPSBkZWZhdWx0OworICAgICAgICBleHBsaWNp
dCBSZWZlcmVuY2VTdGF0ZShIZWxkVHlwZSYmIG9iamVjdCkKKyAgICAgICAgICAgIDogb2JqZWN0
KFdURk1vdmUob2JqZWN0KSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIC8vIFRvbWJz
dG9uZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgZXhwbGljaXQgUmVmZXJlbmNlU3RhdGUodWludDY0
X3QgZmluYWxSZWFkKQorICAgICAgICAgICAgOiBmaW5hbFJlYWQoZmluYWxSZWFkKQorICAgICAg
ICB7CisgICAgICAgIH0KKyAgICB9OworICAgIEhhc2hNYXA8UmVmZXJlbmNlLCBSZWZlcmVuY2VT
dGF0ZT4gbV9vYmplY3RzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9vYmplY3RzTG9jayk7Cit9Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBJZGVudGlmaWVyLCB0eXBlbmFtZSBIZWxkVHlwZT4KK0hlbGRU
eXBlIFRocmVhZFNhZmVPYmplY3RIZWFwPElkZW50aWZpZXIsIEhlbGRUeXBlPjo6cmV0aXJlKFJl
YWRSZWZlcmVuY2UmJiByZWFkLCBJUEM6OlRpbWVvdXQgdGltZW91dCkKK3sKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9vYmplY3RzTG9jayB9OworICAgIGRvIHsKKyAgICAgICAgYXV0byBpdCA9IG1f
b2JqZWN0cy5maW5kKHJlYWQucmVmZXJlbmNlKCkpOworICAgICAgICBpZiAoaXQgIT0gbV9vYmpl
Y3RzLmVuZCgpKSB7CisgICAgICAgICAgICBhdXRvJiBzdGF0ZSA9IGl0LT52YWx1ZTsKKyAgICAg
ICAgICAgIGlmIChzdGF0ZS5vYmplY3QpIHsKKyAgICAgICAgICAgICAgICBIZWxkVHlwZSByZXN1
bHQgPSAqc3RhdGUub2JqZWN0OworICAgICAgICAgICAgICAgIHN0YXRlLnJldGlyZWRSZWFkcysr
OworICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5maW5hbFJlYWQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKHN0YXRlLmZpbmFsUmVhZCA+PSBzdGF0ZS5yZXRpcmVkUmVhZHMpOyAvLyBU
cnVzdGVkIGFzc2VydCBiZWNhdXNlIHRoaXMgaXMgZW5zdXJlZCBvbiBgZmluYWxSZWFkYCBhc3Np
Z25tZW50LgorICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUuZmluYWxSZWFkID09IHN0YXRl
LnJldGlyZWRSZWFkcykKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb2JqZWN0cy5yZW1vdmUo
aXQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtX29iamVjdHNDb25kaXRp
b24ubm90aWZ5QWxsKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIW1fb2JqZWN0c0NvbmRpdGlvbi53YWl0VW50
aWwobV9vYmplY3RzTG9jaywgdGltZW91dC5kZWFkbGluZSgpKSkKKyAgICAgICAgICAgIGJyZWFr
OworICAgIH0gd2hpbGUgKHRydWUpOworICAgIHJldHVybiBudWxscHRyOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBJZGVudGlmaWVyLCB0eXBlbmFtZSBIZWxkVHlwZT4KK3ZvaWQgVGhyZWFkU2Fm
ZU9iamVjdEhlYXA8SWRlbnRpZmllciwgSGVsZFR5cGU+OjpyZXRpcmUoV3JpdGVSZWZlcmVuY2Um
JiB3cml0ZSwgc3RkOjpvcHRpb25hbDxIZWxkVHlwZT4mJiBvYmplY3QsIHN0ZDo6b3B0aW9uYWw8
SVBDOjpUaW1lb3V0PiB0aW1lb3V0KQoreworICAgIGNvbnN0IGJvb2wgd2FpdEZvclBlbmRpbmdS
ZWFkcyA9IHRpbWVvdXQuaGFzX3ZhbHVlKCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fb2JqZWN0
c0xvY2sgfTsKKyAgICBkbyB7CisgICAgICAgIGF1dG8gaXQgPSBtX29iamVjdHMuZmluZCh3cml0
ZS5yZWZlcmVuY2UoKSk7CisgICAgICAgIGlmIChpdCAhPSBtX29iamVjdHMuZW5kKCkpIHsKKyAg
ICAgICAgICAgIGF1dG8mIHN0YXRlID0gaXQtPnZhbHVlOworICAgICAgICAgICAgaWYgKHN0YXRl
LmZpbmFsUmVhZCAmJiBzdGF0ZS5vYmplY3QpIHsKKyAgICAgICAgICAgICAgICAvLyBXcml0ZSBy
ZXBsYXk6IGBmaW5hbFJlYWRgIGlzIGFzc2lnbmVkIG9uIHdyaXRlLiBDYW5ub3QgaGF2ZSB0aGUg
c2FtZSB2ZXJzaW9uIHdpdGggd3JpdGVzLgorICAgICAgICAgICAgICAgIEFTU0VSVF9JU19URVNU
SU5HX0lQQygpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmIChzdGF0ZS5yZXRpcmVkUmVhZHMgPiB3cml0ZS5wZW5kaW5nUmVhZHMoKSkgewor
ICAgICAgICAgICAgICAgIC8vIFdyaXRlIHVuZGVyZmxvdzogbW9yZSByZWFkcyBoYXZlIGJlZW4g
ZG9uZSB0aGFuIHRoZSBzZW5kZXIgY2xhaW1zIGlzIHRoZSBtYXhpbXVtLgorICAgICAgICAgICAg
ICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEl0IGlzIGxpa2VseSBhIGNhbGxlciBlcnJvciB0
byB0cnkgdG8gYWRkIGEgbmV3IHJlZmVyZW5jZSB3aXRoIHRoZSBzYW1lIGNsaWVudCBvYmplY3Qg
d2l0aG91dAorICAgICAgICAgICAgLy8gd2FpdGluZyBmb3IgcGVuZGluZyByZWFkcyBvbiB0aGUg
b2xkIHJlZmVyZW5jZS4KKyAgICAgICAgICAgIEFTU0VSVCh3YWl0Rm9yUGVuZGluZ1JlYWRzIHx8
ICFzdGF0ZS5vYmplY3QgfHwgKnN0YXRlLm9iamVjdCAhPSBvYmplY3QpOworCisgICAgICAgICAg
ICBpZiAoc3RhdGUucmV0aXJlZFJlYWRzID09IHdyaXRlLnBlbmRpbmdSZWFkcygpIHx8ICF3YWl0
Rm9yUGVuZGluZ1JlYWRzKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0YXRlLnJldGlyZWRSZWFk
cyA8IHdyaXRlLnBlbmRpbmdSZWFkcygpKQorICAgICAgICAgICAgICAgICAgICBzdGF0ZS5maW5h
bFJlYWQgPSB3cml0ZS5wZW5kaW5nUmVhZHMoKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChz
dGF0ZS5yZXRpcmVkUmVhZHMgPT0gd3JpdGUucGVuZGluZ1JlYWRzKCkpCisgICAgICAgICAgICAg
ICAgICAgIG1fb2JqZWN0cy5yZW1vdmUoaXQpOworICAgICAgICAgICAgICAgIGlmIChvYmplY3Qp
IHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX29iamVjdHMuYWRkKFdU
Rk1vdmUod3JpdGUpLnJldGlyZSgpLCBSZWZlcmVuY2VTdGF0ZSB7IFdURk1vdmUoKm9iamVjdCkg
fSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGF1dG8mIG5ld1N0YXRlID0gYWRkUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVudHJ5IHdhcyBhIHRvbWJzdG9u
ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdTdGF0ZS5maW5hbFJlYWQgJiYgISpu
ZXdTdGF0ZS5maW5hbFJlYWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX29iamVj
dHMucmVtb3ZlKGFkZFJlc3VsdC5pdGVyYXRvcik7CisgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKCFuZXdTdGF0ZS5vYmplY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuZXdTdGF0ZS5vYmplY3QgPSBXVEZNb3ZlKCpvYmplY3QpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChuZXdTdGF0ZS5vYmplY3QpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBXcml0ZSByZXBsYXk6IHRoZSByZXRpcmVkIHdyaXRlIGFscmVhZHkgZXhpc3Rz
LCB0aGUgZW50cnkgd2FzIG5vdCBhIHRvbWJzdG9uZS4KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgbV9vYmplY3RzQ29uZGl0aW9uLm5vdGlmeUFsbCgpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSBpZiAoIXdhaXRGb3JQZW5kaW5nUmVhZHMgfHwgIXdyaXRlLnBlbmRp
bmdSZWFkcygpKSB7CisgICAgICAgICAgICAvLyBXcml0ZSB0aGUgdG9tYnN0b25lLgorICAgICAg
ICAgICAgbV9vYmplY3RzLmFkZCh3cml0ZS5yZWZlcmVuY2UoKSwgUmVmZXJlbmNlU3RhdGUgeyB3
cml0ZS5wZW5kaW5nUmVhZHMoKSB9KTsKKyAgICAgICAgICAgIGlmIChvYmplY3QpCisgICAgICAg
ICAgICAgICAgbV9vYmplY3RzLmFkZChXVEZNb3ZlKHdyaXRlKS5yZXRpcmUoKSwgUmVmZXJlbmNl
U3RhdGUgeyBXVEZNb3ZlKCpvYmplY3QpIH0pOworICAgICAgICAgICAgbV9vYmplY3RzQ29uZGl0
aW9uLm5vdGlmeUFsbCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IEFTU0VSVCh0aW1lb3V0KTsKKyAgICAgICAgaWYgKCFtX29iamVjdHNDb25kaXRpb24ud2FpdFVu
dGlsKG1fb2JqZWN0c0xvY2ssIHRpbWVvdXQtPmRlYWRsaW5lKCkpKQorICAgICAgICAgICAgYnJl
YWs7CisgICAgfSB3aGlsZSAodHJ1ZSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIElkZW50aWZp
ZXIsIHR5cGVuYW1lIEhlbGRUeXBlPgordm9pZCBUaHJlYWRTYWZlT2JqZWN0SGVhcDxJZGVudGlm
aWVyLCBIZWxkVHlwZT46OnJldGlyZVJlbW92ZShXcml0ZVJlZmVyZW5jZSYmIG9iamVjdCkKK3sK
KyAgICByZXRpcmUoV1RGTW92ZShvYmplY3QpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIElkZW50aWZpZXIsIHR5cGVuYW1lIEhlbGRUeXBlPgor
dm9pZCBUaHJlYWRTYWZlT2JqZWN0SGVhcDxJZGVudGlmaWVyLCBIZWxkVHlwZT46OmNsZWFyKCkK
K3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9vYmplY3RzTG9jayB9OworICAgIG1fb2JqZWN0cy5j
bGVhcigpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJZGVudGlmaWVyLCB0eXBlbmFtZSBIZWxk
VHlwZT4KK3ZvaWQgVGhyZWFkU2FmZU9iamVjdEhlYXA8SWRlbnRpZmllciwgSGVsZFR5cGU+Ojph
ZGQoSWRlbnRpZmllciBpZGVudGlmaWVyLCBIZWxkVHlwZSYmIG9iamVjdCkKK3sKKyAgICBSZWZl
cmVuY2UgcmVmZXJlbmNlIHsgaWRlbnRpZmllciwgMCB9OworICAgIExvY2tlciBsb2NrZXIgeyBt
X29iamVjdHNMb2NrIH07CisgICAgQVNTRVJUKCFtX29iamVjdHMuY29udGFpbnMocmVmZXJlbmNl
KSk7CisgICAgbV9vYmplY3RzLmFkZChyZWZlcmVuY2UsIFJlZmVyZW5jZVN0YXRlIHsgV1RGTW92
ZShvYmplY3QpIH0pOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRl
UmFuZ2UuY3BwCmluZGV4IDRkZTFkMGVkMmE3YmU0OWUzY2JiYjk1ZTM3N2Y1NDUwOWZhYzA3YWQu
Ljc4ZjczMTM0Y2U2YTdhMjE0Y2RjOWRlMDVjNDc1MzcyZTE3YzlhM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVS
YW5nZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVy
L01lZGlhU2FtcGxlQnl0ZVJhbmdlLmNwcApAQCAtNjYsNyArNjYsNyBAQCBBdG9tU3RyaW5nIE1l
ZGlhU2FtcGxlQnl0ZVJhbmdlOjp0cmFja0lEKCkgY29uc3QKICAgICByZXR1cm4gQXRvbVN0cmlu
Zzo6bnVtYmVyKG1fdHJhY2tJRCk7CiB9CiAKLVBsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxlQnl0
ZVJhbmdlOjpwbGF0Zm9ybVNhbXBsZSgpCitQbGF0Zm9ybVNhbXBsZSBNZWRpYVNhbXBsZUJ5dGVS
YW5nZTo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogewogICAgIHJldHVybiB7CiAgICAgICAgIFBs
YXRmb3JtU2FtcGxlOjpCeXRlUmFuZ2VTYW1wbGVUeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVC
eXRlUmFuZ2UuaAppbmRleCBiOGU0ZDc2Y2U2ZjM5Mjg1NzZlOWZiMWVmOTYyYjQwNDk3ZTNkYzMx
Li5mODMzNmJmMDEzNzIxMDkwZGExOTM3OGZiNWE0NTNjOGRhY2E1NzZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRl
UmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIv
TWVkaWFTYW1wbGVCeXRlUmFuZ2UuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgc3Rk
OjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
Ynl0ZVJhbmdlOyB9CiAKICAgICBBdG9tU3RyaW5nIHRyYWNrSUQoKSBjb25zdCBmaW5hbDsKLSAg
ICBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGZpbmFsOworICAgIFdl
YkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3QgZmluYWw7CiAgICAg
dm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CiAgICAgdm9p
ZCBzZXRUaW1lc3RhbXBzKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYpIGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dAppbmRleCBmNWM1YmRjOWVmODg0Mzc4ODM5OWZhYWNlZTVlMjk0ZThhZDlh
NmEzLi42Y2RkMTRiZDA5NDNlOTBlMDg4Zjc0ZDZlZjFkMDIyOTBlMWUxYWFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKQEAgLTcwLDYgKzcwLDcgQEAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclBy
b3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyLmNwcAogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291
cmNlUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5l
clByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAK
QEAgLTc0NSw2ICs3NDYsNyBAQCBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYUVuZ2lu
ZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNSU1FVHlwZUNhY2hlLmNwcCBAbm8tdW5pZnkKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVv
RnJhbWVQcm94eS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRM
aXN0ZW5lci5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1v
dGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcApA
QCAtNzUzLDYgKzc1NSw3IEBAIFdlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3ku
Y3BwCiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAogV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAogV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAKK1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5LmNwcAogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcAogCkBAIC04ODMsNiArODg2LDkgQEAgUmVtb3Rl
RGV2aWNlTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlRXh0ZXJuYWxUZXh0dXJlTWVzc2FnZVJl
Y2VpdmVyLmNwcAogUmVtb3RlR1BVTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlR1BVUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwCitSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VSZWNl
aXZlci5jcHAKK1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwCitSZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVQaXBl
bGluZUxheW91dE1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVF1ZXJ5U2V0TWVzc2FnZVJlY2Vp
dmVyLmNwcAogUmVtb3RlUXVldWVNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHkuY3BwCmluZGV4IDJhZjc4MjkwZjUwNzNlYTFjOTc2MTk3MjM4Y2Y1NjI0ZjY5ZDhhMWEu
LjI2MzZiMGM0MzU3YzM1OTdmNDliZjczOTYzNzcwMzU4NTVkMjY1MDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHkuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCiAjaW5jbHVkZSAiU2hhcmVkUmlu
Z0J1ZmZlclN0b3JhZ2UuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgi
CkBAIC00MCw2ICs0MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ltYWdlUm90YXRpb25TZXNzaW9uVlQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL01lZGlhQ29uc3RyYWludHMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2FtcGxlQVZG
T2JqQy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRpbWVWaWRlb1NvdXJjZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVtb3RlVmlkZW9TYW1wbGUuaD4KQEAgLTU3LDExICs1OSwxMiBAQCBjbGFzcyBVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5OjpTb3VyY2VQcm94eQogICAgICwgcHJpdmF0ZSBSZWFsdGlt
ZU1lZGlhU291cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTb3VyY2VQcm94eShSZWFsdGltZU1lZGlhU291cmNlSWRl
bnRpZmllciBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBQcm9jZXNzSWRl
bnRpdHkmJiByZXNvdXJjZU93bmVyLCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiBzb3VyY2Up
CisgICAgU291cmNlUHJveHkoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIFJlZjxJ
UEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgUHJvY2Vzc0lkZW50aXR5JiYgcmVzb3VyY2VP
d25lciwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlLCBSZWZQdHI8UmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXA+JiYgdmlkZW9GcmFtZU9iamVjdEhlYXApCiAgICAgICAgIDogbV9p
ZChpZCkKICAgICAgICAgLCBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKICAgICAg
ICAgLCBtX3Jlc291cmNlT3duZXIoV1RGTW92ZShyZXNvdXJjZU93bmVyKSkKICAgICAgICAgLCBt
X3NvdXJjZShXVEZNb3ZlKHNvdXJjZSkpCisgICAgICAgICwgbV92aWRlb0ZyYW1lT2JqZWN0SGVh
cChXVEZNb3ZlKHZpZGVvRnJhbWVPYmplY3RIZWFwKSkKICAgICB7CiAgICAgICAgIG1fc291cmNl
LT5hZGRPYnNlcnZlcigqdGhpcyk7CiAgICAgICAgIHN3aXRjaCAobV9zb3VyY2UtPnR5cGUoKSkg
ewpAQCAtMTgzLDE5ICsxODYsMzUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fY2FwdHVyZVNl
bWFwaG9yZS0+c2lnbmFsKCk7CiAgICAgfQogCi0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJs
ZShNZWRpYVNhbXBsZSYgc2FtcGxlLCBWaWRlb1NhbXBsZU1ldGFkYXRhIG1ldGFkYXRhKSBmaW5h
bAorICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gcm90YXRlVmlkZW9GcmFtZUlmTmVlZGVkKE1lZGlh
U2FtcGxlJiBzYW1wbGUpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlk
ZW9TYW1wbGU+IHJlbW90ZVNhbXBsZTsKICAgICAgICAgaWYgKG1fc2hvdWxkQXBwbHlSb3RhdGlv
biAmJiBzYW1wbGUudmlkZW9Sb3RhdGlvbigpICE9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9u
OjpOb25lKSB7CiAgICAgICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gcm90YXRlUGl4ZWxCdWZm
ZXIoc2FtcGxlKTsKLSAgICAgICAgICAgIHJlbW90ZVNhbXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxl
OjpjcmVhdGUocGl4ZWxCdWZmZXIuZ2V0KCksIHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCkpOwot
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJlbW90ZVNhbXBsZSA9IFJlbW90ZVZpZGVvU2Ft
cGxlOjpjcmVhdGUoc2FtcGxlKTsKLSAgICAgICAgaWYgKHJlbW90ZVNhbXBsZSkgewotICAgICAg
ICAgICAgaWYgKG1fcmVzb3VyY2VPd25lcikKLSAgICAgICAgICAgICAgICByZW1vdGVTYW1wbGUt
PnNldE93bmVyc2hpcElkZW50aXR5KG1fcmVzb3VyY2VPd25lcik7Ci0gICAgICAgICAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjpWaWRl
b1NhbXBsZUF2YWlsYWJsZShtX2lkLCBXVEZNb3ZlKCpyZW1vdGVTYW1wbGUpLCBtZXRhZGF0YSks
IDApOworICAgICAgICAgICAgcmV0dXJuIE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VT
YW1wbGUoV1RGTW92ZShwaXhlbEJ1ZmZlciksIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpO
b25lLCBzYW1wbGUudmlkZW9NaXJyb3JlZCgpLCBzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpLCBz
YW1wbGUuZGVjb2RlVGltZSgpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gJnNhbXBsZTsK
KyAgICB9CisKKyAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1w
bGUsIFZpZGVvU2FtcGxlTWV0YWRhdGEgbWV0YWRhdGEpIGZpbmFsCisgICAgeworICAgICAgICBh
dXRvIHZpZGVvU2FtcGxlID0gcm90YXRlVmlkZW9GcmFtZUlmTmVlZGVkKHNhbXBsZSk7CisgICAg
ICAgIGlmICghdmlkZW9TYW1wbGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0
byByZW1vdGVTYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKCp2aWRlb1NhbXBsZSk7
CisgICAgICAgIGlmICghcmVtb3RlU2FtcGxlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGlmIChtX3Jlc291cmNlT3duZXIpCisgICAgICAgICAgICByZW1vdGVTYW1wbGUtPnNldE93
bmVyc2hpcElkZW50aXR5KG1fcmVzb3VyY2VPd25lcik7CisKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj4gcmVtb3RlSWRlbnRpZmllcjsKKyAgICAgICAg
aWYgKG1fdmlkZW9GcmFtZU9iamVjdEhlYXApIHsKKyAgICAgICAgICAgIHJlbW90ZUlkZW50aWZp
ZXIgPSBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwLT5jcmVhdGVSZW1vdGVWaWRlb0ZyYW1lKHNhbXBs
ZSk7CisgICAgICAgICAgICByZW1vdGVTYW1wbGUtPmNsZWFySU9TdXJmYWNlKCk7CiAgICAgICAg
IH0KKworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyOjpWaWRlb1NhbXBsZUF2YWlsYWJsZShtX2lkLCBXVEZNb3ZlKCpyZW1vdGVT
YW1wbGUpLCByZW1vdGVJZGVudGlmaWVyLCBtZXRhZGF0YSksIDApOwogICAgIH0KIAogICAgIFJl
dGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiByb3RhdGVQaXhlbEJ1ZmZlcihNZWRpYVNhbXBsZSYg
c2FtcGxlKQpAQCAtMjYwLDYgKzI3OSw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fZnJhbWVD
aHVua1NpemUgeyAwIH07CiAgICAgTWVkaWFUaW1lIG1fc3RhcnRUaW1lOwogICAgIGJvb2wgbV9z
aG91bGRSZXNldCB7IGZhbHNlIH07CisgICAgUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwPiBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwOwogfTsKIAogVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJQcm94eTo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eShVbmlxdWVSZWY8Q29ubmVjdGlv
blByb3h5PiYmIGNvbm5lY3Rpb25Qcm94eSkKQEAgLTMyNCw3ICszNDQsNyBAQCB2b2lkIFVzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmlj
ZVdpdGhDb25zdHJhaQogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKCFtX3Byb3hpZXMuY29u
dGFpbnMoaWQpKTsKLSAgICAgICAgYXV0byBwcm94eSA9IG1ha2VVbmlxdWU8U291cmNlUHJveHk+
KGlkLCBtX2Nvbm5lY3Rpb25Qcm94eS0+Y29ubmVjdGlvbigpLCBQcm9jZXNzSWRlbnRpdHkgeyBt
X2Nvbm5lY3Rpb25Qcm94eS0+cmVzb3VyY2VPd25lcigpIH0sIFdURk1vdmUoc291cmNlKSk7Cisg
ICAgICAgIGF1dG8gcHJveHkgPSBtYWtlVW5pcXVlPFNvdXJjZVByb3h5PihpZCwgbV9jb25uZWN0
aW9uUHJveHktPmNvbm5lY3Rpb24oKSwgUHJvY2Vzc0lkZW50aXR5IHsgbV9jb25uZWN0aW9uUHJv
eHktPnJlc291cmNlT3duZXIoKSB9LCBXVEZNb3ZlKHNvdXJjZSksIG1fY29ubmVjdGlvblByb3h5
LT5yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCgpKTsKICAgICAgICAgbV9wcm94aWVzLmFkZChp
ZCwgV1RGTW92ZShwcm94eSkpOwogICAgIH0gZWxzZQogICAgICAgICBpbnZhbGlkQ29uc3RyYWlu
dHMgPSBXVEZNb3ZlKHNvdXJjZU9yRXJyb3IuZXJyb3JNZXNzYWdlKTsKQEAgLTM5MCw3ICs0MTAs
NyBAQCB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OmNsb25lKFJlYWx0aW1lTWVk
aWFTb3VyY2VJZGVudGlmaWVyIGNsb25lZElELAogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm94aWVz
LmNvbnRhaW5zKGNsb25lZElEKSk7CiAgICAgTUVTU0FHRV9DSEVDSyghbV9wcm94aWVzLmNvbnRh
aW5zKG5ld1NvdXJjZUlEKSk7CiAgICAgaWYgKGF1dG8qIHByb3h5ID0gbV9wcm94aWVzLmdldChj
bG9uZWRJRCkpCi0gICAgICAgIG1fcHJveGllcy5hZGQobmV3U291cmNlSUQsIG1ha2VVbmlxdWU8
U291cmNlUHJveHk+KG5ld1NvdXJjZUlELCBtX2Nvbm5lY3Rpb25Qcm94eS0+Y29ubmVjdGlvbigp
LCBQcm9jZXNzSWRlbnRpdHkgeyBtX2Nvbm5lY3Rpb25Qcm94eS0+cmVzb3VyY2VPd25lcigpIH0s
IHByb3h5LT5zb3VyY2UoKS5jbG9uZSgpKSk7CisgICAgICAgIG1fcHJveGllcy5hZGQobmV3U291
cmNlSUQsIG1ha2VVbmlxdWU8U291cmNlUHJveHk+KG5ld1NvdXJjZUlELCBtX2Nvbm5lY3Rpb25Q
cm94eS0+Y29ubmVjdGlvbigpLCBQcm9jZXNzSWRlbnRpdHkgeyBtX2Nvbm5lY3Rpb25Qcm94eS0+
cmVzb3VyY2VPd25lcigpIH0sIHByb3h5LT5zb3VyY2UoKS5jbG9uZSgpLCBtX2Nvbm5lY3Rpb25Q
cm94eS0+cmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAoKSkpOwogfQogCiB2b2lkIFVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHk6OnJlcXVlc3RUb0VuZChSZWFsdGltZU1lZGlhU291cmNlSWRl
bnRpZmllciBzb3VyY2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaAppbmRleCBmYTgyOWM3YzQ5
MDNkNTFiNTdhNzg5NzE3ODQ3M2Y4MGNiZjI4NmRlLi5kMGU0NmJiOWI3NTVlYWU1NTc1Y2U4Yzll
NGJhOWZhZjUxMzUwOTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCkBAIC0yOSw2ICsyOSw3
IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCIKICNpbmNsdWRlICJV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2FwdHVyZURldmlj
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvT3JpZW50YXRpb25Ob3RpZmllci5oPgpAQCAtNjUsNiAr
NjYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRUQ0NJZGVudGl0eSgpIHsg
fQogI2VuZGlmCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSkgeyB9CisgICAgICAgIHZpcnR1YWwgUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXAqIHJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKCkgeyByZXR1
cm4gbnVsbHB0cjsgfQogICAgIH07CiAgICAgZXhwbGljaXQgVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJQcm94eShVbmlxdWVSZWY8Q29ubmVjdGlvblByb3h5PiYmKTsKICAgICB+VXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJQcm94eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMGM2ODE4NWRmOTlhYTc1NzhlNTBiNzIyM2YxMDVkNjk3ZTU3
NzM0NC4uMjI0NGZkN2E4M2Q1ZTUzOTI5MmFlODdlZGY0MzcyOWZlN2Y2NTBjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MDcwLDYg
KzQwNzAsOSBAQAogCQk0MTFBOEREOTIwRERCNjA1MDA2MEQzNEYgLyogV0tNb2NrTWVkaWFEZXZp
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tNb2NrTWVkaWFEZXZpY2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExQThEREEyMEREQjYwNTAwNjBEMzRG
IC8qIFdLTW9ja01lZGlhRGV2aWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdLTW9ja01lZGlhRGV2aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDExQjIyNjIxRTM3MTI0NDAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDTmV0d29yay5oOyBwYXRoID0gTmV0
d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29yay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTFCODlFNDI3QjVENTgyMDBGOUVCRDMgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXBQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTFCODlFNTI3QjVE
NTgzMDBGOUVCRDMgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxMUI4OUU2MjdCNUQ1ODQwMEY5RUJEMyAvKiBSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI4
N0Q0QjIyNUMwNUM0MDA5QTNFMjYgLyogV2ViU29ja2V0VGFza0NvY29hLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViU29ja2V0VGFza0NvY29hLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI4N0Q0QzIyNUMwNUM1MDA5QTNFMjYgLyogV2Vi
U29ja2V0VGFza0NvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNv
Y2tldFRhc2tDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI4N0Q0RDIy
NUMxNjFGMDA5QTNFMjYgLyogV2ViU29ja2V0VGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJTb2NrZXRUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC00MTcxLDcgKzQxNzQsNiBAQAogCQk0MUMzQjg5NDI2NDkzQjdDMDA0RUQ0REUgLyogUmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDNTM3
OEYyMUYxMzYyRDAwOEIxRkFEIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDODU4MTkxRjUxMERFRTAwNjVFMDg1
IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNDFDQjg0MDMyNUNBQkY3QzAwMTBFMkIxIC8qIE1lZGlhUmVjb3JkZXJQ
cml2YXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFSZWNvcmRlclByaXZhdGUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDEyOUQ5MUYzRDEwMTQwMEQxNUU0NyAv
KiBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDYWNoZVN0b3Jh
Z2VQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUQ1QzZEODIzOEVC
MjBEMDBCOUIzQ0IgLyogU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFENUM2RDkyMzhFQjIwRTAwQjlCM0NCIC8q
IFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxMTEsNiArNTExMywxMyBAQAogCQk3QjQ4M0YxRTI1
Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0I1MEU5N0YyNzcxRjZDRTAwM0RBQUM0IC8qIElQQ1Rlc3Rlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJUENUZXN0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QjUwRTk4MDI3NzFGNkNGMDAzREFBQzQgLyogSVBDVGVzdGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IElQQ1Rlc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RB
MDI3QTdEQzFBMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQTEyN0E3REMxQTAwNkM2Rjk3IC8q
IFJlbW90ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBSZW1vdGVWaWRlb0ZyYW1lUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdCNUEzREEyMjdBN0RDMUEwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lUHJv
eHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZVBy
b3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREEzMjdBN0RDNkMwMDZD
NkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQTcyN0E3RENCQzAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEz
REE4MjdBN0RDQkMwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREM1MjdBRTUwMUEw
MDZDNkY5NyAvKiBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIzMTI1Q0M4NTIzMDAzQjI3
OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCNzMxMjMyMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1
ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUNvbm5l
Y3Rpb25Xb3JrUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTEzNiw2
ICs1MTQ1LDcgQEAKIAkJN0JDRjcwQ0UyNjE0OTM1RjAwRTRGQjcwIC8qIFNjb3BlZFdlYkdMUmVu
ZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZWRXZWJHTFJlbmRl
cmluZ1Jlc291cmNlc1JlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JE
REEzM0YyNzU2NTJFQTAwMzg2NTlFIC8qIEF1eGlsaWFyeVByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXV4aWxpYXJ5UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkREQTM0MDI3NTY1MkVBMDAzODY1OUUg
LyogQXV4aWxpYXJ5UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBdXhpbGlhcnlQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0JFMzdGNkYyN0IxNDc1RjAwN0E2Q0QzIC8qIFRocmVhZFNhZmVP
YmplY3RIZWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFNhZmVPYmplY3RIZWFwLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRTcyNjU3MjU3NEY2NzIwMEU4NUQ5OCAvKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY2ODI1NzY4MEVGMDBFODVE
OTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0MwNjVGMjkxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlckRhdGFUeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNjgwMCw2ICs2ODEwLDEwIEBACiAJCQkJQ0Q4MjUyRDEyNUQ0NjRBQjAwODYy
RkQ4IC8qIFJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lci5oICovLAogCQkJCUNEODI1MkQzMjVE
NDY0QkYwMDg2MkZEOCAvKiBSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXIubWVzc2FnZXMuaW4g
Ki8sCiAJCQkJQ0Q4MjUyRDQyNUQ0NjUxMDAwODYyRkQ4IC8qIFJlbW90ZVJlbW90ZUNvbW1hbmRM
aXN0ZW5lcklkZW50aWZpZXIuaCAqLywKKwkJCQk3QjVBM0RBMDI3QTdEQzFBMDA2QzZGOTcgLyog
UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCAqLywKKwkJCQk3QjVBM0RBMzI3QTdEQzZDMDA2
QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcCAqLywKKwkJCQk3QjVBM0RBMjI3QTdE
QzFBMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZVByb3h5LmggKi8sCisJCQkJN0I1QTNEQTEy
N0E3REMxQTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbiAqLywK
IAkJCQkxREQyQTYzQTI1NURFNkQxMDBGRjdCNkYgLyogU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZS5jcHAgKi8sCiAJCQkJMUREMkE2MzkyNTVERTZEMTAwRkY3QjZGIC8qIFNvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGUuaCAqLywKIAkJCQkxREQyQTY2RjI1NjIyRjExMDBGRjdCNkYgLyogU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbiAqLywKQEAgLTY4OTAsNiArNjkwNCw4IEBA
CiAJCQkJMUREMkE2NjYyNTYxRUQwNDAwRkY3QjZGIC8qIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5
Lm1lc3NhZ2VzLmluICovLAogCQkJCTA3RTE5RjA3MjNENERDODgwMDk0RkZCNCAvKiBSZW1vdGVU
ZXh0VHJhY2tQcm94eS5jcHAgKi8sCiAJCQkJMDdFMTlGMDYyM0Q0REM4ODAwOTRGRkI0IC8qIFJl
bW90ZVRleHRUcmFja1Byb3h5LmggKi8sCisJCQkJN0I1QTNEQTgyN0E3RENCQzAwNkM2Rjk3IC8q
IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcCAqLywKKwkJCQk3QjVBM0RBNzI3QTdEQ0JD
MDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCAqLywKIAkJCQkwNzFCQzU4
NDIzQ0MyQzA5MDA2ODBEN0MgLyogUmVtb3RlVmlkZW9UcmFja1Byb3h5LmNwcCAqLywKIAkJCQkw
NzFCQzU4NTIzQ0MyQzA5MDA2ODBEN0MgLyogUmVtb3RlVmlkZW9UcmFja1Byb3h5LmggKi8sCiAJ
CQkJMDdFMTlGMDUyM0Q0REM4ODAwOTRGRkI0IC8qIFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25m
aWd1cmF0aW9uLmggKi8sCkBAIC03MjY3LDYgKzcyODMsNyBAQAogCQkJCTFBRENCODY4MTg5ODMx
QjMwMDIyRUU1QSAvKiBOYXZpZ2F0aW9uQWN0aW9uRGF0YS5jcHAgKi8sCiAJCQkJMUFEQ0I4Njkx
ODk4MzFCMzAwMjJFRTVBIC8qIE5hdmlnYXRpb25BY3Rpb25EYXRhLmggKi8sCiAJCQkJNUNENzQ4
QjUyM0M4RUIxOTAwOTJBOUI1IC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmggKi8s
CisJCQkJN0I1QTNEQzUyN0FFNTAxQTAwNkM2Rjk3IC8qIE9iamVjdElkZW50aWZpZXJSZWZlcmVu
Y2VUcmFja2VyLmggKi8sCiAJCQkJN0FGQkQzNkUyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3Rl
bmN5VXRpbHMuY3BwICovLAogCQkJCTdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0
ZW5jeVV0aWxzLmggKi8sCiAJCQkJQkNDNDNBQjgxMjdCOTVEQzAwMzE3RjE2IC8qIFBsYXRmb3Jt
UG9wdXBNZW51RGF0YS5jcHAgKi8sCkBAIC03MzA3LDYgKzczMjQsNyBAQAogCQkJCTgzRjk2NDRD
MUZBMEY3NjMwMEM0Nzc1MCAvKiBTaGFyZWRTdHJpbmdIYXNoVGFibGVSZWFkT25seS5oICovLAog
CQkJCTFBNUU0REEzMTJEM0JEM0QwMDk5QTJCQiAvKiBUZXh0Q2hlY2tlclN0YXRlLmggKi8sCiAJ
CQkJRjRBN0NFODQyNjY3RUI0RTAwMjI4Njg1IC8qIFRleHRSZWNvZ25pdGlvblVwZGF0ZVJlc3Vs
dC5oICovLAorCQkJCTdCRTM3RjZGMjdCMTQ3NUYwMDdBNkNEMyAvKiBUaHJlYWRTYWZlT2JqZWN0
SGVhcC5oICovLAogCQkJCTJGRDQzQjkyMUZBMDA2QTMwMDgzRjUxQyAvKiBUb3VjaEJhck1lbnVE
YXRhLmNwcCAqLywKIAkJCQkyRkQ0M0I5MTFGQTAwNkExMDA4M0Y1MUMgLyogVG91Y2hCYXJNZW51
RGF0YS5oICovLAogCQkJCTJGODA5REQ1MUZCRDFCQzkwMDVGRTYzQSAvKiBUb3VjaEJhck1lbnVJ
dGVtRGF0YS5jcHAgKi8sCkBAIC05MjY0LDkgKzkyODIsMTEgQEAKIAkJCQk0MTc2RTg5NzIzQzM2
MUJEMDAzRTgzRkUgLyogTWVkaWFSZWNvcmRlcklkZW50aWZpZXIuaCAqLywKIAkJCQk0MTc2RTg5
NDIzQzM0RTI2MDAzRTgzRkUgLyogTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwICovLAogCQkJCTQx
NzZFODk1MjNDMzRFMjcwMDNFODNGRSAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZS5oICovLAotCQkJ
CTQxQ0I4NDAzMjVDQUJGN0MwMDEwRTJCMSAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZS5tbSAqLywK
IAkJCQk0MTc2RTg5MzIzQzM0RDZGMDAzRTgzRkUgLyogTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNw
cCAqLywKIAkJCQk0MTc2RTg5MjIzQzM0RDZFMDAzRTgzRkUgLyogTWVkaWFSZWNvcmRlclByb3Zp
ZGVyLmggKi8sCisJCQkJNDExQjg5RTYyN0I1RDU4NDAwRjlFQkQzIC8qIFJlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwUHJveHkuY3BwICovLAorCQkJCTQxMUI4OUU1MjdCNUQ1ODMwMEY5RUJEMyAv
KiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5LmggKi8sCisJCQkJNDExQjg5RTQyN0I1
RDU4MjAwRjlFQkQzIC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkubWVzc2FnZXMu
aW4gKi8sCiAJCQkJNDE3MjE5OEMyM0I2MTJFODAwQUU1Njg2IC8qIFJUQ0RlY29kZXJJZGVudGlm
aWVyLmggKi8sCiAJCQkJNDE1ODY0OUEyM0JFMDkyNDAwQTBBNjFFIC8qIFJUQ0VuY29kZXJJZGVu
dGlmaWVyLmggKi8sCiAJCQkJNDFGQ0Q2QjcyM0NERTUzRDAwQzYyNTY3IC8qIFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5jcHAgKi8sCkBAIC0xMzQyOCw3ICsxMzQ0OCw2IEBACiAJCQkJRTE4RTY5
MTgxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTcwQUI4RjMyMEFFM0JENzAwQjhCRTg3IC8qIFNlY0tleVByb3h5U3RvcmUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEQ5RjU3MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNl
c0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxNjQ2NTgwMjdBOUM3NzQwMEUxRjJC
QSAvKiBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFGREU2NUExOTU0QTQyQjAwQzQ4RkZBIC8qIFNlc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUEwMDJENDkxOTZCMzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTNFNzk5Q0UyNzYwNDk3QjAwNzQwMDhBIC8qIFNlc3Npb25T
dG9yYWdlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IGUyOWY0YmQ1NjEz
MmVjZDY3MTcxYmMzN2NiMmNjNTYxYmUxMjkzNTkuLjI4ZjM3ODc2MzkzYmMzYWM1N2U0NGZkNzNl
YTEyNDc3ZDI0OTJkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAi
UmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oIgogI2luY2x1ZGUgIlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0
ZW5lck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94
eS5oIgogI2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaCIKICNpbmNs
dWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIgpAQCAtNzYsNiArNzcsMTEgQEAKICNpbmNs
dWRlICJVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VzLmgiCiAjZW5kaWYKIAorI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCisj
aW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5TWVzc2FnZXMuaCIKKyNlbmRpZgorCiAjaWYg
RU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIK
ICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaCIKQEAgLTE1
OSw2ICsxNjUsMTMgQEAgdm9pZCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6cmVzZXRBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdChBdWRpb00KIHsKICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5hdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1h
bmFnZXIoKS5yZXNldChpZGVudGlmaWVyKTsKIH0KKworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXBQcm94eSYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OnJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
UHJveHkoKQoreworICAgIGlmICghbV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5KQor
ICAgICAgICBtX3JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkgPSBSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcFByb3h5OjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiAqbV9yZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5OworfQogI2VuZGlmCiAKIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlciYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246Om1lZGlhUGxheWVyTWFuYWdlcigpCkBAIC0y
MDgsNiArMjIxLDEwIEBAIGJvb2wgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjCiAgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpCiAgICAgICAgIHJldHVybiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpoYW5kbGVNZXNzYWdlVG9SZW1vdmVkRGVzdGluYXRpb24oY29u
bmVjdGlvbiwgZGVjb2Rlcik7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNUykKKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKQorICAgICAgICByZXR1cm4gUmVt
b3RlVmlkZW9GcmFtZVByb3h5OjpoYW5kbGVNZXNzYWdlVG9SZW1vdmVkRGVzdGluYXRpb24oY29u
bmVjdGlvbiwgZGVjb2Rlcik7CisjZW5kaWYKIAogI2lmIFVTRShBVURJT19TRVNTSU9OKQogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQXVk
aW9TZXNzaW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAzZjk4Y2IxMDk3
NzYzNDY2YWIyMDVkYWEwMGVhNmM1MTZmOTEyM2Y1Li44MTNhMDU0Njk3MmNjMzJhZDYyYWM5ZmEy
OGQxMWU1NGNhNWZlZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC01MSw2ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlcjsKIGNsYXNzIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlcjsKK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
UHJveHk7CiBjbGFzcyBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOwogY2xhc3MgV2Vi
UGFnZTsKIHN0cnVjdCBHUFVQcm9jZXNzQ29ubmVjdGlvbkluaXRpYWxpemF0aW9uUGFyYW1ldGVy
czsKQEAgLTc3LDYgKzc4LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogICAgIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXImIHNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIoKTsKICAgICB2b2lkIHJlc2V0QXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQoQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcFByb3h5JiByZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5KCk7CiAjZW5kaWYKIAog
ICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYgbWVkaWFQbGF5ZXJNYW5hZ2VyKCk7CkBAIC0x
NDAsNiArMTQyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNYW5hZ2VyPiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CisgICAg
UmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk+IG1fcmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXBQcm94eTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
V0VCX0FVRElPKQogICAgIFJlZlB0cjxSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlcj4g
bV9hdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuY3BwCmluZGV4IDdhZTFlZTc2ZGM0YjA3YzQwM2Y2MGI4YWQxM2RhZDliODdi
ZGVkMGEuLjAwZDRhOGJkZGM1YzA0MWZmYjAzOTQ5MDJlOTc5OTcxNTE1YzM0YmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtMzUsNiArMzUsMTAgQEAK
ICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5o
PgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1l
UHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CkBAIC0xMTgsNiArMTIyLDIxIEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJiBiCiAg
ICAgfQogfQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK1JlZlB0cjxXZWJDb3JlOjpNZWRp
YVNhbXBsZT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRDb21wb3NpdGVkUmVz
dWx0c1RvTWVkaWFTYW1wbGUoKQoreworICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIGF1dG8gbWVkaWFTYW1wbGUgPSBSZW1vdGVWaWRlb0ZyYW1l
UHJveHk6OmNyZWF0ZSgqbV9ncHVQcm9jZXNzQ29ubmVjdGlvbik7CisgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBhaW50Q29tcG9z
aXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKG1lZGlhU2FtcGxlLT53cml0ZSgpKSk7CisgICAgaWYg
KCFzZW5kUmVzdWx0KSB7CisgICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIG1lZGlhU2FtcGxlOworfQorI2VuZGlmCisK
IGJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleHR1cmVGcm9tTWVkaWEo
TWVkaWFQbGF5ZXImIG1lZGlhUGxheWVyLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZs
aXBZKQogewogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5oCmluZGV4IDI5ZjAxOTg3MTk1NTk5ODc5MmVlNzc5NWQ5YWE2MGMyZjM5
NzM5NzEuLjVkMWNhYjIxOGY3ODVjYmExMTQ2YTg5MTIyYjMwZDEwY2M2ODMwN2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC02NSw2ICs2NSw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOwogICAgIHZvaWQg
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSBmaW5h
bDsKICAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciYpIGZpbmFsOworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgUmVmUHRyPFdl
YkNvcmU6Ok1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgp
IGZpbmFsOworI2VuZGlmCiAgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJv
cikgZmluYWw7CiAgICAgR0NHTGVudW0gZ2V0RXJyb3IoKSBmaW5hbDsKICAgICBib29sIGNvcHlU
ZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVyJiwgUGxhdGZvcm1HTE9iamVjdCB0
ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Rm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbCBmbGlwWSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCmluZGV4IGZmN2UxNDhkNmI1ZWViYTAyNGE5
M2UzZWIyMTI2MmJhYjcyMjgwOGMuLjBiOGJiYTE2Y2ZlYzE2YjJiYTE4NzE3MWFmZDliM2IzMTMx
ZDY3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
Y29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUNvY29hLm1tCkBAIC0zNCw3ICszNCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NWVXRp
bGl0aWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvTWVkaWFTYW1wbGVBVkZPYmpDLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXll
ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTk5LDkgKzk4LDYgQEAgcHVibGljOgogI2lm
IEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKICAgICBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTENWKiBhc0NWKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCi0j
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+
IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgZmluYWw7Ci0jZW5kaWYKIHBy
aXZhdGU6CiAgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3ND
b25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
ciByZW5kZXJpbmdCYWNrZW5kKQogICAgICAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpCkBA
IC0xMTQsMjAgKzExMCw2IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk7CiB9OwogCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLVJlZlB0
cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29h
OjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpCi17Ci0gICAgaWYgKCFtX2Rp
c3BsYXlCdWZmZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgcmVtb3RlIE1lZGlhU2FtcGxlLgotICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklP
U3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChtX2Rpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdo
dCgpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci0gICAgYXV0byBw
aXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUNWUGl4ZWxCdWZmZXIoc3VyZmFjZS0+c3VyZmFj
ZSgpKTsKLSAgICBpZiAoIXBpeGVsQnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShX
VEZNb3ZlKCpwaXhlbEJ1ZmZlciksIFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6VmlkZW9S
b3RhdGlvbjo6VXBzaWRlRG93biwgdHJ1ZSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Q29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBpZiAo
aXNDb250ZXh0TG9zdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmZiMDAxZGE3NDgyMzlmMzhkZDllZDAzMjVjNTliN2I4M2M5MjU4NzMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJ
ZGVudGlmaWVyLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5j
bHVkZSAiT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL1Byb2Nlc3NRdWFsaWZpZWQuaD4KKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmll
clR5cGUgeyB9OwordXNpbmcgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgPSBXZWJDb3JlOjpQ
cm9jZXNzUXVhbGlmaWVkPE9iamVjdElkZW50aWZpZXI8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZp
ZXJUeXBlPj47Cit1c2luZyBSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSA9IE9iamVjdElk
ZW50aWZpZXJSZWFkUmVmZXJlbmNlPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPjsKK3VzaW5n
IFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJXcml0ZVJl
ZmVyZW5jZTxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj47Cit1c2luZyBSZW1vdGVWaWRlb0Zy
YW1lUmVmZXJlbmNlID0gT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxSZW1vdGVWaWRlb0ZyYW1l
SWRlbnRpZmllcj47Cit1c2luZyBSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlVHJhY2tlciA9IE9i
amVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVy
PjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHku
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJkZTY5YzM3NDhhOGI1MTI5NDA3NTA4MDUxZDg1NjQ1NmQ4NjI1NDkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKQEAgLTAsMCArMSwyMTggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCisK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVk
ZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHlN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNl
Q29jb2EuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JlZjxSZW1vdGVWaWRlb0ZyYW1lUHJv
eHk+IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6Y3JlYXRlKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBn
cHVQcm9jZXNzQ29ubmVjdGlvbiwgUGl4ZWxCdWZmZXJDYWxsYmFjayYmIGNhbGxiYWNrKQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVZpZGVvRnJhbWVQcm94eShncHVQcm9jZXNz
Q29ubmVjdGlvbiwgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI6OmdlbmVyYXRlKCksIFdURk1v
dmUoY2FsbGJhY2spKSk7Cit9CisKK1JlZjxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+IFJlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6Y3JlYXRlQWxyZWFkeUluaXRpYWxpemVkKElQQzo6Q29ubmVjdGlvbjo6
VW5pcXVlSUQgY29ubmVjdGlvbklELCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBpZGVudGlm
aWVyLCBQcm9wZXJ0aWVzIHByb3BlcnRpZXMsIFBpeGVsQnVmZmVyQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3sKKyAgICBhdXRvIGZyYW1lID0gYWRvcHRSZWYoKm5ldyBSZW1vdGVWaWRlb0ZyYW1lUHJv
eHkoY29ubmVjdGlvbklELCBpZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSkpOworICAgIGZy
YW1lLT53YXNJbml0aWFsaXplZChwcm9wZXJ0aWVzKTsKKyAgICByZXR1cm4gZnJhbWU7Cit9CisK
K1JlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6
OnByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKQorewor
ICAgIHJldHVybiB7CisgICAgICAgIG1lZGlhU2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSwKKyAg
ICAgICAgbWVkaWFTYW1wbGUudmlkZW9NaXJyb3JlZCgpLAorICAgICAgICBtZWRpYVNhbXBsZS52
aWRlb1JvdGF0aW9uKCksCisgICAgICAgIG1lZGlhU2FtcGxlLnByZXNlbnRhdGlvblNpemUoKSwK
KyAgICAgICAgbWVkaWFTYW1wbGUudmlkZW9QaXhlbEZvcm1hdCgpCisgICAgfTsKK30KKworUmVt
b3RlVmlkZW9GcmFtZVByb3h5OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHkoR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBQaXhlbEJ1ZmZlckNhbGxiYWNrJiYgY2FsbGJhY2spCisgICAgOiBtX2dwdVBy
b2Nlc3NDb25uZWN0aW9uKCZncHVQcm9jZXNzQ29ubmVjdGlvbikKKyAgICAsIG1fY29ubmVjdGlv
bklEKGdwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS51bmlxdWVJRCgpKQorICAgICwg
bV9yZWZlcmVuY2VUcmFja2VyKGlkZW50aWZpZXIpCisgICAgLCBtX3BpeGVsQnVmZmVyQ2FsbGJh
Y2soV1RGTW92ZShjYWxsYmFjaykpCit7CisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+YWRk
Q2xpZW50KCp0aGlzKTsKKyAgICBpZiAoaWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09
IFByb2Nlc3M6OmlkZW50aWZpZXIoKSkKKyAgICAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+
bWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVW
aWRlb0ZyYW1lUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllci5vYmplY3Qo
KS50b1VJbnQ2NCgpLCAqdGhpcyk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVQcm94eTo6UmVtb3Rl
VmlkZW9GcmFtZVByb3h5KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklELCBS
ZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyLCBQaXhlbEJ1ZmZlckNhbGxiYWNr
JiYgY2FsbGJhY2spCisgICAgOiBtX2Nvbm5lY3Rpb25JRChjb25uZWN0aW9uSUQpCisgICAgLCBt
X3JlZmVyZW5jZVRyYWNrZXIoaWRlbnRpZmllcikKKyAgICAsIG1fcGl4ZWxCdWZmZXJDYWxsYmFj
ayhXVEZNb3ZlKGNhbGxiYWNrKSkKK3sKK30KKworUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpSZW1v
dGVWaWRlb0ZyYW1lUHJveHkoKQorICAgIDogbV9ncHVQcm9jZXNzQ29ubmVjdGlvbihudWxscHRy
KQorICAgICwgbV9yZWZlcmVuY2VUcmFja2VyKFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyOjpn
ZW5lcmF0ZSgpKQoreworfQorCitSZW1vdGVWaWRlb0ZyYW1lUHJveHk6On5SZW1vdGVWaWRlb0Zy
YW1lUHJveHkoKQoreworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbWFrZSBzdXJlIHRvIGNsb3Nl
IGluIHdoYXRldmVyIHRocmVhZCBidXQgZGlzY29ubmVjdCBpbiBtYWluIHRocmVhZC4KKyAgICBk
aXNjb25uZWN0R1BVUHJvY2Vzc0lmTmVlZGVkKCk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVJZGVu
dGlmaWVyIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6aWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcmVmZXJlbmNlVHJhY2tlci5pZGVudGlmaWVyKCk7Cit9CisKK1JlbW90ZVZpZGVv
RnJhbWVXcml0ZVJlZmVyZW5jZSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OndyaXRlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9yZWZlcmVuY2VUcmFja2VyLndyaXRlKCk7Cit9CisKK1JlbW90ZVZp
ZGVvRnJhbWVSZWFkUmVmZXJlbmNlIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cmVhZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcmVmZXJlbmNlVHJhY2tlci5yZWFkKCk7Cit9CisKK3ZvaWQgUmVt
b3RlVmlkZW9GcmFtZVByb3h5OjpnZXRQaXhlbEJ1ZmZlcigpCit7CisgICAgQVNTRVJUKG1fcGl4
ZWxCdWZmZXJMb2NrLmlzSGVsZCgpKTsKKyAgICBzdGQ6OmV4Y2hhbmdlKG1fcGl4ZWxCdWZmZXJD
YWxsYmFjaywgeyB9KSgqdGhpcywgW3RoaXNdKGF1dG8gcGl4ZWxCdWZmZXIpIHsKKyAgICAgICAg
bV9waXhlbEJ1ZmZlciA9IFdURk1vdmUocGl4ZWxCdWZmZXIpOworICAgICAgICBpZiAoIW1fcGl4
ZWxCdWZmZXIpIHsKKyAgICAgICAgICAgIC8vIHNvbWUgY29kZSBwYXRocyBkbyBub3QgbGlrZSBl
bXB0eSBwaXhlbCBidWZmZXJzLgorICAgICAgICAgICAgbV9waXhlbEJ1ZmZlciA9IFdlYkNvcmU6
OmNyZWF0ZUJsYWNrUGl4ZWxCdWZmZXIoc3RhdGljX2Nhc3Q8c2l6ZV90PihtX3NpemUud2lkdGgo
KSksIHN0YXRpY19jYXN0PHNpemVfdD4obV9zaXplLmhlaWdodCgpKSk7CisgICAgICAgIH0KKyAg
ICAgICAgbV9zZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgfSk7CisgICAgbV9zZW1hcGhvcmUud2Fp
dCgpOworfQorCitDVlBpeGVsQnVmZmVyUmVmIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cGl4ZWxC
dWZmZXIoKSBjb25zdAoreworICAgIExvY2tlciBsb2NrKG1fcGl4ZWxCdWZmZXJMb2NrKTsKKyAg
ICBpZiAoIW1fcGl4ZWxCdWZmZXIgJiYgbV9waXhlbEJ1ZmZlckNhbGxiYWNrKQorICAgICAgICBj
b25zdF9jYXN0PFJlbW90ZVZpZGVvRnJhbWVQcm94eSo+KHRoaXMpLT5nZXRQaXhlbEJ1ZmZlcigp
OworICAgIHJldHVybiBtX3BpeGVsQnVmZmVyLmdldCgpOworfQorCitNZWRpYVRpbWUgUmVtb3Rl
VmlkZW9GcmFtZVByb3h5OjpwcmVzZW50YXRpb25UaW1lKCkgY29uc3QKK3sKKyAgICAodm9pZCkg
d2FpdEZvcldhc0luaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fcHJlc2VudGF0aW9uVGltZTsK
K30KKworV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGUgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpwbGF0
Zm9ybVNhbXBsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgV2ViQ29yZTo6UGxhdGZvcm1TYW1w
bGU6OlJlbW90ZVZpZGVvRnJhbWVQcm94eVR5cGUsIHsgfSB9OworfQorCitNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbiBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnZpZGVvUm90YXRpb24oKSBjb25z
dAoreworICAgICh2b2lkKSB3YWl0Rm9yV2FzSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbV92
aWRlb1JvdGF0aW9uOworfQorCitib29sIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9NaXJy
b3JlZCgpIGNvbnN0Cit7CisgICAgKHZvaWQpIHdhaXRGb3JXYXNJbml0aWFsaXplZCgpOworICAg
IHJldHVybiBtX3ZpZGVvSXNNaXJyb3JlZDsKK30KKwordWludDMyX3QgUmVtb3RlVmlkZW9GcmFt
ZVByb3h5Ojp2aWRlb1BpeGVsRm9ybWF0KCkgY29uc3QKK3sKKyAgICAodm9pZCkgd2FpdEZvcldh
c0luaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fcGl4ZWxGb3JtYXQ7Cit9CisKK2Jvb2wgUmVt
b3RlVmlkZW9GcmFtZVByb3h5OjpoYW5kbGVNZXNzYWdlVG9SZW1vdmVkRGVzdGluYXRpb24oSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIC8vIFNraXAgbWVz
c2FnZXMgaW50ZW5kZWQgZm9yIGFscmVhZHkgcmVtb3ZlZCBtZXNzYWdlUmVjZWl2ZXJNYXAoKSBk
ZXN0aW5hdGlvbnMuCisgICAgLy8gVGhlc2UgYXJlIGJ1c2luZXNzIGFzIHVzdWFsLiBUaGVzZSBj
YW4gaGFwcGVuIGZvciBleGFtcGxlIGJ5OgorICAgIC8vICAtIFRoZSBvYmplY3QgaXMgY3JlYXRl
ZCBhbmQgaW1tZWRpYXRlbHkgZGVzdHJveWVkLCBiZWZvcmUgV2FzSW5pdGlhbGl6ZWQgd2FzIGhh
bmRsZWQuCisgICAgQVNTRVJUKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6UmVt
b3RlVmlkZW9GcmFtZVByb3h5OjpXYXNJbml0aWFsaXplZDo6bmFtZSgpKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYVNhbXBsZVZpZGVvRnJhbWU+
IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9GcmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKK30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmRpc2Nvbm5l
Y3RHUFVQcm9jZXNzSWZOZWVkZWQoKSBjb25zdAoreworICAgIGlmIChhdXRvIGdwdVByb2Nlc3ND
b25uZWN0aW9uID0gc3RkOjpleGNoYW5nZShtX2dwdVByb2Nlc3NDb25uZWN0aW9uLCBudWxscHRy
KSkgeworICAgICAgICBBU1NFUlQoaWRlbnRpZmllcigpLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0g
UHJvY2Vzczo6aWRlbnRpZmllcigpKTsKKyAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPnJl
bW92ZUNsaWVudCgqdGhpcyk7CisgICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5tZXNzYWdl
UmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVZpZGVv
RnJhbWVQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkub2JqZWN0KCku
dG9VSW50NjQoKSk7CisgICAgfQorICAgIGlmIChtX2Nvbm5lY3Rpb25JRCkKKyAgICAgICAgSVBD
OjpDb25uZWN0aW9uOjpzZW5kKCptX2Nvbm5lY3Rpb25JRCwgTWVzc2FnZXM6OlJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwOjpSZWxlYXNlVmlkZW9GcmFtZSh3cml0ZSgpKSwgMCwgSVBDOjpTZW5k
T3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworfQor
Citib29sIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6d2FpdEZvcldhc0luaXRpYWxpemVkKCkgY29u
c3QKK3sKKyAgICBpZiAobV93YXNJbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICBBU1NFUlQoaWRlbnRpZmllcigpLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gUHJvY2Vzczo6
aWRlbnRpZmllcigpKTsKKyAgICBpZiAobV9ncHVQcm9jZXNzQ29ubmVjdGlvbikgeworICAgICAg
ICBpZiAobV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLndhaXRGb3JBbmREaXNw
YXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Oldhc0luaXRp
YWxpemVkPihpZGVudGlmaWVyKCkub2JqZWN0KCkudG9VSW50NjQoKSwgZGVmYXVsdFNlbmRUaW1l
b3V0KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkaXNjb25uZWN0R1BVUHJv
Y2Vzc0lmTmVlZGVkKCk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24mKQoreworICAgIGF1dG8gZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPSBzdGQ6OmV4
Y2hhbmdlKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIG51bGxwdHIpOworICAgIGdwdVByb2Nlc3ND
b25uZWN0aW9uLT5yZW1vdmVDbGllbnQoKnRoaXMpOworICAgIEFTU0VSVChpZGVudGlmaWVyKCku
cHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBQcm9jZXNzOjppZGVudGlmaWVyKCkpOworICAgIGdwdVBy
b2Nlc3NDb25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBpZGVudGlmaWVyKCkub2JqZWN0KCkudG9VSW50NjQoKSk7Cit9CisKK3ZvaWQgUmVtb3RlVmlk
ZW9GcmFtZVByb3h5Ojp3YXNJbml0aWFsaXplZChzdGQ6Om9wdGlvbmFsPFByb3BlcnRpZXM+JiYg
cHJvcGVydGllcykKK3sKKyAgICBtX3dhc0luaXRpYWxpemVkID0gdHJ1ZTsKKyAgICBpZiAoIXBy
b3BlcnRpZXMpCisgICAgICAgIHJldHVybjsKKyAgICAvLyBGSVhNRTogV2hlbiBzb3VyY2UgZmFp
bHMgdG8gcHJvZHVjZSBhIHNhbXBsZSBkdWUgdG8gc29tZSBlcnJvciwgdGhlIHByb3BlcnRpZXMg
YXJlIGRpc2VuZ2FnZWQuCisgICAgLy8gV2Ugc2hvdWxkIHBlcmhhcHMgY2hlY2sgdGhpcyBhdCB0
aGUgc3VibWl0IHRpbWUuCisgICAgbV9wcmVzZW50YXRpb25UaW1lID0gcHJvcGVydGllcy0+cHJl
c2VudGF0aW9uVGltZTsKKyAgICBtX3ZpZGVvSXNNaXJyb3JlZCA9IHByb3BlcnRpZXMtPnZpZGVv
SXNNaXJyb3JlZDsKKyAgICBtX3ZpZGVvUm90YXRpb24gPSBwcm9wZXJ0aWVzLT52aWRlb1JvdGF0
aW9uOworICAgIG1fc2l6ZSA9IHByb3BlcnRpZXMtPnNpemU7CisgICAgbV9waXhlbEZvcm1hdCA9
IHByb3BlcnRpZXMtPnBpeGVsRm9ybWF0OworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94
eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjk3NmNjNmNlNTJhYmM5MTM0MDU1MDcwZGU0YmRhODdhNDMxYmZhN2IK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZVZpZGVvRnJhbWVQcm94eS5oCkBAIC0wLDAgKzEsMTU4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9WaWRlb0ZyYW1lLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+
CisjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CisKK25hbWVzcGFjZSBJ
UEMgeworY2xhc3MgQ29ubmVjdGlvbjsKK2NsYXNzIERlY29kZXI7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKKworY2xhc3MgUmVtb3RlVmlk
ZW9GcmFtZVByb3h5IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlZpZGVvRnJhbWUsIHByaXZhdGUg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoUmVtb3RlVmlkZW9GcmFtZVByb3h5KTsKK3B1YmxpYzoKKyAgICB1c2luZyBQaXhlbEJ1ZmZl
clJlc3VsdENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJl
Zj4mJik+OworICAgIC8vIENvbXBsZXRpb25IYW5kbGVyIGJ1dCBpdCBtaWdodCBub3QgYmUgY2Fs
bGVkIG9uIHRoZSBzYW1lIHRocmVhZC4KKyAgICB1c2luZyBQaXhlbEJ1ZmZlckNhbGxiYWNrID0g
RnVuY3Rpb248dm9pZChjb25zdCBSZW1vdGVWaWRlb0ZyYW1lUHJveHkmLCBQaXhlbEJ1ZmZlclJl
c3VsdENhbGxiYWNrJiYpPjsKKworICAgIC8vIENyZWF0ZXMgYSBwcm9taXNlIG9mIGEgTWVkaWFT
YW1wbGUgdGhhdCBleGlzdHMgaW4gR1BVIHByb2Nlc3MuIFRoZSBvYmplY3QgY2FuIGJlIHVzZWQg
YXMgb3V0IHBhcmFtZXRlciBvZiB0aGUgY3JlYXRpb24gbWVzc2FnZS4KKyAgICBzdGF0aWMgUmVm
PFJlbW90ZVZpZGVvRnJhbWVQcm94eT4gY3JlYXRlKEdQVVByb2Nlc3NDb25uZWN0aW9uJiwgUGl4
ZWxCdWZmZXJDYWxsYmFjayYmID0geyB9KTsKKworICAgIHN0cnVjdCBQcm9wZXJ0aWVzIHsKKyAg
ICAgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWU7CisgICAgICAgIGJvb2wgdmlkZW9Jc01p
cnJvcmVkIHsgZmFsc2UgfTsKKyAgICAgICAgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uIHsg
VmlkZW9Sb3RhdGlvbjo6Tm9uZSB9OworICAgICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZTsK
KyAgICAgICAgdWludDMyX3QgcGl4ZWxGb3JtYXQ7CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm9wZXJ0aWVzPiBkZWNv
ZGUoRGVjb2RlciYpOworICAgIH07CisKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVZpZGVvRnJhbWVQ
cm94eT4gY3JlYXRlQWxyZWFkeUluaXRpYWxpemVkKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQs
IFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLCBQcm9wZXJ0aWVzLCBQaXhlbEJ1ZmZlckNhbGxi
YWNrJiYpOworCisgICAgc3RhdGljIFByb3BlcnRpZXMgcHJvcGVydGllcyhjb25zdCBXZWJDb3Jl
OjpNZWRpYVNhbXBsZSYpOworCisgICAgflJlbW90ZVZpZGVvRnJhbWVQcm94eSgpIGZpbmFsOwor
CisgICAgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0OworICAg
IFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSB3cml0ZSgpIGNvbnN0OworICAgIFJlbW90
ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlIHJlYWQoKSBjb25zdDsKKworICAgIENWUGl4ZWxCdWZm
ZXJSZWYgcGl4ZWxCdWZmZXIoKSBjb25zdCBmaW5hbDsKKworICAgIHN0YXRpYyBib29sIGhhbmRs
ZU1lc3NhZ2VUb1JlbW92ZWREZXN0aW5hdGlvbihJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKTsKK3ByaXZhdGU6CisgICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5KEdQVVByb2Nlc3NDb25u
ZWN0aW9uJiwgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIsIFBpeGVsQnVmZmVyQ2FsbGJhY2sm
Jik7CisgICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQs
IFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLCBQaXhlbEJ1ZmZlckNhbGxiYWNrJiYpOworICAg
IFJlbW90ZVZpZGVvRnJhbWVQcm94eSgpOworICAgIHZvaWQgZGlzY29ubmVjdEdQVVByb2Nlc3NJ
Zk5lZWRlZCgpIGNvbnN0OworICAgIGJvb2wgd2FpdEZvcldhc0luaXRpYWxpemVkKCkgY29uc3Qg
V0FSTl9VTlVTRURfUkVUVVJOOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJp
ZGVzLgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50IG92
ZXJyaWRlcy4KKyAgICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24mKSBmaW5hbDsKKworICAgIC8vIFdlYkNvcmU6OlZpZGVvRnJhbWUgb3ZlcnJp
ZGVzLgorICAgIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3QgZmluYWw7CisgICAg
VmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCB2aWRl
b01pcnJvcmVkKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRp
YVNhbXBsZVZpZGVvRnJhbWU+IHZpZGVvRnJhbWUoKSBjb25zdCBmaW5hbDsKKyAgICAvLyBGSVhN
RTogV2hlbiBWaWRlb0ZyYW1lIGlzIG5vdCBNZWRpYVNhbXBsZSwgdGhlc2Ugd2lsbCBub3QgYmUg
bmVlZGVkLgorICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29u
c3QgZmluYWw7CisgICAgdWludDMyX3QgdmlkZW9QaXhlbEZvcm1hdCgpIGNvbnN0IGZpbmFsOwor
ICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9zaXplOyB9CisKKyAgICAvLyBNZXNzYWdlcy4KKyAgICB2b2lkIHdhc0luaXRpYWxp
emVkKHN0ZDo6b3B0aW9uYWw8UHJvcGVydGllcz4mJik7CisgICAgc3RhdGljIGlubGluZSBTZWNv
bmRzIGRlZmF1bHRTZW5kVGltZW91dCA9IDMwX3M7CisKKyAgICB2b2lkIGdldFBpeGVsQnVmZmVy
KCk7CisKKyAgICBtdXRhYmxlIEdQVVByb2Nlc3NDb25uZWN0aW9uKiBtX2dwdVByb2Nlc3NDb25u
ZWN0aW9uIHsgbnVsbHB0ciB9OworICAgIHN0ZDo6b3B0aW9uYWw8SVBDOjpDb25uZWN0aW9uOjpV
bmlxdWVJRD4gbV9jb25uZWN0aW9uSUQ7CisgICAgUmVtb3RlVmlkZW9GcmFtZVJlZmVyZW5jZVRy
YWNrZXIgbV9yZWZlcmVuY2VUcmFja2VyOworICAgIG11dGFibGUgYm9vbCBtX3dhc0luaXRpYWxp
emVkIHsgZmFsc2UgfTsKKyAgICBNZWRpYVRpbWUgbV9wcmVzZW50YXRpb25UaW1lOworICAgIGJv
b2wgbV92aWRlb0lzTWlycm9yZWQgeyBmYWxzZSB9OworICAgIFZpZGVvUm90YXRpb24gbV92aWRl
b1JvdGF0aW9uIHsgVmlkZW9Sb3RhdGlvbjo6Tm9uZSB9OworICAgIFdlYkNvcmU6OkZsb2F0U2l6
ZSBtX3NpemU7CisgICAgdWludDMyX3QgbV9waXhlbEZvcm1hdCB7IDAgfTsKKyAgICBtdXRhYmxl
IExvY2sgbV9waXhlbEJ1ZmZlckxvY2s7CisgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+
IG1fcGl4ZWxCdWZmZXI7CisgICAgQmluYXJ5U2VtYXBob3JlIG1fc2VtYXBob3JlOworICAgIFBp
eGVsQnVmZmVyQ2FsbGJhY2sgbV9waXhlbEJ1ZmZlckNhbGxiYWNrOworfTsKKwordGVtcGxhdGU8
dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgcHJlc2Vu
dGF0aW9uVGltZQorICAgICAgICA8PCB2aWRlb0lzTWlycm9yZWQKKyAgICAgICAgPDwgdmlkZW9S
b3RhdGlvbgorICAgICAgICA8PCBzaXplCisgICAgICAgIDw8IHBpeGVsRm9ybWF0OworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6UHJvcGVydGllcz4gUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhVGltZT4gcHJl
c2VudGF0aW9uVGltZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHZpZGVvSXNNaXJyb3JlZDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFZpZGVvUm90YXRpb24+IHZpZGVvUm90YXRpb247CisgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+IHNpemU7CisgICAgc3RkOjpvcHRpb25hbDx1
aW50MzJfdD4gcGl4ZWxGb3JtYXQ7CisgICAgZGVjb2RlciA+PiBwcmVzZW50YXRpb25UaW1lCisg
ICAgICAgID4+IHZpZGVvSXNNaXJyb3JlZAorICAgICAgICA+PiB2aWRlb1JvdGF0aW9uCisgICAg
ICAgID4+IHNpemUKKyAgICAgICAgPj4gcGl4ZWxGb3JtYXQ7CisgICAgaWYgKCFkZWNvZGVyLmlz
VmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gUHJvcGVy
dGllcyB7IFdURk1vdmUoKnByZXNlbnRhdGlvblRpbWUpLCAqdmlkZW9Jc01pcnJvcmVkLCAqdmlk
ZW9Sb3RhdGlvbiwgKnNpemUsICpwaXhlbEZvcm1hdCB9OworfQorCit9CitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0JFR0lOKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5KQorICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsg
cmV0dXJuIG1lZGlhU2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBXZWJDb3JlOjpQbGF0
Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZTsgfQorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19FTkQoKQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpWaWRl
b0ZyYW1lKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBs
ZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIG1lZGlhU2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlw
ZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZTsg
fQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9G
cmFtZVByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiOTMwMDY0YTYxYzhlNjNlNTZjMmUz
NjY2NmM3YzU5NzQwMjE1ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCww
ICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworbWVzc2FnZXMgLT4gUmVtb3RlVmlkZW9GcmFtZVByb3h5IE5vdFJl
ZkNvdW50ZWQgeworICAgIFdhc0luaXRpYWxpemVkKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM+IHByb3BlcnRpZXMpCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRl
b0ZyYW1lUHJveHlJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NzkyYzA0
ODY1MGQwY2EyNjQ2MDAwNzIzNDY3MDMyODJlNzJhNGQwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHlJZGVu
dGlmaWVyLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk9iamVjdElkZW50aWZpZXJSZWZl
cmVuY2VUcmFja2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVWaWRlb0ZyYW1lSWRlbnRp
Zmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgUmVtb3RlVmlkZW9GcmFtZVJl
YWRSZWZlcmVuY2UgPSBPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZTxXZWJDb3JlOjpSZW1v
dGVWaWRlb0ZyYW1lSWRlbnRpZmllcj47Cit1c2luZyBSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZl
cmVuY2UgPSBPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U8V2ViQ29yZTo6UmVtb3RlVmlk
ZW9GcmFtZUlkZW50aWZpZXI+OwordXNpbmcgUmVtb3RlVmlkZW9GcmFtZVJlZmVyZW5jZSA9IE9i
amVjdElkZW50aWZpZXJSZWZlcmVuY2U8V2ViQ29yZTo6UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZp
ZXI+OwordXNpbmcgUmVtb3RlVmlkZW9GcmFtZVJlZmVyZW5jZVRyYWNrZXIgPSBPYmplY3RJZGVu
dGlmaWVyUmVmZXJlbmNlVHJhY2tlcjxXZWJDb3JlOjpSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmll
cj47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xp
YldlYlJUQ0NvZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3MuY3BwCmluZGV4IGYyMGQwNzRmM2E2ZDQ5NDA0NDc4NjFhMzQyYjQxOWRj
ZGRmMjg5YmEuLjI3NTNlZGEzZmM5Yjk2YTlmNDk4Y2IzNjQ3Njk3ZDMxMTVkNTg2NWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVj
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRD
Q29kZWNzLmNwcApAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjc01l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFBy
b3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvQ1ZVdGlsaXRpZXMuaD4KQEAgLTE4NCw2ICsxODYsNyBAQCB2b2lkIExpYldlYlJU
Q0NvZGVjczo6ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Pbk1haW5UaHJlYWRXaXRoTG9jaygp
CiAgICAgYXV0byYgZ3B1Q29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgZ3B1Q29ubmVjdGlvbi5hZGRDbGllbnQoKnRo
aXMpOwogICAgIG1fY29ubmVjdGlvbiA9ICZncHVDb25uZWN0aW9uLmNvbm5lY3Rpb24oKTsKKyAg
ICBtX3JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkgPSAmZ3B1Q29ubmVjdGlvbi5yZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5KCk7CiAgICAgbV9jb25uZWN0aW9uLT5hZGRUaHJl
YWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjczo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCB0aGlzKTsKIAogICAgIGlmIChtX2xvZ2dpbmdMZXZlbCkKQEAgLTMxNSwxMCAr
MzE4LDIzIEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzOjpmYWlsZWREZWNvZGluZyhSVENEZWNvZGVy
SWRlbnRpZmllciBkZWNvZGVySWRlbnRpZmllcikKICAgICAgICAgZGVjb2Rlci0+aGFzRXJyb3Ig
PSB0cnVlOwogfQogCi12b2lkIExpYldlYlJUQ0NvZGVjczo6Y29tcGxldGVkRGVjb2RpbmcoUlRD
RGVjb2RlcklkZW50aWZpZXIgZGVjb2RlcklkZW50aWZpZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwg
V2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vdGVTYW1wbGUpCit2b2lkIExpYldlYlJU
Q0NvZGVjczo6Y29tcGxldGVkRGVjb2RpbmcoUlRDRGVjb2RlcklkZW50aWZpZXIgZGVjb2Rlcklk
ZW50aWZpZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUm
JiByZW1vdGVTYW1wbGUsIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+
IHJlbW90ZUZyYW1lSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7
CiAKKyAgICBSZWZQdHI8UmVtb3RlVmlkZW9GcmFtZVByb3h5PiByZW1vdGVWaWRlb0ZyYW1lOwor
ICAgIC8vIFdlIGFsd2F5cyBjcmVhdGUgUmVtb3RlVmlkZW9GcmFtZVByb3h5IHNvIHRoYXQgd2Ug
Y2FuIHJlbGVhc2UgdGhlIGNvcnJlc3BvbmRpbmcgR1BVUHJvY2VzcyBJT1N1cmZhY2UgcmlnaHQg
YXdheSBpZiB0aGVyZSBpcyBubyB2aWRlbyBzb3VyY2UuCisgICAgaWYgKHJlbW90ZUZyYW1lSWRl
bnRpZmllcikgeworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uTG9jayB9Owor
ICAgICAgICBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMgcHJvcGVydGllcyB7IHJl
bW90ZVNhbXBsZS50aW1lKCksIHJlbW90ZVNhbXBsZS5taXJyb3JlZCgpLCByZW1vdGVTYW1wbGUu
cm90YXRpb24oKSwgeyBzdGF0aWNfY2FzdDxmbG9hdD4ocmVtb3RlU2FtcGxlLnNpemUoKS53aWR0
aCgpKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlbW90ZVNhbXBsZS5zaXplKCkuaGVpZ2h0KCkpIH0s
IHJlbW90ZVNhbXBsZS52aWRlb0Zvcm1hdCgpIH07CisgICAgICAgIHJlbW90ZVZpZGVvRnJhbWUg
PSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmNyZWF0ZUFscmVhZHlJbml0aWFsaXplZChtX2Nvbm5l
Y3Rpb24tPnVuaXF1ZUlEKCksICpyZW1vdGVGcmFtZUlkZW50aWZpZXIsIHByb3BlcnRpZXMsIFtw
cm94eSA9IG1fcmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eV0oYXV0byYgZnJhbWUsIGF1
dG8mJiBjYWxsYmFjaykgeworICAgICAgICAgICAgaWYgKCFwcm94eSkgeworICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgcHJveHktPmdldFZpZGVvRnJhbWVCdWZmZXIoZnJhbWUsIFdURk1vdmUo
Y2FsbGJhY2spKTsKKyAgICAgICAgfSk7CisgICAgfQogICAgIC8vIEZJWE1FOiBEbyBlcnJvciBs
b2dnaW5nLgogICAgIGF1dG8qIGRlY29kZXIgPSBtX2RlY29kZXJzLmdldChkZWNvZGVySWRlbnRp
Zmllcik7CiAgICAgaWYgKCFkZWNvZGVyKQpAQCAtMzMyLDYgKzM0OCwxNCBAQCB2b2lkIExpYldl
YlJUQ0NvZGVjczo6Y29tcGxldGVkRGVjb2RpbmcoUlRDRGVjb2RlcklkZW50aWZpZXIgZGVjb2Rl
cklkZW50aWZpZXIsCiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVkSW1hZ2VDYWxsYmFjaykKICAg
ICAgICAgcmV0dXJuOwogCisgICAgaWYgKHJlbW90ZVZpZGVvRnJhbWUpIHsKKyAgICAgICAgd2Vi
cnRjOjp2aWRlb0RlY29kZXJUYXNrQ29tcGxldGUoZGVjb2Rlci0+ZGVjb2RlZEltYWdlQ2FsbGJh
Y2ssIHRpbWVTdGFtcCwgcmVtb3RlU2FtcGxlLnRpbWUoKS50b0RvdWJsZSgpLCByZW1vdGVWaWRl
b0ZyYW1lLmxlYWtSZWYoKSwKKyAgICAgICAgICAgIFtdKGF1dG8qIHBvaW50ZXIpIHsgcmV0dXJu
IHN0YXRpY19jYXN0PFJlbW90ZVZpZGVvRnJhbWVQcm94eSo+KHBvaW50ZXIpLT5waXhlbEJ1ZmZl
cigpOyB9LAorICAgICAgICAgICAgW10oYXV0byogcG9pbnRlcikgeyBzdGF0aWNfY2FzdDxSZW1v
dGVWaWRlb0ZyYW1lUHJveHkqPihwb2ludGVyKS0+ZGVyZWYoKTsgfSwKKyAgICAgICAgICAgIHJl
bW90ZVNhbXBsZS5zaXplKCkud2lkdGgoKSwgcmVtb3RlU2FtcGxlLnNpemUoKS5oZWlnaHQoKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoIXJlbW90ZVNhbXBsZS5zdXJmYWNl
KCkpCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gY3JlYXRlQ1ZQaXhl
bEJ1ZmZlcihyZW1vdGVTYW1wbGUuc3VyZmFjZSgpKS52YWx1ZV9vcihudWxscHRyKTsKQEAgLTM0
MCw3ICszNjQsNyBAQCB2b2lkIExpYldlYlJUQ0NvZGVjczo6Y29tcGxldGVkRGVjb2RpbmcoUlRD
RGVjb2RlcklkZW50aWZpZXIgZGVjb2RlcklkZW50aWZpZXIsCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICB3ZWJydGM6OnZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZShkZWNvZGVyLT5kZWNv
ZGVkSW1hZ2VDYWxsYmFjaywgdGltZVN0YW1wLCBwaXhlbEJ1ZmZlci5nZXQoKSwgcmVtb3RlU2Ft
cGxlLnRpbWUoKS50b0RvdWJsZSgpKTsKKyAgICB3ZWJydGM6OnZpZGVvRGVjb2RlclRhc2tDb21w
bGV0ZShkZWNvZGVyLT5kZWNvZGVkSW1hZ2VDYWxsYmFjaywgdGltZVN0YW1wLCByZW1vdGVTYW1w
bGUudGltZSgpLnRvRG91YmxlKCksIHBpeGVsQnVmZmVyLmdldCgpKTsKIH0KIAogc3RhdGljIGlu
bGluZSBTdHJpbmcgZm9ybWF0TmFtZUZyb21Db2RlY1R5cGUoTGliV2ViUlRDQ29kZWNzOjpUeXBl
IHR5cGUpCkBAIC00MzgsMjAgKzQ2MiwzMSBAQCBpbnQzMl90IExpYldlYlJUQ0NvZGVjczo6ZW5j
b2RlRnJhbWUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJgogICAg
IGlmICghZW5jb2Rlci5jb25uZWN0aW9uKQogICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NP
REVDX0VSUk9SOwogCi0gICAgYXV0byBidWZmZXIgPSBhZG9wdENGKHdlYnJ0Yzo6cGl4ZWxCdWZm
ZXJGcm9tRnJhbWUoZnJhbWUpKTsKLSAgICBpZiAoIWJ1ZmZlcikgewotICAgICAgICAvLyBidWZm
ZXIgaXMgbm90IG5hdGl2ZSwgd2UgbmVlZCB0byBjb3B5IHRvIHNoYXJlZCB2aWRlbyBmcmFtZS4K
LSAgICAgICAgaWYgKCFjb3B5U2hhcmVkVmlkZW9GcmFtZShlbmNvZGVyLCBmcmFtZSkpCi0gICAg
ICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOworICAgIHN0ZDo6b3B0aW9u
YWw8UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2U+IHJlbW90ZVZpZGVvRnJhbWVSZWFkUmVm
ZXJlbmNlOworICAgIGlmIChhdXRvIHByb3ZpZGVyID0gd2VicnRjOjp2aWRlb0ZyYW1lQnVmZmVy
UHJvdmlkZXIoZnJhbWUpKSB7CisgICAgICAgIGF1dG8mIG1lZGlhU2FtcGxlID0gKnN0YXRpY19j
YXN0PE1lZGlhU2FtcGxlKj4ocHJvdmlkZXIpOworICAgICAgICBpZiAoaXM8UmVtb3RlVmlkZW9G
cmFtZVByb3h5PihtZWRpYVNhbXBsZSkpCisgICAgICAgICAgICByZW1vdGVWaWRlb0ZyYW1lUmVh
ZFJlZmVyZW5jZSA9IGRvd25jYXN0PFJlbW90ZVZpZGVvRnJhbWVQcm94eT4obWVkaWFTYW1wbGUp
LnJlYWQoKTsKICAgICB9CisKKyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gYnVmZmVy
OworICAgIGlmICghcmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UpIHsKKyAgICAgICAgYnVm
ZmVyID0gYWRvcHRDRih3ZWJydGM6OnBpeGVsQnVmZmVyRnJvbUZyYW1lKGZyYW1lKSk7CisgICAg
ICAgIGlmICghYnVmZmVyKSB7CisgICAgICAgICAgICAvLyBidWZmZXIgaXMgbm90IG5hdGl2ZSwg
d2UgbmVlZCB0byBjb3B5IHRvIHNoYXJlZCB2aWRlbyBmcmFtZS4KKyAgICAgICAgICAgIGlmICgh
Y29weVNoYXJlZFZpZGVvRnJhbWUoZW5jb2RlciwgZnJhbWUpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7CisgICAgICAgIH0KKyAgICB9CisKICAgICBh
dXRvIHNhbXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoYnVmZmVyLmdldCgpLCBNZWRp
YVRpbWUoZnJhbWUudGltZXN0YW1wX3VzKCkgKiAxMDAwLCAxMDAwMDAwKSwgdG9NZWRpYVNhbXBs
ZVZpZGVvUm90YXRpb24oZnJhbWUucm90YXRpb24oKSksIFJlbW90ZVZpZGVvU2FtcGxlOjpTaG91
bGRDaGVja0ZvcklPU3VyZmFjZTo6Tm8pOwotICAgIGlmICghc2FtcGxlLT5zdXJmYWNlKCkpIHsK
KyAgICBpZiAoYnVmZmVyICYmICFzYW1wbGUtPnN1cmZhY2UoKSkgewogICAgICAgICAvLyBidWZm
ZXIgaXMgbm90IElPU3VyZmFjZSwgd2UgbmVlZCB0byBjb3B5IHRvIHNoYXJlZCB2aWRlbyBmcmFt
ZS4KICAgICAgICAgaWYgKCFjb3B5U2hhcmVkVmlkZW9GcmFtZShlbmNvZGVyLCBidWZmZXIuZ2V0
KCkpKQogICAgICAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKICAgICB9
CiAKLSAgICBlbmNvZGVyLmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVj
c1Byb3h5OjpFbmNvZGVGcmFtZSB7IGVuY29kZXIuaWRlbnRpZmllciwgKnNhbXBsZSwgZnJhbWUu
dGltZXN0YW1wKCksIHNob3VsZEVuY29kZUFzS2V5RnJhbWUgfSwgMCk7CisgICAgZW5jb2Rlci5j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6RW5jb2RlRnJh
bWUgeyBlbmNvZGVyLmlkZW50aWZpZXIsICpzYW1wbGUsIGZyYW1lLnRpbWVzdGFtcCgpLCBzaG91
bGRFbmNvZGVBc0tleUZyYW1lLCByZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSB9LCAwKTsK
ICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCmluZGV4IGEw
MTdkZThiODQ1NDFkYzZjOWIzN2ZkMjViMzU3YzAwOThiMjJjMTIuLjg0NzFhMTZlMTYwMzc4NTA0
MWM5ZTdmN2Y3MTk4YTQ5MzRlNmQyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUlRDRGVjb2RlcklkZW50aWZp
ZXIuaCIKICNpbmNsdWRlICJSVENFbmNvZGVySWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90
ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkVmlkZW9GcmFtZS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oPgogI2luY2x1ZGUgPG1h
cD4KQEAgLTYwLDYgKzYxLDggQEAgc3RydWN0IFdlYktpdEVuY29kZWRGcmFtZUluZm87CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5
OworCiBjbGFzcyBMaWJXZWJSVENDb2RlY3MgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpUaHJl
YWRNZXNzYWdlUmVjZWl2ZXJSZWZDb3VudGVkLCBwdWJsaWMgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246
OkNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0xMjgs
NyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0aW9uTWF5Tm9M
b25nZXJCZU5lZWRlZCgpOwogCiAgICAgdm9pZCBmYWlsZWREZWNvZGluZyhSVENEZWNvZGVySWRl
bnRpZmllcik7Ci0gICAgdm9pZCBjb21wbGV0ZWREZWNvZGluZyhSVENEZWNvZGVySWRlbnRpZmll
ciwgdWludDMyX3QgdGltZVN0YW1wLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmKTsKKyAg
ICB2b2lkIGNvbXBsZXRlZERlY29kaW5nKFJUQ0RlY29kZXJJZGVudGlmaWVyLCB1aW50MzJfdCB0
aW1lU3RhbXAsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYsIHN0ZDo6b3B0aW9uYWw8UmVt
b3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+KTsKICAgICB2b2lkIGNvbXBsZXRlZEVuY29kaW5nKFJU
Q0VuY29kZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UmJiwgY29uc3Qgd2VicnRjOjpX
ZWJLaXRFbmNvZGVkRnJhbWVJbmZvJik7CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+
IGNvbnZlcnRUb0JHUkEoQ1ZQaXhlbEJ1ZmZlclJlZik7CiAKQEAgLTE0OSw2ICsxNTIsNyBAQCBw
cml2YXRlOgogCiAgICAgTG9jayBtX2Nvbm5lY3Rpb25Mb2NrOwogICAgIFJlZlB0cjxJUEM6OkNv
bm5lY3Rpb24+IG1fY29ubmVjdGlvbiBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY29ubmVjdGlvbkxv
Y2spOworICAgIFJlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5PiBtX3JlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkgV1RGX0dVQVJERURfQllfTE9DSyhtX2Nvbm5lY3Rp
b25Mb2NrKTsKICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZCgpPj4gbV90YXNrc1RvRGlzcGF0Y2hB
ZnRlckVzdGFibGlzaGluZ0Nvbm5lY3Rpb247CiAKICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluCmluZGV4IDI1ZjI3ZmVhODNkZTdiNTZmY2Fm
ZDhkMWY4ZjM4YTM0N2FiMDZjYmQuLjdkYjc5NTA4MWVhNWYwNjAyZjZmMjI2MjdiNDQ1NTUzYThi
NzA3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xp
YldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAK
IAogbWVzc2FnZXMgLT4gTGliV2ViUlRDQ29kZWNzIE5vdFJlZkNvdW50ZWQgewogICAgIEZhaWxl
ZERlY29kaW5nKFdlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKLSAgICBD
b21wbGV0ZWREZWNvZGluZyhXZWJLaXQ6OlJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IHVpbnQzMl90IHRpbWVTdGFtcCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxlKQor
ICAgIENvbXBsZXRlZERlY29kaW5nKFdlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgdWludDMyX3QgdGltZVN0YW1wLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1w
bGUsIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj4gcmVt
b3RlRnJhbWVJZGVudGlmaWVyKQogCiAgICAgQ29tcGxldGVkRW5jb2RpbmcoV2ViS2l0OjpSVENF
bmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgc3Ry
dWN0IHdlYnJ0Yzo6V2ViS2l0RW5jb2RlZEZyYW1lSW5mbyBpbmZvKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQ
cml2YXRlLmNwcAppbmRleCA0Zjc3ZjM2ZTcxNzI0NThlMWZkZmNmOTIxMzY2MzZlNmMzZGEyZmY1
Li45MTgwZDFjYTcyZDAxZTMyMmU3Y2E0ZGU5YzgzNmQ2OGVjYzZhMWMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRl
clByaXZhdGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlck1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZWNvcmRlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVt
b3RlVmlkZW9GcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVN0cmVhbVBy
aXZhdGUuaD4KQEAgLTkzLDI2ICs5NCwzNCBAQCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6fk1lZGlh
UmVjb3JkZXJQcml2YXRlKCkKIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6dmlkZW9TYW1w
bGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlkZW9TYW1wbGVNZXRhZGF0YSkKIHsK
KyAgICBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlPiByZW1vdGVW
aWRlb0ZyYW1lUmVhZFJlZmVyZW5jZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9T
YW1wbGU+IHJlbW90ZVNhbXBsZTsKICAgICBpZiAoc2hvdWxkTXV0ZVZpZGVvKCkpIHsKKyAgICAg
ICAgLy8gRklYTUU6IFdlIGNvdWxkIG9wdGltaXplIHNlbmRpbmcgYmxhY2sgZnJhbWVzIGJ5IG9u
bHkgc2VuZGluZyB3aWR0aC9oZWlnaHQuCiAgICAgICAgIGlmICghbV9ibGFja0ZyYW1lKSB7Ci0g
ICAgICAgICAgICBhdXRvIGJsYWNrRnJhbWVEZXNjcmlwdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0
Rm9ybWF0RGVzY3JpcHRpb24oc2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxl
QnVmZmVyKTsKLSAgICAgICAgICAgIGF1dG8gZGltZW5zaW9ucyA9IENNVmlkZW9Gb3JtYXREZXNj
cmlwdGlvbkdldERpbWVuc2lvbnMoYmxhY2tGcmFtZURlc2NyaXB0aW9uKTsKLSAgICAgICAgICAg
IG1fYmxhY2tGcmFtZSA9IGNyZWF0ZUJsYWNrUGl4ZWxCdWZmZXIoZGltZW5zaW9ucy53aWR0aCwg
ZGltZW5zaW9ucy5oZWlnaHQpOworICAgICAgICAgICAgYXV0byBzaXplID0gc2FtcGxlLnByZXNl
bnRhdGlvblNpemUoKTsKKyAgICAgICAgICAgIG1fYmxhY2tGcmFtZSA9IGNyZWF0ZUJsYWNrUGl4
ZWxCdWZmZXIoc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplLndpZHRoKCkpLCBzdGF0aWNfY2FzdDxz
aXplX3Q+KHNpemUuaGVpZ2h0KCkpKTsKICAgICAgICAgfQogICAgICAgICByZW1vdGVTYW1wbGUg
PSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKG1fYmxhY2tGcmFtZS5nZXQoKSwgc2FtcGxlLnBy
ZXNlbnRhdGlvblRpbWUoKSwgc2FtcGxlLnZpZGVvUm90YXRpb24oKSwgUmVtb3RlVmlkZW9TYW1w
bGU6OlNob3VsZENoZWNrRm9ySU9TdXJmYWNlOjpObyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
bV9ibGFja0ZyYW1lID0gbnVsbHB0cjsKLSAgICAgICAgcmVtb3RlU2FtcGxlID0gUmVtb3RlVmlk
ZW9TYW1wbGU6OmNyZWF0ZShzYW1wbGUsIFJlbW90ZVZpZGVvU2FtcGxlOjpTaG91bGRDaGVja0Zv
cklPU3VyZmFjZTo6Tm8pOworCisgICAgICAgIGlmIChpczxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+
KHNhbXBsZSkpIHsKKyAgICAgICAgICAgIHJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlID0g
ZG93bmNhc3Q8UmVtb3RlVmlkZW9GcmFtZVByb3h5PihzYW1wbGUpLnJlYWQoKTsKKyAgICAgICAg
ICAgIHJlbW90ZVNhbXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUobnVsbHB0ciwgc2Ft
cGxlLnByZXNlbnRhdGlvblRpbWUoKSwgc2FtcGxlLnZpZGVvUm90YXRpb24oKSwgUmVtb3RlVmlk
ZW9TYW1wbGU6OlNob3VsZENoZWNrRm9ySU9TdXJmYWNlOjpObyk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgcmVtb3RlU2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShzYW1w
bGUsIFJlbW90ZVZpZGVvU2FtcGxlOjpTaG91bGRDaGVja0ZvcklPU3VyZmFjZTo6Tm8pOwogICAg
IH0KIAotICAgIGlmICghcmVtb3RlU2FtcGxlLT5zdXJmYWNlKCkpIHsKKyAgICBpZiAoaXM8UmVt
b3RlVmlkZW9GcmFtZVByb3h5PihzYW1wbGUpKQorICAgICAgICByZW1vdGVWaWRlb0ZyYW1lUmVh
ZFJlZmVyZW5jZSA9IGRvd25jYXN0PFJlbW90ZVZpZGVvRnJhbWVQcm94eT4oc2FtcGxlKS5yZWFk
KCk7CisgICAgZWxzZSBpZiAoIXJlbW90ZVNhbXBsZS0+c3VyZmFjZSgpKSB7CiAgICAgICAgIC8v
IGJ1ZmZlciBpcyBub3QgSU9TdXJmYWNlLCB3ZSBuZWVkIHRvIGNvcHkgdG8gc2hhcmVkIHZpZGVv
IGZyYW1lLgogICAgICAgICBpZiAoIWNvcHlTaGFyZWRWaWRlb0ZyYW1lKHJlbW90ZVNhbXBsZS0+
aW1hZ2VCdWZmZXIoKSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9jb25u
ZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpWaWRlb1NhbXBsZUF2
YWlsYWJsZSB7IFdURk1vdmUoKnJlbW90ZVNhbXBsZSkgfSwgbV9pZGVudGlmaWVyKTsKKyAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OlZpZGVvU2Ft
cGxlQXZhaWxhYmxlIHsgV1RGTW92ZSgqcmVtb3RlU2FtcGxlKSwgcmVtb3RlVmlkZW9GcmFtZVJl
YWRSZWZlcmVuY2UgfSwgbV9pZGVudGlmaWVyKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmYjk5ODc5ZTRjZmNjNWY4NTk1
OTc2M2M1NTNiMWFkNWIwNjQwMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5LmNwcApA
QCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5LmgiCisKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisj
aW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlNZXNzYWdlcy5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk+IFJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwUHJveHk6OmNyZWF0ZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgY29u
bmVjdGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcFByb3h5KGNvbm5lY3Rpb24pKTsKK30KKworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXBQcm94eTo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eShHUFVQcm9jZXNzQ29ubmVj
dGlvbiYgY29ubmVjdGlvbikKKyAgICA6IG1fY29ubmVjdGlvbklEKGNvbm5lY3Rpb24uY29ubmVj
dGlvbigpLnVuaXF1ZUlEKCkpCisgICAgLCBtX3F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJSZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5IiwgV29ya1F1ZXVlOjpRT1M6OlVzZXJJbnRlcmFj
dGl2ZSkpCit7CisgICAgY29ubmVjdGlvbi5hZGRDbGllbnQoKnRoaXMpOworICAgIGNvbm5lY3Rp
b24uY29ubmVjdGlvbigpLmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3F1
ZXVlLCB0aGlzKTsKK30KKworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eTo6flJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkoKQoreworICAgIGNsZWFyQ2FsbGJhY2tzKCk7Cit9
CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eTo6Z3B1UHJvY2Vzc0Nvbm5l
Y3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICB7
CisgICAgICAgIExvY2tlciBsb2NrKG1fY29ubmVjdGlvbkxvY2spOworICAgICAgICBtX2Nvbm5l
Y3Rpb25JRCA9IHsgfTsKKyAgICB9CisgICAgY29ubmVjdGlvbi5jb25uZWN0aW9uKCkucmVtb3Zl
V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworICAgIGNsZWFyQ2FsbGJhY2tzKCk7
Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eTo6Y2xlYXJDYWxsYmFj
a3MoKQoreworICAgIEhhc2hNYXA8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIsIENhbGxiYWNr
PiBjYWxsYmFja3M7CisgICAgeworICAgICAgICBMb2NrZXIgbG9jayhtX2NhbGxiYWNrc0xvY2sp
OworICAgICAgICBjYWxsYmFja3MgPSBzdGQ6OmV4Y2hhbmdlKG1fY2FsbGJhY2tzLCB7IH0pOwor
ICAgIH0KKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzLnZhbHVlcygpKQorICAg
ICAgICBjYWxsYmFjayh7IH0pOworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
UHJveHk6OnNldFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUmJiBzZW1h
cGhvcmUpCit7CisgICAgbV9zaGFyZWRWaWRlb0ZyYW1lUmVhZGVyLnNldFNlbWFwaG9yZShXVEZN
b3ZlKHNlbWFwaG9yZSkpOworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJv
eHk6OnNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5k
bGUmIGlwY0hhbmRsZSkKK3sKKyAgICBtX3NoYXJlZFZpZGVvRnJhbWVSZWFkZXIuc2V0U2hhcmVk
TWVtb3J5KGlwY0hhbmRsZSk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk6
OkNhbGxiYWNrIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk6OnRha2VDYWxsYmFjayhS
ZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIExvY2tlciBsb2Nr
KG1fY2FsbGJhY2tzTG9jayk7CisgICAgcmV0dXJuIG1fY2FsbGJhY2tzLnRha2UoaWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eTo6dmlkZW9GcmFt
ZUJ1ZmZlck5vdEZvdW5kKFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7
CisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSB0YWtlQ2FsbGJhY2soaWRlbnRpZmllcikpCisgICAg
ICAgIGNhbGxiYWNrKG51bGxwdHIpOworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwUHJveHk6Om5ld1ZpZGVvRnJhbWVCdWZmZXIoUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIg
aWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fc2hhcmVkVmlkZW9GcmFtZVJlYWRl
ci5yZWFkKCk7CisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSB0YWtlQ2FsbGJhY2soaWRlbnRpZmll
cikpCisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KSk7Cit9CisKK3ZvaWQgUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eTo6Z2V0VmlkZW9GcmFtZUJ1ZmZlcihjb25zdCBSZW1v
dGVWaWRlb0ZyYW1lUHJveHkmIGZyYW1lLCBDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIHsK
KyAgICAgICAgTG9ja2VyIGxvY2sobV9jYWxsYmFja3NMb2NrKTsKKyAgICAgICAgQVNTRVJUKCFt
X2NhbGxiYWNrcy5jb250YWlucyhmcmFtZS5pZGVudGlmaWVyKCkpKTsKKyAgICAgICAgbV9jYWxs
YmFja3MuYWRkKGZyYW1lLmlkZW50aWZpZXIoKSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIH0K
KyAgICBMb2NrZXIgbG9jayhtX2Nvbm5lY3Rpb25Mb2NrKTsKKyAgICBpZiAoIW1fY29ubmVjdGlv
bklEKSB7CisgICAgICAgIHZpZGVvRnJhbWVCdWZmZXJOb3RGb3VuZChmcmFtZS5pZGVudGlmaWVy
KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZCht
X2Nvbm5lY3Rpb25JRCwgTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpHZXRW
aWRlb0ZyYW1lQnVmZmVyKGZyYW1lLnJlYWQoKSksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0
Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKK30KKworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42M2U4
OTM0ZmQ5OTYyYzY2NmQzOTY1ZTU3OTcxMjA5N2YwZmNkM2JkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXBQcm94eS5oCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
R1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRl
ICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNoYXJlZFZpZGVvRnJh
bWUuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgorCit1
c2luZyBDVlBpeGVsQnVmZmVyUG9vbFJlZiA9IHN0cnVjdCBfX0NWUGl4ZWxCdWZmZXJQb29sKjsK
KworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBDb25uZWN0aW9uOworY2xhc3MgRGVjb2RlcjsKK30K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVQcm94eTsKKwor
Y2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSA6IHB1YmxpYyBJUEM6OkNvbm5l
Y3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciwgcHVibGljIEdQVVByb2Nlc3NDb25uZWN0
aW9uOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eT4gY3JlYXRlKEdQVVBy
b2Nlc3NDb25uZWN0aW9uJik7CisgICAgflJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHko
KTsKKworICAgIHVzaW5nIENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZXRhaW5QdHI8Q1ZQaXhl
bEJ1ZmZlclJlZj4mJik+OworICAgIHZvaWQgZ2V0VmlkZW9GcmFtZUJ1ZmZlcihjb25zdCBSZW1v
dGVWaWRlb0ZyYW1lUHJveHkmLCBDYWxsYmFjayYmKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNp
dCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9uJik7
CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIHNldFNoYXJlZFZpZGVv
RnJhbWVTZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUmJik7CisgICAgdm9pZCBzZXRTaGFyZWRWaWRl
b0ZyYW1lTWVtb3J5KGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik7CisgICAgdm9pZCB2
aWRlb0ZyYW1lQnVmZmVyTm90Rm91bmQoUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIpOworICAg
IHZvaWQgbmV3VmlkZW9GcmFtZUJ1ZmZlcihSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcik7CisK
KyAgICAvLyBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50CisgICAgdm9pZCBncHVQcm9jZXNz
Q29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJik7CisKKyAgICB2b2lkIGNs
ZWFyQ2FsbGJhY2tzKCk7CisgICAgQ2FsbGJhY2sgdGFrZUNhbGxiYWNrKFJlbW90ZVZpZGVvRnJh
bWVJZGVudGlmaWVyKTsKKworcHJpdmF0ZToKKyAgICBMb2NrIG1fY29ubmVjdGlvbkxvY2s7Cisg
ICAgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBtX2Nvbm5lY3Rpb25JRCBXVEZfR1VBUkRFRF9C
WV9MT0NLKG1fY29ubmVjdGlvbkxvY2spOworICAgIExvY2sgbV9jYWxsYmFja3NMb2NrOworICAg
IEhhc2hNYXA8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIsIENhbGxiYWNrPiBtX2NhbGxiYWNr
cyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY2FsbGJhY2tzTG9jayk7CisgICAgUmVmPFdvcmtRdWV1
ZT4gbV9xdWV1ZTsKKyAgICBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyIG1fc2hhcmVkVmlkZW9GcmFt
ZVJlYWRlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5Lm1lc3NhZ2VzLmluCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ3ZTBkNjgzODdiZjM5ZDQ3MGM2ODA2OTcyMjAyNjY4MWYwOTg5YTkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzIgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCisKK21lc3NhZ2Vz
IC0+IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAg
U2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSBzZW1hcGhvcmUpCisg
ICAgU2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeShXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlIHN0b3JhZ2VIYW5kbGUpCisgICAgVmlkZW9GcmFtZUJ1ZmZlck5vdEZvdW5kKFdlYktpdDo6
UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBOZXdWaWRlb0ZyYW1l
QnVmZmVyKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllcikKK30K
KworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENPQ09BKSAmJiBF
TkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAppbmRleCBl
NWVmNDZlNjA4MjM5NDYyYWE0MDQ4Y2I3ZDNmYTAzNDJlOThiNTc1Li5mMzdjMThmNWZjM2JlZjk5
NThiZWUwZWNlMDE4YWJmMzY3YWMzNjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5j
cHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1l
UHJveHkuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgpAQCAtNDksMTIgKzUwLDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI+IFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3JlYXRlKFNhbXBsCiAKIFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXImIG1hbmFnZXIsIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6Q2xpZW50JiBjbGllbnQpCiAgICAgOiBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIoY2xpZW50KQorICAgICwgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbigmV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSkKICAgICAsIG1fbWFuYWdl
cihtYW5hZ2VyKQotICAgICwgbV9jb25uZWN0aW9uKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpKQorICAgICwgbV9jb25uZWN0
aW9uKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKSkKICAgICAsIG1faWRlbnRp
ZmllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQogewog
ICAgIG1hbmFnZXIuYWRkTGF5ZXIoKnRoaXMpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuYWRkQ2xpZW50KCp0aGlzKTsKKyAgICBtX2dw
dVByb2Nlc3NDb25uZWN0aW9uLT5hZGRDbGllbnQoKnRoaXMpOwogfQogCiB2b2lkIFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjo6aW5pdGlhbGl6ZShib29sIGhpZGVSb290TGF5ZXIsIEludFNpemUg
c2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKQEAgLTc4LDcg
KzgwLDcgQEAgdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnNldExvZ0lkZW50aWZpZXIo
U3RyaW5nJiYgbG9nSWRlbnRpZmllcikKIAogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp+U2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyKCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLnJlbW92ZUNsaWVudCgqdGhpcyk7CisgICAgZGlz
Y29ubmVjdEdQVVByb2Nlc3NDb25uZWN0aW9uSWZOZWVkZWQoKTsKICAgICBtX2Nvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OlJl
bGVhc2VMYXllciB7IG1faWRlbnRpZmllciB9LCAwKTsKICAgICBpZiAobV9tYW5hZ2VyKQogICAg
ICAgICBtX21hbmFnZXItPnJlbW92ZUxheWVyKCp0aGlzKTsKQEAgLTE0MCw2ICsxNDIsMTQgQEAg
dm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUm
IHNhbXBsZSkKIHsKICAgICBpZiAobV9wYXVzZWQpCiAgICAgICAgIHJldHVybjsKKyAgICBpZiAo
IW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChpczxS
ZW1vdGVWaWRlb0ZyYW1lUHJveHk+KHNhbXBsZSkpIHsKKyAgICAgICAgYXV0byYgcmVtb3RlU2Ft
cGxlID0gZG93bmNhc3Q8UmVtb3RlVmlkZW9GcmFtZVByb3h5PihzYW1wbGUpOworICAgICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6RW5xdWV1ZVNhbXBsZSB7IHJlbW90ZVNhbXBsZS5yZWFkKCkgfSwgbV9pZGVudGlmaWVyKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGF1dG8gcmVtb3RlU2FtcGxlID0gUmVtb3Rl
VmlkZW9TYW1wbGU6OmNyZWF0ZShzYW1wbGUsIFJlbW90ZVZpZGVvU2FtcGxlOjpTaG91bGRDaGVj
a0ZvcklPU3VyZmFjZTo6Tm8pOwogICAgIGlmICghcmVtb3RlU2FtcGxlLT5zdXJmYWNlKCkpIHsK
QEAgLTE0OCw3ICsxNTgsNyBAQCB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1
ZVNhbXBsZShNZWRpYVNhbXBsZSYgc2FtcGxlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpFbnF1ZXVlU2FtcGxlIHsgKnJlbW90ZVNhbXBsZSB9LCBtX2lkZW50aWZpZXIp
OworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpFbnF1ZXVlU2FtcGxlQ1YgeyAqcmVtb3RlU2FtcGxlIH0sIG1faWRlbnRpZmll
cik7CiB9CiAKIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjbGVhckVucXVldWVkU2Ft
cGxlcygpCkBAIC0xNzEsMTEgKzE4MSwxOCBAQCB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6c2V0RGlkRmFpbChib29sIHZhbHVlKQogdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKQogewog
ICAgIG1fc2hhcmVkVmlkZW9GcmFtZVdyaXRlci5kaXNhYmxlKCk7CisgICAgZGlzY29ubmVjdEdQ
VVByb2Nlc3NDb25uZWN0aW9uSWZOZWVkZWQoKTsKICAgICBtX2RpZEZhaWwgPSB0cnVlOwogICAg
IGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPnNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
clN0YXR1c0RpZEZhaWwoKTsKIH0KIAordm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmRp
c2Nvbm5lY3RHUFVQcm9jZXNzQ29ubmVjdGlvbklmTmVlZGVkKCkKK3sKKyAgICBpZiAoYXV0byog
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24sIG51bGxwdHIpKQorICAgICAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi0+cmVtb3ZlQ2xpZW50
KCp0aGlzKTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKaW5k
ZXggNTYzNjlhZGRmMGFiZjM0NmIwZDIxYzg1MDZkNjljYjNkM2I0MGUzOS4uMDQ0NGVjZjJiODYy
Nzk0NDMyMTExM2U2OWQyNmIxMmIyNTViZmFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyJiwgV2ViQ29yZTo6
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpDbGllbnQmKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RH
UFVQcm9jZXNzQ29ubmVjdGlvbklmTmVlZGVkKCk7CiAKICAgICAvLyBXZWJDb3JlOjpTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIKICAgICB2b2lkIGluaXRpYWxpemUoYm9vbCBoaWRlUm9vdExheWVy
LCBXZWJDb3JlOjpJbnRTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5h
bDsKQEAgLTc2LDYgKzc3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldERpZEZhaWwoYm9vbCk7
CiAgICAgYm9vbCBjb3B5U2hhcmVkVmlkZW9GcmFtZShDVlBpeGVsQnVmZmVyUmVmKTsKIAorICAg
IEdQVVByb2Nlc3NDb25uZWN0aW9uKiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uOwogICAgIFdlYWtQ
dHI8U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcj4gbV9tYW5hZ2VyOwogICAgIFJlZjxJ
UEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwCmluZGV4
IGIxZWY4ZjU2NDUyZjFmYzY5MWZlZGU0YzQ4NDljM2I1YjA2YzY2OTMuLjE1NmE5ZWFjZmY5OGQ3
MDU5Y2FlMmVlNTdjNWI2MTg4MjhlMWMwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmNwcApA
QCAtMjgsNiArMjgsOCBAQAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlbW90
ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcFByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5Lmgi
CiAjaW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmg+CkBAIC0x
MzMsNiArMTM1LDEyIEBAIHZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OmRpZFVwZGF0
ZVNvdXJjZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKiBjb25uCiAgICAgc2V0Q29ubmVjdGlv
bihjb25uZWN0aW9uKTsKIH0KIAordm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6c2V0
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eShSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cFByb3h5KiBwcm94eSkKK3sKKyAgICBMb2NrZXIgbG9jayhtX3JlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwUHJveHlMb2NrKTsKKyAgICBtX3JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkg
PSBwcm94eTsKK30KKwogdm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6ZGlzcGF0Y2hU
b1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgbV9xdWV1ZS0+ZGlz
cGF0Y2goV1RGTW92ZShjYWxsYmFjaykpOwpAQCAtMTUwLDE1ICsxNTgsMzUgQEAgdm9pZCBSZW1v
dGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6YXVkaW9TdG9yYWdlQ2hhbmdlZChXZWJDb3JlOjpSZWFs
dGltZU1lZGlhU291cmMKICAgICBpdGVyYXRvci0+dmFsdWUtPnNldFN0b3JhZ2UoaXBjSGFuZGxl
LmhhbmRsZSwgZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzLCBXVEZNb3ZlKHNlbWFwaG9yZSks
IG1lZGlhVGltZSwgZnJhbWVDaHVua1NpemUpOwogfQogCi12b2lkIFJlbW90ZUNhcHR1cmVTYW1w
bGVNYW5hZ2VyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShSZWFsdGltZU1lZGlhU291cmNlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBSZW1vdGVWaWRlb1NhbXBsZSYmIHNhbXBsZSwgVmlkZW9TYW1wbGVN
ZXRhZGF0YSBtZXRhZGF0YSkKK3ZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OnZpZGVv
U2FtcGxlQXZhaWxhYmxlKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFJlbW90ZVZpZGVvU2FtcGxlJiYgc2FtcGxlLCBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJh
bWVJZGVudGlmaWVyPiByZW1vdGVJZGVudGlmaWVyLCBWaWRlb1NhbXBsZU1ldGFkYXRhIG1ldGFk
YXRhKQogewogICAgIEFTU0VSVCghV1RGOjppc01haW5SdW5Mb29wKCkpOwogCisgICAgUmVmUHRy
PE1lZGlhU2FtcGxlPiB2aWRlb0ZyYW1lOworICAgIC8vIFdlIGFsd2F5cyBjcmVhdGUgUmVtb3Rl
VmlkZW9GcmFtZVByb3h5IHNvIHRoYXQgd2UgY2FuIHJlbGVhc2UgdGhlIGNvcnJlc3BvbmRpbmcg
R1BVUHJvY2VzcyBJT1N1cmZhY2UgcmlnaHQgYXdheSBpZiB0aGVyZSBpcyBubyB2aWRlbyBzb3Vy
Y2UuCisgICAgaWYgKHJlbW90ZUlkZW50aWZpZXIpIHsKKyAgICAgICAgUmVtb3RlVmlkZW9GcmFt
ZVByb3h5OjpQcm9wZXJ0aWVzIHByb3BlcnRpZXMgeyBzYW1wbGUudGltZSgpLCBzYW1wbGUubWly
cm9yZWQoKSwgc2FtcGxlLnJvdGF0aW9uKCksIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNhbXBsZS5z
aXplKCkud2lkdGgoKSksIHN0YXRpY19jYXN0PGZsb2F0PihzYW1wbGUuc2l6ZSgpLmhlaWdodCgp
KSB9LCBzYW1wbGUudmlkZW9Gb3JtYXQoKSB9OworICAgICAgICAKKyAgICAgICAgLy8gRklYTUU6
IFdlIG5lZWQgdG8gZWl0aGVyIGdldCBHUFVQcm9jZXNzIG9yIFVJUHJvY2VzcyBvYmplY3QgaGVh
cCBwcm94eS4gRm9yIG5vdyB3ZSBhbHdheXMgZ28gdG8gR1BVUHJvY2Vzcy4KKyAgICAgICAgTG9j
a2VyIGxvY2sobV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5TG9jayk7CisgICAgICAg
IHZpZGVvRnJhbWUgPSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmNyZWF0ZUFscmVhZHlJbml0aWFs
aXplZChtX2Nvbm5lY3Rpb24tPnVuaXF1ZUlEKCksICpyZW1vdGVJZGVudGlmaWVyLCBwcm9wZXJ0
aWVzLCBbcHJveHkgPSBtX3JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHldKGF1dG8mIGZy
YW1lLCBhdXRvJiYgY2FsbGJhY2spIHsKKyAgICAgICAgICAgIGlmICghcHJveHkpIHsKKyAgICAg
ICAgICAgICAgICBjYWxsYmFjayh7IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHByb3h5LT5nZXRWaWRlb0ZyYW1lQnVmZmVyKGZyYW1lLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIH0pOworICAgIH0KKwogICAgIGF1dG8gaXRlcmF0
b3IgPSBtX3ZpZGVvU291cmNlcy5maW5kKGlkZW50aWZpZXIpOwogICAgIGlmIChpdGVyYXRvciA9
PSBtX3ZpZGVvU291cmNlcy5lbmQoKSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJS
VEMsICJVbmFibGUgdG8gZmluZCBzb3VyY2UgJWxsdSBmb3IgcmVtb3RlVmlkZW9TYW1wbGVBdmFp
bGFibGUiLCBpZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQor
ICAgIGlmICh2aWRlb0ZyYW1lKSB7CisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS0+dmlkZW9GcmFt
ZUF2YWlsYWJsZSh2aWRlb0ZyYW1lLnJlbGVhc2VOb25OdWxsKCksIHNhbXBsZS5zaXplKCksIG1l
dGFkYXRhKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBpdGVyYXRvci0+dmFsdWUtPnZp
ZGVvU2FtcGxlQXZhaWxhYmxlKFdURk1vdmUoc2FtcGxlKSwgbWV0YWRhdGEpOwogfQogCkBAIC0y
NDcsMTAgKzI3NSwxNSBAQCB2b2lkIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjpSZW1vdGVW
aWRlbzo6dmlkZW9TYW1wbGVBdmFpbGFibGUoUmVtb3RlVmlkZW9TYQogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICB2aWRlb0ZyYW1lQXZh
aWxhYmxlKHNhbXBsZVJlZi5yZWxlYXNlTm9uTnVsbCgpLCByZW1vdGVTYW1wbGUuc2l6ZSgpLCBt
ZXRhZGF0YSk7Cit9CisKK3ZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OlJlbW90ZVZp
ZGVvOjp2aWRlb0ZyYW1lQXZhaWxhYmxlKFJlZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUsIEludFNp
emUgc2l6ZSwgVmlkZW9TYW1wbGVNZXRhZGF0YSBtZXRhZGF0YSkKK3sKICAgICBzd2l0Y2hPbiht
X3NvdXJjZSwgWyZdKFJlZjxSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlPiYgc291cmNlKSB7Ci0g
ICAgICAgIHNvdXJjZS0+dmlkZW9TYW1wbGVBdmFpbGFibGUoKnNhbXBsZVJlZiwgcmVtb3RlU2Ft
cGxlLnNpemUoKSwgbWV0YWRhdGEpOworICAgICAgICBzb3VyY2UtPnZpZGVvU2FtcGxlQXZhaWxh
YmxlKHNhbXBsZS5nZXQoKSwgc2l6ZSwgbWV0YWRhdGEpOwogICAgIH0sIFsmXShSZWY8UmVtb3Rl
UmVhbHRpbWVEaXNwbGF5U291cmNlPiYgc291cmNlKSB7Ci0gICAgICAgIHNvdXJjZS0+cmVtb3Rl
VmlkZW9TYW1wbGVBdmFpbGFibGUoKnNhbXBsZVJlZiwgbWV0YWRhdGEpOworICAgICAgICBzb3Vy
Y2UtPnJlbW90ZVZpZGVvU2FtcGxlQXZhaWxhYmxlKHNhbXBsZS5nZXQoKSwgbWV0YWRhdGEpOwog
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5oCmluZGV4IDg2ZjQ5MGI3ODBmZTQ5Y2Ex
MWExMDRhZjdiNjliZDMzZTY4YzE3MjYuLmJmMWRhOWRkY2U4MDE0MDk4YjVhMjVhYmY1NDc0NTg0
MDUxNzJhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1v
dGVDYXB0dXJlU2FtcGxlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5oCkBAIC0zMywxMSArMzMsMTMgQEAKICNp
bmNsdWRlICJSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVh
bHRpbWVEaXNwbGF5U291cmNlLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJj
ZS5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
U2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvV2ViQXVkaW9CdWZmZXJMaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNDYsNiArNDgsNyBAQCBjbGFzcyBSZW1vdGVWaWRlb1NhbXBsZTsKIH0K
IAogbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFBy
b3h5OwogCiBjbGFzcyBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlciA6IHB1YmxpYyBJUEM6OkNv
bm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZlclJlZkNvdW50ZWQgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjAsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1v
dmVTb3VyY2UoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAg
dm9pZCBkaWRVcGRhdGVTb3VyY2VDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiopOworICAgIHZv
aWQgc2V0UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eShSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcFByb3h5Kik7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpOwogCkBAIC03MCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAg
Ly8gTWVzc2FnZXMKICAgICB2b2lkIGF1ZGlvU3RvcmFnZUNoYW5nZWQoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwg
Y29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgdWludDY0X3QgbnVtYmVy
T2ZGcmFtZXMsIElQQzo6U2VtYXBob3JlJiYsIGNvbnN0IE1lZGlhVGltZSYsIHNpemVfdCBmcmFt
ZVNhbXBsZVNpemUpOwogICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBNZWRpYVRpbWUsIHVpbnQ2NF90IG51bWJlck9m
RnJhbWVzKTsKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmLCBXZWJD
b3JlOjpWaWRlb1NhbXBsZU1ldGFkYXRhKTsKKyAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxl
KFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVW
aWRlb1NhbXBsZSYmLCBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPiwg
V2ViQ29yZTo6VmlkZW9TYW1wbGVNZXRhZGF0YSk7CiAKICAgICB2b2lkIHNldENvbm5lY3Rpb24o
SVBDOjpDb25uZWN0aW9uKik7CiAKQEAgLTEwNiw2ICsxMTAsNyBAQCBwcml2YXRlOgogICAgICAg
ICBleHBsaWNpdCBSZW1vdGVWaWRlbyhTb3VyY2UmJik7CiAKICAgICAgICAgdm9pZCB2aWRlb1Nh
bXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmLCBXZWJDb3JlOjpWaWRl
b1NhbXBsZU1ldGFkYXRhKTsKKyAgICAgICAgdm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFJlZjxX
ZWJDb3JlOjpNZWRpYVNhbXBsZT4mJiwgV2ViQ29yZTo6SW50U2l6ZSwgV2ViQ29yZTo6VmlkZW9T
YW1wbGVNZXRhZGF0YSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBTb3VyY2UgbV9zb3VyY2U7
CkBAIC0xMTUsMTAgKzEyMCwxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1JlZ2lzdGVyZWRU
b1BhcmVudFByb2Nlc3NDb25uZWN0aW9uIHsgZmFsc2UgfTsKICAgICBSZWY8V29ya1F1ZXVlPiBt
X3F1ZXVlOwogICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKLQogICAg
IC8vIGJhY2tncm91bmQgdGhyZWFkIG1lbWJlcgogICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVBdWRpbz4+IG1f
YXVkaW9Tb3VyY2VzOwogICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlk
ZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlbz4+IG1fdmlkZW9Tb3VyY2VzOwor
CisgICAgTG9jayBtX3JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlMb2NrOworICAgIFJl
ZlB0cjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5PiBtX3JlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwUHJveHkgV1RGX0dVQVJERURfQllfTE9DSyhtX3JlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwUHJveHlMb2NrKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5h
Z2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNh
cHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IDg2NTFiM2NkNzk5YTFmNzU0ZjJl
ODAzYzQ2ODg5MGU4ZjVhYWZhNjYuLjk2NzIyMTg0MWUwY2YyNGE5NWVkNWVjMmNhZDIwMWMwNjQ4
NGY2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVD
YXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI1
LDcgKzI1LDcgQEAKIAogbWVzc2FnZXMgLT4gUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIgTm90
UmVmQ291bnRlZCB7CiAgICAgQXVkaW9TdG9yYWdlQ2hhbmdlZChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlSWRlbnRpZmllciBpZCwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBz
dG9yYWdlSGFuZGxlLCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRp
b24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCBJUEM6OlNlbWFwaG9yZSBjYXB0dXJlU2VtYXBo
b3JlLCBNZWRpYVRpbWUgbWVkaWFUaW1lLCBzaXplX3QgZnJhbWVDaHVua1NpemUpOwotICAgIFZp
ZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVy
IGlkLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUsIHN0cnVjdCBXZWJDb3JlOjpW
aWRlb1NhbXBsZU1ldGFkYXRhIG1ldGFkYXRhKQorICAgIFZpZGVvU2FtcGxlQXZhaWxhYmxlKFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBXZWJDb3JlOjpSZW1vdGVW
aWRlb1NhbXBsZSBzYW1wbGUsIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1l
SWRlbnRpZmllcj4gcmVtb3RlSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlZpZGVvU2FtcGxl
TWV0YWRhdGEgbWV0YWRhdGEpCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKaW5kZXgg
MWVlOTIzMDY5Y2RjNThjOWQ3YTIxMDI3ZWM5NDY2MzBiMmMwZWIxZS4uNzExYjU1ODVhNWQ1OTY2
YjM1Yjk0MDlhM2M5NDI5ODI5ZjFlMzc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCkBAIC0yMzAs
MTIgKzIzMCwxOSBAQCB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpBdWRpb0ZhY3Rvcnk6
OnNldFNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MoYm9vbCB2YQogICAgIG1fc2hvdWxkQ2FwdHVy
ZUluR1BVUHJvY2VzcyA9IHZhbHVlOwogfQogCit2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
OjpWaWRlb0ZhY3Rvcnk6OnNldFNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MoYm9vbCB2YWx1ZSkK
K3sKKyAgICBtX3Nob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MgPSB2YWx1ZTsKK30KKwogQ2FwdHVy
ZVNvdXJjZU9yRXJyb3IgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlZpZGVvRmFjdG9yeTo6Y3Jl
YXRlVmlkZW9DYXB0dXJlU291cmNlKGNvbnN0IENhcHR1cmVEZXZpY2UmIGRldmljZSwgU3RyaW5n
JiYgaGFzaFNhbHQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQogewogI2lm
ICFFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgaWYgKG1fc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2Vz
cykKICAgICAgICAgcmV0dXJuIENhcHR1cmVTb3VyY2VPckVycm9yIHsgIlZpZGVvIGNhcHR1cmUg
aW4gR1BVUHJvY2VzcyBpcyBub3QgaW1wbGVtZW50ZWQiX3MgfTsKICNlbmRpZgorICAgIGlmICht
X3Nob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MpCisgICAgICAgIG1fbWFuYWdlci5tX3JlbW90ZUNh
cHR1cmVTYW1wbGVNYW5hZ2VyLnNldFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkoJldl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkucmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSgpKTsKIAogICAgIGJvb2wgc2hvdWxkVXNlSU9TdXJm
YWNlID0gZmFsc2U7CiAgICAgcmV0dXJuIENhcHR1cmVTb3VyY2VPckVycm9yKFJlYWx0aW1lVmlk
ZW9Tb3VyY2U6OmNyZWF0ZShSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUoZGV2aWNl
LCBjb25zdHJhaW50cywgeyB9LCBXVEZNb3ZlKGhhc2hTYWx0KSwgbV9tYW5hZ2VyLCBtX3Nob3Vs
ZENhcHR1cmVJbkdQVVByb2Nlc3MpLCBzaG91bGRVc2VJT1N1cmZhY2UpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
LmgKaW5kZXggN2M1NGEyYTMwY2Q1ZWE3ZmRiZGI5ODYzM2JhODQwYWFlZWEwZGFlNS4uZjRhYjk0
MzlkYTg2MTI0ODFmZjRhYjVjMzBhM2ZmNjJjZTkxMTNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgKQEAg
LTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBjbGFzcyBWaWRlb0ZhY3RvcnkgOiBwdWJsaWMg
V2ViQ29yZTo6VmlkZW9DYXB0dXJlRmFjdG9yeSB7CiAgICAgcHVibGljOgogICAgICAgICBleHBs
aWNpdCBWaWRlb0ZhY3RvcnkoVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXImIG1hbmFnZXIpIDogbV9t
YW5hZ2VyKG1hbmFnZXIpIHsgfQotICAgICAgICB2b2lkIHNldFNob3VsZENhcHR1cmVJbkdQVVBy
b2Nlc3MoYm9vbCB2YWx1ZSkgeyBtX3Nob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MgPSB2YWx1ZTsg
fQorICAgICAgICB2b2lkIHNldFNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MoYm9vbCk7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICBXZWJDb3JlOjpDYXB0dXJlU291cmNlT3JFcnJvciBjcmVhdGVW
aWRlb0NhcHR1cmVTb3VyY2UoY29uc3QgV2ViQ29yZTo6Q2FwdHVyZURldmljZSYsIFN0cmluZyYm
IGhhc2hTYWx0LCBjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzKikgZmluYWw7CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjdhNjdhYTgz
MTM0MjU1YTJiMGFmNjNiYjQzY2YyMGFiN2Y2MWQ4MS4uYWM3ZDE2ZDJmMDliYWUzNTg5Y2EwMmYx
YzU0Y2EwNDZhMzAzOWVmOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTAyLTExICBLaW1tbyBLaW5udW5lbiAg
PGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEgUmVtb3RlTWVkaWFT
YW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVzIHVzZWQgaW4gTWVk
aWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vl
bm4gRmFibGV0LgorCisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwOgorCiAyMDIy
LTAyLTEwICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4OTUyNS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJn
bAppbmRleCAzMGY3ZmQ4MmIzMzFhMDZmNGM0ZTBjYjRlM2I4OWY3NWZmZTZiMTgxLi4zMzI1NzNj
OWRiMmEyZjA2MDE1ZGI5Y2RlNWJlMjI5Y2EzNDk1MDY4IDEwMDc1NQotLS0gYS9Ub29scy9TY3Jp
cHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVw
LXdlYmdsCkBAIC05NCw3ICs5NCwxMCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7ewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZv
aWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBT
eW5jaHJvbm91cyBOb3RTdHJlYW1FbmNvZGFibGVSZXBseQogI2VuZGlmCi0jaWYgIVBMQVRGT1JN
KENPQ09BKQorI2lmIFVTRShHUkFQSElDU19MQVlFUl9XQykKKyAgICB2b2lkIFByZXBhcmVGb3JE
aXNwbGF5KCkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpXQ0NvbnRlbnRCdWZmZXJJZGVudGlm
aWVyPiBjb250ZW50QnVmZmVyKSBTeW5jaHJvbm91cworI2VuZGlmCisjaWYgIVBMQVRGT1JNKENP
Q09BKSAmJiAhVVNFKEdSQVBISUNTX0xBWUVSX1dDKQogICAgIHZvaWQgUHJlcGFyZUZvckRpc3Bs
YXkoKSAtPiAoKSBTeW5jaHJvbm91cwogI2VuZGlmCiAgICAgdm9pZCBFbnN1cmVFeHRlbnNpb25F
bmFibGVkKFN0cmluZyBleHRlbnNpb24pCkBAIC0xMDQsNiArMTA3LDkgQEAgbWVzc2FnZXMgLT4g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0ge3sKICAgICB2b2lk
IFBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAgICB2b2lkIFBhaW50
Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBDb3B5VGV4dHVy
ZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWlu
dDMyX3QgdGV4dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBp
bnRlcm5hbEZvcm1hdCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11
bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICB2b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b01lZGlhU2FtcGxlKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlIHJlc3Vs
dCkKKyNlbmRpZgogICAgIHZvaWQgU2ltdWxhdGVFdmVudEZvclRlc3RpbmcoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0w6OlNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZyBldmVudCkKIHt9CiB9fQpA
QCAtMjMyLDcgKzIzOCw3IEBAIGRlZiBjcmVhdGVfY3BwX3R5cGVfY29udGFpbmVyKHR5cGVfbmFt
ZSA6IHN0cikgLT4gT3B0aW9uYWxbY3BwX3R5cGVfY29udGFpbmVyXToKICAgICAgICAgcmV0dXJu
IE5vbmUKICAgICBjb250YWluZXJfbmFtZSA9IG1bMV0KICAgICAjIEFsbCB0ZW1wbGF0ZXMgYXJl
IGNvbnRhaW5lcnMgZXhjZXB0IHRoZXNlIGJlbG93LgotICAgIGlmIGNvbnRhaW5lcl9uYW1lIGlu
IFsnUmVmUHRyJywgJ1JlZiddOgorICAgIGlmIGNvbnRhaW5lcl9uYW1lIGluIFsnUmVmUHRyJywg
J1JlZicsICdSZXRhaW5QdHInLCAnc3RkOjpvcHRpb25hbCddOgogICAgICAgICByZXR1cm4gTm9u
ZQogICAgIHRlbXBsYXRlcyA9IG1bMl0KICAgICBhcml0eSA9IE5vbmUKQEAgLTY0MCw3ICs2NDYs
MTMgQEAgY2xhc3Mgd2Via2l0X2lwY19jcHBfcHJveHlfaW1wbChvYmplY3QpOgogICAgICAgICAg
ICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbby50eXBlXQogICAgICAg
ICAgICAgICAgIGFzc2VydChpc2luc3RhbmNlKHdlYmtpdF9pcGNfdHlwZSwgY3BwX3R5cGVfY29u
dGFpbmVyKSkKICAgICAgICAgICAgICAgICB2ID0gY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGUsIG8u
bmFtZSArICJSZXBseSIpCi0gICAgICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBb
ZiJ7c3RyKHYudHlwZSl9IHtzdHIodi5uYW1lKX07Il0KKyAgICAgICAgICAgICAgICBpZiBvLnR5
cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYucHJlX2NhbGxf
c3RtdHMgKz0gW2Yie3N0cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9OyJdCisgICAgICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogTGlrZWx5IHRoaXMgY3JlYXRl
cyBhIGRhbmdsaW5nIHJlZmVyZW5jZSBzcGFuPGludCwgMj4gYVJlcGx5ID0geyB7IH0gfTsuCisg
ICAgICAgICAgICAgICAgICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNTg4OQorICAgICAgICAgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtm
IntzdHIodi50eXBlKX0ge3N0cih2Lm5hbWUpfSB7eyB7eyB9fSB9fTsiXQorCiAgICAgICAgICAg
ICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW2NwcF9leHByKHYudHlwZSwgdi5uYW1lKV0KICAgICAg
ICAgICAgICAgICBpZiBvLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6CiAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuaW5fZXhwcnMgKz0gW2NwcF9leHByKGdldF9jcHBfdHlwZSgic2l6ZV90IiksIGYi
e28ubmFtZX0uYnVmU2l6ZSIpXQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2FtcGxlTWFwLmNwcAppbmRleCBkMTQ2Y2VjNGYyZWM0Y2Y2OTEyZDdmMDQ4ZDI4ODE1N2Fk
ZmRjMWI4Li5jNDVjNjdhMzE2NmJmZmI5ODc3YmMwZDgzNGZlZjg0NGE0ODY2NTE5IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcApAQCAtNTcs
NyArNTcsNiBAQCBwdWJsaWM6CiAgICAgTWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2RlY29kZVRpbWU7IH0KICAgICBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2R1cmF0aW9uOyB9CiAgICAgQXRvbVN0cmluZyB0cmFja0lEKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV90cmFja0lEOyB9Ci0gICAgdm9pZCBzZXRUcmFja0lEKGNv
bnN0IFN0cmluZyYgdHJhY2tJRCkgZmluYWwgeyBtX3RyYWNrSUQgPSB0cmFja0lEOyB9CiAgICAg
c2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zaXplSW5CeXRlczsg
fQogICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9wcmVzZW50YXRpb25TaXplOyB9CiAgICAgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3Qg
TWVkaWFUaW1lJiBvZmZzZXQpIGZpbmFsIHsgbV9wcmVzZW50YXRpb25UaW1lICs9IG9mZnNldDsg
bV9kZWNvZGVUaW1lICs9IG9mZnNldDsgfQpAQCAtNzEsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBjcmVhdGUobV9wcmVzZW50YXRpb25UaW1lLCBtX2RlY29kZVRpbWUsIG1fZHVy
YXRpb24sIHN0YXRpY19jYXN0PFNhbXBsZUZsYWdzPihtX2ZsYWdzIHwgSXNOb25EaXNwbGF5aW5n
KSk7CiAgICAgfQogICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9mbGFnczsgfQotICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgZmluYWwgeyBy
ZXR1cm4geyBQbGF0Zm9ybVNhbXBsZTo6Tm9uZSwge251bGxwdHJ9fTsgfQorICAgIFBsYXRmb3Jt
U2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4geyBQbGF0Zm9ybVNh
bXBsZTo6Tm9uZSwgeyBudWxscHRyIH0gfTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdl
PiBieXRlUmFuZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0IGZpbmFsIHsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451673</attachid>
            <date>2022-02-11 03:58:44 -0800</date>
            <delta_ts>2022-02-11 07:30:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236356-20220211125839.patch</filename>
            <type>text/plain</type>
            <size>254767</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBmZDk0YzE1ZWNkMDQ5N2IzMWFkMzBkYmQ4MDI1YzJkYTZjYWIyYmNjLi4xYjUy
ZDk3ODJkM2I4NDVlMDU0YTJhMzYwNDBiN2E2MTcwNzU1NzgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMi0wMi0xMSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCByZW1vdGUgdmlkZW8g
ZnJhbWVzIGluIFdlYlJUQyB2aWRlbyBwaXBlbGluZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIGEgd2F5IGZvciBPYmpDRnJhbWVCdWZm
ZXIgdG8gbm90IGRpcmVjdGx5IG93biBhIENWUGl4ZWxCdWZmZXJSZWYgYnV0IGEgcG9pbnRlcgor
ICAgICAgICB0aGF0IGNhbiBiZSB1c2VkIHRvIGdldCBhIENWUGl4ZWxCdWZmZXJSZWYuIFRoaXMg
aXMgdXNlZCB0byBhbGxvdyByZW1vdGUgZnJhbWVzIHRvIGJlIHNlbnQgb3ZlciB0byBsaWJ3ZWJy
dGMuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cDoKKyAgICAg
ICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAgICAgICAgKiBDb25m
aWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nk
ay9XZWJLaXQvV2ViS2l0RGVjb2Rlci5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dl
YktpdC9XZWJLaXREZWNvZGVyLm1tOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXRVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VXRpbGl0aWVzLm1tOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0
aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2Rr
L29iamMvbmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5tbToKKwogMjAyMi0wMi0wMyAgTWlj
aGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQgcHJvamVj
dHMgaGF2ZSBpbmNvcnJlY3QgaW5zdGFsbCBuYW1lIGZvciB0aGUgZnJhbWV3b3JrcyBmb3IgQ2F0
YWx5c3QgYnVpbGRzIHdpdGggdGhlIHN5c3RlbSBjb250ZW50IHBhdGgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4
YjY1MTkwYTFhZTliM2UwNDZkMzQ4ZDA1MGZjNjMzNjMxNmI5MzZkLi43NGViYzBmM2MzZDAxNzlm
MTNmYzRmOTdhMGRlZmVhNjliNTk2YjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODAgQEAKKzIw
MjItMDItMTEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFN1
cHBvcnQgcmVtb3RlIHZpZGVvIGZyYW1lcyBpbiBXZWJSVEMgdmlkZW8gcGlwZWxpbmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjM1NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IHRvIHJlY2Vp
dmUvc2VuZCByZW1vdGUgZnJhbWVzIGFzIHdlYnJ0YyBWaWRlb0ZyYW1lIGJ1ZmZlcnMuCisgICAg
ICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9u
cy9XZWJDb3JlLnhjY29uZmlnOgorICAgICAgICAqIHBsYXRmb3JtL01lZGlhU2FtcGxlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vVmlk
ZW9GcmFtZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZUNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHA6CisKKzIw
MjItMDItMTEgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbnRyb2R1Y2UgYSBSZW1vdGVNZWRpYVNhbXBsZVByb3h5IHRvIHJlcHJlc2VudCBjYXB0dXJl
ZCB2aWRlbyBmcmFtZXMgdXNlZCBpbiBNZWRpYSBTdHJlYW1zIGFuZCBwcmVzZW50IGluIEdQVVAK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjA5OQor
CisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgQWRkIFZpZGVv
RnJhbWUgOiBwdWJsaWMgTWVkaWFTdHJlYW0sIGJhc2UgY2xhc3MgZm9yIE1lZGlhIFN0cmVhbSB2
aWRlbyBmcmFtZXMuCisgICAgICAgIEN1cnJlbnRseSBpbmhlcml0cyBmcm9tIE1lZGlhU2FtcGxl
LCBidXQgbGF0ZXIgd2lsbCByZW1vdmUgdGhlIE1lZGlhU2FtcGxlLgorCisgICAgICAgIFRoZSBX
ZWJDb3JlOjpWaWRlb0ZyYW1lIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gdmFyaW91cyBlbnRy
eS1wb2ludHMgdGhhdAorICAgICAgICBjdXJyZW50bHkgYXJlIGN1cnJlbnRseSB0eXBlZCBhczoK
KyAgICAgICAgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZpZGVv
U2FtcGxlTWV0YWRhdGEsIC4uLikuCisgICAgICAgIFRoZSBuZXcgY2xhc3MgV2ViS2l0OjpSZW1v
dGVWaWRlb0ZyYW1lUHJveHkgOiBwdWJsaWMgVmlkZW9GcmFtZSBjYW4gYmUgcGFzc2VkIHRvIHRo
ZXNlIEFQSXMuCisgICAgICAgIFRoZSBBUEkgZW50cnlwb2ludHMgYXJlIG5vdCB5ZXQgY2hhbmdl
ZCBpbiBvcmRlciB0byBwYXJ0aWFsbHkgcm9sbCB0aGUgY2hhbmdlcyBpbi4KKyAgICAgICAgTGF0
ZXIgb24sIHRoZSBlbnRyeXBvaW50cyB3aWxsIGJlIHNpbWlsYXIgdG86CisgICAgICAgICAgIHZv
aWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoVmlkZW9GcmFtZSYsIFZpZGVvU2FtcGxlTWV0YWRhdGEs
IC4uLikuCisKKyAgICAgICAgUmVtb3ZlcyBNZWRpYVNhbXBsZTo6c2V0VHJhY2tJRCBhcyB0aGF0
IGlzIG5vdCB1c2VkLgorICAgICAgICBDaGFuZ2VzIE1lZGlhU2FtcGxlOjpwbGF0Zm9ybVNhbXBs
ZSgpIHRvIGNvbnN0LCBzbyB0aGF0IGl0IGNhbiBiZSBjYWxsZWQgZnJvbQorICAgICAgICBjb25z
dCBjb250ZXh0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0b3IuCisKKyAgICAgICAg
KiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9NZWRpYVNh
bXBsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmRlY29kZVRpbWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9GcmFtZTo6ZHVyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9GcmFtZTo6dHJhY2tJRCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjpz
aXplSW5CeXRlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjpwcmVzZW50
YXRpb25TaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6Om9mZnNldFRp
bWVzdGFtcHNCeSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjpzZXRUaW1lc3RhbXBz
KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmlzRGl2aXNhYmxlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmRpdmlkZSk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb0ZyYW1lOjpjcmVhdGVOb25EaXNwbGF5aW5nQ29weSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb0ZyYW1lOjpmbGFncyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Zy
YW1lOjpieXRlUmFuZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6ZHVt
cCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vVmlkZW9GcmFtZS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjplbnF1ZXVlU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaDoKKyAgICAgICAgKGlz
VHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTYW1wbGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpD
OjpwbGF0Zm9ybVNhbXBsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2FtcGxlR1N0cmVhbWVyOjpwbGF0Zm9ybVNhbXBsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTYW1wbGU6OnBsYXRmb3JtU2FtcGxlIGNvbnN0KToK
KwogMjAyMi0wMi0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIHN1cHBvcnQgdG8gcXVlcnkgY2FtZXJhIGFuZCBtaWNyb3Bob25lIHBlcm1pc3Npb25z
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDEzNWI5NjI3ZTg5ZTNjMjJhOGZkMGNjYTMxNjRiODllMWI5OTllNTIuLmE3
NWY0MTc0NDVjYjM2Y2JmNzA0ZGNmODE1ZWI0ZmZkMDJjMTUzZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjM5IEBACisyMDIyLTAyLTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
KworICAgICAgICBTdXBwb3J0IHJlbW90ZSB2aWRlbyBmcmFtZXMgaW4gV2ViUlRDIHZpZGVvIHBp
cGVsaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzYzNTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
bGxvdyByZWNlaXZpbmcgcmVtb3RlIHNhbXBsZXMgZnJvbSBjYW1lcmEgb3IgSFcgZGVjb2RlcnMu
CisgICAgICAgIEluIHRoYXQgY2FzZSwgd2UgY3JlYXRlIHJlbW90ZSB2aWRlbyBmcmFtZXMgYW5k
IGFsbG93IHBpcGluZyB0aGVtIHRvIG91ciBleGlzdGluZyBwaXBlbGluZS4KKyAgICAgICAgV2Ug
dXBkYXRlIE1lZGlhUmVjb3JkZXIgYW5kIExpYldlYlJUQyBIVyBlbmNvZGVycyB0byBkZWFsIHdp
dGggdGhpcy4KKyAgICAgICAgU2luY2Ugd2UgaGF2ZSBhIGNvZGUgcGF0aCB0aGF0IHJlcXVpcmVz
IGdldHRpbmcgYWNjZXNzIHRvIHRoZSByYXcgcGl4ZWxzLCB3ZSBpbnRyb2R1Y2UgUmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXBQcm94eQorICAgICAgICB0byBhbGxvdyBnZXR0aW5nIHRoYXQgZGF0
YSB0aHJvdWdoIHNoYXJlZCBtZW1vcnkgYXN5bmNocm9ub3VzbHkuCisgICAgICAgIFJlbW90ZVZp
ZGVvRnJhbWVQcm94eSB3aWxsIHRoZW4gdXNlIGEgc2VtYXBob3JlIHRvIGJsb2NrIG9uIHRoZSBh
c3luYyBJUEMgcmVzdWx0LiAKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW06
CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oOgorICAgICAg
ICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW46Cisg
ICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvVGhyZWFkU2FmZU9iamVjdEhlYXAuaDoKKyAgICAgICAg
KiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5
SWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGli
V2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFS
ZWNvcmRlclByaXZhdGUuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5LmNwcDogQWRkZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuaDogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
Y29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaDoKKworMjAyMi0w
Mi0xMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIElu
dHJvZHVjZSBhIFJlbW90ZU1lZGlhU2FtcGxlUHJveHkgdG8gcmVwcmVzZW50IGNhcHR1cmVkIHZp
ZGVvIGZyYW1lcyB1c2VkIGluIE1lZGlhIFN0cmVhbXMgYW5kIHByZXNlbnQgaW4gR1BVUAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MDk5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBXZWJDb250ZW50IHBy
b2Nlc3M6CisgICAgICAgIEFkZCBXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eSwgV2ViQ29u
dGVudCBwcm9jZXNzIHNpZGUgcHJveHkgb2JqZWN0IHRoYXQKKyAgICAgICAgV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIGNhbiB1c2UuCisKKyAgICAgICAgUmVt
b3RlVmlkZW9GcmFtZVByb3h5IGNhbiBiZSBzZW50IHRvIHRoZSBHUFVQIGFuZCB0aGUgdGhlIFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci4gU28KKyAgICAgICAgdGhlIGNhcHR1cmVkIGNvbnRlbnQg
c2hvd3MgaW4gY29tcG9zaXRpbmcgdGhyb3VnaCB2aWRlbyBlbGVtZW50LgorCisgICAgICAgIEF0
IHRoZSBtb21lbnQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIGNhbm5vdCBw
YWludCBSZW1vdGVWaWRlb0ZyYW1lUHJveHkgdG8gdGhlCisgICAgICAgIGRvY3VtZW50IENTUyBw
YWludGVkIGNvbnRlbnQsIENvbnRleHQyRCBvciBXZWJHTCBjYW52YXMuCisKKyAgICAgICAgR1BV
UDoKKyAgICAgICAgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAgaXMgYSBtYXBwaW5nCisgICAg
ICAgIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIC0+IE1lZGlhU2FtcGxlLiBDdXJyZW50bHkg
YWxsIG9iamVjdHMKKyAgICAgICAgbWFwIHRvIG5vcm1hbCBNZWRpYVNhbXBsZUFWRk9iakMuCisK
KyAgICAgICAgQWRkIGFuIGV4YW1wbGUgaW1wbGVtZW50YXRpb24gd2hlcmUgYSByZW1vdGUgTWVk
aWFTYW1wbGUgaXMgcmV0dXJuZWQgYnkgSVBDOgorICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKS4KKworICAgICAgICBU
aGUgR1BVUCBvYmplY3QgcG9pbnRlZCBieSBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBpczoK
KyAgICAgICAgLSBjcmVhdGVkIGluIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBv
c2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGluIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIHRo
cmVhZAorICAgICAgICAtIGNvbnN1bWVkIGluIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6ZW5xdWV1ZVNhbXBsZSBpbiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2Vy
IHRocmVhZAorICAgICAgICAtIHJlbGVhc2VkIGluIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
OjpyZWxlYXNlVmlkZW9GcmFtZSBpbiBHUFVQIG1haW4gdGhyZWFkCisgICAgICAgIEFsbCBvZiB0
aGVzZSBtZXNzYWdlcyBhcmUgYXN5bmNocm9ub3VzIGFuZCBjYW4gYXJyaXZlIHRvIHRoZWlyIGRl
c3RpbmF0aW9uIGluIGFueSBvcmRlci4KKyAgICAgICAgRm9yIGV4YW1wbGUsIHJlcXVlc3QgdG8g
cmVsZWFzZSB0aGUgdmlkZW8gZnJhbWUgY2FuIGhhcHBlbiBiZWZvcmUgdGhlIG1lc3NhZ2UgdG8g
Y3JlYXRlIHRoZSB2aWRlbyBmcmFtZSBoYXMgYmVlbgorICAgICAgICByZWNlaXZlZC4KKworICAg
ICAgICBUbyBzb2x2ZSB0aGUgb3JkZXJpbmcgaXNzdWUsIGludHJvZHVjZSByZWFkZXJzLXdyaXRl
cnMgcmVmZXJlbmNlIGNvdW50aW5nIG1ldGhvZCB2aWEgZm9sbG93aW5nIGNsYXNzZXM6CisgICAg
ICAgICAtIE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlCisgICAgICAgICAtIE9iamVjdElk
ZW50aWZpZXJXcml0ZVJlZmVyZW5jZQorICAgICAgICAgLSBPYmplY3RJZGVudGlmaWVyUmVmZXJl
bmNlVHJhY2tlcgorCisgICAgICAgIE9iamVjdElkZW50aWZpZXIgaWRlbnRpZmllcyB0aGUgb2Jq
ZWN0LgorICAgICAgICBPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UgaWRlbnRpZmllcyBh
IG5ldyB2ZXJzaW9uIG9mIHRoZSBjb250ZW50IHBvaW50ZWQgYnkgdGhlIGlkZW50aWZpZXIuCisg
ICAgICAgIFBzZXVkb2NvZGUgZXhhbXBsZXM6CisgICAgICAgICAgV3JpdGVSZWZlcmVuY2UgeyBp
ZGVudGlmaWVyID0gMSwgcGVuZGluZ1JlYWRzID0gMCwgdmVyc2lvbiA9IDAgfSBtZWFuczoKKyAg
ICAgICAgICAgICJFbmQgdGhlIGxpZmUtdGltZSBvZiBpZGVudGlmaWVyIDEsIHZlcnNpb24gMC4g
Q3JlYXRlIHZlcnNpb24gPSAxIgorICAgICAgICAgICAgVGhpcyBpcyBob3cgaW5pdGlhbCBvYmpl
Y3QgaXMgYXNzaWduZWQgdG8gdGhlIHJlZmVyZW5jZS4KKyAgICAgICAgICBXcml0ZVJlZmVyZW5j
ZSB7IGlkZW50aWZpZXIgPSAxLCBwZW5kaW5nUmVhZHMgPSA3NywgdmVyc2lvbiA9IDMyIH0gbWVh
bnMKKyAgICAgICAgICAgICJFbmQgdGhlIGxpZmUtdGltZSBvZiBpZGVudGlmaWVyIDEsIHZlcnNp
b24gMzIgd2hlbiBhbGwgNzcgcmVhZHMgaGF2ZSBjb21wbGV0ZWQuIENyZWF0ZSB2ZXJzaW9uID0g
MzMiCisKKyAgICAgICAgT2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UgZGVjbGFyZXMgYSBy
ZWFkIGRlcGVuZGVuY3kgdG8gYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBjb250ZW50IHBvaW50
ZWQgYnkgdGhlIGlkZW50aWZpZXIuCisgICAgICAgIFBzZXVkb2NvZGUgZXhhbXBsZXM6CisgICAg
ICAgICAgIFJlYWRSZWZlcmVuY2UgeyBpZGVudGlmaWVyID0gMSwgdmVyc2lvbiA9IDMyIH0gbWVh
bnMKKyAgICAgICAgICAgIkNvbXBsZXRlIG9uZSByZWFkIG9mIGlkZW50aWZpZXIgMSwgdmVyc2lv
biAzMiIuCisKKyAgICAgICAgQ3JlYXRlcywgdXBkYXRlcyBhbmQgZGVzdHJ1Y3Rpb25zIGFyZSBX
cml0ZVJlZmVyZW5jZXMuCisgICAgICAgIFJlYWRzIGFyZSBSZWFkUmVmZXJlbmNlcy4KKworICAg
ICAgICBUaGUgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIgY3JlYXRlcyB3cml0ZSBh
bmQgcmVhZCByZWZlcmVuY2VzIGluIHRoZSBQcm94eSAtdXNpbmcgcHJvY2VzcyAoV2ViQ29udGVu
dCBwcm9jZXNzKS4KKworICAgICAgICBUaGUgYWRkZWQgVGhyZWFkU2FmZU9iamVjdEhlYXAgcmVz
b2x2ZXMgdGhlIHJlYWQgYW5kIHdyaXRlIHJlZmVyZW5jZXMgaW4gdGhlIHJlYWwgb2JqZWN0IHBy
b2Nlc3MgKEdQVVAgaW4gdGhpcyBjYXNlKS4KKyAgICAgICAgUmVhZHMgYW5kIHdyaXRlcyBhcmUg
YmxvY2tpbmcgdGhlIHJlcXVlc3RpbmcgdGhyZWFkIGFwcHJvcHJpYXRlbHk6CisgICAgICAgICAt
IFJlYWQgb2YgdW5rbm93biB2ZXJzaW9uIG9mIHRoZSBpZGVudGlmaWVyIGJsb2NrcyB1bnRpbCB0
aGUgd3JpdGUgY3JlYXRlcyB0aGUgdmVyc2lvbgorICAgICAgICAgLSBXcml0ZSBvZiBuZXcgdmVy
c2lvbiBvZiB0aGUgaWRlbnRpZmllciBibG9ja3MgdW50aWwgdGhlIHJlYWRzIGhhdmUgcmV0aXJl
ZCwgb3IgY3JlYXRlcyBwYXJhbGxlbCwgbmV3IHZlcnNpb24KKyAgICAgICAgICAgb2YgdGhlIGNv
bnRlbnQgaW4gY2FzZSBvZiBjb3B5LW9uLXdyaXRlIHNjaGVtZXMuCisKKyAgICAgICAgSW4gdGhp
cyBjb21taXQgb2JqZWN0cyBwb2ludGVkIGJ5IFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGFy
ZSBpbW11dGFibGUgdW50aWwgZGVzdHJveWVkLCBzbyB0aGVyZSBpcyBubyB1cGRhdGUgb3IKKyAg
ICAgICAgY29weS1vbi13cml0ZSBzY2hlbWUgaGVyZS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjp2aWRlb0ZyYW1lT2JqZWN0SGVhcCBjb25zdCk6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9NZWRpYVNhbXBsZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6On5SZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwOjpzdG9wTGlzdGVuaW5nRm9ySVBDKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXA6OmFkZFZpZGVvRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcDo6cmVsZWFzZVZpZGVvRnJhbWUpOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaDogQWRkZWQuCisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5tZXNzYWdlcy5p
bjogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4uCisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6ZW5xdWV1ZVNhbXBsZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZUNWKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW46Cisg
ICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXI6OmNyZWF0ZUxheWVyKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weToKKyAgICAgICAgKHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQp
OgorICAgICAgICAoaGVhZGVyc19mb3JfdHlwZSk6CisgICAgICAgICogU2hhcmVkL0lQQ1Rlc3Rl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3Rlcjo6c3RhcnRNZXNzYWdlVGVzdGluZyk6
CisgICAgICAgIChXZWJLaXQ6OmlzVGVzdGluZ0lQQyk6CisgICAgICAgICogU2hhcmVkL0lQQ1Rl
c3Rlci5oOgorICAgICAgICAoV2ViS2l0Ojppc1Rlc3RpbmdJUEMpOgorICAgICAgICAqIFNoYXJl
ZC9PYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5j
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U6OmlkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlOjp2
ZXJzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5j
ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJS
ZWZlcmVuY2U6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2U6Ok9iamVjdElkZW50aWZpZXJSZWFkUmVm
ZXJlbmNlKToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2U6
OmlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVh
ZFJlZmVyZW5jZTo6dmVyc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50
aWZpZXJSZWFkUmVmZXJlbmNlOjpyZWZlcmVuY2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpP
YmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2U6OmRlY29kZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTo6T2JqZWN0SWRlbnRpZmllcldy
aXRlUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVm
ZXJlbmNlOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRp
ZmllcldyaXRlUmVmZXJlbmNlOjp2ZXJzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2Jq
ZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlOjpwZW5kaW5nUmVhZHMgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U6OnJlZmVyZW5jZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTo6cmV0
aXJlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJl
bmNlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyV3Jp
dGVSZWZlcmVuY2U6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJS
ZWZlcmVuY2VUcmFja2VyOjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcik6CisgICAg
ICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyOjpyZWFkIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXI6Ondy
aXRlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRy
YWNrZXI6OmlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjphZGQpOgorICAgICAg
ICAoV2ViS2l0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFdURjo6RGVmYXVsdEhhc2g8V2ViS2l0
OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+Pjo6aGFzaCk6CisgICAgICAgIChXVEY6OkRl
ZmF1bHRIYXNoPFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPj46OmVxdWFsKToK
KyAgICAgICAgKiBTaGFyZWQvVGhyZWFkU2FmZU9iamVjdEhlYXAuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlRocmVhZFNhZmVPYmplY3RIZWFwOjpSZWZlcmVuY2VTdGF0ZTo6UmVmZXJlbmNl
U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpIZWxkVHlwZT46OnJldGlyZSk6CisgICAgICAgIChX
ZWJLaXQ6OkhlbGRUeXBlPjo6cmV0aXJlUmVtb3ZlKToKKyAgICAgICAgKFdlYktpdDo6SGVsZFR5
cGU+OjpjbGVhcik6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRp
YVNhbXBsZUJ5dGVSYW5nZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU2FtcGxlQnl0ZVJh
bmdlOjpwbGF0Zm9ybVNhbXBsZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZv
cm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oOgorICAgICAgICAqIFNvdXJjZXMudHh0
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRDb21wb3Np
dGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW06
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZp
ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmguCisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpwcm9wZXJ0aWVzKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6On5SZW1vdGVWaWRlb0Zy
YW1lUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmlkZW50
aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Ondy
aXRlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpyZWFk
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpwcmVzZW50
YXRpb25UaW1lIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5
OjpwbGF0Zm9ybVNhbXBsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJh
bWVQcm94eTo6dmlkZW9Sb3RhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6dmlkZW9NaXJyb3JlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9QaXhlbEZvcm1hdCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9GcmFtZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6ZGlzY29ubmVjdEdQVVByb2Nlc3NJZk5l
ZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6d2Fp
dEZvcldhc0luaXRpYWxpemVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9G
cmFtZVByb3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp3YXNJbml0aWFsaXplZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM6OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllczo6
ZGVjb2RlKToKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJy
dGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpOgorICAgICAgICAo
V2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6On5TYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVT
YW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmdwdVBy
b2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OmRpc2Nvbm5lY3RHUFVQcm9jZXNzQ29ubmVjdGlvbklmTmVlZGVkKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg6
CisKIDIwMjItMDItMTEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBzdXBwb3J0IHRvIHF1ZXJ5IGNhbWVyYSBhbmQgbWljcm9waG9uZSBwZXJtaXNzaW9u
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25z
L2xpYndlYnJ0Yy5pT1MuZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3Vy
YXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCmluZGV4IGNhNTQ3M2E2MmFkOThiZjZiNGUwY2ViNjAy
ODg1NjQ1ZDkwZjdkMjMuLmJiYmMwNTgyN2NmNzRhOTNhMDAyZTUwNzQ3ODIxMTBmY2Y1Y2RkZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9s
aWJ3ZWJydGMuaU9TLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmln
dXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAKQEAgLTIyMyw4ICsyMjMsMTEgQEAgX19aTjZ3ZWJy
dGMyMmNyZWF0ZUxvY2FsSDI2NURlY29kZXJFVTEzYmxvY2tfcG9pbnRlckZ2UDEwX19DVkJ1ZmZl
cmpqRQogX19aTjZ3ZWJydGMyMWNyZWF0ZUxvY2FsVlA5RGVjb2RlckVVMTNibG9ja19wb2ludGVy
RnZQMTBfX0NWQnVmZmVyampFCiBfX1pONndlYnJ0YzE5cmVsZWFzZUxvY2FsRGVjb2RlckVQdgog
X19aTjZ3ZWJydGMxMWRlY29kZUZyYW1lRVB2alBLaG0KLV9fWk42d2VicnRjMjR2aWRlb0RlY29k
ZXJUYXNrQ29tcGxldGVFUHZqUDEwX19DVkJ1ZmZlcmoKK19fWk42d2VicnRjMjR2aWRlb0RlY29k
ZXJUYXNrQ29tcGxldGVFUHZqalAxMF9fQ1ZCdWZmZXIKK19fWk42d2VicnRjMjR2aWRlb0RlY29k
ZXJUYXNrQ29tcGxldGVFUHZqalMwX1BGUDEwX19DVkJ1ZmZlclMwX0VQRnZTMF9FaWkKIF9fWk42
d2VicnRjMjRzZXRWaWRlb0RlY29kZXJDYWxsYmFja3NFUEZQdlJLTlNfMTRTZHBWaWRlb0Zvcm1h
dEVFUEZpUzBfRVBGaVMwX2pQS2htdHRFUEZpUzBfUzBfRQorX19aTjZ3ZWJydGMyNHRvV2ViUlRD
VmlkZW9GcmFtZUJ1ZmZlckVQdlBGUDEwX19DVkJ1ZmZlclMwX0VQRnZTMF9FaWkKK19fWk42d2Vi
cnRjMjR2aWRlb0ZyYW1lQnVmZmVyUHJvdmlkZXJFUktOU18xMFZpZGVvRnJhbWVFCiBfX1pONndl
YnJ0YzE5c2V0RGVjb2RlckZyYW1lU2l6ZUVQdnR0CiBfX1pONndlYnJ0YzE4UnRwQ29kZWNDYXBh
YmlsaXR5QzFFdgogX19aTjZ3ZWJydGMyNGVuY29kZXJWaWRlb1Rhc2tDb21wbGV0ZUVQdk5TXzE0
VmlkZW9Db2RlY1R5cGVFUEtobVJLTlNfMjJXZWJLaXRFbmNvZGVkRnJhbWVJbmZvRQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0
Yy5pT1NzaW0uZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25z
L2xpYndlYnJ0Yy5pT1NzaW0uZXhwCmluZGV4IGNhNTQ3M2E2MmFkOThiZjZiNGUwY2ViNjAyODg1
NjQ1ZDkwZjdkMjMuLmJiYmMwNTgyN2NmNzRhOTNhMDAyZTUwNzQ3ODIxMTBmY2Y1Y2RkZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3
ZWJydGMuaU9Tc2ltLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmln
dXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKQEAgLTIyMyw4ICsyMjMsMTEgQEAgX19aTjZ3
ZWJydGMyMmNyZWF0ZUxvY2FsSDI2NURlY29kZXJFVTEzYmxvY2tfcG9pbnRlckZ2UDEwX19DVkJ1
ZmZlcmpqRQogX19aTjZ3ZWJydGMyMWNyZWF0ZUxvY2FsVlA5RGVjb2RlckVVMTNibG9ja19wb2lu
dGVyRnZQMTBfX0NWQnVmZmVyampFCiBfX1pONndlYnJ0YzE5cmVsZWFzZUxvY2FsRGVjb2RlckVQ
dgogX19aTjZ3ZWJydGMxMWRlY29kZUZyYW1lRVB2alBLaG0KLV9fWk42d2VicnRjMjR2aWRlb0Rl
Y29kZXJUYXNrQ29tcGxldGVFUHZqUDEwX19DVkJ1ZmZlcmoKK19fWk42d2VicnRjMjR2aWRlb0Rl
Y29kZXJUYXNrQ29tcGxldGVFUHZqalAxMF9fQ1ZCdWZmZXIKK19fWk42d2VicnRjMjR2aWRlb0Rl
Y29kZXJUYXNrQ29tcGxldGVFUHZqalMwX1BGUDEwX19DVkJ1ZmZlclMwX0VQRnZTMF9FaWkKIF9f
Wk42d2VicnRjMjRzZXRWaWRlb0RlY29kZXJDYWxsYmFja3NFUEZQdlJLTlNfMTRTZHBWaWRlb0Zv
cm1hdEVFUEZpUzBfRVBGaVMwX2pQS2htdHRFUEZpUzBfUzBfRQorX19aTjZ3ZWJydGMyNHRvV2Vi
UlRDVmlkZW9GcmFtZUJ1ZmZlckVQdlBGUDEwX19DVkJ1ZmZlclMwX0VQRnZTMF9FaWkKK19fWk42
d2VicnRjMjR2aWRlb0ZyYW1lQnVmZmVyUHJvdmlkZXJFUktOU18xMFZpZGVvRnJhbWVFCiBfX1pO
NndlYnJ0YzE5c2V0RGVjb2RlckZyYW1lU2l6ZUVQdnR0CiBfX1pONndlYnJ0YzE4UnRwQ29kZWND
YXBhYmlsaXR5QzFFdgogX19aTjZ3ZWJydGMyNGVuY29kZXJWaWRlb1Rhc2tDb21wbGV0ZUVQdk5T
XzE0VmlkZW9Db2RlY1R5cGVFUEtobVJLTlNfMjJXZWJLaXRFbmNvZGVkRnJhbWVJbmZvRQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndl
YnJ0Yy5tYWMuZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25z
L2xpYndlYnJ0Yy5tYWMuZXhwCmluZGV4IGNhNTQ3M2E2MmFkOThiZjZiNGUwY2ViNjAyODg1NjQ1
ZDkwZjdkMjMuLjJhNTdkY2E1YWYzOGVkZjNlM2EwZTlhNGVmZWY2NGM4YTYzZTllNmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJy
dGMubWFjLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlv
bnMvbGlid2VicnRjLm1hYy5leHAKQEAgLTIyMyw3ICsyMjMsMTAgQEAgX19aTjZ3ZWJydGMyMmNy
ZWF0ZUxvY2FsSDI2NURlY29kZXJFVTEzYmxvY2tfcG9pbnRlckZ2UDEwX19DVkJ1ZmZlcmpqRQog
X19aTjZ3ZWJydGMyMWNyZWF0ZUxvY2FsVlA5RGVjb2RlckVVMTNibG9ja19wb2ludGVyRnZQMTBf
X0NWQnVmZmVyampFCiBfX1pONndlYnJ0YzE5cmVsZWFzZUxvY2FsRGVjb2RlckVQdgogX19aTjZ3
ZWJydGMxMWRlY29kZUZyYW1lRVB2alBLaG0KLV9fWk42d2VicnRjMjR2aWRlb0RlY29kZXJUYXNr
Q29tcGxldGVFUHZqUDEwX19DVkJ1ZmZlcmoKK19fWk42d2VicnRjMjR2aWRlb0RlY29kZXJUYXNr
Q29tcGxldGVFUHZqalAxMF9fQ1ZCdWZmZXIKK19fWk42d2VicnRjMjR2aWRlb0RlY29kZXJUYXNr
Q29tcGxldGVFUHZqalMwX1BGUDEwX19DVkJ1ZmZlclMwX0VQRnZTMF9FaWkKK19fWk42d2VicnRj
MjR0b1dlYlJUQ1ZpZGVvRnJhbWVCdWZmZXJFUHZQRlAxMF9fQ1ZCdWZmZXJTMF9FUEZ2UzBfRWlp
CitfX1pONndlYnJ0YzI0dmlkZW9GcmFtZUJ1ZmZlclByb3ZpZGVyRVJLTlNfMTBWaWRlb0ZyYW1l
RQogX19aTjZ3ZWJydGMyNHNldFZpZGVvRGVjb2RlckNhbGxiYWNrc0VQRlB2UktOU18xNFNkcFZp
ZGVvRm9ybWF0RUVQRmlTMF9FUEZpUzBfalBLaG10dEVQRmlTMF9TMF9FCiBfX1pONndlYnJ0YzE5
c2V0RGVjb2RlckZyYW1lU2l6ZUVQdnR0CiBfX1pONndlYnJ0YzE4UnRwQ29kZWNDYXBhYmlsaXR5
QzFFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL1dlYktpdC9XZWJLaXREZWNvZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXIuaAppbmRleCBiODIzZWQz
MmNiMzNmYjNhNjc0YjQyOTg0MDhjMmFiOGY1Y2IwNmFkLi5lYzczMmY1Y2NiYjRkNWE4Zjg5NjU2
NzM4NWI1MWM3MTg2YjU3OWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXIuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29k
ZXIuaApAQCAtNTQsNyArNTQsOCBAQCB1c2luZyBWaWRlb0RlY29kZXJSZWdpc3RlckRlY29kZUNv
bXBsZXRlQ2FsbGJhY2sgPSBpbnQzMl90KCopKFdlYktpdFZpZGVvRGVjb2Rlcgogdm9pZCBzZXRW
aWRlb0RlY29kZXJDYWxsYmFja3MoVmlkZW9EZWNvZGVyQ3JlYXRlQ2FsbGJhY2ssIFZpZGVvRGVj
b2RlclJlbGVhc2VDYWxsYmFjaywgVmlkZW9EZWNvZGVyRGVjb2RlQ2FsbGJhY2ssIFZpZGVvRGVj
b2RlclJlZ2lzdGVyRGVjb2RlQ29tcGxldGVDYWxsYmFjayk7CiAKIHN0ZDo6dW5pcXVlX3B0cjx3
ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IGNyZWF0ZVdlYktpdERlY29kZXJGYWN0b3J5KFdl
YktpdEgyNjUsIFdlYktpdFZQOSwgV2ViS2l0VlA5VlRCKTsKLXZvaWQgdmlkZW9EZWNvZGVyVGFz
a0NvbXBsZXRlKHZvaWQqIGNhbGxiYWNrLCB1aW50MzJfdCB0aW1lU3RhbXAsIENWUGl4ZWxCdWZm
ZXJSZWYsIHVpbnQzMl90IHRpbWVTdGFtcFJUUCk7Cit2b2lkIHZpZGVvRGVjb2RlclRhc2tDb21w
bGV0ZSh2b2lkKiBjYWxsYmFjaywgdWludDMyX3QgdGltZVN0YW1wLCB1aW50MzJfdCB0aW1lU3Rh
bXBSVFAsIENWUGl4ZWxCdWZmZXJSZWYpOwordm9pZCB2aWRlb0RlY29kZXJUYXNrQ29tcGxldGUo
dm9pZCogY2FsbGJhY2ssIHVpbnQzMl90IHRpbWVTdGFtcCwgdWludDMyX3QgdGltZVN0YW1wUlRQ
LCB2b2lkKiwgR2V0QnVmZmVyQ2FsbGJhY2ssIFJlbGVhc2VCdWZmZXJDYWxsYmFjaywgaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KTsKIAogdXNpbmcgTG9jYWxEZWNvZGVyID0gdm9pZCo7CiB1c2luZyBM
b2NhbERlY29kZXJDYWxsYmFjayA9IHZvaWQgKF4pKENWUGl4ZWxCdWZmZXJSZWYsIHVpbnQzMl90
IHRpbWVTdGFtcCwgdWludDMyX3QgdGltZVN0YW1wTnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXREZWNvZGVy
Lm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXREZWNvZGVyLm1tCmluZGV4IGFhNDE4ODQ4NmQxYWJjNzAxOTY0NWE4YjU4ZDlmNzNh
NTA0NmVjNTEuLmI3ZTA2N2YwYzlmNDVjM2E2M2UzNDY5OTlkOWYxMGMzMDljN2Q1NjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJL
aXQvV2ViS2l0RGVjb2Rlci5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXIubW0KQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbXBvcnQgInNkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVy
SDI2NC5oIgogI2ltcG9ydCAic2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRl
b0RlY29kZXJIMjY1LmgiCiAjaW1wb3J0ICJzZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVj
L1JUQ1ZpZGVvRGVjb2RlclZUQlZQOS5oIgorI2ltcG9ydCAic2RrL29iamMvbmF0aXZlL3NyYy9v
YmpjX2ZyYW1lX2J1ZmZlci5oIgogCiBAaW50ZXJmYWNlIFdLX1JUQ0xvY2FsVmlkZW9IMjY0SDI2
NVZQOURlY29kZXIgOiBOU09iamVjdAogLSAoaW5zdGFuY2V0eXBlKWluaXRIMjY0RGVjb2Rlcldp
dGhDYWxsYmFjazood2VicnRjOjpMb2NhbERlY29kZXJDYWxsYmFjayljYWxsYmFjazsKQEAgLTE3
Myw3ICsxNzQsNyBAQCBSZW1vdGVWaWRlb0RlY29kZXI6On5SZW1vdGVWaWRlb0RlY29kZXIoKQog
ICAgIHZpZGVvRGVjb2RlckNhbGxiYWNrcygpLnJlbGVhc2VDYWxsYmFjayhtX2ludGVybmFsRGVj
b2Rlcik7CiB9CiAKLXZvaWQgdmlkZW9EZWNvZGVyVGFza0NvbXBsZXRlKHZvaWQqIGNhbGxiYWNr
LCB1aW50MzJfdCB0aW1lU3RhbXAsIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIHVpbnQz
Ml90IHRpbWVTdGFtcFJUUCkKK3ZvaWQgdmlkZW9EZWNvZGVyVGFza0NvbXBsZXRlKHZvaWQqIGNh
bGxiYWNrLCB1aW50MzJfdCB0aW1lU3RhbXAsIHVpbnQzMl90IHRpbWVTdGFtcFJUUCwgQ1ZQaXhl
bEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcikKIHsKICAgICBhdXRvIHZpZGVvRnJhbWUgPSBWaWRlb0Zy
YW1lOjpCdWlsZGVyKCkuc2V0X3ZpZGVvX2ZyYW1lX2J1ZmZlcihwaXhlbEJ1ZmZlclRvRnJhbWUo
cGl4ZWxCdWZmZXIpKQogICAgICAgICAuc2V0X3RpbWVzdGFtcF9ydHAodGltZVN0YW1wUlRQKQpA
QCAtMTg1LDYgKzE4NiwxOCBAQCB2b2lkIHZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZSh2b2lkKiBj
YWxsYmFjaywgdWludDMyX3QgdGltZVN0YW1wLCBDVlBpeGVsQnVmZmVyUgogICAgIHN0YXRpY19j
YXN0PERlY29kZWRJbWFnZUNhbGxiYWNrKj4oY2FsbGJhY2spLT5EZWNvZGVkKHZpZGVvRnJhbWUp
OwogfQogCit2b2lkIHZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZSh2b2lkKiBjYWxsYmFjaywgdWlu
dDMyX3QgdGltZVN0YW1wLCB1aW50MzJfdCB0aW1lU3RhbXBSVFAsIHZvaWQqIHBvaW50ZXIsIEdl
dEJ1ZmZlckNhbGxiYWNrIGdldEJ1ZmZlckNhbGxiYWNrLCBSZWxlYXNlQnVmZmVyQ2FsbGJhY2sg
cmVsZWFzZUJ1ZmZlckNhbGxiYWNrLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgYXV0
byB2aWRlb0ZyYW1lID0gVmlkZW9GcmFtZTo6QnVpbGRlcigpLnNldF92aWRlb19mcmFtZV9idWZm
ZXIodG9XZWJSVENWaWRlb0ZyYW1lQnVmZmVyKHBvaW50ZXIsIGdldEJ1ZmZlckNhbGxiYWNrLCBy
ZWxlYXNlQnVmZmVyQ2FsbGJhY2ssIHdpZHRoLCBoZWlnaHQpKQorICAgICAgICAuc2V0X3RpbWVz
dGFtcF9ydHAodGltZVN0YW1wUlRQKQorICAgICAgICAuc2V0X3RpbWVzdGFtcF9tcygwKQorICAg
ICAgICAuc2V0X3JvdGF0aW9uKChWaWRlb1JvdGF0aW9uKVJUQ1ZpZGVvUm90YXRpb25fMCkKKyAg
ICAgICAgLmJ1aWxkKCk7CisgICAgdmlkZW9GcmFtZS5zZXRfdGltZXN0YW1wKHRpbWVTdGFtcCk7
CisKKyAgICBzdGF0aWNfY2FzdDxEZWNvZGVkSW1hZ2VDYWxsYmFjayo+KGNhbGxiYWNrKS0+RGVj
b2RlZCh2aWRlb0ZyYW1lKTsKK30KKwogYm9vbCBSZW1vdGVWaWRlb0RlY29kZXI6OkNvbmZpZ3Vy
ZShjb25zdCBTZXR0aW5ncyYpCiB7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0
aWxpdGllcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaAppbmRleCBhMjNmYWE2ZWQ1N2RmN2MzMjJjNjcwYjc3
MzVjYWI4M2M2NjE1OTM0Li4yZWY4YTFlOTE1Mzg2MTFlZmU1YWY3MzRmODBjZDdhOWJhNGY1M2M2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmgKQEAgLTUyLDQg
KzUyLDggQEAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRl
b0ZyYW1lJikgQ0ZfUkVUVVJOU19SRVRBSU5FRDsKIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
OlZpZGVvRnJhbWVCdWZmZXI+IHBpeGVsQnVmZmVyVG9GcmFtZShDVlBpeGVsQnVmZmVyUmVmKTsK
IGJvb2wgY29weVZpZGVvRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYsIHVpbnQ4X3QqKTsKIAordHlw
ZWRlZiBDVlBpeGVsQnVmZmVyUmVmICgqR2V0QnVmZmVyQ2FsbGJhY2spKHZvaWQqKTsKK3R5cGVk
ZWYgdm9pZCAoKlJlbGVhc2VCdWZmZXJDYWxsYmFjaykodm9pZCopOworcnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gdG9XZWJSVENWaWRlb0ZyYW1lQnVmZmVyKHZv
aWQqLCBHZXRCdWZmZXJDYWxsYmFjaywgUmVsZWFzZUJ1ZmZlckNhbGxiYWNrLCBpbnQgd2lkdGgs
IGludCBoZWlnaHQpOwordm9pZCogdmlkZW9GcmFtZUJ1ZmZlclByb3ZpZGVyKGNvbnN0IFZpZGVv
RnJhbWUmKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW0K
aW5kZXggN2Y2ZmJiMTFlNzY5M2FkNjZkZjkyNGI5M2Y0ZDI4ZTdlZTg5ZTBhOC4uY2ZhNzk2YzVj
M2IwZGFhNTk0YzFjYjE2NjQ3ZDMxNTk2NDVlOWVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMu
bW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dl
YktpdC9XZWJLaXRVdGlsaXRpZXMubW0KQEAgLTUyLDYgKzUyLDIxIEBAIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+IHBpeGVsQnVmZmVyVG9GcmFtZShDVlBpeGVs
QnVmZmVyUmVmCiAgICAgcmV0dXJuIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8T2JqQ0ZyYW1l
QnVmZmVyPihmcmFtZUJ1ZmZlcik7CiB9CiAKK3J0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZp
ZGVvRnJhbWVCdWZmZXI+IHRvV2ViUlRDVmlkZW9GcmFtZUJ1ZmZlcih2b2lkKiBwb2ludGVyLCBH
ZXRCdWZmZXJDYWxsYmFjayBnZXRCdWZmZXJDYWxsYmFjaywgUmVsZWFzZUJ1ZmZlckNhbGxiYWNr
IHJlbGVhc2VCdWZmZXJDYWxsYmFjaywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIHJl
dHVybiBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PE9iakNGcmFtZUJ1ZmZlcj4oT2JqQ0ZyYW1l
QnVmZmVyOjpCdWZmZXJQcm92aWRlciB7IHBvaW50ZXIsIGdldEJ1ZmZlckNhbGxiYWNrLCByZWxl
YXNlQnVmZmVyQ2FsbGJhY2sgfSwgd2lkdGgsIGhlaWdodCk7Cit9CisKK3ZvaWQqIHZpZGVvRnJh
bWVCdWZmZXJQcm92aWRlcihjb25zdCBWaWRlb0ZyYW1lJiBmcmFtZSkKK3sKKyAgICBhdXRvIGJ1
ZmZlciA9IGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpOworICAgIGlmIChidWZmZXItPnR5cGUo
KSAhPSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprTmF0aXZlKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxPYmpDRnJhbWVCdWZmZXIqPihidWZmZXIu
Z2V0KCkpLT5mcmFtZV9idWZmZXJfcHJvdmlkZXIoKTsKKworfQorCiBzdGF0aWMgYm9vbCBDb3B5
VmlkZW9GcmFtZVRvUGl4ZWxCdWZmZXIoY29uc3Qgd2VicnRjOjpJNDIwQnVmZmVySW50ZXJmYWNl
KiBmcmFtZSwgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbF9idWZmZXIpIHsKICAgICBSVENfRENIRUNL
KHBpeGVsX2J1ZmZlcik7CiAgICAgUlRDX0RDSEVDSyhDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3Jt
YXRUeXBlKHBpeGVsX2J1ZmZlcikgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBs
YW5hckZ1bGxSYW5nZSB8fCBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsX2J1
ZmZlcikgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hclZpZGVvUmFuZ2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvbmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0aXZlL3NyYy9vYmpjX2ZyYW1l
X2J1ZmZlci5oCmluZGV4IGY5NDFkYWQ2ZTRmZTU2OTAwZWNhOTA1MGMwYTgzNGVkYjg1NWY2ODEu
LjNkMmViZDc3OTYzYWJjYTQ0Y2NlZmUwNzNmMTExYmQ1YjUxZWQyNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2ZS9z
cmMvb2JqY19mcmFtZV9idWZmZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVyLmgKQEAg
LTE0LDE2ICsxNCwyNyBAQAogI2ltcG9ydCA8Q29yZVZpZGVvL0NvcmVWaWRlby5oPgogCiAjaW5j
bHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1ZGUvdmlkZW9fZnJhbWVfYnVmZmVyLmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2Uvc3luY2hyb25pemF0aW9uL211dGV4LmgiCiAKIEBwcm90b2NvbCBSVENWaWRl
b0ZyYW1lQnVmZmVyOwogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAordHlwZWRlZiBDVlBpeGVsQnVm
ZmVyUmVmICgqR2V0QnVmZmVyQ2FsbGJhY2spKHZvaWQqKTsKK3R5cGVkZWYgdm9pZCAoKlJlbGVh
c2VCdWZmZXJDYWxsYmFjaykodm9pZCopOworCiBjbGFzcyBPYmpDRnJhbWVCdWZmZXIgOiBwdWJs
aWMgVmlkZW9GcmFtZUJ1ZmZlciB7CiAgcHVibGljOgogICBleHBsaWNpdCBPYmpDRnJhbWVCdWZm
ZXIoaWQ8UlRDVmlkZW9GcmFtZUJ1ZmZlcj4pOwogICB+T2JqQ0ZyYW1lQnVmZmVyKCkgb3ZlcnJp
ZGU7CiAKKyAgc3RydWN0IEJ1ZmZlclByb3ZpZGVyIHsKKyAgICB2b2lkICpwb2ludGVyIHsgbnVs
bHB0ciB9OworICAgIEdldEJ1ZmZlckNhbGxiYWNrIGdldEJ1ZmZlciB7IG51bGxwdHIgfTsKKyAg
ICBSZWxlYXNlQnVmZmVyQ2FsbGJhY2sgcmVsZWFzZUJ1ZmZlciB7IG51bGxwdHIgfTsKKyAgfTsK
KyAgT2JqQ0ZyYW1lQnVmZmVyKEJ1ZmZlclByb3ZpZGVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQp
OworCiAgIFR5cGUgdHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgIGludCB3aWR0aCgpIGNvbnN0
IG92ZXJyaWRlOwpAQCAtMzIsMTEgKzQzLDE0IEBAIGNsYXNzIE9iakNGcmFtZUJ1ZmZlciA6IHB1
YmxpYyBWaWRlb0ZyYW1lQnVmZmVyIHsKICAgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJ
bnRlcmZhY2U+IFRvSTQyMCgpIG92ZXJyaWRlOwogCiAgIGlkPFJUQ1ZpZGVvRnJhbWVCdWZmZXI+
IHdyYXBwZWRfZnJhbWVfYnVmZmVyKCkgY29uc3Q7CisgIHZvaWQqIGZyYW1lX2J1ZmZlcl9wcm92
aWRlcigpIHsgcmV0dXJuIGZyYW1lX2J1ZmZlcl9wcm92aWRlcl8ucG9pbnRlcjsgfQogCiAgcHJp
dmF0ZToKICAgaWQ8UlRDVmlkZW9GcmFtZUJ1ZmZlcj4gZnJhbWVfYnVmZmVyXzsKKyAgQnVmZmVy
UHJvdmlkZXIgZnJhbWVfYnVmZmVyX3Byb3ZpZGVyXzsKICAgaW50IHdpZHRoXzsKICAgaW50IGhl
aWdodF87CisgIG11dGFibGUgd2VicnRjOjpNdXRleCBtdXRleF87CiB9OwogCiBpZDxSVENWaWRl
b0ZyYW1lQnVmZmVyPiBUb09iakNWaWRlb0ZyYW1lQnVmZmVyKApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0aXZlL3NyYy9v
YmpjX2ZyYW1lX2J1ZmZlci5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL25hdGl2ZS9zcmMvb2JqY19mcmFtZV9idWZmZXIubW0KaW5kZXggYTNk
OWJhODEyZGE1OWY4NTcyYTUzM2FkNjJjNTJhYjBhYzBhMThjMi4uMmY1NmFjYjI5NDNiZDRjNGQ3
ZGZiNWRiMDIxYTAwOTE4MjgwN2E4NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZl
ci5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9uYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVyLm1tCkBAIC0xMiw2ICsxMiw3IEBACiAK
ICNpbXBvcnQgImJhc2UvUlRDVmlkZW9GcmFtZUJ1ZmZlci5oIgogI2ltcG9ydCAic2RrL29iamMv
YXBpL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVENOYXRpdmVJNDIwQnVmZmVyK1ByaXZhdGUuaCIKKyNp
bXBvcnQgInNkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ0NWUGl4ZWxC
dWZmZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTU1LDEwICs1NiwxNSBAQCBjbGFz
cyBPYmpDSTQyMEZyYW1lQnVmZmVyIDogcHVibGljIEk0MjBCdWZmZXJJbnRlcmZhY2UgewogT2Jq
Q0ZyYW1lQnVmZmVyOjpPYmpDRnJhbWVCdWZmZXIoaWQ8UlRDVmlkZW9GcmFtZUJ1ZmZlcj4gZnJh
bWVfYnVmZmVyKQogICAgIDogZnJhbWVfYnVmZmVyXyhmcmFtZV9idWZmZXIpLCB3aWR0aF8oZnJh
bWVfYnVmZmVyLndpZHRoKSwgaGVpZ2h0XyhmcmFtZV9idWZmZXIuaGVpZ2h0KSB7fQogCitPYmpD
RnJhbWVCdWZmZXI6Ok9iakNGcmFtZUJ1ZmZlcihCdWZmZXJQcm92aWRlciBwcm92aWRlciwgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0KQorICAgIDogZnJhbWVfYnVmZmVyX3Byb3ZpZGVyXyhwcm92aWRl
ciksIHdpZHRoXyh3aWR0aCksIGhlaWdodF8oaGVpZ2h0KSB7IH0KKwogT2JqQ0ZyYW1lQnVmZmVy
Ojp+T2JqQ0ZyYW1lQnVmZmVyKCkgewogI2lmIGRlZmluZWQoV0VCUlRDX1dFQktJVF9CVUlMRCkK
ICAgW2ZyYW1lX2J1ZmZlcl8gY2xvc2VdOwogI2VuZGlmCisgIGlmIChmcmFtZV9idWZmZXJfcHJv
dmlkZXJfLnJlbGVhc2VCdWZmZXIpCisgICAgZnJhbWVfYnVmZmVyX3Byb3ZpZGVyXy5yZWxlYXNl
QnVmZmVyKGZyYW1lX2J1ZmZlcl9wcm92aWRlcl8ucG9pbnRlcik7CiB9CiAKIFZpZGVvRnJhbWVC
dWZmZXI6OlR5cGUgT2JqQ0ZyYW1lQnVmZmVyOjp0eXBlKCkgY29uc3QgewpAQCAtNzUsMTIgKzgx
LDIxIEBAIGludCBPYmpDRnJhbWVCdWZmZXI6OmhlaWdodCgpIGNvbnN0IHsKIAogcnRjOjpzY29w
ZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IE9iakNGcmFtZUJ1ZmZlcjo6VG9JNDIwKCkg
ewogICBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gYnVmZmVyID0KLSAg
ICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8T2JqQ0k0MjBGcmFtZUJ1ZmZlcj4oW2ZyYW1l
X2J1ZmZlcl8gdG9JNDIwXSk7CisgICAgICBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PE9iakNJ
NDIwRnJhbWVCdWZmZXI+KFt3cmFwcGVkX2ZyYW1lX2J1ZmZlcigpIHRvSTQyMF0pOwogCiAgIHJl
dHVybiBidWZmZXI7CiB9CiAKIGlkPFJUQ1ZpZGVvRnJhbWVCdWZmZXI+IE9iakNGcmFtZUJ1ZmZl
cjo6d3JhcHBlZF9mcmFtZV9idWZmZXIoKSBjb25zdCB7CisgIGlmIChmcmFtZV9idWZmZXJfKQor
ICAgIHJldHVybiBmcmFtZV9idWZmZXJfOworCisgIHsKKyAgICB3ZWJydGM6Ok11dGV4TG9jayBs
b2NrKCZtdXRleF8pOworICAgIGlmICghZnJhbWVfYnVmZmVyXyAmJiBmcmFtZV9idWZmZXJfcHJv
dmlkZXJfLmdldEJ1ZmZlcikKKyAgICAgIGNvbnN0X2Nhc3Q8T2JqQ0ZyYW1lQnVmZmVyKj4odGhp
cyktPmZyYW1lX2J1ZmZlcl8gPSBbW1JUQ0NWUGl4ZWxCdWZmZXIgYWxsb2NdIGluaXRXaXRoUGl4
ZWxCdWZmZXI6ZnJhbWVfYnVmZmVyX3Byb3ZpZGVyXy5nZXRCdWZmZXIoZnJhbWVfYnVmZmVyX3By
b3ZpZGVyXy5wb2ludGVyKV07CisgIH0KKwogICByZXR1cm4gZnJhbWVfYnVmZmVyXzsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2Vz
SW50ZXJuYWwueWFtbCBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJl
bmNlc0ludGVybmFsLnlhbWwKaW5kZXggOTFlYzRmMjE3MTE2NzQyMzIyMzE1MTFjMTgxNGZiZWM4
NjE1ZWQ1Yi4uOGQzZWVkMTM5NTRmYTkwMmMyOTY4NzQwMWM5Yzg1Y2I3MWY3MzY3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJu
YWwueWFtbAorKysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5j
ZXNJbnRlcm5hbC55YW1sCkBAIC0xMDIxLDYgKzEwMjEsMTkgQEAgV2ViUlRDUGxhdGZvcm1Db2Rl
Y3NJbkdQVVByb2Nlc3NFbmFibGVkOgogICAgIFdlYkNvcmU6CiAgICAgICBkZWZhdWx0OiBmYWxz
ZQogCitXZWJSVENSZW1vdGVWaWRlb0ZyYW1lRW5hYmxlZDoKKyAgdHlwZTogYm9vbAorICBodW1h
blJlYWRhYmxlTmFtZTogIldlYlJUQyBSZW1vdGUgVmlkZW8gRnJhbWUiCisgIGh1bWFuUmVhZGFi
bGVEZXNjcmlwdGlvbjogIkVuYWJsZSBXZWJSVEMgUmVtb3RlIFZpZGVvIEZyYW1lIgorICBjb25k
aXRpb246IEVOQUJMRShXRUJfUlRDKQorICBkZWZhdWx0VmFsdWU6CisgICAgV2ViS2l0TGVnYWN5
OgorICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICBXZWJLaXQ6CisgICAgICBkZWZhdWx0OiBmYWxz
ZQorICAgIFdlYkNvcmU6CisgICAgICBkZWZhdWx0OiBmYWxzZQorCiBXZWJTUUxFbmFibGVkOgog
ICB0eXBlOiBib29sCiAgIGh1bWFuUmVhZGFibGVOYW1lOiAiRW5hYmxlIFdlYlNRTCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCmluZGV4IDA4YTAxZTU3OGQ4YTM1MjdlNmZlZTQ0MmNlOTA4MTFhZjViYWZhYzIu
LjgwNTAwMTNlZDY1ZjQwYzg4ZjA0MzYxMjc4MDI1ZDQ2MDRmYjMwMWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQpAQCAtMTM0OSw2ICsxMzQ5LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIHBsYXRmb3JtL1VzZXJBZ2VudC5oCiAgICAgcGxhdGZvcm0vVXNlckludGVy
ZmFjZUxheW91dERpcmVjdGlvbi5oCiAgICAgcGxhdGZvcm0vVmFsaWRhdGlvbkJ1YmJsZS5oCisg
ICAgcGxhdGZvcm0vVmlkZW9GcmFtZS5oCiAgICAgcGxhdGZvcm0vVmlkZW9GcmFtZU1ldGFkYXRh
LmgKICAgICBwbGF0Zm9ybS9WaWRlb1NhbXBsZU1ldGFkYXRhLmgKICAgICBwbGF0Zm9ybS9XZWJH
TFN0YXRlVHJhY2tlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDFlZGQ3MTgzOGNkMjdkMzdjMjlkNzlm
NGFiMzNhOGJkNzVlN2E1OGEuLjYxNDJkMjQzZGIyODgwYzUxZWZlZjU4YTA0YzliMGJhNzUzZjYw
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTI2LDYgKzE5MjYsNyBAQCBwbGF0Zm9ybS9UaHJlYWRH
bG9iYWxEYXRhLmNwcAogcGxhdGZvcm0vVGhyZWFkVGltZXJzLmNwcAogcGxhdGZvcm0vVGltZXIu
Y3BwCiBwbGF0Zm9ybS9Vc2VyQWN0aXZpdHkuY3BwCitwbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcAog
cGxhdGZvcm0vV2ViQ29yZUNyb3NzVGhyZWFkQ29waWVyLmNwcAogcGxhdGZvcm0vV2ViR0xTdGF0
ZVRyYWNrZXIuY3BwCiBwbGF0Zm9ybS9XaWRnZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTYzN2YzZmQ2MTFlZDBhMWY3
YmE1Y2ViYjAxNjVkNTY0M2EzZWRhNS4uMTY0ZTUyYWU1NWYyNDNmMjU0NWQwOTMwNjQ5ODk4ZGM3
NzU0NjQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjQwNyw2ICsyNDA3LDcgQEAKIAkJN0IxMDMzOUUyNTQ5NzIxNzAwQzhD
MUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlEMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0Nv
bnRleHRHTENWLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJN0IxMDMzOUYyNTQ5NzIxRTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZDb2Nv
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMz
OUMyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNDQxMEUxMjc5NThG
QzUwMDBCNEY4QSAvKiBNZWRpYVNhbXBsZVZpZGVvRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNDQxMERGMjc5NThGQzQwMDBCNEY4QSAvKiBN
ZWRpYVNhbXBsZVZpZGVvRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk3QjVBM0RBRjI3QUJGOEM1MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I1QTNEQUQy
N0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjYwOTRERDI3MEM0NEJEMDA2NDgzNUMgLyogQU5H
TEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNkRDODE5MjU3MTJF
OTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2REM4MTcyNTcxMkU5
MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I3MjBCMEMyNzQz
REJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MjBCMEEyNzQz
REJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTUyMCw2
ICsxMTUyMSw4IEBACiAJCTdCMTYxOTEwMjcxOTg4MEUwMEM0MEVBQyAvKiBXZWJQcm9jZXNzR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlByb2Nlc3NH
cmFwaGljc0NvbnRleHRHTENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QjQ0MTBERjI3OTU4RkM0MDAwQjRGOEEgLyogTWVkaWFTYW1wbGVWaWRlb0ZyYW1lLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU2FtcGxlVmlkZW9GcmFtZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ0MTBFMjI3OTU4RkRFMDAwQjRGOEEgLyogTWVk
aWFTYW1wbGVWaWRlb0ZyYW1lQVZGLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFTYW1w
bGVWaWRlb0ZyYW1lQVZGLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RB
QjI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBWaWRlb0ZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0I1QTNEQUQyN0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9GcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QjZEQzgxNTI1NzEyRTkxMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJ
T1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTMwMTUxLDYgKzMwMTU0LDggQEAKIAkJCQlBM0FGOUQ4MjIwMzI1MzI0
MDA2Q0FEMDYgLyogVXNlckFnZW50LmggKi8sCiAJCQkJNzFDOTE2MDcxRDE0ODNBMzAwQUNBNDdE
IC8qIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaCAqLywKIAkJCQk4M0M0NUI4RDFEQzJC
NjdDMDA4ODcxQkEgLyogVmFsaWRhdGlvbkJ1YmJsZS5oICovLAorCQkJCTdCNUEzREFCMjdBQkY4
QzQwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmNwcCAqLywKKwkJCQk3QjVBM0RBRDI3QUJGOEM0MDA2
QzZGOTcgLyogVmlkZW9GcmFtZS5oICovLAogCQkJCTQxREVFRkI0MjcxOUJBMTkwMENCOEQ3NCAv
KiBWaWRlb0ZyYW1lTWV0YWRhdGEuaCAqLywKIAkJCQk0MTYwNDkzMTI3NDNCMEU3MDBBODZGQTAg
LyogVmlkZW9TYW1wbGVNZXRhZGF0YS5oICovLAogCQkJCTUxNUY3OTUxMUNGQ0EzQzcwMENDRUQ5
MyAvKiBXZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwICovLApAQCAtMzc4MjcsNiArMzc4MzIs
NyBAQAogCQkJCTBGMUEwQzM4MjI5QTQ4MTgwMEQzN0FEQiAvKiBWZWxvY2l0eURhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDQTI1NzE1MTI5M0MwMTAwMDdBMjYzRCAvKiBWZXJ0aWNhbFBvc2l0
aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0VFRjNCMjU3OTlGQTEwMDY1NjNCQiAv
KiBWaWRlb0NvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNUEzREFGMjdBQkY4
QzUwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURFRUZCNjI3
MTlCQTFBMDBDQjhENzQgLyogVmlkZW9GcmFtZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MURFRUZCMDI3MTlCMjkwMDBDQjhENzQgLyogVmlkZW9GcmFtZVJlcXVlc3RDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTJCMEQ0QzAxQzU3RkQ2NjAwNzdDRTUzIC8qIFZpZGVvRnVs
bHNjcmVlbkNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NZWRpYVNhbXBsZS5oCmluZGV4IDE4Mzk5NzIyNjBmNzBlMDA3MzY3OTc5MTcyMjYyNWY1NmIy
NTNmMDguLmIwNjUwNGY1N2VlOTM2YjhlMTk4ODcxZjM1NzI3NjUzNTMwNGFmZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIAogdHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVC
dWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOwordHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciAqQ1ZQ
aXhlbEJ1ZmZlclJlZjsKIHR5cGVkZWYgc3RydWN0IF9Hc3RTYW1wbGUgR3N0U2FtcGxlOwogdHlw
ZWRlZiBzdHJ1Y3QgT3BhcXVlTVRQbHVnaW5CeXRlU291cmNlICpNVFBsdWdpbkJ5dGVTb3VyY2VS
ZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uICpDTUZv
cm1hdERlc2NyaXB0aW9uUmVmOwpAQCAtNDksOSArNTAsMTAgQEAgc3RydWN0IFBsYXRmb3JtU2Ft
cGxlIHsKICAgICAgICAgQ01TYW1wbGVCdWZmZXJUeXBlLAogICAgICAgICBHU3RyZWFtZXJTYW1w
bGVUeXBlLAogICAgICAgICBCeXRlUmFuZ2VTYW1wbGVUeXBlLAorICAgICAgICBSZW1vdGVWaWRl
b0ZyYW1lUHJveHlUeXBlLCAvLyBGSVhNRTogVG8gYmUgcmVtb3ZlZCB3aGVuIFZpZGVvRnJhbWUg
aXMgbm90IE1lZGlhU2FtcGxlLgogICAgIH0gdHlwZTsKICAgICB1bmlvbiB7Ci0gICAgICAgIE1v
Y2tTYW1wbGVCb3gqIG1vY2tTYW1wbGVCb3g7CisgICAgICAgIGNvbnN0IE1vY2tTYW1wbGVCb3gq
IG1vY2tTYW1wbGVCb3g7CiAgICAgICAgIENNU2FtcGxlQnVmZmVyUmVmIGNtU2FtcGxlQnVmZmVy
OwogICAgICAgICBHc3RTYW1wbGUqIGdzdFNhbXBsZTsKICAgICAgICAgc3RkOjpwYWlyPE1UUGx1
Z2luQnl0ZVNvdXJjZVJlZiwgQ01Gb3JtYXREZXNjcmlwdGlvblJlZj4gYnl0ZVJhbmdlU2FtcGxl
OwpAQCAtNjYsNyArNjgsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgZGVjb2Rl
VGltZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0ID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0VHJhY2tJRChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBz
aXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBGbG9hdFNpemUgcHJl
c2VudGF0aW9uU2l6ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb2Zmc2V0VGltZXN0
YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYpID0gMDsKQEAgLTkwLDcgKzkxLDcgQEAgcHVibGljOgog
ICAgICAgICBIYXNTeW5jSW5mbyA9IDEgPDwgMywKICAgICB9OwogICAgIHZpcnR1YWwgU2FtcGxl
RmxhZ3MgZmxhZ3MoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBQbGF0Zm9ybVNhbXBsZSBwbGF0
Zm9ybVNhbXBsZSgpID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2Ft
cGxlKCkgY29uc3QgPSAwOwogCiAgICAgc3RydWN0IEJ5dGVSYW5nZSB7CiAgICAgICAgIHNpemVf
dCBieXRlT2Zmc2V0IHsgMCB9OwpAQCAtMTEwLDYgKzExMSw5IEBAIHB1YmxpYzoKICNpZiBkZWZp
bmVkKEVOQUJMRV9WSURFTykgJiYgRU5BQkxFX1ZJREVPCiAgICAgdmlydHVhbCBzdGQ6Om9wdGlv
bmFsPE1lZGlhU2FtcGxlVmlkZW9GcmFtZT4gdmlkZW9GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsgfTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZpcnR1YWwg
Q1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH07
CisjZW5kaWYKIAogICAgIGJvb2wgaXNTeW5jKCkgY29uc3QgeyByZXR1cm4gZmxhZ3MoKSAmIElz
U3luYzsgfQogICAgIGJvb2wgaXNOb25EaXNwbGF5aW5nKCkgY29uc3QgeyByZXR1cm4gZmxhZ3Mo
KSAmIElzTm9uRGlzcGxheWluZzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVmlkZW9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mMDc2OWJhNWU1NGE4ODBiZTYzOTA5YTljZGEwMzI4N2EzN2QzY2Y0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAK
QEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiVmlkZW9GcmFtZS5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitWaWRlb0ZyYW1lOjpWaWRlb0ZyYW1lKCkgPSBkZWZhdWx0OworCitW
aWRlb0ZyYW1lOjp+VmlkZW9GcmFtZSgpID0gZGVmYXVsdDsKKworTWVkaWFUaW1lIFZpZGVvRnJh
bWU6OmRlY29kZVRpbWUoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiB7IH07Cit9CisKK01lZGlhVGltZSBWaWRlb0ZyYW1lOjpkdXJhdGlvbigpIGNvbnN0
Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworQXRv
bVN0cmluZyBWaWRlb0ZyYW1lOjp0cmFja0lEKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4geyB9OworfQorCitzaXplX3QgVmlkZW9GcmFtZTo6c2l6ZUlu
Qnl0ZXMoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAw
OworfQorCit2b2lkIFZpZGVvRnJhbWU6Om9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRp
bWUmKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFZpZGVvRnJhbWU6
OnNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikKK3sKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworYm9vbCBWaWRlb0ZyYW1lOjppc0RpdmlzYWJs
ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitzdGQ6OnBhaXI8UmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiwgUmVmUHRyPFdl
YkNvcmU6Ok1lZGlhU2FtcGxlPj4gVmlkZW9GcmFtZTo6ZGl2aWRlKGNvbnN0IE1lZGlhVGltZSYs
IFVzZUVuZFRpbWUpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsg
bnVsbHB0ciwgbnVsbHB0ciB9OworfQorCitSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IFZpZGVv
RnJhbWU6OmNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5KCkgY29uc3QKK3sKKyAgICBDUkFTSCgpOwor
fQorCitNZWRpYVNhbXBsZTo6U2FtcGxlRmxhZ3MgVmlkZW9GcmFtZTo6ZmxhZ3MoKSBjb25zdAor
eworICAgIHJldHVybiBNZWRpYVNhbXBsZTo6U2FtcGxlRmxhZ3M6Ok5vbmU7Cit9CisKK3N0ZDo6
b3B0aW9uYWw8TWVkaWFTYW1wbGU6OkJ5dGVSYW5nZT4gVmlkZW9GcmFtZTo6Ynl0ZVJhbmdlKCkg
Y29uc3QKK3sKKyAgICAvLyBGSVhNRTogUmVtb3ZlIGZyb20gdGhlIGJhc2UgY2xhc3MuCisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKwordm9p
ZCBWaWRlb0ZyYW1lOjpkdW1wKFByaW50U3RyZWFtJikgY29uc3QKK3sKK30KKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNjMxZmQxM2Uy
MmUzMTIyNjY1MDAxNGJhZjc4ZGVhOTBjYWE2ZmIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRl
ICJNZWRpYVNhbXBsZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEEgY2xhc3MgcmVw
cmVzZW50aW5nIGEgdmlkZW8gZnJhbWUgZnJvbSBhIGRlY29kZXIsIGNhcHR1cmUgc291cmNlLCBv
ciBzaW1pbGFyLgorLy8gRklYTUU6IEN1cnJlbnRseSBmb3IgaW1wbGVtZW50YXRpb24gcHVycG9z
ZXMgaW5oZXJ0cyBmcm9tIE1lZGlhU2FtcGxlIHVudGlsIGNhcHR1cmUgY29kZQorLy8gc3RvcHMg
cmVmZXJyaW5nIHRvIE1lZGlhU2FtcGxlCitjbGFzcyBWaWRlb0ZyYW1lIDogcHVibGljIE1lZGlh
U2FtcGxlIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCB+VmlkZW9GcmFtZSgpOworCitw
cm90ZWN0ZWQ6CisgICAgV0VCQ09SRV9FWFBPUlQgVmlkZW9GcmFtZSgpOworCitwcml2YXRlOgor
ICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIHRoZXNl
IG9iamVjdHMuCisgICAgLy8gV2ViQ29yZTo6TWVkaWFTYW1wbGUgb3ZlcnJpZGVzLgorICAgIFdF
QkNPUkVfRVhQT1JUIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3QgZmluYWw7CisgICAgV0VC
Q09SRV9FWFBPUlQgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09S
RV9FWFBPUlQgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9F
WFBPUlQgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUaW1lc3RhbXBzKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0
IE1lZGlhVGltZSYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEaXZpc2FibGUo
KSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8UmVmUHRyPE1lZGlh
U2FtcGxlPiwgUmVmUHRyPE1lZGlhU2FtcGxlPj4gZGl2aWRlKGNvbnN0IE1lZGlhVGltZSYgcHJl
c2VudGF0aW9uVGltZSwgVXNlRW5kVGltZSA9IFVzZUVuZFRpbWU6OkRvTm90VXNlKSBmaW5hbDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRp
c3BsYXlpbmdDb3B5KCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgU2FtcGxlRmxh
Z3MgZmxhZ3MoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFs
PEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3QgZmluYWw7Cit9OworCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9T
YW1wbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2Ft
cGxlLmgKaW5kZXggY2QxMGQ5YzA1Y2I4YTFkODZlNjQzZDVhM2ZhYWFlNWM3NGYwODc5OS4uZjFk
ZDkxOTAxZjg0OWUwOWEyNDY2NDlmY2RkYTc4ZDBkZGM5YWNlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCkBAIC01NCw2
ICs1NCw3IEBAIHB1YmxpYzoKICAgICBDVlBpeGVsQnVmZmVyUmVmIGltYWdlQnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsgfQogCiAgICAgdm9pZCBzZXRPd25lcnNo
aXBJZGVudGl0eShjb25zdCBQcm9jZXNzSWRlbnRpdHkmKTsKKyAgICB2b2lkIGNsZWFySU9TdXJm
YWNlKCkgeyBtX2lvU3VyZmFjZSA9IG51bGxwdHI7IH0KIAogICAgIGNvbnN0IE1lZGlhVGltZSYg
dGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZTsgfQogICAgIHVpbnQzMl90IHZpZGVvRm9ybWF0
KCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0Zvcm1hdDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbQppbmRleCBjMTI2
YjkzZTg3MDZmOTU1MzBmNjEyNmY4YWQyNWZhZjYyMjJhZDcxLi45YmY0YjBiOGQ1YzQ4MWE1MzRm
ZDkwY2YxNmM5NTU5ZmI2Y2Q3MTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbQpAQCAtMzM0LDYgKzMzNCw5IEBA
IHZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoTWVkaWFT
YW1wbGUmIHNhbXBsZSkKIHZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVl
dWVTYW1wbGVCdWZmZXIoTWVkaWFTYW1wbGUmIHNhbXBsZSkKIHsKICAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKKyAgICAvLyBGSVhNRTogTG9jYWwgcGxheWJhY2sgb2YgUmVtb3RlVmlkZW9G
cmFtZVByb3h5IGlzIG5vdCBpbXBsZW1lbnRlZC4KKyAgICBpZiAoIWlzPE1lZGlhU2FtcGxlQVZG
T2JqQz4oc2FtcGxlKSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBzYW1wbGVUb0VucXVl
dWUgPSBzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuY21TYW1wbGVCdWZmZXI7CiAgICAg
YXV0byBub3cgPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoTW9ub3RvbmljVGltZTo6bm93
KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpICsgcmVuZGVyZXJMYXRlbmN5KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCAyYmJkNmE0Y2IwZDIyZDJkZjk5Nzc1ZWU1ZWUyN2M3
OGEyMGQ1OTU1Li40MmZkMTc0ODdlYTZjZDE3MTA1MDUwNWZmNWYzZmY1ZWRmYmU3ZTE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC0yMzAsMTAgKzIzMCw5IEBAIE1lZGlhUGxheWVy
OjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzdXBw
b3J0c1R5cGUoY29uCiAKIHN0YXRpYyBpbmxpbmUgQ0dBZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFu
c2Zvcm1hdGlvbk1hdHJpeChNZWRpYVNhbXBsZSYgc2FtcGxlKQogewotICAgIENNU2FtcGxlQnVm
ZmVyUmVmIHNhbXBsZUJ1ZmZlciA9IHNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNh
bXBsZUJ1ZmZlcjsKLSAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyID0gc3RhdGljX2Nh
c3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKHNh
bXBsZUJ1ZmZlcikpOwotICAgIHNpemVfdCB3aWR0aCA9IENWUGl4ZWxCdWZmZXJHZXRXaWR0aChw
aXhlbEJ1ZmZlcik7Ci0gICAgc2l6ZV90IGhlaWdodCA9IENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQo
cGl4ZWxCdWZmZXIpOworICAgIGF1dG8gc2l6ZSA9IHNhbXBsZS5wcmVzZW50YXRpb25TaXplKCk7
CisgICAgc2l6ZV90IHdpZHRoID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplLndpZHRoKCkpOwor
ICAgIHNpemVfdCBoZWlnaHQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNpemUuaGVpZ2h0KCkpOwog
ICAgIGlmICghd2lkdGggfHwgIWhlaWdodCkKICAgICAgICAgcmV0dXJuIENHQWZmaW5lVHJhbnNm
b3JtSWRlbnRpdHk7CiAKQEAgLTk5NCw4ICs5OTMsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UoKQogICAgIGlmICgh
bV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihQQUw6
OkNNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIobV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUt
PnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVmZmVyKSk7Ci0gICAgbV9pbWFnZVBh
aW50ZXIuY2dJbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUobV9pbWFnZVBhaW50ZXIucGl4ZWxC
dWZmZXJDb25mb3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKHBpeGVsQnVmZmVyKSk7
CisgICAgaWYgKGF1dG8gcGl4ZWxCdWZmZXIgPSBtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZS0+
cGl4ZWxCdWZmZXIoKSkKKyAgICAgICAgbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSA9IE5hdGl2ZUlt
YWdlOjpjcmVhdGUobV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXItPmNyZWF0ZUlt
YWdlRnJvbVBpeGVsQnVmZmVyKHBpeGVsQnVmZmVyKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNhbXBsZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCmluZGV4IDYzZGI5YzAwM2MwNTE5
YzY2NTY2MTIxZTdjNmZiNTFkZjJmNzcxYzEuLjViNGY3ZjAwZGIzM2E1YmNkZjY1NmM2MDIyZjE0
ODM0ZjQxYzU5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5oCkBAIC01NCwxMyArNTQsMTIgQEAgcHVibGljOgogICAgIE1lZGlhVGltZSBkdXJhdGlvbigp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9pZDsgfQotICAgIHZvaWQgc2V0VHJhY2tJRChjb25zdCBTdHJpbmcmIGlk
KSBvdmVycmlkZSB7IG1faWQgPSBpZDsgfQogCiAgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgRmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUGxh
dGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybVNhbXBs
ZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0
ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIG9mZnNldFRp
bWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKQEAgLTczLDYgKzcyLDcgQEAg
cHVibGljOgogICAgIGJvb2wgdmlkZW9NaXJyb3JlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fbWlycm9yZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB1aW50MzJfdCB2aWRlb1BpeGVsRm9y
bWF0KCkgY29uc3QgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxNZWRp
YVNhbXBsZVZpZGVvRnJhbWU+IHZpZGVvRnJhbWUoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKCkgY29uc3QgZmluYWw7CiAgICAg
Q01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGUu
Z2V0KCk7IH0KIAogICAgIGJvb2wgaXNIb21vZ2VuZW91cygpIGNvbnN0OwpAQCAtOTcsMyArOTcs
NyBAQCBwcm90ZWN0ZWQ6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDKQorICAgIHN0
YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUp
IHsgcmV0dXJuIG1lZGlhU2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBXZWJDb3JlOjpQ
bGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVCdWZmZXJUeXBlOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0K
aW5kZXggMmNlNmNlZGVhNTVkZmU0Mjk1M2MyYzliZjJmMjY5ZWExM2M0NmMzYi4uNTAwNDM0MGZl
ZjQ5ZTQyZWIyZmRmODM0ZmZjMjc5MTUzZjU4MTRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQpAQCAtMTUzLDcgKzE1Myw3IEBAIHNpemVfdCBNZWRp
YVNhbXBsZUFWRk9iakM6OnNpemVJbkJ5dGVzKCkgY29uc3QKICAgICByZXR1cm4gUEFMOjpDTVNh
bXBsZUJ1ZmZlckdldFRvdGFsU2FtcGxlU2l6ZShtX3NhbXBsZS5nZXQoKSk7CiB9CiAKLVBsYXRm
b3JtU2FtcGxlIE1lZGlhU2FtcGxlQVZGT2JqQzo6cGxhdGZvcm1TYW1wbGUoKQorUGxhdGZvcm1T
YW1wbGUgTWVkaWFTYW1wbGVBVkZPYmpDOjpwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0CiB7CiAgICAg
UGxhdGZvcm1TYW1wbGUgc2FtcGxlID0geyBQbGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVCdWZmZXJU
eXBlLCB7IC5jbVNhbXBsZUJ1ZmZlciA9IG1fc2FtcGxlLmdldCgpIH0gfTsKICAgICByZXR1cm4g
c2FtcGxlOwpAQCAtNTU2LDQgKzU1Niw5IEBAIHN0ZDo6b3B0aW9uYWw8TWVkaWFTYW1wbGU6OkJ5
dGVSYW5nZT4gTWVkaWFTYW1wbGVBVkZPYmpDOjpieXRlUmFuZ2VGb3JBdHRhY2htZW50CiAgICAg
cmV0dXJuIHsgeyBDaGVja2VkU2l6ZShieXRlT2Zmc2V0KSwgc2luZ2xlU2l6ZUVudHJ5IH0gfTsK
IH0KIAorQ1ZQaXhlbEJ1ZmZlclJlZiBNZWRpYVNhbXBsZUFWRk9iakM6OnBpeGVsQnVmZmVyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpD
TVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKG1fc2FtcGxlLmdldCgpKSk7Cit9CisKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVNhbXBsZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuY3BwCmluZGV4IDllN2MwODk2MDZhN2IxMzlh
OWE2MjM4ZTUxZGY4ZjBmZGVkN2QzMzcuLjI3Zjk3OTVlYTRkYThhNzQ4MjA2OTM3ZDQyM2Q2OGJi
NTYzNWJkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmNwcApAQCAtMjM1
LDcgKzIzNSw3IEBAIHZvaWQgTWVkaWFTYW1wbGVHU3RyZWFtZXI6Om9mZnNldFRpbWVzdGFtcHNC
eShjb25zdCBNZWRpYVRpbWUmIHRpbWVzdGFtcE9mZnNldCkKICAgICB9CiB9CiAKLVBsYXRmb3Jt
U2FtcGxlIE1lZGlhU2FtcGxlR1N0cmVhbWVyOjpwbGF0Zm9ybVNhbXBsZSgpCitQbGF0Zm9ybVNh
bXBsZSBNZWRpYVNhbXBsZUdTdHJlYW1lcjo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogewogICAg
IFBsYXRmb3JtU2FtcGxlIHNhbXBsZSA9IHsgUGxhdGZvcm1TYW1wbGU6OkdTdHJlYW1lclNhbXBs
ZVR5cGUsIHsgLmdzdFNhbXBsZSA9IG1fc2FtcGxlLmdldCgpIH0gfTsKICAgICByZXR1cm4gc2Ft
cGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaAppbmRleCAxZDcxYTMzOTY5Y2Zi
YzY3NWRlZWNlYTc4ZTY0ZjJkNjg5OWU0MWViLi4zYjVhNjlhYTc2YTZhYWYxN2E1NjE3NmMxZmIy
MzlhNGY5MTBiMGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaApAQCAtNTMs
NyArNTMsNiBAQCBwdWJsaWM6CiAgICAgTWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2R0czsgfQogICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fZHVyYXRpb247IH0KICAgICBBdG9tU3RyaW5nIHRyYWNrSUQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX3RyYWNrSWQ7IH0KLSAgICB2b2lkIHNldFRyYWNrSUQo
Y29uc3QgU3RyaW5nJiB0cmFja0lkKSBvdmVycmlkZSB7IG1fdHJhY2tJZCA9IHRyYWNrSWQ7IH0K
ICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3NpemU7
IH0KICAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fcHJlc2VudGF0aW9uU2l6ZTsgfQogICAgIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNv
bnN0IE1lZGlhVGltZSYpIG92ZXJyaWRlOwpAQCAtNjIsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAg
c3RkOjpwYWlyPFJlZlB0cjxNZWRpYVNhbXBsZT4sIFJlZlB0cjxNZWRpYVNhbXBsZT4+IGRpdmlk
ZShjb25zdCBNZWRpYVRpbWUmLCBVc2VFbmRUaW1lKSBvdmVycmlkZSAgeyByZXR1cm4geyBudWxs
cHRyLCBudWxscHRyIH07IH0KICAgICBSZWY8TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRpc3BsYXlp
bmdDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2ZsYWdzOyB9Ci0gICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1T
YW1wbGUoKSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRB
cnJheT4gZ2V0UkdCQUltYWdlRGF0YSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNw
cAppbmRleCA2ODI3M2ViZjdmMDNhOGE5MjY4YzBkODhmNTExZTNmNmMyOTM1MDkyLi4zOWUzZTdl
MjNlYTFmMTZkNjFhMzIwNjQzNWJhYTc1MmQ5YTZkNmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNw
cApAQCAtMzAsNiArMzAsNyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiSW1h
Z2VUcmFuc2ZlclNlc3Npb25WVC5oIgorI2luY2x1ZGUgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgog
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE2OSw2ICsxNzAsMTQgQEAgdm9pZCBS
ZWFsdGltZVZpZGVvU291cmNlOjpzb3VyY2VTdG9wcGVkKCkKICNpZiBQTEFURk9STShDT0NPQSkK
IFJlZlB0cjxNZWRpYVNhbXBsZT4gUmVhbHRpbWVWaWRlb1NvdXJjZTo6YWRhcHRWaWRlb1NhbXBs
ZShNZWRpYVNhbXBsZSYgc2FtcGxlKQogeworICAgIGlmIChzYW1wbGUucGxhdGZvcm1TYW1wbGUo
KS50eXBlICE9IFBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGUpIHsKKyAgICAgICAg
Ly8gRklYTUU6IFN1cHBvcnQgbW9yZSBlZmZpY2llbnRseSBkb3duc2FtcGxpbmcgb2YgcmVtb3Rl
IHZpZGVvIGZyYW1lcyBieSBkb3duc2FtcGxpbmcgaW4gR1BVUHJvY2Vzcy4KKyAgICAgICAgYXV0
byBuZXdTYW1wbGUgPSBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlKHNhbXBs
ZS5waXhlbEJ1ZmZlcigpLCBzYW1wbGUudmlkZW9Sb3RhdGlvbigpLCBzYW1wbGUudmlkZW9NaXJy
b3JlZCgpLCBzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpLCB7IH0pOworICAgICAgICBpZiAoIW5l
d1NhbXBsZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gYWRh
cHRWaWRlb1NhbXBsZSgqbmV3U2FtcGxlKTsKKyAgICB9CisgICAgQVNTRVJUKHNhbXBsZS5wbGF0
Zm9ybVNhbXBsZSgpLnR5cGUgPT0gUGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZSk7
CiAgICAgaWYgKCFtX2ltYWdlVHJhbnNmZXJTZXNzaW9uIHx8IG1faW1hZ2VUcmFuc2ZlclNlc3Np
b24tPnBpeGVsRm9ybWF0KCkgIT0gc2FtcGxlLnZpZGVvUGl4ZWxGb3JtYXQoKSkKICAgICAgICAg
bV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiA9IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZShz
YW1wbGUudmlkZW9QaXhlbEZvcm1hdCgpLCBtX3Nob3VsZFVzZUlPU3VyZmFjZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmgKaW5kZXggZDBmZThl
MDY1ODIyZjgwN2ViYjRkNjVhMzA3YjRiZWMwYjhmYWE2Mi4uNjQ2NmQ2MThkZTc0OWU1YzVmOTI2
MWQyNTJkZDliMGMxOWUxYTU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZUNvY29hLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lmIFVTRShMSUJXRUJSVEMp
CiAKKyNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgogI2luY2x1ZGUgIlJlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZS5oIgogCiB1c2luZyBDTVNhbXBsZUJ1ZmZlclJlZiA9IHN0cnVjdCBvcGFxdWVD
TVNhbXBsZUJ1ZmZlcio7CkBAIC00OSw2ICs1MCw4IEBAIHByaXZhdGU6CiAgICAgUmVhbHRpbWVJ
bmNvbWluZ1ZpZGVvU291cmNlQ29jb2EocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9U
cmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYpOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVy
UmVmPiBwaXhlbEJ1ZmZlckZyb21WaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYp
OwogICAgIENWUGl4ZWxCdWZmZXJQb29sUmVmIHBpeGVsQnVmZmVyUG9vbChzaXplX3Qgd2lkdGgs
IHNpemVfdCBoZWlnaHQsIHdlYnJ0Yzo6QnVmZmVyVHlwZSk7CisgICAgUmVmUHRyPE1lZGlhU2Ft
cGxlPiB0b1ZpZGVvRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiwgTWVkaWFTYW1wbGU6
OlZpZGVvUm90YXRpb24pOworICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gY3JlYXRlTWVkaWFTYW1w
bGVGcm9tQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmLCBNZWRpYVNhbXBsZTo6VmlkZW9S
b3RhdGlvbiwgaW50NjRfdCk7CiAKICAgICAvLyBydGM6OlZpZGVvU2lua0ludGVyZmFjZQogICAg
IHZvaWQgT25GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQppbmRleCA1MzdlYTBi
NTExMzFjY2MxYzg1ZDBiMDNlYzNhNzQyY2I2Mjc5NDZkLi5hMTA0N2EzZTgyYjhjMjE3ZTRkMDUz
NmJkNTRiMWE3MGVhYTE3YzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZUNvY29hLm1tCkBAIC0xMTgsNyArMTE4LDMzIEBAIENWUGl4ZWxCdWZmZXJQb29s
UmVmIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpwaXhlbEJ1ZmZlclBvb2woc2l6
ZV90IHdpCiAgICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXJQb29sLmdldCgpOwogfQogCi1SZXRhaW5Q
dHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OnBp
eGVsQnVmZmVyRnJvbVZpZGVvRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSkK
K1JlZlB0cjxNZWRpYVNhbXBsZT4gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OmNy
ZWF0ZU1lZGlhU2FtcGxlRnJvbUNWUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1
ZmZlciwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24sIGludDY0X3QgdGltZVN0
YW1wKQoreworICAgIENNU2FtcGxlVGltaW5nSW5mbyB0aW1pbmdJbmZvOworICAgIHRpbWluZ0lu
Zm8ucHJlc2VudGF0aW9uVGltZVN0YW1wID0gUEFMOjpDTVRpbWVNYWtlKHRpbWVTdGFtcCwgMTAw
MDAwMCk7CisgICAgdGltaW5nSW5mby5kZWNvZGVUaW1lU3RhbXAgPSBQQUw6OmtDTVRpbWVJbnZh
bGlkOworICAgIHRpbWluZ0luZm8uZHVyYXRpb24gPSBQQUw6OmtDTVRpbWVJbnZhbGlkOworCisg
ICAgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uOworICAgIE9T
U3RhdHVzIG9zdGF0dXMgPSBQQUw6OkNNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZUZvcklt
YWdlQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIChDVkltYWdlQnVmZmVyUmVmKXBpeGVsQnVm
ZmVyLCAmZm9ybWF0RGVzY3JpcHRpb24pOworICAgIGlmIChvc3RhdHVzICE9IG5vRXJyKSB7Cisg
ICAgICAgIEVSUk9SX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgIkZhaWxlZCB0
byBpbml0aWFsaXplIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbiB3aXRoIGVycm9yICIsIHN0YXRp
Y19jYXN0PGludD4ob3N0YXR1cykpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisK
KyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXI7CisgICAgb3N0YXR1cyA9IFBBTDo6
Q01TYW1wbGVCdWZmZXJDcmVhdGVSZWFkeVdpdGhJbWFnZUJ1ZmZlcihrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCAoQ1ZJbWFnZUJ1ZmZlclJlZilwaXhlbEJ1ZmZlciwgZm9ybWF0RGVzY3JpcHRpb24sICZ0
aW1pbmdJbmZvLCAmc2FtcGxlQnVmZmVyKTsKKyAgICBDRlJlbGVhc2UoZm9ybWF0RGVzY3JpcHRp
b24pOworICAgIGlmIChvc3RhdHVzICE9IG5vRXJyKSB7CisgICAgICAgIEVSUk9SX0xPR19JRihs
b2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgIkZhaWxlZCB0byBjcmVhdGUgdGhlIHNhbXBsZSBi
dWZmZXIgd2l0aCBlcnJvciAiLCBzdGF0aWNfY2FzdDxpbnQ+KG9zdGF0dXMpKTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byBzYW1wbGUgPSBhZG9wdENGKHNhbXBs
ZUJ1ZmZlcik7CisgICAgcmV0dXJuIE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKHNhbXBsZS5n
ZXQoKSwgcm90YXRpb24pOworfQorCitSZWZQdHI8TWVkaWFTYW1wbGU+IFJlYWx0aW1lSW5jb21p
bmdWaWRlb1NvdXJjZUNvY29hOjp0b1ZpZGVvRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1l
JiBmcmFtZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24pCiB7CiAgICAgaWYg
KG11dGVkKCkpIHsKICAgICAgICAgaWYgKCFtX2JsYWNrRnJhbWUgfHwgbV9ibGFja0ZyYW1lV2lk
dGggIT0gZnJhbWUud2lkdGgoKSB8fCBtX2JsYWNrRnJhbWVIZWlnaHQgIT0gZnJhbWUuaGVpZ2h0
KCkpIHsKQEAgLTEyNiwxMiArMTUyLDE2IEBAIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBS
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6cGl4ZWxCdWZmZXJGcm9tVmlkCiAgICAg
ICAgICAgICBtX2JsYWNrRnJhbWVIZWlnaHQgPSBmcmFtZS5oZWlnaHQoKTsKICAgICAgICAgICAg
IG1fYmxhY2tGcmFtZSA9IGNyZWF0ZUJsYWNrUGl4ZWxCdWZmZXIobV9ibGFja0ZyYW1lV2lkdGgs
IG1fYmxhY2tGcmFtZUhlaWdodCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1fYmxhY2tG
cmFtZS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU1lZGlhU2FtcGxlRnJvbUNWUGl4ZWxC
dWZmZXIobV9ibGFja0ZyYW1lLmdldCgpLCByb3RhdGlvbiwgZnJhbWUudGltZXN0YW1wX3VzKCkp
OwogICAgIH0KIAorICAgIC8vIEZJWE1FOiBEZXRlY3QgdGhlIGNhc2Ugb2YgZnJhbWUgaGF2aW5n
IGEgRnJhbWVCdWZmZXJQcm92aWRlci4KKyAgICBpZiAoYXV0byBwcm92aWRlciA9IHdlYnJ0Yzo6
dmlkZW9GcmFtZUJ1ZmZlclByb3ZpZGVyKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PE1lZGlhU2FtcGxlKj4ocHJvdmlkZXIpOworCiAgICAgLy8gSW4gY2FzZSBvZiBpbiBtZW1v
cnkgc2FtcGxlcywgd2UgaGF2ZSBub24gaW50ZXJsZWF2ZWQgWVVWIGRhdGEgd2hpbGUgQ1ZQaXhl
bEJ1ZmZlcnMgcHJlZmVyIGludGVybGVhdmVkIFlVViBkYXRhLgogICAgIC8vIE1heWJlIHdlIHNo
b3VsZCBpbnRyb2R1Y2UgYSBNZWRpYVNhbXBsZSB0aGF0IHdvdWxkIHJlcHJlc2VudCBub24gaW50
ZXJsZWF2ZWQgWVVWIGRhdGEgYXMgYW4gb3B0aW1pemF0aW9uLgotICAgIHJldHVybiBhZG9wdENG
KHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUsIFt0aGlzXShzaXplX3Qg
d2lkdGgsIHNpemVfdCBoZWlnaHQsIHdlYnJ0Yzo6QnVmZmVyVHlwZSBidWZmZXJUeXBlKSAtPiBD
VlBpeGVsQnVmZmVyUmVmIHsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gYWRvcHRDRih3ZWJydGM6
OmNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZyYW1lKGZyYW1lLCBbdGhpc10oc2l6ZV90IHdpZHRoLCBz
aXplX3QgaGVpZ2h0LCB3ZWJydGM6OkJ1ZmZlclR5cGUgYnVmZmVyVHlwZSkgLT4gQ1ZQaXhlbEJ1
ZmZlclJlZiB7CiAgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXJQb29sID0gdGhpcy0+cGl4ZWxCdWZm
ZXJQb29sKHdpZHRoLCBoZWlnaHQsIGJ1ZmZlclR5cGUpOwogICAgICAgICBpZiAoIXBpeGVsQnVm
ZmVyUG9vbCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTQ1LDE4ICsxNzUsMTkg
QEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJj
ZUNvY29hOjpwaXhlbEJ1ZmZlckZyb21WaWQKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcGl4
ZWxCdWZmZXI7CiAgICAgfSkpOworICAgIHJldHVybiBjcmVhdGVNZWRpYVNhbXBsZUZyb21DVlBp
eGVsQnVmZmVyKHBpeGVsQnVmZmVyLmdldCgpLCByb3RhdGlvbiwgZnJhbWUudGltZXN0YW1wX3Vz
KCkpOwogfQogCi12b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpPbkZyYW1l
KGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhbWUpCit2b2lkIFJlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZUNvY29hOjpPbkZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgd2VicnRj
VmlkZW9GcmFtZSkKIHsKICAgICBpZiAoIWlzUHJvZHVjaW5nRGF0YSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICB1bnNpZ25lZCB3aWR0aCA9IGZyYW1lLndpZHRoKCk7Ci0gICAgdW5zaWduZWQg
aGVpZ2h0ID0gZnJhbWUuaGVpZ2h0KCk7CisgICAgdW5zaWduZWQgd2lkdGggPSB3ZWJydGNWaWRl
b0ZyYW1lLndpZHRoKCk7CisgICAgdW5zaWduZWQgaGVpZ2h0ID0gd2VicnRjVmlkZW9GcmFtZS5o
ZWlnaHQoKTsKIAogICAgIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uOwotICAg
IHN3aXRjaCAoZnJhbWUucm90YXRpb24oKSkgeworICAgIHN3aXRjaCAod2VicnRjVmlkZW9GcmFt
ZS5yb3RhdGlvbigpKSB7CiAgICAgY2FzZSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzA6CiAgICAg
ICAgIHJvdGF0aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmU7CiAgICAgICAg
IGJyZWFrOwpAQCAtMTc0LDQwICsyMDUsMTUgQEAgdm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9T
b3VyY2VDb2NvYTo6T25GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lKQogICAg
IH0KIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIEFMV0FZU19MT0dfSUYobG9nZ2Vy
UHRyKCkgJiYgISgrK21fbnVtYmVyT2ZGcmFtZXMgJSA2MCksIExPR0lERU5USUZJRVIsICJmcmFt
ZSAiLCBtX251bWJlck9mRnJhbWVzLCAiLCByb3RhdGlvbiAiLCBmcmFtZS5yb3RhdGlvbigpLCAi
IHNpemUgIiwgd2lkdGgsICJ4IiwgaGVpZ2h0KTsKKyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0
cigpICYmICEoKyttX251bWJlck9mRnJhbWVzICUgNjApLCBMT0dJREVOVElGSUVSLCAiZnJhbWUg
IiwgbV9udW1iZXJPZkZyYW1lcywgIiwgcm90YXRpb24gIiwgd2VicnRjVmlkZW9GcmFtZS5yb3Rh
dGlvbigpLCAiIHNpemUgIiwgd2lkdGgsICJ4IiwgaGVpZ2h0KTsKICNlbmRpZgogCi0gICAgYXV0
byBwaXhlbEJ1ZmZlciA9IHBpeGVsQnVmZmVyRnJvbVZpZGVvRnJhbWUoZnJhbWUpOwotICAgIGlm
ICghcGl4ZWxCdWZmZXIpIHsKLSAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJ
REVOVElGSUVSLCAiRmFpbGVkIHRvIGdldCBhIHBpeGVsIGJ1ZmZlciBmcm9tIGEgZnJhbWUiKTsK
KyAgICBhdXRvIHZpZGVvRnJhbWUgPSB0b1ZpZGVvRnJhbWUod2VicnRjVmlkZW9GcmFtZSwgcm90
YXRpb24pOworICAgIGlmICghdmlkZW9GcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIENNU2FtcGxlVGltaW5nSW5mbyB0aW1pbmdJbmZvOwotICAgIHRpbWluZ0luZm8ucHJlc2Vu
dGF0aW9uVGltZVN0YW1wID0gUEFMOjpDTVRpbWVNYWtlKGZyYW1lLnRpbWVzdGFtcF91cygpLCAx
MDAwMDAwKTsKLSAgICB0aW1pbmdJbmZvLmRlY29kZVRpbWVTdGFtcCA9IFBBTDo6a0NNVGltZUlu
dmFsaWQ7Ci0gICAgdGltaW5nSW5mby5kdXJhdGlvbiA9IFBBTDo6a0NNVGltZUludmFsaWQ7Ci0K
LSAgICBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb247Ci0gICAg
T1NTdGF0dXMgb3N0YXR1cyA9IFBBTDo6Q01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlRm9y
SW1hZ2VCdWZmZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKENWSW1hZ2VCdWZmZXJSZWYpcGl4ZWxC
dWZmZXIsICZmb3JtYXREZXNjcmlwdGlvbik7Ci0gICAgaWYgKG9zdGF0dXMgIT0gbm9FcnIpIHsK
LSAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAiRmFpbGVk
IHRvIGluaXRpYWxpemUgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uIHdpdGggZXJyb3IgIiwgc3Rh
dGljX2Nhc3Q8aW50Pihvc3RhdHVzKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBD
TVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXI7Ci0gICAgb3N0YXR1cyA9IFBBTDo6Q01TYW1w
bGVCdWZmZXJDcmVhdGVSZWFkeVdpdGhJbWFnZUJ1ZmZlcihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAo
Q1ZJbWFnZUJ1ZmZlclJlZilwaXhlbEJ1ZmZlciwgZm9ybWF0RGVzY3JpcHRpb24sICZ0aW1pbmdJ
bmZvLCAmc2FtcGxlQnVmZmVyKTsKLSAgICBDRlJlbGVhc2UoZm9ybWF0RGVzY3JpcHRpb24pOwot
ICAgIGlmIChvc3RhdHVzICE9IG5vRXJyKSB7Ci0gICAgICAgIEVSUk9SX0xPR19JRihsb2dnZXJQ
dHIoKSwgTE9HSURFTlRJRklFUiwgIkZhaWxlZCB0byBjcmVhdGUgdGhlIHNhbXBsZSBidWZmZXIg
d2l0aCBlcnJvciAiLCBzdGF0aWNfY2FzdDxpbnQ+KG9zdGF0dXMpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGF1dG8gc2FtcGxlID0gYWRvcHRDRihzYW1wbGVCdWZmZXIpOwogCiAg
ICAgc2V0SW50cmluc2ljU2l6ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKLQotICAgIHZpZGVv
U2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKHNhbXBsZS5nZXQoKSwg
cm90YXRpb24pLCBtZXRhZGF0YUZyb21WaWRlb0ZyYW1lKGZyYW1lKSk7CisgICAgdmlkZW9TYW1w
bGVBdmFpbGFibGUoKnZpZGVvRnJhbWUsIG1ldGFkYXRhRnJvbVZpZGVvRnJhbWUod2VicnRjVmlk
ZW9GcmFtZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVv
U291cmNlQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcAppbmRleCA1OGM2YmRlNDM0NjZl
ZDM4Yzc3YmU2NzVhMmI3MjEyM2Q3MmU3MTIyLi5hMzc1OTVlYjM2OTMwOGM1Njc4NjZmNzg4MzQx
NmUzYzhkZWZmYTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2VDb2NvYS5jcHAKQEAgLTgzLDggKzgzLDggQEAgdm9pZCBSZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2VDb2NvYTo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgQVNTRVJUKHNhbXBsZS5wbGF0Zm9ybVNhbXBs
ZSgpLnR5cGUgPT0gUGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZSk7Ci0gICAgYXV0
byBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01TYW1w
bGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuY21T
YW1wbGVCdWZmZXIpKTsKKyAgICAvLyBGSVhNRTogT3B0aW1pemUgdGhlIGNhc2Ugb2YgUGxhdGZv
cm1TYW1wbGU6OlJlbW90ZVZpZGVvRnJhbWVQcm94eVR5cGUuCisgICAgYXV0byBwaXhlbEJ1ZmZl
ciA9IHNhbXBsZS5waXhlbEJ1ZmZlcigpOwogICAgIGF1dG8gcGl4ZWxGb3JtYXRUeXBlID0gQ1ZQ
aXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShwaXhlbEJ1ZmZlcik7CiAKICAgICBSZXRhaW5Q
dHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gY29udmVydGVkQnVmZmVyID0gcGl4ZWxCdWZmZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCmluZGV4IDVjYjYwYjllZjZlZjU3YTQz
YjRlZWY3MmExMzc2NzliMWFlYmQ2NWIuLjRhYzY5YWNkOWEwMGNmNmUxOTlhMzNhYWM0NzNkOGNk
ODVkYzVlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBAIC01
OCwxMCArNTgsOSBAQCBwcml2YXRlOgogICAgIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9ib3guZGVjb2RlVGltZXN0YW1wKCk7IH0KICAgICBNZWRpYVRp
bWUgZHVyYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JveC5kdXJhdGlvbigpOyB9
CiAgICAgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsg
fQotICAgIHZvaWQgc2V0VHJhY2tJRChjb25zdCBTdHJpbmcmIGlkKSBvdmVycmlkZSB7IG1faWQg
PSBpZDsgfQogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHNpemVvZihtX2JveCk7IH0KICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRl
OwotICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgb3ZlcnJpZGU7CisgICAgUGxh
dGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9w
dGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3Rk
OjpudWxsb3B0OyB9CiAgICAgRmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBGbG9hdFNpemUoKTsgfQogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYp
IGNvbnN0IG92ZXJyaWRlOwpAQCAtODcsNyArODYsNyBAQCBNZWRpYVNhbXBsZTo6U2FtcGxlRmxh
Z3MgTW9ja01lZGlhU2FtcGxlOjpmbGFncygpIGNvbnN0CiAgICAgcmV0dXJuIFNhbXBsZUZsYWdz
KGZsYWdzKTsKIH0KIAotUGxhdGZvcm1TYW1wbGUgTW9ja01lZGlhU2FtcGxlOjpwbGF0Zm9ybVNh
bXBsZSgpCitQbGF0Zm9ybVNhbXBsZSBNb2NrTWVkaWFTYW1wbGU6OnBsYXRmb3JtU2FtcGxlKCkg
Y29uc3QKIHsKICAgICBQbGF0Zm9ybVNhbXBsZSBzYW1wbGUgPSB7IFBsYXRmb3JtU2FtcGxlOjpN
b2NrU2FtcGxlQm94VHlwZSwgeyAmbV9ib3ggfSB9OwogICAgIHJldHVybiBzYW1wbGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFr
ZUxpc3RzLnR4dAppbmRleCAyOWY0Yzc4MTgxODBkZTJjYjI0OTUwNzJlODQ2MGE1MGFkMzY0YTQw
Li45NzZmNjNlMmNkYmFjYWM2ODBhODY4M2ZiZmQxZTU0OThkZTgwODY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0
cy50eHQKQEAgLTE3OCw2ICsxNzgsNyBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAg
ICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5CiAgICAgR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJQcm94eQogICAgIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkKKyAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwCiAKICAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3NQcm94eQogICAgIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcgpAQCAtMjc5LDEwICsyODAsMTIgQEAgc2V0
KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbgor
ICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eQogICAgIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lcgogICAgIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUKIAogICAgIFdlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MKKyAgICBXZWJQcm9jZXNzL0dQVS93ZWJydGMvUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eQogICAgIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9T
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIKIAogICAgIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKaW5kZXggZjkyNzVmZjYxMzhjNDkxNDY5MGFjMGEwOWVkYzE2MGFjZTA5YWJm
NS4uYjI3ZTU0OWMxNTg4ZjZkZGIzNzg5MTQ1OWZiZGIyMmJmMmRiMjVjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtNjcsNiArNjcsNyBA
QCAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHku
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlUmVtb3Rl
Q29tbWFuZExpc3RlbmVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkubWVzc2FnZXMuaW4KKyQo
UFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAu
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9U
cmFja1Byb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL2lv
cy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4KQEAg
LTE5MSwxMCArMTkyLDEyIEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlUmVt
b3RlQ29tbWFuZExpc3RlbmVyLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENSZW1vdGVDb2RlY3MubWVzc2FnZXMuaW4KKyQoUFJP
SkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkubWVz
c2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0CmluZGV4IDkyZDIwNjA5OTM0MTc3YWVjOTdlODg2YzY2Y2U4ZDkxMzc4MjQwODMuLmM3MmNk
NjljNjE0YzY0NTRiNDcxYTFmZmIwMTJmYTE4OWIxODExNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMzgxLDYgKzM4MSwxNSBAQCAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVRleHR1cmVN
ZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdC9SZW1vdGVUZXh0dXJlVmlld01lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVGV4dHVyZVZpZXdNZXNzYWdlcy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVRleHR1
cmVWaWV3TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VzUmVwbGllcy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJv
eHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFtZVByb3h5TWVzc2Fn
ZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQv
UmVtb3RlVmlkZW9UcmFja1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb1RyYWNrUHJveHlNZXNzYWdl
cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZp
ZGVvVHJhY2tQcm94eU1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggMjllNGM4NDY2MzQ1YjMzOTgzZGU3NDgyODdiOTQxNTQ2NDdmMjliZC4uYzNiZTQzYTk4
ODQ0ZmMwNWI4YjYxOTUzZWU4MTg0N2ZlZTE5ODBjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMu
bWFrZQpAQCAtMjAyLDkgKzIwMiwxMSBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24gXAogCVdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIgXAogCVdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24gXAorCVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZVZpZGVvRnJhbWVQcm94eSBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlUmVtb3RlQ29t
bWFuZExpc3RlbmVyIFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRl
UmVtb3RlIFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyIFwKKwlXZWJQcm9jZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQ
cm94eSBcCiAJV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwIFwKIAlXZWJQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlciBcCiAJV2ViUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlciBcCkBAIC0zMDAsNiArMzAy
LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eSBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyIFwK
KwlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwIFwKIAlHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkgXAogCUdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyUHJveHkgXAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
U291cmNlQnVmZmVyUHJveHkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDRkNTI0ZThiODY3OWE4MzBjNDVl
YjZiNWJjMTA0Yjc1NDEwNGI2M2UuLjc5MGEwZjJmNGU2MmJmYzU3NmIyNWY0Yjc1ZDY3MDE1NmE1
ODAwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTE0MSw2ICsxNDEsNyBAQAogI2VuZGlmCiAKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2VuZGlmCiAKQEAgLTIw
NSwyMCArMjA2LDIxIEBAIHByaXZhdGU6CiAgICAgICAgIG1fcHJvY2Vzcy5zZXRUQ0NJZGVudGl0
eSgpOwogICAgIH0KICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCiAgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZSB0eXBlKSBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKHR5cGUgIT0gUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8pCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1f
cHJvY2Vzcy5zdGFydENhcHR1cmluZ0F1ZGlvKCk7CiAgICAgfQotI2VuZGlmCiAKICAgICBjb25z
dCBQcm9jZXNzSWRlbnRpdHkmIHJlc291cmNlT3duZXIoKSBjb25zdCBmaW5hbAogICAgIHsKICAg
ICAgICAgcmV0dXJuIG1fcHJvY2Vzcy53ZWJQcm9jZXNzSWRlbnRpdHkoKTsKICAgICB9CiAKKyAg
ICBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCogcmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAo
KSBmaW5hbCB7IHJldHVybiAmbV9wcm9jZXNzLnZpZGVvRnJhbWVPYmplY3RIZWFwKCk7IH0KKwog
ICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fcHJvY2VzczsKIH07CiAKQEAgLTIzNiwx
NSArMjM4LDE4IEBAIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoR1BVUHJvY2VzcyYgZ3B1UHJvY2VzcywgV2ViCiAgICAgLCBtX3dlYlByb2Nlc3NJ
ZGVudGl0eShXVEZNb3ZlKHBhcmFtZXRlcnMud2ViUHJvY2Vzc0lkZW50aXR5KSkKICAgICAsIG1f
cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkobWFrZVVuaXF1ZVJlZjxSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eT4oKnRoaXMpKQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQot
I2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQotICAgICwgbV9saWJXZWJSVEND
b2RlY3NQcm94eShMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlKCp0aGlzKSkKLSNlbmRpZgog
I2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgICwgbV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ck1hbmFnZXI6OmNyZWF0ZSgqdGhpcykpCiAjZW5kaWYKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogICAgICwgbV9jYXB0dXJlT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSkK
ICNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgLCBtX3ZpZGVvRnJhbWVPYmpl
Y3RIZWFwKFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpjcmVhdGUoKnRoaXMpKQorI2VuZGlm
CisjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCisgICAgLCBtX2xpYldlYlJU
Q0NvZGVjc1Byb3h5KExpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGUoKnRoaXMpKQorI2VuZGlm
CiAjaWYgSEFWRShBVURJVF9UT0tFTikKICAgICAsIG1fcHJlc2VudGluZ0FwcGxpY2F0aW9uQXVk
aXRUb2tlbihXVEZNb3ZlKHBhcmFtZXRlcnMucHJlc2VudGluZ0FwcGxpY2F0aW9uQXVkaXRUb2tl
bikpCiAjZW5kaWYKQEAgLTMwMCw3ICszMDUsOSBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICAgICAgICAgbV9h
dWRpb1Nlc3Npb25Qcm94eSA9IG51bGxwdHI7CiAgICAgfQogI2VuZGlmCi0KKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorICAgIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAucmVzZXQoKTsKKyNlbmRp
ZgogICAgIC8vIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgb2JqZWN0cyByZWYgdGhlaXIgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZQogICAgIC8vIHRvIGJy
ZWFrIHRoZSByZWZlcmVuY2UgY3ljbGUgYnkgZGVzdHJveWluZyB0aGVtLgogICAgIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZE1hcC5jbGVhcigpOwpAQCAtOTQxLDggKzk0OCwxNSBAQCBib29sIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENhcHR1cmVBdHRyaWJ1dGlvblN0cmluZygpIGNv
bnN0CiB7CiB9CiAjZW5kaWYKKworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAmIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnZpZGVvRnJhbWVPYmplY3RIZWFwKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gKm1fdmlkZW9GcmFtZU9iamVjdEhlYXAuZ2V0KCk7Cit9CisKICNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU1RSRUFNKQogCisKICNpZiBQTEFURk9STShNQUMpCiB2b2lkIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpc3BsYXlDb25maWd1cmF0aW9uQ2hhbmdlZChDR0RpcmVjdERpc3Bs
YXlJRCwgQ0dEaXNwbGF5Q2hhbmdlU3VtbWFyeUZsYWdzIGZsYWdzKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXgg
NjI0ZTNmYTM1MWNmMGIwMzVlMmUxM2E5MzMyNWRkZDRjMzQyYjE0OS4uZmIyMDI2ZDEwMTNjNzk4
NWYwZmFhYWQ4ZGQ4NGI0OWQxMTYzNDRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xMDYsNiArMTA2LDExIEBA
IHN0cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOwogY2xhc3Mg
UmVtb3RlV0NMYXllclRyZWVIb3N0OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CisjZW5kaWYKKworCiBjbGFzcyBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAgICAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcywgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFp
bj4KICAgICAsIHB1YmxpYyBXZWJDb3JlOjpOb3dQbGF5aW5nTWFuYWdlcjo6Q2xpZW50CkBAIC0x
NDEsNiArMTQ2LDcgQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dzQXVkaW9DYXB0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9hbGxvd3NBdWRpb0NhcHR1cmU7IH0KICAgICBib29sIGFsbG93c1ZpZGVv
Q2FwdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzVmlkZW9DYXB0dXJlOyB9CiAgICAgYm9v
bCBhbGxvd3NEaXNwbGF5Q2FwdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzRGlzcGxheUNh
cHR1cmU7IH0KKyAgICBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCYgdmlkZW9GcmFtZU9iamVj
dEhlYXAoKSBjb25zdDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShN
RURJQV9TVFJFQU0pCkBAIC0yODgsOSArMjk0LDYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI+IG1fcmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXI7CiAgICAgVW5pcXVlUmVmPFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5PiBtX3Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OwogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lv
bklEOwotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQotICAgIFJlZjxMaWJX
ZWJSVENDb2RlY3NQcm94eT4gbV9saWJXZWJSVENDb2RlY3NQcm94eTsKLSNlbmRpZgogI2lmIFBM
QVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIHN0ZDo6dW5pcXVlX3B0
cjxVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5PiBtX3VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcj4gbV9hdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdE1hbmFnZXI7CkBAIC0zMDUsNiArMzA4LDEwIEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2FsbG93c0F1ZGlvQ2FwdHVyZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2FsbG93c1Zp
ZGVvQ2FwdHVyZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2FsbG93c0Rpc3BsYXlDYXB0dXJlIHsg
ZmFsc2UgfTsKKyAgICBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFtZU9iamVjdEhlYXA7CisjZW5kaWYKKyNp
ZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykKKyAgICBSZWY8TGliV2ViUlRDQ29k
ZWNzUHJveHk+IG1fbGliV2ViUlRDQ29kZWNzUHJveHk7CiAjZW5kaWYKICNpZiBIQVZFKEFVRElU
X1RPS0VOKQogICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gbV9wcmVzZW50aW5nQXBw
bGljYXRpb25BdWRpdFRva2VuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXggZWNiNGI1
NzY3Y2M5YThlMjY4NjQ2ZGNlMzlkMjY2MmMzNDJjMzNiNi4uOTgwMDU3OGI1MjA4NDMxN2U4ODY1
MmRmYzUyYzc2Y2MxYzJmZjQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC00Miw2
ICs0MiwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xDVi5oPgogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwpAQCAtNjgsNiArNzIsOSBAQCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1
QwogICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6
Y3JlYXRlKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLCBXVEZNb3ZlKHN0
cmVhbSksIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkpKQogICAgICwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KQogICAgICwgbV9yZW5kZXJpbmdCYWNrZW5kKHJlbmRlcmluZ0JhY2tlbmQpCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKyAgICAsIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAoZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2Vzcy52aWRlb0ZyYW1lT2JqZWN0SGVhcCgpKQorI2VuZGlmCiAgICAgLCBtX3Jl
bmRlcmluZ1Jlc291cmNlc1JlcXVlc3QoU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1
ZXN0OjphY3F1aXJlKCkpCiAgICAgLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKGdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3Mud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSkKIHsKQEAgLTIyMyw2ICsyMzAs
MTQgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0
c1RvQ2FudmFzV2l0aFF1YWxpZmllZElkZW50aWYKICAgICBwYWludFBpeGVsQnVmZmVyVG9JbWFn
ZUJ1ZmZlcihtX2NvbnRleHQtPnJlYWRDb21wb3NpdGVkUmVzdWx0c0ZvclBhaW50aW5nKCksIGlt
YWdlQnVmZmVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRDb21wb3Np
dGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJiYg
d3JpdGUpCit7CisgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKKyAgICBtX3Zp
ZGVvRnJhbWVPYmplY3RIZWFwLT5hZGRWaWRlb0ZyYW1lKFdURk1vdmUod3JpdGUpLCBtX2NvbnRl
eHQtPnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkpOworfQorI2VuZGlmCisK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBhaW50UGl4ZWxCdWZmZXJUb0ltYWdlQnVm
ZmVyKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+JiYgcGl4ZWxCdWZmZXIsIFF1
YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciB0YXJnZXQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhc3NlcnRJc0N1cnJlbnQo
bV9zdHJlYW1UaHJlYWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCBlYjIwZDE2YzM3N2Y1
ZjNlMDA3ZjIxYmEyNTYyNGRkMTllMzZiYjE3Li4xMGMwNjM2MTg2N2Q1ZTg4M2ViOWQ2YTg1MzI1
Y2Q5MTBmYmRlMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtNTQsNiArNTQsMTAgQEAK
ICNpbmNsdWRlICJXQ0NvbnRlbnRCdWZmZXJJZGVudGlmaWVyLmgiCiAjZW5kaWYKIAorI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIu
aCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNz
IE1hY2hTZW5kUmlnaHQ7CkBAIC02MSw2ICs2NSw5IEBAIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiAj
ZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK2Ns
YXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOworI2VuZGlmCiAKIC8vIEdQVSBwcm9jZXNz
IHNpZGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdlcyBhYm91dCBHcmFw
aGljc0NvbnRleHRHTCBjYWxscwogLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBoaWNzQ29udGV4dEdM
IGNhbGxzIGJhc2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KQEAgLTEwOCw2ICsxMTUsOSBA
QCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcih1aW50MzJfdCBlcnJvcik7
CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisgICAgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNh
bXBsZShSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UmJik7CisjZW5kaWYKICAgICB2b2lk
IGNvcHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciwgdWlu
dDMyX3QgdGV4dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBp
bnRlcm5hbEZvcm1hdCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11
bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwogICAgIHZvaWQgc2ltdWxhdGVFdmVudEZvclRlc3RpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0w6OlNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZyk7CiAKQEAgLTEzMCw2ICsxNDAsOSBAQCBw
cm90ZWN0ZWQ6CiAgICAgUmVmUHRyPFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0w+IG1fY29udGV4
dCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fc3RyZWFtVGhyZWFkKTsKICAgICBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXI7CiAgICAgUmVmPFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ+IG1fcmVuZGVyaW5nQmFja2VuZDsKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorICAgIFJlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gbV92aWRlb0Zy
YW1lT2JqZWN0SGVhcDsKKyNlbmRpZgogICAgIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2Vz
UmVxdWVzdCBtX3JlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3Q7CiAgICAgTk9fVU5JUVVFX0FERFJF
U1MgVGhyZWFkQXNzZXJ0aW9uIG1fc3RyZWFtVGhyZWFkOwogICAgIFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wubWVzc2FnZXMuaW4KaW5kZXggYzhhYjI5NzcyOTMwYmZkNDA4YTAzY2ViMzdhMGMyOTg5
OGUzMDJiMi4uOTA5N2I0MjcwYmY1M2RhMjRjMDkzYTU3ZWEzY2NiMTdhMjkwN2ZmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpAQCAtNDIsNiArNDIsOSBAQCBt
ZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7
CiAgICAgdm9pZCBQYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCiAgICAg
dm9pZCBQYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyKSAtPiAoKSBTeW5jaHJvbm91cwogICAgIHZvaWQg
Q29weVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIHVpbnQzMl90IHRleHR1cmUsIHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
dWludDMyX3QgaW50ZXJuYWxGb3JtYXQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwg
Ym9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSAtPiAoYm9vbCBzdWNjZXNzKSBTeW5j
aHJvbm91cworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgdm9pZCBQYWludENvbXBvc2l0
ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZShXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVy
ZW5jZSByZXN1bHQpCisjZW5kaWYKICAgICB2b2lkIFNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcgZXZlbnQp
CiAKICAgICB2b2lkIE1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpIC0+IChib29sIHJl
dHVyblZhbHVlKSBTeW5jaHJvbm91cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODc1NjNhMTZkMzVkOTQ1N2JjMGMwMWRjMTE3M2NlNjY2OWExMmMxZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcC5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCIKKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXBNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJv
eHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94eS5oIgorI2luY2x1
ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94eU1lc3NhZ2VzLmgiCisKKyNpbmNsdWRlIDxwYWwvY2Yv
Q29yZU1lZGlhU29mdExpbmsuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JlZjxSZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcD4gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmNyZWF0ZShH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uVG9XZWJQcm9jZXNzKQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKGNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MpKTsKK30KKworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OlJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MpCisgICAgOiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoJmNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgLCBtX2Nvbm5lY3Rpb24obV9ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkpCit7CisgICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsK
K30KKworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6On5SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcCgpCit7CisgICAgQVNTRVJUKCFtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOworfQor
Cit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpzdG9wTGlzdGVuaW5nRm9ySVBDKFJl
ZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4mJiByZWZGcm9tQ29ubmVjdGlvbikKK3sKKyAg
ICBhc3NlcnRJc0N1cnJlbnQobV9jb25zdW1lVGhyZWFkKTsKKyAgICBtX3NoYXJlZFZpZGVvRnJh
bWVXcml0ZXIuZGlzYWJsZSgpOworCisgICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MgPSBzdGQ6OmV4Y2hhbmdlKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgbnVsbHB0
cikpIHsKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVy
TWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICAgICAgLy8gQ2xpZW50cyBtaWdo
dCBob2xkIG9uIHRvIHRoZSByZWYgYWZ0ZXIgdGhpcyBoYXBwZW5zLiBUaGV5IHNob3VsZCBhbHNv
IHN0b3AgdGhlbXNlbHZlcywgYnV0IGlmIHRoZXkgZG8gbm90LAorICAgICAgICAvLyBhdm9pZCBi
aWcgbWVtb3J5IGxlYWtzIGJ5IGNsZWFyaW5nIHRoZSBmcmFtZXMuIFRoZSBjbGllbnRzIHNob3Vs
ZCBmYWlsIGdyYWNlZnVsbHkgKGRvIG5vdGhpbmcpIGluIGNhc2UgdGhleSBmYWlsIHRvIGxvb2sg
dXAKKyAgICAgICAgLy8gZnJhbWVzLgorICAgICAgICBjbGVhcigpOworICAgICAgICAvLyBUT0RP
OiBhZGQgY2FuIGhhcHBlbiBhZnRlciBzdG9wcGluZy4KKyAgICB9Cit9Cit2b2lkIFJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwOjphZGRWaWRlb0ZyYW1lKFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJl
ZmVyZW5jZSYmIHdyaXRlLCBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYgZnJhbWUpCit7
CisgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM+IHJl
c3VsdDsKKyAgICBpZiAoZnJhbWUpCisgICAgICAgIHJlc3VsdCA9IFJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6cHJvcGVydGllcygqZnJhbWUpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpXYXNJbml0aWFsaXplZChyZXN1bHQpLCAgd3JpdGUu
aWRlbnRpZmllcigpLm9iamVjdCgpLnRvVUludDY0KCkpOworICAgIHJldGlyZShXVEZNb3ZlKHdy
aXRlKSwgV1RGTW92ZShmcmFtZSksIHN0ZDo6bnVsbG9wdCk7Cit9CisKK1JlbW90ZVZpZGVvRnJh
bWVJZGVudGlmaWVyIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpjcmVhdGVSZW1vdGVWaWRl
b0ZyYW1lKFJlZjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4mJiBmcmFtZSkKK3sKKyAgICBhdXRvIGlk
ZW50aWZpZXIgPSBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcjo6Z2VuZXJhdGVUaHJlYWRTYWZl
KCk7CisgICAgYWRkKGlkZW50aWZpZXIsIFdURk1vdmUoZnJhbWUpKTsKKyAgICByZXR1cm4gaWRl
bnRpZmllcjsKK30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6cmVsZWFzZVZp
ZGVvRnJhbWUoUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJiYgd3JpdGUpCit7CisgICAg
YXNzZXJ0SXNDdXJyZW50KG1fY29uc3VtZVRocmVhZCk7CisgICAgcmV0aXJlUmVtb3ZlKFdURk1v
dmUod3JpdGUpKTsKK30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6Z2V0Vmlk
ZW9GcmFtZUJ1ZmZlcihSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSYmIHJlYWQpCit7Cisg
ICAgYXV0byBpZGVudGlmaWVyID0gcmVhZC5pZGVudGlmaWVyKCk7CisgICAgYXV0byBtZWRpYVNh
bXBsZSA9IHJldGlyZShXVEZNb3ZlKHJlYWQpLCAwX3MpOworCisgICAgaWYgKCFtZWRpYVNhbXBs
ZSkKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcFByb3h5OjpWaWRlb0ZyYW1lQnVmZmVyTm90Rm91bmQgeyBpZGVudGlmaWVyIH0s
IDApOworCisgICAgYXV0byBwbGF0Zm9ybVNhbXBsZSA9IG1lZGlhU2FtcGxlLT5wbGF0Zm9ybVNh
bXBsZSgpOworICAgIEFTU0VSVChwbGF0Zm9ybVNhbXBsZS50eXBlID09IFBsYXRmb3JtU2FtcGxl
OjpDTVNhbXBsZUJ1ZmZlclR5cGUpOworCisgICAgbV9zaGFyZWRWaWRlb0ZyYW1lV3JpdGVyLndy
aXRlKHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRJ
bWFnZUJ1ZmZlcihwbGF0Zm9ybVNhbXBsZS5zYW1wbGUuY21TYW1wbGVCdWZmZXIpKSwKKyAgICAg
ICAgWyZdKGF1dG8mIHNlbWFwaG9yZSkgeyBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk6OlNldFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhv
cmUgeyBzZW1hcGhvcmUgfSwgMCk7IH0sCisgICAgICAgIFsmXShhdXRvJiBoYW5kbGUpIHsgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5
OjpTZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5IHsgaGFuZGxlIH0sIDApOyB9CisgICAgKTsKKyAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
UHJveHk6Ok5ld1ZpZGVvRnJhbWVCdWZmZXIgeyBpZGVudGlmaWVyIH0sIDApOworfQorCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWY5ZDI5YWE4ODRmYWI2
Y2Y5MjU3NzkxOTcyMmU0NTFhZTU0ZmY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgKQEAgLTAsMCAr
MSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU2hhcmVkVmlkZW9GcmFtZS5oIgorI2luY2x1ZGUgIlRo
cmVhZFNhZmVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNhbXBsZS5oPgor
I2luY2x1ZGUgPHd0Zi9UaHJlYWRBc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
Y2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKKworLy8gSG9sZHMgcmVmZXJlbmNlcyB0
byBhbGwgVmlkZW9GcmFtZSBpbnN0YW5jZXMgdGhhdCBhcmUgbWFwcGVkIGZyb20gV2ViIHByb2Nl
c3MgdG8gR1BVIHByb2Nlc3MgdHdvIHByb2Nlc3Nlcy4KKy8vIEFzIGN1cnJlbnRseSB0aGVyZSBp
cyBubyBzcGVjaWFsIHN0YXRlIGZvciBSZW1vdGVWaWRlb0ZyYW1lLCB0aGUgb2JqZWN0IGhlYXAg
c3RvcmVzIFZpZGVvRnJhbWUgaW5zdGFuY2VzIChNZWRpYVNhbXBsZSkuCisvLyBBcyBjdXJyZW50
bHkgdGhlcmUgaXMgbm8gUmVtb3RlVmlkZW9GcmFtZSwgcmVzcG9uc2libGUgZm9yIGRpc3BhdGNo
aW5nIHRoZSBWaWRlb0ZyYW1lIG1ldGhvZHMgdG8gdGhlIG9iamVjdHMuCisvLyBDb25zdW1lIHRo
cmVhZCBpcyB0aGUgdGhyZWFkIHRoYXQgdXNlcyB0aGUgVmlkZW9GcmFtZS4gRm9yIEdQVVAgdGhp
cyBpcyB0aGUgbWVkaWEgcGxheWVyIHRocmVhZCwgdGhlIG1haW4gdGhyZWFkLgorLy8gRklYTUU6
IGN1cnJlbnRseSBWaWRlb0ZyYW1lIGluc3RhbmNlcyBhcmUgTWVkaWFTYW1wbGUgaW5zdGFuY2Vz
LgorY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAgZmluYWwgOiBwdWJsaWMgVGhyZWFk
U2FmZU9iamVjdEhlYXA8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJDb3Jl
OjpNZWRpYVNhbXBsZT4+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBjcmVhdGUoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYpOworICAgIH5SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCgp
OworCisgICAgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgY3JlYXRlUmVtb3RlVmlkZW9GcmFt
ZShSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYpOworICAgIHZvaWQgYWRkVmlkZW9GcmFtZShS
ZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UmJiwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2Ft
cGxlPiYmKTsKKworICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8UmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXA+JiYgcmVmRnJvbUNvbm5lY3Rpb24pOworCitwcml2YXRlOgorICAgIFJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKKwor
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAg
Ly8gTWVzc2FnZXMuCisgICAgdm9pZCByZWxlYXNlVmlkZW9GcmFtZShSZW1vdGVWaWRlb0ZyYW1l
V3JpdGVSZWZlcmVuY2UmJik7CisgICAgdm9pZCBnZXRWaWRlb0ZyYW1lQnVmZmVyKFJlbW90ZVZp
ZGVvRnJhbWVSZWFkUmVmZXJlbmNlJiYpOworCisgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyogbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jb25z
dW1lVGhyZWFkKTsKKyAgICBjb25zdCBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247
CisgICAgVGhyZWFkQXNzZXJ0aW9uIG1fY29uc3VtZVRocmVhZCBOT19VTklRVUVfQUREUkVTUzsK
KyAgICBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyIG1fc2hhcmVkVmlkZW9GcmFtZVdyaXRlcjsKK307
CisKKworCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5tZXNzYWdlcy5p
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xZDNkMjQzZTE1MTc1ZWZmOWM4ZDdlZmNiYmJkMGIxNTJkZTVjYTYyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjkgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShNRURJQV9TVFJFQU0pCittZXNzYWdlcyAtPiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcCBOb3RSZWZDb3VudGVkIHsKKyAgICBHZXRWaWRlb0ZyYW1lQnVmZmVyKFdlYktpdDo6UmVt
b3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UgaWRlbnRpZmllcikKKyAgICBSZWxlYXNlVmlkZW9G
cmFtZShXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSBpZGVudGlmaWVyKQor
fQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xp
YldlYlJUQ0NvZGVjc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xp
YldlYlJUQ0NvZGVjc1Byb3h5LmgKaW5kZXggYzc3MmNiNzc2MGYyZDU4MjlhZmNkMmI4NWY1OTEz
YTMwYzAwNzQ0NC4uYjc1ODUwYjkzMjliOTcxOGNmNTU1ZGQ2OWJlMmU3MTg0MDA0ZTMyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzUHJveHkuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJSVENEZWNvZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJUQ0VuY29kZXJJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlICJTaGFyZWRWaWRlb0ZyYW1lLmgiCiAj
aW5jbHVkZSA8d3RmL0xvY2suaD4KQEAgLTUzLDYgKzU0LDcgQEAgdXNpbmcgTG9jYWxFbmNvZGVy
ID0gdm9pZCo7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzczsKK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOwogY2xhc3MgU2hhcmVk
VmlkZW9GcmFtZVJlYWRlcjsKIAogY2xhc3MgTGliV2ViUlRDQ29kZWNzUHJveHkgOiBwdWJsaWMg
SVBDOjpDb25uZWN0aW9uOjpUaHJlYWRNZXNzYWdlUmVjZWl2ZXJSZWZDb3VudGVkIHsKQEAgLTcz
LDkgKzc1LDkgQEAgcHJpdmF0ZToKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBm
aW5hbDsKLSAgICB2b2lkIGNyZWF0ZUgyNjREZWNvZGVyKFJUQ0RlY29kZXJJZGVudGlmaWVyKTsK
LSAgICB2b2lkIGNyZWF0ZUgyNjVEZWNvZGVyKFJUQ0RlY29kZXJJZGVudGlmaWVyKTsKLSAgICB2
b2lkIGNyZWF0ZVZQOURlY29kZXIoUlRDRGVjb2RlcklkZW50aWZpZXIpOworICAgIHZvaWQgY3Jl
YXRlSDI2NERlY29kZXIoUlRDRGVjb2RlcklkZW50aWZpZXIsIGJvb2wgdXNlUmVtb3RlRnJhbWVz
KTsKKyAgICB2b2lkIGNyZWF0ZUgyNjVEZWNvZGVyKFJUQ0RlY29kZXJJZGVudGlmaWVyLCBib29s
IHVzZVJlbW90ZUZyYW1lcyk7CisgICAgdm9pZCBjcmVhdGVWUDlEZWNvZGVyKFJUQ0RlY29kZXJJ
ZGVudGlmaWVyLCBib29sIHVzZVJlbW90ZUZyYW1lcyk7CiAgICAgdm9pZCByZWxlYXNlRGVjb2Rl
cihSVENEZWNvZGVySWRlbnRpZmllcik7CiAgICAgdm9pZCBkZWNvZGVGcmFtZShSVENEZWNvZGVy
SWRlbnRpZmllciwgdWludDMyX3QgdGltZVN0YW1wLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
KTsKICAgICB2b2lkIHNldEZyYW1lU2l6ZShSVENEZWNvZGVySWRlbnRpZmllciwgdWludDE2X3Qg
d2lkdGgsIHVpbnQxNl90IGhlaWdodCk7CkBAIC04Myw3ICs4NSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjcmVhdGVFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mLCBib29sIHVzZUxvd0xhdGVu
Y3kpOwogICAgIHZvaWQgcmVsZWFzZUVuY29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIpOwogICAg
IHZvaWQgaW5pdGlhbGl6ZUVuY29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIsIHVpbnQxNl90IHdp
ZHRoLCB1aW50MTZfdCBoZWlnaHQsIHVuc2lnbmVkIHN0YXJ0Qml0cmF0ZSwgdW5zaWduZWQgbWF4
Qml0cmF0ZSwgdW5zaWduZWQgbWluQml0cmF0ZSwgdWludDMyX3QgbWF4RnJhbWVyYXRlKTsKLSAg
ICB2b2lkIGVuY29kZUZyYW1lKFJUQ0VuY29kZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVW
aWRlb1NhbXBsZSYmLCB1aW50MzJfdCB0aW1lU3RhbXAsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlG
cmFtZSk7CisgICAgdm9pZCBlbmNvZGVGcmFtZShSVENFbmNvZGVySWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiwgdWludDMyX3QgdGltZVN0YW1wLCBib29sIHNob3VsZEVu
Y29kZUFzS2V5RnJhbWUsIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVu
Y2U+KTsKICAgICB2b2lkIHNldEVuY29kZVJhdGVzKFJUQ0VuY29kZXJJZGVudGlmaWVyLCB1aW50
MzJfdCBiaXRSYXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpOwogICAgIHZvaWQgc2V0U2hhcmVkVmlk
ZW9GcmFtZVNlbWFwaG9yZShSVENFbmNvZGVySWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJik7
CiAgICAgdm9pZCBzZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5KFJUQ0VuY29kZXJJZGVudGlmaWVy
LCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpOwpAQCAtMTAxLDYgKzEwMyw3IEBAIHBy
aXZhdGU6CiAgICAgSGFzaE1hcDxSVENEZWNvZGVySWRlbnRpZmllciwgd2VicnRjOjpMb2NhbERl
Y29kZXI+IG1fZGVjb2RlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOyAvLyBPbmx5IG1v
ZGlmaWVkIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZSBidXQgbWF5IGdldCBhY2Nlc3NlZCBm
cm9tIHRoZSBtYWluIHRocmVhZC4KICAgICBIYXNoTWFwPFJUQ0VuY29kZXJJZGVudGlmaWVyLCBF
bmNvZGVyPiBtX2VuY29kZXJzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsgLy8gT25seSBt
b2RpZmllZCBvbiB0aGUgbGliV2ViUlRDQ29kZWNzUXVldWUgYnV0IG1heSBnZXQgYWNjZXNzZWQg
ZnJvbSB0aGUgbWFpbiB0aHJlYWQuCiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKKyAgICBS
ZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFtZU9iamVjdEhlYXA7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldl
YlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCA2YmIyMDg2MzhkYzIy
YTg5ZWZiODljOWFmOTA2YTAzZWE2OWU3NDRlLi5kZmFmNGEyNmJkMWUzMTIxOTAzNGFiYjA2NTJk
ZTIzZDljZTJkMWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTI0LDkg
KzI0LDkgQEAKICNpZiBVU0UoTElCV0VCUlRDKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxF
KEdQVV9QUk9DRVNTKQogCiBtZXNzYWdlcyAtPiBMaWJXZWJSVENDb2RlY3NQcm94eSBOb3RSZWZD
b3VudGVkIHsKLSAgICBDcmVhdGVIMjY0RGVjb2RlcihXZWJLaXQ6OlJUQ0RlY29kZXJJZGVudGlm
aWVyIGlkKQotICAgIENyZWF0ZUgyNjVEZWNvZGVyKFdlYktpdDo6UlRDRGVjb2RlcklkZW50aWZp
ZXIgaWQpCi0gICAgQ3JlYXRlVlA5RGVjb2RlcihXZWJLaXQ6OlJUQ0RlY29kZXJJZGVudGlmaWVy
IGlkKQorICAgIENyZWF0ZUgyNjREZWNvZGVyKFdlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXIg
aWQsIGJvb2wgdXNlUmVtb3RlRnJhbWVzKQorICAgIENyZWF0ZUgyNjVEZWNvZGVyKFdlYktpdDo6
UlRDRGVjb2RlcklkZW50aWZpZXIgaWQsIGJvb2wgdXNlUmVtb3RlRnJhbWVzKQorICAgIENyZWF0
ZVZQOURlY29kZXIoV2ViS2l0OjpSVENEZWNvZGVySWRlbnRpZmllciBpZCwgYm9vbCB1c2VSZW1v
dGVGcmFtZXMpCiAgICAgUmVsZWFzZURlY29kZXIoV2ViS2l0OjpSVENEZWNvZGVySWRlbnRpZmll
ciBpZCkKICAgICBEZWNvZGVGcmFtZShXZWJLaXQ6OlJUQ0RlY29kZXJJZGVudGlmaWVyIGlkLCB1
aW50MzJfdCB0aW1lU3RhbXAsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQogICAgIFNldEZyYW1l
U2l6ZShXZWJLaXQ6OlJUQ0RlY29kZXJJZGVudGlmaWVyIGlkLCB1aW50MTZfdCB3aWR0aCwgdWlu
dDE2X3QgaGVpZ2h0KQpAQCAtMzQsNyArMzQsNyBAQCBtZXNzYWdlcyAtPiBMaWJXZWJSVENDb2Rl
Y3NQcm94eSBOb3RSZWZDb3VudGVkIHsKICAgICBDcmVhdGVFbmNvZGVyKFdlYktpdDo6UlRDRW5j
b2RlcklkZW50aWZpZXIgaWQsIFN0cmluZyBmb3JtYXROYW1lLCBWZWN0b3I8c3RkOjpwYWlyPFN0
cmluZywgU3RyaW5nPj4gcGFyYW1ldGVycywgYm9vbCB1c2VMb3dMYXRlbmN5KTsKICAgICBSZWxl
YXNlRW5jb2RlcihXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyIGlkKQogICAgIEluaXRpYWxp
emVFbmNvZGVyKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQsIHVpbnQxNl90IHdpZHRo
LCB1aW50MTZfdCBoZWlnaHQsIHVuc2lnbmVkIHN0YXJ0Qml0cmF0ZSwgdW5zaWduZWQgbWF4Qml0
cmF0ZSwgdW5zaWduZWQgbWluQml0cmF0ZSwgdWludDMyX3QgbWF4RnJhbWVyYXRlKQotICAgIEVu
Y29kZUZyYW1lKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQsIFdlYkNvcmU6OlJlbW90
ZVZpZGVvU2FtcGxlIHNhbXBsZSwgdWludDMyX3QgdGltZVN0YW1wLCBib29sIHNob3VsZEVuY29k
ZUFzS2V5RnJhbWUpCisgICAgRW5jb2RlRnJhbWUoV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmll
ciBpZCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxlLCB1aW50MzJfdCB0aW1lU3Rh
bXAsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSwgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlJl
bW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlPiBzYW1wbGVSZWZlcmVuY2UpCiAgICAgU2V0RW5j
b2RlUmF0ZXMoV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwgdWludDMyX3QgYml0UmF0
ZSwgdWludDMyX3QgZnJhbWVSYXRlKQogICAgIFNldFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhvcmUo
V2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwgSVBDOjpTZW1hcGhvcmUgc2VtYXBob3Jl
KQogICAgIFNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkoV2ViS2l0OjpSVENFbmNvZGVySWRlbnRp
ZmllciBpZCwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBzdG9yYWdlSGFuZGxlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2Rl
Y3NQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzUHJveHkubW0KaW5kZXggMjJlMjA2YWI5YTkzMmE1OWJjZWQ1MzM5M2JkYzhiMzAxYWM2ODM0
Yi4uZWRjNmQ2NjY2N2JkYjNmYWFhMDc5Y2MzOGFlNWJlNDY5NjBkMTdlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5
Lm1tCkBAIC0zMiwyMSArMzIsMjcgQEAKICNpbXBvcnQgIkdQVVByb2Nlc3MuaCIKICNpbXBvcnQg
IkxpYldlYlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMaWJXZWJSVENDb2RlY3NQcm94
eU1lc3NhZ2VzLmgiCisjaW1wb3J0ICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgorI2lt
cG9ydCAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCIKICNpbXBvcnQgIlNoYXJlZFZpZGVv
RnJhbWUuaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCA8V2Vi
Q29yZS9DVlV0aWxpdGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9MaWJXZWJSVENQcm92aWRlci5o
PgorI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVNhbXBsZUFWRk9iakMuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUmVtb3RlVmlkZW9TYW1wbGUuaD4KICNpbXBvcnQgPHdlYnJ0Yy9zZGsvV2ViS2l0L1dlYktp
dERlY29kZXIuaD4KICNpbXBvcnQgPHdlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdEVuY29kZXIuaD4K
ICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL01lZGlhVGltZS5oPgogCisj
aW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpMaWJXZWJSVENDb2RlY3NQcm94eShHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQogICAgIDogbV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKGNvbm5lY3Rpb24pCiAgICAgLCBtX3F1ZXVlKGNvbm5lY3Rpb24uZ3B1UHJvY2Vzcygp
LmxpYldlYlJUQ0NvZGVjc1F1ZXVlKCkpCisgICAgLCBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwKGNv
bm5lY3Rpb24udmlkZW9GcmFtZU9iamVjdEhlYXAoKSkKIHsKICAgICBtX2dwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLmFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6TGliV2ViUlRDQ29kZWNzUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgdGhpcyk7CiB9
CkBAIC03NSwzOSArODEsNTIgQEAgdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y2xvc2UoKQog
ICAgIH0pOwogfQogCi1zdGF0aWMgRnVuY3Rpb248dm9pZChDVlBpeGVsQnVmZmVyUmVmIHBpeGVs
QnVmZmVyLCB1aW50MzJfdCB0aW1lU3RhbXBOcywgdWludDMyX3QgdGltZVN0YW1wKT4gY3JlYXRl
RGVjb2RlckNhbGxiYWNrKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCitzdGF0aWMgRnVu
Y3Rpb248dm9pZChDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCB1aW50MzJfdCB0aW1lU3Rh
bXBOcywgdWludDMyX3QgdGltZVN0YW1wKT4gY3JlYXRlRGVjb2RlckNhbGxiYWNrKFJUQ0RlY29k
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGJvb2wgdXNlUmVtb3RlRnJhbWVzKQogewotICAgIHJldHVy
biBbY29ubmVjdGlvbiA9IFJlZiB7IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlv
bigpIH0sIHJlc291cmNlT3duZXIgPSBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLndlYlByb2Nl
c3NJZGVudGl0eSgpLCBpZGVudGlmaWVyXSAoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwg
dWludDMyX3QgdGltZVN0YW1wTnMsIHVpbnQzMl90IHRpbWVTdGFtcCkgewotICAgICAgICBpZiAo
YXV0byBzYW1wbGUgPSBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHBpeGVsQnVm
ZmVyLCBNZWRpYVRpbWUodGltZVN0YW1wTnMsIDEpKSkgewotICAgICAgICAgICAgaWYgKHJlc291
cmNlT3duZXIpCi0gICAgICAgICAgICAgICAgc2FtcGxlLT5zZXRPd25lcnNoaXBJZGVudGl0eShy
ZXNvdXJjZU93bmVyKTsKLSAgICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Okxp
YldlYlJUQ0NvZGVjczo6Q29tcGxldGVkRGVjb2RpbmcgeyBpZGVudGlmaWVyLCB0aW1lU3RhbXAs
ICpzYW1wbGUgfSwgMCk7CisgICAgcmV0dXJuIFtjb25uZWN0aW9uID0gUmVmIHsgZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkgfSwgcmVzb3VyY2VPd25lciA9IGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3Mud2ViUHJvY2Vzc0lkZW50aXR5KCksIHZpZGVvRnJhbWVPYmplY3RI
ZWFwID0gUmVmIHsgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy52aWRlb0ZyYW1lT2JqZWN0SGVh
cCgpIH0sIGlkZW50aWZpZXIsIHVzZVJlbW90ZUZyYW1lc10gKENWUGl4ZWxCdWZmZXJSZWYgcGl4
ZWxCdWZmZXIsIHVpbnQzMl90IHRpbWVTdGFtcE5zLCB1aW50MzJfdCB0aW1lU3RhbXApICBtdXRh
YmxlIHsKKyAgICAgICAgYXV0byBzYW1wbGUgPSBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6
OmNyZWF0ZUltYWdlU2FtcGxlKHBpeGVsQnVmZmVyLCBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6Vmlk
ZW9Sb3RhdGlvbjo6Tm9uZSwgZmFsc2UsIE1lZGlhVGltZSh0aW1lU3RhbXBOcywgMSksIHsgfSk7
CisgICAgICAgIGlmICghc2FtcGxlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1
dG8gcmVtb3RlU2FtcGxlID0gV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZSgqc2Ft
cGxlKTsKKyAgICAgICAgaWYgKCFyZW1vdGVTYW1wbGUpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgaWYgKHJlc291cmNlT3duZXIpCisgICAgICAgICAgICByZW1vdGVTYW1wbGUtPnNl
dE93bmVyc2hpcElkZW50aXR5KHJlc291cmNlT3duZXIpOworCisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+IHJlbW90ZUlkZW50aWZpZXI7CisgICAgICAg
IGlmICh1c2VSZW1vdGVGcmFtZXMpIHsKKyAgICAgICAgICAgIHJlbW90ZUlkZW50aWZpZXIgPSB2
aWRlb0ZyYW1lT2JqZWN0SGVhcC0+Y3JlYXRlUmVtb3RlVmlkZW9GcmFtZShzYW1wbGUucmVsZWFz
ZU5vbk51bGwoKSk7CisgICAgICAgICAgICByZW1vdGVTYW1wbGUtPmNsZWFySU9TdXJmYWNlKCk7
CiAgICAgICAgIH0KKworICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJS
VENDb2RlY3M6OkNvbXBsZXRlZERlY29kaW5nIHsgaWRlbnRpZmllciwgdGltZVN0YW1wLCAqcmVt
b3RlU2FtcGxlLCByZW1vdGVJZGVudGlmaWVyIH0sIDApOwogICAgIH07CiB9CiAKLXZvaWQgTGli
V2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZUgyNjREZWNvZGVyKFJUQ0RlY29kZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIpCit2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVIMjY0RGVjb2Rl
cihSVENEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIHVzZVJlbW90ZUZyYW1lcykK
IHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9jayB9OwogICAgIEFTU0VSVCghbV9kZWNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7Ci0g
ICAgbV9kZWNvZGVycy5hZGQoaWRlbnRpZmllciwgd2VicnRjOjpjcmVhdGVMb2NhbEgyNjREZWNv
ZGVyKG1ha2VCbG9ja1B0cihjcmVhdGVEZWNvZGVyQ2FsbGJhY2soaWRlbnRpZmllciwgbV9ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKSkuZ2V0KCkpKTsKKyAgICBtX2RlY29kZXJzLmFkZChpZGVu
dGlmaWVyLCB3ZWJydGM6OmNyZWF0ZUxvY2FsSDI2NERlY29kZXIobWFrZUJsb2NrUHRyKGNyZWF0
ZURlY29kZXJDYWxsYmFjayhpZGVudGlmaWVyLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Ms
IHVzZVJlbW90ZUZyYW1lcykpLmdldCgpKSk7CiB9CiAKLXZvaWQgTGliV2ViUlRDQ29kZWNzUHJv
eHk6OmNyZWF0ZUgyNjVEZWNvZGVyKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2
b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVIMjY1RGVjb2RlcihSVENEZWNvZGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBib29sIHVzZVJlbW90ZUZyYW1lcykKIHsKICAgICBBU1NFUlQo
IWlzTWFpblJ1bkxvb3AoKSk7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIEFT
U0VSVCghbV9kZWNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7Ci0gICAgbV9kZWNvZGVycy5h
ZGQoaWRlbnRpZmllciwgd2VicnRjOjpjcmVhdGVMb2NhbEgyNjVEZWNvZGVyKG1ha2VCbG9ja1B0
cihjcmVhdGVEZWNvZGVyQ2FsbGJhY2soaWRlbnRpZmllciwgbV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKSkuZ2V0KCkpKTsKKyAgICBtX2RlY29kZXJzLmFkZChpZGVudGlmaWVyLCB3ZWJydGM6
OmNyZWF0ZUxvY2FsSDI2NURlY29kZXIobWFrZUJsb2NrUHRyKGNyZWF0ZURlY29kZXJDYWxsYmFj
ayhpZGVudGlmaWVyLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIHVzZVJlbW90ZUZyYW1l
cykpLmdldCgpKSk7CiB9CiAKLXZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZVZQOURl
Y29kZXIoUlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgTGliV2ViUlRDQ29k
ZWNzUHJveHk6OmNyZWF0ZVZQOURlY29kZXIoUlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgYm9vbCB1c2VSZW1vdGVGcmFtZXMpCiB7CiAgICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkp
OwogICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBBU1NFUlQoIW1fZGVjb2RlcnMu
Y29udGFpbnMoaWRlbnRpZmllcikpOwotICAgIG1fZGVjb2RlcnMuYWRkKGlkZW50aWZpZXIsIHdl
YnJ0Yzo6Y3JlYXRlTG9jYWxWUDlEZWNvZGVyKG1ha2VCbG9ja1B0cihjcmVhdGVEZWNvZGVyQ2Fs
bGJhY2soaWRlbnRpZmllciwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkuZ2V0KCkpKTsK
KyAgICBtX2RlY29kZXJzLmFkZChpZGVudGlmaWVyLCB3ZWJydGM6OmNyZWF0ZUxvY2FsVlA5RGVj
b2RlcihtYWtlQmxvY2tQdHIoY3JlYXRlRGVjb2RlckNhbGxiYWNrKGlkZW50aWZpZXIsIG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgdXNlUmVtb3RlRnJhbWVzKSkuZ2V0KCkpKTsKIH0KIAog
dm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6cmVsZWFzZURlY29kZXIoUlRDRGVjb2RlcklkZW50
aWZpZXIgaWRlbnRpZmllcikKQEAgLTIxMSwxNSArMjMwLDI1IEBAIHN0YXRpYyBpbmxpbmUgd2Vi
cnRjOjpWaWRlb1JvdGF0aW9uIHRvV2ViUlRDVmlkZW9Sb3RhdGlvbihXZWJDb3JlOjpNZWRpYVNh
bXBsZTo6CiAKIC8vIEZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB0aGlzIGZ1bmN0aW9uIGFjY2Vz
c2VzIG1fZW5jb2RlcnMgd2l0aG91dCBsb2NraW5nLiBUaGlzIGlzIHNhZmUgYmVjYXVzZSB0aGlz
IGZ1bmN0aW9uIHJ1bnMgb24gdGhlIGxpYldlYlJUQ0NvZGVjc1F1ZXVlCiAvLyBhbmQgbV9lbmNv
ZGVycyBvbmx5IGdldCBtb2RpZmllZCBvbiB0aGlzIHF1ZXVlLgotdm9pZCBMaWJXZWJSVENDb2Rl
Y3NQcm94eTo6ZW5jb2RlRnJhbWUoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiBzYW1wbGUsIHVpbnQzMl90IHRpbWVTdGFtcCwgYm9v
bCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKQordm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6ZW5j
b2RlRnJhbWUoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3Rl
VmlkZW9TYW1wbGUmJiBzYW1wbGUsIHVpbnQzMl90IHRpbWVTdGFtcCwgYm9vbCBzaG91bGRFbmNv
ZGVBc0tleUZyYW1lLCBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNl
PiBzYW1wbGVSZWZlcmVuY2UpCiB7CisgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHBp
eGVsQnVmZmVyOworICAgIGlmIChzYW1wbGVSZWZlcmVuY2UpIHsKKyAgICAgICAgYXV0byBzYW1w
bGUgPSBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwLT5yZXRpcmUoV1RGTW92ZSgqc2FtcGxlUmVmZXJl
bmNlKSwgMF9zKTsKKyAgICAgICAgaWYgKCFzYW1wbGUpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgYXV0byBwbGF0Zm9ybVNhbXBsZSA9IHNhbXBsZS0+cGxhdGZvcm1TYW1wbGUoKTsK
KyAgICAgICAgQVNTRVJUKHBsYXRmb3JtU2FtcGxlLnR5cGUgPT0gV2ViQ29yZTo6UGxhdGZvcm1T
YW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZSk7CisgICAgICAgIHBpeGVsQnVmZmVyID0gc3RhdGlj
X2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVy
KHBsYXRmb3JtU2FtcGxlLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcikpOworICAgIH0KKwogICAgIEFT
U0VSVChmaW5kRW5jb2RlcldpdGhvdXRMb2NrKGlkZW50aWZpZXIpKTsKICAgICBhdXRvKiBlbmNv
ZGVyID0gZmluZEVuY29kZXJXaXRob3V0TG9jayhpZGVudGlmaWVyKTsKICAgICBpZiAoIWVuY29k
ZXIpCiAgICAgICAgIHJldHVybjsKIAogI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkKLSAgICBS
ZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXI7CiAgICAgaWYgKHNhbXBsZS5z
dXJmYWNlKCkpIHsKICAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRlQ1ZQ
aXhlbEJ1ZmZlcihzYW1wbGUuc3VyZmFjZSgpKSkKICAgICAgICAgICAgIHBpeGVsQnVmZmVyID0g
V1RGTW92ZSgqYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDUxZThhMzdkN2FjMmIzMjQ3YmE3
MGQ5NDA0ZjIyODEzZDZlY2IxZmUuLjU5NGI4M2Q1ZDhlYmNjOGYxMGM0YTYwZjU0NGY4ZDM5MTZl
NWNhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ29u
bmVjdGlvbi5oIgogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNs
dWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIgogI2luY2x1ZGUgIlNoYXJlZFJpbmdC
dWZmZXJTdG9yYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaD4KQEAgLTQyLDYgKzQzLDcgQEAK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3N0YXRpYyBj
b25zdGV4cHIgU2Vjb25kcyBtZWRpYVJlY29yZGVyRGVmYXVsdFRpbWVvdXQgeyAxX3MgfTsKIAog
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUmVjb3JkZXI+IFJlbW90ZU1lZGlhUmVjb3JkZXI6
OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLCBNZWRpYVJlY29yZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIHJlY29yZEF1ZGlv
LCBib29sIHJlY29yZFZpZGVvLCBjb25zdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMmIG9w
dGlvbnMpCiB7CkBAIC01NSw2ICs1Nyw3IEBAIFJlbW90ZU1lZGlhUmVjb3JkZXI6OlJlbW90ZU1l
ZGlhUmVjb3JkZXIoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvCiAgICAg
OiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykK
ICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV93cml0ZXIoV1RGTW92ZSh3
cml0ZXIpKQorICAgICwgbV92aWRlb0ZyYW1lT2JqZWN0SGVhcChncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLnZpZGVvRnJhbWVPYmplY3RIZWFwKCkpCiB7CiAgICAgaWYgKHJlY29yZEF1ZGlvKQog
ICAgICAgICBtX3JpbmdCdWZmZXIgPSBtYWtlVW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsKQEAgLTg2
LDEwICs4OSwxNiBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OmF1ZGlvU2FtcGxlc0F2YWls
YWJsZShNZWRpYVRpbWUgdGltZSwgdWludDY0X3QgbnVtYmVyTwogICAgIG1fd3JpdGVyLT5hcHBl
bmRBdWRpb1NhbXBsZUJ1ZmZlcigqbV9hdWRpb0J1ZmZlckxpc3QsIG1fZGVzY3JpcHRpb24sIHRp
bWUsIG51bWJlck9mRnJhbWVzKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRl
b1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW90ZVNhbXBs
ZSkKK3ZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29y
ZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vdGVTYW1wbGUsIHN0ZDo6b3B0aW9uYWw8UmVtb3Rl
VmlkZW9GcmFtZVJlYWRSZWZlcmVuY2U+IHNhbXBsZVJlZmVyZW5jZSkKIHsKICAgICBSZWZQdHI8
TWVkaWFTYW1wbGU+IHNhbXBsZTsKLSAgICBpZiAoIXJlbW90ZVNhbXBsZS5zdXJmYWNlKCkpIHsK
KyAgICBpZiAoc2FtcGxlUmVmZXJlbmNlKSB7CisgICAgICAgIHNhbXBsZSA9IG1fdmlkZW9GcmFt
ZU9iamVjdEhlYXAtPnJldGlyZShXVEZNb3ZlKCpzYW1wbGVSZWZlcmVuY2UpLCBtZWRpYVJlY29y
ZGVyRGVmYXVsdFRpbWVvdXQpOworICAgICAgICBpZiAoIXNhbXBsZSkgeworICAgICAgICAgICAg
QVNTRVJUX0lTX1RFU1RJTkdfSVBDKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9IGVsc2UgaWYgKCFyZW1vdGVTYW1wbGUuc3VyZmFjZSgpKSB7CiAgICAgICAgIGF1dG8g
cGl4ZWxCdWZmZXIgPSBtX3NoYXJlZFZpZGVvRnJhbWVSZWFkZXIucmVhZCgpOwogICAgICAgICBp
ZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaAppbmRleCBjNjYy
OWRiYzZjYWJiMzZmNjFiN2U0NjI3ZDFmNTA1MDkzNzY1YTA2Li42MGI4ZDAyMTRlNzdhNTNjYzA0
NWEwZjlmZWI4MWEzOTA0OWQzZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZWRpYVJlY29yZGVySWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVv
RnJhbWVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAi
U2hhcmVkVmlkZW9GcmFtZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uLmg+CkBAIC01Miw2ICs1Myw3IEBAIHN0cnVjdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9w
dGlvbnM7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzczsKK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOwogY2xhc3MgU2hhcmVkUmlu
Z0J1ZmZlclN0b3JhZ2U7CiAKIGNsYXNzIFJlbW90ZU1lZGlhUmVjb3JkZXIgOiBwcml2YXRlIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyIHsKQEAgLTcyLDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgYXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQo
Y29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24mLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcyk7CiAgICAgdm9pZCBhdWRp
b1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcyk7Ci0g
ICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYm
KTsKKyAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2Ft
cGxlJiYsIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2U+KTsKICAg
ICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVyZW5j
ZSYmLCBkb3VibGUpPiYmKTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHBhdXNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CkBAIC05MCw2ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OkltYWdlVHJhbnNmZXJTZXNzaW9uVlQ+IG1faW1hZ2VUcmFuc2ZlclNlc3Npb247CiAKICAg
ICBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyIG1fc2hhcmVkVmlkZW9GcmFtZVJlYWRlcjsKKyAgICBS
ZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFtZU9iamVjdEhlYXA7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW4KaW5kZXggYWNhZWY4YjhjNDBkYmQ1
ZDdmYjliNmM4ODQ4ZjlkYTQ2ODg3MTQ5My4uNDk4ZjI4MWFmODAxODc4ZTA1NGQzMWVlNmVkMmI3
OTcwOGI5MGU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbgpAQCAtMjYsNyArMjYs
NyBAQAogbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFSZWNvcmRlciBOb3RSZWZDb3VudGVkIHsKICAg
ICBBdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlIHN0b3JhZ2VIYW5kbGUsIFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBkZXNj
cmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCiAgICAgQXVkaW9TYW1wbGVzQXZhaWxh
YmxlKE1lZGlhVGltZSB0aW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKLSAgICBWaWRlb1Nh
bXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUpCisgICAgVmlk
ZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxlLCBzdGQ6
Om9wdGlvbmFsPFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2U+IHJlbW90ZVZp
ZGVvRnJhbWVSZWFkUmVmZXJlbmNlKQogICAgIEZldGNoRGF0YSgpIC0+IChJUEM6OkRhdGFSZWZl
cmVuY2UgYnVmZmVyLCBkb3VibGUgdGltZUNvZGUpIEFzeW5jCiAgICAgU3RvcFJlY29yZGluZygp
IC0+ICgpIEFzeW5jCiAgICAgUGF1c2UoKSAtPiAoKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuY3BwCmluZGV4IDcyNGE4Yzk2YjdlN2U1ZTBkYmFiYTA4MjMxYmI4Yjc4Zjli
YmYwYzAuLmU2ZmM2NzdjNzBjZDFkNzQ5YzY5N2Q2MjFkZTE5YTM1YmYyNGVmYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2lmIFBM
QVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAKKyNpbmNsdWRlICJJUENUZXN0ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcC5oIgogI2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oPgpAQCAtMzUsMTggKzM3
LDIyIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVWaWRlb1NhbXBsZS5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKK3N0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0VGltZW91dCB7IDFf
cyB9OworCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjpjcmVhdGUoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciBpZGVudGlmaWVyLCBS
ZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uLCBTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rp
b24+JiYgY29ubmVjdGlvbikKIHsKLSAgICBhdXRvIGxheWVyID0gc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4obmV3IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcihpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rpb24pKSk7CisgICAgYXV0byBsYXll
ciA9IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+KG5ldyBS
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoZ3B1Q29ubmVjdGlvbiwgaWRlbnRpZmllciwg
V1RGTW92ZShjb25uZWN0aW9uKSkpOwogICAgIHJldHVybiBsYXllci0+bV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIgPyBXVEZNb3ZlKGxheWVyKSA6IG51bGxwdHI7CiB9CiAKLVJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcjo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVj
dGlvbj4mJiBjb25uZWN0aW9uKQotICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCitSZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uLCBTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYg
Y29ubmVjdGlvbikKKyAgICA6IG1fZ3B1Q29ubmVjdGlvbihncHVDb25uZWN0aW9uKQorICAgICwg
bV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25u
ZWN0aW9uKSkKICAgICAsIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKExvY2FsU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyOjpjcmVhdGUoKnRoaXMpKQorICAgICwgbV92aWRlb0ZyYW1lT2JqZWN0
SGVhcChtX2dwdUNvbm5lY3Rpb24udmlkZW9GcmFtZU9iamVjdEhlYXAoKSkKIHsKICAgICBBU1NF
UlQobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpOwogfQpAQCAtMTEzLDcgKzExOSwyMyBAQCB2
b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6cGF1c2UoKQogICAgIG1fc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLT5wYXVzZSgpOwogfQogCi12b2lkIFJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZShSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW90ZVNh
bXBsZSkKK3ZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxl
KFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlJiYgc2FtcGxlKQoreworICAgIGF1dG8gbWVk
aWFTYW1wbGUgPSBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwLT5yZXRpcmUoV1RGTW92ZShzYW1wbGUp
LCBkZWZhdWx0VGltZW91dCk7CisgICAgaWYgKCFtZWRpYVNhbXBsZSkgeworICAgICAgICAvLyBJ
biBjYXNlIG9mIEdQVVByb2Nlc3MgY3Jhc2gsIHdlIG1pZ2h0IGVucXVldWUgcHJldmlvdXMgR1BV
UHJvY2VzcyBzYW1wbGVzLCBpZ25vcmUgdGhlbS4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBBU1NFUlQoaXM8TWVkaWFTYW1wbGVBVkZPYmpDPihtZWRpYVNhbXBsZSkpOworICAgIGlmICgh
aXM8TWVkaWFTYW1wbGVBVkZPYmpDPihtZWRpYVNhbXBsZSkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8mIGF2Zk1lZGlhU2FtcGxlID0gZG93bmNhc3Q8TWVkaWFTYW1wbGVBVkZPYmpDPigq
bWVkaWFTYW1wbGUpOworICAgIE1lZGlhU2FtcGxlQVZGT2JqQzo6c2V0QXNEaXNwbGF5SW1tZWRp
YXRlbHkoYXZmTWVkaWFTYW1wbGUpOworICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5l
bnF1ZXVlU2FtcGxlKGF2Zk1lZGlhU2FtcGxlKTsKK30KKwordm9pZCBSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGVDVihXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBs
ZSYmIHJlbW90ZVNhbXBsZSkKIHsKICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHNhbXBsZTsKICAg
ICBpZiAoIXJlbW90ZVNhbXBsZS5zdXJmYWNlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5oCmluZGV4IDcyNWIzZDI2YjcxYzc4ODZkYzQ4ODgyN2QwYTZmN2QyNTJhYTdhMGQuLjgw
MmM5MGZlOWViNjY0YmE5MzIxZDdhOGJkZTVkOTg0ZjQwM2YxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIuaApAQCAtMzAsMTAgKzMwLDEyIEBACiAjaW5jbHVkZSAiTGF5ZXJIb3N0
aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJTaGFyZWRWaWRlb0ZyYW1lLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1Ro
cmVhZEFzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW1hZ2VUcmFu
c2ZlclNlc3Npb25WVDsKQEAgLTQyLDExICs0NCwxMyBAQCBjbGFzcyBSZW1vdGVWaWRlb1NhbXBs
ZTsKIH07CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzczsKK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOwogCiBjbGFzcyBSZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgOiBwdWJsaWMgV2ViQ29yZTo6U2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpDbGllbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VTZW5kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyPiBjcmVhdGUoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciwgUmVmPElQQzo6
Q29ubmVjdGlvbj4mJik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJik7
CiAgICAgflJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcigpOwogCiAgICAgdXNpbmcgV2Vi
Q29yZTo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpDbGllbnQ6OndlYWtQdHJGYWN0b3J5OwpA
QCAtNjEsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgQ0dSZWN0IGJvdW5kcygpIGNvbnN0OwogICAg
IAogcHJpdmF0ZToKLSAgICBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVySWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJik7CisgICAg
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
LCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9u
PiYmKTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHZvaWQgc2V0TG9nSWRlbnRp
ZmllcihTdHJpbmcmJik7CkBAIC03Myw3ICs3Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmbHVz
aEFuZFJlbW92ZUltYWdlKCk7CiAgICAgdm9pZCBwbGF5KCk7CiAgICAgdm9pZCBwYXVzZSgpOwot
ICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmKTsKKyAg
ICB2b2lkIGVucXVldWVTYW1wbGUoUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UmJik7Cisg
ICAgdm9pZCBlbnF1ZXVlU2FtcGxlQ1YoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJik7CiAg
ICAgdm9pZCBjbGVhckVucXVldWVkU2FtcGxlcygpOwogICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9G
cmFtZVNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmKTsKICAgICB2b2lkIHNldFNoYXJlZFZpZGVv
RnJhbWVNZW1vcnkoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKTsKQEAgLTg1LDEyICs5
MCwxNiBAQCBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6Q2xpZW50CiAgICAgdm9pZCBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJTdGF0dXNEaWRGYWls
KCkgZmluYWw7CiAKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rp
b24gV1RGX0dVQVJERURfQllfTE9DSyhtX2NvbnN1bWVUaHJlYWQpOwogICAgIFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFJlZjxJUEM6OkNvbm5l
Y3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VU
cmFuc2ZlclNlc3Npb25WVD4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbjsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IG1fc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0
PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7CiAgICAgU2hhcmVkVmlkZW9GcmFtZVJlYWRlciBtX3No
YXJlZFZpZGVvRnJhbWVSZWFkZXI7CisgICAgUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
PiBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwOworICAgIFRocmVhZEFzc2VydGlvbiBtX2NvbnN1bWVU
aHJlYWQgTk9fVU5JUVVFX0FERFJFU1M7CisKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4KaW5kZXggZTUwNDgzMTQxZWZlZmFmYjQzZGNh
NjA4Y2RjMzdkNjIxNmY3ZWNkZi4uM2NhMWY5MzI3MDcyN2RlMGMyYjc1NDQ3YWI4OWI2NDYzMmFi
YTcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMu
aW4KQEAgLTMyLDcgKzMyLDggQEAgbWVzc2FnZXMgLT4gUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyIE5vdFJlZkNvdW50ZWQgewogICAgIFVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVj
dCBib3VuZHMsIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKQog
ICAgIEZsdXNoKCkKICAgICBGbHVzaEFuZFJlbW92ZUltYWdlKCkKLSAgICBFbnF1ZXVlU2FtcGxl
KFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSkKKyAgICBFbnF1ZXVlU2FtcGxlKFdl
YktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2Ugc2FtcGxlKQorICAgIEVucXVldWVT
YW1wbGVDVihXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUpCiAgICAgQ2xlYXJFbnF1
ZXVlZFNhbXBsZXMoKQogICAgIFBsYXkoKQogICAgIFBhdXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCmluZGV4IGE1NDQ1ZDdmZDVjY2JiNWFkMDBj
ZGVjZWM1ZDAzZjYzMzRiNWQxNTEuLjc2ZTc5OWMzNWFmMmVkZDIzNjZkN2NhY2RkM2U1ZTcxOTc1
YzU2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNw
cApAQCAtODEsNyArODEsNyBAQCBib29sIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXI6OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbgogdm9pZCBSZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpjcmVhdGVMYXllcihTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgaGlkZVJvb3RMYXllciwgV2Vi
Q29yZTo6SW50U2l6ZSBzaXplLCBMYXllckNyZWF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
ICAgICBjYWxsT25NYWluUnVuTG9vcChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGlkZW50aWZpZXIsIGhpZGVSb290TGF5ZXIsIHNpemUsIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gbGF5ZXIgPSBSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29weVJl
ZigpKTsKKyAgICAgICAgYXV0byBsYXllciA9IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6Y3JlYXRlKG1fY29ubmVjdGlvblRvV2ViUHJvY2VzcywgaWRlbnRpZmllciwgbV9jb25uZWN0
aW9uLmNvcHlSZWYoKSk7CiAgICAgICAgIGF1dG8mIGxheWVyUmVmZXJlbmNlID0gKmxheWVyOwog
ICAgICAgICBsYXllclJlZmVyZW5jZS5pbml0aWFsaXplKGhpZGVSb290TGF5ZXIsIHNpemUsIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgaWRlbnRpZmllciwgbGF5ZXIgPSBXVEZNb3ZlKGxheWVyKV0oYXV0byBsYXllcklk
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBpZGVudGlmaWVyLCBsYXllciA9IFdURk1vdmUobGF5ZXIpLCBsYXllcklkID0gV1RGTW92
ZShsYXllcklkKV0oKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CmluZGV4IDc1OGQ1MDU1NmZmMmY2ZTQ3Mzc3ZDE0ZTgyNjZiYzVlM2VhYzQxYTYuLjIy
NGJmZmY2ZjhlNmJiZjAwN2EyNjU1MGMzMTQ4ZGQzMzUzZWExMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMzQ3LDYgKzM0Nyw5IEBAIGRlZiB0eXBlc190
aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6OlJlbW90
ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlTWVk
aWFSZXNvdXJjZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJj
ZUlkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmll
cicsCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZScsCisg
ICAgICAgICdXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlJywKICAgICAgICAg
J1dlYktpdDo6UmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVySWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0
OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcicsCkBAIC04ODMsNiArODg2LDggQEAgZGVmIGhl
YWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OlBheW1lbnRTZXR1cENvbmZp
Z3VyYXRpb24nOiBbJyJQYXltZW50U2V0dXBDb25maWd1cmF0aW9uV2ViS2l0LmgiJ10sCiAgICAg
ICAgICdXZWJLaXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVzJzogWyciQXBwbGVQYXlQYXltZW50U2V0
dXBGZWF0dXJlc1dlYktpdC5oIiddLAogICAgICAgICAnV2ViS2l0OjpSZXNwZWN0U2VsZWN0aW9u
QW5jaG9yJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZVZp
ZGVvRnJhbWVSZWFkUmVmZXJlbmNlJzogWyciUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIn
XSwKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJzogWyci
UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCInXSwKICAgICAgICAgJ1dlYktpdDo6U2VsZWN0
aW9uRmxhZ3MnOiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6U2VsZWN0
aW9uVG91Y2gnOiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6VGFwSWRl
bnRpZmllcic6IFsnIklkZW50aWZpZXJUeXBlcy5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvSVBDVGVzdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rl
ci5jcHAKaW5kZXggYmFiYTBiMDg4NzdjNDcyYTUwNzFmZjNhYTNkODgwMTAyZjU3Yzg5YS4uYThk
MjU3ZWM2NzM1ZjEwZGE1OTU0ODMwMGNlNmZlM2YyY2RmOWJhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9J
UENUZXN0ZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIkRlY29kZXIuaCIKIAorI2luY2x1ZGUgPGF0b21pYz4KICNpbmNsdWRlIDxkbGZj
bi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CkBAIC00OCw2ICs0
OSw4IEBAIHN0cnVjdCBTZW5kTWVzc2FnZUNvbnRleHQgewogICAgIElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbjsKICAgICBzdGQ6OmF0b21pYzxib29sPiYgc2hvdWxkU3RvcDsKIH07CisKK3N0
YXRpYyBzdGQ6OmF0b21pYzx1bnNpZ25lZD4gb25nb2luZ0lQQ1Rlc3RzIHsgMCB9OwogfQogCiBl
eHRlcm4gIkMiIHsKQEAgLTExNSw3ICsxMTgsOSBAQCB2b2lkIElQQ1Rlc3Rlcjo6c3RhcnRNZXNz
YWdlVGVzdGluZyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0cmluZyYmIGRyaXZlcgog
ICAgIGlmICghbV90ZXN0UXVldWUpCiAgICAgICAgIG1fdGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpj
cmVhdGUoIklQQyB0ZXN0aW5nIHdvcmsgcXVldWUiKTsKICAgICBtX3Rlc3RRdWV1ZS0+ZGlzcGF0
Y2goW2Nvbm5lY3Rpb24gPSBSZWYgeyBjb25uZWN0aW9uIH0sICZzaG91bGRTdG9wID0gbV9zaG91
bGRTdG9wLCBkcml2ZXJOYW1lID0gV1RGTW92ZShkcml2ZXJOYW1lKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgb25nb2luZ0lQQ1Rlc3RzKys7CiAgICAgICAgIHJ1bk1lc3NhZ2VUZXN0aW5nKGNvbm5l
Y3Rpb24sIHNob3VsZFN0b3AsIFdURk1vdmUoZHJpdmVyTmFtZSkpOworICAgICAgICBvbmdvaW5n
SVBDVGVzdHMtLTsKICAgICB9KTsKIH0KIApAQCAtMTM0LDYgKzEzOSwxMSBAQCB2b2lkIElQQ1Rl
c3Rlcjo6c3RvcElmTmVlZGVkKCkKICAgICB9CiB9CiAKK2Jvb2wgaXNUZXN0aW5nSVBDKCkKK3sK
KyAgICByZXR1cm4gb25nb2luZ0lQQ1Rlc3RzOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9JUENUZXN0ZXIuaAppbmRleCA0NDk5MDkzNWJkNTUxZDRlZWI1ODM1NDNlMTJlY2ZkM2I4NDcx
ODVlLi5lYTQ5MzM1NmQ0MzkyYzNmYTdiNWY3ZjVlMmI1NjRmNjUzMzI3ZmQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9JUENUZXN0ZXIuaApAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lm
IEVOQUJMRShJUENfVEVTVElOR19BUEkpCiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
ICNpbmNsdWRlIDxhdG9taWM+CkBAIC0zMyw2ICszMiwxNCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAorI2RlZmluZSBBU1NFUlRfSVNfVEVTVElOR19JUEMoKSBBU1NFUlQoaXNUZXN0aW5nSVBD
KCksICJVbnRydXN0ZWQgY29ubmVjdGlvbiBzZW50IGludmFsaWQgZGF0YS4gU2hvdWxkIG9ubHkg
aGFwcGVuIHdoZW4gdGVzdGluZyBJUEMuIikKKworI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkp
CisKKy8vIEZ1bmN0aW9uIHRvIGNoZWNrIHdoZW4gYXNzZXJ0aW5nIElQQy1yZWxhdGVkIGZhaWx1
cmVzLCBzbyB0aGF0IElQQyB0ZXN0aW5nIHNraXBzIHRoZSBhc3NlcnRpb25zCisvLyBhbmQgZXhw
b3NlcyBidWdzIHVuZGVybmVhdGguCitib29sIGlzVGVzdGluZ0lQQygpOworCiBjbGFzcyBJUENU
ZXN0ZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgogICAg
IElQQ1Rlc3RlcigpOwpAQCAtNTIsNiArNTksMTMgQEAgcHJpdmF0ZToKICAgICBzdGQ6OmF0b21p
Yzxib29sPiBtX3Nob3VsZFN0b3AgeyBmYWxzZSB9OwogfTsKIAorI2Vsc2UKKworY29uc3RleHBy
IGlubGluZSBib29sIGlzVGVzdGluZ0lQQygpCit7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiAj
ZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvT2JqZWN0SWRlbnRp
ZmllclJlZmVyZW5jZVRyYWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL09iamVjdElkZW50
aWZpZXJSZWZlcmVuY2VUcmFja2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTUyNTdkODQyNWJhMDQzNmQ0NzM5
YTk4YzQ1ZTkyM2EzZjI5MTc4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL09iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyLmgKQEAgLTAsMCArMSwyMjYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyNp
bmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3dGYvSGFzaFRy
YWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworLy8gVHlwZSBmb3IgdGhlIGtleSBpbiBtYXBwaW5nIGZyb20gb2JqZWN0IGlkZW50
aWZpZXIgcmVmZXJlbmNlcyB0byBvYmplY3Qgc3RhdGUuCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
Y2xhc3MgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZSB7CitwdWJsaWM6CisgICAgT2JqZWN0SWRl
bnRpZmllclJlZmVyZW5jZSgpID0gZGVmYXVsdDsKKyAgICBPYmplY3RJZGVudGlmaWVyUmVmZXJl
bmNlKFQgaWRlbnRpZmllciwgdWludDY0X3QgdmVyc2lvbikKKyAgICAgICAgOiBtX2lkZW50aWZp
ZXIoaWRlbnRpZmllcikKKyAgICAgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKKyAgICB7CisgICAg
fQorICAgIGV4cGxpY2l0IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2UoV1RGOjpIYXNoVGFibGVE
ZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1faWRlbnRpZmllcihXVEY6Okhhc2hUYWJsZURl
bGV0ZWRWYWx1ZSkKKyAgICB7CisgICAgfQorICAgIFQgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQorICAgIHVpbnQ2NF90IHZlcnNpb24oKSBjb25zdCB7IHJldHVy
biBtX3ZlcnNpb247IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT2JqZWN0SWRlbnRpZmll
clJlZmVyZW5jZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb3RoZXIubV9p
ZGVudGlmaWVyID09IG1faWRlbnRpZmllciAmJiBvdGhlci5tX3ZlcnNpb24gPT0gbV92ZXJzaW9u
OworICAgIH0KKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2lkZW50aWZpZXIuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsK
KyAgICB9Citwcml2YXRlOgorICAgIFQgbV9pZGVudGlmaWVyOworICAgIHVpbnQ2NF90IG1fdmVy
c2lvbiB7IDAgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgT2JqZWN0SWRl
bnRpZmllclJlYWRSZWZlcmVuY2UgeworcHVibGljOgorICAgIE9iamVjdElkZW50aWZpZXJSZWFk
UmVmZXJlbmNlKFQgaWRlbnRpZmllciwgdWludDY0X3QgdmVyc2lvbikKKyAgICAgICAgOiBtX2lk
ZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKKyAgICB7
CisgICAgfQorICAgIFQgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsg
fQorICAgIHVpbnQ2NF90IHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb247IH0KKyAg
ICBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+IHJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJu
IHsgbV9pZGVudGlmaWVyLCBtX3ZlcnNpb24gfTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAg
ICAgIGVuY29kZXIgPDwgbV9pZGVudGlmaWVyOworICAgICAgICBlbmNvZGVyIDw8IG1fdmVyc2lv
bjsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2U+IGRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxUPiBpZGVudGlmaWVyOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2ZXJzaW9uOworICAgICAgICBkZWNvZGVyID4+IGlk
ZW50aWZpZXIKKyAgICAgICAgICAgID4+IHZlcnNpb247CisgICAgICAgIGlmICghZGVjb2Rlci5p
c1ZhbGlkKCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gT2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UgeyBXVEZNb3ZlKCppZGVudGlmaWVyKSwg
KnZlcnNpb24gfTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVCBtX2lkZW50aWZpZXI7CisgICAg
dWludDY0X3QgbV92ZXJzaW9uIHsgMCB9OworfTsKKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
Y2xhc3MgT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlIHsKK3B1YmxpYzoKKyAgICBPYmpl
Y3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UoVCBpZGVudGlmaWVyLCB1aW50NjRfdCB2ZXJzaW9u
LCB1aW50NjRfdCBwZW5kaW5nUmVhZHMpCisgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCisgICAgICAgICwgbV92ZXJzaW9uKHZlcnNpb24pCisgICAgICAgICwgbV9wZW5kaW5nUmVh
ZHMocGVuZGluZ1JlYWRzKQorICAgIHsKKyAgICB9CisgICAgVCBpZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgdWludDY0X3QgdmVyc2lvbigpIGNvbnN0IHsg
cmV0dXJuIG1fdmVyc2lvbjsgfQorICAgIHVpbnQ2NF90IHBlbmRpbmdSZWFkcygpIGNvbnN0IHsg
cmV0dXJuIG1fcGVuZGluZ1JlYWRzOyB9CisgICAgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxU
PiByZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiB7IG1faWRlbnRpZmllciwgbV92ZXJzaW9uIH07
IH0KKyAgICBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+IHJldGlyZSgpIGNvbnN0ICYmIHsg
cmV0dXJuIHsgbV9pZGVudGlmaWVyLCBtX3ZlcnNpb24gKyAxIH07IH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cisg
ICAgeworICAgICAgICBlbmNvZGVyIDw8IG1faWRlbnRpZmllcjsKKyAgICAgICAgZW5jb2RlciA8
PCBtX3ZlcnNpb247CisgICAgICAgIGVuY29kZXIgPDwgbV9wZW5kaW5nUmVhZHM7CisgICAgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8T2Jq
ZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAg
ICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VD4gaWRlbnRpZmllcjsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gdmVyc2lvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gcGVuZGluZ1JlYWRzOworCisgICAgICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcgorICAgICAg
ICAgICAgPj4gdmVyc2lvbgorICAgICAgICAgICAgPj4gcGVuZGluZ1JlYWRzOworICAgICAgICBp
ZiAoIWRlY29kZXIuaXNWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIE9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZSB7IFdURk1vdmUo
KmlkZW50aWZpZXIpLCAqdmVyc2lvbiwgKnBlbmRpbmdSZWFkcyB9OworICAgIH0KKworcHJpdmF0
ZToKKyAgICBUIG1faWRlbnRpZmllcjsKKyAgICB1aW50NjRfdCBtX3ZlcnNpb24geyAwIH07Cisg
ICAgdWludDY0X3QgbV9wZW5kaW5nUmVhZHMgeyAwIH07Cit9OworCisvLyBDbGFzcyB0byBnZW5l
cmF0ZSByZWFkIGFuZCB3cml0ZSByZWZlcmVuY2VzIHRvIGFuIE9iamVjdElkZW50aWZlci4KK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tl
ciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRy
YWNrZXIpOworcHVibGljOgorICAgIHVzaW5nIFJlYWRSZWZlcmVuY2UgPSBPYmplY3RJZGVudGlm
aWVyUmVhZFJlZmVyZW5jZTxUPjsKKyAgICB1c2luZyBXcml0ZVJlZmVyZW5jZSA9IE9iamVjdElk
ZW50aWZpZXJXcml0ZVJlZmVyZW5jZTxUPjsKKyAgICB1c2luZyBSZWZlcmVuY2UgPSBPYmplY3RJ
ZGVudGlmaWVyUmVmZXJlbmNlPFQ+OworCisgICAgZXhwbGljaXQgT2JqZWN0SWRlbnRpZmllclJl
ZmVyZW5jZVRyYWNrZXIoVCBpZGVudGlmaWVyKQorICAgICAgICA6IG1faWRlbnRpZmllcihpZGVu
dGlmaWVyKQorICAgIHsKKyAgICB9CisgICAgLy8gVGhyZWFkIHNhZmUuCisgICAgUmVhZFJlZmVy
ZW5jZSByZWFkKCkgY29uc3QKKyAgICB7CisgICAgICAgIG1fcGVuZGluZ1JlYWRzKys7CisgICAg
ICAgIHJldHVybiB7IG1faWRlbnRpZmllciwgbV92ZXJzaW9uIH07CisgICAgfQorICAgIC8vIE5v
dCB0aHJlYWQgc2FmZS4gQ2xpZW50IG11c3QgY29vcmRpbmF0ZSB3cml0ZXMgYW5kIHJlYWRzIGFu
eXdheS4KKyAgICBXcml0ZVJlZmVyZW5jZSB3cml0ZSgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4geyBtX2lkZW50aWZpZXIsIG1fdmVyc2lvbisrLCBtX3BlbmRpbmdSZWFkcy5leGNoYW5n
ZSgwKSB9OworICAgIH0KKyAgICBUIGlkZW50aWZpZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1faWRlbnRpZmllcjsKKyAgICB9Citwcml2YXRlOgorICAgIGNvbnN0IFQgbV9pZGVu
dGlmaWVyOworICAgIG11dGFibGUgc3RkOjphdG9taWM8dWludDY0X3Q+IG1fcGVuZGluZ1JlYWRz
IHsgMCB9OworICAgIG11dGFibGUgdWludDY0X3QgbV92ZXJzaW9uIHsgMCB9OworfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBPYmplY3RJ
ZGVudGlmaWVyUmVmZXJlbmNlPFQ+IHJlZmVyZW5jZSkKK3sKKyAgICBhZGQoaGFzaGVyLCByZWZl
cmVuY2UuaWRlbnRpZmllcigpKTsKKyAgICBhZGQoaGFzaGVyLCByZWZlcmVuY2UudmVyc2lvbigp
KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPiYg
cmVmZXJlbmNlKQoreworICAgIHRzIDw8ICJPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlKCIgPDwg
cmVmZXJlbmNlLmlkZW50aWZpZXIoKSA8PCAiLCAiIDw8IHJlZmVyZW5jZS52ZXJzaW9uKCkgPDwg
IikiOworICAgIHJldHVybiB0czsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1RleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFdlYktpdDo6T2JqZWN0SWRlbnRp
ZmllclJlYWRSZWZlcmVuY2U8VD4mIHJlZmVyZW5jZSkKK3sKKyAgICB0cyA8PCAiT2JqZWN0SWRl
bnRpZmllclJlYWRSZWZlcmVuY2UoIiA8PCByZWZlcmVuY2UuaWRlbnRpZmllcigpIDw8ICIsICIg
PDwgcmVmZXJlbmNlLnZlcnNpb24oKSA8PCAiKSI7CisgICAgcmV0dXJuIHRzOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U8VD4mIHJlZmVyZW5j
ZSkKK3sKKyAgICB0cyA8PCAiT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlKCIgPDwgcmVm
ZXJlbmNlLmlkZW50aWZpZXIoKSA8PCAiLCAiIDw8IHJlZmVyZW5jZS52ZXJzaW9uKCkgPDwgIiwg
IiA8PCByZWZlcmVuY2UucGVuZGluZ1JlYWRzKCkgPDwgIikiOworICAgIHJldHVybiB0czsKK30K
KworfQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhh
c2hUcmFpdHM8V2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+PiA6IFNpbXBsZUNs
YXNzSGFzaFRyYWl0czxXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4+IHsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IEhhc2hUcmFpdHM8VD46
OmVtcHR5VmFsdWVJc1plcm87Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVm
YXVsdEhhc2g8V2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+PiB7CisgICAgc3Rh
dGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNl
PFQ+JiByZWZlcmVuY2UpCisgICAgeworICAgICAgICByZXR1cm4gY29tcHV0ZUhhc2gocmVmZXJl
bmNlKTsKKyAgICB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViS2l0OjpPYmplY3RJ
ZGVudGlmaWVyUmVmZXJlbmNlPFQ+JiBhLCBjb25zdCBXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJS
ZWZlcmVuY2U8VD4mIGIpCisgICAgeworICAgICAgICByZXR1cm4gYSA9PSBiOworICAgIH0KKyAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBE
ZWZhdWx0SGFzaDxUPjo6c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQ7Cit9OworCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVGhyZWFkU2FmZU9iamVj
dEhlYXAuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RocmVhZFNhZmVPYmplY3RIZWFwLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjU1MDY0YzBkOGI0Njk4MjNjOWZjM2U3MDYzNTFlMjBhYWE2ZWNiZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RocmVhZFNhZmVPYmplY3RIZWFwLmgK
QEAgLTAsMCArMSwyMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJJUENUZXN0
ZXIuaCIKKyNpbmNsdWRlICJPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oIgorI2lu
Y2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZEFzc2VydGlvbnMuaD4KKyNpbmNs
dWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
Ky8vIENvbnRhaW5lciB0aGF0IGhvbGRzIGlkZW50aWZpZXIgLT4gb2JqZWN0IG1hcHBpbmcgYmV0
d2VlbiB0d28gcHJvY2Vzc2VzLgorLy8gVXNlZCBpbiBzY2VuYXJpb3Mgd2hlcmUgdGhlIGhvbGRl
ciBwcm9jZXNzIHByb2Nlc3NlcyBtZXNzYWdlcyB3aXRoIHRoZSBvYmplY3QgcmVmZXJlbmNlcyBp
biBtdWx0aXBsZQorLy8gdGhyZWFkcy4gYFRocmVhZFNhZmVPYmplY3RIZWFwYCB0cmFja3MgdGhl
IHJlYWQgYW5kIHdyaXRlIHJlZmVyZW5jZXMgdG8gdGhlIGNvbnRlbnQgcG9pbnRlZAorLy8gYnkg
YSBwYXJ0aWN1bGFyIGlkZW50aWZpZXIuCisvLyBQZW5kaW5nIHJlYWRzIG1heSBibG9jayBuZXcg
d3JpdGVzLiBBbHRlcm5hdGl2ZWx5IG5ldyB3cml0ZXMgY2FuIHNraXAgYWhlYWQgb2YgdGhlIHJl
YWRzLAorLy8gZm9yIGV4YW1wbGUgaW4gY29weS1vbi13cml0ZSBzY2VuYXJpb3MuCisvLyBQZW5k
aW5nIHdyaXRlcyBibG9jayByZWFkcy4KKy8vIEN1cnJlbnRseSBpbXBsZW1lbnRlZCBvbmx5IGZv
ciByZWFkLW9ubHkgKGNyZWF0ZS1yZWFkLWRlc3Ryb3kpIG9yIGNvcHktb24td3JpdGUgdHlwZXMs
CisvLyBlLmcuIG5vIHR3by1waGFzZSBnZXQoKSBvcGVyYXRpb25zIGFyZSBub3QgaW1wbGVtZW50
ZWQgeWV0LgordGVtcGxhdGU8dHlwZW5hbWUgSWRlbnRpZmllciwgdHlwZW5hbWUgSGVsZFR5cGU+
CitjbGFzcyBUaHJlYWRTYWZlT2JqZWN0SGVhcCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxUaHJlYWRTYWZlT2JqZWN0SGVhcDxJZGVudGlmaWVyLCBIZWxkVHlwZT4+IHsKK3B1YmxpYzoK
KyAgICB1c2luZyBSZWFkUmVmZXJlbmNlID0gdHlwZW5hbWUgT2JqZWN0SWRlbnRpZmllclJlZmVy
ZW5jZVRyYWNrZXI8SWRlbnRpZmllcj46OlJlYWRSZWZlcmVuY2U7CisgICAgdXNpbmcgV3JpdGVS
ZWZlcmVuY2UgPSB0eXBlbmFtZSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcjxJZGVu
dGlmaWVyPjo6V3JpdGVSZWZlcmVuY2U7CisgICAgdXNpbmcgUmVmZXJlbmNlID0gdHlwZW5hbWUg
T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXI8SWRlbnRpZmllcj46OlJlZmVyZW5jZTsK
KworICAgIHZvaWQgYWRkKElkZW50aWZpZXIsIEhlbGRUeXBlJiYpOworCisgICAgLy8gV2FpdHMg
dW50aWwgYSB3cml0ZSBjcmVhdGVzIHRoZSByZWZlcmVuY2UgYW5kIHRoZW4gcmV0aXJlcyB0aGUg
cmVhZCBvcgorICAgIC8vIHRpbWVzIG91dC4KKyAgICBIZWxkVHlwZSByZXRpcmUoUmVhZFJlZmVy
ZW5jZSYmLCBJUEM6OlRpbWVvdXQpOworCisgICAgLy8gSW5zZXJ0cyBhIG5ldyB2ZXJzaW9uIG9m
IHRoZSBvYmplY3Qgb3IgcmVtb3ZlcyBhbiBvbGQgb25lIGFuZCB0aGVuIHJldGlyZXMgdGhlIHdy
aXRlIG9yCisgICAgLy8gdGltZXMgb3V0LgorICAgIC8vIElmIHRpbWVvdXQgaXMgcGFzc2VkLCB3
YWl0cyB1bnRpbCBwZW5kaW5nIHJlYWRzIGFyZSBkb25lLgorICAgIC8vIEl0IGlzIGEgY2FsbGVy
IGVycm9yIHRvIG5vdCB3YWl0IGFuZCBtdXRhdGUgdGhlIG9sZCBvYmplY3QuCisgICAgdm9pZCBy
ZXRpcmUoV3JpdGVSZWZlcmVuY2UmJiwgc3RkOjpvcHRpb25hbDxIZWxkVHlwZT4mJiBuZXdPYmpl
Y3QsIHN0ZDo6b3B0aW9uYWw8SVBDOjpUaW1lb3V0Pik7CisKKyAgICB2b2lkIHJldGlyZVJlbW92
ZShXcml0ZVJlZmVyZW5jZSYmKTsKKworICAgIHZvaWQgY2xlYXIoKTsKK3ByaXZhdGU6CisgICAg
TG9jayBtX29iamVjdHNMb2NrOworICAgIENvbmRpdGlvbiBtX29iamVjdHNDb25kaXRpb247Cisg
ICAgc3RydWN0IFJlZmVyZW5jZVN0YXRlIHsKKyAgICAgICAgdWludDY0X3QgcmV0aXJlZFJlYWRz
IHsgMCB9OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaW5hbFJlYWQ7IC8vIFJl
bW92ZSBhZnRlciBgZmluYWxSZWFkYCByZWFkcy4KKyAgICAgICAgc3RkOjpvcHRpb25hbDxIZWxk
VHlwZT4gb2JqZWN0OyAvLyBPYmplY3Qgb3IgdG9tYnN0b25lLgorCisgICAgICAgIFJlZmVyZW5j
ZVN0YXRlKCkgPSBkZWZhdWx0OworICAgICAgICBleHBsaWNpdCBSZWZlcmVuY2VTdGF0ZShIZWxk
VHlwZSYmIG9iamVjdCkKKyAgICAgICAgICAgIDogb2JqZWN0KFdURk1vdmUob2JqZWN0KSkKKyAg
ICAgICAgeworICAgICAgICB9CisgICAgICAgIC8vIFRvbWJzdG9uZSBjb25zdHJ1Y3Rvci4KKyAg
ICAgICAgZXhwbGljaXQgUmVmZXJlbmNlU3RhdGUodWludDY0X3QgZmluYWxSZWFkKQorICAgICAg
ICAgICAgOiBmaW5hbFJlYWQoZmluYWxSZWFkKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICB9
OworICAgIEhhc2hNYXA8UmVmZXJlbmNlLCBSZWZlcmVuY2VTdGF0ZT4gbV9vYmplY3RzIFdURl9H
VUFSREVEX0JZX0xPQ0sobV9vYmplY3RzTG9jayk7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJ
ZGVudGlmaWVyLCB0eXBlbmFtZSBIZWxkVHlwZT4KK0hlbGRUeXBlIFRocmVhZFNhZmVPYmplY3RI
ZWFwPElkZW50aWZpZXIsIEhlbGRUeXBlPjo6cmV0aXJlKFJlYWRSZWZlcmVuY2UmJiByZWFkLCBJ
UEM6OlRpbWVvdXQgdGltZW91dCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9vYmplY3RzTG9j
ayB9OworICAgIGRvIHsKKyAgICAgICAgYXV0byBpdCA9IG1fb2JqZWN0cy5maW5kKHJlYWQucmVm
ZXJlbmNlKCkpOworICAgICAgICBpZiAoaXQgIT0gbV9vYmplY3RzLmVuZCgpKSB7CisgICAgICAg
ICAgICBhdXRvJiBzdGF0ZSA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAgIGlmIChzdGF0ZS5vYmpl
Y3QpIHsKKyAgICAgICAgICAgICAgICBIZWxkVHlwZSByZXN1bHQgPSAqc3RhdGUub2JqZWN0Owor
ICAgICAgICAgICAgICAgIHN0YXRlLnJldGlyZWRSZWFkcysrOworICAgICAgICAgICAgICAgIGlm
IChzdGF0ZS5maW5hbFJlYWQpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0YXRlLmZp
bmFsUmVhZCA+PSBzdGF0ZS5yZXRpcmVkUmVhZHMpOyAvLyBUcnVzdGVkIGFzc2VydCBiZWNhdXNl
IHRoaXMgaXMgZW5zdXJlZCBvbiBgZmluYWxSZWFkYCBhc3NpZ25tZW50LgorICAgICAgICAgICAg
ICAgICAgICBpZiAoc3RhdGUuZmluYWxSZWFkID09IHN0YXRlLnJldGlyZWRSZWFkcykKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fb2JqZWN0cy5yZW1vdmUoaXQpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBtX29iamVjdHNDb25kaXRpb24ubm90aWZ5QWxsKCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBpZiAoIW1fb2JqZWN0c0NvbmRpdGlvbi53YWl0VW50aWwobV9vYmplY3RzTG9jaywgdGlt
ZW91dC5kZWFkbGluZSgpKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0gd2hpbGUgKHRydWUp
OworICAgIHJldHVybiBudWxscHRyOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJZGVudGlmaWVy
LCB0eXBlbmFtZSBIZWxkVHlwZT4KK3ZvaWQgVGhyZWFkU2FmZU9iamVjdEhlYXA8SWRlbnRpZmll
ciwgSGVsZFR5cGU+OjpyZXRpcmUoV3JpdGVSZWZlcmVuY2UmJiB3cml0ZSwgc3RkOjpvcHRpb25h
bDxIZWxkVHlwZT4mJiBvYmplY3QsIHN0ZDo6b3B0aW9uYWw8SVBDOjpUaW1lb3V0PiB0aW1lb3V0
KQoreworICAgIGNvbnN0IGJvb2wgd2FpdEZvclBlbmRpbmdSZWFkcyA9IHRpbWVvdXQuaGFzX3Zh
bHVlKCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fb2JqZWN0c0xvY2sgfTsKKyAgICBkbyB7Cisg
ICAgICAgIGF1dG8gaXQgPSBtX29iamVjdHMuZmluZCh3cml0ZS5yZWZlcmVuY2UoKSk7CisgICAg
ICAgIGlmIChpdCAhPSBtX29iamVjdHMuZW5kKCkpIHsKKyAgICAgICAgICAgIGF1dG8mIHN0YXRl
ID0gaXQtPnZhbHVlOworICAgICAgICAgICAgaWYgKHN0YXRlLmZpbmFsUmVhZCAmJiBzdGF0ZS5v
YmplY3QpIHsKKyAgICAgICAgICAgICAgICAvLyBXcml0ZSByZXBsYXk6IGBmaW5hbFJlYWRgIGlz
IGFzc2lnbmVkIG9uIHdyaXRlLiBDYW5ub3QgaGF2ZSB0aGUgc2FtZSB2ZXJzaW9uIHdpdGggd3Jp
dGVzLgorICAgICAgICAgICAgICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdGF0ZS5yZXRp
cmVkUmVhZHMgPiB3cml0ZS5wZW5kaW5nUmVhZHMoKSkgeworICAgICAgICAgICAgICAgIC8vIFdy
aXRlIHVuZGVyZmxvdzogbW9yZSByZWFkcyBoYXZlIGJlZW4gZG9uZSB0aGFuIHRoZSBzZW5kZXIg
Y2xhaW1zIGlzIHRoZSBtYXhpbXVtLgorICAgICAgICAgICAgICAgIEFTU0VSVF9JU19URVNUSU5H
X0lQQygpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC8vIEl0IGlzIGxpa2VseSBhIGNhbGxlciBlcnJvciB0byB0cnkgdG8gYWRkIGEgbmV3IHJl
ZmVyZW5jZSB3aXRoIHRoZSBzYW1lIGNsaWVudCBvYmplY3Qgd2l0aG91dAorICAgICAgICAgICAg
Ly8gd2FpdGluZyBmb3IgcGVuZGluZyByZWFkcyBvbiB0aGUgb2xkIHJlZmVyZW5jZS4KKyAgICAg
ICAgICAgIEFTU0VSVCh3YWl0Rm9yUGVuZGluZ1JlYWRzIHx8ICFzdGF0ZS5vYmplY3QgfHwgKnN0
YXRlLm9iamVjdCAhPSBvYmplY3QpOworCisgICAgICAgICAgICBpZiAoc3RhdGUucmV0aXJlZFJl
YWRzID09IHdyaXRlLnBlbmRpbmdSZWFkcygpIHx8ICF3YWl0Rm9yUGVuZGluZ1JlYWRzKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHN0YXRlLnJldGlyZWRSZWFkcyA8IHdyaXRlLnBlbmRpbmdSZWFk
cygpKQorICAgICAgICAgICAgICAgICAgICBzdGF0ZS5maW5hbFJlYWQgPSB3cml0ZS5wZW5kaW5n
UmVhZHMoKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChzdGF0ZS5yZXRpcmVkUmVhZHMgPT0g
d3JpdGUucGVuZGluZ1JlYWRzKCkpCisgICAgICAgICAgICAgICAgICAgIG1fb2JqZWN0cy5yZW1v
dmUoaXQpOworICAgICAgICAgICAgICAgIGlmIChvYmplY3QpIHsKKyAgICAgICAgICAgICAgICAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX29iamVjdHMuYWRkKFdURk1vdmUod3JpdGUpLnJldGlyZSgp
LCBSZWZlcmVuY2VTdGF0ZSB7IFdURk1vdmUoKm9iamVjdCkgfSk7CisgICAgICAgICAgICAgICAg
ICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8mIG5ld1N0YXRlID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEVudHJ5IHdhcyBhIHRvbWJzdG9uZS4KKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChuZXdTdGF0ZS5maW5hbFJlYWQgJiYgISpuZXdTdGF0ZS5maW5hbFJlYWQpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX29iamVjdHMucmVtb3ZlKGFkZFJlc3VsdC5p
dGVyYXRvcik7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFuZXdTdGF0ZS5v
YmplY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTdGF0ZS5vYmplY3QgPSBX
VEZNb3ZlKCpvYmplY3QpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChuZXdT
dGF0ZS5vYmplY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXcml0ZSByZXBs
YXk6IHRoZSByZXRpcmVkIHdyaXRlIGFscmVhZHkgZXhpc3RzLCB0aGUgZW50cnkgd2FzIG5vdCBh
IHRvbWJzdG9uZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlRfSVNfVEVTVElO
R19JUEMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgbV9vYmplY3RzQ29uZGl0aW9uLm5vdGlmeUFsbCgpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAo
IXdhaXRGb3JQZW5kaW5nUmVhZHMgfHwgIXdyaXRlLnBlbmRpbmdSZWFkcygpKSB7CisgICAgICAg
ICAgICAvLyBXcml0ZSB0aGUgdG9tYnN0b25lLgorICAgICAgICAgICAgbV9vYmplY3RzLmFkZCh3
cml0ZS5yZWZlcmVuY2UoKSwgUmVmZXJlbmNlU3RhdGUgeyB3cml0ZS5wZW5kaW5nUmVhZHMoKSB9
KTsKKyAgICAgICAgICAgIGlmIChvYmplY3QpCisgICAgICAgICAgICAgICAgbV9vYmplY3RzLmFk
ZChXVEZNb3ZlKHdyaXRlKS5yZXRpcmUoKSwgUmVmZXJlbmNlU3RhdGUgeyBXVEZNb3ZlKCpvYmpl
Y3QpIH0pOworICAgICAgICAgICAgbV9vYmplY3RzQ29uZGl0aW9uLm5vdGlmeUFsbCgpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIEFTU0VSVCh0aW1lb3V0KTsKKyAg
ICAgICAgaWYgKCFtX29iamVjdHNDb25kaXRpb24ud2FpdFVudGlsKG1fb2JqZWN0c0xvY2ssIHRp
bWVvdXQtPmRlYWRsaW5lKCkpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfSB3aGlsZSAodHJ1
ZSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIElkZW50aWZpZXIsIHR5cGVuYW1lIEhlbGRUeXBl
Pgordm9pZCBUaHJlYWRTYWZlT2JqZWN0SGVhcDxJZGVudGlmaWVyLCBIZWxkVHlwZT46OnJldGly
ZVJlbW92ZShXcml0ZVJlZmVyZW5jZSYmIG9iamVjdCkKK3sKKyAgICByZXRpcmUoV1RGTW92ZShv
YmplY3QpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIElkZW50aWZpZXIsIHR5cGVuYW1lIEhlbGRUeXBlPgordm9pZCBUaHJlYWRTYWZlT2JqZWN0
SGVhcDxJZGVudGlmaWVyLCBIZWxkVHlwZT46OmNsZWFyKCkKK3sKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9vYmplY3RzTG9jayB9OworICAgIG1fb2JqZWN0cy5jbGVhcigpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBJZGVudGlmaWVyLCB0eXBlbmFtZSBIZWxkVHlwZT4KK3ZvaWQgVGhyZWFkU2Fm
ZU9iamVjdEhlYXA8SWRlbnRpZmllciwgSGVsZFR5cGU+OjphZGQoSWRlbnRpZmllciBpZGVudGlm
aWVyLCBIZWxkVHlwZSYmIG9iamVjdCkKK3sKKyAgICBSZWZlcmVuY2UgcmVmZXJlbmNlIHsgaWRl
bnRpZmllciwgMCB9OworICAgIExvY2tlciBsb2NrZXIgeyBtX29iamVjdHNMb2NrIH07CisgICAg
QVNTRVJUKCFtX29iamVjdHMuY29udGFpbnMocmVmZXJlbmNlKSk7CisgICAgbV9vYmplY3RzLmFk
ZChyZWZlcmVuY2UsIFJlZmVyZW5jZVN0YXRlIHsgV1RGTW92ZShvYmplY3QpIH0pOworfQorCit9
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1h
dFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuY3BwCmluZGV4IDRkZTFk
MGVkMmE3YmU0OWUzY2JiYjk1ZTM3N2Y1NDUwOWZhYzA3YWQuLjc4ZjczMTM0Y2U2YTdhMjE0Y2Rj
OWRlMDVjNDc1MzcyZTE3YzlhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdl
LmNwcApAQCAtNjYsNyArNjYsNyBAQCBBdG9tU3RyaW5nIE1lZGlhU2FtcGxlQnl0ZVJhbmdlOjp0
cmFja0lEKCkgY29uc3QKICAgICByZXR1cm4gQXRvbVN0cmluZzo6bnVtYmVyKG1fdHJhY2tJRCk7
CiB9CiAKLVBsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxlQnl0ZVJhbmdlOjpwbGF0Zm9ybVNhbXBs
ZSgpCitQbGF0Zm9ybVNhbXBsZSBNZWRpYVNhbXBsZUJ5dGVSYW5nZTo6cGxhdGZvcm1TYW1wbGUo
KSBjb25zdAogewogICAgIHJldHVybiB7CiAgICAgICAgIFBsYXRmb3JtU2FtcGxlOjpCeXRlUmFu
Z2VTYW1wbGVUeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlh
Rm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaAppbmRleCBiOGU0
ZDc2Y2U2ZjM5Mjg1NzZlOWZiMWVmOTYyYjQwNDk3ZTNkYzMxLi5mODMzNmJmMDEzNzIxMDkwZGEx
OTM3OGZiNWE0NTNjOGRhY2E1NzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2Uu
aApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+
IGJ5dGVSYW5nZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYnl0ZVJhbmdlOyB9CiAKICAgICBB
dG9tU3RyaW5nIHRyYWNrSUQoKSBjb25zdCBmaW5hbDsKLSAgICBXZWJDb3JlOjpQbGF0Zm9ybVNh
bXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGZpbmFsOworICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxl
IHBsYXRmb3JtU2FtcGxlKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBvZmZzZXRUaW1lc3RhbXBz
QnkoY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CiAgICAgdm9pZCBzZXRUaW1lc3RhbXBzKGNvbnN0
IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA5
Zjg5MGE2Mjk4NDNhN2UyMjkwNGQ2YWQ2ZTVhMzJhMTlmNmU2YjIxLi42YzUwNjIxYmY0NDg0YTg2
YWJiMjJkM2E3OWFlMmEwMzI4YzFhNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTcwLDYgKzcwLDcgQEAg
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlTG9hZGVyLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
TWFuYWdlci5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAu
Y3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuY3BwCiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lclByb3h5LmNwcAogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAKQEAgLTc0Niw2ICs3NDcsNyBAQCBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5
LmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcCBA
bm8tdW5pZnkKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5j
cHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcApAQCAtNzU0LDYgKzc1Niw3IEBAIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwCiBXZWJQcm9jZXNzL0dQVS93
ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVj
b3JkZXJQcml2YXRlLmNwcAogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92
aWRlci5jcHAKK1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cFByb3h5LmNwcAogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5jcHAKIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5h
Z2VyLmNwcAogCkBAIC04ODQsNiArODg3LDkgQEAgUmVtb3RlRGV2aWNlTWVzc2FnZVJlY2VpdmVy
LmNwcAogUmVtb3RlRXh0ZXJuYWxUZXh0dXJlTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlR1BV
TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlR1BVUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCitS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCitSZW1vdGVWaWRlb0ZyYW1l
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVQaXBlbGluZUxheW91dE1lc3NhZ2VSZWNl
aXZlci5jcHAKIFJlbW90ZVF1ZXJ5U2V0TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUXVldWVN
ZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDJhZjc4
MjkwZjUwNzNlYTFjOTc2MTk3MjM4Y2Y1NjI0ZjY5ZDhhMWEuLmUyMGQ3ZDBiNGEzYjNhZWQzNThj
ZDY5OTU5YzgyYTU3ZjkxOWY2ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCkBAIC0z
MCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
Q2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwLmgiCiAjaW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKICNp
bmNsdWRlICJVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCkBAIC00MCw2ICs0MSw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdl
Um90YXRpb25TZXNzaW9uVlQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhQ29uc3RyYWludHMu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2FtcGxlQVZGT2JqQy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVh
bHRpbWVWaWRlb1NvdXJjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlVmlkZW9TYW1wbGUu
aD4KQEAgLTU3LDExICs1OSwxMiBAQCBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
OjpTb3VyY2VQcm94eQogICAgICwgcHJpdmF0ZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb1Nh
bXBsZU9ic2VydmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBTb3VyY2VQcm94eShSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgUmVmPElQQzo6
Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBQcm9jZXNzSWRlbnRpdHkmJiByZXNvdXJjZU93bmVy
LCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiBzb3VyY2UpCisgICAgU291cmNlUHJveHkoUmVh
bHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29u
bmVjdGlvbiwgUHJvY2Vzc0lkZW50aXR5JiYgcmVzb3VyY2VPd25lciwgUmVmPFJlYWx0aW1lTWVk
aWFTb3VyY2U+JiYgc291cmNlLCBSZWZQdHI8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+JiYg
dmlkZW9GcmFtZU9iamVjdEhlYXApCiAgICAgICAgIDogbV9pZChpZCkKICAgICAgICAgLCBtX2Nv
bm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKICAgICAgICAgLCBtX3Jlc291cmNlT3duZXIo
V1RGTW92ZShyZXNvdXJjZU93bmVyKSkKICAgICAgICAgLCBtX3NvdXJjZShXVEZNb3ZlKHNvdXJj
ZSkpCisgICAgICAgICwgbV92aWRlb0ZyYW1lT2JqZWN0SGVhcChXVEZNb3ZlKHZpZGVvRnJhbWVP
YmplY3RIZWFwKSkKICAgICB7CiAgICAgICAgIG1fc291cmNlLT5hZGRPYnNlcnZlcigqdGhpcyk7
CiAgICAgICAgIHN3aXRjaCAobV9zb3VyY2UtPnR5cGUoKSkgewpAQCAtMTgzLDE5ICsxODYsMzUg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fY2FwdHVyZVNlbWFwaG9yZS0+c2lnbmFsKCk7CiAg
ICAgfQogCi0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgc2FtcGxl
LCBWaWRlb1NhbXBsZU1ldGFkYXRhIG1ldGFkYXRhKSBmaW5hbAorICAgIFJlZlB0cjxNZWRpYVNh
bXBsZT4gcm90YXRlVmlkZW9GcmFtZUlmTmVlZGVkKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IHJlbW90ZVNhbXBs
ZTsKICAgICAgICAgaWYgKG1fc2hvdWxkQXBwbHlSb3RhdGlvbiAmJiBzYW1wbGUudmlkZW9Sb3Rh
dGlvbigpICE9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lKSB7CiAgICAgICAgICAg
ICBhdXRvIHBpeGVsQnVmZmVyID0gcm90YXRlUGl4ZWxCdWZmZXIoc2FtcGxlKTsKLSAgICAgICAg
ICAgIHJlbW90ZVNhbXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUocGl4ZWxCdWZmZXIu
Z2V0KCksIHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCkpOwotICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIHJlbW90ZVNhbXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoc2FtcGxlKTsK
LSAgICAgICAgaWYgKHJlbW90ZVNhbXBsZSkgewotICAgICAgICAgICAgaWYgKG1fcmVzb3VyY2VP
d25lcikKLSAgICAgICAgICAgICAgICByZW1vdGVTYW1wbGUtPnNldE93bmVyc2hpcElkZW50aXR5
KG1fcmVzb3VyY2VPd25lcik7Ci0gICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjpWaWRlb1NhbXBsZUF2YWlsYWJsZShtX2lk
LCBXVEZNb3ZlKCpyZW1vdGVTYW1wbGUpLCBtZXRhZGF0YSksIDApOworICAgICAgICAgICAgcmV0
dXJuIE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUoV1RGTW92ZShwaXhlbEJ1
ZmZlciksIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lLCBzYW1wbGUudmlkZW9NaXJy
b3JlZCgpLCBzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpLCBzYW1wbGUuZGVjb2RlVGltZSgpKTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gJnNhbXBsZTsKKyAgICB9CisKKyAgICB2b2lkIHZp
ZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUsIFZpZGVvU2FtcGxlTWV0YWRh
dGEgbWV0YWRhdGEpIGZpbmFsCisgICAgeworICAgICAgICBhdXRvIHZpZGVvU2FtcGxlID0gcm90
YXRlVmlkZW9GcmFtZUlmTmVlZGVkKHNhbXBsZSk7CisgICAgICAgIGlmICghdmlkZW9TYW1wbGUp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byByZW1vdGVTYW1wbGUgPSBSZW1v
dGVWaWRlb1NhbXBsZTo6Y3JlYXRlKCp2aWRlb1NhbXBsZSk7CisgICAgICAgIGlmICghcmVtb3Rl
U2FtcGxlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChtX3Jlc291cmNlT3du
ZXIpCisgICAgICAgICAgICByZW1vdGVTYW1wbGUtPnNldE93bmVyc2hpcElkZW50aXR5KG1fcmVz
b3VyY2VPd25lcik7CisKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lSWRl
bnRpZmllcj4gcmVtb3RlSWRlbnRpZmllcjsKKyAgICAgICAgaWYgKG1fdmlkZW9GcmFtZU9iamVj
dEhlYXApIHsKKyAgICAgICAgICAgIHJlbW90ZUlkZW50aWZpZXIgPSBtX3ZpZGVvRnJhbWVPYmpl
Y3RIZWFwLT5jcmVhdGVSZW1vdGVWaWRlb0ZyYW1lKHNhbXBsZSk7CisgICAgICAgICAgICByZW1v
dGVTYW1wbGUtPmNsZWFySU9TdXJmYWNlKCk7CiAgICAgICAgIH0KKworICAgICAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjpWaWRlb1Nh
bXBsZUF2YWlsYWJsZShtX2lkLCBXVEZNb3ZlKCpyZW1vdGVTYW1wbGUpLCByZW1vdGVJZGVudGlm
aWVyLCBtZXRhZGF0YSksIDApOwogICAgIH0KIAogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVy
UmVmPiByb3RhdGVQaXhlbEJ1ZmZlcihNZWRpYVNhbXBsZSYgc2FtcGxlKQpAQCAtMjYwLDYgKzI3
OSw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fZnJhbWVDaHVua1NpemUgeyAwIH07CiAgICAg
TWVkaWFUaW1lIG1fc3RhcnRUaW1lOwogICAgIGJvb2wgbV9zaG91bGRSZXNldCB7IGZhbHNlIH07
CisgICAgUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBtX3ZpZGVvRnJhbWVPYmpl
Y3RIZWFwOwogfTsKIAogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6VXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJQcm94eShVbmlxdWVSZWY8Q29ubmVjdGlvblByb3h5PiYmIGNvbm5lY3Rpb25Q
cm94eSkKQEAgLTI3Myw3ICsyOTMsNyBAQCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Ojp+
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSgpCiAgICAgbV9jb25uZWN0aW9uUHJveHktPnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKIH0KIAotdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5OjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWlu
dHMoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIGNvbnN0IENhcHR1cmVEZXZpY2Um
IGRldmljZSwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIG1lZGlh
Q29uc3RyYWludHMsIENyZWF0ZVNvdXJjZUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OmNyZWF0ZU1lZGlhU291cmNlRm9yQ2Fw
dHVyZURldmljZVdpdGhDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBp
ZCwgY29uc3QgQ2FwdHVyZURldmljZSYgZGV2aWNlLCBTdHJpbmcmJiBoYXNoU2FsdCwgY29uc3Qg
TWVkaWFDb25zdHJhaW50cyYgbWVkaWFDb25zdHJhaW50cywgYm9vbCBzaG91bGRVc2VHUFVQcm9j
ZXNzUmVtb3RlRnJhbWVzLCBDcmVhdGVTb3VyY2VDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGlmICghbV9jb25uZWN0aW9uUHJveHktPndpbGxTdGFydENhcHR1cmUoZGV2aWNl
LnR5cGUoKSkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSwgIlJlcXVl
c3QgaXMgbm90IGFsbG93ZWQiX3MsIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyB7IH0sIHsg
fSwgeyB9LCB7IH0sIDApOwpAQCAtMzI0LDcgKzM0NCw3IEBAIHZvaWQgVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0
cmFpCiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQoIW1fcHJveGllcy5jb250YWlucyhpZCkp
OwotICAgICAgICBhdXRvIHByb3h5ID0gbWFrZVVuaXF1ZTxTb3VyY2VQcm94eT4oaWQsIG1fY29u
bmVjdGlvblByb3h5LT5jb25uZWN0aW9uKCksIFByb2Nlc3NJZGVudGl0eSB7IG1fY29ubmVjdGlv
blByb3h5LT5yZXNvdXJjZU93bmVyKCkgfSwgV1RGTW92ZShzb3VyY2UpKTsKKyAgICAgICAgYXV0
byBwcm94eSA9IG1ha2VVbmlxdWU8U291cmNlUHJveHk+KGlkLCBtX2Nvbm5lY3Rpb25Qcm94eS0+
Y29ubmVjdGlvbigpLCBQcm9jZXNzSWRlbnRpdHkgeyBtX2Nvbm5lY3Rpb25Qcm94eS0+cmVzb3Vy
Y2VPd25lcigpIH0sIFdURk1vdmUoc291cmNlKSwgc2hvdWxkVXNlR1BVUHJvY2Vzc1JlbW90ZUZy
YW1lcyA/IG1fY29ubmVjdGlvblByb3h5LT5yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCgpIDog
bnVsbHB0cik7CiAgICAgICAgIG1fcHJveGllcy5hZGQoaWQsIFdURk1vdmUocHJveHkpKTsKICAg
ICB9IGVsc2UKICAgICAgICAgaW52YWxpZENvbnN0cmFpbnRzID0gV1RGTW92ZShzb3VyY2VPckVy
cm9yLmVycm9yTWVzc2FnZSk7CkBAIC0zOTAsNyArNDEwLDcgQEAgdm9pZCBVc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5OjpjbG9uZShSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBjbG9u
ZWRJRCwKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJveGllcy5jb250YWlucyhjbG9uZWRJRCkpOwog
ICAgIE1FU1NBR0VfQ0hFQ0soIW1fcHJveGllcy5jb250YWlucyhuZXdTb3VyY2VJRCkpOwogICAg
IGlmIChhdXRvKiBwcm94eSA9IG1fcHJveGllcy5nZXQoY2xvbmVkSUQpKQotICAgICAgICBtX3By
b3hpZXMuYWRkKG5ld1NvdXJjZUlELCBtYWtlVW5pcXVlPFNvdXJjZVByb3h5PihuZXdTb3VyY2VJ
RCwgbV9jb25uZWN0aW9uUHJveHktPmNvbm5lY3Rpb24oKSwgUHJvY2Vzc0lkZW50aXR5IHsgbV9j
b25uZWN0aW9uUHJveHktPnJlc291cmNlT3duZXIoKSB9LCBwcm94eS0+c291cmNlKCkuY2xvbmUo
KSkpOworICAgICAgICBtX3Byb3hpZXMuYWRkKG5ld1NvdXJjZUlELCBtYWtlVW5pcXVlPFNvdXJj
ZVByb3h5PihuZXdTb3VyY2VJRCwgbV9jb25uZWN0aW9uUHJveHktPmNvbm5lY3Rpb24oKSwgUHJv
Y2Vzc0lkZW50aXR5IHsgbV9jb25uZWN0aW9uUHJveHktPnJlc291cmNlT3duZXIoKSB9LCBwcm94
eS0+c291cmNlKCkuY2xvbmUoKSwgbV9jb25uZWN0aW9uUHJveHktPnJlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwKCkpKTsKIH0KIAogdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Ojpy
ZXF1ZXN0VG9FbmQoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgc291cmNlSUQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5LmgKaW5kZXggZmE4MjljN2M0OTAzZDUxYjU3YTc4OTcxNzg0NzNmODBj
YmYyODZkZS4uNjU4YjViN2QxODg2YzQ4MzA2ZjE4MDNhMzg4MDRiOTUzZDg1NGY1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHkuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0NhcHR1cmVEZXZpY2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L09yaWVudGF0aW9uTm90aWZpZXIuaD4KQEAgLTY1LDYgKzY2LDcgQEAgcHVibGljOgogICAgICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VENDSWRlbnRpdHkoKSB7IH0KICNlbmRpZgogICAgICAgICB2aXJ0
dWFsIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6
OlR5cGUpIHsgfQorICAgICAgICB2aXJ0dWFsIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKiBy
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB9Owog
ICAgIGV4cGxpY2l0IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkoVW5pcXVlUmVmPENvbm5l
Y3Rpb25Qcm94eT4mJik7CiAgICAgflVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkoKTsKQEAg
LTgyLDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiAgICAgdXNpbmcgQ3JlYXRlU291
cmNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc3VjY2VlZGVkLCBTdHJp
bmcgaW52YWxpZENvbnN0cmFpbnRzLCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MmJiwgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYmLCBWZWN0b3I8
V2ViQ29yZTo6VmlkZW9QcmVzZXREYXRhPiYmLCBXZWJDb3JlOjpJbnRTaXplLCBkb3VibGUpPjsK
LSAgICB2b2lkIGNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50
cyhXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
Q2FwdHVyZURldmljZSYgZGV2aWNlSUQsIFN0cmluZyYmLCBjb25zdCBXZWJDb3JlOjpNZWRpYUNv
bnN0cmFpbnRzJiwgQ3JlYXRlU291cmNlQ2FsbGJhY2smJik7CisgICAgdm9pZCBjcmVhdGVNZWRp
YVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2UmIGRldmlj
ZUlELCBTdHJpbmcmJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cyYsIGJvb2wgc2hv
dWxkVXNlR1BVUHJvY2Vzc1JlbW90ZUZyYW1lcywgQ3JlYXRlU291cmNlQ2FsbGJhY2smJik7CiAg
ICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlk
ZW50aWZpZXIpOwogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZW5kKFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2VJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluCmluZGV4IDU5MTM5ODY3OGIxMWEwM2EyN2JiZjFkZDI5YjI0YzljZGZlMGI0YjkuLjdi
Y2E0NTNlNzM3NTM3NjlhN2ZjNThlMmU3MDczMmI4NTdkOWI4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQsNyBAQAogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAKIG1lc3NhZ2VzIC0+IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkgTm90UmVmQ291bnRlZCB7Ci0gICAgQ3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNl
V2l0aENvbnN0cmFpbnRzKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlk
LCBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlIGRldmljZSwgU3RyaW5nIGhhc2hTYWx0LCBzdHJ1Y3Qg
V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cyBjb25zdHJhaW50cykgLT4gKGJvb2wgc3VjY2Vzcywg
U3RyaW5nIGludmFsaWRDb25zdHJhaW50cywgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzIHNldHRpbmdzLCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
IGNhcGFiaWxpdGllcywgVmVjdG9yPFdlYkNvcmU6OlZpZGVvUHJlc2V0RGF0YT4gcHJlc2V0cywg
V2ViQ29yZTo6SW50U2l6ZSBzaXplLCBkb3VibGUgZnJhbWVSYXRlKSBBc3luYworICAgIENyZWF0
ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyhXZWJDb3JlOjpSZWFs
dGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgV2ViQ29yZTo6Q2FwdHVyZURldmljZSBkZXZp
Y2UsIFN0cmluZyBoYXNoU2FsdCwgc3RydWN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHMgY29u
c3RyYWludHMsIGJvb2wgc2hvdWxkVXNlR1BVUHJvY2Vzc1JlbW90ZUZyYW1lcykgLT4gKGJvb2wg
c3VjY2VzcywgU3RyaW5nIGludmFsaWRDb25zdHJhaW50cywgV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzIHNldHRpbmdzLCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzIGNhcGFiaWxpdGllcywgVmVjdG9yPFdlYkNvcmU6OlZpZGVvUHJlc2V0RGF0YT4g
cHJlc2V0cywgV2ViQ29yZTo6SW50U2l6ZSBzaXplLCBkb3VibGUgZnJhbWVSYXRlKSBBc3luYwog
ICAgIFN0YXJ0UHJvZHVjaW5nRGF0YShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRp
ZmllciBpZCkKICAgICBTdG9wUHJvZHVjaW5nRGF0YShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlSWRlbnRpZmllciBpZCkKICAgICBFbmQoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlk
ZW50aWZpZXIgaWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA4MzI1NzgyYmYxYjdjOTVjNjA0YTU0MTNlNjQ1MzBjZGEyNjA1ZjRkLi40
NDUwZGQyZGQyZTcwOWRiMGU5ZDk4ZGRlMjFlZDcxZWU3NDcxMzUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQwNzUsNiArNDA3NSw5
IEBACiAJCTQxMUI4OUM3MjdCMkI3NUMwMEY5RUJEMyAvKiBXS1F1ZXJ5UGVybWlzc2lvblJlc3Vs
dENhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUXVlcnlQZXJt
aXNzaW9uUmVzdWx0Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEx
Qjg5QzgyN0IyQjc1RDAwRjlFQkQzIC8qIFdLUXVlcnlQZXJtaXNzaW9uUmVzdWx0Q2FsbGJhY2su
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tRdWVyeVBlcm1pc3Np
b25SZXN1bHRDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMUI4
OUNCMjdCMkI4OTYwMEY5RUJEMyAvKiBRdWVyeVBlcm1pc3Npb25SZXN1bHRDYWxsYmFjay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWVyeVBlcm1pc3Npb25SZXN1bHRDYWxs
YmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTFCODlFNDI3QjVENTgyMDBG
OUVCRDMgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5tZXNzYWdlcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MTFCODlFNTI3QjVENTgzMDBGOUVCRDMgLyogUmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXBQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMUI4OUU2
MjdCNUQ1ODQwMEY5RUJEMyAvKiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI4N0Q0QjIyNUMwNUM0MDA5QTNFMjYgLyog
V2ViU29ja2V0VGFza0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViU29ja2V0VGFza0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTI4N0Q0QzIyNUMwNUM1MDA5QTNFMjYgLyogV2ViU29ja2V0VGFza0NvY29hLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldFRhc2tDb2NvYS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI4N0Q0RDIyNUMxNjFGMDA5QTNFMjYgLyogV2ViU29j
a2V0VGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRUYXNr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTc2LDcgKzQxNzksNiBAQAogCQk0
MUMzQjg5NDI2NDkzQjdDMDA0RUQ0REUgLyogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5tZXNzYWdlcy5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDNTM3OEYyMUYxMzYyRDAwOEIxRkFEIC8qIF9X
S1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDFDODU4MTkxRjUxMERFRTAwNjVFMDg1IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFDQjg0MDMy
NUNBQkY3QzAwMTBFMkIxIC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gTWVkaWFSZWNvcmRlclByaXZhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxRDEyOUQ5MUYzRDEwMTQwMEQxNUU0NyAvKiBXZWJDYWNoZVN0b3JhZ2VQcm92aWRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MUQ1QzZEODIzOEVCMjBEMDBCOUIzQ0IgLyogU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDFENUM2RDkyMzhFQjIwRTAwQjlCM0NCIC8qIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTUxMTYsNiArNTExOCwxMyBAQAogCQk3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2Fn
ZVJlY2VpdmVRdWV1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2Fn
ZVJlY2VpdmVRdWV1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I1MEU5N0Yy
NzcxRjZDRTAwM0RBQUM0IC8qIElQQ1Rlc3Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJUENU
ZXN0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjUwRTk4MDI3NzFGNkNG
MDAzREFBQzQgLyogSVBDVGVzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElQQ1Rlc3Rlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBMDI3QTdEQzFBMDA2QzZGOTcgLyogUmVt
b3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0I1QTNEQTEyN0E3REMxQTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94eS5t
ZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lUHJveHku
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREEyMjdBN0RD
MUEwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCNUEzREEzMjdBN0RDNkMwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1l
UHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlVmlk
ZW9GcmFtZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQTcy
N0E3RENCQzAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREE4MjdBN0RDQkMwMDZDNkY5NyAvKiBS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdCNUEzREM1MjdBRTUwMUEwMDZDNkY5NyAvKiBPYmplY3RJZGVudGlm
aWVyUmVmZXJlbmNlVHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPYmplY3RJZGVudGlmaWVyUmVm
ZXJlbmNlVHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjY0QzBCNjI1
NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9u
QnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMjMyMjVDQzg1MjMw
MDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTE0MSw2ICs1MTUwLDcgQEAKIAkJN0JDRjcwQ0Uy
NjE0OTM1RjAwRTRGQjcwIC8qIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JEREEzM0YyNzU2NTJFQTAwMzg2NTlFIC8q
IEF1eGlsaWFyeVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV4
aWxpYXJ5UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QkREQTM0MDI3NTY1MkVBMDAzODY1OUUgLyogQXV4aWxpYXJ5UHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdXhpbGlhcnlQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JFMzdG
NkYyN0IxNDc1RjAwN0E2Q0QzIC8qIFRocmVhZFNhZmVPYmplY3RIZWFwLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRocmVhZFNhZmVPYmplY3RIZWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdCRTcyNjU3MjU3NEY2NzIwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QkU3MjY2ODI1NzY4MEVGMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TENvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwNjVGMjkxQzhDRDk1
RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJE
YXRhVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjgwNSw2ICs2ODE1
LDEwIEBACiAJCQkJQ0Q4MjUyRDEyNUQ0NjRBQjAwODYyRkQ4IC8qIFJlbW90ZVJlbW90ZUNvbW1h
bmRMaXN0ZW5lci5oICovLAogCQkJCUNEODI1MkQzMjVENDY0QkYwMDg2MkZEOCAvKiBSZW1vdGVS
ZW1vdGVDb21tYW5kTGlzdGVuZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJQ0Q4MjUyRDQyNUQ0NjUx
MDAwODYyRkQ4IC8qIFJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lcklkZW50aWZpZXIuaCAqLywK
KwkJCQk3QjVBM0RBMDI3QTdEQzFBMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZp
ZXIuaCAqLywKKwkJCQk3QjVBM0RBMzI3QTdEQzZDMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFt
ZVByb3h5LmNwcCAqLywKKwkJCQk3QjVBM0RBMjI3QTdEQzFBMDA2QzZGOTcgLyogUmVtb3RlVmlk
ZW9GcmFtZVByb3h5LmggKi8sCisJCQkJN0I1QTNEQTEyN0E3REMxQTAwNkM2Rjk3IC8qIFJlbW90
ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQkxREQyQTYzQTI1NURFNkQxMDBG
RjdCNkYgLyogU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAgKi8sCiAJCQkJMUREMkE2Mzky
NTVERTZEMTAwRkY3QjZGIC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaCAqLywKIAkJCQkx
REQyQTY2RjI1NjIyRjExMDBGRjdCNkYgLyogU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5tZXNz
YWdlcy5pbiAqLywKQEAgLTY4OTUsNiArNjkwOSw4IEBACiAJCQkJMUREMkE2NjYyNTYxRUQwNDAw
RkY3QjZGIC8qIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJCTA3
RTE5RjA3MjNENERDODgwMDk0RkZCNCAvKiBSZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAgKi8sCiAJ
CQkJMDdFMTlGMDYyM0Q0REM4ODAwOTRGRkI0IC8qIFJlbW90ZVRleHRUcmFja1Byb3h5LmggKi8s
CisJCQkJN0I1QTNEQTgyN0E3RENCQzAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwLmNwcCAqLywKKwkJCQk3QjVBM0RBNzI3QTdEQ0JDMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXAuaCAqLywKIAkJCQkwNzFCQzU4NDIzQ0MyQzA5MDA2ODBEN0MgLyogUmVt
b3RlVmlkZW9UcmFja1Byb3h5LmNwcCAqLywKIAkJCQkwNzFCQzU4NTIzQ0MyQzA5MDA2ODBEN0Mg
LyogUmVtb3RlVmlkZW9UcmFja1Byb3h5LmggKi8sCiAJCQkJMDdFMTlGMDUyM0Q0REM4ODAwOTRG
RkI0IC8qIFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmggKi8sCkBAIC03Mjcy
LDYgKzcyODgsNyBAQAogCQkJCTFBRENCODY4MTg5ODMxQjMwMDIyRUU1QSAvKiBOYXZpZ2F0aW9u
QWN0aW9uRGF0YS5jcHAgKi8sCiAJCQkJMUFEQ0I4NjkxODk4MzFCMzAwMjJFRTVBIC8qIE5hdmln
YXRpb25BY3Rpb25EYXRhLmggKi8sCiAJCQkJNUNENzQ4QjUyM0M4RUIxOTAwOTJBOUI1IC8qIE5l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmggKi8sCisJCQkJN0I1QTNEQzUyN0FFNTAxQTAw
NkM2Rjk3IC8qIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyLmggKi8sCiAJCQkJN0FG
QkQzNkUyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuY3BwICovLAogCQkJCTdB
RkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggKi8sCiAJCQkJQkND
NDNBQjgxMjdCOTVEQzAwMzE3RjE2IC8qIFBsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHAgKi8sCkBA
IC03MzEyLDYgKzczMjksNyBAQAogCQkJCTgzRjk2NDRDMUZBMEY3NjMwMEM0Nzc1MCAvKiBTaGFy
ZWRTdHJpbmdIYXNoVGFibGVSZWFkT25seS5oICovLAogCQkJCTFBNUU0REEzMTJEM0JEM0QwMDk5
QTJCQiAvKiBUZXh0Q2hlY2tlclN0YXRlLmggKi8sCiAJCQkJRjRBN0NFODQyNjY3RUI0RTAwMjI4
Njg1IC8qIFRleHRSZWNvZ25pdGlvblVwZGF0ZVJlc3VsdC5oICovLAorCQkJCTdCRTM3RjZGMjdC
MTQ3NUYwMDdBNkNEMyAvKiBUaHJlYWRTYWZlT2JqZWN0SGVhcC5oICovLAogCQkJCTJGRDQzQjky
MUZBMDA2QTMwMDgzRjUxQyAvKiBUb3VjaEJhck1lbnVEYXRhLmNwcCAqLywKIAkJCQkyRkQ0M0I5
MTFGQTAwNkExMDA4M0Y1MUMgLyogVG91Y2hCYXJNZW51RGF0YS5oICovLAogCQkJCTJGODA5REQ1
MUZCRDFCQzkwMDVGRTYzQSAvKiBUb3VjaEJhck1lbnVJdGVtRGF0YS5jcHAgKi8sCkBAIC05MjY5
LDkgKzkyODcsMTEgQEAKIAkJCQk0MTc2RTg5NzIzQzM2MUJEMDAzRTgzRkUgLyogTWVkaWFSZWNv
cmRlcklkZW50aWZpZXIuaCAqLywKIAkJCQk0MTc2RTg5NDIzQzM0RTI2MDAzRTgzRkUgLyogTWVk
aWFSZWNvcmRlclByaXZhdGUuY3BwICovLAogCQkJCTQxNzZFODk1MjNDMzRFMjcwMDNFODNGRSAv
KiBNZWRpYVJlY29yZGVyUHJpdmF0ZS5oICovLAotCQkJCTQxQ0I4NDAzMjVDQUJGN0MwMDEwRTJC
MSAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZS5tbSAqLywKIAkJCQk0MTc2RTg5MzIzQzM0RDZGMDAz
RTgzRkUgLyogTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcCAqLywKIAkJCQk0MTc2RTg5MjIzQzM0
RDZFMDAzRTgzRkUgLyogTWVkaWFSZWNvcmRlclByb3ZpZGVyLmggKi8sCisJCQkJNDExQjg5RTYy
N0I1RDU4NDAwRjlFQkQzIC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuY3BwICov
LAorCQkJCTQxMUI4OUU1MjdCNUQ1ODMwMEY5RUJEMyAvKiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcFByb3h5LmggKi8sCisJCQkJNDExQjg5RTQyN0I1RDU4MjAwRjlFQkQzIC8qIFJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDE3MjE5OEMyM0I2
MTJFODAwQUU1Njg2IC8qIFJUQ0RlY29kZXJJZGVudGlmaWVyLmggKi8sCiAJCQkJNDE1ODY0OUEy
M0JFMDkyNDAwQTBBNjFFIC8qIFJUQ0VuY29kZXJJZGVudGlmaWVyLmggKi8sCiAJCQkJNDFGQ0Q2
QjcyM0NERTUzRDAwQzYyNTY3IC8qIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAgKi8sCkBA
IC0xMzQzNyw3ICsxMzQ1Nyw2IEBACiAJCQkJRTE4RTY5MTgxNjlCNjY3QjAwOUI2NjcwIC8qIFNl
Y0l0ZW1TaGltUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcwQUI4RjMyMEFF
M0JENzAwQjhCRTg3IC8qIFNlY0tleVByb3h5U3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
NEQ5RjU3MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTUxNjQ2NTgwMjdBOUM3NzQwMEUxRjJCQSAvKiBTZXJ2aWNlV29ya2VyTm90aWZp
Y2F0aW9uSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGREU2NUExOTU0QTQyQjAwQzQ4
RkZBIC8qIFNlc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwMDJENDkxOTZCMzQ1
RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNF
Nzk5Q0UyNzYwNDk3QjAwNzQwMDhBIC8qIFNlc3Npb25TdG9yYWdlTWFuYWdlci5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCmluZGV4IGUyOWY0YmQ1NjEzMmVjZDY3MTcxYmMzN2NiMmNjNTYxYmUx
MjkzNTkuLjI4ZjM3ODc2MzkzYmMzYWM1N2U0NGZkNzNlYTEyNDc3ZDI0OTJkZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFFbmdpbmVDb25maWd1
cmF0aW9uRmFjdG9yeS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgog
I2luY2x1ZGUgIlJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lck1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5oIgogI2luY2x1ZGUgIlNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGVNZXNz
YWdlcy5oIgpAQCAtNzYsNiArNzcsMTEgQEAKICNpbmNsdWRlICJVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlck1lc3NhZ2VzLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5j
bHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFt
ZVByb3h5TWVzc2FnZXMuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUg
IlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaCIKQEAgLTE1OSw2ICsxNjUsMTMgQEAgdm9pZCBHUFVQ
cm9jZXNzQ29ubmVjdGlvbjo6cmVzZXRBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdChBdWRpb00KIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIoKS5yZXNldChpZGVudGlmaWVy
KTsKIH0KKworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSYgR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb246OnJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkoKQoreworICAgIGlmICghbV9y
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5KQorICAgICAgICBtX3JlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwUHJveHkgPSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5OjpjcmVh
dGUoKnRoaXMpOworICAgIHJldHVybiAqbV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5
OworfQogI2VuZGlmCiAKIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYgR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb246Om1lZGlhUGxheWVyTWFuYWdlcigpCkBAIC0yMDgsNiArMjIxLDEwIEBAIGJvb2wgR1BV
UHJvY2Vzc0Nvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIElQQzo6RGVjCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpCiAgICAgICAgIHJldHVybiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpoYW5k
bGVNZXNzYWdlVG9SZW1vdmVkRGVzdGluYXRpb24oY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAjZW5k
aWYKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNUykKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpKQorICAgICAgICByZXR1cm4gUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpoYW5k
bGVNZXNzYWdlVG9SZW1vdmVkRGVzdGluYXRpb24oY29ubmVjdGlvbiwgZGVjb2Rlcik7CisjZW5k
aWYKIAogI2lmIFVTRShBVURJT19TRVNTSU9OKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQXVkaW9TZXNzaW9uOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAzZjk4Y2IxMDk3NzYzNDY2YWIyMDVkYWEwMGVhNmM1MTZm
OTEyM2Y1Li44MTNhMDU0Njk3MmNjMzJhZDYyYWM5ZmEyOGQxMWU1NGNhNWZlZjY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5o
CkBAIC01MSw2ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVBdWRp
b1NvdXJjZVByb3ZpZGVyTWFuYWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjsK
K2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk7CiBjbGFzcyBTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOwogY2xhc3MgV2ViUGFnZTsKIHN0cnVjdCBHUFVQcm9jZXNz
Q29ubmVjdGlvbkluaXRpYWxpemF0aW9uUGFyYW1ldGVyczsKQEAgLTc3LDYgKzc4LDcgQEAgcHVi
bGljOgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXImIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXIoKTsKICAgICB2b2lkIHJlc2V0QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXQoQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlm
aWVyKTsKKyAgICBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5JiByZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcFByb3h5KCk7CiAjZW5kaWYKIAogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlciYgbWVkaWFQbGF5ZXJNYW5hZ2VyKCk7CkBAIC0xNDAsNiArMTQyLDcgQEAgcHJpdmF0ZToK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyPiBtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CisgICAgUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwUHJveHk+IG1fcmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eTsKICNlbmRp
ZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoV0VCX0FVRElPKQogICAgIFJlZlB0cjxS
ZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlcj4gbV9hdWRpb1NvdXJjZVByb3ZpZGVyTWFu
YWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCmluZGV4IDdh
ZTFlZTc2ZGM0YjA3YzQwM2Y2MGI4YWQxM2RhZDliODdiZGVkMGEuLjAwZDRhOGJkZGM1YzA0MWZm
YjAzOTQ5MDJlOTc5OTcxNTE1YzM0YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmNwcApAQCAtMzUsNiArMzUsMTAgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgogCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xMTgsNiArMTIy
LDIxIEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRDb21wb3NpdGVk
UmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJiBiCiAgICAgfQogfQogCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKK1JlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKQorewor
ICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1
dG8gbWVkaWFTYW1wbGUgPSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmNyZWF0ZSgqbV9ncHVQcm9j
ZXNzQ29ubmVjdGlvbik7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxl
KG1lZGlhU2FtcGxlLT53cml0ZSgpKSk7CisgICAgaWYgKCFzZW5kUmVzdWx0KSB7CisgICAgICAg
IG1hcmtDb250ZXh0TG9zdCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAg
cmV0dXJuIG1lZGlhU2FtcGxlOworfQorI2VuZGlmCisKIGJvb2wgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImIG1lZGlhUGxheWVy
LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQogewogICAgIGJvb2wgcmVzdWx0
ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCmluZGV4IDI5
ZjAxOTg3MTk1NTk5ODc5MmVlNzc5NWQ5YWE2MGMyZjM5NzM5NzEuLjVkMWNhYjIxOGY3ODVjYmEx
MTQ2YTg5MTIyYjMwZDEwY2M2ODMwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oCkBAIC02NSw2ICs2NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIG5vdGlmeU1hcmtD
b250ZXh0Q2hhbmdlZCgpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9D
YW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHBhaW50Q29tcG9z
aXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpIGZpbmFsOworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBwYWlu
dENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFsOworI2VuZGlmCiAgICAgdm9p
ZCBzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikgZmluYWw7CiAgICAgR0NHTGVudW0g
Z2V0RXJyb3IoKSBmaW5hbDsKICAgICBib29sIGNvcHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6
Ok1lZGlhUGxheWVyJiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29h
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNv
Y29hLm1tCmluZGV4IGZmN2UxNDhkNmI1ZWViYTAyNGE5M2UzZWIyMTI2MmJhYjcyMjgwOGMuLjBi
OGJiYTE2Y2ZlYzE2YjJiYTE4NzE3MWFmZDliM2IzMTMxZDY3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCkBAIC0zNCw3
ICszNCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NWVXRpbGl0aWVzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9JT1N1cmZhY2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvTWVkaWFTYW1wbGVBVkZPYmpDLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTk5LDkgKzk4LDYgQEAgcHVibGljOgogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFW
Rk9VTkRBVElPTikKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENWKiBhc0NWKCkgZmlu
YWwgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
LSAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b01lZGlhU2FtcGxlKCkgZmluYWw7Ci0jZW5kaWYKIHByaXZhdGU6CiAgICAgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29u
bmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRy
aWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQogICAg
ICAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24s
IGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpCkBAIC0xMTQsMjAgKzExMCw2IEBAIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk7CiB9Owog
Ci0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLVJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpwYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9NZWRpYVNhbXBsZSgpCi17Ci0gICAgaWYgKCFtX2Rpc3BsYXlCdWZmZXIpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmVtb3RlIE1lZGlhU2FtcGxl
LgotICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRS
aWdodChtX2Rpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpLCBXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNy
ZWF0ZUNWUGl4ZWxCdWZmZXIoc3VyZmFjZS0+c3VyZmFjZSgpKTsKLSAgICBpZiAoIXBpeGVsQnVm
ZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gV2ViQ29yZTo6TWVkaWFT
YW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKCpwaXhlbEJ1ZmZlciksIFdl
YkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93biwgdHJ1
ZSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6
OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1l
SWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVW
aWRlb0ZyYW1lSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiMDAxZGE3NDgyMzlmMzhkZDllZDAz
MjVjNTliN2I4M2M5MjU4NzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgKQEAgLTAsMCArMSw0
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiT2JqZWN0SWRlbnRpZmllclJl
ZmVyZW5jZVRyYWNrZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NRdWFsaWZpZWQuaD4K
KyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworZW51bSBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUmVtb3Rl
VmlkZW9GcmFtZUlkZW50aWZpZXIgPSBXZWJDb3JlOjpQcm9jZXNzUXVhbGlmaWVkPE9iamVjdElk
ZW50aWZpZXI8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXJUeXBlPj47Cit1c2luZyBSZW1vdGVW
aWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlPFJl
bW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPjsKK3VzaW5nIFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJl
ZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTxSZW1vdGVWaWRlb0ZyYW1l
SWRlbnRpZmllcj47Cit1c2luZyBSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlID0gT2JqZWN0SWRl
bnRpZmllclJlZmVyZW5jZTxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj47Cit1c2luZyBSZW1v
dGVWaWRlb0ZyYW1lUmVmZXJlbmNlVHJhY2tlciA9IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VU
cmFja2VyPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPjsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkZTY5YzM3
NDhhOGI1MTI5NDA3NTA4MDUxZDg1NjQ1NmQ4NjI1NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAK
QEAgLTAsMCArMSwyMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1JlZjxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+IFJlbW90ZVZpZGVvRnJhbWVQcm94
eTo6Y3JlYXRlKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgUGl4
ZWxCdWZmZXJDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJlbW90ZVZpZGVvRnJhbWVQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgUmVtb3RlVmlkZW9G
cmFtZUlkZW50aWZpZXI6OmdlbmVyYXRlKCksIFdURk1vdmUoY2FsbGJhY2spKSk7Cit9CisKK1Jl
ZjxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6Y3JlYXRlQWxy
ZWFkeUluaXRpYWxpemVkKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklELCBS
ZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0aWVzIHByb3BlcnRp
ZXMsIFBpeGVsQnVmZmVyQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBhdXRvIGZyYW1lID0g
YWRvcHRSZWYoKm5ldyBSZW1vdGVWaWRlb0ZyYW1lUHJveHkoY29ubmVjdGlvbklELCBpZGVudGlm
aWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSkpOworICAgIGZyYW1lLT53YXNJbml0aWFsaXplZChwcm9w
ZXJ0aWVzKTsKKyAgICByZXR1cm4gZnJhbWU7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVQcm94eTo6
UHJvcGVydGllcyBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnByb3BlcnRpZXMoY29uc3QgV2ViQ29y
ZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKQoreworICAgIHJldHVybiB7CisgICAgICAgIG1l
ZGlhU2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSwKKyAgICAgICAgbWVkaWFTYW1wbGUudmlkZW9N
aXJyb3JlZCgpLAorICAgICAgICBtZWRpYVNhbXBsZS52aWRlb1JvdGF0aW9uKCksCisgICAgICAg
IG1lZGlhU2FtcGxlLnByZXNlbnRhdGlvblNpemUoKSwKKyAgICAgICAgbWVkaWFTYW1wbGUudmlk
ZW9QaXhlbEZvcm1hdCgpCisgICAgfTsKK30KKworUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpSZW1v
dGVWaWRlb0ZyYW1lUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0
aW9uLCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyLCBQaXhlbEJ1ZmZlckNh
bGxiYWNrJiYgY2FsbGJhY2spCisgICAgOiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uKCZncHVQcm9j
ZXNzQ29ubmVjdGlvbikKKyAgICAsIG1fY29ubmVjdGlvbklEKGdwdVByb2Nlc3NDb25uZWN0aW9u
LmNvbm5lY3Rpb24oKS51bmlxdWVJRCgpKQorICAgICwgbV9yZWZlcmVuY2VUcmFja2VyKGlkZW50
aWZpZXIpCisgICAgLCBtX3BpeGVsQnVmZmVyQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpCit7
CisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+YWRkQ2xpZW50KCp0aGlzKTsKKyAgICBpZiAo
aWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IFByb2Nlc3M6OmlkZW50aWZpZXIoKSkK
KyAgICAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+bWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllci5vYmplY3QoKS50b1VJbnQ2NCgpLCAqdGhpcyk7Cit9
CisKK1JlbW90ZVZpZGVvRnJhbWVQcm94eTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5KElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklELCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBQaXhlbEJ1ZmZlckNhbGxiYWNrJiYgY2FsbGJhY2spCisgICAgOiBtX2Nv
bm5lY3Rpb25JRChjb25uZWN0aW9uSUQpCisgICAgLCBtX3JlZmVyZW5jZVRyYWNrZXIoaWRlbnRp
ZmllcikKKyAgICAsIG1fcGl4ZWxCdWZmZXJDYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKK3sK
K30KKworUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHkoKQorICAg
IDogbV9ncHVQcm9jZXNzQ29ubmVjdGlvbihudWxscHRyKQorICAgICwgbV9yZWZlcmVuY2VUcmFj
a2VyKFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQoreworfQorCitSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6On5SZW1vdGVWaWRlb0ZyYW1lUHJveHkoKQoreworICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgbWFrZSBzdXJlIHRvIGNsb3NlIGluIHdoYXRldmVyIHRocmVhZCBidXQg
ZGlzY29ubmVjdCBpbiBtYWluIHRocmVhZC4KKyAgICBkaXNjb25uZWN0R1BVUHJvY2Vzc0lmTmVl
ZGVkKCk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIFJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6aWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVmZXJlbmNlVHJhY2tl
ci5pZGVudGlmaWVyKCk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSBSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OndyaXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZWZlcmVu
Y2VUcmFja2VyLndyaXRlKCk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlIFJl
bW90ZVZpZGVvRnJhbWVQcm94eTo6cmVhZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVmZXJl
bmNlVHJhY2tlci5yZWFkKCk7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpnZXRQ
aXhlbEJ1ZmZlcigpCit7CisgICAgQVNTRVJUKG1fcGl4ZWxCdWZmZXJMb2NrLmlzSGVsZCgpKTsK
KyAgICBzdGQ6OmV4Y2hhbmdlKG1fcGl4ZWxCdWZmZXJDYWxsYmFjaywgeyB9KSgqdGhpcywgW3Ro
aXNdKGF1dG8gcGl4ZWxCdWZmZXIpIHsKKyAgICAgICAgbV9waXhlbEJ1ZmZlciA9IFdURk1vdmUo
cGl4ZWxCdWZmZXIpOworICAgICAgICBpZiAoIW1fcGl4ZWxCdWZmZXIpIHsKKyAgICAgICAgICAg
IC8vIHNvbWUgY29kZSBwYXRocyBkbyBub3QgbGlrZSBlbXB0eSBwaXhlbCBidWZmZXJzLgorICAg
ICAgICAgICAgbV9waXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUJsYWNrUGl4ZWxCdWZmZXIo
c3RhdGljX2Nhc3Q8c2l6ZV90PihtX3NpemUud2lkdGgoKSksIHN0YXRpY19jYXN0PHNpemVfdD4o
bV9zaXplLmhlaWdodCgpKSk7CisgICAgICAgIH0KKyAgICAgICAgbV9zZW1hcGhvcmUuc2lnbmFs
KCk7CisgICAgfSk7CisgICAgbV9zZW1hcGhvcmUud2FpdCgpOworfQorCitDVlBpeGVsQnVmZmVy
UmVmIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cGl4ZWxCdWZmZXIoKSBjb25zdAoreworICAgIExv
Y2tlciBsb2NrKG1fcGl4ZWxCdWZmZXJMb2NrKTsKKyAgICBpZiAoIW1fcGl4ZWxCdWZmZXIgJiYg
bV9waXhlbEJ1ZmZlckNhbGxiYWNrKQorICAgICAgICBjb25zdF9jYXN0PFJlbW90ZVZpZGVvRnJh
bWVQcm94eSo+KHRoaXMpLT5nZXRQaXhlbEJ1ZmZlcigpOworICAgIHJldHVybiBtX3BpeGVsQnVm
ZmVyLmdldCgpOworfQorCitNZWRpYVRpbWUgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpwcmVzZW50
YXRpb25UaW1lKCkgY29uc3QKK3sKKyAgICAodm9pZCkgd2FpdEZvcldhc0luaXRpYWxpemVkKCk7
CisgICAgcmV0dXJuIG1fcHJlc2VudGF0aW9uVGltZTsKK30KKworV2ViQ29yZTo6UGxhdGZvcm1T
YW1wbGUgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHsgV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OlJlbW90ZVZpZGVvRnJhbWVQcm94
eVR5cGUsIHsgfSB9OworfQorCitNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiBSZW1vdGVWaWRl
b0ZyYW1lUHJveHk6OnZpZGVvUm90YXRpb24oKSBjb25zdAoreworICAgICh2b2lkKSB3YWl0Rm9y
V2FzSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbV92aWRlb1JvdGF0aW9uOworfQorCitib29s
IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9NaXJyb3JlZCgpIGNvbnN0Cit7CisgICAgKHZv
aWQpIHdhaXRGb3JXYXNJbml0aWFsaXplZCgpOworICAgIHJldHVybiBtX3ZpZGVvSXNNaXJyb3Jl
ZDsKK30KKwordWludDMyX3QgUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb1BpeGVsRm9ybWF0
KCkgY29uc3QKK3sKKyAgICAodm9pZCkgd2FpdEZvcldhc0luaXRpYWxpemVkKCk7CisgICAgcmV0
dXJuIG1fcGl4ZWxGb3JtYXQ7Cit9CisKK2Jvb2wgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpoYW5k
bGVNZXNzYWdlVG9SZW1vdmVkRGVzdGluYXRpb24oSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIC8vIFNraXAgbWVzc2FnZXMgaW50ZW5kZWQgZm9yIGFscmVh
ZHkgcmVtb3ZlZCBtZXNzYWdlUmVjZWl2ZXJNYXAoKSBkZXN0aW5hdGlvbnMuCisgICAgLy8gVGhl
c2UgYXJlIGJ1c2luZXNzIGFzIHVzdWFsLiBUaGVzZSBjYW4gaGFwcGVuIGZvciBleGFtcGxlIGJ5
OgorICAgIC8vICAtIFRoZSBvYmplY3QgaXMgY3JlYXRlZCBhbmQgaW1tZWRpYXRlbHkgZGVzdHJv
eWVkLCBiZWZvcmUgV2FzSW5pdGlhbGl6ZWQgd2FzIGhhbmRsZWQuCisgICAgQVNTRVJUKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpXYXNJ
bml0aWFsaXplZDo6bmFtZSgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpNZWRpYVNhbXBsZVZpZGVvRnJhbWU+IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6
dmlkZW9GcmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKwordm9p
ZCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmRpc2Nvbm5lY3RHUFVQcm9jZXNzSWZOZWVkZWQoKSBj
b25zdAoreworICAgIGlmIChhdXRvIGdwdVByb2Nlc3NDb25uZWN0aW9uID0gc3RkOjpleGNoYW5n
ZShtX2dwdVByb2Nlc3NDb25uZWN0aW9uLCBudWxscHRyKSkgeworICAgICAgICBBU1NFUlQoaWRl
bnRpZmllcigpLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gUHJvY2Vzczo6aWRlbnRpZmllcigpKTsK
KyAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPnJlbW92ZUNsaWVudCgqdGhpcyk7CisgICAg
ICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBpZGVudGlmaWVyKCkub2JqZWN0KCkudG9VSW50NjQoKSk7CisgICAgfQorICAg
IGlmIChtX2Nvbm5lY3Rpb25JRCkKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKCptX2Nv
bm5lY3Rpb25JRCwgTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpSZWxlYXNl
VmlkZW9GcmFtZSh3cml0ZSgpKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VF
dmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworfQorCitib29sIFJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6d2FpdEZvcldhc0luaXRpYWxpemVkKCkgY29uc3QKK3sKKyAgICBpZiAobV93YXNJbml0
aWFsaXplZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBBU1NFUlQoaWRlbnRpZmllcigp
LnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gUHJvY2Vzczo6aWRlbnRpZmllcigpKTsKKyAgICBpZiAo
bV9ncHVQcm9jZXNzQ29ubmVjdGlvbikgeworICAgICAgICBpZiAobV9ncHVQcm9jZXNzQ29ubmVj
dGlvbi0+Y29ubmVjdGlvbigpLndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2Vz
OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Oldhc0luaXRpYWxpemVkPihpZGVudGlmaWVyKCkub2Jq
ZWN0KCkudG9VSW50NjQoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBkaXNjb25uZWN0R1BVUHJvY2Vzc0lmTmVlZGVkKCk7CisgICAgfQor
ICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmdwdVBy
b2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKQoreworICAgIGF1
dG8gZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24sIG51bGxwdHIpOworICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5yZW1vdmVDbGllbnQo
KnRoaXMpOworICAgIEFTU0VSVChpZGVudGlmaWVyKCkucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBQ
cm9jZXNzOjppZGVudGlmaWVyKCkpOworICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5tZXNzYWdl
UmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVZpZGVv
RnJhbWVQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkub2JqZWN0KCku
dG9VSW50NjQoKSk7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp3YXNJbml0aWFs
aXplZChzdGQ6Om9wdGlvbmFsPFByb3BlcnRpZXM+JiYgcHJvcGVydGllcykKK3sKKyAgICBtX3dh
c0luaXRpYWxpemVkID0gdHJ1ZTsKKyAgICBpZiAoIXByb3BlcnRpZXMpCisgICAgICAgIHJldHVy
bjsKKyAgICAvLyBGSVhNRTogV2hlbiBzb3VyY2UgZmFpbHMgdG8gcHJvZHVjZSBhIHNhbXBsZSBk
dWUgdG8gc29tZSBlcnJvciwgdGhlIHByb3BlcnRpZXMgYXJlIGRpc2VuZ2FnZWQuCisgICAgLy8g
V2Ugc2hvdWxkIHBlcmhhcHMgY2hlY2sgdGhpcyBhdCB0aGUgc3VibWl0IHRpbWUuCisgICAgbV9w
cmVzZW50YXRpb25UaW1lID0gcHJvcGVydGllcy0+cHJlc2VudGF0aW9uVGltZTsKKyAgICBtX3Zp
ZGVvSXNNaXJyb3JlZCA9IHByb3BlcnRpZXMtPnZpZGVvSXNNaXJyb3JlZDsKKyAgICBtX3ZpZGVv
Um90YXRpb24gPSBwcm9wZXJ0aWVzLT52aWRlb1JvdGF0aW9uOworICAgIG1fc2l6ZSA9IHByb3Bl
cnRpZXMtPnNpemU7CisgICAgbV9waXhlbEZvcm1hdCA9IHByb3BlcnRpZXMtPnBpeGVsRm9ybWF0
OworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3NmNjNmNl
NTJhYmM5MTM0MDU1MDcwZGU0YmRhODdhNDMxYmZhN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oCkBA
IC0wLDAgKzEsMTU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJHUFVQcm9j
ZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUg
IlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9WaWRlb0Zy
YW1lLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL3RocmVhZHMv
QmluYXJ5U2VtYXBob3JlLmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgQ29ubmVjdGlvbjsK
K2NsYXNzIERlY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBHUFVQcm9j
ZXNzQ29ubmVjdGlvbjsKKworY2xhc3MgUmVtb3RlVmlkZW9GcmFtZVByb3h5IGZpbmFsIDogcHVi
bGljIFdlYkNvcmU6OlZpZGVvRnJhbWUsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHBy
aXZhdGUgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVtb3RlVmlkZW9GcmFtZVByb3h5
KTsKK3B1YmxpYzoKKyAgICB1c2luZyBQaXhlbEJ1ZmZlclJlc3VsdENhbGxiYWNrID0gRnVuY3Rp
b248dm9pZChSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4mJik+OworICAgIC8vIENvbXBsZXRp
b25IYW5kbGVyIGJ1dCBpdCBtaWdodCBub3QgYmUgY2FsbGVkIG9uIHRoZSBzYW1lIHRocmVhZC4K
KyAgICB1c2luZyBQaXhlbEJ1ZmZlckNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBSZW1v
dGVWaWRlb0ZyYW1lUHJveHkmLCBQaXhlbEJ1ZmZlclJlc3VsdENhbGxiYWNrJiYpPjsKKworICAg
IC8vIENyZWF0ZXMgYSBwcm9taXNlIG9mIGEgTWVkaWFTYW1wbGUgdGhhdCBleGlzdHMgaW4gR1BV
IHByb2Nlc3MuIFRoZSBvYmplY3QgY2FuIGJlIHVzZWQgYXMgb3V0IHBhcmFtZXRlciBvZiB0aGUg
Y3JlYXRpb24gbWVzc2FnZS4KKyAgICBzdGF0aWMgUmVmPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4g
Y3JlYXRlKEdQVVByb2Nlc3NDb25uZWN0aW9uJiwgUGl4ZWxCdWZmZXJDYWxsYmFjayYmID0geyB9
KTsKKworICAgIHN0cnVjdCBQcm9wZXJ0aWVzIHsKKyAgICAgICAgTWVkaWFUaW1lIHByZXNlbnRh
dGlvblRpbWU7CisgICAgICAgIGJvb2wgdmlkZW9Jc01pcnJvcmVkIHsgZmFsc2UgfTsKKyAgICAg
ICAgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uIHsgVmlkZW9Sb3RhdGlvbjo6Tm9uZSB9Owor
ICAgICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZTsKKyAgICAgICAgdWludDMyX3QgcGl4ZWxG
b3JtYXQ7CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxQcm9wZXJ0aWVzPiBkZWNvZGUoRGVjb2RlciYpOworICAgIH07CisK
KyAgICBzdGF0aWMgUmVmPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4gY3JlYXRlQWxyZWFkeUluaXRp
YWxpemVkKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlm
aWVyLCBQcm9wZXJ0aWVzLCBQaXhlbEJ1ZmZlckNhbGxiYWNrJiYpOworCisgICAgc3RhdGljIFBy
b3BlcnRpZXMgcHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYpOworCisgICAg
flJlbW90ZVZpZGVvRnJhbWVQcm94eSgpIGZpbmFsOworCisgICAgUmVtb3RlVmlkZW9GcmFtZUlk
ZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0OworICAgIFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJl
ZmVyZW5jZSB3cml0ZSgpIGNvbnN0OworICAgIFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNl
IHJlYWQoKSBjb25zdDsKKworICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIoKSBjb25z
dCBmaW5hbDsKKworICAgIHN0YXRpYyBib29sIGhhbmRsZU1lc3NhZ2VUb1JlbW92ZWREZXN0aW5h
dGlvbihJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKK3ByaXZhdGU6CisgICAgUmVt
b3RlVmlkZW9GcmFtZVByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9uJiwgUmVtb3RlVmlkZW9GcmFt
ZUlkZW50aWZpZXIsIFBpeGVsQnVmZmVyQ2FsbGJhY2smJik7CisgICAgUmVtb3RlVmlkZW9GcmFt
ZVByb3h5KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlm
aWVyLCBQaXhlbEJ1ZmZlckNhbGxiYWNrJiYpOworICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94eSgp
OworICAgIHZvaWQgZGlzY29ubmVjdEdQVVByb2Nlc3NJZk5lZWRlZCgpIGNvbnN0OworICAgIGJv
b2wgd2FpdEZvcldhc0luaXRpYWxpemVkKCkgY29uc3QgV0FSTl9VTlVTRURfUkVUVVJOOworCisg
ICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgorICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAv
LyBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50IG92ZXJyaWRlcy4KKyAgICB2b2lkIGdwdVBy
b2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKSBmaW5hbDsKKwor
ICAgIC8vIFdlYkNvcmU6OlZpZGVvRnJhbWUgb3ZlcnJpZGVzLgorICAgIE1lZGlhVGltZSBwcmVz
ZW50YXRpb25UaW1lKCkgY29uc3QgZmluYWw7CisgICAgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0
aW9uKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCB2aWRlb01pcnJvcmVkKCkgY29uc3QgZmluYWw7
CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYVNhbXBsZVZpZGVvRnJhbWU+IHZpZGVv
RnJhbWUoKSBjb25zdCBmaW5hbDsKKyAgICAvLyBGSVhNRTogV2hlbiBWaWRlb0ZyYW1lIGlzIG5v
dCBNZWRpYVNhbXBsZSwgdGhlc2Ugd2lsbCBub3QgYmUgbmVlZGVkLgorICAgIFdlYkNvcmU6OlBs
YXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3QgZmluYWw7CisgICAgdWludDMyX3Qg
dmlkZW9QaXhlbEZvcm1hdCgpIGNvbnN0IGZpbmFsOworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBw
cmVzZW50YXRpb25TaXplKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zaXplOyB9CisKKyAgICAv
LyBNZXNzYWdlcy4KKyAgICB2b2lkIHdhc0luaXRpYWxpemVkKHN0ZDo6b3B0aW9uYWw8UHJvcGVy
dGllcz4mJik7CisgICAgc3RhdGljIGlubGluZSBTZWNvbmRzIGRlZmF1bHRTZW5kVGltZW91dCA9
IDMwX3M7CisKKyAgICB2b2lkIGdldFBpeGVsQnVmZmVyKCk7CisKKyAgICBtdXRhYmxlIEdQVVBy
b2Nlc3NDb25uZWN0aW9uKiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uIHsgbnVsbHB0ciB9OworICAg
IHN0ZDo6b3B0aW9uYWw8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRD4gbV9jb25uZWN0aW9uSUQ7
CisgICAgUmVtb3RlVmlkZW9GcmFtZVJlZmVyZW5jZVRyYWNrZXIgbV9yZWZlcmVuY2VUcmFja2Vy
OworICAgIG11dGFibGUgYm9vbCBtX3dhc0luaXRpYWxpemVkIHsgZmFsc2UgfTsKKyAgICBNZWRp
YVRpbWUgbV9wcmVzZW50YXRpb25UaW1lOworICAgIGJvb2wgbV92aWRlb0lzTWlycm9yZWQgeyBm
YWxzZSB9OworICAgIFZpZGVvUm90YXRpb24gbV92aWRlb1JvdGF0aW9uIHsgVmlkZW9Sb3RhdGlv
bjo6Tm9uZSB9OworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX3NpemU7CisgICAgdWludDMyX3Qg
bV9waXhlbEZvcm1hdCB7IDAgfTsKKyAgICBtdXRhYmxlIExvY2sgbV9waXhlbEJ1ZmZlckxvY2s7
CisgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IG1fcGl4ZWxCdWZmZXI7CisgICAgQmlu
YXJ5U2VtYXBob3JlIG1fc2VtYXBob3JlOworICAgIFBpeGVsQnVmZmVyQ2FsbGJhY2sgbV9waXhl
bEJ1ZmZlckNhbGxiYWNrOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBS
ZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAoreworICAgIGVuY29kZXIgPDwgcHJlc2VudGF0aW9uVGltZQorICAgICAgICA8PCB2
aWRlb0lzTWlycm9yZWQKKyAgICAgICAgPDwgdmlkZW9Sb3RhdGlvbgorICAgICAgICA8PCBzaXpl
CisgICAgICAgIDw8IHBpeGVsRm9ybWF0OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVy
PiBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcz4gUmVtb3Rl
VmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhVGltZT4gcHJlc2VudGF0aW9uVGltZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IHZpZGVvSXNNaXJyb3JlZDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZpZGVv
Um90YXRpb24+IHZpZGVvUm90YXRpb247CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9h
dFNpemU+IHNpemU7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGl4ZWxGb3JtYXQ7Cisg
ICAgZGVjb2RlciA+PiBwcmVzZW50YXRpb25UaW1lCisgICAgICAgID4+IHZpZGVvSXNNaXJyb3Jl
ZAorICAgICAgICA+PiB2aWRlb1JvdGF0aW9uCisgICAgICAgID4+IHNpemUKKyAgICAgICAgPj4g
cGl4ZWxGb3JtYXQ7CisgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gUHJvcGVydGllcyB7IFdURk1vdmUoKnByZXNlbnRh
dGlvblRpbWUpLCAqdmlkZW9Jc01pcnJvcmVkLCAqdmlkZW9Sb3RhdGlvbiwgKnNpemUsICpwaXhl
bEZvcm1hdCB9OworfQorCit9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYktpdDo6
UmVtb3RlVmlkZW9GcmFtZVByb3h5KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJD
b3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIG1lZGlhU2FtcGxlLnBsYXRm
b3JtU2FtcGxlKCkudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9G
cmFtZVByb3h5VHlwZTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpWaWRlb0ZyYW1lKQorICAgIHN0YXRpYyBib29s
IGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJu
IG1lZGlhU2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNh
bXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19FTkQoKQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lm1lc3NhZ2VzLmluCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjdiOTMwMDY0YTYxYzhlNjNlNTZjMmUzNjY2NmM3YzU5NzQwMjE1ZTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworbWVzc2Fn
ZXMgLT4gUmVtb3RlVmlkZW9GcmFtZVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIFdhc0luaXRp
YWxpemVkKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3Bl
cnRpZXM+IHByb3BlcnRpZXMpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHlJZGVudGlmaWVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94
eUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NzkyYzA0ODY1MGQwY2EyNjQ2MDAwNzIzNDY3MDMy
ODJlNzJhNGQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHlJZGVudGlmaWVyLmgKQEAgLTAsMCArMSw0MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2luY2x1ZGUgIk9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9SZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKwordXNpbmcgUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UgPSBPYmplY3RJZGVu
dGlmaWVyUmVhZFJlZmVyZW5jZTxXZWJDb3JlOjpSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj47
Cit1c2luZyBSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UgPSBPYmplY3RJZGVudGlmaWVy
V3JpdGVSZWZlcmVuY2U8V2ViQ29yZTo6UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+OwordXNp
bmcgUmVtb3RlVmlkZW9GcmFtZVJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8
V2ViQ29yZTo6UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+OwordXNpbmcgUmVtb3RlVmlkZW9G
cmFtZVJlZmVyZW5jZVRyYWNrZXIgPSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcjxX
ZWJDb3JlOjpSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj47CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCmluZGV4
IGYyMGQwNzRmM2E2ZDQ5NDA0NDc4NjFhMzQyYjQxOWRjZGRmMjg5YmEuLmQ0NzNmNjEzNDE0Mzc2
MDEzMzQzNDRkY2ViMzkwZDdlNjlmYjlmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcApAQCAtMzIsNiArMzIs
OCBAQAogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTGli
V2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNs
dWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3Rl
VmlkZW9GcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ1ZVdGlsaXRpZXMuaD4K
QEAgLTEzMiwxNyArMTM0LDE3IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGZvcm1hdE5hbWVGcm9t
V2ViUlRDQ29kZWNUeXBlKHdlYnJ0Yzo6VmlkZW9Db2RlY1R5cGUgdHlwZSkKICAgICB9CiB9CiAK
LXN0YXRpYyB2b2lkIGNyZWF0ZVJlbW90ZURlY29kZXIoTGliV2ViUlRDQ29kZWNzOjpEZWNvZGVy
JiBkZWNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCitzdGF0aWMgdm9pZCBjcmVh
dGVSZW1vdGVEZWNvZGVyKExpYldlYlJUQ0NvZGVjczo6RGVjb2RlciYgZGVjb2RlciwgSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBib29sIHVzZVJlbW90ZUZyYW1lcykKIHsKICAgICBzd2l0
Y2ggKGRlY29kZXIudHlwZSkgewogICAgIGNhc2UgTGliV2ViUlRDQ29kZWNzOjpUeXBlOjpIMjY0
OgotICAgICAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5
OjpDcmVhdGVIMjY0RGVjb2RlciB7IGRlY29kZXIuaWRlbnRpZmllciB9LCAwKTsKKyAgICAgICAg
Y29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6Q3JlYXRlSDI2
NERlY29kZXIgeyBkZWNvZGVyLmlkZW50aWZpZXIsIHVzZVJlbW90ZUZyYW1lcyB9LCAwKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBMaWJXZWJSVENDb2RlY3M6OlR5cGU6OkgyNjU6Ci0gICAg
ICAgIGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkNyZWF0
ZUgyNjVEZWNvZGVyIHsgZGVjb2Rlci5pZGVudGlmaWVyIH0sIDApOworICAgICAgICBjb25uZWN0
aW9uLnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpDcmVhdGVIMjY1RGVjb2Rl
ciB7IGRlY29kZXIuaWRlbnRpZmllciwgdXNlUmVtb3RlRnJhbWVzIH0sIDApOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIExpYldlYlJUQ0NvZGVjczo6VHlwZTo6VlA5OgotICAgICAgICBjb25u
ZWN0aW9uLnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpDcmVhdGVWUDlEZWNv
ZGVyIHsgZGVjb2Rlci5pZGVudGlmaWVyIH0sIDApOworICAgICAgICBjb25uZWN0aW9uLnNlbmQo
TWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpDcmVhdGVWUDlEZWNvZGVyIHsgZGVjb2Rl
ci5pZGVudGlmaWVyLCB1c2VSZW1vdGVGcmFtZXMgfSwgMCk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIH0KQEAgLTE4NCw2ICsxODYsNyBAQCB2b2lkIExpYldlYlJUQ0NvZGVjczo6ZW5zdXJlR1BV
UHJvY2Vzc0Nvbm5lY3Rpb25Pbk1haW5UaHJlYWRXaXRoTG9jaygpCiAgICAgYXV0byYgZ3B1Q29u
bmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0
aW9uKCk7CiAgICAgZ3B1Q29ubmVjdGlvbi5hZGRDbGllbnQoKnRoaXMpOwogICAgIG1fY29ubmVj
dGlvbiA9ICZncHVDb25uZWN0aW9uLmNvbm5lY3Rpb24oKTsKKyAgICBtX3JlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwUHJveHkgPSAmZ3B1Q29ubmVjdGlvbi5yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcFByb3h5KCk7CiAgICAgbV9jb25uZWN0aW9uLT5hZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjczo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzKTsK
IAogICAgIGlmIChtX2xvZ2dpbmdMZXZlbCkKQEAgLTIyOCw3ICsyMzEsNyBAQCBMaWJXZWJSVEND
b2RlY3M6On5MaWJXZWJSVENDb2RlY3MoKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQog
Ci12b2lkIExpYldlYlJUQ0NvZGVjczo6c2V0Q2FsbGJhY2tzKGJvb2wgdXNlR1BVUHJvY2VzcykK
K3ZvaWQgTGliV2ViUlRDQ29kZWNzOjpzZXRDYWxsYmFja3MoYm9vbCB1c2VHUFVQcm9jZXNzLCBi
b29sIHVzZVJlbW90ZUZyYW1lcykKIHsKICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKIApA
QCAtMjM5LDcgKzI0Miw3IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzOjpzZXRDYWxsYmFja3MoYm9v
bCB1c2VHUFVQcm9jZXNzKQogICAgIH0KIAogICAgIC8vIExldCdzIGNyZWF0ZSBXZWJQcm9jZXNz
IGxpYldlYlJUQ0NvZGVjcyBzaW5jZSBpdCBtYXkgYmUgY2FsbGVkIGZyb20gdmFyaW91cyB0aHJl
YWRzLgotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ0NvZGVjcygpOworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ0NvZGVjcygpLm1fdXNlUmVtb3RlRnJh
bWVzID0gdXNlUmVtb3RlRnJhbWVzOwogCiAjaWYgRU5BQkxFKFZQOSkKICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5saWJXZWJSVENDb2RlY3MoKS5zZXRWUDlWVEJTdXBwb3J0KFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuaGFzVlA5SGFyZHdh
cmVEZWNvZGVyKCkpOwpAQCAtMjU5LDcgKzI2Miw3IEBAIExpYldlYlJUQ0NvZGVjczo6RGVjb2Rl
ciogTGliV2ViUlRDQ29kZWNzOjpjcmVhdGVEZWNvZGVyKFR5cGUgdHlwZSkKICAgICBlbnN1cmVH
UFVQcm9jZXNzQ29ubmVjdGlvbkFuZERpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIGRlY29kZXIgPSBX
VEZNb3ZlKGRlY29kZXIpXSgpIG11dGFibGUgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9j
b25uZWN0aW9uTG9jayB9OwogICAgICAgICBkZWNvZGVyLT5jb25uZWN0aW9uID0gbV9jb25uZWN0
aW9uOwotICAgICAgICBjcmVhdGVSZW1vdGVEZWNvZGVyKCpkZWNvZGVyLCAqbV9jb25uZWN0aW9u
KTsKKyAgICAgICAgY3JlYXRlUmVtb3RlRGVjb2RlcigqZGVjb2RlciwgKm1fY29ubmVjdGlvbiwg
bV91c2VSZW1vdGVGcmFtZXMpOwogCiAgICAgICAgIGF1dG8gZGVjb2RlcklkZW50aWZpZXIgPSBk
ZWNvZGVyLT5pZGVudGlmaWVyOwogICAgICAgICBBU1NFUlQoIW1fZGVjb2RlcnMuY29udGFpbnMo
ZGVjb2RlcklkZW50aWZpZXIpKTsKQEAgLTMxNSwxMCArMzE4LDIzIEBAIHZvaWQgTGliV2ViUlRD
Q29kZWNzOjpmYWlsZWREZWNvZGluZyhSVENEZWNvZGVySWRlbnRpZmllciBkZWNvZGVySWRlbnRp
ZmllcikKICAgICAgICAgZGVjb2Rlci0+aGFzRXJyb3IgPSB0cnVlOwogfQogCi12b2lkIExpYldl
YlJUQ0NvZGVjczo6Y29tcGxldGVkRGVjb2RpbmcoUlRDRGVjb2RlcklkZW50aWZpZXIgZGVjb2Rl
cklkZW50aWZpZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1w
bGUmJiByZW1vdGVTYW1wbGUpCit2b2lkIExpYldlYlJUQ0NvZGVjczo6Y29tcGxldGVkRGVjb2Rp
bmcoUlRDRGVjb2RlcklkZW50aWZpZXIgZGVjb2RlcklkZW50aWZpZXIsIHVpbnQzMl90IHRpbWVT
dGFtcCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vdGVTYW1wbGUsIHN0ZDo6b3B0
aW9uYWw8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+IHJlbW90ZUZyYW1lSWRlbnRpZmllcikK
IHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7CiAKKyAgICBSZWZQdHI8UmVtb3RlVmlk
ZW9GcmFtZVByb3h5PiByZW1vdGVWaWRlb0ZyYW1lOworICAgIC8vIFdlIGFsd2F5cyBjcmVhdGUg
UmVtb3RlVmlkZW9GcmFtZVByb3h5IHNvIHRoYXQgd2UgY2FuIHJlbGVhc2UgdGhlIGNvcnJlc3Bv
bmRpbmcgR1BVUHJvY2VzcyBJT1N1cmZhY2UgcmlnaHQgYXdheSBpZiB0aGVyZSBpcyBubyB2aWRl
byBzb3VyY2UuCisgICAgaWYgKHJlbW90ZUZyYW1lSWRlbnRpZmllcikgeworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uTG9jayB9OworICAgICAgICBSZW1vdGVWaWRlb0ZyYW1l
UHJveHk6OlByb3BlcnRpZXMgcHJvcGVydGllcyB7IHJlbW90ZVNhbXBsZS50aW1lKCksIHJlbW90
ZVNhbXBsZS5taXJyb3JlZCgpLCByZW1vdGVTYW1wbGUucm90YXRpb24oKSwgeyBzdGF0aWNfY2Fz
dDxmbG9hdD4ocmVtb3RlU2FtcGxlLnNpemUoKS53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHJlbW90ZVNhbXBsZS5zaXplKCkuaGVpZ2h0KCkpIH0sIHJlbW90ZVNhbXBsZS52aWRlb0Zvcm1h
dCgpIH07CisgICAgICAgIHJlbW90ZVZpZGVvRnJhbWUgPSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6
OmNyZWF0ZUFscmVhZHlJbml0aWFsaXplZChtX2Nvbm5lY3Rpb24tPnVuaXF1ZUlEKCksICpyZW1v
dGVGcmFtZUlkZW50aWZpZXIsIHByb3BlcnRpZXMsIFtwcm94eSA9IG1fcmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXBQcm94eV0oYXV0byYgZnJhbWUsIGF1dG8mJiBjYWxsYmFjaykgeworICAgICAg
ICAgICAgaWYgKCFwcm94eSkgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJveHktPmdl
dFZpZGVvRnJhbWVCdWZmZXIoZnJhbWUsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgfSk7
CisgICAgfQogICAgIC8vIEZJWE1FOiBEbyBlcnJvciBsb2dnaW5nLgogICAgIGF1dG8qIGRlY29k
ZXIgPSBtX2RlY29kZXJzLmdldChkZWNvZGVySWRlbnRpZmllcik7CiAgICAgaWYgKCFkZWNvZGVy
KQpAQCAtMzMyLDYgKzM0OCwxNCBAQCB2b2lkIExpYldlYlJUQ0NvZGVjczo6Y29tcGxldGVkRGVj
b2RpbmcoUlRDRGVjb2RlcklkZW50aWZpZXIgZGVjb2RlcklkZW50aWZpZXIsCiAgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGVkSW1hZ2VDYWxsYmFjaykKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYg
KHJlbW90ZVZpZGVvRnJhbWUpIHsKKyAgICAgICAgd2VicnRjOjp2aWRlb0RlY29kZXJUYXNrQ29t
cGxldGUoZGVjb2Rlci0+ZGVjb2RlZEltYWdlQ2FsbGJhY2ssIHRpbWVTdGFtcCwgcmVtb3RlU2Ft
cGxlLnRpbWUoKS50b0RvdWJsZSgpLCByZW1vdGVWaWRlb0ZyYW1lLmxlYWtSZWYoKSwKKyAgICAg
ICAgICAgIFtdKGF1dG8qIHBvaW50ZXIpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlbW90ZVZpZGVv
RnJhbWVQcm94eSo+KHBvaW50ZXIpLT5waXhlbEJ1ZmZlcigpOyB9LAorICAgICAgICAgICAgW10o
YXV0byogcG9pbnRlcikgeyBzdGF0aWNfY2FzdDxSZW1vdGVWaWRlb0ZyYW1lUHJveHkqPihwb2lu
dGVyKS0+ZGVyZWYoKTsgfSwKKyAgICAgICAgICAgIHJlbW90ZVNhbXBsZS5zaXplKCkud2lkdGgo
KSwgcmVtb3RlU2FtcGxlLnNpemUoKS5oZWlnaHQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKICAgICBpZiAoIXJlbW90ZVNhbXBsZS5zdXJmYWNlKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBhdXRvIHBpeGVsQnVmZmVyID0gY3JlYXRlQ1ZQaXhlbEJ1ZmZlcihyZW1vdGVTYW1wbGUuc3Vy
ZmFjZSgpKS52YWx1ZV9vcihudWxscHRyKTsKQEAgLTM0MCw3ICszNjQsNyBAQCB2b2lkIExpYldl
YlJUQ0NvZGVjczo6Y29tcGxldGVkRGVjb2RpbmcoUlRDRGVjb2RlcklkZW50aWZpZXIgZGVjb2Rl
cklkZW50aWZpZXIsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB3ZWJydGM6OnZpZGVv
RGVjb2RlclRhc2tDb21wbGV0ZShkZWNvZGVyLT5kZWNvZGVkSW1hZ2VDYWxsYmFjaywgdGltZVN0
YW1wLCBwaXhlbEJ1ZmZlci5nZXQoKSwgcmVtb3RlU2FtcGxlLnRpbWUoKS50b0RvdWJsZSgpKTsK
KyAgICB3ZWJydGM6OnZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZShkZWNvZGVyLT5kZWNvZGVkSW1h
Z2VDYWxsYmFjaywgdGltZVN0YW1wLCByZW1vdGVTYW1wbGUudGltZSgpLnRvRG91YmxlKCksIHBp
eGVsQnVmZmVyLmdldCgpKTsKIH0KIAogc3RhdGljIGlubGluZSBTdHJpbmcgZm9ybWF0TmFtZUZy
b21Db2RlY1R5cGUoTGliV2ViUlRDQ29kZWNzOjpUeXBlIHR5cGUpCkBAIC00MzgsMjAgKzQ2Miwz
MSBAQCBpbnQzMl90IExpYldlYlJUQ0NvZGVjczo6ZW5jb2RlRnJhbWUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJgogICAgIGlmICghZW5jb2Rlci5jb25uZWN0aW9u
KQogICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOwogCi0gICAgYXV0byBi
dWZmZXIgPSBhZG9wdENGKHdlYnJ0Yzo6cGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUpKTsKLSAg
ICBpZiAoIWJ1ZmZlcikgewotICAgICAgICAvLyBidWZmZXIgaXMgbm90IG5hdGl2ZSwgd2UgbmVl
ZCB0byBjb3B5IHRvIHNoYXJlZCB2aWRlbyBmcmFtZS4KLSAgICAgICAgaWYgKCFjb3B5U2hhcmVk
VmlkZW9GcmFtZShlbmNvZGVyLCBmcmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gV0VCUlRDX1ZJ
REVPX0NPREVDX0VSUk9SOworICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVJlYWRS
ZWZlcmVuY2U+IHJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlOworICAgIGlmIChhdXRvIHBy
b3ZpZGVyID0gd2VicnRjOjp2aWRlb0ZyYW1lQnVmZmVyUHJvdmlkZXIoZnJhbWUpKSB7CisgICAg
ICAgIGF1dG8mIG1lZGlhU2FtcGxlID0gKnN0YXRpY19jYXN0PE1lZGlhU2FtcGxlKj4ocHJvdmlk
ZXIpOworICAgICAgICBpZiAoaXM8UmVtb3RlVmlkZW9GcmFtZVByb3h5PihtZWRpYVNhbXBsZSkp
CisgICAgICAgICAgICByZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSA9IGRvd25jYXN0PFJl
bW90ZVZpZGVvRnJhbWVQcm94eT4obWVkaWFTYW1wbGUpLnJlYWQoKTsKICAgICB9CisKKyAgICBS
ZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gYnVmZmVyOworICAgIGlmICghcmVtb3RlVmlkZW9G
cmFtZVJlYWRSZWZlcmVuY2UpIHsKKyAgICAgICAgYnVmZmVyID0gYWRvcHRDRih3ZWJydGM6OnBp
eGVsQnVmZmVyRnJvbUZyYW1lKGZyYW1lKSk7CisgICAgICAgIGlmICghYnVmZmVyKSB7CisgICAg
ICAgICAgICAvLyBidWZmZXIgaXMgbm90IG5hdGl2ZSwgd2UgbmVlZCB0byBjb3B5IHRvIHNoYXJl
ZCB2aWRlbyBmcmFtZS4KKyAgICAgICAgICAgIGlmICghY29weVNoYXJlZFZpZGVvRnJhbWUoZW5j
b2RlciwgZnJhbWUpKQorICAgICAgICAgICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNf
RVJST1I7CisgICAgICAgIH0KKyAgICB9CisKICAgICBhdXRvIHNhbXBsZSA9IFJlbW90ZVZpZGVv
U2FtcGxlOjpjcmVhdGUoYnVmZmVyLmdldCgpLCBNZWRpYVRpbWUoZnJhbWUudGltZXN0YW1wX3Vz
KCkgKiAxMDAwLCAxMDAwMDAwKSwgdG9NZWRpYVNhbXBsZVZpZGVvUm90YXRpb24oZnJhbWUucm90
YXRpb24oKSksIFJlbW90ZVZpZGVvU2FtcGxlOjpTaG91bGRDaGVja0ZvcklPU3VyZmFjZTo6Tm8p
OwotICAgIGlmICghc2FtcGxlLT5zdXJmYWNlKCkpIHsKKyAgICBpZiAoYnVmZmVyICYmICFzYW1w
bGUtPnN1cmZhY2UoKSkgewogICAgICAgICAvLyBidWZmZXIgaXMgbm90IElPU3VyZmFjZSwgd2Ug
bmVlZCB0byBjb3B5IHRvIHNoYXJlZCB2aWRlbyBmcmFtZS4KICAgICAgICAgaWYgKCFjb3B5U2hh
cmVkVmlkZW9GcmFtZShlbmNvZGVyLCBidWZmZXIuZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJu
IFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKICAgICB9CiAKLSAgICBlbmNvZGVyLmNvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpFbmNvZGVGcmFtZSB7IGVu
Y29kZXIuaWRlbnRpZmllciwgKnNhbXBsZSwgZnJhbWUudGltZXN0YW1wKCksIHNob3VsZEVuY29k
ZUFzS2V5RnJhbWUgfSwgMCk7CisgICAgZW5jb2Rlci5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6RW5jb2RlRnJhbWUgeyBlbmNvZGVyLmlkZW50aWZpZXIs
ICpzYW1wbGUsIGZyYW1lLnRpbWVzdGFtcCgpLCBzaG91bGRFbmNvZGVBc0tleUZyYW1lLCByZW1v
dGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSB9LCAwKTsKICAgICByZXR1cm4gV0VCUlRDX1ZJREVP
X0NPREVDX09LOwogfQogCkBAIC01MjYsNyArNTYxLDcgQEAgdm9pZCBMaWJXZWJSVENDb2RlY3M6
OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKQogICAg
IGVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uT25NYWluVGhyZWFkV2l0aExvY2soKTsKICAgICBk
aXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9uXSgpIHsKICAg
ICAgICAgZm9yIChhdXRvJiBkZWNvZGVyIDogbV9kZWNvZGVycy52YWx1ZXMoKSkgewotICAgICAg
ICAgICAgY3JlYXRlUmVtb3RlRGVjb2RlcigqZGVjb2RlciwgKmNvbm5lY3Rpb24pOworICAgICAg
ICAgICAgY3JlYXRlUmVtb3RlRGVjb2RlcigqZGVjb2RlciwgKmNvbm5lY3Rpb24sIG1fdXNlUmVt
b3RlRnJhbWVzKTsKICAgICAgICAgICAgIGRlY29kZXItPmNvbm5lY3Rpb24gPSBjb25uZWN0aW9u
LmdldCgpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmgKaW5kZXggYTAxN2RlOGI4NDU0MWRjNmM5YjM3
ZmQyNWIzNTdjMDA5OGIyMmMxMi4uMmU0OTE2NDBiOWY3MmZiZmI0YjliZTcwOWEyOGRmMjJiNjRj
MGU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGli
V2ViUlRDQ29kZWNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXIuaCIKICNpbmNsdWRlICJSVENEZWNvZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJU
Q0VuY29kZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZp
ZXIuaCIKICNpbmNsdWRlICJTaGFyZWRWaWRlb0ZyYW1lLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Q
aXhlbEJ1ZmZlckNvbmZvcm1lckNWLmg+CiAjaW5jbHVkZSA8bWFwPgpAQCAtNjAsMTMgKzYxLDE1
IEBAIHN0cnVjdCBXZWJLaXRFbmNvZGVkRnJhbWVJbmZvOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAorY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eTsKKwogY2xhc3MgTGliV2Vi
UlRDQ29kZWNzIDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVy
UmVmQ291bnRlZCwgcHVibGljIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TGliV2ViUlRD
Q29kZWNzPiBjcmVhdGUoKTsKICAgICB+TGliV2ViUlRDQ29kZWNzKCk7CiAKLSAgICBzdGF0aWMg
dm9pZCBzZXRDYWxsYmFja3MoYm9vbCB1c2VHUFVQcm9jZXNzKTsKKyAgICBzdGF0aWMgdm9pZCBz
ZXRDYWxsYmFja3MoYm9vbCB1c2VHUFVQcm9jZXNzLCBib29sIHVzZVJlbW90ZUZyYW1lcyk7CiAK
ICAgICBlbnVtIGNsYXNzIFR5cGUgeyBIMjY0LCBIMjY1LCBWUDkgfTsKICAgICBzdHJ1Y3QgRGVj
b2RlciB7CkBAIC0xMjgsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdwdVByb2Nlc3ND
b25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpOwogCiAgICAgdm9pZCBmYWlsZWREZWNvZGlu
ZyhSVENEZWNvZGVySWRlbnRpZmllcik7Ci0gICAgdm9pZCBjb21wbGV0ZWREZWNvZGluZyhSVENE
ZWNvZGVySWRlbnRpZmllciwgdWludDMyX3QgdGltZVN0YW1wLCBXZWJDb3JlOjpSZW1vdGVWaWRl
b1NhbXBsZSYmKTsKKyAgICB2b2lkIGNvbXBsZXRlZERlY29kaW5nKFJUQ0RlY29kZXJJZGVudGlm
aWVyLCB1aW50MzJfdCB0aW1lU3RhbXAsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYsIHN0
ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+KTsKICAgICB2b2lkIGNvbXBs
ZXRlZEVuY29kaW5nKFJUQ0VuY29kZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UmJiwg
Y29uc3Qgd2VicnRjOjpXZWJLaXRFbmNvZGVkRnJhbWVJbmZvJik7CiAgICAgUmV0YWluUHRyPENW
UGl4ZWxCdWZmZXJSZWY+IGNvbnZlcnRUb0JHUkEoQ1ZQaXhlbEJ1ZmZlclJlZik7CiAKQEAgLTE0
OSw2ICsxNTIsNyBAQCBwcml2YXRlOgogCiAgICAgTG9jayBtX2Nvbm5lY3Rpb25Mb2NrOwogICAg
IFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbiBXVEZfR1VBUkRFRF9CWV9MT0NL
KG1fY29ubmVjdGlvbkxvY2spOworICAgIFJlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cFByb3h5PiBtX3JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkgV1RGX0dVQVJERURfQllf
TE9DSyhtX2Nvbm5lY3Rpb25Mb2NrKTsKICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZCgpPj4gbV90
YXNrc1RvRGlzcGF0Y2hBZnRlckVzdGFibGlzaGluZ0Nvbm5lY3Rpb247CiAKICAgICBSZWY8V29y
a1F1ZXVlPiBtX3F1ZXVlOwpAQCAtMTU4LDYgKzE2Miw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90
IG1fcGl4ZWxCdWZmZXJQb29sSGVpZ2h0IHsgMCB9OwogICAgIGJvb2wgbV9zdXBwb3J0VlA5VlRC
IHsgZmFsc2UgfTsKICAgICBzdGQ6Om9wdGlvbmFsPFdURkxvZ0xldmVsPiBtX2xvZ2dpbmdMZXZl
bDsKKyAgICBib29sIG1fdXNlUmVtb3RlRnJhbWVzIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluCmluZGV4IDI1ZjI3ZmVh
ODNkZTdiNTZmY2FmZDhkMWY4ZjM4YTM0N2FiMDZjYmQuLjdkYjc5NTA4MWVhNWYwNjAyZjZmMjI2
MjdiNDQ1NTUzYThiNzA3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW4KQEAgLTI0
LDcgKzI0LDcgQEAKIAogbWVzc2FnZXMgLT4gTGliV2ViUlRDQ29kZWNzIE5vdFJlZkNvdW50ZWQg
ewogICAgIEZhaWxlZERlY29kaW5nKFdlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRp
ZmllcikKLSAgICBDb21wbGV0ZWREZWNvZGluZyhXZWJLaXQ6OlJUQ0RlY29kZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1w
bGUgc2FtcGxlKQorICAgIENvbXBsZXRlZERlY29kaW5nKFdlYktpdDo6UlRDRGVjb2RlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgdWludDMyX3QgdGltZVN0YW1wLCBXZWJDb3JlOjpSZW1vdGVWaWRl
b1NhbXBsZSBzYW1wbGUsIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lSWRl
bnRpZmllcj4gcmVtb3RlRnJhbWVJZGVudGlmaWVyKQogCiAgICAgQ29tcGxldGVkRW5jb2Rpbmco
V2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVu
Y2UgZGF0YSwgc3RydWN0IHdlYnJ0Yzo6V2ViS2l0RW5jb2RlZEZyYW1lSW5mbyBpbmZvKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVj
b3JkZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01l
ZGlhUmVjb3JkZXJQcml2YXRlLmNwcAppbmRleCA0Zjc3ZjM2ZTcxNzI0NThlMWZkZmNmOTIxMzY2
MzZlNmMzZGEyZmY1Li45MTgwZDFjYTcyZDAxZTMyMmU3Y2E0ZGU5YzgzNmQ2OGVjYzZhMWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29y
ZGVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
TWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdl
ck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZWNvcmRlck1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
ZWRpYVN0cmVhbVByaXZhdGUuaD4KQEAgLTkzLDI2ICs5NCwzNCBAQCBNZWRpYVJlY29yZGVyUHJp
dmF0ZTo6fk1lZGlhUmVjb3JkZXJQcml2YXRlKCkKIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0
ZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlkZW9TYW1wbGVN
ZXRhZGF0YSkKIHsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJl
bmNlPiByZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlVmlkZW9TYW1wbGU+IHJlbW90ZVNhbXBsZTsKICAgICBpZiAoc2hvdWxkTXV0ZVZpZGVv
KCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIG9wdGltaXplIHNlbmRpbmcgYmxhY2sg
ZnJhbWVzIGJ5IG9ubHkgc2VuZGluZyB3aWR0aC9oZWlnaHQuCiAgICAgICAgIGlmICghbV9ibGFj
a0ZyYW1lKSB7Ci0gICAgICAgICAgICBhdXRvIGJsYWNrRnJhbWVEZXNjcmlwdGlvbiA9IENNU2Ft
cGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24oc2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkuc2Ft
cGxlLmNtU2FtcGxlQnVmZmVyKTsKLSAgICAgICAgICAgIGF1dG8gZGltZW5zaW9ucyA9IENNVmlk
ZW9Gb3JtYXREZXNjcmlwdGlvbkdldERpbWVuc2lvbnMoYmxhY2tGcmFtZURlc2NyaXB0aW9uKTsK
LSAgICAgICAgICAgIG1fYmxhY2tGcmFtZSA9IGNyZWF0ZUJsYWNrUGl4ZWxCdWZmZXIoZGltZW5z
aW9ucy53aWR0aCwgZGltZW5zaW9ucy5oZWlnaHQpOworICAgICAgICAgICAgYXV0byBzaXplID0g
c2FtcGxlLnByZXNlbnRhdGlvblNpemUoKTsKKyAgICAgICAgICAgIG1fYmxhY2tGcmFtZSA9IGNy
ZWF0ZUJsYWNrUGl4ZWxCdWZmZXIoc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplLndpZHRoKCkpLCBz
dGF0aWNfY2FzdDxzaXplX3Q+KHNpemUuaGVpZ2h0KCkpKTsKICAgICAgICAgfQogICAgICAgICBy
ZW1vdGVTYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKG1fYmxhY2tGcmFtZS5nZXQo
KSwgc2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSwgc2FtcGxlLnZpZGVvUm90YXRpb24oKSwgUmVt
b3RlVmlkZW9TYW1wbGU6OlNob3VsZENoZWNrRm9ySU9TdXJmYWNlOjpObyk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgbV9ibGFja0ZyYW1lID0gbnVsbHB0cjsKLSAgICAgICAgcmVtb3RlU2FtcGxl
ID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShzYW1wbGUsIFJlbW90ZVZpZGVvU2FtcGxlOjpT
aG91bGRDaGVja0ZvcklPU3VyZmFjZTo6Tm8pOworCisgICAgICAgIGlmIChpczxSZW1vdGVWaWRl
b0ZyYW1lUHJveHk+KHNhbXBsZSkpIHsKKyAgICAgICAgICAgIHJlbW90ZVZpZGVvRnJhbWVSZWFk
UmVmZXJlbmNlID0gZG93bmNhc3Q8UmVtb3RlVmlkZW9GcmFtZVByb3h5PihzYW1wbGUpLnJlYWQo
KTsKKyAgICAgICAgICAgIHJlbW90ZVNhbXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUo
bnVsbHB0ciwgc2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSwgc2FtcGxlLnZpZGVvUm90YXRpb24o
KSwgUmVtb3RlVmlkZW9TYW1wbGU6OlNob3VsZENoZWNrRm9ySU9TdXJmYWNlOjpObyk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgcmVtb3RlU2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6
OmNyZWF0ZShzYW1wbGUsIFJlbW90ZVZpZGVvU2FtcGxlOjpTaG91bGRDaGVja0ZvcklPU3VyZmFj
ZTo6Tm8pOwogICAgIH0KIAotICAgIGlmICghcmVtb3RlU2FtcGxlLT5zdXJmYWNlKCkpIHsKKyAg
ICBpZiAoaXM8UmVtb3RlVmlkZW9GcmFtZVByb3h5PihzYW1wbGUpKQorICAgICAgICByZW1vdGVW
aWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSA9IGRvd25jYXN0PFJlbW90ZVZpZGVvRnJhbWVQcm94eT4o
c2FtcGxlKS5yZWFkKCk7CisgICAgZWxzZSBpZiAoIXJlbW90ZVNhbXBsZS0+c3VyZmFjZSgpKSB7
CiAgICAgICAgIC8vIGJ1ZmZlciBpcyBub3QgSU9TdXJmYWNlLCB3ZSBuZWVkIHRvIGNvcHkgdG8g
c2hhcmVkIHZpZGVvIGZyYW1lLgogICAgICAgICBpZiAoIWNvcHlTaGFyZWRWaWRlb0ZyYW1lKHJl
bW90ZVNhbXBsZS0+aW1hZ2VCdWZmZXIoKSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpW
aWRlb1NhbXBsZUF2YWlsYWJsZSB7IFdURk1vdmUoKnJlbW90ZVNhbXBsZSkgfSwgbV9pZGVudGlm
aWVyKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3Jk
ZXI6OlZpZGVvU2FtcGxlQXZhaWxhYmxlIHsgV1RGTW92ZSgqcmVtb3RlU2FtcGxlKSwgcmVtb3Rl
VmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UgfSwgbV9pZGVudGlmaWVyKTsKIH0KIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmYjk5ODc5
ZTRjZmNjNWY4NTk1OTc2M2M1NTNiMWFkNWIwNjQwMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cFByb3h5LmNwcApAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5LmgiCisKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQorCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlNZXNzYWdlcy5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJv
eHk+IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk6OmNyZWF0ZShHUFVQcm9jZXNzQ29u
bmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5KGNvbm5lY3Rpb24pKTsKK30KKworUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXBQcm94eTo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eShHUFVQ
cm9jZXNzQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKKyAgICA6IG1fY29ubmVjdGlvbklEKGNvbm5l
Y3Rpb24uY29ubmVjdGlvbigpLnVuaXF1ZUlEKCkpCisgICAgLCBtX3F1ZXVlKFdvcmtRdWV1ZTo6
Y3JlYXRlKCJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5IiwgV29ya1F1ZXVlOjpRT1M6
OlVzZXJJbnRlcmFjdGl2ZSkpCit7CisgICAgY29ubmVjdGlvbi5hZGRDbGllbnQoKnRoaXMpOwor
ICAgIGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX3F1ZXVlLCB0aGlzKTsKK30KKworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQ
cm94eTo6flJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkoKQoreworICAgIGNsZWFyQ2Fs
bGJhY2tzKCk7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eTo6Z3B1
UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgY29ubmVjdGlv
bikKK3sKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrKG1fY29ubmVjdGlvbkxvY2spOworICAg
ICAgICBtX2Nvbm5lY3Rpb25JRCA9IHsgfTsKKyAgICB9CisgICAgY29ubmVjdGlvbi5jb25uZWN0
aW9uKCkucmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworICAgIGNsZWFy
Q2FsbGJhY2tzKCk7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eTo6
Y2xlYXJDYWxsYmFja3MoKQoreworICAgIEhhc2hNYXA8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZp
ZXIsIENhbGxiYWNrPiBjYWxsYmFja3M7CisgICAgeworICAgICAgICBMb2NrZXIgbG9jayhtX2Nh
bGxiYWNrc0xvY2spOworICAgICAgICBjYWxsYmFja3MgPSBzdGQ6OmV4Y2hhbmdlKG1fY2FsbGJh
Y2tzLCB7IH0pOworICAgIH0KKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzLnZh
bHVlcygpKQorICAgICAgICBjYWxsYmFjayh7IH0pOworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwUHJveHk6OnNldFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhvcmUoSVBDOjpTZW1h
cGhvcmUmJiBzZW1hcGhvcmUpCit7CisgICAgbV9zaGFyZWRWaWRlb0ZyYW1lUmVhZGVyLnNldFNl
bWFwaG9yZShXVEZNb3ZlKHNlbWFwaG9yZSkpOworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwUHJveHk6OnNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkoY29uc3QgU2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUmIGlwY0hhbmRsZSkKK3sKKyAgICBtX3NoYXJlZFZpZGVvRnJhbWVSZWFk
ZXIuc2V0U2hhcmVkTWVtb3J5KGlwY0hhbmRsZSk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwUHJveHk6OkNhbGxiYWNrIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk6OnRh
a2VDYWxsYmFjayhSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAg
IExvY2tlciBsb2NrKG1fY2FsbGJhY2tzTG9jayk7CisgICAgcmV0dXJuIG1fY2FsbGJhY2tzLnRh
a2UoaWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94
eTo6dmlkZW9GcmFtZUJ1ZmZlck5vdEZvdW5kKFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSB0YWtlQ2FsbGJhY2soaWRlbnRp
ZmllcikpCisgICAgICAgIGNhbGxiYWNrKG51bGxwdHIpOworfQorCit2b2lkIFJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwUHJveHk6Om5ld1ZpZGVvRnJhbWVCdWZmZXIoUmVtb3RlVmlkZW9GcmFt
ZUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fc2hhcmVkVmlk
ZW9GcmFtZVJlYWRlci5yZWFkKCk7CisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSB0YWtlQ2FsbGJh
Y2soaWRlbnRpZmllcikpCisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KSk7Cit9CisK
K3ZvaWQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eTo6Z2V0VmlkZW9GcmFtZUJ1ZmZl
cihjb25zdCBSZW1vdGVWaWRlb0ZyYW1lUHJveHkmIGZyYW1lLCBDYWxsYmFjayYmIGNhbGxiYWNr
KQoreworICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2sobV9jYWxsYmFja3NMb2NrKTsKKyAgICAg
ICAgQVNTRVJUKCFtX2NhbGxiYWNrcy5jb250YWlucyhmcmFtZS5pZGVudGlmaWVyKCkpKTsKKyAg
ICAgICAgbV9jYWxsYmFja3MuYWRkKGZyYW1lLmlkZW50aWZpZXIoKSwgV1RGTW92ZShjYWxsYmFj
aykpOworICAgIH0KKyAgICBMb2NrZXIgbG9jayhtX2Nvbm5lY3Rpb25Mb2NrKTsKKyAgICBpZiAo
IW1fY29ubmVjdGlvbklEKSB7CisgICAgICAgIHZpZGVvRnJhbWVCdWZmZXJOb3RGb3VuZChmcmFt
ZS5pZGVudGlmaWVyKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIElQQzo6Q29ubmVj
dGlvbjo6c2VuZChtX2Nvbm5lY3Rpb25JRCwgTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwOjpHZXRWaWRlb0ZyYW1lQnVmZmVyKGZyYW1lLnJlYWQoKSksIDAsIElQQzo6U2VuZE9w
dGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKK30KKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42M2U4OTM0ZmQ5OTYyYzY2NmQzOTY1ZTU3OTcxMjA5N2YwZmNkM2JkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXBQcm94eS5oCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENPQ09B
KSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5j
bHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNo
YXJlZFZpZGVvRnJhbWUuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtR
dWV1ZS5oPgorCit1c2luZyBDVlBpeGVsQnVmZmVyUG9vbFJlZiA9IHN0cnVjdCBfX0NWUGl4ZWxC
dWZmZXJQb29sKjsKKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBDb25uZWN0aW9uOworY2xhc3Mg
RGVjb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZVZpZGVvRnJh
bWVQcm94eTsKKworY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSA6IHB1Ymxp
YyBJUEM6OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciwgcHVibGljIEdQVVBy
b2Nlc3NDb25uZWN0aW9uOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eT4g
Y3JlYXRlKEdQVVByb2Nlc3NDb25uZWN0aW9uJik7CisgICAgflJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwUHJveHkoKTsKKworICAgIHVzaW5nIENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZXRh
aW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4mJik+OworICAgIHZvaWQgZ2V0VmlkZW9GcmFtZUJ1ZmZl
cihjb25zdCBSZW1vdGVWaWRlb0ZyYW1lUHJveHkmLCBDYWxsYmFjayYmKTsKKworcHJpdmF0ZToK
KyAgICBleHBsaWNpdCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5KEdQVVByb2Nlc3ND
b25uZWN0aW9uJik7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIHNl
dFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUmJik7CisgICAgdm9pZCBz
ZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5KGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik7
CisgICAgdm9pZCB2aWRlb0ZyYW1lQnVmZmVyTm90Rm91bmQoUmVtb3RlVmlkZW9GcmFtZUlkZW50
aWZpZXIpOworICAgIHZvaWQgbmV3VmlkZW9GcmFtZUJ1ZmZlcihSZW1vdGVWaWRlb0ZyYW1lSWRl
bnRpZmllcik7CisKKyAgICAvLyBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50CisgICAgdm9p
ZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJik7CisK
KyAgICB2b2lkIGNsZWFyQ2FsbGJhY2tzKCk7CisgICAgQ2FsbGJhY2sgdGFrZUNhbGxiYWNrKFJl
bW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyKTsKKworcHJpdmF0ZToKKyAgICBMb2NrIG1fY29ubmVj
dGlvbkxvY2s7CisgICAgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBtX2Nvbm5lY3Rpb25JRCBX
VEZfR1VBUkRFRF9CWV9MT0NLKG1fY29ubmVjdGlvbkxvY2spOworICAgIExvY2sgbV9jYWxsYmFj
a3NMb2NrOworICAgIEhhc2hNYXA8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIsIENhbGxiYWNr
PiBtX2NhbGxiYWNrcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY2FsbGJhY2tzTG9jayk7CisgICAg
UmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKKyAgICBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyIG1fc2hh
cmVkVmlkZW9GcmFtZVJlYWRlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5Lm1lc3Nh
Z2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ3ZTBkNjgzODdiZjM5ZDQ3MGM2ODA2OTcyMjAyNjY4MWYwOTg5
YTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEs
MzIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1Mp
CisKK21lc3NhZ2VzIC0+IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkgTm90UmVmQ291
bnRlZCB7CisgICAgU2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSBz
ZW1hcGhvcmUpCisgICAgU2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeShXZWJLaXQ6OlNoYXJlZE1l
bW9yeTo6SVBDSGFuZGxlIHN0b3JhZ2VIYW5kbGUpCisgICAgVmlkZW9GcmFtZUJ1ZmZlck5vdEZv
dW5kKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBO
ZXdWaWRlb0ZyYW1lQnVmZmVyKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRl
bnRpZmllcikKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmNwcAppbmRleCBlNWVmNDZlNjA4MjM5NDYyYWE0MDQ4Y2I3ZDNmYTAzNDJlOThiNTc1Li5mMzdj
MThmNWZjM2JlZjk5NThiZWUwZWNlMDE4YWJmMzY3YWMzNjUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgiCiAjaW5jbHVkZSAi
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1v
dGVWaWRlb0ZyYW1lUHJveHkuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgpAQCAtNDksMTIgKzUwLDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI+IFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3JlYXRlKFNhbXBs
CiAKIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXImIG1hbmFnZXIsIFdlYkNvcmU6OlNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjo6Q2xpZW50JiBjbGllbnQpCiAgICAgOiBXZWJDb3JlOjpTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIoY2xpZW50KQorICAgICwgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbigm
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSkKICAg
ICAsIG1fbWFuYWdlcihtYW5hZ2VyKQotICAgICwgbV9jb25uZWN0aW9uKFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpKQorICAg
ICwgbV9jb25uZWN0aW9uKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKSkKICAg
ICAsIG1faWRlbnRpZmllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpKQogewogICAgIG1hbmFnZXIuYWRkTGF5ZXIoKnRoaXMpOwotICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuYWRkQ2xpZW50KCp0aGlz
KTsKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5hZGRDbGllbnQoKnRoaXMpOwogfQogCiB2
b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6aW5pdGlhbGl6ZShib29sIGhpZGVSb290TGF5
ZXIsIEludFNpemUgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFj
aykKQEAgLTc4LDcgKzgwLDcgQEAgdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnNldExv
Z0lkZW50aWZpZXIoU3RyaW5nJiYgbG9nSWRlbnRpZmllcikKIAogU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyOjp+U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKCkKIHsKLSAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLnJlbW92ZUNsaWVudCgqdGhp
cyk7CisgICAgZGlzY29ubmVjdEdQVVByb2Nlc3NDb25uZWN0aW9uSWZOZWVkZWQoKTsKICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ck1hbmFnZXI6OlJlbGVhc2VMYXllciB7IG1faWRlbnRpZmllciB9LCAwKTsKICAgICBpZiAobV9t
YW5hZ2VyKQogICAgICAgICBtX21hbmFnZXItPnJlbW92ZUxheWVyKCp0aGlzKTsKQEAgLTE0MCw2
ICsxNDIsMTQgQEAgdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUo
TWVkaWFTYW1wbGUmIHNhbXBsZSkKIHsKICAgICBpZiAobV9wYXVzZWQpCiAgICAgICAgIHJldHVy
bjsKKyAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChpczxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+KHNhbXBsZSkpIHsKKyAgICAgICAgYXV0
byYgcmVtb3RlU2FtcGxlID0gZG93bmNhc3Q8UmVtb3RlVmlkZW9GcmFtZVByb3h5PihzYW1wbGUp
OworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcjo6RW5xdWV1ZVNhbXBsZSB7IHJlbW90ZVNhbXBsZS5yZWFkKCkgfSwgbV9p
ZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGF1dG8gcmVtb3RlU2Ft
cGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShzYW1wbGUsIFJlbW90ZVZpZGVvU2FtcGxl
OjpTaG91bGRDaGVja0ZvcklPU3VyZmFjZTo6Tm8pOwogICAgIGlmICghcmVtb3RlU2FtcGxlLT5z
dXJmYWNlKCkpIHsKQEAgLTE0OCw3ICsxNTgsNyBAQCB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6ZW5xdWV1ZVNhbXBsZShNZWRpYVNhbXBsZSYgc2FtcGxlKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyOjpFbnF1ZXVlU2FtcGxlIHsgKnJlbW90ZVNhbXBsZSB9LCBt
X2lkZW50aWZpZXIpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyOjpFbnF1ZXVlU2FtcGxlQ1YgeyAqcmVtb3RlU2FtcGxlIH0s
IG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjbGVh
ckVucXVldWVkU2FtcGxlcygpCkBAIC0xNzEsMTEgKzE4MSwxOCBAQCB2b2lkIFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcjo6c2V0RGlkRmFpbChib29sIHZhbHVlKQogdm9pZCBTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24mKQogewogICAgIG1fc2hhcmVkVmlkZW9GcmFtZVdyaXRlci5kaXNhYmxlKCk7CisgICAg
ZGlzY29ubmVjdEdQVVByb2Nlc3NDb25uZWN0aW9uSWZOZWVkZWQoKTsKICAgICBtX2RpZEZhaWwg
PSB0cnVlOwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPnNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllclN0YXR1c0RpZEZhaWwoKTsKIH0KIAordm9pZCBTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI6OmRpc2Nvbm5lY3RHUFVQcm9jZXNzQ29ubmVjdGlvbklmTmVlZGVkKCkKK3sKKyAg
ICBpZiAoYXV0byogZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24sIG51bGxwdHIpKQorICAgICAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi0+
cmVtb3ZlQ2xpZW50KCp0aGlzKTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLmgKaW5kZXggNTYzNjlhZGRmMGFiZjM0NmIwZDIxYzg1MDZkNjljYjNkM2I0MGUzOS4u
MDQ0NGVjZjJiODYyNzk0NDMyMTExM2U2OWQyNmIxMmIyNTViZmFjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2Vy
JiwgV2ViQ29yZTo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpDbGllbnQmKTsKKyAgICB2b2lk
IGRpc2Nvbm5lY3RHUFVQcm9jZXNzQ29ubmVjdGlvbklmTmVlZGVkKCk7CiAKICAgICAvLyBXZWJD
b3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIKICAgICB2b2lkIGluaXRpYWxpemUoYm9vbCBo
aWRlUm9vdExheWVyLCBXZWJDb3JlOjpJbnRTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKSBmaW5hbDsKQEAgLTc2LDYgKzc3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldERp
ZEZhaWwoYm9vbCk7CiAgICAgYm9vbCBjb3B5U2hhcmVkVmlkZW9GcmFtZShDVlBpeGVsQnVmZmVy
UmVmKTsKIAorICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uKiBtX2dwdVByb2Nlc3NDb25uZWN0aW9u
OwogICAgIFdlYWtQdHI8U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcj4gbV9tYW5hZ2Vy
OwogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlk
ZXIuY3BwCmluZGV4IDA3MGM3M2Q4NTc2ZWMyYjMzOGU5ZDEwOGQzZmU4Y2UxZTZkYTdkMTMuLjhl
ZGZkYTlkMjJlNGMxYTI2MTQxZGE5NmE1NjRhNWZlOGU5ZTFjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1By
b3ZpZGVyLmNwcApAQCAtNjEsNyArNjEsNyBAQCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQ
ZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZQogICAg
IGlmICghbV9kaWRJbml0aWFsaXplQ2FsbGJhY2spIHsKICAgICAgICAgLy8gV2UgaW5pdGlhbGl6
ZSBvbmx5IG9uY2Ugc2luY2UgY2FsbGJhY2tzIGFyZSB1c2VkIGluIGJhY2tncm91bmQgdGhyZWFk
cy4KICAgICAgICAgYXV0byogcGFnZSA9IG1fd2ViUGFnZS5jb3JlUGFnZSgpOwotICAgICAgICBM
aWJXZWJSVENDb2RlY3M6OnNldENhbGxiYWNrcyhwYWdlICYmIHBhZ2UtPnNldHRpbmdzKCkud2Vi
UlRDUGxhdGZvcm1Db2RlY3NJbkdQVVByb2Nlc3NFbmFibGVkKCkpOworICAgICAgICBMaWJXZWJS
VENDb2RlY3M6OnNldENhbGxiYWNrcyhwYWdlICYmIHBhZ2UtPnNldHRpbmdzKCkud2ViUlRDUGxh
dGZvcm1Db2RlY3NJbkdQVVByb2Nlc3NFbmFibGVkKCksIHBhZ2UgJiYgcGFnZS0+c2V0dGluZ3Mo
KS53ZWJSVENSZW1vdGVWaWRlb0ZyYW1lRW5hYmxlZCgpKTsKICAgICAgICAgbV9kaWRJbml0aWFs
aXplQ2FsbGJhY2sgPSB0cnVlOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IDU5MjAz
NjU5MzZmMTIwNjdkOWI1NmNlOTNiZGFlZmRhZmI1NzE4NTAuLjczZWM0MTQ3MzA3YWQyNmNkMGNi
YzFlODJmOWEyYTQ2MDIxZjkxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTcxLDcgKzcxLDcgQEAgdm9p
ZCBXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgaWYgKGF1
dG8qIGNhcHR1cmVNYW5hZ2VyID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlcj4oKSkKLSAgICAgICAgY2FwdHVyZU1hbmFnZXItPnNldHVw
Q2FwdHVyZVByb2Nlc3NlcyhwYXJhbWV0ZXJzLnNob3VsZENhcHR1cmVBdWRpb0luVUlQcm9jZXNz
LCBwYXJhbWV0ZXJzLnNob3VsZENhcHR1cmVBdWRpb0luR1BVUHJvY2VzcywgcGFyYW1ldGVycy5z
aG91bGRDYXB0dXJlVmlkZW9JblVJUHJvY2VzcywgcGFyYW1ldGVycy5zaG91bGRDYXB0dXJlVmlk
ZW9JbkdQVVByb2Nlc3MsIHBhcmFtZXRlcnMuc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2Vz
cyk7CisgICAgICAgIGNhcHR1cmVNYW5hZ2VyLT5zZXR1cENhcHR1cmVQcm9jZXNzZXMocGFyYW1l
dGVycy5zaG91bGRDYXB0dXJlQXVkaW9JblVJUHJvY2VzcywgcGFyYW1ldGVycy5zaG91bGRDYXB0
dXJlQXVkaW9JbkdQVVByb2Nlc3MsIHBhcmFtZXRlcnMuc2hvdWxkQ2FwdHVyZVZpZGVvSW5VSVBy
b2Nlc3MsIHBhcmFtZXRlcnMuc2hvdWxkQ2FwdHVyZVZpZGVvSW5HUFVQcm9jZXNzLCBwYXJhbWV0
ZXJzLnNob3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3MsIG1fcGFnZS0+c2V0dGluZ3MoKS53
ZWJSVENSZW1vdGVWaWRlb0ZyYW1lRW5hYmxlZCgpKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1w
bGVNYW5hZ2VyLmNwcAppbmRleCBiMWVmOGY1NjQ1MmYxZmM2OTFmZWRlNGM0ODQ5YzNiNWIwNmM2
NjkzLi4xNTZhOWVhY2ZmOThkNzA1OWNhZTJlZTU3YzViNjE4ODI4ZTFjMGFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJl
U2FtcGxlTWFuYWdlci5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlICJSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90
ZVZpZGVvRnJhbWVQcm94eS5oIgogI2luY2x1ZGUgIlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VUcmFuc2Zl
clNlc3Npb25WVC5oPgpAQCAtMTMzLDYgKzEzNSwxMiBAQCB2b2lkIFJlbW90ZUNhcHR1cmVTYW1w
bGVNYW5hZ2VyOjpkaWRVcGRhdGVTb3VyY2VDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29u
bgogICAgIHNldENvbm5lY3Rpb24oY29ubmVjdGlvbik7CiB9CiAKK3ZvaWQgUmVtb3RlQ2FwdHVy
ZVNhbXBsZU1hbmFnZXI6OnNldFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkoUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSogcHJveHkpCit7CisgICAgTG9ja2VyIGxvY2sobV9y
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5TG9jayk7CisgICAgbV9yZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcFByb3h5ID0gcHJveHk7Cit9CisKIHZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBs
ZU1hbmFnZXI6OmRpc3BhdGNoVG9UaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQog
ewogICAgIG1fcXVldWUtPmRpc3BhdGNoKFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTE1MCwxNSAr
MTU4LDM1IEBAIHZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OmF1ZGlvU3RvcmFnZUNo
YW5nZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjCiAgICAgaXRlcmF0b3ItPnZhbHVlLT5z
ZXRTdG9yYWdlKGlwY0hhbmRsZS5oYW5kbGUsIGRlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcywg
V1RGTW92ZShzZW1hcGhvcmUpLCBtZWRpYVRpbWUsIGZyYW1lQ2h1bmtTaXplKTsKIH0KIAotdm9p
ZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoUmVhbHRp
bWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlVmlkZW9TYW1wbGUmJiBz
YW1wbGUsIFZpZGVvU2FtcGxlTWV0YWRhdGEgbWV0YWRhdGEpCit2b2lkIFJlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShSZWFsdGltZU1lZGlhU291cmNlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVWaWRlb1NhbXBsZSYmIHNhbXBsZSwgc3RkOjpvcHRp
b25hbDxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj4gcmVtb3RlSWRlbnRpZmllciwgVmlkZW9T
YW1wbGVNZXRhZGF0YSBtZXRhZGF0YSkKIHsKICAgICBBU1NFUlQoIVdURjo6aXNNYWluUnVuTG9v
cCgpKTsKIAorICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gdmlkZW9GcmFtZTsKKyAgICAvLyBXZSBh
bHdheXMgY3JlYXRlIFJlbW90ZVZpZGVvRnJhbWVQcm94eSBzbyB0aGF0IHdlIGNhbiByZWxlYXNl
IHRoZSBjb3JyZXNwb25kaW5nIEdQVVByb2Nlc3MgSU9TdXJmYWNlIHJpZ2h0IGF3YXkgaWYgdGhl
cmUgaXMgbm8gdmlkZW8gc291cmNlLgorICAgIGlmIChyZW1vdGVJZGVudGlmaWVyKSB7CisgICAg
ICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyBwcm9wZXJ0aWVzIHsgc2FtcGxl
LnRpbWUoKSwgc2FtcGxlLm1pcnJvcmVkKCksIHNhbXBsZS5yb3RhdGlvbigpLCB7IHN0YXRpY19j
YXN0PGZsb2F0PihzYW1wbGUuc2l6ZSgpLndpZHRoKCkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oc2Ft
cGxlLnNpemUoKS5oZWlnaHQoKSkgfSwgc2FtcGxlLnZpZGVvRm9ybWF0KCkgfTsKKyAgICAgICAg
CisgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGVpdGhlciBnZXQgR1BVUHJvY2VzcyBvciBV
SVByb2Nlc3Mgb2JqZWN0IGhlYXAgcHJveHkuIEZvciBub3cgd2UgYWx3YXlzIGdvIHRvIEdQVVBy
b2Nlc3MuCisgICAgICAgIExvY2tlciBsb2NrKG1fcmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQ
cm94eUxvY2spOworICAgICAgICB2aWRlb0ZyYW1lID0gUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpj
cmVhdGVBbHJlYWR5SW5pdGlhbGl6ZWQobV9jb25uZWN0aW9uLT51bmlxdWVJRCgpLCAqcmVtb3Rl
SWRlbnRpZmllciwgcHJvcGVydGllcywgW3Byb3h5ID0gbV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcFByb3h5XShhdXRvJiBmcmFtZSwgYXV0byYmIGNhbGxiYWNrKSB7CisgICAgICAgICAgICBp
ZiAoIXByb3h5KSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcm94eS0+Z2V0VmlkZW9G
cmFtZUJ1ZmZlcihmcmFtZSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICB9KTsKKyAgICB9
CisKICAgICBhdXRvIGl0ZXJhdG9yID0gbV92aWRlb1NvdXJjZXMuZmluZChpZGVudGlmaWVyKTsK
ICAgICBpZiAoaXRlcmF0b3IgPT0gbV92aWRlb1NvdXJjZXMuZW5kKCkpIHsKICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiVW5hYmxlIHRvIGZpbmQgc291cmNlICVsbHUgZm9yIHJl
bW90ZVZpZGVvU2FtcGxlQXZhaWxhYmxlIiwgaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAodmlkZW9GcmFtZSkgeworICAgICAgICBpdGVyYXRv
ci0+dmFsdWUtPnZpZGVvRnJhbWVBdmFpbGFibGUodmlkZW9GcmFtZS5yZWxlYXNlTm9uTnVsbCgp
LCBzYW1wbGUuc2l6ZSgpLCBtZXRhZGF0YSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAg
aXRlcmF0b3ItPnZhbHVlLT52aWRlb1NhbXBsZUF2YWlsYWJsZShXVEZNb3ZlKHNhbXBsZSksIG1l
dGFkYXRhKTsKIH0KIApAQCAtMjQ3LDEwICsyNzUsMTUgQEAgdm9pZCBSZW1vdGVDYXB0dXJlU2Ft
cGxlTWFuYWdlcjo6UmVtb3RlVmlkZW86OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFJlbW90ZVZpZGVv
U2EKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CisgICAgdmlkZW9GcmFtZUF2YWlsYWJsZShzYW1wbGVSZWYucmVsZWFzZU5vbk51bGwoKSwgcmVt
b3RlU2FtcGxlLnNpemUoKSwgbWV0YWRhdGEpOworfQorCit2b2lkIFJlbW90ZUNhcHR1cmVTYW1w
bGVNYW5hZ2VyOjpSZW1vdGVWaWRlbzo6dmlkZW9GcmFtZUF2YWlsYWJsZShSZWY8TWVkaWFTYW1w
bGU+JiYgc2FtcGxlLCBJbnRTaXplIHNpemUsIFZpZGVvU2FtcGxlTWV0YWRhdGEgbWV0YWRhdGEp
Cit7CiAgICAgc3dpdGNoT24obV9zb3VyY2UsIFsmXShSZWY8UmVtb3RlUmVhbHRpbWVWaWRlb1Nv
dXJjZT4mIHNvdXJjZSkgewotICAgICAgICBzb3VyY2UtPnZpZGVvU2FtcGxlQXZhaWxhYmxlKCpz
YW1wbGVSZWYsIHJlbW90ZVNhbXBsZS5zaXplKCksIG1ldGFkYXRhKTsKKyAgICAgICAgc291cmNl
LT52aWRlb1NhbXBsZUF2YWlsYWJsZShzYW1wbGUuZ2V0KCksIHNpemUsIG1ldGFkYXRhKTsKICAg
ICB9LCBbJl0oUmVmPFJlbW90ZVJlYWx0aW1lRGlzcGxheVNvdXJjZT4mIHNvdXJjZSkgewotICAg
ICAgICBzb3VyY2UtPnJlbW90ZVZpZGVvU2FtcGxlQXZhaWxhYmxlKCpzYW1wbGVSZWYsIG1ldGFk
YXRhKTsKKyAgICAgICAgc291cmNlLT5yZW1vdGVWaWRlb1NhbXBsZUF2YWlsYWJsZShzYW1wbGUu
Z2V0KCksIG1ldGFkYXRhKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuaAppbmRl
eCA4NmY0OTBiNzgwZmU0OWNhMTFhMTA0YWY3YjY5YmQzM2U2OGMxNzI2Li5iZjFkYTlkZGNlODAx
NDA5OGI1YTI1YWJmNTQ3NDU4NDA1MTcyYTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuaApAQCAt
MzMsMTEgKzMzLDEzIEBACiAjaW5jbHVkZSAiUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZS5oIgog
I2luY2x1ZGUgIlJlbW90ZVJlYWx0aW1lRGlzcGxheVNvdXJjZS5oIgogI2luY2x1ZGUgIlJlbW90
ZVJlYWx0aW1lVmlkZW9Tb3VyY2UuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1dlYkF1ZGlvQnVmZmVyTGlzdC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1
ZXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ2LDYgKzQ4LDcgQEAgY2xhc3MgUmVt
b3RlVmlkZW9TYW1wbGU7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgUmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXBQcm94eTsKIAogY2xhc3MgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFn
ZXIgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpUaHJlYWRNZXNzYWdlUmVjZWl2ZXJSZWZDb3Vu
dGVkIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTYwLDYgKzYzLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVtb3ZlU291cmNlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJ
ZGVudGlmaWVyKTsKIAogICAgIHZvaWQgZGlkVXBkYXRlU291cmNlQ29ubmVjdGlvbihJUEM6OkNv
bm5lY3Rpb24qKTsKKyAgICB2b2lkIHNldFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHko
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSopOwogCiAgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIApAQCAtNzAsNyArNzQs
NyBAQCBwcml2YXRlOgogICAgIC8vIE1lc3NhZ2VzCiAgICAgdm9pZCBhdWRpb1N0b3JhZ2VDaGFu
Z2VkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZSYsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCBJUEM6OlNlbWFwaG9yZSYmLCBjb25zdCBNZWRp
YVRpbWUmLCBzaXplX3QgZnJhbWVTYW1wbGVTaXplKTsKICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2
YWlsYWJsZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgTWVkaWFUaW1l
LCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcyk7Ci0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJs
ZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3Rl
VmlkZW9TYW1wbGUmJiwgV2ViQ29yZTo6VmlkZW9TYW1wbGVNZXRhZGF0YSk7CisgICAgdm9pZCB2
aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiwgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRl
b0ZyYW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlZpZGVvU2FtcGxlTWV0YWRhdGEpOwogCiAgICAg
dm9pZCBzZXRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiopOwogCkBAIC0xMDYsNiArMTEwLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgUmVtb3RlVmlkZW8oU291cmNlJiYpOwogCiAg
ICAgICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1w
bGUmJiwgV2ViQ29yZTo6VmlkZW9TYW1wbGVNZXRhZGF0YSk7CisgICAgICAgIHZvaWQgdmlkZW9G
cmFtZUF2YWlsYWJsZShSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYsIFdlYkNvcmU6OkludFNp
emUsIFdlYkNvcmU6OlZpZGVvU2FtcGxlTWV0YWRhdGEpOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgU291cmNlIG1fc291cmNlOwpAQCAtMTE1LDEwICsxMjAsMTIgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1faXNSZWdpc3RlcmVkVG9QYXJlbnRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07CiAg
ICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBt
X2Nvbm5lY3Rpb247Ci0KICAgICAvLyBiYWNrZ3JvdW5kIHRocmVhZCBtZW1iZXIKICAgICBIYXNo
TWFwPFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlQXVkaW8+PiBtX2F1ZGlvU291cmNlczsKICAgICBIYXNoTWFwPFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW8+
PiBtX3ZpZGVvU291cmNlczsKKworICAgIExvY2sgbV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cFByb3h5TG9jazsKKyAgICBSZWZQdHI8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eT4g
bV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5IFdURl9HVUFSREVEX0JZX0xPQ0sobV9y
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5TG9jayk7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1v
dGVDYXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCA4
NjUxYjNjZDc5OWExZjc1NGYyZTgwM2M0Njg4OTBlOGY1YWFmYTY2Li45NjcyMjE4NDFlMGNmMjRh
OTVlZDVlYzJjYWQyMDFjMDY0ODRmNjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2Vy
Lm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBACiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUNhcHR1
cmVTYW1wbGVNYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewogICAgIEF1ZGlvU3RvcmFnZUNoYW5nZWQo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIFdlYktpdDo6U2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgSVBDOjpTZW1h
cGhvcmUgY2FwdHVyZVNlbWFwaG9yZSwgTWVkaWFUaW1lIG1lZGlhVGltZSwgc2l6ZV90IGZyYW1l
Q2h1bmtTaXplKTsKLSAgICBWaWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlSWRlbnRpZmllciBpZCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxl
LCBzdHJ1Y3QgV2ViQ29yZTo6VmlkZW9TYW1wbGVNZXRhZGF0YSBtZXRhZGF0YSkKKyAgICBWaWRl
b1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBp
ZCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxlLCBzdGQ6Om9wdGlvbmFsPFdlYktp
dDo6UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+IHJlbW90ZUlkZW50aWZpZXIsIHN0cnVjdCBX
ZWJDb3JlOjpWaWRlb1NhbXBsZU1ldGFkYXRhIG1ldGFkYXRhKQogfQogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZU1lZGlh
U291cmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJl
YWx0aW1lTWVkaWFTb3VyY2VQcm94eS5jcHAKaW5kZXggOGE1OWFlMWEyOGZhNDNhOWIyZjIxNTc2
MjExODlhZTk3NmQxMDJkZi4uNGEyOTRkOGM1NDE3MWU2ZTEwMDViM2E0MDY2NTZiMjZjMTU5YzA0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0
aW1lTWVkaWFTb3VyY2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1JlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VQcm94eS5jcHAKQEAgLTY4LDkgKzY4LDkgQEAg
dm9pZCBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlUHJveHk6OnN0b3BQcm9kdWNpbmdEYXRhKCkK
ICAgICBjb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHk6OlN0b3BQcm9kdWNpbmdEYXRhIHsgbV9pZGVudGlmaWVyIH0sIDApOwogfQogCi12b2lk
IFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VQcm94eTo6Y3JlYXRlUmVtb3RlTWVkaWFTb3VyY2Uo
Y29uc3QgU3RyaW5nJiBkZXZpY2VJREhhc2hTYWx0LCBDcmVhdGVDYWxsYmFjayYmIGNhbGxiYWNr
KQordm9pZCBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlUHJveHk6OmNyZWF0ZVJlbW90ZU1lZGlh
U291cmNlKGNvbnN0IFN0cmluZyYgZGV2aWNlSURIYXNoU2FsdCwgQ3JlYXRlQ2FsbGJhY2smJiBj
YWxsYmFjaywgYm9vbCBzaG91bGRVc2VSZW1vdGVGcmFtZSkKIHsKLSAgICBjb25uZWN0aW9uKCkt
PnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eTo6Q3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKGlkZW50
aWZpZXIoKSwgbV9kZXZpY2UsIGRldmljZUlESGFzaFNhbHQsIG1fY29uc3RyYWludHMpLCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CisgICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OkNyZWF0ZU1lZGlhU291cmNlRm9y
Q2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyhpZGVudGlmaWVyKCksIG1fZGV2aWNlLCBkZXZp
Y2VJREhhc2hTYWx0LCBtX2NvbnN0cmFpbnRzLCBzaG91bGRVc2VSZW1vdGVGcmFtZSksIFdURk1v
dmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlUHJveHk6
OmFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMsIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OkFwcGx5Q29uc3RyYWludHNIYW5kbGVyJiYgY29tcGxldGlvbkhh
bmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3Rl
UmVhbHRpbWVNZWRpYVNvdXJjZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZVByb3h5LmgKaW5kZXggZTYwMzFkZmRiZWZlNjY2
YTExZTQ2NzEyNjg0MWRjOTYxODAwZGNjNi4uNjY2YjljMTJhYmJmY2RkNmYzNTM2NmRmOWJmZjMx
NGEwZTdkNjNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Jl
bW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlUHJveHkuaApAQCAtNTQsNyArNTQs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKCkgY29uc3Qg
eyByZXR1cm4gbV9zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzOyB9CiAKICAgICB1c2luZyBDcmVh
dGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgU3RyaW5nJiYsIFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYmLCBXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0aWVzJiYsIFZlY3RvcjxXZWJDb3JlOjpWaWRlb1ByZXNldERhdGE+JiYs
IFdlYkNvcmU6OkludFNpemUsIGRvdWJsZSk+OwotICAgIHZvaWQgY3JlYXRlUmVtb3RlTWVkaWFT
b3VyY2UoY29uc3QgU3RyaW5nJiwgQ3JlYXRlQ2FsbGJhY2smJik7CisgICAgdm9pZCBjcmVhdGVS
ZW1vdGVNZWRpYVNvdXJjZShjb25zdCBTdHJpbmcmLCBDcmVhdGVDYWxsYmFjayYmLCBib29sIHNo
b3VsZFVzZVJlbW90ZUZyYW1lID0gZmFsc2UpOwogCiAgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRz
U3VjY2VlZGVkKCk7CiAgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzRmFpbGVkKFN0cmluZyYmIGZh
aWxlZENvbnN0cmFpbnQsIFN0cmluZyYmIGVycm9yTWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJj
ZS5jcHAKaW5kZXggZWNkODZjMGZhNTM1NGVkYjc3MWM2MmY2ZThmYzg5YTFhZWM3YjY4My4uZDJk
MjRhYmFiOWVjMzRhMGRhMjJlYjY1YThhZDNjYjVmMDA3ZDk3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZVZpZGVvU291
cmNlLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIFJlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2U6
OmNyZWF0ZVJlbW90ZU1lZGlhU291cmNlKCkKICAgICAgICAgbV9wcm94eS5zZXRBc1JlYWR5KCk7
CiAgICAgICAgIGlmIChtX3Byb3h5LnNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MoKSkKICAgICAg
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9u
KCkuYWRkQ2xpZW50KCp0aGlzKTsKLSAgICB9KTsKKyAgICB9LCBtX21hbmFnZXIuc2hvdWxkVXNl
R1BVUHJvY2Vzc1JlbW90ZUZyYW1lcygpKTsKIH0KIAogUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6flJlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKaW5kZXgg
MWVlOTIzMDY5Y2RjNThjOWQ3YTIxMDI3ZWM5NDY2MzBiMmMwZWIxZS4uYzVmZjcyNTc0NzY4NmJl
OTFiY2M5OGRmMjQyNjcyZTI0MjBjOWViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCkBAIC03MCw4
ICs3MCw5IEBAIGNvbnN0IGNoYXIqIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpzdXBwbGVtZW50
TmFtZSgpCiAgICAgcmV0dXJuICJVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciI7CiB9CiAKLXZvaWQg
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OnNldHVwQ2FwdHVyZVByb2Nlc3Nlcyhib29sIHNob3Vs
ZENhcHR1cmVBdWRpb0luVUlQcm9jZXNzLCBib29sIHNob3VsZENhcHR1cmVBdWRpb0luR1BVUHJv
Y2VzcywgYm9vbCBzaG91bGRDYXB0dXJlVmlkZW9JblVJUHJvY2VzcywgYm9vbCBzaG91bGRDYXB0
dXJlVmlkZW9JbkdQVVByb2Nlc3MsIGJvb2wgc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2Vz
cykKK3ZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OnNldHVwQ2FwdHVyZVByb2Nlc3Nlcyhi
b29sIHNob3VsZENhcHR1cmVBdWRpb0luVUlQcm9jZXNzLCBib29sIHNob3VsZENhcHR1cmVBdWRp
b0luR1BVUHJvY2VzcywgYm9vbCBzaG91bGRDYXB0dXJlVmlkZW9JblVJUHJvY2VzcywgYm9vbCBz
aG91bGRDYXB0dXJlVmlkZW9JbkdQVVByb2Nlc3MsIGJvb2wgc2hvdWxkQ2FwdHVyZURpc3BsYXlJ
blVJUHJvY2VzcywgYm9vbCBzaG91bGRVc2VHUFVQcm9jZXNzUmVtb3RlRnJhbWVzKQogeworICAg
IG1fc2hvdWxkVXNlR1BVUHJvY2Vzc1JlbW90ZUZyYW1lcyA9IHNob3VsZFVzZUdQVVByb2Nlc3NS
ZW1vdGVGcmFtZXM7CiAgICAgLy8gRklYTUUocmRhcjovLzg0Mjc4MTQ2KTogQWRvcHQgQVZDYXB0
dXJlU2Vzc2lvbiBhdHRyaWJ1dGlvbiBBUEkgZm9yIGNhbWVyYSBhY2Nlc3MgaW4gdGhlIHdlYiBw
cm9jZXNzIGlmIHNob3VsZENhcHR1cmVWaWRlb0luR1BVUHJvY2VzcyBpcyBmYWxzZS4KICAgICBN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc2V0TW9ja0F1ZGlvQ2Fw
dHVyZUVuYWJsZWQoIXNob3VsZENhcHR1cmVBdWRpb0luVUlQcm9jZXNzICYmICFzaG91bGRDYXB0
dXJlQXVkaW9JbkdQVVByb2Nlc3MpOwogICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
OjpzaW5nbGV0b24oKS5zZXRNb2NrVmlkZW9DYXB0dXJlRW5hYmxlZCghc2hvdWxkQ2FwdHVyZVZp
ZGVvSW5VSVByb2Nlc3MgJiYgIXNob3VsZENhcHR1cmVWaWRlb0luR1BVUHJvY2Vzcyk7CkBAIC0y
MzAsMTQgKzIzMSwyMSBAQCB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpBdWRpb0ZhY3Rv
cnk6OnNldFNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MoYm9vbCB2YQogICAgIG1fc2hvdWxkQ2Fw
dHVyZUluR1BVUHJvY2VzcyA9IHZhbHVlOwogfQogCit2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyOjpWaWRlb0ZhY3Rvcnk6OnNldFNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MoYm9vbCB2YWx1
ZSkKK3sKKyAgICBtX3Nob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MgPSB2YWx1ZTsKK30KKwogQ2Fw
dHVyZVNvdXJjZU9yRXJyb3IgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlZpZGVvRmFjdG9yeTo6
Y3JlYXRlVmlkZW9DYXB0dXJlU291cmNlKGNvbnN0IENhcHR1cmVEZXZpY2UmIGRldmljZSwgU3Ry
aW5nJiYgaGFzaFNhbHQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQogewog
I2lmICFFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgaWYgKG1fc2hvdWxkQ2FwdHVyZUluR1BVUHJv
Y2VzcykKICAgICAgICAgcmV0dXJuIENhcHR1cmVTb3VyY2VPckVycm9yIHsgIlZpZGVvIGNhcHR1
cmUgaW4gR1BVUHJvY2VzcyBpcyBub3QgaW1wbGVtZW50ZWQiX3MgfTsKICNlbmRpZgorICAgIGlm
IChtX3Nob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MpCisgICAgICAgIG1fbWFuYWdlci5tX3JlbW90
ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLnNldFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHko
JldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkucmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSgpKTsKIAotICAgIGJvb2wgc2hvdWxkVXNlSU9T
dXJmYWNlID0gZmFsc2U7CisgICAgYm9vbCBzaG91bGRVc2VJT1N1cmZhY2UgPSAhbV9tYW5hZ2Vy
Lm1fc2hvdWxkVXNlR1BVUHJvY2Vzc1JlbW90ZUZyYW1lczsKICAgICByZXR1cm4gQ2FwdHVyZVNv
dXJjZU9yRXJyb3IoUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlKFJlbW90ZVJlYWx0aW1lVmlk
ZW9Tb3VyY2U6OmNyZWF0ZShkZXZpY2UsIGNvbnN0cmFpbnRzLCB7IH0sIFdURk1vdmUoaGFzaFNh
bHQpLCBtX21hbmFnZXIsIG1fc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcyksIHNob3VsZFVzZUlP
U3VyZmFjZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCmluZGV4IDdjNTRhMmEzMGNkNWVhN2ZkYmRi
OTg2MzNiYTg0MGFhZWVhMGRhZTUuLjA2OTAxNzBmOTdlN2VjZTI0NDg5M2YzNDVmZTVkOGU3MTNm
M2E5M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tR1BVUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RGVjb2RlciYgZGVjb2RlcikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsgfQotICAgIHZvaWQgc2V0dXBDYXB0dXJlUHJvY2Vzc2VzKGJvb2wgc2hvdWxkQ2FwdHVyZUF1
ZGlvSW5VSVByb2Nlc3MsIGJvb2wgc2hvdWxkQ2FwdHVyZUF1ZGlvSW5HUFVQcm9jZXNzLCBib29s
IHNob3VsZENhcHR1cmVWaWRlb0luVUlQcm9jZXNzLCBib29sIHNob3VsZENhcHR1cmVWaWRlb0lu
R1BVUHJvY2VzcywgYm9vbCBzaG91bGRDYXB0dXJlRGlzcGxheUluVUlQcm9jZXNzKTsKKyAgICB2
b2lkIHNldHVwQ2FwdHVyZVByb2Nlc3Nlcyhib29sIHNob3VsZENhcHR1cmVBdWRpb0luVUlQcm9j
ZXNzLCBib29sIHNob3VsZENhcHR1cmVBdWRpb0luR1BVUHJvY2VzcywgYm9vbCBzaG91bGRDYXB0
dXJlVmlkZW9JblVJUHJvY2VzcywgYm9vbCBzaG91bGRDYXB0dXJlVmlkZW9JbkdQVVByb2Nlc3Ms
IGJvb2wgc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2VzcywgYm9vbCBzaG91bGRVc2VHUFVQ
cm9jZXNzUmVtb3RlRnJhbWVzKTsKIAogICAgIHZvaWQgYWRkU291cmNlKFJlZjxSZW1vdGVSZWFs
dGltZUF1ZGlvU291cmNlPiYmKTsKICAgICB2b2lkIGFkZFNvdXJjZShSZWY8UmVtb3RlUmVhbHRp
bWVWaWRlb1NvdXJjZT4mJik7CkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
bW92ZVNvdXJjZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllcik7CiAKICAg
ICBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlciYgcmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIo
KSB7IHJldHVybiBtX3JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOyB9CisgICAgYm9vbCBzaG91
bGRVc2VHUFVQcm9jZXNzUmVtb3RlRnJhbWVzKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRVc2VH
UFVQcm9jZXNzUmVtb3RlRnJhbWVzOyB9CiAKIHByaXZhdGU6CiAgICAgLy8gV2ViQ29yZTo6UmVh
bHRpbWVNZWRpYVNvdXJjZSBmYWN0b3JpZXMKQEAgLTg1LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAg
ICBjbGFzcyBWaWRlb0ZhY3RvcnkgOiBwdWJsaWMgV2ViQ29yZTo6VmlkZW9DYXB0dXJlRmFjdG9y
eSB7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBWaWRlb0ZhY3RvcnkoVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXImIG1hbmFnZXIpIDogbV9tYW5hZ2VyKG1hbmFnZXIpIHsgfQotICAgICAg
ICB2b2lkIHNldFNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MoYm9vbCB2YWx1ZSkgeyBtX3Nob3Vs
ZENhcHR1cmVJbkdQVVByb2Nlc3MgPSB2YWx1ZTsgfQorICAgICAgICB2b2lkIHNldFNob3VsZENh
cHR1cmVJbkdQVVByb2Nlc3MoYm9vbCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBXZWJDb3Jl
OjpDYXB0dXJlU291cmNlT3JFcnJvciBjcmVhdGVWaWRlb0NhcHR1cmVTb3VyY2UoY29uc3QgV2Vi
Q29yZTo6Q2FwdHVyZURldmljZSYsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25zdCBXZWJDb3JlOjpN
ZWRpYUNvbnN0cmFpbnRzKikgZmluYWw7CkBAIC0xMzcsNiArMTM4LDcgQEAgcHJpdmF0ZToKICAg
ICBWaWRlb0ZhY3RvcnkgbV92aWRlb0ZhY3Rvcnk7CiAgICAgRGlzcGxheUZhY3RvcnkgbV9kaXNw
bGF5RmFjdG9yeTsKICAgICBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlciBtX3JlbW90ZUNhcHR1
cmVTYW1wbGVNYW5hZ2VyOworICAgIGJvb2wgbV9zaG91bGRVc2VHUFVQcm9jZXNzUmVtb3RlRnJh
bWVzIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhiN2U0MjI4MzYzNWI3NzYy
OTU4YWNmMWRiMThiMDBkMTMzYTQ4NTkuLjE2YmQzNjJjOTM2NjJmNzZhMGIyZmE1OTIzMjhkNTZh
M2YxOTVkNGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMi0xMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVu
ZW5AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBhIFJlbW90ZU1lZGlhU2FtcGxlUHJv
eHkgdG8gcmVwcmVzZW50IGNhcHR1cmVkIHZpZGVvIGZyYW1lcyB1c2VkIGluIE1lZGlhIFN0cmVh
bXMgYW5kIHByZXNlbnQgaW4gR1BVUAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2MDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxl
dC4KKworICAgICAgICAqIFNjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcDoKKwogMjAyMi0wMi0xMSAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQg
dG8gcXVlcnkgY2FtZXJhIGFuZCBtaWNyb3Bob25lIHBlcm1pc3Npb25zCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRl
LWdwdXAtd2ViZ2wKaW5kZXggMzBmN2ZkODJiMzMxYTA2ZjRjNGUwY2I0ZTNiODlmNzVmZmU2YjE4
MS4uMzMyNTczYzlkYjJhMmYwNjAxNWRiOWNkZTViZTIyOWNhMzQ5NTA2OCAxMDA3NTUKLS0tIGEv
VG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZ2Vu
ZXJhdGUtZ3B1cC13ZWJnbApAQCAtOTQsNyArOTQsMTAgQEAgbWVzc2FnZXMgLT4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0ge3sKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQgZGlzcGxh
eUJ1ZmZlcikgU3luY2hyb25vdXMgTm90U3RyZWFtRW5jb2RhYmxlUmVwbHkKICNlbmRpZgotI2lm
ICFQTEFURk9STShDT0NPQSkKKyNpZiBVU0UoR1JBUEhJQ1NfTEFZRVJfV0MpCisgICAgdm9pZCBQ
cmVwYXJlRm9yRGlzcGxheSgpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6V0NDb250ZW50QnVm
ZmVySWRlbnRpZmllcj4gY29udGVudEJ1ZmZlcikgU3luY2hyb25vdXMKKyNlbmRpZgorI2lmICFQ
TEFURk9STShDT0NPQSkgJiYgIVVTRShHUkFQSElDU19MQVlFUl9XQykKICAgICB2b2lkIFByZXBh
cmVGb3JEaXNwbGF5KCkgLT4gKCkgU3luY2hyb25vdXMKICNlbmRpZgogICAgIHZvaWQgRW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcgZXh0ZW5zaW9uKQpAQCAtMTA0LDYgKzEwNyw5IEBAIG1l
c3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHt7
CiAgICAgdm9pZCBQYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCiAgICAg
dm9pZCBQYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyKSAtPiAoKSBTeW5jaHJvbm91cwogICAgIHZvaWQg
Q29weVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIHVpbnQzMl90IHRleHR1cmUsIHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
dWludDMyX3QgaW50ZXJuYWxGb3JtYXQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwg
Ym9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSAtPiAoYm9vbCBzdWNjZXNzKSBTeW5j
aHJvbm91cworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgdm9pZCBQYWludENvbXBvc2l0
ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZShXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVy
ZW5jZSByZXN1bHQpCisjZW5kaWYKICAgICB2b2lkIFNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcgZXZlbnQp
CiB7fQogfX0KQEAgLTIzMiw3ICsyMzgsNyBAQCBkZWYgY3JlYXRlX2NwcF90eXBlX2NvbnRhaW5l
cih0eXBlX25hbWUgOiBzdHIpIC0+IE9wdGlvbmFsW2NwcF90eXBlX2NvbnRhaW5lcl06CiAgICAg
ICAgIHJldHVybiBOb25lCiAgICAgY29udGFpbmVyX25hbWUgPSBtWzFdCiAgICAgIyBBbGwgdGVt
cGxhdGVzIGFyZSBjb250YWluZXJzIGV4Y2VwdCB0aGVzZSBiZWxvdy4KLSAgICBpZiBjb250YWlu
ZXJfbmFtZSBpbiBbJ1JlZlB0cicsICdSZWYnXToKKyAgICBpZiBjb250YWluZXJfbmFtZSBpbiBb
J1JlZlB0cicsICdSZWYnLCAnUmV0YWluUHRyJywgJ3N0ZDo6b3B0aW9uYWwnXToKICAgICAgICAg
cmV0dXJuIE5vbmUKICAgICB0ZW1wbGF0ZXMgPSBtWzJdCiAgICAgYXJpdHkgPSBOb25lCkBAIC02
NDAsNyArNjQ2LDEzIEBAIGNsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwob2JqZWN0KToK
ICAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW28udHlw
ZV0KICAgICAgICAgICAgICAgICBhc3NlcnQoaXNpbnN0YW5jZSh3ZWJraXRfaXBjX3R5cGUsIGNw
cF90eXBlX2NvbnRhaW5lcikpCiAgICAgICAgICAgICAgICAgdiA9IGNwcF9hcmcod2Via2l0X2lw
Y190eXBlLCBvLm5hbWUgKyAiUmVwbHkiKQotICAgICAgICAgICAgICAgIHNlbGYucHJlX2NhbGxf
c3RtdHMgKz0gW2Yie3N0cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9OyJdCisgICAgICAgICAgICAg
ICAgaWYgby50eXBlLmlzX2R5bmFtaWNfc3BhbigpOgorICAgICAgICAgICAgICAgICAgICBzZWxm
LnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodi50eXBlKX0ge3N0cih2Lm5hbWUpfTsiXQorICAg
ICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgRklYTUU6IExpa2VseSB0
aGlzIGNyZWF0ZXMgYSBkYW5nbGluZyByZWZlcmVuY2Ugc3BhbjxpbnQsIDI+IGFSZXBseSA9IHsg
eyB9IH07LgorICAgICAgICAgICAgICAgICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzU4ODkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9z
dG10cyArPSBbZiJ7c3RyKHYudHlwZSl9IHtzdHIodi5uYW1lKX0ge3sge3sgfX0gfX07Il0KKwog
ICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFtjcHBfZXhwcih2LnR5cGUsIHYubmFt
ZSldCiAgICAgICAgICAgICAgICAgaWYgby50eXBlLmlzX2R5bmFtaWNfc3BhbigpOgogICAgICAg
ICAgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihnZXRfY3BwX3R5cGUoInNp
emVfdCIpLCBmIntvLm5hbWV9LmJ1ZlNpemUiKV0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKaW5kZXggZDE0NmNlYzRmMmVjNGNmNjkxMmQ3ZjA0
OGQyODgxNTdhZGZkYzFiOC4uYzQ1YzY3YTMxNjZiZmZiOTg3N2JjMGQ4MzRmZWY4NDRhNDg2NjUx
OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1h
cC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5j
cHAKQEAgLTU3LDcgKzU3LDYgQEAgcHVibGljOgogICAgIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVUaW1lOyB9CiAgICAgTWVkaWFUaW1lIGR1cmF0
aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQogICAgIEF0b21TdHJpbmcg
dHJhY2tJRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdHJhY2tJRDsgfQotICAgIHZvaWQgc2V0
VHJhY2tJRChjb25zdCBTdHJpbmcmIHRyYWNrSUQpIGZpbmFsIHsgbV90cmFja0lEID0gdHJhY2tJ
RDsgfQogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2l6
ZUluQnl0ZXM7IH0KICAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fcHJlc2VudGF0aW9uU2l6ZTsgfQogICAgIHZvaWQgb2Zmc2V0VGltZXN0YW1w
c0J5KGNvbnN0IE1lZGlhVGltZSYgb2Zmc2V0KSBmaW5hbCB7IG1fcHJlc2VudGF0aW9uVGltZSAr
PSBvZmZzZXQ7IG1fZGVjb2RlVGltZSArPSBvZmZzZXQ7IH0KQEAgLTcxLDcgKzcwLDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gY3JlYXRlKG1fcHJlc2VudGF0aW9uVGltZSwgbV9kZWNvZGVU
aW1lLCBtX2R1cmF0aW9uLCBzdGF0aWNfY2FzdDxTYW1wbGVGbGFncz4obV9mbGFncyB8IElzTm9u
RGlzcGxheWluZykpOwogICAgIH0KICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fZmxhZ3M7IH0KLSAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgp
IGZpbmFsIHsgcmV0dXJuIHsgUGxhdGZvcm1TYW1wbGU6Ok5vbmUsIHtudWxscHRyfX07IH0KKyAg
ICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsg
UGxhdGZvcm1TYW1wbGU6Ok5vbmUsIHsgbnVsbHB0ciB9IH07IH0KICAgICBzdGQ6Om9wdGlvbmFs
PEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjpudWxsb3B0
OyB9CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBmaW5hbCB7IH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5jcHAKaW5kZXggNWEwZTAxMDNlOTk0YjVjNDAwOWM1
N2I5YTM1NTM3YWU5MjAyY2YxOC4uZTJiMDAzYjM4N2ZlNzJhNjkwNzc1MjBhYzNjYTUwMjIyM2Iw
MzM3YSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5jcHAKQEAgLTEyNSw2ICsx
MjUsNyBAQCBjb25zdCBUZXN0RmVhdHVyZXMmIFRlc3RPcHRpb25zOjpkZWZhdWx0cygpCiAgICAg
ICAgICAgICB7ICJUZXh0QXV0b3NpemluZ1VzZXNJZGVtcG90ZW50TW9kZSIsIGZhbHNlIH0sCiAg
ICAgICAgICAgICB7ICJVc2VzQmFja0ZvcndhcmRDYWNoZSIsIGZhbHNlIH0sCiAgICAgICAgICAg
ICB7ICJXZWJBdXRoZW50aWNhdGlvbkVuYWJsZWQiLCB0cnVlIH0sCisgICAgICAgICAgICB7ICJX
ZWJSVENSZW1vdGVWaWRlb0ZyYW1lRW5hYmxlZCIsIGZhbHNlIH0sCiAgICAgICAgICAgICB7ICJX
ZWJSVENNRE5TSUNFQ2FuZGlkYXRlc0VuYWJsZWQiLCBmYWxzZSB9LAogICAgICAgICAgICAgeyAi
WFNTQXVkaXRvckVuYWJsZWQiLCBmYWxzZSB9LAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFlfU0lN
VUxBVE9SKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLW11dGUtdnA4Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tbXV0ZS12cDguaHRtbAppbmRleCA0ZmFkY2Rh
NmI5MjI5OTI0Yzg3OTgyZmQ2NTdkNzYxMjUyNDk2MDA0Li43ODdlYTc4YTQxY2U1YmFmM2JhNTEy
MjQ3Y2Q0MDY5NjIwMDVjYTg4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8t
bXV0ZS12cDguaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tbXV0ZS12cDguaHRt
bApAQCAtMSw0ICsxLDQgQEAKLTwhZG9jdHlwZSBodG1sPgorPCFkb2N0eXBlIGh0bWw+PCEtLSB3
ZWJraXQtdGVzdC1ydW5uZXIgWyBXZWJSVENSZW1vdGVWaWRlb0ZyYW1lRW5hYmxlZD10cnVlIF0g
LS0+CiA8aHRtbD4KICAgICA8aGVhZD4KICAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLW11dGUuaHRtbCBiL0xheW91dFRl
c3RzL3dlYnJ0Yy92aWRlby1tdXRlLmh0bWwKaW5kZXggNjkxOGI0ZTc5ZmY3YTFjZGM3ZDIxZGYz
ZGQ3OTNmYWNlZTAxZGYyOC4uMzg5OGJjOGFmNzYzNTExMGQ3NzhiNjYzYWRkZTI1YzQ2NWM4M2I3
MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLW11dGUuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tbXV0ZS5odG1sCkBAIC0xLDQgKzEsNCBAQAotPCFkb2N0
eXBlIGh0bWw+Cis8IWRvY3R5cGUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIFdlYlJU
Q1JlbW90ZVZpZGVvRnJhbWVFbmFibGVkPXRydWUgXSAtLT4KIDxodG1sPgogICAgIDxoZWFkPgog
ICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJydGMvdmlkZW8tcm90YXRpb24uaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1yb3Rh
dGlvbi5odG1sCmluZGV4IDkwNjg0OWM0ZGU1YTE2MGZkMGJiMjM0YTRkNGRjNTkzYTg1MjBlMTMu
LmJjMmQ1NzQyYzQ3ZTY1YjRiYTdiMmQ4MWNmZTIyYjJiMmQwYmVkZmMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3dlYnJ0Yy92aWRlby1yb3RhdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL3dl
YnJ0Yy92aWRlby1yb3RhdGlvbi5odG1sCkBAIC0xLDQgKzEsNCBAQAotPCFkb2N0eXBlIGh0bWw+
Cis8IWRvY3R5cGUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIFdlYlJUQ1JlbW90ZVZp
ZGVvRnJhbWVFbmFibGVkPXRydWUgXSAtLT4KIDxodG1sPgogICAgIDxoZWFkPgogICAgICAgICA8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvdmlk
ZW8uaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby5odG1sCmluZGV4IDE4ZTJhYWNjMGRh
M2Q1YzdjZGFjY2RlODFkZDYxNjBmYzNkMGMyZDYuLjAyMDJjYzc2MDJmNDViNmYyZmM2MWI3YmIx
MWNmNzdlYjQ3NDhhNmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby5odG1s
CisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby5odG1sCkBAIC0xLDQgKzEsNCBAQAotPCFk
b2N0eXBlIGh0bWw+Cis8IWRvY3R5cGUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIFdl
YlJUQ1JlbW90ZVZpZGVvRnJhbWVFbmFibGVkPXRydWUgXSAtLT4KIDxodG1sPgogICAgIDxoZWFk
PgogICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451692</attachid>
            <date>2022-02-11 07:30:54 -0800</date>
            <delta_ts>2022-02-11 07:30:54 -0800</delta_ts>
            <desc>Combined patch</desc>
            <filename>bug-236356-20220211163042.patch</filename>
            <type>text/plain</type>
            <size>258113</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBmZDk0YzE1ZWNkMDQ5N2IzMWFkMzBkYmQ4MDI1YzJkYTZjYWIyYmNjLi4xYjUy
ZDk3ODJkM2I4NDVlMDU0YTJhMzYwNDBiN2E2MTcwNzU1NzgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMi0wMi0xMSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCByZW1vdGUgdmlkZW8g
ZnJhbWVzIGluIFdlYlJUQyB2aWRlbyBwaXBlbGluZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIGEgd2F5IGZvciBPYmpDRnJhbWVCdWZm
ZXIgdG8gbm90IGRpcmVjdGx5IG93biBhIENWUGl4ZWxCdWZmZXJSZWYgYnV0IGEgcG9pbnRlcgor
ICAgICAgICB0aGF0IGNhbiBiZSB1c2VkIHRvIGdldCBhIENWUGl4ZWxCdWZmZXJSZWYuIFRoaXMg
aXMgdXNlZCB0byBhbGxvdyByZW1vdGUgZnJhbWVzIHRvIGJlIHNlbnQgb3ZlciB0byBsaWJ3ZWJy
dGMuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cDoKKyAgICAg
ICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAgICAgICAgKiBDb25m
aWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nk
ay9XZWJLaXQvV2ViS2l0RGVjb2Rlci5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dl
YktpdC9XZWJLaXREZWNvZGVyLm1tOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXRVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VXRpbGl0aWVzLm1tOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0
aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2Rr
L29iamMvbmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5tbToKKwogMjAyMi0wMi0wMyAgTWlj
aGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQgcHJvamVj
dHMgaGF2ZSBpbmNvcnJlY3QgaW5zdGFsbCBuYW1lIGZvciB0aGUgZnJhbWV3b3JrcyBmb3IgQ2F0
YWx5c3QgYnVpbGRzIHdpdGggdGhlIHN5c3RlbSBjb250ZW50IHBhdGgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYWExNDZlZGRl
NmNiMjY2ZWMwMTQ4ZDM5YjE4OTc2YWJkMTViN2VjMy4uZTFlNTM5NTBjODZkOWQ3YjBlYWQ2YzEw
OWMyMmQxZDljOTYyOTg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMi0xMSAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCByZW1vdGUgdmlk
ZW8gZnJhbWVzIGluIFdlYlJUQyB2aWRlbyBwaXBlbGluZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIGFuIGV4cGVyaW1lbnRhbCBmbGFn
IHRvIG1ha2UgdXNlIG9mIHJlbW90ZSBmcmFtZXMgaW4gV2ViUlRDIGNvZGUgcGF0aHMuCisKKyAg
ICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbDoK
KwogMjAyMi0wMi0xMCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtXVEZdIEZpeCBjbGFuZyB0aWR5IGJ1Z3Byb25lLW1vdmUtZm9yd2FyZGluZy1yZWZlcmVu
Y2Ugc3RhdGljIGFuYWx5emVyIHdhcm5pbmdzIGZyb20gV2ViQ29yZS9XZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA4YjY1MTkwYTFhZTliM2UwNDZkMzQ4ZDA1MGZjNjMzNjMxNmI5MzZkLi5hZTBlZmY5Njg0
M2MzMTRhMDA1NTlmN2YwMTk0NWQyMmE2NDczZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODUg
QEAKKzIwMjItMDItMTEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAg
ICAgIFN1cHBvcnQgcmVtb3RlIHZpZGVvIGZyYW1lcyBpbiBXZWJSVEMgdmlkZW8gcGlwZWxpbmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjM1Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IHRv
IHJlY2VpdmUvc2VuZCByZW1vdGUgZnJhbWVzIGFzIHdlYnJ0YyBWaWRlb0ZyYW1lIGJ1ZmZlcnMu
CisgICAgICAgIFdlIGFyZSBub3QgeWV0IG9wdGltaXppbmcgcmVtb3ZlIHZpZGVvIGZyYW1lIHNl
bmRpbmcgYXMgdGhpcyByZXF1aXJlcyBtb3ZpbmcgcmVtb3RlIHZpZGVvIGZyYW1lIHRvIFdlYkNv
cmUuCisgICAgICAgIFRoaXMgd2lsbCBiZSBkb25lIGFzIGEgZm9sbG93LXVwLgorCisgICAgICAg
IENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMgYW5kIHVwZGF0ZWQgdGVzdHMgdG8gZW5hYmxlIHRo
ZSBleHBlcmltZW50YWwgZmxhZy4KKworICAgICAgICAqIHBsYXRmb3JtL01lZGlhU2FtcGxlLmg6
CisgICAgICAgICogcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
VmlkZW9GcmFtZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2Ft
cGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNl
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWlu
Z1ZpZGVvU291cmNlQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcDoKKwor
MjAyMi0wMi0xMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAg
ICAgIEludHJvZHVjZSBhIFJlbW90ZU1lZGlhU2FtcGxlUHJveHkgdG8gcmVwcmVzZW50IGNhcHR1
cmVkIHZpZGVvIGZyYW1lcyB1c2VkIGluIE1lZGlhIFN0cmVhbXMgYW5kIHByZXNlbnQgaW4gR1BV
UAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MDk5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBBZGQgVmlk
ZW9GcmFtZSA6IHB1YmxpYyBNZWRpYVN0cmVhbSwgYmFzZSBjbGFzcyBmb3IgTWVkaWEgU3RyZWFt
IHZpZGVvIGZyYW1lcy4KKyAgICAgICAgQ3VycmVudGx5IGluaGVyaXRzIGZyb20gTWVkaWFTYW1w
bGUsIGJ1dCBsYXRlciB3aWxsIHJlbW92ZSB0aGUgTWVkaWFTYW1wbGUuCisKKyAgICAgICAgVGhl
IFdlYkNvcmU6OlZpZGVvRnJhbWUgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiB2YXJpb3VzIGVu
dHJ5LXBvaW50cyB0aGF0CisgICAgICAgIGN1cnJlbnRseSBhcmUgY3VycmVudGx5IHR5cGVkIGFz
OgorICAgICAgICAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlk
ZW9TYW1wbGVNZXRhZGF0YSwgLi4uKS4KKyAgICAgICAgVGhlIG5ldyBjbGFzcyBXZWJLaXQ6OlJl
bW90ZVZpZGVvRnJhbWVQcm94eSA6IHB1YmxpYyBWaWRlb0ZyYW1lIGNhbiBiZSBwYXNzZWQgdG8g
dGhlc2UgQVBJcy4KKyAgICAgICAgVGhlIEFQSSBlbnRyeXBvaW50cyBhcmUgbm90IHlldCBjaGFu
Z2VkIGluIG9yZGVyIHRvIHBhcnRpYWxseSByb2xsIHRoZSBjaGFuZ2VzIGluLgorICAgICAgICBM
YXRlciBvbiwgdGhlIGVudHJ5cG9pbnRzIHdpbGwgYmUgc2ltaWxhciB0bzoKKyAgICAgICAgICAg
dm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9TYW1wbGVNZXRhZGF0
YSwgLi4uKS4KKworICAgICAgICBSZW1vdmVzIE1lZGlhU2FtcGxlOjpzZXRUcmFja0lEIGFzIHRo
YXQgaXMgbm90IHVzZWQuCisgICAgICAgIENoYW5nZXMgTWVkaWFTYW1wbGU6OnBsYXRmb3JtU2Ft
cGxlKCkgdG8gY29uc3QsIHNvIHRoYXQgaXQgY2FuIGJlIGNhbGxlZCBmcm9tCisgICAgICAgIGNv
bnN0IGNvbnRleHQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3Rvci4KKworICAgICAg
ICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL01lZGlh
U2FtcGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6ZGVjb2RlVGltZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb0ZyYW1lOjpkdXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb0ZyYW1lOjp0cmFja0lEIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6
OnNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnByZXNl
bnRhdGlvblNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6b2Zmc2V0
VGltZXN0YW1wc0J5KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnNldFRpbWVzdGFt
cHMpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6aXNEaXZpc2FibGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6ZGl2aWRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvRnJhbWU6OmNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvRnJhbWU6OmZsYWdzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
RnJhbWU6OmJ5dGVSYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjpk
dW1wIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9WaWRlb0ZyYW1lLmg6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oOgorICAgICAgICAo
aXNUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNhbXBsZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9i
akM6OnBsYXRmb3JtU2FtcGxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTYW1wbGVHU3RyZWFtZXI6OnBsYXRmb3JtU2FtcGxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNhbXBsZTo6cGxhdGZvcm1TYW1wbGUgY29uc3Qp
OgorCiAyMDIyLTAyLTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgc3VwcG9ydCB0byBxdWVyeSBjYW1lcmEgYW5kIG1pY3JvcGhvbmUgcGVybWlzc2lv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggMTM1Yjk2MjdlODllM2MyMmE4ZmQwY2NhMzE2NGI4OWUxYjk5OWU1Mi4u
NDQzYTNiYjQ4N2QyZTNlY2RiMWViNTM3YmIzMGVlYTQwMzk0OTU5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTUgQEAKKzIwMjItMDItMTEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgorCisgICAgICAgIFN1cHBvcnQgcmVtb3RlIHZpZGVvIGZyYW1lcyBpbiBXZWJSVEMgdmlkZW8g
cGlwZWxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNjM1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFsbG93IHJlY2VpdmluZyByZW1vdGUgc2FtcGxlcyBmcm9tIGNhbWVyYSBvciBIVyBkZWNvZGVy
cy4KKyAgICAgICAgSW4gdGhhdCBjYXNlLCB3ZSBjcmVhdGUgcmVtb3RlIHZpZGVvIGZyYW1lcyBh
bmQgYWxsb3cgcGlwaW5nIHRoZW0gdG8gb3VyIGV4aXN0aW5nIHBpcGVsaW5lLgorICAgICAgICBX
ZSB1cGRhdGUgTWVkaWFSZWNvcmRlciBhbmQgTGliV2ViUlRDIEhXIGVuY29kZXJzIHRvIGRlYWwg
d2l0aCB0aGlzLgorICAgICAgICBTaW5jZSB3ZSBoYXZlIGEgY29kZSBwYXRoIHRoYXQgcmVxdWly
ZXMgZ2V0dGluZyBhY2Nlc3MgdG8gdGhlIHJhdyBwaXhlbHMsIHdlIGludHJvZHVjZSBSZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5CisgICAgICAgIHRvIGFsbG93IGdldHRpbmcgdGhhdCBk
YXRhIHRocm91Z2ggc2hhcmVkIG1lbW9yeSBhc3luY2hyb25vdXNseS4KKyAgICAgICAgUmVtb3Rl
VmlkZW9GcmFtZVByb3h5IHdpbGwgdGhlbiB1c2UgYSBzZW1hcGhvcmUgdG8gYmxvY2sgb24gdGhl
IGFzeW5jIElQQyByZXN1bHQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmg6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1t
OgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgor
ICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5jcHA6CisgICAgICAgICogU2hhcmVkL1RocmVhZFNhZmVPYmplY3RIZWFwLmg6CisgICAgICAg
ICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFD
YXB0dXJlTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eUlkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXBQcm94eVByb2Nlc3Nvci5jcHA6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yLmg6IEFk
ZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcFByb3h5UHJvY2Vzc29yLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAq
IFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJj
ZVByb3h5LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lTWVk
aWFTb3VyY2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRp
bWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFD
YXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFD
YXB0dXJlTWFuYWdlci5oOgorCisyMDIyLTAyLTExICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5l
bkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEgUmVtb3RlTWVkaWFTYW1wbGVQcm94
eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVzIHVzZWQgaW4gTWVkaWEgU3RyZWFt
cyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0
LgorCisgICAgICAgIENoYW5nZXMgYWZ0ZXIgcmV2ZXJ0OgorICAgICAgICAgLSBGb3Igbm93LCBj
cmVhdGUgdGhlIFJlbW90ZVZpZGVvRnJhbWUgaW4gR1BVUCB1c2luZyBzeW5jaHJvbm91cyBtZXNz
YWdlLiBUaGlzIHdheQorICAgICAgICAgICBSZW1vdGVWaWRlb0ZyYW1lUHJveHkgZG9lcyBub3Qg
bmVlZCB0byByZWNlaXZlIG1lc3NhZ2VzLiBJdCBjYW5ub3QgZWFzaWx5IGRvIHRoYXQsCisgICAg
ICAgICAgIGFzIGl0IGlzIHJlZmVyZW5jZWQgaW4gbXVsdGlwbGUgdGhyZWFkcyBhbmQgdGh1cyB3
ZSBjYW5ub3QgcmVtb3ZlIHRoZSBtZXNzYWdlIGRlc3RpbmF0aW9uCisgICAgICAgICAgIGZvciB0
aGUgaW5zdGFuY2UgZnJvbSBHUFVQcm9jZXNzIGluc3RhbmNlLCBhcyB0aGF0IG9wZXJhdGlvbiBp
cyBtYWluIHRocmVhZCBvbmx5LgorICAgICAgICAgICBUaGUgdHlwZSBjYW5ub3QgYmUgRGVzdHJ1
Y3Rpb25UaHJlYWQ6Ok1haW4sIGFzIHdlIGRvIG5vdCAoeWV0KSBjb250cm9sIHRoZSBiYXNlIGNs
YXNzCisgICAgICAgICAgIChNZWRpYVNhbXBsZSkuCisKKyAgICAgICAgV2ViQ29udGVudCBwcm9j
ZXNzOgorICAgICAgICBBZGQgV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHksIFdlYkNvbnRl
bnQgcHJvY2VzcyBzaWRlIHByb3h5IG9iamVjdCB0aGF0CisgICAgICAgIFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBjYW4gdXNlLgorCisgICAgICAgIFJlbW90
ZVZpZGVvRnJhbWVQcm94eSBjYW4gYmUgc2VudCB0byB0aGUgR1BVUCBhbmQgdGhlIHRoZSBTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIuIFNvCisgICAgICAgIHRoZSBjYXB0dXJlZCBjb250ZW50IHNo
b3dzIGluIGNvbXBvc2l0aW5nIHRocm91Z2ggdmlkZW8gZWxlbWVudC4KKworICAgICAgICBBdCB0
aGUgbW9tZW50IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBjYW5ub3QgcGFp
bnQgUmVtb3RlVmlkZW9GcmFtZVByb3h5IHRvIHRoZQorICAgICAgICBkb2N1bWVudCBDU1MgcGFp
bnRlZCBjb250ZW50LCBDb250ZXh0MkQgb3IgV2ViR0wgY2FudmFzLgorCisgICAgICAgIEdQVVA6
CisgICAgICAgIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwIGlzIGEgbWFwcGluZworICAgICAg
ICBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciAtPiBNZWRpYVNhbXBsZS4gQ3VycmVudGx5IGFs
bCBvYmplY3RzCisgICAgICAgIG1hcCB0byBub3JtYWwgTWVkaWFTYW1wbGVBVkZPYmpDLgorCisg
ICAgICAgIEFkZCBhbiBleGFtcGxlIGltcGxlbWVudGF0aW9uIHdoZXJlIGEgcmVtb3RlIE1lZGlh
U2FtcGxlIGlzIHJldHVybmVkIGJ5IElQQzoKKyAgICAgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkuCisKKyAgICAgICAgVGhl
IEdQVVAgb2JqZWN0IHBvaW50ZWQgYnkgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaXM6Cisg
ICAgICAgIC0gY3JlYXRlZCBpbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRDb21wb3Np
dGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBpbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCB0aHJl
YWQKKyAgICAgICAgLSBjb25zdW1lZCBpbiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OmVucXVldWVTYW1wbGUgaW4gUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciB0
aHJlYWQKKyAgICAgICAgLSByZWxlYXNlZCBpbiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6
cmVsZWFzZVZpZGVvRnJhbWUgaW4gR1BVUCBtYWluIHRocmVhZAorICAgICAgICBBbGwgb2YgdGhl
c2UgbWVzc2FnZXMgYXJlIGFzeW5jaHJvbm91cyBhbmQgY2FuIGFycml2ZSB0byB0aGVpciBkZXN0
aW5hdGlvbiBpbiBhbnkgb3JkZXIuCisgICAgICAgIEZvciBleGFtcGxlLCByZXF1ZXN0IHRvIHJl
bGVhc2UgdGhlIHZpZGVvIGZyYW1lIGNhbiBoYXBwZW4gYmVmb3JlIHRoZSBtZXNzYWdlIHRvIGNy
ZWF0ZSB0aGUgdmlkZW8gZnJhbWUgaGFzIGJlZW4KKyAgICAgICAgcmVjZWl2ZWQuCisKKyAgICAg
ICAgVG8gc29sdmUgdGhlIG9yZGVyaW5nIGlzc3VlLCBpbnRyb2R1Y2UgcmVhZGVycy13cml0ZXJz
IHJlZmVyZW5jZSBjb3VudGluZyBtZXRob2QgdmlhIGZvbGxvd2luZyBjbGFzc2VzOgorICAgICAg
ICAgLSBPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZQorICAgICAgICAgLSBPYmplY3RJZGVu
dGlmaWVyV3JpdGVSZWZlcmVuY2UKKyAgICAgICAgIC0gT2JqZWN0SWRlbnRpZmllclJlZmVyZW5j
ZVRyYWNrZXIKKworICAgICAgICBPYmplY3RJZGVudGlmaWVyIGlkZW50aWZpZXMgdGhlIG9iamVj
dC4KKyAgICAgICAgT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlIGlkZW50aWZpZXMgYSBu
ZXcgdmVyc2lvbiBvZiB0aGUgY29udGVudCBwb2ludGVkIGJ5IHRoZSBpZGVudGlmaWVyLgorICAg
ICAgICBQc2V1ZG9jb2RlIGV4YW1wbGVzOgorICAgICAgICAgIFdyaXRlUmVmZXJlbmNlIHsgaWRl
bnRpZmllciA9IDEsIHBlbmRpbmdSZWFkcyA9IDAsIHZlcnNpb24gPSAwIH0gbWVhbnM6CisgICAg
ICAgICAgICAiRW5kIHRoZSBsaWZlLXRpbWUgb2YgaWRlbnRpZmllciAxLCB2ZXJzaW9uIDAuIENy
ZWF0ZSB2ZXJzaW9uID0gMSIKKyAgICAgICAgICAgIFRoaXMgaXMgaG93IGluaXRpYWwgb2JqZWN0
IGlzIGFzc2lnbmVkIHRvIHRoZSByZWZlcmVuY2UuCisgICAgICAgICAgV3JpdGVSZWZlcmVuY2Ug
eyBpZGVudGlmaWVyID0gMSwgcGVuZGluZ1JlYWRzID0gNzcsIHZlcnNpb24gPSAzMiB9IG1lYW5z
CisgICAgICAgICAgICAiRW5kIHRoZSBsaWZlLXRpbWUgb2YgaWRlbnRpZmllciAxLCB2ZXJzaW9u
IDMyIHdoZW4gYWxsIDc3IHJlYWRzIGhhdmUgY29tcGxldGVkLiBDcmVhdGUgdmVyc2lvbiA9IDMz
IgorCisgICAgICAgIE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlIGRlY2xhcmVzIGEgcmVh
ZCBkZXBlbmRlbmN5IHRvIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgY29udGVudCBwb2ludGVk
IGJ5IHRoZSBpZGVudGlmaWVyLgorICAgICAgICBQc2V1ZG9jb2RlIGV4YW1wbGVzOgorICAgICAg
ICAgICBSZWFkUmVmZXJlbmNlIHsgaWRlbnRpZmllciA9IDEsIHZlcnNpb24gPSAzMiB9IG1lYW5z
CisgICAgICAgICAgICJDb21wbGV0ZSBvbmUgcmVhZCBvZiBpZGVudGlmaWVyIDEsIHZlcnNpb24g
MzIiLgorCisgICAgICAgIENyZWF0ZXMsIHVwZGF0ZXMgYW5kIGRlc3RydWN0aW9ucyBhcmUgV3Jp
dGVSZWZlcmVuY2VzLgorICAgICAgICBSZWFkcyBhcmUgUmVhZFJlZmVyZW5jZXMuCisKKyAgICAg
ICAgVGhlIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyIGNyZWF0ZXMgd3JpdGUgYW5k
IHJlYWQgcmVmZXJlbmNlcyBpbiB0aGUgUHJveHkgLXVzaW5nIHByb2Nlc3MgKFdlYkNvbnRlbnQg
cHJvY2VzcykuCisKKyAgICAgICAgVGhlIGFkZGVkIFRocmVhZFNhZmVPYmplY3RIZWFwIHJlc29s
dmVzIHRoZSByZWFkIGFuZCB3cml0ZSByZWZlcmVuY2VzIGluIHRoZSByZWFsIG9iamVjdCBwcm9j
ZXNzIChHUFVQIGluIHRoaXMgY2FzZSkuCisgICAgICAgIFJlYWRzIGFuZCB3cml0ZXMgYXJlIGJs
b2NraW5nIHRoZSByZXF1ZXN0aW5nIHRocmVhZCBhcHByb3ByaWF0ZWx5OgorICAgICAgICAgLSBS
ZWFkIG9mIHVua25vd24gdmVyc2lvbiBvZiB0aGUgaWRlbnRpZmllciBibG9ja3MgdW50aWwgdGhl
IHdyaXRlIGNyZWF0ZXMgdGhlIHZlcnNpb24KKyAgICAgICAgIC0gV3JpdGUgb2YgbmV3IHZlcnNp
b24gb2YgdGhlIGlkZW50aWZpZXIgYmxvY2tzIHVudGlsIHRoZSByZWFkcyBoYXZlIHJldGlyZWQs
IG9yIGNyZWF0ZXMgcGFyYWxsZWwsIG5ldyB2ZXJzaW9uCisgICAgICAgICAgIG9mIHRoZSBjb250
ZW50IGluIGNhc2Ugb2YgY29weS1vbi13cml0ZSBzY2hlbWVzLgorCisgICAgICAgIEluIHRoaXMg
Y29tbWl0IG9iamVjdHMgcG9pbnRlZCBieSBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBhcmUg
aW1tdXRhYmxlIHVudGlsIGRlc3Ryb3llZCwgc28gdGhlcmUgaXMgbm8gdXBkYXRlIG9yCisgICAg
ICAgIGNvcHktb24td3JpdGUgc2NoZW1lIGhlcmUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6dmlkZW9GcmFtZU9iamVjdEhlYXAgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1Rv
TWVkaWFTYW1wbGUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjp+UmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cDo6c3RvcExpc3RlbmluZ0ZvcklQQyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwOjpyZWxlYXNlVmlkZW9GcmFtZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9JUENUZXN0ZXIuaC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNz
YWdlcy5pbi4KKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2Ft
cGxlQ1YpOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6Y3JlYXRlTGF5ZXIp
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAodHlwZXNf
dGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCk6CisgICAgICAgIChoZWFkZXJzX2Zvcl90
eXBlKToKKyAgICAgICAgKiBTaGFyZWQvSVBDVGVzdGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
SVBDVGVzdGVyOjpzdGFydE1lc3NhZ2VUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6aXNUZXN0
aW5nSVBDKToKKyAgICAgICAgKiBTaGFyZWQvSVBDVGVzdGVyLmg6CisgICAgICAgIChXZWJLaXQ6
OmlzVGVzdGluZ0lQQyk6CisgICAgICAgICogU2hhcmVkL09iamVjdElkZW50aWZpZXJSZWZlcmVu
Y2VUcmFja2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVm
ZXJlbmNlOjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYktpdDo6T2Jq
ZWN0SWRlbnRpZmllclJlZmVyZW5jZTo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U6OnZlcnNpb24gY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlOjpvcGVyYXRvcj09IGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTo6aXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJl
bmNlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVm
ZXJlbmNlOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVhZFJl
ZmVyZW5jZTo6T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UpOgorICAgICAgICAoV2ViS2l0
OjpPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZTo6aWRlbnRpZmllciBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlOjp2ZXJzaW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2U6OnJlZmVy
ZW5jZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJl
bmNlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVh
ZFJlZmVyZW5jZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldy
aXRlUmVmZXJlbmNlOjpnZW5lcmF0ZUZvckFkZCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElk
ZW50aWZpZXJXcml0ZVJlZmVyZW5jZTo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlKToK
KyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlOjppZGVudGlm
aWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJl
bmNlOjp2ZXJzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldy
aXRlUmVmZXJlbmNlOjpwZW5kaW5nUmVhZHMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmpl
Y3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U6OnJlZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTo6cmV0aXJlZFJlZmVyZW5jZSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVm
ZXJlbmNlOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJl
bmNlVHJhY2tlcjo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIpOgorICAgICAgICAo
V2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcjo6cmVhZCBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyOjp3cml0ZSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2Vy
OjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6YWRkKToKKyAgICAgICAgKFdl
YktpdDo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXVEY6OkRlZmF1bHRIYXNoPFdlYktpdDo6T2Jq
ZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPj46Omhhc2gpOgorICAgICAgICAoV1RGOjpEZWZhdWx0
SGFzaDxXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4+OjplcXVhbCk6CisgICAg
ICAgICogU2hhcmVkL1RocmVhZFNhZmVPYmplY3RIZWFwLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpUaHJlYWRTYWZlT2JqZWN0SGVhcDo6UmVmZXJlbmNlU3RhdGU6OlJlZmVyZW5jZVN0YXRl
KToKKyAgICAgICAgKFdlYktpdDo6SGVsZFR5cGU+OjpyZXRpcmUpOgorICAgICAgICAoV2ViS2l0
OjpIZWxkVHlwZT46OnJldGlyZVJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6OkhlbGRUeXBlPjo6
Y2xlYXIpOgorICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1w
bGVCeXRlUmFuZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNhbXBsZUJ5dGVSYW5nZTo6
cGxhdGZvcm1TYW1wbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRS
ZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaDoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQ
VVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludENvbXBvc2l0ZWRS
ZXN1bHRzVG9NZWRpYVNhbXBsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpwcm9wZXJ0aWVzKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpjcmVhdGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnJlbGVhc2VVbnVzZWQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlJlbW90ZVZpZGVvRnJhbWVQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6flJlbW90ZVZpZGVvRnJhbWVQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6aWRlbnRpZmll
ciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6d3JpdGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnJlYWQgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnByZXNlbnRhdGlv
blRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnBs
YXRmb3JtU2FtcGxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVBy
b3h5Ojp2aWRlb1JvdGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9G
cmFtZVByb3h5Ojp2aWRlb01pcnJvcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
VmlkZW9GcmFtZVByb3h5Ojp2aWRlb1BpeGVsRm9ybWF0IGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb0ZyYW1lIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpyZWxlYXNlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllczo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzOjpkZWNv
ZGUpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMv
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpOgorICAgICAgICAoV2Vi
S2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6On5TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIp
OgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1w
bGUpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmdwdVByb2Nl
c3NDb25uZWN0aW9uRGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI6OmRpc2Nvbm5lY3RHUFVQcm9jZXNzQ29ubmVjdGlvbklmTmVlZGVkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg6CisK
IDIwMjItMDItMTEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IEFkZCBzdXBwb3J0IHRvIHF1ZXJ5IGNhbWVyYSBhbmQgbWljcm9waG9uZSBwZXJtaXNzaW9ucwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xp
YndlYnJ0Yy5pT1MuZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRp
b25zL2xpYndlYnJ0Yy5pT1MuZXhwCmluZGV4IGNhNTQ3M2E2MmFkOThiZjZiNGUwY2ViNjAyODg1
NjQ1ZDkwZjdkMjMuLmJiYmMwNTgyN2NmNzRhOTNhMDAyZTUwNzQ3ODIxMTBmY2Y1Y2RkZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3
ZWJydGMuaU9TLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJh
dGlvbnMvbGlid2VicnRjLmlPUy5leHAKQEAgLTIyMyw4ICsyMjMsMTEgQEAgX19aTjZ3ZWJydGMy
MmNyZWF0ZUxvY2FsSDI2NURlY29kZXJFVTEzYmxvY2tfcG9pbnRlckZ2UDEwX19DVkJ1ZmZlcmpq
RQogX19aTjZ3ZWJydGMyMWNyZWF0ZUxvY2FsVlA5RGVjb2RlckVVMTNibG9ja19wb2ludGVyRnZQ
MTBfX0NWQnVmZmVyampFCiBfX1pONndlYnJ0YzE5cmVsZWFzZUxvY2FsRGVjb2RlckVQdgogX19a
TjZ3ZWJydGMxMWRlY29kZUZyYW1lRVB2alBLaG0KLV9fWk42d2VicnRjMjR2aWRlb0RlY29kZXJU
YXNrQ29tcGxldGVFUHZqUDEwX19DVkJ1ZmZlcmoKK19fWk42d2VicnRjMjR2aWRlb0RlY29kZXJU
YXNrQ29tcGxldGVFUHZqalAxMF9fQ1ZCdWZmZXIKK19fWk42d2VicnRjMjR2aWRlb0RlY29kZXJU
YXNrQ29tcGxldGVFUHZqalMwX1BGUDEwX19DVkJ1ZmZlclMwX0VQRnZTMF9FaWkKIF9fWk42d2Vi
cnRjMjRzZXRWaWRlb0RlY29kZXJDYWxsYmFja3NFUEZQdlJLTlNfMTRTZHBWaWRlb0Zvcm1hdEVF
UEZpUzBfRVBGaVMwX2pQS2htdHRFUEZpUzBfUzBfRQorX19aTjZ3ZWJydGMyNHRvV2ViUlRDVmlk
ZW9GcmFtZUJ1ZmZlckVQdlBGUDEwX19DVkJ1ZmZlclMwX0VQRnZTMF9FaWkKK19fWk42d2VicnRj
MjR2aWRlb0ZyYW1lQnVmZmVyUHJvdmlkZXJFUktOU18xMFZpZGVvRnJhbWVFCiBfX1pONndlYnJ0
YzE5c2V0RGVjb2RlckZyYW1lU2l6ZUVQdnR0CiBfX1pONndlYnJ0YzE4UnRwQ29kZWNDYXBhYmls
aXR5QzFFdgogX19aTjZ3ZWJydGMyNGVuY29kZXJWaWRlb1Rhc2tDb21wbGV0ZUVQdk5TXzE0Vmlk
ZW9Db2RlY1R5cGVFUEtobVJLTlNfMjJXZWJLaXRFbmNvZGVkRnJhbWVJbmZvRQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5p
T1NzaW0uZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xp
YndlYnJ0Yy5pT1NzaW0uZXhwCmluZGV4IGNhNTQ3M2E2MmFkOThiZjZiNGUwY2ViNjAyODg1NjQ1
ZDkwZjdkMjMuLmJiYmMwNTgyN2NmNzRhOTNhMDAyZTUwNzQ3ODIxMTBmY2Y1Y2RkZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJy
dGMuaU9Tc2ltLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJh
dGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKQEAgLTIyMyw4ICsyMjMsMTEgQEAgX19aTjZ3ZWJy
dGMyMmNyZWF0ZUxvY2FsSDI2NURlY29kZXJFVTEzYmxvY2tfcG9pbnRlckZ2UDEwX19DVkJ1ZmZl
cmpqRQogX19aTjZ3ZWJydGMyMWNyZWF0ZUxvY2FsVlA5RGVjb2RlckVVMTNibG9ja19wb2ludGVy
RnZQMTBfX0NWQnVmZmVyampFCiBfX1pONndlYnJ0YzE5cmVsZWFzZUxvY2FsRGVjb2RlckVQdgog
X19aTjZ3ZWJydGMxMWRlY29kZUZyYW1lRVB2alBLaG0KLV9fWk42d2VicnRjMjR2aWRlb0RlY29k
ZXJUYXNrQ29tcGxldGVFUHZqUDEwX19DVkJ1ZmZlcmoKK19fWk42d2VicnRjMjR2aWRlb0RlY29k
ZXJUYXNrQ29tcGxldGVFUHZqalAxMF9fQ1ZCdWZmZXIKK19fWk42d2VicnRjMjR2aWRlb0RlY29k
ZXJUYXNrQ29tcGxldGVFUHZqalMwX1BGUDEwX19DVkJ1ZmZlclMwX0VQRnZTMF9FaWkKIF9fWk42
d2VicnRjMjRzZXRWaWRlb0RlY29kZXJDYWxsYmFja3NFUEZQdlJLTlNfMTRTZHBWaWRlb0Zvcm1h
dEVFUEZpUzBfRVBGaVMwX2pQS2htdHRFUEZpUzBfUzBfRQorX19aTjZ3ZWJydGMyNHRvV2ViUlRD
VmlkZW9GcmFtZUJ1ZmZlckVQdlBGUDEwX19DVkJ1ZmZlclMwX0VQRnZTMF9FaWkKK19fWk42d2Vi
cnRjMjR2aWRlb0ZyYW1lQnVmZmVyUHJvdmlkZXJFUktOU18xMFZpZGVvRnJhbWVFCiBfX1pONndl
YnJ0YzE5c2V0RGVjb2RlckZyYW1lU2l6ZUVQdnR0CiBfX1pONndlYnJ0YzE4UnRwQ29kZWNDYXBh
YmlsaXR5QzFFdgogX19aTjZ3ZWJydGMyNGVuY29kZXJWaWRlb1Rhc2tDb21wbGV0ZUVQdk5TXzE0
VmlkZW9Db2RlY1R5cGVFUEtobVJLTlNfMjJXZWJLaXRFbmNvZGVkRnJhbWVJbmZvRQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0
Yy5tYWMuZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xp
YndlYnJ0Yy5tYWMuZXhwCmluZGV4IGNhNTQ3M2E2MmFkOThiZjZiNGUwY2ViNjAyODg1NjQ1ZDkw
ZjdkMjMuLjJhNTdkY2E1YWYzOGVkZjNlM2EwZTlhNGVmZWY2NGM4YTYzZTllNmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMu
bWFjLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMv
bGlid2VicnRjLm1hYy5leHAKQEAgLTIyMyw3ICsyMjMsMTAgQEAgX19aTjZ3ZWJydGMyMmNyZWF0
ZUxvY2FsSDI2NURlY29kZXJFVTEzYmxvY2tfcG9pbnRlckZ2UDEwX19DVkJ1ZmZlcmpqRQogX19a
TjZ3ZWJydGMyMWNyZWF0ZUxvY2FsVlA5RGVjb2RlckVVMTNibG9ja19wb2ludGVyRnZQMTBfX0NW
QnVmZmVyampFCiBfX1pONndlYnJ0YzE5cmVsZWFzZUxvY2FsRGVjb2RlckVQdgogX19aTjZ3ZWJy
dGMxMWRlY29kZUZyYW1lRVB2alBLaG0KLV9fWk42d2VicnRjMjR2aWRlb0RlY29kZXJUYXNrQ29t
cGxldGVFUHZqUDEwX19DVkJ1ZmZlcmoKK19fWk42d2VicnRjMjR2aWRlb0RlY29kZXJUYXNrQ29t
cGxldGVFUHZqalAxMF9fQ1ZCdWZmZXIKK19fWk42d2VicnRjMjR2aWRlb0RlY29kZXJUYXNrQ29t
cGxldGVFUHZqalMwX1BGUDEwX19DVkJ1ZmZlclMwX0VQRnZTMF9FaWkKK19fWk42d2VicnRjMjR0
b1dlYlJUQ1ZpZGVvRnJhbWVCdWZmZXJFUHZQRlAxMF9fQ1ZCdWZmZXJTMF9FUEZ2UzBfRWlpCitf
X1pONndlYnJ0YzI0dmlkZW9GcmFtZUJ1ZmZlclByb3ZpZGVyRVJLTlNfMTBWaWRlb0ZyYW1lRQog
X19aTjZ3ZWJydGMyNHNldFZpZGVvRGVjb2RlckNhbGxiYWNrc0VQRlB2UktOU18xNFNkcFZpZGVv
Rm9ybWF0RUVQRmlTMF9FUEZpUzBfalBLaG10dEVQRmlTMF9TMF9FCiBfX1pONndlYnJ0YzE5c2V0
RGVjb2RlckZyYW1lU2l6ZUVQdnR0CiBfX1pONndlYnJ0YzE4UnRwQ29kZWNDYXBhYmlsaXR5QzFF
dgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL1dlYktpdC9XZWJLaXREZWNvZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXIuaAppbmRleCBiODIzZWQzMmNi
MzNmYjNhNjc0YjQyOTg0MDhjMmFiOGY1Y2IwNmFkLi5lYzczMmY1Y2NiYjRkNWE4Zjg5NjU2NzM4
NWI1MWM3MTg2YjU3OWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXIuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXIu
aApAQCAtNTQsNyArNTQsOCBAQCB1c2luZyBWaWRlb0RlY29kZXJSZWdpc3RlckRlY29kZUNvbXBs
ZXRlQ2FsbGJhY2sgPSBpbnQzMl90KCopKFdlYktpdFZpZGVvRGVjb2Rlcgogdm9pZCBzZXRWaWRl
b0RlY29kZXJDYWxsYmFja3MoVmlkZW9EZWNvZGVyQ3JlYXRlQ2FsbGJhY2ssIFZpZGVvRGVjb2Rl
clJlbGVhc2VDYWxsYmFjaywgVmlkZW9EZWNvZGVyRGVjb2RlQ2FsbGJhY2ssIFZpZGVvRGVjb2Rl
clJlZ2lzdGVyRGVjb2RlQ29tcGxldGVDYWxsYmFjayk7CiAKIHN0ZDo6dW5pcXVlX3B0cjx3ZWJy
dGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IGNyZWF0ZVdlYktpdERlY29kZXJGYWN0b3J5KFdlYktp
dEgyNjUsIFdlYktpdFZQOSwgV2ViS2l0VlA5VlRCKTsKLXZvaWQgdmlkZW9EZWNvZGVyVGFza0Nv
bXBsZXRlKHZvaWQqIGNhbGxiYWNrLCB1aW50MzJfdCB0aW1lU3RhbXAsIENWUGl4ZWxCdWZmZXJS
ZWYsIHVpbnQzMl90IHRpbWVTdGFtcFJUUCk7Cit2b2lkIHZpZGVvRGVjb2RlclRhc2tDb21wbGV0
ZSh2b2lkKiBjYWxsYmFjaywgdWludDMyX3QgdGltZVN0YW1wLCB1aW50MzJfdCB0aW1lU3RhbXBS
VFAsIENWUGl4ZWxCdWZmZXJSZWYpOwordm9pZCB2aWRlb0RlY29kZXJUYXNrQ29tcGxldGUodm9p
ZCogY2FsbGJhY2ssIHVpbnQzMl90IHRpbWVTdGFtcCwgdWludDMyX3QgdGltZVN0YW1wUlRQLCB2
b2lkKiwgR2V0QnVmZmVyQ2FsbGJhY2ssIFJlbGVhc2VCdWZmZXJDYWxsYmFjaywgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KTsKIAogdXNpbmcgTG9jYWxEZWNvZGVyID0gdm9pZCo7CiB1c2luZyBMb2Nh
bERlY29kZXJDYWxsYmFjayA9IHZvaWQgKF4pKENWUGl4ZWxCdWZmZXJSZWYsIHVpbnQzMl90IHRp
bWVTdGFtcCwgdWludDMyX3QgdGltZVN0YW1wTnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXREZWNvZGVyLm1t
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9X
ZWJLaXREZWNvZGVyLm1tCmluZGV4IGFhNDE4ODQ4NmQxYWJjNzAxOTY0NWE4YjU4ZDlmNzNhNTA0
NmVjNTEuLmI3ZTA2N2YwYzlmNDVjM2E2M2UzNDY5OTlkOWYxMGMzMDljN2Q1NjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0RGVjb2Rlci5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXIubW0KQEAgLTM3LDYgKzM3LDcgQEAKICNp
bXBvcnQgInNkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVySDI2
NC5oIgogI2ltcG9ydCAic2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0Rl
Y29kZXJIMjY1LmgiCiAjaW1wb3J0ICJzZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JU
Q1ZpZGVvRGVjb2RlclZUQlZQOS5oIgorI2ltcG9ydCAic2RrL29iamMvbmF0aXZlL3NyYy9vYmpj
X2ZyYW1lX2J1ZmZlci5oIgogCiBAaW50ZXJmYWNlIFdLX1JUQ0xvY2FsVmlkZW9IMjY0SDI2NVZQ
OURlY29kZXIgOiBOU09iamVjdAogLSAoaW5zdGFuY2V0eXBlKWluaXRIMjY0RGVjb2RlcldpdGhD
YWxsYmFjazood2VicnRjOjpMb2NhbERlY29kZXJDYWxsYmFjayljYWxsYmFjazsKQEAgLTE3Myw3
ICsxNzQsNyBAQCBSZW1vdGVWaWRlb0RlY29kZXI6On5SZW1vdGVWaWRlb0RlY29kZXIoKQogICAg
IHZpZGVvRGVjb2RlckNhbGxiYWNrcygpLnJlbGVhc2VDYWxsYmFjayhtX2ludGVybmFsRGVjb2Rl
cik7CiB9CiAKLXZvaWQgdmlkZW9EZWNvZGVyVGFza0NvbXBsZXRlKHZvaWQqIGNhbGxiYWNrLCB1
aW50MzJfdCB0aW1lU3RhbXAsIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIHVpbnQzMl90
IHRpbWVTdGFtcFJUUCkKK3ZvaWQgdmlkZW9EZWNvZGVyVGFza0NvbXBsZXRlKHZvaWQqIGNhbGxi
YWNrLCB1aW50MzJfdCB0aW1lU3RhbXAsIHVpbnQzMl90IHRpbWVTdGFtcFJUUCwgQ1ZQaXhlbEJ1
ZmZlclJlZiBwaXhlbEJ1ZmZlcikKIHsKICAgICBhdXRvIHZpZGVvRnJhbWUgPSBWaWRlb0ZyYW1l
OjpCdWlsZGVyKCkuc2V0X3ZpZGVvX2ZyYW1lX2J1ZmZlcihwaXhlbEJ1ZmZlclRvRnJhbWUocGl4
ZWxCdWZmZXIpKQogICAgICAgICAuc2V0X3RpbWVzdGFtcF9ydHAodGltZVN0YW1wUlRQKQpAQCAt
MTg1LDYgKzE4NiwxOCBAQCB2b2lkIHZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZSh2b2lkKiBjYWxs
YmFjaywgdWludDMyX3QgdGltZVN0YW1wLCBDVlBpeGVsQnVmZmVyUgogICAgIHN0YXRpY19jYXN0
PERlY29kZWRJbWFnZUNhbGxiYWNrKj4oY2FsbGJhY2spLT5EZWNvZGVkKHZpZGVvRnJhbWUpOwog
fQogCit2b2lkIHZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZSh2b2lkKiBjYWxsYmFjaywgdWludDMy
X3QgdGltZVN0YW1wLCB1aW50MzJfdCB0aW1lU3RhbXBSVFAsIHZvaWQqIHBvaW50ZXIsIEdldEJ1
ZmZlckNhbGxiYWNrIGdldEJ1ZmZlckNhbGxiYWNrLCBSZWxlYXNlQnVmZmVyQ2FsbGJhY2sgcmVs
ZWFzZUJ1ZmZlckNhbGxiYWNrLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgYXV0byB2
aWRlb0ZyYW1lID0gVmlkZW9GcmFtZTo6QnVpbGRlcigpLnNldF92aWRlb19mcmFtZV9idWZmZXIo
dG9XZWJSVENWaWRlb0ZyYW1lQnVmZmVyKHBvaW50ZXIsIGdldEJ1ZmZlckNhbGxiYWNrLCByZWxl
YXNlQnVmZmVyQ2FsbGJhY2ssIHdpZHRoLCBoZWlnaHQpKQorICAgICAgICAuc2V0X3RpbWVzdGFt
cF9ydHAodGltZVN0YW1wUlRQKQorICAgICAgICAuc2V0X3RpbWVzdGFtcF9tcygwKQorICAgICAg
ICAuc2V0X3JvdGF0aW9uKChWaWRlb1JvdGF0aW9uKVJUQ1ZpZGVvUm90YXRpb25fMCkKKyAgICAg
ICAgLmJ1aWxkKCk7CisgICAgdmlkZW9GcmFtZS5zZXRfdGltZXN0YW1wKHRpbWVTdGFtcCk7CisK
KyAgICBzdGF0aWNfY2FzdDxEZWNvZGVkSW1hZ2VDYWxsYmFjayo+KGNhbGxiYWNrKS0+RGVjb2Rl
ZCh2aWRlb0ZyYW1lKTsKK30KKwogYm9vbCBSZW1vdGVWaWRlb0RlY29kZXI6OkNvbmZpZ3VyZShj
b25zdCBTZXR0aW5ncyYpCiB7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxp
dGllcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dl
YktpdC9XZWJLaXRVdGlsaXRpZXMuaAppbmRleCBhMjNmYWE2ZWQ1N2RmN2MzMjJjNjcwYjc3MzVj
YWI4M2M2NjE1OTM0Li4yZWY4YTFlOTE1Mzg2MTFlZmU1YWY3MzRmODBjZDdhOWJhNGY1M2M2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
V2ViS2l0L1dlYktpdFV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmgKQEAgLTUyLDQgKzUy
LDggQEAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRlb0Zy
YW1lJikgQ0ZfUkVUVVJOU19SRVRBSU5FRDsKIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZp
ZGVvRnJhbWVCdWZmZXI+IHBpeGVsQnVmZmVyVG9GcmFtZShDVlBpeGVsQnVmZmVyUmVmKTsKIGJv
b2wgY29weVZpZGVvRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYsIHVpbnQ4X3QqKTsKIAordHlwZWRl
ZiBDVlBpeGVsQnVmZmVyUmVmICgqR2V0QnVmZmVyQ2FsbGJhY2spKHZvaWQqKTsKK3R5cGVkZWYg
dm9pZCAoKlJlbGVhc2VCdWZmZXJDYWxsYmFjaykodm9pZCopOworcnRjOjpzY29wZWRfcmVmcHRy
PHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gdG9XZWJSVENWaWRlb0ZyYW1lQnVmZmVyKHZvaWQq
LCBHZXRCdWZmZXJDYWxsYmFjaywgUmVsZWFzZUJ1ZmZlckNhbGxiYWNrLCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpOwordm9pZCogdmlkZW9GcmFtZUJ1ZmZlclByb3ZpZGVyKGNvbnN0IFZpZGVvRnJh
bWUmKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW0KaW5k
ZXggN2Y2ZmJiMTFlNzY5M2FkNjZkZjkyNGI5M2Y0ZDI4ZTdlZTg5ZTBhOC4uNjJmNjI0YzQ5NzZm
YTYxOGQ4MGNkMTQwYTNmZDkxZDZiYTllOTA5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW0K
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXRVdGlsaXRpZXMubW0KQEAgLTUyLDYgKzUyLDIwIEBAIHJ0Yzo6c2NvcGVkX3JlZnB0
cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+IHBpeGVsQnVmZmVyVG9GcmFtZShDVlBpeGVsQnVm
ZmVyUmVmCiAgICAgcmV0dXJuIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8T2JqQ0ZyYW1lQnVm
ZmVyPihmcmFtZUJ1ZmZlcik7CiB9CiAKK3J0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVv
RnJhbWVCdWZmZXI+IHRvV2ViUlRDVmlkZW9GcmFtZUJ1ZmZlcih2b2lkKiBwb2ludGVyLCBHZXRC
dWZmZXJDYWxsYmFjayBnZXRCdWZmZXJDYWxsYmFjaywgUmVsZWFzZUJ1ZmZlckNhbGxiYWNrIHJl
bGVhc2VCdWZmZXJDYWxsYmFjaywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIHJldHVy
biBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PE9iakNGcmFtZUJ1ZmZlcj4oT2JqQ0ZyYW1lQnVm
ZmVyOjpCdWZmZXJQcm92aWRlciB7IHBvaW50ZXIsIGdldEJ1ZmZlckNhbGxiYWNrLCByZWxlYXNl
QnVmZmVyQ2FsbGJhY2sgfSwgd2lkdGgsIGhlaWdodCk7Cit9CisKK3ZvaWQqIHZpZGVvRnJhbWVC
dWZmZXJQcm92aWRlcihjb25zdCBWaWRlb0ZyYW1lJiBmcmFtZSkKK3sKKyAgICBhdXRvIGJ1ZmZl
ciA9IGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpOworICAgIGlmIChidWZmZXItPnR5cGUoKSAh
PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprTmF0aXZlKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxPYmpDRnJhbWVCdWZmZXIqPihidWZmZXIuZ2V0
KCkpLT5mcmFtZV9idWZmZXJfcHJvdmlkZXIoKTsKK30KKwogc3RhdGljIGJvb2wgQ29weVZpZGVv
RnJhbWVUb1BpeGVsQnVmZmVyKGNvbnN0IHdlYnJ0Yzo6STQyMEJ1ZmZlckludGVyZmFjZSogZnJh
bWUsIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxfYnVmZmVyKSB7CiAgICAgUlRDX0RDSEVDSyhwaXhl
bF9idWZmZXIpOwogICAgIFJUQ19EQ0hFQ0soQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlw
ZShwaXhlbF9idWZmZXIpID09IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJG
dWxsUmFuZ2UgfHwgQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShwaXhlbF9idWZmZXIp
ID09IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJWaWRlb1JhbmdlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL25hdGl2ZS9zcmMvb2JqY19mcmFtZV9idWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2ZS9zcmMvb2JqY19mcmFtZV9idWZm
ZXIuaAppbmRleCBmOTQxZGFkNmU0ZmU1NjkwMGVjYTkwNTBjMGE4MzRlZGI4NTVmNjgxLi4zZDJl
YmQ3Nzk2M2FiY2E0NGNjZWZlMDczZjExMWJkNWI1MWVkMjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUvc3JjL29i
amNfZnJhbWVfYnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvbmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5oCkBAIC0xNCwx
NiArMTQsMjcgQEAKICNpbXBvcnQgPENvcmVWaWRlby9Db3JlVmlkZW8uaD4KIAogI2luY2x1ZGUg
ImNvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lX2J1ZmZlci5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL3N5bmNocm9uaXphdGlvbi9tdXRleC5oIgogCiBAcHJvdG9jb2wgUlRDVmlkZW9GcmFt
ZUJ1ZmZlcjsKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKK3R5cGVkZWYgQ1ZQaXhlbEJ1ZmZlclJl
ZiAoKkdldEJ1ZmZlckNhbGxiYWNrKSh2b2lkKik7Cit0eXBlZGVmIHZvaWQgKCpSZWxlYXNlQnVm
ZmVyQ2FsbGJhY2spKHZvaWQqKTsKKwogY2xhc3MgT2JqQ0ZyYW1lQnVmZmVyIDogcHVibGljIFZp
ZGVvRnJhbWVCdWZmZXIgewogIHB1YmxpYzoKICAgZXhwbGljaXQgT2JqQ0ZyYW1lQnVmZmVyKGlk
PFJUQ1ZpZGVvRnJhbWVCdWZmZXI+KTsKICAgfk9iakNGcmFtZUJ1ZmZlcigpIG92ZXJyaWRlOwog
CisgIHN0cnVjdCBCdWZmZXJQcm92aWRlciB7CisgICAgdm9pZCAqcG9pbnRlciB7IG51bGxwdHIg
fTsKKyAgICBHZXRCdWZmZXJDYWxsYmFjayBnZXRCdWZmZXIgeyBudWxscHRyIH07CisgICAgUmVs
ZWFzZUJ1ZmZlckNhbGxiYWNrIHJlbGVhc2VCdWZmZXIgeyBudWxscHRyIH07CisgIH07CisgIE9i
akNGcmFtZUJ1ZmZlcihCdWZmZXJQcm92aWRlciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKwog
ICBUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZTsKIAogICBpbnQgd2lkdGgoKSBjb25zdCBvdmVy
cmlkZTsKQEAgLTMyLDExICs0MywxNCBAQCBjbGFzcyBPYmpDRnJhbWVCdWZmZXIgOiBwdWJsaWMg
VmlkZW9GcmFtZUJ1ZmZlciB7CiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJm
YWNlPiBUb0k0MjAoKSBvdmVycmlkZTsKIAogICBpZDxSVENWaWRlb0ZyYW1lQnVmZmVyPiB3cmFw
cGVkX2ZyYW1lX2J1ZmZlcigpIGNvbnN0OworICB2b2lkKiBmcmFtZV9idWZmZXJfcHJvdmlkZXIo
KSB7IHJldHVybiBmcmFtZV9idWZmZXJfcHJvdmlkZXJfLnBvaW50ZXI7IH0KIAogIHByaXZhdGU6
CiAgIGlkPFJUQ1ZpZGVvRnJhbWVCdWZmZXI+IGZyYW1lX2J1ZmZlcl87CisgIEJ1ZmZlclByb3Zp
ZGVyIGZyYW1lX2J1ZmZlcl9wcm92aWRlcl87CiAgIGludCB3aWR0aF87CiAgIGludCBoZWlnaHRf
OworICBtdXRhYmxlIHdlYnJ0Yzo6TXV0ZXggbXV0ZXhfOwogfTsKIAogaWQ8UlRDVmlkZW9GcmFt
ZUJ1ZmZlcj4gVG9PYmpDVmlkZW9GcmFtZUJ1ZmZlcigKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2ZS9zcmMvb2JqY19m
cmFtZV9idWZmZXIubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVyLm1tCmluZGV4IGEzZDliYTgx
MmRhNTlmODU3MmE1MzNhZDYyYzUyYWIwYWMwYTE4YzIuLjJmNTZhY2IyOTQzYmQ0YzRkN2RmYjVk
YjAyMWEwMDkxODI4MDdhODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2ZS9zcmMvb2JqY19mcmFtZV9idWZmZXIubW0K
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
bmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5tbQpAQCAtMTIsNiArMTIsNyBAQAogCiAjaW1w
b3J0ICJiYXNlL1JUQ1ZpZGVvRnJhbWVCdWZmZXIuaCIKICNpbXBvcnQgInNkay9vYmpjL2FwaS92
aWRlb19mcmFtZV9idWZmZXIvUlRDTmF0aXZlSTQyMEJ1ZmZlcitQcml2YXRlLmgiCisjaW1wb3J0
ICJzZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVENDVlBpeGVsQnVmZmVy
LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC01NSwxMCArNTYsMTUgQEAgY2xhc3MgT2Jq
Q0k0MjBGcmFtZUJ1ZmZlciA6IHB1YmxpYyBJNDIwQnVmZmVySW50ZXJmYWNlIHsKIE9iakNGcmFt
ZUJ1ZmZlcjo6T2JqQ0ZyYW1lQnVmZmVyKGlkPFJUQ1ZpZGVvRnJhbWVCdWZmZXI+IGZyYW1lX2J1
ZmZlcikKICAgICA6IGZyYW1lX2J1ZmZlcl8oZnJhbWVfYnVmZmVyKSwgd2lkdGhfKGZyYW1lX2J1
ZmZlci53aWR0aCksIGhlaWdodF8oZnJhbWVfYnVmZmVyLmhlaWdodCkge30KIAorT2JqQ0ZyYW1l
QnVmZmVyOjpPYmpDRnJhbWVCdWZmZXIoQnVmZmVyUHJvdmlkZXIgcHJvdmlkZXIsIGludCB3aWR0
aCwgaW50IGhlaWdodCkKKyAgICA6IGZyYW1lX2J1ZmZlcl9wcm92aWRlcl8ocHJvdmlkZXIpLCB3
aWR0aF8od2lkdGgpLCBoZWlnaHRfKGhlaWdodCkgeyB9CisKIE9iakNGcmFtZUJ1ZmZlcjo6fk9i
akNGcmFtZUJ1ZmZlcigpIHsKICNpZiBkZWZpbmVkKFdFQlJUQ19XRUJLSVRfQlVJTEQpCiAgIFtm
cmFtZV9idWZmZXJfIGNsb3NlXTsKICNlbmRpZgorICBpZiAoZnJhbWVfYnVmZmVyX3Byb3ZpZGVy
Xy5yZWxlYXNlQnVmZmVyKQorICAgIGZyYW1lX2J1ZmZlcl9wcm92aWRlcl8ucmVsZWFzZUJ1ZmZl
cihmcmFtZV9idWZmZXJfcHJvdmlkZXJfLnBvaW50ZXIpOwogfQogCiBWaWRlb0ZyYW1lQnVmZmVy
OjpUeXBlIE9iakNGcmFtZUJ1ZmZlcjo6dHlwZSgpIGNvbnN0IHsKQEAgLTc1LDEyICs4MSwyMSBA
QCBpbnQgT2JqQ0ZyYW1lQnVmZmVyOjpoZWlnaHQoKSBjb25zdCB7CiAKIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiBPYmpDRnJhbWVCdWZmZXI6OlRvSTQyMCgpIHsKICAg
cnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IGJ1ZmZlciA9Ci0gICAgICBu
ZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PE9iakNJNDIwRnJhbWVCdWZmZXI+KFtmcmFtZV9idWZm
ZXJfIHRvSTQyMF0pOworICAgICAgbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxPYmpDSTQyMEZy
YW1lQnVmZmVyPihbd3JhcHBlZF9mcmFtZV9idWZmZXIoKSB0b0k0MjBdKTsKIAogICByZXR1cm4g
YnVmZmVyOwogfQogCiBpZDxSVENWaWRlb0ZyYW1lQnVmZmVyPiBPYmpDRnJhbWVCdWZmZXI6Ondy
YXBwZWRfZnJhbWVfYnVmZmVyKCkgY29uc3QgeworICBpZiAoZnJhbWVfYnVmZmVyXykKKyAgICBy
ZXR1cm4gZnJhbWVfYnVmZmVyXzsKKworICB7CisgICAgd2VicnRjOjpNdXRleExvY2sgbG9jaygm
bXV0ZXhfKTsKKyAgICBpZiAoIWZyYW1lX2J1ZmZlcl8gJiYgZnJhbWVfYnVmZmVyX3Byb3ZpZGVy
Xy5nZXRCdWZmZXIpCisgICAgICBjb25zdF9jYXN0PE9iakNGcmFtZUJ1ZmZlcio+KHRoaXMpLT5m
cmFtZV9idWZmZXJfID0gW1tSVENDVlBpeGVsQnVmZmVyIGFsbG9jXSBpbml0V2l0aFBpeGVsQnVm
ZmVyOmZyYW1lX2J1ZmZlcl9wcm92aWRlcl8uZ2V0QnVmZmVyKGZyYW1lX2J1ZmZlcl9wcm92aWRl
cl8ucG9pbnRlcildOworICB9CisKICAgcmV0dXJuIGZyYW1lX2J1ZmZlcl87CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVy
bmFsLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJ
bnRlcm5hbC55YW1sCmluZGV4IDkxZWM0ZjIxNzExNjc0MjMyMjMxNTExYzE4MTRmYmVjODYxNWVk
NWIuLjhkM2VlZDEzOTU0ZmE5MDJjMjk2ODc0MDFjOWM4NWNiNzFmNzM2NzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlh
bWwKKysrIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50
ZXJuYWwueWFtbApAQCAtMTAyMSw2ICsxMDIxLDE5IEBAIFdlYlJUQ1BsYXRmb3JtQ29kZWNzSW5H
UFVQcm9jZXNzRW5hYmxlZDoKICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVsdDogZmFsc2UKIAor
V2ViUlRDUmVtb3RlVmlkZW9GcmFtZUVuYWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAgaHVtYW5SZWFk
YWJsZU5hbWU6ICJXZWJSVEMgUmVtb3RlIFZpZGVvIEZyYW1lIgorICBodW1hblJlYWRhYmxlRGVz
Y3JpcHRpb246ICJFbmFibGUgV2ViUlRDIFJlbW90ZSBWaWRlbyBGcmFtZSIKKyAgY29uZGl0aW9u
OiBFTkFCTEUoV0VCX1JUQykKKyAgZGVmYXVsdFZhbHVlOgorICAgIFdlYktpdExlZ2FjeToKKyAg
ICAgIGRlZmF1bHQ6IGZhbHNlCisgICAgV2ViS2l0OgorICAgICAgZGVmYXVsdDogZmFsc2UKKyAg
ICBXZWJDb3JlOgorICAgICAgZGVmYXVsdDogZmFsc2UKKwogV2ViU1FMRW5hYmxlZDoKICAgdHlw
ZTogYm9vbAogICBodW1hblJlYWRhYmxlTmFtZTogIkVuYWJsZSBXZWJTUUwiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCAwOGEwMWU1NzhkOGEzNTI3ZTZmZWU0NDJjZTkwODExYWY1YmFmYWMyLi44MDUw
MDEzZWQ2NWY0MGM4OGYwNDM2MTI3ODAyNWQ0NjA0ZmIzMDFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTEzNDksNiArMTM0OSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBwbGF0Zm9ybS9Vc2VyQWdlbnQuaAogICAgIHBsYXRmb3JtL1VzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24uaAogICAgIHBsYXRmb3JtL1ZhbGlkYXRpb25CdWJibGUuaAorICAgIHBs
YXRmb3JtL1ZpZGVvRnJhbWUuaAogICAgIHBsYXRmb3JtL1ZpZGVvRnJhbWVNZXRhZGF0YS5oCiAg
ICAgcGxhdGZvcm0vVmlkZW9TYW1wbGVNZXRhZGF0YS5oCiAgICAgcGxhdGZvcm0vV2ViR0xTdGF0
ZVRyYWNrZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAxZWRkNzE4MzhjZDI3ZDM3YzI5ZDc5ZjRhYjMz
YThiZDc1ZTdhNThhLi42MTQyZDI0M2RiMjg4MGM1MWVmZWY1OGEwNGM5YjBiYTc1M2Y2MDQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dApAQCAtMTkyNiw2ICsxOTI2LDcgQEAgcGxhdGZvcm0vVGhyZWFkR2xvYmFs
RGF0YS5jcHAKIHBsYXRmb3JtL1RocmVhZFRpbWVycy5jcHAKIHBsYXRmb3JtL1RpbWVyLmNwcAog
cGxhdGZvcm0vVXNlckFjdGl2aXR5LmNwcAorcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKIHBsYXRm
b3JtL1dlYkNvcmVDcm9zc1RocmVhZENvcGllci5jcHAKIHBsYXRmb3JtL1dlYkdMU3RhdGVUcmFj
a2VyLmNwcAogcGxhdGZvcm0vV2lkZ2V0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU2MzdmM2ZkNjExZWQwYTFmN2JhNWNl
YmIwMTY1ZDU2NDNhM2VkYTUuLjE2NGU1MmFlNTVmMjQzZjI1NDVkMDkzMDY0OTg5OGRjNzc1NDY0
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTI0MDcsNiArMjQwNyw3IEBACiAJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFBQyAv
KiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjEwMzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0
R0xDVi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTdCMTAzMzlGMjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlDMjU0
OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjQ0MTBFMTI3OTU4RkM1MDAw
QjRGOEEgLyogTWVkaWFTYW1wbGVWaWRlb0ZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ0MTBERjI3OTU4RkM0MDAwQjRGOEEgLyogTWVkaWFT
YW1wbGVWaWRlb0ZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJN0I1QTNEQUYyN0FCRjhDNTAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNUEzREFEMjdBQkY4
QzQwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I2MDk0REQyNzBDNDRCRDAwNjQ4MzVDIC8qIEFOR0xFVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogQU5HTEVVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjZEQzgxOTI1NzEyRTkyMDAz
ODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNkRDODE3MjU3MTJFOTIwMDM4
MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNzIwQjBDMjc0M0RCQTcw
MDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzIwQjBBMjc0M0RCQTYw
MDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTE1MjAsNiArMTE1
MjEsOCBAQAogCQk3QjE2MTkxMDI3MTk4ODBFMDBDNDBFQUMgLyogV2ViUHJvY2Vzc0dyYXBoaWNz
Q29udGV4dEdMQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQcm9jZXNzR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I0NDEw
REYyNzk1OEZDNDAwMEI0RjhBIC8qIE1lZGlhU2FtcGxlVmlkZW9GcmFtZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNhbXBsZVZpZGVvRnJhbWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I0NDEwRTIyNzk1OEZERTAwMEI0RjhBIC8qIE1lZGlhU2Ft
cGxlVmlkZW9GcmFtZUFWRi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhU2FtcGxlVmlk
ZW9GcmFtZUFWRi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQUIyN0FC
RjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVmlkZW9GcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdCNUEzREFEMjdBQkY4QzQwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJm
YWNlU3dhcENoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdy
YXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdM
SU9TdXJmYWNlU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdy
YXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0zMDE1MSw2ICszMDE1NCw4IEBACiAJCQkJQTNBRjlEODIyMDMyNTMyNDAwNkNB
RDA2IC8qIFVzZXJBZ2VudC5oICovLAogCQkJCTcxQzkxNjA3MUQxNDgzQTMwMEFDQTQ3RCAvKiBV
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmggKi8sCiAJCQkJODNDNDVCOEQxREMyQjY3QzAw
ODg3MUJBIC8qIFZhbGlkYXRpb25CdWJibGUuaCAqLywKKwkJCQk3QjVBM0RBQjI3QUJGOEM0MDA2
QzZGOTcgLyogVmlkZW9GcmFtZS5jcHAgKi8sCisJCQkJN0I1QTNEQUQyN0FCRjhDNDAwNkM2Rjk3
IC8qIFZpZGVvRnJhbWUuaCAqLywKIAkJCQk0MURFRUZCNDI3MTlCQTE5MDBDQjhENzQgLyogVmlk
ZW9GcmFtZU1ldGFkYXRhLmggKi8sCiAJCQkJNDE2MDQ5MzEyNzQzQjBFNzAwQTg2RkEwIC8qIFZp
ZGVvU2FtcGxlTWV0YWRhdGEuaCAqLywKIAkJCQk1MTVGNzk1MTFDRkNBM0M3MDBDQ0VEOTMgLyog
V2ViQ29yZUNyb3NzVGhyZWFkQ29waWVyLmNwcCAqLywKQEAgLTM3ODI3LDYgKzM3ODMyLDcgQEAK
IAkJCQkwRjFBMEMzODIyOUE0ODE4MDBEMzdBREIgLyogVmVsb2NpdHlEYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0EyNTcxNTEyOTNDMDEwMDA3QTI2M0QgLyogVmVydGljYWxQb3NpdGlvbkNh
Y2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNFRUYzQjI1Nzk5RkExMDA2NTYzQkIgLyogVmlk
ZW9Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjVBM0RBRjI3QUJGOEM1MDA2
QzZGOTcgLyogVmlkZW9GcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFERUVGQjYyNzE5QkEx
QTAwQ0I4RDc0IC8qIFZpZGVvRnJhbWVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFE
RUVGQjAyNzE5QjI5MDAwQ0I4RDc0IC8qIFZpZGVvRnJhbWVSZXF1ZXN0Q2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUyQjBENEMwMUM1N0ZENjYwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3Jl
ZW5DaGFuZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVk
aWFTYW1wbGUuaAppbmRleCAxODM5OTcyMjYwZjcwZTAwNzM2Nzk3OTE3MjI2MjVmNTZiMjUzZjA4
Li5iMDY1MDRmNTdlZTkzNmI4ZTE5ODg3MWYzNTcyNzY1MzUzMDRhZmQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9tU3RyaW5nLmg+CiAKIHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVy
ICpDTVNhbXBsZUJ1ZmZlclJlZjsKK3R5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNWUGl4ZWxC
dWZmZXJSZWY7CiB0eXBlZGVmIHN0cnVjdCBfR3N0U2FtcGxlIEdzdFNhbXBsZTsKIHR5cGVkZWYg
c3RydWN0IE9wYXF1ZU1UUGx1Z2luQnl0ZVNvdXJjZSAqTVRQbHVnaW5CeXRlU291cmNlUmVmOwog
dHlwZWRlZiBjb25zdCBzdHJ1Y3Qgb3BhcXVlQ01Gb3JtYXREZXNjcmlwdGlvbiAqQ01Gb3JtYXRE
ZXNjcmlwdGlvblJlZjsKQEAgLTQ5LDkgKzUwLDEwIEBAIHN0cnVjdCBQbGF0Zm9ybVNhbXBsZSB7
CiAgICAgICAgIENNU2FtcGxlQnVmZmVyVHlwZSwKICAgICAgICAgR1N0cmVhbWVyU2FtcGxlVHlw
ZSwKICAgICAgICAgQnl0ZVJhbmdlU2FtcGxlVHlwZSwKKyAgICAgICAgUmVtb3RlVmlkZW9GcmFt
ZVByb3h5VHlwZSwgLy8gRklYTUU6IFRvIGJlIHJlbW92ZWQgd2hlbiBWaWRlb0ZyYW1lIGlzIG5v
dCBNZWRpYVNhbXBsZS4KICAgICB9IHR5cGU7CiAgICAgdW5pb24gewotICAgICAgICBNb2NrU2Ft
cGxlQm94KiBtb2NrU2FtcGxlQm94OworICAgICAgICBjb25zdCBNb2NrU2FtcGxlQm94KiBtb2Nr
U2FtcGxlQm94OwogICAgICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBjbVNhbXBsZUJ1ZmZlcjsKICAg
ICAgICAgR3N0U2FtcGxlKiBnc3RTYW1wbGU7CiAgICAgICAgIHN0ZDo6cGFpcjxNVFBsdWdpbkJ5
dGVTb3VyY2VSZWYsIENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGJ5dGVSYW5nZVNhbXBsZTsKQEAg
LTY2LDcgKzY4LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTWVkaWFUaW1lIGRlY29kZVRpbWUo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBBdG9tU3RyaW5nIHRyYWNrSUQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHNldFRyYWNrSUQoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgc2l6ZV90
IHNpemVJbkJ5dGVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgRmxvYXRTaXplIHByZXNlbnRh
dGlvblNpemUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9mZnNldFRpbWVzdGFtcHNC
eShjb25zdCBNZWRpYVRpbWUmKSA9IDA7CkBAIC05MCw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgSGFzU3luY0luZm8gPSAxIDw8IDMsCiAgICAgfTsKICAgICB2aXJ0dWFsIFNhbXBsZUZsYWdz
IGZsYWdzKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1T
YW1wbGUoKSA9IDA7CisgICAgdmlydHVhbCBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgp
IGNvbnN0ID0gMDsKIAogICAgIHN0cnVjdCBCeXRlUmFuZ2UgewogICAgICAgICBzaXplX3QgYnl0
ZU9mZnNldCB7IDAgfTsKQEAgLTExMCw2ICsxMTEsOSBAQCBwdWJsaWM6CiAjaWYgZGVmaW5lZChF
TkFCTEVfVklERU8pICYmIEVOQUJMRV9WSURFTwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxN
ZWRpYVNhbXBsZVZpZGVvRnJhbWU+IHZpZGVvRnJhbWUoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51
bGxvcHQ7IH07CiAjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2aXJ0dWFsIENWUGl4
ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9OworI2Vu
ZGlmCiAKICAgICBib29sIGlzU3luYygpIGNvbnN0IHsgcmV0dXJuIGZsYWdzKCkgJiBJc1N5bmM7
IH0KICAgICBib29sIGlzTm9uRGlzcGxheWluZygpIGNvbnN0IHsgcmV0dXJuIGZsYWdzKCkgJiBJ
c05vbkRpc3BsYXlpbmc7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Zp
ZGVvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjA3NjliYTVlNTRhODgwYmU2MzkwOWE5Y2RhMDMyODdhMzdkM2NmNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwCkBAIC0w
LDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlZpZGVvRnJhbWUuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworVmlkZW9GcmFtZTo6VmlkZW9GcmFtZSgpID0gZGVmYXVsdDsKKworVmlkZW9G
cmFtZTo6flZpZGVvRnJhbWUoKSA9IGRlZmF1bHQ7CisKK01lZGlhVGltZSBWaWRlb0ZyYW1lOjpk
ZWNvZGVUaW1lKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4geyB9OworfQorCitNZWRpYVRpbWUgVmlkZW9GcmFtZTo6ZHVyYXRpb24oKSBjb25zdAorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7IH07Cit9CisKK0F0b21TdHJp
bmcgVmlkZW9GcmFtZTo6dHJhY2tJRCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworc2l6ZV90IFZpZGVvRnJhbWU6OnNpemVJbkJ5dGVz
KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30K
Kwordm9pZCBWaWRlb0ZyYW1lOjpvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBWaWRlb0ZyYW1lOjpzZXRU
aW1lc3RhbXBzKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYpCit7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2Jvb2wgVmlkZW9GcmFtZTo6aXNEaXZpc2FibGUoKSBj
b25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30K
Kworc3RkOjpwYWlyPFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4sIFJlZlB0cjxXZWJDb3Jl
OjpNZWRpYVNhbXBsZT4+IFZpZGVvRnJhbWU6OmRpdmlkZShjb25zdCBNZWRpYVRpbWUmLCBVc2VF
bmRUaW1lKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7IG51bGxw
dHIsIG51bGxwdHIgfTsKK30KKworUmVmPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBWaWRlb0ZyYW1l
OjpjcmVhdGVOb25EaXNwbGF5aW5nQ29weSgpIGNvbnN0Cit7CisgICAgQ1JBU0goKTsKK30KKwor
TWVkaWFTYW1wbGU6OlNhbXBsZUZsYWdzIFZpZGVvRnJhbWU6OmZsYWdzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gTWVkaWFTYW1wbGU6OlNhbXBsZUZsYWdzOjpOb25lOworfQorCitzdGQ6Om9wdGlv
bmFsPE1lZGlhU2FtcGxlOjpCeXRlUmFuZ2U+IFZpZGVvRnJhbWU6OmJ5dGVSYW5nZSgpIGNvbnN0
Cit7CisgICAgLy8gRklYTUU6IFJlbW92ZSBmcm9tIHRoZSBiYXNlIGNsYXNzLgorICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgVmlk
ZW9GcmFtZTo6ZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Cit7Cit9CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjYzMWZkMTNlMjJlMzEy
MjY2NTAwMTRiYWY3OGRlYTkwY2FhNmZiMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVk
aWFTYW1wbGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBBIGNsYXNzIHJlcHJlc2Vu
dGluZyBhIHZpZGVvIGZyYW1lIGZyb20gYSBkZWNvZGVyLCBjYXB0dXJlIHNvdXJjZSwgb3Igc2lt
aWxhci4KKy8vIEZJWE1FOiBDdXJyZW50bHkgZm9yIGltcGxlbWVudGF0aW9uIHB1cnBvc2VzIGlu
aGVydHMgZnJvbSBNZWRpYVNhbXBsZSB1bnRpbCBjYXB0dXJlIGNvZGUKKy8vIHN0b3BzIHJlZmVy
cmluZyB0byBNZWRpYVNhbXBsZQorY2xhc3MgVmlkZW9GcmFtZSA6IHB1YmxpYyBNZWRpYVNhbXBs
ZSB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgflZpZGVvRnJhbWUoKTsKKworcHJvdGVj
dGVkOgorICAgIFdFQkNPUkVfRVhQT1JUIFZpZGVvRnJhbWUoKTsKKworcHJpdmF0ZToKKyAgICAv
LyBGSVhNRTogVGhlc2UgYXJlIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciB0aGVzZSBvYmpl
Y3RzLgorICAgIC8vIFdlYkNvcmU6Ok1lZGlhU2FtcGxlIG92ZXJyaWRlcy4KKyAgICBXRUJDT1JF
X0VYUE9SVCBNZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVf
RVhQT1JUIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQ
T1JUIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JU
IHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0VGltZXN0YW1wcyhjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRp
YVRpbWUmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRGl2aXNhYmxlKCkgY29u
c3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFJlZlB0cjxNZWRpYVNhbXBs
ZT4sIFJlZlB0cjxNZWRpYVNhbXBsZT4+IGRpdmlkZShjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRh
dGlvblRpbWUsIFVzZUVuZFRpbWUgPSBVc2VFbmRUaW1lOjpEb05vdFVzZSkgZmluYWw7CisgICAg
V0VCQ09SRV9FWFBPUlQgUmVmPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBjcmVhdGVOb25EaXNwbGF5
aW5nQ29weSgpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIFNhbXBsZUZsYWdzIGZs
YWdzKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxCeXRl
UmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYpIGNvbnN0IGZpbmFsOworfTsKKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5o
CmluZGV4IGNkMTBkOWMwNWNiOGExZDg2ZTY0M2Q1YTNmYWFhZTVjNzRmMDg3OTkuLmYxZGQ5MTkw
MWY4NDllMDlhMjQ2NjQ5ZmNkZGE3OGQwZGRjOWFjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaApAQCAtNTQsNiArNTQs
NyBAQCBwdWJsaWM6CiAgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBpbWFnZUJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7IH0KIAogICAgIHZvaWQgc2V0T3duZXJzaGlwSWRl
bnRpdHkoY29uc3QgUHJvY2Vzc0lkZW50aXR5Jik7CisgICAgdm9pZCBjbGVhcklPU3VyZmFjZSgp
IHsgbV9pb1N1cmZhY2UgPSBudWxscHRyOyB9CiAKICAgICBjb25zdCBNZWRpYVRpbWUmIHRpbWUo
KSBjb25zdCB7IHJldHVybiBtX3RpbWU7IH0KICAgICB1aW50MzJfdCB2aWRlb0Zvcm1hdCgpIGNv
bnN0IHsgcmV0dXJuIG1fdmlkZW9Gb3JtYXQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0KaW5kZXggYzEyNmI5M2U4
NzA2Zjk1NTMwZjYxMjZmOGFkMjVmYWY2MjIyYWQ3MS4uOWJmNGIwYjhkNWM0ODFhNTM0ZmQ5MGNm
MTZjOTU1OWZiNmNkNzE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0KQEAgLTMzNCw2ICszMzQsOSBAQCB2b2lk
IExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxl
JiBzYW1wbGUpCiB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2Ft
cGxlQnVmZmVyKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CisgICAgLy8gRklYTUU6IExvY2FsIHBsYXliYWNrIG9mIFJlbW90ZVZpZGVvRnJhbWVQ
cm94eSBpcyBub3QgaW1wbGVtZW50ZWQuCisgICAgaWYgKCFpczxNZWRpYVNhbXBsZUFWRk9iakM+
KHNhbXBsZSkpCisgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gc2FtcGxlVG9FbnF1ZXVlID0g
c2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVmZmVyOwogICAgIGF1dG8g
bm93ID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKE1vbm90b25pY1RpbWU6Om5vdygpLnNl
Y29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSArIHJlbmRlcmVyTGF0ZW5jeSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakMubW0KaW5kZXggMmJiZDZhNGNiMGQyMmQyZGY5OTc3NWVlNWVlMjdjNzhhMjBk
NTk1NS4uNDJmZDE3NDg3ZWE2Y2QxNzEwNTA1MDVmZjVmM2ZmNWVkZmJlN2UxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtMjMwLDEwICsyMzAsOSBAQCBNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c3VwcG9ydHNU
eXBlKGNvbgogCiBzdGF0aWMgaW5saW5lIENHQWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJhbnNmb3Jt
YXRpb25NYXRyaXgoTWVkaWFTYW1wbGUmIHNhbXBsZSkKIHsKLSAgICBDTVNhbXBsZUJ1ZmZlclJl
ZiBzYW1wbGVCdWZmZXIgPSBzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuY21TYW1wbGVC
dWZmZXI7Ci0gICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENW
UGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihzYW1wbGVC
dWZmZXIpKTsKLSAgICBzaXplX3Qgd2lkdGggPSBDVlBpeGVsQnVmZmVyR2V0V2lkdGgocGl4ZWxC
dWZmZXIpOwotICAgIHNpemVfdCBoZWlnaHQgPSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KHBpeGVs
QnVmZmVyKTsKKyAgICBhdXRvIHNpemUgPSBzYW1wbGUucHJlc2VudGF0aW9uU2l6ZSgpOworICAg
IHNpemVfdCB3aWR0aCA9IHN0YXRpY19jYXN0PHNpemVfdD4oc2l6ZS53aWR0aCgpKTsKKyAgICBz
aXplX3QgaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplLmhlaWdodCgpKTsKICAgICBp
ZiAoIXdpZHRoIHx8ICFoZWlnaHQpCiAgICAgICAgIHJldHVybiBDR0FmZmluZVRyYW5zZm9ybUlk
ZW50aXR5OwogCkBAIC05OTQsOCArOTkzLDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OnVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCkKICAgICBpZiAoIW1faW1h
Z2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBh
dXRvIHBpeGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNh
bXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKG1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlLT5wbGF0
Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcikpOwotICAgIG1faW1hZ2VQYWludGVy
LmNnSW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVy
Q29uZm9ybWVyLT5jcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihwaXhlbEJ1ZmZlcikpOworICAg
IGlmIChhdXRvIHBpeGVsQnVmZmVyID0gbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUtPnBpeGVs
QnVmZmVyKCkpCisgICAgICAgIG1faW1hZ2VQYWludGVyLmNnSW1hZ2UgPSBOYXRpdmVJbWFnZTo6
Y3JlYXRlKG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyLT5jcmVhdGVJbWFnZUZy
b21QaXhlbEJ1ZmZlcihwaXhlbEJ1ZmZlcikpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFT
YW1wbGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAppbmRleCA2M2RiOWMwMDNjMDUxOWM2NjU2
NjEyMWU3YzZmYjUxZGYyZjc3MWMxLi41YjRmN2YwMGRiMzNhNWJjZGY2NTZjNjAyMmYxNDgzNGY0
MWM1OTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaApA
QCAtNTQsMTMgKzU0LDEyIEBAIHB1YmxpYzoKICAgICBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1faWQ7IH0KLSAgICB2b2lkIHNldFRyYWNrSUQoY29uc3QgU3RyaW5nJiBpZCkgb3Zl
cnJpZGUgeyBtX2lkID0gaWQ7IH0KIAogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IG92
ZXJyaWRlOwogICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRlOwotICAgIFBsYXRmb3Jt
U2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1TYW1wbGUgcGxh
dGZvcm1TYW1wbGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5n
ZT4gYnl0ZVJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
dW1wKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBvZmZzZXRUaW1lc3Rh
bXBzQnkoY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJpZGU7CkBAIC03Myw2ICs3Miw3IEBAIHB1Ymxp
YzoKICAgICBib29sIHZpZGVvTWlycm9yZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX21p
cnJvcmVkOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdWludDMyX3QgdmlkZW9QaXhlbEZvcm1hdCgp
IGNvbnN0IGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8TWVkaWFTYW1w
bGVWaWRlb0ZyYW1lPiB2aWRlb0ZyYW1lKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBP
UlQgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcigpIGNvbnN0IGZpbmFsOwogICAgIENNU2Ft
cGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlLmdldCgp
OyB9CiAKICAgICBib29sIGlzSG9tb2dlbmVvdXMoKSBjb25zdDsKQEAgLTk3LDMgKzk3LDcgQEAg
cHJvdGVjdGVkOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQykKKyAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKSB7IHJl
dHVybiBtZWRpYVNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnR5cGUgPT0gV2ViQ29yZTo6UGxhdGZv
cm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19F
TkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCmluZGV4
IDJjZTZjZWRlYTU1ZGZlNDI5NTNjMmM5YmYyZjI2OWVhMTNjNDZjM2IuLjUwMDQzNDBmZWY0OWU0
MmViMmZkZjgzNGZmYzI3OTE1M2Y1ODE0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNhbXBsZUFWRk9iakMubW0KQEAgLTE1Myw3ICsxNTMsNyBAQCBzaXplX3QgTWVkaWFTYW1w
bGVBVkZPYmpDOjpzaXplSW5CeXRlcygpIGNvbnN0CiAgICAgcmV0dXJuIFBBTDo6Q01TYW1wbGVC
dWZmZXJHZXRUb3RhbFNhbXBsZVNpemUobV9zYW1wbGUuZ2V0KCkpOwogfQogCi1QbGF0Zm9ybVNh
bXBsZSBNZWRpYVNhbXBsZUFWRk9iakM6OnBsYXRmb3JtU2FtcGxlKCkKK1BsYXRmb3JtU2FtcGxl
IE1lZGlhU2FtcGxlQVZGT2JqQzo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogewogICAgIFBsYXRm
b3JtU2FtcGxlIHNhbXBsZSA9IHsgUGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZSwg
eyAuY21TYW1wbGVCdWZmZXIgPSBtX3NhbXBsZS5nZXQoKSB9IH07CiAgICAgcmV0dXJuIHNhbXBs
ZTsKQEAgLTU1Niw0ICs1NTYsOSBAQCBzdGQ6Om9wdGlvbmFsPE1lZGlhU2FtcGxlOjpCeXRlUmFu
Z2U+IE1lZGlhU2FtcGxlQVZGT2JqQzo6Ynl0ZVJhbmdlRm9yQXR0YWNobWVudAogICAgIHJldHVy
biB7IHsgQ2hlY2tlZFNpemUoYnl0ZU9mZnNldCksIHNpbmdsZVNpemVFbnRyeSB9IH07CiB9CiAK
K0NWUGl4ZWxCdWZmZXJSZWYgTWVkaWFTYW1wbGVBVkZPYmpDOjpwaXhlbEJ1ZmZlcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01TYW1w
bGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihtX3NhbXBsZS5nZXQoKSkpOworfQorCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1w
bGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmNwcAppbmRleCA5ZTdjMDg5NjA2YTdiMTM5YTlhNjIz
OGU1MWRmOGYwZmRlZDdkMzM3Li4yN2Y5Nzk1ZWE0ZGE4YTc0ODIwNjkzN2Q0MjNkNjhiYjU2MzVi
ZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5jcHAKQEAgLTIzNSw3ICsy
MzUsNyBAQCB2b2lkIE1lZGlhU2FtcGxlR1N0cmVhbWVyOjpvZmZzZXRUaW1lc3RhbXBzQnkoY29u
c3QgTWVkaWFUaW1lJiB0aW1lc3RhbXBPZmZzZXQpCiAgICAgfQogfQogCi1QbGF0Zm9ybVNhbXBs
ZSBNZWRpYVNhbXBsZUdTdHJlYW1lcjo6cGxhdGZvcm1TYW1wbGUoKQorUGxhdGZvcm1TYW1wbGUg
TWVkaWFTYW1wbGVHU3RyZWFtZXI6OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKIHsKICAgICBQbGF0
Zm9ybVNhbXBsZSBzYW1wbGUgPSB7IFBsYXRmb3JtU2FtcGxlOjpHU3RyZWFtZXJTYW1wbGVUeXBl
LCB7IC5nc3RTYW1wbGUgPSBtX3NhbXBsZS5nZXQoKSB9IH07CiAgICAgcmV0dXJuIHNhbXBsZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVNhbXBsZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKaW5kZXggMWQ3MWEzMzk2OWNmYmM2NzVk
ZWVjZWE3OGU2NGYyZDY4OTllNDFlYi4uM2I1YTY5YWE3NmE2YWFmMTdhNTYxNzZjMWZiMjM5YTRm
OTEwYjBiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKQEAgLTUzLDcgKzUz
LDYgQEAgcHVibGljOgogICAgIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9kdHM7IH0KICAgICBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2R1cmF0aW9uOyB9CiAgICAgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV90cmFja0lkOyB9Ci0gICAgdm9pZCBzZXRUcmFja0lEKGNvbnN0
IFN0cmluZyYgdHJhY2tJZCkgb3ZlcnJpZGUgeyBtX3RyYWNrSWQgPSB0cmFja0lkOyB9CiAgICAg
c2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zaXplOyB9CiAg
ICAgRmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X3ByZXNlbnRhdGlvblNpemU7IH0KICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBN
ZWRpYVRpbWUmKSBvdmVycmlkZTsKQEAgLTYyLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHN0ZDo6
cGFpcjxSZWZQdHI8TWVkaWFTYW1wbGU+LCBSZWZQdHI8TWVkaWFTYW1wbGU+PiBkaXZpZGUoY29u
c3QgTWVkaWFUaW1lJiwgVXNlRW5kVGltZSkgb3ZlcnJpZGUgIHsgcmV0dXJuIHsgbnVsbHB0ciwg
bnVsbHB0ciB9OyB9CiAgICAgUmVmPE1lZGlhU2FtcGxlPiBjcmVhdGVOb25EaXNwbGF5aW5nQ29w
eSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9mbGFnczsgfQotICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxl
KCkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBv
dmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+
IGdldFJHQkFJbWFnZURhdGEoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKaW5k
ZXggNjgyNzNlYmY3ZjAzYThhOTI2OGMwZDg4ZjUxMWUzZjZjMjkzNTA5Mi4uMzllM2U3ZTIzZWEx
ZjE2ZDYxYTMyMDY0MzViYWE3NTJkOWE2ZDZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIkltYWdlVHJh
bnNmZXJTZXNzaW9uVlQuaCIKKyNpbmNsdWRlICJNZWRpYVNhbXBsZUFWRk9iakMuaCIKICNlbmRp
ZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNjksNiArMTcwLDE0IEBAIHZvaWQgUmVhbHRp
bWVWaWRlb1NvdXJjZTo6c291cmNlU3RvcHBlZCgpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBSZWZQ
dHI8TWVkaWFTYW1wbGU+IFJlYWx0aW1lVmlkZW9Tb3VyY2U6OmFkYXB0VmlkZW9TYW1wbGUoTWVk
aWFTYW1wbGUmIHNhbXBsZSkKIHsKKyAgICBpZiAoc2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlw
ZSAhPSBQbGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVCdWZmZXJUeXBlKSB7CisgICAgICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IG1vcmUgZWZmaWNpZW50bHkgZG93bnNhbXBsaW5nIG9mIHJlbW90ZSB2aWRl
byBmcmFtZXMgYnkgZG93bnNhbXBsaW5nIGluIEdQVVByb2Nlc3MuCisgICAgICAgIGF1dG8gbmV3
U2FtcGxlID0gTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShzYW1wbGUucGl4
ZWxCdWZmZXIoKSwgc2FtcGxlLnZpZGVvUm90YXRpb24oKSwgc2FtcGxlLnZpZGVvTWlycm9yZWQo
KSwgc2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSwgeyB9KTsKKyAgICAgICAgaWYgKCFuZXdTYW1w
bGUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGFkYXB0Vmlk
ZW9TYW1wbGUoKm5ld1NhbXBsZSk7CisgICAgfQorICAgIEFTU0VSVChzYW1wbGUucGxhdGZvcm1T
YW1wbGUoKS50eXBlID09IFBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGUpOwogICAg
IGlmICghbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiB8fCBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5w
aXhlbEZvcm1hdCgpICE9IHNhbXBsZS52aWRlb1BpeGVsRm9ybWF0KCkpCiAgICAgICAgIG1faW1h
Z2VUcmFuc2ZlclNlc3Npb24gPSBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGUoc2FtcGxl
LnZpZGVvUGl4ZWxGb3JtYXQoKSwgbV9zaG91bGRVc2VJT1N1cmZhY2UpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWlu
Z1ZpZGVvU291cmNlQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oCmluZGV4IGQwZmU4ZTA2NTgy
MmY4MDdlYmI0ZDY1YTMwN2I0YmVjMGI4ZmFhNjIuLjY0NjZkNjE4ZGU3NDllNWM1ZjkyNjFkMjUy
ZGQ5YjBjMTllMWE1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9T
b3VyY2VDb2NvYS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBVU0UoTElCV0VCUlRDKQogCisj
aW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNsdWRlICJSZWFsdGltZUluY29taW5nVmlkZW9T
b3VyY2UuaCIKIAogdXNpbmcgQ01TYW1wbGVCdWZmZXJSZWYgPSBzdHJ1Y3Qgb3BhcXVlQ01TYW1w
bGVCdWZmZXIqOwpAQCAtNDksNiArNTAsOCBAQCBwcml2YXRlOgogICAgIFJlYWx0aW1lSW5jb21p
bmdWaWRlb1NvdXJjZUNvY29hKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJhY2tJ
bnRlcmZhY2U+JiYsIFN0cmluZyYmKTsKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4g
cGl4ZWxCdWZmZXJGcm9tVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmKTsKICAg
ICBDVlBpeGVsQnVmZmVyUG9vbFJlZiBwaXhlbEJ1ZmZlclBvb2woc2l6ZV90IHdpZHRoLCBzaXpl
X3QgaGVpZ2h0LCB3ZWJydGM6OkJ1ZmZlclR5cGUpOworICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4g
dG9WaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYsIE1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uKTsKKyAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IGNyZWF0ZU1lZGlhU2FtcGxlRnJv
bUNWUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b24sIGludDY0X3QpOwogCiAgICAgLy8gcnRjOjpWaWRlb1NpbmtJbnRlcmZhY2UKICAgICB2b2lk
IE9uRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KaW5kZXggNTM3ZWEwYjUxMTMx
Y2NjMWM4NWQwYjAzZWMzYTc0MmNiNjI3OTQ2ZC4uN2EzNTI2YTM5MzU0ZGQ2OTlhY2Q3ZTYxYTg2
NTgyYmYwNjcxYTU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9T
b3VyY2VDb2NvYS5tbQpAQCAtMTE4LDcgKzExOCwzMyBAQCBDVlBpeGVsQnVmZmVyUG9vbFJlZiBS
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6cGl4ZWxCdWZmZXJQb29sKHNpemVfdCB3
aQogICAgIHJldHVybiBtX3BpeGVsQnVmZmVyUG9vbC5nZXQoKTsKIH0KIAotUmV0YWluUHRyPENW
UGl4ZWxCdWZmZXJSZWY+IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpwaXhlbEJ1
ZmZlckZyb21WaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhbWUpCitSZWZQ
dHI8TWVkaWFTYW1wbGU+IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpjcmVhdGVN
ZWRpYVNhbXBsZUZyb21DVlBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIs
IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBpbnQ2NF90IHRpbWVTdGFtcCkK
K3sKKyAgICBDTVNhbXBsZVRpbWluZ0luZm8gdGltaW5nSW5mbzsKKyAgICB0aW1pbmdJbmZvLnBy
ZXNlbnRhdGlvblRpbWVTdGFtcCA9IFBBTDo6Q01UaW1lTWFrZSh0aW1lU3RhbXAsIDEwMDAwMDAp
OworICAgIHRpbWluZ0luZm8uZGVjb2RlVGltZVN0YW1wID0gUEFMOjprQ01UaW1lSW52YWxpZDsK
KyAgICB0aW1pbmdJbmZvLmR1cmF0aW9uID0gUEFMOjprQ01UaW1lSW52YWxpZDsKKworICAgIENN
VmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbjsKKyAgICBPU1N0YXR1
cyBvc3RhdHVzID0gUEFMOjpDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGVGb3JJbWFnZUJ1
ZmZlcihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoQ1ZJbWFnZUJ1ZmZlclJlZilwaXhlbEJ1ZmZlciwg
JmZvcm1hdERlc2NyaXB0aW9uKTsKKyAgICBpZiAob3N0YXR1cyAhPSBub0VycikgeworICAgICAg
ICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsICJGYWlsZWQgdG8gaW5p
dGlhbGl6ZSBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb24gd2l0aCBlcnJvciAiLCBzdGF0aWNfY2Fz
dDxpbnQ+KG9zdGF0dXMpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAg
Q01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyOworICAgIG9zdGF0dXMgPSBQQUw6OkNNU2Ft
cGxlQnVmZmVyQ3JlYXRlUmVhZHlXaXRoSW1hZ2VCdWZmZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
KENWSW1hZ2VCdWZmZXJSZWYpcGl4ZWxCdWZmZXIsIGZvcm1hdERlc2NyaXB0aW9uLCAmdGltaW5n
SW5mbywgJnNhbXBsZUJ1ZmZlcik7CisgICAgQ0ZSZWxlYXNlKGZvcm1hdERlc2NyaXB0aW9uKTsK
KyAgICBpZiAob3N0YXR1cyAhPSBub0VycikgeworICAgICAgICBFUlJPUl9MT0dfSUYobG9nZ2Vy
UHRyKCksIExPR0lERU5USUZJRVIsICJGYWlsZWQgdG8gY3JlYXRlIHRoZSBzYW1wbGUgYnVmZmVy
IHdpdGggZXJyb3IgIiwgc3RhdGljX2Nhc3Q8aW50Pihvc3RhdHVzKSk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKworICAgIGF1dG8gc2FtcGxlID0gYWRvcHRDRihzYW1wbGVCdWZm
ZXIpOworICAgIHJldHVybiBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZShzYW1wbGUuZ2V0KCks
IHJvdGF0aW9uKTsKK30KKworUmVmUHRyPE1lZGlhU2FtcGxlPiBSZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2VDb2NvYTo6dG9WaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJh
bWUsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKQogewogICAgIGlmIChtdXRl
ZCgpKSB7CiAgICAgICAgIGlmICghbV9ibGFja0ZyYW1lIHx8IG1fYmxhY2tGcmFtZVdpZHRoICE9
IGZyYW1lLndpZHRoKCkgfHwgbV9ibGFja0ZyYW1lSGVpZ2h0ICE9IGZyYW1lLmhlaWdodCgpKSB7
CkBAIC0xMjYsMTIgKzE1MiwxMyBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gUmVhbHRp
bWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OnBpeGVsQnVmZmVyRnJvbVZpZAogICAgICAgICAg
ICAgbV9ibGFja0ZyYW1lSGVpZ2h0ID0gZnJhbWUuaGVpZ2h0KCk7CiAgICAgICAgICAgICBtX2Js
YWNrRnJhbWUgPSBjcmVhdGVCbGFja1BpeGVsQnVmZmVyKG1fYmxhY2tGcmFtZVdpZHRoLCBtX2Js
YWNrRnJhbWVIZWlnaHQpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX2JsYWNrRnJhbWUu
Z2V0KCk7CisgICAgICAgIHJldHVybiBjcmVhdGVNZWRpYVNhbXBsZUZyb21DVlBpeGVsQnVmZmVy
KG1fYmxhY2tGcmFtZS5nZXQoKSwgcm90YXRpb24sIGZyYW1lLnRpbWVzdGFtcF91cygpKTsKICAg
ICB9CiAKKyAgICAvLyBGSVhNRTogRGV0ZWN0IHRoZSBjYXNlIG9mIGZyYW1lIGhhdmluZyBhIEZy
YW1lQnVmZmVyUHJvdmlkZXIuCiAgICAgLy8gSW4gY2FzZSBvZiBpbiBtZW1vcnkgc2FtcGxlcywg
d2UgaGF2ZSBub24gaW50ZXJsZWF2ZWQgWVVWIGRhdGEgd2hpbGUgQ1ZQaXhlbEJ1ZmZlcnMgcHJl
ZmVyIGludGVybGVhdmVkIFlVViBkYXRhLgogICAgIC8vIE1heWJlIHdlIHNob3VsZCBpbnRyb2R1
Y2UgYSBNZWRpYVNhbXBsZSB0aGF0IHdvdWxkIHJlcHJlc2VudCBub24gaW50ZXJsZWF2ZWQgWVVW
IGRhdGEgYXMgYW4gb3B0aW1pemF0aW9uLgotICAgIHJldHVybiBhZG9wdENGKHdlYnJ0Yzo6Y3Jl
YXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUsIFt0aGlzXShzaXplX3Qgd2lkdGgsIHNpemVf
dCBoZWlnaHQsIHdlYnJ0Yzo6QnVmZmVyVHlwZSBidWZmZXJUeXBlKSAtPiBDVlBpeGVsQnVmZmVy
UmVmIHsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gYWRvcHRDRih3ZWJydGM6OmNyZWF0ZVBpeGVs
QnVmZmVyRnJvbUZyYW1lKGZyYW1lLCBbdGhpc10oc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0
LCB3ZWJydGM6OkJ1ZmZlclR5cGUgYnVmZmVyVHlwZSkgLT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7CiAg
ICAgICAgIGF1dG8gcGl4ZWxCdWZmZXJQb29sID0gdGhpcy0+cGl4ZWxCdWZmZXJQb29sKHdpZHRo
LCBoZWlnaHQsIGJ1ZmZlclR5cGUpOwogICAgICAgICBpZiAoIXBpeGVsQnVmZmVyUG9vbCkKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTQ1LDE4ICsxNzIsMTkgQEAgUmV0YWluUHRy
PENWUGl4ZWxCdWZmZXJSZWY+IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpwaXhl
bEJ1ZmZlckZyb21WaWQKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcGl4ZWxCdWZmZXI7CiAg
ICAgfSkpOworICAgIHJldHVybiBjcmVhdGVNZWRpYVNhbXBsZUZyb21DVlBpeGVsQnVmZmVyKHBp
eGVsQnVmZmVyLmdldCgpLCByb3RhdGlvbiwgZnJhbWUudGltZXN0YW1wX3VzKCkpOwogfQogCi12
b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpPbkZyYW1lKGNvbnN0IHdlYnJ0
Yzo6VmlkZW9GcmFtZSYgZnJhbWUpCit2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNv
Y29hOjpPbkZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgd2VicnRjVmlkZW9GcmFtZSkK
IHsKICAgICBpZiAoIWlzUHJvZHVjaW5nRGF0YSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICB1
bnNpZ25lZCB3aWR0aCA9IGZyYW1lLndpZHRoKCk7Ci0gICAgdW5zaWduZWQgaGVpZ2h0ID0gZnJh
bWUuaGVpZ2h0KCk7CisgICAgdW5zaWduZWQgd2lkdGggPSB3ZWJydGNWaWRlb0ZyYW1lLndpZHRo
KCk7CisgICAgdW5zaWduZWQgaGVpZ2h0ID0gd2VicnRjVmlkZW9GcmFtZS5oZWlnaHQoKTsKIAog
ICAgIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uOwotICAgIHN3aXRjaCAoZnJh
bWUucm90YXRpb24oKSkgeworICAgIHN3aXRjaCAod2VicnRjVmlkZW9GcmFtZS5yb3RhdGlvbigp
KSB7CiAgICAgY2FzZSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzA6CiAgICAgICAgIHJvdGF0aW9u
ID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmU7CiAgICAgICAgIGJyZWFrOwpAQCAt
MTc0LDQwICsyMDIsMTUgQEAgdm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6
T25GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lKQogICAgIH0KIAogI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAotICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCkgJiYgISgr
K21fbnVtYmVyT2ZGcmFtZXMgJSA2MCksIExPR0lERU5USUZJRVIsICJmcmFtZSAiLCBtX251bWJl
ck9mRnJhbWVzLCAiLCByb3RhdGlvbiAiLCBmcmFtZS5yb3RhdGlvbigpLCAiIHNpemUgIiwgd2lk
dGgsICJ4IiwgaGVpZ2h0KTsKKyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpICYmICEoKytt
X251bWJlck9mRnJhbWVzICUgNjApLCBMT0dJREVOVElGSUVSLCAiZnJhbWUgIiwgbV9udW1iZXJP
ZkZyYW1lcywgIiwgcm90YXRpb24gIiwgd2VicnRjVmlkZW9GcmFtZS5yb3RhdGlvbigpLCAiIHNp
emUgIiwgd2lkdGgsICJ4IiwgaGVpZ2h0KTsKICNlbmRpZgogCi0gICAgYXV0byBwaXhlbEJ1ZmZl
ciA9IHBpeGVsQnVmZmVyRnJvbVZpZGVvRnJhbWUoZnJhbWUpOwotICAgIGlmICghcGl4ZWxCdWZm
ZXIpIHsKLSAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAi
RmFpbGVkIHRvIGdldCBhIHBpeGVsIGJ1ZmZlciBmcm9tIGEgZnJhbWUiKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIENNU2FtcGxlVGltaW5nSW5mbyB0aW1pbmdJbmZvOwotICAgIHRp
bWluZ0luZm8ucHJlc2VudGF0aW9uVGltZVN0YW1wID0gUEFMOjpDTVRpbWVNYWtlKGZyYW1lLnRp
bWVzdGFtcF91cygpLCAxMDAwMDAwKTsKLSAgICB0aW1pbmdJbmZvLmRlY29kZVRpbWVTdGFtcCA9
IFBBTDo6a0NNVGltZUludmFsaWQ7Ci0gICAgdGltaW5nSW5mby5kdXJhdGlvbiA9IFBBTDo6a0NN
VGltZUludmFsaWQ7Ci0KLSAgICBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVz
Y3JpcHRpb247Ci0gICAgT1NTdGF0dXMgb3N0YXR1cyA9IFBBTDo6Q01WaWRlb0Zvcm1hdERlc2Ny
aXB0aW9uQ3JlYXRlRm9ySW1hZ2VCdWZmZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKENWSW1hZ2VC
dWZmZXJSZWYpcGl4ZWxCdWZmZXIsICZmb3JtYXREZXNjcmlwdGlvbik7Ci0gICAgaWYgKG9zdGF0
dXMgIT0gbm9FcnIpIHsKLSAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVO
VElGSUVSLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uIHdp
dGggZXJyb3IgIiwgc3RhdGljX2Nhc3Q8aW50Pihvc3RhdHVzKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXI7Ci0gICAgb3N0YXR1
cyA9IFBBTDo6Q01TYW1wbGVCdWZmZXJDcmVhdGVSZWFkeVdpdGhJbWFnZUJ1ZmZlcihrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCAoQ1ZJbWFnZUJ1ZmZlclJlZilwaXhlbEJ1ZmZlciwgZm9ybWF0RGVzY3Jp
cHRpb24sICZ0aW1pbmdJbmZvLCAmc2FtcGxlQnVmZmVyKTsKLSAgICBDRlJlbGVhc2UoZm9ybWF0
RGVzY3JpcHRpb24pOwotICAgIGlmIChvc3RhdHVzICE9IG5vRXJyKSB7Ci0gICAgICAgIEVSUk9S
X0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgIkZhaWxlZCB0byBjcmVhdGUgdGhl
IHNhbXBsZSBidWZmZXIgd2l0aCBlcnJvciAiLCBzdGF0aWNfY2FzdDxpbnQ+KG9zdGF0dXMpKTsK
KyAgICBhdXRvIHZpZGVvRnJhbWUgPSB0b1ZpZGVvRnJhbWUod2VicnRjVmlkZW9GcmFtZSwgcm90
YXRpb24pOworICAgIGlmICghdmlkZW9GcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGF1dG8gc2FtcGxlID0gYWRvcHRDRihzYW1wbGVCdWZmZXIpOwogCiAgICAgc2V0SW50cmlu
c2ljU2l6ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKLQotICAgIHZpZGVvU2FtcGxlQXZhaWxh
YmxlKE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKHNhbXBsZS5nZXQoKSwgcm90YXRpb24pLCBt
ZXRhZGF0YUZyb21WaWRlb0ZyYW1lKGZyYW1lKSk7CisgICAgdmlkZW9TYW1wbGVBdmFpbGFibGUo
KnZpZGVvRnJhbWUsIG1ldGFkYXRhRnJvbVZpZGVvRnJhbWUod2VicnRjVmlkZW9GcmFtZSkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2Eu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0
Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcAppbmRleCA1OGM2YmRlNDM0NjZlZDM4Yzc3YmU2NzVh
MmI3MjEyM2Q3MmU3MTIyLi5hMzc1OTVlYjM2OTMwOGM1Njc4NjZmNzg4MzQxNmUzYzhkZWZmYTU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5j
cHAKQEAgLTgzLDggKzgzLDggQEAgdm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2Nv
YTo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCi0gICAgQVNTRVJUKHNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnR5cGUgPT0g
UGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZSk7Ci0gICAgYXV0byBwaXhlbEJ1ZmZl
ciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRJ
bWFnZUJ1ZmZlcihzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuY21TYW1wbGVCdWZmZXIp
KTsKKyAgICAvLyBGSVhNRTogT3B0aW1pemUgdGhlIGNhc2Ugb2YgUGxhdGZvcm1TYW1wbGU6OlJl
bW90ZVZpZGVvRnJhbWVQcm94eVR5cGUuCisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHNhbXBsZS5w
aXhlbEJ1ZmZlcigpOwogICAgIGF1dG8gcGl4ZWxGb3JtYXRUeXBlID0gQ1ZQaXhlbEJ1ZmZlckdl
dFBpeGVsRm9ybWF0VHlwZShwaXhlbEJ1ZmZlcik7CiAKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1
ZmZlclJlZj4gY29udmVydGVkQnVmZmVyID0gcGl4ZWxCdWZmZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1Nv
dXJjZUJ1ZmZlclByaXZhdGUuY3BwCmluZGV4IDVjYjYwYjllZjZlZjU3YTQzYjRlZWY3MmExMzc2
NzliMWFlYmQ2NWIuLjRhYzY5YWNkOWEwMGNmNmUxOTlhMzNhYWM0NzNkOGNkODVkYzVlNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1Nv
dXJjZUJ1ZmZlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
bWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBAIC01OCwxMCArNTgsOSBA
QCBwcml2YXRlOgogICAgIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9ib3guZGVjb2RlVGltZXN0YW1wKCk7IH0KICAgICBNZWRpYVRpbWUgZHVyYXRpb24o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JveC5kdXJhdGlvbigpOyB9CiAgICAgQXRvbVN0
cmluZyB0cmFja0lEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsgfQotICAgIHZvaWQg
c2V0VHJhY2tJRChjb25zdCBTdHJpbmcmIGlkKSBvdmVycmlkZSB7IG1faWQgPSBpZDsgfQogICAg
IHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNpemVvZihtX2Jv
eCk7IH0KICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRlOwotICAgIFBsYXRm
b3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1TYW1wbGUg
cGxhdGZvcm1TYW1wbGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVS
YW5nZT4gYnl0ZVJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9
CiAgICAgRmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBGbG9hdFNpemUoKTsgfQogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJy
aWRlOwpAQCAtODcsNyArODYsNyBAQCBNZWRpYVNhbXBsZTo6U2FtcGxlRmxhZ3MgTW9ja01lZGlh
U2FtcGxlOjpmbGFncygpIGNvbnN0CiAgICAgcmV0dXJuIFNhbXBsZUZsYWdzKGZsYWdzKTsKIH0K
IAotUGxhdGZvcm1TYW1wbGUgTW9ja01lZGlhU2FtcGxlOjpwbGF0Zm9ybVNhbXBsZSgpCitQbGF0
Zm9ybVNhbXBsZSBNb2NrTWVkaWFTYW1wbGU6OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKIHsKICAg
ICBQbGF0Zm9ybVNhbXBsZSBzYW1wbGUgPSB7IFBsYXRmb3JtU2FtcGxlOjpNb2NrU2FtcGxlQm94
VHlwZSwgeyAmbV9ib3ggfSB9OwogICAgIHJldHVybiBzYW1wbGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApp
bmRleCAyOWY0Yzc4MTgxODBkZTJjYjI0OTUwNzJlODQ2MGE1MGFkMzY0YTQwLi43OTQ5ZTgwNTZi
NjhhNzhmODc3NjMyNWQ5NTIwMzQ0NzhmZDk3ZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTE3
OCw2ICsxNzgsNyBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5CiAgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVSZW1vdGVDb21tYW5kTGlzdGVuZXJQcm94eQogICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
U291cmNlQnVmZmVyUHJveHkKKyAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwCiAKICAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eQog
ICAgIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlcgpAQCAtMjgzLDYgKzI4NCw3IEBAIHNldChXZWJLaXRfTUVTU0FH
RVNfSU5fRklMRVMKICAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRl
UmVtb3RlCiAKICAgICBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzCisgICAg
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9j
ZXNzb3IKICAgICBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
CiAKICAgICBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGY5Mjc1
ZmY2MTM4YzQ5MTQ2OTBhYzBhMDllZGMxNjBhY2UwOWFiZjUuLjU3MjhiNTkyNTBjMzRmMDVhMjEy
MzE2YWRkNjBhZDI5M2RiMTgzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKQEAgLTY3LDYgKzY3LDcgQEAgJChQUk9KRUNUX0RJUikvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lclByb3h5Lm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVRleHRUcmFja1Byb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mvd2VicnRjL0xp
YldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0xOTUsNiArMTk2LDcgQEAgJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ1JlbW90ZUNvZGVjcy5tZXNzYWdlcy5pbgor
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIp
L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmlu
CiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JV
SS5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKaW5kZXggOTJkMjA2MDk5MzQxNzdhZWM5N2U4ODZjNjZjZThkOTEzNzgyNDA4My4u
MWVhZTM2YzA3ZWJkMDhiNzRjMDNmZjIyOWFhZDJjN2YxYjRkZGUzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0zODEsNiArMzgxLDEy
IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVGV4
dHVyZU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L1JlbW90ZVRleHR1cmVWaWV3TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVUZXh0dXJlVmlld01lc3Nh
Z2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3Rl
VGV4dHVyZVZpZXdNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VSZWNlaXZl
ci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXBNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXNSZXBs
aWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXBQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvVHJh
Y2tQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9UcmFja1Byb3h5TWVzc2FnZXMuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb1RyYWNrUHJveHlN
ZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDI5ZTRjODQ2
NjM0NWIzMzk4M2RlNzQ4Mjg3Yjk0MTU0NjQ3ZjI5YmQuLjhkYjEyODEzZWJiNzlkOTUzY2E3Mzlm
NGQyZjhhZjliOGU1N2Q4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTIwNSw2
ICsyMDUsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXIgXAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGUgXAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXIgXAorCVdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yIFwKIAlXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZUFyZWFNYXAgXAogCVdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyIFwKIAlXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNw
YXRjaGVyIFwKQEAgLTMwMCw2ICszMDEsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IFwKIAlHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkgXAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZU1hbmFnZXIgXAorCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXAgXAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eSBc
CiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJQcm94eSBcCiAJ
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5k
ZXggNGQ1MjRlOGI4Njc5YTgzMGM0NWViNmI1YmMxMDRiNzU0MTA0YjYzZS4uZGUyM2M0NDRjYzA2
ZTgzZGM4YmQ1MmUwYjhhNGE3NGY3ZmUxODI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMTQxLDYgKzE0
MSw3IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luLmg+CiAjZW5kaWYKIApAQCAtMjA1LDIwICsyMDYsMjEgQEAgcHJpdmF0ZToKICAgICAgICAg
bV9wcm9jZXNzLnNldFRDQ0lkZW50aXR5KCk7CiAgICAgfQogI2VuZGlmCi0jaWYgUExBVEZPUk0o
Q09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKICAgICB2b2lkIHN0YXJ0UHJvZHVjaW5n
RGF0YShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUpIGZpbmFsCiAgICAgewogICAgICAg
ICBpZiAodHlwZSAhPSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbykKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgbV9wcm9jZXNzLnN0YXJ0Q2FwdHVyaW5nQXVkaW8oKTsKICAg
ICB9Ci0jZW5kaWYKIAogICAgIGNvbnN0IFByb2Nlc3NJZGVudGl0eSYgcmVzb3VyY2VPd25lcigp
IGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICByZXR1cm4gbV9wcm9jZXNzLndlYlByb2Nlc3NJ
ZGVudGl0eSgpOwogICAgIH0KIAorICAgIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKiByZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCgpIGZpbmFsIHsgcmV0dXJuICZtX3Byb2Nlc3MudmlkZW9G
cmFtZU9iamVjdEhlYXAoKTsgfQorCiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9w
cm9jZXNzOwogfTsKIApAQCAtMjM2LDE1ICsyMzgsMTggQEAgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhHUFVQcm9jZXNzJiBncHVQcm9jZXNzLCBX
ZWIKICAgICAsIG1fd2ViUHJvY2Vzc0lkZW50aXR5KFdURk1vdmUocGFyYW1ldGVycy53ZWJQcm9j
ZXNzSWRlbnRpdHkpKQogICAgICwgbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eShtYWtl
VW5pcXVlUmVmPFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5PigqdGhpcykpCiAgICAgLCBt
X3Nlc3Npb25JRChzZXNzaW9uSUQpCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJS
VEMpCi0gICAgLCBtX2xpYldlYlJUQ0NvZGVjc1Byb3h5KExpYldlYlJUQ0NvZGVjc1Byb3h5Ojpj
cmVhdGUoKnRoaXMpKQotI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCiAgICAgLCBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIoUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6Y3JlYXRlKCp0aGlzKSkKICNlbmRpZgog
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgLCBtX2NhcHR1cmVPcmlnaW4oU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZVVuaXF1ZSgpKQogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KyAgICAsIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAoUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6
OmNyZWF0ZSgqdGhpcykpCisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKExJQldF
QlJUQykKKyAgICAsIG1fbGliV2ViUlRDQ29kZWNzUHJveHkoTGliV2ViUlRDQ29kZWNzUHJveHk6
OmNyZWF0ZSgqdGhpcykpCisjZW5kaWYKICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAgICwgbV9w
cmVzZW50aW5nQXBwbGljYXRpb25BdWRpdFRva2VuKFdURk1vdmUocGFyYW1ldGVycy5wcmVzZW50
aW5nQXBwbGljYXRpb25BdWRpdFRva2VuKSkKICNlbmRpZgpAQCAtMzAwLDcgKzMwNSw5IEBAIHZv
aWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uKQogICAgICAgICBtX2F1ZGlvU2Vzc2lvblByb3h5ID0gbnVsbHB0cjsKICAgICB9
CiAjZW5kaWYKLQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgbV92aWRlb0ZyYW1lT2Jq
ZWN0SGVhcC5yZXNldCgpOworI2VuZGlmCiAgICAgLy8gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBv
YmplY3RzIHJlZiB0aGVpciBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHNvIHdlIG5lZWQgdG8g
bWFrZSBzdXJlCiAgICAgLy8gdG8gYnJlYWsgdGhlIHJlZmVyZW5jZSBjeWNsZSBieSBkZXN0cm95
aW5nIHRoZW0uCiAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmNsZWFyKCk7CkBAIC05
NDEsNiArOTQ4LDEyIEBAIGJvb2wgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q2FwdHVy
ZUF0dHJpYnV0aW9uU3RyaW5nKCkgY29uc3QKIHsKIH0KICNlbmRpZgorCitSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcCYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dmlkZW9GcmFtZU9iamVj
dEhlYXAoKSBjb25zdAoreworICAgIHJldHVybiAqbV92aWRlb0ZyYW1lT2JqZWN0SGVhcC5nZXQo
KTsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNpZiBQTEFURk9STShN
QUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAppbmRleCA2MjRlM2ZhMzUxY2YwYjAzNWUyZTEzYTkzMzI1ZGRkNGMzNDJiMTQ5
Li44YjRkOWI1NDI5OGI0ODlkNjBkYzA1Mzg0ODM5MTA4NzQ2ZTFhMGMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAg
LTEwNiw2ICsxMDYsMTAgQEAgc3RydWN0IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBh
cmFtZXRlcnM7CiBjbGFzcyBSZW1vdGVXQ0xheWVyVHJlZUhvc3Q7CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCitjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDsKKyNl
bmRpZgorCiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAgICAgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcywgV1RGOjpEZXN0cnVj
dGlvblRocmVhZDo6TWFpbj4KICAgICAsIHB1YmxpYyBXZWJDb3JlOjpOb3dQbGF5aW5nTWFuYWdl
cjo6Q2xpZW50CkBAIC0xNDEsNiArMTQ1LDcgQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dzQXVk
aW9DYXB0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NBdWRpb0NhcHR1cmU7IH0KICAgICBi
b29sIGFsbG93c1ZpZGVvQ2FwdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzVmlkZW9DYXB0
dXJlOyB9CiAgICAgYm9vbCBhbGxvd3NEaXNwbGF5Q2FwdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YWxsb3dzRGlzcGxheUNhcHR1cmU7IH0KKyAgICBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCYg
dmlkZW9GcmFtZU9iamVjdEhlYXAoKSBjb25zdDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09D
T0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCkBAIC0yODgsOSArMjkzLDYgQEAgcHJpdmF0ZToK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI+IG1fcmVtb3Rl
TWVkaWFSZXNvdXJjZU1hbmFnZXI7CiAgICAgVW5pcXVlUmVmPFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5PiBtX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OwogICAgIFBBTDo6U2Vz
c2lvbklEIG1fc2Vzc2lvbklEOwotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRD
KQotICAgIFJlZjxMaWJXZWJSVENDb2RlY3NQcm94eT4gbV9saWJXZWJSVENDb2RlY3NQcm94eTsK
LSNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAg
IHN0ZDo6dW5pcXVlX3B0cjxVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5PiBtX3VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcj4gbV9hdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI7CkBAIC0zMDUsNiArMzA3LDEwIEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX2FsbG93c0F1ZGlvQ2FwdHVyZSB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2FsbG93c1ZpZGVvQ2FwdHVyZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2FsbG93c0Rp
c3BsYXlDYXB0dXJlIHsgZmFsc2UgfTsKKyAgICBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNl
aXZlUXVldWU8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFtZU9iamVjdEhl
YXA7CisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykKKyAgICBS
ZWY8TGliV2ViUlRDQ29kZWNzUHJveHk+IG1fbGliV2ViUlRDQ29kZWNzUHJveHk7CiAjZW5kaWYK
ICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4g
bV9wcmVzZW50aW5nQXBwbGljYXRpb25BdWRpdFRva2VuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5j
cHAKaW5kZXggZWNiNGI1NzY3Y2M5YThlMjY4NjQ2ZGNlMzlkMjY2MmMzNDJjMzNiNi4uZTlhMTA1
MWUwMzA3Mzk2NDI2NTVjZmQ3YTIxNTgxNDBjYTNiOWQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wuY3BwCkBAIC00Miw2ICs0MiwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250
ZXh0R0xDVi5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUg
IlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNjgsNiArNzIsOSBAQCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgZ3B1QwogICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKElQQzo6U3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbjo6Y3JlYXRlKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlv
bigpLCBXVEZNb3ZlKHN0cmVhbSksIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1
ZXVlKCkpKQogICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKQogICAgICwgbV9yZW5kZXJpbmdCYWNrZW5kKHJlbmRlcmluZ0JhY2tl
bmQpCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAsIG1fdmlkZW9GcmFtZU9iamVjdEhl
YXAoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy52aWRlb0ZyYW1lT2JqZWN0SGVhcCgpKQorI2Vu
ZGlmCiAgICAgLCBtX3JlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QoU2NvcGVkV2ViR0xSZW5kZXJp
bmdSZXNvdXJjZXNSZXF1ZXN0OjphY3F1aXJlKCkpCiAgICAgLCBtX3dlYlByb2Nlc3NJZGVudGlm
aWVyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSkKIHsK
QEAgLTIyMyw2ICsyMzAsMjEgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRD
b21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzV2l0aFF1YWxpZmllZElkZW50aWYKICAgICBwYWludFBp
eGVsQnVmZmVyVG9JbWFnZUJ1ZmZlcihtX2NvbnRleHQtPnJlYWRDb21wb3NpdGVkUmVzdWx0c0Zv
clBhaW50aW5nKCksIGltYWdlQnVmZmVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0
aWVzPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhc3NlcnRJc0N1cnJlbnQobV9z
dHJlYW1UaHJlYWQpOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1l
UHJveHk6OlByb3BlcnRpZXM+IHJlc3VsdDsKKyAgICBpZiAoYXV0byB2aWRlb0ZyYW1lID0gbV9j
b250ZXh0LT5wYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpKSB7CisgICAgICAg
IGF1dG8gd3JpdGUgPSBSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2U6OmdlbmVyYXRlRm9y
QWRkKCk7CisgICAgICAgIGF1dG8gbmV3RnJhbWVSZWZlcmVuY2UgPSB3cml0ZS5yZXRpcmVkUmVm
ZXJlbmNlKCk7CisgICAgICAgIHJlc3VsdCA9IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cHJvcGVy
dGllcyhXVEZNb3ZlKG5ld0ZyYW1lUmVmZXJlbmNlKSwgKnZpZGVvRnJhbWUpOworICAgICAgICBt
X3ZpZGVvRnJhbWVPYmplY3RIZWFwLT5yZXRpcmUoV1RGTW92ZSh3cml0ZSksIFdURk1vdmUodmlk
ZW9GcmFtZSksIHN0ZDo6bnVsbG9wdCk7CisgICAgfQorICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUocmVzdWx0KSk7Cit9CisjZW5kaWYKKwogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6cGFpbnRQaXhlbEJ1ZmZlclRvSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQ
aXhlbEJ1ZmZlcj4mJiBwaXhlbEJ1ZmZlciwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5oCmluZGV4IGViMjBkMTZjMzc3ZjVmM2UwMDdmMjFiYTI1NjI0ZGQxOWUzNmJiMTcu
LmMyMzZkOTJiZWU4Yzg1N2M5YjVjNDM2NmRkZTYzZjI5OWVmOWViMzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5oCkBAIC01NCw2ICs1NCwxMSBAQAogI2luY2x1ZGUgIldDQ29udGVudEJ1ZmZlcklk
ZW50aWZpZXIuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRl
ICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJh
bWVQcm94eS5oIgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKIG5hbWVzcGFjZSBXVEYg
ewogY2xhc3MgTWFjaFNlbmRSaWdodDsKQEAgLTYxLDYgKzY2LDkgQEAgY2xhc3MgTWFjaFNlbmRS
aWdodDsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CisjZW5kaWYKIAogLy8gR1BV
IHByb2Nlc3Mgc2lkZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IHJlY2VpdmVzIG1lc3NhZ2VzIGFi
b3V0IEdyYXBoaWNzQ29udGV4dEdMIGNhbGxzCiAvLyBhbmQgaXNzdWVzIHJlYWwgR3JhcGhpY3ND
b250ZXh0R0wgY2FsbHMgYmFzZWQgb24gdGhlIHJlY2VpdmVkIG1lc3NhZ2VzLgpAQCAtMTA4LDYg
KzExNiw5IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKHVpbnQzMl90
IGVycm9yKTsKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b01lZGlhU2FtcGxlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJLaXQ6
OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcz4mJik+JiYpOworI2VuZGlmCiAgICAg
dm9pZCBjb3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIs
IHVpbnQzMl90IHRleHR1cmUsIHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMy
X3QgaW50ZXJuYWxGb3JtYXQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgYm9vbCBw
cmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKTsKICAgICB2b2lkIHNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMOjpTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcpOwogCkBAIC0xMzAsNiArMTQxLDkg
QEAgcHJvdGVjdGVkOgogICAgIFJlZlB0cjxQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMPiBtX2Nv
bnRleHQgV1RGX0dVQVJERURfQllfTE9DSyhtX3N0cmVhbVRocmVhZCk7CiAgICAgR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyOwogICAgIFJl
ZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbmRlcmluZ0JhY2tlbmQ7CisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKyAgICBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlk
ZW9GcmFtZU9iamVjdEhlYXA7CisjZW5kaWYKICAgICBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291
cmNlc1JlcXVlc3QgbV9yZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0OwogICAgIE5PX1VOSVFVRV9B
RERSRVNTIFRocmVhZEFzc2VydGlvbiBtX3N0cmVhbVRocmVhZDsKICAgICBXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLm1lc3NhZ2VzLmluCmluZGV4IGM4YWIyOTc3MjkzMGJmZDQwOGEwM2NlYjM3YTBj
Mjk4OThlMzAyYjIuLjQwMzNjMzAwZDU1NTgyMjhkMjA1MjlmYzI2ZDhlMWFhNGNhZWJmZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTQyLDYgKzQyLDkg
QEAgbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJl
YW0gewogICAgIHZvaWQgUGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyKSAtPiAoKSBTeW5jaHJvbm91cwog
ICAgIHZvaWQgUGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAgICB2
b2lkIENvcHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBp
ZGVudGlmaWVyLCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWwsIHVpbnQzMl90IGludGVybmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5
cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgLT4gKGJvb2wgc3VjY2Vzcykg
U3luY2hyb25vdXMKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIHZvaWQgUGFpbnRDb21w
b3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlJl
bW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcz4gcHJvcGVydGllcykgU3luY2hyb25vdXMK
KyNlbmRpZgogICAgIHZvaWQgU2ltdWxhdGVFdmVudEZvclRlc3RpbmcoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0w6OlNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZyBldmVudCkKIAogICAgIHZvaWQg
TW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODEzMjU2YjBl
Y2YzNTM1NWY2OWU2ZDZlM2MxZmU2ZjA5ZDY4Y2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcApA
QCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvck1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCisKKyNpbmNsdWRl
IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Jl
ZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6
OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uVG9XZWJQcm9jZXNz
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
KGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKTsKK30KKworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXA6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgOiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoJmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgLCBtX2Nvbm5lY3Rpb24obV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkpCit7CisgICAgbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
ICp0aGlzKTsKK30KKworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6On5SZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcCgpCit7CisgICAgQVNTRVJUKCFtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MpOworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpzdG9wTGlzdGVuaW5n
Rm9ySVBDKFJlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4mJiByZWZGcm9tQ29ubmVjdGlv
bikKK3sKKyAgICBhc3NlcnRJc0N1cnJlbnQobV9jb25zdW1lVGhyZWFkKTsKKyAgICBtX3NoYXJl
ZFZpZGVvRnJhbWVXcml0ZXIuZGlzYWJsZSgpOworCisgICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MgPSBzdGQ6OmV4Y2hhbmdlKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cywgbnVsbHB0cikpIHsKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2Fn
ZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICAgICAgLy8gQ2xp
ZW50cyBtaWdodCBob2xkIG9uIHRvIHRoZSByZWYgYWZ0ZXIgdGhpcyBoYXBwZW5zLiBUaGV5IHNo
b3VsZCBhbHNvIHN0b3AgdGhlbXNlbHZlcywgYnV0IGlmIHRoZXkgZG8gbm90LAorICAgICAgICAv
LyBhdm9pZCBiaWcgbWVtb3J5IGxlYWtzIGJ5IGNsZWFyaW5nIHRoZSBmcmFtZXMuIFRoZSBjbGll
bnRzIHNob3VsZCBmYWlsIGdyYWNlZnVsbHkgKGRvIG5vdGhpbmcpIGluIGNhc2UgdGhleSBmYWls
IHRvIGxvb2sgdXAKKyAgICAgICAgLy8gZnJhbWVzLgorICAgICAgICBjbGVhcigpOworICAgICAg
ICAvLyBUT0RPOiBhZGQgY2FuIGhhcHBlbiBhZnRlciBzdG9wcGluZy4KKyAgICB9Cit9CisKK1Jl
bW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpjcmVh
dGVSZW1vdGVWaWRlb0ZyYW1lKFJlZjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4mJiBmcmFtZSkKK3sK
KyAgICBhdXRvIGlkZW50aWZpZXIgPSBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcjo6Z2VuZXJh
dGVUaHJlYWRTYWZlKCk7CisgICAgYWRkKGlkZW50aWZpZXIsIFdURk1vdmUoZnJhbWUpKTsKKyAg
ICByZXR1cm4gaWRlbnRpZmllcjsKK30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cDo6cmVsZWFzZVZpZGVvRnJhbWUoUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJiYgd3Jp
dGUpCit7CisgICAgYXNzZXJ0SXNDdXJyZW50KG1fY29uc3VtZVRocmVhZCk7CisgICAgcmV0aXJl
UmVtb3ZlKFdURk1vdmUod3JpdGUpKTsKK30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcDo6Z2V0VmlkZW9GcmFtZUJ1ZmZlcihSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSYm
IHJlYWQpCit7CisgICAgYXV0byBpZGVudGlmaWVyID0gcmVhZC5pZGVudGlmaWVyKCk7CisgICAg
YXV0byBtZWRpYVNhbXBsZSA9IHJldGlyZShXVEZNb3ZlKHJlYWQpLCAwX3MpOworCisgICAgaWYg
KCFtZWRpYVNhbXBsZSkKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yOjpWaWRlb0ZyYW1lQnVmZmVyTm90
Rm91bmQgeyBpZGVudGlmaWVyIH0sIDApOworCisgICAgYXV0byBwbGF0Zm9ybVNhbXBsZSA9IG1l
ZGlhU2FtcGxlLT5wbGF0Zm9ybVNhbXBsZSgpOworICAgIEFTU0VSVChwbGF0Zm9ybVNhbXBsZS50
eXBlID09IFBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGUpOworCisgICAgbV9zaGFy
ZWRWaWRlb0ZyYW1lV3JpdGVyLndyaXRlKHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KFBB
TDo6Q01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihwbGF0Zm9ybVNhbXBsZS5zYW1wbGUuY21T
YW1wbGVCdWZmZXIpKSwKKyAgICAgICAgWyZdKGF1dG8mIHNlbWFwaG9yZSkgeyBtX2Nvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNz
b3I6OlNldFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhvcmUgeyBzZW1hcGhvcmUgfSwgMCk7IH0sCisg
ICAgICAgIFsmXShhdXRvJiBoYW5kbGUpIHsgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yOjpTZXRTaGFyZWRWaWRlb0Zy
YW1lTWVtb3J5IHsgaGFuZGxlIH0sIDApOyB9CisgICAgKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3I6Ok5l
d1ZpZGVvRnJhbWVCdWZmZXIgeyBpZGVudGlmaWVyIH0sIDApOworfQorCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDBjYjNiOTYxODQ2YzAxNDU3OWFiZmUz
N2I3ZDE3Y2VlZTQ0NmZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgKQEAgLTAsMCArMSw3MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiU2hhcmVkVmlkZW9GcmFtZS5oIgorI2luY2x1ZGUgIlRocmVhZFNhZmVP
YmplY3RIZWFwLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNhbXBsZS5oPgorI2luY2x1ZGUg
PHd0Zi9UaHJlYWRBc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKKworLy8gSG9sZHMgcmVmZXJlbmNlcyB0byBhbGwgVmlk
ZW9GcmFtZSBpbnN0YW5jZXMgdGhhdCBhcmUgbWFwcGVkIGZyb20gV2ViIHByb2Nlc3MgdG8gR1BV
IHByb2Nlc3MgdHdvIHByb2Nlc3Nlcy4KKy8vIEFzIGN1cnJlbnRseSB0aGVyZSBpcyBubyBzcGVj
aWFsIHN0YXRlIGZvciBSZW1vdGVWaWRlb0ZyYW1lLCB0aGUgb2JqZWN0IGhlYXAgc3RvcmVzIFZp
ZGVvRnJhbWUgaW5zdGFuY2VzIChNZWRpYVNhbXBsZSkuCisvLyBBcyBjdXJyZW50bHkgdGhlcmUg
aXMgbm8gUmVtb3RlVmlkZW9GcmFtZSwgcmVzcG9uc2libGUgZm9yIGRpc3BhdGNoaW5nIHRoZSBW
aWRlb0ZyYW1lIG1ldGhvZHMgdG8gdGhlIG9iamVjdHMuCisvLyBDb25zdW1lIHRocmVhZCBpcyB0
aGUgdGhyZWFkIHRoYXQgdXNlcyB0aGUgVmlkZW9GcmFtZS4gRm9yIEdQVVAgdGhpcyBpcyB0aGUg
bWVkaWEgcGxheWVyIHRocmVhZCwgdGhlIG1haW4gdGhyZWFkLgorLy8gRklYTUU6IGN1cnJlbnRs
eSBWaWRlb0ZyYW1lIGluc3RhbmNlcyBhcmUgTWVkaWFTYW1wbGUgaW5zdGFuY2VzLgorY2xhc3Mg
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZU9iamVj
dEhlYXA8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNh
bXBsZT4+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYpOworICAgIH5SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCgpOworCisgICAg
UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgY3JlYXRlUmVtb3RlVmlkZW9GcmFtZShSZWY8V2Vi
Q29yZTo6TWVkaWFTYW1wbGU+JiYpOworCisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKFJl
ZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4mJiByZWZGcm9tQ29ubmVjdGlvbik7CisKK3By
aXZhdGU6CisgICAgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAoR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgorICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcy4KKyAgICB2b2lkIHJlbGVhc2VWaWRlb0ZyYW1lKFJl
bW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSYmKTsKKyAgICB2b2lkIGdldFZpZGVvRnJhbWVC
dWZmZXIoUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UmJik7CisKKyAgICBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgV1RGX0dVQVJERURf
QllfTE9DSyhtX2NvbnN1bWVUaHJlYWQpOworICAgIGNvbnN0IFJlZjxJUEM6OkNvbm5lY3Rpb24+
IG1fY29ubmVjdGlvbjsKKyAgICBUaHJlYWRBc3NlcnRpb24gbV9jb25zdW1lVGhyZWFkIE5PX1VO
SVFVRV9BRERSRVNTOworICAgIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXIgbV9zaGFyZWRWaWRlb0Zy
YW1lV3JpdGVyOworfTsKKworCisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkM2QyNDNlMTUxNzVlZmY5YzhkN2VmY2JiYmQw
YjE1MmRlNWNhNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwy
OSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK21lc3NhZ2VzIC0+IFJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwIE5vdFJlZkNvdW50ZWQgeworICAgIEdldFZpZGVvRnJhbWVCdWZm
ZXIoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSBpZGVudGlmaWVyKQorICAg
IFJlbGVhc2VWaWRlb0ZyYW1lKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNl
IGlkZW50aWZpZXIpCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaAppbmRleCBjNzcyY2I3NzYwZjJkNTgy
OWFmY2QyYjg1ZjU5MTNhMzBjMDA3NDQ0Li5iNzU4NTBiOTMyOWI5NzE4Y2Y1NTVkZDY5YmUyZTcx
ODQwMDRlMzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xp
YldlYlJUQ0NvZGVjc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiUlRDRW5jb2RlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lSWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgIlNoYXJlZFZp
ZGVvRnJhbWUuaCIKICNpbmNsdWRlIDx3dGYvTG9jay5oPgpAQCAtNTMsNiArNTQsNyBAQCB1c2lu
ZyBMb2NhbEVuY29kZXIgPSB2b2lkKjsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOworY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7
CiBjbGFzcyBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyOwogCiBjbGFzcyBMaWJXZWJSVENDb2RlY3NQ
cm94eSA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZlclJlZkNv
dW50ZWQgewpAQCAtNzMsOSArNzUsOSBAQCBwcml2YXRlOgogCiAgICAgLy8gSVBDOjpNZXNzYWdl
UmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpIGZpbmFsOwotICAgIHZvaWQgY3JlYXRlSDI2NERlY29kZXIoUlRDRGVjb2Rl
cklkZW50aWZpZXIpOwotICAgIHZvaWQgY3JlYXRlSDI2NURlY29kZXIoUlRDRGVjb2RlcklkZW50
aWZpZXIpOwotICAgIHZvaWQgY3JlYXRlVlA5RGVjb2RlcihSVENEZWNvZGVySWRlbnRpZmllcik7
CisgICAgdm9pZCBjcmVhdGVIMjY0RGVjb2RlcihSVENEZWNvZGVySWRlbnRpZmllciwgYm9vbCB1
c2VSZW1vdGVGcmFtZXMpOworICAgIHZvaWQgY3JlYXRlSDI2NURlY29kZXIoUlRDRGVjb2Rlcklk
ZW50aWZpZXIsIGJvb2wgdXNlUmVtb3RlRnJhbWVzKTsKKyAgICB2b2lkIGNyZWF0ZVZQOURlY29k
ZXIoUlRDRGVjb2RlcklkZW50aWZpZXIsIGJvb2wgdXNlUmVtb3RlRnJhbWVzKTsKICAgICB2b2lk
IHJlbGVhc2VEZWNvZGVyKFJUQ0RlY29kZXJJZGVudGlmaWVyKTsKICAgICB2b2lkIGRlY29kZUZy
YW1lKFJUQ0RlY29kZXJJZGVudGlmaWVyLCB1aW50MzJfdCB0aW1lU3RhbXAsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgc2V0RnJhbWVTaXplKFJUQ0RlY29kZXJJZGVudGlm
aWVyLCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0KTsKQEAgLTgzLDcgKzg1LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUVuY29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYsIGJv
b2wgdXNlTG93TGF0ZW5jeSk7CiAgICAgdm9pZCByZWxlYXNlRW5jb2RlcihSVENFbmNvZGVySWRl
bnRpZmllcik7CiAgICAgdm9pZCBpbml0aWFsaXplRW5jb2RlcihSVENFbmNvZGVySWRlbnRpZmll
ciwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhlaWdodCwgdW5zaWduZWQgc3RhcnRCaXRyYXRl
LCB1bnNpZ25lZCBtYXhCaXRyYXRlLCB1bnNpZ25lZCBtaW5CaXRyYXRlLCB1aW50MzJfdCBtYXhG
cmFtZXJhdGUpOwotICAgIHZvaWQgZW5jb2RlRnJhbWUoUlRDRW5jb2RlcklkZW50aWZpZXIsIFdl
YkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYsIHVpbnQzMl90IHRpbWVTdGFtcCwgYm9vbCBzaG91
bGRFbmNvZGVBc0tleUZyYW1lKTsKKyAgICB2b2lkIGVuY29kZUZyYW1lKFJUQ0VuY29kZXJJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmLCB1aW50MzJfdCB0aW1lU3RhbXAs
IGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSwgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0Zy
YW1lUmVhZFJlZmVyZW5jZT4pOwogICAgIHZvaWQgc2V0RW5jb2RlUmF0ZXMoUlRDRW5jb2Rlcklk
ZW50aWZpZXIsIHVpbnQzMl90IGJpdFJhdGUsIHVpbnQzMl90IGZyYW1lUmF0ZSk7CiAgICAgdm9p
ZCBzZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlKFJUQ0VuY29kZXJJZGVudGlmaWVyLCBJUEM6
OlNlbWFwaG9yZSYmKTsKICAgICB2b2lkIHNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkoUlRDRW5j
b2RlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik7CkBAIC0xMDEs
NiArMTAzLDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFJUQ0RlY29kZXJJZGVudGlmaWVyLCB3
ZWJydGM6OkxvY2FsRGVjb2Rlcj4gbV9kZWNvZGVycyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9j
ayk7IC8vIE9ubHkgbW9kaWZpZWQgb24gdGhlIGxpYldlYlJUQ0NvZGVjc1F1ZXVlIGJ1dCBtYXkg
Z2V0IGFjY2Vzc2VkIGZyb20gdGhlIG1haW4gdGhyZWFkLgogICAgIEhhc2hNYXA8UlRDRW5jb2Rl
cklkZW50aWZpZXIsIEVuY29kZXI+IG1fZW5jb2RlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2xv
Y2spOyAvLyBPbmx5IG1vZGlmaWVkIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZSBidXQgbWF5
IGdldCBhY2Nlc3NlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KICAgICBSZWY8V29ya1F1ZXVlPiBt
X3F1ZXVlOworICAgIFJlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gbV92aWRlb0ZyYW1l
T2JqZWN0SGVhcDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IDZiYjIwODYzOGRjMjJhODllZmI4OWM5YWY5MDZhMDNlYTY5ZTc0NGUuLmRmYWY0YTI2YmQxZTMx
MjE5MDM0YWJiMDY1MmRlMjNkOWNlMmQxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdl
cy5pbgpAQCAtMjQsOSArMjQsOSBAQAogI2lmIFVTRShMSUJXRUJSVEMpICYmIFBMQVRGT1JNKENP
Q09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IExpYldlYlJUQ0NvZGVj
c1Byb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIENyZWF0ZUgyNjREZWNvZGVyKFdlYktpdDo6UlRD
RGVjb2RlcklkZW50aWZpZXIgaWQpCi0gICAgQ3JlYXRlSDI2NURlY29kZXIoV2ViS2l0OjpSVENE
ZWNvZGVySWRlbnRpZmllciBpZCkKLSAgICBDcmVhdGVWUDlEZWNvZGVyKFdlYktpdDo6UlRDRGVj
b2RlcklkZW50aWZpZXIgaWQpCisgICAgQ3JlYXRlSDI2NERlY29kZXIoV2ViS2l0OjpSVENEZWNv
ZGVySWRlbnRpZmllciBpZCwgYm9vbCB1c2VSZW1vdGVGcmFtZXMpCisgICAgQ3JlYXRlSDI2NURl
Y29kZXIoV2ViS2l0OjpSVENEZWNvZGVySWRlbnRpZmllciBpZCwgYm9vbCB1c2VSZW1vdGVGcmFt
ZXMpCisgICAgQ3JlYXRlVlA5RGVjb2RlcihXZWJLaXQ6OlJUQ0RlY29kZXJJZGVudGlmaWVyIGlk
LCBib29sIHVzZVJlbW90ZUZyYW1lcykKICAgICBSZWxlYXNlRGVjb2RlcihXZWJLaXQ6OlJUQ0Rl
Y29kZXJJZGVudGlmaWVyIGlkKQogICAgIERlY29kZUZyYW1lKFdlYktpdDo6UlRDRGVjb2Rlcklk
ZW50aWZpZXIgaWQsIHVpbnQzMl90IHRpbWVTdGFtcCwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEp
CiAgICAgU2V0RnJhbWVTaXplKFdlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXIgaWQsIHVpbnQx
Nl90IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQpCkBAIC0zNCw3ICszNCw3IEBAIG1lc3NhZ2VzIC0+
IExpYldlYlJUQ0NvZGVjc1Byb3h5IE5vdFJlZkNvdW50ZWQgewogICAgIENyZWF0ZUVuY29kZXIo
V2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwgU3RyaW5nIGZvcm1hdE5hbWUsIFZlY3Rv
cjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBwYXJhbWV0ZXJzLCBib29sIHVzZUxvd0xhdGVu
Y3kpOwogICAgIFJlbGVhc2VFbmNvZGVyKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQp
CiAgICAgSW5pdGlhbGl6ZUVuY29kZXIoV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwg
dWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhlaWdodCwgdW5zaWduZWQgc3RhcnRCaXRyYXRlLCB1
bnNpZ25lZCBtYXhCaXRyYXRlLCB1bnNpZ25lZCBtaW5CaXRyYXRlLCB1aW50MzJfdCBtYXhGcmFt
ZXJhdGUpCi0gICAgRW5jb2RlRnJhbWUoV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwg
V2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxlLCB1aW50MzJfdCB0aW1lU3RhbXAsIGJv
b2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSkKKyAgICBFbmNvZGVGcmFtZShXZWJLaXQ6OlJUQ0Vu
Y29kZXJJZGVudGlmaWVyIGlkLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUsIHVp
bnQzMl90IHRpbWVTdGFtcCwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lLCBzdGQ6Om9wdGlv
bmFsPFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2U+IHNhbXBsZVJlZmVyZW5j
ZSkKICAgICBTZXRFbmNvZGVSYXRlcyhXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyIGlkLCB1
aW50MzJfdCBiaXRSYXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpCiAgICAgU2V0U2hhcmVkVmlkZW9G
cmFtZVNlbWFwaG9yZShXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyIGlkLCBJUEM6OlNlbWFw
aG9yZSBzZW1hcGhvcmUpCiAgICAgU2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeShXZWJLaXQ6OlJU
Q0VuY29kZXJJZGVudGlmaWVyIGlkLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHN0
b3JhZ2VIYW5kbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQppbmRleCAyMmUyMDZhYjlhOTMyYTU5YmNlZDUzMzkz
YmRjOGIzMDFhYzY4MzRiLi5lZGM2ZDY2NjY3YmRiM2ZhYWEwNzljYzM4YWU1YmU0Njk2MGQxN2Vi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjc1Byb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzUHJveHkubW0KQEAgLTMyLDIxICszMiwyNyBAQAogI2ltcG9ydCAiR1BVUHJvY2Vz
cy5oIgogI2ltcG9ydCAiTGliV2ViUlRDQ29kZWNzTWVzc2FnZXMuaCIKICNpbXBvcnQgIkxpYldl
YlJUQ0NvZGVjc1Byb3h5TWVzc2FnZXMuaCIKKyNpbXBvcnQgIlJlbW90ZVZpZGVvRnJhbWVJZGVu
dGlmaWVyLmgiCisjaW1wb3J0ICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIgogI2ltcG9y
dCAiU2hhcmVkVmlkZW9GcmFtZS5oIgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CiAjaW1wb3J0IDxXZWJDb3JlL0NWVXRpbGl0aWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xpYldl
YlJUQ1Byb3ZpZGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL01lZGlhU2FtcGxlQVZGT2JqQy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9SZW1vdGVWaWRlb1NhbXBsZS5oPgogI2ltcG9ydCA8d2VicnRjL3Nk
ay9XZWJLaXQvV2ViS2l0RGVjb2Rlci5oPgogI2ltcG9ydCA8d2VicnRjL3Nkay9XZWJLaXQvV2Vi
S2l0RW5jb2Rlci5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvTWVk
aWFUaW1lLmg+CiAKKyNpbXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogTGliV2ViUlRDQ29kZWNzUHJveHk6OkxpYldlYlJUQ0NvZGVjc1By
b3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24pCiAgICAgOiBtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29ubmVjdGlvbikKICAgICAsIG1fcXVldWUoY29ubmVjdGlv
bi5ncHVQcm9jZXNzKCkubGliV2ViUlRDQ29kZWNzUXVldWUoKSkKKyAgICAsIG1fdmlkZW9GcmFt
ZU9iamVjdEhlYXAoY29ubmVjdGlvbi52aWRlb0ZyYW1lT2JqZWN0SGVhcCgpKQogewogICAgIG1f
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuYWRkVGhyZWFkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCB0aGlzKTsKIH0KQEAgLTc1LDM5ICs4MSw1MiBAQCB2b2lkIExpYldlYlJUQ0NvZGVjc1By
b3h5OjpjbG9zZSgpCiAgICAgfSk7CiB9CiAKLXN0YXRpYyBGdW5jdGlvbjx2b2lkKENWUGl4ZWxC
dWZmZXJSZWYgcGl4ZWxCdWZmZXIsIHVpbnQzMl90IHRpbWVTdGFtcE5zLCB1aW50MzJfdCB0aW1l
U3RhbXApPiBjcmVhdGVEZWNvZGVyQ2FsbGJhY2soUlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cykKK3N0YXRpYyBGdW5jdGlvbjx2b2lkKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIHVp
bnQzMl90IHRpbWVTdGFtcE5zLCB1aW50MzJfdCB0aW1lU3RhbXApPiBjcmVhdGVEZWNvZGVyQ2Fs
bGJhY2soUlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgYm9vbCB1c2VSZW1vdGVGcmFtZXMp
CiB7Ci0gICAgcmV0dXJuIFtjb25uZWN0aW9uID0gUmVmIHsgZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jb25uZWN0aW9uKCkgfSwgcmVzb3VyY2VPd25lciA9IGdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3Mud2ViUHJvY2Vzc0lkZW50aXR5KCksIGlkZW50aWZpZXJdIChDVlBpeGVsQnVmZmVyUmVm
IHBpeGVsQnVmZmVyLCB1aW50MzJfdCB0aW1lU3RhbXBOcywgdWludDMyX3QgdGltZVN0YW1wKSB7
Ci0gICAgICAgIGlmIChhdXRvIHNhbXBsZSA9IFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlOjpj
cmVhdGUocGl4ZWxCdWZmZXIsIE1lZGlhVGltZSh0aW1lU3RhbXBOcywgMSkpKSB7Ci0gICAgICAg
ICAgICBpZiAocmVzb3VyY2VPd25lcikKLSAgICAgICAgICAgICAgICBzYW1wbGUtPnNldE93bmVy
c2hpcElkZW50aXR5KHJlc291cmNlT3duZXIpOwotICAgICAgICAgICAgY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzOjpDb21wbGV0ZWREZWNvZGluZyB7IGlkZW50aWZp
ZXIsIHRpbWVTdGFtcCwgKnNhbXBsZSB9LCAwKTsKKyAgICByZXR1cm4gW2Nvbm5lY3Rpb24gPSBS
ZWYgeyBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKSB9LCByZXNvdXJjZU93
bmVyID0gZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy53ZWJQcm9jZXNzSWRlbnRpdHkoKSwgdmlk
ZW9GcmFtZU9iamVjdEhlYXAgPSBSZWYgeyBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLnZpZGVv
RnJhbWVPYmplY3RIZWFwKCkgfSwgaWRlbnRpZmllciwgdXNlUmVtb3RlRnJhbWVzXSAoQ1ZQaXhl
bEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgdWludDMyX3QgdGltZVN0YW1wTnMsIHVpbnQzMl90IHRp
bWVTdGFtcCkgIG11dGFibGUgeworICAgICAgICBhdXRvIHNhbXBsZSA9IFdlYkNvcmU6Ok1lZGlh
U2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUocGl4ZWxCdWZmZXIsIFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lLCBmYWxzZSwgTWVkaWFUaW1lKHRpbWVTdGFt
cE5zLCAxKSwgeyB9KTsKKyAgICAgICAgaWYgKCFzYW1wbGUpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgYXV0byByZW1vdGVTYW1wbGUgPSBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBs
ZTo6Y3JlYXRlKCpzYW1wbGUpOworICAgICAgICBpZiAoIXJlbW90ZVNhbXBsZSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBpZiAocmVzb3VyY2VPd25lcikKKyAgICAgICAgICAgIHJl
bW90ZVNhbXBsZS0+c2V0T3duZXJzaGlwSWRlbnRpdHkocmVzb3VyY2VPd25lcik7CisKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj4gcmVtb3RlSWRlbnRp
ZmllcjsKKyAgICAgICAgaWYgKHVzZVJlbW90ZUZyYW1lcykgeworICAgICAgICAgICAgcmVtb3Rl
SWRlbnRpZmllciA9IHZpZGVvRnJhbWVPYmplY3RIZWFwLT5jcmVhdGVSZW1vdGVWaWRlb0ZyYW1l
KHNhbXBsZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgICAgIHJlbW90ZVNhbXBsZS0+Y2xl
YXJJT1N1cmZhY2UoKTsKICAgICAgICAgfQorCisgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OkxpYldlYlJUQ0NvZGVjczo6Q29tcGxldGVkRGVjb2RpbmcgeyBpZGVudGlmaWVyLCB0
aW1lU3RhbXAsICpyZW1vdGVTYW1wbGUsIHJlbW90ZUlkZW50aWZpZXIgfSwgMCk7CiAgICAgfTsK
IH0KIAotdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlSDI2NERlY29kZXIoUlRDRGVj
b2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNy
ZWF0ZUgyNjREZWNvZGVyKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgdXNl
UmVtb3RlRnJhbWVzKQogewogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgQVNTRVJUKCFtX2RlY29kZXJzLmNvbnRhaW5zKGlk
ZW50aWZpZXIpKTsKLSAgICBtX2RlY29kZXJzLmFkZChpZGVudGlmaWVyLCB3ZWJydGM6OmNyZWF0
ZUxvY2FsSDI2NERlY29kZXIobWFrZUJsb2NrUHRyKGNyZWF0ZURlY29kZXJDYWxsYmFjayhpZGVu
dGlmaWVyLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKS5nZXQoKSkpOworICAgIG1fZGVj
b2RlcnMuYWRkKGlkZW50aWZpZXIsIHdlYnJ0Yzo6Y3JlYXRlTG9jYWxIMjY0RGVjb2RlcihtYWtl
QmxvY2tQdHIoY3JlYXRlRGVjb2RlckNhbGxiYWNrKGlkZW50aWZpZXIsIG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcywgdXNlUmVtb3RlRnJhbWVzKSkuZ2V0KCkpKTsKIH0KIAotdm9pZCBMaWJX
ZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlSDI2NURlY29kZXIoUlRDRGVjb2RlcklkZW50aWZpZXIg
aWRlbnRpZmllcikKK3ZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZUgyNjVEZWNvZGVy
KFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgdXNlUmVtb3RlRnJhbWVzKQog
ewogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9s
b2NrIH07CiAgICAgQVNTRVJUKCFtX2RlY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKLSAg
ICBtX2RlY29kZXJzLmFkZChpZGVudGlmaWVyLCB3ZWJydGM6OmNyZWF0ZUxvY2FsSDI2NURlY29k
ZXIobWFrZUJsb2NrUHRyKGNyZWF0ZURlY29kZXJDYWxsYmFjayhpZGVudGlmaWVyLCBtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MpKS5nZXQoKSkpOworICAgIG1fZGVjb2RlcnMuYWRkKGlkZW50
aWZpZXIsIHdlYnJ0Yzo6Y3JlYXRlTG9jYWxIMjY1RGVjb2RlcihtYWtlQmxvY2tQdHIoY3JlYXRl
RGVjb2RlckNhbGxiYWNrKGlkZW50aWZpZXIsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcywg
dXNlUmVtb3RlRnJhbWVzKSkuZ2V0KCkpKTsKIH0KIAotdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94
eTo6Y3JlYXRlVlA5RGVjb2RlcihSVENEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyKQordm9p
ZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlVlA5RGVjb2RlcihSVENEZWNvZGVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBib29sIHVzZVJlbW90ZUZyYW1lcykKIHsKICAgICBBU1NFUlQoIWlz
TWFpblJ1bkxvb3AoKSk7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIEFTU0VS
VCghbV9kZWNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7Ci0gICAgbV9kZWNvZGVycy5hZGQo
aWRlbnRpZmllciwgd2VicnRjOjpjcmVhdGVMb2NhbFZQOURlY29kZXIobWFrZUJsb2NrUHRyKGNy
ZWF0ZURlY29kZXJDYWxsYmFjayhpZGVudGlmaWVyLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MpKS5nZXQoKSkpOworICAgIG1fZGVjb2RlcnMuYWRkKGlkZW50aWZpZXIsIHdlYnJ0Yzo6Y3Jl
YXRlTG9jYWxWUDlEZWNvZGVyKG1ha2VCbG9ja1B0cihjcmVhdGVEZWNvZGVyQ2FsbGJhY2soaWRl
bnRpZmllciwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCB1c2VSZW1vdGVGcmFtZXMpKS5n
ZXQoKSkpOwogfQogCiB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpyZWxlYXNlRGVjb2RlcihS
VENEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyKQpAQCAtMjExLDE1ICsyMzAsMjUgQEAgc3Rh
dGljIGlubGluZSB3ZWJydGM6OlZpZGVvUm90YXRpb24gdG9XZWJSVENWaWRlb1JvdGF0aW9uKFdl
YkNvcmU6Ok1lZGlhU2FtcGxlOjoKIAogLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHRoaXMg
ZnVuY3Rpb24gYWNjZXNzZXMgbV9lbmNvZGVycyB3aXRob3V0IGxvY2tpbmcuIFRoaXMgaXMgc2Fm
ZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gcnVucyBvbiB0aGUgbGliV2ViUlRDQ29kZWNzUXVldWUK
IC8vIGFuZCBtX2VuY29kZXJzIG9ubHkgZ2V0IG1vZGlmaWVkIG9uIHRoaXMgcXVldWUuCi12b2lk
IExpYldlYlJUQ0NvZGVjc1Byb3h5OjplbmNvZGVGcmFtZShSVENFbmNvZGVySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHNhbXBsZSwgdWludDMyX3Qg
dGltZVN0YW1wLCBib29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUpCit2b2lkIExpYldlYlJUQ0Nv
ZGVjc1Byb3h5OjplbmNvZGVGcmFtZShSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHNhbXBsZSwgdWludDMyX3QgdGltZVN0YW1wLCBi
b29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUsIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFt
ZVJlYWRSZWZlcmVuY2U+IHNhbXBsZVJlZmVyZW5jZSkKIHsKKyAgICBSZXRhaW5QdHI8Q1ZQaXhl
bEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXI7CisgICAgaWYgKHNhbXBsZVJlZmVyZW5jZSkgeworICAg
ICAgICBhdXRvIHNhbXBsZSA9IG1fdmlkZW9GcmFtZU9iamVjdEhlYXAtPnJldGlyZShXVEZNb3Zl
KCpzYW1wbGVSZWZlcmVuY2UpLCAwX3MpOworICAgICAgICBpZiAoIXNhbXBsZSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBhdXRvIHBsYXRmb3JtU2FtcGxlID0gc2FtcGxlLT5wbGF0
Zm9ybVNhbXBsZSgpOworICAgICAgICBBU1NFUlQocGxhdGZvcm1TYW1wbGUudHlwZSA9PSBXZWJD
b3JlOjpQbGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVCdWZmZXJUeXBlKTsKKyAgICAgICAgcGl4ZWxC
dWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihQQUw6OkNNU2FtcGxlQnVmZmVy
R2V0SW1hZ2VCdWZmZXIocGxhdGZvcm1TYW1wbGUuc2FtcGxlLmNtU2FtcGxlQnVmZmVyKSk7Cisg
ICAgfQorCiAgICAgQVNTRVJUKGZpbmRFbmNvZGVyV2l0aG91dExvY2soaWRlbnRpZmllcikpOwog
ICAgIGF1dG8qIGVuY29kZXIgPSBmaW5kRW5jb2RlcldpdGhvdXRMb2NrKGlkZW50aWZpZXIpOwog
ICAgIGlmICghZW5jb2RlcikKICAgICAgICAgcmV0dXJuOwogCiAjaWYgIVBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQotICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBwaXhlbEJ1ZmZlcjsKICAg
ICBpZiAoc2FtcGxlLnN1cmZhY2UoKSkgewogICAgICAgICBpZiAoYXV0byBidWZmZXIgPSBXZWJD
b3JlOjpjcmVhdGVDVlBpeGVsQnVmZmVyKHNhbXBsZS5zdXJmYWNlKCkpKQogICAgICAgICAgICAg
cGl4ZWxCdWZmZXIgPSBXVEZNb3ZlKCpidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggNTFlOGEz
N2Q3YWMyYjMyNDdiYTcwZDk0MDRmMjI4MTNkNmVjYjFmZS4uYWM5ODVkZWZhYmM0ZTFjNDlkNjcx
NTUyNDNkYTUzMDQ3NjlkYTNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAK
ICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCiAjaW5jbHVk
ZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1
ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oPgpAQCAt
NDIsNiArNDMsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIG1lZGlhUmVjb3JkZXJEZWZhdWx0VGltZW91
dCB7IDFfcyB9OwogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFSZWNvcmRlcj4gUmVtb3Rl
TWVkaWFSZWNvcmRlcjo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MsIE1lZGlhUmVjb3JkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJv
b2wgcmVjb3JkQXVkaW8sIGJvb2wgcmVjb3JkVmlkZW8sIGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2
YXRlT3B0aW9ucyYgb3B0aW9ucykKIHsKQEAgLTU1LDYgKzU3LDcgQEAgUmVtb3RlTWVkaWFSZWNv
cmRlcjo6UmVtb3RlTWVkaWFSZWNvcmRlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVD
b25uZWN0aW8KICAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX3dy
aXRlcihXVEZNb3ZlKHdyaXRlcikpCisgICAgLCBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwKGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MudmlkZW9GcmFtZU9iamVjdEhlYXAoKSkKIHsKICAgICBpZiAo
cmVjb3JkQXVkaW8pCiAgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWU8Q0FSaW5nQnVm
ZmVyPigpOwpAQCAtODYsMTAgKzg5LDE2IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6YXVk
aW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZSB0aW1lLCB1aW50NjRfdCBudW1iZXJPCiAgICAg
bV93cml0ZXItPmFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKCptX2F1ZGlvQnVmZmVyTGlzdCwgbV9k
ZXNjcmlwdGlvbiwgdGltZSwgbnVtYmVyT2ZGcmFtZXMpOwogfQogCi12b2lkIFJlbW90ZU1lZGlh
UmVjb3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxl
JiYgcmVtb3RlU2FtcGxlKQordm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2
YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW90ZVNhbXBsZSwgc3RkOjpv
cHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZT4gc2FtcGxlUmVmZXJlbmNlKQog
ewogICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gc2FtcGxlOwotICAgIGlmICghcmVtb3RlU2FtcGxl
LnN1cmZhY2UoKSkgeworICAgIGlmIChzYW1wbGVSZWZlcmVuY2UpIHsKKyAgICAgICAgc2FtcGxl
ID0gbV92aWRlb0ZyYW1lT2JqZWN0SGVhcC0+cmV0aXJlKFdURk1vdmUoKnNhbXBsZVJlZmVyZW5j
ZSksIG1lZGlhUmVjb3JkZXJEZWZhdWx0VGltZW91dCk7CisgICAgICAgIGlmICghc2FtcGxlKSB7
CisgICAgICAgICAgICAvLyBJbiBjYXNlIG9mIEdQVVByb2Nlc3MgY3Jhc2gsIHdlIG1pZ2h0IGVu
cXVldWUgcHJldmlvdXMgR1BVUHJvY2VzcyBzYW1wbGVzLCBpZ25vcmUgdGhlbS4KKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoIXJlbW90ZVNhbXBsZS5zdXJm
YWNlKCkpIHsKICAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IG1fc2hhcmVkVmlkZW9GcmFtZVJl
YWRlci5yZWFkKCk7CiAgICAgICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1l
ZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlci5oCmluZGV4IGM2NjI5ZGJjNmNhYmIzNmY2MWI3ZTQ2MjdkMWY1MDUwOTM3NjVh
MDYuLjYwYjhkMDIxNGU3N2E1M2NjMDQ1YTBmOWZlYjgxYTM5MDQ5ZDNkZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5o
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
Ik1lZGlhUmVjb3JkZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFy
ZWRNZW1vcnkuaCIKICNpbmNsdWRlICJTaGFyZWRWaWRlb0ZyYW1lLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaD4KQEAgLTUyLDYgKzUzLDcgQEAgc3RydWN0
IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9uczsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXA7CiBjbGFzcyBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTsKIAogY2xhc3MgUmVtb3RlTWVk
aWFSZWNvcmRlciA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewpAQCAtNzIsNyArNzQs
NyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBhdWRp
b1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIGNv
bnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQ2NF90IG51bWJlck9m
RnJhbWVzKTsKICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRpbWUsIHVpbnQ2
NF90IG51bWJlck9mRnJhbWVzKTsKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNv
cmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYpOworICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUo
V2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiwgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0Zy
YW1lUmVhZFJlZmVyZW5jZT4pOwogICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYpOwogICAgIHZvaWQgc3RvcFJl
Y29yZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcGF1c2UoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTkwLDYgKzkyLDcgQEAgcHJpdmF0ZToKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VUcmFuc2ZlclNlc3Npb25WVD4gbV9pbWFn
ZVRyYW5zZmVyU2Vzc2lvbjsKIAogICAgIFNoYXJlZFZpZGVvRnJhbWVSZWFkZXIgbV9zaGFyZWRW
aWRlb0ZyYW1lUmVhZGVyOworICAgIFJlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gbV92
aWRlb0ZyYW1lT2JqZWN0SGVhcDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5p
bgppbmRleCBhY2FlZjhiOGM0MGRiZDVkN2ZiOWI2Yzg4NDhmOWRhNDY4ODcxNDkzLi40OThmMjgx
YWY4MDE4NzhlMDU0ZDMxZWU2ZWQyYjc5NzA4YjkwZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1l
c3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBACiBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVJlY29y
ZGVyIE5vdFJlZkNvdW50ZWQgewogICAgIEF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKFdlYktp
dDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykK
ICAgICBBdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90IG51bWJl
ck9mRnJhbWVzKQotICAgIFZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVv
U2FtcGxlIHNhbXBsZSkKKyAgICBWaWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVW
aWRlb1NhbXBsZSBzYW1wbGUsIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1l
UmVhZFJlZmVyZW5jZT4gcmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UpCiAgICAgRmV0Y2hE
YXRhKCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSBidWZmZXIsIGRvdWJsZSB0aW1lQ29kZSkgQXN5
bmMKICAgICBTdG9wUmVjb3JkaW5nKCkgLT4gKCkgQXN5bmMKICAgICBQYXVzZSgpIC0+ICgpIEFz
eW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKaW5kZXggNzI0YThjOTZiN2U3
ZTVlMGRiYWJhMDgyMzFiYjhiNzhmOWJiZjBjMC4uZTZmYzY3N2M3MGNkMWQ3NDljNjk3ZDYyMWRl
MTlhMzViZjI0ZWZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcApAQCAt
MjgsNiArMjgsOCBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgIklQQ1Rlc3Rlci5oIgorI2lu
Y2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlVHJhbnNm
ZXJTZXNzaW9uVlQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLmg+CkBAIC0zNSwxOCArMzcsMjIgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVZp
ZGVvU2FtcGxlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworc3RhdGljIGNvbnN0ZXhwciBTZWNv
bmRzIGRlZmF1bHRUaW1lb3V0IHsgMV9zIH07CisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Ci1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBSZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikK
K3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGdwdUNvbm5lY3Rpb24sIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQogewotICAgIGF1dG8gbGF5
ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPihuZXcg
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKGlkZW50aWZpZXIsIFdURk1vdmUoY29ubmVj
dGlvbikpKTsKKyAgICBhdXRvIGxheWVyID0gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcj4obmV3IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihncHVD
b25uZWN0aW9uLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rpb24pKSk7CiAgICAgcmV0dXJu
IGxheWVyLT5tX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciA/IFdURk1vdmUobGF5ZXIpIDogbnVs
bHB0cjsKIH0KIAotUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCi0gICAgOiBtX2lkZW50
aWZpZXIoaWRlbnRpZmllcikKK1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6UmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNv
bm5lY3Rpb24sIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwg
UmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQorICAgIDogbV9ncHVDb25uZWN0aW9u
KGdwdUNvbm5lY3Rpb24pCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1f
Y29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICwgbV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIoTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZSgqdGhpcykpCisg
ICAgLCBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwKG1fZ3B1Q29ubmVjdGlvbi52aWRlb0ZyYW1lT2Jq
ZWN0SGVhcCgpKQogewogICAgIEFTU0VSVChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik7CiB9
CkBAIC0xMTMsNyArMTE5LDIzIEBAIHZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjpwYXVzZSgpCiAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnBhdXNlKCk7CiB9CiAK
LXZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKFJlbW90
ZVZpZGVvU2FtcGxlJiYgcmVtb3RlU2FtcGxlKQordm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UmJiBz
YW1wbGUpCit7CisgICAgYXV0byBtZWRpYVNhbXBsZSA9IG1fdmlkZW9GcmFtZU9iamVjdEhlYXAt
PnJldGlyZShXVEZNb3ZlKHNhbXBsZSksIGRlZmF1bHRUaW1lb3V0KTsKKyAgICBpZiAoIW1lZGlh
U2FtcGxlKSB7CisgICAgICAgIC8vIEluIGNhc2Ugb2YgR1BVUHJvY2VzcyBjcmFzaCwgd2UgbWln
aHQgZW5xdWV1ZSBwcmV2aW91cyBHUFVQcm9jZXNzIHNhbXBsZXMsIGlnbm9yZSB0aGVtLgorICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVChpczxNZWRpYVNhbXBsZUFWRk9iakM+KG1l
ZGlhU2FtcGxlKSk7CisgICAgaWYgKCFpczxNZWRpYVNhbXBsZUFWRk9iakM+KG1lZGlhU2FtcGxl
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgYXZmTWVkaWFTYW1wbGUgPSBkb3duY2Fz
dDxNZWRpYVNhbXBsZUFWRk9iakM+KCptZWRpYVNhbXBsZSk7CisgICAgTWVkaWFTYW1wbGVBVkZP
YmpDOjpzZXRBc0Rpc3BsYXlJbW1lZGlhdGVseShhdmZNZWRpYVNhbXBsZSk7CisgICAgbV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXItPmVucXVldWVTYW1wbGUoYXZmTWVkaWFTYW1wbGUpOworfQor
Cit2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZUNWKFdl
YkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtb3RlU2FtcGxlKQogewogICAgIFJlZlB0cjxN
ZWRpYVNhbXBsZT4gc2FtcGxlOwogICAgIGlmICghcmVtb3RlU2FtcGxlLnN1cmZhY2UoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKaW5kZXggNzI1YjNkMjZiNzFjNzg4NmRjNDg4
ODI3ZDBhNmY3ZDI1MmFhN2EwZC4uODAyYzkwZmU5ZWI2NjRiYTkzMjFkN2E4YmRlNWQ5ODRmNDAz
ZjFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCkBAIC0zMCwxMCArMzAsMTIg
QEAKICNpbmNsdWRlICJMYXllckhvc3RpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIlJlbW90ZVZp
ZGVvRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNoYXJlZFZpZGVvRnJhbWUuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRp
bWUuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkQXNzZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOwpAQCAtNDIsMTEgKzQ0LDEzIEBA
IGNsYXNzIFJlbW90ZVZpZGVvU2FtcGxlOwogfTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CitjbGFz
cyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXA7CiAKIGNsYXNzIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciA6IHB1YmxpYyBX
ZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNsaWVudCwgcHVibGljIElQQzo6TWVz
c2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IGNyZWF0ZShTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gY3JlYXRlKEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmLCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBS
ZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKICAgICB+UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyKCk7CiAKICAgICB1c2luZyBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNs
aWVudDo6d2Vha1B0ckZhY3Rvcnk7CkBAIC02MSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBDR1Jl
Y3QgYm91bmRzKCkgY29uc3Q7CiAgICAgCiBwcml2YXRlOgotICAgIFJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBSZWY8SVBD
OjpDb25uZWN0aW9uPiYmKTsKKyAgICBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZp
ZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYpOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CiAgICAgdm9pZCBzZXRMb2dJZGVudGlmaWVyKFN0cmluZyYmKTsKQEAgLTczLDcgKzc3LDggQEAg
cHJpdmF0ZToKICAgICB2b2lkIGZsdXNoQW5kUmVtb3ZlSW1hZ2UoKTsKICAgICB2b2lkIHBsYXko
KTsKICAgICB2b2lkIHBhdXNlKCk7Ci0gICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFdlYkNvcmU6OlJl
bW90ZVZpZGVvU2FtcGxlJiYpOworICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShSZW1vdGVWaWRlb0Zy
YW1lUmVhZFJlZmVyZW5jZSYmKTsKKyAgICB2b2lkIGVucXVldWVTYW1wbGVDVihXZWJDb3JlOjpS
ZW1vdGVWaWRlb1NhbXBsZSYmKTsKICAgICB2b2lkIGNsZWFyRW5xdWV1ZWRTYW1wbGVzKCk7CiAg
ICAgdm9pZCBzZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYpOwog
ICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeShjb25zdCBTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSYpOwpAQCAtODUsMTIgKzkwLDE2IEBAIHByaXZhdGU6CiAgICAgLy8gV2ViQ29yZTo6
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpDbGllbnQKICAgICB2b2lkIHNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllclN0YXR1c0RpZEZhaWwoKSBmaW5hbDsKIAorICAgIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlvbiBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY29uc3VtZVRo
cmVhZCk7CiAgICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciBtX2lkZW50aWZp
ZXI7CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vzc2lvblZUPiBtX2ltYWdlVHJhbnNmZXJT
ZXNzaW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcj4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsKICAgICBTaGFy
ZWRWaWRlb0ZyYW1lUmVhZGVyIG1fc2hhcmVkVmlkZW9GcmFtZVJlYWRlcjsKKyAgICBSZWY8UmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFtZU9iamVjdEhlYXA7CisgICAgVGhy
ZWFkQXNzZXJ0aW9uIG1fY29uc3VtZVRocmVhZCBOT19VTklRVUVfQUREUkVTUzsKKwogfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgppbmRl
eCBlNTA0ODMxNDFlZmVmYWZiNDNkY2E2MDhjZGMzN2Q2MjE2ZjdlY2RmLi4zY2ExZjkzMjcwNzI3
ZGUwYzJiNzU0NDdhYjg5YjY0NjMyYWJhNzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgpAQCAtMzIsNyArMzIsOCBAQCBtZXNzYWdlcyAtPiBS
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgVXBkYXRl
Qm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0IGJvdW5kcywgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb24gcm90YXRpb24pCiAgICAgRmx1c2goKQogICAgIEZsdXNoQW5kUmVtb3ZlSW1h
Z2UoKQotICAgIEVucXVldWVTYW1wbGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxl
KQorICAgIEVucXVldWVTYW1wbGUoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5j
ZSBzYW1wbGUpCisgICAgRW5xdWV1ZVNhbXBsZUNWKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxl
IHNhbXBsZSkKICAgICBDbGVhckVucXVldWVkU2FtcGxlcygpCiAgICAgUGxheSgpCiAgICAgUGF1
c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKaW5k
ZXggYTU0NDVkN2ZkNWNjYmI1YWQwMGNkZWNlYzVkMDNmNjMzNGI1ZDE1MS4uNzZlNzk5YzM1YWYy
ZWRkMjM2NmQ3Y2FjZGQzZTVlNzE5NzVjNTZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGJvb2wgUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29uCiB2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OmNy
ZWF0ZUxheWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwg
Ym9vbCBoaWRlUm9vdExheWVyLCBXZWJDb3JlOjpJbnRTaXplIHNpemUsIExheWVyQ3JlYXRpb25D
YWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaWRlbnRpZmllciwgaGlkZVJvb3RMYXllciwgc2l6
ZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0
byBsYXllciA9IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3JlYXRlKGlkZW50aWZp
ZXIsIG1fY29ubmVjdGlvbi5jb3B5UmVmKCkpOworICAgICAgICBhdXRvIGxheWVyID0gUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUobV9jb25uZWN0aW9uVG9XZWJQcm9jZXNz
LCBpZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29weVJlZigpKTsKICAgICAgICAgYXV0byYgbGF5
ZXJSZWZlcmVuY2UgPSAqbGF5ZXI7CiAgICAgICAgIGxheWVyUmVmZXJlbmNlLmluaXRpYWxpemUo
aGlkZVJvb3RMYXllciwgc2l6ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBpZGVudGlmaWVyLCBsYXllciA9IFdURk1v
dmUobGF5ZXIpXShhdXRvIGxheWVySWQpIG11dGFibGUgewogICAgICAgICAgICAgZGlzcGF0Y2hU
b1RocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGlkZW50aWZpZXIsIGxheWVyID0gV1RGTW92ZShs
YXllciksIGxheWVySWQgPSBXVEZNb3ZlKGxheWVySWQpXSgpIG11dGFibGUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggNzU4ZDUwNTU2ZmYyZjZlNDczNzdk
MTRlODI2NmJjNWUzZWFjNDFhNi4uMjI0YmZmZjZmOGU2YmJmMDA3YTI2NTUwYzMxNDhkZDMzNTNl
YTEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0zNDcs
NiArMzQ3LDkgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToK
ICAgICAgICAgJ1dlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXInLAogICAg
ICAgICAnV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJLaXQ6OlJlbW90ZU1lZGlhU291cmNlSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlJl
bW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlVmlkZW9G
cmFtZVdyaXRlUmVmZXJlbmNlJywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVJl
YWRSZWZlcmVuY2UnLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVu
ZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlU291cmNlQnVmZmVySWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyJywKQEAg
LTg4Myw2ICs4ODYsOCBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dl
YktpdDo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbic6IFsnIlBheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb25XZWJLaXQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6UGF5bWVudFNldHVwRmVhdHVyZXMn
OiBbJyJBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzV2ViS2l0LmgiJ10sCiAgICAgICAgICdX
ZWJLaXQ6OlJlc3BlY3RTZWxlY3Rpb25BbmNob3InOiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKKyAg
ICAgICAgJ1dlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UnOiBbJyJSZW1vdGVW
aWRlb0ZyYW1lSWRlbnRpZmllci5oIiddLAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVWaWRlb0Zy
YW1lV3JpdGVSZWZlcmVuY2UnOiBbJyJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIiddLAog
ICAgICAgICAnV2ViS2l0OjpTZWxlY3Rpb25GbGFncyc6IFsnIkdlc3R1cmVUeXBlcy5oIiddLAog
ICAgICAgICAnV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCc6IFsnIkdlc3R1cmVUeXBlcy5oIiddLAog
ICAgICAgICAnV2ViS2l0OjpUYXBJZGVudGlmaWVyJzogWyciSWRlbnRpZmllclR5cGVzLmgiJ10s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmNwcAppbmRleCBiYWJhMGIwODg3N2M0NzJhNTA3MWZm
M2FhM2Q4ODAxMDJmNTdjODlhLi5hOGQyNTdlYzY3MzVmMTBkYTU5NTQ4MzAwY2U2ZmUzZjJjZGY5
YmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogCisjaW5jbHVkZSA8
YXRvbWljPgogI2luY2x1ZGUgPGRsZmNuLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRl
IDx1bmlzdGQuaD4KQEAgLTQ4LDYgKzQ5LDggQEAgc3RydWN0IFNlbmRNZXNzYWdlQ29udGV4dCB7
CiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uOwogICAgIHN0ZDo6YXRvbWljPGJvb2w+
JiBzaG91bGRTdG9wOwogfTsKKworc3RhdGljIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBvbmdvaW5n
SVBDVGVzdHMgeyAwIH07CiB9CiAKIGV4dGVybiAiQyIgewpAQCAtMTE1LDcgKzExOCw5IEBAIHZv
aWQgSVBDVGVzdGVyOjpzdGFydE1lc3NhZ2VUZXN0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgU3RyaW5nJiYgZHJpdmVyCiAgICAgaWYgKCFtX3Rlc3RRdWV1ZSkKICAgICAgICAgbV90
ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiSVBDIHRlc3Rpbmcgd29yayBxdWV1ZSIpOwog
ICAgIG1fdGVzdFF1ZXVlLT5kaXNwYXRjaChbY29ubmVjdGlvbiA9IFJlZiB7IGNvbm5lY3Rpb24g
fSwgJnNob3VsZFN0b3AgPSBtX3Nob3VsZFN0b3AsIGRyaXZlck5hbWUgPSBXVEZNb3ZlKGRyaXZl
ck5hbWUpXSgpIG11dGFibGUgeworICAgICAgICBvbmdvaW5nSVBDVGVzdHMrKzsKICAgICAgICAg
cnVuTWVzc2FnZVRlc3RpbmcoY29ubmVjdGlvbiwgc2hvdWxkU3RvcCwgV1RGTW92ZShkcml2ZXJO
YW1lKSk7CisgICAgICAgIG9uZ29pbmdJUENUZXN0cy0tOwogICAgIH0pOwogfQogCkBAIC0xMzQs
NiArMTM5LDExIEBAIHZvaWQgSVBDVGVzdGVyOjpzdG9wSWZOZWVkZWQoKQogICAgIH0KIH0KIAor
Ym9vbCBpc1Rlc3RpbmdJUEMoKQoreworICAgIHJldHVybiBvbmdvaW5nSVBDVGVzdHM7Cit9CisK
IH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5oCmluZGV4IDQ0OTkwOTM1YmQ1NTFk
NGVlYjU4MzU0M2UxMmVjZmQzYjg0NzE4NWUuLmVhNDkzMzU2ZDQzOTJjM2ZhN2I1ZjdmNWUyYjU2
NGY2NTMzMjdmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5oCkBAIC0yNSw3ICsyNSw2IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKIAogI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPGF0b21pYz4KQEAgLTMzLDYgKzMyLDE0
IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCisjZGVmaW5lIEFTU0VSVF9JU19URVNUSU5HX0lQ
QygpIEFTU0VSVChpc1Rlc3RpbmdJUEMoKSwgIlVudHJ1c3RlZCBjb25uZWN0aW9uIHNlbnQgaW52
YWxpZCBkYXRhLiBTaG91bGQgb25seSBoYXBwZW4gd2hlbiB0ZXN0aW5nIElQQy4iKQorCisjaWYg
RU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKworLy8gRnVuY3Rpb24gdG8gY2hlY2sgd2hlbiBhc3Nl
cnRpbmcgSVBDLXJlbGF0ZWQgZmFpbHVyZXMsIHNvIHRoYXQgSVBDIHRlc3Rpbmcgc2tpcHMgdGhl
IGFzc2VydGlvbnMKKy8vIGFuZCBleHBvc2VzIGJ1Z3MgdW5kZXJuZWF0aC4KK2Jvb2wgaXNUZXN0
aW5nSVBDKCk7CisKIGNsYXNzIElQQ1Rlc3RlciBmaW5hbCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgSVBDVGVzdGVyKCk7CkBAIC01Miw2ICs1OSwxMyBAQCBw
cml2YXRlOgogICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1fc2hvdWxkU3RvcCB7IGZhbHNlIH07CiB9
OwogCisjZWxzZQorCitjb25zdGV4cHIgaW5saW5lIGJvb2wgaXNUZXN0aW5nSVBDKCkKK3sKKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKICNlbmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9PYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wMjY4Y2U1Y2ZmMWJlMzRmNDhjOTJhYzQxMDhiMmFhMWUwMmRjN2Q3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNr
ZXIuaApAQCAtMCwwICsxLDIzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQorI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDx1dGlsaXR5
PgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgor
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlm
aWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBUeXBlIGZvciB0aGUga2V5IGluIG1h
cHBpbmcgZnJvbSBvYmplY3QgaWRlbnRpZmllciByZWZlcmVuY2VzIHRvIG9iamVjdCBzdGF0ZS4K
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlIHsK
K3B1YmxpYzoKKyAgICBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlKCkgPSBkZWZhdWx0OworICAg
IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2UoVCBpZGVudGlmaWVyLCB1aW50NjRfdCB2ZXJzaW9u
KQorICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICAgICAsIG1fdmVyc2lv
bih2ZXJzaW9uKQorICAgIHsKKyAgICB9CisgICAgZXhwbGljaXQgT2JqZWN0SWRlbnRpZmllclJl
ZmVyZW5jZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogbV9pZGVu
dGlmaWVyKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQorICAgIHsKKyAgICB9CisgICAgVCBp
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgdWludDY0X3Qg
dmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsgfQorICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlJiBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBvdGhlci5tX2lkZW50aWZpZXIgPT0gbV9pZGVudGlmaWVyICYmIG90aGVy
Lm1fdmVyc2lvbiA9PSBtX3ZlcnNpb247CisgICAgfQorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllci5pc0hh
c2hUYWJsZURlbGV0ZWRWYWx1ZSgpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
ZW5jb2RlciA8PCBtX2lkZW50aWZpZXI7CisgICAgICAgIGVuY29kZXIgPDwgbV92ZXJzaW9uOwor
ICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAg
ICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VD4gaWRlbnRpZmllcjsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gdmVyc2lvbjsKKyAgICAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVy
CisgICAgICAgICAgICA+PiB2ZXJzaW9uOworICAgICAgICBpZiAoIWRlY29kZXIuaXNWYWxpZCgp
KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIE9iamVj
dElkZW50aWZpZXJSZWZlcmVuY2UgeyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgKnZlcnNpb24gfTsK
KyAgICB9Citwcml2YXRlOgorICAgIFQgbV9pZGVudGlmaWVyOworICAgIHVpbnQ2NF90IG1fdmVy
c2lvbiB7IDAgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgT2JqZWN0SWRl
bnRpZmllclJlYWRSZWZlcmVuY2UgeworcHVibGljOgorICAgIHVzaW5nIFJlZmVyZW5jZSA9IE9i
amVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD47CisgICAgT2JqZWN0SWRlbnRpZmllclJlYWRSZWZl
cmVuY2UoUmVmZXJlbmNlIHJlZmVyZW5jZSkKKyAgICAgICAgOiBtX3JlZmVyZW5jZShyZWZlcmVu
Y2UpCisgICAgeworICAgIH0KKyAgICBUIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Jl
ZmVyZW5jZS5pZGVudGlmaWVyKCk7IH0KKyAgICB1aW50NjRfdCB2ZXJzaW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWZlcmVuY2UudmVyc2lvbigpOyB9CisgICAgUmVmZXJlbmNlIHJlZmVyZW5jZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAg
ICAgZW5jb2RlciA8PCBtX3JlZmVyZW5jZTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVu
Y2U+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxSZWZlcmVuY2U+IHJlZmVyZW5jZTsKKyAgICAgICAgZGVjb2RlciA+PiByZWZlcmVuY2U7Cisg
ICAgICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gT2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UgeyBX
VEZNb3ZlKCpyZWZlcmVuY2UpIH07CisgICAgfQorCitwcml2YXRlOgorICAgIFJlZmVyZW5jZSBt
X3JlZmVyZW5jZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBPYmplY3RJZGVu
dGlmaWVyV3JpdGVSZWZlcmVuY2UgeworcHVibGljOgorICAgIHVzaW5nIFJlZmVyZW5jZSA9IE9i
amVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD47CisgICAgc3RhdGljIE9iamVjdElkZW50aWZpZXJX
cml0ZVJlZmVyZW5jZTxUPiBnZW5lcmF0ZUZvckFkZCgpIHsgcmV0dXJuIHsgeyBUOjpnZW5lcmF0
ZVRocmVhZFNhZmUoKSwgMCB9LCAwIH07IH0KKworICAgIE9iamVjdElkZW50aWZpZXJXcml0ZVJl
ZmVyZW5jZShSZWZlcmVuY2UgcmVmZXJlbmNlLCB1aW50NjRfdCBwZW5kaW5nUmVhZHMpCisgICAg
ICAgIDogbV9yZWZlcmVuY2UocmVmZXJlbmNlKQorICAgICAgICAsIG1fcGVuZGluZ1JlYWRzKHBl
bmRpbmdSZWFkcykKKyAgICB7CisgICAgfQorICAgIFQgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1fcmVmZXJlbmNlLmlkZW50aWZpZXIoKTsgfQorICAgIHVpbnQ2NF90IHZlcnNpb24oKSBj
b25zdCB7IHJldHVybiBtX3JlZmVyZW5jZS52ZXJzaW9uKCk7IH0KKyAgICB1aW50NjRfdCBwZW5k
aW5nUmVhZHMoKSBjb25zdCB7IHJldHVybiBtX3BlbmRpbmdSZWFkczsgfQorICAgIFJlZmVyZW5j
ZSByZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZTsgfQorICAgIE9iamVjdElk
ZW50aWZpZXJSZWZlcmVuY2U8VD4gcmV0aXJlZFJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIHsg
aWRlbnRpZmllcigpLCB2ZXJzaW9uKCkgKyAxIH07IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAg
ICAgICBlbmNvZGVyIDw8IG1fcmVmZXJlbmNlOworICAgICAgICBlbmNvZGVyIDw8IG1fcGVuZGlu
Z1JlYWRzOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U+IGRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWZlcmVuY2U+IHJlZmVy
ZW5jZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGVuZGluZ1JlYWRzOworCisg
ICAgICAgIGRlY29kZXIgPj4gcmVmZXJlbmNlCisgICAgICAgICAgICA+PiBwZW5kaW5nUmVhZHM7
CisgICAgICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpCisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNl
IHsgV1RGTW92ZSgqcmVmZXJlbmNlKSwgKnBlbmRpbmdSZWFkcyB9OworICAgIH0KKworcHJpdmF0
ZToKKyAgICBSZWZlcmVuY2UgbV9yZWZlcmVuY2U7CisgICAgdWludDY0X3QgbV9wZW5kaW5nUmVh
ZHMgeyAwIH07Cit9OworCisvLyBDbGFzcyB0byBnZW5lcmF0ZSByZWFkIGFuZCB3cml0ZSByZWZl
cmVuY2VzIHRvIGFuIE9iamVjdElkZW50aWZlci4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFz
cyBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlciB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIpOworcHVibGljOgorICAgIHVz
aW5nIFJlYWRSZWZlcmVuY2UgPSBPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZTxUPjsKKyAg
ICB1c2luZyBXcml0ZVJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTxU
PjsKKyAgICB1c2luZyBSZWZlcmVuY2UgPSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+Owor
CisgICAgZXhwbGljaXQgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIoVCBpZGVudGlm
aWVyKQorICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgIHsKKyAgICB9Cisg
ICAgZXhwbGljaXQgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIoUmVmZXJlbmNlIHJl
ZmVyZW5jZSkKKyAgICAgICAgOiBtX2lkZW50aWZpZXIocmVmZXJlbmNlLmlkZW50aWZpZXIoKSkK
KyAgICAgICAgLCBtX3ZlcnNpb24ocmVmZXJlbmNlLnZlcnNpb24oKSkKKyAgICB7CisgICAgfQor
ICAgIC8vIFRocmVhZCBzYWZlLgorICAgIFJlYWRSZWZlcmVuY2UgcmVhZCgpIGNvbnN0CisgICAg
eworICAgICAgICBtX3BlbmRpbmdSZWFkcysrOworICAgICAgICByZXR1cm4gUmVmZXJlbmNlIHsg
bV9pZGVudGlmaWVyLCBtX3ZlcnNpb24gfTsKKyAgICB9CisgICAgLy8gTm90IHRocmVhZCBzYWZl
LiBDbGllbnQgbXVzdCBjb29yZGluYXRlIHdyaXRlcyBhbmQgcmVhZHMgYW55d2F5LgorICAgIFdy
aXRlUmVmZXJlbmNlIHdyaXRlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiB7IHsgbV9p
ZGVudGlmaWVyLCBtX3ZlcnNpb24rKyB9LCBtX3BlbmRpbmdSZWFkcy5leGNoYW5nZSgwKSB9Owor
ICAgIH0KKyAgICBUIGlkZW50aWZpZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
aWRlbnRpZmllcjsKKyAgICB9Citwcml2YXRlOgorICAgIGNvbnN0IFQgbV9pZGVudGlmaWVyOwor
ICAgIG11dGFibGUgc3RkOjphdG9taWM8dWludDY0X3Q+IG1fcGVuZGluZ1JlYWRzIHsgMCB9Owor
ICAgIG11dGFibGUgdWludDY0X3QgbV92ZXJzaW9uIHsgMCB9OworfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gaW5saW5lIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBPYmplY3RJZGVudGlmaWVy
UmVmZXJlbmNlPFQ+IHJlZmVyZW5jZSkKK3sKKyAgICBhZGQoaGFzaGVyLCByZWZlcmVuY2UuaWRl
bnRpZmllcigpKTsKKyAgICBhZGQoaGFzaGVyLCByZWZlcmVuY2UudmVyc2lvbigpKTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPiYgcmVmZXJlbmNl
KQoreworICAgIHRzIDw8ICJPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlKCIgPDwgcmVmZXJlbmNl
LmlkZW50aWZpZXIoKSA8PCAiLCAiIDw8IHJlZmVyZW5jZS52ZXJzaW9uKCkgPDwgIikiOworICAg
IHJldHVybiB0czsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1RleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlYWRS
ZWZlcmVuY2U8VD4mIHJlZmVyZW5jZSkKK3sKKyAgICB0cyA8PCAiT2JqZWN0SWRlbnRpZmllclJl
YWRSZWZlcmVuY2UoIiA8PCByZWZlcmVuY2UuaWRlbnRpZmllcigpIDw8ICIsICIgPDwgcmVmZXJl
bmNlLnZlcnNpb24oKSA8PCAiKSI7CisgICAgcmV0dXJuIHRzOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgV2Vi
S2l0OjpPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U8VD4mIHJlZmVyZW5jZSkKK3sKKyAg
ICB0cyA8PCAiT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlKCIgPDwgcmVmZXJlbmNlLmlk
ZW50aWZpZXIoKSA8PCAiLCAiIDw8IHJlZmVyZW5jZS52ZXJzaW9uKCkgPDwgIiwgIiA8PCByZWZl
cmVuY2UucGVuZGluZ1JlYWRzKCkgPDwgIikiOworICAgIHJldHVybiB0czsKK30KKworfQorCitu
YW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM8
V2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+PiA6IFNpbXBsZUNsYXNzSGFzaFRy
YWl0czxXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4+IHsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IEhhc2hUcmFpdHM8VD46OmVtcHR5VmFs
dWVJc1plcm87Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g8
V2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+PiB7CisgICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+JiByZWZl
cmVuY2UpCisgICAgeworICAgICAgICByZXR1cm4gY29tcHV0ZUhhc2gocmVmZXJlbmNlKTsKKyAg
ICB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViS2l0OjpPYmplY3RJZGVudGlmaWVy
UmVmZXJlbmNlPFQ+JiBhLCBjb25zdCBXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8
VD4mIGIpCisgICAgeworICAgICAgICByZXR1cm4gYSA9PSBiOworICAgIH0KKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBEZWZhdWx0SGFz
aDxUPjo6c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQ7Cit9OworCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVGhyZWFkU2FmZU9iamVjdEhlYXAuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RocmVhZFNhZmVPYmplY3RIZWFwLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzViY2IyNWY1NDhlMWYyMDY1NTdmNTczZTEyMWQzM2M1ZTc4NmM0ZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RocmVhZFNhZmVPYmplY3RIZWFwLmgKQEAgLTAsMCAr
MSwyMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJJUENUZXN0ZXIuaCIKKyNp
bmNsdWRlICJPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oIgorI2luY2x1ZGUgPHd0
Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9M
b2NrLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZEFzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
VGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIENvbnRh
aW5lciB0aGF0IGhvbGRzIGlkZW50aWZpZXIgLT4gb2JqZWN0IG1hcHBpbmcgYmV0d2VlbiB0d28g
cHJvY2Vzc2VzLgorLy8gVXNlZCBpbiBzY2VuYXJpb3Mgd2hlcmUgdGhlIGhvbGRlciBwcm9jZXNz
IHByb2Nlc3NlcyBtZXNzYWdlcyB3aXRoIHRoZSBvYmplY3QgcmVmZXJlbmNlcyBpbiBtdWx0aXBs
ZQorLy8gdGhyZWFkcy4gYFRocmVhZFNhZmVPYmplY3RIZWFwYCB0cmFja3MgdGhlIHJlYWQgYW5k
IHdyaXRlIHJlZmVyZW5jZXMgdG8gdGhlIGNvbnRlbnQgcG9pbnRlZAorLy8gYnkgYSBwYXJ0aWN1
bGFyIGlkZW50aWZpZXIuCisvLyBQZW5kaW5nIHJlYWRzIG1heSBibG9jayBuZXcgd3JpdGVzLiBB
bHRlcm5hdGl2ZWx5IG5ldyB3cml0ZXMgY2FuIHNraXAgYWhlYWQgb2YgdGhlIHJlYWRzLAorLy8g
Zm9yIGV4YW1wbGUgaW4gY29weS1vbi13cml0ZSBzY2VuYXJpb3MuCisvLyBQZW5kaW5nIHdyaXRl
cyBibG9jayByZWFkcy4KKy8vIEN1cnJlbnRseSBpbXBsZW1lbnRlZCBvbmx5IGZvciByZWFkLW9u
bHkgKGNyZWF0ZS1yZWFkLWRlc3Ryb3kpIG9yIGNvcHktb24td3JpdGUgdHlwZXMsCisvLyBlLmcu
IG5vIHR3by1waGFzZSBnZXQoKSBvcGVyYXRpb25zIGFyZSBub3QgaW1wbGVtZW50ZWQgeWV0Lgor
dGVtcGxhdGU8dHlwZW5hbWUgSWRlbnRpZmllciwgdHlwZW5hbWUgSGVsZFR5cGU+CitjbGFzcyBU
aHJlYWRTYWZlT2JqZWN0SGVhcCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWRT
YWZlT2JqZWN0SGVhcDxJZGVudGlmaWVyLCBIZWxkVHlwZT4+IHsKK3B1YmxpYzoKKyAgICB1c2lu
ZyBSZWFkUmVmZXJlbmNlID0gdHlwZW5hbWUgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNr
ZXI8SWRlbnRpZmllcj46OlJlYWRSZWZlcmVuY2U7CisgICAgdXNpbmcgV3JpdGVSZWZlcmVuY2Ug
PSB0eXBlbmFtZSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcjxJZGVudGlmaWVyPjo6
V3JpdGVSZWZlcmVuY2U7CisgICAgdXNpbmcgUmVmZXJlbmNlID0gdHlwZW5hbWUgT2JqZWN0SWRl
bnRpZmllclJlZmVyZW5jZVRyYWNrZXI8SWRlbnRpZmllcj46OlJlZmVyZW5jZTsKKworICAgIHZv
aWQgYWRkKElkZW50aWZpZXIsIEhlbGRUeXBlJiYpOworCisgICAgLy8gV2FpdHMgdW50aWwgYSB3
cml0ZSBjcmVhdGVzIHRoZSByZWZlcmVuY2UgYW5kIHRoZW4gcmV0aXJlcyB0aGUgcmVhZCBvcgor
ICAgIC8vIHRpbWVzIG91dC4KKyAgICBIZWxkVHlwZSByZXRpcmUoUmVhZFJlZmVyZW5jZSYmLCBJ
UEM6OlRpbWVvdXQpOworCisgICAgLy8gSW5zZXJ0cyBhIG5ldyB2ZXJzaW9uIG9mIHRoZSBvYmpl
Y3Qgb3IgcmVtb3ZlcyBhbiBvbGQgb25lIGFuZCB0aGVuIHJldGlyZXMgdGhlIHdyaXRlIG9yCisg
ICAgLy8gdGltZXMgb3V0LgorICAgIC8vIElmIHRpbWVvdXQgaXMgcGFzc2VkLCB3YWl0cyB1bnRp
bCBwZW5kaW5nIHJlYWRzIGFyZSBkb25lLgorICAgIC8vIEl0IGlzIGEgY2FsbGVyIGVycm9yIHRv
IG5vdCB3YWl0IGFuZCBtdXRhdGUgdGhlIG9sZCBvYmplY3QuCisgICAgdm9pZCByZXRpcmUoV3Jp
dGVSZWZlcmVuY2UmJiwgc3RkOjpvcHRpb25hbDxIZWxkVHlwZT4mJiBuZXdPYmplY3QsIHN0ZDo6
b3B0aW9uYWw8SVBDOjpUaW1lb3V0Pik7CisKKyAgICB2b2lkIHJldGlyZVJlbW92ZShXcml0ZVJl
ZmVyZW5jZSYmKTsKKworICAgIHZvaWQgY2xlYXIoKTsKK3ByaXZhdGU6CisgICAgTG9jayBtX29i
amVjdHNMb2NrOworICAgIENvbmRpdGlvbiBtX29iamVjdHNDb25kaXRpb247CisgICAgc3RydWN0
IFJlZmVyZW5jZVN0YXRlIHsKKyAgICAgICAgdWludDY0X3QgcmV0aXJlZFJlYWRzIHsgMCB9Owor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaW5hbFJlYWQ7IC8vIFJlbW92ZSBhZnRl
ciBgZmluYWxSZWFkYCByZWFkcy4KKyAgICAgICAgc3RkOjpvcHRpb25hbDxIZWxkVHlwZT4gb2Jq
ZWN0OyAvLyBPYmplY3Qgb3IgdG9tYnN0b25lLgorCisgICAgICAgIFJlZmVyZW5jZVN0YXRlKCkg
PSBkZWZhdWx0OworICAgICAgICBleHBsaWNpdCBSZWZlcmVuY2VTdGF0ZShIZWxkVHlwZSYmIG9i
amVjdCkKKyAgICAgICAgICAgIDogb2JqZWN0KFdURk1vdmUob2JqZWN0KSkKKyAgICAgICAgewor
ICAgICAgICB9CisgICAgICAgIC8vIFRvbWJzdG9uZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgZXhw
bGljaXQgUmVmZXJlbmNlU3RhdGUodWludDY0X3QgZmluYWxSZWFkKQorICAgICAgICAgICAgOiBm
aW5hbFJlYWQoZmluYWxSZWFkKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICB9OworICAgIEhh
c2hNYXA8UmVmZXJlbmNlLCBSZWZlcmVuY2VTdGF0ZT4gbV9vYmplY3RzIFdURl9HVUFSREVEX0JZ
X0xPQ0sobV9vYmplY3RzTG9jayk7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJZGVudGlmaWVy
LCB0eXBlbmFtZSBIZWxkVHlwZT4KK0hlbGRUeXBlIFRocmVhZFNhZmVPYmplY3RIZWFwPElkZW50
aWZpZXIsIEhlbGRUeXBlPjo6cmV0aXJlKFJlYWRSZWZlcmVuY2UmJiByZWFkLCBJUEM6OlRpbWVv
dXQgdGltZW91dCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9vYmplY3RzTG9jayB9OworICAg
IGRvIHsKKyAgICAgICAgYXV0byBpdCA9IG1fb2JqZWN0cy5maW5kKHJlYWQucmVmZXJlbmNlKCkp
OworICAgICAgICBpZiAoaXQgIT0gbV9vYmplY3RzLmVuZCgpKSB7CisgICAgICAgICAgICBhdXRv
JiBzdGF0ZSA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAgIGlmIChzdGF0ZS5vYmplY3QpIHsKKyAg
ICAgICAgICAgICAgICBIZWxkVHlwZSByZXN1bHQgPSAqc3RhdGUub2JqZWN0OworICAgICAgICAg
ICAgICAgIHN0YXRlLnJldGlyZWRSZWFkcysrOworICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5m
aW5hbFJlYWQpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0YXRlLmZpbmFsUmVhZCA+
PSBzdGF0ZS5yZXRpcmVkUmVhZHMpOyAvLyBUcnVzdGVkIGFzc2VydCBiZWNhdXNlIHRoaXMgaXMg
ZW5zdXJlZCBvbiBgZmluYWxSZWFkYCBhc3NpZ25tZW50LgorICAgICAgICAgICAgICAgICAgICBp
ZiAoc3RhdGUuZmluYWxSZWFkID09IHN0YXRlLnJldGlyZWRSZWFkcykKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1fb2JqZWN0cy5yZW1vdmUoaXQpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBtX29iamVjdHNDb25kaXRpb24ubm90aWZ5QWxsKCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAo
IW1fb2JqZWN0c0NvbmRpdGlvbi53YWl0VW50aWwobV9vYmplY3RzTG9jaywgdGltZW91dC5kZWFk
bGluZSgpKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0gd2hpbGUgKHRydWUpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJZGVudGlmaWVyLCB0eXBlbmFt
ZSBIZWxkVHlwZT4KK3ZvaWQgVGhyZWFkU2FmZU9iamVjdEhlYXA8SWRlbnRpZmllciwgSGVsZFR5
cGU+OjpyZXRpcmUoV3JpdGVSZWZlcmVuY2UmJiB3cml0ZSwgc3RkOjpvcHRpb25hbDxIZWxkVHlw
ZT4mJiBvYmplY3QsIHN0ZDo6b3B0aW9uYWw8SVBDOjpUaW1lb3V0PiB0aW1lb3V0KQoreworICAg
IGNvbnN0IGJvb2wgd2FpdEZvclBlbmRpbmdSZWFkcyA9IHRpbWVvdXQuaGFzX3ZhbHVlKCk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fb2JqZWN0c0xvY2sgfTsKKyAgICBkbyB7CisgICAgICAgIGF1
dG8gaXQgPSBtX29iamVjdHMuZmluZCh3cml0ZS5yZWZlcmVuY2UoKSk7CisgICAgICAgIGlmIChp
dCAhPSBtX29iamVjdHMuZW5kKCkpIHsKKyAgICAgICAgICAgIGF1dG8mIHN0YXRlID0gaXQtPnZh
bHVlOworICAgICAgICAgICAgaWYgKHN0YXRlLmZpbmFsUmVhZCAmJiBzdGF0ZS5vYmplY3QpIHsK
KyAgICAgICAgICAgICAgICAvLyBXcml0ZSByZXBsYXk6IGBmaW5hbFJlYWRgIGlzIGFzc2lnbmVk
IG9uIHdyaXRlLiBDYW5ub3QgaGF2ZSB0aGUgc2FtZSB2ZXJzaW9uIHdpdGggd3JpdGVzLgorICAg
ICAgICAgICAgICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdGF0ZS5yZXRpcmVkUmVhZHMg
PiB3cml0ZS5wZW5kaW5nUmVhZHMoKSkgeworICAgICAgICAgICAgICAgIC8vIFdyaXRlIHVuZGVy
ZmxvdzogbW9yZSByZWFkcyBoYXZlIGJlZW4gZG9uZSB0aGFuIHRoZSBzZW5kZXIgY2xhaW1zIGlz
IHRoZSBtYXhpbXVtLgorICAgICAgICAgICAgICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEl0
IGlzIGxpa2VseSBhIGNhbGxlciBlcnJvciB0byB0cnkgdG8gYWRkIGEgbmV3IHJlZmVyZW5jZSB3
aXRoIHRoZSBzYW1lIGNsaWVudCBvYmplY3Qgd2l0aG91dAorICAgICAgICAgICAgLy8gd2FpdGlu
ZyBmb3IgcGVuZGluZyByZWFkcyBvbiB0aGUgb2xkIHJlZmVyZW5jZS4KKyAgICAgICAgICAgIEFT
U0VSVCh3YWl0Rm9yUGVuZGluZ1JlYWRzIHx8ICFzdGF0ZS5vYmplY3QgfHwgKnN0YXRlLm9iamVj
dCAhPSBvYmplY3QpOworCisgICAgICAgICAgICBpZiAoc3RhdGUucmV0aXJlZFJlYWRzID09IHdy
aXRlLnBlbmRpbmdSZWFkcygpIHx8ICF3YWl0Rm9yUGVuZGluZ1JlYWRzKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHN0YXRlLnJldGlyZWRSZWFkcyA8IHdyaXRlLnBlbmRpbmdSZWFkcygpKQorICAg
ICAgICAgICAgICAgICAgICBzdGF0ZS5maW5hbFJlYWQgPSB3cml0ZS5wZW5kaW5nUmVhZHMoKTsK
KyAgICAgICAgICAgICAgICBlbHNlIGlmIChzdGF0ZS5yZXRpcmVkUmVhZHMgPT0gd3JpdGUucGVu
ZGluZ1JlYWRzKCkpCisgICAgICAgICAgICAgICAgICAgIG1fb2JqZWN0cy5yZW1vdmUoaXQpOwor
ICAgICAgICAgICAgICAgIGlmIChvYmplY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX29iamVjdHMuYWRkKFdURk1vdmUod3JpdGUpLnJldGlyZWRSZWZlcmVuY2Uo
KSwgUmVmZXJlbmNlU3RhdGUgeyBXVEZNb3ZlKCpvYmplY3QpIH0pOworICAgICAgICAgICAgICAg
ICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBhdXRvJiBuZXdTdGF0ZSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBFbnRyeSB3YXMgYSB0b21ic3RvbmUuCisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobmV3U3RhdGUuZmluYWxSZWFkICYmICEqbmV3U3RhdGUuZmluYWxSZWFkKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vYmplY3RzLnJlbW92ZShhZGRSZXN1bHQu
aXRlcmF0b3IpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghbmV3U3RhdGUu
b2JqZWN0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3U3RhdGUub2JqZWN0ID0g
V1RGTW92ZSgqb2JqZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobmV3
U3RhdGUub2JqZWN0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV3JpdGUgcmVw
bGF5OiB0aGUgcmV0aXJlZCB3cml0ZSBhbHJlYWR5IGV4aXN0cywgdGhlIGVudHJ5IHdhcyBub3Qg
YSB0b21ic3RvbmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX0lTX1RFU1RJ
TkdfSVBDKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIG1fb2JqZWN0c0NvbmRpdGlvbi5ub3RpZnlBbGwoKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYg
KCF3YWl0Rm9yUGVuZGluZ1JlYWRzIHx8ICF3cml0ZS5wZW5kaW5nUmVhZHMoKSkgeworICAgICAg
ICAgICAgLy8gV3JpdGUgdGhlIHRvbWJzdG9uZS4KKyAgICAgICAgICAgIG1fb2JqZWN0cy5hZGQo
d3JpdGUucmVmZXJlbmNlKCksIFJlZmVyZW5jZVN0YXRlIHsgd3JpdGUucGVuZGluZ1JlYWRzKCkg
fSk7CisgICAgICAgICAgICBpZiAob2JqZWN0KQorICAgICAgICAgICAgICAgIG1fb2JqZWN0cy5h
ZGQoV1RGTW92ZSh3cml0ZSkucmV0aXJlZFJlZmVyZW5jZSgpLCBSZWZlcmVuY2VTdGF0ZSB7IFdU
Rk1vdmUoKm9iamVjdCkgfSk7CisgICAgICAgICAgICBtX29iamVjdHNDb25kaXRpb24ubm90aWZ5
QWxsKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHRp
bWVvdXQpOworICAgICAgICBpZiAoIW1fb2JqZWN0c0NvbmRpdGlvbi53YWl0VW50aWwobV9vYmpl
Y3RzTG9jaywgdGltZW91dC0+ZGVhZGxpbmUoKSkpCisgICAgICAgICAgICBicmVhazsKKyAgICB9
IHdoaWxlICh0cnVlKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgSWRlbnRpZmllciwgdHlwZW5h
bWUgSGVsZFR5cGU+Cit2b2lkIFRocmVhZFNhZmVPYmplY3RIZWFwPElkZW50aWZpZXIsIEhlbGRU
eXBlPjo6cmV0aXJlUmVtb3ZlKFdyaXRlUmVmZXJlbmNlJiYgb2JqZWN0KQoreworICAgIHJldGly
ZShXVEZNb3ZlKG9iamVjdCksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0KTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgSWRlbnRpZmllciwgdHlwZW5hbWUgSGVsZFR5cGU+Cit2b2lkIFRocmVh
ZFNhZmVPYmplY3RIZWFwPElkZW50aWZpZXIsIEhlbGRUeXBlPjo6Y2xlYXIoKQoreworICAgIExv
Y2tlciBsb2NrZXIgeyBtX29iamVjdHNMb2NrIH07CisgICAgbV9vYmplY3RzLmNsZWFyKCk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIElkZW50aWZpZXIsIHR5cGVuYW1lIEhlbGRUeXBlPgordm9p
ZCBUaHJlYWRTYWZlT2JqZWN0SGVhcDxJZGVudGlmaWVyLCBIZWxkVHlwZT46OmFkZChJZGVudGlm
aWVyIGlkZW50aWZpZXIsIEhlbGRUeXBlJiYgb2JqZWN0KQoreworICAgIFJlZmVyZW5jZSByZWZl
cmVuY2UgeyBpZGVudGlmaWVyLCAwIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1fb2JqZWN0c0xv
Y2sgfTsKKyAgICBBU1NFUlQoIW1fb2JqZWN0cy5jb250YWlucyhyZWZlcmVuY2UpKTsKKyAgICBt
X29iamVjdHMuYWRkKHJlZmVyZW5jZSwgUmVmZXJlbmNlU3RhdGUgeyBXVEZNb3ZlKG9iamVjdCkg
fSk7Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5jcHAK
aW5kZXggNGRlMWQwZWQyYTdiZTQ5ZTNjYmJiOTVlMzc3ZjU0NTA5ZmFjMDdhZC4uNzhmNzMxMzRj
ZTZhN2EyMTRjZGM5ZGUwNWM0NzUzNzJlMTdjOWEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1w
bGVCeXRlUmFuZ2UuY3BwCkBAIC02Niw3ICs2Niw3IEBAIEF0b21TdHJpbmcgTWVkaWFTYW1wbGVC
eXRlUmFuZ2U6OnRyYWNrSUQoKSBjb25zdAogICAgIHJldHVybiBBdG9tU3RyaW5nOjpudW1iZXIo
bV90cmFja0lEKTsKIH0KIAotUGxhdGZvcm1TYW1wbGUgTWVkaWFTYW1wbGVCeXRlUmFuZ2U6OnBs
YXRmb3JtU2FtcGxlKCkKK1BsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxlQnl0ZVJhbmdlOjpwbGF0
Zm9ybVNhbXBsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHsKICAgICAgICAgUGxhdGZvcm1TYW1w
bGU6OkJ5dGVSYW5nZVNhbXBsZVR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5o
CmluZGV4IGI4ZTRkNzZjZTZmMzkyODU3NmU5ZmIxZWY5NjJiNDA0OTdlM2RjMzEuLmY4MzM2YmYw
MTM3MjEwOTBkYTE5Mzc4ZmI1YTQ1M2M4ZGFjYTU3NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBs
ZUJ5dGVSYW5nZS5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFs
PEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9ieXRlUmFuZ2U7
IH0KIAogICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IGZpbmFsOwotICAgIFdlYkNvcmU6
OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgZmluYWw7CisgICAgV2ViQ29yZTo6UGxh
dGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIG9mZnNl
dFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKICAgICB2b2lkIHNldFRpbWVz
dGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CmluZGV4IDlmODkwYTYyOTg0M2E3ZTIyOTA0ZDZhZDZlNWEzMmExOWY2ZTZiMjEuLjA2Nzcw
ZDBkZmM3ZGExZjM4NWYxYTMzYTIyMDMyN2U4ODAwNjNiMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNzAs
NiArNzAsNyBAQCBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcC5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5j
cHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyUHJveHkuY3Bw
CiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcApAQCAtNzQ2LDYg
Kzc0Nyw3IEBAIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJh
dGlvbkZhY3RvcnkuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1JTUVUeXBl
Q2FjaGUuY3BwIEBuby11bmlmeQogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNv
dXJjZVByb3h5LmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5
LmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNw
cAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwCkBAIC03NTQsNiAr
NzU2LDcgQEAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHAKIFdlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCiBXZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFS
ZWNvcmRlclByb3ZpZGVyLmNwcAorV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3IuY3BwCiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCiAKQEAgLTg4NCw2ICs4ODcsOCBAQCBSZW1vdGVE
ZXZpY2VNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVFeHRlcm5hbFRleHR1cmVNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiBSZW1vdGVHUFVNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVHUFVQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZVJlY2Vp
dmVyLmNwcAorUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvck1lc3NhZ2VS
ZWNlaXZlci5jcHAKIFJlbW90ZVBpcGVsaW5lTGF5b3V0TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVt
b3RlUXVlcnlTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVRdWV1ZU1lc3NhZ2VSZWNlaXZl
ci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggMmFmNzgyOTBmNTA3M2VhMWM5
NzYxOTcyMzhjZjU2MjRmNjlkOGExYS4uZTIwZDdkMGI0YTNiM2FlZDM1OGNkNjk5NTljODJhNTdm
OTE5ZjY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAK
IAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVDYXB0dXJlU2FtcGxl
TWFuYWdlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAu
aCIKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogI2luY2x1ZGUgIlVzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlclByb3h5TWVzc2FnZXMuaCIKQEAgLTQwLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0NBUmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VSb3RhdGlvblNlc3Np
b25WVC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFDb25zdHJhaW50cy5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvTWVkaWFTYW1wbGVBVkZPYmpDLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGltZVZpZGVvU291
cmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVWaWRlb1NhbXBsZS5oPgpAQCAtNTcsMTEg
KzU5LDEyIEBAIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OlNvdXJjZVByb3h5
CiAgICAgLCBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXIg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNvdXJjZVByb3h5
KFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYm
IGNvbm5lY3Rpb24sIFByb2Nlc3NJZGVudGl0eSYmIHJlc291cmNlT3duZXIsIFJlZjxSZWFsdGlt
ZU1lZGlhU291cmNlPiYmIHNvdXJjZSkKKyAgICBTb3VyY2VQcm94eShSZWFsdGltZU1lZGlhU291
cmNlSWRlbnRpZmllciBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBQcm9j
ZXNzSWRlbnRpdHkmJiByZXNvdXJjZU93bmVyLCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiBz
b3VyY2UsIFJlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4mJiB2aWRlb0ZyYW1lT2Jq
ZWN0SGVhcCkKICAgICAgICAgOiBtX2lkKGlkKQogICAgICAgICAsIG1fY29ubmVjdGlvbihXVEZN
b3ZlKGNvbm5lY3Rpb24pKQogICAgICAgICAsIG1fcmVzb3VyY2VPd25lcihXVEZNb3ZlKHJlc291
cmNlT3duZXIpKQogICAgICAgICAsIG1fc291cmNlKFdURk1vdmUoc291cmNlKSkKKyAgICAgICAg
LCBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwKFdURk1vdmUodmlkZW9GcmFtZU9iamVjdEhlYXApKQog
ICAgIHsKICAgICAgICAgbV9zb3VyY2UtPmFkZE9ic2VydmVyKCp0aGlzKTsKICAgICAgICAgc3dp
dGNoIChtX3NvdXJjZS0+dHlwZSgpKSB7CkBAIC0xODMsMTkgKzE4NiwzNSBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgbV9jYXB0dXJlU2VtYXBob3JlLT5zaWduYWwoKTsKICAgICB9CiAKLSAgICB2
b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUsIFZpZGVvU2FtcGxl
TWV0YWRhdGEgbWV0YWRhdGEpIGZpbmFsCisgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiByb3RhdGVW
aWRlb0ZyYW1lSWZOZWVkZWQoTWVkaWFTYW1wbGUmIHNhbXBsZSkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gcmVtb3RlU2FtcGxlOwogICAgICAgICBp
ZiAobV9zaG91bGRBcHBseVJvdGF0aW9uICYmIHNhbXBsZS52aWRlb1JvdGF0aW9uKCkgIT0gTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUpIHsKICAgICAgICAgICAgIGF1dG8gcGl4ZWxC
dWZmZXIgPSByb3RhdGVQaXhlbEJ1ZmZlcihzYW1wbGUpOwotICAgICAgICAgICAgcmVtb3RlU2Ft
cGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShwaXhlbEJ1ZmZlci5nZXQoKSwgc2FtcGxl
LnByZXNlbnRhdGlvblRpbWUoKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmVtb3Rl
U2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShzYW1wbGUpOwotICAgICAgICBpZiAo
cmVtb3RlU2FtcGxlKSB7Ci0gICAgICAgICAgICBpZiAobV9yZXNvdXJjZU93bmVyKQotICAgICAg
ICAgICAgICAgIHJlbW90ZVNhbXBsZS0+c2V0T3duZXJzaGlwSWRlbnRpdHkobV9yZXNvdXJjZU93
bmVyKTsKLSAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlQ2Fw
dHVyZVNhbXBsZU1hbmFnZXI6OlZpZGVvU2FtcGxlQXZhaWxhYmxlKG1faWQsIFdURk1vdmUoKnJl
bW90ZVNhbXBsZSksIG1ldGFkYXRhKSwgMCk7CisgICAgICAgICAgICByZXR1cm4gTWVkaWFTYW1w
bGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKHBpeGVsQnVmZmVyKSwgTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUsIHNhbXBsZS52aWRlb01pcnJvcmVkKCksIHNhbXBs
ZS5wcmVzZW50YXRpb25UaW1lKCksIHNhbXBsZS5kZWNvZGVUaW1lKCkpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiAmc2FtcGxlOworICAgIH0KKworICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFp
bGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlkZW9TYW1wbGVNZXRhZGF0YSBtZXRhZGF0YSkg
ZmluYWwKKyAgICB7CisgICAgICAgIGF1dG8gdmlkZW9TYW1wbGUgPSByb3RhdGVWaWRlb0ZyYW1l
SWZOZWVkZWQoc2FtcGxlKTsKKyAgICAgICAgaWYgKCF2aWRlb1NhbXBsZSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBhdXRvIHJlbW90ZVNhbXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxl
OjpjcmVhdGUoKnZpZGVvU2FtcGxlKTsKKyAgICAgICAgaWYgKCFyZW1vdGVTYW1wbGUpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKG1fcmVzb3VyY2VPd25lcikKKyAgICAgICAg
ICAgIHJlbW90ZVNhbXBsZS0+c2V0T3duZXJzaGlwSWRlbnRpdHkobV9yZXNvdXJjZU93bmVyKTsK
KworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPiByZW1v
dGVJZGVudGlmaWVyOworICAgICAgICBpZiAobV92aWRlb0ZyYW1lT2JqZWN0SGVhcCkgeworICAg
ICAgICAgICAgcmVtb3RlSWRlbnRpZmllciA9IG1fdmlkZW9GcmFtZU9iamVjdEhlYXAtPmNyZWF0
ZVJlbW90ZVZpZGVvRnJhbWUoc2FtcGxlKTsKKyAgICAgICAgICAgIHJlbW90ZVNhbXBsZS0+Y2xl
YXJJT1N1cmZhY2UoKTsKICAgICAgICAgfQorCisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OlZpZGVvU2FtcGxlQXZhaWxhYmxl
KG1faWQsIFdURk1vdmUoKnJlbW90ZVNhbXBsZSksIHJlbW90ZUlkZW50aWZpZXIsIG1ldGFkYXRh
KSwgMCk7CiAgICAgfQogCiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHJvdGF0ZVBp
eGVsQnVmZmVyKE1lZGlhU2FtcGxlJiBzYW1wbGUpCkBAIC0yNjAsNiArMjc5LDcgQEAgcHJpdmF0
ZToKICAgICBzaXplX3QgbV9mcmFtZUNodW5rU2l6ZSB7IDAgfTsKICAgICBNZWRpYVRpbWUgbV9z
dGFydFRpbWU7CiAgICAgYm9vbCBtX3Nob3VsZFJlc2V0IHsgZmFsc2UgfTsKKyAgICBSZWZQdHI8
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFtZU9iamVjdEhlYXA7CiB9Owog
CiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5KFVuaXF1ZVJlZjxDb25uZWN0aW9uUHJveHk+JiYgY29ubmVjdGlvblByb3h5KQpAQCAtMjcz
LDcgKzI5Myw3IEBAIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6On5Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5KCkKICAgICBtX2Nvbm5lY3Rpb25Qcm94eS0+cmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkpOwogfQogCi12b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OmNy
ZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyhSZWFsdGltZU1l
ZGlhU291cmNlSWRlbnRpZmllciBpZCwgY29uc3QgQ2FwdHVyZURldmljZSYgZGV2aWNlLCBTdHJp
bmcmJiBoYXNoU2FsdCwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYgbWVkaWFDb25zdHJhaW50cywg
Q3JlYXRlU291cmNlQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0
aENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBjb25zdCBDYXB0
dXJlRGV2aWNlJiBkZXZpY2UsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25zdCBNZWRpYUNvbnN0cmFp
bnRzJiBtZWRpYUNvbnN0cmFpbnRzLCBib29sIHNob3VsZFVzZUdQVVByb2Nlc3NSZW1vdGVGcmFt
ZXMsIENyZWF0ZVNvdXJjZUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KCFtX2Nvbm5lY3Rpb25Qcm94eS0+d2lsbFN0YXJ0Q2FwdHVyZShkZXZpY2UudHlwZSgpKSkKICAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlLCAiUmVxdWVzdCBpcyBub3QgYWxs
b3dlZCJfcywgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIHsgfSwgeyB9LCB7IH0sIHsgfSwg
MCk7CkBAIC0zMjQsNyArMzQ0LDcgQEAgdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
OjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWkKICAgICAgICAg
fQogCiAgICAgICAgIEFTU0VSVCghbV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7Ci0gICAgICAgIGF1
dG8gcHJveHkgPSBtYWtlVW5pcXVlPFNvdXJjZVByb3h5PihpZCwgbV9jb25uZWN0aW9uUHJveHkt
PmNvbm5lY3Rpb24oKSwgUHJvY2Vzc0lkZW50aXR5IHsgbV9jb25uZWN0aW9uUHJveHktPnJlc291
cmNlT3duZXIoKSB9LCBXVEZNb3ZlKHNvdXJjZSkpOworICAgICAgICBhdXRvIHByb3h5ID0gbWFr
ZVVuaXF1ZTxTb3VyY2VQcm94eT4oaWQsIG1fY29ubmVjdGlvblByb3h5LT5jb25uZWN0aW9uKCks
IFByb2Nlc3NJZGVudGl0eSB7IG1fY29ubmVjdGlvblByb3h5LT5yZXNvdXJjZU93bmVyKCkgfSwg
V1RGTW92ZShzb3VyY2UpLCBzaG91bGRVc2VHUFVQcm9jZXNzUmVtb3RlRnJhbWVzID8gbV9jb25u
ZWN0aW9uUHJveHktPnJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKCkgOiBudWxscHRyKTsKICAg
ICAgICAgbV9wcm94aWVzLmFkZChpZCwgV1RGTW92ZShwcm94eSkpOwogICAgIH0gZWxzZQogICAg
ICAgICBpbnZhbGlkQ29uc3RyYWludHMgPSBXVEZNb3ZlKHNvdXJjZU9yRXJyb3IuZXJyb3JNZXNz
YWdlKTsKQEAgLTM5MCw3ICs0MTAsNyBAQCB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHk6OmNsb25lKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGNsb25lZElELAogICAgIE1F
U1NBR0VfQ0hFQ0sobV9wcm94aWVzLmNvbnRhaW5zKGNsb25lZElEKSk7CiAgICAgTUVTU0FHRV9D
SEVDSyghbV9wcm94aWVzLmNvbnRhaW5zKG5ld1NvdXJjZUlEKSk7CiAgICAgaWYgKGF1dG8qIHBy
b3h5ID0gbV9wcm94aWVzLmdldChjbG9uZWRJRCkpCi0gICAgICAgIG1fcHJveGllcy5hZGQobmV3
U291cmNlSUQsIG1ha2VVbmlxdWU8U291cmNlUHJveHk+KG5ld1NvdXJjZUlELCBtX2Nvbm5lY3Rp
b25Qcm94eS0+Y29ubmVjdGlvbigpLCBQcm9jZXNzSWRlbnRpdHkgeyBtX2Nvbm5lY3Rpb25Qcm94
eS0+cmVzb3VyY2VPd25lcigpIH0sIHByb3h5LT5zb3VyY2UoKS5jbG9uZSgpKSk7CisgICAgICAg
IG1fcHJveGllcy5hZGQobmV3U291cmNlSUQsIG1ha2VVbmlxdWU8U291cmNlUHJveHk+KG5ld1Nv
dXJjZUlELCBtX2Nvbm5lY3Rpb25Qcm94eS0+Y29ubmVjdGlvbigpLCBQcm9jZXNzSWRlbnRpdHkg
eyBtX2Nvbm5lY3Rpb25Qcm94eS0+cmVzb3VyY2VPd25lcigpIH0sIHByb3h5LT5zb3VyY2UoKS5j
bG9uZSgpLCBtX2Nvbm5lY3Rpb25Qcm94eS0+cmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAoKSkp
OwogfQogCiB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OnJlcXVlc3RUb0VuZChS
ZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBzb3VyY2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkuaAppbmRleCBmYTgyOWM3YzQ5MDNkNTFiNTdhNzg5NzE3ODQ3M2Y4MGNiZjI4NmRlLi42NThi
NWI3ZDE4ODZjNDgzMDZmMTgwM2EzODgwNGI5NTNkODU0ZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQ
cm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXAuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvQ2FwdHVyZURldmljZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvT3JpZW50YXRpb25O
b3RpZmllci5oPgpAQCAtNjUsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBzZXRUQ0NJZGVudGl0eSgpIHsgfQogI2VuZGlmCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdGFy
dFByb2R1Y2luZ0RhdGEoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSkgeyB9Cisg
ICAgICAgIHZpcnR1YWwgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAqIHJlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIH07CiAgICAgZXhwbGljaXQg
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eShVbmlxdWVSZWY8Q29ubmVjdGlvblByb3h5PiYm
KTsKICAgICB+VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSgpOwpAQCAtODIsNyArODQsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgZmluYWw7CiAKICAgICB1c2luZyBDcmVhdGVTb3VyY2VDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzdWNjZWVkZWQsIFN0cmluZyBpbnZhbGlkQ29u
c3RyYWludHMsIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYmLCBXZWJDb3Jl
OjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiYsIFZlY3RvcjxXZWJDb3JlOjpWaWRl
b1ByZXNldERhdGE+JiYsIFdlYkNvcmU6OkludFNpemUsIGRvdWJsZSk+OwotICAgIHZvaWQgY3Jl
YXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDYXB0dXJlRGV2aWNl
JiBkZXZpY2VJRCwgU3RyaW5nJiYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHMmLCBD
cmVhdGVTb3VyY2VDYWxsYmFjayYmKTsKKyAgICB2b2lkIGNyZWF0ZU1lZGlhU291cmNlRm9yQ2Fw
dHVyZURldmljZVdpdGhDb25zdHJhaW50cyhXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2FwdHVyZURldmljZSYgZGV2aWNlSUQsIFN0cmluZyYm
LCBjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzJiwgYm9vbCBzaG91bGRVc2VHUFVQcm9j
ZXNzUmVtb3RlRnJhbWVzLCBDcmVhdGVTb3VyY2VDYWxsYmFjayYmKTsKICAgICB2b2lkIHN0YXJ0
UHJvZHVjaW5nRGF0YShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllcik7CiAg
ICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRl
bnRpZmllcik7CiAgICAgdm9pZCBlbmQoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50
aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
NTkxMzk4Njc4YjExYTAzYTI3YmJmMWRkMjliMjRjOWNkZmUwYjRiOS4uN2JjYTQ1M2U3Mzc1Mzc2
OWE3ZmM1OGUyZTcwNzMyYjg1N2Q5YjgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKIAogbWVzc2FnZXMgLT4gVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSBOb3RSZWZDb3Vu
dGVkIHsKLSAgICBDcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWlu
dHMoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIFdlYkNvcmU6OkNh
cHR1cmVEZXZpY2UgZGV2aWNlLCBTdHJpbmcgaGFzaFNhbHQsIHN0cnVjdCBXZWJDb3JlOjpNZWRp
YUNvbnN0cmFpbnRzIGNvbnN0cmFpbnRzKSAtPiAoYm9vbCBzdWNjZXNzLCBTdHJpbmcgaW52YWxp
ZENvbnN0cmFpbnRzLCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Mgc2V0dGlu
Z3MsIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVz
LCBWZWN0b3I8V2ViQ29yZTo6VmlkZW9QcmVzZXREYXRhPiBwcmVzZXRzLCBXZWJDb3JlOjpJbnRT
aXplIHNpemUsIGRvdWJsZSBmcmFtZVJhdGUpIEFzeW5jCisgICAgQ3JlYXRlTWVkaWFTb3VyY2VG
b3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VJZGVudGlmaWVyIGlkLCBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlIGRldmljZSwgU3RyaW5nIGhh
c2hTYWx0LCBzdHJ1Y3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cyBjb25zdHJhaW50cywgYm9v
bCBzaG91bGRVc2VHUFVQcm9jZXNzUmVtb3RlRnJhbWVzKSAtPiAoYm9vbCBzdWNjZXNzLCBTdHJp
bmcgaW52YWxpZENvbnN0cmFpbnRzLCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3Mgc2V0dGluZ3MsIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMgY2Fw
YWJpbGl0aWVzLCBWZWN0b3I8V2ViQ29yZTo6VmlkZW9QcmVzZXREYXRhPiBwcmVzZXRzLCBXZWJD
b3JlOjpJbnRTaXplIHNpemUsIGRvdWJsZSBmcmFtZVJhdGUpIEFzeW5jCiAgICAgU3RhcnRQcm9k
dWNpbmdEYXRhKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkKQogICAg
IFN0b3BQcm9kdWNpbmdEYXRhKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVy
IGlkKQogICAgIEVuZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDgzMjU3ODJiZjFiN2M5NWM2MDRhNTQxM2U2NDUzMGNkYTI2MDVmNGQuLjBhZTlkZGFjNDA1NjE5
Y2I4M2Y1NDcxYWJmOTdkN2U1NmJlMTM4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDA3NSw2ICs0MDc1LDEwIEBACiAJCTQxMUI4
OUM3MjdCMkI3NUMwMEY5RUJEMyAvKiBXS1F1ZXJ5UGVybWlzc2lvblJlc3VsdENhbGxiYWNrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUXVlcnlQZXJtaXNzaW9uUmVzdWx0
Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExQjg5QzgyN0IyQjc1
RDAwRjlFQkQzIC8qIFdLUXVlcnlQZXJtaXNzaW9uUmVzdWx0Q2FsbGJhY2suY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tRdWVyeVBlcm1pc3Npb25SZXN1bHRDYWxs
YmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMUI4OUNCMjdCMkI4OTYw
MEY5RUJEMyAvKiBRdWVyeVBlcm1pc3Npb25SZXN1bHRDYWxsYmFjay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBRdWVyeVBlcm1pc3Npb25SZXN1bHRDYWxsYmFjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTFCODlFNDI3QjVENTgyMDBGOUVCRDMgLyogUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvci5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yLm1lc3NhZ2VzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTFCODlFNTI3QjVENTgzMDBGOUVCRDMgLyogUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxMUI4OUU2MjdCNUQ1ODQwMEY5RUJEMyAvKiBSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MTFCODlGNTI3QjZCNEM3MDBGOUVCRDMgLyogUmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXBQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjg3RDRCMjI1QzA1
QzQwMDlBM0UyNiAvKiBXZWJTb2NrZXRUYXNrQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTb2NrZXRUYXNrQ29jb2EubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxMjg3RDRDMjI1QzA1QzUwMDlBM0UyNiAvKiBXZWJTb2NrZXRUYXNr
Q29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0VGFza0Nv
Y29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjg3RDREMjI1QzE2MUYwMDlB
M0UyNiAvKiBXZWJTb2NrZXRUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlNvY2tldFRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxNzYsNyAr
NDE4MCw2IEBACiAJCTQxQzNCODk0MjY0OTNCN0MwMDRFRDRERSAvKiBSZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLm1l
c3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUM1Mzc4RjIxRjEzNjJE
MDA4QjFGQUQgLyogX1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MUM4NTgxOTFGNTEwREVFMDA2NUUwODUgLyogQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk0MUNCODQwMzI1Q0FCRjdDMDAxMEUyQjEgLyogTWVkaWFSZWNvcmRlclByaXZhdGUubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVJlY29yZGVyUHJpdmF0ZS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMTI5RDkxRjNEMTAxNDAwRDE1RTQ3IC8qIFdlYkNhY2hl
U3RvcmFnZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDVDNkQ4MjM4RUIyMEQwMEI5QjND
QiAvKiBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MUQ1QzZEOTIzOEVCMjBFMDBCOUIzQ0IgLyogU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNTExNiw2ICs1MTE5LDEzIEBACiAJCTdCNDgzRjFFMjVDRERBOUIwMDEy
MDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QjUwRTk3RjI3NzFGNkNFMDAzREFBQzQgLyogSVBDVGVzdGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IElQQ1Rlc3Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
NTBFOTgwMjc3MUY2Q0YwMDNEQUFDNCAvKiBJUENUZXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSVBD
VGVzdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREEwMjdBN0RDMUEw
MDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBMTI3QTdEQzFBMDA2QzZGOTcgLyogUmVtb3RlVmlk
ZW9GcmFtZVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZVZp
ZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0I1QTNEQTIyN0E3REMxQTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94eS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQTMyN0E3REM2QzAwNkM2Rjk3IC8qIFJl
bW90ZVZpZGVvRnJhbWVQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QjVBM0RBNzI3QTdEQ0JDMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQTgyN0E3RENC
QzAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQzUyN0FFNTAxQTAwNkM2Rjk3IC8q
IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9iamVj
dElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCNjRDMEI2MjU0QzVDMjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMjMxMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJl
YW1Db25uZWN0aW9uQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
cmVhbUNvbm5lY3Rpb25CdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3
MzEyMzIyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MTQxLDYgKzUxNTEsNyBA
QAogCQk3QkNGNzBDRTI2MTQ5MzVGMDBFNEZCNzAgLyogU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNv
dXJjZXNSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3Vy
Y2VzUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkREQTMzRjI3NTY1
MkVBMDAzODY1OUUgLyogQXV4aWxpYXJ5UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBdXhpbGlhcnlQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRERBMzQwMjc1NjUyRUEwMDM4NjU5RSAvKiBBdXhpbGlh
cnlQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1eGls
aWFyeVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QkUzN0Y2RjI3QjE0NzVGMDA3QTZDRDMgLyogVGhyZWFkU2FmZU9iamVjdEhlYXAu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGhyZWFkU2FmZU9iamVjdEhlYXAuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRTcyNjY4MjU3NjgwRUYwMEU4NUQ5OCAvKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5
cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVzZXJDb250
ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC02ODA1LDYgKzY4MTYsMTAgQEAKIAkJCQlDRDgyNTJEMTI1RDQ2NEFCMDA4NjJGRDggLyogUmVt
b3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyLmggKi8sCiAJCQkJQ0Q4MjUyRDMyNUQ0NjRCRjAwODYy
RkQ4IC8qIFJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lci5tZXNzYWdlcy5pbiAqLywKIAkJCQlD
RDgyNTJENDI1RDQ2NTEwMDA4NjJGRDggLyogUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVySWRl
bnRpZmllci5oICovLAorCQkJCTdCNUEzREEwMjdBN0RDMUEwMDZDNkY5NyAvKiBSZW1vdGVWaWRl
b0ZyYW1lSWRlbnRpZmllci5oICovLAorCQkJCTdCNUEzREEzMjdBN0RDNkMwMDZDNkY5NyAvKiBS
ZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwICovLAorCQkJCTdCNUEzREEyMjdBN0RDMUEwMDZDNkY5
NyAvKiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCAqLywKKwkJCQk3QjVBM0RBMTI3QTdEQzFBMDA2
QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZVByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJCTFERDJB
NjNBMjU1REU2RDEwMEZGN0I2RiAvKiBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcCAqLywK
IAkJCQkxREQyQTYzOTI1NURFNkQxMDBGRjdCNkYgLyogU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZS5oICovLAogCQkJCTFERDJBNjZGMjU2MjJGMTEwMEZGN0I2RiAvKiBTb3VyY2VCdWZmZXJQcml2
YXRlUmVtb3RlLm1lc3NhZ2VzLmluICovLApAQCAtNjg5NSw2ICs2OTEwLDggQEAKIAkJCQkxREQy
QTY2NjI1NjFFRDA0MDBGRjdCNkYgLyogUmVtb3RlU291cmNlQnVmZmVyUHJveHkubWVzc2FnZXMu
aW4gKi8sCiAJCQkJMDdFMTlGMDcyM0Q0REM4ODAwOTRGRkI0IC8qIFJlbW90ZVRleHRUcmFja1By
b3h5LmNwcCAqLywKIAkJCQkwN0UxOUYwNjIzRDREQzg4MDA5NEZGQjQgLyogUmVtb3RlVGV4dFRy
YWNrUHJveHkuaCAqLywKKwkJCQk3QjVBM0RBODI3QTdEQ0JDMDA2QzZGOTcgLyogUmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXAuY3BwICovLAorCQkJCTdCNUEzREE3MjdBN0RDQkMwMDZDNkY5NyAv
KiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oICovLAogCQkJCTA3MUJDNTg0MjNDQzJDMDkw
MDY4MEQ3QyAvKiBSZW1vdGVWaWRlb1RyYWNrUHJveHkuY3BwICovLAogCQkJCTA3MUJDNTg1MjND
QzJDMDkwMDY4MEQ3QyAvKiBSZW1vdGVWaWRlb1RyYWNrUHJveHkuaCAqLywKIAkJCQkwN0UxOUYw
NTIzRDREQzg4MDA5NEZGQjQgLyogVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24u
aCAqLywKQEAgLTcyNzIsNiArNzI4OSw3IEBACiAJCQkJMUFEQ0I4NjgxODk4MzFCMzAwMjJFRTVB
IC8qIE5hdmlnYXRpb25BY3Rpb25EYXRhLmNwcCAqLywKIAkJCQkxQURDQjg2OTE4OTgzMUIzMDAy
MkVFNUEgLyogTmF2aWdhdGlvbkFjdGlvbkRhdGEuaCAqLywKIAkJCQk1Q0Q3NDhCNTIzQzhFQjE5
MDA5MkE5QjUgLyogTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCAqLywKKwkJCQk3QjVB
M0RDNTI3QUU1MDFBMDA2QzZGOTcgLyogT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIu
aCAqLywKIAkJCQk3QUZCRDM2RTIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5j
cHAgKi8sCiAJCQkJN0FGQkQzNkQyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMu
aCAqLywKIAkJCQlCQ0M0M0FCODEyN0I5NURDMDAzMTdGMTYgLyogUGxhdGZvcm1Qb3B1cE1lbnVE
YXRhLmNwcCAqLywKQEAgLTczMTIsNiArNzMzMCw3IEBACiAJCQkJODNGOTY0NEMxRkEwRjc2MzAw
QzQ3NzUwIC8qIFNoYXJlZFN0cmluZ0hhc2hUYWJsZVJlYWRPbmx5LmggKi8sCiAJCQkJMUE1RTRE
QTMxMkQzQkQzRDAwOTlBMkJCIC8qIFRleHRDaGVja2VyU3RhdGUuaCAqLywKIAkJCQlGNEE3Q0U4
NDI2NjdFQjRFMDAyMjg2ODUgLyogVGV4dFJlY29nbml0aW9uVXBkYXRlUmVzdWx0LmggKi8sCisJ
CQkJN0JFMzdGNkYyN0IxNDc1RjAwN0E2Q0QzIC8qIFRocmVhZFNhZmVPYmplY3RIZWFwLmggKi8s
CiAJCQkJMkZENDNCOTIxRkEwMDZBMzAwODNGNTFDIC8qIFRvdWNoQmFyTWVudURhdGEuY3BwICov
LAogCQkJCTJGRDQzQjkxMUZBMDA2QTEwMDgzRjUxQyAvKiBUb3VjaEJhck1lbnVEYXRhLmggKi8s
CiAJCQkJMkY4MDlERDUxRkJEMUJDOTAwNUZFNjNBIC8qIFRvdWNoQmFyTWVudUl0ZW1EYXRhLmNw
cCAqLywKQEAgLTkyNjksOSArOTI4OCwxMiBAQAogCQkJCTQxNzZFODk3MjNDMzYxQkQwMDNFODNG
RSAvKiBNZWRpYVJlY29yZGVySWRlbnRpZmllci5oICovLAogCQkJCTQxNzZFODk0MjNDMzRFMjYw
MDNFODNGRSAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAgKi8sCiAJCQkJNDE3NkU4OTUyM0Mz
NEUyNzAwM0U4M0ZFIC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlLmggKi8sCi0JCQkJNDFDQjg0MDMy
NUNBQkY3QzAwMTBFMkIxIC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlLm1tICovLAogCQkJCTQxNzZF
ODkzMjNDMzRENkYwMDNFODNGRSAvKiBNZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwICovLAogCQkJ
CTQxNzZFODkyMjNDMzRENkUwMDNFODNGRSAvKiBNZWRpYVJlY29yZGVyUHJvdmlkZXIuaCAqLywK
KwkJCQk0MTFCODlFNjI3QjVENTg0MDBGOUVCRDMgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXBQcm94eVByb2Nlc3Nvci5jcHAgKi8sCisJCQkJNDExQjg5RTUyN0I1RDU4MzAwRjlFQkQzIC8q
IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3IuaCAqLywKKwkJCQk0MTFC
ODlFNDI3QjVENTgyMDBGOUVCRDMgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVBy
b2Nlc3Nvci5tZXNzYWdlcy5pbiAqLywKKwkJCQk0MTFCODlGNTI3QjZCNEM3MDBGOUVCRDMgLyog
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5oICovLAogCQkJCTQxNzIxOThDMjNCNjEy
RTgwMEFFNTY4NiAvKiBSVENEZWNvZGVySWRlbnRpZmllci5oICovLAogCQkJCTQxNTg2NDlBMjNC
RTA5MjQwMEEwQTYxRSAvKiBSVENFbmNvZGVySWRlbnRpZmllci5oICovLAogCQkJCTQxRkNENkI3
MjNDREU1M0QwMEM2MjU2NyAvKiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwICovLApAQCAt
MTM0MzcsNyArMTM0NTksNiBAQAogCQkJCUUxOEU2OTE4MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJ
dGVtU2hpbVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MEFCOEYzMjBBRTNC
RDcwMEI4QkU4NyAvKiBTZWNLZXlQcm94eVN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRE
OUY1NzE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LywKLQkJCQk1MTY0NjU4MDI3QTlDNzc0MDBFMUYyQkEgLyogU2VydmljZVdvcmtlck5vdGlmaWNh
dGlvbkhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRkRFNjVBMTk1NEE0MkIwMEM0OEZG
QSAvKiBTZXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDAyRDQ5MTk2QjM0NUQw
MEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2RpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRTc5
OUNFMjc2MDQ5N0IwMDc0MDA4QSAvKiBTZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3ND
b25uZWN0aW9uLmNwcAppbmRleCBlMjlmNGJkNTYxMzJlY2Q2NzE3MWJjMzdjYjJjYzU2MWJlMTI5
MzU5Li5jNzJkYTdhMzRhMWE3MzhhYTkyMGYwNWQ1N2NmOWM0ZTE1OTU2NTg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNw
cApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIlJlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJh
dGlvbkZhY3RvcnkuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCIKICNp
bmNsdWRlICJSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlTWVzc2Fn
ZXMuaCIKQEAgLTc2LDYgKzc3LDEwIEBACiAjaW5jbHVkZSAiVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJNZXNzYWdlcy5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1
ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94eS5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoV0VCR0wp
CiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgogI2luY2x1ZGUgIlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlcy5oIgpAQCAtMTU5LDYgKzE2NCwxMyBA
QCB2b2lkIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpyZXNldEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0KEF1ZGlvTQogewogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcigpLnJlc2V0
KGlkZW50aWZpZXIpOwogfQorCitSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5JiBHUFVQ
cm9jZXNzQ29ubmVjdGlvbjo6cmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSgpCit7Cisg
ICAgaWYgKCFtX3JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkpCisgICAgICAgIG1fcmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSA9IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
UHJveHk6OmNyZWF0ZSgqdGhpcyk7CisgICAgcmV0dXJuICptX3JlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwUHJveHk7Cit9CiAjZW5kaWYKIAogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyJiBHUFVQ
cm9jZXNzQ29ubmVjdGlvbjo6bWVkaWFQbGF5ZXJNYW5hZ2VyKCkKQEAgLTIwOCw2ICsyMjAsMTAg
QEAgYm9vbCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWMKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkKICAgICAgICAgcmV0dXJuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmhhbmRsZU1lc3NhZ2VUb1JlbW92ZWREZXN0aW5hdGlvbihjb25uZWN0aW9uLCBkZWNv
ZGVyKTsKICNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU1TKQorICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpCisgICAgICAgIHJldHVybiBSZW1vdGVWaWRlb0ZyYW1l
UHJveHk6OmhhbmRsZU1lc3NhZ2VUb1JlbW92ZWREZXN0aW5hdGlvbihjb25uZWN0aW9uLCBkZWNv
ZGVyKTsKKyNlbmRpZgogCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCiAgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVBdWRpb1Nlc3Npb246Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDNmOThjYjEwOTc3NjM0NjZhYjIwNWRh
YTAwZWE2YzUxNmY5MTIzZjUuLjgxM2EwNTQ2OTcyY2MzMmFkNjJhYzlmYTI4ZDExZTU0Y2E1ZmVm
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3ND
b25uZWN0aW9uLmgKQEAgLTUxLDYgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyOworY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eTsKIGNsYXNz
IFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CiBjbGFzcyBXZWJQYWdlOwogc3RydWN0
IEdQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzOwpAQCAtNzcsNiAr
NzgsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAgICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYgc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlcigpOwogICAgIHZvaWQgcmVzZXRBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdChBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdElkZW50aWZpZXIpOworICAgIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkmIHJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkoKTsKICNlbmRpZgogCiAgICAgUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyJiBtZWRpYVBsYXllck1hbmFnZXIoKTsKQEAgLTE0MCw2ICsxNDIsNyBA
QCBwcml2YXRlOgogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFn
ZXI+IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKKyAgICBSZWZQdHI8UmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eT4gbV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFBy
b3h5OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShXRUJfQVVESU8pCiAg
ICAgUmVmUHRyPFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyPiBtX2F1ZGlvU291cmNl
UHJvdmlkZXJNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5j
cHAKaW5kZXggN2FlMWVlNzZkYzRiMDdjNDAzZjYwYjhhZDEzZGFkOWI4N2JkZWQwYS4uMzA0MGVk
NjdmMTcyM2IzM2QwYmQ2ZTg0M2QzYWI0MDA1MjcyMGQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCkBAIC0zMiw5ICszMiwxNCBAQAogI2luY2x1ZGUgIkdQ
VVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgogCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHku
aCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CkBAIC0xMTgsNiArMTIzLDMxIEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJiBiCiAgICAgfQog
fQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK1JlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBs
ZT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1Rv
TWVkaWFTYW1wbGUoKQoreworICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9w
ZXJ0aWVzPiByZXN1bHQ7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNh
bXBsZSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBhaW50Q29tcG9zaXRl
ZFJlc3VsdHNUb01lZGlhU2FtcGxlOjpSZXBseShyZXN1bHQpKTsKKyAgICBpZiAoIXNlbmRSZXN1
bHQpIHsKKyAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6Y3JlYXRlKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24tPmNvbm5lY3Rpb24oKSwgV1RGTW92ZSgqcmVzdWx0KSwKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICAgICAgW3Byb3h5ID0gUmVmIHsgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+cmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXBQcm94eSgpIH1dKGF1dG8mIGZyYW1lLCBhdXRvJiYgY2FsbGJhY2sp
IHsKKyAgICAgICAgICAgIHByb3h5LT5nZXRWaWRlb0ZyYW1lQnVmZmVyKGZyYW1lLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CisgICAgICAgIH0KKyNlbHNlCisgICAgICAgIFthdXRvJiBmcmFtZSwgYXV0
byYmIGNhbGxiYWNrXSB7IGNhbGxiYWNrKCk7IH0KKyNlbmRpZgorICAgICk7Cit9CisjZW5kaWYK
KwogYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4dHVyZUZyb21NZWRp
YShNZWRpYVBsYXllciYgbWVkaWFQbGF5ZXIsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wg
ZmxpcFkpCiB7CiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmgKaW5kZXggMjlmMDE5ODcxOTU1OTk4NzkyZWU3Nzk1ZDlhYTYwYzJm
Mzk3Mzk3MS4uNWQxY2FiMjE4Zjc4NWNiYTExNDZhODkxMjJiMzBkMTBjYzY4MzA3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKQEAgLTY1LDYgKzY1LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7CiAgICAgdm9p
ZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpIGZp
bmFsOwogICAgIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6Oklt
YWdlQnVmZmVyJikgZmluYWw7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBSZWZQdHI8
V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxl
KCkgZmluYWw7CisjZW5kaWYKICAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVy
cm9yKSBmaW5hbDsKICAgICBHQ0dMZW51bSBnZXRFcnJvcigpIGZpbmFsOwogICAgIGJvb2wgY29w
eVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0
IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJu
YWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBs
eUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KaW5kZXggZmY3ZTE0OGQ2YjVlZWJhMDI0
YTkzZTNlYjIxMjYyYmFiNzIyODA4Yy4uMGI4YmJhMTZjZmVjMTZiMmJhMTg3MTcxYWZkOWIzYjMx
MzFkNjdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Q29jb2EubW0KQEAgLTM0LDcgKzM0LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ1ZV
dGlsaXRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZS5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9NZWRpYVNhbXBsZUFWRk9iakMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1DQUxh
eWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtOTksOSArOTgsNiBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogICAgIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYK
LSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBs
ZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBmaW5hbDsKLSNlbmRpZgog
cHJpdmF0ZToKICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyIHJlbmRlcmluZ0JhY2tlbmQpCiAgICAgICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkK
QEAgLTExNCwyMCArMTEwLDYgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTsKIH07CiAKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotUmVm
UHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29j
b2E6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkKLXsKLSAgICBpZiAoIW1f
ZGlzcGxheUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgLy8gRklYTUU6IElt
cGxlbWVudCByZW1vdGUgTWVkaWFTYW1wbGUuCi0gICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6
SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KG1fZGlzcGxheUJ1ZmZlci5jb3B5U2VuZFJp
Z2h0KCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKLSAgICBhdXRv
IHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRlQ1ZQaXhlbEJ1ZmZlcihzdXJmYWNlLT5zdXJm
YWNlKCkpOwotICAgIGlmICghcGl4ZWxCdWZmZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJldHVybiBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxl
KFdURk1vdmUoKnBpeGVsQnVmZmVyKSwgV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpWaWRl
b1JvdGF0aW9uOjpVcHNpZGVEb3duLCB0cnVlKTsKLX0KLSNlbmRpZgotCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkoKQogewogICAgIGlm
IChpc0NvbnRleHRMb3N0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZmIwMDFkYTc0ODIzOWYzOGRkOWVkMDMyNWM1OWI3YjgzYzkyNTg3MwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFt
ZUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNp
bmNsdWRlICJPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvUHJvY2Vzc1F1YWxpZmllZC5oPgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVy
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlm
aWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciA9IFdlYkNvcmU6
OlByb2Nlc3NRdWFsaWZpZWQ8T2JqZWN0SWRlbnRpZmllcjxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRp
ZmllclR5cGU+PjsKK3VzaW5nIFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlID0gT2JqZWN0
SWRlbnRpZmllclJlYWRSZWZlcmVuY2U8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+OwordXNp
bmcgUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlID0gT2JqZWN0SWRlbnRpZmllcldyaXRl
UmVmZXJlbmNlPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPjsKK3VzaW5nIFJlbW90ZVZpZGVv
RnJhbWVSZWZlcmVuY2UgPSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFJlbW90ZVZpZGVvRnJh
bWVJZGVudGlmaWVyPjsKK3VzaW5nIFJlbW90ZVZpZGVvRnJhbWVSZWZlcmVuY2VUcmFja2VyID0g
T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXI8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZp
ZXI+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94
eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDU4Y2U5Yjc1ZmNhY2NlZjRiMWNiZjU1YzE2ZjgxNGIwYWYxMDg2
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcApAQCAtMCwwICsxLDE1MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNs
dWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXBNZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlQ29jb2EuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnByb3BlcnRp
ZXMoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlJiYgcmVmZXJlbmNlLCBjb25zdCBX
ZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpCit7CisgICAgcmV0dXJuIHsKKyAgICAg
ICAgV1RGTW92ZShyZWZlcmVuY2UpLAorICAgICAgICBtZWRpYVNhbXBsZS5wcmVzZW50YXRpb25U
aW1lKCksCisgICAgICAgIG1lZGlhU2FtcGxlLnZpZGVvTWlycm9yZWQoKSwKKyAgICAgICAgbWVk
aWFTYW1wbGUudmlkZW9Sb3RhdGlvbigpLAorICAgICAgICBleHBhbmRlZEludFNpemUobWVkaWFT
YW1wbGUucHJlc2VudGF0aW9uU2l6ZSgpKSwKKyAgICAgICAgbWVkaWFTYW1wbGUudmlkZW9QaXhl
bEZvcm1hdCgpCisgICAgfTsKK30KKworUmVmPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4gUmVtb3Rl
VmlkZW9GcmFtZVByb3h5OjpjcmVhdGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQcm9w
ZXJ0aWVzIHByb3BlcnRpZXMsIFBpeGVsQnVmZmVyQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVWaWRlb0ZyYW1lUHJveHkoY29ubmVjdGlvbiwg
V1RGTW92ZShwcm9wZXJ0aWVzKSwgV1RGTW92ZShjYWxsYmFjaykpKTsKK30KKworc3RhdGljIHZv
aWQgcmVsZWFzZVJlbW90ZVZpZGVvRnJhbWVQcm94eShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIGNvbnN0IFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSYgcmVmZXJlbmNlKQorewor
ICAgIGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6
OlJlbGVhc2VWaWRlb0ZyYW1lKHJlZmVyZW5jZSksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0
Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKK30KKwordm9pZCBSZW1vdGVW
aWRlb0ZyYW1lUHJveHk6OnJlbGVhc2VVbnVzZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBQcm9wZXJ0aWVzJiYgcHJvcGVydGllcykKK3sKKyAgICByZWxlYXNlUmVtb3RlVmlkZW9GcmFt
ZVByb3h5KGNvbm5lY3Rpb24sIHsgeyBwcm9wZXJ0aWVzLnJlZmVyZW5jZS5pZGVudGlmaWVyKCks
IHByb3BlcnRpZXMucmVmZXJlbmNlLnZlcnNpb24oKSB9LCAwIH0pOworfQorCitSZW1vdGVWaWRl
b0ZyYW1lUHJveHk6OlJlbW90ZVZpZGVvRnJhbWVQcm94eShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIFByb3BlcnRpZXMgcHJvcGVydGllcywgUGl4ZWxCdWZmZXJDYWxsYmFjayYmIGNhbGxi
YWNrKQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX3JlZmVyZW5jZVRy
YWNrZXIocHJvcGVydGllcy5yZWZlcmVuY2UpCisgICAgLCBtX3ByZXNlbnRhdGlvblRpbWUocHJv
cGVydGllcy5wcmVzZW50YXRpb25UaW1lKQorICAgICwgbV9pc01pcnJvcmVkKHByb3BlcnRpZXMu
aXNNaXJyb3JlZCkKKyAgICAsIG1fcm90YXRpb24ocHJvcGVydGllcy5yb3RhdGlvbikKKyAgICAs
IG1fc2l6ZShwcm9wZXJ0aWVzLnNpemUpCisgICAgLCBtX3BpeGVsRm9ybWF0KHByb3BlcnRpZXMu
cGl4ZWxGb3JtYXQpCisgICAgLCBtX3BpeGVsQnVmZmVyQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFj
aykpCit7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVQcm94eTo6flJlbW90ZVZpZGVvRnJhbWVQcm94
eSgpCit7CisgICAgcmVsZWFzZVJlbW90ZVZpZGVvRnJhbWVQcm94eShtX2Nvbm5lY3Rpb24sIHdy
aXRlKCkpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBSZW1vdGVWaWRlb0ZyYW1l
UHJveHk6OmlkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3JlZmVyZW5jZVRyYWNr
ZXIuaWRlbnRpZmllcigpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UgUmVt
b3RlVmlkZW9GcmFtZVByb3h5Ojp3cml0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVmZXJl
bmNlVHJhY2tlci53cml0ZSgpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSBS
ZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnJlYWQoKSBjb25zdAoreworICAgIHJldHVybiBtX3JlZmVy
ZW5jZVRyYWNrZXIucmVhZCgpOworfQorCitNZWRpYVRpbWUgUmVtb3RlVmlkZW9GcmFtZVByb3h5
OjpwcmVzZW50YXRpb25UaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcmVzZW50YXRpb25U
aW1lOworfQorCitXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6
OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4geyBXZWJDb3JlOjpQbGF0Zm9y
bVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZSwgeyB9IH07Cit9CisKK01lZGlhU2Ft
cGxlOjpWaWRlb1JvdGF0aW9uIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9Sb3RhdGlvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcm90YXRpb247Cit9CisKK2Jvb2wgUmVtb3RlVmlkZW9G
cmFtZVByb3h5Ojp2aWRlb01pcnJvcmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc01pcnJv
cmVkOworfQorCit1aW50MzJfdCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnZpZGVvUGl4ZWxGb3Jt
YXQoKSBjb25zdAoreworICAgIHJldHVybiBtX3BpeGVsRm9ybWF0OworfQorCitzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6Ok1lZGlhU2FtcGxlVmlkZW9GcmFtZT4gUmVtb3RlVmlkZW9GcmFtZVByb3h5
Ojp2aWRlb0ZyYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCisj
aWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6Z2V0UGl4ZWxC
dWZmZXIoKQoreworICAgIEFTU0VSVChtX3BpeGVsQnVmZmVyTG9jay5pc0hlbGQoKSk7CisgICAg
c3RkOjpleGNoYW5nZShtX3BpeGVsQnVmZmVyQ2FsbGJhY2ssIHsgfSkoKnRoaXMsIFt0aGlzXShh
dXRvIHBpeGVsQnVmZmVyKSB7CisgICAgICAgIG1fcGl4ZWxCdWZmZXIgPSBXVEZNb3ZlKHBpeGVs
QnVmZmVyKTsKKyAgICAgICAgaWYgKCFtX3BpeGVsQnVmZmVyKSB7CisgICAgICAgICAgICAvLyBz
b21lIGNvZGUgcGF0aHMgZG8gbm90IGxpa2UgZW1wdHkgcGl4ZWwgYnVmZmVycy4KKyAgICAgICAg
ICAgIG1fcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVCbGFja1BpeGVsQnVmZmVyKHN0YXRp
Y19jYXN0PHNpemVfdD4obV9zaXplLndpZHRoKCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fc2l6
ZS5oZWlnaHQoKSkpOworICAgICAgICB9CisgICAgICAgIG1fc2VtYXBob3JlLnNpZ25hbCgpOwor
ICAgIH0pOworICAgIG1fc2VtYXBob3JlLndhaXQoKTsKK30KKworQ1ZQaXhlbEJ1ZmZlclJlZiBS
ZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnBpeGVsQnVmZmVyKCkgY29uc3QKK3sKKyAgICBMb2NrZXIg
bG9jayhtX3BpeGVsQnVmZmVyTG9jayk7CisgICAgaWYgKCFtX3BpeGVsQnVmZmVyICYmIG1fcGl4
ZWxCdWZmZXJDYWxsYmFjaykKKyAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVWaWRlb0ZyYW1lUHJv
eHkqPih0aGlzKS0+Z2V0UGl4ZWxCdWZmZXIoKTsKKyAgICByZXR1cm4gbV9waXhlbEJ1ZmZlci5n
ZXQoKTsKK30KKyNlbmRpZgorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjMxYTFhODQ1N2ViZjY4NTM2MThkNjhkNWVlOTUxMmVkNzRlZjFmZjcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJh
bWVQcm94eS5oCkBAIC0wLDAgKzEsMTU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNs
dWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9WaWRlb0ZyYW1lLmg+CisjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+
CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgQ29ubmVjdGlvbjsKK2NsYXNzIERlY29kZXI7Cit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKKwor
Ly8gQSBXZWJDb3JlOjpWaWRlb0ZyYW1lIGNsYXNzIHRoYXQgcG9pbnRzIHRvIGEgY29uY3JldGUg
V2ViQ29yZTo6VmlkZW9GcmFtZSBpbnN0YW5jZQorLy8gaW4gYW5vdGhlciBwcm9jZXNzLCBHUFUg
cHJvY2Vzcy4KK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVQcm94eSBmaW5hbCA6IHB1YmxpYyBXZWJD
b3JlOjpWaWRlb0ZyYW1lIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShSZW1vdGVWaWRlb0ZyYW1lUHJveHkpOworcHVibGljOgorICAgIHN0
cnVjdCBQcm9wZXJ0aWVzIHsKKyAgICAgICAgLy8gVGhlIHJlY2VpdmVyIG93bnMgdGhlIHJlZmVy
ZW5jZSwgc28gaXQgbXVzdCBiZSByZWxlYXNlZCB2aWEgZWl0aGVyIGFkb3B0aW9uIHRvCisgICAg
ICAgIC8vIGBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmNyZWF0ZSgpYCBvciB2aWEgYFJlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6cmVsZWFzZVVudXNlZCgpYC4KKyAgICAgICAgV2ViS2l0OjpSZW1vdGVW
aWRlb0ZyYW1lUmVmZXJlbmNlIHJlZmVyZW5jZTsKKyAgICAgICAgTWVkaWFUaW1lIHByZXNlbnRh
dGlvblRpbWU7CisgICAgICAgIGJvb2wgaXNNaXJyb3JlZCB7IGZhbHNlIH07CisgICAgICAgIFZp
ZGVvUm90YXRpb24gcm90YXRpb24geyBWaWRlb1JvdGF0aW9uOjpOb25lIH07CisgICAgICAgIFdl
YkNvcmU6OkludFNpemUgc2l6ZTsKKyAgICAgICAgdWludDMyX3QgcGl4ZWxGb3JtYXQgeyAwIH07
CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxQcm9wZXJ0aWVzPiBkZWNvZGUoRGVjb2RlciYpOworICAgIH07CisKKyAgICBz
dGF0aWMgUHJvcGVydGllcyBwcm9wZXJ0aWVzKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlZmVy
ZW5jZSYmLCBjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYpOworCisjaWYgUExBVEZPUk0oQ09D
T0EpCisgICAgdXNpbmcgUGl4ZWxCdWZmZXJSZXN1bHRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQo
UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYpPjsKKyNlbHNlCisgICAgdXNpbmcgUGl4ZWxC
dWZmZXJSZXN1bHRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoKT47CisjZW5kaWYKKyAgICAvLyBQ
aXhlbEJ1ZmZlckNhbGxiYWNrIHNob3VsZCBhbHdheXMgY29tcGxldGUgYnV0IGl0IG1pZ2h0IG5v
dCBiZSBjYWxsZWQgb24gdGhlIHNhbWUgdGhyZWFkIGl0IHdhcyBjcmVhdGVkLgorICAgIHVzaW5n
IFBpeGVsQnVmZmVyQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlbW90ZVZpZGVvRnJh
bWVQcm94eSYsIFBpeGVsQnVmZmVyUmVzdWx0Q2FsbGJhY2smJik+OworCisgICAgc3RhdGljIFJl
ZjxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+IGNyZWF0ZShJUEM6OkNvbm5lY3Rpb24mLCBQcm9wZXJ0
aWVzLCBQaXhlbEJ1ZmZlckNhbGxiYWNrJiYpOworCisgICAgLy8gQ2FsbGVkIGJ5IHRoZSBlbmQt
cG9pbnRzIHRoYXQgY2FwdHVyZSBjcmVhdGlvbiBtZXNzYWdlcyB0aGF0IGFyZSBzZW50IGZyb20g
R1BVUCBidXQKKyAgICAvLyB3aG9zZSBkZXN0aW5hdGlvbnMgd2VyZSByZWxlYXNlZCBpbiBXUCBi
ZWZvcmUgbWVzc2FnZSB3YXMgcHJvY2Vzc2VkLgorICAgIHN0YXRpYyB2b2lkIHJlbGVhc2VVbnVz
ZWQoSVBDOjpDb25uZWN0aW9uJiwgUHJvcGVydGllcyYmKTsKKworICAgIH5SZW1vdGVWaWRlb0Zy
YW1lUHJveHkoKSBmaW5hbDsKKworICAgIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlkZW50
aWZpZXIoKSBjb25zdDsKKyAgICBSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2Ugd3JpdGUo
KSBjb25zdDsKKyAgICBSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSByZWFkKCkgY29uc3Q7
CisKKyAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoKSBjb25zdDsKKworI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIoKSBjb25zdCBmaW5hbDsKKyNl
bmRpZgorCitwcml2YXRlOgorICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94eShJUEM6OkNvbm5lY3Rp
b24mLCBQcm9wZXJ0aWVzLCBQaXhlbEJ1ZmZlckNhbGxiYWNrJiYpOworCisgICAgLy8gV2ViQ29y
ZTo6VmlkZW9GcmFtZSBvdmVycmlkZXMuCisgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUo
KSBjb25zdCBmaW5hbDsKKyAgICBWaWRlb1JvdGF0aW9uIHZpZGVvUm90YXRpb24oKSBjb25zdCBm
aW5hbDsKKyAgICBib29sIHZpZGVvTWlycm9yZWQoKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3Jl
OjpGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2l6
ZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFTYW1wbGVWaWRlb0ZyYW1lPiB2
aWRlb0ZyYW1lKCkgY29uc3QgZmluYWw7CisgICAgdWludDMyX3QgdmlkZW9QaXhlbEZvcm1hdCgp
IGNvbnN0IGZpbmFsOworICAgIC8vIEZJWE1FOiBXaGVuIFZpZGVvRnJhbWUgaXMgbm90IE1lZGlh
U2FtcGxlLCB0aGVzZSB3aWxsIG5vdCBiZSBuZWVkZWQuCisgICAgV2ViQ29yZTo6UGxhdGZvcm1T
YW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBmaW5hbDsKKworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIHZvaWQgZ2V0UGl4ZWxCdWZmZXIoKTsKKyNlbmRpZgorCisgICAgY29uc3QgUmVmPElQ
Qzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIFJlbW90ZVZpZGVvRnJhbWVSZWZlcmVu
Y2VUcmFja2VyIG1fcmVmZXJlbmNlVHJhY2tlcjsKKyAgICBjb25zdCBNZWRpYVRpbWUgbV9wcmVz
ZW50YXRpb25UaW1lOworICAgIGNvbnN0IGJvb2wgbV9pc01pcnJvcmVkOworICAgIGNvbnN0IFZp
ZGVvUm90YXRpb24gbV9yb3RhdGlvbjsKKyAgICBjb25zdCBXZWJDb3JlOjpJbnRTaXplIG1fc2l6
ZTsKKyAgICB1aW50MzJfdCBtX3BpeGVsRm9ybWF0IHsgMCB9OworICAgIG11dGFibGUgTG9jayBt
X3BpeGVsQnVmZmVyTG9jazsKKyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gbV9waXhl
bEJ1ZmZlcjsKKyAgICBCaW5hcnlTZW1hcGhvcmUgbV9zZW1hcGhvcmU7CisgICAgUGl4ZWxCdWZm
ZXJDYWxsYmFjayBtX3BpeGVsQnVmZmVyQ2FsbGJhY2s7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBFbmNvZGVyPiB2b2lkIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllczo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBwcmVzZW50YXRpb25U
aW1lCisgICAgICAgIDw8IGlzTWlycm9yZWQKKyAgICAgICAgPDwgcm90YXRpb24KKyAgICAgICAg
PDwgc2l6ZQorICAgICAgICA8PCBwaXhlbEZvcm1hdDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
RGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM+
IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllczo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlPiByZWZl
cmVuY2U7CisgICAgc3RkOjpvcHRpb25hbDxNZWRpYVRpbWU+IHByZXNlbnRhdGlvblRpbWU7Cisg
ICAgc3RkOjpvcHRpb25hbDxib29sPiBpc01pcnJvcmVkOworICAgIHN0ZDo6b3B0aW9uYWw8Vmlk
ZW9Sb3RhdGlvbj4gdmlkZW9Sb3RhdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Oklu
dFNpemU+IHNpemU7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGl4ZWxGb3JtYXQ7Cisg
ICAgZGVjb2RlciA+PiBwcmVzZW50YXRpb25UaW1lCisgICAgICAgID4+IGlzTWlycm9yZWQKKyAg
ICAgICAgPj4gdmlkZW9Sb3RhdGlvbgorICAgICAgICA+PiBzaXplCisgICAgICAgID4+IHBpeGVs
Rm9ybWF0OworICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgcmV0dXJuIFByb3BlcnRpZXMgeyBXVEZNb3ZlKCpyZWZlcmVuY2UpLCBX
VEZNb3ZlKCpwcmVzZW50YXRpb25UaW1lKSwgKmlzTWlycm9yZWQsICp2aWRlb1JvdGF0aW9uLCAq
c2l6ZSwgKnBpeGVsRm9ybWF0IH07Cit9CisKK30KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVH
SU4oV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHkpCisgICAgc3RhdGljIGJvb2wgaXNUeXBl
KGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkgeyByZXR1cm4gbWVkaWFT
YW1wbGUucGxhdGZvcm1TYW1wbGUoKS50eXBlID09IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpS
ZW1vdGVWaWRlb0ZyYW1lUHJveHlUeXBlOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgp
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlZpZGVvRnJhbWUpCisgICAg
c3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBs
ZSkgeyByZXR1cm4gbWVkaWFTYW1wbGUucGxhdGZvcm1TYW1wbGUoKS50eXBlID09IFdlYkNvcmU6
OlBsYXRmb3JtU2FtcGxlOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHlUeXBlOyB9CitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0VORCgpCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5SWRlbnRpZmllci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHlJZGVu
dGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDc5MmMwNDg2NTBkMGNhMjY0NjAwMDcyMzQ2NzAzMjgyZTcy
YTRkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5SWRlbnRpZmllci5oCkBAIC0wLDAgKzEsNDIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNp
bmNsdWRlICJPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3VzaW5nIFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlID0gT2JqZWN0SWRlbnRpZmll
clJlYWRSZWZlcmVuY2U8V2ViQ29yZTo6UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+OwordXNp
bmcgUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlID0gT2JqZWN0SWRlbnRpZmllcldyaXRl
UmVmZXJlbmNlPFdlYkNvcmU6OlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPjsKK3VzaW5nIFJl
bW90ZVZpZGVvRnJhbWVSZWZlcmVuY2UgPSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFdlYkNv
cmU6OlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPjsKK3VzaW5nIFJlbW90ZVZpZGVvRnJhbWVS
ZWZlcmVuY2VUcmFja2VyID0gT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXI8V2ViQ29y
ZTo6UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAppbmRleCBmMjBk
MDc0ZjNhNmQ0OTQwNDQ3ODYxYTM0MmI0MTlkY2RkZjI4OWJhLi5jNjZmZDFhNjA3ZTliODQ3YTM0
ODE2MzZhOWFlMTg3YzVjNmIyNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKQEAgLTMyLDYgKzMyLDggQEAK
ICNpbmNsdWRlICJMaWJXZWJSVENDb2RlY3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxpYldlYlJU
Q0NvZGVjc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAi
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVv
RnJhbWVQcm94eS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NWVXRpbGl0aWVzLmg+CkBAIC0x
MzIsMTcgKzEzNCwxNyBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBmb3JtYXROYW1lRnJvbVdlYlJU
Q0NvZGVjVHlwZSh3ZWJydGM6OlZpZGVvQ29kZWNUeXBlIHR5cGUpCiAgICAgfQogfQogCi1zdGF0
aWMgdm9pZCBjcmVhdGVSZW1vdGVEZWNvZGVyKExpYldlYlJUQ0NvZGVjczo6RGVjb2RlciYgZGVj
b2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQorc3RhdGljIHZvaWQgY3JlYXRlUmVt
b3RlRGVjb2RlcihMaWJXZWJSVENDb2RlY3M6OkRlY29kZXImIGRlY29kZXIsIElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgYm9vbCB1c2VSZW1vdGVGcmFtZXMpCiB7CiAgICAgc3dpdGNoIChk
ZWNvZGVyLnR5cGUpIHsKICAgICBjYXNlIExpYldlYlJUQ0NvZGVjczo6VHlwZTo6SDI2NDoKLSAg
ICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6Q3Jl
YXRlSDI2NERlY29kZXIgeyBkZWNvZGVyLmlkZW50aWZpZXIgfSwgMCk7CisgICAgICAgIGNvbm5l
Y3Rpb24uc2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkNyZWF0ZUgyNjREZWNv
ZGVyIHsgZGVjb2Rlci5pZGVudGlmaWVyLCB1c2VSZW1vdGVGcmFtZXMgfSwgMCk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgTGliV2ViUlRDQ29kZWNzOjpUeXBlOjpIMjY1OgotICAgICAgICBj
b25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpDcmVhdGVIMjY1
RGVjb2RlciB7IGRlY29kZXIuaWRlbnRpZmllciB9LCAwKTsKKyAgICAgICAgY29ubmVjdGlvbi5z
ZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6Q3JlYXRlSDI2NURlY29kZXIgeyBk
ZWNvZGVyLmlkZW50aWZpZXIsIHVzZVJlbW90ZUZyYW1lcyB9LCAwKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBMaWJXZWJSVENDb2RlY3M6OlR5cGU6OlZQOToKLSAgICAgICAgY29ubmVjdGlv
bi5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6Q3JlYXRlVlA5RGVjb2RlciB7
IGRlY29kZXIuaWRlbnRpZmllciB9LCAwKTsKKyAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3Nh
Z2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6Q3JlYXRlVlA5RGVjb2RlciB7IGRlY29kZXIuaWRl
bnRpZmllciwgdXNlUmVtb3RlRnJhbWVzIH0sIDApOwogICAgICAgICBicmVhazsKICAgICB9CiB9
CkBAIC0xODQsNiArMTg2LDcgQEAgdm9pZCBMaWJXZWJSVENDb2RlY3M6OmVuc3VyZUdQVVByb2Nl
c3NDb25uZWN0aW9uT25NYWluVGhyZWFkV2l0aExvY2soKQogICAgIGF1dG8mIGdwdUNvbm5lY3Rp
b24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigp
OwogICAgIGdwdUNvbm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlzKTsKICAgICBtX2Nvbm5lY3Rpb24g
PSAmZ3B1Q29ubmVjdGlvbi5jb25uZWN0aW9uKCk7CisgICAgbV9yZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcFByb3h5ID0gJmdwdUNvbm5lY3Rpb24ucmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQ
cm94eSgpOwogICAgIG1fY29ubmVjdGlvbi0+YWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpMaWJXZWJSVENDb2RlY3M6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgdGhpcyk7CiAKICAg
ICBpZiAobV9sb2dnaW5nTGV2ZWwpCkBAIC0yMjgsNyArMjMxLDcgQEAgTGliV2ViUlRDQ29kZWNz
Ojp+TGliV2ViUlRDQ29kZWNzKCkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9p
ZCBMaWJXZWJSVENDb2RlY3M6OnNldENhbGxiYWNrcyhib29sIHVzZUdQVVByb2Nlc3MpCit2b2lk
IExpYldlYlJUQ0NvZGVjczo6c2V0Q2FsbGJhY2tzKGJvb2wgdXNlR1BVUHJvY2VzcywgYm9vbCB1
c2VSZW1vdGVGcmFtZXMpCiB7CiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAKQEAgLTIz
OSw3ICsyNDIsNyBAQCB2b2lkIExpYldlYlJUQ0NvZGVjczo6c2V0Q2FsbGJhY2tzKGJvb2wgdXNl
R1BVUHJvY2VzcykKICAgICB9CiAKICAgICAvLyBMZXQncyBjcmVhdGUgV2ViUHJvY2VzcyBsaWJX
ZWJSVENDb2RlY3Mgc2luY2UgaXQgbWF5IGJlIGNhbGxlZCBmcm9tIHZhcmlvdXMgdGhyZWFkcy4K
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENDb2RlY3MoKTsKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENDb2RlY3MoKS5tX3VzZVJlbW90ZUZyYW1lcyA9
IHVzZVJlbW90ZUZyYW1lczsKIAogI2lmIEVOQUJMRShWUDkpCiAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkubGliV2ViUlRDQ29kZWNzKCkuc2V0VlA5VlRCU3VwcG9ydChXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmhhc1ZQOUhhcmR3YXJlRGVj
b2RlcigpKTsKQEAgLTI1OSw3ICsyNjIsNyBAQCBMaWJXZWJSVENDb2RlY3M6OkRlY29kZXIqIExp
YldlYlJUQ0NvZGVjczo6Y3JlYXRlRGVjb2RlcihUeXBlIHR5cGUpCiAgICAgZW5zdXJlR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb25BbmREaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBkZWNvZGVyID0gV1RGTW92
ZShkZWNvZGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVj
dGlvbkxvY2sgfTsKICAgICAgICAgZGVjb2Rlci0+Y29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbjsK
LSAgICAgICAgY3JlYXRlUmVtb3RlRGVjb2RlcigqZGVjb2RlciwgKm1fY29ubmVjdGlvbik7Cisg
ICAgICAgIGNyZWF0ZVJlbW90ZURlY29kZXIoKmRlY29kZXIsICptX2Nvbm5lY3Rpb24sIG1fdXNl
UmVtb3RlRnJhbWVzKTsKIAogICAgICAgICBhdXRvIGRlY29kZXJJZGVudGlmaWVyID0gZGVjb2Rl
ci0+aWRlbnRpZmllcjsKICAgICAgICAgQVNTRVJUKCFtX2RlY29kZXJzLmNvbnRhaW5zKGRlY29k
ZXJJZGVudGlmaWVyKSk7CkBAIC0zMTUsMTAgKzMxOCwyMyBAQCB2b2lkIExpYldlYlJUQ0NvZGVj
czo6ZmFpbGVkRGVjb2RpbmcoUlRDRGVjb2RlcklkZW50aWZpZXIgZGVjb2RlcklkZW50aWZpZXIp
CiAgICAgICAgIGRlY29kZXItPmhhc0Vycm9yID0gdHJ1ZTsKIH0KIAotdm9pZCBMaWJXZWJSVEND
b2RlY3M6OmNvbXBsZXRlZERlY29kaW5nKFJUQ0RlY29kZXJJZGVudGlmaWVyIGRlY29kZXJJZGVu
dGlmaWVyLCB1aW50MzJfdCB0aW1lU3RhbXAsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYg
cmVtb3RlU2FtcGxlKQordm9pZCBMaWJXZWJSVENDb2RlY3M6OmNvbXBsZXRlZERlY29kaW5nKFJU
Q0RlY29kZXJJZGVudGlmaWVyIGRlY29kZXJJZGVudGlmaWVyLCB1aW50MzJfdCB0aW1lU3RhbXAs
IFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtb3RlU2FtcGxlLCBzdGQ6Om9wdGlvbmFs
PFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPiByZW1vdGVGcmFtZUlkZW50aWZpZXIpCiB7CiAg
ICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwogCisgICAgUmVmUHRyPFJlbW90ZVZpZGVvRnJh
bWVQcm94eT4gcmVtb3RlVmlkZW9GcmFtZTsKKyAgICAvLyBXZSBhbHdheXMgY3JlYXRlIFJlbW90
ZVZpZGVvRnJhbWVQcm94eSBzbyB0aGF0IHdlIGNhbiByZWxlYXNlIHRoZSBjb3JyZXNwb25kaW5n
IEdQVVByb2Nlc3MgSU9TdXJmYWNlIHJpZ2h0IGF3YXkgaWYgdGhlcmUgaXMgbm8gdmlkZW8gc291
cmNlLgorICAgIGlmIChyZW1vdGVGcmFtZUlkZW50aWZpZXIpIHsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fY29ubmVjdGlvbkxvY2sgfTsKKyAgICAgICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5
OjpQcm9wZXJ0aWVzIHByb3BlcnRpZXMgeyB7ICpyZW1vdGVGcmFtZUlkZW50aWZpZXIsIDAgfSwg
cmVtb3RlU2FtcGxlLnRpbWUoKSwgcmVtb3RlU2FtcGxlLm1pcnJvcmVkKCksIHJlbW90ZVNhbXBs
ZS5yb3RhdGlvbigpLCByZW1vdGVTYW1wbGUuc2l6ZSgpLCByZW1vdGVTYW1wbGUudmlkZW9Gb3Jt
YXQoKSB9OworICAgICAgICByZW1vdGVWaWRlb0ZyYW1lID0gUmVtb3RlVmlkZW9GcmFtZVByb3h5
OjpjcmVhdGUoKm1fY29ubmVjdGlvbiwgcHJvcGVydGllcywgW3Byb3h5ID0gbV9yZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcFByb3h5XShhdXRvJiBmcmFtZSwgYXV0byYmIGNhbGxiYWNrKSB7Cisg
ICAgICAgICAgICBpZiAoIXByb3h5KSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soeyB9KTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcm94
eS0+Z2V0VmlkZW9GcmFtZUJ1ZmZlcihmcmFtZSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAg
ICB9KTsKKyAgICB9CiAgICAgLy8gRklYTUU6IERvIGVycm9yIGxvZ2dpbmcuCiAgICAgYXV0byog
ZGVjb2RlciA9IG1fZGVjb2RlcnMuZ2V0KGRlY29kZXJJZGVudGlmaWVyKTsKICAgICBpZiAoIWRl
Y29kZXIpCkBAIC0zMzIsNiArMzQ4LDE0IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzOjpjb21wbGV0
ZWREZWNvZGluZyhSVENEZWNvZGVySWRlbnRpZmllciBkZWNvZGVySWRlbnRpZmllciwKICAgICBp
ZiAoIWRlY29kZXItPmRlY29kZWRJbWFnZUNhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKKyAg
ICBpZiAocmVtb3RlVmlkZW9GcmFtZSkgeworICAgICAgICB3ZWJydGM6OnZpZGVvRGVjb2RlclRh
c2tDb21wbGV0ZShkZWNvZGVyLT5kZWNvZGVkSW1hZ2VDYWxsYmFjaywgdGltZVN0YW1wLCByZW1v
dGVTYW1wbGUudGltZSgpLnRvRG91YmxlKCksIHJlbW90ZVZpZGVvRnJhbWUubGVha1JlZigpLAor
ICAgICAgICAgICAgW10oYXV0byogcG9pbnRlcikgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVtb3Rl
VmlkZW9GcmFtZVByb3h5Kj4ocG9pbnRlciktPnBpeGVsQnVmZmVyKCk7IH0sCisgICAgICAgICAg
ICBbXShhdXRvKiBwb2ludGVyKSB7IHN0YXRpY19jYXN0PFJlbW90ZVZpZGVvRnJhbWVQcm94eSo+
KHBvaW50ZXIpLT5kZXJlZigpOyB9LAorICAgICAgICAgICAgcmVtb3RlU2FtcGxlLnNpemUoKS53
aWR0aCgpLCByZW1vdGVTYW1wbGUuc2l6ZSgpLmhlaWdodCgpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKwogICAgIGlmICghcmVtb3RlU2FtcGxlLnN1cmZhY2UoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBjcmVhdGVDVlBpeGVsQnVmZmVyKHJlbW90ZVNhbXBs
ZS5zdXJmYWNlKCkpLnZhbHVlX29yKG51bGxwdHIpOwpAQCAtMzQwLDcgKzM2NCw3IEBAIHZvaWQg
TGliV2ViUlRDQ29kZWNzOjpjb21wbGV0ZWREZWNvZGluZyhSVENEZWNvZGVySWRlbnRpZmllciBk
ZWNvZGVySWRlbnRpZmllciwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHdlYnJ0Yzo6
dmlkZW9EZWNvZGVyVGFza0NvbXBsZXRlKGRlY29kZXItPmRlY29kZWRJbWFnZUNhbGxiYWNrLCB0
aW1lU3RhbXAsIHBpeGVsQnVmZmVyLmdldCgpLCByZW1vdGVTYW1wbGUudGltZSgpLnRvRG91Ymxl
KCkpOworICAgIHdlYnJ0Yzo6dmlkZW9EZWNvZGVyVGFza0NvbXBsZXRlKGRlY29kZXItPmRlY29k
ZWRJbWFnZUNhbGxiYWNrLCB0aW1lU3RhbXAsIHJlbW90ZVNhbXBsZS50aW1lKCkudG9Eb3VibGUo
KSwgcGl4ZWxCdWZmZXIuZ2V0KCkpOwogfQogCiBzdGF0aWMgaW5saW5lIFN0cmluZyBmb3JtYXRO
YW1lRnJvbUNvZGVjVHlwZShMaWJXZWJSVENDb2RlY3M6OlR5cGUgdHlwZSkKQEAgLTQzOCwyMCAr
NDYyLDMxIEBAIGludDMyX3QgTGliV2ViUlRDQ29kZWNzOjplbmNvZGVGcmFtZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmCiAgICAgaWYgKCFlbmNvZGVyLmNvbm5l
Y3Rpb24pCiAgICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7CiAKLSAgICBh
dXRvIGJ1ZmZlciA9IGFkb3B0Q0Yod2VicnRjOjpwaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFtZSkp
OwotICAgIGlmICghYnVmZmVyKSB7Ci0gICAgICAgIC8vIGJ1ZmZlciBpcyBub3QgbmF0aXZlLCB3
ZSBuZWVkIHRvIGNvcHkgdG8gc2hhcmVkIHZpZGVvIGZyYW1lLgotICAgICAgICBpZiAoIWNvcHlT
aGFyZWRWaWRlb0ZyYW1lKGVuY29kZXIsIGZyYW1lKSkKLSAgICAgICAgICAgIHJldHVybiBXRUJS
VENfVklERU9fQ09ERUNfRVJST1I7CisgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1l
UmVhZFJlZmVyZW5jZT4gcmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2U7CisgICAgaWYgKGF1
dG8gcHJvdmlkZXIgPSB3ZWJydGM6OnZpZGVvRnJhbWVCdWZmZXJQcm92aWRlcihmcmFtZSkpIHsK
KyAgICAgICAgYXV0byYgbWVkaWFTYW1wbGUgPSAqc3RhdGljX2Nhc3Q8TWVkaWFTYW1wbGUqPihw
cm92aWRlcik7CisgICAgICAgIGlmIChpczxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+KG1lZGlhU2Ft
cGxlKSkKKyAgICAgICAgICAgIHJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlID0gZG93bmNh
c3Q8UmVtb3RlVmlkZW9GcmFtZVByb3h5PihtZWRpYVNhbXBsZSkucmVhZCgpOwogICAgIH0KKwor
ICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBidWZmZXI7CisgICAgaWYgKCFyZW1vdGVW
aWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSkgeworICAgICAgICBidWZmZXIgPSBhZG9wdENGKHdlYnJ0
Yzo6cGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUpKTsKKyAgICAgICAgaWYgKCFidWZmZXIpIHsK
KyAgICAgICAgICAgIC8vIGJ1ZmZlciBpcyBub3QgbmF0aXZlLCB3ZSBuZWVkIHRvIGNvcHkgdG8g
c2hhcmVkIHZpZGVvIGZyYW1lLgorICAgICAgICAgICAgaWYgKCFjb3B5U2hhcmVkVmlkZW9GcmFt
ZShlbmNvZGVyLCBmcmFtZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19D
T0RFQ19FUlJPUjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGF1dG8gc2FtcGxlID0gUmVtb3Rl
VmlkZW9TYW1wbGU6OmNyZWF0ZShidWZmZXIuZ2V0KCksIE1lZGlhVGltZShmcmFtZS50aW1lc3Rh
bXBfdXMoKSAqIDEwMDAsIDEwMDAwMDApLCB0b01lZGlhU2FtcGxlVmlkZW9Sb3RhdGlvbihmcmFt
ZS5yb3RhdGlvbigpKSwgUmVtb3RlVmlkZW9TYW1wbGU6OlNob3VsZENoZWNrRm9ySU9TdXJmYWNl
OjpObyk7Ci0gICAgaWYgKCFzYW1wbGUtPnN1cmZhY2UoKSkgeworICAgIGlmIChidWZmZXIgJiYg
IXNhbXBsZS0+c3VyZmFjZSgpKSB7CiAgICAgICAgIC8vIGJ1ZmZlciBpcyBub3QgSU9TdXJmYWNl
LCB3ZSBuZWVkIHRvIGNvcHkgdG8gc2hhcmVkIHZpZGVvIGZyYW1lLgogICAgICAgICBpZiAoIWNv
cHlTaGFyZWRWaWRlb0ZyYW1lKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSkpCiAgICAgICAgICAgICBy
ZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOwogICAgIH0KIAotICAgIGVuY29kZXIuY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkVuY29kZUZyYW1l
IHsgZW5jb2Rlci5pZGVudGlmaWVyLCAqc2FtcGxlLCBmcmFtZS50aW1lc3RhbXAoKSwgc2hvdWxk
RW5jb2RlQXNLZXlGcmFtZSB9LCAwKTsKKyAgICBlbmNvZGVyLmNvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpFbmNvZGVGcmFtZSB7IGVuY29kZXIuaWRlbnRp
ZmllciwgKnNhbXBsZSwgZnJhbWUudGltZXN0YW1wKCksIHNob3VsZEVuY29kZUFzS2V5RnJhbWUs
IHJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlIH0sIDApOwogICAgIHJldHVybiBXRUJSVENf
VklERU9fQ09ERUNfT0s7CiB9CiAKQEAgLTUyNiw3ICs1NjEsNyBAQCB2b2lkIExpYldlYlJUQ0Nv
ZGVjczo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYp
CiAgICAgZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Pbk1haW5UaHJlYWRXaXRoTG9jaygpOwog
ICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25dKCkg
ewogICAgICAgICBmb3IgKGF1dG8mIGRlY29kZXIgOiBtX2RlY29kZXJzLnZhbHVlcygpKSB7Ci0g
ICAgICAgICAgICBjcmVhdGVSZW1vdGVEZWNvZGVyKCpkZWNvZGVyLCAqY29ubmVjdGlvbik7Cisg
ICAgICAgICAgICBjcmVhdGVSZW1vdGVEZWNvZGVyKCpkZWNvZGVyLCAqY29ubmVjdGlvbiwgbV91
c2VSZW1vdGVGcmFtZXMpOwogICAgICAgICAgICAgZGVjb2Rlci0+Y29ubmVjdGlvbiA9IGNvbm5l
Y3Rpb24uZ2V0KCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaAppbmRleCBhMDE3ZGU4Yjg0NTQxZGM2
YzliMzdmZDI1YjM1N2MwMDk4YjIyYzEyLi4yZTQ5MTY0MGI5ZjcyZmJmYjRiOWJlNzA5YTI4ZGYy
MmI2NGMwZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3MuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiUlRDRW5jb2RlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lSWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIlNoYXJlZFZpZGVvRnJhbWUuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaD4KICNpbmNsdWRlIDxtYXA+CkBAIC02MCwxMyAr
NjEsMTUgQEAgc3RydWN0IFdlYktpdEVuY29kZWRGcmFtZUluZm87CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCitjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5OworCiBjbGFzcyBM
aWJXZWJSVENDb2RlY3MgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpUaHJlYWRNZXNzYWdlUmVj
ZWl2ZXJSZWZDb3VudGVkLCBwdWJsaWMgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudCB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxMaWJX
ZWJSVENDb2RlY3M+IGNyZWF0ZSgpOwogICAgIH5MaWJXZWJSVENDb2RlY3MoKTsKIAotICAgIHN0
YXRpYyB2b2lkIHNldENhbGxiYWNrcyhib29sIHVzZUdQVVByb2Nlc3MpOworICAgIHN0YXRpYyB2
b2lkIHNldENhbGxiYWNrcyhib29sIHVzZUdQVVByb2Nlc3MsIGJvb2wgdXNlUmVtb3RlRnJhbWVz
KTsKIAogICAgIGVudW0gY2xhc3MgVHlwZSB7IEgyNjQsIEgyNjUsIFZQOSB9OwogICAgIHN0cnVj
dCBEZWNvZGVyIHsKQEAgLTEyOCw3ICsxMzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKCk7CiAKICAgICB2b2lkIGZhaWxlZERl
Y29kaW5nKFJUQ0RlY29kZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIGNvbXBsZXRlZERlY29kaW5n
KFJUQ0RlY29kZXJJZGVudGlmaWVyLCB1aW50MzJfdCB0aW1lU3RhbXAsIFdlYkNvcmU6OlJlbW90
ZVZpZGVvU2FtcGxlJiYpOworICAgIHZvaWQgY29tcGxldGVkRGVjb2RpbmcoUlRDRGVjb2Rlcklk
ZW50aWZpZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUm
Jiwgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj4pOwogICAgIHZvaWQg
Y29tcGxldGVkRW5jb2RpbmcoUlRDRW5jb2RlcklkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5j
ZSYmLCBjb25zdCB3ZWJydGM6OldlYktpdEVuY29kZWRGcmFtZUluZm8mKTsKICAgICBSZXRhaW5Q
dHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gY29udmVydFRvQkdSQShDVlBpeGVsQnVmZmVyUmVmKTsKIApA
QCAtMTQ5LDYgKzE1Miw3IEBAIHByaXZhdGU6CiAKICAgICBMb2NrIG1fY29ubmVjdGlvbkxvY2s7
CiAgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uIFdURl9HVUFSREVEX0JZ
X0xPQ0sobV9jb25uZWN0aW9uTG9jayk7CisgICAgUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwUHJveHk+IG1fcmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSBXVEZfR1VBUkRF
RF9CWV9MT0NLKG1fY29ubmVjdGlvbkxvY2spOwogICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+
PiBtX3Rhc2tzVG9EaXNwYXRjaEFmdGVyRXN0YWJsaXNoaW5nQ29ubmVjdGlvbjsKIAogICAgIFJl
ZjxXb3JrUXVldWU+IG1fcXVldWU7CkBAIC0xNTgsNiArMTYyLDcgQEAgcHJpdmF0ZToKICAgICBz
aXplX3QgbV9waXhlbEJ1ZmZlclBvb2xIZWlnaHQgeyAwIH07CiAgICAgYm9vbCBtX3N1cHBvcnRW
UDlWVEIgeyBmYWxzZSB9OwogICAgIHN0ZDo6b3B0aW9uYWw8V1RGTG9nTGV2ZWw+IG1fbG9nZ2lu
Z0xldmVsOworICAgIGJvb2wgbV91c2VSZW1vdGVGcmFtZXMgeyBmYWxzZSB9OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW4KaW5kZXggMjVm
MjdmZWE4M2RlN2I1NmZjYWZkOGQxZjhmMzhhMzQ3YWIwNmNiZC4uN2RiNzk1MDgxZWE1ZjA2MDJm
NmYyMjYyN2I0NDU1NTNhOGI3MDc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5pbgpA
QCAtMjQsNyArMjQsNyBAQAogCiBtZXNzYWdlcyAtPiBMaWJXZWJSVENDb2RlY3MgTm90UmVmQ291
bnRlZCB7CiAgICAgRmFpbGVkRGVjb2RpbmcoV2ViS2l0OjpSVENEZWNvZGVySWRlbnRpZmllciBp
ZGVudGlmaWVyKQotICAgIENvbXBsZXRlZERlY29kaW5nKFdlYktpdDo6UlRDRGVjb2RlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgdWludDMyX3QgdGltZVN0YW1wLCBXZWJDb3JlOjpSZW1vdGVWaWRl
b1NhbXBsZSBzYW1wbGUpCisgICAgQ29tcGxldGVkRGVjb2RpbmcoV2ViS2l0OjpSVENEZWNvZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50MzJfdCB0aW1lU3RhbXAsIFdlYkNvcmU6OlJlbW90
ZVZpZGVvU2FtcGxlIHNhbXBsZSwgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlJlbW90ZVZpZGVvRnJh
bWVJZGVudGlmaWVyPiByZW1vdGVGcmFtZUlkZW50aWZpZXIpCiAKICAgICBDb21wbGV0ZWRFbmNv
ZGluZyhXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6RGF0YVJl
ZmVyZW5jZSBkYXRhLCBzdHJ1Y3Qgd2VicnRjOjpXZWJLaXRFbmNvZGVkRnJhbWVJbmZvIGluZm8p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVk
aWFSZWNvcmRlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCmluZGV4IDRmNzdmMzZlNzE3MjQ1OGUxZmRmY2Y5
MjEzNjYzNmU2YzNkYTJmZjUuLjkxODBkMWNhNzJkMDFlMzIyZTdjYTRkZTljODM2ZDY4ZWNjNmEx
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlh
UmVjb3JkZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVjb3JkZXJN
YW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlY29yZGVyTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL01lZGlhU3RyZWFtUHJpdmF0ZS5oPgpAQCAtOTMsMjYgKzk0LDM0IEBAIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlOjp+TWVkaWFSZWNvcmRlclByaXZhdGUoKQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQ
cml2YXRlOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgc2FtcGxlLCBWaWRlb1Nh
bXBsZU1ldGFkYXRhKQogeworICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVJlYWRS
ZWZlcmVuY2U+IHJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gcmVtb3RlU2FtcGxlOwogICAgIGlmIChzaG91bGRNdXRl
VmlkZW8oKSkgeworICAgICAgICAvLyBGSVhNRTogV2UgY291bGQgb3B0aW1pemUgc2VuZGluZyBi
bGFjayBmcmFtZXMgYnkgb25seSBzZW5kaW5nIHdpZHRoL2hlaWdodC4KICAgICAgICAgaWYgKCFt
X2JsYWNrRnJhbWUpIHsKLSAgICAgICAgICAgIGF1dG8gYmxhY2tGcmFtZURlc2NyaXB0aW9uID0g
Q01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihzYW1wbGUucGxhdGZvcm1TYW1wbGUo
KS5zYW1wbGUuY21TYW1wbGVCdWZmZXIpOwotICAgICAgICAgICAgYXV0byBkaW1lbnNpb25zID0g
Q01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uR2V0RGltZW5zaW9ucyhibGFja0ZyYW1lRGVzY3JpcHRp
b24pOwotICAgICAgICAgICAgbV9ibGFja0ZyYW1lID0gY3JlYXRlQmxhY2tQaXhlbEJ1ZmZlcihk
aW1lbnNpb25zLndpZHRoLCBkaW1lbnNpb25zLmhlaWdodCk7CisgICAgICAgICAgICBhdXRvIHNp
emUgPSBzYW1wbGUucHJlc2VudGF0aW9uU2l6ZSgpOworICAgICAgICAgICAgbV9ibGFja0ZyYW1l
ID0gY3JlYXRlQmxhY2tQaXhlbEJ1ZmZlcihzdGF0aWNfY2FzdDxzaXplX3Q+KHNpemUud2lkdGgo
KSksIHN0YXRpY19jYXN0PHNpemVfdD4oc2l6ZS5oZWlnaHQoKSkpOwogICAgICAgICB9CiAgICAg
ICAgIHJlbW90ZVNhbXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUobV9ibGFja0ZyYW1l
LmdldCgpLCBzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpLCBzYW1wbGUudmlkZW9Sb3RhdGlvbigp
LCBSZW1vdGVWaWRlb1NhbXBsZTo6U2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2U6Ok5vKTsKICAgICB9
IGVsc2UgewogICAgICAgICBtX2JsYWNrRnJhbWUgPSBudWxscHRyOwotICAgICAgICByZW1vdGVT
YW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHNhbXBsZSwgUmVtb3RlVmlkZW9TYW1w
bGU6OlNob3VsZENoZWNrRm9ySU9TdXJmYWNlOjpObyk7CisKKyAgICAgICAgaWYgKGlzPFJlbW90
ZVZpZGVvRnJhbWVQcm94eT4oc2FtcGxlKSkgeworICAgICAgICAgICAgcmVtb3RlVmlkZW9GcmFt
ZVJlYWRSZWZlcmVuY2UgPSBkb3duY2FzdDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+KHNhbXBsZSku
cmVhZCgpOworICAgICAgICAgICAgcmVtb3RlU2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNy
ZWF0ZShudWxscHRyLCBzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpLCBzYW1wbGUudmlkZW9Sb3Rh
dGlvbigpLCBSZW1vdGVWaWRlb1NhbXBsZTo6U2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2U6Ok5vKTsK
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZW1vdGVTYW1wbGUgPSBSZW1vdGVWaWRlb1Nh
bXBsZTo6Y3JlYXRlKHNhbXBsZSwgUmVtb3RlVmlkZW9TYW1wbGU6OlNob3VsZENoZWNrRm9ySU9T
dXJmYWNlOjpObyk7CiAgICAgfQogCi0gICAgaWYgKCFyZW1vdGVTYW1wbGUtPnN1cmZhY2UoKSkg
eworICAgIGlmIChpczxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+KHNhbXBsZSkpCisgICAgICAgIHJl
bW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlID0gZG93bmNhc3Q8UmVtb3RlVmlkZW9GcmFtZVBy
b3h5PihzYW1wbGUpLnJlYWQoKTsKKyAgICBlbHNlIGlmICghcmVtb3RlU2FtcGxlLT5zdXJmYWNl
KCkpIHsKICAgICAgICAgLy8gYnVmZmVyIGlzIG5vdCBJT1N1cmZhY2UsIHdlIG5lZWQgdG8gY29w
eSB0byBzaGFyZWQgdmlkZW8gZnJhbWUuCiAgICAgICAgIGlmICghY29weVNoYXJlZFZpZGVvRnJh
bWUocmVtb3RlU2FtcGxlLT5pbWFnZUJ1ZmZlcigpKSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3Jk
ZXI6OlZpZGVvU2FtcGxlQXZhaWxhYmxlIHsgV1RGTW92ZSgqcmVtb3RlU2FtcGxlKSB9LCBtX2lk
ZW50aWZpZXIpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFS
ZWNvcmRlcjo6VmlkZW9TYW1wbGVBdmFpbGFibGUgeyBXVEZNb3ZlKCpyZW1vdGVTYW1wbGUpLCBy
ZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSB9LCBtX2lkZW50aWZpZXIpOwogfQogCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTRhNDU0
YzBjODUzNzVjZTI2MWQyZjMyMGNhZWVmZTU3OGVhMDdhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXBQcm94eS5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BV
X1BST0NFU1MpCisKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJv
Y2Vzc29yLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBXcmFwcGVyIGFyb3VuZCBSZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yIHRoYXQgd2lsbCBhbHdheXMgYmUg
ZGVzdHJvZXlkIG9uIG1haW4gdGhyZWFkLgorY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXBQcm94eSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcFByb3h5LCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluUnVuTG9vcD4geworcHVi
bGljOgorICAgIHN0YXRpYyBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eT4gY3Jl
YXRlKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBjb25uZWN0aW9uKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkoY29ubmVjdGlvbikpOyB9CisgICAg
flJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkoKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lk
IGdldFZpZGVvRnJhbWVCdWZmZXIoY29uc3QgUmVtb3RlVmlkZW9GcmFtZVByb3h5JiBwcm94eSwg
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvcjo6Q2FsbGJhY2smJiBjYWxs
YmFjaykgeyBtX3Byb2Nlc3Nvci0+Z2V0VmlkZW9GcmFtZUJ1ZmZlcihwcm94eSwgV1RGTW92ZShj
YWxsYmFjaykpOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXBQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKKyAgICAgICAg
OiBtX3Byb2Nlc3NvcihSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yOjpj
cmVhdGUoY29ubmVjdGlvbikpCisgICAgeworICAgIH0KKworICAgIFJlZjxSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yPiBtX3Byb2Nlc3NvcjsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3Iu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjFjYTRjN2JjNmU0Mzgz
OTJmYWUxNjViYTc1ZTZmODMwN2U1NWMyMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQ
cm9jZXNzb3IuY3BwCkBAIC0wLDAgKzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuaCIKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BV
X1BST0NFU1MpCisKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvck1l
c3NhZ2VzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitSZWY8UmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXBQcm94eVByb2Nlc3Nvcj4gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVBy
b2Nlc3Nvcjo6Y3JlYXRlKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9j
ZXNzb3IoY29ubmVjdGlvbikpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5
UHJvY2Vzc29yOjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yKEdQVVBy
b2Nlc3NDb25uZWN0aW9uJiBjb25uZWN0aW9uKQorICAgIDogbV9jb25uZWN0aW9uSUQoY29ubmVj
dGlvbi5jb25uZWN0aW9uKCkudW5pcXVlSUQoKSkKKyAgICAsIG1fcXVldWUoV29ya1F1ZXVlOjpj
cmVhdGUoIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkiLCBXb3JrUXVldWU6OlFPUzo6
VXNlckludGVyYWN0aXZlKSkKK3sKKyAgICBjb25uZWN0aW9uLmFkZENsaWVudCgqdGhpcyk7Cisg
ICAgY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuYWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fcXVldWUsIHRoaXMpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcFByb3h5UHJvY2Vzc29yOjp+UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVBy
b2Nlc3NvcigpCit7CisgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CisgICAgY2xlYXJDYWxs
YmFja3MoKTsKK30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vz
c29yOjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBj
b25uZWN0aW9uKQoreworICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2sobV9jb25uZWN0aW9uTG9j
ayk7CisgICAgICAgIG1fY29ubmVjdGlvbklEID0geyB9OworICAgIH0KKyAgICBjb25uZWN0aW9u
LmNvbm5lY3Rpb24oKS5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3I6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSk7CisgICAgY2xlYXJDYWxsYmFja3MoKTsKK30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yOjpjbGVhckNhbGxiYWNrcygpCit7CisgICAgSGFzaE1h
cDxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciwgQ2FsbGJhY2s+IGNhbGxiYWNrczsKKyAgICB7
CisgICAgICAgIExvY2tlciBsb2NrKG1fY2FsbGJhY2tzTG9jayk7CisgICAgICAgIGNhbGxiYWNr
cyA9IHN0ZDo6ZXhjaGFuZ2UobV9jYWxsYmFja3MsIHsgfSk7CisgICAgfQorCisgICAgbV9xdWV1
ZS0+ZGlzcGF0Y2goW3F1ZXVlID0gbV9xdWV1ZSwgY2FsbGJhY2tzID0gV1RGTW92ZShjYWxsYmFj
a3MpXSgpIG11dGFibGUgeworICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tz
LnZhbHVlcygpKQorICAgICAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICB9KTsKK30KKwordm9p
ZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yOjpzZXRTaGFyZWRWaWRl
b0ZyYW1lU2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYgc2VtYXBob3JlKQoreworICAgIG1fc2hh
cmVkVmlkZW9GcmFtZVJlYWRlci5zZXRTZW1hcGhvcmUoV1RGTW92ZShzZW1hcGhvcmUpKTsKK30K
Kwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yOjpzZXRTaGFy
ZWRWaWRlb0ZyYW1lTWVtb3J5KGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBpcGNIYW5k
bGUpCit7CisgICAgbV9zaGFyZWRWaWRlb0ZyYW1lUmVhZGVyLnNldFNoYXJlZE1lbW9yeShpcGNI
YW5kbGUpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yOjpD
YWxsYmFjayBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yOjp0YWtlQ2Fs
bGJhY2soUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBMb2Nr
ZXIgbG9jayhtX2NhbGxiYWNrc0xvY2spOworICAgIHJldHVybiBtX2NhbGxiYWNrcy50YWtlKGlk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9j
ZXNzb3I6OnZpZGVvRnJhbWVCdWZmZXJOb3RGb3VuZChSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmll
ciBpZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvIGNhbGxiYWNrID0gdGFrZUNhbGxiYWNrKGlk
ZW50aWZpZXIpKQorICAgICAgICBjYWxsYmFjayhudWxscHRyKTsKK30KKwordm9pZCBSZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yOjpuZXdWaWRlb0ZyYW1lQnVmZmVyKFJl
bW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byByZXN1bHQg
PSBtX3NoYXJlZFZpZGVvRnJhbWVSZWFkZXIucmVhZCgpOworICAgIGlmIChhdXRvIGNhbGxiYWNr
ID0gdGFrZUNhbGxiYWNrKGlkZW50aWZpZXIpKQorICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJl
c3VsdCkpOworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNz
b3I6OmdldFZpZGVvRnJhbWVCdWZmZXIoY29uc3QgUmVtb3RlVmlkZW9GcmFtZVByb3h5JiBmcmFt
ZSwgQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrKG1f
Y2FsbGJhY2tzTG9jayk7CisgICAgICAgIEFTU0VSVCghbV9jYWxsYmFja3MuY29udGFpbnMoZnJh
bWUuaWRlbnRpZmllcigpKSk7CisgICAgICAgIG1fY2FsbGJhY2tzLmFkZChmcmFtZS5pZGVudGlm
aWVyKCksIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICB9CisgICAgTG9ja2VyIGxvY2sobV9jb25u
ZWN0aW9uTG9jayk7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb25JRCkgeworICAgICAgICB2aWRlb0Zy
YW1lQnVmZmVyTm90Rm91bmQoZnJhbWUuaWRlbnRpZmllcigpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uSUQsIE1lc3NhZ2Vz
OjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6R2V0VmlkZW9GcmFtZUJ1ZmZlcihmcmFtZS5y
ZWFkKCkpLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGlu
Z0ZvclN5bmNSZXBseSk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5
UHJvY2Vzc29yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGY3Yzc4YmJj
ODQwOTIyNTdlNTYyZGI0MjZmOGVmMzcwOTViMmMzMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
UHJveHlQcm9jZXNzb3IuaApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5B
QkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkdQ
VVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5j
bHVkZSAiUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRWaWRl
b0ZyYW1lLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4K
KwordXNpbmcgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgPSBzdHJ1Y3QgX19DVlBpeGVsQnVmZmVyUG9v
bCo7CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgQ29ubmVjdGlvbjsKK2NsYXNzIERlY29kZXI7
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lUHJveHk7
CisKK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3IgOiBwdWJs
aWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBHUFVQ
cm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3I+IGNyZWF0ZShHUFVQcm9jZXNzQ29u
bmVjdGlvbiYpOworICAgIH5SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29y
KCk7CisKKyAgICB1c2luZyBDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmV0YWluUHRyPENWUGl4
ZWxCdWZmZXJSZWY+JiYpPjsKKyAgICB2b2lkIGdldFZpZGVvRnJhbWVCdWZmZXIoY29uc3QgUmVt
b3RlVmlkZW9GcmFtZVByb3h5JiwgQ2FsbGJhY2smJik7CisKK3ByaXZhdGU6CisgICAgZXhwbGlj
aXQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3NvcihHUFVQcm9jZXNzQ29u
bmVjdGlvbiYpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdm9pZCBzZXRT
aGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYpOworICAgIHZvaWQgc2V0
U2hhcmVkVmlkZW9GcmFtZU1lbW9yeShjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpOwor
ICAgIHZvaWQgdmlkZW9GcmFtZUJ1ZmZlck5vdEZvdW5kKFJlbW90ZVZpZGVvRnJhbWVJZGVudGlm
aWVyKTsKKyAgICB2b2lkIG5ld1ZpZGVvRnJhbWVCdWZmZXIoUmVtb3RlVmlkZW9GcmFtZUlkZW50
aWZpZXIpOworCisgICAgLy8gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudAorICAgIHZvaWQg
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpOworCisg
ICAgdm9pZCBjbGVhckNhbGxiYWNrcygpOworICAgIENhbGxiYWNrIHRha2VDYWxsYmFjayhSZW1v
dGVWaWRlb0ZyYW1lSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgTG9jayBtX2Nvbm5lY3Rp
b25Mb2NrOworICAgIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgbV9jb25uZWN0aW9uSUQgV1RG
X0dVQVJERURfQllfTE9DSyhtX2Nvbm5lY3Rpb25Mb2NrKTsKKyAgICBMb2NrIG1fY2FsbGJhY2tz
TG9jazsKKyAgICBIYXNoTWFwPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLCBDYWxsYmFjaz4g
bV9jYWxsYmFja3MgV1RGX0dVQVJERURfQllfTE9DSyhtX2NhbGxiYWNrc0xvY2spOworICAgIFJl
ZjxXb3JrUXVldWU+IG1fcXVldWU7CisgICAgU2hhcmVkVmlkZW9GcmFtZVJlYWRlciBtX3NoYXJl
ZFZpZGVvRnJhbWVSZWFkZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94
eVByb2Nlc3Nvci5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZmI5MzY0OTVhYmUyMmFmNmU3Y2Ux
NGFjYTc5MDc5OWFhZmE3N2FkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nv
ci5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMyIEBACisjIENvcHlyaWdodCAoQykgMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQK
KyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NP
QSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCittZXNzYWdlcyAtPiBSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yIHsKKyAgICBTZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBo
b3JlKElQQzo6U2VtYXBob3JlIHNlbWFwaG9yZSkKKyAgICBTZXRTaGFyZWRWaWRlb0ZyYW1lTWVt
b3J5KFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3RvcmFnZUhhbmRsZSkKKyAgICBW
aWRlb0ZyYW1lQnVmZmVyTm90Rm91bmQoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmll
ciBpZGVudGlmaWVyKQorICAgIE5ld1ZpZGVvRnJhbWVCdWZmZXIoV2ViS2l0OjpSZW1vdGVWaWRl
b0ZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyKQorfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCmluZGV4IGU1ZWY0NmU2MDgyMzk0NjJhYTQwNDhjYjdk
M2ZhMDM0MmU5OGI1NzUuLmU4NDBjZDI4OTU3Y2E5YTdiMzQ3MTAyYjRjM2ViMjg3Y2M4ZWMxNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlc1Jl
cGxpZXMuaCIKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94eS5oIgogI2luY2x1ZGUgIlNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCkBAIC00OSwxMiArNTAsMTMgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyOjpjcmVhdGUoU2FtcGwKIAogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYgbWFuYWdl
ciwgV2ViQ29yZTo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpDbGllbnQmIGNsaWVudCkKICAg
ICA6IFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihjbGllbnQpCisgICAgLCBtX2dw
dVByb2Nlc3NDb25uZWN0aW9uKCZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9j
ZXNzQ29ubmVjdGlvbigpKQogICAgICwgbV9tYW5hZ2VyKG1hbmFnZXIpCi0gICAgLCBtX2Nvbm5l
Y3Rpb24oV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkpCisgICAgLCBtX2Nvbm5lY3Rpb24obV9ncHVQcm9jZXNzQ29ubmVjdGlv
bi0+Y29ubmVjdGlvbigpKQogICAgICwgbV9pZGVudGlmaWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCiB7CiAgICAgbWFuYWdlci5hZGRMYXllcigqdGhp
cyk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5hZGRDbGllbnQoKnRoaXMpOworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmFkZENs
aWVudCgqdGhpcyk7CiB9CiAKIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjppbml0aWFs
aXplKGJvb2wgaGlkZVJvb3RMYXllciwgSW50U2l6ZSBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQpAQCAtNzgsNyArODAsNyBAQCB2b2lkIFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcjo6c2V0TG9nSWRlbnRpZmllcihTdHJpbmcmJiBsb2dJZGVudGlmaWVyKQog
CiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6On5TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoKQog
ewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9u
KCkucmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICBkaXNjb25uZWN0R1BVUHJvY2Vzc0Nvbm5lY3Rp
b25JZk5lZWRlZCgpOwogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6UmVsZWFzZUxheWVyIHsgbV9pZGVudGlmaWVy
IH0sIDApOwogICAgIGlmIChtX21hbmFnZXIpCiAgICAgICAgIG1fbWFuYWdlci0+cmVtb3ZlTGF5
ZXIoKnRoaXMpOwpAQCAtMTQxLDYgKzE0MywxMiBAQCB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6ZW5xdWV1ZVNhbXBsZShNZWRpYVNhbXBsZSYgc2FtcGxlKQogICAgIGlmIChtX3BhdXNl
ZCkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKGlzPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4o
c2FtcGxlKSkgeworICAgICAgICBhdXRvJiByZW1vdGVTYW1wbGUgPSBkb3duY2FzdDxSZW1vdGVW
aWRlb0ZyYW1lUHJveHk+KHNhbXBsZSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpFbnF1ZXVlU2FtcGxlIHsgcmVt
b3RlU2FtcGxlLnJlYWQoKSB9LCBtX2lkZW50aWZpZXIpOworICAgICAgICByZXR1cm47CisgICAg
fQorCiAgICAgYXV0byByZW1vdGVTYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHNh
bXBsZSwgUmVtb3RlVmlkZW9TYW1wbGU6OlNob3VsZENoZWNrRm9ySU9TdXJmYWNlOjpObyk7CiAg
ICAgaWYgKCFyZW1vdGVTYW1wbGUtPnN1cmZhY2UoKSkgewogICAgICAgICAvLyBidWZmZXIgaXMg
bm90IElPU3VyZmFjZSwgd2UgbmVlZCB0byBjb3B5IHRvIHNoYXJlZCB2aWRlbyBmcmFtZS4KQEAg
LTE0OCw3ICsxNTYsNyBAQCB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNh
bXBsZShNZWRpYVNhbXBsZSYgc2FtcGxlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyOjpFbnF1ZXVlU2FtcGxlIHsgKnJlbW90ZVNhbXBsZSB9LCBtX2lkZW50aWZpZXIpOwor
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyOjpFbnF1ZXVlU2FtcGxlQ1YgeyAqcmVtb3RlU2FtcGxlIH0sIG1faWRlbnRpZmllcik7
CiB9CiAKIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjbGVhckVucXVldWVkU2FtcGxl
cygpCkBAIC0xNzEsMTEgKzE3OSwxOCBAQCB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
c2V0RGlkRmFpbChib29sIHZhbHVlKQogdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6Omdw
dVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKQogewogICAg
IG1fc2hhcmVkVmlkZW9GcmFtZVdyaXRlci5kaXNhYmxlKCk7CisgICAgZGlzY29ubmVjdEdQVVBy
b2Nlc3NDb25uZWN0aW9uSWZOZWVkZWQoKTsKICAgICBtX2RpZEZhaWwgPSB0cnVlOwogICAgIGlm
IChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPnNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllclN0
YXR1c0RpZEZhaWwoKTsKIH0KIAordm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmRpc2Nv
bm5lY3RHUFVQcm9jZXNzQ29ubmVjdGlvbklmTmVlZGVkKCkKK3sKKyAgICBpZiAoYXV0byogZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24s
IG51bGxwdHIpKQorICAgICAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi0+cmVtb3ZlQ2xpZW50KCp0
aGlzKTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKaW5kZXgg
NTYzNjlhZGRmMGFiZjM0NmIwZDIxYzg1MDZkNjljYjNkM2I0MGUzOS4uMDQ0NGVjZjJiODYyNzk0
NDMyMTExM2U2OWQyNmIxMmIyNTViZmFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgK
QEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyJiwgV2ViQ29yZTo6U2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyOjpDbGllbnQmKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RHUFVQ
cm9jZXNzQ29ubmVjdGlvbklmTmVlZGVkKCk7CiAKICAgICAvLyBXZWJDb3JlOjpTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIKICAgICB2b2lkIGluaXRpYWxpemUoYm9vbCBoaWRlUm9vdExheWVyLCBX
ZWJDb3JlOjpJbnRTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsK
QEAgLTc2LDYgKzc3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldERpZEZhaWwoYm9vbCk7CiAg
ICAgYm9vbCBjb3B5U2hhcmVkVmlkZW9GcmFtZShDVlBpeGVsQnVmZmVyUmVmKTsKIAorICAgIEdQ
VVByb2Nlc3NDb25uZWN0aW9uKiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uOwogICAgIFdlYWtQdHI8
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcj4gbV9tYW5hZ2VyOwogICAgIFJlZjxJUEM6
OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCmluZGV4IDA3
MGM3M2Q4NTc2ZWMyYjMzOGU5ZDEwOGQzZmU4Y2UxZTZkYTdkMTMuLjhlZGZkYTlkMjJlNGMxYTI2
MTQxZGE5NmE1NjRhNWZlOGU5ZTFjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcApAQCAt
NjEsNyArNjEsNyBAQCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZT4gTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZQogICAgIGlmICghbV9kaWRJbml0
aWFsaXplQ2FsbGJhY2spIHsKICAgICAgICAgLy8gV2UgaW5pdGlhbGl6ZSBvbmx5IG9uY2Ugc2lu
Y2UgY2FsbGJhY2tzIGFyZSB1c2VkIGluIGJhY2tncm91bmQgdGhyZWFkcy4KICAgICAgICAgYXV0
byogcGFnZSA9IG1fd2ViUGFnZS5jb3JlUGFnZSgpOwotICAgICAgICBMaWJXZWJSVENDb2RlY3M6
OnNldENhbGxiYWNrcyhwYWdlICYmIHBhZ2UtPnNldHRpbmdzKCkud2ViUlRDUGxhdGZvcm1Db2Rl
Y3NJbkdQVVByb2Nlc3NFbmFibGVkKCkpOworICAgICAgICBMaWJXZWJSVENDb2RlY3M6OnNldENh
bGxiYWNrcyhwYWdlICYmIHBhZ2UtPnNldHRpbmdzKCkud2ViUlRDUGxhdGZvcm1Db2RlY3NJbkdQ
VVByb2Nlc3NFbmFibGVkKCksIHBhZ2UgJiYgcGFnZS0+c2V0dGluZ3MoKS53ZWJSVENSZW1vdGVW
aWRlb0ZyYW1lRW5hYmxlZCgpKTsKICAgICAgICAgbV9kaWRJbml0aWFsaXplQ2FsbGJhY2sgPSB0
cnVlOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IDU5MjAzNjU5MzZmMTIwNjdkOWI1
NmNlOTNiZGFlZmRhZmI1NzE4NTAuLjczZWM0MTQ3MzA3YWQyNmNkMGNiYzFlODJmOWEyYTQ2MDIx
ZjkxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29h
L1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBXZWJQYWdlOjpwbGF0
Zm9ybUluaXRpYWxpemUoY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgaWYgKGF1dG8qIGNhcHR1cmVNYW5h
Z2VyID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlcj4oKSkKLSAgICAgICAgY2FwdHVyZU1hbmFnZXItPnNldHVwQ2FwdHVyZVByb2Nlc3Nl
cyhwYXJhbWV0ZXJzLnNob3VsZENhcHR1cmVBdWRpb0luVUlQcm9jZXNzLCBwYXJhbWV0ZXJzLnNo
b3VsZENhcHR1cmVBdWRpb0luR1BVUHJvY2VzcywgcGFyYW1ldGVycy5zaG91bGRDYXB0dXJlVmlk
ZW9JblVJUHJvY2VzcywgcGFyYW1ldGVycy5zaG91bGRDYXB0dXJlVmlkZW9JbkdQVVByb2Nlc3Ms
IHBhcmFtZXRlcnMuc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2Vzcyk7CisgICAgICAgIGNh
cHR1cmVNYW5hZ2VyLT5zZXR1cENhcHR1cmVQcm9jZXNzZXMocGFyYW1ldGVycy5zaG91bGRDYXB0
dXJlQXVkaW9JblVJUHJvY2VzcywgcGFyYW1ldGVycy5zaG91bGRDYXB0dXJlQXVkaW9JbkdQVVBy
b2Nlc3MsIHBhcmFtZXRlcnMuc2hvdWxkQ2FwdHVyZVZpZGVvSW5VSVByb2Nlc3MsIHBhcmFtZXRl
cnMuc2hvdWxkQ2FwdHVyZVZpZGVvSW5HUFVQcm9jZXNzLCBwYXJhbWV0ZXJzLnNob3VsZENhcHR1
cmVEaXNwbGF5SW5VSVByb2Nlc3MsIG1fcGFnZS0+c2V0dGluZ3MoKS53ZWJSVENSZW1vdGVWaWRl
b0ZyYW1lRW5hYmxlZCgpKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmNwcApp
bmRleCBiMWVmOGY1NjQ1MmYxZmM2OTFmZWRlNGM0ODQ5YzNiNWIwNmM2NjkzLi41NzMwZGQ0Mjlj
MjJlOTBkYTM3MjFjYjEzNjQwY2U1NjMzZGQwMmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5j
cHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJS
ZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXBQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94
eS5oIgogI2luY2x1ZGUgIlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oPgpA
QCAtMTMzLDYgKzEzNSwxMiBAQCB2b2lkIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjpkaWRV
cGRhdGVTb3VyY2VDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29ubgogICAgIHNldENvbm5l
Y3Rpb24oY29ubmVjdGlvbik7CiB9CiAKK3ZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6
OnNldFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkoUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXBQcm94eSogcHJveHkpCit7CisgICAgTG9ja2VyIGxvY2sobV9yZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcFByb3h5TG9jayk7CisgICAgbV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFBy
b3h5ID0gcHJveHk7Cit9CisKIHZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OmRpc3Bh
dGNoVG9UaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQogewogICAgIG1fcXVldWUt
PmRpc3BhdGNoKFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTE1MCwxNSArMTU4LDM1IEBAIHZvaWQg
UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OmF1ZGlvU3RvcmFnZUNoYW5nZWQoV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjCiAgICAgaXRlcmF0b3ItPnZhbHVlLT5zZXRTdG9yYWdlKGlwY0hh
bmRsZS5oYW5kbGUsIGRlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcywgV1RGTW92ZShzZW1hcGhv
cmUpLCBtZWRpYVRpbWUsIGZyYW1lQ2h1bmtTaXplKTsKIH0KIAotdm9pZCBSZW1vdGVDYXB0dXJl
U2FtcGxlTWFuYWdlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoUmVhbHRpbWVNZWRpYVNvdXJjZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlVmlkZW9TYW1wbGUmJiBzYW1wbGUsIFZpZGVvU2Ft
cGxlTWV0YWRhdGEgbWV0YWRhdGEpCit2b2lkIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjp2
aWRlb1NhbXBsZUF2YWlsYWJsZShSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZGVudGlm
aWVyLCBSZW1vdGVWaWRlb1NhbXBsZSYmIHNhbXBsZSwgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRl
b0ZyYW1lSWRlbnRpZmllcj4gcmVtb3RlSWRlbnRpZmllciwgVmlkZW9TYW1wbGVNZXRhZGF0YSBt
ZXRhZGF0YSkKIHsKICAgICBBU1NFUlQoIVdURjo6aXNNYWluUnVuTG9vcCgpKTsKIAorICAgIFJl
ZlB0cjxNZWRpYVNhbXBsZT4gdmlkZW9GcmFtZTsKKyAgICAvLyBXZSBhbHdheXMgY3JlYXRlIFJl
bW90ZVZpZGVvRnJhbWVQcm94eSBzbyB0aGF0IHdlIGNhbiByZWxlYXNlIHRoZSBjb3JyZXNwb25k
aW5nIEdQVVByb2Nlc3MgSU9TdXJmYWNlIHJpZ2h0IGF3YXkgaWYgdGhlcmUgaXMgbm8gdmlkZW8g
c291cmNlLgorICAgIGlmIChyZW1vdGVJZGVudGlmaWVyKSB7CisgICAgICAgIFJlbW90ZVZpZGVv
RnJhbWVQcm94eTo6UHJvcGVydGllcyBwcm9wZXJ0aWVzIHsgeyAqcmVtb3RlSWRlbnRpZmllciwg
MCB9LCBzYW1wbGUudGltZSgpLCBzYW1wbGUubWlycm9yZWQoKSwgc2FtcGxlLnJvdGF0aW9uKCks
IHNhbXBsZS5zaXplKCksIHNhbXBsZS52aWRlb0Zvcm1hdCgpIH07CisgICAgICAgIAorICAgICAg
ICAvLyBGSVhNRTogV2UgbmVlZCB0byBlaXRoZXIgZ2V0IEdQVVByb2Nlc3Mgb3IgVUlQcm9jZXNz
IG9iamVjdCBoZWFwIHByb3h5LiBGb3Igbm93IHdlIGFsd2F5cyBnbyB0byBHUFVQcm9jZXNzLgor
ICAgICAgICBMb2NrZXIgbG9jayhtX3JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlMb2Nr
KTsKKyAgICAgICAgdmlkZW9GcmFtZSA9IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6Y3JlYXRlKCpt
X2Nvbm5lY3Rpb24sIHByb3BlcnRpZXMsIFtwcm94eSA9IG1fcmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXBQcm94eV0oYXV0byYgZnJhbWUsIGF1dG8mJiBjYWxsYmFjaykgeworICAgICAgICAgICAg
aWYgKCFwcm94eSkgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJveHktPmdldFZpZGVv
RnJhbWVCdWZmZXIoZnJhbWUsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgfSk7CisgICAg
fQorCiAgICAgYXV0byBpdGVyYXRvciA9IG1fdmlkZW9Tb3VyY2VzLmZpbmQoaWRlbnRpZmllcik7
CiAgICAgaWYgKGl0ZXJhdG9yID09IG1fdmlkZW9Tb3VyY2VzLmVuZCgpKSB7CiAgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIlVuYWJsZSB0byBmaW5kIHNvdXJjZSAlbGx1IGZvciBy
ZW1vdGVWaWRlb1NhbXBsZUF2YWlsYWJsZSIsIGlkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKHZpZGVvRnJhbWUpIHsKKyAgICAgICAgaXRlcmF0
b3ItPnZhbHVlLT52aWRlb0ZyYW1lQXZhaWxhYmxlKHZpZGVvRnJhbWUucmVsZWFzZU5vbk51bGwo
KSwgc2FtcGxlLnNpemUoKSwgbWV0YWRhdGEpOworICAgICAgICByZXR1cm47CisgICAgfQogICAg
IGl0ZXJhdG9yLT52YWx1ZS0+dmlkZW9TYW1wbGVBdmFpbGFibGUoV1RGTW92ZShzYW1wbGUpLCBt
ZXRhZGF0YSk7CiB9CiAKQEAgLTI0NywxMCArMjc1LDE1IEBAIHZvaWQgUmVtb3RlQ2FwdHVyZVNh
bXBsZU1hbmFnZXI6OlJlbW90ZVZpZGVvOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShSZW1vdGVWaWRl
b1NhCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQorICAgIHZpZGVvRnJhbWVBdmFpbGFibGUoc2FtcGxlUmVmLnJlbGVhc2VOb25OdWxsKCksIHJl
bW90ZVNhbXBsZS5zaXplKCksIG1ldGFkYXRhKTsKK30KKwordm9pZCBSZW1vdGVDYXB0dXJlU2Ft
cGxlTWFuYWdlcjo6UmVtb3RlVmlkZW86OnZpZGVvRnJhbWVBdmFpbGFibGUoUmVmPE1lZGlhU2Ft
cGxlPiYmIHNhbXBsZSwgSW50U2l6ZSBzaXplLCBWaWRlb1NhbXBsZU1ldGFkYXRhIG1ldGFkYXRh
KQorewogICAgIHN3aXRjaE9uKG1fc291cmNlLCBbJl0oUmVmPFJlbW90ZVJlYWx0aW1lVmlkZW9T
b3VyY2U+JiBzb3VyY2UpIHsKLSAgICAgICAgc291cmNlLT52aWRlb1NhbXBsZUF2YWlsYWJsZSgq
c2FtcGxlUmVmLCByZW1vdGVTYW1wbGUuc2l6ZSgpLCBtZXRhZGF0YSk7CisgICAgICAgIHNvdXJj
ZS0+dmlkZW9TYW1wbGVBdmFpbGFibGUoc2FtcGxlLmdldCgpLCBzaXplLCBtZXRhZGF0YSk7CiAg
ICAgfSwgWyZdKFJlZjxSZW1vdGVSZWFsdGltZURpc3BsYXlTb3VyY2U+JiBzb3VyY2UpIHsKLSAg
ICAgICAgc291cmNlLT5yZW1vdGVWaWRlb1NhbXBsZUF2YWlsYWJsZSgqc2FtcGxlUmVmLCBtZXRh
ZGF0YSk7CisgICAgICAgIHNvdXJjZS0+cmVtb3RlVmlkZW9TYW1wbGVBdmFpbGFibGUoc2FtcGxl
LmdldCgpLCBtZXRhZGF0YSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmgKaW5k
ZXggODZmNDkwYjc4MGZlNDljYTExYTEwNGFmN2I2OWJkMzNlNjhjMTcyNi4uYmYxZGE5ZGRjZTgw
MTQwOThiNWEyNWFiZjU0NzQ1ODQwNTE3MmEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmgKQEAg
LTMzLDExICszMywxMyBAQAogI2luY2x1ZGUgIlJlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UuaCIK
ICNpbmNsdWRlICJSZW1vdGVSZWFsdGltZURpc3BsYXlTb3VyY2UuaCIKICNpbmNsdWRlICJSZW1v
dGVSZWFsdGltZVZpZGVvU291cmNlLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZUlkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NB
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJBdWRpb0J1ZmZlckxpc3QuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtR
dWV1ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw2ICs0OCw3IEBAIGNsYXNzIFJl
bW90ZVZpZGVvU2FtcGxlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwUHJveHk7CiAKIGNsYXNzIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5h
Z2VyIDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVyUmVmQ291
bnRlZCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC02MCw2ICs2Myw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlbW92ZVNvdXJjZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNl
SWRlbnRpZmllcik7CiAKICAgICB2b2lkIGRpZFVwZGF0ZVNvdXJjZUNvbm5lY3Rpb24oSVBDOjpD
b25uZWN0aW9uKik7CisgICAgdm9pZCBzZXRSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5
KFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkqKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKQEAgLTcwLDcgKzc0
LDcgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlcwogICAgIHZvaWQgYXVkaW9TdG9yYWdlQ2hh
bmdlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgY29uc3QgU2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUmLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24mLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgSVBDOjpTZW1hcGhvcmUmJiwgY29uc3QgTWVk
aWFUaW1lJiwgc2l6ZV90IGZyYW1lU2FtcGxlU2l6ZSk7CiAgICAgdm9pZCBhdWRpb1NhbXBsZXNB
dmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIE1lZGlhVGlt
ZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpOwotICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFi
bGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90
ZVZpZGVvU2FtcGxlJiYsIFdlYkNvcmU6OlZpZGVvU2FtcGxlTWV0YWRhdGEpOworICAgIHZvaWQg
dmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYsIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlk
ZW9GcmFtZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpWaWRlb1NhbXBsZU1ldGFkYXRhKTsKIAogICAg
IHZvaWQgc2V0Q29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qKTsKIApAQCAtMTA2LDYgKzExMCw3
IEBAIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IFJlbW90ZVZpZGVvKFNvdXJjZSYmKTsKIAog
ICAgICAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2Ft
cGxlJiYsIFdlYkNvcmU6OlZpZGVvU2FtcGxlTWV0YWRhdGEpOworICAgICAgICB2b2lkIHZpZGVv
RnJhbWVBdmFpbGFibGUoUmVmPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiYmLCBXZWJDb3JlOjpJbnRT
aXplLCBXZWJDb3JlOjpWaWRlb1NhbXBsZU1ldGFkYXRhKTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIFNvdXJjZSBtX3NvdXJjZTsKQEAgLTExNSwxMCArMTIwLDEyIEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2lzUmVnaXN0ZXJlZFRvUGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9Owog
ICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CiAgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4g
bV9jb25uZWN0aW9uOwotCiAgICAgLy8gYmFja2dyb3VuZCB0aHJlYWQgbWVtYmVyCiAgICAgSGFz
aE1hcDxXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUF1ZGlvPj4gbV9hdWRpb1NvdXJjZXM7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVv
Pj4gbV92aWRlb1NvdXJjZXM7CisKKyAgICBMb2NrIG1fcmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXBQcm94eUxvY2s7CisgICAgUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk+
IG1fcmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1f
cmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eUxvY2spOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVt
b3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXgg
ODY1MWIzY2Q3OTlhMWY3NTRmMmU4MDNjNDY4ODkwZThmNWFhZmE2Ni4uOTY3MjIxODQxZTBjZjI0
YTk1ZWQ1ZWMyY2FkMjAxYzA2NDg0ZjYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdl
ci5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQAogCiBtZXNzYWdlcyAtPiBSZW1vdGVDYXB0
dXJlU2FtcGxlTWFuYWdlciBOb3RSZWZDb3VudGVkIHsKICAgICBBdWRpb1N0b3JhZ2VDaGFuZ2Vk
KFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBXZWJLaXQ6OlNoYXJl
ZE1lbW9yeTo6SVBDSGFuZGxlIHN0b3JhZ2VIYW5kbGUsIFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIElQQzo6U2Vt
YXBob3JlIGNhcHR1cmVTZW1hcGhvcmUsIE1lZGlhVGltZSBtZWRpYVRpbWUsIHNpemVfdCBmcmFt
ZUNodW5rU2l6ZSk7Ci0gICAgVmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBs
ZSwgc3RydWN0IFdlYkNvcmU6OlZpZGVvU2FtcGxlTWV0YWRhdGEgbWV0YWRhdGEpCisgICAgVmlk
ZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIg
aWQsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSwgc3RkOjpvcHRpb25hbDxXZWJL
aXQ6OlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPiByZW1vdGVJZGVudGlmaWVyLCBzdHJ1Y3Qg
V2ViQ29yZTo6VmlkZW9TYW1wbGVNZXRhZGF0YSBtZXRhZGF0YSkKIH0KIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVNZWRp
YVNvdXJjZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVS
ZWFsdGltZU1lZGlhU291cmNlUHJveHkuY3BwCmluZGV4IDhhNTlhZTFhMjhmYTQzYTliMmYyMTU3
NjIxMTg5YWU5NzZkMTAyZGYuLjRhMjk0ZDhjNTQxNzFlNmUxMDA1YjNhNDA2NjU2YjI2YzE1OWMw
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFs
dGltZU1lZGlhU291cmNlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlUHJveHkuY3BwCkBAIC02OCw5ICs2OCw5IEBA
IHZvaWQgUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZVByb3h5OjpzdG9wUHJvZHVjaW5nRGF0YSgp
CiAgICAgY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5OjpTdG9wUHJvZHVjaW5nRGF0YSB7IG1faWRlbnRpZmllciB9LCAwKTsKIH0KIAotdm9p
ZCBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlUHJveHk6OmNyZWF0ZVJlbW90ZU1lZGlhU291cmNl
KGNvbnN0IFN0cmluZyYgZGV2aWNlSURIYXNoU2FsdCwgQ3JlYXRlQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3ZvaWQgUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZVByb3h5OjpjcmVhdGVSZW1vdGVNZWRp
YVNvdXJjZShjb25zdCBTdHJpbmcmIGRldmljZUlESGFzaFNhbHQsIENyZWF0ZUNhbGxiYWNrJiYg
Y2FsbGJhY2ssIGJvb2wgc2hvdWxkVXNlUmVtb3RlRnJhbWUpCiB7Ci0gICAgY29ubmVjdGlvbigp
LT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHk6OkNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyhpZGVu
dGlmaWVyKCksIG1fZGV2aWNlLCBkZXZpY2VJREhhc2hTYWx0LCBtX2NvbnN0cmFpbnRzKSwgV1RG
TW92ZShjYWxsYmFjaykpOworICAgIGNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpDcmVhdGVNZWRpYVNvdXJjZUZv
ckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMoaWRlbnRpZmllcigpLCBtX2RldmljZSwgZGV2
aWNlSURIYXNoU2FsdCwgbV9jb25zdHJhaW50cywgc2hvdWxkVXNlUmVtb3RlRnJhbWUpLCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZVByb3h5
OjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzLCBS
ZWFsdGltZU1lZGlhU291cmNlOjpBcHBseUNvbnN0cmFpbnRzSGFuZGxlciYmIGNvbXBsZXRpb25I
YW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1JlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VQcm94eS5oCmluZGV4IGU2MDMxZGZkYmVmZTY2
NmExMWU0NjcxMjY4NDFkYzk2MTgwMGRjYzYuLjY2NmI5YzEyYWJiZmNkZDZmMzUzNjZkZjliZmYz
MTRhMGU3ZDYzZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9S
ZW1vdGVSZWFsdGltZU1lZGlhU291cmNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZVByb3h5LmgKQEAgLTU0LDcgKzU0
LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcygpIGNvbnN0
IHsgcmV0dXJuIG1fc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzczsgfQogCiAgICAgdXNpbmcgQ3Jl
YXRlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIFN0cmluZyYmLCBXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmJiwgV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZUNhcGFiaWxpdGllcyYmLCBWZWN0b3I8V2ViQ29yZTo6VmlkZW9QcmVzZXREYXRhPiYm
LCBXZWJDb3JlOjpJbnRTaXplLCBkb3VibGUpPjsKLSAgICB2b2lkIGNyZWF0ZVJlbW90ZU1lZGlh
U291cmNlKGNvbnN0IFN0cmluZyYsIENyZWF0ZUNhbGxiYWNrJiYpOworICAgIHZvaWQgY3JlYXRl
UmVtb3RlTWVkaWFTb3VyY2UoY29uc3QgU3RyaW5nJiwgQ3JlYXRlQ2FsbGJhY2smJiwgYm9vbCBz
aG91bGRVc2VSZW1vdGVGcmFtZSA9IGZhbHNlKTsKIAogICAgIHZvaWQgYXBwbHlDb25zdHJhaW50
c1N1Y2NlZWRlZCgpOwogICAgIHZvaWQgYXBwbHlDb25zdHJhaW50c0ZhaWxlZChTdHJpbmcmJiBm
YWlsZWRDb25zdHJhaW50LCBTdHJpbmcmJiBlcnJvck1lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2UuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lVmlkZW9Tb3Vy
Y2UuY3BwCmluZGV4IGVjZDg2YzBmYTUzNTRlZGI3NzFjNjJmNmU4ZmM4OWExYWVjN2I2ODMuLmQy
ZDI0YWJhYjllYzM0YTBkYTIyZWI2NWE4YWQzY2I1ZjAwN2Q5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZVZpZGVvU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVWaWRlb1Nv
dXJjZS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBSZW1vdGVSZWFsdGltZVZpZGVvU291cmNl
OjpjcmVhdGVSZW1vdGVNZWRpYVNvdXJjZSgpCiAgICAgICAgIG1fcHJveHkuc2V0QXNSZWFkeSgp
OwogICAgICAgICBpZiAobV9wcm94eS5zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKCkpCiAgICAg
ICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlv
bigpLmFkZENsaWVudCgqdGhpcyk7Ci0gICAgfSk7CisgICAgfSwgbV9tYW5hZ2VyLnNob3VsZFVz
ZUdQVVByb2Nlc3NSZW1vdGVGcmFtZXMoKSk7CiB9CiAKIFJlbW90ZVJlYWx0aW1lVmlkZW9Tb3Vy
Y2U6On5SZW1vdGVSZWFsdGltZVZpZGVvU291cmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCmluZGV4
IDFlZTkyMzA2OWNkYzU4YzlkN2EyMTAyN2VjOTQ2NjMwYjJjMGViMWUuLmM1ZmY3MjU3NDc2ODZi
ZTkxYmNjOThkZjI0MjY3MmUyNDIwYzllYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcApAQCAtNzAs
OCArNzAsOSBAQCBjb25zdCBjaGFyKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6c3VwcGxlbWVu
dE5hbWUoKQogICAgIHJldHVybiAiVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIiOwogfQogCi12b2lk
IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpzZXR1cENhcHR1cmVQcm9jZXNzZXMoYm9vbCBzaG91
bGRDYXB0dXJlQXVkaW9JblVJUHJvY2VzcywgYm9vbCBzaG91bGRDYXB0dXJlQXVkaW9JbkdQVVBy
b2Nlc3MsIGJvb2wgc2hvdWxkQ2FwdHVyZVZpZGVvSW5VSVByb2Nlc3MsIGJvb2wgc2hvdWxkQ2Fw
dHVyZVZpZGVvSW5HUFVQcm9jZXNzLCBib29sIHNob3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nl
c3MpCit2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpzZXR1cENhcHR1cmVQcm9jZXNzZXMo
Ym9vbCBzaG91bGRDYXB0dXJlQXVkaW9JblVJUHJvY2VzcywgYm9vbCBzaG91bGRDYXB0dXJlQXVk
aW9JbkdQVVByb2Nlc3MsIGJvb2wgc2hvdWxkQ2FwdHVyZVZpZGVvSW5VSVByb2Nlc3MsIGJvb2wg
c2hvdWxkQ2FwdHVyZVZpZGVvSW5HUFVQcm9jZXNzLCBib29sIHNob3VsZENhcHR1cmVEaXNwbGF5
SW5VSVByb2Nlc3MsIGJvb2wgc2hvdWxkVXNlR1BVUHJvY2Vzc1JlbW90ZUZyYW1lcykKIHsKKyAg
ICBtX3Nob3VsZFVzZUdQVVByb2Nlc3NSZW1vdGVGcmFtZXMgPSBzaG91bGRVc2VHUFVQcm9jZXNz
UmVtb3RlRnJhbWVzOwogICAgIC8vIEZJWE1FKHJkYXI6Ly84NDI3ODE0Nik6IEFkb3B0IEFWQ2Fw
dHVyZVNlc3Npb24gYXR0cmlidXRpb24gQVBJIGZvciBjYW1lcmEgYWNjZXNzIGluIHRoZSB3ZWIg
cHJvY2VzcyBpZiBzaG91bGRDYXB0dXJlVmlkZW9JbkdQVVByb2Nlc3MgaXMgZmFsc2UuCiAgICAg
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnNldE1vY2tBdWRpb0Nh
cHR1cmVFbmFibGVkKCFzaG91bGRDYXB0dXJlQXVkaW9JblVJUHJvY2VzcyAmJiAhc2hvdWxkQ2Fw
dHVyZUF1ZGlvSW5HUFVQcm9jZXNzKTsKICAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
cjo6c2luZ2xldG9uKCkuc2V0TW9ja1ZpZGVvQ2FwdHVyZUVuYWJsZWQoIXNob3VsZENhcHR1cmVW
aWRlb0luVUlQcm9jZXNzICYmICFzaG91bGRDYXB0dXJlVmlkZW9JbkdQVVByb2Nlc3MpOwpAQCAt
MjMwLDE0ICsyMzEsMjEgQEAgdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6QXVkaW9GYWN0
b3J5OjpzZXRTaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKGJvb2wgdmEKICAgICBtX3Nob3VsZENh
cHR1cmVJbkdQVVByb2Nlc3MgPSB2YWx1ZTsKIH0KIAordm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlcjo6VmlkZW9GYWN0b3J5OjpzZXRTaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKGJvb2wgdmFs
dWUpCit7CisgICAgbV9zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzID0gdmFsdWU7Cit9CisKIENh
cHR1cmVTb3VyY2VPckVycm9yIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpWaWRlb0ZhY3Rvcnk6
OmNyZWF0ZVZpZGVvQ2FwdHVyZVNvdXJjZShjb25zdCBDYXB0dXJlRGV2aWNlJiBkZXZpY2UsIFN0
cmluZyYmIGhhc2hTYWx0LCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykKIHsK
ICNpZiAhRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIGlmIChtX3Nob3VsZENhcHR1cmVJbkdQVVBy
b2Nlc3MpCiAgICAgICAgIHJldHVybiBDYXB0dXJlU291cmNlT3JFcnJvciB7ICJWaWRlbyBjYXB0
dXJlIGluIEdQVVByb2Nlc3MgaXMgbm90IGltcGxlbWVudGVkIl9zIH07CiAjZW5kaWYKKyAgICBp
ZiAobV9zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKQorICAgICAgICBtX21hbmFnZXIubV9yZW1v
dGVDYXB0dXJlU2FtcGxlTWFuYWdlci5zZXRSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5
KCZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLnJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkoKSk7CiAKLSAgICBib29sIHNob3VsZFVzZUlP
U3VyZmFjZSA9IGZhbHNlOworICAgIGJvb2wgc2hvdWxkVXNlSU9TdXJmYWNlID0gIW1fbWFuYWdl
ci5tX3Nob3VsZFVzZUdQVVByb2Nlc3NSZW1vdGVGcmFtZXM7CiAgICAgcmV0dXJuIENhcHR1cmVT
b3VyY2VPckVycm9yKFJlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZShSZW1vdGVSZWFsdGltZVZp
ZGVvU291cmNlOjpjcmVhdGUoZGV2aWNlLCBjb25zdHJhaW50cywgeyB9LCBXVEZNb3ZlKGhhc2hT
YWx0KSwgbV9tYW5hZ2VyLCBtX3Nob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MpLCBzaG91bGRVc2VJ
T1N1cmZhY2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaAppbmRleCA3YzU0YTJhMzBjZDVlYTdmZGJk
Yjk4NjMzYmE4NDBhYWVlYTBkYWU1Li4wNjkwMTcwZjk3ZTdlY2UyNDQ4OTNmMzQ1ZmU1ZDhlNzEz
ZjNhOTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAKICAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlRnJvbUdQVVByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6
OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
cik7IH0KLSAgICB2b2lkIHNldHVwQ2FwdHVyZVByb2Nlc3Nlcyhib29sIHNob3VsZENhcHR1cmVB
dWRpb0luVUlQcm9jZXNzLCBib29sIHNob3VsZENhcHR1cmVBdWRpb0luR1BVUHJvY2VzcywgYm9v
bCBzaG91bGRDYXB0dXJlVmlkZW9JblVJUHJvY2VzcywgYm9vbCBzaG91bGRDYXB0dXJlVmlkZW9J
bkdQVVByb2Nlc3MsIGJvb2wgc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2Vzcyk7CisgICAg
dm9pZCBzZXR1cENhcHR1cmVQcm9jZXNzZXMoYm9vbCBzaG91bGRDYXB0dXJlQXVkaW9JblVJUHJv
Y2VzcywgYm9vbCBzaG91bGRDYXB0dXJlQXVkaW9JbkdQVVByb2Nlc3MsIGJvb2wgc2hvdWxkQ2Fw
dHVyZVZpZGVvSW5VSVByb2Nlc3MsIGJvb2wgc2hvdWxkQ2FwdHVyZVZpZGVvSW5HUFVQcm9jZXNz
LCBib29sIHNob3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3MsIGJvb2wgc2hvdWxkVXNlR1BV
UHJvY2Vzc1JlbW90ZUZyYW1lcyk7CiAKICAgICB2b2lkIGFkZFNvdXJjZShSZWY8UmVtb3RlUmVh
bHRpbWVBdWRpb1NvdXJjZT4mJik7CiAgICAgdm9pZCBhZGRTb3VyY2UoUmVmPFJlbW90ZVJlYWx0
aW1lVmlkZW9Tb3VyY2U+JiYpOwpAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZW1vdmVTb3VyY2UoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIpOwogCiAg
ICAgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXImIHJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2Vy
KCkgeyByZXR1cm4gbV9yZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjsgfQorICAgIGJvb2wgc2hv
dWxkVXNlR1BVUHJvY2Vzc1JlbW90ZUZyYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkVXNl
R1BVUHJvY2Vzc1JlbW90ZUZyYW1lczsgfQogCiBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2UgZmFjdG9yaWVzCkBAIC04NSw3ICs4Niw3IEBAIHByaXZhdGU6CiAg
ICAgY2xhc3MgVmlkZW9GYWN0b3J5IDogcHVibGljIFdlYkNvcmU6OlZpZGVvQ2FwdHVyZUZhY3Rv
cnkgewogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgVmlkZW9GYWN0b3J5KFVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyJiBtYW5hZ2VyKSA6IG1fbWFuYWdlcihtYW5hZ2VyKSB7IH0KLSAgICAg
ICAgdm9pZCBzZXRTaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKGJvb2wgdmFsdWUpIHsgbV9zaG91
bGRDYXB0dXJlSW5HUFVQcm9jZXNzID0gdmFsdWU7IH0KKyAgICAgICAgdm9pZCBzZXRTaG91bGRD
YXB0dXJlSW5HUFVQcm9jZXNzKGJvb2wpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgV2ViQ29y
ZTo6Q2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlVmlkZW9DYXB0dXJlU291cmNlKGNvbnN0IFdl
YkNvcmU6OkNhcHR1cmVEZXZpY2UmLCBTdHJpbmcmJiBoYXNoU2FsdCwgY29uc3QgV2ViQ29yZTo6
TWVkaWFDb25zdHJhaW50cyopIGZpbmFsOwpAQCAtMTM3LDYgKzEzOCw3IEBAIHByaXZhdGU6CiAg
ICAgVmlkZW9GYWN0b3J5IG1fdmlkZW9GYWN0b3J5OwogICAgIERpc3BsYXlGYWN0b3J5IG1fZGlz
cGxheUZhY3Rvcnk7CiAgICAgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIgbV9yZW1vdGVDYXB0
dXJlU2FtcGxlTWFuYWdlcjsKKyAgICBib29sIG1fc2hvdWxkVXNlR1BVUHJvY2Vzc1JlbW90ZUZy
YW1lcyB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4YjdlNDIyODM2MzViNzc2
Mjk1OGFjZjFkYjE4YjAwZDEzM2E0ODU5Li44NjRlMThmMzgzM2E1NDYwOTUzZjYyMDQ4ZGYxMmIx
MDg4ZTczM2I3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjItMDItMTEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgcmVtb3RlIHZpZGVvIGZyYW1lcyBpbiBXZWJS
VEMgdmlkZW8gcGlwZWxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNjM1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFsbG93IHN3aXRjaGluZyBvbiB0aGUgbmV3IHJlbW90ZSB2aWRlbyBmcmFtZSBm
bGFnLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5jcHA6CisKKzIw
MjItMDItMTEgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbnRyb2R1Y2UgYSBSZW1vdGVNZWRpYVNhbXBsZVByb3h5IHRvIHJlcHJlc2VudCBjYXB0dXJl
ZCB2aWRlbyBmcmFtZXMgdXNlZCBpbiBNZWRpYSBTdHJlYW1zIGFuZCBwcmVzZW50IGluIEdQVVAK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjA5OQor
CisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBTY3JpcHRz
L2dlbmVyYXRlLWdwdXAtd2ViZ2w6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NhbXBsZU1hcC5jcHA6CisKIDIwMjItMDItMTEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IHRvIHF1ZXJ5IGNhbWVyYSBhbmQgbWlj
cm9waG9uZSBwZXJtaXNzaW9ucwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1n
cHVwLXdlYmdsIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCmluZGV4IDMwZjdm
ZDgyYjMzMWEwNmY0YzRlMGNiNGUzYjg5Zjc1ZmZlNmIxODEuLjVkNzQxNTIxYWRiNTk4YTgyZmE4
MWUxODk1MTczOWVkMGIyNTk3OGQgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUt
Z3B1cC13ZWJnbAorKysgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKQEAgLTk0
LDcgKzk0LDEwIEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNv
dW50ZWQgU3RyZWFtIHt7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBQcmVwYXJlRm9y
RGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzIE5v
dFN0cmVhbUVuY29kYWJsZVJlcGx5CiAjZW5kaWYKLSNpZiAhUExBVEZPUk0oQ09DT0EpCisjaWYg
VVNFKEdSQVBISUNTX0xBWUVSX1dDKQorICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAo
c3RkOjpvcHRpb25hbDxXZWJLaXQ6OldDQ29udGVudEJ1ZmZlcklkZW50aWZpZXI+IGNvbnRlbnRC
dWZmZXIpIFN5bmNocm9ub3VzCisjZW5kaWYKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0Uo
R1JBUEhJQ1NfTEFZRVJfV0MpCiAgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+ICgpIFN5
bmNocm9ub3VzCiAjZW5kaWYKICAgICB2b2lkIEVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5n
IGV4dGVuc2lvbikKQEAgLTEwNCw2ICsxMDcsOSBAQCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7ewogICAgIHZvaWQgUGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGlt
YWdlQnVmZmVyKSAtPiAoKSBTeW5jaHJvbm91cwogICAgIHZvaWQgUGFpbnRDb21wb3NpdGVkUmVz
dWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1
ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAgICB2b2lkIENvcHlUZXh0dXJlRnJvbU1lZGlhKFdl
YkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50MzJfdCB0ZXh0dXJl
LCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsRm9ybWF0
LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwg
Ym9vbCBmbGlwWSkgLT4gKGJvb2wgc3VjY2VzcykgU3luY2hyb25vdXMKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorICAgIHZvaWQgUGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUo
KSAtPiAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVy
dGllcz4gcHJvcGVydGllcykgU3luY2hyb25vdXMKKyNlbmRpZgogICAgIHZvaWQgU2ltdWxhdGVF
dmVudEZvclRlc3RpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlNpbXVsYXRlZEV2ZW50
Rm9yVGVzdGluZyBldmVudCkKIHt9CiB9fQpAQCAtMjMyLDcgKzIzOCw3IEBAIGRlZiBjcmVhdGVf
Y3BwX3R5cGVfY29udGFpbmVyKHR5cGVfbmFtZSA6IHN0cikgLT4gT3B0aW9uYWxbY3BwX3R5cGVf
Y29udGFpbmVyXToKICAgICAgICAgcmV0dXJuIE5vbmUKICAgICBjb250YWluZXJfbmFtZSA9IG1b
MV0KICAgICAjIEFsbCB0ZW1wbGF0ZXMgYXJlIGNvbnRhaW5lcnMgZXhjZXB0IHRoZXNlIGJlbG93
LgotICAgIGlmIGNvbnRhaW5lcl9uYW1lIGluIFsnUmVmUHRyJywgJ1JlZiddOgorICAgIGlmIGNv
bnRhaW5lcl9uYW1lIGluIFsnUmVmUHRyJywgJ1JlZicsICdSZXRhaW5QdHInLCAnc3RkOjpvcHRp
b25hbCddOgogICAgICAgICByZXR1cm4gTm9uZQogICAgIHRlbXBsYXRlcyA9IG1bMl0KICAgICBh
cml0eSA9IE5vbmUKQEAgLTY0MCw3ICs2NDYsMTMgQEAgY2xhc3Mgd2Via2l0X2lwY19jcHBfcHJv
eHlfaW1wbChvYmplY3QpOgogICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtp
dF9pcGNfdHlwZXNbby50eXBlXQogICAgICAgICAgICAgICAgIGFzc2VydChpc2luc3RhbmNlKHdl
YmtpdF9pcGNfdHlwZSwgY3BwX3R5cGVfY29udGFpbmVyKSkKICAgICAgICAgICAgICAgICB2ID0g
Y3BwX2FyZyh3ZWJraXRfaXBjX3R5cGUsIG8ubmFtZSArICJSZXBseSIpCi0gICAgICAgICAgICAg
ICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHYudHlwZSl9IHtzdHIodi5uYW1lKX07
Il0KKyAgICAgICAgICAgICAgICBpZiBvLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAg
ICAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cih2LnR5cGUpfSB7c3Ry
KHYubmFtZSl9OyJdCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAg
IyBGSVhNRTogTGlrZWx5IHRoaXMgY3JlYXRlcyBhIGRhbmdsaW5nIHJlZmVyZW5jZSBzcGFuPGlu
dCwgMj4gYVJlcGx5ID0geyB7IH0gfTsuCisgICAgICAgICAgICAgICAgICAgICMgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTg4OQorICAgICAgICAgICAgICAgICAg
ICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodi50eXBlKX0ge3N0cih2Lm5hbWUpfSB7
eyB7eyB9fSB9fTsiXQorCiAgICAgICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW2NwcF9l
eHByKHYudHlwZSwgdi5uYW1lKV0KICAgICAgICAgICAgICAgICBpZiBvLnR5cGUuaXNfZHluYW1p
Y19zcGFuKCk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2NwcF9leHBy
KGdldF9jcHBfdHlwZSgic2l6ZV90IiksIGYie28ubmFtZX0uYnVmU2l6ZSIpXQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcAppbmRleCBkMTQ2Y2Vj
NGYyZWM0Y2Y2OTEyZDdmMDQ4ZDI4ODE1N2FkZmRjMWI4Li5jNDVjNjdhMzE2NmJmZmI5ODc3YmMw
ZDgzNGZlZjg0NGE0ODY2NTE5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2FtcGxlTWFwLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2FtcGxlTWFwLmNwcApAQCAtNTcsNyArNTcsNiBAQCBwdWJsaWM6CiAgICAgTWVkaWFU
aW1lIGRlY29kZVRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZVRpbWU7IH0KICAg
ICBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2R1cmF0aW9uOyB9
CiAgICAgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90cmFja0lE
OyB9Ci0gICAgdm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0cmluZyYgdHJhY2tJRCkgZmluYWwgeyBt
X3RyYWNrSUQgPSB0cmFja0lEOyB9CiAgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9zaXplSW5CeXRlczsgfQogICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25T
aXplKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcmVzZW50YXRpb25TaXplOyB9CiAgICAgdm9p
ZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJiBvZmZzZXQpIGZpbmFsIHsgbV9w
cmVzZW50YXRpb25UaW1lICs9IG9mZnNldDsgbV9kZWNvZGVUaW1lICs9IG9mZnNldDsgfQpAQCAt
NzEsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjcmVhdGUobV9wcmVzZW50YXRp
b25UaW1lLCBtX2RlY29kZVRpbWUsIG1fZHVyYXRpb24sIHN0YXRpY19jYXN0PFNhbXBsZUZsYWdz
PihtX2ZsYWdzIHwgSXNOb25EaXNwbGF5aW5nKSk7CiAgICAgfQogICAgIFNhbXBsZUZsYWdzIGZs
YWdzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9mbGFnczsgfQotICAgIFBsYXRmb3JtU2FtcGxl
IHBsYXRmb3JtU2FtcGxlKCkgZmluYWwgeyByZXR1cm4geyBQbGF0Zm9ybVNhbXBsZTo6Tm9uZSwg
e251bGxwdHJ9fTsgfQorICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4geyBQbGF0Zm9ybVNhbXBsZTo6Tm9uZSwgeyBudWxscHRyIH0gfTsgfQog
ICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0
IGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9u
cy5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmNwcAppbmRleCA1YTBl
MDEwM2U5OTRiNWM0MDA5YzU3YjlhMzU1MzdhZTkyMDJjZjE4Li5lMmIwMDNiMzg3ZmU3MmE2OTA3
NzUyMGFjM2NhNTAyMjIzYjAzMzdhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RPcHRpb25zLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25z
LmNwcApAQCAtMTI1LDYgKzEyNSw3IEBAIGNvbnN0IFRlc3RGZWF0dXJlcyYgVGVzdE9wdGlvbnM6
OmRlZmF1bHRzKCkKICAgICAgICAgICAgIHsgIlRleHRBdXRvc2l6aW5nVXNlc0lkZW1wb3RlbnRN
b2RlIiwgZmFsc2UgfSwKICAgICAgICAgICAgIHsgIlVzZXNCYWNrRm9yd2FyZENhY2hlIiwgZmFs
c2UgfSwKICAgICAgICAgICAgIHsgIldlYkF1dGhlbnRpY2F0aW9uRW5hYmxlZCIsIHRydWUgfSwK
KyAgICAgICAgICAgIHsgIldlYlJUQ1JlbW90ZVZpZGVvRnJhbWVFbmFibGVkIiwgZmFsc2UgfSwK
ICAgICAgICAgICAgIHsgIldlYlJUQ01ETlNJQ0VDYW5kaWRhdGVzRW5hYmxlZCIsIGZhbHNlIH0s
CiAgICAgICAgICAgICB7ICJYU1NBdWRpdG9yRW5hYmxlZCIsIGZhbHNlIH0sCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGUxMDk3OGZkNDM3YWExZTBhYzY0YmZh
YThiODRhNGY0N2EwOGIzOS4uYTRkODg4NzhmMWNmMDcxMjhhY2M3YWZlM2Q2NTcwZjgxY2M2ZDVk
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIyLTAyLTExICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlbW90ZSB2aWRlbyBmcmFtZXMgaW4g
V2ViUlRDIHZpZGVvIHBpcGVsaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzYzNTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBFbmFibGluZyByZW1vdGUgdmlkZW8gZnJhbWVzIGZvciBiZWxvdyB0ZXN0
cy4KKworICAgICAgICAqIHdlYnJ0Yy92aWRlby1tdXRlLXZwOC5odG1sOgorICAgICAgICAqIHdl
YnJ0Yy92aWRlby1tdXRlLmh0bWw6CisgICAgICAgICogd2VicnRjL3ZpZGVvLXJvdGF0aW9uLmh0
bWw6CisgICAgICAgICogd2VicnRjL3ZpZGVvLmh0bWw6CisKKzIwMjItMDItMTEgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgYSBSZW1v
dGVNZWRpYVNhbXBsZVByb3h5IHRvIHJlcHJlc2VudCBjYXB0dXJlZCB2aWRlbyBmcmFtZXMgdXNl
ZCBpbiBNZWRpYSBTdHJlYW1zIGFuZCBwcmVzZW50IGluIEdQVVAKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjA5OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENhcHR1cmVkIFdlYkdMIHRvIGFub3RoZXIg
Y29udGV4dDJkIG9yIFdlYkdMIG5vdCBpbXBsZW1lbnRlZCB5ZXQsIG1hcmsgZmV3IHRlc3RzIGFz
IHRpbWluZyBvdXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlv
bnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIy
LTAyLTExICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgVGFiIGNoYXJhY3RlcnMgYW5kIGNoIHVuaXRzIGRvIG5vdCBvYmV5IHN5bnRoZXRpYyBib2xk
IHdpZHRoIGFkanVzdG1lbnRzIGNvcnJlY3RseQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
LXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGZlZjMyMmMzNjhmMDFmZWY3ZjVmZWJmZmMwOTJk
YzZlODE1NTJhY2YuLjc3NjhhN2EwNDdlYjJiYjE4MjE5ZGZhNGE3YThiNTYyYWNjNzJlNGYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTIy
MjAsNCArMjIyMCw3IEBAIHdlYmtpdC5vcmcvYi8yMzQ1MzYgd2VieHIvaGlnaC1wZXJmb3JtYW5j
ZS5odG1sCiB3ZWJraXQub3JnL2IvMjM0NTM2IGZhc3QvbWVkaWFzdHJlYW0vZ2V0VXNlck1lZGlh
LXRvLWNhbnZhcy0xLmh0bWwgWyBDcmFzaCBdCiB3ZWJraXQub3JnL2IvMjM0NTM2IGZhc3QvbWVk
aWFzdHJlYW0vZ2V0VXNlck1lZGlhLXRvLWNhbnZhcy0yLmh0bWwgWyBDcmFzaCBdCiB3ZWJraXQu
b3JnL2IvMjM0NTM2IHdlYmdsL21heC1hY3RpdmUtY29udGV4dHMtd2ViZ2xjb250ZXh0bG9zdC1w
cmV2ZW50LWRlZmF1bHQuaHRtbCBbIFRpbWVvdXQgXQotd2Via2l0Lm9yZy9iLzIzNDUzNiB3ZWJn
bC8xLjAuMy9jb25mb3JtYW5jZS9zdGF0ZS9nbC1vYmplY3QtZ2V0LWNhbGxzLmh0bWwgWyBUaW1l
b3V0IF0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit3ZWJraXQub3JnL2IvMjM0NTM2IHdl
YmdsLzEuMC4zL2NvbmZvcm1hbmNlL3N0YXRlL2dsLW9iamVjdC1nZXQtY2FsbHMuaHRtbCBbIFRp
bWVvdXQgXQorCisjIENhcHR1cmVkIFdlYkdMIHRvIGFub3RoZXIgY29udGV4dDJkIG9yIFdlYkdM
IG5vdCBpbXBsZW1lbnRlZCB5ZXQuCit3ZWJraXQub3JnL2IvMjM2NDk2IGZhc3QvbWVkaWFzdHJl
YW0vY2FwdHVyZVN0cmVhbS9jYW52YXMzZC5odG1sIFsgVGltZW91dCBdClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IDI3ODZkYWM3MTVjYTFiYmVhMDRhOTQ0ZWQwNTkxNmRlOTIwZmY3YTIuLjQw
MTIzMjAzYjYxOGM2MmJiMTI1NWM0Mzk2MDI0NWMwYWY0YmNiMWEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE2NzcsMyArMTY3Nyw2IEBA
IGh0dHAvd3B0L2h0bWwvc2VtYW50aWNzL3RleHQtbGV2ZWwtc2VtYW50aWNzL3RoZS1hLWVsZW1l
bnQvYS1kb3dubG9hZC1jbGljay00MDQuCiAKICMgcmRhcjovLzg2MDM3NDE3IFdpbmRvd1NlcnZl
ciByZXR1cm5lZCBub3QgYWxpdmUgd2l0aCBjb250ZXh0Oix1bnJlc3BvbnNpdmUgd29yayBwcm9j
ZXNzb3IocykKIFsgTW9udGVyZXkrIF0gaHR0cC90ZXN0cy9tb2RlbC9tb2RlbC1kb2N1bWVudC5o
dG1sIFsgU2tpcCBdCisKKyMgQ2FwdHVyZWQgV2ViR0wgdG8gYW5vdGhlciBjb250ZXh0MmQgb3Ig
V2ViR0wgbm90IGltcGxlbWVudGVkIHlldC4KK3dlYmtpdC5vcmcvYi8yMzY0OTYgZmFzdC9tZWRp
YXN0cmVhbS9jYXB0dXJlU3RyZWFtL2NhbnZhczNkLmh0bWwgWyBUaW1lb3V0IF0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1tdXRlLXZwOC5odG1sIGIvTGF5b3V0VGVzdHMv
d2VicnRjL3ZpZGVvLW11dGUtdnA4Lmh0bWwKaW5kZXggNGZhZGNkYTZiOTIyOTkyNGM4Nzk4MmZk
NjU3ZDc2MTI1MjQ5NjAwNC4uNzg3ZWE3OGE0MWNlNWJhZjNiYTUxMjI0N2NkNDA2OTYyMDA1Y2E4
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLW11dGUtdnA4Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLW11dGUtdnA4Lmh0bWwKQEAgLTEsNCArMSw0IEBA
Ci08IWRvY3R5cGUgaHRtbD4KKzwhZG9jdHlwZSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVy
IFsgV2ViUlRDUmVtb3RlVmlkZW9GcmFtZUVuYWJsZWQ9dHJ1ZSBdIC0tPgogPGh0bWw+CiAgICAg
PGhlYWQ+CiAgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYnJ0Yy92aWRlby1tdXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8t
bXV0ZS5odG1sCmluZGV4IDY5MThiNGU3OWZmN2ExY2RjN2QyMWRmM2RkNzkzZmFjZWUwMWRmMjgu
LjM4OThiYzhhZjc2MzUxMTBkNzc4YjY2M2FkZGUyNWM0NjVjODNiNzAgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3dlYnJ0Yy92aWRlby1tdXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRj
L3ZpZGVvLW11dGUuaHRtbApAQCAtMSw0ICsxLDQgQEAKLTwhZG9jdHlwZSBodG1sPgorPCFkb2N0
eXBlIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBXZWJSVENSZW1vdGVWaWRlb0ZyYW1l
RW5hYmxlZD10cnVlIF0gLS0+CiA8aHRtbD4KICAgICA8aGVhZD4KICAgICAgICAgPG1ldGEgY2hh
cnNldD0idXRmLTgiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXJvdGF0
aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tcm90YXRpb24uaHRtbAppbmRleCA5
MDY4NDljNGRlNWExNjBmZDBiYjIzNGE0ZDRkYzU5M2E4NTIwZTEzLi5iYzJkNTc0MmM0N2U2NWI0
YmE3YjJkODFjZmUyMmIyYjJkMGJlZGZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMv
dmlkZW8tcm90YXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tcm90YXRp
b24uaHRtbApAQCAtMSw0ICsxLDQgQEAKLTwhZG9jdHlwZSBodG1sPgorPCFkb2N0eXBlIGh0bWw+
PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBXZWJSVENSZW1vdGVWaWRlb0ZyYW1lRW5hYmxlZD10
cnVlIF0gLS0+CiA8aHRtbD4KICAgICA8aGVhZD4KICAgICAgICAgPG1ldGEgY2hhcnNldD0idXRm
LTgiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJydGMvdmlkZW8uaHRtbAppbmRleCAxOGUyYWFjYzBkYTNkNWM3Y2RhY2NkZTgxZGQ2
MTYwZmMzZDBjMmQ2Li4wMjAyY2M3NjAyZjQ1YjZmMmZjNjFiN2JiMTFjZjc3ZWI0NzQ4YTZiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8uaHRtbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJydGMvdmlkZW8uaHRtbApAQCAtMSw0ICsxLDQgQEAKLTwhZG9jdHlwZSBodG1sPgorPCFk
b2N0eXBlIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBXZWJSVENSZW1vdGVWaWRlb0Zy
YW1lRW5hYmxlZD10cnVlIF0gLS0+CiA8aHRtbD4KICAgICA8aGVhZD4KICAgICAgICAgPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451694</attachid>
            <date>2022-02-11 07:35:57 -0800</date>
            <delta_ts>2022-02-11 09:42:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-fix-236356.patch</filename>
            <type>text/plain</type>
            <size>157572</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">RnJvbSA2YzM4NGE4NjlkYWQ5MDIzNjMxOGZjZmY3MTU1NzhlYmE4MmI1Y2RiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBZb3Vlbm4gRmFibGV0IDx5b3Vlbm5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDExIEZlYiAyMDIyIDA5OjQ1OjA2ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gZml4LTIz
NjM1NgoKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgMTQgKysKIExheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1tdXRlLXZwOC5odG1sICAgICAgICB8
ICAgMiArLQogTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLW11dGUuaHRtbCAgICAgICAgICAgIHwg
ICAyICstCiBMYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tcm90YXRpb24uaHRtbCAgICAgICAgfCAg
IDIgKy0KIExheW91dFRlc3RzL3dlYnJ0Yy92aWRlby5odG1sICAgICAgICAgICAgICAgICB8ICAg
MiArLQogU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5nZUxvZyAgICAgICAgIHwgIDIw
ICsrKwogLi4uL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwICAgICAgICAgIHwgICA1
ICstCiAuLi4vQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAgICAgICAgfCAgIDUg
Ky0KIC4uLi9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cCAgICAgICAgICB8ICAgNSAr
LQogLi4uL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXREZWNvZGVyLmggIHwgICAzICst
CiAuLi4vU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXIubW0gfCAgMTUgKyst
CiAuLi4vd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmggICAgICAgfCAgIDQgKwog
Li4uL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbSAgICAgIHwgIDE0ICsrCiAu
Li4vc2RrL29iamMvbmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5oICAgfCAgMTQgKysKIC4u
Li9zZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVyLm1tICB8ICAxNyArKy0KIFNv
dXJjZS9XVEYvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMSArKwogLi4u
L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbCAgIHwgIDEzICsrCiBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgfCAgMjUgKysrKwogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaCAgICAgICAgIHwgICA0ICsKIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwICAgICAgICB8ICAgNiAtCiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmggICAgICAgICAgfCAgIDEgLQogLi4uL3BsYXRm
b3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmggICAgIHwgICAxICsKIC4uLi9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gICB8ICAxNSArLS0KIC4uLi9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaCAgICB8ICAgMSArCiAuLi4vYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tICAgfCAgIDUgKwogLi4uL21lZGlhc3RyZWFt
L1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwICAgICAgIHwgICA5ICsrCiAuLi4vbWFjL1JlYWx0aW1l
SW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmggICAgfCAgIDMgKwogLi4uL21hYy9SZWFsdGltZUlu
Y29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbSAgIHwgIDc1ICsrKysrKy0tLS0tCiAuLi4vbWFjL1Jl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcCAgfCAgIDQgKy0KIFNvdXJjZS9XZWJL
aXQvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICB8ICAgMSArCiBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgfCAgNjMgKysrKysrKysrCiBTb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgfCAgIDIgKwogLi4uL1dlYktp
dC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCAgIHwgICA2ICsKIFNvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMubWFrZSAgICAgICAgICAgICB8ICAgMSArCiAuLi4vR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCAgfCAgMTcgKy0tCiAuLi4vR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggICAgfCAgIDYgKy0KIC4uLi9tZWRpYS9SZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAgICAgICB8ICAzMCArKysrKwogLi4uL21lZGlhL1Jl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmggICAgICAgIHwgICA2ICsKIC4uLi9SZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcC5tZXNzYWdlcy5pbiAgICB8ICAgMyArLQogLi4uL0dQVVByb2Nlc3Mv
d2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmggIHwgIDExICstCiAuLi4vd2VicnRjL0xpYldl
YlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluICAgfCAgIDggKy0KIC4uLi9HUFVQcm9jZXNzL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbSB8ICA1NyArKysrKystLQogLi4uL0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIHwgIDEzICstCiAuLi4vR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oICAgfCAgIDUgKy0KIC4uLi93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbiAgICB8ICAgMiArLQogLi4uL3dlYnJ0Yy9SZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwIHwgIDEwICstCiBTb3VyY2UvV2ViS2l0L1No
YXJlZC9UaHJlYWRTYWZlT2JqZWN0SGVhcC5oICAgfCAgMTEgKysKIFNvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiAuLi4vQ29jb2EvVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eS5jcHAgICAgfCAgNDYgKysrKystLQogLi4uL0NvY29hL1VzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaCAgICAgIHwgICA0ICstCiAuLi4vVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogICB8ICAxMSArLQogLi4uL1dlYlByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcCAgIHwgICA4ICsrCiAuLi4vV2ViUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCAgICAgfCAgIDMgKwogLi4uL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIHwgIDExICstCiAuLi4vR1BVL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVJZGVudGlmaWVyLmggICAgfCAgIDMgKy0KIC4uLi9HUFUvbWVkaWEvUmVtb3RlVmlk
ZW9GcmFtZVByb3h5LmNwcCAgICAgICB8ICA0OCArKysrKy0tCiAuLi4vR1BVL21lZGlhL1JlbW90
ZVZpZGVvRnJhbWVQcm94eS5oICAgICAgICAgfCAgNDUgKysrKystLQogLi4uL21lZGlhL1JlbW90
ZVZpZGVvRnJhbWVQcm94eUlkZW50aWZpZXIuaCAgIHwgIDQyICsrKysrKwogLi4uL1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwIHwgIDY5ICsrKysrKystLS0KIC4uLi9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmggICB8ICAgOSArLQogLi4uL0dQ
VS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluICAgIHwgICAyICstCiAuLi4vR1BV
L3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAgICAgICAgfCAgMjEgKystCiAuLi4vd2Vi
cnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuaCAgfCAgNTMgKysrKysrKysKIC4u
Lm1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yLmNwcCB8IDEyNSArKysrKysr
KysrKysrKysrKysKIC4uLlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3Iu
aCB8ICA4NyArKysrKysrKysrKysKIC4uLm9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvci5t
ZXNzYWdlcy5pbiB8ICAzMiArKysrKwogLi4uL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLmNwcCAgIHwgICAxICsKIC4uLi9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRl
ci5jcHAgICAgICB8ICAgMiArLQogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdl
Q29jb2EubW0gIHwgICAyICstCiAuLi4vY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIu
Y3BwICAgICAgfCAgMzkgKysrKystCiAuLi4vY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFn
ZXIuaCAgICAgICAgfCAgMTEgKy0KIC4uLi9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5tZXNz
YWdlcy5pbiAgICB8ICAgMiArLQogLi4uL2NvY29hL1JlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VQ
cm94eS5jcHAgIHwgICA0ICstCiAuLi4vY29jb2EvUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZVBy
b3h5LmggICAgfCAgIDIgKy0KIC4uLi9jb2NvYS9SZW1vdGVSZWFsdGltZVZpZGVvU291cmNlLmNw
cCAgICAgICB8ICAgMiArLQogLi4uL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCAg
ICAgICAgIHwgIDEyICstCiAuLi4vY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCAgICAg
ICAgICAgfCAgIDYgKy0KIFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAxMSArKwogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5jcHAgICAg
ICAgIHwgICAxICsKIDgwIGZpbGVzIGNoYW5nZWQsIDEwNzYgaW5zZXJ0aW9ucygrKSwgMTkxIGRl
bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5SWRlbnRpZmllci5oCiBjcmVhdGUgbW9kZSAx
MDA2NDQgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXBQcm94eS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nv
ci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yLmgKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yLm1lc3NhZ2VzLmluCgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU0ZGUx
M2YwOWQ3My4uYTVlNzA4NmE1YTQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDItMTEg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgcmVt
b3RlIHZpZGVvIGZyYW1lcyBpbiBXZWJSVEMgdmlkZW8gcGlwZWxpbmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjM1NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsaW5nIHJlbW90ZSB2aWRlbyBm
cmFtZXMgZm9yIGJlbG93IHRlc3RzLgorCisgICAgICAgICogd2VicnRjL3ZpZGVvLW11dGUtdnA4
Lmh0bWw6CisgICAgICAgICogd2VicnRjL3ZpZGVvLW11dGUuaHRtbDoKKyAgICAgICAgKiB3ZWJy
dGMvdmlkZW8tcm90YXRpb24uaHRtbDoKKyAgICAgICAgKiB3ZWJydGMvdmlkZW8uaHRtbDoKKwog
MjAyMi0wMi0xMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEludHJvZHVjZSBhIFJlbW90ZU1lZGlhU2FtcGxlUHJveHkgdG8gcmVwcmVzZW50IGNhcHR1
cmVkIHZpZGVvIGZyYW1lcyB1c2VkIGluIE1lZGlhIFN0cmVhbXMgYW5kIHByZXNlbnQgaW4gR1BV
UApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLW11dGUtdnA4Lmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tbXV0ZS12cDguaHRtbAppbmRleCA0ZmFkY2RhNmI5MjIu
Ljc4N2VhNzhhNDFjZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLW11dGUt
dnA4Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLW11dGUtdnA4Lmh0bWwKQEAg
LTEsNCArMSw0IEBACi08IWRvY3R5cGUgaHRtbD4KKzwhZG9jdHlwZSBodG1sPjwhLS0gd2Via2l0
LXRlc3QtcnVubmVyIFsgV2ViUlRDUmVtb3RlVmlkZW9GcmFtZUVuYWJsZWQ9dHJ1ZSBdIC0tPgog
PGh0bWw+CiAgICAgPGhlYWQ+CiAgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1tdXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJydGMvdmlkZW8tbXV0ZS5odG1sCmluZGV4IDY5MThiNGU3OWZmNy4uMzg5OGJjOGFmNzYzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tbXV0ZS5odG1sCisrKyBiL0xheW91
dFRlc3RzL3dlYnJ0Yy92aWRlby1tdXRlLmh0bWwKQEAgLTEsNCArMSw0IEBACi08IWRvY3R5cGUg
aHRtbD4KKzwhZG9jdHlwZSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgV2ViUlRDUmVt
b3RlVmlkZW9GcmFtZUVuYWJsZWQ9dHJ1ZSBdIC0tPgogPGh0bWw+CiAgICAgPGhlYWQ+CiAgICAg
ICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0
Yy92aWRlby1yb3RhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXJvdGF0aW9u
Lmh0bWwKaW5kZXggOTA2ODQ5YzRkZTVhLi5iYzJkNTc0MmM0N2UgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3dlYnJ0Yy92aWRlby1yb3RhdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0
Yy92aWRlby1yb3RhdGlvbi5odG1sCkBAIC0xLDQgKzEsNCBAQAotPCFkb2N0eXBlIGh0bWw+Cis8
IWRvY3R5cGUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIFdlYlJUQ1JlbW90ZVZpZGVv
RnJhbWVFbmFibGVkPXRydWUgXSAtLT4KIDxodG1sPgogICAgIDxoZWFkPgogICAgICAgICA8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8u
aHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby5odG1sCmluZGV4IDE4ZTJhYWNjMGRhMy4u
MDIwMmNjNzYwMmY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8uaHRtbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8uaHRtbApAQCAtMSw0ICsxLDQgQEAKLTwhZG9j
dHlwZSBodG1sPgorPCFkb2N0eXBlIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBXZWJS
VENSZW1vdGVWaWRlb0ZyYW1lRW5hYmxlZD10cnVlIF0gLS0+CiA8aHRtbD4KICAgICA8aGVhZD4K
ICAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL0NoYW5nZUxvZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9D
aGFuZ2VMb2cKaW5kZXggZmQ5NGMxNWVjZDA0Li4xYjUyZDk3ODJkM2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIyLTAyLTExICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlbW90ZSB2
aWRlbyBmcmFtZXMgaW4gV2ViUlRDIHZpZGVvIHBpcGVsaW5lCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYzNTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgYSB3YXkgZm9yIE9iakNGcmFt
ZUJ1ZmZlciB0byBub3QgZGlyZWN0bHkgb3duIGEgQ1ZQaXhlbEJ1ZmZlclJlZiBidXQgYSBwb2lu
dGVyCisgICAgICAgIHRoYXQgY2FuIGJlIHVzZWQgdG8gZ2V0IGEgQ1ZQaXhlbEJ1ZmZlclJlZi4g
VGhpcyBpcyB1c2VkIHRvIGFsbG93IHJlbW90ZSBmcmFtZXMgdG8gYmUgc2VudCBvdmVyIHRvIGxp
YndlYnJ0Yy4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwOgor
ICAgICAgICAqIENvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwOgorICAgICAgICAq
IENvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwOgorICAgICAgICAqIFNvdXJjZS93ZWJy
dGMvc2RrL1dlYktpdC9XZWJLaXREZWNvZGVyLmg6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9z
ZGsvV2ViS2l0L1dlYktpdERlY29kZXIubW06CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsv
V2ViS2l0L1dlYktpdFV0aWxpdGllcy5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dl
YktpdC9XZWJLaXRVdGlsaXRpZXMubW06CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9uYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVyLmg6CisgICAgICAgICogU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVyLm1tOgorCiAyMDIyLTAyLTAz
ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYktpdCBw
cm9qZWN0cyBoYXZlIGluY29ycmVjdCBpbnN0YWxsIG5hbWUgZm9yIHRoZSBmcmFtZXdvcmtzIGZv
ciBDYXRhbHlzdCBidWlsZHMgd2l0aCB0aGUgc3lzdGVtIGNvbnRlbnQgcGF0aApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5p
T1MuZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndl
YnJ0Yy5pT1MuZXhwCmluZGV4IGNhNTQ3M2E2MmFkOS4uYmJiYzA1ODI3Y2Y3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlP
Uy5leHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xp
YndlYnJ0Yy5pT1MuZXhwCkBAIC0yMjMsOCArMjIzLDExIEBAIF9fWk42d2VicnRjMjJjcmVhdGVM
b2NhbEgyNjVEZWNvZGVyRVUxM2Jsb2NrX3BvaW50ZXJGdlAxMF9fQ1ZCdWZmZXJqakUKIF9fWk42
d2VicnRjMjFjcmVhdGVMb2NhbFZQOURlY29kZXJFVTEzYmxvY2tfcG9pbnRlckZ2UDEwX19DVkJ1
ZmZlcmpqRQogX19aTjZ3ZWJydGMxOXJlbGVhc2VMb2NhbERlY29kZXJFUHYKIF9fWk42d2VicnRj
MTFkZWNvZGVGcmFtZUVQdmpQS2htCi1fX1pONndlYnJ0YzI0dmlkZW9EZWNvZGVyVGFza0NvbXBs
ZXRlRVB2alAxMF9fQ1ZCdWZmZXJqCitfX1pONndlYnJ0YzI0dmlkZW9EZWNvZGVyVGFza0NvbXBs
ZXRlRVB2ampQMTBfX0NWQnVmZmVyCitfX1pONndlYnJ0YzI0dmlkZW9EZWNvZGVyVGFza0NvbXBs
ZXRlRVB2ampTMF9QRlAxMF9fQ1ZCdWZmZXJTMF9FUEZ2UzBfRWlpCiBfX1pONndlYnJ0YzI0c2V0
VmlkZW9EZWNvZGVyQ2FsbGJhY2tzRVBGUHZSS05TXzE0U2RwVmlkZW9Gb3JtYXRFRVBGaVMwX0VQ
RmlTMF9qUEtobXR0RVBGaVMwX1MwX0UKK19fWk42d2VicnRjMjR0b1dlYlJUQ1ZpZGVvRnJhbWVC
dWZmZXJFUHZQRlAxMF9fQ1ZCdWZmZXJTMF9FUEZ2UzBfRWlpCitfX1pONndlYnJ0YzI0dmlkZW9G
cmFtZUJ1ZmZlclByb3ZpZGVyRVJLTlNfMTBWaWRlb0ZyYW1lRQogX19aTjZ3ZWJydGMxOXNldERl
Y29kZXJGcmFtZVNpemVFUHZ0dAogX19aTjZ3ZWJydGMxOFJ0cENvZGVjQ2FwYWJpbGl0eUMxRXYK
IF9fWk42d2VicnRjMjRlbmNvZGVyVmlkZW9UYXNrQ29tcGxldGVFUHZOU18xNFZpZGVvQ29kZWNU
eXBlRVBLaG1SS05TXzIyV2ViS2l0RW5jb2RlZEZyYW1lSW5mb0UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMu
aU9Tc2ltLmV4cAppbmRleCBjYTU0NzNhNjJhZDkuLmJiYmMwNTgyN2NmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1Nz
aW0uZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9s
aWJ3ZWJydGMuaU9Tc2ltLmV4cApAQCAtMjIzLDggKzIyMywxMSBAQCBfX1pONndlYnJ0YzIyY3Jl
YXRlTG9jYWxIMjY1RGVjb2RlckVVMTNibG9ja19wb2ludGVyRnZQMTBfX0NWQnVmZmVyampFCiBf
X1pONndlYnJ0YzIxY3JlYXRlTG9jYWxWUDlEZWNvZGVyRVUxM2Jsb2NrX3BvaW50ZXJGdlAxMF9f
Q1ZCdWZmZXJqakUKIF9fWk42d2VicnRjMTlyZWxlYXNlTG9jYWxEZWNvZGVyRVB2CiBfX1pONndl
YnJ0YzExZGVjb2RlRnJhbWVFUHZqUEtobQotX19aTjZ3ZWJydGMyNHZpZGVvRGVjb2RlclRhc2tD
b21wbGV0ZUVQdmpQMTBfX0NWQnVmZmVyagorX19aTjZ3ZWJydGMyNHZpZGVvRGVjb2RlclRhc2tD
b21wbGV0ZUVQdmpqUDEwX19DVkJ1ZmZlcgorX19aTjZ3ZWJydGMyNHZpZGVvRGVjb2RlclRhc2tD
b21wbGV0ZUVQdmpqUzBfUEZQMTBfX0NWQnVmZmVyUzBfRVBGdlMwX0VpaQogX19aTjZ3ZWJydGMy
NHNldFZpZGVvRGVjb2RlckNhbGxiYWNrc0VQRlB2UktOU18xNFNkcFZpZGVvRm9ybWF0RUVQRmlT
MF9FUEZpUzBfalBLaG10dEVQRmlTMF9TMF9FCitfX1pONndlYnJ0YzI0dG9XZWJSVENWaWRlb0Zy
YW1lQnVmZmVyRVB2UEZQMTBfX0NWQnVmZmVyUzBfRVBGdlMwX0VpaQorX19aTjZ3ZWJydGMyNHZp
ZGVvRnJhbWVCdWZmZXJQcm92aWRlckVSS05TXzEwVmlkZW9GcmFtZUUKIF9fWk42d2VicnRjMTlz
ZXREZWNvZGVyRnJhbWVTaXplRVB2dHQKIF9fWk42d2VicnRjMThSdHBDb2RlY0NhcGFiaWxpdHlD
MUV2CiBfX1pONndlYnJ0YzI0ZW5jb2RlclZpZGVvVGFza0NvbXBsZXRlRVB2TlNfMTRWaWRlb0Nv
ZGVjVHlwZUVQS2htUktOU18yMldlYktpdEVuY29kZWRGcmFtZUluZm9FCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5l
eHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRj
Lm1hYy5leHAKaW5kZXggY2E1NDczYTYyYWQ5Li4yYTU3ZGNhNWFmMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4
cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2Vi
cnRjLm1hYy5leHAKQEAgLTIyMyw3ICsyMjMsMTAgQEAgX19aTjZ3ZWJydGMyMmNyZWF0ZUxvY2Fs
SDI2NURlY29kZXJFVTEzYmxvY2tfcG9pbnRlckZ2UDEwX19DVkJ1ZmZlcmpqRQogX19aTjZ3ZWJy
dGMyMWNyZWF0ZUxvY2FsVlA5RGVjb2RlckVVMTNibG9ja19wb2ludGVyRnZQMTBfX0NWQnVmZmVy
ampFCiBfX1pONndlYnJ0YzE5cmVsZWFzZUxvY2FsRGVjb2RlckVQdgogX19aTjZ3ZWJydGMxMWRl
Y29kZUZyYW1lRVB2alBLaG0KLV9fWk42d2VicnRjMjR2aWRlb0RlY29kZXJUYXNrQ29tcGxldGVF
UHZqUDEwX19DVkJ1ZmZlcmoKK19fWk42d2VicnRjMjR2aWRlb0RlY29kZXJUYXNrQ29tcGxldGVF
UHZqalAxMF9fQ1ZCdWZmZXIKK19fWk42d2VicnRjMjR2aWRlb0RlY29kZXJUYXNrQ29tcGxldGVF
UHZqalMwX1BGUDEwX19DVkJ1ZmZlclMwX0VQRnZTMF9FaWkKK19fWk42d2VicnRjMjR0b1dlYlJU
Q1ZpZGVvRnJhbWVCdWZmZXJFUHZQRlAxMF9fQ1ZCdWZmZXJTMF9FUEZ2UzBfRWlpCitfX1pONndl
YnJ0YzI0dmlkZW9GcmFtZUJ1ZmZlclByb3ZpZGVyRVJLTlNfMTBWaWRlb0ZyYW1lRQogX19aTjZ3
ZWJydGMyNHNldFZpZGVvRGVjb2RlckNhbGxiYWNrc0VQRlB2UktOU18xNFNkcFZpZGVvRm9ybWF0
RUVQRmlTMF9FUEZpUzBfalBLaG10dEVQRmlTMF9TMF9FCiBfX1pONndlYnJ0YzE5c2V0RGVjb2Rl
ckZyYW1lU2l6ZUVQdnR0CiBfX1pONndlYnJ0YzE4UnRwQ29kZWNDYXBhYmlsaXR5QzFFdgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dl
YktpdC9XZWJLaXREZWNvZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXIuaAppbmRleCBiODIzZWQzMmNiMzMuLmVj
NzMyZjVjY2JiNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXREZWNvZGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXREZWNvZGVyLmgKQEAg
LTU0LDcgKzU0LDggQEAgdXNpbmcgVmlkZW9EZWNvZGVyUmVnaXN0ZXJEZWNvZGVDb21wbGV0ZUNh
bGxiYWNrID0gaW50MzJfdCgqKShXZWJLaXRWaWRlb0RlY29kZXIKIHZvaWQgc2V0VmlkZW9EZWNv
ZGVyQ2FsbGJhY2tzKFZpZGVvRGVjb2RlckNyZWF0ZUNhbGxiYWNrLCBWaWRlb0RlY29kZXJSZWxl
YXNlQ2FsbGJhY2ssIFZpZGVvRGVjb2RlckRlY29kZUNhbGxiYWNrLCBWaWRlb0RlY29kZXJSZWdp
c3RlckRlY29kZUNvbXBsZXRlQ2FsbGJhY2spOwogCiBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpW
aWRlb0RlY29kZXJGYWN0b3J5PiBjcmVhdGVXZWJLaXREZWNvZGVyRmFjdG9yeShXZWJLaXRIMjY1
LCBXZWJLaXRWUDksIFdlYktpdFZQOVZUQik7Ci12b2lkIHZpZGVvRGVjb2RlclRhc2tDb21wbGV0
ZSh2b2lkKiBjYWxsYmFjaywgdWludDMyX3QgdGltZVN0YW1wLCBDVlBpeGVsQnVmZmVyUmVmLCB1
aW50MzJfdCB0aW1lU3RhbXBSVFApOwordm9pZCB2aWRlb0RlY29kZXJUYXNrQ29tcGxldGUodm9p
ZCogY2FsbGJhY2ssIHVpbnQzMl90IHRpbWVTdGFtcCwgdWludDMyX3QgdGltZVN0YW1wUlRQLCBD
VlBpeGVsQnVmZmVyUmVmKTsKK3ZvaWQgdmlkZW9EZWNvZGVyVGFza0NvbXBsZXRlKHZvaWQqIGNh
bGxiYWNrLCB1aW50MzJfdCB0aW1lU3RhbXAsIHVpbnQzMl90IHRpbWVTdGFtcFJUUCwgdm9pZCos
IEdldEJ1ZmZlckNhbGxiYWNrLCBSZWxlYXNlQnVmZmVyQ2FsbGJhY2ssIGludCB3aWR0aCwgaW50
IGhlaWdodCk7CiAKIHVzaW5nIExvY2FsRGVjb2RlciA9IHZvaWQqOwogdXNpbmcgTG9jYWxEZWNv
ZGVyQ2FsbGJhY2sgPSB2b2lkICheKShDVlBpeGVsQnVmZmVyUmVmLCB1aW50MzJfdCB0aW1lU3Rh
bXAsIHVpbnQzMl90IHRpbWVTdGFtcE5zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2Rlci5tbSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0
RGVjb2Rlci5tbQppbmRleCBhYTQxODg0ODZkMWEuLmI3ZTA2N2YwYzlmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJL
aXREZWNvZGVyLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2Rlci5tbQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9y
dCAic2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJIMjY0Lmgi
CiAjaW1wb3J0ICJzZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2Rl
ckgyNjUuaCIKICNpbXBvcnQgInNkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlk
ZW9EZWNvZGVyVlRCVlA5LmgiCisjaW1wb3J0ICJzZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfZnJh
bWVfYnVmZmVyLmgiCiAKIEBpbnRlcmZhY2UgV0tfUlRDTG9jYWxWaWRlb0gyNjRIMjY1VlA5RGVj
b2RlciA6IE5TT2JqZWN0CiAtIChpbnN0YW5jZXR5cGUpaW5pdEgyNjREZWNvZGVyV2l0aENhbGxi
YWNrOih3ZWJydGM6OkxvY2FsRGVjb2RlckNhbGxiYWNrKWNhbGxiYWNrOwpAQCAtMTczLDcgKzE3
NCw3IEBAIFJlbW90ZVZpZGVvRGVjb2Rlcjo6flJlbW90ZVZpZGVvRGVjb2RlcigpCiAgICAgdmlk
ZW9EZWNvZGVyQ2FsbGJhY2tzKCkucmVsZWFzZUNhbGxiYWNrKG1faW50ZXJuYWxEZWNvZGVyKTsK
IH0KIAotdm9pZCB2aWRlb0RlY29kZXJUYXNrQ29tcGxldGUodm9pZCogY2FsbGJhY2ssIHVpbnQz
Ml90IHRpbWVTdGFtcCwgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgdWludDMyX3QgdGlt
ZVN0YW1wUlRQKQordm9pZCB2aWRlb0RlY29kZXJUYXNrQ29tcGxldGUodm9pZCogY2FsbGJhY2ss
IHVpbnQzMl90IHRpbWVTdGFtcCwgdWludDMyX3QgdGltZVN0YW1wUlRQLCBDVlBpeGVsQnVmZmVy
UmVmIHBpeGVsQnVmZmVyKQogewogICAgIGF1dG8gdmlkZW9GcmFtZSA9IFZpZGVvRnJhbWU6OkJ1
aWxkZXIoKS5zZXRfdmlkZW9fZnJhbWVfYnVmZmVyKHBpeGVsQnVmZmVyVG9GcmFtZShwaXhlbEJ1
ZmZlcikpCiAgICAgICAgIC5zZXRfdGltZXN0YW1wX3J0cCh0aW1lU3RhbXBSVFApCkBAIC0xODUs
NiArMTg2LDE4IEBAIHZvaWQgdmlkZW9EZWNvZGVyVGFza0NvbXBsZXRlKHZvaWQqIGNhbGxiYWNr
LCB1aW50MzJfdCB0aW1lU3RhbXAsIENWUGl4ZWxCdWZmZXJSCiAgICAgc3RhdGljX2Nhc3Q8RGVj
b2RlZEltYWdlQ2FsbGJhY2sqPihjYWxsYmFjayktPkRlY29kZWQodmlkZW9GcmFtZSk7CiB9CiAK
K3ZvaWQgdmlkZW9EZWNvZGVyVGFza0NvbXBsZXRlKHZvaWQqIGNhbGxiYWNrLCB1aW50MzJfdCB0
aW1lU3RhbXAsIHVpbnQzMl90IHRpbWVTdGFtcFJUUCwgdm9pZCogcG9pbnRlciwgR2V0QnVmZmVy
Q2FsbGJhY2sgZ2V0QnVmZmVyQ2FsbGJhY2ssIFJlbGVhc2VCdWZmZXJDYWxsYmFjayByZWxlYXNl
QnVmZmVyQ2FsbGJhY2ssIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBhdXRvIHZpZGVv
RnJhbWUgPSBWaWRlb0ZyYW1lOjpCdWlsZGVyKCkuc2V0X3ZpZGVvX2ZyYW1lX2J1ZmZlcih0b1dl
YlJUQ1ZpZGVvRnJhbWVCdWZmZXIocG9pbnRlciwgZ2V0QnVmZmVyQ2FsbGJhY2ssIHJlbGVhc2VC
dWZmZXJDYWxsYmFjaywgd2lkdGgsIGhlaWdodCkpCisgICAgICAgIC5zZXRfdGltZXN0YW1wX3J0
cCh0aW1lU3RhbXBSVFApCisgICAgICAgIC5zZXRfdGltZXN0YW1wX21zKDApCisgICAgICAgIC5z
ZXRfcm90YXRpb24oKFZpZGVvUm90YXRpb24pUlRDVmlkZW9Sb3RhdGlvbl8wKQorICAgICAgICAu
YnVpbGQoKTsKKyAgICB2aWRlb0ZyYW1lLnNldF90aW1lc3RhbXAodGltZVN0YW1wKTsKKworICAg
IHN0YXRpY19jYXN0PERlY29kZWRJbWFnZUNhbGxiYWNrKj4oY2FsbGJhY2spLT5EZWNvZGVkKHZp
ZGVvRnJhbWUpOworfQorCiBib29sIFJlbW90ZVZpZGVvRGVjb2Rlcjo6Q29uZmlndXJlKGNvbnN0
IFNldHRpbmdzJikKIHsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVz
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L1dlYktpdFV0aWxpdGllcy5oCmluZGV4IGEyM2ZhYTZlZDU3ZC4uMmVmOGExZTkxNTM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2Vi
S2l0L1dlYktpdFV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmgKQEAgLTUyLDQgKzUyLDgg
QEAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRlb0ZyYW1l
JikgQ0ZfUkVUVVJOU19SRVRBSU5FRDsKIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVv
RnJhbWVCdWZmZXI+IHBpeGVsQnVmZmVyVG9GcmFtZShDVlBpeGVsQnVmZmVyUmVmKTsKIGJvb2wg
Y29weVZpZGVvRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYsIHVpbnQ4X3QqKTsKIAordHlwZWRlZiBD
VlBpeGVsQnVmZmVyUmVmICgqR2V0QnVmZmVyQ2FsbGJhY2spKHZvaWQqKTsKK3R5cGVkZWYgdm9p
ZCAoKlJlbGVhc2VCdWZmZXJDYWxsYmFjaykodm9pZCopOworcnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gdG9XZWJSVENWaWRlb0ZyYW1lQnVmZmVyKHZvaWQqLCBH
ZXRCdWZmZXJDYWxsYmFjaywgUmVsZWFzZUJ1ZmZlckNhbGxiYWNrLCBpbnQgd2lkdGgsIGludCBo
ZWlnaHQpOwordm9pZCogdmlkZW9GcmFtZUJ1ZmZlclByb3ZpZGVyKGNvbnN0IFZpZGVvRnJhbWUm
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW0KaW5kZXgg
N2Y2ZmJiMTFlNzY5Li42MmY2MjRjNDk3NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VXRpbGl0aWVzLm1tCkBAIC01Miw2ICs1MiwyMCBAQCBydGM6OnNjb3BlZF9yZWZwdHI8
d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiBwaXhlbEJ1ZmZlclRvRnJhbWUoQ1ZQaXhlbEJ1ZmZl
clJlZgogICAgIHJldHVybiBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PE9iakNGcmFtZUJ1ZmZl
cj4oZnJhbWVCdWZmZXIpOwogfQogCitydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0Zy
YW1lQnVmZmVyPiB0b1dlYlJUQ1ZpZGVvRnJhbWVCdWZmZXIodm9pZCogcG9pbnRlciwgR2V0QnVm
ZmVyQ2FsbGJhY2sgZ2V0QnVmZmVyQ2FsbGJhY2ssIFJlbGVhc2VCdWZmZXJDYWxsYmFjayByZWxl
YXNlQnVmZmVyQ2FsbGJhY2ssIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICByZXR1cm4g
bmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxPYmpDRnJhbWVCdWZmZXI+KE9iakNGcmFtZUJ1ZmZl
cjo6QnVmZmVyUHJvdmlkZXIgeyBwb2ludGVyLCBnZXRCdWZmZXJDYWxsYmFjaywgcmVsZWFzZUJ1
ZmZlckNhbGxiYWNrIH0sIHdpZHRoLCBoZWlnaHQpOworfQorCit2b2lkKiB2aWRlb0ZyYW1lQnVm
ZmVyUHJvdmlkZXIoY29uc3QgVmlkZW9GcmFtZSYgZnJhbWUpCit7CisgICAgYXV0byBidWZmZXIg
PSBmcmFtZS52aWRlb19mcmFtZV9idWZmZXIoKTsKKyAgICBpZiAoYnVmZmVyLT50eXBlKCkgIT0g
VmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a05hdGl2ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8T2JqQ0ZyYW1lQnVmZmVyKj4oYnVmZmVyLmdldCgp
KS0+ZnJhbWVfYnVmZmVyX3Byb3ZpZGVyKCk7Cit9CisKIHN0YXRpYyBib29sIENvcHlWaWRlb0Zy
YW1lVG9QaXhlbEJ1ZmZlcihjb25zdCB3ZWJydGM6Okk0MjBCdWZmZXJJbnRlcmZhY2UqIGZyYW1l
LCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsX2J1ZmZlcikgewogICAgIFJUQ19EQ0hFQ0socGl4ZWxf
YnVmZmVyKTsKICAgICBSVENfRENIRUNLKENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUo
cGl4ZWxfYnVmZmVyKSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyRnVs
bFJhbmdlIHx8IENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxfYnVmZmVyKSA9
PSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyVmlkZW9SYW5nZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9uYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVy
LmgKaW5kZXggZjk0MWRhZDZlNGZlLi4zZDJlYmQ3Nzk2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2ZS9zcmMvb2Jq
Y19mcmFtZV9idWZmZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVyLmgKQEAgLTE0LDE2
ICsxNCwyNyBAQAogI2ltcG9ydCA8Q29yZVZpZGVvL0NvcmVWaWRlby5oPgogCiAjaW5jbHVkZSAi
Y29tbW9uX3ZpZGVvL2luY2x1ZGUvdmlkZW9fZnJhbWVfYnVmZmVyLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2Uvc3luY2hyb25pemF0aW9uL211dGV4LmgiCiAKIEBwcm90b2NvbCBSVENWaWRlb0ZyYW1l
QnVmZmVyOwogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAordHlwZWRlZiBDVlBpeGVsQnVmZmVyUmVm
ICgqR2V0QnVmZmVyQ2FsbGJhY2spKHZvaWQqKTsKK3R5cGVkZWYgdm9pZCAoKlJlbGVhc2VCdWZm
ZXJDYWxsYmFjaykodm9pZCopOworCiBjbGFzcyBPYmpDRnJhbWVCdWZmZXIgOiBwdWJsaWMgVmlk
ZW9GcmFtZUJ1ZmZlciB7CiAgcHVibGljOgogICBleHBsaWNpdCBPYmpDRnJhbWVCdWZmZXIoaWQ8
UlRDVmlkZW9GcmFtZUJ1ZmZlcj4pOwogICB+T2JqQ0ZyYW1lQnVmZmVyKCkgb3ZlcnJpZGU7CiAK
KyAgc3RydWN0IEJ1ZmZlclByb3ZpZGVyIHsKKyAgICB2b2lkICpwb2ludGVyIHsgbnVsbHB0ciB9
OworICAgIEdldEJ1ZmZlckNhbGxiYWNrIGdldEJ1ZmZlciB7IG51bGxwdHIgfTsKKyAgICBSZWxl
YXNlQnVmZmVyQ2FsbGJhY2sgcmVsZWFzZUJ1ZmZlciB7IG51bGxwdHIgfTsKKyAgfTsKKyAgT2Jq
Q0ZyYW1lQnVmZmVyKEJ1ZmZlclByb3ZpZGVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOworCiAg
IFR5cGUgdHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgIGludCB3aWR0aCgpIGNvbnN0IG92ZXJy
aWRlOwpAQCAtMzIsMTEgKzQzLDE0IEBAIGNsYXNzIE9iakNGcmFtZUJ1ZmZlciA6IHB1YmxpYyBW
aWRlb0ZyYW1lQnVmZmVyIHsKICAgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZh
Y2U+IFRvSTQyMCgpIG92ZXJyaWRlOwogCiAgIGlkPFJUQ1ZpZGVvRnJhbWVCdWZmZXI+IHdyYXBw
ZWRfZnJhbWVfYnVmZmVyKCkgY29uc3Q7CisgIHZvaWQqIGZyYW1lX2J1ZmZlcl9wcm92aWRlcigp
IHsgcmV0dXJuIGZyYW1lX2J1ZmZlcl9wcm92aWRlcl8ucG9pbnRlcjsgfQogCiAgcHJpdmF0ZToK
ICAgaWQ8UlRDVmlkZW9GcmFtZUJ1ZmZlcj4gZnJhbWVfYnVmZmVyXzsKKyAgQnVmZmVyUHJvdmlk
ZXIgZnJhbWVfYnVmZmVyX3Byb3ZpZGVyXzsKICAgaW50IHdpZHRoXzsKICAgaW50IGhlaWdodF87
CisgIG11dGFibGUgd2VicnRjOjpNdXRleCBtdXRleF87CiB9OwogCiBpZDxSVENWaWRlb0ZyYW1l
QnVmZmVyPiBUb09iakNWaWRlb0ZyYW1lQnVmZmVyKApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0aXZlL3NyYy9vYmpjX2Zy
YW1lX2J1ZmZlci5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL25hdGl2ZS9zcmMvb2JqY19mcmFtZV9idWZmZXIubW0KaW5kZXggYTNkOWJhODEy
ZGE1Li4yZjU2YWNiMjk0M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2ZS9zcmMvb2JqY19mcmFtZV9idWZmZXIubW0K
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
bmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5tbQpAQCAtMTIsNiArMTIsNyBAQAogCiAjaW1w
b3J0ICJiYXNlL1JUQ1ZpZGVvRnJhbWVCdWZmZXIuaCIKICNpbXBvcnQgInNkay9vYmpjL2FwaS92
aWRlb19mcmFtZV9idWZmZXIvUlRDTmF0aXZlSTQyMEJ1ZmZlcitQcml2YXRlLmgiCisjaW1wb3J0
ICJzZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVENDVlBpeGVsQnVmZmVy
LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC01NSwxMCArNTYsMTUgQEAgY2xhc3MgT2Jq
Q0k0MjBGcmFtZUJ1ZmZlciA6IHB1YmxpYyBJNDIwQnVmZmVySW50ZXJmYWNlIHsKIE9iakNGcmFt
ZUJ1ZmZlcjo6T2JqQ0ZyYW1lQnVmZmVyKGlkPFJUQ1ZpZGVvRnJhbWVCdWZmZXI+IGZyYW1lX2J1
ZmZlcikKICAgICA6IGZyYW1lX2J1ZmZlcl8oZnJhbWVfYnVmZmVyKSwgd2lkdGhfKGZyYW1lX2J1
ZmZlci53aWR0aCksIGhlaWdodF8oZnJhbWVfYnVmZmVyLmhlaWdodCkge30KIAorT2JqQ0ZyYW1l
QnVmZmVyOjpPYmpDRnJhbWVCdWZmZXIoQnVmZmVyUHJvdmlkZXIgcHJvdmlkZXIsIGludCB3aWR0
aCwgaW50IGhlaWdodCkKKyAgICA6IGZyYW1lX2J1ZmZlcl9wcm92aWRlcl8ocHJvdmlkZXIpLCB3
aWR0aF8od2lkdGgpLCBoZWlnaHRfKGhlaWdodCkgeyB9CisKIE9iakNGcmFtZUJ1ZmZlcjo6fk9i
akNGcmFtZUJ1ZmZlcigpIHsKICNpZiBkZWZpbmVkKFdFQlJUQ19XRUJLSVRfQlVJTEQpCiAgIFtm
cmFtZV9idWZmZXJfIGNsb3NlXTsKICNlbmRpZgorICBpZiAoZnJhbWVfYnVmZmVyX3Byb3ZpZGVy
Xy5yZWxlYXNlQnVmZmVyKQorICAgIGZyYW1lX2J1ZmZlcl9wcm92aWRlcl8ucmVsZWFzZUJ1ZmZl
cihmcmFtZV9idWZmZXJfcHJvdmlkZXJfLnBvaW50ZXIpOwogfQogCiBWaWRlb0ZyYW1lQnVmZmVy
OjpUeXBlIE9iakNGcmFtZUJ1ZmZlcjo6dHlwZSgpIGNvbnN0IHsKQEAgLTc1LDEyICs4MSwyMSBA
QCBpbnQgT2JqQ0ZyYW1lQnVmZmVyOjpoZWlnaHQoKSBjb25zdCB7CiAKIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiBPYmpDRnJhbWVCdWZmZXI6OlRvSTQyMCgpIHsKICAg
cnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IGJ1ZmZlciA9Ci0gICAgICBu
ZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PE9iakNJNDIwRnJhbWVCdWZmZXI+KFtmcmFtZV9idWZm
ZXJfIHRvSTQyMF0pOworICAgICAgbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxPYmpDSTQyMEZy
YW1lQnVmZmVyPihbd3JhcHBlZF9mcmFtZV9idWZmZXIoKSB0b0k0MjBdKTsKIAogICByZXR1cm4g
YnVmZmVyOwogfQogCiBpZDxSVENWaWRlb0ZyYW1lQnVmZmVyPiBPYmpDRnJhbWVCdWZmZXI6Ondy
YXBwZWRfZnJhbWVfYnVmZmVyKCkgY29uc3QgeworICBpZiAoZnJhbWVfYnVmZmVyXykKKyAgICBy
ZXR1cm4gZnJhbWVfYnVmZmVyXzsKKworICB7CisgICAgd2VicnRjOjpNdXRleExvY2sgbG9jaygm
bXV0ZXhfKTsKKyAgICBpZiAoIWZyYW1lX2J1ZmZlcl8gJiYgZnJhbWVfYnVmZmVyX3Byb3ZpZGVy
Xy5nZXRCdWZmZXIpCisgICAgICBjb25zdF9jYXN0PE9iakNGcmFtZUJ1ZmZlcio+KHRoaXMpLT5m
cmFtZV9idWZmZXJfID0gW1tSVENDVlBpeGVsQnVmZmVyIGFsbG9jXSBpbml0V2l0aFBpeGVsQnVm
ZmVyOmZyYW1lX2J1ZmZlcl9wcm92aWRlcl8uZ2V0QnVmZmVyKGZyYW1lX2J1ZmZlcl9wcm92aWRl
cl8ucG9pbnRlcildOworICB9CisKICAgcmV0dXJuIGZyYW1lX2J1ZmZlcl87CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXgg
YWExNDZlZGRlNmNiLi5lMWU1Mzk1MGM4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDIt
MTEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQg
cmVtb3RlIHZpZGVvIGZyYW1lcyBpbiBXZWJSVEMgdmlkZW8gcGlwZWxpbmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjM1NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBhbiBleHBlcmlt
ZW50YWwgZmxhZyB0byBtYWtlIHVzZSBvZiByZW1vdGUgZnJhbWVzIGluIFdlYlJUQyBjb2RlIHBh
dGhzLgorCisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVy
bmFsLnlhbWw6CisKIDIwMjItMDItMTAgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV1RGXSBGaXggY2xhbmcgdGlkeSBidWdwcm9uZS1tb3ZlLWZvcndhcmRp
bmctcmVmZXJlbmNlIHN0YXRpYyBhbmFseXplciB3YXJuaW5ncyBmcm9tIFdlYkNvcmUvV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5j
ZXNJbnRlcm5hbC55YW1sIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZl
cmVuY2VzSW50ZXJuYWwueWFtbAppbmRleCA5MWVjNGYyMTcxMTYuLjhkM2VlZDEzOTU0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50
ZXJuYWwueWFtbAorKysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVy
ZW5jZXNJbnRlcm5hbC55YW1sCkBAIC0xMDIxLDYgKzEwMjEsMTkgQEAgV2ViUlRDUGxhdGZvcm1D
b2RlY3NJbkdQVVByb2Nlc3NFbmFibGVkOgogICAgIFdlYkNvcmU6CiAgICAgICBkZWZhdWx0OiBm
YWxzZQogCitXZWJSVENSZW1vdGVWaWRlb0ZyYW1lRW5hYmxlZDoKKyAgdHlwZTogYm9vbAorICBo
dW1hblJlYWRhYmxlTmFtZTogIldlYlJUQyBSZW1vdGUgVmlkZW8gRnJhbWUiCisgIGh1bWFuUmVh
ZGFibGVEZXNjcmlwdGlvbjogIkVuYWJsZSBXZWJSVEMgUmVtb3RlIFZpZGVvIEZyYW1lIgorICBj
b25kaXRpb246IEVOQUJMRShXRUJfUlRDKQorICBkZWZhdWx0VmFsdWU6CisgICAgV2ViS2l0TGVn
YWN5OgorICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICBXZWJLaXQ6CisgICAgICBkZWZhdWx0OiBm
YWxzZQorICAgIFdlYkNvcmU6CisgICAgICBkZWZhdWx0OiBmYWxzZQorCiBXZWJTUUxFbmFibGVk
OgogICB0eXBlOiBib29sCiAgIGh1bWFuUmVhZGFibGVOYW1lOiAiRW5hYmxlIFdlYlNRTCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA4OTgxN2ZkOWY2NjIuLmFlMGVmZjk2ODQzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI4IEBACisyMDIyLTAyLTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
KworICAgICAgICBTdXBwb3J0IHJlbW90ZSB2aWRlbyBmcmFtZXMgaW4gV2ViUlRDIHZpZGVvIHBp
cGVsaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzYzNTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
bGxvdyB0byByZWNlaXZlL3NlbmQgcmVtb3RlIGZyYW1lcyBhcyB3ZWJydGMgVmlkZW9GcmFtZSBi
dWZmZXJzLgorICAgICAgICBXZSBhcmUgbm90IHlldCBvcHRpbWl6aW5nIHJlbW92ZSB2aWRlbyBm
cmFtZSBzZW5kaW5nIGFzIHRoaXMgcmVxdWlyZXMgbW92aW5nIHJlbW90ZSB2aWRlbyBmcmFtZSB0
byBXZWJDb3JlLgorICAgICAgICBUaGlzIHdpbGwgYmUgZG9uZSBhcyBhIGZvbGxvdy11cC4KKwor
ICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzIGFuZCB1cGRhdGVkIHRlc3RzIHRvIGVu
YWJsZSB0aGUgZXhwZXJpbWVudGFsIGZsYWcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9NZWRpYVNh
bXBsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL1ZpZGVvRnJhbWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVW
aWRlb1NhbXBsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBs
ZUFWRk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
SW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5j
cHA6CisKIDIwMjItMDItMTEgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
IAogICAgICAgICBJbnRyb2R1Y2UgYSBSZW1vdGVNZWRpYVNhbXBsZVByb3h5IHRvIHJlcHJlc2Vu
dCBjYXB0dXJlZCB2aWRlbyBmcmFtZXMgdXNlZCBpbiBNZWRpYSBTdHJlYW1zIGFuZCBwcmVzZW50
IGluIEdQVVAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCmluZGV4IGI0ZmU3MTY1
NzlmZi4uYjA2NTA0ZjU3ZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
ZWRpYVNhbXBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKIHR5
cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKK3R5
cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNWUGl4ZWxCdWZmZXJSZWY7CiB0eXBlZGVmIHN0cnVj
dCBfR3N0U2FtcGxlIEdzdFNhbXBsZTsKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZU1UUGx1Z2luQnl0
ZVNvdXJjZSAqTVRQbHVnaW5CeXRlU291cmNlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3Qgb3Bh
cXVlQ01Gb3JtYXREZXNjcmlwdGlvbiAqQ01Gb3JtYXREZXNjcmlwdGlvblJlZjsKQEAgLTExMCw2
ICsxMTEsOSBAQCBwdWJsaWM6CiAjaWYgZGVmaW5lZChFTkFCTEVfVklERU8pICYmIEVOQUJMRV9W
SURFTwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxNZWRpYVNhbXBsZVZpZGVvRnJhbWU+IHZp
ZGVvRnJhbWUoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH07CiAjZW5kaWYKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICB2aXJ0dWFsIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIo
KSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9OworI2VuZGlmCiAKICAgICBib29sIGlzU3luYygp
IGNvbnN0IHsgcmV0dXJuIGZsYWdzKCkgJiBJc1N5bmM7IH0KICAgICBib29sIGlzTm9uRGlzcGxh
eWluZygpIGNvbnN0IHsgcmV0dXJuIGZsYWdzKCkgJiBJc05vbkRpc3BsYXlpbmc7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKaW5kZXggMzRlODE2ZWNkMDhjLi5mMDc2OWJh
NWU1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwCkBAIC01OCwxMiAr
NTgsNiBAQCBzaXplX3QgVmlkZW9GcmFtZTo6c2l6ZUluQnl0ZXMoKSBjb25zdAogICAgIHJldHVy
biAwOwogfQogCi1XZWJDb3JlOjpGbG9hdFNpemUgVmlkZW9GcmFtZTo6cHJlc2VudGF0aW9uU2l6
ZSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHsgfTsK
LX0KLQogdm9pZCBWaWRlb0ZyYW1lOjpvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1l
JikKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVv
RnJhbWUuaAppbmRleCBiMmQ5NTAxMGQzNmUuLmI2MzFmZDEzZTIyZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ZpZGVvRnJhbWUuaApAQCAtNDgsNyArNDgsNiBAQCBwcml2YXRlOgogICAgIFdFQkNP
UkVfRVhQT1JUIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIFdFQkNPUkVf
RVhQT1JUIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IGZpbmFsOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JU
IFdlYkNvcmU6OkZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3QgZmluYWw7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikg
ZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUaW1lc3RhbXBzKGNvbnN0IE1lZGlh
VGltZSYsIGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aXNEaXZpc2FibGUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCmluZGV4IGNkMTBkOWMwNWNiOC4uZjFk
ZDkxOTAxZjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
ZW1vdGVWaWRlb1NhbXBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JlbW90ZVZpZGVvU2FtcGxlLmgKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgogICAgIENWUGl4
ZWxCdWZmZXJSZWYgaW1hZ2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyLmdl
dCgpOyB9CiAKICAgICB2b2lkIHNldE93bmVyc2hpcElkZW50aXR5KGNvbnN0IFByb2Nlc3NJZGVu
dGl0eSYpOworICAgIHZvaWQgY2xlYXJJT1N1cmZhY2UoKSB7IG1faW9TdXJmYWNlID0gbnVsbHB0
cjsgfQogCiAgICAgY29uc3QgTWVkaWFUaW1lJiB0aW1lKCkgY29uc3QgeyByZXR1cm4gbV90aW1l
OyB9CiAgICAgdWludDMyX3QgdmlkZW9Gb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvRm9y
bWF0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggNTEyNjk2YTEzYWM3Li40MmZk
MTc0ODdlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTIzMCwxMCArMjMwLDkg
QEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnN1cHBvcnRzVHlwZShjb24KIAogc3RhdGljIGlubGluZSBDR0FmZmluZVRyYW5z
Zm9ybSB2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KE1lZGlhU2FtcGxlJiBzYW1wbGUpCiB7Ci0g
ICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyID0gc2FtcGxlLnBsYXRmb3JtU2FtcGxl
KCkuc2FtcGxlLmNtU2FtcGxlQnVmZmVyOwotICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZm
ZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihQQUw6OkNNU2FtcGxlQnVmZmVyR2V0
SW1hZ2VCdWZmZXIoc2FtcGxlQnVmZmVyKSk7Ci0gICAgc2l6ZV90IHdpZHRoID0gQ1ZQaXhlbEJ1
ZmZlckdldFdpZHRoKHBpeGVsQnVmZmVyKTsKLSAgICBzaXplX3QgaGVpZ2h0ID0gQ1ZQaXhlbEJ1
ZmZlckdldEhlaWdodChwaXhlbEJ1ZmZlcik7CisgICAgYXV0byBzaXplID0gc2FtcGxlLnByZXNl
bnRhdGlvblNpemUoKTsKKyAgICBzaXplX3Qgd2lkdGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNp
emUud2lkdGgoKSk7CisgICAgc2l6ZV90IGhlaWdodCA9IHN0YXRpY19jYXN0PHNpemVfdD4oc2l6
ZS5oZWlnaHQoKSk7CiAgICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KQogICAgICAgICByZXR1cm4g
Q0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eTsKIApAQCAtOTg3LDEwICs5ODYsNiBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1lSW1h
Z2UoKQogICAgIGlmIChtX2ltYWdlUGFpbnRlci5jZ0ltYWdlIHx8ICFtX2ltYWdlUGFpbnRlci5t
ZWRpYVNhbXBsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IERvZXMgbm90IGN1
cnJlbnRseSBzdXBwb3J0IFJlbW90ZVZpZGVvRnJhbWVQcm94eS4KLSAgICBpZiAoIWlzPE1lZGlh
U2FtcGxlQVZGT2JqQz4oKm1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKSkKLSAgICAgICAgcmV0
dXJuOwotCiAgICAgaWYgKCFtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lcikKICAg
ICAgICAgbV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBp
eGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsgKF9fYnJp
ZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAoa0NWUGl4
ZWxGb3JtYXRUeXBlXzMyQkdSQSkgfSk7CiAKQEAgLTk5OCw4ICs5OTMsOCBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2Uo
KQogICAgIGlmICghbV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVm
ZmVyUmVmPihQQUw6OkNNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIobV9pbWFnZVBhaW50ZXIu
bWVkaWFTYW1wbGUtPnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVmZmVyKSk7Ci0g
ICAgbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUobV9pbWFnZVBh
aW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKHBp
eGVsQnVmZmVyKSk7CisgICAgaWYgKGF1dG8gcGl4ZWxCdWZmZXIgPSBtX2ltYWdlUGFpbnRlci5t
ZWRpYVNhbXBsZS0+cGl4ZWxCdWZmZXIoKSkKKyAgICAgICAgbV9pbWFnZVBhaW50ZXIuY2dJbWFn
ZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUobV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3Jt
ZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKHBpeGVsQnVmZmVyKSk7CiB9CiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCmluZGV4IDdi
ZTczNTFlNWJhYS4uNWI0ZjdmMDBkYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNhbXBsZUFWRk9iakMuaApAQCAtNzIsNiArNzIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB2aWRl
b01pcnJvcmVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9taXJyb3JlZDsgfQogICAgIFdF
QkNPUkVfRVhQT1JUIHVpbnQzMl90IHZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5hbDsKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPE1lZGlhU2FtcGxlVmlkZW9GcmFtZT4gdmlk
ZW9GcmFtZSgpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIENWUGl4ZWxCdWZmZXJS
ZWYgcGl4ZWxCdWZmZXIoKSBjb25zdCBmaW5hbDsKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1w
bGVCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZS5nZXQoKTsgfQogCiAgICAgYm9vbCBp
c0hvbW9nZW5lb3VzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBs
ZUFWRk9iakMubW0KaW5kZXggYTNhMzE1NmJmYmEwLi41MDA0MzQwZmVmNDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U2FtcGxlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KQEAgLTU1Niw0ICs1NTYsOSBA
QCBzdGQ6Om9wdGlvbmFsPE1lZGlhU2FtcGxlOjpCeXRlUmFuZ2U+IE1lZGlhU2FtcGxlQVZGT2Jq
Qzo6Ynl0ZVJhbmdlRm9yQXR0YWNobWVudAogICAgIHJldHVybiB7IHsgQ2hlY2tlZFNpemUoYnl0
ZU9mZnNldCksIHNpbmdsZVNpemVFbnRyeSB9IH07CiB9CiAKK0NWUGl4ZWxCdWZmZXJSZWYgTWVk
aWFTYW1wbGVBVkZPYmpDOjpwaXhlbEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZl
cihtX3NhbXBsZS5nZXQoKSkpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmluZGV4IDY4
MjczZWJmN2YwMy4uMzllM2U3ZTIzZWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNwcApAQCAtMzAs
NiArMzAsNyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiSW1hZ2VUcmFuc2Zl
clNlc3Npb25WVC5oIgorI2luY2x1ZGUgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgogI2VuZGlmCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE2OSw2ICsxNzAsMTQgQEAgdm9pZCBSZWFsdGltZVZp
ZGVvU291cmNlOjpzb3VyY2VTdG9wcGVkKCkKICNpZiBQTEFURk9STShDT0NPQSkKIFJlZlB0cjxN
ZWRpYVNhbXBsZT4gUmVhbHRpbWVWaWRlb1NvdXJjZTo6YWRhcHRWaWRlb1NhbXBsZShNZWRpYVNh
bXBsZSYgc2FtcGxlKQogeworICAgIGlmIChzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS50eXBlICE9
IFBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGUpIHsKKyAgICAgICAgLy8gRklYTUU6
IFN1cHBvcnQgbW9yZSBlZmZpY2llbnRseSBkb3duc2FtcGxpbmcgb2YgcmVtb3RlIHZpZGVvIGZy
YW1lcyBieSBkb3duc2FtcGxpbmcgaW4gR1BVUHJvY2Vzcy4KKyAgICAgICAgYXV0byBuZXdTYW1w
bGUgPSBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlKHNhbXBsZS5waXhlbEJ1
ZmZlcigpLCBzYW1wbGUudmlkZW9Sb3RhdGlvbigpLCBzYW1wbGUudmlkZW9NaXJyb3JlZCgpLCBz
YW1wbGUucHJlc2VudGF0aW9uVGltZSgpLCB7IH0pOworICAgICAgICBpZiAoIW5ld1NhbXBsZSkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gYWRhcHRWaWRlb1Nh
bXBsZSgqbmV3U2FtcGxlKTsKKyAgICB9CisgICAgQVNTRVJUKHNhbXBsZS5wbGF0Zm9ybVNhbXBs
ZSgpLnR5cGUgPT0gUGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZSk7CiAgICAgaWYg
KCFtX2ltYWdlVHJhbnNmZXJTZXNzaW9uIHx8IG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPnBpeGVs
Rm9ybWF0KCkgIT0gc2FtcGxlLnZpZGVvUGl4ZWxGb3JtYXQoKSkKICAgICAgICAgbV9pbWFnZVRy
YW5zZmVyU2Vzc2lvbiA9IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZShzYW1wbGUudmlk
ZW9QaXhlbEZvcm1hdCgpLCBtX3Nob3VsZFVzZUlPU3VyZmFjZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2VDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmgKaW5kZXggZDBmZThlMDY1ODIyLi42
NDY2ZDYxOGRlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3Vy
Y2VDb2NvYS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBVU0UoTElCV0VCUlRDKQogCisjaW5j
bHVkZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNsdWRlICJSZWFsdGltZUluY29taW5nVmlkZW9Tb3Vy
Y2UuaCIKIAogdXNpbmcgQ01TYW1wbGVCdWZmZXJSZWYgPSBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVC
dWZmZXIqOwpAQCAtNDksNiArNTAsOCBAQCBwcml2YXRlOgogICAgIFJlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZUNvY29hKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJhY2tJbnRl
cmZhY2U+JiYsIFN0cmluZyYmKTsKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcGl4
ZWxCdWZmZXJGcm9tVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmKTsKICAgICBD
VlBpeGVsQnVmZmVyUG9vbFJlZiBwaXhlbEJ1ZmZlclBvb2woc2l6ZV90IHdpZHRoLCBzaXplX3Qg
aGVpZ2h0LCB3ZWJydGM6OkJ1ZmZlclR5cGUpOworICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gdG9W
aWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYsIE1lZGlhU2FtcGxlOjpWaWRlb1Jv
dGF0aW9uKTsKKyAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IGNyZWF0ZU1lZGlhU2FtcGxlRnJvbUNW
UGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24s
IGludDY0X3QpOwogCiAgICAgLy8gcnRjOjpWaWRlb1NpbmtJbnRlcmZhY2UKICAgICB2b2lkIE9u
RnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KaW5kZXggNTM3ZWEwYjUxMTMxLi43
YTM1MjZhMzkzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291
cmNlQ29jb2EubW0KQEAgLTExOCw3ICsxMTgsMzMgQEAgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OnBpeGVsQnVmZmVyUG9vbChzaXplX3Qgd2kK
ICAgICByZXR1cm4gbV9waXhlbEJ1ZmZlclBvb2wuZ2V0KCk7CiB9CiAKLVJldGFpblB0cjxDVlBp
eGVsQnVmZmVyUmVmPiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6cGl4ZWxCdWZm
ZXJGcm9tVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lKQorUmVmUHRy
PE1lZGlhU2FtcGxlPiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6Y3JlYXRlTWVk
aWFTYW1wbGVGcm9tQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCBN
ZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgaW50NjRfdCB0aW1lU3RhbXApCit7
CisgICAgQ01TYW1wbGVUaW1pbmdJbmZvIHRpbWluZ0luZm87CisgICAgdGltaW5nSW5mby5wcmVz
ZW50YXRpb25UaW1lU3RhbXAgPSBQQUw6OkNNVGltZU1ha2UodGltZVN0YW1wLCAxMDAwMDAwKTsK
KyAgICB0aW1pbmdJbmZvLmRlY29kZVRpbWVTdGFtcCA9IFBBTDo6a0NNVGltZUludmFsaWQ7Cisg
ICAgdGltaW5nSW5mby5kdXJhdGlvbiA9IFBBTDo6a0NNVGltZUludmFsaWQ7CisKKyAgICBDTVZp
ZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb247CisgICAgT1NTdGF0dXMg
b3N0YXR1cyA9IFBBTDo6Q01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlRm9ySW1hZ2VCdWZm
ZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKENWSW1hZ2VCdWZmZXJSZWYpcGl4ZWxCdWZmZXIsICZm
b3JtYXREZXNjcmlwdGlvbik7CisgICAgaWYgKG9zdGF0dXMgIT0gbm9FcnIpIHsKKyAgICAgICAg
RVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAiRmFpbGVkIHRvIGluaXRp
YWxpemUgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uIHdpdGggZXJyb3IgIiwgc3RhdGljX2Nhc3Q8
aW50Pihvc3RhdHVzKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIENN
U2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlcjsKKyAgICBvc3RhdHVzID0gUEFMOjpDTVNhbXBs
ZUJ1ZmZlckNyZWF0ZVJlYWR5V2l0aEltYWdlQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIChD
VkltYWdlQnVmZmVyUmVmKXBpeGVsQnVmZmVyLCBmb3JtYXREZXNjcmlwdGlvbiwgJnRpbWluZ0lu
Zm8sICZzYW1wbGVCdWZmZXIpOworICAgIENGUmVsZWFzZShmb3JtYXREZXNjcmlwdGlvbik7Cisg
ICAgaWYgKG9zdGF0dXMgIT0gbm9FcnIpIHsKKyAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0
cigpLCBMT0dJREVOVElGSUVSLCAiRmFpbGVkIHRvIGNyZWF0ZSB0aGUgc2FtcGxlIGJ1ZmZlciB3
aXRoIGVycm9yICIsIHN0YXRpY19jYXN0PGludD4ob3N0YXR1cykpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKKyAgICBhdXRvIHNhbXBsZSA9IGFkb3B0Q0Yoc2FtcGxlQnVmZmVy
KTsKKyAgICByZXR1cm4gTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUoc2FtcGxlLmdldCgpLCBy
b3RhdGlvbik7Cit9CisKK1JlZlB0cjxNZWRpYVNhbXBsZT4gUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlQ29jb2E6OnRvVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1l
LCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKIHsKICAgICBpZiAobXV0ZWQo
KSkgewogICAgICAgICBpZiAoIW1fYmxhY2tGcmFtZSB8fCBtX2JsYWNrRnJhbWVXaWR0aCAhPSBm
cmFtZS53aWR0aCgpIHx8IG1fYmxhY2tGcmFtZUhlaWdodCAhPSBmcmFtZS5oZWlnaHQoKSkgewpA
QCAtMTI2LDEyICsxNTIsMTMgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IFJlYWx0aW1l
SW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpwaXhlbEJ1ZmZlckZyb21WaWQKICAgICAgICAgICAg
IG1fYmxhY2tGcmFtZUhlaWdodCA9IGZyYW1lLmhlaWdodCgpOwogICAgICAgICAgICAgbV9ibGFj
a0ZyYW1lID0gY3JlYXRlQmxhY2tQaXhlbEJ1ZmZlcihtX2JsYWNrRnJhbWVXaWR0aCwgbV9ibGFj
a0ZyYW1lSGVpZ2h0KTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbV9ibGFja0ZyYW1lLmdl
dCgpOworICAgICAgICByZXR1cm4gY3JlYXRlTWVkaWFTYW1wbGVGcm9tQ1ZQaXhlbEJ1ZmZlciht
X2JsYWNrRnJhbWUuZ2V0KCksIHJvdGF0aW9uLCBmcmFtZS50aW1lc3RhbXBfdXMoKSk7CiAgICAg
fQogCisgICAgLy8gRklYTUU6IERldGVjdCB0aGUgY2FzZSBvZiBmcmFtZSBoYXZpbmcgYSBGcmFt
ZUJ1ZmZlclByb3ZpZGVyLgogICAgIC8vIEluIGNhc2Ugb2YgaW4gbWVtb3J5IHNhbXBsZXMsIHdl
IGhhdmUgbm9uIGludGVybGVhdmVkIFlVViBkYXRhIHdoaWxlIENWUGl4ZWxCdWZmZXJzIHByZWZl
ciBpbnRlcmxlYXZlZCBZVVYgZGF0YS4KICAgICAvLyBNYXliZSB3ZSBzaG91bGQgaW50cm9kdWNl
IGEgTWVkaWFTYW1wbGUgdGhhdCB3b3VsZCByZXByZXNlbnQgbm9uIGludGVybGVhdmVkIFlVViBk
YXRhIGFzIGFuIG9wdGltaXphdGlvbi4KLSAgICByZXR1cm4gYWRvcHRDRih3ZWJydGM6OmNyZWF0
ZVBpeGVsQnVmZmVyRnJvbUZyYW1lKGZyYW1lLCBbdGhpc10oc2l6ZV90IHdpZHRoLCBzaXplX3Qg
aGVpZ2h0LCB3ZWJydGM6OkJ1ZmZlclR5cGUgYnVmZmVyVHlwZSkgLT4gQ1ZQaXhlbEJ1ZmZlclJl
ZiB7CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGFkb3B0Q0Yod2VicnRjOjpjcmVhdGVQaXhlbEJ1
ZmZlckZyb21GcmFtZShmcmFtZSwgW3RoaXNdKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwg
d2VicnRjOjpCdWZmZXJUeXBlIGJ1ZmZlclR5cGUpIC0+IENWUGl4ZWxCdWZmZXJSZWYgewogICAg
ICAgICBhdXRvIHBpeGVsQnVmZmVyUG9vbCA9IHRoaXMtPnBpeGVsQnVmZmVyUG9vbCh3aWR0aCwg
aGVpZ2h0LCBidWZmZXJUeXBlKTsKICAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlclBvb2wpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE0NSwxOCArMTcyLDE5IEBAIFJldGFpblB0cjxD
VlBpeGVsQnVmZmVyUmVmPiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6cGl4ZWxC
dWZmZXJGcm9tVmlkCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHBpeGVsQnVmZmVyOwogICAg
IH0pKTsKKyAgICByZXR1cm4gY3JlYXRlTWVkaWFTYW1wbGVGcm9tQ1ZQaXhlbEJ1ZmZlcihwaXhl
bEJ1ZmZlci5nZXQoKSwgcm90YXRpb24sIGZyYW1lLnRpbWVzdGFtcF91cygpKTsKIH0KIAotdm9p
ZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6T25GcmFtZShjb25zdCB3ZWJydGM6
OlZpZGVvRnJhbWUmIGZyYW1lKQordm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2Nv
YTo6T25GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIHdlYnJ0Y1ZpZGVvRnJhbWUpCiB7
CiAgICAgaWYgKCFpc1Byb2R1Y2luZ0RhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdW5z
aWduZWQgd2lkdGggPSBmcmFtZS53aWR0aCgpOwotICAgIHVuc2lnbmVkIGhlaWdodCA9IGZyYW1l
LmhlaWdodCgpOworICAgIHVuc2lnbmVkIHdpZHRoID0gd2VicnRjVmlkZW9GcmFtZS53aWR0aCgp
OworICAgIHVuc2lnbmVkIGhlaWdodCA9IHdlYnJ0Y1ZpZGVvRnJhbWUuaGVpZ2h0KCk7CiAKICAg
ICBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbjsKLSAgICBzd2l0Y2ggKGZyYW1l
LnJvdGF0aW9uKCkpIHsKKyAgICBzd2l0Y2ggKHdlYnJ0Y1ZpZGVvRnJhbWUucm90YXRpb24oKSkg
ewogICAgIGNhc2Ugd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8wOgogICAgICAgICByb3RhdGlvbiA9
IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lOwogICAgICAgICBicmVhazsKQEAgLTE3
NCw0MCArMjAyLDE1IEBAIHZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6Ok9u
RnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSkKICAgICB9CiAKICNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKLSAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpICYmICEoKytt
X251bWJlck9mRnJhbWVzICUgNjApLCBMT0dJREVOVElGSUVSLCAiZnJhbWUgIiwgbV9udW1iZXJP
ZkZyYW1lcywgIiwgcm90YXRpb24gIiwgZnJhbWUucm90YXRpb24oKSwgIiBzaXplICIsIHdpZHRo
LCAieCIsIGhlaWdodCk7CisgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSAmJiAhKCsrbV9u
dW1iZXJPZkZyYW1lcyAlIDYwKSwgTE9HSURFTlRJRklFUiwgImZyYW1lICIsIG1fbnVtYmVyT2ZG
cmFtZXMsICIsIHJvdGF0aW9uICIsIHdlYnJ0Y1ZpZGVvRnJhbWUucm90YXRpb24oKSwgIiBzaXpl
ICIsIHdpZHRoLCAieCIsIGhlaWdodCk7CiAjZW5kaWYKIAotICAgIGF1dG8gcGl4ZWxCdWZmZXIg
PSBwaXhlbEJ1ZmZlckZyb21WaWRlb0ZyYW1lKGZyYW1lKTsKLSAgICBpZiAoIXBpeGVsQnVmZmVy
KSB7Ci0gICAgICAgIEVSUk9SX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgIkZh
aWxlZCB0byBnZXQgYSBwaXhlbCBidWZmZXIgZnJvbSBhIGZyYW1lIik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBDTVNhbXBsZVRpbWluZ0luZm8gdGltaW5nSW5mbzsKLSAgICB0aW1p
bmdJbmZvLnByZXNlbnRhdGlvblRpbWVTdGFtcCA9IFBBTDo6Q01UaW1lTWFrZShmcmFtZS50aW1l
c3RhbXBfdXMoKSwgMTAwMDAwMCk7Ci0gICAgdGltaW5nSW5mby5kZWNvZGVUaW1lU3RhbXAgPSBQ
QUw6OmtDTVRpbWVJbnZhbGlkOwotICAgIHRpbWluZ0luZm8uZHVyYXRpb24gPSBQQUw6OmtDTVRp
bWVJbnZhbGlkOwotCi0gICAgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2Ny
aXB0aW9uOwotICAgIE9TU3RhdHVzIG9zdGF0dXMgPSBQQUw6OkNNVmlkZW9Gb3JtYXREZXNjcmlw
dGlvbkNyZWF0ZUZvckltYWdlQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIChDVkltYWdlQnVm
ZmVyUmVmKXBpeGVsQnVmZmVyLCAmZm9ybWF0RGVzY3JpcHRpb24pOwotICAgIGlmIChvc3RhdHVz
ICE9IG5vRXJyKSB7Ci0gICAgICAgIEVSUk9SX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJ
RklFUiwgIkZhaWxlZCB0byBpbml0aWFsaXplIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbiB3aXRo
IGVycm9yICIsIHN0YXRpY19jYXN0PGludD4ob3N0YXR1cykpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyOwotICAgIG9zdGF0dXMg
PSBQQUw6OkNNU2FtcGxlQnVmZmVyQ3JlYXRlUmVhZHlXaXRoSW1hZ2VCdWZmZXIoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgKENWSW1hZ2VCdWZmZXJSZWYpcGl4ZWxCdWZmZXIsIGZvcm1hdERlc2NyaXB0
aW9uLCAmdGltaW5nSW5mbywgJnNhbXBsZUJ1ZmZlcik7Ci0gICAgQ0ZSZWxlYXNlKGZvcm1hdERl
c2NyaXB0aW9uKTsKLSAgICBpZiAob3N0YXR1cyAhPSBub0VycikgewotICAgICAgICBFUlJPUl9M
T0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsICJGYWlsZWQgdG8gY3JlYXRlIHRoZSBz
YW1wbGUgYnVmZmVyIHdpdGggZXJyb3IgIiwgc3RhdGljX2Nhc3Q8aW50Pihvc3RhdHVzKSk7Cisg
ICAgYXV0byB2aWRlb0ZyYW1lID0gdG9WaWRlb0ZyYW1lKHdlYnJ0Y1ZpZGVvRnJhbWUsIHJvdGF0
aW9uKTsKKyAgICBpZiAoIXZpZGVvRnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBhdXRvIHNhbXBsZSA9IGFkb3B0Q0Yoc2FtcGxlQnVmZmVyKTsKIAogICAgIHNldEludHJpbnNp
Y1NpemUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7Ci0KLSAgICB2aWRlb1NhbXBsZUF2YWlsYWJs
ZShNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZShzYW1wbGUuZ2V0KCksIHJvdGF0aW9uKSwgbWV0
YWRhdGFGcm9tVmlkZW9GcmFtZShmcmFtZSkpOworICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxlKCp2
aWRlb0ZyYW1lLCBtZXRhZGF0YUZyb21WaWRlb0ZyYW1lKHdlYnJ0Y1ZpZGVvRnJhbWUpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdv
aW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHAKaW5kZXggNThjNmJkZTQzNDY2Li5hMzc1OTVlYjM2OTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNw
cApAQCAtODMsOCArODMsOCBAQCB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29h
Ojp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgc2FtcGxlLAogICAgICAgICBicmVh
azsKICAgICB9CiAKLSAgICBBU1NFUlQoc2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBQ
bGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVCdWZmZXJUeXBlKTsKLSAgICBhdXRvIHBpeGVsQnVmZmVy
ID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1ZmZlckdldElt
YWdlQnVmZmVyKHNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcikp
OworICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSB0aGUgY2FzZSBvZiBQbGF0Zm9ybVNhbXBsZTo6UmVt
b3RlVmlkZW9GcmFtZVByb3h5VHlwZS4KKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gc2FtcGxlLnBp
eGVsQnVmZmVyKCk7CiAgICAgYXV0byBwaXhlbEZvcm1hdFR5cGUgPSBDVlBpeGVsQnVmZmVyR2V0
UGl4ZWxGb3JtYXRUeXBlKHBpeGVsQnVmZmVyKTsKIAogICAgIFJldGFpblB0cjxDVlBpeGVsQnVm
ZmVyUmVmPiBjb252ZXJ0ZWRCdWZmZXIgPSBwaXhlbEJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IGRjNGQzMWNmNmY0OC4uNzk0OWU4MDU2YjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTI4
NCw2ICsyODQsNyBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZQogCiAgICAgV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcworICAgIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yCiAgICAgV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcgogCiAgICAgV2ViUHJvY2Vzcy9HZW9sb2Nh
dGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZGVjY2ZmOGNiZWE0Li40NDNh
M2JiNDg3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMjItMDItMTEgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgcmVtb3RlIHZpZGVv
IGZyYW1lcyBpbiBXZWJSVEMgdmlkZW8gcGlwZWxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjM1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IHJlY2VpdmluZyByZW1vdGUgc2FtcGxlcyBm
cm9tIGNhbWVyYSBvciBIVyBkZWNvZGVycy4KKyAgICAgICAgSW4gdGhhdCBjYXNlLCB3ZSBjcmVh
dGUgcmVtb3RlIHZpZGVvIGZyYW1lcyBhbmQgYWxsb3cgcGlwaW5nIHRoZW0gdG8gb3VyIGV4aXN0
aW5nIHBpcGVsaW5lLgorICAgICAgICBXZSB1cGRhdGUgTWVkaWFSZWNvcmRlciBhbmQgTGliV2Vi
UlRDIEhXIGVuY29kZXJzIHRvIGRlYWwgd2l0aCB0aGlzLgorICAgICAgICBTaW5jZSB3ZSBoYXZl
IGEgY29kZSBwYXRoIHRoYXQgcmVxdWlyZXMgZ2V0dGluZyBhY2Nlc3MgdG8gdGhlIHJhdyBwaXhl
bHMsIHdlIGludHJvZHVjZSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5CisgICAgICAg
IHRvIGFsbG93IGdldHRpbmcgdGhhdCBkYXRhIHRocm91Z2ggc2hhcmVkIG1lbW9yeSBhc3luY2hy
b25vdXNseS4KKyAgICAgICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5IHdpbGwgdGhlbiB1c2UgYSBz
ZW1hcGhvcmUgdG8gYmxvY2sgb24gdGhlIGFzeW5jIElQQyByZXN1bHQuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwLmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3NQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldl
YlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRj
L0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHA6CisgICAgICAgICogU2hhcmVkL1RocmVhZFNh
ZmVPYmplY3RIZWFwLmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eUlkZW50aWZp
ZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjcy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVj
cy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQ
cml2YXRlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXBQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93
ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvci5jcHA6IEFkZGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcFByb3h5UHJvY2Vzc29yLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yLm1lc3NhZ2VzLmlu
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldl
YlJUQ1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
UGFnZUNvY29hLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNh
bXBsZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVy
ZVNhbXBsZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1
cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2Ev
UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZVByb3h5LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L2NvY29hL1JlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VQcm94eS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oOgorCiAyMDIyLTAyLTExICBL
aW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNl
IGEgUmVtb3RlTWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJh
bWVzIHVzZWQgaW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggMGQ0ZGZkMTJjZTlj
Li4zY2QzOTFmOWZiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKQEAgLTE5Niw2ICsxOTYsOCBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDUmVtb3RlQ29kZWNzLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5tZXNzYWdl
cy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3IubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5h
Z2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1v
dGVXZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggMjcyMmQzYzQwYWM2Li5jMjZiN2M3MDNiNGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApA
QCAtMzg0LDYgKzM4NCwxMiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0L1JlbW90ZVRleHR1cmVWaWV3TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXMuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cE1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlNZXNzYWdl
c1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9S
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yTWVzc2FnZVJlY2VpdmVyLmNw
cAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFBy
b3h5UHJvY2Vzc29yTWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9UcmFja1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRl
b1RyYWNrUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L1JlbW90ZVZpZGVvVHJhY2tQcm94eU1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggYjdjODkzZDBlMTUwLi44ZGIxMjgxM2ViYjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTIwNSw2ICsyMDUsNyBAQCBNRVNTQUdFX1JFQ0VJ
VkVSUyA9IFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVu
ZXIgXAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUgXAog
CVdlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIgXAorCVdl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vz
c29yIFwKIAlXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAgXAogCVdlYlByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyIFwKIAlXZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRl
eCAxMDM5MzllODMzMjYuLmRlMjNjNDQ0Y2MwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMjA2LDIwICsy
MDYsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgbV9wcm9jZXNzLnNldFRDQ0lkZW50aXR5KCk7CiAg
ICAgfQogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKICAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
IHR5cGUpIGZpbmFsCiAgICAgewogICAgICAgICBpZiAodHlwZSAhPSBSZWFsdGltZU1lZGlhU291
cmNlOjpUeXBlOjpBdWRpbykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9wcm9jZXNz
LnN0YXJ0Q2FwdHVyaW5nQXVkaW8oKTsKICAgICB9Ci0jZW5kaWYKIAogICAgIGNvbnN0IFByb2Nl
c3NJZGVudGl0eSYgcmVzb3VyY2VPd25lcigpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICBy
ZXR1cm4gbV9wcm9jZXNzLndlYlByb2Nlc3NJZGVudGl0eSgpOwogICAgIH0KIAorICAgIFJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwKiByZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCgpIGZpbmFs
IHsgcmV0dXJuICZtX3Byb2Nlc3MudmlkZW9GcmFtZU9iamVjdEhlYXAoKTsgfQorCiAgICAgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9wcm9jZXNzOwogfTsKIApAQCAtMjM3LDE1ICsyMzgs
MTggQEAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyhHUFVQcm9jZXNzJiBncHVQcm9jZXNzLCBXZWIKICAgICAsIG1fd2ViUHJvY2Vzc0lkZW50aXR5
KFdURk1vdmUocGFyYW1ldGVycy53ZWJQcm9jZXNzSWRlbnRpdHkpKQogICAgICwgbV9yZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eShtYWtlVW5pcXVlUmVmPFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5PigqdGhpcykpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCi0jaWYgUExB
VEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCi0gICAgLCBtX2xpYldlYlJUQ0NvZGVjc1By
b3h5KExpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGUoKnRoaXMpKQotI2VuZGlmCiAjaWYgUExB
VEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgLCBtX3NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1hbmFnZXIoUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
cjo6Y3JlYXRlKCp0aGlzKSkKICNlbmRpZgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAg
LCBtX2NhcHR1cmVPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKQogI2VuZGlm
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAsIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAo
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmNyZWF0ZSgqdGhpcykpCisjZW5kaWYKKyNpZiBQ
TEFURk9STShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykKKyAgICAsIG1fbGliV2ViUlRDQ29kZWNz
UHJveHkoTGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZSgqdGhpcykpCisjZW5kaWYKICNpZiBI
QVZFKEFVRElUX1RPS0VOKQogICAgICwgbV9wcmVzZW50aW5nQXBwbGljYXRpb25BdWRpdFRva2Vu
KFdURk1vdmUocGFyYW1ldGVycy5wcmVzZW50aW5nQXBwbGljYXRpb25BdWRpdFRva2VuKSkKICNl
bmRpZgpAQCAtMjU4LDkgKzI2Miw2IEBAIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYgZ3B1UHJvY2VzcywgV2ViCiAjaWYgRU5B
QkxFKFJPVVRJTkdfQVJCSVRSQVRJT04pICYmIEhBVkUoQVZBVURJT19ST1VUSU5HX0FSQklURVIp
CiAgICAgZ3B1UHJvY2Vzcy5hdWRpb1Nlc3Npb25NYW5hZ2VyKCkuc2Vzc2lvbigpLnNldFJvdXRp
bmdBcmJpdHJhdGlvbkNsaWVudChtX3JvdXRpbmdBcmJpdHJhdG9yLmdldCgpKTsKICNlbmRpZgot
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgbV92aWRlb0ZyYW1lT2JqZWN0SGVhcCA9IFJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpjcmVhdGUoKnRoaXMpOwotI2VuZGlmCiAKICAgICBp
ZiAoIXBhcmFtZXRlcnMub3ZlcnJpZGVMYW5ndWFnZXMuaXNFbXB0eSgpKQogICAgICAgICBvdmVy
cmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMocGFyYW1ldGVycy5vdmVycmlkZUxhbmd1YWdlcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaAppbmRleCA5OTZmNTRmM2M4NDkuLjhiNGQ5YjU0Mjk4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0y
OTMsOSArMjkzLDYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFS
ZXNvdXJjZU1hbmFnZXI+IG1fcmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI7CiAgICAgVW5pcXVl
UmVmPFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5PiBtX3JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5OwogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwotI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQotICAgIFJlZjxMaWJXZWJSVENDb2RlY3NQcm94eT4g
bV9saWJXZWJSVENDb2RlY3NQcm94eTsKLSNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlclByb3h5PiBtX3VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
TWFuYWdlcj4gbV9hdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFn
ZXI7CkBAIC0zMTIsNiArMzA5LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fYWxsb3dzRGlzcGxh
eUNhcHR1cmUgeyBmYWxzZSB9OwogICAgIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVR
dWV1ZTxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gbV92aWRlb0ZyYW1lT2JqZWN0SGVhcDsK
ICNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQorICAgIFJlZjxM
aWJXZWJSVENDb2RlY3NQcm94eT4gbV9saWJXZWJSVENDb2RlY3NQcm94eTsKKyNlbmRpZgogI2lm
IEhBVkUoQVVESVRfVE9LRU4pCiAgICAgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBtX3By
ZXNlbnRpbmdBcHBsaWNhdGlvbkF1ZGl0VG9rZW47CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXAuY3BwCmluZGV4IDBhOTVmN2FiZWVkNC4uNDgxMzI1NmIwZWNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcC5jcHAKQEAgLTI5LDggKzI5LDExIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCIKICNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvck1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCiAKKyNpbmNsdWRlIDxwYWwv
Y2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFJlZjxSZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmNyZWF0
ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uVG9XZWJQcm9jZXNzKQpAQCAt
NTMsNiArNTYsOCBAQCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6flJlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwKCkKIHZvaWQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OnN0b3BMaXN0
ZW5pbmdGb3JJUEMoUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiYmIHJlZkZyb21Db25u
ZWN0aW9uKQogewogICAgIGFzc2VydElzQ3VycmVudChtX2NvbnN1bWVUaHJlYWQpOworICAgIG1f
c2hhcmVkVmlkZW9GcmFtZVdyaXRlci5kaXNhYmxlKCk7CisKICAgICBpZiAoYXV0byogZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcyA9IHN0ZDo6ZXhjaGFuZ2UobV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLCBudWxscHRyKSkgewogICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5t
ZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogICAgICAgICAv
LyBDbGllbnRzIG1pZ2h0IGhvbGQgb24gdG8gdGhlIHJlZiBhZnRlciB0aGlzIGhhcHBlbnMuIFRo
ZXkgc2hvdWxkIGFsc28gc3RvcCB0aGVtc2VsdmVzLCBidXQgaWYgdGhleSBkbyBub3QsCkBAIC02
MywxMiArNjgsMzcgQEAgdm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6c3RvcExpc3Rl
bmluZ0ZvcklQQyhSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEgKICAgICB9CiB9CiAKK1JlbW90
ZVZpZGVvRnJhbWVJZGVudGlmaWVyIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpjcmVhdGVS
ZW1vdGVWaWRlb0ZyYW1lKFJlZjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4mJiBmcmFtZSkKK3sKKyAg
ICBhdXRvIGlkZW50aWZpZXIgPSBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcjo6Z2VuZXJhdGVU
aHJlYWRTYWZlKCk7CisgICAgYWRkKGlkZW50aWZpZXIsIFdURk1vdmUoZnJhbWUpKTsKKyAgICBy
ZXR1cm4gaWRlbnRpZmllcjsKK30KKwogdm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6
cmVsZWFzZVZpZGVvRnJhbWUoUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJiYgd3JpdGUp
CiB7CiAgICAgYXNzZXJ0SXNDdXJyZW50KG1fY29uc3VtZVRocmVhZCk7CiAgICAgcmV0aXJlUmVt
b3ZlKFdURk1vdmUod3JpdGUpKTsKIH0KIAordm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cDo6Z2V0VmlkZW9GcmFtZUJ1ZmZlcihSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSYmIHJl
YWQpCit7CisgICAgYXV0byBpZGVudGlmaWVyID0gcmVhZC5pZGVudGlmaWVyKCk7CisgICAgYXV0
byBtZWRpYVNhbXBsZSA9IHJldGlyZShXVEZNb3ZlKHJlYWQpLCAwX3MpOworCisgICAgaWYgKCFt
ZWRpYVNhbXBsZSkKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yOjpWaWRlb0ZyYW1lQnVmZmVyTm90Rm91
bmQgeyBpZGVudGlmaWVyIH0sIDApOworCisgICAgYXV0byBwbGF0Zm9ybVNhbXBsZSA9IG1lZGlh
U2FtcGxlLT5wbGF0Zm9ybVNhbXBsZSgpOworICAgIEFTU0VSVChwbGF0Zm9ybVNhbXBsZS50eXBl
ID09IFBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGUpOworCisgICAgbV9zaGFyZWRW
aWRlb0ZyYW1lV3JpdGVyLndyaXRlKHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6
Q01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihwbGF0Zm9ybVNhbXBsZS5zYW1wbGUuY21TYW1w
bGVCdWZmZXIpKSwKKyAgICAgICAgWyZdKGF1dG8mIHNlbWFwaG9yZSkgeyBtX2Nvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3I6
OlNldFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhvcmUgeyBzZW1hcGhvcmUgfSwgMCk7IH0sCisgICAg
ICAgIFsmXShhdXRvJiBoYW5kbGUpIHsgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yOjpTZXRTaGFyZWRWaWRlb0ZyYW1l
TWVtb3J5IHsgaGFuZGxlIH0sIDApOyB9CisgICAgKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3I6Ok5ld1Zp
ZGVvRnJhbWVCdWZmZXIgeyBpZGVudGlmaWVyIH0sIDApOworfQorCiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXAuaAppbmRleCA5ZDM3ZmRkNGVhN2UuLmFkMGNiM2I5NjE4NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1l
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNoYXJlZFZpZGVvRnJhbWUuaCIKICNpbmNsdWRlICJU
aHJlYWRTYWZlT2JqZWN0SGVhcC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTYW1wbGUuaD4K
ICNpbmNsdWRlIDx3dGYvVGhyZWFkQXNzZXJ0aW9ucy5oPgpAQCAtNDQsNyArNDUsMTAgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IGNyZWF0ZShH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAgICAgflJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwKCk7CiAKKyAgICBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBjcmVhdGVSZW1vdGVWaWRl
b0ZyYW1lKFJlZjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4mJik7CisKICAgICB2b2lkIHN0b3BMaXN0
ZW5pbmdGb3JJUEMoUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiYmIHJlZkZyb21Db25u
ZWN0aW9uKTsKKwogcHJpdmF0ZToKICAgICBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcChHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAKQEAgLTUzLDEwICs1NywxMiBAQCBwcml2YXRlOgog
CiAgICAgLy8gTWVzc2FnZXMuCiAgICAgdm9pZCByZWxlYXNlVmlkZW9GcmFtZShSZW1vdGVWaWRl
b0ZyYW1lV3JpdGVSZWZlcmVuY2UmJik7CisgICAgdm9pZCBnZXRWaWRlb0ZyYW1lQnVmZmVyKFJl
bW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlJiYpOwogCiAgICAgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyogbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdURl9HVUFSREVEX0JZX0xPQ0so
bV9jb25zdW1lVGhyZWFkKTsKICAgICBjb25zdCBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5l
Y3Rpb247CiAgICAgVGhyZWFkQXNzZXJ0aW9uIG1fY29uc3VtZVRocmVhZCBOT19VTklRVUVfQURE
UkVTUzsKKyAgICBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyIG1fc2hhcmVkVmlkZW9GcmFtZVdyaXRl
cjsKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluCmluZGV4
IGEyNzhjZTNkMDM5ZC4uMWQzZDI0M2UxNTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwLm1lc3NhZ2VzLmluCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBtZXNzYWdlcyAtPiBSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcCBOb3RSZWZDb3VudGVkIHsKKyAgICBHZXRWaWRlb0ZyYW1lQnVmZmVyKFdlYktp
dDo6UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UgaWRlbnRpZmllcikKICAgICBSZWxlYXNl
VmlkZW9GcmFtZShXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSBpZGVudGlm
aWVyKQogfQotI2VuZGlmClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1By
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1By
b3h5LmgKaW5kZXggYzc3MmNiNzc2MGYyLi5iNzU4NTBiOTMyOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUlRD
RGVjb2RlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENFbmNvZGVySWRlbnRpZmllci5oIgor
I2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVk
TWVtb3J5LmgiCiAjaW5jbHVkZSAiU2hhcmVkVmlkZW9GcmFtZS5oIgogI2luY2x1ZGUgPHd0Zi9M
b2NrLmg+CkBAIC01Myw2ICs1NCw3IEBAIHVzaW5nIExvY2FsRW5jb2RlciA9IHZvaWQqOwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFz
cyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDsKIGNsYXNzIFNoYXJlZFZpZGVvRnJhbWVSZWFk
ZXI7CiAKIGNsYXNzIExpYldlYlJUQ0NvZGVjc1Byb3h5IDogcHVibGljIElQQzo6Q29ubmVjdGlv
bjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVyUmVmQ291bnRlZCB7CkBAIC03Myw5ICs3NSw5IEBAIHBy
aXZhdGU6CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9p
ZCBjcmVhdGVIMjY0RGVjb2RlcihSVENEZWNvZGVySWRlbnRpZmllcik7Ci0gICAgdm9pZCBjcmVh
dGVIMjY1RGVjb2RlcihSVENEZWNvZGVySWRlbnRpZmllcik7Ci0gICAgdm9pZCBjcmVhdGVWUDlE
ZWNvZGVyKFJUQ0RlY29kZXJJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNyZWF0ZUgyNjREZWNvZGVy
KFJUQ0RlY29kZXJJZGVudGlmaWVyLCBib29sIHVzZVJlbW90ZUZyYW1lcyk7CisgICAgdm9pZCBj
cmVhdGVIMjY1RGVjb2RlcihSVENEZWNvZGVySWRlbnRpZmllciwgYm9vbCB1c2VSZW1vdGVGcmFt
ZXMpOworICAgIHZvaWQgY3JlYXRlVlA5RGVjb2RlcihSVENEZWNvZGVySWRlbnRpZmllciwgYm9v
bCB1c2VSZW1vdGVGcmFtZXMpOwogICAgIHZvaWQgcmVsZWFzZURlY29kZXIoUlRDRGVjb2Rlcklk
ZW50aWZpZXIpOwogICAgIHZvaWQgZGVjb2RlRnJhbWUoUlRDRGVjb2RlcklkZW50aWZpZXIsIHVp
bnQzMl90IHRpbWVTdGFtcCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCBz
ZXRGcmFtZVNpemUoUlRDRGVjb2RlcklkZW50aWZpZXIsIHVpbnQxNl90IHdpZHRoLCB1aW50MTZf
dCBoZWlnaHQpOwpAQCAtODMsNyArODUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlRW5j
b2RlcihSVENFbmNvZGVySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPHN0
ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiwgYm9vbCB1c2VMb3dMYXRlbmN5KTsKICAgICB2b2lk
IHJlbGVhc2VFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyKTsKICAgICB2b2lkIGluaXRpYWxp
emVFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyLCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3Qg
aGVpZ2h0LCB1bnNpZ25lZCBzdGFydEJpdHJhdGUsIHVuc2lnbmVkIG1heEJpdHJhdGUsIHVuc2ln
bmVkIG1pbkJpdHJhdGUsIHVpbnQzMl90IG1heEZyYW1lcmF0ZSk7Ci0gICAgdm9pZCBlbmNvZGVG
cmFtZShSVENFbmNvZGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiwg
dWludDMyX3QgdGltZVN0YW1wLCBib29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUpOworICAgIHZv
aWQgZW5jb2RlRnJhbWUoUlRDRW5jb2RlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVZpZGVv
U2FtcGxlJiYsIHVpbnQzMl90IHRpbWVTdGFtcCwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1l
LCBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlPik7CiAgICAgdm9p
ZCBzZXRFbmNvZGVSYXRlcyhSVENFbmNvZGVySWRlbnRpZmllciwgdWludDMyX3QgYml0UmF0ZSwg
dWludDMyX3QgZnJhbWVSYXRlKTsKICAgICB2b2lkIHNldFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhv
cmUoUlRDRW5jb2RlcklkZW50aWZpZXIsIElQQzo6U2VtYXBob3JlJiYpOwogICAgIHZvaWQgc2V0
U2hhcmVkVmlkZW9GcmFtZU1lbW9yeShSVENFbmNvZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUmKTsKQEAgLTEwMSw2ICsxMDMsNyBAQCBwcml2YXRlOgogICAgIEhh
c2hNYXA8UlRDRGVjb2RlcklkZW50aWZpZXIsIHdlYnJ0Yzo6TG9jYWxEZWNvZGVyPiBtX2RlY29k
ZXJzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsgLy8gT25seSBtb2RpZmllZCBvbiB0aGUg
bGliV2ViUlRDQ29kZWNzUXVldWUgYnV0IG1heSBnZXQgYWNjZXNzZWQgZnJvbSB0aGUgbWFpbiB0
aHJlYWQuCiAgICAgSGFzaE1hcDxSVENFbmNvZGVySWRlbnRpZmllciwgRW5jb2Rlcj4gbV9lbmNv
ZGVycyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7IC8vIE9ubHkgbW9kaWZpZWQgb24gdGhl
IGxpYldlYlJUQ0NvZGVjc1F1ZXVlIGJ1dCBtYXkgZ2V0IGFjY2Vzc2VkIGZyb20gdGhlIG1haW4g
dGhyZWFkLgogICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CisgICAgUmVmPFJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwPiBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRD
Q29kZWNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNmJiMjA4NjM4ZGMyLi5kZmFmNGEyNmJkMWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQsOSArMjQsOSBAQAogI2lm
IFVTRShMSUJXRUJSVEMpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAKIG1lc3NhZ2VzIC0+IExpYldlYlJUQ0NvZGVjc1Byb3h5IE5vdFJlZkNvdW50ZWQgewotICAg
IENyZWF0ZUgyNjREZWNvZGVyKFdlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXIgaWQpCi0gICAg
Q3JlYXRlSDI2NURlY29kZXIoV2ViS2l0OjpSVENEZWNvZGVySWRlbnRpZmllciBpZCkKLSAgICBD
cmVhdGVWUDlEZWNvZGVyKFdlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXIgaWQpCisgICAgQ3Jl
YXRlSDI2NERlY29kZXIoV2ViS2l0OjpSVENEZWNvZGVySWRlbnRpZmllciBpZCwgYm9vbCB1c2VS
ZW1vdGVGcmFtZXMpCisgICAgQ3JlYXRlSDI2NURlY29kZXIoV2ViS2l0OjpSVENEZWNvZGVySWRl
bnRpZmllciBpZCwgYm9vbCB1c2VSZW1vdGVGcmFtZXMpCisgICAgQ3JlYXRlVlA5RGVjb2RlcihX
ZWJLaXQ6OlJUQ0RlY29kZXJJZGVudGlmaWVyIGlkLCBib29sIHVzZVJlbW90ZUZyYW1lcykKICAg
ICBSZWxlYXNlRGVjb2RlcihXZWJLaXQ6OlJUQ0RlY29kZXJJZGVudGlmaWVyIGlkKQogICAgIERl
Y29kZUZyYW1lKFdlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXIgaWQsIHVpbnQzMl90IHRpbWVT
dGFtcCwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAgICAgU2V0RnJhbWVTaXplKFdlYktpdDo6
UlRDRGVjb2RlcklkZW50aWZpZXIgaWQsIHVpbnQxNl90IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQp
CkBAIC0zNCw3ICszNCw3IEBAIG1lc3NhZ2VzIC0+IExpYldlYlJUQ0NvZGVjc1Byb3h5IE5vdFJl
ZkNvdW50ZWQgewogICAgIENyZWF0ZUVuY29kZXIoV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmll
ciBpZCwgU3RyaW5nIGZvcm1hdE5hbWUsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+
PiBwYXJhbWV0ZXJzLCBib29sIHVzZUxvd0xhdGVuY3kpOwogICAgIFJlbGVhc2VFbmNvZGVyKFdl
YktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQpCiAgICAgSW5pdGlhbGl6ZUVuY29kZXIoV2Vi
S2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhl
aWdodCwgdW5zaWduZWQgc3RhcnRCaXRyYXRlLCB1bnNpZ25lZCBtYXhCaXRyYXRlLCB1bnNpZ25l
ZCBtaW5CaXRyYXRlLCB1aW50MzJfdCBtYXhGcmFtZXJhdGUpCi0gICAgRW5jb2RlRnJhbWUoV2Vi
S2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUg
c2FtcGxlLCB1aW50MzJfdCB0aW1lU3RhbXAsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSkK
KyAgICBFbmNvZGVGcmFtZShXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyIGlkLCBXZWJDb3Jl
OjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUsIHVpbnQzMl90IHRpbWVTdGFtcCwgYm9vbCBzaG91
bGRFbmNvZGVBc0tleUZyYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6UmVtb3RlVmlkZW9GcmFt
ZVJlYWRSZWZlcmVuY2U+IHNhbXBsZVJlZmVyZW5jZSkKICAgICBTZXRFbmNvZGVSYXRlcyhXZWJL
aXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyIGlkLCB1aW50MzJfdCBiaXRSYXRlLCB1aW50MzJfdCBm
cmFtZVJhdGUpCiAgICAgU2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFwaG9yZShXZWJLaXQ6OlJUQ0Vu
Y29kZXJJZGVudGlmaWVyIGlkLCBJUEM6OlNlbWFwaG9yZSBzZW1hcGhvcmUpCiAgICAgU2V0U2hh
cmVkVmlkZW9GcmFtZU1lbW9yeShXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyIGlkLCBXZWJL
aXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHN0b3JhZ2VIYW5kbGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQpp
bmRleCAyMmUyMDZhYjlhOTMuLmVkYzZkNjY2NjdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCkBAIC0zMiwy
MSArMzIsMjcgQEAKICNpbXBvcnQgIkdQVVByb2Nlc3MuaCIKICNpbXBvcnQgIkxpYldlYlJUQ0Nv
ZGVjc01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMaWJXZWJSVENDb2RlY3NQcm94eU1lc3NhZ2VzLmgi
CisjaW1wb3J0ICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgorI2ltcG9ydCAiUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXAuaCIKICNpbXBvcnQgIlNoYXJlZFZpZGVvRnJhbWUuaCIKICNp
bXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9DVlV0aWxp
dGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9MaWJXZWJSVENQcm92aWRlci5oPgorI2ltcG9ydCA8
V2ViQ29yZS9NZWRpYVNhbXBsZUFWRk9iakMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVtb3RlVmlk
ZW9TYW1wbGUuaD4KICNpbXBvcnQgPHdlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXIuaD4K
ICNpbXBvcnQgPHdlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdEVuY29kZXIuaD4KICNpbXBvcnQgPHd0
Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL01lZGlhVGltZS5oPgogCisjaW1wb3J0IDxwYWwv
Y2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIExpYldlYlJU
Q0NvZGVjc1Byb3h5OjpMaWJXZWJSVENDb2RlY3NQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBjb25uZWN0aW9uKQogICAgIDogbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbm5l
Y3Rpb24pCiAgICAgLCBtX3F1ZXVlKGNvbm5lY3Rpb24uZ3B1UHJvY2VzcygpLmxpYldlYlJUQ0Nv
ZGVjc1F1ZXVlKCkpCisgICAgLCBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwKGNvbm5lY3Rpb24udmlk
ZW9GcmFtZU9iamVjdEhlYXAoKSkKIHsKICAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y29ubmVjdGlvbigpLmFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6TGliV2ViUlRD
Q29kZWNzUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgdGhpcyk7CiB9CkBAIC03NSwzOSAr
ODEsNTIgQEAgdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y2xvc2UoKQogICAgIH0pOwogfQog
Ci1zdGF0aWMgRnVuY3Rpb248dm9pZChDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCB1aW50
MzJfdCB0aW1lU3RhbXBOcywgdWludDMyX3QgdGltZVN0YW1wKT4gY3JlYXRlRGVjb2RlckNhbGxi
YWNrKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCitzdGF0aWMgRnVuY3Rpb248dm9pZChD
VlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCB1aW50MzJfdCB0aW1lU3RhbXBOcywgdWludDMy
X3QgdGltZVN0YW1wKT4gY3JlYXRlRGVjb2RlckNhbGxiYWNrKFJUQ0RlY29kZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MsIGJvb2wgdXNlUmVtb3RlRnJhbWVzKQogewotICAgIHJldHVybiBbY29ubmVjdGlv
biA9IFJlZiB7IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpIH0sIHJlc291
cmNlT3duZXIgPSBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLndlYlByb2Nlc3NJZGVudGl0eSgp
LCBpZGVudGlmaWVyXSAoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgdWludDMyX3QgdGlt
ZVN0YW1wTnMsIHVpbnQzMl90IHRpbWVTdGFtcCkgewotICAgICAgICBpZiAoYXV0byBzYW1wbGUg
PSBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHBpeGVsQnVmZmVyLCBNZWRpYVRp
bWUodGltZVN0YW1wTnMsIDEpKSkgewotICAgICAgICAgICAgaWYgKHJlc291cmNlT3duZXIpCi0g
ICAgICAgICAgICAgICAgc2FtcGxlLT5zZXRPd25lcnNoaXBJZGVudGl0eShyZXNvdXJjZU93bmVy
KTsKLSAgICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVj
czo6Q29tcGxldGVkRGVjb2RpbmcgeyBpZGVudGlmaWVyLCB0aW1lU3RhbXAsICpzYW1wbGUgfSwg
MCk7CisgICAgcmV0dXJuIFtjb25uZWN0aW9uID0gUmVmIHsgZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jb25uZWN0aW9uKCkgfSwgcmVzb3VyY2VPd25lciA9IGdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3Mud2ViUHJvY2Vzc0lkZW50aXR5KCksIHZpZGVvRnJhbWVPYmplY3RIZWFwID0gUmVmIHsg
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy52aWRlb0ZyYW1lT2JqZWN0SGVhcCgpIH0sIGlkZW50
aWZpZXIsIHVzZVJlbW90ZUZyYW1lc10gKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIHVp
bnQzMl90IHRpbWVTdGFtcE5zLCB1aW50MzJfdCB0aW1lU3RhbXApICBtdXRhYmxlIHsKKyAgICAg
ICAgYXV0byBzYW1wbGUgPSBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdl
U2FtcGxlKHBpeGVsQnVmZmVyLCBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6
Tm9uZSwgZmFsc2UsIE1lZGlhVGltZSh0aW1lU3RhbXBOcywgMSksIHsgfSk7CisgICAgICAgIGlm
ICghc2FtcGxlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gcmVtb3RlU2Ft
cGxlID0gV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZSgqc2FtcGxlKTsKKyAgICAg
ICAgaWYgKCFyZW1vdGVTYW1wbGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYg
KHJlc291cmNlT3duZXIpCisgICAgICAgICAgICByZW1vdGVTYW1wbGUtPnNldE93bmVyc2hpcElk
ZW50aXR5KHJlc291cmNlT3duZXIpOworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlk
ZW9GcmFtZUlkZW50aWZpZXI+IHJlbW90ZUlkZW50aWZpZXI7CisgICAgICAgIGlmICh1c2VSZW1v
dGVGcmFtZXMpIHsKKyAgICAgICAgICAgIHJlbW90ZUlkZW50aWZpZXIgPSB2aWRlb0ZyYW1lT2Jq
ZWN0SGVhcC0+Y3JlYXRlUmVtb3RlVmlkZW9GcmFtZShzYW1wbGUucmVsZWFzZU5vbk51bGwoKSk7
CisgICAgICAgICAgICByZW1vdGVTYW1wbGUtPmNsZWFySU9TdXJmYWNlKCk7CiAgICAgICAgIH0K
KworICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3M6OkNv
bXBsZXRlZERlY29kaW5nIHsgaWRlbnRpZmllciwgdGltZVN0YW1wLCAqcmVtb3RlU2FtcGxlLCBy
ZW1vdGVJZGVudGlmaWVyIH0sIDApOwogICAgIH07CiB9CiAKLXZvaWQgTGliV2ViUlRDQ29kZWNz
UHJveHk6OmNyZWF0ZUgyNjREZWNvZGVyKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
Cit2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVIMjY0RGVjb2RlcihSVENEZWNvZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIHVzZVJlbW90ZUZyYW1lcykKIHsKICAgICBBU1NF
UlQoIWlzTWFpblJ1bkxvb3AoKSk7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAg
IEFTU0VSVCghbV9kZWNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7Ci0gICAgbV9kZWNvZGVy
cy5hZGQoaWRlbnRpZmllciwgd2VicnRjOjpjcmVhdGVMb2NhbEgyNjREZWNvZGVyKG1ha2VCbG9j
a1B0cihjcmVhdGVEZWNvZGVyQ2FsbGJhY2soaWRlbnRpZmllciwgbV9ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKSkuZ2V0KCkpKTsKKyAgICBtX2RlY29kZXJzLmFkZChpZGVudGlmaWVyLCB3ZWJy
dGM6OmNyZWF0ZUxvY2FsSDI2NERlY29kZXIobWFrZUJsb2NrUHRyKGNyZWF0ZURlY29kZXJDYWxs
YmFjayhpZGVudGlmaWVyLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIHVzZVJlbW90ZUZy
YW1lcykpLmdldCgpKSk7CiB9CiAKLXZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZUgy
NjVEZWNvZGVyKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIExpYldlYlJU
Q0NvZGVjc1Byb3h5OjpjcmVhdGVIMjY1RGVjb2RlcihSVENEZWNvZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBib29sIHVzZVJlbW90ZUZyYW1lcykKIHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxv
b3AoKSk7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIEFTU0VSVCghbV9kZWNv
ZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7Ci0gICAgbV9kZWNvZGVycy5hZGQoaWRlbnRpZmll
ciwgd2VicnRjOjpjcmVhdGVMb2NhbEgyNjVEZWNvZGVyKG1ha2VCbG9ja1B0cihjcmVhdGVEZWNv
ZGVyQ2FsbGJhY2soaWRlbnRpZmllciwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkuZ2V0
KCkpKTsKKyAgICBtX2RlY29kZXJzLmFkZChpZGVudGlmaWVyLCB3ZWJydGM6OmNyZWF0ZUxvY2Fs
SDI2NURlY29kZXIobWFrZUJsb2NrUHRyKGNyZWF0ZURlY29kZXJDYWxsYmFjayhpZGVudGlmaWVy
LCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIHVzZVJlbW90ZUZyYW1lcykpLmdldCgpKSk7
CiB9CiAKLXZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZVZQOURlY29kZXIoUlRDRGVj
b2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNy
ZWF0ZVZQOURlY29kZXIoUlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCB1c2VS
ZW1vdGVGcmFtZXMpCiB7CiAgICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwogICAgIExvY2tl
ciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBBU1NFUlQoIW1fZGVjb2RlcnMuY29udGFpbnMoaWRl
bnRpZmllcikpOwotICAgIG1fZGVjb2RlcnMuYWRkKGlkZW50aWZpZXIsIHdlYnJ0Yzo6Y3JlYXRl
TG9jYWxWUDlEZWNvZGVyKG1ha2VCbG9ja1B0cihjcmVhdGVEZWNvZGVyQ2FsbGJhY2soaWRlbnRp
ZmllciwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkuZ2V0KCkpKTsKKyAgICBtX2RlY29k
ZXJzLmFkZChpZGVudGlmaWVyLCB3ZWJydGM6OmNyZWF0ZUxvY2FsVlA5RGVjb2RlcihtYWtlQmxv
Y2tQdHIoY3JlYXRlRGVjb2RlckNhbGxiYWNrKGlkZW50aWZpZXIsIG1fZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcywgdXNlUmVtb3RlRnJhbWVzKSkuZ2V0KCkpKTsKIH0KIAogdm9pZCBMaWJXZWJS
VENDb2RlY3NQcm94eTo6cmVsZWFzZURlY29kZXIoUlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRp
ZmllcikKQEAgLTIxMSwxNSArMjMwLDI1IEBAIHN0YXRpYyBpbmxpbmUgd2VicnRjOjpWaWRlb1Jv
dGF0aW9uIHRvV2ViUlRDVmlkZW9Sb3RhdGlvbihXZWJDb3JlOjpNZWRpYVNhbXBsZTo6CiAKIC8v
IEZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB0aGlzIGZ1bmN0aW9uIGFjY2Vzc2VzIG1fZW5jb2Rl
cnMgd2l0aG91dCBsb2NraW5nLiBUaGlzIGlzIHNhZmUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIHJ1
bnMgb24gdGhlIGxpYldlYlJUQ0NvZGVjc1F1ZXVlCiAvLyBhbmQgbV9lbmNvZGVycyBvbmx5IGdl
dCBtb2RpZmllZCBvbiB0aGlzIHF1ZXVlLgotdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6ZW5j
b2RlRnJhbWUoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3Rl
VmlkZW9TYW1wbGUmJiBzYW1wbGUsIHVpbnQzMl90IHRpbWVTdGFtcCwgYm9vbCBzaG91bGRFbmNv
ZGVBc0tleUZyYW1lKQordm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6ZW5jb2RlRnJhbWUoUlRD
RW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUm
JiBzYW1wbGUsIHVpbnQzMl90IHRpbWVTdGFtcCwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1l
LCBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlPiBzYW1wbGVSZWZl
cmVuY2UpCiB7CisgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHBpeGVsQnVmZmVyOwor
ICAgIGlmIChzYW1wbGVSZWZlcmVuY2UpIHsKKyAgICAgICAgYXV0byBzYW1wbGUgPSBtX3ZpZGVv
RnJhbWVPYmplY3RIZWFwLT5yZXRpcmUoV1RGTW92ZSgqc2FtcGxlUmVmZXJlbmNlKSwgMF9zKTsK
KyAgICAgICAgaWYgKCFzYW1wbGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0
byBwbGF0Zm9ybVNhbXBsZSA9IHNhbXBsZS0+cGxhdGZvcm1TYW1wbGUoKTsKKyAgICAgICAgQVNT
RVJUKHBsYXRmb3JtU2FtcGxlLnR5cGUgPT0gV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OkNNU2Ft
cGxlQnVmZmVyVHlwZSk7CisgICAgICAgIHBpeGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhl
bEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKHBsYXRmb3JtU2Ft
cGxlLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcikpOworICAgIH0KKwogICAgIEFTU0VSVChmaW5kRW5j
b2RlcldpdGhvdXRMb2NrKGlkZW50aWZpZXIpKTsKICAgICBhdXRvKiBlbmNvZGVyID0gZmluZEVu
Y29kZXJXaXRob3V0TG9jayhpZGVudGlmaWVyKTsKICAgICBpZiAoIWVuY29kZXIpCiAgICAgICAg
IHJldHVybjsKIAogI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkKLSAgICBSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXI7CiAgICAgaWYgKHNhbXBsZS5zdXJmYWNlKCkpIHsK
ICAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRlQ1ZQaXhlbEJ1ZmZlcihz
YW1wbGUuc3VyZmFjZSgpKSkKICAgICAgICAgICAgIHBpeGVsQnVmZmVyID0gV1RGTW92ZSgqYnVm
ZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDUxZThhMzdkN2FjMi4uYWM5ODVkZWZhYmM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXAuaCIKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFn
ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmg+CkBAIC00Miw2ICs0Myw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CitzdGF0aWMgY29uc3RleHByIFNl
Y29uZHMgbWVkaWFSZWNvcmRlckRlZmF1bHRUaW1lb3V0IHsgMV9zIH07CiAKIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVNZWRpYVJlY29yZGVyPiBSZW1vdGVNZWRpYVJlY29yZGVyOjpjcmVhdGUoR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgTWVkaWFS
ZWNvcmRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCByZWNvcmRBdWRpbywgYm9vbCByZWNv
cmRWaWRlbywgY29uc3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJiBvcHRpb25zKQogewpA
QCAtNTUsNiArNTcsNyBAQCBSZW1vdGVNZWRpYVJlY29yZGVyOjpSZW1vdGVNZWRpYVJlY29yZGVy
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3RpbwogICAgIDogbV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCiAgICAgLCBtX2lk
ZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1fd3JpdGVyKFdURk1vdmUod3JpdGVyKSkKKyAg
ICAsIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy52aWRl
b0ZyYW1lT2JqZWN0SGVhcCgpKQogewogICAgIGlmIChyZWNvcmRBdWRpbykKICAgICAgICAgbV9y
aW5nQnVmZmVyID0gbWFrZVVuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7CkBAIC04NiwxMCArODksMTYg
QEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFU
aW1lIHRpbWUsIHVpbnQ2NF90IG51bWJlck8KICAgICBtX3dyaXRlci0+YXBwZW5kQXVkaW9TYW1w
bGVCdWZmZXIoKm1fYXVkaW9CdWZmZXJMaXN0LCBtX2Rlc2NyaXB0aW9uLCB0aW1lLCBudW1iZXJP
ZkZyYW1lcyk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6dmlkZW9TYW1wbGVBdmFp
bGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vdGVTYW1wbGUpCit2b2lkIFJl
bW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZp
ZGVvU2FtcGxlJiYgcmVtb3RlU2FtcGxlLCBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVS
ZWFkUmVmZXJlbmNlPiBzYW1wbGVSZWZlcmVuY2UpCiB7CiAgICAgUmVmUHRyPE1lZGlhU2FtcGxl
PiBzYW1wbGU7Ci0gICAgaWYgKCFyZW1vdGVTYW1wbGUuc3VyZmFjZSgpKSB7CisgICAgaWYgKHNh
bXBsZVJlZmVyZW5jZSkgeworICAgICAgICBzYW1wbGUgPSBtX3ZpZGVvRnJhbWVPYmplY3RIZWFw
LT5yZXRpcmUoV1RGTW92ZSgqc2FtcGxlUmVmZXJlbmNlKSwgbWVkaWFSZWNvcmRlckRlZmF1bHRU
aW1lb3V0KTsKKyAgICAgICAgaWYgKCFzYW1wbGUpIHsKKyAgICAgICAgICAgIC8vIEluIGNhc2Ug
b2YgR1BVUHJvY2VzcyBjcmFzaCwgd2UgbWlnaHQgZW5xdWV1ZSBwcmV2aW91cyBHUFVQcm9jZXNz
IHNhbXBsZXMsIGlnbm9yZSB0aGVtLgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgfSBlbHNlIGlmICghcmVtb3RlU2FtcGxlLnN1cmZhY2UoKSkgewogICAgICAgICBhdXRvIHBp
eGVsQnVmZmVyID0gbV9zaGFyZWRWaWRlb0ZyYW1lUmVhZGVyLnJlYWQoKTsKICAgICAgICAgaWYg
KCFwaXhlbEJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKaW5kZXggYzY2Mjlk
YmM2Y2FiLi42MGI4ZDAyMTRlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9G
cmFtZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlICJT
aGFyZWRWaWRlb0ZyYW1lLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24uaD4KQEAgLTUyLDYgKzUzLDcgQEAgc3RydWN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0
aW9uczsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOworY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CiBjbGFzcyBTaGFyZWRSaW5n
QnVmZmVyU3RvcmFnZTsKIAogY2xhc3MgUmVtb3RlTWVkaWFSZWNvcmRlciA6IHByaXZhdGUgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgewpAQCAtNzIsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBhdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChj
b25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiYsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKICAgICB2b2lkIGF1ZGlv
U2FtcGxlc0F2YWlsYWJsZShNZWRpYVRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKLSAg
ICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYp
OworICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1w
bGUmJiwgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZT4pOwogICAg
IHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNl
JiYsIGRvdWJsZSk+JiYpOwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKQEAgLTkwLDYgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SW1hZ2VUcmFuc2ZlclNlc3Npb25WVD4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbjsKIAogICAg
IFNoYXJlZFZpZGVvRnJhbWVSZWFkZXIgbV9zaGFyZWRWaWRlb0ZyYW1lUmVhZGVyOworICAgIFJl
ZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gbV92aWRlb0ZyYW1lT2JqZWN0SGVhcDsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbgppbmRleCBhY2FlZjhiOGM0MGQuLjQ5
OGYyODFhZjgwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbgpAQCAtMjYsNyArMjYs
NyBAQAogbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFSZWNvcmRlciBOb3RSZWZDb3VudGVkIHsKICAg
ICBBdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlIHN0b3JhZ2VIYW5kbGUsIFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBkZXNj
cmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCiAgICAgQXVkaW9TYW1wbGVzQXZhaWxh
YmxlKE1lZGlhVGltZSB0aW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKLSAgICBWaWRlb1Nh
bXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUpCisgICAgVmlk
ZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxlLCBzdGQ6
Om9wdGlvbmFsPFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2U+IHJlbW90ZVZp
ZGVvRnJhbWVSZWFkUmVmZXJlbmNlKQogICAgIEZldGNoRGF0YSgpIC0+IChJUEM6OkRhdGFSZWZl
cmVuY2UgYnVmZmVyLCBkb3VibGUgdGltZUNvZGUpIEFzeW5jCiAgICAgU3RvcFJlY29yZGluZygp
IC0+ICgpIEFzeW5jCiAgICAgUGF1c2UoKSAtPiAoKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuY3BwCmluZGV4IGJmNDYxY2RmZjhhZC4uZTZmYzY3N2M3MGNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZW1vdGVWaWRlb1NhbXBsZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXN0
YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0VGltZW91dCB7IDMwX3MgfTsKK3N0YXRpYyBj
b25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0VGltZW91dCB7IDFfcyB9OwogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIApAQCAtMTIzLDEzICsxMjMsMTMgQEAgdm9pZCBSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVu
Y2UKIHsKICAgICBhdXRvIG1lZGlhU2FtcGxlID0gbV92aWRlb0ZyYW1lT2JqZWN0SGVhcC0+cmV0
aXJlKFdURk1vdmUoc2FtcGxlKSwgZGVmYXVsdFRpbWVvdXQpOwogICAgIGlmICghbWVkaWFTYW1w
bGUpIHsKLSAgICAgICAgQVNTRVJUX0lTX1RFU1RJTkdfSVBDKCk7CisgICAgICAgIC8vIEluIGNh
c2Ugb2YgR1BVUHJvY2VzcyBjcmFzaCwgd2UgbWlnaHQgZW5xdWV1ZSBwcmV2aW91cyBHUFVQcm9j
ZXNzIHNhbXBsZXMsIGlnbm9yZSB0aGVtLgogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlm
ICghaXM8TWVkaWFTYW1wbGVBVkZPYmpDPihtZWRpYVNhbXBsZSkpIHsKLSAgICAgICAgQVNTRVJU
X0lTX1RFU1RJTkdfSVBDKCk7CisgICAgQVNTRVJUKGlzPE1lZGlhU2FtcGxlQVZGT2JqQz4obWVk
aWFTYW1wbGUpKTsKKyAgICBpZiAoIWlzPE1lZGlhU2FtcGxlQVZGT2JqQz4obWVkaWFTYW1wbGUp
KQogICAgICAgICByZXR1cm47Ci0gICAgfQorCiAgICAgYXV0byYgYXZmTWVkaWFTYW1wbGUgPSBk
b3duY2FzdDxNZWRpYVNhbXBsZUFWRk9iakM+KCptZWRpYVNhbXBsZSk7CiAgICAgTWVkaWFTYW1w
bGVBVkZPYmpDOjpzZXRBc0Rpc3BsYXlJbW1lZGlhdGVseShhdmZNZWRpYVNhbXBsZSk7CiAgICAg
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPmVucXVldWVTYW1wbGUoYXZmTWVkaWFTYW1wbGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVGhyZWFkU2FmZU9iamVjdEhlYXAu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RocmVhZFNhZmVPYmplY3RIZWFwLmgKaW5kZXggOGEw
OWU1YmE4YTQ4Li4zNWJjYjI1ZjU0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1RocmVhZFNhZmVPYmplY3RIZWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGhyZWFk
U2FmZU9iamVjdEhlYXAuaApAQCAtNTIsNiArNTIsOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgV3Jp
dGVSZWZlcmVuY2UgPSB0eXBlbmFtZSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcjxJ
ZGVudGlmaWVyPjo6V3JpdGVSZWZlcmVuY2U7CiAgICAgdXNpbmcgUmVmZXJlbmNlID0gdHlwZW5h
bWUgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXI8SWRlbnRpZmllcj46OlJlZmVyZW5j
ZTsKIAorICAgIHZvaWQgYWRkKElkZW50aWZpZXIsIEhlbGRUeXBlJiYpOworCiAgICAgLy8gV2Fp
dHMgdW50aWwgYSB3cml0ZSBjcmVhdGVzIHRoZSByZWZlcmVuY2UgYW5kIHRoZW4gcmV0aXJlcyB0
aGUgcmVhZCBvcgogICAgIC8vIHRpbWVzIG91dC4KICAgICBIZWxkVHlwZSByZXRpcmUoUmVhZFJl
ZmVyZW5jZSYmLCBJUEM6OlRpbWVvdXQpOwpAQCAtMTg3LDUgKzE4OSwxNCBAQCB2b2lkIFRocmVh
ZFNhZmVPYmplY3RIZWFwPElkZW50aWZpZXIsIEhlbGRUeXBlPjo6Y2xlYXIoKQogICAgIG1fb2Jq
ZWN0cy5jbGVhcigpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBJZGVudGlmaWVyLCB0eXBlbmFt
ZSBIZWxkVHlwZT4KK3ZvaWQgVGhyZWFkU2FmZU9iamVjdEhlYXA8SWRlbnRpZmllciwgSGVsZFR5
cGU+OjphZGQoSWRlbnRpZmllciBpZGVudGlmaWVyLCBIZWxkVHlwZSYmIG9iamVjdCkKK3sKKyAg
ICBSZWZlcmVuY2UgcmVmZXJlbmNlIHsgaWRlbnRpZmllciwgMCB9OworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX29iamVjdHNMb2NrIH07CisgICAgQVNTRVJUKCFtX29iamVjdHMuY29udGFpbnMocmVm
ZXJlbmNlKSk7CisgICAgbV9vYmplY3RzLmFkZChyZWZlcmVuY2UsIFJlZmVyZW5jZVN0YXRlIHsg
V1RGTW92ZShvYmplY3QpIH0pOworfQorCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGQ2YTcx
NWExMDc4YS4uMDY3NzBkMGRmYzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTc1Niw2ICs3NTYsNyBAQCBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcAogV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJl
Y29yZGVyUHJpdmF0ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJv
dmlkZXIuY3BwCitXZWJQcm9jZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXBQcm94eVByb2Nlc3Nvci5jcHAKIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyTWFuYWdlci5jcHAKIApAQCAtODg3LDYgKzg4OCw3IEBAIFJlbW90ZUV4dGVybmFsVGV4
dHVyZU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUdQVU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJl
bW90ZUdQVVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXBNZXNzYWdlUmVjZWl2ZXIuY3BwCitSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJv
Y2Vzc29yTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUGlwZWxpbmVMYXlvdXRNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiBSZW1vdGVRdWVyeVNldE1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVF1ZXVl
TWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAppbmRleCAyYWY3
ODI5MGY1MDcuLmUyMGQ3ZDBiNGEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1v
dGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXAuaCIKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgog
I2luY2x1ZGUgIlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKQEAgLTQwLDYgKzQxLDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1h
Z2VSb3RhdGlvblNlc3Npb25WVC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFDb25zdHJhaW50
cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTYW1wbGVBVkZPYmpDLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZWFsdGltZVZpZGVvU291cmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVWaWRlb1NhbXBs
ZS5oPgpAQCAtNTcsMTEgKzU5LDEyIEBAIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHk6OlNvdXJjZVByb3h5CiAgICAgLCBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVv
U2FtcGxlT2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIFNvdXJjZVByb3h5KFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBSZWY8SVBD
OjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFByb2Nlc3NJZGVudGl0eSYmIHJlc291cmNlT3du
ZXIsIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSkKKyAgICBTb3VyY2VQcm94eShS
ZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBj
b25uZWN0aW9uLCBQcm9jZXNzSWRlbnRpdHkmJiByZXNvdXJjZU93bmVyLCBSZWY8UmVhbHRpbWVN
ZWRpYVNvdXJjZT4mJiBzb3VyY2UsIFJlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4m
JiB2aWRlb0ZyYW1lT2JqZWN0SGVhcCkKICAgICAgICAgOiBtX2lkKGlkKQogICAgICAgICAsIG1f
Y29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICAgICAsIG1fcmVzb3VyY2VPd25l
cihXVEZNb3ZlKHJlc291cmNlT3duZXIpKQogICAgICAgICAsIG1fc291cmNlKFdURk1vdmUoc291
cmNlKSkKKyAgICAgICAgLCBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwKFdURk1vdmUodmlkZW9GcmFt
ZU9iamVjdEhlYXApKQogICAgIHsKICAgICAgICAgbV9zb3VyY2UtPmFkZE9ic2VydmVyKCp0aGlz
KTsKICAgICAgICAgc3dpdGNoIChtX3NvdXJjZS0+dHlwZSgpKSB7CkBAIC0xODMsMTkgKzE4Niwz
NSBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9jYXB0dXJlU2VtYXBob3JlLT5zaWduYWwoKTsK
ICAgICB9CiAKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1w
bGUsIFZpZGVvU2FtcGxlTWV0YWRhdGEgbWV0YWRhdGEpIGZpbmFsCisgICAgUmVmUHRyPE1lZGlh
U2FtcGxlPiByb3RhdGVWaWRlb0ZyYW1lSWZOZWVkZWQoTWVkaWFTYW1wbGUmIHNhbXBsZSkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gcmVtb3RlU2Ft
cGxlOwogICAgICAgICBpZiAobV9zaG91bGRBcHBseVJvdGF0aW9uICYmIHNhbXBsZS52aWRlb1Jv
dGF0aW9uKCkgIT0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUpIHsKICAgICAgICAg
ICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSByb3RhdGVQaXhlbEJ1ZmZlcihzYW1wbGUpOwotICAgICAg
ICAgICAgcmVtb3RlU2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShwaXhlbEJ1ZmZl
ci5nZXQoKSwgc2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSk7Ci0gICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgcmVtb3RlU2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShzYW1wbGUp
OwotICAgICAgICBpZiAocmVtb3RlU2FtcGxlKSB7Ci0gICAgICAgICAgICBpZiAobV9yZXNvdXJj
ZU93bmVyKQotICAgICAgICAgICAgICAgIHJlbW90ZVNhbXBsZS0+c2V0T3duZXJzaGlwSWRlbnRp
dHkobV9yZXNvdXJjZU93bmVyKTsKLSAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OlZpZGVvU2FtcGxlQXZhaWxhYmxlKG1f
aWQsIFdURk1vdmUoKnJlbW90ZVNhbXBsZSksIG1ldGFkYXRhKSwgMCk7CisgICAgICAgICAgICBy
ZXR1cm4gTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKHBpeGVs
QnVmZmVyKSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUsIHNhbXBsZS52aWRlb01p
cnJvcmVkKCksIHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksIHNhbXBsZS5kZWNvZGVUaW1lKCkp
OworICAgICAgICB9CisgICAgICAgIHJldHVybiAmc2FtcGxlOworICAgIH0KKworICAgIHZvaWQg
dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlkZW9TYW1wbGVNZXRh
ZGF0YSBtZXRhZGF0YSkgZmluYWwKKyAgICB7CisgICAgICAgIGF1dG8gdmlkZW9TYW1wbGUgPSBy
b3RhdGVWaWRlb0ZyYW1lSWZOZWVkZWQoc2FtcGxlKTsKKyAgICAgICAgaWYgKCF2aWRlb1NhbXBs
ZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIHJlbW90ZVNhbXBsZSA9IFJl
bW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoKnZpZGVvU2FtcGxlKTsKKyAgICAgICAgaWYgKCFyZW1v
dGVTYW1wbGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKG1fcmVzb3VyY2VP
d25lcikKKyAgICAgICAgICAgIHJlbW90ZVNhbXBsZS0+c2V0T3duZXJzaGlwSWRlbnRpdHkobV9y
ZXNvdXJjZU93bmVyKTsKKworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVJ
ZGVudGlmaWVyPiByZW1vdGVJZGVudGlmaWVyOworICAgICAgICBpZiAobV92aWRlb0ZyYW1lT2Jq
ZWN0SGVhcCkgeworICAgICAgICAgICAgcmVtb3RlSWRlbnRpZmllciA9IG1fdmlkZW9GcmFtZU9i
amVjdEhlYXAtPmNyZWF0ZVJlbW90ZVZpZGVvRnJhbWUoc2FtcGxlKTsKKyAgICAgICAgICAgIHJl
bW90ZVNhbXBsZS0+Y2xlYXJJT1N1cmZhY2UoKTsKICAgICAgICAgfQorCisgICAgICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OlZpZGVv
U2FtcGxlQXZhaWxhYmxlKG1faWQsIFdURk1vdmUoKnJlbW90ZVNhbXBsZSksIHJlbW90ZUlkZW50
aWZpZXIsIG1ldGFkYXRhKSwgMCk7CiAgICAgfQogCiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZm
ZXJSZWY+IHJvdGF0ZVBpeGVsQnVmZmVyKE1lZGlhU2FtcGxlJiBzYW1wbGUpCkBAIC0yNjAsNiAr
Mjc5LDcgQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9mcmFtZUNodW5rU2l6ZSB7IDAgfTsKICAg
ICBNZWRpYVRpbWUgbV9zdGFydFRpbWU7CiAgICAgYm9vbCBtX3Nob3VsZFJlc2V0IHsgZmFsc2Ug
fTsKKyAgICBSZWZQdHI8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFtZU9i
amVjdEhlYXA7CiB9OwogCiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpVc2VyTWVkaWFD
YXB0dXJlTWFuYWdlclByb3h5KFVuaXF1ZVJlZjxDb25uZWN0aW9uUHJveHk+JiYgY29ubmVjdGlv
blByb3h5KQpAQCAtMjczLDcgKzI5Myw3IEBAIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6
On5Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KCkKICAgICBtX2Nvbm5lY3Rpb25Qcm94eS0+
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogfQogCi12b2lkIFVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHk6OmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJh
aW50cyhSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgY29uc3QgQ2FwdHVyZURldmlj
ZSYgZGV2aWNlLCBTdHJpbmcmJiBoYXNoU2FsdCwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYgbWVk
aWFDb25zdHJhaW50cywgQ3JlYXRlU291cmNlQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFTb3VyY2VGb3JD
YXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVy
IGlkLCBjb25zdCBDYXB0dXJlRGV2aWNlJiBkZXZpY2UsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25z
dCBNZWRpYUNvbnN0cmFpbnRzJiBtZWRpYUNvbnN0cmFpbnRzLCBib29sIHNob3VsZFVzZUdQVVBy
b2Nlc3NSZW1vdGVGcmFtZXMsIENyZWF0ZVNvdXJjZUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb25Qcm94eS0+d2lsbFN0YXJ0Q2FwdHVyZShkZXZp
Y2UudHlwZSgpKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlLCAiUmVx
dWVzdCBpcyBub3QgYWxsb3dlZCJfcywgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIHsgfSwg
eyB9LCB7IH0sIHsgfSwgMCk7CkBAIC0zMjQsNyArMzQ0LDcgQEAgdm9pZCBVc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29u
c3RyYWkKICAgICAgICAgfQogCiAgICAgICAgIEFTU0VSVCghbV9wcm94aWVzLmNvbnRhaW5zKGlk
KSk7Ci0gICAgICAgIGF1dG8gcHJveHkgPSBtYWtlVW5pcXVlPFNvdXJjZVByb3h5PihpZCwgbV9j
b25uZWN0aW9uUHJveHktPmNvbm5lY3Rpb24oKSwgUHJvY2Vzc0lkZW50aXR5IHsgbV9jb25uZWN0
aW9uUHJveHktPnJlc291cmNlT3duZXIoKSB9LCBXVEZNb3ZlKHNvdXJjZSkpOworICAgICAgICBh
dXRvIHByb3h5ID0gbWFrZVVuaXF1ZTxTb3VyY2VQcm94eT4oaWQsIG1fY29ubmVjdGlvblByb3h5
LT5jb25uZWN0aW9uKCksIFByb2Nlc3NJZGVudGl0eSB7IG1fY29ubmVjdGlvblByb3h5LT5yZXNv
dXJjZU93bmVyKCkgfSwgV1RGTW92ZShzb3VyY2UpLCBzaG91bGRVc2VHUFVQcm9jZXNzUmVtb3Rl
RnJhbWVzID8gbV9jb25uZWN0aW9uUHJveHktPnJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKCkg
OiBudWxscHRyKTsKICAgICAgICAgbV9wcm94aWVzLmFkZChpZCwgV1RGTW92ZShwcm94eSkpOwog
ICAgIH0gZWxzZQogICAgICAgICBpbnZhbGlkQ29uc3RyYWludHMgPSBXVEZNb3ZlKHNvdXJjZU9y
RXJyb3IuZXJyb3JNZXNzYWdlKTsKQEAgLTM5MCw3ICs0MTAsNyBAQCB2b2lkIFVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHk6OmNsb25lKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGNs
b25lZElELAogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm94aWVzLmNvbnRhaW5zKGNsb25lZElEKSk7
CiAgICAgTUVTU0FHRV9DSEVDSyghbV9wcm94aWVzLmNvbnRhaW5zKG5ld1NvdXJjZUlEKSk7CiAg
ICAgaWYgKGF1dG8qIHByb3h5ID0gbV9wcm94aWVzLmdldChjbG9uZWRJRCkpCi0gICAgICAgIG1f
cHJveGllcy5hZGQobmV3U291cmNlSUQsIG1ha2VVbmlxdWU8U291cmNlUHJveHk+KG5ld1NvdXJj
ZUlELCBtX2Nvbm5lY3Rpb25Qcm94eS0+Y29ubmVjdGlvbigpLCBQcm9jZXNzSWRlbnRpdHkgeyBt
X2Nvbm5lY3Rpb25Qcm94eS0+cmVzb3VyY2VPd25lcigpIH0sIHByb3h5LT5zb3VyY2UoKS5jbG9u
ZSgpKSk7CisgICAgICAgIG1fcHJveGllcy5hZGQobmV3U291cmNlSUQsIG1ha2VVbmlxdWU8U291
cmNlUHJveHk+KG5ld1NvdXJjZUlELCBtX2Nvbm5lY3Rpb25Qcm94eS0+Y29ubmVjdGlvbigpLCBQ
cm9jZXNzSWRlbnRpdHkgeyBtX2Nvbm5lY3Rpb25Qcm94eS0+cmVzb3VyY2VPd25lcigpIH0sIHBy
b3h5LT5zb3VyY2UoKS5jbG9uZSgpLCBtX2Nvbm5lY3Rpb25Qcm94eS0+cmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXAoKSkpOwogfQogCiB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6
OnJlcXVlc3RUb0VuZChSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBzb3VyY2VJRCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHkuaAppbmRleCBmYTgyOWM3YzQ5MDMuLjY1OGI1YjdkMTg4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHkuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ29u
bmVjdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NhcHR1cmVEZXZpY2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL09yaWVudGF0aW9uTm90aWZpZXIuaD4KQEAgLTY1LDYgKzY2LDcgQEAgcHVibGljOgogICAg
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VENDSWRlbnRpdHkoKSB7IH0KICNlbmRpZgogICAgICAgICB2
aXJ0dWFsIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUpIHsgfQorICAgICAgICB2aXJ0dWFsIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
KiByZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB9
OwogICAgIGV4cGxpY2l0IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkoVW5pcXVlUmVmPENv
bm5lY3Rpb25Qcm94eT4mJik7CiAgICAgflVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkoKTsK
QEAgLTgyLDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiAgICAgdXNpbmcgQ3JlYXRl
U291cmNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc3VjY2VlZGVkLCBT
dHJpbmcgaW52YWxpZENvbnN0cmFpbnRzLCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3MmJiwgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYmLCBWZWN0
b3I8V2ViQ29yZTo6VmlkZW9QcmVzZXREYXRhPiYmLCBXZWJDb3JlOjpJbnRTaXplLCBkb3VibGUp
PjsKLSAgICB2b2lkIGNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJh
aW50cyhXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6Q2FwdHVyZURldmljZSYgZGV2aWNlSUQsIFN0cmluZyYmLCBjb25zdCBXZWJDb3JlOjpNZWRp
YUNvbnN0cmFpbnRzJiwgQ3JlYXRlU291cmNlQ2FsbGJhY2smJik7CisgICAgdm9pZCBjcmVhdGVN
ZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2UmIGRl
dmljZUlELCBTdHJpbmcmJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cyYsIGJvb2wg
c2hvdWxkVXNlR1BVUHJvY2Vzc1JlbW90ZUZyYW1lcywgQ3JlYXRlU291cmNlQ2FsbGJhY2smJik7
CiAgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZUlkZW50aWZpZXIpOwogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZW5kKFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2VJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Lm1l
c3NhZ2VzLmluCmluZGV4IDU5MTM5ODY3OGIxMS4uN2JjYTQ1M2U3Mzc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogCiBtZXNzYWdlcyAtPiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIENyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURl
dmljZVdpdGhDb25zdHJhaW50cyhXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmll
ciBpZCwgV2ViQ29yZTo6Q2FwdHVyZURldmljZSBkZXZpY2UsIFN0cmluZyBoYXNoU2FsdCwgc3Ry
dWN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHMgY29uc3RyYWludHMpIC0+IChib29sIHN1Y2Nl
c3MsIFN0cmluZyBpbnZhbGlkQ29uc3RyYWludHMsIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5ncyBzZXR0aW5ncywgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxp
dGllcyBjYXBhYmlsaXRpZXMsIFZlY3RvcjxXZWJDb3JlOjpWaWRlb1ByZXNldERhdGE+IHByZXNl
dHMsIFdlYkNvcmU6OkludFNpemUgc2l6ZSwgZG91YmxlIGZyYW1lUmF0ZSkgQXN5bmMKKyAgICBD
cmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMoV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIFdlYkNvcmU6OkNhcHR1cmVEZXZpY2Ug
ZGV2aWNlLCBTdHJpbmcgaGFzaFNhbHQsIHN0cnVjdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRz
IGNvbnN0cmFpbnRzLCBib29sIHNob3VsZFVzZUdQVVByb2Nlc3NSZW1vdGVGcmFtZXMpIC0+IChi
b29sIHN1Y2Nlc3MsIFN0cmluZyBpbnZhbGlkQ29uc3RyYWludHMsIFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5ncyBzZXR0aW5ncywgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXMsIFZlY3RvcjxXZWJDb3JlOjpWaWRlb1ByZXNldERh
dGE+IHByZXNldHMsIFdlYkNvcmU6OkludFNpemUgc2l6ZSwgZG91YmxlIGZyYW1lUmF0ZSkgQXN5
bmMKICAgICBTdGFydFByb2R1Y2luZ0RhdGEoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlk
ZW50aWZpZXIgaWQpCiAgICAgU3RvcFByb2R1Y2luZ0RhdGEoV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZUlkZW50aWZpZXIgaWQpCiAgICAgRW5kKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VJZGVudGlmaWVyIGlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggYmYzZDgwZWY2Yjg5Li42MWQ2NWYwODQ1YzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDA3NSw2ICs0
MDc1LDEwIEBACiAJCTQxMUI4OUM3MjdCMkI3NUMwMEY5RUJEMyAvKiBXS1F1ZXJ5UGVybWlzc2lv
blJlc3VsdENhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUXVl
cnlQZXJtaXNzaW9uUmVzdWx0Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDExQjg5QzgyN0IyQjc1RDAwRjlFQkQzIC8qIFdLUXVlcnlQZXJtaXNzaW9uUmVzdWx0Q2Fs
bGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tRdWVyeVBl
cm1pc3Npb25SZXN1bHRDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxMUI4OUNCMjdCMkI4OTYwMEY5RUJEMyAvKiBRdWVyeVBlcm1pc3Npb25SZXN1bHRDYWxsYmFj
ay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWVyeVBlcm1pc3Npb25SZXN1
bHRDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTFCODlFNDI3QjVE
NTgyMDBGOUVCRDMgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvci5t
ZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29y
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTFCODlFNTI3QjVE
NTgzMDBGOUVCRDMgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMUI4OUU2MjdCNUQ1ODQwMEY5RUJE
MyAvKiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTFCODlGNTI3QjZCNEM3MDBGOUVCRDMg
LyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxMjg3RDRCMjI1QzA1QzQwMDlBM0UyNiAvKiBXZWJTb2NrZXRUYXNrQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTb2NrZXRUYXNrQ29jb2Eu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjg3RDRDMjI1QzA1QzUwMDlBM0Uy
NiAvKiBXZWJTb2NrZXRUYXNrQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViU29ja2V0VGFza0NvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
Mjg3RDREMjI1QzE2MUYwMDlBM0UyNiAvKiBXZWJTb2NrZXRUYXNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldFRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTQxNzYsNyArNDE4MCw2IEBACiAJCTQxQzNCODk0MjY0OTNCN0MwMDRFRDRERSAv
KiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIu
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXRNYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUM1Mzc4RjIxRjEzNjJEMDA4QjFGQUQgLyogX1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1dlYnNpdGVEYXRhU3RvcmVE
ZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUM4NTgxOTFGNTEwREVF
MDA2NUUwODUgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk0MUNCODQwMzI1Q0FCRjdDMDAxMEUyQjEgLyogTWVkaWFS
ZWNvcmRlclByaXZhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVJlY29yZGVyUHJp
dmF0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMTI5RDkxRjNEMTAxNDAw
RDE1RTQ3IC8qIFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNh
Y2hlU3RvcmFnZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDVD
NkQ4MjM4RUIyMEQwMEI5QjNDQiAvKiBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUQ1QzZEOTIzOEVCMjBFMDBC
OUIzQ0IgLyogU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTI4NSw5ICs5Mjg4LDEyIEBACiAJCQkJ
NDE3NkU4OTcyM0MzNjFCRDAwM0U4M0ZFIC8qIE1lZGlhUmVjb3JkZXJJZGVudGlmaWVyLmggKi8s
CiAJCQkJNDE3NkU4OTQyM0MzNEUyNjAwM0U4M0ZFIC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlLmNw
cCAqLywKIAkJCQk0MTc2RTg5NTIzQzM0RTI3MDAzRTgzRkUgLyogTWVkaWFSZWNvcmRlclByaXZh
dGUuaCAqLywKLQkJCQk0MUNCODQwMzI1Q0FCRjdDMDAxMEUyQjEgLyogTWVkaWFSZWNvcmRlclBy
aXZhdGUubW0gKi8sCiAJCQkJNDE3NkU4OTMyM0MzNEQ2RjAwM0U4M0ZFIC8qIE1lZGlhUmVjb3Jk
ZXJQcm92aWRlci5jcHAgKi8sCiAJCQkJNDE3NkU4OTIyM0MzNEQ2RTAwM0U4M0ZFIC8qIE1lZGlh
UmVjb3JkZXJQcm92aWRlci5oICovLAorCQkJCTQxMUI4OUY1MjdCNkI0QzcwMEY5RUJEMyAvKiBS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5LmggKi8sCisJCQkJNDExQjg5RTYyN0I1RDU4
NDAwRjlFQkQzIC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3IuY3Bw
ICovLAorCQkJCTQxMUI4OUU1MjdCNUQ1ODMwMEY5RUJEMyAvKiBSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcFByb3h5UHJvY2Vzc29yLmggKi8sCisJCQkJNDExQjg5RTQyN0I1RDU4MjAwRjlFQkQz
IC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3IubWVzc2FnZXMuaW4g
Ki8sCiAJCQkJNDE3MjE5OEMyM0I2MTJFODAwQUU1Njg2IC8qIFJUQ0RlY29kZXJJZGVudGlmaWVy
LmggKi8sCiAJCQkJNDE1ODY0OUEyM0JFMDkyNDAwQTBBNjFFIC8qIFJUQ0VuY29kZXJJZGVudGlm
aWVyLmggKi8sCiAJCQkJNDFGQ0Q2QjcyM0NERTUzRDAwQzYyNTY3IC8qIFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5jcHAgKi8sCkBAIC0xMzQ1Myw3ICsxMzQ1OSw2IEBACiAJCQkJRTE4RTY5MTgx
NjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTcwQUI4RjMyMEFFM0JENzAwQjhCRTg3IC8qIFNlY0tleVByb3h5U3RvcmUuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxNEQ5RjU3MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0Nv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxNjQ2NTgwMjdBOUM3NzQwMEUxRjJCQSAv
KiBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFGREU2NUExOTU0QTQyQjAwQzQ4RkZBIC8qIFNlc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUEwMDJENDkxOTZCMzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTNFNzk5Q0UyNzYwNDk3QjAwNzQwMDhBIC8qIFNlc3Npb25TdG9y
YWdlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IGI4M2MwNzBkNmM0My4u
YzcyZGE3YTM0YTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIlJl
bW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaCIKICNpbmNsdWRlICJSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXIuaCIKICNpbmNsdWRlICJSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVu
ZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHku
aCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKQEAgLTE2Myw2ICsxNjQsMTMgQEAgdm9pZCBH
UFVQcm9jZXNzQ29ubmVjdGlvbjo6cmVzZXRBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdChBdWRpb00KIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIoKS5yZXNldChpZGVudGlm
aWVyKTsKIH0KKworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSYgR1BVUHJvY2Vzc0Nv
bm5lY3Rpb246OnJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkoKQoreworICAgIGlmICgh
bV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5KQorICAgICAgICBtX3JlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwUHJveHkgPSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5Ojpj
cmVhdGUoKnRoaXMpOworICAgIHJldHVybiAqbV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFBy
b3h5OworfQogI2VuZGlmCiAKIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYgR1BVUHJvY2Vzc0Nv
bm5lY3Rpb246Om1lZGlhUGxheWVyTWFuYWdlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggM2Y5OGNiMTA5Nzc2Li44
MTNhMDU0Njk3MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTUxLDYgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyOworY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94
eTsKIGNsYXNzIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CiBjbGFzcyBXZWJQYWdl
Owogc3RydWN0IEdQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzOwpA
QCAtNzcsNiArNzgsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShN
RURJQV9TVFJFQU0pCiAgICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYgc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcigpOwogICAgIHZvaWQgcmVzZXRBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdChBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdElkZW50aWZpZXIpOworICAgIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
UHJveHkmIHJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkoKTsKICNlbmRpZgogCiAgICAg
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyJiBtZWRpYVBsYXllck1hbmFnZXIoKTsKQEAgLTE0MCw2
ICsxNDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXI+IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKKyAgICBSZWZQ
dHI8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eT4gbV9yZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcFByb3h5OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShXRUJf
QVVESU8pCiAgICAgUmVmUHRyPFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyPiBtX2F1
ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5jcHAKaW5kZXggMTJkMzJlMzU4NWYyLi4zMDQwZWQ2N2YxNzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHku
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZl
ci5oPgogCkBAIC0xMzUsNyArMTM2LDE1IEBAIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0CiAgICAg
fQogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4g
UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpjcmVhdGUobV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29u
bmVjdGlvbigpLCBXVEZNb3ZlKCpyZXN1bHQpKTsKKyAgICByZXR1cm4gUmVtb3RlVmlkZW9GcmFt
ZVByb3h5OjpjcmVhdGUobV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLCBXVEZN
b3ZlKCpyZXN1bHQpLAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBbcHJveHkgPSBSZWYg
eyBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5
KCkgfV0oYXV0byYgZnJhbWUsIGF1dG8mJiBjYWxsYmFjaykgeworICAgICAgICAgICAgcHJveHkt
PmdldFZpZGVvRnJhbWVCdWZmZXIoZnJhbWUsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAg
fQorI2Vsc2UKKyAgICAgICAgW2F1dG8mIGZyYW1lLCBhdXRvJiYgY2FsbGJhY2tdIHsgY2FsbGJh
Y2soKTsgfQorI2VuZGlmCisgICAgKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVu
dGlmaWVyLmgKaW5kZXggZjQyNTAyNjE1ZGEyLi5mYjAwMWRhNzQ4MjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZp
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVv
RnJhbWVJZGVudGlmaWVyLmgKQEAgLTI4LDEyICsyOCwxMyBAQAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIk9iamVjdElkZW50aWZp
ZXJSZWZlcmVuY2VUcmFja2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzUXVhbGlmaWVk
Lmg+CiAjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGVudW0gUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXJUeXBlIHsgfTsKLXVzaW5nIFJl
bW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVWaWRlb0Zy
YW1lSWRlbnRpZmllclR5cGU+OwordXNpbmcgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgPSBX
ZWJDb3JlOjpQcm9jZXNzUXVhbGlmaWVkPE9iamVjdElkZW50aWZpZXI8UmVtb3RlVmlkZW9GcmFt
ZUlkZW50aWZpZXJUeXBlPj47CiB1c2luZyBSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSA9
IE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVy
PjsKIHVzaW5nIFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZp
ZXJXcml0ZVJlZmVyZW5jZTxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj47CiB1c2luZyBSZW1v
dGVWaWRlb0ZyYW1lUmVmZXJlbmNlID0gT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxSZW1vdGVW
aWRlb0ZyYW1lSWRlbnRpZmllcj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKaW5kZXggZDhiYjIy
OWIwMjUxLi4wNThjZTliNzVmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0p
CiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1JlYWx0
aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBA
IC0zOSwzMyArNDAsNDEgQEAgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzIFJlbW90
ZVZpZGVvRnJhbWVQcm94eTo6cHJvcGVydGllcyhXZWJLaXQ6OlJlbW8KICAgICAgICAgbWVkaWFT
YW1wbGUucHJlc2VudGF0aW9uVGltZSgpLAogICAgICAgICBtZWRpYVNhbXBsZS52aWRlb01pcnJv
cmVkKCksCiAgICAgICAgIG1lZGlhU2FtcGxlLnZpZGVvUm90YXRpb24oKSwKLSAgICAgICAgZXhw
YW5kZWRJbnRTaXplKG1lZGlhU2FtcGxlLnByZXNlbnRhdGlvblNpemUoKSkKKyAgICAgICAgZXhw
YW5kZWRJbnRTaXplKG1lZGlhU2FtcGxlLnByZXNlbnRhdGlvblNpemUoKSksCisgICAgICAgIG1l
ZGlhU2FtcGxlLnZpZGVvUGl4ZWxGb3JtYXQoKQogICAgIH07CiB9CiAKLVJlZlB0cjxSZW1vdGVW
aWRlb0ZyYW1lUHJveHk+IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6Y3JlYXRlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzJiYgcHJv
cGVydGllcykKK1JlZjxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+IFJlbW90ZVZpZGVvRnJhbWVQcm94
eTo6Y3JlYXRlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUHJvcGVydGllcyBwcm9wZXJ0
aWVzLCBQaXhlbEJ1ZmZlckNhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBSZW1vdGVWaWRlb0ZyYW1lUHJveHkoY29ubmVjdGlvbiwgV1RGTW92ZShwcm9wZXJ0
aWVzKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVZpZGVvRnJhbWVQcm94eShj
b25uZWN0aW9uLCBXVEZNb3ZlKHByb3BlcnRpZXMpLCBXVEZNb3ZlKGNhbGxiYWNrKSkpOworfQor
CitzdGF0aWMgdm9pZCByZWxlYXNlUmVtb3RlVmlkZW9GcmFtZVByb3h5KElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgY29uc3QgUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJiByZWZl
cmVuY2UpCit7CisgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcDo6UmVsZWFzZVZpZGVvRnJhbWUocmVmZXJlbmNlKSwgMCwgSVBDOjpTZW5kT3B0
aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQogCiB2
b2lkIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cmVsZWFzZVVudXNlZChJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIFByb3BlcnRpZXMmJiBwcm9wZXJ0aWVzKQogewotICAgIHJlbGVhc2UoY29u
bmVjdGlvbiwgeyB7IHByb3BlcnRpZXMucmVmZXJlbmNlLmlkZW50aWZpZXIoKSwgcHJvcGVydGll
cy5yZWZlcmVuY2UudmVyc2lvbigpIH0sIDAgfSk7CisgICAgcmVsZWFzZVJlbW90ZVZpZGVvRnJh
bWVQcm94eShjb25uZWN0aW9uLCB7IHsgcHJvcGVydGllcy5yZWZlcmVuY2UuaWRlbnRpZmllcigp
LCBwcm9wZXJ0aWVzLnJlZmVyZW5jZS52ZXJzaW9uKCkgfSwgMCB9KTsKIH0KIAotUmVtb3RlVmlk
ZW9GcmFtZVByb3h5OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHkoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBQcm9wZXJ0aWVzJiYgcHJvcGVydGllcykKK1JlbW90ZVZpZGVvRnJhbWVQcm94eTo6
UmVtb3RlVmlkZW9GcmFtZVByb3h5KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUHJvcGVy
dGllcyBwcm9wZXJ0aWVzLCBQaXhlbEJ1ZmZlckNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgOiBt
X2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKICAgICAsIG1fcmVmZXJlbmNlVHJhY2tlcihwcm9wZXJ0
aWVzLnJlZmVyZW5jZSkKICAgICAsIG1fcHJlc2VudGF0aW9uVGltZShwcm9wZXJ0aWVzLnByZXNl
bnRhdGlvblRpbWUpCiAgICAgLCBtX2lzTWlycm9yZWQocHJvcGVydGllcy5pc01pcnJvcmVkKQog
ICAgICwgbV9yb3RhdGlvbihwcm9wZXJ0aWVzLnJvdGF0aW9uKQogICAgICwgbV9zaXplKHByb3Bl
cnRpZXMuc2l6ZSkKKyAgICAsIG1fcGl4ZWxGb3JtYXQocHJvcGVydGllcy5waXhlbEZvcm1hdCkK
KyAgICAsIG1fcGl4ZWxCdWZmZXJDYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKIHsKIH0KIAog
UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp+UmVtb3RlVmlkZW9GcmFtZVByb3h5KCkKIHsKLSAgICBy
ZWxlYXNlKG1fY29ubmVjdGlvbi5nZXQoKSwgd3JpdGUoKSk7CisgICAgcmVsZWFzZVJlbW90ZVZp
ZGVvRnJhbWVQcm94eShtX2Nvbm5lY3Rpb24sIHdyaXRlKCkpOwogfQogCiBSZW1vdGVWaWRlb0Zy
YW1lSWRlbnRpZmllciBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmlkZW50aWZpZXIoKSBjb25zdApA
QCAtMTA1LDkgKzExNCw3IEBAIGJvb2wgUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb01pcnJv
cmVkKCkgY29uc3QKIAogdWludDMyX3QgUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb1BpeGVs
Rm9ybWF0KCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogUmVtb3ZlIGZyb20gdGhlIGJhc2UgY2xh
c3MuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IG1fcGl4ZWxGb3JtYXQ7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFTYW1wbGVW
aWRlb0ZyYW1lPiBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnZpZGVvRnJhbWUoKSBjb25zdApAQCAt
MTE1LDEwICsxMjIsMjkgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYVNhbXBsZVZpZGVv
RnJhbWU+IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9GcmFtZSgKICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCi12b2lkIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cmVsZWFzZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSYm
IHJlbGVhc2VXcml0ZSkKKyNpZiBQTEFURk9STShDT0NPQSkKK3ZvaWQgUmVtb3RlVmlkZW9GcmFt
ZVByb3h5OjpnZXRQaXhlbEJ1ZmZlcigpCiB7Ci0gICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6UmVsZWFzZVZpZGVvRnJhbWUoV1RGTW92ZShy
ZWxlYXNlV3JpdGUpKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hl
bldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIEFTU0VSVChtX3BpeGVsQnVmZmVyTG9jay5pc0hl
bGQoKSk7CisgICAgc3RkOjpleGNoYW5nZShtX3BpeGVsQnVmZmVyQ2FsbGJhY2ssIHsgfSkoKnRo
aXMsIFt0aGlzXShhdXRvIHBpeGVsQnVmZmVyKSB7CisgICAgICAgIG1fcGl4ZWxCdWZmZXIgPSBX
VEZNb3ZlKHBpeGVsQnVmZmVyKTsKKyAgICAgICAgaWYgKCFtX3BpeGVsQnVmZmVyKSB7CisgICAg
ICAgICAgICAvLyBzb21lIGNvZGUgcGF0aHMgZG8gbm90IGxpa2UgZW1wdHkgcGl4ZWwgYnVmZmVy
cy4KKyAgICAgICAgICAgIG1fcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVCbGFja1BpeGVs
QnVmZmVyKHN0YXRpY19jYXN0PHNpemVfdD4obV9zaXplLndpZHRoKCkpLCBzdGF0aWNfY2FzdDxz
aXplX3Q+KG1fc2l6ZS5oZWlnaHQoKSkpOworICAgICAgICB9CisgICAgICAgIG1fc2VtYXBob3Jl
LnNpZ25hbCgpOworICAgIH0pOworICAgIG1fc2VtYXBob3JlLndhaXQoKTsKK30KKworQ1ZQaXhl
bEJ1ZmZlclJlZiBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnBpeGVsQnVmZmVyKCkgY29uc3QKK3sK
KyAgICBMb2NrZXIgbG9jayhtX3BpeGVsQnVmZmVyTG9jayk7CisgICAgaWYgKCFtX3BpeGVsQnVm
ZmVyICYmIG1fcGl4ZWxCdWZmZXJDYWxsYmFjaykKKyAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVW
aWRlb0ZyYW1lUHJveHkqPih0aGlzKS0+Z2V0UGl4ZWxCdWZmZXIoKTsKKyAgICByZXR1cm4gbV9w
aXhlbEJ1ZmZlci5nZXQoKTsKIH0KKyNlbmRpZgogCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94
eS5oCmluZGV4IGZlOTM1MWRlNDUyOS4uMzFhMWE4NDU3ZWJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5
LmgKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9WaWRlb0ZyYW1lLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3Rm
L3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29u
bmVjdGlvbjsKQEAgLTU0LDYgKzU2LDcgQEAgcHVibGljOgogICAgICAgICBib29sIGlzTWlycm9y
ZWQgeyBmYWxzZSB9OwogICAgICAgICBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uIHsgVmlkZW9Sb3Rh
dGlvbjo6Tm9uZSB9OwogICAgICAgICBXZWJDb3JlOjpJbnRTaXplIHNpemU7CisgICAgICAgIHVp
bnQzMl90IHBpeGVsRm9ybWF0IHsgMCB9OwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJvcGVydGllcz4gZGVjb2RlKERl
Y29kZXImKTsKQEAgLTYxLDcgKzY0LDE1IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQcm9wZXJ0
aWVzIHByb3BlcnRpZXMoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlJiYsIGNvbnN0
IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJik7CiAKLSAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZVZpZGVv
RnJhbWVQcm94eT4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbiYsIFByb3BlcnRpZXMmJik7CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgdXNpbmcgUGl4ZWxCdWZmZXJSZXN1bHRDYWxsYmFjayA9IEZ1
bmN0aW9uPHZvaWQoUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYpPjsKKyNlbHNlCisgICAg
dXNpbmcgUGl4ZWxCdWZmZXJSZXN1bHRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoKT47CisjZW5k
aWYKKyAgICAvLyBQaXhlbEJ1ZmZlckNhbGxiYWNrIHNob3VsZCBhbHdheXMgY29tcGxldGUgYnV0
IGl0IG1pZ2h0IG5vdCBiZSBjYWxsZWQgb24gdGhlIHNhbWUgdGhyZWFkIGl0IHdhcyBjcmVhdGVk
LgorICAgIHVzaW5nIFBpeGVsQnVmZmVyQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFJl
bW90ZVZpZGVvRnJhbWVQcm94eSYsIFBpeGVsQnVmZmVyUmVzdWx0Q2FsbGJhY2smJik+OworCisg
ICAgc3RhdGljIFJlZjxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+IGNyZWF0ZShJUEM6OkNvbm5lY3Rp
b24mLCBQcm9wZXJ0aWVzLCBQaXhlbEJ1ZmZlckNhbGxiYWNrJiYpOwogCiAgICAgLy8gQ2FsbGVk
IGJ5IHRoZSBlbmQtcG9pbnRzIHRoYXQgY2FwdHVyZSBjcmVhdGlvbiBtZXNzYWdlcyB0aGF0IGFy
ZSBzZW50IGZyb20gR1BVUCBidXQKICAgICAvLyB3aG9zZSBkZXN0aW5hdGlvbnMgd2VyZSByZWxl
YXNlZCBpbiBXUCBiZWZvcmUgbWVzc2FnZSB3YXMgcHJvY2Vzc2VkLgpAQCAtNzUsMjAgKzg2LDI2
IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZSgpIGNvbnN0OwogCisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcigpIGNvbnN0
IGZpbmFsOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5KElQ
Qzo6Q29ubmVjdGlvbiYsIFByb3BlcnRpZXMsIFBpeGVsQnVmZmVyQ2FsbGJhY2smJik7CisKICAg
ICAvLyBXZWJDb3JlOjpWaWRlb0ZyYW1lIG92ZXJyaWRlcy4KICAgICBNZWRpYVRpbWUgcHJlc2Vu
dGF0aW9uVGltZSgpIGNvbnN0IGZpbmFsOwogICAgIFZpZGVvUm90YXRpb24gdmlkZW9Sb3RhdGlv
bigpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgdmlkZW9NaXJyb3JlZCgpIGNvbnN0IGZpbmFsOwor
ICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9zaXplOyB9CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYVNhbXBsZVZp
ZGVvRnJhbWU+IHZpZGVvRnJhbWUoKSBjb25zdCBmaW5hbDsKKyAgICB1aW50MzJfdCB2aWRlb1Bp
eGVsRm9ybWF0KCkgY29uc3QgZmluYWw7CiAgICAgLy8gRklYTUU6IFdoZW4gVmlkZW9GcmFtZSBp
cyBub3QgTWVkaWFTYW1wbGUsIHRoZXNlIHdpbGwgbm90IGJlIG5lZWRlZC4KICAgICBXZWJDb3Jl
OjpQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0IGZpbmFsOwotICAgIHVpbnQz
Ml90IHZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5hbDsKIAotcHJpdmF0ZToKLSAgICBSZW1v
dGVWaWRlb0ZyYW1lUHJveHkoSVBDOjpDb25uZWN0aW9uJiwgUHJvcGVydGllcyYmKTsKLSAgICBz
dGF0aWMgdm9pZCByZWxlYXNlKElQQzo6Q29ubmVjdGlvbiYsIFJlbW90ZVZpZGVvRnJhbWVXcml0
ZVJlZmVyZW5jZSYmKTsKLQotICAgIHN0YXRpYyBpbmxpbmUgU2Vjb25kcyBkZWZhdWx0U2VuZFRp
bWVvdXQgPSAzMF9zOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgZ2V0UGl4ZWxCdWZm
ZXIoKTsKKyNlbmRpZgogCiAgICAgY29uc3QgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0
aW9uOwogICAgIFJlbW90ZVZpZGVvRnJhbWVSZWZlcmVuY2VUcmFja2VyIG1fcmVmZXJlbmNlVHJh
Y2tlcjsKQEAgLTk2LDYgKzExMywxMSBAQCBwcml2YXRlOgogICAgIGNvbnN0IGJvb2wgbV9pc01p
cnJvcmVkOwogICAgIGNvbnN0IFZpZGVvUm90YXRpb24gbV9yb3RhdGlvbjsKICAgICBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKKyAgICB1aW50MzJfdCBtX3BpeGVsRm9ybWF0IHsgMCB9
OworICAgIG11dGFibGUgTG9jayBtX3BpeGVsQnVmZmVyTG9jazsKKyAgICBSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4gbV9waXhlbEJ1ZmZlcjsKKyAgICBCaW5hcnlTZW1hcGhvcmUgbV9zZW1h
cGhvcmU7CisgICAgUGl4ZWxCdWZmZXJDYWxsYmFjayBtX3BpeGVsQnVmZmVyQ2FsbGJhY2s7CiB9
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIFJlbW90ZVZpZGVvRnJhbWVQcm94
eTo6UHJvcGVydGllczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC0xMDMsNyAr
MTI1LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBSZW1vdGVWaWRlb0ZyYW1l
UHJveHk6OlByb3BlcnRpZXM6OmVuY29kZShFbmNvZGUKICAgICBlbmNvZGVyIDw8IHByZXNlbnRh
dGlvblRpbWUKICAgICAgICAgPDwgaXNNaXJyb3JlZAogICAgICAgICA8PCByb3RhdGlvbgotICAg
ICAgICA8PCBzaXplOworICAgICAgICA8PCBzaXplCisgICAgICAgIDw8IHBpeGVsRm9ybWF0Owog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVv
RnJhbWVQcm94eTo6UHJvcGVydGllcz4gUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVz
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKQEAgLTExMywxMyArMTM2LDE1IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQ
cm9wZXJ0aWVzPiBSZW1vCiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc01pcnJvcmVkOwogICAg
IHN0ZDo6b3B0aW9uYWw8VmlkZW9Sb3RhdGlvbj4gdmlkZW9Sb3RhdGlvbjsKICAgICBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkludFNpemU+IHNpemU7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gcGl4ZWxGb3JtYXQ7CiAgICAgZGVjb2RlciA+PiBwcmVzZW50YXRpb25UaW1lCiAgICAgICAg
ID4+IGlzTWlycm9yZWQKICAgICAgICAgPj4gdmlkZW9Sb3RhdGlvbgotICAgICAgICA+PiBzaXpl
OworICAgICAgICA+PiBzaXplCisgICAgICAgID4+IHBpeGVsRm9ybWF0OwogICAgIGlmICghZGVj
b2Rlci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJu
IFByb3BlcnRpZXMgeyBXVEZNb3ZlKCpyZWZlcmVuY2UpLCBXVEZNb3ZlKCpwcmVzZW50YXRpb25U
aW1lKSwgKmlzTWlycm9yZWQsICp2aWRlb1JvdGF0aW9uLCAqc2l6ZSB9OworICAgIHJldHVybiBQ
cm9wZXJ0aWVzIHsgV1RGTW92ZSgqcmVmZXJlbmNlKSwgV1RGTW92ZSgqcHJlc2VudGF0aW9uVGlt
ZSksICppc01pcnJvcmVkLCAqdmlkZW9Sb3RhdGlvbiwgKnNpemUsICpwaXhlbEZvcm1hdCB9Owog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZVZpZGVvRnJhbWVQcm94eUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5SWRlbnRpZmllci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDc5MmMwNDg2NTBkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1l
UHJveHlJZGVudGlmaWVyLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk9iamVjdElkZW50
aWZpZXJSZWZlcmVuY2VUcmFja2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVWaWRlb0Zy
YW1lSWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgUmVtb3RlVmlk
ZW9GcmFtZVJlYWRSZWZlcmVuY2UgPSBPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZTxXZWJD
b3JlOjpSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj47Cit1c2luZyBSZW1vdGVWaWRlb0ZyYW1l
V3JpdGVSZWZlcmVuY2UgPSBPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U8V2ViQ29yZTo6
UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+OwordXNpbmcgUmVtb3RlVmlkZW9GcmFtZVJlZmVy
ZW5jZSA9IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8V2ViQ29yZTo6UmVtb3RlVmlkZW9GcmFt
ZUlkZW50aWZpZXI+OwordXNpbmcgUmVtb3RlVmlkZW9GcmFtZVJlZmVyZW5jZVRyYWNrZXIgPSBP
YmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcjxXZWJDb3JlOjpSZW1vdGVWaWRlb0ZyYW1l
SWRlbnRpZmllcj47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCmluZGV4IGYyMGQwNzRmM2E2ZC4uYzY2ZmQxYTYw
N2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L0xpYldlYlJUQ0NvZGVjcy5jcHAKQEAgLTMyLDYgKzMyLDggQEAKICNpbmNsdWRlICJMaWJXZWJS
VENDb2RlY3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjc1Byb3h5TWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXBQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0NWVXRpbGl0aWVzLmg+CkBAIC0xMzIsMTcgKzEzNCwxNyBAQCBz
dGF0aWMgaW5saW5lIFN0cmluZyBmb3JtYXROYW1lRnJvbVdlYlJUQ0NvZGVjVHlwZSh3ZWJydGM6
OlZpZGVvQ29kZWNUeXBlIHR5cGUpCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBjcmVhdGVSZW1v
dGVEZWNvZGVyKExpYldlYlJUQ0NvZGVjczo6RGVjb2RlciYgZGVjb2RlciwgSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uKQorc3RhdGljIHZvaWQgY3JlYXRlUmVtb3RlRGVjb2RlcihMaWJXZWJS
VENDb2RlY3M6OkRlY29kZXImIGRlY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
Ym9vbCB1c2VSZW1vdGVGcmFtZXMpCiB7CiAgICAgc3dpdGNoIChkZWNvZGVyLnR5cGUpIHsKICAg
ICBjYXNlIExpYldlYlJUQ0NvZGVjczo6VHlwZTo6SDI2NDoKLSAgICAgICAgY29ubmVjdGlvbi5z
ZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6Q3JlYXRlSDI2NERlY29kZXIgeyBk
ZWNvZGVyLmlkZW50aWZpZXIgfSwgMCk7CisgICAgICAgIGNvbm5lY3Rpb24uc2VuZChNZXNzYWdl
czo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkNyZWF0ZUgyNjREZWNvZGVyIHsgZGVjb2Rlci5pZGVu
dGlmaWVyLCB1c2VSZW1vdGVGcmFtZXMgfSwgMCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
TGliV2ViUlRDQ29kZWNzOjpUeXBlOjpIMjY1OgotICAgICAgICBjb25uZWN0aW9uLnNlbmQoTWVz
c2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpDcmVhdGVIMjY1RGVjb2RlciB7IGRlY29kZXIu
aWRlbnRpZmllciB9LCAwKTsKKyAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpMaWJX
ZWJSVENDb2RlY3NQcm94eTo6Q3JlYXRlSDI2NURlY29kZXIgeyBkZWNvZGVyLmlkZW50aWZpZXIs
IHVzZVJlbW90ZUZyYW1lcyB9LCAwKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMaWJXZWJS
VENDb2RlY3M6OlR5cGU6OlZQOToKLSAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpM
aWJXZWJSVENDb2RlY3NQcm94eTo6Q3JlYXRlVlA5RGVjb2RlciB7IGRlY29kZXIuaWRlbnRpZmll
ciB9LCAwKTsKKyAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2Rl
Y3NQcm94eTo6Q3JlYXRlVlA5RGVjb2RlciB7IGRlY29kZXIuaWRlbnRpZmllciwgdXNlUmVtb3Rl
RnJhbWVzIH0sIDApOwogICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC0xODQsNiArMTg2LDcg
QEAgdm9pZCBMaWJXZWJSVENDb2RlY3M6OmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uT25NYWlu
VGhyZWFkV2l0aExvY2soKQogICAgIGF1dG8mIGdwdUNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogICAgIGdwdUNvbm5lY3Rp
b24uYWRkQ2xpZW50KCp0aGlzKTsKICAgICBtX2Nvbm5lY3Rpb24gPSAmZ3B1Q29ubmVjdGlvbi5j
b25uZWN0aW9uKCk7CisgICAgbV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5ID0gJmdw
dUNvbm5lY3Rpb24ucmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSgpOwogICAgIG1fY29u
bmVjdGlvbi0+YWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2Rl
Y3M6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgdGhpcyk7CiAKICAgICBpZiAobV9sb2dnaW5nTGV2
ZWwpCkBAIC0yMjgsNyArMjMxLDcgQEAgTGliV2ViUlRDQ29kZWNzOjp+TGliV2ViUlRDQ29kZWNz
KCkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBMaWJXZWJSVENDb2RlY3M6
OnNldENhbGxiYWNrcyhib29sIHVzZUdQVVByb2Nlc3MpCit2b2lkIExpYldlYlJUQ0NvZGVjczo6
c2V0Q2FsbGJhY2tzKGJvb2wgdXNlR1BVUHJvY2VzcywgYm9vbCB1c2VSZW1vdGVGcmFtZXMpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAKQEAgLTIzOSw3ICsyNDIsNyBAQCB2b2lk
IExpYldlYlJUQ0NvZGVjczo6c2V0Q2FsbGJhY2tzKGJvb2wgdXNlR1BVUHJvY2VzcykKICAgICB9
CiAKICAgICAvLyBMZXQncyBjcmVhdGUgV2ViUHJvY2VzcyBsaWJXZWJSVENDb2RlY3Mgc2luY2Ug
aXQgbWF5IGJlIGNhbGxlZCBmcm9tIHZhcmlvdXMgdGhyZWFkcy4KLSAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5saWJXZWJSVENDb2RlY3MoKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5saWJXZWJSVENDb2RlY3MoKS5tX3VzZVJlbW90ZUZyYW1lcyA9IHVzZVJlbW90ZUZyYW1lczsK
IAogI2lmIEVOQUJMRShWUDkpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRD
Q29kZWNzKCkuc2V0VlA5VlRCU3VwcG9ydChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVH
UFVQcm9jZXNzQ29ubmVjdGlvbigpLmhhc1ZQOUhhcmR3YXJlRGVjb2RlcigpKTsKQEAgLTI1OSw3
ICsyNjIsNyBAQCBMaWJXZWJSVENDb2RlY3M6OkRlY29kZXIqIExpYldlYlJUQ0NvZGVjczo6Y3Jl
YXRlRGVjb2RlcihUeXBlIHR5cGUpCiAgICAgZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb25BbmRE
aXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBkZWNvZGVyID0gV1RGTW92ZShkZWNvZGVyKV0oKSBtdXRh
YmxlIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbkxvY2sgfTsKICAgICAg
ICAgZGVjb2Rlci0+Y29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbjsKLSAgICAgICAgY3JlYXRlUmVt
b3RlRGVjb2RlcigqZGVjb2RlciwgKm1fY29ubmVjdGlvbik7CisgICAgICAgIGNyZWF0ZVJlbW90
ZURlY29kZXIoKmRlY29kZXIsICptX2Nvbm5lY3Rpb24sIG1fdXNlUmVtb3RlRnJhbWVzKTsKIAog
ICAgICAgICBhdXRvIGRlY29kZXJJZGVudGlmaWVyID0gZGVjb2Rlci0+aWRlbnRpZmllcjsKICAg
ICAgICAgQVNTRVJUKCFtX2RlY29kZXJzLmNvbnRhaW5zKGRlY29kZXJJZGVudGlmaWVyKSk7CkBA
IC0zMTUsMTAgKzMxOCwyMyBAQCB2b2lkIExpYldlYlJUQ0NvZGVjczo6ZmFpbGVkRGVjb2Rpbmco
UlRDRGVjb2RlcklkZW50aWZpZXIgZGVjb2RlcklkZW50aWZpZXIpCiAgICAgICAgIGRlY29kZXIt
Pmhhc0Vycm9yID0gdHJ1ZTsKIH0KIAotdm9pZCBMaWJXZWJSVENDb2RlY3M6OmNvbXBsZXRlZERl
Y29kaW5nKFJUQ0RlY29kZXJJZGVudGlmaWVyIGRlY29kZXJJZGVudGlmaWVyLCB1aW50MzJfdCB0
aW1lU3RhbXAsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtb3RlU2FtcGxlKQordm9p
ZCBMaWJXZWJSVENDb2RlY3M6OmNvbXBsZXRlZERlY29kaW5nKFJUQ0RlY29kZXJJZGVudGlmaWVy
IGRlY29kZXJJZGVudGlmaWVyLCB1aW50MzJfdCB0aW1lU3RhbXAsIFdlYkNvcmU6OlJlbW90ZVZp
ZGVvU2FtcGxlJiYgcmVtb3RlU2FtcGxlLCBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVJ
ZGVudGlmaWVyPiByZW1vdGVGcmFtZUlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFpc01haW5S
dW5Mb29wKCkpOwogCisgICAgUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4gcmVtb3RlVmlk
ZW9GcmFtZTsKKyAgICAvLyBXZSBhbHdheXMgY3JlYXRlIFJlbW90ZVZpZGVvRnJhbWVQcm94eSBz
byB0aGF0IHdlIGNhbiByZWxlYXNlIHRoZSBjb3JyZXNwb25kaW5nIEdQVVByb2Nlc3MgSU9TdXJm
YWNlIHJpZ2h0IGF3YXkgaWYgdGhlcmUgaXMgbm8gdmlkZW8gc291cmNlLgorICAgIGlmIChyZW1v
dGVGcmFtZUlkZW50aWZpZXIpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlv
bkxvY2sgfTsKKyAgICAgICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzIHByb3Bl
cnRpZXMgeyB7ICpyZW1vdGVGcmFtZUlkZW50aWZpZXIsIDAgfSwgcmVtb3RlU2FtcGxlLnRpbWUo
KSwgcmVtb3RlU2FtcGxlLm1pcnJvcmVkKCksIHJlbW90ZVNhbXBsZS5yb3RhdGlvbigpLCByZW1v
dGVTYW1wbGUuc2l6ZSgpLCByZW1vdGVTYW1wbGUudmlkZW9Gb3JtYXQoKSB9OworICAgICAgICBy
ZW1vdGVWaWRlb0ZyYW1lID0gUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpjcmVhdGUoKm1fY29ubmVj
dGlvbiwgcHJvcGVydGllcywgW3Byb3h5ID0gbV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFBy
b3h5XShhdXRvJiBmcmFtZSwgYXV0byYmIGNhbGxiYWNrKSB7CisgICAgICAgICAgICBpZiAoIXBy
b3h5KSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcm94eS0+Z2V0VmlkZW9GcmFtZUJ1
ZmZlcihmcmFtZSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICB9KTsKKyAgICB9CiAgICAg
Ly8gRklYTUU6IERvIGVycm9yIGxvZ2dpbmcuCiAgICAgYXV0byogZGVjb2RlciA9IG1fZGVjb2Rl
cnMuZ2V0KGRlY29kZXJJZGVudGlmaWVyKTsKICAgICBpZiAoIWRlY29kZXIpCkBAIC0zMzIsNiAr
MzQ4LDE0IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzOjpjb21wbGV0ZWREZWNvZGluZyhSVENEZWNv
ZGVySWRlbnRpZmllciBkZWNvZGVySWRlbnRpZmllciwKICAgICBpZiAoIWRlY29kZXItPmRlY29k
ZWRJbWFnZUNhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAocmVtb3RlVmlkZW9G
cmFtZSkgeworICAgICAgICB3ZWJydGM6OnZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZShkZWNvZGVy
LT5kZWNvZGVkSW1hZ2VDYWxsYmFjaywgdGltZVN0YW1wLCByZW1vdGVTYW1wbGUudGltZSgpLnRv
RG91YmxlKCksIHJlbW90ZVZpZGVvRnJhbWUubGVha1JlZigpLAorICAgICAgICAgICAgW10oYXV0
byogcG9pbnRlcikgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVtb3RlVmlkZW9GcmFtZVByb3h5Kj4o
cG9pbnRlciktPnBpeGVsQnVmZmVyKCk7IH0sCisgICAgICAgICAgICBbXShhdXRvKiBwb2ludGVy
KSB7IHN0YXRpY19jYXN0PFJlbW90ZVZpZGVvRnJhbWVQcm94eSo+KHBvaW50ZXIpLT5kZXJlZigp
OyB9LAorICAgICAgICAgICAgcmVtb3RlU2FtcGxlLnNpemUoKS53aWR0aCgpLCByZW1vdGVTYW1w
bGUuc2l6ZSgpLmhlaWdodCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmICgh
cmVtb3RlU2FtcGxlLnN1cmZhY2UoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8gcGl4ZWxC
dWZmZXIgPSBjcmVhdGVDVlBpeGVsQnVmZmVyKHJlbW90ZVNhbXBsZS5zdXJmYWNlKCkpLnZhbHVl
X29yKG51bGxwdHIpOwpAQCAtMzQwLDcgKzM2NCw3IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzOjpj
b21wbGV0ZWREZWNvZGluZyhSVENEZWNvZGVySWRlbnRpZmllciBkZWNvZGVySWRlbnRpZmllciwK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHdlYnJ0Yzo6dmlkZW9EZWNvZGVyVGFza0Nv
bXBsZXRlKGRlY29kZXItPmRlY29kZWRJbWFnZUNhbGxiYWNrLCB0aW1lU3RhbXAsIHBpeGVsQnVm
ZmVyLmdldCgpLCByZW1vdGVTYW1wbGUudGltZSgpLnRvRG91YmxlKCkpOworICAgIHdlYnJ0Yzo6
dmlkZW9EZWNvZGVyVGFza0NvbXBsZXRlKGRlY29kZXItPmRlY29kZWRJbWFnZUNhbGxiYWNrLCB0
aW1lU3RhbXAsIHJlbW90ZVNhbXBsZS50aW1lKCkudG9Eb3VibGUoKSwgcGl4ZWxCdWZmZXIuZ2V0
KCkpOwogfQogCiBzdGF0aWMgaW5saW5lIFN0cmluZyBmb3JtYXROYW1lRnJvbUNvZGVjVHlwZShM
aWJXZWJSVENDb2RlY3M6OlR5cGUgdHlwZSkKQEAgLTQzOCwyMCArNDYyLDMxIEBAIGludDMyX3Qg
TGliV2ViUlRDQ29kZWNzOjplbmNvZGVGcmFtZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCB3ZWJy
dGM6OlZpZGVvRnJhbWUmCiAgICAgaWYgKCFlbmNvZGVyLmNvbm5lY3Rpb24pCiAgICAgICAgIHJl
dHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0
Q0Yod2VicnRjOjpwaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFtZSkpOwotICAgIGlmICghYnVmZmVy
KSB7Ci0gICAgICAgIC8vIGJ1ZmZlciBpcyBub3QgbmF0aXZlLCB3ZSBuZWVkIHRvIGNvcHkgdG8g
c2hhcmVkIHZpZGVvIGZyYW1lLgotICAgICAgICBpZiAoIWNvcHlTaGFyZWRWaWRlb0ZyYW1lKGVu
Y29kZXIsIGZyYW1lKSkKLSAgICAgICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJS
T1I7CisgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZT4gcmVt
b3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2U7CisgICAgaWYgKGF1dG8gcHJvdmlkZXIgPSB3ZWJy
dGM6OnZpZGVvRnJhbWVCdWZmZXJQcm92aWRlcihmcmFtZSkpIHsKKyAgICAgICAgYXV0byYgbWVk
aWFTYW1wbGUgPSAqc3RhdGljX2Nhc3Q8TWVkaWFTYW1wbGUqPihwcm92aWRlcik7CisgICAgICAg
IGlmIChpczxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+KG1lZGlhU2FtcGxlKSkKKyAgICAgICAgICAg
IHJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlID0gZG93bmNhc3Q8UmVtb3RlVmlkZW9GcmFt
ZVByb3h5PihtZWRpYVNhbXBsZSkucmVhZCgpOwogICAgIH0KKworICAgIFJldGFpblB0cjxDVlBp
eGVsQnVmZmVyUmVmPiBidWZmZXI7CisgICAgaWYgKCFyZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVy
ZW5jZSkgeworICAgICAgICBidWZmZXIgPSBhZG9wdENGKHdlYnJ0Yzo6cGl4ZWxCdWZmZXJGcm9t
RnJhbWUoZnJhbWUpKTsKKyAgICAgICAgaWYgKCFidWZmZXIpIHsKKyAgICAgICAgICAgIC8vIGJ1
ZmZlciBpcyBub3QgbmF0aXZlLCB3ZSBuZWVkIHRvIGNvcHkgdG8gc2hhcmVkIHZpZGVvIGZyYW1l
LgorICAgICAgICAgICAgaWYgKCFjb3B5U2hhcmVkVmlkZW9GcmFtZShlbmNvZGVyLCBmcmFtZSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKKyAgICAg
ICAgfQorICAgIH0KKwogICAgIGF1dG8gc2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0
ZShidWZmZXIuZ2V0KCksIE1lZGlhVGltZShmcmFtZS50aW1lc3RhbXBfdXMoKSAqIDEwMDAsIDEw
MDAwMDApLCB0b01lZGlhU2FtcGxlVmlkZW9Sb3RhdGlvbihmcmFtZS5yb3RhdGlvbigpKSwgUmVt
b3RlVmlkZW9TYW1wbGU6OlNob3VsZENoZWNrRm9ySU9TdXJmYWNlOjpObyk7Ci0gICAgaWYgKCFz
YW1wbGUtPnN1cmZhY2UoKSkgeworICAgIGlmIChidWZmZXIgJiYgIXNhbXBsZS0+c3VyZmFjZSgp
KSB7CiAgICAgICAgIC8vIGJ1ZmZlciBpcyBub3QgSU9TdXJmYWNlLCB3ZSBuZWVkIHRvIGNvcHkg
dG8gc2hhcmVkIHZpZGVvIGZyYW1lLgogICAgICAgICBpZiAoIWNvcHlTaGFyZWRWaWRlb0ZyYW1l
KGVuY29kZXIsIGJ1ZmZlci5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVP
X0NPREVDX0VSUk9SOwogICAgIH0KIAotICAgIGVuY29kZXIuY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkVuY29kZUZyYW1lIHsgZW5jb2Rlci5pZGVudGlm
aWVyLCAqc2FtcGxlLCBmcmFtZS50aW1lc3RhbXAoKSwgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSB9
LCAwKTsKKyAgICBlbmNvZGVyLmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0Nv
ZGVjc1Byb3h5OjpFbmNvZGVGcmFtZSB7IGVuY29kZXIuaWRlbnRpZmllciwgKnNhbXBsZSwgZnJh
bWUudGltZXN0YW1wKCksIHNob3VsZEVuY29kZUFzS2V5RnJhbWUsIHJlbW90ZVZpZGVvRnJhbWVS
ZWFkUmVmZXJlbmNlIH0sIDApOwogICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7CiB9
CiAKQEAgLTUyNiw3ICs1NjEsNyBAQCB2b2lkIExpYldlYlJUQ0NvZGVjczo6Z3B1UHJvY2Vzc0Nv
bm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpCiAgICAgZW5zdXJlR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb25Pbk1haW5UaHJlYWRXaXRoTG9jaygpOwogICAgIGRpc3BhdGNoVG9UaHJl
YWQoW3RoaXMsIGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25dKCkgewogICAgICAgICBmb3IgKGF1
dG8mIGRlY29kZXIgOiBtX2RlY29kZXJzLnZhbHVlcygpKSB7Ci0gICAgICAgICAgICBjcmVhdGVS
ZW1vdGVEZWNvZGVyKCpkZWNvZGVyLCAqY29ubmVjdGlvbik7CisgICAgICAgICAgICBjcmVhdGVS
ZW1vdGVEZWNvZGVyKCpkZWNvZGVyLCAqY29ubmVjdGlvbiwgbV91c2VSZW1vdGVGcmFtZXMpOwog
ICAgICAgICAgICAgZGVjb2Rlci0+Y29ubmVjdGlvbiA9IGNvbm5lY3Rpb24uZ2V0KCk7CiAgICAg
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3MuaAppbmRleCBhMDE3ZGU4Yjg0NTQuLjJlNDkxNjQwYjlmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNz
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNp
bmNsdWRlICJSVENEZWNvZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJUQ0VuY29kZXJJZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJTaGFyZWRWaWRlb0ZyYW1lLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QaXhlbEJ1ZmZlckNv
bmZvcm1lckNWLmg+CiAjaW5jbHVkZSA8bWFwPgpAQCAtNjAsMTMgKzYxLDE1IEBAIHN0cnVjdCBX
ZWJLaXRFbmNvZGVkRnJhbWVJbmZvOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eTsKKwogY2xhc3MgTGliV2ViUlRDQ29kZWNzIDog
cHVibGljIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVyUmVmQ291bnRlZCwg
cHVibGljIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TGliV2ViUlRDQ29kZWNzPiBjcmVh
dGUoKTsKICAgICB+TGliV2ViUlRDQ29kZWNzKCk7CiAKLSAgICBzdGF0aWMgdm9pZCBzZXRDYWxs
YmFja3MoYm9vbCB1c2VHUFVQcm9jZXNzKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRDYWxsYmFja3Mo
Ym9vbCB1c2VHUFVQcm9jZXNzLCBib29sIHVzZVJlbW90ZUZyYW1lcyk7CiAKICAgICBlbnVtIGNs
YXNzIFR5cGUgeyBIMjY0LCBIMjY1LCBWUDkgfTsKICAgICBzdHJ1Y3QgRGVjb2RlciB7CkBAIC0x
MjgsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0aW9uTWF5
Tm9Mb25nZXJCZU5lZWRlZCgpOwogCiAgICAgdm9pZCBmYWlsZWREZWNvZGluZyhSVENEZWNvZGVy
SWRlbnRpZmllcik7Ci0gICAgdm9pZCBjb21wbGV0ZWREZWNvZGluZyhSVENEZWNvZGVySWRlbnRp
ZmllciwgdWludDMyX3QgdGltZVN0YW1wLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmKTsK
KyAgICB2b2lkIGNvbXBsZXRlZERlY29kaW5nKFJUQ0RlY29kZXJJZGVudGlmaWVyLCB1aW50MzJf
dCB0aW1lU3RhbXAsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYsIHN0ZDo6b3B0aW9uYWw8
UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+KTsKICAgICB2b2lkIGNvbXBsZXRlZEVuY29kaW5n
KFJUQ0VuY29kZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UmJiwgY29uc3Qgd2VicnRj
OjpXZWJLaXRFbmNvZGVkRnJhbWVJbmZvJik7CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJS
ZWY+IGNvbnZlcnRUb0JHUkEoQ1ZQaXhlbEJ1ZmZlclJlZik7CiAKQEAgLTE0OSw2ICsxNTIsNyBA
QCBwcml2YXRlOgogCiAgICAgTG9jayBtX2Nvbm5lY3Rpb25Mb2NrOwogICAgIFJlZlB0cjxJUEM6
OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbiBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY29ubmVjdGlv
bkxvY2spOworICAgIFJlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5PiBtX3Jl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkgV1RGX0dVQVJERURfQllfTE9DSyhtX2Nvbm5l
Y3Rpb25Mb2NrKTsKICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZCgpPj4gbV90YXNrc1RvRGlzcGF0
Y2hBZnRlckVzdGFibGlzaGluZ0Nvbm5lY3Rpb247CiAKICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1
ZXVlOwpAQCAtMTU4LDYgKzE2Miw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fcGl4ZWxCdWZm
ZXJQb29sSGVpZ2h0IHsgMCB9OwogICAgIGJvb2wgbV9zdXBwb3J0VlA5VlRCIHsgZmFsc2UgfTsK
ICAgICBzdGQ6Om9wdGlvbmFsPFdURkxvZ0xldmVsPiBtX2xvZ2dpbmdMZXZlbDsKKyAgICBib29s
IG1fdXNlUmVtb3RlRnJhbWVzIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluCmluZGV4IDI1ZjI3ZmVhODNkZS4uN2RiNzk1
MDgxZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBA
CiAKIG1lc3NhZ2VzIC0+IExpYldlYlJUQ0NvZGVjcyBOb3RSZWZDb3VudGVkIHsKICAgICBGYWls
ZWREZWNvZGluZyhXZWJLaXQ6OlJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCi0gICAg
Q29tcGxldGVkRGVjb2RpbmcoV2ViS2l0OjpSVENEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVy
LCB1aW50MzJfdCB0aW1lU3RhbXAsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSkK
KyAgICBDb21wbGV0ZWREZWNvZGluZyhXZWJLaXQ6OlJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2Ft
cGxlLCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+IHJl
bW90ZUZyYW1lSWRlbnRpZmllcikKIAogICAgIENvbXBsZXRlZEVuY29kaW5nKFdlYktpdDo6UlRD
RW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEsIHN0
cnVjdCB3ZWJydGM6OldlYktpdEVuY29kZWRGcmFtZUluZm8gaW5mbyk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVy
UHJpdmF0ZS5jcHAKaW5kZXggNGY3N2YzNmU3MTcyLi45MTgwZDFjYTcyZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29y
ZGVyUHJpdmF0ZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29u
bmVjdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlY29yZGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJS
ZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU3RyZWFt
UHJpdmF0ZS5oPgpAQCAtOTMsMjYgKzk0LDM0IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlOjp+TWVk
aWFSZWNvcmRlclByaXZhdGUoKQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjp2aWRlb1Nh
bXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgc2FtcGxlLCBWaWRlb1NhbXBsZU1ldGFkYXRhKQog
eworICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2U+IHJlbW90
ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRl
b1NhbXBsZT4gcmVtb3RlU2FtcGxlOwogICAgIGlmIChzaG91bGRNdXRlVmlkZW8oKSkgeworICAg
ICAgICAvLyBGSVhNRTogV2UgY291bGQgb3B0aW1pemUgc2VuZGluZyBibGFjayBmcmFtZXMgYnkg
b25seSBzZW5kaW5nIHdpZHRoL2hlaWdodC4KICAgICAgICAgaWYgKCFtX2JsYWNrRnJhbWUpIHsK
LSAgICAgICAgICAgIGF1dG8gYmxhY2tGcmFtZURlc2NyaXB0aW9uID0gQ01TYW1wbGVCdWZmZXJH
ZXRGb3JtYXREZXNjcmlwdGlvbihzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuY21TYW1w
bGVCdWZmZXIpOwotICAgICAgICAgICAgYXV0byBkaW1lbnNpb25zID0gQ01WaWRlb0Zvcm1hdERl
c2NyaXB0aW9uR2V0RGltZW5zaW9ucyhibGFja0ZyYW1lRGVzY3JpcHRpb24pOwotICAgICAgICAg
ICAgbV9ibGFja0ZyYW1lID0gY3JlYXRlQmxhY2tQaXhlbEJ1ZmZlcihkaW1lbnNpb25zLndpZHRo
LCBkaW1lbnNpb25zLmhlaWdodCk7CisgICAgICAgICAgICBhdXRvIHNpemUgPSBzYW1wbGUucHJl
c2VudGF0aW9uU2l6ZSgpOworICAgICAgICAgICAgbV9ibGFja0ZyYW1lID0gY3JlYXRlQmxhY2tQ
aXhlbEJ1ZmZlcihzdGF0aWNfY2FzdDxzaXplX3Q+KHNpemUud2lkdGgoKSksIHN0YXRpY19jYXN0
PHNpemVfdD4oc2l6ZS5oZWlnaHQoKSkpOwogICAgICAgICB9CiAgICAgICAgIHJlbW90ZVNhbXBs
ZSA9IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUobV9ibGFja0ZyYW1lLmdldCgpLCBzYW1wbGUu
cHJlc2VudGF0aW9uVGltZSgpLCBzYW1wbGUudmlkZW9Sb3RhdGlvbigpLCBSZW1vdGVWaWRlb1Nh
bXBsZTo6U2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2U6Ok5vKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBtX2JsYWNrRnJhbWUgPSBudWxscHRyOwotICAgICAgICByZW1vdGVTYW1wbGUgPSBSZW1vdGVW
aWRlb1NhbXBsZTo6Y3JlYXRlKHNhbXBsZSwgUmVtb3RlVmlkZW9TYW1wbGU6OlNob3VsZENoZWNr
Rm9ySU9TdXJmYWNlOjpObyk7CisKKyAgICAgICAgaWYgKGlzPFJlbW90ZVZpZGVvRnJhbWVQcm94
eT4oc2FtcGxlKSkgeworICAgICAgICAgICAgcmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2Ug
PSBkb3duY2FzdDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+KHNhbXBsZSkucmVhZCgpOworICAgICAg
ICAgICAgcmVtb3RlU2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShudWxscHRyLCBz
YW1wbGUucHJlc2VudGF0aW9uVGltZSgpLCBzYW1wbGUudmlkZW9Sb3RhdGlvbigpLCBSZW1vdGVW
aWRlb1NhbXBsZTo6U2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2U6Ok5vKTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICByZW1vdGVTYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHNh
bXBsZSwgUmVtb3RlVmlkZW9TYW1wbGU6OlNob3VsZENoZWNrRm9ySU9TdXJmYWNlOjpObyk7CiAg
ICAgfQogCi0gICAgaWYgKCFyZW1vdGVTYW1wbGUtPnN1cmZhY2UoKSkgeworICAgIGlmIChpczxS
ZW1vdGVWaWRlb0ZyYW1lUHJveHk+KHNhbXBsZSkpCisgICAgICAgIHJlbW90ZVZpZGVvRnJhbWVS
ZWFkUmVmZXJlbmNlID0gZG93bmNhc3Q8UmVtb3RlVmlkZW9GcmFtZVByb3h5PihzYW1wbGUpLnJl
YWQoKTsKKyAgICBlbHNlIGlmICghcmVtb3RlU2FtcGxlLT5zdXJmYWNlKCkpIHsKICAgICAgICAg
Ly8gYnVmZmVyIGlzIG5vdCBJT1N1cmZhY2UsIHdlIG5lZWQgdG8gY29weSB0byBzaGFyZWQgdmlk
ZW8gZnJhbWUuCiAgICAgICAgIGlmICghY29weVNoYXJlZFZpZGVvRnJhbWUocmVtb3RlU2FtcGxl
LT5pbWFnZUJ1ZmZlcigpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OlZpZGVvU2FtcGxl
QXZhaWxhYmxlIHsgV1RGTW92ZSgqcmVtb3RlU2FtcGxlKSB9LCBtX2lkZW50aWZpZXIpOworICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6VmlkZW9T
YW1wbGVBdmFpbGFibGUgeyBXVEZNb3ZlKCpyZW1vdGVTYW1wbGUpLCByZW1vdGVWaWRlb0ZyYW1l
UmVhZFJlZmVyZW5jZSB9LCBtX2lkZW50aWZpZXIpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLmJhNGE0NTRjMGM4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkuaApAQCAt
MCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisj
aW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvci5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworLy8gV3JhcHBlciBhcm91bmQgUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXBQcm94eVByb2Nlc3NvciB0aGF0IHdpbGwgYWx3YXlzIGJlIGRlc3Ryb2V5ZCBvbiBt
YWluIHRocmVhZC4KK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSwg
V1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpblJ1bkxvb3A+IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk+IGNyZWF0ZShHUFVQcm9jZXNz
Q29ubmVjdGlvbiYgY29ubmVjdGlvbikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcFByb3h5KGNvbm5lY3Rpb24pKTsgfQorICAgIH5SZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcFByb3h5KCkgPSBkZWZhdWx0OworCisgICAgdm9pZCBnZXRWaWRlb0ZyYW1l
QnVmZmVyKGNvbnN0IFJlbW90ZVZpZGVvRnJhbWVQcm94eSYgcHJveHksIFJlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3I6OkNhbGxiYWNrJiYgY2FsbGJhY2spIHsgbV9wcm9j
ZXNzb3ItPmdldFZpZGVvRnJhbWVCdWZmZXIocHJveHksIFdURk1vdmUoY2FsbGJhY2spKTsgfQor
Citwcml2YXRlOgorICAgIGV4cGxpY2l0IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHko
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCisgICAgICAgIDogbV9wcm9jZXNzb3Io
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvcjo6Y3JlYXRlKGNvbm5lY3Rp
b24pKQorICAgIHsKKyAgICB9CisKKyAgICBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQ
cm94eVByb2Nlc3Nvcj4gbV9wcm9jZXNzb3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJv
eHlQcm9jZXNzb3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
YjFjYTRjN2JjNmU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvci5jcHAK
QEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5oIgorCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKKwor
I2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yTWVzc2FnZXMuaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK1JlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5
UHJvY2Vzc29yPiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yOjpjcmVh
dGUoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvcihjb25uZWN0
aW9uKSk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3I6OlJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3IoR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24mIGNvbm5lY3Rpb24pCisgICAgOiBtX2Nvbm5lY3Rpb25JRChjb25uZWN0aW9uLmNvbm5lY3Rp
b24oKS51bmlxdWVJRCgpKQorICAgICwgbV9xdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSIsIFdvcmtRdWV1ZTo6UU9TOjpVc2VySW50ZXJhY3Rp
dmUpKQoreworICAgIGNvbm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlzKTsKKyAgICBjb25uZWN0aW9u
LmNvbm5lY3Rpb24oKS5hZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9xdWV1ZSwgdGhpcyk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQ
cm9jZXNzb3I6On5SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yKCkKK3sK
KyAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKKyAgICBjbGVhckNhbGxiYWNrcygpOworfQor
Cit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3I6OmdwdVByb2Nl
c3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7
CisgICAgeworICAgICAgICBMb2NrZXIgbG9jayhtX2Nvbm5lY3Rpb25Mb2NrKTsKKyAgICAgICAg
bV9jb25uZWN0aW9uSUQgPSB7IH07CisgICAgfQorICAgIGNvbm5lY3Rpb24uY29ubmVjdGlvbigp
LnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICBj
bGVhckNhbGxiYWNrcygpOworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJv
eHlQcm9jZXNzb3I6OmNsZWFyQ2FsbGJhY2tzKCkKK3sKKyAgICBIYXNoTWFwPFJlbW90ZVZpZGVv
RnJhbWVJZGVudGlmaWVyLCBDYWxsYmFjaz4gY2FsbGJhY2tzOworICAgIHsKKyAgICAgICAgTG9j
a2VyIGxvY2sobV9jYWxsYmFja3NMb2NrKTsKKyAgICAgICAgY2FsbGJhY2tzID0gc3RkOjpleGNo
YW5nZShtX2NhbGxiYWNrcywgeyB9KTsKKyAgICB9CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChb
cXVldWUgPSBtX3F1ZXVlLCBjYWxsYmFja3MgPSBXVEZNb3ZlKGNhbGxiYWNrcyldKCkgbXV0YWJs
ZSB7CisgICAgICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MudmFsdWVzKCkpCisg
ICAgICAgICAgICBjYWxsYmFjayh7IH0pOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3I6OnNldFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhv
cmUoSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUpCit7CisgICAgbV9zaGFyZWRWaWRlb0ZyYW1l
UmVhZGVyLnNldFNlbWFwaG9yZShXVEZNb3ZlKHNlbWFwaG9yZSkpOworfQorCit2b2lkIFJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3I6OnNldFNoYXJlZFZpZGVvRnJhbWVN
ZW1vcnkoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGlwY0hhbmRsZSkKK3sKKyAgICBt
X3NoYXJlZFZpZGVvRnJhbWVSZWFkZXIuc2V0U2hhcmVkTWVtb3J5KGlwY0hhbmRsZSk7Cit9CisK
K1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3I6OkNhbGxiYWNrIFJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3I6OnRha2VDYWxsYmFjayhSZW1vdGVW
aWRlb0ZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIExvY2tlciBsb2NrKG1fY2Fs
bGJhY2tzTG9jayk7CisgICAgcmV0dXJuIG1fY2FsbGJhY2tzLnRha2UoaWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvcjo6dmlkZW9G
cmFtZUJ1ZmZlck5vdEZvdW5kKFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIp
Cit7CisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSB0YWtlQ2FsbGJhY2soaWRlbnRpZmllcikpCisg
ICAgICAgIGNhbGxiYWNrKG51bGxwdHIpOworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwUHJveHlQcm9jZXNzb3I6Om5ld1ZpZGVvRnJhbWVCdWZmZXIoUmVtb3RlVmlkZW9GcmFt
ZUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fc2hhcmVkVmlk
ZW9GcmFtZVJlYWRlci5yZWFkKCk7CisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSB0YWtlQ2FsbGJh
Y2soaWRlbnRpZmllcikpCisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KSk7Cit9CisK
K3ZvaWQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvcjo6Z2V0VmlkZW9G
cmFtZUJ1ZmZlcihjb25zdCBSZW1vdGVWaWRlb0ZyYW1lUHJveHkmIGZyYW1lLCBDYWxsYmFjayYm
IGNhbGxiYWNrKQoreworICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2sobV9jYWxsYmFja3NMb2Nr
KTsKKyAgICAgICAgQVNTRVJUKCFtX2NhbGxiYWNrcy5jb250YWlucyhmcmFtZS5pZGVudGlmaWVy
KCkpKTsKKyAgICAgICAgbV9jYWxsYmFja3MuYWRkKGZyYW1lLmlkZW50aWZpZXIoKSwgV1RGTW92
ZShjYWxsYmFjaykpOworICAgIH0KKyAgICBMb2NrZXIgbG9jayhtX2Nvbm5lY3Rpb25Mb2NrKTsK
KyAgICBpZiAoIW1fY29ubmVjdGlvbklEKSB7CisgICAgICAgIHZpZGVvRnJhbWVCdWZmZXJOb3RG
b3VuZChmcmFtZS5pZGVudGlmaWVyKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIElQ
Qzo6Q29ubmVjdGlvbjo6c2VuZChtX2Nvbm5lY3Rpb25JRCwgTWVzc2FnZXM6OlJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwOjpHZXRWaWRlb0ZyYW1lQnVmZmVyKGZyYW1lLnJlYWQoKSksIDAsIElQ
Qzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5
KTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3IuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwUHJveHlQcm9jZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjhmN2M3OGJiYzg0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNz
b3IuaApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9D
RVNTKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3Rl
VmlkZW9GcmFtZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRWaWRlb0ZyYW1lLmgiCisj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KKwordXNpbmcgQ1ZQ
aXhlbEJ1ZmZlclBvb2xSZWYgPSBzdHJ1Y3QgX19DVlBpeGVsQnVmZmVyUG9vbCo7CisKK25hbWVz
cGFjZSBJUEMgeworY2xhc3MgQ29ubmVjdGlvbjsKK2NsYXNzIERlY29kZXI7Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lUHJveHk7CisKK2NsYXNzIFJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3IgOiBwdWJsaWMgSVBDOjpDb25u
ZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBHUFVQcm9jZXNzQ29ubmVj
dGlvbjo6Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwUHJveHlQcm9jZXNzb3I+IGNyZWF0ZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpOwor
ICAgIH5SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yKCk7CisKKyAgICB1
c2luZyBDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+
JiYpPjsKKyAgICB2b2lkIGdldFZpZGVvRnJhbWVCdWZmZXIoY29uc3QgUmVtb3RlVmlkZW9GcmFt
ZVByb3h5JiwgQ2FsbGJhY2smJik7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgUmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3NvcihHUFVQcm9jZXNzQ29ubmVjdGlvbiYpOwor
CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdm9pZCBzZXRTaGFyZWRWaWRlb0Zy
YW1lU2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYpOworICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9G
cmFtZU1lbW9yeShjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpOworICAgIHZvaWQgdmlk
ZW9GcmFtZUJ1ZmZlck5vdEZvdW5kKFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyKTsKKyAgICB2
b2lkIG5ld1ZpZGVvRnJhbWVCdWZmZXIoUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIpOworCisg
ICAgLy8gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudAorICAgIHZvaWQgZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpOworCisgICAgdm9pZCBjbGVh
ckNhbGxiYWNrcygpOworICAgIENhbGxiYWNrIHRha2VDYWxsYmFjayhSZW1vdGVWaWRlb0ZyYW1l
SWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgTG9jayBtX2Nvbm5lY3Rpb25Mb2NrOworICAg
IElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgbV9jb25uZWN0aW9uSUQgV1RGX0dVQVJERURfQllf
TE9DSyhtX2Nvbm5lY3Rpb25Mb2NrKTsKKyAgICBMb2NrIG1fY2FsbGJhY2tzTG9jazsKKyAgICBI
YXNoTWFwPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLCBDYWxsYmFjaz4gbV9jYWxsYmFja3Mg
V1RGX0dVQVJERURfQllfTE9DSyhtX2NhbGxiYWNrc0xvY2spOworICAgIFJlZjxXb3JrUXVldWU+
IG1fcXVldWU7CisgICAgU2hhcmVkVmlkZW9GcmFtZVJlYWRlciBtX3NoYXJlZFZpZGVvRnJhbWVS
ZWFkZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcFByb3h5UHJvY2Vzc29yLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvci5t
ZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFmYjkz
NjQ5NWFiZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3IubWVzc2FnZXMu
aW4KQEAgLTAsMCArMSwzMiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJM
RShHUFVfUFJPQ0VTUykKKworbWVzc2FnZXMgLT4gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQ
cm94eVByb2Nlc3NvciB7CisgICAgU2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFwaG9yZShJUEM6OlNl
bWFwaG9yZSBzZW1hcGhvcmUpCisgICAgU2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeShXZWJLaXQ6
OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHN0b3JhZ2VIYW5kbGUpCisgICAgVmlkZW9GcmFtZUJ1
ZmZlck5vdEZvdW5kKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmll
cikKKyAgICBOZXdWaWRlb0ZyYW1lQnVmZmVyKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZUlkZW50
aWZpZXIgaWRlbnRpZmllcikKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYm
IFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmNwcAppbmRleCA3Nzk5YTMwNjFjZDUuLmU4NDBjZDI4OTU3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCkBAIC0xNDIsNiArMTQyLDcgQEAgdm9pZCBTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKIHsK
ICAgICBpZiAobV9wYXVzZWQpCiAgICAgICAgIHJldHVybjsKKwogICAgIGlmIChpczxSZW1vdGVW
aWRlb0ZyYW1lUHJveHk+KHNhbXBsZSkpIHsKICAgICAgICAgYXV0byYgcmVtb3RlU2FtcGxlID0g
ZG93bmNhc3Q8UmVtb3RlVmlkZW9GcmFtZVByb3h5PihzYW1wbGUpOwogICAgICAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6RW5x
dWV1ZVNhbXBsZSB7IHJlbW90ZVNhbXBsZS5yZWFkKCkgfSwgbV9pZGVudGlmaWVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQ
cm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGli
V2ViUlRDUHJvdmlkZXIuY3BwCmluZGV4IDA3MGM3M2Q4NTc2ZS4uOGVkZmRhOWQyMmU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0
Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgcnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpj
cmVhdGVQZWUKICAgICBpZiAoIW1fZGlkSW5pdGlhbGl6ZUNhbGxiYWNrKSB7CiAgICAgICAgIC8v
IFdlIGluaXRpYWxpemUgb25seSBvbmNlIHNpbmNlIGNhbGxiYWNrcyBhcmUgdXNlZCBpbiBiYWNr
Z3JvdW5kIHRocmVhZHMuCiAgICAgICAgIGF1dG8qIHBhZ2UgPSBtX3dlYlBhZ2UuY29yZVBhZ2Uo
KTsKLSAgICAgICAgTGliV2ViUlRDQ29kZWNzOjpzZXRDYWxsYmFja3MocGFnZSAmJiBwYWdlLT5z
ZXR0aW5ncygpLndlYlJUQ1BsYXRmb3JtQ29kZWNzSW5HUFVQcm9jZXNzRW5hYmxlZCgpKTsKKyAg
ICAgICAgTGliV2ViUlRDQ29kZWNzOjpzZXRDYWxsYmFja3MocGFnZSAmJiBwYWdlLT5zZXR0aW5n
cygpLndlYlJUQ1BsYXRmb3JtQ29kZWNzSW5HUFVQcm9jZXNzRW5hYmxlZCgpLCBwYWdlICYmIHBh
Z2UtPnNldHRpbmdzKCkud2ViUlRDUmVtb3RlVmlkZW9GcmFtZUVuYWJsZWQoKSk7CiAgICAgICAg
IG1fZGlkSW5pdGlhbGl6ZUNhbGxiYWNrID0gdHJ1ZTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5t
bQppbmRleCA1OTIwMzY1OTM2ZjEuLjczZWM0MTQ3MzA3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAtNzEs
NyArNzEsNyBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKICAgICBpZiAoYXV0byogY2FwdHVyZU1hbmFnZXIgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5zdXBwbGVtZW50PFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyPigpKQotICAgICAgICBjYXB0dXJl
TWFuYWdlci0+c2V0dXBDYXB0dXJlUHJvY2Vzc2VzKHBhcmFtZXRlcnMuc2hvdWxkQ2FwdHVyZUF1
ZGlvSW5VSVByb2Nlc3MsIHBhcmFtZXRlcnMuc2hvdWxkQ2FwdHVyZUF1ZGlvSW5HUFVQcm9jZXNz
LCBwYXJhbWV0ZXJzLnNob3VsZENhcHR1cmVWaWRlb0luVUlQcm9jZXNzLCBwYXJhbWV0ZXJzLnNo
b3VsZENhcHR1cmVWaWRlb0luR1BVUHJvY2VzcywgcGFyYW1ldGVycy5zaG91bGRDYXB0dXJlRGlz
cGxheUluVUlQcm9jZXNzKTsKKyAgICAgICAgY2FwdHVyZU1hbmFnZXItPnNldHVwQ2FwdHVyZVBy
b2Nlc3NlcyhwYXJhbWV0ZXJzLnNob3VsZENhcHR1cmVBdWRpb0luVUlQcm9jZXNzLCBwYXJhbWV0
ZXJzLnNob3VsZENhcHR1cmVBdWRpb0luR1BVUHJvY2VzcywgcGFyYW1ldGVycy5zaG91bGRDYXB0
dXJlVmlkZW9JblVJUHJvY2VzcywgcGFyYW1ldGVycy5zaG91bGRDYXB0dXJlVmlkZW9JbkdQVVBy
b2Nlc3MsIHBhcmFtZXRlcnMuc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2VzcywgbV9wYWdl
LT5zZXR0aW5ncygpLndlYlJUQ1JlbW90ZVZpZGVvRnJhbWVFbmFibGVkKCkpOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0
dXJlU2FtcGxlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVt
b3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwCmluZGV4IGIxZWY4ZjU2NDUyZi4uNTczMGRkNDI5
YzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2Fw
dHVyZVNhbXBsZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5oIgor
I2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94eS5oIgogI2luY2x1ZGUgIlNoYXJlZFJpbmdC
dWZmZXJTdG9yYWdlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oPgpAQCAtMTMzLDYgKzEzNSwxMiBAQCB2b2lkIFJl
bW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjpkaWRVcGRhdGVTb3VyY2VDb25uZWN0aW9uKElQQzo6
Q29ubmVjdGlvbiogY29ubgogICAgIHNldENvbm5lY3Rpb24oY29ubmVjdGlvbik7CiB9CiAKK3Zv
aWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OnNldFJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwUHJveHkoUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSogcHJveHkpCit7CisgICAg
TG9ja2VyIGxvY2sobV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5TG9jayk7CisgICAg
bV9yZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5ID0gcHJveHk7Cit9CisKIHZvaWQgUmVt
b3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OmRpc3BhdGNoVG9UaHJlYWQoRnVuY3Rpb248dm9pZCgp
PiYmIGNhbGxiYWNrKQogewogICAgIG1fcXVldWUtPmRpc3BhdGNoKFdURk1vdmUoY2FsbGJhY2sp
KTsKQEAgLTE1MCwxNSArMTU4LDM1IEBAIHZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6
OmF1ZGlvU3RvcmFnZUNoYW5nZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjCiAgICAgaXRl
cmF0b3ItPnZhbHVlLT5zZXRTdG9yYWdlKGlwY0hhbmRsZS5oYW5kbGUsIGRlc2NyaXB0aW9uLCBu
dW1iZXJPZkZyYW1lcywgV1RGTW92ZShzZW1hcGhvcmUpLCBtZWRpYVRpbWUsIGZyYW1lQ2h1bmtT
aXplKTsKIH0KIAotdm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6dmlkZW9TYW1wbGVB
dmFpbGFibGUoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3Rl
VmlkZW9TYW1wbGUmJiBzYW1wbGUsIFZpZGVvU2FtcGxlTWV0YWRhdGEgbWV0YWRhdGEpCit2b2lk
IFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShSZWFsdGlt
ZU1lZGlhU291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVWaWRlb1NhbXBsZSYmIHNh
bXBsZSwgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj4gcmVtb3RlSWRl
bnRpZmllciwgVmlkZW9TYW1wbGVNZXRhZGF0YSBtZXRhZGF0YSkKIHsKICAgICBBU1NFUlQoIVdU
Rjo6aXNNYWluUnVuTG9vcCgpKTsKIAorICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gdmlkZW9GcmFt
ZTsKKyAgICAvLyBXZSBhbHdheXMgY3JlYXRlIFJlbW90ZVZpZGVvRnJhbWVQcm94eSBzbyB0aGF0
IHdlIGNhbiByZWxlYXNlIHRoZSBjb3JyZXNwb25kaW5nIEdQVVByb2Nlc3MgSU9TdXJmYWNlIHJp
Z2h0IGF3YXkgaWYgdGhlcmUgaXMgbm8gdmlkZW8gc291cmNlLgorICAgIGlmIChyZW1vdGVJZGVu
dGlmaWVyKSB7CisgICAgICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyBwcm9w
ZXJ0aWVzIHsgeyAqcmVtb3RlSWRlbnRpZmllciwgMCB9LCBzYW1wbGUudGltZSgpLCBzYW1wbGUu
bWlycm9yZWQoKSwgc2FtcGxlLnJvdGF0aW9uKCksIHNhbXBsZS5zaXplKCksIHNhbXBsZS52aWRl
b0Zvcm1hdCgpIH07CisgICAgICAgIAorICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBlaXRo
ZXIgZ2V0IEdQVVByb2Nlc3Mgb3IgVUlQcm9jZXNzIG9iamVjdCBoZWFwIHByb3h5LiBGb3Igbm93
IHdlIGFsd2F5cyBnbyB0byBHUFVQcm9jZXNzLgorICAgICAgICBMb2NrZXIgbG9jayhtX3JlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlMb2NrKTsKKyAgICAgICAgdmlkZW9GcmFtZSA9IFJl
bW90ZVZpZGVvRnJhbWVQcm94eTo6Y3JlYXRlKCptX2Nvbm5lY3Rpb24sIHByb3BlcnRpZXMsIFtw
cm94eSA9IG1fcmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eV0oYXV0byYgZnJhbWUsIGF1
dG8mJiBjYWxsYmFjaykgeworICAgICAgICAgICAgaWYgKCFwcm94eSkgeworICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgcHJveHktPmdldFZpZGVvRnJhbWVCdWZmZXIoZnJhbWUsIFdURk1vdmUo
Y2FsbGJhY2spKTsKKyAgICAgICAgfSk7CisgICAgfQorCiAgICAgYXV0byBpdGVyYXRvciA9IG1f
dmlkZW9Tb3VyY2VzLmZpbmQoaWRlbnRpZmllcik7CiAgICAgaWYgKGl0ZXJhdG9yID09IG1fdmlk
ZW9Tb3VyY2VzLmVuZCgpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIlVu
YWJsZSB0byBmaW5kIHNvdXJjZSAlbGx1IGZvciByZW1vdGVWaWRlb1NhbXBsZUF2YWlsYWJsZSIs
IGlkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYg
KHZpZGVvRnJhbWUpIHsKKyAgICAgICAgaXRlcmF0b3ItPnZhbHVlLT52aWRlb0ZyYW1lQXZhaWxh
YmxlKHZpZGVvRnJhbWUucmVsZWFzZU5vbk51bGwoKSwgc2FtcGxlLnNpemUoKSwgbWV0YWRhdGEp
OworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGl0ZXJhdG9yLT52YWx1ZS0+dmlkZW9TYW1w
bGVBdmFpbGFibGUoV1RGTW92ZShzYW1wbGUpLCBtZXRhZGF0YSk7CiB9CiAKQEAgLTI0NywxMCAr
Mjc1LDE1IEBAIHZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OlJlbW90ZVZpZGVvOjp2
aWRlb1NhbXBsZUF2YWlsYWJsZShSZW1vdGVWaWRlb1NhCiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIHZpZGVvRnJhbWVBdmFpbGFibGUo
c2FtcGxlUmVmLnJlbGVhc2VOb25OdWxsKCksIHJlbW90ZVNhbXBsZS5zaXplKCksIG1ldGFkYXRh
KTsKK30KKwordm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6UmVtb3RlVmlkZW86OnZp
ZGVvRnJhbWVBdmFpbGFibGUoUmVmPE1lZGlhU2FtcGxlPiYmIHNhbXBsZSwgSW50U2l6ZSBzaXpl
LCBWaWRlb1NhbXBsZU1ldGFkYXRhIG1ldGFkYXRhKQorewogICAgIHN3aXRjaE9uKG1fc291cmNl
LCBbJl0oUmVmPFJlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2U+JiBzb3VyY2UpIHsKLSAgICAgICAg
c291cmNlLT52aWRlb1NhbXBsZUF2YWlsYWJsZSgqc2FtcGxlUmVmLCByZW1vdGVTYW1wbGUuc2l6
ZSgpLCBtZXRhZGF0YSk7CisgICAgICAgIHNvdXJjZS0+dmlkZW9TYW1wbGVBdmFpbGFibGUoc2Ft
cGxlLmdldCgpLCBzaXplLCBtZXRhZGF0YSk7CiAgICAgfSwgWyZdKFJlZjxSZW1vdGVSZWFsdGlt
ZURpc3BsYXlTb3VyY2U+JiBzb3VyY2UpIHsKLSAgICAgICAgc291cmNlLT5yZW1vdGVWaWRlb1Nh
bXBsZUF2YWlsYWJsZSgqc2FtcGxlUmVmLCBtZXRhZGF0YSk7CisgICAgICAgIHNvdXJjZS0+cmVt
b3RlVmlkZW9TYW1wbGVBdmFpbGFibGUoc2FtcGxlLmdldCgpLCBtZXRhZGF0YSk7CiAgICAgfSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVD
YXB0dXJlU2FtcGxlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Jl
bW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmgKaW5kZXggODZmNDkwYjc4MGZlLi5iZjFkYTlkZGNl
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0
dXJlU2FtcGxlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9S
ZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5oCkBAIC0zMywxMSArMzMsMTMgQEAKICNpbmNsdWRl
ICJSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVhbHRpbWVE
aXNwbGF5U291cmNlLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5oIgor
I2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVk
TWVtb3J5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2Vi
QXVkaW9CdWZmZXJMaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNDYsNiArNDgsNyBAQCBjbGFzcyBSZW1vdGVWaWRlb1NhbXBsZTsKIH0KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CitjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5Owog
CiBjbGFzcyBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlciA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rp
b246OlRocmVhZE1lc3NhZ2VSZWNlaXZlclJlZkNvdW50ZWQgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwpAQCAtNjAsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVTb3Vy
Y2UoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCBk
aWRVcGRhdGVTb3VyY2VDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiopOworICAgIHZvaWQgc2V0
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eShSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cFByb3h5Kik7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpOwogCkBAIC03MCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgLy8gTWVz
c2FnZXMKICAgICB2b2lkIGF1ZGlvU3RvcmFnZUNoYW5nZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgY29uc3Qg
V2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgdWludDY0X3QgbnVtYmVyT2ZGcmFt
ZXMsIElQQzo6U2VtYXBob3JlJiYsIGNvbnN0IE1lZGlhVGltZSYsIHNpemVfdCBmcmFtZVNhbXBs
ZVNpemUpOwogICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2VJZGVudGlmaWVyLCBNZWRpYVRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVz
KTsKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFT
b3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmLCBXZWJDb3JlOjpW
aWRlb1NhbXBsZU1ldGFkYXRhKTsKKyAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1Nh
bXBsZSYmLCBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPiwgV2ViQ29y
ZTo6VmlkZW9TYW1wbGVNZXRhZGF0YSk7CiAKICAgICB2b2lkIHNldENvbm5lY3Rpb24oSVBDOjpD
b25uZWN0aW9uKik7CiAKQEAgLTEwNiw2ICsxMTAsNyBAQCBwcml2YXRlOgogICAgICAgICBleHBs
aWNpdCBSZW1vdGVWaWRlbyhTb3VyY2UmJik7CiAKICAgICAgICAgdm9pZCB2aWRlb1NhbXBsZUF2
YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmLCBXZWJDb3JlOjpWaWRlb1NhbXBs
ZU1ldGFkYXRhKTsKKyAgICAgICAgdm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFJlZjxXZWJDb3Jl
OjpNZWRpYVNhbXBsZT4mJiwgV2ViQ29yZTo6SW50U2l6ZSwgV2ViQ29yZTo6VmlkZW9TYW1wbGVN
ZXRhZGF0YSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBTb3VyY2UgbV9zb3VyY2U7CkBAIC0x
MTUsMTAgKzEyMCwxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1JlZ2lzdGVyZWRUb1BhcmVu
dFByb2Nlc3NDb25uZWN0aW9uIHsgZmFsc2UgfTsKICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVl
OwogICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKLQogICAgIC8vIGJh
Y2tncm91bmQgdGhyZWFkIG1lbWJlcgogICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVBdWRpbz4+IG1fYXVkaW9T
b3VyY2VzOwogICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZp
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlbz4+IG1fdmlkZW9Tb3VyY2VzOworCisgICAg
TG9jayBtX3JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlMb2NrOworICAgIFJlZlB0cjxS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5PiBtX3JlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwUHJveHkgV1RGX0dVQVJERURfQllfTE9DSyhtX3JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
UHJveHlMb2NrKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IDg2NTFiM2NkNzk5YS4uOTY3MjIxODQxZTBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVy
ZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsy
NSw3IEBACiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyIE5vdFJlZkNv
dW50ZWQgewogICAgIEF1ZGlvU3RvcmFnZUNoYW5nZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZUlkZW50aWZpZXIgaWQsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3RvcmFn
ZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCB1
aW50NjRfdCBudW1iZXJPZkZyYW1lcywgSVBDOjpTZW1hcGhvcmUgY2FwdHVyZVNlbWFwaG9yZSwg
TWVkaWFUaW1lIG1lZGlhVGltZSwgc2l6ZV90IGZyYW1lQ2h1bmtTaXplKTsKLSAgICBWaWRlb1Nh
bXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwg
V2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxlLCBzdHJ1Y3QgV2ViQ29yZTo6VmlkZW9T
YW1wbGVNZXRhZGF0YSBtZXRhZGF0YSkKKyAgICBWaWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3Jl
OjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9T
YW1wbGUgc2FtcGxlLCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZUlkZW50
aWZpZXI+IHJlbW90ZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpWaWRlb1NhbXBsZU1ldGFk
YXRhIG1ldGFkYXRhKQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VQcm94eS5j
cHAKaW5kZXggOGE1OWFlMWEyOGZhLi40YTI5NGQ4YzU0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZU1lZGlh
U291cmNlUHJveHkuY3BwCkBAIC02OCw5ICs2OCw5IEBAIHZvaWQgUmVtb3RlUmVhbHRpbWVNZWRp
YVNvdXJjZVByb3h5OjpzdG9wUHJvZHVjaW5nRGF0YSgpCiAgICAgY29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpTdG9wUHJvZHVjaW5nRGF0
YSB7IG1faWRlbnRpZmllciB9LCAwKTsKIH0KIAotdm9pZCBSZW1vdGVSZWFsdGltZU1lZGlhU291
cmNlUHJveHk6OmNyZWF0ZVJlbW90ZU1lZGlhU291cmNlKGNvbnN0IFN0cmluZyYgZGV2aWNlSURI
YXNoU2FsdCwgQ3JlYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlUmVhbHRpbWVN
ZWRpYVNvdXJjZVByb3h5OjpjcmVhdGVSZW1vdGVNZWRpYVNvdXJjZShjb25zdCBTdHJpbmcmIGRl
dmljZUlESGFzaFNhbHQsIENyZWF0ZUNhbGxiYWNrJiYgY2FsbGJhY2ssIGJvb2wgc2hvdWxkVXNl
UmVtb3RlRnJhbWUpCiB7Ci0gICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OkNyZWF0ZU1lZGlhU291cmNlRm9y
Q2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyhpZGVudGlmaWVyKCksIG1fZGV2aWNlLCBkZXZp
Y2VJREhhc2hTYWx0LCBtX2NvbnN0cmFpbnRzKSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIGNv
bm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlclByb3h5OjpDcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3Ry
YWludHMoaWRlbnRpZmllcigpLCBtX2RldmljZSwgZGV2aWNlSURIYXNoU2FsdCwgbV9jb25zdHJh
aW50cywgc2hvdWxkVXNlUmVtb3RlRnJhbWUpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKIHZv
aWQgUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZVByb3h5OjphcHBseUNvbnN0cmFpbnRzKGNvbnN0
IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzLCBSZWFsdGltZU1lZGlhU291cmNlOjpBcHBs
eUNvbnN0cmFpbnRzSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lTWVkaWFT
b3VyY2VQcm94eS5oCmluZGV4IGU2MDMxZGZkYmVmZS4uNjY2YjljMTJhYmJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJj
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0
aW1lTWVkaWFTb3VyY2VQcm94eS5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29s
IHNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZENhcHR1
cmVJbkdQVVByb2Nlc3M7IH0KIAogICAgIHVzaW5nIENyZWF0ZUNhbGxiYWNrID0gQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sLCBTdHJpbmcmJiwgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzJiYsIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmJiwg
VmVjdG9yPFdlYkNvcmU6OlZpZGVvUHJlc2V0RGF0YT4mJiwgV2ViQ29yZTo6SW50U2l6ZSwgZG91
YmxlKT47Ci0gICAgdm9pZCBjcmVhdGVSZW1vdGVNZWRpYVNvdXJjZShjb25zdCBTdHJpbmcmLCBD
cmVhdGVDYWxsYmFjayYmKTsKKyAgICB2b2lkIGNyZWF0ZVJlbW90ZU1lZGlhU291cmNlKGNvbnN0
IFN0cmluZyYsIENyZWF0ZUNhbGxiYWNrJiYsIGJvb2wgc2hvdWxkVXNlUmVtb3RlRnJhbWUgPSBm
YWxzZSk7CiAKICAgICB2b2lkIGFwcGx5Q29uc3RyYWludHNTdWNjZWVkZWQoKTsKICAgICB2b2lk
IGFwcGx5Q29uc3RyYWludHNGYWlsZWQoU3RyaW5nJiYgZmFpbGVkQ29uc3RyYWludCwgU3RyaW5n
JiYgZXJyb3JNZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9SZW1vdGVSZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZVZpZGVvU291cmNlLmNwcAppbmRleCBlY2Q4NmMwZmE1
MzUuLmQyZDI0YWJhYjllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1JlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZVZpZGVvU291cmNlLmNwcApAQCAtODQsNyArODQs
NyBAQCB2b2lkIFJlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZVJlbW90ZU1lZGlhU291
cmNlKCkKICAgICAgICAgbV9wcm94eS5zZXRBc1JlYWR5KCk7CiAgICAgICAgIGlmIChtX3Byb3h5
LnNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MoKSkKICAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuYWRkQ2xpZW50KCp0aGlzKTsK
LSAgICB9KTsKKyAgICB9LCBtX21hbmFnZXIuc2hvdWxkVXNlR1BVUHJvY2Vzc1JlbW90ZUZyYW1l
cygpKTsKIH0KIAogUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZTo6flJlbW90ZVJlYWx0aW1lVmlk
ZW9Tb3VyY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKaW5kZXggMWVlOTIzMDY5Y2RjLi5jNWZmNzI1
NzQ3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcApAQCAtNzAsOCArNzAsOSBAQCBjb25zdCBjaGFy
KiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUoKQogICAgIHJldHVybiAi
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIiOwogfQogCi12b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyOjpzZXR1cENhcHR1cmVQcm9jZXNzZXMoYm9vbCBzaG91bGRDYXB0dXJlQXVkaW9JblVJUHJv
Y2VzcywgYm9vbCBzaG91bGRDYXB0dXJlQXVkaW9JbkdQVVByb2Nlc3MsIGJvb2wgc2hvdWxkQ2Fw
dHVyZVZpZGVvSW5VSVByb2Nlc3MsIGJvb2wgc2hvdWxkQ2FwdHVyZVZpZGVvSW5HUFVQcm9jZXNz
LCBib29sIHNob3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3MpCit2b2lkIFVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyOjpzZXR1cENhcHR1cmVQcm9jZXNzZXMoYm9vbCBzaG91bGRDYXB0dXJlQXVk
aW9JblVJUHJvY2VzcywgYm9vbCBzaG91bGRDYXB0dXJlQXVkaW9JbkdQVVByb2Nlc3MsIGJvb2wg
c2hvdWxkQ2FwdHVyZVZpZGVvSW5VSVByb2Nlc3MsIGJvb2wgc2hvdWxkQ2FwdHVyZVZpZGVvSW5H
UFVQcm9jZXNzLCBib29sIHNob3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3MsIGJvb2wgc2hv
dWxkVXNlR1BVUHJvY2Vzc1JlbW90ZUZyYW1lcykKIHsKKyAgICBtX3Nob3VsZFVzZUdQVVByb2Nl
c3NSZW1vdGVGcmFtZXMgPSBzaG91bGRVc2VHUFVQcm9jZXNzUmVtb3RlRnJhbWVzOwogICAgIC8v
IEZJWE1FKHJkYXI6Ly84NDI3ODE0Nik6IEFkb3B0IEFWQ2FwdHVyZVNlc3Npb24gYXR0cmlidXRp
b24gQVBJIGZvciBjYW1lcmEgYWNjZXNzIGluIHRoZSB3ZWIgcHJvY2VzcyBpZiBzaG91bGRDYXB0
dXJlVmlkZW9JbkdQVVByb2Nlc3MgaXMgZmFsc2UuCiAgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OnNpbmdsZXRvbigpLnNldE1vY2tBdWRpb0NhcHR1cmVFbmFibGVkKCFzaG91bGRD
YXB0dXJlQXVkaW9JblVJUHJvY2VzcyAmJiAhc2hvdWxkQ2FwdHVyZUF1ZGlvSW5HUFVQcm9jZXNz
KTsKICAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc2V0TW9j
a1ZpZGVvQ2FwdHVyZUVuYWJsZWQoIXNob3VsZENhcHR1cmVWaWRlb0luVUlQcm9jZXNzICYmICFz
aG91bGRDYXB0dXJlVmlkZW9JbkdQVVByb2Nlc3MpOwpAQCAtMjMwLDE0ICsyMzEsMjEgQEAgdm9p
ZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6QXVkaW9GYWN0b3J5OjpzZXRTaG91bGRDYXB0dXJl
SW5HUFVQcm9jZXNzKGJvb2wgdmEKICAgICBtX3Nob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MgPSB2
YWx1ZTsKIH0KIAordm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6VmlkZW9GYWN0b3J5Ojpz
ZXRTaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKGJvb2wgdmFsdWUpCit7CisgICAgbV9zaG91bGRD
YXB0dXJlSW5HUFVQcm9jZXNzID0gdmFsdWU7Cit9CisKIENhcHR1cmVTb3VyY2VPckVycm9yIFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpWaWRlb0ZhY3Rvcnk6OmNyZWF0ZVZpZGVvQ2FwdHVyZVNv
dXJjZShjb25zdCBDYXB0dXJlRGV2aWNlJiBkZXZpY2UsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25z
dCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykKIHsKICNpZiAhRU5BQkxFKEdQVV9QUk9D
RVNTKQogICAgIGlmIChtX3Nob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MpCiAgICAgICAgIHJldHVy
biBDYXB0dXJlU291cmNlT3JFcnJvciB7ICJWaWRlbyBjYXB0dXJlIGluIEdQVVByb2Nlc3MgaXMg
bm90IGltcGxlbWVudGVkIl9zIH07CiAjZW5kaWYKKyAgICBpZiAobV9zaG91bGRDYXB0dXJlSW5H
UFVQcm9jZXNzKQorICAgICAgICBtX21hbmFnZXIubV9yZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdl
ci5zZXRSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5KCZXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLnJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwUHJveHkoKSk7CiAKLSAgICBib29sIHNob3VsZFVzZUlPU3VyZmFjZSA9IGZhbHNlOworICAg
IGJvb2wgc2hvdWxkVXNlSU9TdXJmYWNlID0gIW1fbWFuYWdlci5tX3Nob3VsZFVzZUdQVVByb2Nl
c3NSZW1vdGVGcmFtZXM7CiAgICAgcmV0dXJuIENhcHR1cmVTb3VyY2VPckVycm9yKFJlYWx0aW1l
VmlkZW9Tb3VyY2U6OmNyZWF0ZShSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUoZGV2
aWNlLCBjb25zdHJhaW50cywgeyB9LCBXVEZNb3ZlKGhhc2hTYWx0KSwgbV9tYW5hZ2VyLCBtX3No
b3VsZENhcHR1cmVJbkdQVVByb2Nlc3MpLCBzaG91bGRVc2VJT1N1cmZhY2UpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXIuaAppbmRleCA3YzU0YTJhMzBjZDUuLjA2OTAxNzBmOTdlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBz
dXBwbGVtZW50TmFtZSgpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21HUFVQcm9j
ZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7
IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9Ci0gICAgdm9pZCBzZXR1
cENhcHR1cmVQcm9jZXNzZXMoYm9vbCBzaG91bGRDYXB0dXJlQXVkaW9JblVJUHJvY2VzcywgYm9v
bCBzaG91bGRDYXB0dXJlQXVkaW9JbkdQVVByb2Nlc3MsIGJvb2wgc2hvdWxkQ2FwdHVyZVZpZGVv
SW5VSVByb2Nlc3MsIGJvb2wgc2hvdWxkQ2FwdHVyZVZpZGVvSW5HUFVQcm9jZXNzLCBib29sIHNo
b3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3MpOworICAgIHZvaWQgc2V0dXBDYXB0dXJlUHJv
Y2Vzc2VzKGJvb2wgc2hvdWxkQ2FwdHVyZUF1ZGlvSW5VSVByb2Nlc3MsIGJvb2wgc2hvdWxkQ2Fw
dHVyZUF1ZGlvSW5HUFVQcm9jZXNzLCBib29sIHNob3VsZENhcHR1cmVWaWRlb0luVUlQcm9jZXNz
LCBib29sIHNob3VsZENhcHR1cmVWaWRlb0luR1BVUHJvY2VzcywgYm9vbCBzaG91bGRDYXB0dXJl
RGlzcGxheUluVUlQcm9jZXNzLCBib29sIHNob3VsZFVzZUdQVVByb2Nlc3NSZW1vdGVGcmFtZXMp
OwogCiAgICAgdm9pZCBhZGRTb3VyY2UoUmVmPFJlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2U+JiYp
OwogICAgIHZvaWQgYWRkU291cmNlKFJlZjxSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlPiYmKTsK
QEAgLTY1LDYgKzY1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlU291cmNlKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZUNhcHR1cmVTYW1w
bGVNYW5hZ2VyJiByZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcigpIHsgcmV0dXJuIG1fcmVtb3Rl
Q2FwdHVyZVNhbXBsZU1hbmFnZXI7IH0KKyAgICBib29sIHNob3VsZFVzZUdQVVByb2Nlc3NSZW1v
dGVGcmFtZXMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFVzZUdQVVByb2Nlc3NSZW1vdGVGcmFt
ZXM7IH0KIAogcHJpdmF0ZToKICAgICAvLyBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlIGZh
Y3RvcmllcwpAQCAtODUsNyArODYsNyBAQCBwcml2YXRlOgogICAgIGNsYXNzIFZpZGVvRmFjdG9y
eSA6IHB1YmxpYyBXZWJDb3JlOjpWaWRlb0NhcHR1cmVGYWN0b3J5IHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIGV4cGxpY2l0IFZpZGVvRmFjdG9yeShVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciYgbWFu
YWdlcikgOiBtX21hbmFnZXIobWFuYWdlcikgeyB9Ci0gICAgICAgIHZvaWQgc2V0U2hvdWxkQ2Fw
dHVyZUluR1BVUHJvY2Vzcyhib29sIHZhbHVlKSB7IG1fc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2Vz
cyA9IHZhbHVlOyB9CisgICAgICAgIHZvaWQgc2V0U2hvdWxkQ2FwdHVyZUluR1BVUHJvY2Vzcyhi
b29sKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFdlYkNvcmU6OkNhcHR1cmVTb3VyY2VPckVy
cm9yIGNyZWF0ZVZpZGVvQ2FwdHVyZVNvdXJjZShjb25zdCBXZWJDb3JlOjpDYXB0dXJlRGV2aWNl
JiwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHMqKSBm
aW5hbDsKQEAgLTEzNyw2ICsxMzgsNyBAQCBwcml2YXRlOgogICAgIFZpZGVvRmFjdG9yeSBtX3Zp
ZGVvRmFjdG9yeTsKICAgICBEaXNwbGF5RmFjdG9yeSBtX2Rpc3BsYXlGYWN0b3J5OwogICAgIFJl
bW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyIG1fcmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI7Cisg
ICAgYm9vbCBtX3Nob3VsZFVzZUdQVVByb2Nlc3NSZW1vdGVGcmFtZXMgeyBmYWxzZSB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggMTZiZDM2MmM5MzY2Li44NjRlMThmMzgzM2EgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAyMi0wMi0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAg
ICAgU3VwcG9ydCByZW1vdGUgdmlkZW8gZnJhbWVzIGluIFdlYlJUQyB2aWRlbyBwaXBlbGluZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MzU2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgc3dp
dGNoaW5nIG9uIHRoZSBuZXcgcmVtb3RlIHZpZGVvIGZyYW1lIGZsYWcuCisKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmNwcDoKKwogMjAyMi0wMi0xMSAgS2ltbW8gS2lu
bnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEludHJvZHVjZSBhIFJlbW90
ZU1lZGlhU2FtcGxlUHJveHkgdG8gcmVwcmVzZW50IGNhcHR1cmVkIHZpZGVvIGZyYW1lcyB1c2Vk
IGluIE1lZGlhIFN0cmVhbXMgYW5kIHByZXNlbnQgaW4gR1BVUApkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RPcHRpb25zLmNwcAppbmRleCA1YTBlMDEwM2U5OTQuLmUyYjAwM2IzODdmZSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5jcHAKQEAgLTEyNSw2ICsxMjUsNyBAQCBjb25z
dCBUZXN0RmVhdHVyZXMmIFRlc3RPcHRpb25zOjpkZWZhdWx0cygpCiAgICAgICAgICAgICB7ICJU
ZXh0QXV0b3NpemluZ1VzZXNJZGVtcG90ZW50TW9kZSIsIGZhbHNlIH0sCiAgICAgICAgICAgICB7
ICJVc2VzQmFja0ZvcndhcmRDYWNoZSIsIGZhbHNlIH0sCiAgICAgICAgICAgICB7ICJXZWJBdXRo
ZW50aWNhdGlvbkVuYWJsZWQiLCB0cnVlIH0sCisgICAgICAgICAgICB7ICJXZWJSVENSZW1vdGVW
aWRlb0ZyYW1lRW5hYmxlZCIsIGZhbHNlIH0sCiAgICAgICAgICAgICB7ICJXZWJSVENNRE5TSUNF
Q2FuZGlkYXRlc0VuYWJsZWQiLCBmYWxzZSB9LAogICAgICAgICAgICAgeyAiWFNTQXVkaXRvckVu
YWJsZWQiLCBmYWxzZSB9LAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQotLSAK
Mi4zMC4xIChBcHBsZSBHaXQtMTMwKQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>