<?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>217558</bug_id>
          
          <creation_ts>2020-10-10 01:01:08 -0700</creation_ts>
          <short_desc>[GPU Process][Resource caching 3/7]: Introduce RemoteResourceCacheProxy to manage the remote resources in Web Process</short_desc>
          <delta_ts>2020-10-26 21:40:01 -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>Layout and Rendering</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>217554</dependson>
          <blocked>217342</blocked>
    
    <blocked>217566</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1696494</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-10 01:01:08 -0700</bug_when>
    <thetext>RemoteRenderingBackend will own an instance of RemoteResourceCache. One type of these resources will be the RemoteImageBuffer. We can split the responsibilities of the remote rendering in Web Process among these classes like this:

-- RemoteRenderingBackend: is responsible for sending messages to and receiving messages from the RemoteRenderingBackendProxy. It will delegate all the resource management to its RemoteResourceCache.
-- RemoteResourceCache: is responsible for managing the remote resources including the actual life cycle of these resources and syncing with the GPU Process RemoteResourceCacheProxy.
-- RemoteImageBuffer: is responsible for the ImageBuffer functionalities taking into consideration it is a remote resource, i.e drawing is recorded in WebProcess and backend lives in the GPU Process.

RemoteResourceCache has ensure the remote resources in GPU Process are available till all the clients which are referencing these remote resources are replayed back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696495</commentid>
    <comment_count>1</comment_count>
      <attachid>411007</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-10 01:06:35 -0700</bug_when>
    <thetext>Created attachment 411007
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696559</commentid>
    <comment_count>2</comment_count>
      <attachid>411025</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-10 19:52:55 -0700</bug_when>
    <thetext>Created attachment 411025
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697100</commentid>
    <comment_count>3</comment_count>
      <attachid>411025</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-12 16:03:52 -0700</bug_when>
    <thetext>Comment on attachment 411025
Patch for review

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

&gt; Source/WebKit/ChangeLog:17
&gt; +        -- m_remoteImageBufferHashMap maps ImageBuffer* -&gt; RemoteResourceIdentifier

Why can&apos;t RemoteImageBuffer just have a RemoteResourceIdentifier?

&gt; Source/WebKit/ChangeLog:19
&gt; +        -- m_remoteImageBufferMessageHandlerHashMap maps RemoteResourceIdentifier
&gt; +           -&gt; RemoteImageBufferMessageHandler*

Can RemoteImageBuffer just own the handler?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698925</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-17 01:02:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/70404552&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699397</commentid>
    <comment_count>5</comment_count>
      <attachid>411784</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-19 13:09:40 -0700</bug_when>
    <thetext>Created attachment 411784
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699405</commentid>
    <comment_count>6</comment_count>
      <attachid>411787</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-19 13:33:10 -0700</bug_when>
    <thetext>Created attachment 411787
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699432</commentid>
    <comment_count>7</comment_count>
      <attachid>411797</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-19 14:16:09 -0700</bug_when>
    <thetext>Created attachment 411797
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699521</commentid>
    <comment_count>8</comment_count>
      <attachid>411815</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-19 16:48:15 -0700</bug_when>
    <thetext>Created attachment 411815
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699537</commentid>
    <comment_count>9</comment_count>
      <attachid>411819</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-19 17:13:08 -0700</bug_when>
    <thetext>Created attachment 411819
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699584</commentid>
    <comment_count>10</comment_count>
      <attachid>411829</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-19 19:32:43 -0700</bug_when>
    <thetext>Created attachment 411829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699596</commentid>
    <comment_count>11</comment_count>
      <attachid>411829</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-19 20:44:04 -0700</bug_when>
    <thetext>Comment on attachment 411829
Patch

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

Renaming can be done in later patches.

&gt; Source/WebCore/platform/graphics/ImageBuffer.h:65
&gt; +    virtual RemoteResourceIdentifier remoteResourceIdentifier() const { return { }; }

Maybe RemoteResourceIdentifier should be RenderingResourceIdentifier so it doesn&apos;t look so out of place here.

&gt; Source/WebKit/WebProcess/GPU/graphics/PlatformRemoteImageBufferProxy.h:47
&gt; +SPECIALIZE_TYPE_TRAITS_BEGIN(WebKit::UnacceleratedRemoteImageBufferProxy)
&gt; +    static bool isType(const WebCore::ImageBuffer&amp; imageBuffer) { return imageBuffer.remoteResourceIdentifier() &amp;&amp; !imageBuffer.isAccelerated(); }
&gt; +SPECIALIZE_TYPE_TRAITS_END()
&gt; +
&gt; +#if HAVE(IOSURFACE)
&gt; +SPECIALIZE_TYPE_TRAITS_BEGIN(WebKit::AcceleratedRemoteImageBufferProxy)
&gt; +    static bool isType(const WebCore::ImageBuffer&amp; imageBuffer) { return imageBuffer.remoteResourceIdentifier() &amp;&amp; imageBuffer.isAccelerated(); }
&gt; +SPECIALIZE_TYPE_TRAITS_END()

This makes me nervous. Future refactoring could easily make isAccelerated() a dynamic thing on an ImageBuffer. Type traits need to reliably detect which concrete class an object is, not ask questions about its behavior.

I would suggest adding isUnacceleratedRemoteImageBufferProxy(), isAcceleratedRemoteImageBufferProxy() etc.

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:69
&gt; +    void commitFlushDisplayList(DisplayListFlushIdentifier flushIdentifier)

Is this a &quot;didCommitFlush&quot; that comes from the GPUP?

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:98
&gt; +            const_cast&lt;RemoteImageBufferProxy&amp;&gt;(*this).flushDisplayList(displayList);

I think we should remove the &quot;flush&quot; terminology for sending bits of display lists. There are really only 2 things we need (with preliminary names):

send(displayList)
waitForFlush()

I also think we should avoid using &quot;commit&quot; in this context.
Also, maybe the flush identifier can just be a special kind of display list item that acts like a marker in the stream.

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:130
&gt; +        static constexpr unsigned maxWaitingFlush = 3;

We have to get rid of this timeout. If the wait goes too long, we should just kill the GPU Process.

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:137
&gt; +    void flushDisplayList(const WebCore::DisplayList::DisplayList&amp; displayList) override

Why isn&apos;t this just send()?

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:118
&gt; +    sendSync(Messages::RemoteRenderingBackend::GetImageData(outputFormat, srcRect, remoteResourceIdentifier), Messages::RemoteRenderingBackend::GetImageData::Reply(imageDataReference), m_renderingBackendIdentifier, 1_s);

1s timeout is bad. What do we do if it hits?

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:148
&gt; +    if (imageBuffer-&gt;isAccelerated())
&gt; +        downcast&lt;AcceleratedRemoteImageBufferProxy&gt;(*imageBuffer).createBackend(logicalSize, backendSize, resolutionScale, colorSpace, WTFMove(handle));
&gt; +    else
&gt; +        downcast&lt;UnacceleratedRemoteImageBufferProxy&gt;(*imageBuffer).createBackend(logicalSize, backendSize, resolutionScale, colorSpace, WTFMove(handle));

Why is this not just one call to a virtual function?

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:160
&gt; +    if (imageBuffer-&gt;isAccelerated())
&gt; +        downcast&lt;AcceleratedRemoteImageBufferProxy&gt;(*imageBuffer).commitFlushDisplayList(flushIdentifier);
&gt; +    else
&gt; +        downcast&lt;UnacceleratedRemoteImageBufferProxy&gt;(*imageBuffer).commitFlushDisplayList(flushIdentifier);

Why is this not just one call to a virtual function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701703</commentid>
    <comment_count>12</comment_count>
      <attachid>412367</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-26 17:56:55 -0700</bug_when>
    <thetext>Created attachment 412367
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701733</commentid>
    <comment_count>13</comment_count>
      <attachid>412380</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-26 19:43:36 -0700</bug_when>
    <thetext>Created attachment 412380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701737</commentid>
    <comment_count>14</comment_count>
      <attachid>412382</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-26 20:24:27 -0700</bug_when>
    <thetext>Created attachment 412382
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701745</commentid>
    <comment_count>15</comment_count>
      <attachid>411829</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-26 20:55:57 -0700</bug_when>
    <thetext>Comment on attachment 411829
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/ImageBuffer.h:65
&gt;&gt; +    virtual RemoteResourceIdentifier remoteResourceIdentifier() const { return { }; }
&gt; 
&gt; Maybe RemoteResourceIdentifier should be RenderingResourceIdentifier so it doesn&apos;t look so out of place here.

Done. Type was renamed to RenderingResourceIdentifier.

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/PlatformRemoteImageBufferProxy.h:47
&gt;&gt; +SPECIALIZE_TYPE_TRAITS_END()
&gt; 
&gt; This makes me nervous. Future refactoring could easily make isAccelerated() a dynamic thing on an ImageBuffer. Type traits need to reliably detect which concrete class an object is, not ask questions about its behavior.
&gt; 
&gt; I would suggest adding isUnacceleratedRemoteImageBufferProxy(), isAcceleratedRemoteImageBufferProxy() etc.

An ImageBufferBackend should know whether it isAccelerated or not statically since this won&apos;t change at run time.  The ImageBuffer::isAccelerated() is virtual so it is a dynamic method . But ConcreteImageBuffer overrides this method to return the BackendType::isAccelerated. So It is dynamic but at compile time only. Do we plan to change the backend of an ImageBuffer at run time?

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:69
&gt;&gt; +    void commitFlushDisplayList(DisplayListFlushIdentifier flushIdentifier)
&gt; 
&gt; Is this a &quot;didCommitFlush&quot; that comes from the GPUP?

Yes. RemoteRenderingBackendProxy receives the message FlushDisplayListWasCommitted. RemoteRenderingBackendProxy::flushDisplayListWasCommitted() finds the required RemoteImageBufferProxy and calls its commitFlushDisplayList().

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:98
&gt;&gt; +            const_cast&lt;RemoteImageBufferProxy&amp;&gt;(*this).flushDisplayList(displayList);
&gt; 
&gt; I think we should remove the &quot;flush&quot; terminology for sending bits of display lists. There are really only 2 things we need (with preliminary names):
&gt; 
&gt; send(displayList)
&gt; waitForFlush()
&gt; 
&gt; I also think we should avoid using &quot;commit&quot; in this context.
&gt; Also, maybe the flush identifier can just be a special kind of display list item that acts like a marker in the stream.

I agree that the names need wordsmith but we need to look at the whole workflow to decide the naming perfectly. The currently workflow is the following:

WebP: ConcreteImageBuffer::draw() gets called.
WebP: RemoteImageBufferProxy::flushDrawingContext() gets called next.
WebP: RenderingBackendProxy::flushDisplayListAndCommit() gets called next.
WebP: Messages::RemoteRenderingBackend::FlushDisplayListAndCommit is sent with to GPUP.
WebP: RenderingBackendProxy::waitForFlushDisplayListWasCommitted() gets called next and blocks execution.
GPUP: Messages::RemoteRenderingBackend::FlushDisplayListAndCommit is received by GPUP.
GPUP: RemoteRenderingBackend::flushDisplayListAndCommit() gets called next.
GPUP: RemoteImageBuffer::flushDisplayList() gets called next.
GPUP: Messages::RemoteRenderingBackendProxy::FlushDisplayListWasCommitted() is sent to WebP
WebP: Messages::RemoteRenderingBackendProxy::FlushDisplayListWasCommitted() is received by WebP
WebP: RemoteRenderingBackendProxy::flushDisplayListWasCommitted() get called next.
WebP: RemoteImageBufferProxy::commitFlushDisplayList()
WebP: RenderingBackendProxy::waitForFlushDisplayListWasCommitted() returns. 
WebP: RemoteImageBufferProxy::flushDrawingContext()
WebP: ConcreteImageBuffer::draw() draws the ImageBuffer.

RenderingBackendProxy and RenderingBackend are the mediators for all the messages sent by and to RemoteImageBufferProxy and RemoteImageBuffer. So I think the name &quot;send&quot; is a little be insufficient especially there are two types and hence two messages for flushing a displayList: RemoteRenderingBackend::FlushDisplayList and RemoteRenderingBackend::FlushDisplayListAndCommit. 

Also the verb &quot;commit&quot; might not be suitable in this context. But we need a way to differentiate between &quot;flush with reply&quot; and &quot;flush without reply&quot;.

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:130
&gt;&gt; +        static constexpr unsigned maxWaitingFlush = 3;
&gt; 
&gt; We have to get rid of this timeout. If the wait goes too long, we should just kill the GPU Process.

The loop here is not to extend the waiting time. The loop here tries to wait for the FlushDisplayListWasCommitted message which makes isPendingFlush() false. With batch flushing and eager flushing we may be sending multiple FlushDisplayList messages before requesting to commit all of them.

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:118
&gt;&gt; +    sendSync(Messages::RemoteRenderingBackend::GetImageData(outputFormat, srcRect, remoteResourceIdentifier), Messages::RemoteRenderingBackend::GetImageData::Reply(imageDataReference), m_renderingBackendIdentifier, 1_s);
&gt; 
&gt; 1s timeout is bad. What do we do if it hits?

I am not sure. We may need address all the sync and waiting cases and see how to timeout all of them.

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:148
&gt;&gt; +        downcast&lt;UnacceleratedRemoteImageBufferProxy&gt;(*imageBuffer).createBackend(logicalSize, backendSize, resolutionScale, colorSpace, WTFMove(handle));
&gt; 
&gt; Why is this not just one call to a virtual function?

Because ImageHandle is defined in WebKit and the first common ancestor of AcceleratedRemoteImageBufferProxy and UnacceleratedRemoteImageBufferProxy is ImageBuffer.

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:160
&gt;&gt; +        downcast&lt;UnacceleratedRemoteImageBufferProxy&gt;(*imageBuffer).commitFlushDisplayList(flushIdentifier);
&gt; 
&gt; Why is this not just one call to a virtual function?

Because commitFlushDisplayList and DisplayListFlushIdentifier are only known in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701751</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-26 21:39:59 -0700</bug_when>
    <thetext>Committed r269022: &lt;https://trac.webkit.org/changeset/269022&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 412382.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411007</attachid>
            <date>2020-10-10 01:06:35 -0700</date>
            <delta_ts>2020-10-19 13:09:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217558-20201010010634.patch</filename>
            <type>text/plain</type>
            <size>99902</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTMxYWE4Njk0MDM0ZjFl
ZDg1MGRmZjdlYzFlNmViYThkZTNiNGJiZS4uNjJmYjFmMGIyZjM5MGNhYjEzYTM3Zjc3MWI0OThi
YjdjYWViZjQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIwLTEwLTA5ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXSBJbnRyb2R1Y2UgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHRvIG1hbmFnZSB0aGUg
cmVzb3VyY2VzIGluIHRoZSBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHZpcnR1YWwgbWV0aG9kcyB0byBJbWFnZUJ1
ZmZlciB3aGljaCB1c2VkIHRvIGJlIGEgdmlydHVhbCBtZXRob2QKKyAgICAgICAgb2YgUmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LiBUaGlzIG1ldGhvZCBpcyBhbHJlYWR5IG92
ZXJyaWRkZW4KKyAgICAgICAgYnkgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSBhbmQgaXMgY2FsbGVk
IGJ5IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS4gQnV0CisgICAgICAgIFJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eSBrZWVwcyBhIEhhc2hNYXAgb2YgSW1hZ2VCdWZmZXJzLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpmbHVzaERyYXdpbmdDb250ZXh0KToKKworMjAyMC0xMC0wOSAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc106
IFJlcGxhY2UgIkltYWdlQnVmZmVySWRlbnRpZmllciIgYnkgYSBnZW5lcmljIGlkZW50aWZpZXIg
bmFtZWQgIlJlbW90ZVJlc291cmNlSWRlbnRpZmllciIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciB3aWxsIGJl
IHVzZWQgaW4gV2ViQ29yZSB3aGVuIHJlY29yZGluZyBkcmF3aW5nCisgICAgICAgIGEgcmVtb3Rl
IEltYWdlQnVmZmVyIHRvIGFub3RoZXIgcmVtb3RlIEltYWdlQnVmZmVyLiBFdmVudHVhbGx5IGl0
IHdpbGwKKyAgICAgICAgYmUgdXNlZCBkcmF3aW5nIGEgcmVtb3RlIE5hdGl2ZUltYWdlIHRvIGEg
cmVtb3RlIEltYWdlQnVmZmVyIG9yIERPTSBsYXllci4KKworICAgICAgICAqIEhlYWRlcnMuY21h
a2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oOiBBZGRlZC4K
KwogMjAyMC0xMC0wOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgog
CiAgICAgICAgIFtHUFUgUHJvY2Vzc10gTWVjaGFuaWNhbCBjbGVhbnVwIGluIERpc3BsYXlMaXN0
UmVjb3JkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggYTViYTM0N2IxYTFmZmYyOTFkZWE4NDEyM2MwNDY2ZTlhMGU2
NDc4ZS4uOTczMWE5ZjU2NGY5MjkzOWI5OWVmY2ZlMjExZGE3YzliNDM5MTQ4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNDcgQEAKKzIwMjAtMTAtMTAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3Vo
YWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIEludHJvZHVjZSBSZW1v
dGVSZXNvdXJjZUNhY2hlIHRvIG1hbmFnZSB0aGUgcmVtb3RlIHJlc291cmNlcyBpbiBXZWIgUHJv
Y2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3
NTU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3RlUmVzb3VyY2VDYWNoZSB3aWxsIGJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgcmVt
b3RlIHJlc291cmNlcworICAgICAgICBpbmNsdWRpbmcgdGhlaXIgYWN0dWFsIGxpZmUgY3ljbGUu
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgd2lsbCBiZSByZXNwb25zaWJsZQorICAgICAgICBmb3Ig
dGhlIElQQyBjb21tdW5pY2F0aW9ucyB3aXRoIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuIEl0IHdp
bGwgZGVsZWdhdGUKKyAgICAgICAgYWxsIHRoZSByZXNvdXJjZSBtYW5hZ2VtZW50IHRvIGl0cyBS
ZW1vdGVSZXNvdXJjZUNhY2hlLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
SW1hZ2VCdWZmZXI6On5SZW1vdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUltYWdlQnVmZmVyOjpyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6UmVtb3RlSW1hZ2VCdWZmZXIpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlcjo6Y29tbWl0Rmx1c2hDb250ZXh0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6aW1hZ2VCdWZmZXJJZGVudGlmaWVy
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZUltYWdlQnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZUNs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUNy
ZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6cmVtb3RlR2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6cmVtb3RlRmx1c2hEcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVSZWxlYXNl
UmVtb3RlUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZXNvdXJjZUNhY2hlOjpSZW1vdGVSZXNvdXJjZUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZXNvdXJjZUNhY2hlOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VJbWFnZUJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmZpbmRJbWFnZUJ1
ZmZlckZvckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmFk
ZFJlbW90ZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OnJl
bGVhc2VSZW1vdGVSZXNvdXJjZVBlbmRpbmdSZW1vdmVDbGllbnRzKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVtb3ZlUmVtb3RlQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZUNsaWVudCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcDoKKwor
MjAyMC0xMC0wOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgor
CisgICAgICAgIFtHUFUgUHJvY2Vzc10gSW50cm9kdWNlIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eSB0byBtYW5hZ2UgdGhlIHJlc291cmNlcyBpbiB0aGUgR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU1NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eSB3aWxsIGJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgcmVtb3RlIHJlc291cmNl
cworICAgICAgICBpbmNsdWRpbmcgdGhlaXIgYWN0dWFsIGxpZmUgY3ljbGUuIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSB3aWxsIGJlIAorICAgICAgICByZXNwb25zaWJsZSBmb3IgdGhlIElQ
QyBjb21tdW5pY2F0aW9ucyB3aXRoIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuIEl0IHdpbGwKKyAg
ICAgICAgZGVsZWdhdGUgYWxsIHRoZSByZXNvdXJjZSBtYW5hZ2VtZW50IHRvIGl0cyBSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkuCisKKyAgICAgICAgV2UgY2FuIGdldCByaWQgb2YgUmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5IGJlY2F1c2UgYWxsIGl0IGRvZXMKKyAgICAgICAg
aXMgc2VuZGluZyBtZXNzYWdlcyB0byBXZWJQcm9jZXNzLiBSZW1vdmluZyBpdCB3aWxsIHNpbXBs
aWZ5IHRoZSBpbnRlcmZhY2UKKyAgICAgICAgb2YgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS4gU2Vu
ZGluZyB0aGUgbWVzc2FnZXMgd2lsbCBiZSBtb3ZlZCB0bworICAgICAgICBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
UHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6UmVtb3RlSW1hZ2VC
dWZmZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmFw
cGx5KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVtb3RlQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5k
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJ
bWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6Zmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHRB
bmRDb21taXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OmdldEltYWdlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlSW1hZ2VCdWZmZXIpOiBEZWxldGVkLgorICAgICAg
ICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5OjpmbHVzaERyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpnZXRJbWFnZURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVh
c2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHA6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKzIw
MjAtMTAtMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbR1BVIFByb2Nlc3NdOiBSZXBsYWNlICJJbWFnZUJ1ZmZlcklkZW50aWZpZXIiIGJ5
IGEgZ2VuZXJpYyBpZGVudGlmaWVyIG5hbWVkICJSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIiCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1NTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHUFUgUHJvY2Vz
cyBuZWVkcyBhIHVuaXZlcnNhbCBpZGVudGlmaWVyIGZvciBkcmF3aW5nIGNhY2hlZCByZXNvdXJj
ZXMgYW5kIAorICAgICAgICBkcmF3aW5nIGJ1ZmZlcnMgYW5kIGxheWVycy4gVGhlIG1lYW5pbmcg
b2YgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHdpbGwKKyAgICAgICAgZGVwZW5kIG9uIHRoZSBj
b250ZXh0IGl0IGlzIHVzZWQgaW4uCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6UmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlclByb3h5OjpjcmVhdGVCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Ojpjb21taXRGbHVzaENvbnRleHQpOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OlJlbW90ZUlt
YWdlQnVmZmVyUHJveHkpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJbWFnZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoSW1hZ2VCdWZm
ZXJEcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlSW1hZ2VCdWZm
ZXIpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXI6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjp+UmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXI6OmdldEltYWdlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmZsdXNoRHJhd2luZ0NvbnRleHQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpmbHVzaERyYXdpbmdD
b250ZXh0QW5kV2FpdENvbW1pdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpp
bWFnZUJ1ZmZlcklkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVm
ZmVyQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNv
bW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6cmVsZWFzZUltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdl
cy5pbjoKKwogMjAyMC0xMC0wOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNv
bT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIEFkZCBhZGRpdGlvbmFsIHN1cHBvcnQgZm9yIHBh
aW50aW5nIHZpZGVvIGVsZW1lbnRzIHRvIDJEIGNvbnRleHRzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRl
eCBhODQ3YjA1YWI0NGU1Y2Q0YTcwNmJlMzA4YzhiNjQ1YjUyNTQwMGZlLi5hZDE2MGFlMGY1MThl
ZjRmNzE2YzYwZDQ4ODMxYTg1ZWJmN2E0MzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyMDcs
NiArMTIwNyw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRleHRUcmFjay5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAor
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L1JlbmRlcmluZ01vZGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA3ZDYxZTA1YjM1NzczMDRjMTgzYzUwM2Y4MzFlYzg5NDEwMTAwMDIxLi4zODU4ZTFjMzJlOWQw
ZTI3ZGU5YjNlMzdiNjg4OTgxNDk0OTg5ZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTYxLDYgKzIxNjEsNyBAQAogCQk3
MjdBN0YzQTI0MDc4Qjg0MDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBQjIz
RTFFNTQ0MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI5OUJDNjcyM0Q2QTUz
MjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY0MjNENjg2QTYwMENDNjg4MyAvKiBB
bHBoYVByZW11bHRpcGxpY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNzI5OUJDNjgyM0Q2QTUzRTAwQ0M2ODgzIC8qIFJlbmRlcmluZ01v
ZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlC
QzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzI5RDA1MzAyNTMxNDI0MzAwNDIyMDk4
IC8qIFJlbW90ZVJlc291cmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5RDA1MkUyNTMxM0UyNjAwNDIyMDk4IC8qIFJlbW90ZVJl
c291cmNlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcyQTczQkVGMjQ1QTNGOTAwMDFDOUQwMyAvKiBBbmltYXRpb25GcmFtZVJh
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMkE4
MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBBbmltYXRpb25GcmFtZVJhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkJBQzNBRTIzRTFGMEIwMDA4
RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBNTIzRTE3MzI4MDA4RDc0MUMgLyogSW1hZ2VCdWZm
ZXJCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNzU1M0NGRTgxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1M0NGRTYx
MDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovOyB9OwpAQCAtOTky
Myw2ICs5OTI0LDcgQEAKIAkJNzI3QUZFRDMxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVHNSR0IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3Mjk5QkM2NDIzRDY4NkE2MDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJp
bmdNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlcmluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzI5RDA1MkUyNTMxM0UyNjAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNl
SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTQyM0UxNzMyNzAwOEQ3NDFDIC8q
IEltYWdlQnVmZmVyQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MkJBQzNBNTIzRTE3MzI4MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyQmFja2VuZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZv
cm1JbWFnZUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9y
bUltYWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjIzOSw2ICsy
NjI0MSw3IEBACiAJCQkJMDc0RTgyQjkxOEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJh
bmdlcy5oICovLAogCQkJCUJDQUI0MTdGMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uY3BwICov
LAogCQkJCUJDQUI0MTgwMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uaCAqLywKKwkJCQk3MjlE
MDUyRTI1MzEzRTI2MDA0MjIwOTggLyogUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmggKi8sCiAJ
CQkJMDczQTE1NTEyMTc3QTM5ODAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmNwcCAqLywK
IAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCAqLywK
IAkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovLApAQCAt
MzM1NDEsNiArMzM1NDQsNyBAQAogCQkJCTQ2Qjk1MTlBMjA3RDYzNTQwMEE3RDJERCAvKiBSZW1v
dGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRTkyMkZDRDdDMDAwMTIwNEVDIC8q
IFJlbW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFQjIyRkNEN0M5MDAx
MjA0RUMgLyogUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNzI5RDA1MzAyNTMxNDI0MzAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlSWRlbnRp
Zmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDczQTE1NTQyMTc3QTQyNjAwRUEwOEYyIC8qIFJl
bW90ZVZpZGVvU2FtcGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDZDMEQ4RjBDRkQxMTQ2MDA2
NUY0M0YgLyogUmVtb3ZlRm9ybWF0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlF
MDUwOTlFNjQ5MjAwNTZFNTgxIC8qIFJlbW92ZU5vZGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4
IGQxNDY0OTJjNGE4ZGY5MzVjYWY5NGI5ZmI5NTU5MDlhYWQxY2JhZjAuLmRiZTAyNWVlOWUxYTQ0
MGYwMmVhOTY2NGEzNGY5OGEwZjZjNTFhMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgeworY2xhc3MgRGlzcGxheUxpc3Q7CiBj
bGFzcyBEcmF3aW5nQ29udGV4dDsKIH0KIApAQCAtNjQsNiArNjUsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIERpc3BsYXlMaXN0OjpEcmF3aW5nQ29udGV4dCogZHJhd2luZ0NvbnRleHQoKSB7
IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQo
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dChjb25zdCBEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3QmKSB7IH0KIAogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGJh
c2VUcmFuc2Zvcm0oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBJbnRTaXplIGxvZ2ljYWxTaXpl
KCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYWY1NDJkZmVj
ODQ3YWJjMzcxYWEyZjFlOGU0YjhkZDlmYjExMGU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmgKQEAg
LTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitlbnVtIFJlbW90ZVJlc291cmNlSWRlbnRpZmllclR5cGUgeyB9Owor
dXNpbmcgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlclByb3h5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2UyNDdh
N2FkNGNkMjk1MzhlNGVhZjQwYmQ4MDM2OTY4NjAwOGI4Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgiCi0KLSNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCi0KLSNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVzc2Fn
ZXMuaCIKLSNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCIKLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlclByb3h5OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJv
eHkoUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHksIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCi0gICAgOiBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkp
Ci0gICAgLCBtX2ltYWdlQnVmZmVySWRlbnRpZmllcihpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCi17
Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5OjpjcmVhdGVC
YWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tl
bmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkKLXsKLSAgICBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2Nh
bGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoaGFuZGxlKSwgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIp
LCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cigpKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OmNv
bW1pdEZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZp
ZXIpCi17Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuc2VuZChNZXNzYWdlczo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoZmx1
c2hJZGVudGlmaWVyLCBtX2ltYWdlQnVmZmVySWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYTRkMDVlYWVmNTQ5NDE2ZmRiNjQyNTk1MmUwYjRjZjNhYTIwNWVjMi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQotCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCi0jaW5jbHVk
ZSAiSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlcklk
ZW50aWZpZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFNpemUuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotZW51bSBjbGFzcyBBbHBoYVByZW11bHRpcGxpY2F0aW9uIDog
dWludDhfdDsKLWNsYXNzIEltYWdlRGF0YTsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNs
YXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKLQotY2xhc3MgUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlclByb3h5IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5SZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkoKSA9IGRlZmF1bHQ7Ci0KLSAgICAvLyBNZXNzYWdl
cyB0byBiZSByZWNlaXZlZC4gU2VlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdl
cy5pbi4KLSAgICB2aXJ0dWFsIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dChjb25zdCBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGZsdXNo
RHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0JiwgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIpID0gMDsKLSAgICB2aXJ0dWFsIFJl
ZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11
bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVj
dCkgY29uc3QgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlclByb3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYsIEltYWdlQnVmZmVySWRl
bnRpZmllcik7Ci0KLSAgICAvLyBNZXNzYWdlcyB0byBiZSBzZW50LiBTZWUgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5tZXNzYWdlcy5pbi4KLSAgICB2b2lkIGNyZWF0ZUJhY2tlbmQoY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFj
a2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlKTsKLSAgICB2b2lkIGNvbW1pdEZsdXNoQ29udGV4dChJbWFn
ZUJ1ZmZlckZsdXNoSWRlbnRpZmllcik7Ci0KLSAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkmIGJhY2tlbmQoKSB7IHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsgfQot
Ci1wcml2YXRlOgotICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk7Ci0gICAgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIG1faW1hZ2VCdWZm
ZXJJZGVudGlmaWVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCA3NzIxY2NlODQ1NjI2
OWFlZjkwMjBiOGJkODk2NWRkMzViNzIyZGRjLi42MTQ1ODZjYTU3ZTA2YThjNGFkNzM0ZWVlODE0
MWQyMTVmYWFiYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTI4LDI5ICsyOCwyOSBAQAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaCIKLSNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHku
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgotY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eSA6IHB1YmxpYyBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwgcHVi
bGljIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eSwgcHVibGljIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6RGVsZWdhdGUgeworY2xhc3MgUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBl
PiwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6RGVsZWdhdGUgewogICAg
IHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1
ZmZlcjxCYWNrZW5kVHlwZT47CiAgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNv
bnRleHQ7CiAgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6Om1fYmFja2VuZDsKKyAg
ICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6cHV0SW1hZ2VEYXRhOwogCiBwdWJsaWM6
Ci0gICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCBJ
bWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorICAgIHN0YXRpYyBh
dXRvIGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSwgV2ViQ29yZTo6UmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKICAgICB7Ci0gICAg
ICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPFJlbW90
ZUltYWdlQnVmZmVyUHJveHk+KHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbnVs
bHB0ciwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCBpbWFnZUJ1ZmZlcklkZW50aWZpZXIp
OworICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0
ZTxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsIG51bGxwdHIsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSwgcmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KHN0ZDo6dW5p
cXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGlt
YWdlQnVmZmVySWRlbnRpZmllcikKKyAgICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KHN0ZDo6dW5p
cXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKICAgICAgICAgOiBCYXNlQ29uY3Jl
dGVJbWFnZUJ1ZmZlcihXVEZNb3ZlKGJhY2tlbmQpKQotICAgICAgICAsIFJlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJQcm94eShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHksIGltYWdl
QnVmZmVySWRlbnRpZmllcikKKyAgICAgICAgLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCiAgICAgewotICAgICAgICBjcmVhdGVCYWNr
ZW5kKG1fYmFja2VuZC0+bG9naWNhbFNpemUoKSwgbV9iYWNrZW5kLT5iYWNrZW5kU2l6ZSgpLCBt
X2JhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgpLCBtX2JhY2tlbmQtPmNvbG9yU3BhY2UoKSwgbV9i
YWNrZW5kLT5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSk7CisgICAgICAgIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCht
X2JhY2tlbmQtPmxvZ2ljYWxTaXplKCksIG1fYmFja2VuZC0+YmFja2VuZFNpemUoKSwgbV9iYWNr
ZW5kLT5yZXNvbHV0aW9uU2NhbGUoKSwgbV9iYWNrZW5kLT5jb2xvclNwYWNlKCksIG1fYmFja2Vu
ZC0+Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCksIHJlbW90ZVJlc291cmNlSWRlbnRp
Zmllcik7CiAgICAgfQogCiAgICAgflJlbW90ZUltYWdlQnVmZmVyUHJveHkoKQpAQCAtNjIsOSAr
NjIsNiBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHVzaW5nIEJhc2VDb25jcmV0
ZUltYWdlQnVmZmVyOjpmbHVzaERyYXdpbmdDb250ZXh0OwotICAgIHVzaW5nIEJhc2VDb25jcmV0
ZUltYWdlQnVmZmVyOjpwdXRJbWFnZURhdGE7Ci0KICAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRl
eHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkg
b3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSkgewpA
QCAtNzMsMTggKzcwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQg
Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVz
aElkZW50aWZpZXIpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0
KGRpc3BsYXlMaXN0KTsKLSAgICAgICAgbV9iYWNrZW5kLT5mbHVzaENvbnRleHQoKTsKLSAgICAg
ICAgY29tbWl0Rmx1c2hDb250ZXh0KGZsdXNoSWRlbnRpZmllcik7Ci0gICAgfQotCi0gICAgUmVm
UHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVs
dGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0
KSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdl
QnVmZmVyOjpnZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0KTsKLSAgICB9Ci0KICAg
ICBib29sIGFwcGx5KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtJiBpdGVtLCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoaXRl
bS50eXBlKCkgPT0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQdXRJbWFnZURhdGEp
IHsKQEAgLTEwMyw3ICs4OCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGFwcGx5KFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWEmIGl0ZW0sIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkKICAgICB7Ci0gICAgICAgIGF1dG8gcHJvY2VzcyA9IGJhY2tlbmQo
KS5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7CisgICAgICAgIGF1dG8gcHJvY2VzcyA9IG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKTsK
ICAgICAgICAgaWYgKCFwcm9jZXNzKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xMTcsNiAr
MTAyLDggQEAgcHJpdmF0ZToKIAogICAgICAgICBjb250ZXh0LnBhaW50RnJhbWVGb3JNZWRpYSgq
cGxheWVyLCBpdGVtLmRlc3RpbmF0aW9uKCkpOwogICAgIH0KKworICAgIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKaW5kZXgg
NzUzYTVjOGJhOTdmZTcyMDgzMTA1OGU4NGM1Y2Q4M2I0YjE3NTU3OS4uMjVkNDUzMTBhOWQ5M2Q3
MDIwNzVmNDk4NjUxMjdjMWI4NDQwYzEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNs
dWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZXMu
aCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NCw2ICs1NCwxMSBAQCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6On5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKQogICAgICAgICBn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCkp
OwogfQogCitHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdAoreworICAgIHJldHVybiBt
X2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7Cit9CisKIElQQzo6Q29ubmVjdGlvbiog
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNv
bnN0CiB7CiAgICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCkBAIC02Niw2NCArNzEsMzYgQEAgdWludDY0X3Qg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50NjQo
KTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdl
QnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6cmVtb3RlQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IEZs
b2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlIGhhbmRsZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRl
bnRpZmllcikKIHsKLSAgICBhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpOwotICAgIGlmICghZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1faW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlck1hcC5jb250YWlucyhpbWFnZUJ1ZmZlcklkZW50aWZpZXIpKSB7Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKHJl
bmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQpIHsKLSAgICAg
ICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJv
eHk6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCAqdGhp
cywgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkgewotICAgICAgICAgICAgbV9pbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyTWFwLmFkZChpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIFdURk1vdmUoaW1hZ2VC
dWZmZXIpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlm
IChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OlJlbW90ZUFjY2VsZXJhdGVkIHx8IHJl
bmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6UmVtb3RlVW5hY2NlbGVyYXRlZCkgewotICAg
ICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5OjpjcmVhdGUobG9naWNhbFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
KnRoaXMsIGltYWdlQnVmZmVySWRlbnRpZmllcikpIHsKLSAgICAgICAgICAgIG1faW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlck1hcC5hZGQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBXVEZNb3ZlKGlt
YWdlQnVmZmVyKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRT
aXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoaGFuZGxlKSwgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiB9CiAK
LXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlSW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxv
Z2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIC8vIENyZWF0ZUltYWdlQnVm
ZmVyIG1lc3NhZ2Ugc2hvdWxkIGhhdmUgYmVlbiByZWNlaXZlZCBiZWZvcmUgdGhpcyBvbmUuCi0g
ICAgYm9vbCBmb3VuZCA9IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5yZW1vdmUoaW1h
Z2VCdWZmZXJJZGVudGlmaWVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7Cisg
ICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3JlYXRlSW1hZ2VCdWZmZXIobG9naWNhbFNp
emUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OmdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1h
dCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VC
dWZmZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRhUmVm
ZXJlbmNlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OmZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dChjb25zdCBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvIGltYWdlQnVm
ZmVyID0gbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmdldChpbWFnZUJ1ZmZlcklkZW50
aWZpZXIpKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gaW1hZ2VCdWZmZXItPmdldEltYWdl
RGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJ
UEM6OkltYWdlRGF0YVJlZmVyZW5jZShXVEZNb3ZlKGltYWdlRGF0YSkpKTsKLSAgICB9CisgICAg
bV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuZmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlz
dCwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OmZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dChjb25zdCBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBJbWFnZUJ1ZmZlcklkZW50
aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OmZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBJbWFnZUJ1ZmZlckZs
dXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBt
X2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuZ2V0KGltYWdlQnVmZmVySWRlbnRpZmllcikp
Ci0gICAgICAgIGltYWdlQnVmZmVyLT5mbHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0KTsK
KyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5mbHVzaERyYXdpbmdDb250ZXh0QW5kQ29t
bWl0KGRpc3BsYXlMaXN0LCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250
ZXh0KGZsdXNoSWRlbnRpZmllciwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1hZ2VCdWZmZXJGbHVz
aElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VC
dWZmZXJJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldElt
YWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2Vi
Q29yZTo6SW50UmVjdCBzcmNSZWN0LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRhUmVm
ZXJlbmNlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvIGltYWdlQnVm
ZmVyID0gbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmdldChpbWFnZUJ1ZmZlcklkZW50
aWZpZXIpKQotICAgICAgICBpbWFnZUJ1ZmZlci0+Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1p
dChkaXNwbGF5TGlzdCwgZmx1c2hJZGVudGlmaWVyKTsKKyAgICBhdXRvIGltYWdlRGF0YSA9IG1f
cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1Jl
Y3QsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgY29tcGxldGlvbkhhbmRsZXIoSVBD
OjpJbWFnZURhdGFSZWZlcmVuY2UoV1RGTW92ZShpbWFnZURhdGEpKSk7CiB9CiAKLUdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MqIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcygpIGNvbnN0Cit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgcmV0dXJuIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5nZXQoKTsKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5yZWxlYXNlUmVtb3Rl
UmVzb3VyY2UocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKaW5kZXggYTA5NTJiYWZiM2MxNTMy
ZDdkYzk5MDA2ZWI0MGYzMWJmOTFkMjUzYi4uOWY2OGYyYjQ3MzdlZDM0ZGYxOTY4Mjk0ZWEwMzcw
MGZhN2M1NzAxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtMjgsMjQgKzI4
LDI0IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgogI2luY2x1ZGUgIkltYWdl
QnVmZmVyRmx1c2hJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgotI2luY2x1ZGUgIlJlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5
TGlzdEl0ZW1zLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFNpemUuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1JlbmRlcmluZ01vZGUuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNw
bGF5TGlzdCB7CiBjbGFzcyBEaXNwbGF5TGlzdDsKIH0KK2NsYXNzIEZsb2F0U2l6ZTsKK2VudW0g
Y2xhc3MgQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiB1
aW50OF90OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU5LDggKzU5LDExIEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eT4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllcik7CiAgICAgdmlydHVhbCB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCk7CiAK
LSAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI7IH0KICAgICBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29u
c3Q7CisgICAgYm9vbCBhcHBseVJlc291cmNlSXRlbShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bSYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOworCisgICAgLy8gTWVzc2FnZXMgdG8gYmUg
c2VudC4KKyAgICB2b2lkIHJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNr
ZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7
CiAKIHByaXZhdGU6CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CkBAIC03NCwxNCAr
NzcsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYp
IG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCi0gICAgdm9pZCBj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBX
ZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNv
bG9yU3BhY2UsIEltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0gICAgdm9pZCByZWxlYXNlSW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIGZsdXNoSW1hZ2VCdWZmZXJE
cmF3aW5nQ29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBJ
bWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotICAgIHZvaWQgZmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdD
b250ZXh0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYs
IEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotICAg
IHZvaWQgZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0
Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIEltYWdlQnVmZmVySWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSYmKT4mJik7Ci0K
LSAgICB1c2luZyBJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwID0gSGFzaE1hcDxJbWFnZUJ1
ZmZlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyUHJveHk+PjsKLSAgICBJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwIG1faW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlck1hcDsKKyAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5n
Q29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3Jl
OjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgZmx1c2hJbWFnZUJ1ZmZlckRy
YXdpbmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdCYsIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpOworICAgIHZvaWQgZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVs
dGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNv
cmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6
OkltYWdlRGF0YVJlZmVyZW5jZSYmKT4mJik7CisgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3Vy
Y2UoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIFJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB7ICp0aGlzIH07CiAgICAg
V2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M7CiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNz
YWdlcy5pbgppbmRleCA3OThjOGI0ZWRiNTdmNWFkMDgyYmE4MWMxMDA4YjBkY2RlZmRmMThhLi4y
NmNmMTM2MWZkYWIwZWIwZDNmYWY3N2U1ZjdkMmQxYzU2Zjk0MGI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KQEAgLTIzLDExICsyMywxMSBAQAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIHZvaWQgQ3JlYXRlSW1hZ2VCdWZmZXIoV2Vi
Q29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xv
clNwYWNlLCBXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZp
ZXIpCi0gICAgdm9pZCBSZWxlYXNlSW1hZ2VCdWZmZXIoV2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50
aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQotICAgIHZvaWQgRmx1c2hJbWFnZUJ1ZmZlckRy
YXdpbmdDb250ZXh0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBkaXNwbGF5TGlz
dCwgV2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQot
ICAgIHZvaWQgRmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBkaXNwbGF5TGlzdCwgV2ViS2l0OjpJbWFnZUJ1ZmZl
ckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVu
dGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKLSAgICBHZXRJbWFnZURhdGEoZW51bTp1aW50
OF90IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3Jl
OjpJbnRSZWN0IHNyY1JlY3QsIFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVm
ZmVySWRlbnRpZmllcikgLT4gKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YSkgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZUltYWdlQnVmZmVyKFdlYkNvcmU6OkZsb2F0U2l6ZSBs
b2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICB2
b2lkIEZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3QgZGlzcGxheUxpc3QsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgdm9pZCBGbHVzaEltYWdlQnVmZmVyRHJh
d2luZ0NvbnRleHRBbmRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0IGRp
c3BsYXlMaXN0LCBXZWJLaXQ6OkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRl
bnRpZmllcikKKyAgICBHZXRJbWFnZURhdGEoZW51bTp1aW50OF90IFdlYkNvcmU6OkFscGhhUHJl
bXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdl
YkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
IC0+IChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGEpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBSZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShHUFVf
UFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWNmMjAzOWI4
MWRhOGNmODk0YTAxN2I3ZWRiODdkZGVhYjI3OGM5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3Bw
CkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCisKKyNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgOiBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCit7Cit9CisK
K3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIGlmIChtX3JlbW90ZUlt
YWdlQnVmZmVySGFzaE1hcC5jb250YWlucyhyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKSB7Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBpbWFnZTsKKworICAgIGlm
IChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OlJlbW90ZUFjY2VsZXJhdGVkKQorICAg
ICAgICBpbWFnZSA9IEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKGxv
Z2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgaWYgKCFpbWFn
ZSB8fCByZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OlJlbW90ZVVuYWNjZWxlcmF0ZWQp
CisgICAgICAgIGltYWdlID0gVW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNy
ZWF0ZShsb2dpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIGlm
IChpbWFnZSkgeworICAgICAgICBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5hZGQocmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdlKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworSW1hZ2VCdWZmZXIqIFJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eTo6Zmx1c2hEcmF3aW5nQ29udGV4dChjb25zdCBEaXNwbGF5TGlz
dDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvIGltYWdlID0gbV9yZW1vdGVJ
bWFnZUJ1ZmZlckhhc2hNYXAuZ2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpIHsKKyAgICAg
ICAgaW1hZ2UtPmZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QpOworICAgICAgICByZXR1
cm4gaW1hZ2U7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCitJbWFnZUJ1ZmZlciog
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGNv
bnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIFJlbW90ZVJlc291cmNl
SWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gaW1h
Z2UgPSBmbHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0LCByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpKSB7CisgICAgICAgIGltYWdlLT5mbHVzaENvbnRleHQoKTsKKyAgICAgICAgcmV0dXJu
IGltYWdlOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEltYWdlRGF0
YT4gUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIFJlbW90ZVJlc291
cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0Cit7CisgICAgaWYg
KGF1dG8gaW1hZ2UgPSBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5nZXQocmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGltYWdlLT5nZXRJbWFnZURhdGEob3V0cHV0
Rm9ybWF0LCBzcmNSZWN0KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIGlmIChtX3JlbW90ZUlt
YWdlQnVmZmVySGFzaE1hcC5yZW1vdmUocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIC8vIENhY2hpbmcgdGhlIHJlbW90ZSByZXNvdXJjZSBzaG91bGQgaGF2
ZSBoYXBwZW5lZCBiZWZvcmUgcmVsZWFzaW5nIGl0LgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJP
Q0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzg4NjFlYzE3NDc2ZjZk
YjUwZGY0MTNiNjljOTk0ZTQ3MGI0N2JjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCkBAIC0wLDAg
KzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlIDxXZWJD
b3JlL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CitjbGFzcyBE
aXNwbGF5TGlzdDsKK2NsYXNzIEl0ZW07Cit9Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CisKK2NsYXNzIFJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eSB7CitwdWJsaWM6CisgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYpOworCisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdN
b2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6
OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGZs
dXNoRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
JiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciogZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
OworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpB
bHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgc3JjUmVjdCwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdDsKKwor
ICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgdXNpbmcgUmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFw
ID0gSGFzaE1hcDxXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4+OworCisgICAgUmVtb3RlSW1hZ2VCdWZmZXJIYXNo
TWFwIG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwOworICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3Bw
CmluZGV4IDQwMTdhMmE4ZjIyY2VjZWNjMjE1MWEzMGEzMjc4ZmY5MDZlYWYzMmEuLjY3NDhkMWY1
ZDgwMGQ5NTc0ZjIzODA3NWIxODkwYjRlNGFjZWU5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAtMjks
NiArMjksNyBAQAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCiAj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCIKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvQ0FSaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZVRyYW5zZmVyU2Vz
c2lvblZULmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNw
cAppbmRleCA5NzdmOTNmZjVjM2MyYjgxNzg0NmM5YTlhNzU1MTc4OWM4ZWZlMDVjLi42MWI4OTBk
Yzc4NjdjMzNiMDA1ZjIyZTkzYmIxYWY0N2RkZDNiMTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1
ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisj
aW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFn
ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1l
c3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBm
YWNkMmY3YWZiNWEzOTJlZTIwOTY3YTc2ZmQ0MWUxNGRmYjE1MGI5Li44NTljYzc1NjllOTJkMTY0
NTU1ZDY5ODA5NzIyMDBiYWI5YmQ1OTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKQEAgLTIyMiw2ICsyMjIsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVf
Zm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6UG9pbnRlcklEJywKICAgICAg
ICAgJ1dlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpSZW5kZXJpbmdNb2RlJywKICAgICAg
ICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6
OlNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyJywKQEAgLTI0MCw3ICsyNDEsNiBAQCBkZWYgdHlw
ZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViS2l0OjpH
ZW9sb2NhdGlvbklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUnLAogICAgICAgICAnV2ViS2l0OjpJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllcics
Ci0gICAgICAgICdXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJL
aXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCcsCiAgICAgICAgICdXZWJLaXQ6OkxlZ2FjeUN1c3Rv
bVByb3RvY29sSUQnLAogICAgICAgICAnV2ViS2l0OjpMaWJXZWJSVENSZXNvbHZlcklkZW50aWZp
ZXInLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKaW5kZXggZGFmNWZiNzMxM2JkZDk4MDY4ZGVkZDM5Y2JhYzRkZmJlOTM3
N2NhOC4uOGUzYjJhZmZjYTAwMzRiMzI2ZGE5YjIxOThjODU3OTc0ZTA0OTE0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CkBAIC0yNCw4ICsyNCw4IEBACiBHUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCiBHUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCiBHUFVQcm9jZXNzL0dQVVByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwCi1HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmNwcAorR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5
LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIuY3Bw
CiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKQEAgLTU1Miw4ICs1
NTIsOCBAQCBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlci5jcHAKIAogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQu
Y3BwCi1XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyLmNwcAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5j
cHAKK1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk4NDM0Y2JhYzBjMmY2MWEyZDZl
MjgwNzE2ZWNkNzI4ODI4ODkyODIuLjJhOGM0MmE1YWJlNDE1YmY5ZDExYzdiMGIzZWY3MTg4MDJi
MjBjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMzg4OSw3ICszODg5LDYgQEAKIAkJNTUwNjQwQTIyNDA3MUE2MTAwQUFFMDQ1IC8q
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NTA2NDBBMzI0MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1NTA2NDBBNDI0MDcxQzIxMDBBQUUwNDUgLyogUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNTUwNjQwQTUyNDA3MUNDMDAwQUFFMDQ1IC8qIEltYWdlQnVmZmVySWRl
bnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVBRDA5NDIyNDA4QTAyRTAwREU0RDJGIC8qIFJlbW90
ZUltYWdlQnVmZmVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NUFEMDk0MzI0MDhBMEU2MDBERTRE
MkYgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBs
YXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NUFEMDk0NDI0MDhBQkIzMDBERTREMkYgLyogSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZp
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxNzgsMTAgKzQxNzcsNyBAQAogCQk3MUE2NzZBNTIy
QzYyMzE4MDA3RDYyOTUgLyogV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tUb3VjaEFjdGlvbkdlc3R1cmVS
ZWNvZ25pemVyLm1tOyBwYXRoID0gaW9zL1dLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFGQjgxMEEyMjYwNjI3QTAwMzIzNjc3
IC8qIFdlYnNpdGVTaW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVTaW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3Bh
dGNoUG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMjc4MDBCMjQwOEJE
N0QwMDdEMzc2QiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNzIyNzgwMEMyNDA5N0EwMjAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMjc4MDBEMjQwOTdBMDIw
MDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNzIyNzgwMTEyNDA5OTA2RTAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk3MjI3ODAxMjI0MDk5MDZFMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBN0YzNDI0MDc4NTdE
MDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9T
dXJmYWNlQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0E3RjM1
MjQwNzg1N0YwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVJ
T1N1cmZhY2VCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0E3RjM2
MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTkxLDYgKzQxODcs
MTAgQEAKIAkJNzI3QTdGNDkyNDA4QUVFNjAwNEQyOTMxIC8qIFJlbW90ZUltYWdlQnVmZmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcyOEU4NkVGMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb2xvclBpY2tlck1hYy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjhFODZGMDE3OTUxODhDMDA4Nzg3OUUgLyog
V2ViQ29sb3JQaWNrZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJDb2xvclBpY2tlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NzI5RDA1MzIyNTMxNEZFRjAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3MjlEMDUzMzI1MzE0RkVGMDA0MjIwOTggLyogUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjlEMDUzNTI1MzE3M0NDMDA0
MjIwOTggLyogUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1v
dGVSZXNvdXJjZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5RDA1
MzYyNTMxNzNDQzAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlUmVzb3VyY2VDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
NUE4RDJDNDE4N0NDRjlGMDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3NUE4RDJDNTE4N0NDRjlGMDBDMzlDOUUgLyogV0tXZWJzaXRl
RGF0YVN0b3JlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NUE4RDJE
NDE4N0QxQzAxMDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgwNzYsMTcgKzgwNzYsMTcgQEAKIAkJCQk3
MjdBN0YzMzI0MDc4NTI3MDA0RDI5MzEgLyogY29jb2EgKi8sCiAJCQkJNzI3QTdGMzkyNDA3ODhG
MTAwNEQyOTMxIC8qIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oICovLAogCQkJCTU1QUQwOTQ0
MjQwOEFCQjMwMERFNEQyRiAvKiBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oICovLAotCQkJ
CTU1MDY0MEE1MjQwNzFDQzAwMEFBRTA0NSAvKiBJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCAqLywK
IAkJCQk3MjdBN0YzNzI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmNwcCAqLywKIAkJCQk3MjdBN0YzNjI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggKi8sCiAJCQkJNzI3QTdGMzgyNDA3ODhGMDAw
NEQyOTMxIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmggKi8sCiAJCQkJ
NzIyNzgwMEIyNDA4QkQ3RDAwN0QzNzZCIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCAq
LywKIAkJCQk3MjdBN0Y0OTI0MDhBRUU2MDA0RDI5MzEgLyogUmVtb3RlSW1hZ2VCdWZmZXIuaCAq
LywKLQkJCQk3MjI3ODAwQzI0MDk3QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlci5jcHAgKi8sCiAJCQkJNzIyNzgwMEQyNDA5N0EwMjAwN0QzNzZCIC8qIFJlbW90
ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaCAqLywKIAkJCQk1NTA2NDA5RDI0MDcxNjA5MDBB
QUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgKi8sCiAJCQkJNTUwNjQwOUUyNDA3
MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCAqLywKIAkJCQk1NTA2NDBB
MDI0MDcxOUUxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbiAq
LywKKwkJCQk3MjlEMDUzNTI1MzE3M0NDMDA0MjIwOTggLyogUmVtb3RlUmVzb3VyY2VDYWNoZS5j
cHAgKi8sCisJCQkJNzI5RDA1MzYyNTMxNzNDQzAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlQ2Fj
aGUuaCAqLywKIAkJCQk1NTA2NDA5RjI0MDcxOTZBMDBBQUUwNDUgLyogUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gZ3JhcGhpY3M7CkBAIC04MDk2LDEy
ICs4MDk2LDEyIEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTU1
QUQwOTQzMjQwOEEwRTYwMERFNEQyRiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHku
aCAqLywKLQkJCQk3MjI3ODAxMTI0MDk5MDZFMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlclByb3h5LmNwcCAqLywKLQkJCQk3MjI3ODAxMjI0MDk5MDZFMDA3RDM3NkIg
LyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmggKi8sCiAJCQkJNTVBRDA5
NDIyNDA4QTAyRTAwREU0RDJGIC8qIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLywKIAkJCQk1
NTA2NDBBMjI0MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNw
cCAqLywKIAkJCQk1NTA2NDBBMzI0MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmggKi8sCiAJCQkJNTUwNjQwQTQyNDA3MUMyMTAwQUFFMDQ1IC8qIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQk3MjlEMDUzMjI1MzE0RkVG
MDA0MjIwOTggLyogUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcCAqLywKKwkJCQk3MjlEMDUz
MzI1MzE0RkVGMDA0MjIwOTggLyogUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmggKi8sCiAJCQkp
OwogCQkJcGF0aCA9IGdyYXBoaWNzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdl
QnVmZmVySWRlbnRpZmllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTFiYzlh
ZTg3ZGM4ZDcyNDI4YTBiODA5Y2FkMGQ4MGE0Y2QxY2I5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
Ci0KLSNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLQotZW51bSBJbWFnZUJ1ZmZlcklkZW50aWZpZXJUeXBlIHsgfTsKLXVzaW5nIEltYWdlQnVm
ZmVySWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8SW1hZ2VCdWZmZXJJZGVudGlmaWVyVHlw
ZT47Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9D
RVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlci5oCmluZGV4IGU4NDkxNjY0NTE0NTk2Mjg3ZWYyYzc4ZjkwNzZl
MWQ0MzgyMTkxZjIuLmFmYTA2Zjg0ZmVlZDZmMTFmNGU4ZWViOWRhYmY1ODIzZDE5Y2QzYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyLmgKQEAgLTUzLDE0ICs1MywxOSBAQCBwdWJsaWM6CiAKICAgICB+UmVt
b3RlSW1hZ2VCdWZmZXIoKQogICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQo
KTsKICAgICB9CiAKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXI7IH0KKwogcHJvdGVjdGVkOgogICAgIFJlbW90ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYgc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKICAgICAgICAg
OiBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcihzaXplKQotICAgICAgICAsIFJlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxl
LCBjb2xvclNwYWNlLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAsIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZChtYWtlV2Vha1B0cihyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkKICAg
ICB7CisgICAgICAgIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLT5yZW1vdGVDcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpOwogICAgIH0KIAogICAgIHZvaWQgY3JlYXRlQmFj
a2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpIG92
ZXJyaWRlCkBAIC02OSwyMiArNzQsNTAgQEAgcHJvdGVjdGVkOgogICAgICAgICBtX2JhY2tlbmQg
PSBCYWNrZW5kVHlwZTo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlv
blNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRsZSkpOwogICAgIH0KICAgICAKLSAgICBi
b29sIGlzQmFja2VuZENyZWF0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JhY2tlbmQu
Z2V0KCk7IH0KLQogICAgIEJhY2tlbmRUeXBlKiBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0
IG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoIW1fYmFja2VuZCkKLSAgICAgICAgICAgIGNv
bnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXImPigqdGhpcykuUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlcjo6d2FpdEZvckNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgpOworICAgICAgICBp
ZiAoIW1fYmFja2VuZCAmJiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPndhaXRGb3JDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQo
KTsKICAgICAgICAgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsKICAgICB9CiAKKyAgICB2b2lkIGZs
dXNoQ29udGV4dCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0
KCk7CisgICAgICAgIG1fYmFja2VuZC0+Zmx1c2hDb250ZXh0KCk7CisgICAgfQorCisgICAgdm9p
ZCBmbHVzaERyYXdpbmdDb250ZXh0KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGF1dG8mIGRp
c3BsYXlMaXN0ID0gbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOworICAgICAgICBpZiAo
IWRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpIHx8ICFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fc2VudEZsdXNoSWRlbnRpZmllciA9IG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZC0+cmVtb3RlRmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdChk
aXNwbGF5TGlzdCwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQtPndhaXRGb3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgp
OworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbGVhc2VSZW1vdGVDbGllbnQo
bV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBkaXNwbGF5TGlzdC5jbGVhcigp
OworICAgIH0KKworICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dChjb25zdCBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgaWYgKCFkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSB8fCAhbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQtPnJlbW90ZUZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QsIG1fcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKTsKKyAgICB9CisgICAgCiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdl
RGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0
Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0KSBjb25zdCBvdmVycmlkZQog
ICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKwogICAgICAgICBhdXRvJiBkaXNwbGF5TGlzdCA9IGNvbnN0X2Nh
c3Q8UmVtb3RlSW1hZ2VCdWZmZXIqPih0aGlzKS0+bV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlz
dCgpOwotICAgICAgICBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyKj4odGhpcyktPlJlbW90
ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxp
c3QpOwotICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXIq
Pih0aGlzKS0+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Z2V0SW1hZ2VEYXRhKG91
dHB1dEZvcm1hdCwgc3JjUmVjdCk7CisgICAgICAgIGlmIChkaXNwbGF5TGlzdC5pdGVtQ291bnQo
KSkgeworICAgICAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVJbWFnZUJ1ZmZlcio+KHRoaXMpLT5m
bHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0KTsKKyAgICAgICAgICAgIGRpc3BsYXlMaXN0
LmNsZWFyKCk7CisgICAgICAgIH0KKwogICAgICAgICAvLyBnZXRJbWFnZURhdGEgaXMgc3luY2hy
b25vdXMsIHdoaWNoIG1lYW5zIHdlJ3ZlIGFscmVhZHkgcmVjZWl2ZWQgdGhlIENvbW1pdEltYWdl
QnVmZmVyRmx1c2hDb250ZXh0IG1lc3NhZ2UuCi0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
ICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbW90ZUdldEltYWdlRGF0YShv
dXRwdXRGb3JtYXQsIHNyY1JlY3QsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9
CiAKICAgICB2b2lkIHB1dEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9u
IGlucHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbWFnZURhdGEmIGltYWdlRGF0YSwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlc3RQ
b2ludCA9IHsgfSwgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0ID0g
V2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCkgb3ZlcnJpZGUK
QEAgLTk1LDI2ICsxMjgsMTggQEAgcHJvdGVjdGVkOgogICAgICAgICBtX2RyYXdpbmdDb250ZXh0
LnJlY29yZGVyKCkucHV0SW1hZ2VEYXRhKGlucHV0Rm9ybWF0LCBpbWFnZURhdGEsIHNyY1JlY3Qs
IGRlc3RQb2ludCwgZGVzdEZvcm1hdCk7CiAgICAgfQogCi0gICAgdm9pZCBmbHVzaENvbnRleHQo
KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOwotICAgICAg
ICBtX2JhY2tlbmQtPmZsdXNoQ29udGV4dCgpOwotICAgIH0KLQotICAgIHZvaWQgZmx1c2hEcmF3
aW5nQ29udGV4dCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBhdXRvJiBkaXNwbGF5TGlzdCA9
IG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKTsKLSAgICAgICAgaWYgKGRpc3BsYXlMaXN0
Lml0ZW1Db3VudCgpKQotICAgICAgICAgICAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
cjo6Zmx1c2hEcmF3aW5nQ29udGV4dEFuZFdhaXRDb21taXQoZGlzcGxheUxpc3QpOwotICAgIH0K
LSAgICAKICAgICB2b2lkIHdpbGxBcHBlbmRJdGVtKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtJikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGNvbnN0ZXhwciBzaXplX3QgRGlzcGxh
eUxpc3RCYXRjaFNpemUgPSA1MTI7CiAgICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0gbV9kcmF3
aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwotICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXRlbUNv
dW50KCkgPj0gRGlzcGxheUxpc3RCYXRjaFNpemUpCi0gICAgICAgICAgICBSZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyOjpmbHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0KTsKKyAg
ICAgICAgaWYgKGRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpIDwgRGlzcGxheUxpc3RCYXRjaFNpemUg
fHwgIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgZmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCk7CisgICAgICAgIGRpc3BsYXlMaXN0
LmNsZWFyKCk7CiAgICAgfQorCisgICAgV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzcxNTBjN2IwNzkzYWZlOWFjNWM4M2E5YWM3
NDZiYTMxOGU1MWI4Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyLmgiCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KLSNpbmNsdWRl
ICJJbWFnZURhdGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmgiCi0jaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZXMuaCIKLSNp
bmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlcjo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcihjb25zdCBGbG9hdFNpemUmIHNp
emUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQpCi0gICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQobWFrZVdlYWtQdHIo
cmVtb3RlUmVuZGVyaW5nQmFja2VuZCkpCi17Ci0gICAgLy8gQ3JlYXRlIHRoZSBSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LgotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+c2VuZChNZXNzYWdl
czo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpDcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCBy
ZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG1faW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllcigpKTsKLX0KLQotUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6flJlbW90
ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIoKQotewotICAgIC8vIFJlbGVhc2UgdGhlIFJlbW90
ZUltYWdlQnVmZmVyUHJveHkuCi0gICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCi0g
ICAgICAgIHJldHVybjsKLSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6UmVsZWFzZUltYWdlQnVmZmVyKG1faW1h
Z2VCdWZmZXJJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcigpKTsKLX0KLQotUmVmUHRyPEltYWdlRGF0YT4gUmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlcjo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24g
b3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KSBjb25zdAotewotICAgIElQQzo6
SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YVJlZmVyZW5jZTsKLSAgICBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQtPnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OkdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIG1faW1hZ2VCdWZmZXJJZGVu
dGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6R2V0SW1hZ2VE
YXRhOjpSZXBseShpbWFnZURhdGFSZWZlcmVuY2UpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQt
PnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIDFfcyk7Ci0gICAgcmV0dXJuIGltYWdlRGF0
YVJlZmVyZW5jZS5idWZmZXIoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyOjp3YWl0Rm9yQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCkKLXsKLSAgICBpZiAobV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kICYmICFpc0JhY2tlbmRDcmVhdGVkKCkpCi0gICAgICAgIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+d2FpdEZvckNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgp
OwotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OndhaXRGb3JDb21t
aXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgpCi17Ci0gICAgaWYgKG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZCAmJiBpc1BlbmRpbmdGbHVzaCgpKQotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQtPndhaXRGb3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgpOwotfQotCi12b2lk
IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmZsdXNoRHJhd2luZ0NvbnRleHQoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkKLXsKLSAgICBpZiAo
IW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjpGbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QsIG1f
aW1hZ2VCdWZmZXJJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcigpKTsKLSAgICBkaXNwbGF5TGlzdC5jbGVhcigpOwotfQotCi12
b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmZsdXNoRHJhd2luZ0NvbnRleHRB
bmRXYWl0Q29tbWl0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxp
c3QpCi17Ci0gICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgICAgIHJldHVy
bjsKLSAgICBtX3NlbnRGbHVzaElkZW50aWZpZXIgPSBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmll
cjo6Z2VuZXJhdGUoKTsKLSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Rmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdD
b250ZXh0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBtX3NlbnRGbHVzaElkZW50aWZpZXIsIG1faW1h
Z2VCdWZmZXJJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcigpKTsKLSAgICBkaXNwbGF5TGlzdC5jbGVhcigpOwotICAgIHdhaXRG
b3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgpOwotfQotCi12b2lkIFJlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXI6OmNvbW1pdEZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNo
SWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIpCi17Ci0gICAgbV9yZWNlaXZlZEZsdXNoSWRlbnRp
ZmllciA9IGZsdXNoSWRlbnRpZmllcjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlci5oCmluZGV4IDYyMDQxOGQ3OGMyN2YyOGM1NzQ5MDJjMmUxYmE5YTIzNzE3
NTE3YjkuLjYxZGQ1OGNlNTJmZGNlZDRmMTg0YWYwZWE2Nzk3YjI2NjI3NWEyNDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oCkBAIC0yOSw1MCArMjksMzEg
QEAKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgogI2luY2x1ZGUgIklt
YWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJJZGVudGlm
aWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9EaXNwbGF5TGlzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRmxvYXRTaXpl
OwogY2xhc3MgSW1hZ2VEYXRhOwogZW51bSBjbGFzcyBBbHBoYVByZW11bHRpcGxpY2F0aW9uIDog
dWludDhfdDsKK2VudW0gY2xhc3MgQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1jbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwotCiBjbGFzcyBSZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5SZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKCk7Ci0KLSAgICBJbWFnZUJ1ZmZlcklkZW50aWZp
ZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUJ1ZmZlcklk
ZW50aWZpZXI7IH0KLQogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLiBTZWUgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbi4KICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQmFj
a2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpD
b2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpID0gMDsKIAotICAgIHZvaWQgY29t
bWl0Rmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyKTsKLQotcHJvdGVjdGVk
OgotICAgIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpDb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJik7Ci0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0ID0gMDsKICAgICBib29sIGlzUGVuZGlu
Z0ZsdXNoKCkgY29uc3QgeyByZXR1cm4gbV9zZW50Rmx1c2hJZGVudGlmaWVyICE9IG1fcmVjZWl2
ZWRGbHVzaElkZW50aWZpZXI7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdl
dEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkgY29uc3Q7Ci0KLSAgICB2b2lkIHdhaXRG
b3JDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKTsKLSAgICB2b2lkIHdhaXRGb3JDb21taXRJbWFn
ZUJ1ZmZlckZsdXNoQ29udGV4dCgpOworICAgIHZvaWQgY29tbWl0Rmx1c2hDb250ZXh0KEltYWdl
QnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIG1f
cmVjZWl2ZWRGbHVzaElkZW50aWZpZXIgPSBmbHVzaElkZW50aWZpZXI7CisgICAgfQogCi0gICAg
Ly8gTWVzc2FnZXMgdG8gYmUgc2VudC4gU2VlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5t
ZXNzYWdlcy5pbi4KLSAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0Jik7Ci0gICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0QW5kV2Fp
dENvbW1pdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmKTsKLQotcHJpdmF0ZToK
LSAgICBXZWFrUHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDsKLSAgICBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIg
eyBJbWFnZUJ1ZmZlcklkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKK3Byb3RlY3RlZDoKKyAgICB2
aXJ0dWFsIH5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKCkgPSBkZWZhdWx0OwogCiAg
ICAgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgbV9zZW50Rmx1c2hJZGVudGlmaWVyOwogICAg
IEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCA5OTUzNDE3ODdlZGEyMGE1NTRlNGQ2
N2JhNTNkYzY5OGE1MzcwY2MwLi5jNDk4Y2ZhMGQ2MTJiYzBlYTUwY2M4ZWU0NDU1MjVhYzAxNmEx
NTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTg4LDM4ICs4OCw1OCBA
QCBib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OndhaXRGb3JDb21taXRJbWFnZUJ1ZmZlckZs
dXNoQ29udGV4dCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBTaG91
bGRBY2NlbGVyYXRlIHNob3VsZEFjY2VsZXJhdGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlKQogewotICAgIGlmIChzaG91bGRBY2NlbGVyYXRlID09IFNob3Vs
ZEFjY2VsZXJhdGU6OlllcykgewotICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IEFjY2Vs
ZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpSZW1v
dGVBY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCAqdGhpcykpIHsKLSAg
ICAgICAgICAgIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5hZGQoaW1hZ2VCdWZmZXIt
PmltYWdlQnVmZmVySWRlbnRpZmllcigpLCBpbWFnZUJ1ZmZlci5nZXQoKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gaW1hZ2VCdWZmZXI7Ci0gICAgICAgIH0KLSAgICB9CisgICAgcmV0dXJuIG1fcmVt
b3RlUmVzb3VyY2VDYWNoZS5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCBzaG91bGRBY2NlbGVyYXRl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OnJlbGVhc2VJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UpCit7CisgICAg
bV9yZW1vdGVSZXNvdXJjZUNhY2hlLnJlbGVhc2VJbWFnZUJ1ZmZlcihpbWFnZSk7Cit9CisKK3Zv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZUNsaWVudChSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sKKyAgICBtX3JlbW90ZVJl
c291cmNlQ2FjaGUucmVsZWFzZVJlbW90ZUNsaWVudChyZW1vdGVDbGllbnRJZGVudGlmaWVyKTsK
K30KKworUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJl
bW90ZUNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSkKK3sKKyAgICBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyID0gUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Q3JlYXRlSW1hZ2VCdWZmZXIo
c2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCByZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKyAgICBy
ZXR1cm4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworfQorCitSZWZQdHI8SW1hZ2VEYXRhPiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVHZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIFJlbW90ZVJlc291
cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgSVBDOjpJbWFn
ZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhUmVmZXJlbmNlOworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQs
IHNyY1JlY3QsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OkdldEltYWdlRGF0YTo6UmVwbHkoaW1hZ2VEYXRhUmVmZXJlbmNl
KSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgMV9zKTsKKyAgICByZXR1cm4gaW1hZ2VE
YXRhUmVmZXJlbmNlLmJ1ZmZlcigpOworfQogCi0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBV
bmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2Rl
OjpSZW1vdGVVbmFjY2VsZXJhdGVkLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsICp0aGlz
KSkgewotICAgICAgICBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuYWRkKGltYWdlQnVm
ZmVyLT5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSwgaW1hZ2VCdWZmZXIuZ2V0KCkpOwotICAgICAg
ICByZXR1cm4gaW1hZ2VCdWZmZXI7Ci0gICAgfQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpyZW1vdGVGbHVzaERyYXdpbmdDb250ZXh0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dCYgZGlzcGxheUxpc3QsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpGbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QsIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworfQogCi0g
ICAgcmV0dXJuIG51bGxwdHI7CitJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpyZW1vdGVGbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0IERp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIFJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgSW1hZ2VCdWZmZXJGbHVzaElk
ZW50aWZpZXIgc2VudEZsdXNoSWRlbnRpZmllciA9IEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6Rmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGRpc3BsYXlMaXN0
LCBzZW50Rmx1c2hJZGVudGlmaWVyLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gc2VudEZsdXNoSWRlbnRpZmllcjsK
IH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlSW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6cmVtb3RlUmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbW90ZVJlc291cmNl
SWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgLy8gQ3JlYXRlSW1h
Z2VCdWZmZXIgbWVzc2FnZSBzaG91bGQgaGF2ZSBiZWVuIHJlY2VpdmVkIGJlZm9yZSB0aGlzIG9u
ZS4KLSAgICBib29sIGZvdW5kID0gbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLnJlbW92
ZShpbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5k
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OlJlbGVh
c2VSZW1vdGVSZXNvdXJjZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVh
dGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBJbWFnZUJ1ZmZlcklk
ZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGlm
IChhdXRvIGltYWdlQnVmZmVyID0gbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmdldChp
bWFnZUJ1ZmZlcklkZW50aWZpZXIpKQotICAgICAgICBpbWFnZUJ1ZmZlci0+Y3JlYXRlQmFja2Vu
ZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
V1RGTW92ZShoYW5kbGUpKTsKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBj
b2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRsZSksIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiB9
CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y29tbWl0SW1hZ2VCdWZmZXJGbHVzaENv
bnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBJbWFnZUJ1
ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNo
SWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX2lt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuZ2V0KGltYWdlQnVmZmVySWRlbnRpZmllcikpCi0g
ICAgICAgIGltYWdlQnVmZmVyLT5jb21taXRGbHVzaENvbnRleHQoZmx1c2hJZGVudGlmaWVyKTsK
KyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQo
Zmx1c2hJZGVudGlmaWVyLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggZjQ5NjE1OGU3
ZDQwZWViMDVhYzM5NDM0YWYyNDYzM2JhYmM3ZjBlZi4uOTZlZmU3Yzc1NGZmN2NlMDY0OTM3ZmIz
YmU3MDU4M2RlNzdkZjc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTI5LDE4
ICsyOSwyNCBAQAogCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCiAjaW5j
bHVkZSAiSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZl
cklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJN
ZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
ci5oIgorI2luY2x1ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGUuaCIKICNpbmNsdWRlICJSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZS5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0
U2l6ZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nTW9kZS5oPgotI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIu
aD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1l
c3BhY2UgRGlzcGxheUxpc3QgeworY2xhc3MgRGlzcGxheUxpc3Q7CitjbGFzcyBJdGVtOworfQor
Y2xhc3MgRmxvYXRTaXplOworZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdDsKK2VudW0g
Y2xhc3MgUmVuZGVyaW5nTW9kZSA6IHVpbnQ4X3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kCkBAIC01Miw4ICs1OCw2IEBAIHB1YmxpYzoK
IAogICAgIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kKCk7CiAKLSAgICBSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI7IH0KLQogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRl
ci4KICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25z
dCBvdmVycmlkZTsKQEAgLTYxLDIxICs2NSwzMCBAQCBwdWJsaWM6CiAgICAgLy8gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
LCBXZWJDb3JlOjpTaG91bGRBY2NlbGVyYXRlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNv
cmU6OkNvbG9yU3BhY2UpOwotICAgIHZvaWQgcmVsZWFzZUltYWdlQnVmZmVyKEltYWdlQnVmZmVy
SWRlbnRpZmllcik7Ci0KICAgICBib29sIHdhaXRGb3JDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQo
KTsKICAgICBib29sIHdhaXRGb3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgpOworICAg
ICAgICAKKyAgICAvLyBSZXNvdWNlIGNhY2hlLgorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiwgV2ViQ29yZTo6U2hvdWxkQWNjZWxlcmF0ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJD
b3JlOjpDb2xvclNwYWNlKTsKKyAgICB2b2lkIHJlbGVhc2VJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJ
bWFnZUJ1ZmZlciYpOworICAgIFJlZlB0cjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbT4gY3Jl
YXRlRHJhd0ltYWdlQnVmZmVySXRlbShXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmLCBXZWJDb3JlOjpSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVsZWFzZVJlbW90ZUNsaWVudChXZWJDb3Jl
OjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2Vu
dC4KKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9k
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlKTsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiByZW1vdGVHZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNy
Y1JlY3QsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCByZW1v
dGVGbHVzaERyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdCYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgSW1hZ2VCdWZm
ZXJGbHVzaElkZW50aWZpZXIgcmVtb3RlRmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25z
dCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVtb3RlUmVsZWFzZVJlbW90ZVJlc291cmNlKFdl
YkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAKIHByaXZhdGU6CiAgICAgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCgpOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCi0g
ICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotICAgIHZvaWQgY29tbWl0SW1hZ2VCdWZm
ZXJGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIsIEltYWdlQnVmZmVySWRl
bnRpZmllcik7CisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2Vu
ZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwor
ICAgIHZvaWQgY29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAKLSAgICB1c2lu
ZyBJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwID0gSGFzaE1hcDxJbWFnZUJ1ZmZlcklkZW50
aWZpZXIsIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIqPjsKLSAgICBJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyTWFwIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcDsKKyAgICBS
ZW1vdGVSZXNvdXJjZUNhY2hlIG1fcmVtb3RlUmVzb3VyY2VDYWNoZSB7ICp0aGlzIH07CiAgICAg
UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciB7
IFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KaW5kZXggMTJhN2JmOGRhNGM4
MjU3MGJjYTM2YTEzNWZkNzFhZjI1ODhiNjRkNS4uMmMwZjdlOGExMjAzZjI2ODY1MmEwMGZjMWY3
YjE3ZGE1OTlkMmFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNz
YWdlcy5pbgpAQCAtMjMsOCArMjMsOCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVz
c2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBOb3RSZWZDb3VudGVkIHsKLSAgICB2b2lk
IENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChXZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUs
IFdlYkNvcmU6OkludFNpemUgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2Vi
Q29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSBoYW5kbGUsIFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRl
bnRpZmllcikKLSAgICB2b2lkIENvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KFdlYktpdDo6
SW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBXZWJLaXQ6OkltYWdl
QnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCisgICAgdm9pZCBDcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlbmQoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3Jl
OjpJbnRTaXplIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNv
bG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFu
ZGxlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKQorICAgIHZvaWQgQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoV2ViS2l0OjpJ
bWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90
ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB9CiAKICNlbmRp
ZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44NWJmMjdmM2YwMmI0NGY5MDI2MDRkZTQ2MDhjMGI2YjhmMTA4YWU1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlLmNwcApAQCAtMCwwICsxLDE1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlLmgiCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmgiCisj
aW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIgorI2luY2x1ZGUgIlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvQ2FjaGVkSW1hZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90
ZVJlc291cmNlQ2FjaGU6OlJlbW90ZVJlc291cmNlQ2FjaGUoUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZChyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQoreworfQorCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+IFJlbW90ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgU2hvdWxkQWNjZWxlcmF0ZSBzaG91bGRBY2NlbGVyYXRlLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBpZiAoc2hvdWxkQWNj
ZWxlcmF0ZSA9PSBTaG91bGRBY2NlbGVyYXRlOjpZZXMpIHsKKyAgICAgICAgaWYgKGF1dG8gaW1h
Z2VCdWZmZXIgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVu
ZGVyaW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkgeworICAgICAgICAgICAgbV9yZW1vdGVJbWFn
ZUJ1ZmZlckhhc2hNYXAuYWRkKGltYWdlQnVmZmVyLmdldCgpLCBpbWFnZUJ1ZmZlci0+cmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgbV9yZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVySGFzaE1hcC5hZGQoaW1hZ2VCdWZmZXItPnJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcigpLCBpbWFnZUJ1ZmZlci5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gaW1hZ2VCdWZm
ZXI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IFVuYWNj
ZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlJl
bW90ZVVuYWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kKSkgeworICAgICAgICBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5h
ZGQoaW1hZ2VCdWZmZXIuZ2V0KCksIGltYWdlQnVmZmVyLT5yZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIoKSk7CisgICAgICAgIG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAu
YWRkKGltYWdlQnVmZmVyLT5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VCdWZmZXIu
Z2V0KCkpOworICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CisgICAgfQorCisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlSW1hZ2VCdWZm
ZXJCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJh
Y2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwg
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9
IG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAuZ2V0KHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcikpCisgICAgICAgIGltYWdlQnVmZmVyLT5jcmVhdGVCYWNrZW5kKGxvZ2lj
YWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3Zl
KGhhbmRsZSkpOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNvbW1pdEltYWdlQnVm
ZmVyRmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmll
ciwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sK
KyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlckhhc2hNYXAuZ2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIGltYWdl
QnVmZmVyLT5jb21taXRGbHVzaENvbnRleHQoZmx1c2hJZGVudGlmaWVyKTsKK30KKworUmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VJbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciYgaW1hZ2UpCit7CisgICAgLy8gUmVtb3ZlIHRoZSByZXNvdXJjZSBmcm9t
IHRoZSBjYWNoZS4KKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1fcmVtb3Rl
SW1hZ2VCdWZmZXJIYXNoTWFwLnRha2UoJmltYWdlKTsKKyAgICBBU1NFUlQocmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKworICAgIC8vIGNyZWF0ZUltYWdlQnVmZmVyIHNob3VsZCBoYXZlIGJl
ZW4gcmV0dXJuZWQgdGhpcyBJbWFnZUJ1ZmZlciBiZWZvcmUuCisgICAgYm9vbCBmb3VuZCA9IG1f
cmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAucmVtb3ZlKHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOworCisgICAg
Ly8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gcmVtb3ZlIHRoaXMgcmVzb3VyY2UgdW5sZXNzIGl0
J3MgcGVuZGluZyByZXBsYXlpbmcgYmFjay4KKyAgICByZWxlYXNlUmVtb3RlUmVzb3VyY2VQZW5k
aW5nUmVtb3ZlQ2xpZW50cyhyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHJldHVybiBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK1JlbW90ZVJlc291cmNlSWRlbnRpZmllciBS
ZW1vdGVSZXNvdXJjZUNhY2hlOjpmaW5kSW1hZ2VCdWZmZXJGb3JDbGllbnQoSW1hZ2VCdWZmZXIm
IGltYWdlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikK
K3sKKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1fcmVtb3RlSW1hZ2VCdWZm
ZXJIYXNoTWFwLmdldCgmaW1hZ2UpOworICAgIGFkZFJlbW90ZUNsaWVudChyZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAgIHJldHVybiByZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6YWRkUmVt
b3RlQ2xpZW50KFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQorewor
ICAgIGlmICghcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBBZGQgdGhlICJyZXNvdXJjZSAtPiBjbGllbnQiIGRlcGVuZGVuY3kgaW4gbV9yZW1vdGVS
ZXNvdXJjZUNsaWVudHNIYXNoTWFwLgorICAgIGF1dG8mIGNsaWVudHMgPSBtX3JlbW90ZVJlc291
cmNlQ2xpZW50c0hhc2hNYXAuZW5zdXJlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgWyZdIHsK
KyAgICAgICAgcmV0dXJuIFJlbW90ZUNsaWVudHNIYXNoU2V0KCk7CisgICAgfSkuaXRlcmF0b3It
PnZhbHVlOworCisgICAgY2xpZW50cy5hZGQocmVtb3RlQ2xpZW50SWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291cmNlUGVuZGluZ1Jl
bW92ZUNsaWVudHMoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcikKK3sKKyAgICBBU1NFUlQoIW1fcmVtb3RlUmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVh
c2VIYXNoTWFwLmNvbnRhaW5zKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpOworCisgICAgLy8g
SWYgd2UgaGF2ZSByZWNvcmRlZCB0aGUgcmVzb3VyY2UgLT4gY2xpZW50IGRlcGVuZGVuY3kgYmVm
b3JlIGluIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCwgbW92ZSB0aGlzCisgICAgLy8g
ZGVwZW5kZW5jeSB0byBtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1h
cC4gT3RoZXJ3aXNlIHJlbW92ZSB0aGUgcmVzb3VyY2UgZnJvbSB0aGUgY2FjaGUuCisgICAgaWYg
KG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcC5jb250YWlucyhyZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpKQorICAgICAgICBtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNl
SGFzaE1hcC5hZGQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBtX3JlbW90ZVJlc291cmNlQ2xp
ZW50c0hhc2hNYXAudGFrZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKTsKKyAgICBlbHNlCisg
ICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZWxlYXNlUmVtb3RlUmVzb3Vy
Y2UocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKworVmVjdG9yPFJlbW90ZVJlc291cmNl
SWRlbnRpZmllcj4gUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVtb3ZlUmVtb3RlQ2xpZW50KFJlbW90
ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAmIHJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAsIFJl
bW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIFZl
Y3RvcjxSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+IHJlbW90ZVJlc291cmNlQ2xpZW50c1RvQmVS
ZW1vdmVkOworCisgICAgLy8gUmVtb3ZlIGFsbCB0aGUgcmVzb3VyY2UgLT4gY2xpZW50IGRlcGVu
ZGVuY2llcyBmcm9tIHJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAuCisgICAgZm9yIChhdXRv
JiBwYWlyIDogcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCkgeworICAgICAgICBwYWlyLnZh
bHVlLnJlbW92ZShyZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKHBhaXIudmFs
dWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmVtb3RlUmVzb3VyY2VDbGllbnRzVG9CZVJlbW92
ZWQuYXBwZW5kKHBhaXIua2V5KTsKKyAgICB9CisKKyAgICAvLyBSZXR1cm4gYSBsaXN0IG9mIHRo
ZSB1bnJlZmVyZW5jZWQgcmVzb3VyY2VzLgorICAgIHJldHVybiByZW1vdGVSZXNvdXJjZUNsaWVu
dHNUb0JlUmVtb3ZlZDsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVt
b3RlQ2xpZW50KFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVy
KQoreworICAgIC8vIFJlbW92ZSBhbGwgdGhlIHJlc291cmNlIC0+IGNsaWVudCBkZXBlbmRlbmNp
ZXMgZnJvbSBtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAuCisgICAgZm9yIChhdXRvIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllciA6IHJlbW92ZVJlbW90ZUNsaWVudChtX3JlbW90ZVJlc291
cmNlQ2xpZW50c0hhc2hNYXAsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpKQorICAgICAgICBtX3Jl
bW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAucmVtb3ZlKHJlbW90ZVJlc291cmNlSWRlbnRpZmll
cik7CisKKyAgICAvLyBSZW1vdmUgYWxsIHRoZSByZXNvdXJjZSAtPiBjbGllbnQgZGVwZW5kZW5j
aWVzIGZyb20gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXAuCisg
ICAgZm9yIChhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA6IHJlbW92ZVJlbW90ZUNsaWVu
dChtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1hcCwgcmVtb3RlQ2xp
ZW50SWRlbnRpZmllcikpIHsKKyAgICAgICAgLy8gUmVtb3ZlIHRoZSB1bnJlZmVyZW5jZWQgcmVz
b3VyY2VzIGZyb20gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXAu
CisgICAgICAgIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFwLnJl
bW92ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgICAgIC8vIFRlbGwgdGhlIEdQ
VSBwcm9jZXNzIHRvIHJlbW92ZSB0aGlzIHJlc291cmNlLgorICAgICAgICBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQucmVtb3RlUmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNlSWRl
bnRpZmllcik7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmMy
Y2RlMWQyNTBlYjE1OTA2MWY3MWY2YjEwZmVmNDU3ZGUwMTlkZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZS5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNp
bmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZl
ckZsdXNoSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKK2NsYXNzIEl0ZW07Cit9CitlbnVtIGNsYXNz
IENvbG9yU3BhY2UgOiB1aW50OF90OworY2xhc3MgQ29sb3I7CitjbGFzcyBGbG9hdFJlY3Q7Citj
bGFzcyBGbG9hdFNpemU7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOworY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDsK
KworY2xhc3MgUmVtb3RlUmVzb3VyY2VDYWNoZSB7CitwdWJsaWM6CisgICAgUmVtb3RlUmVzb3Vy
Y2VDYWNoZShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJik7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYsIFdlYkNvcmU6OlNob3VsZEFjY2VsZXJhdGUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSk7CisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tl
bmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29s
b3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpOworICAgIHZvaWQgY29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoSW1h
Z2VCdWZmZXJGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmll
cik7CisKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVsZWFzZUltYWdl
QnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJik7CisgICAgdm9pZCByZWxlYXNlUmVtb3RlQ2xp
ZW50KFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlm
aWVyKTsKKworcHJpdmF0ZToKKyAgICB1c2luZyBSZW1vdGVDbGllbnRzSGFzaFNldCA9IEhhc2hT
ZXQ8V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPjsKKyAgICB1c2luZyBSZW1vdGVJ
bWFnZUJ1ZmZlckhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OkltYWdlQnVmZmVyKiwgV2ViQ29y
ZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPjsKKyAgICB1c2luZyBSZW1vdGVSZXNvdXJjZUNs
aWVudHNIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIs
IFJlbW90ZUNsaWVudHNIYXNoU2V0PjsKKyAgICB1c2luZyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVySGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyLCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKj47CisKKyAgICBXZWJDb3JlOjpS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgZmluZEltYWdlQnVmZmVyRm9yQ2xpZW50KFdlYkNvcmU6
OkltYWdlQnVmZmVyJiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAg
IHZvaWQgYWRkUmVtb3RlQ2xpZW50KFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciwg
V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIp
OworICAgIFZlY3RvcjxXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+IHJlbW92ZVJl
bW90ZUNsaWVudChSZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwJiwgV2ViQ29yZTo6UmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAgIHZvaWQgcmVs
ZWFzZVJlbW90ZVJlc291cmNlUGVuZGluZ1JlbW92ZUNsaWVudHMoV2ViQ29yZTo6UmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKTsKKworICAgIFJlbW90ZUltYWdlQnVmZmVySGFzaE1hcCBtX3JlbW90
ZUltYWdlQnVmZmVySGFzaE1hcDsKKyAgICBSZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwIG1f
cmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcDsKKyAgICBSZW1vdGVSZXNvdXJjZUNsaWVudHNI
YXNoTWFwIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFwOworICAg
IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJIYXNoTWFwIG1fcmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlckhhc2hNYXA7CisgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCAxYWU1MTU3MjUz
NjFkMjI4MjE5MTRhZWQwZjI4YmIxNmU3NjM1OGZmLi4zMDA1MGFjMDdkYzlhZDVjODNmM2RlMjgz
MjkwNmE5ODc0MTBkM2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2Ft
ZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBF
TkFCTEUoR0FNRVBBRCkKIAogI2luY2x1ZGUgIkdhbWVwYWREYXRhLmgiCisjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIldlYkdhbWVwYWQuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411025</attachid>
            <date>2020-10-10 19:52:55 -0700</date>
            <delta_ts>2020-10-19 13:09:38 -0700</delta_ts>
            <desc>Patch for review</desc>
            <filename>resource-cache-3.patch</filename>
            <type>text/plain</type>
            <size>44779</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMmI5NjcxMDEwOGFlLi44MDMyZDA3NWQ2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsODggQEAKKzIwMjAtMTAtMTAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFw
cGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIEludHJvZHVjZSBSZW1vdGVSZXNvdXJj
ZUNhY2hlIHRvIG1hbmFnZSB0aGUgcmVtb3RlIHJlc291cmNlcyBpbiBXZWIgUHJvY2VzcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NTU4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3RlUmVzb3Vy
Y2VDYWNoZSB3aWxsIGJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgcmVtb3RlIHJlc291
cmNlcworICAgICAgICBpbmNsdWRpbmcgdGhlaXIgYWN0dWFsIGxpZmUgY3ljbGUgaW4gdGhlIFdl
YiBQcm9jZXNzIHNpZGUuIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQKKyAgICAgICAgd2lsbCBiZSBy
ZXNwb25zaWJsZSBvbmx5IGZvciB0aGUgSVBDIGNvbW11bmljYXRpb25zIHdpdGggUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LgorICAgICAgICBJdCB3aWxsIGRlbGVnYXRlIGFsbCB0aGUgcmVz
b3VyY2UgbWFuYWdlbWVudCB0byBpdHMgUmVtb3RlUmVzb3VyY2VDYWNoZS4KKworICAgICAgICBC
ZWNhdXNlIFJlbW90ZUltYWdlQnVmZmVyIGRvZXMgdGhlIGNvbW11bmljYXRpb24gYmV0d2VlbiBX
ZWJDb3JlIGFuZCBHUFUKKyAgICAgICAgUHJvY2VzcywgUmVtb3RlUmVzb3VyY2VDYWNoZSB3aWxs
IGtlZXAgdHdvIEhhc2hNYXBzIHRvIGVhc2UgdGhlIG1hcHBpbmcKKyAgICAgICAgaW4gYm90aCBk
aXJlY3Rpb25zOgorCisgICAgICAgIC0tIG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwIG1hcHMg
SW1hZ2VCdWZmZXIqIC0+IFJlbW90ZVJlc291cmNlSWRlbnRpZmllcgorICAgICAgICAtLSBtX3Jl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJIYXNoTWFwIG1hcHMgUmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyCisgICAgICAgICAgIC0+IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIq
CisKKyAgICAgICAgVG8ga2VlcCB0cmFjayBvZiB0aGUgcmVzb3VyY2UgcmVmZXJlbmNpbmcsIFJl
bW90ZVJlc291cmNlQ2FjaGUgdXNlcyBhbm90aGVyIAorICAgICAgICBtYXAgd2hpY2ggcmVsYXRl
cyBhIHJlbW90ZSByZXNvdXJjZSB3aXRoIHRoZSBzZXQgb2YgcmVtb3RlIGRyYXdpbmcgY2xpZW50
cy4KKyAgICAgICAgCisgICAgICAgIC0tIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCBt
YXBzIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciAtPgorICAgICAgICAgICBIYXNoU2V0PFJlbW90
ZVJlc291cmNlSWRlbnRpZmllcj4KKworICAgICAgICBUaGUgcmVtb3RlIHJlc291cmNlIGhhcyBz
dGF5IGFsaXZlIHRpbGwgdGhlaXIgY2xpZW50cyByZXBsYXllZCBiYWNrIHRoZWlyCisgICAgICAg
IERpc3BsYXlMaXN0OjpJdGVtcyB3aGljaCByZWZlcmVuY2UgdGhlc2UgcmVzb3VyY2VzLiBPbmNl
IFJlbW90ZVJlc291cmNlQ2FjaGUKKyAgICAgICAgaXMgcmVxdWVzdGVkIHRvIHJlbGVhc2UgYSBy
ZW1vdGUgcmVzb3VyY2UgYnV0IGl0IGZpbmRzIHRoaXMgcmVzb3VyY2UgaXMKKyAgICAgICAgcmVm
ZXJlbmNlZCBieSBhIHNldCBvZiByZW1vdGUgZHJhd2luZyBjbGllbnRzLCBpdCBtb3ZlcyB0aGUg
ZW50cnkgb2YgdGhpcworICAgICAgICByZXNvdXJjZSBmcm9tIG1fcmVtb3RlUmVzb3VyY2VDbGll
bnRzSGFzaE1hcCB0byBhbm90aGVyIEhhc2hNYXAgbmFtZWQ6CisKKyAgICAgICAgLS0gbV9yZW1v
dGVSZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXAgbWFwcyBSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIKKyAgICAgICAgICAgLT4gSGFzaFNldDxSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXI+CisKKyAgICAgICAgV2hlbiBhbiBlbnRyeSBmb3IgYSByZW1vdGUgcmVzb3VyY2UgZXhpc3Rz
IGluIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFwIAorICAgICAg
ICBhbmQgbm8gcmVtb3RlIGNsaWVudCByZWZlcmVuY2VzIGl0IGFueW1vcmUsIFJlbW90ZVJlc291
cmNlQ2FjaGUgd2lsbCB0ZWxsIAorICAgICAgICBHUFUgUHJvY2VzcyB0byByZWxlYXNlIGl0cyBy
ZW1vdGUgcmVzb3VyY2UgYXMgd2VsbC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUltYWdlQnVmZmVyOjp+UmVtb3RlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVJbWFnZUJ1ZmZlcjo6cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6OlJlbW90ZUltYWdlQnVmZmVyKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmNvbW1pdEZsdXNoQ29udGV4dCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmltYWdlQnVmZmVySWRlbnRp
ZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VJbWFnZUJ1ZmZl
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1v
dGVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1v
dGVDcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OnJlbW90ZUdldEltYWdlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OnJlbW90ZUZsdXNoRHJhd2luZ0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVGbHVzaERyYXdpbmdDb250ZXh0QW5kQ29t
bWl0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlUmVs
ZWFzZVJlbW90ZVJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6Y29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVzb3VyY2VDYWNoZTo6UmVtb3RlUmVzb3VyY2VDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y29tbWl0SW1hZ2VCdWZmZXJGbHVzaENv
bnRleHQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlSW1h
Z2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpmaW5kSW1h
Z2VCdWZmZXJGb3JDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hl
OjphZGRSZW1vdGVDbGllbnQpOgorICAgICAgICBMaW5rcyBhIHJlbW90ZSByZXNvdXJjZSB3aXRo
IGEgZHJhd2luZyByZW1vdGUgY2xpZW50LgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291
cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZVBlbmRpbmdSZW1vdmVDbGllbnRzKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVtb3ZlUmVtb3RlQ2xpZW50KToK
KyAgICAgICAgUmVtb3ZlIGFsbCB0aGUgZW50cmllcyB3aGljaCBpbmNsdWRlcyBhIGNlcnRhaW4g
cmVtb3RlIGNsaWVudC4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpy
ZWxlYXNlUmVtb3RlQ2xpZW50KToKKyAgICAgICAgQSByZW1vdGUgY2xpZW50IGhhcyBkb25lIGZs
dXNoaW5nIGl0cyBEcmF3aW5nQ29udGV4dC4gSXQncyB0aW1lIHRvIGJvb2stCisgICAgICAgIGtl
ZXAgdGhlIHJlc291cmNlIHJlZmVyZW5jaW5nIGFuZCBzeW5jIHVwIHdpdGggdGhlIEdQVSBzaWRl
IGlmIGl0IGhhcyB0bworICAgICAgICByZWxlYXNlIHNvbWUgb2YgdGhlIHJlbW90ZSByZXNvdXJj
ZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJv
dmlkZXIuY3BwOgorCiAyMDIwLTEwLTA5ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3
YUBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBJbnRyb2R1Y2UgUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5IHRvIG1hbmFnZSB0aGUgcmVzb3VyY2VzIGluIHRoZSBHUFUgUHJvY2Vz
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKaW5kZXggNjdjMTMzZTY3ZDNkLi44ZTNiMmFmZmNhMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dApAQCAtNTUyLDggKzU1Miw4IEBAIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAogCiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29u
bmVjdGlvbi5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZC5jcHAKLVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNw
cAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzQ1YmJm
YjUzNjA2Li4yYThjNDJhNWFiZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDE3Nyw3ICs0MTc3LDYgQEAKIAkJNzFBNjc2QTUyMkM2
MjMxODAwN0Q2Mjk1IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVj
b2duaXplci5tbTsgcGF0aCA9IGlvcy9XS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxRkI4MTBBMjI2MDYyN0EwMDMyMzY3NyAv
KiBXZWJzaXRlU2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJzaXRlU2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRj
aFBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjI3ODAwQjI0MDhCRDdE
MDA3RDM3NkIgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
bGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTcyMjc4MDBDMjQwOTdBMDIwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjI3ODAwRDI0MDk3QTAyMDA3
RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcyN0E3RjM0MjQwNzg1N0QwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUlPU3VyZmFjZUJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QTdGMzUyNDA3ODU3RjAwNEQyOTMxIC8qIEltYWdlQnVmZmVy
U2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTQxOTAsNiArNDE4OSw4IEBACiAJCTcyOEU4NkYwMTc5NTE4OEMw
MDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MjlEMDUzMjI1MzE0RkVGMDA0MjIwOTggLyogUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOUQwNTMzMjUzMTRGRUYwMDQyMjA5
OCAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyOUQwNTM1
MjUzMTczQ0MwMDQyMjA5OCAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbW90ZVJlc291cmNlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3MjlEMDUzNjI1MzE3M0NDMDA0MjIwOTggLyogUmVtb3RlUmVzb3VyY2VDYWNoZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW1vdGVSZXNvdXJjZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTc1QThEMkM0MTg3Q0NGOUYwMEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJzaXRlRGF0YVN0b3JlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1QThEMkM1MTg3Q0NGOUYwMEMzOUM5RSAv
KiBXS1dlYnNpdGVEYXRhU3RvcmUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXS1dlYnNpdGVEYXRhU3RvcmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTc1QThEMkQ0MTg3RDFDMDEwMEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5h
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYnNpdGVEYXRhU3RvcmVJ
bnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODA4MCwxMSArODA4MSwx
MiBAQAogCQkJCTcyN0E3RjM4MjQwNzg4RjAwMDREMjkzMSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVy
U2hhcmVhYmxlQmFja2VuZC5oICovLAogCQkJCTcyMjc4MDBCMjQwOEJEN0QwMDdEMzc2QiAvKiBQ
bGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmggKi8sCiAJCQkJNzI3QTdGNDkyNDA4QUVFNjAwNEQy
OTMxIC8qIFJlbW90ZUltYWdlQnVmZmVyLmggKi8sCi0JCQkJNzIyNzgwMEMyNDA5N0EwMjAwN0Qz
NzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwICovLAogCQkJCTcyMjc4
MDBEMjQwOTdBMDIwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmgg
Ki8sCiAJCQkJNTUwNjQwOUQyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwICovLAogCQkJCTU1MDY0MDlFMjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmggKi8sCiAJCQkJNTUwNjQwQTAyNDA3MTlFMTAwQUFFMDQ1IC8qIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4gKi8sCisJCQkJNzI5RDA1MzUyNTMxNzNDQzAwNDIy
MDk4IC8qIFJlbW90ZVJlc291cmNlQ2FjaGUuY3BwICovLAorCQkJCTcyOUQwNTM2MjUzMTczQ0Mw
MDQyMjA5OCAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlLmggKi8sCiAJCQkJNTUwNjQwOUYyNDA3MTk2
QTAwQUFFMDQ1IC8qIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmggKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IGdyYXBoaWNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCmluZGV4IGU4NDkxNjY0NTE0NS4uYWZh
MDZmODRmZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC01MywxNCArNTMsMTkgQEAgcHVibGlj
OgogCiAgICAgflJlbW90ZUltYWdlQnVmZmVyKCkKICAgICB7CisgICAgICAgIGlmICghbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBmbHVzaERy
YXdpbmdDb250ZXh0KCk7CiAgICAgfQogCisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyOyB9CisKIHByb3RlY3RlZDoKICAgICBSZW1vdGVJbWFnZUJ1ZmZl
cihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQpCiAgICAgICAgIDogQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIoc2l6ZSkKLSAgICAgICAg
LCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAg
ICAgLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQobWFrZVdlYWtQdHIocmVtb3RlUmVuZGVyaW5n
QmFja2VuZCkpCiAgICAgeworICAgICAgICBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVtb3RlQ3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVu
ZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlKTsKICAgICB9CiAKICAgICB2
b2lkIGNyZWF0ZUJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUgaGFuZGxlKSBvdmVycmlkZQpAQCAtNjksMjIgKzc0LDUwIEBAIHByb3RlY3RlZDoKICAgICAg
ICAgbV9iYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgYmFja2VuZFNp
emUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZShoYW5kbGUpKTsKICAgICB9
CiAgICAgCi0gICAgYm9vbCBpc0JhY2tlbmRDcmVhdGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9iYWNrZW5kLmdldCgpOyB9Ci0KICAgICBCYWNrZW5kVHlwZSogZW5zdXJlQmFja2VuZENy
ZWF0ZWQoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgaWYgKCFtX2JhY2tlbmQpCi0g
ICAgICAgICAgICBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyJj4oKnRoaXMpLlJlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OndhaXRGb3JDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQo
KTsKKyAgICAgICAgaWYgKCFtX2JhY2tlbmQgJiYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQor
ICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT53YWl0Rm9yQ3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZW5kKCk7CiAgICAgICAgIHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7CiAgICAgfQog
CisgICAgdm9pZCBmbHVzaENvbnRleHQoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgZmx1c2hE
cmF3aW5nQ29udGV4dCgpOworICAgICAgICBtX2JhY2tlbmQtPmZsdXNoQ29udGV4dCgpOworICAg
IH0KKworICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dCgpIG92ZXJyaWRlCisgICAgeworICAg
ICAgICBhdXRvJiBkaXNwbGF5TGlzdCA9IG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKTsK
KyAgICAgICAgaWYgKCFkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSB8fCAhbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3NlbnRGbHVzaElkZW50
aWZpZXIgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbW90ZUZsdXNoRHJhd2luZ0NvbnRl
eHRBbmRDb21taXQoZGlzcGxheUxpc3QsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAg
ICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT53YWl0Rm9yQ29tbWl0SW1hZ2VCdWZmZXJG
bHVzaENvbnRleHQoKTsKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZWxlYXNl
UmVtb3RlQ2xpZW50KG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAgZGlzcGxh
eUxpc3QuY2xlYXIoKTsKKyAgICB9CisKKyAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoY29u
c3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIGlmICghZGlzcGxheUxpc3QuaXRlbUNvdW50KCkgfHwgIW1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLT5yZW1vdGVGbHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0
LCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgfQorICAgIAogICAgIFJlZlB0cjxX
ZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkgY29u
c3Qgb3ZlcnJpZGUKICAgICB7CisgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICAgICAgYXV0byYgZGlzcGxheUxp
c3QgPSBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyKj4odGhpcyktPm1fZHJhd2luZ0NvbnRl
eHQuZGlzcGxheUxpc3QoKTsKLSAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVJbWFnZUJ1ZmZlcio+
KHRoaXMpLT5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpmbHVzaERyYXdpbmdDb250
ZXh0KGRpc3BsYXlMaXN0KTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBjb25zdF9jYXN0PFJlbW90
ZUltYWdlQnVmZmVyKj4odGhpcyktPlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6Omdl
dEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QpOworICAgICAgICBpZiAoZGlzcGxheUxp
c3QuaXRlbUNvdW50KCkpIHsKKyAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZm
ZXIqPih0aGlzKS0+Zmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCk7CisgICAgICAgICAg
ICBkaXNwbGF5TGlzdC5jbGVhcigpOworICAgICAgICB9CisKICAgICAgICAgLy8gZ2V0SW1hZ2VE
YXRhIGlzIHN5bmNocm9ub3VzLCB3aGljaCBtZWFucyB3ZSd2ZSBhbHJlYWR5IHJlY2VpdmVkIHRo
ZSBDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCBtZXNzYWdlLgotICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW1vdGVH
ZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCBtX3JlbW90ZVJlc291cmNlSWRlbnRp
Zmllcik7CiAgICAgfQogCiAgICAgdm9pZCBwdXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEYXRhJiBpbWFn
ZURhdGEsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBkZXN0UG9pbnQgPSB7IH0sIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24g
ZGVzdEZvcm1hdCA9IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxp
ZWQpIG92ZXJyaWRlCkBAIC05NSwyNiArMTI4LDE4IEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9k
cmF3aW5nQ29udGV4dC5yZWNvcmRlcigpLnB1dEltYWdlRGF0YShpbnB1dEZvcm1hdCwgaW1hZ2VE
YXRhLCBzcmNSZWN0LCBkZXN0UG9pbnQsIGRlc3RGb3JtYXQpOwogICAgIH0KIAotICAgIHZvaWQg
Zmx1c2hDb250ZXh0KCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGZsdXNoRHJhd2luZ0NvbnRl
eHQoKTsKLSAgICAgICAgbV9iYWNrZW5kLT5mbHVzaENvbnRleHQoKTsKLSAgICB9Ci0KLSAgICB2
b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgYXV0byYg
ZGlzcGxheUxpc3QgPSBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAgIGlm
IChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSkKLSAgICAgICAgICAgIFJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXI6OmZsdXNoRHJhd2luZ0NvbnRleHRBbmRXYWl0Q29tbWl0KGRpc3BsYXlM
aXN0KTsKLSAgICB9Ci0gICAgCiAgICAgdm9pZCB3aWxsQXBwZW5kSXRlbShjb25zdCBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbSYpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBjb25zdGV4cHIg
c2l6ZV90IERpc3BsYXlMaXN0QmF0Y2hTaXplID0gNTEyOwogICAgICAgICBhdXRvJiBkaXNwbGF5
TGlzdCA9IG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKTsKLSAgICAgICAgaWYgKGRpc3Bs
YXlMaXN0Lml0ZW1Db3VudCgpID49IERpc3BsYXlMaXN0QmF0Y2hTaXplKQotICAgICAgICAgICAg
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dChkaXNw
bGF5TGlzdCk7CisgICAgICAgIGlmIChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSA8IERpc3BsYXlM
aXN0QmF0Y2hTaXplIHx8ICFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QpOworICAgICAg
ICBkaXNwbGF5TGlzdC5jbGVhcigpOwogICAgIH0KKworICAgIFdlYWtQdHI8UmVtb3RlUmVuZGVy
aW5nQmFja2VuZD4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kOworICAgIFdlYkNvcmU6OlJlbW90
ZVJlc291cmNlSWRlbnRpZmllciBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3MTUwYzdiMDc5My4u
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5
OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuaCIKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKLQotI2luY2x1ZGUgIkltYWdlRGF0YVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaCIKLSNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlN
ZXNzYWdlcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1SZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyOjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKLSAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZChtYWtlV2Vha1B0cihyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkKLXsKLSAgICAvLyBDcmVhdGUg
dGhlIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuCi0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkNyZWF0ZUltYWdl
QnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
bV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOwotfQotCi1SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyOjp+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcigpCi17Ci0gICAgLy8gUmVs
ZWFzZSB0aGUgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS4KLSAgICBpZiAoIW1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZCkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC0+c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpSZWxlYXNlSW1h
Z2VCdWZmZXIobV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQtPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOwotfQotCi1SZWZQdHI8SW1hZ2VEYXRh
PiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpnZXRJbWFnZURhdGEoQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0
Ci17Ci0gICAgSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhUmVmZXJlbmNlOwotICAg
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6R2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgbV9p
bWFnZUJ1ZmZlcklkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpHZXRJbWFnZURhdGE6OlJlcGx5KGltYWdlRGF0YVJlZmVyZW5jZSksIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC0+cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSwgMV9zKTsKLSAgICBy
ZXR1cm4gaW1hZ2VEYXRhUmVmZXJlbmNlLmJ1ZmZlcigpOwotfQotCi12b2lkIFJlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXI6OndhaXRGb3JDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKQot
ewotICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQgJiYgIWlzQmFja2VuZENyZWF0ZWQo
KSkKLSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT53YWl0Rm9yQ3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZW5kKCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
cjo6d2FpdEZvckNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KCkKLXsKLSAgICBpZiAobV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kICYmIGlzUGVuZGluZ0ZsdXNoKCkpCi0gICAgICAgIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZC0+d2FpdEZvckNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0
KCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3
aW5nQ29udGV4dChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0
KQotewotICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQotICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dChk
aXNwbGF5TGlzdCwgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQtPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOwotICAgIGRpc3BsYXlMaXN0LmNs
ZWFyKCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hE
cmF3aW5nQ29udGV4dEFuZFdhaXRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0JiBkaXNwbGF5TGlzdCkKLXsKLSAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkK
LSAgICAgICAgcmV0dXJuOwotICAgIG1fc2VudEZsdXNoSWRlbnRpZmllciA9IEltYWdlQnVmZmVy
Rmx1c2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC0+c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpGbHVzaEltYWdl
QnVmZmVyRHJhd2luZ0NvbnRleHRBbmRDb21taXQoZGlzcGxheUxpc3QsIG1fc2VudEZsdXNoSWRl
bnRpZmllciwgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQtPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOwotICAgIGRpc3BsYXlMaXN0LmNsZWFy
KCk7Ci0gICAgd2FpdEZvckNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KCk7Ci19Ci0KLXZv
aWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Y29tbWl0Rmx1c2hDb250ZXh0KElt
YWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllcikKLXsKLSAgICBtX3JlY2Vp
dmVkRmx1c2hJZGVudGlmaWVyID0gZmx1c2hJZGVudGlmaWVyOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmgKaW5kZXggNmNmYzg1ODk1YTUxLi42MWRkNThj
ZTUyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oCkBA
IC0yOSw1MCArMjksMzEgQEAKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5o
IgogI2luY2x1ZGUgIkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9Db2xvclNwYWNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ01vZGUuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgSW1hZ2VEYXRhOwog
ZW51bSBjbGFzcyBBbHBoYVByZW11bHRpcGxpY2F0aW9uIDogdWludDhfdDsKK2VudW0gY2xhc3Mg
Q29sb3JTcGFjZSA6IHVpbnQ4X3Q7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwotCiBjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyKCk7Ci0KLSAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXI7IH0KLQogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLiBTZWUgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbi4KICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQmFja2Vu
ZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xv
clNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpID0gMDsKIAotICAgIHZvaWQgY29tbWl0
Rmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyKTsKLQotcHJvdGVjdGVkOgot
ICAgIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJD
b3JlOjpDb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJik7Ci0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0ID0gMDsKICAgICBib29sIGlzUGVuZGluZ0Zs
dXNoKCkgY29uc3QgeyByZXR1cm4gbV9zZW50Rmx1c2hJZGVudGlmaWVyICE9IG1fcmVjZWl2ZWRG
bHVzaElkZW50aWZpZXI7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldElt
YWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkgY29uc3Q7Ci0KLSAgICB2b2lkIHdhaXRGb3JD
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKTsKLSAgICB2b2lkIHdhaXRGb3JDb21taXRJbWFnZUJ1
ZmZlckZsdXNoQ29udGV4dCgpOworICAgIHZvaWQgY29tbWl0Rmx1c2hDb250ZXh0KEltYWdlQnVm
ZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIG1fcmVj
ZWl2ZWRGbHVzaElkZW50aWZpZXIgPSBmbHVzaElkZW50aWZpZXI7CisgICAgfQogCi0gICAgLy8g
TWVzc2FnZXMgdG8gYmUgc2VudC4gU2VlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNz
YWdlcy5pbi4KLSAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0Jik7Ci0gICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0QW5kV2FpdENv
bW1pdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmKTsKLQotcHJpdmF0ZToKLSAg
ICBXZWFrUHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDsKLSAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgeyBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRl
KCkgfTsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyKCkgPSBkZWZhdWx0OwogCiAgICAgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgbV9z
ZW50Rmx1c2hJZGVudGlmaWVyOwogICAgIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIG1fcmVj
ZWl2ZWRGbHVzaElkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRl
eCBkYmJlOWI4MzAzNmYuLmM0OThjZmEwZDYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwCkBAIC04OCwzOCArODgsNTggQEAgYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3
YWl0Rm9yQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgU2hvdWxkQWNjZWxlcmF0ZSBzaG91bGRBY2NlbGVyYXRlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKLSAgICBpZiAo
c2hvdWxkQWNjZWxlcmF0ZSA9PSBTaG91bGRBY2NlbGVyYXRlOjpZZXMpIHsKLSAgICAgICAgaWYg
KGF1dG8gaW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyOjpjcmVhdGUo
c2l6ZSwgUmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSwg
Y29sb3JTcGFjZSwgKnRoaXMpKSB7Ci0gICAgICAgICAgICBtX2ltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXJNYXAuYWRkKGltYWdlQnVmZmVyLT5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1h
Z2VCdWZmZXIuZ2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwotICAgICAg
ICB9Ci0gICAgfQorICAgIHJldHVybiBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY3JlYXRlSW1hZ2VC
dWZmZXIoc2l6ZSwgc2hvdWxkQWNjZWxlcmF0ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNl
KTsKK30KKwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlSW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXImIGltYWdlKQoreworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5yZWxlYXNl
SW1hZ2VCdWZmZXIoaW1hZ2UpOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJl
bGVhc2VSZW1vdGVDbGllbnQoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElk
ZW50aWZpZXIpCit7CisgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLnJlbGVhc2VSZW1vdGVDbGll
bnQocmVtb3RlQ2xpZW50SWRlbnRpZmllcik7Cit9CisKK1JlbW90ZVJlc291cmNlSWRlbnRpZmll
ciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVDcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit7CisgICAgUmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IFJlbW90ZVJlc291cmNlSWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OkNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAgcmV0dXJuIHJlbW90ZVJlc291cmNlSWRlbnRpZmll
cjsKK30KKworUmVmUHRyPEltYWdlRGF0YT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3Rl
R2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJ
bnRSZWN0JiBzcmNSZWN0LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKQoreworICAgIElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YVJlZmVy
ZW5jZTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpHZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpHZXRJbWFnZURh
dGE6OlJlcGx5KGltYWdlRGF0YVJlZmVyZW5jZSksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIsIDFfcyk7CisgICAgcmV0dXJuIGltYWdlRGF0YVJlZmVyZW5jZS5idWZmZXIoKTsKK30KIAot
ICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gVW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVy
OjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6UmVtb3RlVW5hY2NlbGVyYXRlZCwgcmVzb2x1
dGlvblNjYWxlLCBjb2xvclNwYWNlLCAqdGhpcykpIHsKLSAgICAgICAgbV9pbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyTWFwLmFkZChpbWFnZUJ1ZmZlci0+cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KCksIGltYWdlQnVmZmVyLmdldCgpKTsKLSAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwotICAg
IH0KK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlRmx1c2hEcmF3aW5nQ29udGV4
dChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Rmx1c2hJbWFnZUJ1ZmZlckRyYXdp
bmdDb250ZXh0KGRpc3BsYXlMaXN0LCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKK30KIAotICAgIHJldHVybiBudWxscHRyOworSW1hZ2VC
dWZmZXJGbHVzaElkZW50aWZpZXIgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlRmx1c2hE
cmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRp
c3BsYXlMaXN0LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKQoreworICAgIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIHNlbnRGbHVzaElkZW50aWZp
ZXIgPSBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkZsdXNoSW1hZ2VCdWZmZXJEcmF3
aW5nQ29udGV4dEFuZENvbW1pdChkaXNwbGF5TGlzdCwgc2VudEZsdXNoSWRlbnRpZmllciwgcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Cisg
ICAgcmV0dXJuIHNlbnRGbHVzaElkZW50aWZpZXI7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJl
bW90ZVJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIC8vIENyZWF0ZUltYWdlQnVmZmVyIG1lc3NhZ2Ug
c2hvdWxkIGhhdmUgYmVlbiByZWNlaXZlZCBiZWZvcmUgdGhpcyBvbmUuCi0gICAgYm9vbCBmb3Vu
ZCA9IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5yZW1vdmUocmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpSZWxlYXNlUmVtb3RlUmVzb3Vy
Y2UocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cik7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tl
bmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1f
aW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5nZXQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KSkKLSAgICAgICAgaW1hZ2VCdWZmZXItPmNyZWF0ZUJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tl
bmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoaGFuZGxlKSk7Cisg
ICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChsb2dpY2Fs
U2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZSho
YW5kbGUpLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1
c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1f
aW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5nZXQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KSkKLSAgICAgICAgaW1hZ2VCdWZmZXItPmNvbW1pdEZsdXNoQ29udGV4dChmbHVzaElkZW50aWZp
ZXIpOworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29u
dGV4dChmbHVzaElkZW50aWZpZXIsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCAyOGE2
NDNhNDhhZjUuLjk2ZWZlN2M3NTRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAg
LTMyLDE1ICszMiwyMSBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZS5oIgogI2luY2x1ZGUgIlJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxv
YXRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ01vZGUuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25h
bWVzcGFjZSBEaXNwbGF5TGlzdCB7CitjbGFzcyBEaXNwbGF5TGlzdDsKK2NsYXNzIEl0ZW07Cit9
CitjbGFzcyBGbG9hdFNpemU7CitlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90OworZW51
bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDogdWludDhfdDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQKQEAgLTUyLDggKzU4LDYgQEAgcHVibGlj
OgogCiAgICAgflJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoKTsKIAotICAgIFJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjsgfQotCiAgICAgLy8gSVBDOjpNZXNzYWdlU2Vu
ZGVyLgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25z
dCBvdmVycmlkZTsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNv
bnN0IG92ZXJyaWRlOwpAQCAtNjEsMTEgKzY1LDIxIEBAIHB1YmxpYzoKICAgICAvLyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYsIFdlYkNvcmU6OlNob3VsZEFjY2VsZXJhdGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2Vi
Q29yZTo6Q29sb3JTcGFjZSk7Ci0gICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29y
ZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKLQogICAgIGJvb2wgd2FpdEZvckNyZWF0ZUlt
YWdlQnVmZmVyQmFja2VuZCgpOwogICAgIGJvb2wgd2FpdEZvckNvbW1pdEltYWdlQnVmZmVyRmx1
c2hDb250ZXh0KCk7CisgICAgICAgIAorICAgIC8vIFJlc291Y2UgY2FjaGUuCisgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpTaG91bGRBY2NlbGVyYXRlLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UpOworICAgIHZvaWQgcmVsZWFzZUltYWdl
QnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJik7CisgICAgUmVmUHRyPFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtPiBjcmVhdGVEcmF3SW1hZ2VCdWZmZXJJdGVtKFdlYkNvcmU6OkltYWdlQnVm
ZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYs
IFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCByZWxlYXNlUmVt
b3RlQ2xpZW50KFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICAvLyBN
ZXNzYWdlcyB0byBiZSBzZW50LgorICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciByZW1vdGVDcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJD
b3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9y
U3BhY2UpOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IHJlbW90ZUdldEltYWdlRGF0
YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgc3JjUmVjdCwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KTsKKyAgICB2b2lkIHJlbW90ZUZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KTsKKyAgICBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciByZW1vdGVGbHVzaERyYXdpbmdDb250
ZXh0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdl
YkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCByZW1vdGVSZWxlYXNl
UmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogcHJp
dmF0ZToKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKCk7CkBAIC03NCw4ICs4OCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNp
emUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAg
IHZvaWQgY29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50
aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAKLSAgICB1c2luZyBJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIsIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIqPjsKLSAgICBJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1h
cDsKKyAgICBSZW1vdGVSZXNvdXJjZUNhY2hlIG1fcmVtb3RlUmVzb3VyY2VDYWNoZSB7ICp0aGlz
IH07CiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciB7IFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAppbmRleCA4YjEzNzg5MTc5MWYuLjg1YmYyN2YzZjAy
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCkBAIC0xICsxLDE1NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CiAKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlLmgi
CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUlt
YWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIgorI2luY2x1
ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2Vi
UGFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVkSW1hZ2UuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NldHRpbmdzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK1JlbW90ZVJlc291cmNlQ2FjaGU6OlJlbW90ZVJlc291cmNlQ2FjaGUoUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICA6IG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZChyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQoreworfQorCitzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgU2hvdWxkQWNjZWxlcmF0ZSBzaG91bGRBY2NlbGVy
YXRlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAg
ICBpZiAoc2hvdWxkQWNjZWxlcmF0ZSA9PSBTaG91bGRBY2NlbGVyYXRlOjpZZXMpIHsKKyAgICAg
ICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyOjpj
cmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQsIHJlc29sdXRpb25T
Y2FsZSwgY29sb3JTcGFjZSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkgeworICAgICAgICAg
ICAgbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAuYWRkKGltYWdlQnVmZmVyLmdldCgpLCBpbWFn
ZUJ1ZmZlci0+cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgbV9yZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVySGFzaE1hcC5hZGQoaW1hZ2VCdWZmZXItPnJlbW90
ZVJlc291cmNlSWRlbnRpZmllcigpLCBpbWFnZUJ1ZmZlci5nZXQoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gaW1hZ2VCdWZmZXI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYXV0byBpbWFn
ZUJ1ZmZlciA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJl
bmRlcmluZ01vZGU6OlJlbW90ZVVuYWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkgeworICAgICAgICBtX3JlbW90ZUltYWdl
QnVmZmVySGFzaE1hcC5hZGQoaW1hZ2VCdWZmZXIuZ2V0KCksIGltYWdlQnVmZmVyLT5yZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIoKSk7CisgICAgICAgIG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlckhhc2hNYXAuYWRkKGltYWdlQnVmZmVyLT5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIo
KSwgaW1hZ2VCdWZmZXIuZ2V0KCkpOworICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CisgICAg
fQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6
Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNv
bnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0
byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAu
Z2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIGltYWdlQnVmZmVyLT5jcmVh
dGVCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xv
clNwYWNlLCBXVEZNb3ZlKGhhbmRsZSkpOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6
OmNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVy
IGZsdXNoSWRlbnRpZmllciwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNl
SWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAuZ2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikp
CisgICAgICAgIGltYWdlQnVmZmVyLT5jb21taXRGbHVzaENvbnRleHQoZmx1c2hJZGVudGlmaWVy
KTsKK30KKworUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJl
bGVhc2VJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UpCit7CisgICAgLy8gUmVtb3ZlIHRo
ZSByZXNvdXJjZSBmcm9tIHRoZSBjYWNoZS4KKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLnRha2UoJmltYWdlKTsKKyAgICBBU1NF
UlQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIC8vIGNyZWF0ZUltYWdlQnVmZmVy
IHNob3VsZCBoYXZlIGJlZW4gcmV0dXJuZWQgdGhpcyBJbWFnZUJ1ZmZlciBiZWZvcmUuCisgICAg
Ym9vbCBmb3VuZCA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAucmVt
b3ZlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwg
Zm91bmQpOworCisgICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gcmVtb3ZlIHRoaXMgcmVz
b3VyY2UgdW5sZXNzIGl0J3MgcGVuZGluZyByZXBsYXlpbmcgYmFjay4KKyAgICByZWxlYXNlUmVt
b3RlUmVzb3VyY2VQZW5kaW5nUmVtb3ZlQ2xpZW50cyhyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
OworICAgIHJldHVybiByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK1JlbW90ZVJlc291
cmNlSWRlbnRpZmllciBSZW1vdGVSZXNvdXJjZUNhY2hlOjpmaW5kSW1hZ2VCdWZmZXJGb3JDbGll
bnQoSW1hZ2VCdWZmZXImIGltYWdlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xp
ZW50SWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1f
cmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmdldCgmaW1hZ2UpOworICAgIGFkZFJlbW90ZUNsaWVu
dChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAg
IHJldHVybiByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3Vy
Y2VDYWNoZTo6YWRkUmVtb3RlQ2xpZW50KFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJ
ZGVudGlmaWVyKQoreworICAgIGlmICghcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICAvLyBBZGQgdGhlICJyZXNvdXJjZSAtPiBjbGllbnQiIGRlcGVuZGVu
Y3kgaW4gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwLgorICAgIGF1dG8mIGNsaWVudHMg
PSBtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAuZW5zdXJlKHJlbW90ZVJlc291cmNlSWRl
bnRpZmllciwgWyZdIHsKKyAgICAgICAgcmV0dXJuIFJlbW90ZUNsaWVudHNIYXNoU2V0KCk7Cisg
ICAgfSkuaXRlcmF0b3ItPnZhbHVlOworCisgICAgY2xpZW50cy5hZGQocmVtb3RlQ2xpZW50SWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJl
c291cmNlUGVuZGluZ1JlbW92ZUNsaWVudHMoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90
ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoIW1fcmVtb3RlUmVzb3VyY2VDbGll
bnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFwLmNvbnRhaW5zKHJlbW90ZVJlc291cmNlSWRlbnRpZmll
cikpOworCisgICAgLy8gSWYgd2UgaGF2ZSByZWNvcmRlZCB0aGUgcmVzb3VyY2UgLT4gY2xpZW50
IGRlcGVuZGVuY3kgYmVmb3JlIGluIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCwgbW92
ZSB0aGlzCisgICAgLy8gZGVwZW5kZW5jeSB0byBtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRp
bmdSZWxlYXNlSGFzaE1hcC4gT3RoZXJ3aXNlIHJlbW92ZSB0aGUgcmVzb3VyY2UgZnJvbSB0aGUg
Y2FjaGUuCisgICAgaWYgKG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcC5jb250YWlucyhy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICBtX3JlbW90ZVJlc291cmNlQ2xpZW50
c1BlbmRpbmdSZWxlYXNlSGFzaE1hcC5hZGQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBtX3Jl
bW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAudGFrZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
KTsKKyAgICBlbHNlCisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZWxl
YXNlUmVtb3RlUmVzb3VyY2UocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKworVmVjdG9y
PFJlbW90ZVJlc291cmNlSWRlbnRpZmllcj4gUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVtb3ZlUmVt
b3RlQ2xpZW50KFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAmIHJlbW90ZVJlc291cmNlQ2xp
ZW50c0hhc2hNYXAsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlm
aWVyKQoreworICAgIFZlY3RvcjxSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+IHJlbW90ZVJlc291
cmNlQ2xpZW50c1RvQmVSZW1vdmVkOworCisgICAgLy8gUmVtb3ZlIGFsbCB0aGUgcmVzb3VyY2Ug
LT4gY2xpZW50IGRlcGVuZGVuY2llcyBmcm9tIHJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAu
CisgICAgZm9yIChhdXRvJiBwYWlyIDogcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCkgewor
ICAgICAgICBwYWlyLnZhbHVlLnJlbW92ZShyZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICAg
ICAgaWYgKHBhaXIudmFsdWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmVtb3RlUmVzb3VyY2VD
bGllbnRzVG9CZVJlbW92ZWQuYXBwZW5kKHBhaXIua2V5KTsKKyAgICB9CisKKyAgICAvLyBSZXR1
cm4gYSBsaXN0IG9mIHRoZSB1bnJlZmVyZW5jZWQgcmVzb3VyY2VzLgorICAgIHJldHVybiByZW1v
dGVSZXNvdXJjZUNsaWVudHNUb0JlUmVtb3ZlZDsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpyZWxlYXNlUmVtb3RlQ2xpZW50KFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVD
bGllbnRJZGVudGlmaWVyKQoreworICAgIC8vIFJlbW92ZSBhbGwgdGhlIHJlc291cmNlIC0+IGNs
aWVudCBkZXBlbmRlbmNpZXMgZnJvbSBtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAuCisg
ICAgZm9yIChhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA6IHJlbW92ZVJlbW90ZUNsaWVu
dChtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAsIHJlbW90ZUNsaWVudElkZW50aWZpZXIp
KQorICAgICAgICBtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAucmVtb3ZlKHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcik7CisKKyAgICAvLyBSZW1vdmUgYWxsIHRoZSByZXNvdXJjZSAtPiBj
bGllbnQgZGVwZW5kZW5jaWVzIGZyb20gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVs
ZWFzZUhhc2hNYXAuCisgICAgZm9yIChhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA6IHJl
bW92ZVJlbW90ZUNsaWVudChtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNlSGFz
aE1hcCwgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikpIHsKKyAgICAgICAgLy8gUmVtb3ZlIHRoZSB1
bnJlZmVyZW5jZWQgcmVzb3VyY2VzIGZyb20gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5kaW5n
UmVsZWFzZUhhc2hNYXAuCisgICAgICAgIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzUGVuZGluZ1Jl
bGVhc2VIYXNoTWFwLnJlbW92ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgICAg
IC8vIFRlbGwgdGhlIEdQVSBwcm9jZXNzIHRvIHJlbW92ZSB0aGlzIHJlc291cmNlLgorICAgICAg
ICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVsZWFzZVJlbW90ZVJlc291cmNlKHJl
bW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgK
aW5kZXggOGIxMzc4OTE3OTFmLi4yYzJjZGUxZDI1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5o
CkBAIC0xICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCiAKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJGbHVz
aElkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CitjbGFzcyBJdGVtOworfQorZW51bSBjbGFzcyBDb2xv
clNwYWNlIDogdWludDhfdDsKK2NsYXNzIENvbG9yOworY2xhc3MgRmxvYXRSZWN0OworY2xhc3Mg
RmxvYXRTaXplOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlcjsKK2NsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CisKK2Ns
YXNzIFJlbW90ZVJlc291cmNlQ2FjaGUgeworcHVibGljOgorICAgIFJlbW90ZVJlc291cmNlQ2Fj
aGUoUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmLCBXZWJDb3JlOjpTaG91bGRBY2NlbGVyYXRlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdl
YkNvcmU6OkNvbG9yU3BhY2UpOworICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3Bh
Y2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIGNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KEltYWdlQnVm
ZmVyRmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwor
CisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbGVhc2VJbWFnZUJ1ZmZl
cihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpOworICAgIHZvaWQgcmVsZWFzZVJlbW90ZUNsaWVudChX
ZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7
CisKK3ByaXZhdGU6CisgICAgdXNpbmcgUmVtb3RlQ2xpZW50c0hhc2hTZXQgPSBIYXNoU2V0PFdl
YkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcj47CisgICAgdXNpbmcgUmVtb3RlSW1hZ2VC
dWZmZXJIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpJbWFnZUJ1ZmZlciosIFdlYkNvcmU6OlJl
bW90ZVJlc291cmNlSWRlbnRpZmllcj47CisgICAgdXNpbmcgUmVtb3RlUmVzb3VyY2VDbGllbnRz
SGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBSZW1v
dGVDbGllbnRzSGFzaFNldD47CisgICAgdXNpbmcgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlckhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciwg
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcio+OworCisgICAgV2ViQ29yZTo6UmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyIGZpbmRJbWFnZUJ1ZmZlckZvckNsaWVudChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICB2b2lk
IGFkZFJlbW90ZUNsaWVudChXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNv
cmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAg
ICBWZWN0b3I8V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPiByZW1vdmVSZW1vdGVD
bGllbnQoUmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCYsIFdlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbGVhc2VS
ZW1vdGVSZXNvdXJjZVBlbmRpbmdSZW1vdmVDbGllbnRzKFdlYkNvcmU6OlJlbW90ZVJlc291cmNl
SWRlbnRpZmllcik7CisKKyAgICBSZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAgbV9yZW1vdGVJbWFn
ZUJ1ZmZlckhhc2hNYXA7CisgICAgUmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCBtX3JlbW90
ZVJlc291cmNlQ2xpZW50c0hhc2hNYXA7CisgICAgUmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1h
cCBtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1hcDsKKyAgICBSZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVySGFzaE1hcCBtX3JlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXJIYXNoTWFwOworICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAKaW5kZXggMWFlNTE1NzI1MzYxLi4z
MDA1MGFjMDdkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFk
L1dlYkdhbWVwYWRQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dh
bWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJM
RShHQU1FUEFEKQogCiAjaW5jbHVkZSAiR2FtZXBhZERhdGEuaCIKKyNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiV2ViR2FtZXBhZC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411784</attachid>
            <date>2020-10-19 13:09:40 -0700</date>
            <delta_ts>2020-10-19 14:01:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217558-20201019130939.patch</filename>
            <type>text/plain</type>
            <size>55165</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQ1ZjY0NzE3NGIxYjU1
MTQ3ZDU0MTMyYzI5OWM1NWU0NTY1ZDU0Yi4uZGY3OTA3NTE1MmIwMDdiZGZjNTBmMDkzMTdiMWUy
NWEzYjE5Njc4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTEwLTE5ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXTogSW50cm9kdWNlIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB0byBtYW5hZ2UgdGhl
IHJlbW90ZSByZXNvdXJjZXMgaW4gV2ViIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBSZWNvcmRlcjo6T2JzZXJ2ZXIgdG8gUmVj
b3JkZXI6OkRlbGVnYXRlIGJlY2F1c2UgaXQgd2lsbCBiZSByZXNwb25zaWJsZQorICAgICAgICBm
b3IgY3JlYXRpbmcgRGlzcGxheUxpc3RJdGVtcyBpbiBmdXR1cmUgcGF0Y2hlcy4gU28gaXQgd2ls
bCBub3QgYmUganVzdAorICAgICAgICBhbiBvYnNlcnZlci4gQWxzbyBkbyBub3QgbWFrZSBEaXNw
bGF5TGlzdDo6SW1hZ2VCdWZmZXIgYSBzdXBlcmNsYXNzIG9mIGl0LgorICAgICAgICBSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LCB3aGljaCBpcyBhIHN1cGVyY2xhc3Mgb2YgRGlzcGxheUxpc3Q6Oklt
YWdlQnVmZmVyLAorICAgICAgICB3aWxsIGJlIHRoZSBzdXBlcmNsYXNzIG9mIFJlY29yZGVyOjpE
ZWxlZ2F0ZS4KKworICAgICAgICBNYWtlIEltYWdlQnVmZmVyQmFja2VuZDo6aXNBY2NlbGVyYXRl
ZCBhIHN0YXRpYyBtZW1iZXIgaW5zdGVhZCBvZiBhIHZpcnR1YWwKKyAgICAgICAgbWV0aG9kLiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgd291bGQgd2FudCB0byBrbm93IHdoZXRoZXIgdGhl
IGJhY2tlbmQKKyAgICAgICAgb2YgYW4gSW1hZ2VCdWZmZXIgaXNBY2NlbGVyYXRlZCBvciBub3Qg
d2l0aG91dCBoYXZpbmcgdG8gY3JlYXRlIGl0LgorICAgICAgICBJbWFnZUJ1ZmZlckJhY2tlbmQ6
OmlzQWNjZWxlcmF0ZWQgd2lsbCBiZSBzZXQgdG8gZmFsc2UgYW5kCisgICAgICAgIEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZDo6aXNBY2NlbGVyYXRlZCB3aWxsIGJlIHNldCB0byB0cnVlLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyQmFja2VuZDo6aXNBY2NlbGVyYXRlZCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6aXNB
Y2NlbGVyYXRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJh
d2luZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nQ29u
dGV4dDo6RHJhd2luZ0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OlJlY29yZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6d2lsbEFwcGVuZEl0ZW0pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjp+RGVsZWdhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpPYnNlcnZlcjo6fk9i
c2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6T2JzZXJ2ZXI6OndpbGxBcHBlbmRJdGVtKTogRGVsZXRlZC4KKwogMjAyMC0xMC0xNyAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJ
T04ocjI2ODU2MSk6IFN5bnRoZXRpYyBvYmxpcXVlIHRleHQgaXMgZHJhd24gdXBzaWRlLWRvd24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYmRlODgxMTFmZmU4ZjgwZDVhOWMwMzk1NTZkOWE0OGZiYWM0NDk4Ny4uODIw
ZmJmNmIxNmJkNzkwZjc5N2RkNTUwZjNhNmU1YmU2YTRjOWI2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1NCBAQAorMjAyMC0xMC0xOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBw
bGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc106IEludHJvZHVjZSBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkgdG8gbWFuYWdlIHRoZSByZW1vdGUgcmVzb3VyY2VzIGluIFdlYiBQcm9jZXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1NTgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUg
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5IGFuZCBtb3ZlIHNlbmRpbmcgdGhl
IG1lc3NhZ2VzCisgICAgICAgIHRvIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS4KKworICAg
ICAgICBUbyBhbGxvdyBjYXN0aW5nIEltYWdlQnVmZmVyIHRvIFJlbW90ZUltYWdlQnVmZmVyUHJv
eHksIGEgbmV3IG1ldGhvZCBuYW1lZAorICAgICAgICByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIo
KSBpcyBhZGRlZCB0byBJYW1nZUJ1ZmZlciBhbmQgaXQgaXMgb25seSBvdmVycmlkZGVuCisgICAg
ICAgIGJ5IFJlbW90ZUltYWdlQnVmZmVyUHJveHkuIFRoaXMgbWV0aG9kIGlzIHVzZWQgaW4gU1BF
Q0lBTElaRV9UWVBFX1RSQUlUUworICAgICAgICBtYWNyb3MgYWxvbmcgd2l0aCBJYW1nZUJ1ZmZl
cjo6aXNBY2NlbGVyYXRlZCgpLgorCisgICAgICAgIEludHJvZHVjZSBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkgd2hpY2ggd2lsbCBtYW5hZ2UgY2FjaGluZyBhbmQgcmVsZWFzaW5nCisgICAgICAg
IHRoZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LiBDYWNoaW5nIE5hdGl2ZUltYWdlIHdpbGwgYmUg
YWRkZWQgdG8gaXQgaW4KKyAgICAgICAgZnV0dXJlIHBhdGNoZXMuIE1vcmUgYWJvdXQgY29udHJv
bGxpbmcgdGhlIGxpZmUgY3ljbGVzIG9mIHJlbW90ZSByZXNvdXJjZXMgCisgICAgICAgIHdpbGwg
YmUgYWRkZWQgd2l0aCBzdXBwb3J0aW5nIGRyYXdpbmcgcmVtb3RlIHJlc291cmNlcyB0byByZW1v
dGUgY2xpZW50LgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChpc1R5cGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojp+UmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZUJh
Y2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojpjb21taXRG
bHVzaERpc3BsYXlMaXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eTo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdl
QnVmZmVyUHJveHk6OmlzUGVuZGluZ0ZsdXNoIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJbWFnZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNo
RGlzcGxheUxpc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6aW1hZ2VCdWZmZXJCYWNrZW5kV2Fz
Q3JlYXRlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Zmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZUlt
YWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Ojpj
YWNoZWRJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHku
aC4KKwogMjAyMC0xMC0xNiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gSW50cm9kdWNlIFJlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eSB0byBtYW5hZ2UgdGhlIHJlc291cmNlcyBpbiB0aGUgR1BVIFByb2Nlc3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZm
ZXIuaAppbmRleCBjNmMxOWUxMjg5ZjQ4YjAyMGVhNzhiY2UzOWQxMDZjM2RiOTNiMDdkLi44Njk3
Mzk1ZmE0YzhkMDg1MWM3Yjc3OTA0MDZlNjFjOTE4ZmNlYTUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCkBAIC01
MCwxMyArNTAsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclR5cGU+KG5ldyBJbWFnZUJ1ZmZl
clR5cGUoV1RGTW92ZShiYWNrZW5kKSwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRz
KS4uLikpOwogICAgIH0KLSAgICAKLSAgICBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3Jl
YXRlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGJhY2tlbmQtPmlzQWNjZWxlcmF0ZWQoKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKworICAgIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJhY2tlbmRUeXBlOjppc0FjY2VsZXJhdGVkOyB9CiAKIHBy
b3RlY3RlZDoKICAgICBDb25jcmV0ZUltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5k
VHlwZT4mJiBiYWNrZW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmgKaW5kZXggMGFlOWZjYmQwNTg4ZDRjNGUxZWY1YWYzY2M3ZjEyYjYxMmJmNzhk
YS4uOGI5NGY5MWQ5YmE5MTQ2MjQ0ZjAxYjcwM2NiMzQ3YThhOWQ3ZDE5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0yOCw2ICsyOCw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZC5oIgorI2lu
Y2x1ZGUgIlJlbW90ZVJlc291cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ01v
ZGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjAsNiArNjEsOSBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7
CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiB7IH07IH0KKyAgICAKICAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hDb250ZXh0KCkgPSAw
OwogCkBAIC0xMDQsOCArMTA4LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjb3B5VG9Q
bGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmLCBHQ0dMZW51bSwgUGxhdGZv
cm1HTE9iamVjdCwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9IDA7CiAgICAgCi0gICAgdmly
dHVhbCBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCA9IDA7Ci0KIHByb3RlY3RlZDoKICAgICBJ
bWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCBjMDEwYTBmMGNmY2Q4YzVl
N2FiNmM5NGM1YzNjMzZmNDgzODZkMDFmLi4xNzFlZDNlNjk0MTMwYTM0MDE0MWU2MWQ5MjEwMWUy
ODEwMWQ3MzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgY29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
JiwgR0NHTGVudW0sIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBib29sLCBib29sKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc09y
aWdpbkF0VXBwZXJMZWZ0Q29ybmVyID0gZmFsc2U7Ci0gICAgdmlydHVhbCBib29sIGlzQWNjZWxl
cmF0ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc0FjY2VsZXJhdGVkID0gZmFsc2U7CiAKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9S
VCBJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCBjODA2NWE5ZWMyNTE0
NjQ0Zjc0MDVmOWE1NDEzZjYyMjM1NjI3MTU0Li5kYmMzYjdlYjhiM2QxYWQ4OGQwYWIzZjBlZWY5
MGE3YzhkODVlMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKQEAg
LTE5MCwxMSArMTkwLDYgQEAgSU9TdXJmYWNlKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OnN1cmZhY2UoKQogICAgIHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7CiB9CiAKLWJvb2wgSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kOjppc0FjY2VsZXJhdGVkKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSEFWRShJ
T1NVUkZBQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IDI0MThmMWQ0
NWQ1M2Q0NTkzM2IzOTA0YTI4OGM2MTAxZjE0YmNjMzEuLjMyMzA5NGVhNzk1YzVkMjQ4M2M4ODQ0
MDMxMjRhOTA0MGNjNzQwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCkBA
IC02Miw5ICs2Miw5IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURh
dGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmKSBj
b25zdCBvdmVycmlkZTsKICAgICB2b2lkIHB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0
aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEmLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RG
b3JtYXQpIG92ZXJyaWRlOwogICAgIElPU3VyZmFjZSogc3VyZmFjZSgpOwotICAgIGJvb2wgaXNB
Y2NlbGVyYXRlZCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzT3JpZ2luQXRVcHBlckxlZnRDb3JuZXIgPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBpc0FjY2VsZXJhdGVkID0gdHJ1ZTsKIAogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBSZXRh
aW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb250ZXh0Q29sb3JTcGFjZShjb25zdCBHcmFwaGljc0Nv
bnRleHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0
LmNwcAppbmRleCAyM2NjMDdlOGFlNDQyYmRjZWEwZDM2NzRhNWE4NTUxYzY1Y2ZkYzg3Li5kNDYx
N2QzNTE2ZjRmM2U1MWQ3NWQ2NDQzNGE2YTM5NDU3YTAwMDFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5n
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCkBAIC0zMyw5ICszMyw5IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCi1EcmF3aW5nQ29u
dGV4dDo6RHJhd2luZ0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNLCBSZWNvcmRlcjo6T2JzZXJ2ZXIqIG9ic2VydmVy
KQorRHJhd2luZ0NvbnRleHQ6OkRyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNh
bFNpemUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwgUmVjb3JkZXI6OkRlbGVn
YXRlKiBkZWxlZ2F0ZSkKICAgICA6IG1fY29udGV4dChbJl0oR3JhcGhpY3NDb250ZXh0JiBkaXNw
bGF5TGlzdENvbnRleHQpIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjb3JkZXI+KGRp
c3BsYXlMaXN0Q29udGV4dCwgbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwg
RmxvYXRSZWN0KHsgfSwgbG9naWNhbFNpemUpLCBpbml0aWFsQ1RNLCBvYnNlcnZlcik7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQsIG1fZGlz
cGxheUxpc3QsIEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIEZsb2F0UmVjdCh7IH0sIGxvZ2ljYWxT
aXplKSwgaW5pdGlhbENUTSwgZGVsZWdhdGUpOwogICAgIH0pCiB7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RE
cmF3aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaAppbmRleCA3YjY3M2YzMmFkODE1YTUw
MDgxYjdlN2FiMTA4MTMxNzE3ZmRlNTQzLi4yMmVkMjU2ZTgwYWQyOTNhMDUyMDY5Yjc0MzA4OGEx
MzUxZjQ3Y2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250
ZXh0LmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIERy
YXdpbmdDb250ZXh0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBXRUJDT1JFX0VYUE9SVCBEcmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxT
aXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0gPSB7IH0sIFJlY29yZGVyOjpP
YnNlcnZlciogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmF3aW5nQ29udGV4dChj
b25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRp
YWxDVE0gPSB7IH0sIFJlY29yZGVyOjpEZWxlZ2F0ZSogPSBudWxscHRyKTsKIAogICAgIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RHJhd2luZ0Nv
bnRleHQmPigqdGhpcykubV9jb250ZXh0OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVjb3JkZXIm
IHJlY29yZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaApp
bmRleCA2ZmQ5MTJkZmI4ZmUxMWMwOThkZDYxMjZhOGM4NzhhYzZiYTdhZTAyLi4zMjU5OWUwNjJk
N2NmNTlkMWRjMmVhZDAxZTc2MGQ2NmUzZjdlYzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEltYWdlQnVmZmVyLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQmFja2VuZFR5
cGU+Ci1jbGFzcyBJbWFnZUJ1ZmZlciA6IHB1YmxpYyBDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tl
bmRUeXBlPiwgcHVibGljIFJlY29yZGVyOjpPYnNlcnZlciB7CitjbGFzcyBJbWFnZUJ1ZmZlciA6
IHB1YmxpYyBDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiB7CiAgICAgdXNpbmcgQmFz
ZUNvbmNyZXRlSW1hZ2VCdWZmZXIgPSBDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsK
IAogcHVibGljOgpAQCAtNDgsMTIgKzQ4LDEyIEBAIHB1YmxpYzoKIAogICAgIEltYWdlQnVmZmVy
KHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBkYXRhQmFja2VuZCwgY29uc3QgRmxvYXRT
aXplJiBzaXplKQogICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKFdURk1vdmUoZGF0
YUJhY2tlbmQpKQotICAgICAgICAsIG1fZHJhd2luZ0NvbnRleHQoc2l6ZSwgaW5pdGlhbERyYXdp
bmdDb250ZXh0Q1RNKHNpemUpLCB0aGlzKQorICAgICAgICAsIG1fZHJhd2luZ0NvbnRleHQoc2l6
ZSwgaW5pdGlhbERyYXdpbmdDb250ZXh0Q1RNKHNpemUpKQogICAgIHsKICAgICB9CiAKLSAgICBJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUpCi0gICAgICAgIDogbV9kcmF3aW5nQ29u
dGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSksIHRoaXMpCisgICAgSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZWNvcmRlcjo6RGVsZWdhdGUqIGRlbGVn
YXRlID0gbnVsbHB0cikKKyAgICAgICAgOiBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRpYWxE
cmF3aW5nQ29udGV4dENUTShzaXplKSwgZGVsZWdhdGUpCiAgICAgewogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDFjNTRhZTgyMjkzOTQyMGRk
NDBiN2I3MGJhN2UzOWRiYmE2NWZlOWIuLmI5MGJlMjc2YjY2MzlhNDI0OTMyOWNiZTJmNmI5MDQ3
OWMwNjIzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAg
LTM3LDEwICszNywxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlM
aXN0IHsKIAotUmVjb3JkZXI6OlJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgRGlz
cGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUs
IGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5p
dGlhbENUTSwgT2JzZXJ2ZXIqIG9ic2VydmVyKQorUmVjb3JkZXI6OlJlY29yZGVyKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwgRGVsZWdhdGUqIGRlbGVnYXRlKQogICAgIDog
R3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0LCBpbml0aWFsQ2xpcCwgQWZmaW5lVHJhbnNmb3Jt
KCkpCiAgICAgLCBtX2Rpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KQotICAgICwgbV9vYnNlcnZlcihv
YnNlcnZlcikKKyAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpCiB7CiAgICAgTE9HX1dJVEhfU1RS
RUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJcblJlY29yZGluZyB3aXRoIGNsaXAgIiA8PCBp
bml0aWFsQ2xpcCk7CiAgICAgbV9zdGF0ZVN0YWNrLmFwcGVuZCh7IHN0YXRlLCBpbml0aWFsQ1RN
LCBpbml0aWFsQ2xpcCB9KTsKQEAgLTU5LDggKzU5LDggQEAgdm9pZCBSZWNvcmRlcjo6cHV0SW1h
Z2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0
IFcKIAogdm9pZCBSZWNvcmRlcjo6d2lsbEFwcGVuZEl0ZW0oY29uc3QgSXRlbSYgaXRlbSkKIHsK
LSAgICBpZiAobV9vYnNlcnZlcikKLSAgICAgICAgbV9vYnNlcnZlci0+d2lsbEFwcGVuZEl0ZW0o
aXRlbSk7CisgICAgaWYgKG1fZGVsZWdhdGUpCisgICAgICAgIG1fZGVsZWdhdGUtPndpbGxBcHBl
bmRJdGVtKGl0ZW0pOwogCiAgICAgaWYgKGl0ZW0uaXNEcmF3aW5nSXRlbSgpCiAjaWYgVVNFKENH
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggOWVlMWQzOTM4ZjIz
MmYzZjE4ZDk3OGFmNzE4NzAxZDhiZTQ2MzA3Mi4uNmYzNjcwN2UwYjc2MWJmNjJjNTQyMzQxM2M5
NDEyNTAzMzhhNTQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBA
IC01Myw4ICs1Myw4IEBAIGNsYXNzIFJlY29yZGVyIDogcHVibGljIEdyYXBoaWNzQ29udGV4dElt
cGwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFJlY29yZGVyKTsKIHB1YmxpYzoKLSAgICBjbGFzcyBPYnNlcnZlcjsKLSAgICBXRUJDT1JF
X0VYUE9SVCBSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmLCBEaXNwbGF5TGlzdCYsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiwgT2JzZXJ2ZXIqID0gbnVsbHB0cik7CisgICAgY2xhc3MgRGVsZWdh
dGU7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiwgRGlzcGxh
eUxpc3QmLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYgaW5p
dGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIERlbGVnYXRlKiA9IG51bGxwdHIpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflJlY29yZGVyKCk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0
LCBjb25zdCBJbWFnZURhdGEmLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2lu
dCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpOwpAQCAtNjMs
OSArNjMsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRlbnQo
UmVmPERyYXdpbmdJdGVtPiYmKTsKIAotICAgIGNsYXNzIE9ic2VydmVyIHsKKyAgICBjbGFzcyBE
ZWxlZ2F0ZSB7CiAgICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5PYnNlcnZlcigpIHsgfQor
ICAgICAgICB2aXJ0dWFsIH5EZWxlZ2F0ZSgpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgd2ls
bEFwcGVuZEl0ZW0oY29uc3QgSXRlbSYpIHsgfTsKICAgICB9OwogCkBAIC0xODgsNyArMTg4LDcg
QEAgcHJpdmF0ZToKICAgICBDb250ZXh0U3RhdGUmIGN1cnJlbnRTdGF0ZSgpOwogCiAgICAgRGlz
cGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7Ci0gICAgT2JzZXJ2ZXIqIG1fb2JzZXJ2ZXI7CisgICAg
RGVsZWdhdGUqIG1fZGVsZWdhdGU7CiAKICAgICBWZWN0b3I8Q29udGV4dFN0YXRlLCAzMj4gbV9z
dGF0ZVN0YWNrOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDc5NmRiNjk5NmVlZGZlNWI3ZTkyODAwMTM3
MjA1NGNmNjljMzgwNDYuLjdhM2IyMzAwYjdjMzY4OTBmZmMyNTNiYmEwNTU0YWYyMDM2MmY1ZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dApAQCAtNTU3LDggKzU1Nyw4IEBAIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0v
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAogCiBXZWJQcm9jZXNzL0dQVS9H
UFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKLVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAKIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKK1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlh
L0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNmJkOWFjNDVmMzFhYzQzYzJmYzA5NjRhZjVmZGRlNGE3OGU2
ODQ4Ny4uNzQ4NjkwMzQ4OGNhNjNhMTU0YTFlOWMwMTZlNThmY2M4ZThiZWE4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MjI0LDgg
KzQyMjQsNiBAQAogCQk3MUE2NzZBNTIyQzYyMzE4MDA3RDYyOTUgLyogV0tUb3VjaEFjdGlvbkdl
c3R1cmVSZWNvZ25pemVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tOyBwYXRoID0gaW9zL1dLVG91Y2hB
Y3Rpb25HZXN0dXJlUmVjb2duaXplci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzFGQjgxMEEyMjYwNjI3QTAwMzIzNjc3IC8qIFdlYnNpdGVTaW11bGF0ZWRNb3VzZUV2ZW50c0Rp
c3BhdGNoUG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVT
aW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcyMjc4MDBCMjQwOEJEN0QwMDdEMzc2QiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdl
QnVmZmVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcyMjc4MDBDMjQwOTdBMDIwMDdE
Mzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzIyNzgwMEQyNDA5N0EwMjAwN0QzNzZCIC8qIFJl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzI2RDU2REQyNTNBNjQ4MTAwMDJFRjkwIC8qIFJlbW90ZVJlc291cmNlQ2FjaGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNkQ1NkRFMjUzQTY0ODEwMDAyRUY5MCAvKiBSZW1vdGVS
ZXNvdXJjZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlc291cmNlQ2FjaGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QTdGMzQyNDA3ODU3RDAwNEQyOTMxIC8qIElt
YWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDIzNyw2ICs0MjM1LDggQEAKIAkJ
NzI3QTdGNDkyNDA4QUVFNjAwNEQyOTMxIC8qIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MjhFODZFRjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29sb3JQaWNrZXJNYWMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2RjAxNzk1MTg4QzAwODc4NzlFIC8q
IFdlYkNvbG9yUGlja2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViQ29sb3JQaWNrZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTcyQjUzMTU3MjUzQzFFNEQwMDQ5Mjk1QSAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJCNTMxNTgyNTNDMUU0RDAwNDkyOTVBIC8qIFJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVBOEQyQzQxODdDQ0Y5RjAw
QzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS1dlYnNpdGVEYXRhU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzVBOEQyQzUxODdDQ0Y5RjAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVBOEQyRDQxODdEMUMwMTAwQzM5QzlF
IC8qIFdLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC04MTM4LDEyICs4MTM4LDEyIEBACiAJCQkJNzI3QTdGMzYyNDA3ODhGMDAw
NEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oICovLAogCQkJCTcy
N0E3RjM4MjQwNzg4RjAwMDREMjkzMSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyU2hhcmVhYmxlQmFj
a2VuZC5oICovLAogCQkJCTcyMjc4MDBCMjQwOEJEN0QwMDdEMzc2QiAvKiBQbGF0Zm9ybVJlbW90
ZUltYWdlQnVmZmVyUHJveHkuaCAqLywKLQkJCQk3MjI3ODAwQzI0MDk3QTAyMDA3RDM3NkIgLyog
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcCAqLywKLQkJCQk3MjI3ODAw
RDI0MDk3QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5
LmggKi8sCiAJCQkJNzI3QTdGNDkyNDA4QUVFNjAwNEQyOTMxIC8qIFJlbW90ZUltYWdlQnVmZmVy
UHJveHkuaCAqLywKIAkJCQk1NTA2NDA5RDI0MDcxNjA5MDBBQUUwNDUgLyogUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmNwcCAqLywKIAkJCQk1NTA2NDA5RTI0MDcxNjA5MDBBQUUwNDUgLyog
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggKi8sCiAJCQkJNTUwNjQwQTAyNDA3MTlFMTAw
QUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJ
CQk3MkI1MzE1NzI1M0MxRTREMDA0OTI5NUEgLyogUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNw
cCAqLywKKwkJCQk3MkI1MzE1ODI1M0MxRTREMDA0OTI5NUEgLyogUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5LmggKi8sCiAJCQkJNTUwNjQwOUYyNDA3MTk2QTAwQUFFMDQ1IC8qIFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGdyYXBoaWNzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90
ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggOWFmZjA4OGUzN2NhNzZh
N2Y4NjRhZTdlNDJiYmI3MDA0ZjFmMTUyMy4uOGU2NGYwNWE4YTZlOGY1ZWM1ODkxNGQ0NzA2NGIx
ZDBhNTk2ZDBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
CkBAIC0zNyw0ICszNywxMiBAQCB1c2luZyBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJv
eHkgPSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PEFjY2VsZXJhdGVkSW1hZwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJLaXQ6OlVuYWNj
ZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShj
b25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpIHsgcmV0dXJuIGltYWdlQnVm
ZmVyLnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpICYmICFpbWFnZUJ1ZmZlci5pc0FjY2VsZXJh
dGVkKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJLaXQ6OkFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSkK
KyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdl
QnVmZmVyKSB7IHJldHVybiBpbWFnZUJ1ZmZlci5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSAm
JiBpbWFnZUJ1ZmZlci5pc0FjY2VsZXJhdGVkKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RU5EKCkKKwogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZTk1NjJhMzY4ZTY5ZTQyMzBlNzI2MmMyNjM2ZGYyODZkNzQ2ZWFjNS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXJQcm94eS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyUHJveHkuaCIKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIklt
YWdlRGF0YVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNz
YWdlcy5oIgotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIgotI2luY2x1
ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgotI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFj
aW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0K
LVJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6UmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlclByb3h5KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkpCi0gICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShtYWtlV2Vha1B0cihyZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKQotewotICAgIC8vIENyZWF0ZSB0aGUgUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS4KLSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c2VuZChN
ZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwg
cmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBtX3JlbW90ZVJlc291
cmNlSWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcigpKTsKLX0KLQotUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
clByb3h5Ojp+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KCkKLXsKLSAgICAv
LyBSZWxlYXNlIHRoZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LgotICAgIGlmICghbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS0+c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
UmVsZWFzZVJlbW90ZVJlc291cmNlKG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOwot
fQotCi1SZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJv
eHk6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29u
c3QgSW50UmVjdCYgc3JjUmVjdCkgY29uc3QKLXsKLSAgICBJUEM6OkltYWdlRGF0YVJlZmVyZW5j
ZSBpbWFnZURhdGFSZWZlcmVuY2U7Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpHZXRJbWFnZURhdGEo
b3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllciksIE1lc3Nh
Z2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpHZXRJbWFnZURhdGE6OlJlcGx5KGltYWdlRGF0
YVJlZmVyZW5jZSksIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcigpLCAxX3MpOwotICAgIHJldHVybiBpbWFnZURhdGFSZWZlcmVuY2UuYnVm
ZmVyKCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Ojp3
YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgpCi17Ci0gICAgaWYgKG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5ICYmICFpc0JhY2tlbmRDcmVhdGVkKCkpCi0gICAgICAgIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT53YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2Fz
Q3JlYXRlZCgpOwotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94
eTo6d2FpdEZvckZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoKQotewotICAgIGlmIChtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSAmJiBpc1BlbmRpbmdGbHVzaCgpKQotICAgICAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+d2FpdEZvckZsdXNoRGlzcGxheUxpc3RXYXND
b21taXR0ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJv
eHk6OmZsdXNoRGlzcGxheUxpc3QoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBk
aXNwbGF5TGlzdCkKLXsKLSAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQot
ICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hS
ZW1vdGVJbWFnZUJ1ZmZlclN0YXJ0LCBGbHVzaFJlbW90ZUltYWdlQnVmZmVyRW5kKTsKLSAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Rmx1c2hEaXNwbGF5TGlzdChkaXNwbGF5TGlzdCwgbV9yZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIoKSk7Ci0gICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKLX0KLQotdm9pZCBS
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OmZsdXNoRGlzcGxheUxpc3RBbmRX
YWl0Q29tbWl0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3Qp
Ci17Ci0gICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1vdGVJbWFnZUJ1ZmZl
clN0YXJ0LCBGbHVzaFJlbW90ZUltYWdlQnVmZmVyRW5kLCAxKTsKLSAgICBtX3NlbnRGbHVzaElk
ZW50aWZpZXIgPSBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKLSAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Rmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChkaXNwbGF5TGlzdCwgbV9zZW50
Rmx1c2hJZGVudGlmaWVyLCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LT5yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsKLSAgICBk
aXNwbGF5TGlzdC5jbGVhcigpOwotICAgIHdhaXRGb3JGbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0
dGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Ojpj
b21taXRGbHVzaENvbnRleHQoRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlm
aWVyKQotewotICAgIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXIgPSBmbHVzaElkZW50aWZpZXI7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9D
RVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5YTAyNmE4MTI5ODc5NmU3YmQzNWZh
OTZlZWU5MDRkZTRiZmI1ZmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KLSNpbmNsdWRlICJEaXNwbGF5TGlz
dEZsdXNoSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRGlz
cGxheUxpc3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW5k
ZXJpbmdNb2RlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEltYWdlRGF0YTsKLWVu
dW0gY2xhc3MgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA6IHVpbnQ4X3Q7Ci19Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1jbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7Ci0KLWNsYXNz
IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eSB7Ci1wdWJsaWM6Ci0gICAgdmly
dHVhbCB+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KCk7Ci0KLSAgICBXZWJD
b3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7IH0KLQotICAgIC8vIE1l
c3NhZ2VzIHRvIGJlIHJlY2VpdmVkLiBTZWUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdl
cy5pbi4KLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUpID0gMDsKLQotICAgIHZvaWQgY29tbWl0Rmx1c2hDb250ZXh0KERpc3BsYXlM
aXN0Rmx1c2hJZGVudGlmaWVyKTsKLQotcHJvdGVjdGVkOgotICAgIFJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJQcm94eShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpS
ZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2Us
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYpOwotCi0gICAgdmlydHVhbCBib29sIGlzQmFj
a2VuZENyZWF0ZWQoKSBjb25zdCA9IDA7Ci0gICAgYm9vbCBpc1BlbmRpbmdGbHVzaCgpIGNvbnN0
IHsgcmV0dXJuIG1fc2VudEZsdXNoSWRlbnRpZmllciAhPSBtX3JlY2VpdmVkRmx1c2hJZGVudGlm
aWVyOyB9Ci0KLSAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2Vi
Q29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0OwotCi0gICAgdm9pZCB3YWl0Rm9ySW1hZ2VCdWZmZXJC
YWNrZW5kV2FzQ3JlYXRlZCgpOwotICAgIHZvaWQgd2FpdEZvckZsdXNoRGlzcGxheUxpc3RXYXND
b21taXR0ZWQoKTsKLQotICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuIFNlZSBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4uCi0gICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYpOwotICAgIHZvaWQgZmx1c2hEaXNw
bGF5TGlzdEFuZFdhaXRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jik7
Ci0KLXByaXZhdGU6Ci0gICAgV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+IG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwotICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNl
SWRlbnRpZmllciBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllciB7IFdlYkNvcmU6OlJlbW90ZVJl
c291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OwotCi0gICAgRGlzcGxheUxpc3RGbHVzaElk
ZW50aWZpZXIgbV9zZW50Rmx1c2hJZGVudGlmaWVyOwotICAgIERpc3BsYXlMaXN0Rmx1c2hJZGVu
dGlmaWVyIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LmgKaW5kZXggMjBmYmY4MWM5ODI1NTJlZjc2YmI2Y2QxNWRjM2ExZTlkMzg4MGVjMy4u
Mjc5YTc5MmEwMmRjMGU3MTdkMjhiMzc4ZmMxZGYxMGFhODUzNDc4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKIAotI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RS
ZWNvcmRlci5oPgpAQCAtMzcsNTQgKzM2LDcxIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQmFja2VuZFR5cGU+
Ci1jbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyUHJveHkgeworY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA6IHB1Ymxp
YyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZSB7CiAgICAgdXNpbmcgQmFz
ZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZm
ZXI8QmFja2VuZFR5cGU+OwogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjpt
X2JhY2tlbmQ7CiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6Om1fZHJhd2lu
Z0NvbnRleHQ7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUlt
YWdlQnVmZmVyUHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdl
YkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAgICB7CiAgICAgICAgIGlmIChC
YWNrZW5kVHlwZTo6Y2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKS5p
c0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KG5ldyBSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5KHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSk7CisgICAgICAgIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4obmV3IFJlbW90ZUltYWdlQnVmZmVyUHJv
eHkoc2l6ZSwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSk7CiAgICAgfQogCiAgICAgflJl
bW90ZUltYWdlQnVmZmVyUHJveHkoKQogICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZmx1c2hEcmF3
aW5nQ29udGV4dCgpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5KCkucmVsZWFzZUltYWdlQnVmZmVyKG1fcmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKICAgICB9CiAKLXByb3RlY3RlZDoKLSAgICBSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9y
U3BhY2UgY29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkpCi0gICAgICAgIDogQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIo
c2l6ZSkKLSAgICAgICAgLCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkoc2l6
ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCByZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkpCi0gICAgewotICAgIH0KKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7IH0KIAotICAgIHZvaWQgY3JlYXRl
QmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3Jl
OjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUp
IG92ZXJyaWRlCisgICAgdm9pZCBjcmVhdGVCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9iYWNr
ZW5kKTsKICAgICAgICAgbV9iYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShsb2dpY2FsU2l6
ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZShoYW5k
bGUpKTsKICAgICB9Ci0gICAgCi0gICAgYm9vbCBpc0JhY2tlbmRDcmVhdGVkKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9iYWNrZW5kLmdldCgpOyB9CisKKyAgICB2b2lkIGNvbW1pdEZsdXNo
RGlzcGxheUxpc3QoRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyKQor
ICAgIHsKKyAgICAgICAgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllciA9IGZsdXNoSWRlbnRpZmll
cjsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBy
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgIDogQmFzZURpc3BsYXlMaXN0SW1h
Z2VCdWZmZXIoc2l6ZSwgdGhpcykKKyAgICAgICAgLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eShtYWtlV2Vha1B0cihyZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KTsKKyAgICB9CisKKyAg
ICBib29sIGlzUGVuZGluZ0ZsdXNoKCkgY29uc3QgeyByZXR1cm4gbV9zZW50Rmx1c2hJZGVudGlm
aWVyICE9IG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXI7IH0KIAogICAgIEJhY2tlbmRUeXBlKiBl
bnN1cmVCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAo
IW1fYmFja2VuZCkKLSAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eSY+KCp0aGlzKS5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OndhaXRGb3JJ
bWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCk7CisgICAgICAgIGlmICghbV9iYWNrZW5kICYm
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgICAgICAgICAgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHktPndhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCk7
CiAgICAgICAgIHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7CiAgICAgfQogCiAgICAgUmVmUHRyPFdl
YkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGlj
YXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0KSBjb25z
dCBvdmVycmlkZQogICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgICAgIGF1dG8mIGRpc3Bs
YXlMaXN0ID0gY29uc3RfY2FzdDxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Kj4odGhpcyktPm1fZHJh
d2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKTsKLSAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5Kj4odGhpcyktPlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94
eTo6Zmx1c2hEaXNwbGF5TGlzdChkaXNwbGF5TGlzdCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0g
Y29uc3RfY2FzdDxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Kj4odGhpcyktPlJlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVj
dCk7CisgICAgICAgIGlmIChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSkgeworICAgICAgICAgICAg
Y29uc3RfY2FzdDxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Jj4oKnRoaXMpLmZsdXNoRGlzcGxheUxp
c3QoZGlzcGxheUxpc3QpOworICAgICAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKKyAgICAg
ICAgfQorCiAgICAgICAgIC8vIGdldEltYWdlRGF0YSBpcyBzeW5jaHJvbm91cywgd2hpY2ggbWVh
bnMgd2UndmUgYWxyZWFkeSByZWNlaXZlZCB0aGUgQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRl
eHQgbWVzc2FnZS4KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5nZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNS
ZWN0LCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCiAgICAgdm9pZCBwdXRJ
bWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29u
c3QgV2ViQ29yZTo6SW1hZ2VEYXRhJiBpbWFnZURhdGEsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZXN0UG9pbnQgPSB7IH0sIFdlYkNv
cmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCA9IFdlYkNvcmU6OkFscGhhUHJl
bXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpIG92ZXJyaWRlCkBAIC0xMDQsMTcgKzEyMCw0
NCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkgb3ZlcnJpZGUK
ICAgICB7CiAgICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0gbV9kcmF3aW5nQ29udGV4dC5kaXNw
bGF5TGlzdCgpOwotICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXRlbUNvdW50KCkpCi0gICAgICAg
ICAgICBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OmZsdXNoRGlzcGxheUxp
c3RBbmRXYWl0Q29tbWl0KGRpc3BsYXlMaXN0KTsKKyAgICAgICAgaWYgKCFkaXNwbGF5TGlzdC5p
dGVtQ291bnQoKSB8fCAhbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1vdGVJ
bWFnZUJ1ZmZlclN0YXJ0LCBGbHVzaFJlbW90ZUltYWdlQnVmZmVyRW5kLCAxKTsKKyAgICAgICAg
bV9zZW50Rmx1c2hJZGVudGlmaWVyID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmZs
dXNoRGlzcGxheUxpc3RBbmRDb21taXQoZGlzcGxheUxpc3QsIG1fcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKworICAgICAgICAvLyBXYWl0IGZvciBvdXIgRGlzcGxheUxpc3QgdG8gYmUgZmx1
c2hlZCBidXQgZG8gbm90IGhhbmcuCisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
bWF4V2FpdGluZ0ZsdXNoID0gMzsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBudW1XYWl0aW5nRmx1
c2ggPSAwOyBudW1XYWl0aW5nRmx1c2ggPCBtYXhXYWl0aW5nRmx1c2ggJiYgaXNQZW5kaW5nRmx1
c2goKTsgKytudW1XYWl0aW5nRmx1c2gpCisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS0+d2FpdEZvckZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoKTsKKworICAg
ICAgICBkaXNwbGF5TGlzdC5jbGVhcigpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgZmx1c2hE
aXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3Bs
YXlMaXN0KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFkaXNwbGF5TGlzdC5pdGVtQ291
bnQoKSB8fCAhbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1vdGVJbWFnZUJ1
ZmZlclN0YXJ0LCBGbHVzaFJlbW90ZUltYWdlQnVmZmVyRW5kKTsKKyAgICAgICAgbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHktPmZsdXNoRGlzcGxheUxpc3QoZGlzcGxheUxpc3QsIG1fcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB9CisKICAgICB2b2lkIHdpbGxBcHBlbmRJdGVt
KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtJikgb3ZlcnJpZGUKICAgICB7CiAgICAg
ICAgIGNvbnN0ZXhwciBzaXplX3QgRGlzcGxheUxpc3RCYXRjaFNpemUgPSA1MTI7CiAgICAgICAg
IGF1dG8mIGRpc3BsYXlMaXN0ID0gbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwotICAg
ICAgICBpZiAoZGlzcGxheUxpc3QuaXRlbUNvdW50KCkgPj0gRGlzcGxheUxpc3RCYXRjaFNpemUp
Ci0gICAgICAgICAgICBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OmZsdXNo
RGlzcGxheUxpc3QoZGlzcGxheUxpc3QpOworICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXRlbUNv
dW50KCkgPCBEaXNwbGF5TGlzdEJhdGNoU2l6ZSB8fCAhbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZmx1c2hEaXNwbGF5TGlzdChk
aXNwbGF5TGlzdCk7CisgICAgICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7CiAgICAgfQorICAgIAor
ICAgIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyIG1fc2VudEZsdXNoSWRlbnRpZmllcjsKKyAg
ICBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyOwor
ICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciBtX3JlbW90ZVJlc291cmNlSWRl
bnRpZmllciB7IFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9
OworICAgIFdlYWtQdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5PiBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IGIxNDYxYjQ4MjE0OGQyYjc1YjQw
ZjA5OGQ5NDBjZGUxMGFiNGZmY2UuLjVkNGUwODIwZTA5YTUxNGY5YmZlNTM4ZWEyOGFmZjJlODll
ODJjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTMw
LDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNp
bmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkltYWdlRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgogI2lu
Y2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCkBAIC04OCwzOCArODksNzUgQEAgYm9v
bCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OndhaXRGb3JGbHVzaERpc3BsYXlMaXN0V2Fz
Q29tbWl0dGVkKCkKIAogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwg
U2hvdWxkQWNjZWxlcmF0ZSBzaG91bGRBY2NlbGVyYXRlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKKyAgICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZl
cjsKKwogICAgIGlmIChzaG91bGRBY2NlbGVyYXRlID09IFNob3VsZEFjY2VsZXJhdGU6Olllcykg
ewotICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eTo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlJlbW90ZUFjY2VsZXJhdGVk
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsICp0aGlzKSkgewotICAgICAgICAgICAgbV9p
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmFkZChpbWFnZUJ1ZmZlci0+cmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKCksIGltYWdlQnVmZmVyLmdldCgpKTsKLSAgICAgICAgICAgIHJldHVybiBp
bWFnZUJ1ZmZlcjsKLSAgICAgICAgfQorICAgICAgICByZW5kZXJpbmdNb2RlID0gUmVuZGVyaW5n
TW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQ7CisgICAgICAgIGltYWdlQnVmZmVyID0gQWNjZWxlcmF0
ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCAq
dGhpcyk7CisgICAgfQorCisgICAgaWYgKCFpbWFnZUJ1ZmZlcikgeworICAgICAgICByZW5kZXJp
bmdNb2RlID0gUmVuZGVyaW5nTW9kZTo6UmVtb3RlVW5hY2NlbGVyYXRlZDsKKyAgICAgICAgaW1h
Z2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKHNp
emUsIHJlc29sdXRpb25TY2FsZSwgKnRoaXMpOwogICAgIH0KIAotICAgIGlmIChhdXRvIGltYWdl
QnVmZmVyID0gVW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShzaXpl
LCBSZW5kZXJpbmdNb2RlOjpSZW1vdGVVbmFjY2VsZXJhdGVkLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsICp0aGlzKSkgewotICAgICAgICBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJN
YXAuYWRkKGltYWdlQnVmZmVyLT5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VCdWZm
ZXIuZ2V0KCkpOworICAgIGlmIChpbWFnZUJ1ZmZlcikgeworICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJp
bmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIGltYWdlQnVmZmVyLT5yZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIoKSksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAg
ICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZUltYWdlQnVmZmVyKGltYWdlQnVm
ZmVyLT5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VCdWZmZXIuZ2V0KCkpOwogICAg
ICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiAgICAgfQogCisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK1JlZlB0cjxJbWFnZURhdGE+IFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24g
b3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIElQQzo6SW1hZ2VEYXRhUmVm
ZXJlbmNlIGltYWdlRGF0YVJlZmVyZW5jZTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6R2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OkdldEltYWdlRGF0YTo6UmVwbHkoaW1hZ2VEYXRhUmVmZXJlbmNlKSwgbV9yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciwgMV9zKTsKKyAgICByZXR1cm4gaW1hZ2VEYXRhUmVmZXJlbmNlLmJ1ZmZl
cigpOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hEaXNwbGF5
TGlzdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkZsdXNoRGlzcGxheUxpc3QoZGlzcGxh
eUxpc3QsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIpOworfQorCitEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgRGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90
ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBz
ZW50Rmx1c2hJZGVudGlmaWVyID0gRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXI6OmdlbmVyYXRl
KCk7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Rmx1c2hEaXNw
bGF5TGlzdEFuZENvbW1pdChkaXNwbGF5TGlzdCwgc2VudEZsdXNoSWRlbnRpZmllciwgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAg
cmV0dXJuIHNlbnRGbHVzaElkZW50aWZpZXI7Cit9CisKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICAvLyBDcmVhdGVJbWFnZUJ1ZmZlciBt
ZXNzYWdlIHNob3VsZCBoYXZlIGJlZW4gcmVjZWl2ZWQgYmVmb3JlIHRoaXMgb25lLgotICAgIGJv
b2wgZm91bmQgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAucmVtb3ZlKHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcik7Ci0gICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbGVhc2VSZW1vdGVSZXNv
dXJjZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmltYWdlQnVmZmVy
QmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50
U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvIGltYWdl
QnVmZmVyID0gbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmdldChyZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpKQotICAgICAgICBpbWFnZUJ1ZmZlci0+Y3JlYXRlQmFja2VuZChsb2dpY2Fs
U2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZSho
YW5kbGUpKTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkuY2FjaGVkSW1hZ2VCdWZmZXIocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBpZiAo
IWltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKGltYWdlQnVmZmVy
LT5pc0FjY2VsZXJhdGVkKCkpCisgICAgICAgIGRvd25jYXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jcmVhdGVCYWNrZW5kKGxvZ2ljYWxTaXplLCBi
YWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRsZSkp
OworICAgIGVsc2UKKyAgICAgICAgZG93bmNhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVm
ZmVyUHJveHk+KCppbWFnZUJ1ZmZlcikuY3JlYXRlQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2Vu
ZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZShoYW5kbGUpKTsKIH0K
IAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoRGlzcGxheUxpc3RXYXND
b21taXR0ZWQoRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGlm
IChhdXRvIGltYWdlQnVmZmVyID0gbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmdldChy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKQotICAgICAgICBpbWFnZUJ1ZmZlci0+Y29tbWl0Rmx1
c2hDb250ZXh0KGZsdXNoSWRlbnRpZmllcik7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmNhY2hlZEltYWdlQnVmZmVyKHJlbW90ZVJlc291cmNlSWRl
bnRpZmllcik7CisgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKGltYWdlQnVmZmVyLT5pc0FjY2VsZXJhdGVkKCkpCisgICAgICAgIGRvd25jYXN0PEFjY2Vs
ZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jb21taXRGbHVzaERp
c3BsYXlMaXN0KGZsdXNoSWRlbnRpZmllcik7CisgICAgZWxzZQorICAgICAgICBkb3duY2FzdDxV
bmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jb21taXRG
bHVzaERpc3BsYXlMaXN0KGZsdXNoSWRlbnRpZmllcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKaW5kZXggOWQyOTAwMjNk
NDk3MjFlYWQ2Y2I5ODc5OWQyNmY1YThkMGVkNGRiZS4uZGNmMWMwNGIxZTcxNjg1ZTU3Yzc3ZDdi
OWI2NzEzNjFjMTE1YzkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5o
CkBAIC0zMSwxNiArMzEsMjEgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUu
aCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVy
LmgiCi0jaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgiCisj
aW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFNp
emUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nTW9kZS5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNw
YWNlIERpc3BsYXlMaXN0IHsKK2NsYXNzIERpc3BsYXlMaXN0OworY2xhc3MgSXRlbTsKK30KK2Ns
YXNzIEZsb2F0U2l6ZTsKK2VudW0gY2xhc3MgQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CitlbnVtIGNs
YXNzIFJlbmRlcmluZ01vZGUgOiB1aW50OF90OworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5CkBAIC01Miw3ICs1Nyw3IEBAIHB1Ymxp
YzoKIAogICAgIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKTsKIAotICAgIFJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjsgfQorICAgIFJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eSYgcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkgeyByZXR1cm4gbV9yZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHk7IH0KIAogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4KICAgICBJ
UEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7
CkBAIC02MSw3ICs2NiwxMSBAQCBwdWJsaWM6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIG92ZXJyaWRlOwogCisgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlNob3VsZEFjY2VsZXJhdGUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6Oklt
YWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0
cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBXZWJDb3JlOjpSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdChjb25zdCBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpOworICAgIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyIGZsdXNoRGlzcGxh
eUxpc3RBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jiwg
V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbGVhc2VSZW1v
dGVSZXNvdXJjZShXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgYm9v
bCB3YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgpOwpAQCAtNzQsOCArODMsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBi
YWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmll
cik7CiAgICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKERpc3BsYXlMaXN0Rmx1
c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogCi0gICAg
dXNpbmcgSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyLCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJv
eHkqPjsKLSAgICBJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwIG1faW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlck1hcDsKKyAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgbV9yZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkgeyAqdGhpcyB9OwogICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
IG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgeyBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cjo6Z2VuZXJhdGUoKSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmE0NDQ0NGEwYTAzMTcwNGJjYWI2NDdjMzE0NmVkNDJlNGQzZTg1YTgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
aCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCitSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OlJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSkKKyAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KHJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSkKK3sKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNh
Y2hlSW1hZ2VCdWZmZXIoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRl
bnRpZmllciwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQoreworICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9pbWFnZUJ1ZmZlcnMuYWRkKHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwg
aW1hZ2VCdWZmZXIpOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNO
ZXdFbnRyeSk7Cit9CisKK0ltYWdlQnVmZmVyKiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNh
Y2hlZEltYWdlQnVmZmVyKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpCit7CisgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJzLmdldChyZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFz
ZUltYWdlQnVmZmVyKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpCit7CisgICAgYm9vbCBmb3VuZCA9IG1faW1hZ2VCdWZmZXJzLnJlbW92ZShyZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpOworICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKKyAg
ICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42YTA4MTVjODUyNWFhYzJmYmIxN2M1Mjc3YmVhN2UwNWE0NGI4MDFmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBJbWFnZUJ1ZmZlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKKworY2xhc3MgUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5IHsKK3B1YmxpYzoKKyAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5Jik7CisKKyAgICB2b2lkIGNhY2hlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciopOworICAgIFdl
YkNvcmU6OkltYWdlQnVmZmVyKiBjYWNoZWRJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVsZWFzZUltYWdlQnVmZmVyKFdlYkNvcmU6OlJl
bW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgdXNpbmcgUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eUhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllciwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqPjsKKyAgICAKKyAgICBSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5SGFzaE1hcCBtX2ltYWdlQnVmZmVyczsKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCg==
</data>
<flag name="commit-queue"
          id="428102"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411787</attachid>
            <date>2020-10-19 13:33:10 -0700</date>
            <delta_ts>2020-10-19 14:18:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217558-20201019133309.patch</filename>
            <type>text/plain</type>
            <size>55188</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQ1ZjY0NzE3NGIxYjU1
MTQ3ZDU0MTMyYzI5OWM1NWU0NTY1ZDU0Yi4uZGY3OTA3NTE1MmIwMDdiZGZjNTBmMDkzMTdiMWUy
NWEzYjE5Njc4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTEwLTE5ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXTogSW50cm9kdWNlIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB0byBtYW5hZ2UgdGhl
IHJlbW90ZSByZXNvdXJjZXMgaW4gV2ViIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBSZWNvcmRlcjo6T2JzZXJ2ZXIgdG8gUmVj
b3JkZXI6OkRlbGVnYXRlIGJlY2F1c2UgaXQgd2lsbCBiZSByZXNwb25zaWJsZQorICAgICAgICBm
b3IgY3JlYXRpbmcgRGlzcGxheUxpc3RJdGVtcyBpbiBmdXR1cmUgcGF0Y2hlcy4gU28gaXQgd2ls
bCBub3QgYmUganVzdAorICAgICAgICBhbiBvYnNlcnZlci4gQWxzbyBkbyBub3QgbWFrZSBEaXNw
bGF5TGlzdDo6SW1hZ2VCdWZmZXIgYSBzdXBlcmNsYXNzIG9mIGl0LgorICAgICAgICBSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LCB3aGljaCBpcyBhIHN1cGVyY2xhc3Mgb2YgRGlzcGxheUxpc3Q6Oklt
YWdlQnVmZmVyLAorICAgICAgICB3aWxsIGJlIHRoZSBzdXBlcmNsYXNzIG9mIFJlY29yZGVyOjpE
ZWxlZ2F0ZS4KKworICAgICAgICBNYWtlIEltYWdlQnVmZmVyQmFja2VuZDo6aXNBY2NlbGVyYXRl
ZCBhIHN0YXRpYyBtZW1iZXIgaW5zdGVhZCBvZiBhIHZpcnR1YWwKKyAgICAgICAgbWV0aG9kLiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgd291bGQgd2FudCB0byBrbm93IHdoZXRoZXIgdGhl
IGJhY2tlbmQKKyAgICAgICAgb2YgYW4gSW1hZ2VCdWZmZXIgaXNBY2NlbGVyYXRlZCBvciBub3Qg
d2l0aG91dCBoYXZpbmcgdG8gY3JlYXRlIGl0LgorICAgICAgICBJbWFnZUJ1ZmZlckJhY2tlbmQ6
OmlzQWNjZWxlcmF0ZWQgd2lsbCBiZSBzZXQgdG8gZmFsc2UgYW5kCisgICAgICAgIEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZDo6aXNBY2NlbGVyYXRlZCB3aWxsIGJlIHNldCB0byB0cnVlLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyQmFja2VuZDo6aXNBY2NlbGVyYXRlZCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6aXNB
Y2NlbGVyYXRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJh
d2luZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nQ29u
dGV4dDo6RHJhd2luZ0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OlJlY29yZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6d2lsbEFwcGVuZEl0ZW0pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjp+RGVsZWdhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpPYnNlcnZlcjo6fk9i
c2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6T2JzZXJ2ZXI6OndpbGxBcHBlbmRJdGVtKTogRGVsZXRlZC4KKwogMjAyMC0xMC0xNyAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJ
T04ocjI2ODU2MSk6IFN5bnRoZXRpYyBvYmxpcXVlIHRleHQgaXMgZHJhd24gdXBzaWRlLWRvd24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYmRlODgxMTFmZmU4ZjgwZDVhOWMwMzk1NTZkOWE0OGZiYWM0NDk4Ny4uODIw
ZmJmNmIxNmJkNzkwZjc5N2RkNTUwZjNhNmU1YmU2YTRjOWI2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1NCBAQAorMjAyMC0xMC0xOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBw
bGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc106IEludHJvZHVjZSBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkgdG8gbWFuYWdlIHRoZSByZW1vdGUgcmVzb3VyY2VzIGluIFdlYiBQcm9jZXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1NTgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUg
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5IGFuZCBtb3ZlIHNlbmRpbmcgdGhl
IG1lc3NhZ2VzCisgICAgICAgIHRvIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS4KKworICAg
ICAgICBUbyBhbGxvdyBjYXN0aW5nIEltYWdlQnVmZmVyIHRvIFJlbW90ZUltYWdlQnVmZmVyUHJv
eHksIGEgbmV3IG1ldGhvZCBuYW1lZAorICAgICAgICByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIo
KSBpcyBhZGRlZCB0byBJYW1nZUJ1ZmZlciBhbmQgaXQgaXMgb25seSBvdmVycmlkZGVuCisgICAg
ICAgIGJ5IFJlbW90ZUltYWdlQnVmZmVyUHJveHkuIFRoaXMgbWV0aG9kIGlzIHVzZWQgaW4gU1BF
Q0lBTElaRV9UWVBFX1RSQUlUUworICAgICAgICBtYWNyb3MgYWxvbmcgd2l0aCBJYW1nZUJ1ZmZl
cjo6aXNBY2NlbGVyYXRlZCgpLgorCisgICAgICAgIEludHJvZHVjZSBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkgd2hpY2ggd2lsbCBtYW5hZ2UgY2FjaGluZyBhbmQgcmVsZWFzaW5nCisgICAgICAg
IHRoZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LiBDYWNoaW5nIE5hdGl2ZUltYWdlIHdpbGwgYmUg
YWRkZWQgdG8gaXQgaW4KKyAgICAgICAgZnV0dXJlIHBhdGNoZXMuIE1vcmUgYWJvdXQgY29udHJv
bGxpbmcgdGhlIGxpZmUgY3ljbGVzIG9mIHJlbW90ZSByZXNvdXJjZXMgCisgICAgICAgIHdpbGwg
YmUgYWRkZWQgd2l0aCBzdXBwb3J0aW5nIGRyYXdpbmcgcmVtb3RlIHJlc291cmNlcyB0byByZW1v
dGUgY2xpZW50LgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChpc1R5cGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojp+UmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZUJh
Y2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojpjb21taXRG
bHVzaERpc3BsYXlMaXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eTo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdl
QnVmZmVyUHJveHk6OmlzUGVuZGluZ0ZsdXNoIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJbWFnZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNo
RGlzcGxheUxpc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6aW1hZ2VCdWZmZXJCYWNrZW5kV2Fz
Q3JlYXRlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Zmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZUlt
YWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Ojpj
YWNoZWRJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHku
aC4KKwogMjAyMC0xMC0xNiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gSW50cm9kdWNlIFJlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eSB0byBtYW5hZ2UgdGhlIHJlc291cmNlcyBpbiB0aGUgR1BVIFByb2Nlc3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZm
ZXIuaAppbmRleCBjNmMxOWUxMjg5ZjQ4YjAyMGVhNzhiY2UzOWQxMDZjM2RiOTNiMDdkLi44Njk3
Mzk1ZmE0YzhkMDg1MWM3Yjc3OTA0MDZlNjFjOTE4ZmNlYTUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCkBAIC01
MCwxMyArNTAsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclR5cGU+KG5ldyBJbWFnZUJ1ZmZl
clR5cGUoV1RGTW92ZShiYWNrZW5kKSwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRz
KS4uLikpOwogICAgIH0KLSAgICAKLSAgICBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3Jl
YXRlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGJhY2tlbmQtPmlzQWNjZWxlcmF0ZWQoKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKworICAgIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJhY2tlbmRUeXBlOjppc0FjY2VsZXJhdGVkOyB9CiAKIHBy
b3RlY3RlZDoKICAgICBDb25jcmV0ZUltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5k
VHlwZT4mJiBiYWNrZW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmgKaW5kZXggMGFlOWZjYmQwNTg4ZDRjNGUxZWY1YWYzY2M3ZjEyYjYxMmJmNzhk
YS4uOWUxNzNlMTlkODk0NWJhNmQ5YzBiZDFiMGI2MzZmNTAwZjNiMDc3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0yOCw2ICsyOCw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZC5oIgorI2lu
Y2x1ZGUgIlJlbW90ZVJlc291cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ01v
ZGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjAsNiArNjEsOSBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7
CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKTsgfQorICAgIAogICAgIHZp
cnR1YWwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBmbHVzaENvbnRleHQoKSA9IDA7CiAKQEAgLTEwNCw4ICsxMDgsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIGNvcHlUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCYsIEdDR0xlbnVtLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNv
bnN0ID0gMDsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0ID0g
MDsKLQogcHJvdGVjdGVkOgogICAgIEltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5o
CmluZGV4IGMwMTBhMGYwY2ZjZDhjNWU3YWI2Yzk0YzVjM2MzNmY0ODM4NmQwMWYuLjE3MWVkM2U2
OTQxMzBhMzQwMTQxZTYxZDkyMTAxZTI4MTAxZDczN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC0xMDAsNyAr
MTAwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjb3B5VG9QbGF0Zm9ybVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmLCBHQ0dMZW51bSwgUGxhdGZvcm1HTE9iamVjdCwgR0NH
TGVudW0sIGJvb2wsIGJvb2wpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzT3JpZ2luQXRVcHBlckxlZnRDb3JuZXIgPSBmYWxzZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzQWNjZWxlcmF0ZWQgPSBmYWxzZTsKIAogcHJvdGVj
dGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9hdFNp
emUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBDb2xvclNwYWNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
Y3BwCmluZGV4IGM4MDY1YTllYzI1MTQ2NDRmNzQwNWY5YTU0MTNmNjIyMzU2MjcxNTQuLmRiYzNi
N2ViOGIzZDFhZDg4ZDBhYjNmMGVlZjkwYTdjOGQ4NWUwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtMTkwLDExICsxOTAsNiBAQCBJT1N1cmZhY2UqIEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZDo6c3VyZmFjZSgpCiAgICAgcmV0dXJuIG1fc3VyZmFjZS5n
ZXQoKTsKIH0KIAotYm9vbCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmlzQWNjZWxlcmF0
ZWQoKSBjb25zdAotewotICAgIHJldHVybiB0cnVlOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBIQVZFKElPU1VSRkFDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kLmgKaW5kZXggMjQxOGYxZDQ1ZDUzZDQ1OTMzYjM5MDRhMjg4YzYxMDFmMTRiY2MzMS4u
MzIzMDk0ZWE3OTVjNWQyNDgzYzg4NDQwMzEyNGE5MDQwY2M3NDBmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTYyLDkgKzYyLDkgQEAgcHVibGljOgogICAgIFJlZlB0
cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZv
cm1hdCwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcHV0SW1hZ2VE
YXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYs
IGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhh
UHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkgb3ZlcnJpZGU7CiAgICAgSU9TdXJmYWNlKiBz
dXJmYWNlKCk7Ci0gICAgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNPcmlnaW5BdFVwcGVyTGVmdENvcm5lciA9IHRydWU7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzQWNjZWxlcmF0ZWQgPSB0cnVlOwogCiBwcm90
ZWN0ZWQ6CiAgICAgc3RhdGljIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbnRleHRDb2xv
clNwYWNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCmluZGV4IDIzY2MwN2U4YWU0NDJiZGNlYTBkMzY3
NGE1YTg1NTFjNjVjZmRjODcuLmQ0NjE3ZDM1MTZmNGYzZTUxZDc1ZDY0NDM0YTZhMzk0NTdhMDAw
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5j
cHAKQEAgLTMzLDkgKzMzLDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNw
bGF5TGlzdCB7CiAKLURyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNp
emUmIGxvZ2ljYWxTaXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIFJlY29y
ZGVyOjpPYnNlcnZlciogb2JzZXJ2ZXIpCitEcmF3aW5nQ29udGV4dDo6RHJhd2luZ0NvbnRleHQo
Y29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0
aWFsQ1RNLCBSZWNvcmRlcjo6RGVsZWdhdGUqIGRlbGVnYXRlKQogICAgIDogbV9jb250ZXh0KFsm
XShHcmFwaGljc0NvbnRleHQmIGRpc3BsYXlMaXN0Q29udGV4dCkgewotICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCBtX2Rpc3BsYXlMaXN0LCBH
cmFwaGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoeyB9LCBsb2dpY2FsU2l6ZSksIGluaXRp
YWxDVE0sIG9ic2VydmVyKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjb3JkZXI+KGRp
c3BsYXlMaXN0Q29udGV4dCwgbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwg
RmxvYXRSZWN0KHsgfSwgbG9naWNhbFNpemUpLCBpbml0aWFsQ1RNLCBkZWxlZ2F0ZSk7CiAgICAg
fSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5o
CmluZGV4IDdiNjczZjMyYWQ4MTVhNTAwODFiN2U3YWIxMDgxMzE3MTdmZGU1NDMuLjIyZWQyNTZl
ODBhZDI5M2EwNTIwNjliNzQzMDg4YTEzNTFmNDdjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2Ug
RGlzcGxheUxpc3QgewogY2xhc3MgRHJhd2luZ0NvbnRleHQgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIERyYXdpbmdDb250ZXh0KGNv
bnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlh
bENUTSA9IHsgfSwgUmVjb3JkZXI6Ok9ic2VydmVyKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVf
RVhQT1JUIERyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSA9IHsgfSwgUmVjb3JkZXI6OkRlbGVnYXRlKiA9
IG51bGxwdHIpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1
cm4gY29uc3RfY2FzdDxEcmF3aW5nQ29udGV4dCY+KCp0aGlzKS5tX2NvbnRleHQ7IH0KICAgICBX
RUJDT1JFX0VYUE9SVCBSZWNvcmRlciYgcmVjb3JkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlci5oCmluZGV4IDZmZDkxMmRmYjhmZTExYzA5OGRkNjEyNmE4Yzg3
OGFjNmJhN2FlMDIuLjMyNTk5ZTA2MmQ3Y2Y1OWQxZGMyZWFkMDFlNzYwZDY2ZTNmN2VjM2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaApAQCAtMzIsNyArMzIs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4KLWNsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIENv
bmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVjb3JkZXI6Ok9ic2VydmVy
IHsKK2NsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2Vu
ZFR5cGU+IHsKICAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlciA9IENvbmNyZXRlSW1h
Z2VCdWZmZXI8QmFja2VuZFR5cGU+OwogCiBwdWJsaWM6CkBAIC00OCwxMiArNDgsMTIgQEAgcHVi
bGljOgogCiAgICAgSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGRh
dGFCYWNrZW5kLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgICAgIDogQmFzZUNvbmNyZXRl
SW1hZ2VCdWZmZXIoV1RGTW92ZShkYXRhQmFja2VuZCkpCi0gICAgICAgICwgbV9kcmF3aW5nQ29u
dGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSksIHRoaXMpCisgICAgICAg
ICwgbV9kcmF3aW5nQ29udGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSkp
CiAgICAgewogICAgIH0KIAotICAgIEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkK
LSAgICAgICAgOiBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5nQ29udGV4dENU
TShzaXplKSwgdGhpcykKKyAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJl
Y29yZGVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUgPSBudWxscHRyKQorICAgICAgICA6IG1fZHJhd2lu
Z0NvbnRleHQoc2l6ZSwgaW5pdGlhbERyYXdpbmdDb250ZXh0Q1RNKHNpemUpLCBkZWxlZ2F0ZSkK
ICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAK
aW5kZXggMWM1NGFlODIyOTM5NDIwZGQ0MGI3YjcwYmE3ZTM5ZGJiYTY1ZmU5Yi4uYjkwYmUyNzZi
NjYzOWE0MjQ5MzI5Y2JlMmY2YjkwNDc5YzA2MjNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMzcsMTAgKzM3LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCi1SZWNvcmRlcjo6UmVjb3JkZXIoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNLCBPYnNlcnZlciogb2JzZXJ2ZXIpCitSZWNv
cmRlcjo6UmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBEaXNwbGF5TGlzdCYgZGlz
cGxheUxpc3QsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgRmxvYXRS
ZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNLCBEZWxl
Z2F0ZSogZGVsZWdhdGUpCiAgICAgOiBHcmFwaGljc0NvbnRleHRJbXBsKGNvbnRleHQsIGluaXRp
YWxDbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSkKICAgICAsIG1fZGlzcGxheUxpc3QoZGlzcGxheUxp
c3QpCi0gICAgLCBtX29ic2VydmVyKG9ic2VydmVyKQorICAgICwgbV9kZWxlZ2F0ZShkZWxlZ2F0
ZSkKIHsKICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgIlxuUmVj
b3JkaW5nIHdpdGggY2xpcCAiIDw8IGluaXRpYWxDbGlwKTsKICAgICBtX3N0YXRlU3RhY2suYXBw
ZW5kKHsgc3RhdGUsIGluaXRpYWxDVE0sIGluaXRpYWxDbGlwIH0pOwpAQCAtNTksOCArNTksOCBA
QCB2b2lkIFJlY29yZGVyOjpwdXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgVwogCiB2b2lkIFJlY29yZGVyOjp3aWxsQXBwZW5kSXRl
bShjb25zdCBJdGVtJiBpdGVtKQogewotICAgIGlmIChtX29ic2VydmVyKQotICAgICAgICBtX29i
c2VydmVyLT53aWxsQXBwZW5kSXRlbShpdGVtKTsKKyAgICBpZiAobV9kZWxlZ2F0ZSkKKyAgICAg
ICAgbV9kZWxlZ2F0ZS0+d2lsbEFwcGVuZEl0ZW0oaXRlbSk7CiAKICAgICBpZiAoaXRlbS5pc0Ry
YXdpbmdJdGVtKCkKICNpZiBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuaAppbmRleCA5ZWUxZDM5MzhmMjMyZjNmMThkOTc4YWY3MTg3MDFkOGJlNDYzMDcyLi42ZjM2
NzA3ZTBiNzYxYmY2MmM1NDIzNDEzYzk0MTI1MDMzOGE1NDhjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTUzLDggKzUzLDggQEAgY2xhc3MgUmVjb3JkZXIgOiBw
dWJsaWMgR3JhcGhpY3NDb250ZXh0SW1wbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVjb3JkZXIpOwogcHVibGljOgotICAgIGNsYXNz
IE9ic2VydmVyOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYs
IERpc3BsYXlMaXN0JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJl
Y3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBPYnNlcnZlciogPSBudWxs
cHRyKTsKKyAgICBjbGFzcyBEZWxlZ2F0ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlcihH
cmFwaGljc0NvbnRleHQmLCBEaXNwbGF5TGlzdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
RGVsZWdhdGUqID0gbnVsbHB0cik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+UmVjb3Jk
ZXIoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHV0SW1hZ2VEYXRhKEFscGhhUHJlbXVs
dGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYsIGNvbnN0IEludFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRp
b24gZGVzdEZvcm1hdCk7CkBAIC02Myw5ICs2Myw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBw
ZW5kSXRlbUFuZFVwZGF0ZUV4dGVudChSZWY8RHJhd2luZ0l0ZW0+JiYpOwogCi0gICAgY2xhc3Mg
T2JzZXJ2ZXIgeworICAgIGNsYXNzIERlbGVnYXRlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHZp
cnR1YWwgfk9ic2VydmVyKCkgeyB9CisgICAgICAgIHZpcnR1YWwgfkRlbGVnYXRlKCkgeyB9CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQXBwZW5kSXRlbShjb25zdCBJdGVtJikgeyB9OwogICAg
IH07CiAKQEAgLTE4OCw3ICsxODgsNyBAQCBwcml2YXRlOgogICAgIENvbnRleHRTdGF0ZSYgY3Vy
cmVudFN0YXRlKCk7CiAKICAgICBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKLSAgICBPYnNl
cnZlciogbV9vYnNlcnZlcjsKKyAgICBEZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKIAogICAgIFZlY3Rv
cjxDb250ZXh0U3RhdGUsIDMyPiBtX3N0YXRlU3RhY2s7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggNzk2
ZGI2OTk2ZWVkZmU1YjdlOTI4MDAxMzcyMDU0Y2Y2OWMzODA0Ni4uN2EzYjIzMDBiN2MzNjg5MGZm
YzI1M2JiYTA1NTRhZjIwMzYyZjVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC01NTcsOCArNTU3LDggQEAg
V2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
Y3BwCiAKIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAotV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5
LmNwcAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNw
cAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwCiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2YmQ5YWM0NWYzMWFj
NDNjMmZjMDk2NGFmNWZkZGU0YTc4ZTY4NDg3Li43NDg2OTAzNDg4Y2E2M2ExNTRhMWU5YzAxNmU1
OGZjYzhlOGJlYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTQyMjQsOCArNDIyNCw2IEBACiAJCTcxQTY3NkE1MjJDNjIzMTgwMDdE
NjI5NSAvKiBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIu
bW07IHBhdGggPSBpb3MvV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MUZCODEwQTIyNjA2MjdBMDAzMjM2NzcgLyogV2Vic2l0
ZVNpbXVsYXRlZE1vdXNlRXZlbnRzRGlzcGF0Y2hQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2Vic2l0ZVNpbXVsYXRlZE1vdXNlRXZlbnRzRGlzcGF0Y2hQb2xpY3ku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIyNzgwMEIyNDA4QkQ3RDAwN0QzNzZC
IC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0
Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNzIyNzgwMEMyNDA5N0EwMjAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MjI3ODAw
RDI0MDk3QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjZENTZERDI1M0E2NDgxMDAwMkVGOTAg
LyogUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVSZXNv
dXJjZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2RDU2REUyNTNB
NjQ4MTAwMDJFRjkwIC8qIFJlbW90ZVJlc291cmNlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlUmVzb3VyY2VDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBN0Yz
NDI0MDc4NTdEMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5k
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyU2hh
cmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC00MjM3LDYgKzQyMzUsOCBAQAogCQk3MjdBN0Y0OTI0MDhBRUU2MDA0RDI5MzEgLyogUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOEU4NkVGMTc5NTE4OEMwMDg3ODc5
RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJDb2xvclBpY2tlck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjhF
ODZGMDE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb2xvclBpY2tlck1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJCNTMxNTcyNTNDMUU0RDAwNDkyOTVBIC8qIFJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkI1MzE1ODI1
M0MxRTREMDA0OTI5NUEgLyogUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3NUE4RDJDNDE4N0NDRjlGMDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NUE4RDJDNTE4N0NDRjlGMDBDMzlDOUUgLyogV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV0tXZWJzaXRlRGF0YVN0b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
NUE4RDJENDE4N0QxQzAxMDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJu
YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgxMzgsMTIgKzgxMzgsMTIgQEAK
IAkJCQk3MjdBN0YzNjI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmggKi8sCiAJCQkJNzI3QTdGMzgyNDA3ODhGMDAwNEQyOTMxIC8qIFBsYXRmb3Jt
SW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmggKi8sCiAJCQkJNzIyNzgwMEIyNDA4QkQ3RDAw
N0QzNzZCIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovLAotCQkJCTcyMjc4
MDBDMjQwOTdBMDIwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJv
eHkuY3BwICovLAotCQkJCTcyMjc4MDBEMjQwOTdBMDIwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCAqLywKIAkJCQk3MjdBN0Y0OTI0MDhBRUU2MDA0RDI5
MzEgLyogUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovLAogCQkJCTU1MDY0MDlEMjQwNzE2MDkw
MEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwICovLAogCQkJCTU1MDY0
MDlFMjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCAqLywK
IAkJCQk1NTA2NDBBMDI0MDcxOUUxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCTcyQjUzMTU3MjUzQzFFNEQwMDQ5Mjk1QSAvKiBSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwICovLAorCQkJCTcyQjUzMTU4MjUzQzFFNEQwMDQ5Mjk1
QSAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCAqLywKIAkJCQk1NTA2NDA5RjI0MDcxOTZB
MDBBQUUwNDUgLyogUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCAqLywKIAkJCSk7CiAJCQlw
YXRoID0gZ3JhcGhpY3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHku
aAppbmRleCA5YWZmMDg4ZTM3Y2E3NmE3Zjg2NGFlN2U0MmJiYjcwMDRmMWYxNTIzLi44ZTY0ZjA1
YThhNmU4ZjVlYzU4OTE0ZDQ3MDY0YjFkMGE1OTZkMGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1S
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTM3LDQgKzM3LDEyIEBAIHVzaW5nIEFjY2VsZXJh
dGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA9IFJlbW90ZUltYWdlQnVmZmVyUHJveHk8QWNjZWxl
cmF0ZWRJbWFnCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0JFR0lOKFdlYktpdDo6VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHkpCisg
ICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1
ZmZlcikgeyByZXR1cm4gaW1hZ2VCdWZmZXIucmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkgJiYg
IWltYWdlQnVmZmVyLmlzQWNjZWxlcmF0ZWQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19F
TkQoKQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYktpdDo6QWNjZWxlcmF0ZWRS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJD
b3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpIHsgcmV0dXJuIGltYWdlQnVmZmVyLnJlbW90
ZVJlc291cmNlSWRlbnRpZmllcigpICYmIGltYWdlQnVmZmVyLmlzQWNjZWxlcmF0ZWQoKTsgfQor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9D
RVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJv
eHkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTU2MmEzNjhlNjllNDIzMGU3
MjYyYzI2MzZkZjI4NmQ3NDZlYWM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEw
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIgotCi0jaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQotCi0jaW5jbHVkZSAiSW1hZ2VEYXRhUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiUmVt
b3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+Ci0j
aW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci11c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclBy
b3h5OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5KG1ha2VXZWFrUHRyKHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCi17Ci0gICAg
Ly8gQ3JlYXRlIHRoZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LgotICAgIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpD
cmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHktPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOwotfQotCi1SZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6On5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyUHJveHkoKQotewotICAgIC8vIFJlbGVhc2UgdGhlIFJlbW90ZUltYWdlQnVmZmVyUHJv
eHkuCi0gICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICAgICAgcmV0
dXJuOwotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZWxlYXNlUmVtb3RlUmVzb3VyY2UobV9yZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIoKSk7Ci19Ci0KLVJlZlB0cjxJbWFnZURhdGE+IFJlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGlj
YXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KSBjb25zdAotewotICAg
IElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YVJlZmVyZW5jZTsKLSAgICBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OkdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIG1fcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkdldElt
YWdlRGF0YTo6UmVwbHkoaW1hZ2VEYXRhUmVmZXJlbmNlKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHktPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIDFfcyk7Ci0gICAgcmV0dXJu
IGltYWdlRGF0YVJlZmVyZW5jZS5idWZmZXIoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyUHJveHk6OndhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVk
KCkKLXsKLSAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgJiYgIWlzQmFja2Vu
ZENyZWF0ZWQoKSkKLSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPndhaXRG
b3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Ojp3YWl0Rm9yRmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1p
dHRlZCgpCi17Ci0gICAgaWYgKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5ICYmIGlzUGVu
ZGluZ0ZsdXNoKCkpCi0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT53YWl0
Rm9yRmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZCgpOwotfQotCi12b2lkIFJlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6Zmx1c2hEaXNwbGF5TGlzdChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQotewotICAgIGlmICghbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBUcmFjZVNj
b3BlIHRyYWNpbmdTY29wZShGbHVzaFJlbW90ZUltYWdlQnVmZmVyU3RhcnQsIEZsdXNoUmVtb3Rl
SW1hZ2VCdWZmZXJFbmQpOwotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpGbHVzaERpc3BsYXlMaXN0KGRpc3Bs
YXlMaXN0LCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LT5yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsKLSAgICBkaXNwbGF5TGlz
dC5jbGVhcigpOwotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94
eTo6Zmx1c2hEaXNwbGF5TGlzdEFuZFdhaXRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkKLXsKLSAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5KQotICAgICAgICByZXR1cm47Ci0KLSAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29w
ZShGbHVzaFJlbW90ZUltYWdlQnVmZmVyU3RhcnQsIEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJFbmQs
IDEpOwotICAgIG1fc2VudEZsdXNoSWRlbnRpZmllciA9IERpc3BsYXlMaXN0Rmx1c2hJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpOwotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpGbHVzaERpc3BsYXlMaXN0QW5kQ29t
bWl0KGRpc3BsYXlMaXN0LCBtX3NlbnRGbHVzaElkZW50aWZpZXIsIG1fcmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyKCkpOwotICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7Ci0gICAgd2FpdEZvckZs
dXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyUHJveHk6OmNvbW1pdEZsdXNoQ29udGV4dChEaXNwbGF5TGlzdEZsdXNo
SWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIpCi17Ci0gICAgbV9yZWNlaXZlZEZsdXNoSWRlbnRp
ZmllciA9IGZsdXNoSWRlbnRpZmllcjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YjlhMDI2YTgxMjk4Nzk2ZTdiZDM1ZmE5NmVlZTkwNGRlNGJmYjVmZC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
LQotI2luY2x1ZGUgIkRpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxv
YXRTaXplLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ01vZGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotY2xhc3MgSW1hZ2VEYXRhOwotZW51bSBjbGFzcyBBbHBoYVByZW11bHRpcGxpY2F0aW9uIDog
dWludDhfdDsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTsKLQotY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclBy
b3h5IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyUHJveHkoKTsKLQotICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbW90ZVJlc291cmNlSWRl
bnRpZmllcjsgfQotCi0gICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuIFNlZSBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluLgotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVCYWNr
ZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNv
bG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSkgPSAwOwotCi0gICAgdm9pZCBjb21t
aXRGbHVzaENvbnRleHQoRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIpOwotCi1wcm90ZWN0ZWQ6
Ci0gICAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Jik7Ci0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0ID0gMDsKLSAgICBib29s
IGlzUGVuZGluZ0ZsdXNoKCkgY29uc3QgeyByZXR1cm4gbV9zZW50Rmx1c2hJZGVudGlmaWVyICE9
IG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXI7IH0KLQotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFn
ZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1
dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkgY29uc3Q7Ci0KLSAgICB2
b2lkIHdhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCk7Ci0gICAgdm9pZCB3YWl0
Rm9yRmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZCgpOwotCi0gICAgLy8gTWVzc2FnZXMgdG8g
YmUgc2VudC4gU2VlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbi4KLSAg
ICB2b2lkIGZsdXNoRGlzcGxheUxpc3QoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
Jik7Ci0gICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0QW5kV2FpdENvbW1pdChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3QmKTsKLQotcHJpdmF0ZToKLSAgICBXZWFrUHRyPFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eT4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7Ci0gICAg
V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIHsgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07Ci0K
LSAgICBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBtX3NlbnRGbHVzaElkZW50aWZpZXI7Ci0g
ICAgRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllcjsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9D
RVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCAyMGZiZjgxYzk4MjU1MmVmNzZi
YjZjZDE1ZGMzYTFlOWQzODgwZWMzLi4yNzlhNzkyYTAyZGMwZTcxN2QyOGIzNzhmYzFkZjEwYWE4
NTM0NzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMjcsNyArMjcsNiBAQAog
CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi0jaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlclByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEltYWdl
QnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJlY29yZGVyLmg+CkBAIC0zNyw1NCArMzYsNzEgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4KLWNsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBw
dWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwgcHVi
bGljIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eSB7CitjbGFzcyBSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5IDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZl
cjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRl
bGVnYXRlIHsKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlciA9IFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT47CiAgICAgdXNpbmcgQmFzZURp
c3BsYXlMaXN0SW1hZ2VCdWZmZXI6Om1fYmFja2VuZDsKICAgICB1c2luZyBCYXNlRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlcjo6bV9kcmF3aW5nQ29udGV4dDsKIAogcHVibGljOgotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYgc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkp
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PiBjcmVh
dGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KQogICAgIHsKICAgICAgICAgaWYgKEJhY2tlbmRUeXBlOjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShz
aXplLCByZXNvbHV0aW9uU2NhbGUpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eT4obmV3IFJlbW90ZUltYWdlQnVmZmVyUHJveHkoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVz
b2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKTsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Pihu
ZXcgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eShzaXplLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkpKTsKICAgICB9CiAKICAgICB+UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSgpCiAgICAgeworICAg
ICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CisgICAgICAgIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKS5yZWxlYXNlSW1h
Z2VCdWZmZXIobV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotcHJvdGVjdGVk
OgotICAgIFJlbW90ZUltYWdlQnVmZmVyUHJveHkoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBz
aXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICAgICAgOiBCYXNl
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlcihzaXplKQotICAgICAgICAsIFJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJQcm94eShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICB7Ci0gICAgfQor
ICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmll
cjsgfQogCi0gICAgdm9pZCBjcmVhdGVCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYg
bG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkgb3ZlcnJpZGUKKyAgICB2b2lkIGNyZWF0ZUJhY2tlbmQo
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JT
cGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKCFtX2JhY2tlbmQpOwogICAgICAgICBtX2JhY2tlbmQgPSBCYWNrZW5k
VHlwZTo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBj
b2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRsZSkpOwogICAgIH0KLSAgICAKLSAgICBib29sIGlzQmFj
a2VuZENyZWF0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7IH0K
KworICAgIHZvaWQgY29tbWl0Rmx1c2hEaXNwbGF5TGlzdChEaXNwbGF5TGlzdEZsdXNoSWRlbnRp
ZmllciBmbHVzaElkZW50aWZpZXIpCisgICAgeworICAgICAgICBtX3JlY2VpdmVkRmx1c2hJZGVu
dGlmaWVyID0gZmx1c2hJZGVudGlmaWVyOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIFJlbW90
ZUltYWdlQnVmZmVyUHJveHkoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAg
ICAgOiBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcihzaXplLCB0aGlzKQorICAgICAgICAsIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KG1ha2VXZWFrUHRyKHJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSkpCisgICAgeworICAgICAgICBBU1NFUlQobV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkpOworICAgIH0KKworICAgIGJvb2wgaXNQZW5kaW5nRmx1c2goKSBjb25zdCB7IHJl
dHVybiBtX3NlbnRGbHVzaElkZW50aWZpZXIgIT0gbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllcjsg
fQogCiAgICAgQmFja2VuZFR5cGUqIGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkgY29uc3Qgb3ZlcnJp
ZGUKICAgICB7Ci0gICAgICAgIGlmICghbV9iYWNrZW5kKQotICAgICAgICAgICAgY29uc3RfY2Fz
dDxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Jj4oKnRoaXMpLlJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eTo6d2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoKTsKKyAg
ICAgICAgaWYgKCFtX2JhY2tlbmQgJiYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisg
ICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+d2FpdEZvckltYWdlQnVm
ZmVyQmFja2VuZFdhc0NyZWF0ZWQoKTsKICAgICAgICAgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsK
ICAgICB9CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2Vi
Q29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0IG92ZXJyaWRlCiAgICAgeworICAgICAgICBpZiAoIW1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKICAgICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVm
ZmVyUHJveHkqPih0aGlzKS0+bV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwotICAgICAg
ICBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyUHJveHkqPih0aGlzKS0+UmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlclByb3h5OjpmbHVzaERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KTsK
LSAgICAgICAgYXV0byByZXN1bHQgPSBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyUHJveHkq
Pih0aGlzKS0+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5OjpnZXRJbWFnZURh
dGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0KTsKKyAgICAgICAgaWYgKGRpc3BsYXlMaXN0Lml0ZW1D
b3VudCgpKSB7CisgICAgICAgICAgICBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyUHJveHkm
PigqdGhpcykuZmx1c2hEaXNwbGF5TGlzdChkaXNwbGF5TGlzdCk7CisgICAgICAgICAgICBkaXNw
bGF5TGlzdC5jbGVhcigpOworICAgICAgICB9CisKICAgICAgICAgLy8gZ2V0SW1hZ2VEYXRhIGlz
IHN5bmNocm9ub3VzLCB3aGljaCBtZWFucyB3ZSd2ZSBhbHJlYWR5IHJlY2VpdmVkIHRoZSBDb21t
aXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCBtZXNzYWdlLgotICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmdldEltYWdl
RGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsK
ICAgICB9CiAKICAgICB2b2lkIHB1dEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbWFnZURhdGEmIGltYWdlRGF0YSwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IGRlc3RQb2ludCA9IHsgfSwgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9y
bWF0ID0gV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCkgb3Zl
cnJpZGUKQEAgLTEwNCwxNyArMTIwLDQ0IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZsdXNoRHJh
d2luZ0NvbnRleHQoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgYXV0byYgZGlzcGxheUxpc3Qg
PSBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAgIGlmIChkaXNwbGF5TGlz
dC5pdGVtQ291bnQoKSkKLSAgICAgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXJQcm94eTo6Zmx1c2hEaXNwbGF5TGlzdEFuZFdhaXRDb21taXQoZGlzcGxheUxpc3QpOworICAg
ICAgICBpZiAoIWRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpIHx8ICFtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBUcmFjZVNjb3BlIHRy
YWNpbmdTY29wZShGbHVzaFJlbW90ZUltYWdlQnVmZmVyU3RhcnQsIEZsdXNoUmVtb3RlSW1hZ2VC
dWZmZXJFbmQsIDEpOworICAgICAgICBtX3NlbnRGbHVzaElkZW50aWZpZXIgPSBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS0+Zmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChkaXNwbGF5TGlz
dCwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgICAgIC8vIFdhaXQgZm9yIG91
ciBEaXNwbGF5TGlzdCB0byBiZSBmbHVzaGVkIGJ1dCBkbyBub3QgaGFuZy4KKyAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhXYWl0aW5nRmx1c2ggPSAzOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIG51bVdhaXRpbmdGbHVzaCA9IDA7IG51bVdhaXRpbmdGbHVzaCA8IG1heFdhaXRp
bmdGbHVzaCAmJiBpc1BlbmRpbmdGbHVzaCgpOyArK251bVdhaXRpbmdGbHVzaCkKKyAgICAgICAg
ICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT53YWl0Rm9yRmx1c2hEaXNwbGF5TGlz
dFdhc0NvbW1pdHRlZCgpOworCisgICAgICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7CiAgICAgfQot
ICAgIAorCisgICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpIG92ZXJyaWRlCisgICAgeworICAgICAgICBp
ZiAoIWRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpIHx8ICFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBUcmFjZVNjb3BlIHRyYWNpbmdT
Y29wZShGbHVzaFJlbW90ZUltYWdlQnVmZmVyU3RhcnQsIEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJF
bmQpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Zmx1c2hEaXNwbGF5
TGlzdChkaXNwbGF5TGlzdCwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIH0KKwog
ICAgIHZvaWQgd2lsbEFwcGVuZEl0ZW0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0m
KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgY29uc3RleHByIHNpemVfdCBEaXNwbGF5TGlzdEJh
dGNoU2l6ZSA9IDUxMjsKICAgICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBtX2RyYXdpbmdDb250
ZXh0LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAgIGlmIChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSA+
PSBEaXNwbGF5TGlzdEJhdGNoU2l6ZSkKLSAgICAgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXJQcm94eTo6Zmx1c2hEaXNwbGF5TGlzdChkaXNwbGF5TGlzdCk7CisgICAgICAg
IGlmIChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSA8IERpc3BsYXlMaXN0QmF0Y2hTaXplIHx8ICFt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBmbHVzaERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KTsKKyAgICAgICAgZGlzcGxheUxpc3Qu
Y2xlYXIoKTsKICAgICB9CisgICAgCisgICAgRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgbV9z
ZW50Rmx1c2hJZGVudGlmaWVyOworICAgIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyIG1fcmVj
ZWl2ZWRGbHVzaElkZW50aWZpZXI7CisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHsgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CisgICAgV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk+IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKaW5k
ZXggYjE0NjFiNDgyMTQ4ZDJiNzViNDBmMDk4ZDk0MGNkZTEwYWI0ZmZjZS4uNWQ0ZTA4MjBlMDlh
NTE0ZjliZmU1MzhlYTI4YWZmMmU4OWU4MmM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiSW1hZ2VEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZXMuaCIK
QEAgLTg4LDM4ICs4OSw3NSBAQCBib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6d2Fp
dEZvckZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBTaG91bGRBY2NlbGVyYXRlIHNob3VsZEFjY2VsZXJhdGUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogeworICAgIFJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOworCiAgICAgaWYgKHNob3VsZEFjY2VsZXJhdGUgPT0g
U2hvdWxkQWNjZWxlcmF0ZTo6WWVzKSB7Ci0gICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0g
QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5n
TW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgKnRo
aXMpKSB7Ci0gICAgICAgICAgICBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuYWRkKGlt
YWdlQnVmZmVyLT5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VCdWZmZXIuZ2V0KCkp
OwotICAgICAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwotICAgICAgICB9CisgICAgICAgIHJl
bmRlcmluZ01vZGUgPSBSZW5kZXJpbmdNb2RlOjpSZW1vdGVBY2NlbGVyYXRlZDsKKyAgICAgICAg
aW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShz
aXplLCByZXNvbHV0aW9uU2NhbGUsICp0aGlzKTsKKyAgICB9CisKKyAgICBpZiAoIWltYWdlQnVm
ZmVyKSB7CisgICAgICAgIHJlbmRlcmluZ01vZGUgPSBSZW5kZXJpbmdNb2RlOjpSZW1vdGVVbmFj
Y2VsZXJhdGVkOworICAgICAgICBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5OjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCAqdGhpcyk7CiAgICAg
fQogCi0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eTo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlJlbW90ZVVuYWNjZWxlcmF0
ZWQsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgKnRoaXMpKSB7Ci0gICAgICAgIG1faW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5hZGQoaW1hZ2VCdWZmZXItPnJlbW90ZVJlc291cmNl
SWRlbnRpZmllcigpLCBpbWFnZUJ1ZmZlci5nZXQoKSk7CisgICAgaWYgKGltYWdlQnVmZmVyKSB7
CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUlt
YWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgaW1hZ2VCdWZmZXItPnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpKSwgbV9yZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcik7CisgICAgICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNh
Y2hlSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXItPnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpLCBp
bWFnZUJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKICAgICB9CiAK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorUmVm
UHRyPEltYWdlRGF0YT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJbWFnZURhdGEo
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1Jl
Y3QsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7
CisgICAgSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhUmVmZXJlbmNlOworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpHZXRJbWFnZURhdGEob3V0
cHV0Rm9ybWF0LCBzcmNSZWN0LCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6R2V0SW1hZ2VEYXRhOjpSZXBseShpbWFnZURhdGFSZWZl
cmVuY2UpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCAxX3MpOworICAgIHJldHVybiBp
bWFnZURhdGFSZWZlcmVuY2UuYnVmZmVyKCk7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjpmbHVzaERpc3BsYXlMaXN0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dCYgZGlzcGxheUxpc3QsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Rmx1c2hEaXNwbGF5TGlzdChkaXNwbGF5TGlzdCwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwg
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Cit9CisKK0Rpc3BsYXlMaXN0Rmx1c2hJZGVu
dGlmaWVyIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hEaXNwbGF5TGlzdEFuZENv
bW1pdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIERpc3Bs
YXlMaXN0Rmx1c2hJZGVudGlmaWVyIHNlbnRGbHVzaElkZW50aWZpZXIgPSBEaXNwbGF5TGlzdEZs
dXNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpGbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBzZW50
Rmx1c2hJZGVudGlmaWVyLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gc2VudEZsdXNoSWRlbnRpZmllcjsKK30KKwog
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAg
IC8vIENyZWF0ZUltYWdlQnVmZmVyIG1lc3NhZ2Ugc2hvdWxkIGhhdmUgYmVlbiByZWNlaXZlZCBi
ZWZvcmUgdGhpcyBvbmUuCi0gICAgYm9vbCBmb3VuZCA9IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlck1hcC5yZW1vdmUocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICBBU1NFUlRfVU5V
U0VEKGZvdW5kLCBmb3VuZCk7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6UmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1f
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6aW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBGbG9hdFNpemUm
IGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBo
YW5kbGUsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
CiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXJNYXAuZ2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpCi0gICAgICAgIGltYWdlQnVmZmVy
LT5jcmVhdGVCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxl
LCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRsZSkpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBt
X3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpOworICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBpZiAoaW1hZ2VCdWZmZXItPmlzQWNjZWxlcmF0ZWQoKSkKKyAgICAgICAgZG93bmNh
c3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpLmNyZWF0
ZUJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsIFdURk1vdmUoaGFuZGxlKSk7CisgICAgZWxzZQorICAgICAgICBkb3duY2FzdDxVbmFj
Y2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jcmVhdGVCYWNr
ZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNl
LCBXVEZNb3ZlKGhhbmRsZSkpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6Zmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZChEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmll
ciBmbHVzaElkZW50aWZpZXIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJNYXAuZ2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpCi0gICAgICAg
IGltYWdlQnVmZmVyLT5jb21taXRGbHVzaENvbnRleHQoZmx1c2hJZGVudGlmaWVyKTsKKyAgICBh
dXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVkSW1hZ2VC
dWZmZXIocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBpZiAoIWltYWdlQnVmZmVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoaW1hZ2VCdWZmZXItPmlzQWNjZWxlcmF0ZWQoKSkK
KyAgICAgICAgZG93bmNhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1h
Z2VCdWZmZXIpLmNvbW1pdEZsdXNoRGlzcGxheUxpc3QoZmx1c2hJZGVudGlmaWVyKTsKKyAgICBl
bHNlCisgICAgICAgIGRvd25jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
PigqaW1hZ2VCdWZmZXIpLmNvbW1pdEZsdXNoRGlzcGxheUxpc3QoZmx1c2hJZGVudGlmaWVyKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuaAppbmRleCA5ZDI5MDAyM2Q0OTcyMWVhZDZjYjk4Nzk5ZDI2ZjVhOGQwZWQ0ZGJlLi5k
Y2YxYzA0YjFlNzE2ODVlNTdjNzdkN2I5YjY3MTM2MWMxMTVjOTI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTMxLDE2ICszMSwyMSBAQAogI2luY2x1ZGUgIklt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKLSNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
aCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgotI2luY2x1ZGUgPFdl
YkNvcmUvQ29sb3JTcGFjZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+Ci0j
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCituYW1l
c3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGlzcGxheUxpc3QgeworY2xhc3MgRGlzcGxheUxp
c3Q7CitjbGFzcyBJdGVtOworfQorY2xhc3MgRmxvYXRTaXplOworZW51bSBjbGFzcyBDb2xvclNw
YWNlIDogdWludDhfdDsKK2VudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IHVpbnQ4X3Q7Cit9CisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkK
QEAgLTUyLDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAgflJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSgpOwogCi0gICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
OyB9CisgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5JiByZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkoKSB7IHJldHVybiBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eTsgfQogCiAgICAgLy8gSVBD
OjpNZXNzYWdlU2VuZGVyLgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBjb25zdCBvdmVycmlkZTsKQEAgLTYxLDcgKzY2LDExIEBAIHB1YmxpYzoKICAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKKyAgICAvLyBNZXNzYWdlcyB0
byBiZSBzZW50LgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3Jl
YXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6U2hvdWxk
QWNjZWxlcmF0ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlKTsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IHNyY1JlY3QsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBm
bHVzaERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYs
IFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgRGlzcGxheUxpc3RGbHVz
aElkZW50aWZpZXIgZmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
OwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbW90ZVJlc291cmNl
SWRlbnRpZmllcik7CiAKICAgICBib29sIHdhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVh
dGVkKCk7CkBAIC03NCw4ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbWFnZUJ1ZmZlckJh
Y2tlbmRXYXNDcmVhdGVkKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGZsdXNoRGlzcGxheUxpc3RXYXND
b21taXR0ZWQoRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllcik7CiAKLSAgICB1c2luZyBJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFw
ID0gSGFzaE1hcDxXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eSo+OwotICAgIEltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXJNYXAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwOworICAgIFJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB7ICp0aGlzIH07CiAgICAgUmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciB7IFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQ0NDQ0YTBhMDMxNzA0YmNhYjY0
N2MzMTQ2ZWQ0MmU0ZDNlODVhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcApAQCAtMCww
ICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisj
aW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZVJlc291cmNlQ2FjaGVQcm94
eTo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYg
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgIDogbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkocmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQoreworfQorCit2b2lkIFJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVJbWFnZUJ1ZmZlcihSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogaW1h
Z2VCdWZmZXIpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2ltYWdlQnVmZmVycy5hZGQocmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyLCBpbWFnZUJ1ZmZlcik7CisgICAgQVNTRVJUX1VOVVNFRChh
ZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30KKworSW1hZ2VCdWZmZXIqIFJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVkSW1hZ2VCdWZmZXIoUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gbV9pbWFnZUJ1
ZmZlcnMuZ2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlSW1hZ2VCdWZmZXIoUmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBib29sIGZvdW5kID0gbV9pbWFn
ZUJ1ZmZlcnMucmVtb3ZlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VO
VVNFRChmb3VuZCwgZm91bmQpOworICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJl
bGVhc2VSZW1vdGVSZXNvdXJjZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhMDgxNWM4NTI1YWFjMmZiYjE3
YzUyNzdiZWE3ZTA1YTQ0YjgwMWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCkBAIC0wLDAg
KzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlIDxXZWJD
b3JlL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEltYWdlQnVmZmVyOworfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OworCitjbGFz
cyBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgeworcHVibGljOgorICAgIFJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmKTsKKworICAgIHZvaWQgY2Fj
aGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6
OkltYWdlQnVmZmVyKik7CisgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGNhY2hlZEltYWdlQnVm
ZmVyKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCByZWxlYXNl
SW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworcHJpdmF0
ZToKKyAgICB1c2luZyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5SGFzaE1hcCA9IEhhc2hNYXA8V2Vi
Q29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlcio+Owor
ICAgIAorICAgIFJlbW90ZUltYWdlQnVmZmVyUHJveHlIYXNoTWFwIG1faW1hZ2VCdWZmZXJzOwor
ICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShH
UFVfUFJPQ0VTUykK
</data>
<flag name="commit-queue"
          id="428107"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411797</attachid>
            <date>2020-10-19 14:16:09 -0700</date>
            <delta_ts>2020-10-19 16:48:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217558-20201019141608.patch</filename>
            <type>text/plain</type>
            <size>55243</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQ1ZjY0NzE3NGIxYjU1
MTQ3ZDU0MTMyYzI5OWM1NWU0NTY1ZDU0Yi4uZGY3OTA3NTE1MmIwMDdiZGZjNTBmMDkzMTdiMWUy
NWEzYjE5Njc4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTEwLTE5ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXTogSW50cm9kdWNlIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB0byBtYW5hZ2UgdGhl
IHJlbW90ZSByZXNvdXJjZXMgaW4gV2ViIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBSZWNvcmRlcjo6T2JzZXJ2ZXIgdG8gUmVj
b3JkZXI6OkRlbGVnYXRlIGJlY2F1c2UgaXQgd2lsbCBiZSByZXNwb25zaWJsZQorICAgICAgICBm
b3IgY3JlYXRpbmcgRGlzcGxheUxpc3RJdGVtcyBpbiBmdXR1cmUgcGF0Y2hlcy4gU28gaXQgd2ls
bCBub3QgYmUganVzdAorICAgICAgICBhbiBvYnNlcnZlci4gQWxzbyBkbyBub3QgbWFrZSBEaXNw
bGF5TGlzdDo6SW1hZ2VCdWZmZXIgYSBzdXBlcmNsYXNzIG9mIGl0LgorICAgICAgICBSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LCB3aGljaCBpcyBhIHN1cGVyY2xhc3Mgb2YgRGlzcGxheUxpc3Q6Oklt
YWdlQnVmZmVyLAorICAgICAgICB3aWxsIGJlIHRoZSBzdXBlcmNsYXNzIG9mIFJlY29yZGVyOjpE
ZWxlZ2F0ZS4KKworICAgICAgICBNYWtlIEltYWdlQnVmZmVyQmFja2VuZDo6aXNBY2NlbGVyYXRl
ZCBhIHN0YXRpYyBtZW1iZXIgaW5zdGVhZCBvZiBhIHZpcnR1YWwKKyAgICAgICAgbWV0aG9kLiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgd291bGQgd2FudCB0byBrbm93IHdoZXRoZXIgdGhl
IGJhY2tlbmQKKyAgICAgICAgb2YgYW4gSW1hZ2VCdWZmZXIgaXNBY2NlbGVyYXRlZCBvciBub3Qg
d2l0aG91dCBoYXZpbmcgdG8gY3JlYXRlIGl0LgorICAgICAgICBJbWFnZUJ1ZmZlckJhY2tlbmQ6
OmlzQWNjZWxlcmF0ZWQgd2lsbCBiZSBzZXQgdG8gZmFsc2UgYW5kCisgICAgICAgIEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZDo6aXNBY2NlbGVyYXRlZCB3aWxsIGJlIHNldCB0byB0cnVlLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyQmFja2VuZDo6aXNBY2NlbGVyYXRlZCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6aXNB
Y2NlbGVyYXRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJh
d2luZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nQ29u
dGV4dDo6RHJhd2luZ0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OlJlY29yZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6d2lsbEFwcGVuZEl0ZW0pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjp+RGVsZWdhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpPYnNlcnZlcjo6fk9i
c2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6T2JzZXJ2ZXI6OndpbGxBcHBlbmRJdGVtKTogRGVsZXRlZC4KKwogMjAyMC0xMC0xNyAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJ
T04ocjI2ODU2MSk6IFN5bnRoZXRpYyBvYmxpcXVlIHRleHQgaXMgZHJhd24gdXBzaWRlLWRvd24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYmRlODgxMTFmZmU4ZjgwZDVhOWMwMzk1NTZkOWE0OGZiYWM0NDk4Ny4uODIw
ZmJmNmIxNmJkNzkwZjc5N2RkNTUwZjNhNmU1YmU2YTRjOWI2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1NCBAQAorMjAyMC0xMC0xOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBw
bGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc106IEludHJvZHVjZSBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkgdG8gbWFuYWdlIHRoZSByZW1vdGUgcmVzb3VyY2VzIGluIFdlYiBQcm9jZXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1NTgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUg
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5IGFuZCBtb3ZlIHNlbmRpbmcgdGhl
IG1lc3NhZ2VzCisgICAgICAgIHRvIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS4KKworICAg
ICAgICBUbyBhbGxvdyBjYXN0aW5nIEltYWdlQnVmZmVyIHRvIFJlbW90ZUltYWdlQnVmZmVyUHJv
eHksIGEgbmV3IG1ldGhvZCBuYW1lZAorICAgICAgICByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIo
KSBpcyBhZGRlZCB0byBJYW1nZUJ1ZmZlciBhbmQgaXQgaXMgb25seSBvdmVycmlkZGVuCisgICAg
ICAgIGJ5IFJlbW90ZUltYWdlQnVmZmVyUHJveHkuIFRoaXMgbWV0aG9kIGlzIHVzZWQgaW4gU1BF
Q0lBTElaRV9UWVBFX1RSQUlUUworICAgICAgICBtYWNyb3MgYWxvbmcgd2l0aCBJYW1nZUJ1ZmZl
cjo6aXNBY2NlbGVyYXRlZCgpLgorCisgICAgICAgIEludHJvZHVjZSBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkgd2hpY2ggd2lsbCBtYW5hZ2UgY2FjaGluZyBhbmQgcmVsZWFzaW5nCisgICAgICAg
IHRoZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LiBDYWNoaW5nIE5hdGl2ZUltYWdlIHdpbGwgYmUg
YWRkZWQgdG8gaXQgaW4KKyAgICAgICAgZnV0dXJlIHBhdGNoZXMuIE1vcmUgYWJvdXQgY29udHJv
bGxpbmcgdGhlIGxpZmUgY3ljbGVzIG9mIHJlbW90ZSByZXNvdXJjZXMgCisgICAgICAgIHdpbGwg
YmUgYWRkZWQgd2l0aCBzdXBwb3J0aW5nIGRyYXdpbmcgcmVtb3RlIHJlc291cmNlcyB0byByZW1v
dGUgY2xpZW50LgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChpc1R5cGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojp+UmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZUJh
Y2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojpjb21taXRG
bHVzaERpc3BsYXlMaXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eTo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdl
QnVmZmVyUHJveHk6OmlzUGVuZGluZ0ZsdXNoIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJbWFnZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNo
RGlzcGxheUxpc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6aW1hZ2VCdWZmZXJCYWNrZW5kV2Fz
Q3JlYXRlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Zmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZUlt
YWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Ojpj
YWNoZWRJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHku
aC4KKwogMjAyMC0xMC0xNiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gSW50cm9kdWNlIFJlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eSB0byBtYW5hZ2UgdGhlIHJlc291cmNlcyBpbiB0aGUgR1BVIFByb2Nlc3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZm
ZXIuaAppbmRleCBjNmMxOWUxMjg5ZjQ4YjAyMGVhNzhiY2UzOWQxMDZjM2RiOTNiMDdkLi44Njk3
Mzk1ZmE0YzhkMDg1MWM3Yjc3OTA0MDZlNjFjOTE4ZmNlYTUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCkBAIC01
MCwxMyArNTAsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclR5cGU+KG5ldyBJbWFnZUJ1ZmZl
clR5cGUoV1RGTW92ZShiYWNrZW5kKSwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRz
KS4uLikpOwogICAgIH0KLSAgICAKLSAgICBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3Jl
YXRlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGJhY2tlbmQtPmlzQWNjZWxlcmF0ZWQoKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKworICAgIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJhY2tlbmRUeXBlOjppc0FjY2VsZXJhdGVkOyB9CiAKIHBy
b3RlY3RlZDoKICAgICBDb25jcmV0ZUltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5k
VHlwZT4mJiBiYWNrZW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmgKaW5kZXggMGFlOWZjYmQwNTg4ZDRjNGUxZWY1YWYzY2M3ZjEyYjYxMmJmNzhk
YS4uOWUxNzNlMTlkODk0NWJhNmQ5YzBiZDFiMGI2MzZmNTAwZjNiMDc3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0yOCw2ICsyOCw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZC5oIgorI2lu
Y2x1ZGUgIlJlbW90ZVJlc291cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ01v
ZGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjAsNiArNjEsOSBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7
CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKTsgfQorICAgIAogICAgIHZp
cnR1YWwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBmbHVzaENvbnRleHQoKSA9IDA7CiAKQEAgLTEwNCw4ICsxMDgsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIGNvcHlUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCYsIEdDR0xlbnVtLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNv
bnN0ID0gMDsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0ID0g
MDsKLQogcHJvdGVjdGVkOgogICAgIEltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5o
CmluZGV4IGMwMTBhMGYwY2ZjZDhjNWU3YWI2Yzk0YzVjM2MzNmY0ODM4NmQwMWYuLjE3MWVkM2U2
OTQxMzBhMzQwMTQxZTYxZDkyMTAxZTI4MTAxZDczN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC0xMDAsNyAr
MTAwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjb3B5VG9QbGF0Zm9ybVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmLCBHQ0dMZW51bSwgUGxhdGZvcm1HTE9iamVjdCwgR0NH
TGVudW0sIGJvb2wsIGJvb2wpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzT3JpZ2luQXRVcHBlckxlZnRDb3JuZXIgPSBmYWxzZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzQWNjZWxlcmF0ZWQgPSBmYWxzZTsKIAogcHJvdGVj
dGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9hdFNp
emUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBDb2xvclNwYWNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
Y3BwCmluZGV4IGM4MDY1YTllYzI1MTQ2NDRmNzQwNWY5YTU0MTNmNjIyMzU2MjcxNTQuLmRiYzNi
N2ViOGIzZDFhZDg4ZDBhYjNmMGVlZjkwYTdjOGQ4NWUwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtMTkwLDExICsxOTAsNiBAQCBJT1N1cmZhY2UqIEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZDo6c3VyZmFjZSgpCiAgICAgcmV0dXJuIG1fc3VyZmFjZS5n
ZXQoKTsKIH0KIAotYm9vbCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmlzQWNjZWxlcmF0
ZWQoKSBjb25zdAotewotICAgIHJldHVybiB0cnVlOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBIQVZFKElPU1VSRkFDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kLmgKaW5kZXggMjQxOGYxZDQ1ZDUzZDQ1OTMzYjM5MDRhMjg4YzYxMDFmMTRiY2MzMS4u
MzIzMDk0ZWE3OTVjNWQyNDgzYzg4NDQwMzEyNGE5MDQwY2M3NDBmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTYyLDkgKzYyLDkgQEAgcHVibGljOgogICAgIFJlZlB0
cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZv
cm1hdCwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcHV0SW1hZ2VE
YXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYs
IGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhh
UHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkgb3ZlcnJpZGU7CiAgICAgSU9TdXJmYWNlKiBz
dXJmYWNlKCk7Ci0gICAgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNPcmlnaW5BdFVwcGVyTGVmdENvcm5lciA9IHRydWU7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzQWNjZWxlcmF0ZWQgPSB0cnVlOwogCiBwcm90
ZWN0ZWQ6CiAgICAgc3RhdGljIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbnRleHRDb2xv
clNwYWNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCmluZGV4IDIzY2MwN2U4YWU0NDJiZGNlYTBkMzY3
NGE1YTg1NTFjNjVjZmRjODcuLmQ0NjE3ZDM1MTZmNGYzZTUxZDc1ZDY0NDM0YTZhMzk0NTdhMDAw
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5j
cHAKQEAgLTMzLDkgKzMzLDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNw
bGF5TGlzdCB7CiAKLURyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNp
emUmIGxvZ2ljYWxTaXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIFJlY29y
ZGVyOjpPYnNlcnZlciogb2JzZXJ2ZXIpCitEcmF3aW5nQ29udGV4dDo6RHJhd2luZ0NvbnRleHQo
Y29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0
aWFsQ1RNLCBSZWNvcmRlcjo6RGVsZWdhdGUqIGRlbGVnYXRlKQogICAgIDogbV9jb250ZXh0KFsm
XShHcmFwaGljc0NvbnRleHQmIGRpc3BsYXlMaXN0Q29udGV4dCkgewotICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCBtX2Rpc3BsYXlMaXN0LCBH
cmFwaGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoeyB9LCBsb2dpY2FsU2l6ZSksIGluaXRp
YWxDVE0sIG9ic2VydmVyKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjb3JkZXI+KGRp
c3BsYXlMaXN0Q29udGV4dCwgbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwg
RmxvYXRSZWN0KHsgfSwgbG9naWNhbFNpemUpLCBpbml0aWFsQ1RNLCBkZWxlZ2F0ZSk7CiAgICAg
fSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5o
CmluZGV4IDdiNjczZjMyYWQ4MTVhNTAwODFiN2U3YWIxMDgxMzE3MTdmZGU1NDMuLjIyZWQyNTZl
ODBhZDI5M2EwNTIwNjliNzQzMDg4YTEzNTFmNDdjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2Ug
RGlzcGxheUxpc3QgewogY2xhc3MgRHJhd2luZ0NvbnRleHQgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIERyYXdpbmdDb250ZXh0KGNv
bnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlh
bENUTSA9IHsgfSwgUmVjb3JkZXI6Ok9ic2VydmVyKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVf
RVhQT1JUIERyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSA9IHsgfSwgUmVjb3JkZXI6OkRlbGVnYXRlKiA9
IG51bGxwdHIpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1
cm4gY29uc3RfY2FzdDxEcmF3aW5nQ29udGV4dCY+KCp0aGlzKS5tX2NvbnRleHQ7IH0KICAgICBX
RUJDT1JFX0VYUE9SVCBSZWNvcmRlciYgcmVjb3JkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlci5oCmluZGV4IDZmZDkxMmRmYjhmZTExYzA5OGRkNjEyNmE4Yzg3
OGFjNmJhN2FlMDIuLjMyNTk5ZTA2MmQ3Y2Y1OWQxZGMyZWFkMDFlNzYwZDY2ZTNmN2VjM2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaApAQCAtMzIsNyArMzIs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4KLWNsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIENv
bmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVjb3JkZXI6Ok9ic2VydmVy
IHsKK2NsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2Vu
ZFR5cGU+IHsKICAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlciA9IENvbmNyZXRlSW1h
Z2VCdWZmZXI8QmFja2VuZFR5cGU+OwogCiBwdWJsaWM6CkBAIC00OCwxMiArNDgsMTIgQEAgcHVi
bGljOgogCiAgICAgSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGRh
dGFCYWNrZW5kLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgICAgIDogQmFzZUNvbmNyZXRl
SW1hZ2VCdWZmZXIoV1RGTW92ZShkYXRhQmFja2VuZCkpCi0gICAgICAgICwgbV9kcmF3aW5nQ29u
dGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSksIHRoaXMpCisgICAgICAg
ICwgbV9kcmF3aW5nQ29udGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSkp
CiAgICAgewogICAgIH0KIAotICAgIEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkK
LSAgICAgICAgOiBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5nQ29udGV4dENU
TShzaXplKSwgdGhpcykKKyAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJl
Y29yZGVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUgPSBudWxscHRyKQorICAgICAgICA6IG1fZHJhd2lu
Z0NvbnRleHQoc2l6ZSwgaW5pdGlhbERyYXdpbmdDb250ZXh0Q1RNKHNpemUpLCBkZWxlZ2F0ZSkK
ICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAK
aW5kZXggMWM1NGFlODIyOTM5NDIwZGQ0MGI3YjcwYmE3ZTM5ZGJiYTY1ZmU5Yi4uYjkwYmUyNzZi
NjYzOWE0MjQ5MzI5Y2JlMmY2YjkwNDc5YzA2MjNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMzcsMTAgKzM3LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCi1SZWNvcmRlcjo6UmVjb3JkZXIoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNLCBPYnNlcnZlciogb2JzZXJ2ZXIpCitSZWNv
cmRlcjo6UmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBEaXNwbGF5TGlzdCYgZGlz
cGxheUxpc3QsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgRmxvYXRS
ZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNLCBEZWxl
Z2F0ZSogZGVsZWdhdGUpCiAgICAgOiBHcmFwaGljc0NvbnRleHRJbXBsKGNvbnRleHQsIGluaXRp
YWxDbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSkKICAgICAsIG1fZGlzcGxheUxpc3QoZGlzcGxheUxp
c3QpCi0gICAgLCBtX29ic2VydmVyKG9ic2VydmVyKQorICAgICwgbV9kZWxlZ2F0ZShkZWxlZ2F0
ZSkKIHsKICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgIlxuUmVj
b3JkaW5nIHdpdGggY2xpcCAiIDw8IGluaXRpYWxDbGlwKTsKICAgICBtX3N0YXRlU3RhY2suYXBw
ZW5kKHsgc3RhdGUsIGluaXRpYWxDVE0sIGluaXRpYWxDbGlwIH0pOwpAQCAtNTksOCArNTksOCBA
QCB2b2lkIFJlY29yZGVyOjpwdXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgVwogCiB2b2lkIFJlY29yZGVyOjp3aWxsQXBwZW5kSXRl
bShjb25zdCBJdGVtJiBpdGVtKQogewotICAgIGlmIChtX29ic2VydmVyKQotICAgICAgICBtX29i
c2VydmVyLT53aWxsQXBwZW5kSXRlbShpdGVtKTsKKyAgICBpZiAobV9kZWxlZ2F0ZSkKKyAgICAg
ICAgbV9kZWxlZ2F0ZS0+d2lsbEFwcGVuZEl0ZW0oaXRlbSk7CiAKICAgICBpZiAoaXRlbS5pc0Ry
YXdpbmdJdGVtKCkKICNpZiBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuaAppbmRleCA5ZWUxZDM5MzhmMjMyZjNmMThkOTc4YWY3MTg3MDFkOGJlNDYzMDcyLi42ZjM2
NzA3ZTBiNzYxYmY2MmM1NDIzNDEzYzk0MTI1MDMzOGE1NDhjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTUzLDggKzUzLDggQEAgY2xhc3MgUmVjb3JkZXIgOiBw
dWJsaWMgR3JhcGhpY3NDb250ZXh0SW1wbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVjb3JkZXIpOwogcHVibGljOgotICAgIGNsYXNz
IE9ic2VydmVyOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYs
IERpc3BsYXlMaXN0JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJl
Y3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBPYnNlcnZlciogPSBudWxs
cHRyKTsKKyAgICBjbGFzcyBEZWxlZ2F0ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlcihH
cmFwaGljc0NvbnRleHQmLCBEaXNwbGF5TGlzdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
RGVsZWdhdGUqID0gbnVsbHB0cik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+UmVjb3Jk
ZXIoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHV0SW1hZ2VEYXRhKEFscGhhUHJlbXVs
dGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYsIGNvbnN0IEludFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRp
b24gZGVzdEZvcm1hdCk7CkBAIC02Myw5ICs2Myw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBw
ZW5kSXRlbUFuZFVwZGF0ZUV4dGVudChSZWY8RHJhd2luZ0l0ZW0+JiYpOwogCi0gICAgY2xhc3Mg
T2JzZXJ2ZXIgeworICAgIGNsYXNzIERlbGVnYXRlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHZp
cnR1YWwgfk9ic2VydmVyKCkgeyB9CisgICAgICAgIHZpcnR1YWwgfkRlbGVnYXRlKCkgeyB9CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQXBwZW5kSXRlbShjb25zdCBJdGVtJikgeyB9OwogICAg
IH07CiAKQEAgLTE4OCw3ICsxODgsNyBAQCBwcml2YXRlOgogICAgIENvbnRleHRTdGF0ZSYgY3Vy
cmVudFN0YXRlKCk7CiAKICAgICBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKLSAgICBPYnNl
cnZlciogbV9vYnNlcnZlcjsKKyAgICBEZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKIAogICAgIFZlY3Rv
cjxDb250ZXh0U3RhdGUsIDMyPiBtX3N0YXRlU3RhY2s7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggNzk2
ZGI2OTk2ZWVkZmU1YjdlOTI4MDAxMzcyMDU0Y2Y2OWMzODA0Ni4uN2EzYjIzMDBiN2MzNjg5MGZm
YzI1M2JiYTA1NTRhZjIwMzYyZjVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC01NTcsOCArNTU3LDggQEAg
V2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
Y3BwCiAKIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAotV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5
LmNwcAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNw
cAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwCiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2YmQ5YWM0NWYzMWFj
NDNjMmZjMDk2NGFmNWZkZGU0YTc4ZTY4NDg3Li43NDg2OTAzNDg4Y2E2M2ExNTRhMWU5YzAxNmU1
OGZjYzhlOGJlYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTQyMjQsOCArNDIyNCw2IEBACiAJCTcxQTY3NkE1MjJDNjIzMTgwMDdE
NjI5NSAvKiBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIu
bW07IHBhdGggPSBpb3MvV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MUZCODEwQTIyNjA2MjdBMDAzMjM2NzcgLyogV2Vic2l0
ZVNpbXVsYXRlZE1vdXNlRXZlbnRzRGlzcGF0Y2hQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2Vic2l0ZVNpbXVsYXRlZE1vdXNlRXZlbnRzRGlzcGF0Y2hQb2xpY3ku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIyNzgwMEIyNDA4QkQ3RDAwN0QzNzZC
IC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0
Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNzIyNzgwMEMyNDA5N0EwMjAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MjI3ODAw
RDI0MDk3QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjZENTZERDI1M0E2NDgxMDAwMkVGOTAg
LyogUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVSZXNv
dXJjZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2RDU2REUyNTNB
NjQ4MTAwMDJFRjkwIC8qIFJlbW90ZVJlc291cmNlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlUmVzb3VyY2VDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBN0Yz
NDI0MDc4NTdEMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5k
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyU2hh
cmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC00MjM3LDYgKzQyMzUsOCBAQAogCQk3MjdBN0Y0OTI0MDhBRUU2MDA0RDI5MzEgLyogUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOEU4NkVGMTc5NTE4OEMwMDg3ODc5
RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJDb2xvclBpY2tlck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjhF
ODZGMDE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb2xvclBpY2tlck1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJCNTMxNTcyNTNDMUU0RDAwNDkyOTVBIC8qIFJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkI1MzE1ODI1
M0MxRTREMDA0OTI5NUEgLyogUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3NUE4RDJDNDE4N0NDRjlGMDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NUE4RDJDNTE4N0NDRjlGMDBDMzlDOUUgLyogV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV0tXZWJzaXRlRGF0YVN0b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
NUE4RDJENDE4N0QxQzAxMDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJu
YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgxMzgsMTIgKzgxMzgsMTIgQEAK
IAkJCQk3MjdBN0YzNjI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmggKi8sCiAJCQkJNzI3QTdGMzgyNDA3ODhGMDAwNEQyOTMxIC8qIFBsYXRmb3Jt
SW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmggKi8sCiAJCQkJNzIyNzgwMEIyNDA4QkQ3RDAw
N0QzNzZCIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovLAotCQkJCTcyMjc4
MDBDMjQwOTdBMDIwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJv
eHkuY3BwICovLAotCQkJCTcyMjc4MDBEMjQwOTdBMDIwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCAqLywKIAkJCQk3MjdBN0Y0OTI0MDhBRUU2MDA0RDI5
MzEgLyogUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovLAogCQkJCTU1MDY0MDlEMjQwNzE2MDkw
MEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwICovLAogCQkJCTU1MDY0
MDlFMjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCAqLywK
IAkJCQk1NTA2NDBBMDI0MDcxOUUxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCTcyQjUzMTU3MjUzQzFFNEQwMDQ5Mjk1QSAvKiBSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwICovLAorCQkJCTcyQjUzMTU4MjUzQzFFNEQwMDQ5Mjk1
QSAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCAqLywKIAkJCQk1NTA2NDA5RjI0MDcxOTZB
MDBBQUUwNDUgLyogUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCAqLywKIAkJCSk7CiAJCQlw
YXRoID0gZ3JhcGhpY3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHku
aAppbmRleCA5YWZmMDg4ZTM3Y2E3NmE3Zjg2NGFlN2U0MmJiYjcwMDRmMWYxNTIzLi44ZTY0ZjA1
YThhNmU4ZjVlYzU4OTE0ZDQ3MDY0YjFkMGE1OTZkMGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1S
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTM3LDQgKzM3LDEyIEBAIHVzaW5nIEFjY2VsZXJh
dGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA9IFJlbW90ZUltYWdlQnVmZmVyUHJveHk8QWNjZWxl
cmF0ZWRJbWFnCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0JFR0lOKFdlYktpdDo6VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHkpCisg
ICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1
ZmZlcikgeyByZXR1cm4gaW1hZ2VCdWZmZXIucmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkgJiYg
IWltYWdlQnVmZmVyLmlzQWNjZWxlcmF0ZWQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19F
TkQoKQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYktpdDo6QWNjZWxlcmF0ZWRS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJD
b3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpIHsgcmV0dXJuIGltYWdlQnVmZmVyLnJlbW90
ZVJlc291cmNlSWRlbnRpZmllcigpICYmIGltYWdlQnVmZmVyLmlzQWNjZWxlcmF0ZWQoKTsgfQor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9D
RVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJv
eHkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTU2MmEzNjhlNjllNDIzMGU3
MjYyYzI2MzZkZjI4NmQ3NDZlYWM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEw
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIgotCi0jaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQotCi0jaW5jbHVkZSAiSW1hZ2VEYXRhUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiUmVt
b3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+Ci0j
aW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci11c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclBy
b3h5OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5KG1ha2VXZWFrUHRyKHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCi17Ci0gICAg
Ly8gQ3JlYXRlIHRoZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LgotICAgIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpD
cmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHktPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOwotfQotCi1SZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6On5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyUHJveHkoKQotewotICAgIC8vIFJlbGVhc2UgdGhlIFJlbW90ZUltYWdlQnVmZmVyUHJv
eHkuCi0gICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICAgICAgcmV0
dXJuOwotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZWxlYXNlUmVtb3RlUmVzb3VyY2UobV9yZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIoKSk7Ci19Ci0KLVJlZlB0cjxJbWFnZURhdGE+IFJlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGlj
YXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KSBjb25zdAotewotICAg
IElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YVJlZmVyZW5jZTsKLSAgICBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OkdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIG1fcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkdldElt
YWdlRGF0YTo6UmVwbHkoaW1hZ2VEYXRhUmVmZXJlbmNlKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHktPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIDFfcyk7Ci0gICAgcmV0dXJu
IGltYWdlRGF0YVJlZmVyZW5jZS5idWZmZXIoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyUHJveHk6OndhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVk
KCkKLXsKLSAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgJiYgIWlzQmFja2Vu
ZENyZWF0ZWQoKSkKLSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPndhaXRG
b3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Ojp3YWl0Rm9yRmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1p
dHRlZCgpCi17Ci0gICAgaWYgKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5ICYmIGlzUGVu
ZGluZ0ZsdXNoKCkpCi0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT53YWl0
Rm9yRmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZCgpOwotfQotCi12b2lkIFJlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6Zmx1c2hEaXNwbGF5TGlzdChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQotewotICAgIGlmICghbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBUcmFjZVNj
b3BlIHRyYWNpbmdTY29wZShGbHVzaFJlbW90ZUltYWdlQnVmZmVyU3RhcnQsIEZsdXNoUmVtb3Rl
SW1hZ2VCdWZmZXJFbmQpOwotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpGbHVzaERpc3BsYXlMaXN0KGRpc3Bs
YXlMaXN0LCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LT5yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsKLSAgICBkaXNwbGF5TGlz
dC5jbGVhcigpOwotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94
eTo6Zmx1c2hEaXNwbGF5TGlzdEFuZFdhaXRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkKLXsKLSAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5KQotICAgICAgICByZXR1cm47Ci0KLSAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29w
ZShGbHVzaFJlbW90ZUltYWdlQnVmZmVyU3RhcnQsIEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJFbmQs
IDEpOwotICAgIG1fc2VudEZsdXNoSWRlbnRpZmllciA9IERpc3BsYXlMaXN0Rmx1c2hJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpOwotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpGbHVzaERpc3BsYXlMaXN0QW5kQ29t
bWl0KGRpc3BsYXlMaXN0LCBtX3NlbnRGbHVzaElkZW50aWZpZXIsIG1fcmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyKCkpOwotICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7Ci0gICAgd2FpdEZvckZs
dXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyUHJveHk6OmNvbW1pdEZsdXNoQ29udGV4dChEaXNwbGF5TGlzdEZsdXNo
SWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIpCi17Ci0gICAgbV9yZWNlaXZlZEZsdXNoSWRlbnRp
ZmllciA9IGZsdXNoSWRlbnRpZmllcjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YjlhMDI2YTgxMjk4Nzk2ZTdiZDM1ZmE5NmVlZTkwNGRlNGJmYjVmZC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
LQotI2luY2x1ZGUgIkRpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxv
YXRTaXplLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ01vZGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotY2xhc3MgSW1hZ2VEYXRhOwotZW51bSBjbGFzcyBBbHBoYVByZW11bHRpcGxpY2F0aW9uIDog
dWludDhfdDsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTsKLQotY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclBy
b3h5IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyUHJveHkoKTsKLQotICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbW90ZVJlc291cmNlSWRl
bnRpZmllcjsgfQotCi0gICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuIFNlZSBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluLgotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVCYWNr
ZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNv
bG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSkgPSAwOwotCi0gICAgdm9pZCBjb21t
aXRGbHVzaENvbnRleHQoRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIpOwotCi1wcm90ZWN0ZWQ6
Ci0gICAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Jik7Ci0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0ID0gMDsKLSAgICBib29s
IGlzUGVuZGluZ0ZsdXNoKCkgY29uc3QgeyByZXR1cm4gbV9zZW50Rmx1c2hJZGVudGlmaWVyICE9
IG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXI7IH0KLQotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFn
ZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1
dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkgY29uc3Q7Ci0KLSAgICB2
b2lkIHdhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCk7Ci0gICAgdm9pZCB3YWl0
Rm9yRmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZCgpOwotCi0gICAgLy8gTWVzc2FnZXMgdG8g
YmUgc2VudC4gU2VlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbi4KLSAg
ICB2b2lkIGZsdXNoRGlzcGxheUxpc3QoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
Jik7Ci0gICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0QW5kV2FpdENvbW1pdChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3QmKTsKLQotcHJpdmF0ZToKLSAgICBXZWFrUHRyPFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eT4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7Ci0gICAg
V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIHsgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07Ci0K
LSAgICBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBtX3NlbnRGbHVzaElkZW50aWZpZXI7Ci0g
ICAgRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllcjsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9D
RVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCAyMGZiZjgxYzk4MjU1MmVmNzZi
YjZjZDE1ZGMzYTFlOWQzODgwZWMzLi4yNzlhNzkyYTAyZGMwZTcxN2QyOGIzNzhmYzFkZjEwYWE4
NTM0NzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMjcsNyArMjcsNiBAQAog
CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi0jaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlclByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEltYWdl
QnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJlY29yZGVyLmg+CkBAIC0zNyw1NCArMzYsNzEgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4KLWNsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBw
dWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwgcHVi
bGljIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eSB7CitjbGFzcyBSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5IDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZl
cjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRl
bGVnYXRlIHsKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlciA9IFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT47CiAgICAgdXNpbmcgQmFzZURp
c3BsYXlMaXN0SW1hZ2VCdWZmZXI6Om1fYmFja2VuZDsKICAgICB1c2luZyBCYXNlRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlcjo6bV9kcmF3aW5nQ29udGV4dDsKIAogcHVibGljOgotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYgc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkp
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PiBjcmVh
dGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KQogICAgIHsKICAgICAgICAgaWYgKEJhY2tlbmRUeXBlOjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShz
aXplLCByZXNvbHV0aW9uU2NhbGUpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eT4obmV3IFJlbW90ZUltYWdlQnVmZmVyUHJveHkoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVz
b2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKTsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Pihu
ZXcgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eShzaXplLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkpKTsKICAgICB9CiAKICAgICB+UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSgpCiAgICAgeworICAg
ICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CisgICAgICAgIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKS5yZWxlYXNlSW1h
Z2VCdWZmZXIobV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotcHJvdGVjdGVk
OgotICAgIFJlbW90ZUltYWdlQnVmZmVyUHJveHkoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBz
aXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICAgICAgOiBCYXNl
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlcihzaXplKQotICAgICAgICAsIFJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJQcm94eShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICB7Ci0gICAgfQor
ICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmll
cjsgfQogCi0gICAgdm9pZCBjcmVhdGVCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYg
bG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkgb3ZlcnJpZGUKKyAgICB2b2lkIGNyZWF0ZUJhY2tlbmQo
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JT
cGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKCFtX2JhY2tlbmQpOwogICAgICAgICBtX2JhY2tlbmQgPSBCYWNrZW5k
VHlwZTo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBj
b2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRsZSkpOwogICAgIH0KLSAgICAKLSAgICBib29sIGlzQmFj
a2VuZENyZWF0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7IH0K
KworICAgIHZvaWQgY29tbWl0Rmx1c2hEaXNwbGF5TGlzdChEaXNwbGF5TGlzdEZsdXNoSWRlbnRp
ZmllciBmbHVzaElkZW50aWZpZXIpCisgICAgeworICAgICAgICBtX3JlY2VpdmVkRmx1c2hJZGVu
dGlmaWVyID0gZmx1c2hJZGVudGlmaWVyOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIFJlbW90
ZUltYWdlQnVmZmVyUHJveHkoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAg
ICAgOiBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcihzaXplLCB0aGlzKQorICAgICAgICAsIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KG1ha2VXZWFrUHRyKHJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSkpCisgICAgeworICAgICAgICBBU1NFUlQobV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkpOworICAgIH0KKworICAgIGJvb2wgaXNQZW5kaW5nRmx1c2goKSBjb25zdCB7IHJl
dHVybiBtX3NlbnRGbHVzaElkZW50aWZpZXIgIT0gbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllcjsg
fQogCiAgICAgQmFja2VuZFR5cGUqIGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkgY29uc3Qgb3ZlcnJp
ZGUKICAgICB7Ci0gICAgICAgIGlmICghbV9iYWNrZW5kKQotICAgICAgICAgICAgY29uc3RfY2Fz
dDxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Jj4oKnRoaXMpLlJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eTo6d2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoKTsKKyAg
ICAgICAgaWYgKCFtX2JhY2tlbmQgJiYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisg
ICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+d2FpdEZvckltYWdlQnVm
ZmVyQmFja2VuZFdhc0NyZWF0ZWQoKTsKICAgICAgICAgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsK
ICAgICB9CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2Vi
Q29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0IG92ZXJyaWRlCiAgICAgeworICAgICAgICBpZiAoIW1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKICAgICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVm
ZmVyUHJveHkqPih0aGlzKS0+bV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwotICAgICAg
ICBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyUHJveHkqPih0aGlzKS0+UmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlclByb3h5OjpmbHVzaERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KTsK
LSAgICAgICAgYXV0byByZXN1bHQgPSBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyUHJveHkq
Pih0aGlzKS0+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5OjpnZXRJbWFnZURh
dGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0KTsKKyAgICAgICAgaWYgKGRpc3BsYXlMaXN0Lml0ZW1D
b3VudCgpKSB7CisgICAgICAgICAgICBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyUHJveHkm
PigqdGhpcykuZmx1c2hEaXNwbGF5TGlzdChkaXNwbGF5TGlzdCk7CisgICAgICAgICAgICBkaXNw
bGF5TGlzdC5jbGVhcigpOworICAgICAgICB9CisKICAgICAgICAgLy8gZ2V0SW1hZ2VEYXRhIGlz
IHN5bmNocm9ub3VzLCB3aGljaCBtZWFucyB3ZSd2ZSBhbHJlYWR5IHJlY2VpdmVkIHRoZSBDb21t
aXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCBtZXNzYWdlLgotICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmdldEltYWdl
RGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsK
ICAgICB9CiAKICAgICB2b2lkIHB1dEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbWFnZURhdGEmIGltYWdlRGF0YSwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IGRlc3RQb2ludCA9IHsgfSwgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9y
bWF0ID0gV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCkgb3Zl
cnJpZGUKQEAgLTEwNCwxNyArMTIwLDQ0IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZsdXNoRHJh
d2luZ0NvbnRleHQoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgYXV0byYgZGlzcGxheUxpc3Qg
PSBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAgIGlmIChkaXNwbGF5TGlz
dC5pdGVtQ291bnQoKSkKLSAgICAgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXJQcm94eTo6Zmx1c2hEaXNwbGF5TGlzdEFuZFdhaXRDb21taXQoZGlzcGxheUxpc3QpOworICAg
ICAgICBpZiAoIWRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpIHx8ICFtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBUcmFjZVNjb3BlIHRy
YWNpbmdTY29wZShGbHVzaFJlbW90ZUltYWdlQnVmZmVyU3RhcnQsIEZsdXNoUmVtb3RlSW1hZ2VC
dWZmZXJFbmQsIDEpOworICAgICAgICBtX3NlbnRGbHVzaElkZW50aWZpZXIgPSBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS0+Zmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChkaXNwbGF5TGlz
dCwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgICAgIC8vIFdhaXQgZm9yIG91
ciBEaXNwbGF5TGlzdCB0byBiZSBmbHVzaGVkIGJ1dCBkbyBub3QgaGFuZy4KKyAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhXYWl0aW5nRmx1c2ggPSAzOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIG51bVdhaXRpbmdGbHVzaCA9IDA7IG51bVdhaXRpbmdGbHVzaCA8IG1heFdhaXRp
bmdGbHVzaCAmJiBpc1BlbmRpbmdGbHVzaCgpOyArK251bVdhaXRpbmdGbHVzaCkKKyAgICAgICAg
ICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT53YWl0Rm9yRmx1c2hEaXNwbGF5TGlz
dFdhc0NvbW1pdHRlZCgpOworCisgICAgICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7CiAgICAgfQot
ICAgIAorCisgICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpIG92ZXJyaWRlCisgICAgeworICAgICAgICBp
ZiAoIWRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpIHx8ICFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBUcmFjZVNjb3BlIHRyYWNpbmdT
Y29wZShGbHVzaFJlbW90ZUltYWdlQnVmZmVyU3RhcnQsIEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJF
bmQpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Zmx1c2hEaXNwbGF5
TGlzdChkaXNwbGF5TGlzdCwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIH0KKwog
ICAgIHZvaWQgd2lsbEFwcGVuZEl0ZW0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0m
KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgY29uc3RleHByIHNpemVfdCBEaXNwbGF5TGlzdEJh
dGNoU2l6ZSA9IDUxMjsKICAgICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBtX2RyYXdpbmdDb250
ZXh0LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAgIGlmIChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSA+
PSBEaXNwbGF5TGlzdEJhdGNoU2l6ZSkKLSAgICAgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXJQcm94eTo6Zmx1c2hEaXNwbGF5TGlzdChkaXNwbGF5TGlzdCk7CisgICAgICAg
IGlmIChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSA8IERpc3BsYXlMaXN0QmF0Y2hTaXplIHx8ICFt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBmbHVzaERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KTsKKyAgICAgICAgZGlzcGxheUxpc3Qu
Y2xlYXIoKTsKICAgICB9CisgICAgCisgICAgRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgbV9z
ZW50Rmx1c2hJZGVudGlmaWVyOworICAgIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyIG1fcmVj
ZWl2ZWRGbHVzaElkZW50aWZpZXI7CisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHsgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CisgICAgV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk+IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKaW5k
ZXggYjE0NjFiNDgyMTQ4ZDJiNzViNDBmMDk4ZDk0MGNkZTEwYWI0ZmZjZS4uNWQ0ZTA4MjBlMDlh
NTE0ZjliZmU1MzhlYTI4YWZmMmU4OWU4MmM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiSW1hZ2VEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZXMuaCIK
QEAgLTg4LDM4ICs4OSw3NSBAQCBib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6d2Fp
dEZvckZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBTaG91bGRBY2NlbGVyYXRlIHNob3VsZEFjY2VsZXJhdGUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogeworICAgIFJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOworCiAgICAgaWYgKHNob3VsZEFjY2VsZXJhdGUgPT0g
U2hvdWxkQWNjZWxlcmF0ZTo6WWVzKSB7Ci0gICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0g
QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5n
TW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgKnRo
aXMpKSB7Ci0gICAgICAgICAgICBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuYWRkKGlt
YWdlQnVmZmVyLT5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VCdWZmZXIuZ2V0KCkp
OwotICAgICAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwotICAgICAgICB9CisgICAgICAgIHJl
bmRlcmluZ01vZGUgPSBSZW5kZXJpbmdNb2RlOjpSZW1vdGVBY2NlbGVyYXRlZDsKKyAgICAgICAg
aW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShz
aXplLCByZXNvbHV0aW9uU2NhbGUsICp0aGlzKTsKKyAgICB9CisKKyAgICBpZiAoIWltYWdlQnVm
ZmVyKSB7CisgICAgICAgIHJlbmRlcmluZ01vZGUgPSBSZW5kZXJpbmdNb2RlOjpSZW1vdGVVbmFj
Y2VsZXJhdGVkOworICAgICAgICBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5OjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCAqdGhpcyk7CiAgICAg
fQogCi0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eTo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlJlbW90ZVVuYWNjZWxlcmF0
ZWQsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgKnRoaXMpKSB7Ci0gICAgICAgIG1faW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5hZGQoaW1hZ2VCdWZmZXItPnJlbW90ZVJlc291cmNl
SWRlbnRpZmllcigpLCBpbWFnZUJ1ZmZlci5nZXQoKSk7CisgICAgaWYgKGltYWdlQnVmZmVyKSB7
CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUlt
YWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgaW1hZ2VCdWZmZXItPnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpKSwgbV9yZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcik7CisgICAgICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNh
Y2hlSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXItPnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpLCBp
bWFnZUJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKICAgICB9CiAK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorUmVm
UHRyPEltYWdlRGF0YT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJbWFnZURhdGEo
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1Jl
Y3QsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7
CisgICAgSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhUmVmZXJlbmNlOworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpHZXRJbWFnZURhdGEob3V0
cHV0Rm9ybWF0LCBzcmNSZWN0LCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6R2V0SW1hZ2VEYXRhOjpSZXBseShpbWFnZURhdGFSZWZl
cmVuY2UpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCAxX3MpOworICAgIHJldHVybiBp
bWFnZURhdGFSZWZlcmVuY2UuYnVmZmVyKCk7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjpmbHVzaERpc3BsYXlMaXN0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dCYgZGlzcGxheUxpc3QsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Rmx1c2hEaXNwbGF5TGlzdChkaXNwbGF5TGlzdCwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwg
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Cit9CisKK0Rpc3BsYXlMaXN0Rmx1c2hJZGVu
dGlmaWVyIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hEaXNwbGF5TGlzdEFuZENv
bW1pdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIERpc3Bs
YXlMaXN0Rmx1c2hJZGVudGlmaWVyIHNlbnRGbHVzaElkZW50aWZpZXIgPSBEaXNwbGF5TGlzdEZs
dXNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpGbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBzZW50
Rmx1c2hJZGVudGlmaWVyLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gc2VudEZsdXNoSWRlbnRpZmllcjsKK30KKwog
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAg
IC8vIENyZWF0ZUltYWdlQnVmZmVyIG1lc3NhZ2Ugc2hvdWxkIGhhdmUgYmVlbiByZWNlaXZlZCBi
ZWZvcmUgdGhpcyBvbmUuCi0gICAgYm9vbCBmb3VuZCA9IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlck1hcC5yZW1vdmUocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICBBU1NFUlRfVU5V
U0VEKGZvdW5kLCBmb3VuZCk7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6UmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1f
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6aW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBGbG9hdFNpemUm
IGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBo
YW5kbGUsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
CiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXJNYXAuZ2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpCi0gICAgICAgIGltYWdlQnVmZmVy
LT5jcmVhdGVCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxl
LCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRsZSkpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBt
X3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpOworICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBpZiAoaW1hZ2VCdWZmZXItPmlzQWNjZWxlcmF0ZWQoKSkKKyAgICAgICAgZG93bmNh
c3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpLmNyZWF0
ZUJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsIFdURk1vdmUoaGFuZGxlKSk7CisgICAgZWxzZQorICAgICAgICBkb3duY2FzdDxVbmFj
Y2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jcmVhdGVCYWNr
ZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNl
LCBXVEZNb3ZlKGhhbmRsZSkpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6Zmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZChEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmll
ciBmbHVzaElkZW50aWZpZXIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJNYXAuZ2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpCi0gICAgICAg
IGltYWdlQnVmZmVyLT5jb21taXRGbHVzaENvbnRleHQoZmx1c2hJZGVudGlmaWVyKTsKKyAgICBh
dXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVkSW1hZ2VC
dWZmZXIocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBpZiAoIWltYWdlQnVmZmVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoaW1hZ2VCdWZmZXItPmlzQWNjZWxlcmF0ZWQoKSkK
KyAgICAgICAgZG93bmNhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1h
Z2VCdWZmZXIpLmNvbW1pdEZsdXNoRGlzcGxheUxpc3QoZmx1c2hJZGVudGlmaWVyKTsKKyAgICBl
bHNlCisgICAgICAgIGRvd25jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
PigqaW1hZ2VCdWZmZXIpLmNvbW1pdEZsdXNoRGlzcGxheUxpc3QoZmx1c2hJZGVudGlmaWVyKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuaAppbmRleCA5ZDI5MDAyM2Q0OTcyMWVhZDZjYjk4Nzk5ZDI2ZjVhOGQwZWQ0ZGJlLi5i
OThiNzYzMTk2NDljOTM4MjI4MDNjZWExNzMyODIwMTRhZmIzMDRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTMxLDE2ICszMSwyMyBAQAogI2luY2x1ZGUgIklt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKLSNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
aCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgotI2luY2x1ZGUgPFdl
YkNvcmUvQ29sb3JTcGFjZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+Ci0j
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCituYW1l
c3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGlzcGxheUxpc3QgeworY2xhc3MgRGlzcGxheUxp
c3Q7CitjbGFzcyBJdGVtOworfQorY2xhc3MgRmxvYXRTaXplOworY2xhc3MgSW1hZ2VEYXRhOwor
ZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdDsKK2VudW0gY2xhc3MgUmVuZGVyaW5nTW9k
ZSA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIFNob3VsZEFjY2VsZXJhdGUgOiBib29sOworfQorCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5CkBA
IC01Miw3ICs1OSw3IEBAIHB1YmxpYzoKIAogICAgIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkoKTsKIAotICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjsg
fQorICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSYgcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
KCkgeyByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk7IH0KIAogICAgIC8vIElQQzo6
TWVzc2FnZVNlbmRlci4KICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0
aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC02MSw3ICs2OCwxMSBAQCBwdWJsaWM6CiAgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCisgICAgLy8gTWVzc2FnZXMgdG8g
YmUgc2VudC4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0
ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlNob3VsZEFj
Y2VsZXJhdGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSk7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhh
UHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBz
cmNSZWN0LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgZmx1
c2hEaXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBX
ZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIERpc3BsYXlMaXN0Rmx1c2hJ
ZGVudGlmaWVyIGZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsK
ICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpOwogCiAgICAgYm9vbCB3YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRl
ZCgpOwpAQCAtNzQsOCArODUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW1hZ2VCdWZmZXJCYWNr
ZW5kV2FzQ3JlYXRlZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJl
bW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0V2FzQ29t
bWl0dGVkKERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpOwogCi0gICAgdXNpbmcgSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcCA9
IEhhc2hNYXA8V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBSZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkqPjsKLSAgICBJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVy
TWFwIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcDsKKyAgICBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgeyAqdGhpcyB9OwogICAgIFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgeyBSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0NDQ0NGEwYTAzMTcwNGJjYWI2NDdj
MzE0NmVkNDJlNGQzZTg1YTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKQEAgLTAsMCAr
MSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2lu
Y2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6
OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5KHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKK3sKK30KKwordm9pZCBSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlSW1hZ2VCdWZmZXIoUmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGltYWdl
QnVmZmVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9pbWFnZUJ1ZmZlcnMuYWRkKHJlbW90
ZVJlc291cmNlSWRlbnRpZmllciwgaW1hZ2VCdWZmZXIpOworICAgIEFTU0VSVF9VTlVTRUQoYWRk
UmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK0ltYWdlQnVmZmVyKiBSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlZEltYWdlQnVmZmVyKFJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIG1faW1hZ2VCdWZm
ZXJzLmdldChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKFJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgYm9vbCBmb3VuZCA9IG1faW1hZ2VC
dWZmZXJzLnJlbW92ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIEFTU0VSVF9VTlVT
RUQoZm91bmQsIGZvdW5kKTsKKyAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5yZWxl
YXNlUmVtb3RlUmVzb3VyY2UocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTA4MTVjODUyNWFhYzJmYmIxN2M1
Mjc3YmVhN2UwNWE0NGI4MDFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaApAQCAtMCwwICsx
LDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSA8V2ViQ29y
ZS9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJbWFnZUJ1ZmZlcjsKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKKworY2xhc3Mg
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHsKK3B1YmxpYzoKKyAgICBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkoUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Jik7CisKKyAgICB2b2lkIGNhY2hl
SW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJ
bWFnZUJ1ZmZlciopOworICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBjYWNoZWRJbWFnZUJ1ZmZl
cihXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVsZWFzZUlt
YWdlQnVmZmVyKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKK3ByaXZhdGU6
CisgICAgdXNpbmcgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eUhhc2hNYXAgPSBIYXNoTWFwPFdlYkNv
cmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqPjsKKyAg
ICAKKyAgICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5SGFzaE1hcCBtX2ltYWdlQnVmZmVyczsKKyAg
ICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BV
X1BST0NFU1MpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411815</attachid>
            <date>2020-10-19 16:48:15 -0700</date>
            <delta_ts>2020-10-19 17:13:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217558-20201019164814.patch</filename>
            <type>text/plain</type>
            <size>55168</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQ1ZjY0NzE3NGIxYjU1
MTQ3ZDU0MTMyYzI5OWM1NWU0NTY1ZDU0Yi4uZGY3OTA3NTE1MmIwMDdiZGZjNTBmMDkzMTdiMWUy
NWEzYjE5Njc4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTEwLTE5ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXTogSW50cm9kdWNlIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB0byBtYW5hZ2UgdGhl
IHJlbW90ZSByZXNvdXJjZXMgaW4gV2ViIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBSZWNvcmRlcjo6T2JzZXJ2ZXIgdG8gUmVj
b3JkZXI6OkRlbGVnYXRlIGJlY2F1c2UgaXQgd2lsbCBiZSByZXNwb25zaWJsZQorICAgICAgICBm
b3IgY3JlYXRpbmcgRGlzcGxheUxpc3RJdGVtcyBpbiBmdXR1cmUgcGF0Y2hlcy4gU28gaXQgd2ls
bCBub3QgYmUganVzdAorICAgICAgICBhbiBvYnNlcnZlci4gQWxzbyBkbyBub3QgbWFrZSBEaXNw
bGF5TGlzdDo6SW1hZ2VCdWZmZXIgYSBzdXBlcmNsYXNzIG9mIGl0LgorICAgICAgICBSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LCB3aGljaCBpcyBhIHN1cGVyY2xhc3Mgb2YgRGlzcGxheUxpc3Q6Oklt
YWdlQnVmZmVyLAorICAgICAgICB3aWxsIGJlIHRoZSBzdXBlcmNsYXNzIG9mIFJlY29yZGVyOjpE
ZWxlZ2F0ZS4KKworICAgICAgICBNYWtlIEltYWdlQnVmZmVyQmFja2VuZDo6aXNBY2NlbGVyYXRl
ZCBhIHN0YXRpYyBtZW1iZXIgaW5zdGVhZCBvZiBhIHZpcnR1YWwKKyAgICAgICAgbWV0aG9kLiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgd291bGQgd2FudCB0byBrbm93IHdoZXRoZXIgdGhl
IGJhY2tlbmQKKyAgICAgICAgb2YgYW4gSW1hZ2VCdWZmZXIgaXNBY2NlbGVyYXRlZCBvciBub3Qg
d2l0aG91dCBoYXZpbmcgdG8gY3JlYXRlIGl0LgorICAgICAgICBJbWFnZUJ1ZmZlckJhY2tlbmQ6
OmlzQWNjZWxlcmF0ZWQgd2lsbCBiZSBzZXQgdG8gZmFsc2UgYW5kCisgICAgICAgIEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZDo6aXNBY2NlbGVyYXRlZCB3aWxsIGJlIHNldCB0byB0cnVlLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyQmFja2VuZDo6aXNBY2NlbGVyYXRlZCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6aXNB
Y2NlbGVyYXRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJh
d2luZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nQ29u
dGV4dDo6RHJhd2luZ0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OlJlY29yZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6d2lsbEFwcGVuZEl0ZW0pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjp+RGVsZWdhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpPYnNlcnZlcjo6fk9i
c2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6T2JzZXJ2ZXI6OndpbGxBcHBlbmRJdGVtKTogRGVsZXRlZC4KKwogMjAyMC0xMC0xNyAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJ
T04ocjI2ODU2MSk6IFN5bnRoZXRpYyBvYmxpcXVlIHRleHQgaXMgZHJhd24gdXBzaWRlLWRvd24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYmRlODgxMTFmZmU4ZjgwZDVhOWMwMzk1NTZkOWE0OGZiYWM0NDk4Ny4uODIw
ZmJmNmIxNmJkNzkwZjc5N2RkNTUwZjNhNmU1YmU2YTRjOWI2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1NCBAQAorMjAyMC0xMC0xOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBw
bGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc106IEludHJvZHVjZSBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkgdG8gbWFuYWdlIHRoZSByZW1vdGUgcmVzb3VyY2VzIGluIFdlYiBQcm9jZXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1NTgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUg
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5IGFuZCBtb3ZlIHNlbmRpbmcgdGhl
IG1lc3NhZ2VzCisgICAgICAgIHRvIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS4KKworICAg
ICAgICBUbyBhbGxvdyBjYXN0aW5nIEltYWdlQnVmZmVyIHRvIFJlbW90ZUltYWdlQnVmZmVyUHJv
eHksIGEgbmV3IG1ldGhvZCBuYW1lZAorICAgICAgICByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIo
KSBpcyBhZGRlZCB0byBJYW1nZUJ1ZmZlciBhbmQgaXQgaXMgb25seSBvdmVycmlkZGVuCisgICAg
ICAgIGJ5IFJlbW90ZUltYWdlQnVmZmVyUHJveHkuIFRoaXMgbWV0aG9kIGlzIHVzZWQgaW4gU1BF
Q0lBTElaRV9UWVBFX1RSQUlUUworICAgICAgICBtYWNyb3MgYWxvbmcgd2l0aCBJYW1nZUJ1ZmZl
cjo6aXNBY2NlbGVyYXRlZCgpLgorCisgICAgICAgIEludHJvZHVjZSBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkgd2hpY2ggd2lsbCBtYW5hZ2UgY2FjaGluZyBhbmQgcmVsZWFzaW5nCisgICAgICAg
IHRoZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LiBDYWNoaW5nIE5hdGl2ZUltYWdlIHdpbGwgYmUg
YWRkZWQgdG8gaXQgaW4KKyAgICAgICAgZnV0dXJlIHBhdGNoZXMuIE1vcmUgYWJvdXQgY29udHJv
bGxpbmcgdGhlIGxpZmUgY3ljbGVzIG9mIHJlbW90ZSByZXNvdXJjZXMgCisgICAgICAgIHdpbGwg
YmUgYWRkZWQgd2l0aCBzdXBwb3J0aW5nIGRyYXdpbmcgcmVtb3RlIHJlc291cmNlcyB0byByZW1v
dGUgY2xpZW50LgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChpc1R5cGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojp+UmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZUJh
Y2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojpjb21taXRG
bHVzaERpc3BsYXlMaXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eTo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdl
QnVmZmVyUHJveHk6OmlzUGVuZGluZ0ZsdXNoIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJbWFnZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNo
RGlzcGxheUxpc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6aW1hZ2VCdWZmZXJCYWNrZW5kV2Fz
Q3JlYXRlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Zmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZUlt
YWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Ojpj
YWNoZWRJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHku
aC4KKwogMjAyMC0xMC0xNiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gSW50cm9kdWNlIFJlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eSB0byBtYW5hZ2UgdGhlIHJlc291cmNlcyBpbiB0aGUgR1BVIFByb2Nlc3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZm
ZXIuaAppbmRleCBjNmMxOWUxMjg5ZjQ4YjAyMGVhNzhiY2UzOWQxMDZjM2RiOTNiMDdkLi44Njk3
Mzk1ZmE0YzhkMDg1MWM3Yjc3OTA0MDZlNjFjOTE4ZmNlYTUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCkBAIC01
MCwxMyArNTAsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclR5cGU+KG5ldyBJbWFnZUJ1ZmZl
clR5cGUoV1RGTW92ZShiYWNrZW5kKSwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRz
KS4uLikpOwogICAgIH0KLSAgICAKLSAgICBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3Jl
YXRlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGJhY2tlbmQtPmlzQWNjZWxlcmF0ZWQoKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKworICAgIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJhY2tlbmRUeXBlOjppc0FjY2VsZXJhdGVkOyB9CiAKIHBy
b3RlY3RlZDoKICAgICBDb25jcmV0ZUltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5k
VHlwZT4mJiBiYWNrZW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmgKaW5kZXggMGFlOWZjYmQwNTg4ZDRjNGUxZWY1YWYzY2M3ZjEyYjYxMmJmNzhk
YS4uOGI5NGY5MWQ5YmE5MTQ2MjQ0ZjAxYjcwM2NiMzQ3YThhOWQ3ZDE5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0yOCw2ICsyOCw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZC5oIgorI2lu
Y2x1ZGUgIlJlbW90ZVJlc291cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ01v
ZGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjAsNiArNjEsOSBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7
CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiB7IH07IH0KKyAgICAKICAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hDb250ZXh0KCkgPSAw
OwogCkBAIC0xMDQsOCArMTA4LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjb3B5VG9Q
bGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmLCBHQ0dMZW51bSwgUGxhdGZv
cm1HTE9iamVjdCwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9IDA7CiAgICAgCi0gICAgdmly
dHVhbCBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCA9IDA7Ci0KIHByb3RlY3RlZDoKICAgICBJ
bWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCBjMDEwYTBmMGNmY2Q4YzVl
N2FiNmM5NGM1YzNjMzZmNDgzODZkMDFmLi4xNzFlZDNlNjk0MTMwYTM0MDE0MWU2MWQ5MjEwMWUy
ODEwMWQ3MzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgY29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
JiwgR0NHTGVudW0sIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBib29sLCBib29sKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc09y
aWdpbkF0VXBwZXJMZWZ0Q29ybmVyID0gZmFsc2U7Ci0gICAgdmlydHVhbCBib29sIGlzQWNjZWxl
cmF0ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc0FjY2VsZXJhdGVkID0gZmFsc2U7CiAKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9S
VCBJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCBjODA2NWE5ZWMyNTE0
NjQ0Zjc0MDVmOWE1NDEzZjYyMjM1NjI3MTU0Li5kYmMzYjdlYjhiM2QxYWQ4OGQwYWIzZjBlZWY5
MGE3YzhkODVlMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKQEAg
LTE5MCwxMSArMTkwLDYgQEAgSU9TdXJmYWNlKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OnN1cmZhY2UoKQogICAgIHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7CiB9CiAKLWJvb2wgSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kOjppc0FjY2VsZXJhdGVkKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSEFWRShJ
T1NVUkZBQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IDI0MThmMWQ0
NWQ1M2Q0NTkzM2IzOTA0YTI4OGM2MTAxZjE0YmNjMzEuLjMyMzA5NGVhNzk1YzVkMjQ4M2M4ODQ0
MDMxMjRhOTA0MGNjNzQwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCkBA
IC02Miw5ICs2Miw5IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURh
dGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmKSBj
b25zdCBvdmVycmlkZTsKICAgICB2b2lkIHB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0
aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEmLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RG
b3JtYXQpIG92ZXJyaWRlOwogICAgIElPU3VyZmFjZSogc3VyZmFjZSgpOwotICAgIGJvb2wgaXNB
Y2NlbGVyYXRlZCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzT3JpZ2luQXRVcHBlckxlZnRDb3JuZXIgPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBpc0FjY2VsZXJhdGVkID0gdHJ1ZTsKIAogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBSZXRh
aW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb250ZXh0Q29sb3JTcGFjZShjb25zdCBHcmFwaGljc0Nv
bnRleHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0
LmNwcAppbmRleCAyM2NjMDdlOGFlNDQyYmRjZWEwZDM2NzRhNWE4NTUxYzY1Y2ZkYzg3Li5kNDYx
N2QzNTE2ZjRmM2U1MWQ3NWQ2NDQzNGE2YTM5NDU3YTAwMDFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5n
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCkBAIC0zMyw5ICszMyw5IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCi1EcmF3aW5nQ29u
dGV4dDo6RHJhd2luZ0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNLCBSZWNvcmRlcjo6T2JzZXJ2ZXIqIG9ic2VydmVy
KQorRHJhd2luZ0NvbnRleHQ6OkRyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNh
bFNpemUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwgUmVjb3JkZXI6OkRlbGVn
YXRlKiBkZWxlZ2F0ZSkKICAgICA6IG1fY29udGV4dChbJl0oR3JhcGhpY3NDb250ZXh0JiBkaXNw
bGF5TGlzdENvbnRleHQpIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjb3JkZXI+KGRp
c3BsYXlMaXN0Q29udGV4dCwgbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwg
RmxvYXRSZWN0KHsgfSwgbG9naWNhbFNpemUpLCBpbml0aWFsQ1RNLCBvYnNlcnZlcik7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQsIG1fZGlz
cGxheUxpc3QsIEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIEZsb2F0UmVjdCh7IH0sIGxvZ2ljYWxT
aXplKSwgaW5pdGlhbENUTSwgZGVsZWdhdGUpOwogICAgIH0pCiB7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RE
cmF3aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaAppbmRleCA3YjY3M2YzMmFkODE1YTUw
MDgxYjdlN2FiMTA4MTMxNzE3ZmRlNTQzLi4yMmVkMjU2ZTgwYWQyOTNhMDUyMDY5Yjc0MzA4OGEx
MzUxZjQ3Y2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250
ZXh0LmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIERy
YXdpbmdDb250ZXh0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBXRUJDT1JFX0VYUE9SVCBEcmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxT
aXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0gPSB7IH0sIFJlY29yZGVyOjpP
YnNlcnZlciogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmF3aW5nQ29udGV4dChj
b25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRp
YWxDVE0gPSB7IH0sIFJlY29yZGVyOjpEZWxlZ2F0ZSogPSBudWxscHRyKTsKIAogICAgIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RHJhd2luZ0Nv
bnRleHQmPigqdGhpcykubV9jb250ZXh0OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVjb3JkZXIm
IHJlY29yZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaApp
bmRleCA2ZmQ5MTJkZmI4ZmUxMWMwOThkZDYxMjZhOGM4NzhhYzZiYTdhZTAyLi4zMjU5OWUwNjJk
N2NmNTlkMWRjMmVhZDAxZTc2MGQ2NmUzZjdlYzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEltYWdlQnVmZmVyLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQmFja2VuZFR5
cGU+Ci1jbGFzcyBJbWFnZUJ1ZmZlciA6IHB1YmxpYyBDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tl
bmRUeXBlPiwgcHVibGljIFJlY29yZGVyOjpPYnNlcnZlciB7CitjbGFzcyBJbWFnZUJ1ZmZlciA6
IHB1YmxpYyBDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiB7CiAgICAgdXNpbmcgQmFz
ZUNvbmNyZXRlSW1hZ2VCdWZmZXIgPSBDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsK
IAogcHVibGljOgpAQCAtNDgsMTIgKzQ4LDEyIEBAIHB1YmxpYzoKIAogICAgIEltYWdlQnVmZmVy
KHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBkYXRhQmFja2VuZCwgY29uc3QgRmxvYXRT
aXplJiBzaXplKQogICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKFdURk1vdmUoZGF0
YUJhY2tlbmQpKQotICAgICAgICAsIG1fZHJhd2luZ0NvbnRleHQoc2l6ZSwgaW5pdGlhbERyYXdp
bmdDb250ZXh0Q1RNKHNpemUpLCB0aGlzKQorICAgICAgICAsIG1fZHJhd2luZ0NvbnRleHQoc2l6
ZSwgaW5pdGlhbERyYXdpbmdDb250ZXh0Q1RNKHNpemUpKQogICAgIHsKICAgICB9CiAKLSAgICBJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUpCi0gICAgICAgIDogbV9kcmF3aW5nQ29u
dGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSksIHRoaXMpCisgICAgSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZWNvcmRlcjo6RGVsZWdhdGUqIGRlbGVn
YXRlID0gbnVsbHB0cikKKyAgICAgICAgOiBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRpYWxE
cmF3aW5nQ29udGV4dENUTShzaXplKSwgZGVsZWdhdGUpCiAgICAgewogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDFjNTRhZTgyMjkzOTQyMGRk
NDBiN2I3MGJhN2UzOWRiYmE2NWZlOWIuLmI5MGJlMjc2YjY2MzlhNDI0OTMyOWNiZTJmNmI5MDQ3
OWMwNjIzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAg
LTM3LDEwICszNywxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlM
aXN0IHsKIAotUmVjb3JkZXI6OlJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgRGlz
cGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUs
IGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5p
dGlhbENUTSwgT2JzZXJ2ZXIqIG9ic2VydmVyKQorUmVjb3JkZXI6OlJlY29yZGVyKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwgRGVsZWdhdGUqIGRlbGVnYXRlKQogICAgIDog
R3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0LCBpbml0aWFsQ2xpcCwgQWZmaW5lVHJhbnNmb3Jt
KCkpCiAgICAgLCBtX2Rpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KQotICAgICwgbV9vYnNlcnZlcihv
YnNlcnZlcikKKyAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpCiB7CiAgICAgTE9HX1dJVEhfU1RS
RUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJcblJlY29yZGluZyB3aXRoIGNsaXAgIiA8PCBp
bml0aWFsQ2xpcCk7CiAgICAgbV9zdGF0ZVN0YWNrLmFwcGVuZCh7IHN0YXRlLCBpbml0aWFsQ1RN
LCBpbml0aWFsQ2xpcCB9KTsKQEAgLTU5LDggKzU5LDggQEAgdm9pZCBSZWNvcmRlcjo6cHV0SW1h
Z2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0
IFcKIAogdm9pZCBSZWNvcmRlcjo6d2lsbEFwcGVuZEl0ZW0oY29uc3QgSXRlbSYgaXRlbSkKIHsK
LSAgICBpZiAobV9vYnNlcnZlcikKLSAgICAgICAgbV9vYnNlcnZlci0+d2lsbEFwcGVuZEl0ZW0o
aXRlbSk7CisgICAgaWYgKG1fZGVsZWdhdGUpCisgICAgICAgIG1fZGVsZWdhdGUtPndpbGxBcHBl
bmRJdGVtKGl0ZW0pOwogCiAgICAgaWYgKGl0ZW0uaXNEcmF3aW5nSXRlbSgpCiAjaWYgVVNFKENH
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggOWVlMWQzOTM4ZjIz
MmYzZjE4ZDk3OGFmNzE4NzAxZDhiZTQ2MzA3Mi4uNmYzNjcwN2UwYjc2MWJmNjJjNTQyMzQxM2M5
NDEyNTAzMzhhNTQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBA
IC01Myw4ICs1Myw4IEBAIGNsYXNzIFJlY29yZGVyIDogcHVibGljIEdyYXBoaWNzQ29udGV4dElt
cGwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFJlY29yZGVyKTsKIHB1YmxpYzoKLSAgICBjbGFzcyBPYnNlcnZlcjsKLSAgICBXRUJDT1JF
X0VYUE9SVCBSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmLCBEaXNwbGF5TGlzdCYsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiwgT2JzZXJ2ZXIqID0gbnVsbHB0cik7CisgICAgY2xhc3MgRGVsZWdh
dGU7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiwgRGlzcGxh
eUxpc3QmLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYgaW5p
dGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIERlbGVnYXRlKiA9IG51bGxwdHIpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflJlY29yZGVyKCk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0
LCBjb25zdCBJbWFnZURhdGEmLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2lu
dCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpOwpAQCAtNjMs
OSArNjMsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRlbnQo
UmVmPERyYXdpbmdJdGVtPiYmKTsKIAotICAgIGNsYXNzIE9ic2VydmVyIHsKKyAgICBjbGFzcyBE
ZWxlZ2F0ZSB7CiAgICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5PYnNlcnZlcigpIHsgfQor
ICAgICAgICB2aXJ0dWFsIH5EZWxlZ2F0ZSgpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgd2ls
bEFwcGVuZEl0ZW0oY29uc3QgSXRlbSYpIHsgfTsKICAgICB9OwogCkBAIC0xODgsNyArMTg4LDcg
QEAgcHJpdmF0ZToKICAgICBDb250ZXh0U3RhdGUmIGN1cnJlbnRTdGF0ZSgpOwogCiAgICAgRGlz
cGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7Ci0gICAgT2JzZXJ2ZXIqIG1fb2JzZXJ2ZXI7CisgICAg
RGVsZWdhdGUqIG1fZGVsZWdhdGU7CiAKICAgICBWZWN0b3I8Q29udGV4dFN0YXRlLCAzMj4gbV9z
dGF0ZVN0YWNrOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDc5NmRiNjk5NmVlZGZlNWI3ZTkyODAwMTM3
MjA1NGNmNjljMzgwNDYuLjdhM2IyMzAwYjdjMzY4OTBmZmMyNTNiYmEwNTU0YWYyMDM2MmY1ZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dApAQCAtNTU3LDggKzU1Nyw4IEBAIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0v
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAogCiBXZWJQcm9jZXNzL0dQVS9H
UFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKLVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAKIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKK1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlh
L0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNmJkOWFjNDVmMzFhYzQzYzJmYzA5NjRhZjVmZGRlNGE3OGU2
ODQ4Ny4uNzQ4NjkwMzQ4OGNhNjNhMTU0YTFlOWMwMTZlNThmY2M4ZThiZWE4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MjI0LDgg
KzQyMjQsNiBAQAogCQk3MUE2NzZBNTIyQzYyMzE4MDA3RDYyOTUgLyogV0tUb3VjaEFjdGlvbkdl
c3R1cmVSZWNvZ25pemVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tOyBwYXRoID0gaW9zL1dLVG91Y2hB
Y3Rpb25HZXN0dXJlUmVjb2duaXplci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzFGQjgxMEEyMjYwNjI3QTAwMzIzNjc3IC8qIFdlYnNpdGVTaW11bGF0ZWRNb3VzZUV2ZW50c0Rp
c3BhdGNoUG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVT
aW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcyMjc4MDBCMjQwOEJEN0QwMDdEMzc2QiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdl
QnVmZmVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcyMjc4MDBDMjQwOTdBMDIwMDdE
Mzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzIyNzgwMEQyNDA5N0EwMjAwN0QzNzZCIC8qIFJl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzI2RDU2REQyNTNBNjQ4MTAwMDJFRjkwIC8qIFJlbW90ZVJlc291cmNlQ2FjaGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNkQ1NkRFMjUzQTY0ODEwMDAyRUY5MCAvKiBSZW1vdGVS
ZXNvdXJjZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlc291cmNlQ2FjaGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QTdGMzQyNDA3ODU3RDAwNEQyOTMxIC8qIElt
YWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDIzNyw2ICs0MjM1LDggQEAKIAkJ
NzI3QTdGNDkyNDA4QUVFNjAwNEQyOTMxIC8qIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MjhFODZFRjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29sb3JQaWNrZXJNYWMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2RjAxNzk1MTg4QzAwODc4NzlFIC8q
IFdlYkNvbG9yUGlja2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViQ29sb3JQaWNrZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTcyQjUzMTU3MjUzQzFFNEQwMDQ5Mjk1QSAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJCNTMxNTgyNTNDMUU0RDAwNDkyOTVBIC8qIFJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVBOEQyQzQxODdDQ0Y5RjAw
QzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS1dlYnNpdGVEYXRhU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzVBOEQyQzUxODdDQ0Y5RjAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVBOEQyRDQxODdEMUMwMTAwQzM5QzlF
IC8qIFdLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC04MTM4LDEyICs4MTM4LDEyIEBACiAJCQkJNzI3QTdGMzYyNDA3ODhGMDAw
NEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oICovLAogCQkJCTcy
N0E3RjM4MjQwNzg4RjAwMDREMjkzMSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyU2hhcmVhYmxlQmFj
a2VuZC5oICovLAogCQkJCTcyMjc4MDBCMjQwOEJEN0QwMDdEMzc2QiAvKiBQbGF0Zm9ybVJlbW90
ZUltYWdlQnVmZmVyUHJveHkuaCAqLywKLQkJCQk3MjI3ODAwQzI0MDk3QTAyMDA3RDM3NkIgLyog
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcCAqLywKLQkJCQk3MjI3ODAw
RDI0MDk3QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5
LmggKi8sCiAJCQkJNzI3QTdGNDkyNDA4QUVFNjAwNEQyOTMxIC8qIFJlbW90ZUltYWdlQnVmZmVy
UHJveHkuaCAqLywKIAkJCQk1NTA2NDA5RDI0MDcxNjA5MDBBQUUwNDUgLyogUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmNwcCAqLywKIAkJCQk1NTA2NDA5RTI0MDcxNjA5MDBBQUUwNDUgLyog
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggKi8sCiAJCQkJNTUwNjQwQTAyNDA3MTlFMTAw
QUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJ
CQk3MkI1MzE1NzI1M0MxRTREMDA0OTI5NUEgLyogUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNw
cCAqLywKKwkJCQk3MkI1MzE1ODI1M0MxRTREMDA0OTI5NUEgLyogUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5LmggKi8sCiAJCQkJNTUwNjQwOUYyNDA3MTk2QTAwQUFFMDQ1IC8qIFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGdyYXBoaWNzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90
ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggOWFmZjA4OGUzN2NhNzZh
N2Y4NjRhZTdlNDJiYmI3MDA0ZjFmMTUyMy4uOGU2NGYwNWE4YTZlOGY1ZWM1ODkxNGQ0NzA2NGIx
ZDBhNTk2ZDBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
CkBAIC0zNyw0ICszNywxMiBAQCB1c2luZyBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJv
eHkgPSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PEFjY2VsZXJhdGVkSW1hZwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJLaXQ6OlVuYWNj
ZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShj
b25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpIHsgcmV0dXJuIGltYWdlQnVm
ZmVyLnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpICYmICFpbWFnZUJ1ZmZlci5pc0FjY2VsZXJh
dGVkKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJLaXQ6OkFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSkK
KyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdl
QnVmZmVyKSB7IHJldHVybiBpbWFnZUJ1ZmZlci5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSAm
JiBpbWFnZUJ1ZmZlci5pc0FjY2VsZXJhdGVkKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RU5EKCkKKwogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZTk1NjJhMzY4ZTY5ZTQyMzBlNzI2MmMyNjM2ZGYyODZkNzQ2ZWFjNS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXJQcm94eS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyUHJveHkuaCIKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIklt
YWdlRGF0YVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNz
YWdlcy5oIgotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIgotI2luY2x1
ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgotI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFj
aW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0K
LVJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6UmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlclByb3h5KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkpCi0gICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShtYWtlV2Vha1B0cihyZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKQotewotICAgIC8vIENyZWF0ZSB0aGUgUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS4KLSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c2VuZChN
ZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwg
cmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBtX3JlbW90ZVJlc291
cmNlSWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcigpKTsKLX0KLQotUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
clByb3h5Ojp+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KCkKLXsKLSAgICAv
LyBSZWxlYXNlIHRoZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LgotICAgIGlmICghbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS0+c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
UmVsZWFzZVJlbW90ZVJlc291cmNlKG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOwot
fQotCi1SZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJv
eHk6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29u
c3QgSW50UmVjdCYgc3JjUmVjdCkgY29uc3QKLXsKLSAgICBJUEM6OkltYWdlRGF0YVJlZmVyZW5j
ZSBpbWFnZURhdGFSZWZlcmVuY2U7Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpHZXRJbWFnZURhdGEo
b3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllciksIE1lc3Nh
Z2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpHZXRJbWFnZURhdGE6OlJlcGx5KGltYWdlRGF0
YVJlZmVyZW5jZSksIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcigpLCAxX3MpOwotICAgIHJldHVybiBpbWFnZURhdGFSZWZlcmVuY2UuYnVm
ZmVyKCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Ojp3
YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgpCi17Ci0gICAgaWYgKG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5ICYmICFpc0JhY2tlbmRDcmVhdGVkKCkpCi0gICAgICAgIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT53YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2Fz
Q3JlYXRlZCgpOwotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94
eTo6d2FpdEZvckZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoKQotewotICAgIGlmIChtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSAmJiBpc1BlbmRpbmdGbHVzaCgpKQotICAgICAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+d2FpdEZvckZsdXNoRGlzcGxheUxpc3RXYXND
b21taXR0ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJv
eHk6OmZsdXNoRGlzcGxheUxpc3QoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBk
aXNwbGF5TGlzdCkKLXsKLSAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQot
ICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hS
ZW1vdGVJbWFnZUJ1ZmZlclN0YXJ0LCBGbHVzaFJlbW90ZUltYWdlQnVmZmVyRW5kKTsKLSAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Rmx1c2hEaXNwbGF5TGlzdChkaXNwbGF5TGlzdCwgbV9yZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIoKSk7Ci0gICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKLX0KLQotdm9pZCBS
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OmZsdXNoRGlzcGxheUxpc3RBbmRX
YWl0Q29tbWl0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3Qp
Ci17Ci0gICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1vdGVJbWFnZUJ1ZmZl
clN0YXJ0LCBGbHVzaFJlbW90ZUltYWdlQnVmZmVyRW5kLCAxKTsKLSAgICBtX3NlbnRGbHVzaElk
ZW50aWZpZXIgPSBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKLSAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Rmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChkaXNwbGF5TGlzdCwgbV9zZW50
Rmx1c2hJZGVudGlmaWVyLCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LT5yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsKLSAgICBk
aXNwbGF5TGlzdC5jbGVhcigpOwotICAgIHdhaXRGb3JGbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0
dGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Ojpj
b21taXRGbHVzaENvbnRleHQoRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlm
aWVyKQotewotICAgIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXIgPSBmbHVzaElkZW50aWZpZXI7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9D
RVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5YTAyNmE4MTI5ODc5NmU3YmQzNWZh
OTZlZWU5MDRkZTRiZmI1ZmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KLSNpbmNsdWRlICJEaXNwbGF5TGlz
dEZsdXNoSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRGlz
cGxheUxpc3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW5k
ZXJpbmdNb2RlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEltYWdlRGF0YTsKLWVu
dW0gY2xhc3MgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA6IHVpbnQ4X3Q7Ci19Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1jbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7Ci0KLWNsYXNz
IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eSB7Ci1wdWJsaWM6Ci0gICAgdmly
dHVhbCB+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KCk7Ci0KLSAgICBXZWJD
b3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7IH0KLQotICAgIC8vIE1l
c3NhZ2VzIHRvIGJlIHJlY2VpdmVkLiBTZWUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdl
cy5pbi4KLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUpID0gMDsKLQotICAgIHZvaWQgY29tbWl0Rmx1c2hDb250ZXh0KERpc3BsYXlM
aXN0Rmx1c2hJZGVudGlmaWVyKTsKLQotcHJvdGVjdGVkOgotICAgIFJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJQcm94eShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpS
ZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2Us
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYpOwotCi0gICAgdmlydHVhbCBib29sIGlzQmFj
a2VuZENyZWF0ZWQoKSBjb25zdCA9IDA7Ci0gICAgYm9vbCBpc1BlbmRpbmdGbHVzaCgpIGNvbnN0
IHsgcmV0dXJuIG1fc2VudEZsdXNoSWRlbnRpZmllciAhPSBtX3JlY2VpdmVkRmx1c2hJZGVudGlm
aWVyOyB9Ci0KLSAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2Vi
Q29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0OwotCi0gICAgdm9pZCB3YWl0Rm9ySW1hZ2VCdWZmZXJC
YWNrZW5kV2FzQ3JlYXRlZCgpOwotICAgIHZvaWQgd2FpdEZvckZsdXNoRGlzcGxheUxpc3RXYXND
b21taXR0ZWQoKTsKLQotICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuIFNlZSBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4uCi0gICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYpOwotICAgIHZvaWQgZmx1c2hEaXNw
bGF5TGlzdEFuZFdhaXRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jik7
Ci0KLXByaXZhdGU6Ci0gICAgV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+IG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwotICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNl
SWRlbnRpZmllciBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllciB7IFdlYkNvcmU6OlJlbW90ZVJl
c291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OwotCi0gICAgRGlzcGxheUxpc3RGbHVzaElk
ZW50aWZpZXIgbV9zZW50Rmx1c2hJZGVudGlmaWVyOwotICAgIERpc3BsYXlMaXN0Rmx1c2hJZGVu
dGlmaWVyIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LmgKaW5kZXggMjBmYmY4MWM5ODI1NTJlZjc2YmI2Y2QxNWRjM2ExZTlkMzg4MGVjMy4u
Mjc5YTc5MmEwMmRjMGU3MTdkMjhiMzc4ZmMxZGYxMGFhODUzNDc4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKIAotI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RS
ZWNvcmRlci5oPgpAQCAtMzcsNTQgKzM2LDcxIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQmFja2VuZFR5cGU+
Ci1jbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyUHJveHkgeworY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA6IHB1Ymxp
YyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZSB7CiAgICAgdXNpbmcgQmFz
ZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZm
ZXI8QmFja2VuZFR5cGU+OwogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjpt
X2JhY2tlbmQ7CiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6Om1fZHJhd2lu
Z0NvbnRleHQ7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUlt
YWdlQnVmZmVyUHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdl
YkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAgICB7CiAgICAgICAgIGlmIChC
YWNrZW5kVHlwZTo6Y2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKS5p
c0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KG5ldyBSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5KHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSk7CisgICAgICAgIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4obmV3IFJlbW90ZUltYWdlQnVmZmVyUHJv
eHkoc2l6ZSwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSk7CiAgICAgfQogCiAgICAgflJl
bW90ZUltYWdlQnVmZmVyUHJveHkoKQogICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZmx1c2hEcmF3
aW5nQ29udGV4dCgpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5KCkucmVsZWFzZUltYWdlQnVmZmVyKG1fcmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKICAgICB9CiAKLXByb3RlY3RlZDoKLSAgICBSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9y
U3BhY2UgY29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkpCi0gICAgICAgIDogQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIo
c2l6ZSkKLSAgICAgICAgLCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkoc2l6
ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCByZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkpCi0gICAgewotICAgIH0KKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7IH0KIAotICAgIHZvaWQgY3JlYXRl
QmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3Jl
OjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUp
IG92ZXJyaWRlCisgICAgdm9pZCBjcmVhdGVCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9iYWNr
ZW5kKTsKICAgICAgICAgbV9iYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShsb2dpY2FsU2l6
ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZShoYW5k
bGUpKTsKICAgICB9Ci0gICAgCi0gICAgYm9vbCBpc0JhY2tlbmRDcmVhdGVkKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9iYWNrZW5kLmdldCgpOyB9CisKKyAgICB2b2lkIGNvbW1pdEZsdXNo
RGlzcGxheUxpc3QoRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyKQor
ICAgIHsKKyAgICAgICAgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllciA9IGZsdXNoSWRlbnRpZmll
cjsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBy
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgIDogQmFzZURpc3BsYXlMaXN0SW1h
Z2VCdWZmZXIoc2l6ZSwgdGhpcykKKyAgICAgICAgLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eShtYWtlV2Vha1B0cihyZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KTsKKyAgICB9CisKKyAg
ICBib29sIGlzUGVuZGluZ0ZsdXNoKCkgY29uc3QgeyByZXR1cm4gbV9zZW50Rmx1c2hJZGVudGlm
aWVyICE9IG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXI7IH0KIAogICAgIEJhY2tlbmRUeXBlKiBl
bnN1cmVCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAo
IW1fYmFja2VuZCkKLSAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eSY+KCp0aGlzKS5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OndhaXRGb3JJ
bWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCk7CisgICAgICAgIGlmICghbV9iYWNrZW5kICYm
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgICAgICAgICAgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHktPndhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCk7
CiAgICAgICAgIHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7CiAgICAgfQogCiAgICAgUmVmUHRyPFdl
YkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGlj
YXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0KSBjb25z
dCBvdmVycmlkZQogICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgICAgIGF1dG8mIGRpc3Bs
YXlMaXN0ID0gY29uc3RfY2FzdDxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Kj4odGhpcyktPm1fZHJh
d2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKTsKLSAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5Kj4odGhpcyktPlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94
eTo6Zmx1c2hEaXNwbGF5TGlzdChkaXNwbGF5TGlzdCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0g
Y29uc3RfY2FzdDxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Kj4odGhpcyktPlJlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVj
dCk7CisgICAgICAgIGlmIChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSkgeworICAgICAgICAgICAg
Y29uc3RfY2FzdDxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Jj4oKnRoaXMpLmZsdXNoRGlzcGxheUxp
c3QoZGlzcGxheUxpc3QpOworICAgICAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKKyAgICAg
ICAgfQorCiAgICAgICAgIC8vIGdldEltYWdlRGF0YSBpcyBzeW5jaHJvbm91cywgd2hpY2ggbWVh
bnMgd2UndmUgYWxyZWFkeSByZWNlaXZlZCB0aGUgQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRl
eHQgbWVzc2FnZS4KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5nZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNS
ZWN0LCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCiAgICAgdm9pZCBwdXRJ
bWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29u
c3QgV2ViQ29yZTo6SW1hZ2VEYXRhJiBpbWFnZURhdGEsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZXN0UG9pbnQgPSB7IH0sIFdlYkNv
cmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCA9IFdlYkNvcmU6OkFscGhhUHJl
bXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpIG92ZXJyaWRlCkBAIC0xMDQsMTcgKzEyMCw0
NCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkgb3ZlcnJpZGUK
ICAgICB7CiAgICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0gbV9kcmF3aW5nQ29udGV4dC5kaXNw
bGF5TGlzdCgpOwotICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXRlbUNvdW50KCkpCi0gICAgICAg
ICAgICBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OmZsdXNoRGlzcGxheUxp
c3RBbmRXYWl0Q29tbWl0KGRpc3BsYXlMaXN0KTsKKyAgICAgICAgaWYgKCFkaXNwbGF5TGlzdC5p
dGVtQ291bnQoKSB8fCAhbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1vdGVJ
bWFnZUJ1ZmZlclN0YXJ0LCBGbHVzaFJlbW90ZUltYWdlQnVmZmVyRW5kLCAxKTsKKyAgICAgICAg
bV9zZW50Rmx1c2hJZGVudGlmaWVyID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmZs
dXNoRGlzcGxheUxpc3RBbmRDb21taXQoZGlzcGxheUxpc3QsIG1fcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKworICAgICAgICAvLyBXYWl0IGZvciBvdXIgRGlzcGxheUxpc3QgdG8gYmUgZmx1
c2hlZCBidXQgZG8gbm90IGhhbmcuCisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
bWF4V2FpdGluZ0ZsdXNoID0gMzsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBudW1XYWl0aW5nRmx1
c2ggPSAwOyBudW1XYWl0aW5nRmx1c2ggPCBtYXhXYWl0aW5nRmx1c2ggJiYgaXNQZW5kaW5nRmx1
c2goKTsgKytudW1XYWl0aW5nRmx1c2gpCisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS0+d2FpdEZvckZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoKTsKKworICAg
ICAgICBkaXNwbGF5TGlzdC5jbGVhcigpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgZmx1c2hE
aXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3Bs
YXlMaXN0KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFkaXNwbGF5TGlzdC5pdGVtQ291
bnQoKSB8fCAhbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1vdGVJbWFnZUJ1
ZmZlclN0YXJ0LCBGbHVzaFJlbW90ZUltYWdlQnVmZmVyRW5kKTsKKyAgICAgICAgbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHktPmZsdXNoRGlzcGxheUxpc3QoZGlzcGxheUxpc3QsIG1fcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB9CisKICAgICB2b2lkIHdpbGxBcHBlbmRJdGVt
KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtJikgb3ZlcnJpZGUKICAgICB7CiAgICAg
ICAgIGNvbnN0ZXhwciBzaXplX3QgRGlzcGxheUxpc3RCYXRjaFNpemUgPSA1MTI7CiAgICAgICAg
IGF1dG8mIGRpc3BsYXlMaXN0ID0gbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwotICAg
ICAgICBpZiAoZGlzcGxheUxpc3QuaXRlbUNvdW50KCkgPj0gRGlzcGxheUxpc3RCYXRjaFNpemUp
Ci0gICAgICAgICAgICBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OmZsdXNo
RGlzcGxheUxpc3QoZGlzcGxheUxpc3QpOworICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXRlbUNv
dW50KCkgPCBEaXNwbGF5TGlzdEJhdGNoU2l6ZSB8fCAhbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZmx1c2hEaXNwbGF5TGlzdChk
aXNwbGF5TGlzdCk7CisgICAgICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7CiAgICAgfQorICAgIAor
ICAgIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyIG1fc2VudEZsdXNoSWRlbnRpZmllcjsKKyAg
ICBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyOwor
ICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciBtX3JlbW90ZVJlc291cmNlSWRl
bnRpZmllciB7IFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9
OworICAgIFdlYWtQdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5PiBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IGIxNDYxYjQ4MjE0OGQyYjc1YjQw
ZjA5OGQ5NDBjZGUxMGFiNGZmY2UuLjVkNGUwODIwZTA5YTUxNGY5YmZlNTM4ZWEyOGFmZjJlODll
ODJjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTMw
LDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNp
bmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkltYWdlRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgogI2lu
Y2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCkBAIC04OCwzOCArODksNzUgQEAgYm9v
bCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OndhaXRGb3JGbHVzaERpc3BsYXlMaXN0V2Fz
Q29tbWl0dGVkKCkKIAogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwg
U2hvdWxkQWNjZWxlcmF0ZSBzaG91bGRBY2NlbGVyYXRlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKKyAgICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZl
cjsKKwogICAgIGlmIChzaG91bGRBY2NlbGVyYXRlID09IFNob3VsZEFjY2VsZXJhdGU6Olllcykg
ewotICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eTo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlJlbW90ZUFjY2VsZXJhdGVk
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsICp0aGlzKSkgewotICAgICAgICAgICAgbV9p
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmFkZChpbWFnZUJ1ZmZlci0+cmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKCksIGltYWdlQnVmZmVyLmdldCgpKTsKLSAgICAgICAgICAgIHJldHVybiBp
bWFnZUJ1ZmZlcjsKLSAgICAgICAgfQorICAgICAgICByZW5kZXJpbmdNb2RlID0gUmVuZGVyaW5n
TW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQ7CisgICAgICAgIGltYWdlQnVmZmVyID0gQWNjZWxlcmF0
ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCAq
dGhpcyk7CisgICAgfQorCisgICAgaWYgKCFpbWFnZUJ1ZmZlcikgeworICAgICAgICByZW5kZXJp
bmdNb2RlID0gUmVuZGVyaW5nTW9kZTo6UmVtb3RlVW5hY2NlbGVyYXRlZDsKKyAgICAgICAgaW1h
Z2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKHNp
emUsIHJlc29sdXRpb25TY2FsZSwgKnRoaXMpOwogICAgIH0KIAotICAgIGlmIChhdXRvIGltYWdl
QnVmZmVyID0gVW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShzaXpl
LCBSZW5kZXJpbmdNb2RlOjpSZW1vdGVVbmFjY2VsZXJhdGVkLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsICp0aGlzKSkgewotICAgICAgICBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJN
YXAuYWRkKGltYWdlQnVmZmVyLT5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VCdWZm
ZXIuZ2V0KCkpOworICAgIGlmIChpbWFnZUJ1ZmZlcikgeworICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJp
bmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIGltYWdlQnVmZmVyLT5yZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIoKSksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAg
ICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZUltYWdlQnVmZmVyKGltYWdlQnVm
ZmVyLT5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VCdWZmZXIuZ2V0KCkpOwogICAg
ICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiAgICAgfQogCisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK1JlZlB0cjxJbWFnZURhdGE+IFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24g
b3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIElQQzo6SW1hZ2VEYXRhUmVm
ZXJlbmNlIGltYWdlRGF0YVJlZmVyZW5jZTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6R2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OkdldEltYWdlRGF0YTo6UmVwbHkoaW1hZ2VEYXRhUmVmZXJlbmNlKSwgbV9yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciwgMV9zKTsKKyAgICByZXR1cm4gaW1hZ2VEYXRhUmVmZXJlbmNlLmJ1ZmZl
cigpOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hEaXNwbGF5
TGlzdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkZsdXNoRGlzcGxheUxpc3QoZGlzcGxh
eUxpc3QsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIpOworfQorCitEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgRGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90
ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBz
ZW50Rmx1c2hJZGVudGlmaWVyID0gRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXI6OmdlbmVyYXRl
KCk7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Rmx1c2hEaXNw
bGF5TGlzdEFuZENvbW1pdChkaXNwbGF5TGlzdCwgc2VudEZsdXNoSWRlbnRpZmllciwgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAg
cmV0dXJuIHNlbnRGbHVzaElkZW50aWZpZXI7Cit9CisKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICAvLyBDcmVhdGVJbWFnZUJ1ZmZlciBt
ZXNzYWdlIHNob3VsZCBoYXZlIGJlZW4gcmVjZWl2ZWQgYmVmb3JlIHRoaXMgb25lLgotICAgIGJv
b2wgZm91bmQgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAucmVtb3ZlKHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcik7Ci0gICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbGVhc2VSZW1vdGVSZXNv
dXJjZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmltYWdlQnVmZmVy
QmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50
U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvIGltYWdl
QnVmZmVyID0gbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmdldChyZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpKQotICAgICAgICBpbWFnZUJ1ZmZlci0+Y3JlYXRlQmFja2VuZChsb2dpY2Fs
U2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZSho
YW5kbGUpKTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkuY2FjaGVkSW1hZ2VCdWZmZXIocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBpZiAo
IWltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKGltYWdlQnVmZmVy
LT5pc0FjY2VsZXJhdGVkKCkpCisgICAgICAgIGRvd25jYXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jcmVhdGVCYWNrZW5kKGxvZ2ljYWxTaXplLCBi
YWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRsZSkp
OworICAgIGVsc2UKKyAgICAgICAgZG93bmNhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVm
ZmVyUHJveHk+KCppbWFnZUJ1ZmZlcikuY3JlYXRlQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2Vu
ZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZShoYW5kbGUpKTsKIH0K
IAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoRGlzcGxheUxpc3RXYXND
b21taXR0ZWQoRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGlm
IChhdXRvIGltYWdlQnVmZmVyID0gbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmdldChy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKQotICAgICAgICBpbWFnZUJ1ZmZlci0+Y29tbWl0Rmx1
c2hDb250ZXh0KGZsdXNoSWRlbnRpZmllcik7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmNhY2hlZEltYWdlQnVmZmVyKHJlbW90ZVJlc291cmNlSWRl
bnRpZmllcik7CisgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKGltYWdlQnVmZmVyLT5pc0FjY2VsZXJhdGVkKCkpCisgICAgICAgIGRvd25jYXN0PEFjY2Vs
ZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jb21taXRGbHVzaERp
c3BsYXlMaXN0KGZsdXNoSWRlbnRpZmllcik7CisgICAgZWxzZQorICAgICAgICBkb3duY2FzdDxV
bmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jb21taXRG
bHVzaERpc3BsYXlMaXN0KGZsdXNoSWRlbnRpZmllcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKaW5kZXggOWQyOTAwMjNk
NDk3MjFlYWQ2Y2I5ODc5OWQyNmY1YThkMGVkNGRiZS4uM2ZlNTFjNWRhOTVlMzc1MDNkN2RiZGI0
NWViODY5N2NkNDI2M2Y3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5o
CkBAIC0zMSwxNiArMzEsMjQgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUu
aCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVy
LmgiCi0jaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgiCisj
aW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFNp
emUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nTW9kZS5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNw
YWNlIERpc3BsYXlMaXN0IHsKK2NsYXNzIERpc3BsYXlMaXN0OworY2xhc3MgSXRlbTsKK30KK2Ns
YXNzIEZsb2F0U2l6ZTsKK2NsYXNzIEltYWdlRGF0YTsKK2VudW0gY2xhc3MgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90Owor
ZW51bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDogdWludDhfdDsKK2VudW0gY2xhc3MgU2hvdWxkQWNj
ZWxlcmF0ZSA6IGJvb2w7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkKQEAgLTUyLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgflJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpOwogCi0gICAgUmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyOyB9CisgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5JiBy
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKSB7IHJldHVybiBtX3JlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eTsgfQogCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyLgogICAgIElQQzo6Q29ubmVjdGlv
biogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKQEAgLTYxLDcgKzY5
LDExIEBAIHB1YmxpYzoKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7
CiAKKyAgICAvLyBNZXNzYWdlcyB0byBiZSBzZW50LgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiwgV2ViQ29yZTo6U2hvdWxkQWNjZWxlcmF0ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpDb2xvclNwYWNlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJ
bWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllcik7CisgICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7
CisgICAgRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgZmx1c2hEaXNwbGF5TGlzdEFuZENvbW1p
dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdl
YkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAKICAgICBib29sIHdhaXRGb3JJbWFn
ZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCk7CkBAIC03NCw4ICs4Niw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBpbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lk
IGZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIs
IFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAKLSAgICB1c2luZyBJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIsIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eSo+OwotICAgIElt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFw
OworICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94
eSB7ICp0aGlzIH07CiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciB7IFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
IH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGVhNjg0YmJiM2U2YjVmZDM4MWQ5NjkxNzg1N2EwYWIzZDQzZDUwZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5LmNwcApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIgorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgIDog
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkocmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KQoreworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVJbWFnZUJ1ZmZl
cihSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6SW1hZ2VCdWZm
ZXIqIGltYWdlQnVmZmVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9pbWFnZUJ1ZmZlcnMu
YWRkKGlkZW50aWZpZXIsIGltYWdlQnVmZmVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3Vs
dCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworfQorCitJbWFnZUJ1ZmZlciogUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5OjpjYWNoZWRJbWFnZUJ1ZmZlcihSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
aWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlcnMuZ2V0KGlkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZUltYWdlQnVmZmVy
KFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGJvb2wgZm91bmQg
PSBtX2ltYWdlQnVmZmVycy5yZW1vdmUoaWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRChm
b3VuZCwgZm91bmQpOworICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbGVhc2VS
ZW1vdGVSZXNvdXJjZShpZGVudGlmaWVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42YTA4MTVjODUyNWFhYzJmYmIxN2M1Mjc3YmVhN2UwNWE0NGI4MDFm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBJbWFnZUJ1ZmZlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKKworY2xhc3MgUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5IHsKK3B1YmxpYzoKKyAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5Jik7CisKKyAgICB2b2lkIGNhY2hlSW1hZ2VCdWZmZXIoV2ViQ29y
ZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciopOworICAg
IFdlYkNvcmU6OkltYWdlQnVmZmVyKiBjYWNoZWRJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVsZWFzZUltYWdlQnVmZmVyKFdlYkNvcmU6
OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgdXNpbmcgUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eUhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbW90ZVJlc291cmNl
SWRlbnRpZmllciwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqPjsKKyAgICAKKyAgICBSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5SGFzaE1hcCBtX2ltYWdlQnVmZmVyczsKKyAgICBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411819</attachid>
            <date>2020-10-19 17:13:08 -0700</date>
            <delta_ts>2020-10-19 19:32:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217558-20201019171307.patch</filename>
            <type>text/plain</type>
            <size>55973</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQ1ZjY0NzE3NGIxYjU1
MTQ3ZDU0MTMyYzI5OWM1NWU0NTY1ZDU0Yi4uMzVlZWY2YWFhOGI2OGFhODZlMmUyOTgxNzUwYjI0
OGQ0N2UwYjVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTEwLTE5ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXTogSW50cm9kdWNlIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB0byBtYW5hZ2UgdGhl
IHJlbW90ZSByZXNvdXJjZXMgaW4gV2ViIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBSZWNvcmRlcjo6T2JzZXJ2ZXIgdG8gUmVj
b3JkZXI6OkRlbGVnYXRlIGJlY2F1c2UgaXQgd2lsbCBiZSByZXNwb25zaWJsZQorICAgICAgICBm
b3IgY3JlYXRpbmcgRGlzcGxheUxpc3RJdGVtcyBpbiBmdXR1cmUgcGF0Y2hlcy4gU28gaXQgd2ls
bCBub3QgYmUganVzdAorICAgICAgICBhbiBvYnNlcnZlci4gQWxzbyBkbyBub3QgbWFrZSBEaXNw
bGF5TGlzdDo6SW1hZ2VCdWZmZXIgYSBzdXBlcmNsYXNzIG9mIGl0LgorICAgICAgICBSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LCB3aGljaCBpcyBhIHN1cGVyY2xhc3Mgb2YgRGlzcGxheUxpc3Q6Oklt
YWdlQnVmZmVyLAorICAgICAgICB3aWxsIGJlIHRoZSBzdXBlcmNsYXNzIG9mIFJlY29yZGVyOjpE
ZWxlZ2F0ZS4KKworICAgICAgICBNYWtlIEltYWdlQnVmZmVyQmFja2VuZDo6aXNBY2NlbGVyYXRl
ZCBhIHN0YXRpYyBtZW1iZXIgaW5zdGVhZCBvZiBhIHZpcnR1YWwKKyAgICAgICAgbWV0aG9kLiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgd291bGQgd2FudCB0byBrbm93IHdoZXRoZXIgdGhl
IGJhY2tlbmQKKyAgICAgICAgb2YgYW4gSW1hZ2VCdWZmZXIgaXNBY2NlbGVyYXRlZCBvciBub3Qg
d2l0aG91dCBoYXZpbmcgdG8gY3JlYXRlIGl0LgorICAgICAgICBJbWFnZUJ1ZmZlckJhY2tlbmQ6
OmlzQWNjZWxlcmF0ZWQgd2lsbCBiZSBzZXQgdG8gZmFsc2UgYW5kCisgICAgICAgIEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZDo6aXNBY2NlbGVyYXRlZCB3aWxsIGJlIHNldCB0byB0cnVlLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyQmFja2VuZDo6aXNBY2NlbGVyYXRlZCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6aXNB
Y2NlbGVyYXRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJh
d2luZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nQ29u
dGV4dDo6RHJhd2luZ0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OlJlY29yZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6d2lsbEFwcGVuZEl0ZW0pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjp+RGVsZWdhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpPYnNlcnZlcjo6fk9i
c2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6T2JzZXJ2ZXI6OndpbGxBcHBlbmRJdGVtKTogRGVsZXRlZC4KKwogMjAyMC0xMC0xNyAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJ
T04ocjI2ODU2MSk6IFN5bnRoZXRpYyBvYmxpcXVlIHRleHQgaXMgZHJhd24gdXBzaWRlLWRvd24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYmRlODgxMTFmZmU4ZjgwZDVhOWMwMzk1NTZkOWE0OGZiYWM0NDk4Ny4uNzZk
YjZkYjUyODgxNGQ3ZTAwYmM1NjFkNmY1NDNlZWM2ZGQ3MjRiNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1NCBAQAorMjAyMC0xMC0xOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBw
bGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc106IEludHJvZHVjZSBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkgdG8gbWFuYWdlIHRoZSByZW1vdGUgcmVzb3VyY2VzIGluIFdlYiBQcm9jZXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1NTgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUg
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5IGFuZCBtb3ZlIHNlbmRpbmcgdGhl
IG1lc3NhZ2VzCisgICAgICAgIHRvIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS4KKworICAg
ICAgICBUbyBhbGxvdyBjYXN0aW5nIEltYWdlQnVmZmVyIHRvIFJlbW90ZUltYWdlQnVmZmVyUHJv
eHksIGEgbmV3IG1ldGhvZCBuYW1lZAorICAgICAgICByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIo
KSBpcyBhZGRlZCB0byBJYW1nZUJ1ZmZlciBhbmQgaXQgaXMgb25seSBvdmVycmlkZGVuCisgICAg
ICAgIGJ5IFJlbW90ZUltYWdlQnVmZmVyUHJveHkuIFRoaXMgbWV0aG9kIGlzIHVzZWQgaW4gU1BF
Q0lBTElaRV9UWVBFX1RSQUlUUworICAgICAgICBtYWNyb3MgYWxvbmcgd2l0aCBJYW1nZUJ1ZmZl
cjo6aXNBY2NlbGVyYXRlZCgpLgorCisgICAgICAgIEludHJvZHVjZSBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkgd2hpY2ggd2lsbCBtYW5hZ2UgY2FjaGluZyBhbmQgcmVsZWFzaW5nCisgICAgICAg
IHRoZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LiBDYWNoaW5nIE5hdGl2ZUltYWdlIHdpbGwgYmUg
YWRkZWQgdG8gaXQgaW4KKyAgICAgICAgZnV0dXJlIHBhdGNoZXMuIE1vcmUgYWJvdXQgY29udHJv
bGxpbmcgdGhlIGxpZmUgY3ljbGVzIG9mIHJlbW90ZSByZXNvdXJjZXMgCisgICAgICAgIHdpbGwg
YmUgYWRkZWQgd2l0aCBzdXBwb3J0aW5nIGRyYXdpbmcgcmVtb3RlIHJlc291cmNlcyB0byByZW1v
dGUgY2xpZW50LgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChpc1R5cGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojp+UmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZUJh
Y2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojpjb21taXRG
bHVzaERpc3BsYXlMaXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eTo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdl
QnVmZmVyUHJveHk6OmlzUGVuZGluZ0ZsdXNoIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJbWFnZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNo
RGlzcGxheUxpc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6aW1hZ2VCdWZmZXJCYWNrZW5kV2Fz
Q3JlYXRlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Zmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmgu
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
OjpjYWNoZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5OjpjYWNoZWRJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVm
ZmVyUHJveHkuaC4KKwogMjAyMC0xMC0xNiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxh
d2FAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gSW50cm9kdWNlIFJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eSB0byBtYW5hZ2UgdGhlIHJlc291cmNlcyBpbiB0aGUgR1BVIFByb2Nl
c3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRl
SW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRl
SW1hZ2VCdWZmZXIuaAppbmRleCBjNmMxOWUxMjg5ZjQ4YjAyMGVhNzhiY2UzOWQxMDZjM2RiOTNi
MDdkLi44Njk3Mzk1ZmE0YzhkMDg1MWM3Yjc3OTA0MDZlNjFjOTE4ZmNlYTUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZl
ci5oCkBAIC01MCwxMyArNTAsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclR5cGU+KG5ldyBJ
bWFnZUJ1ZmZlclR5cGUoV1RGTW92ZShiYWNrZW5kKSwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4o
YXJndW1lbnRzKS4uLikpOwogICAgIH0KLSAgICAKLSAgICBib29sIGlzQWNjZWxlcmF0ZWQoKSBj
b25zdCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVC
YWNrZW5kQ3JlYXRlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGJhY2tlbmQtPmlzQWNjZWxlcmF0
ZWQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKworICAgIGJvb2wgaXNBY2NlbGVy
YXRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJhY2tlbmRUeXBlOjppc0FjY2VsZXJhdGVk
OyB9CiAKIHByb3RlY3RlZDoKICAgICBDb25jcmV0ZUltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0
cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggMGFlOWZjYmQwNTg4ZDRjNGUxZWY1YWYzY2M3ZjEy
YjYxMmJmNzhkYS4uOGI5NGY5MWQ5YmE5MTQ2MjQ0ZjAxYjcwM2NiMzQ3YThhOWQ3ZDE5OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0y
OCw2ICsyOCw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2Vu
ZC5oIgorI2luY2x1ZGUgIlJlbW90ZVJlc291cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJl
bmRlcmluZ01vZGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjAsNiArNjEsOSBAQCBw
dWJsaWM6CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VCdWZmZXIoKSA9
IGRlZmF1bHQ7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiB7IH07IH0KKyAgICAKICAgICB2aXJ0dWFsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hDb250
ZXh0KCkgPSAwOwogCkBAIC0xMDQsOCArMTA4LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBjb3B5VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmLCBHQ0dMZW51
bSwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9IDA7CiAgICAg
Ci0gICAgdmlydHVhbCBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCA9IDA7Ci0KIHByb3RlY3Rl
ZDoKICAgICBJbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCBjMDEwYTBm
MGNmY2Q4YzVlN2FiNmM5NGM1YzNjMzZmNDgzODZkMDFmLi4xNzFlZDNlNjk0MTMwYTM0MDE0MWU2
MWQ5MjEwMWUyODEwMWQ3MzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgY29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMJiwgR0NHTGVudW0sIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBib29sLCBi
b29sKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIAogICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBpc09yaWdpbkF0VXBwZXJMZWZ0Q29ybmVyID0gZmFsc2U7Ci0gICAgdmlydHVhbCBib29s
IGlzQWNjZWxlcmF0ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBpc0FjY2VsZXJhdGVkID0gZmFsc2U7CiAKIHByb3RlY3RlZDoKICAgICBXRUJD
T1JFX0VYUE9SVCBJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oCmluZGV4IDJhZjU0MmRmZWM4NDdhYmMzNzFh
YTJmMWU4ZTRiOGRkOWZiMTEwZTUuLjY2OTBiZWNkYzhiNGFhZTg1MjRiM2Y2ODEwZmI5MjY0Yzg1
YzQ5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotCiAjaW5jbHVkZSA8d3RmL09iamVj
dElkZW50aWZpZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsNSArMzMsMyBAQCBl
bnVtIFJlbW90ZVJlc291cmNlSWRlbnRpZmllclR5cGUgeyB9OwogdXNpbmcgUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXJU
eXBlPjsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9Q
Uk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggYzgwNjVh
OWVjMjUxNDY0NGY3NDA1ZjlhNTQxM2Y2MjIzNTYyNzE1NC4uZGJjM2I3ZWI4YjNkMWFkODhkMGFi
M2YwZWVmOTBhN2M4ZDg1ZTAzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
Y3BwCkBAIC0xOTAsMTEgKzE5MCw2IEBAIElPU3VyZmFjZSogSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kOjpzdXJmYWNlKCkKICAgICByZXR1cm4gbV9zdXJmYWNlLmdldCgpOwogfQogCi1ib29s
IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6aXNBY2NlbGVyYXRlZCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEhBVkUoSU9TVVJGQUNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAppbmRleCAy
NDE4ZjFkNDVkNTNkNDU5MzNiMzkwNGEyODhjNjEwMWYxNGJjYzMxLi4zMjMwOTRlYTc5NWM1ZDI0
ODNjODg0NDAzMTI0YTkwNDBjYzc0MGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQuaApAQCAtNjIsOSArNjIsOSBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEltYWdlRGF0YT4gZ2V0
SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRS
ZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiwgY29uc3QgSW50UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBkZXN0Rm9ybWF0KSBvdmVycmlkZTsKICAgICBJT1N1cmZhY2UqIHN1cmZhY2UoKTsKLSAgICBi
b29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc09yaWdpbkF0VXBwZXJMZWZ0Q29ybmVyID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNBY2NlbGVyYXRlZCA9IHRydWU7CiAKIHByb3RlY3RlZDoKICAgICBzdGF0
aWMgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29udGV4dENvbG9yU3BhY2UoY29uc3QgR3Jh
cGhpY3NDb250ZXh0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5n
Q29udGV4dC5jcHAKaW5kZXggMjNjYzA3ZThhZTQ0MmJkY2VhMGQzNjc0YTVhODU1MWM2NWNmZGM4
Ny4uZDQ2MTdkMzUxNmY0ZjNlNTFkNzVkNjQ0MzRhNmEzOTQ1N2EwMDAxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
RHJhd2luZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcApAQCAtMzMsOSArMzMs
OSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotRHJh
d2luZ0NvbnRleHQ6OkRyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwgUmVjb3JkZXI6Ok9ic2VydmVyKiBv
YnNlcnZlcikKK0RyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUm
IGxvZ2ljYWxTaXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIFJlY29yZGVy
OjpEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgOiBtX2NvbnRleHQoWyZdKEdyYXBoaWNzQ29udGV4
dCYgZGlzcGxheUxpc3RDb250ZXh0KSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlY29y
ZGVyPihkaXNwbGF5TGlzdENvbnRleHQsIG1fZGlzcGxheUxpc3QsIEdyYXBoaWNzQ29udGV4dFN0
YXRlKCksIEZsb2F0UmVjdCh7IH0sIGxvZ2ljYWxTaXplKSwgaW5pdGlhbENUTSwgb2JzZXJ2ZXIp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0
LCBtX2Rpc3BsYXlMaXN0LCBHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoeyB9LCBs
b2dpY2FsU2l6ZSksIGluaXRpYWxDVE0sIGRlbGVnYXRlKTsKICAgICB9KQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0RHJhd2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKaW5kZXggN2I2NzNmMzJh
ZDgxNWE1MDA4MWI3ZTdhYjEwODEzMTcxN2ZkZTU0My4uMjJlZDI1NmU4MGFkMjkzYTA1MjA2OWI3
NDMwODhhMTM1MWY0N2NjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3
aW5nQ29udGV4dC5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBj
bGFzcyBEcmF3aW5nQ29udGV4dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhd2luZ0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBs
b2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNID0geyB9LCBSZWNv
cmRlcjo6T2JzZXJ2ZXIqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhd2luZ0Nv
bnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBpbml0aWFsQ1RNID0geyB9LCBSZWNvcmRlcjo6RGVsZWdhdGUqID0gbnVsbHB0cik7CiAKICAg
ICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PERy
YXdpbmdDb250ZXh0Jj4oKnRoaXMpLm1fY29udGV4dDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIFJl
Y29yZGVyJiByZWNvcmRlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVm
ZmVyLmgKaW5kZXggNmZkOTEyZGZiOGZlMTFjMDk4ZGQ2MTI2YThjODc4YWM2YmE3YWUwMi4uMzI1
OTllMDYyZDdjZjU5ZDFkYzJlYWQwMWU3NjBkNjZlM2Y3ZWMzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VC
dWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJh
Y2tlbmRUeXBlPgotY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgQ29uY3JldGVJbWFnZUJ1ZmZl
cjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBSZWNvcmRlcjo6T2JzZXJ2ZXIgeworY2xhc3MgSW1hZ2VC
dWZmZXIgOiBwdWJsaWMgQ29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4gewogICAgIHVz
aW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyID0gQ29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5k
VHlwZT47CiAKIHB1YmxpYzoKQEAgLTQ4LDEyICs0OCwxMiBAQCBwdWJsaWM6CiAKICAgICBJbWFn
ZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgZGF0YUJhY2tlbmQsIGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSkKICAgICAgICAgOiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcihXVEZN
b3ZlKGRhdGFCYWNrZW5kKSkKLSAgICAgICAgLCBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRp
YWxEcmF3aW5nQ29udGV4dENUTShzaXplKSwgdGhpcykKKyAgICAgICAgLCBtX2RyYXdpbmdDb250
ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5nQ29udGV4dENUTShzaXplKSkKICAgICB7CiAgICAgfQog
Ci0gICAgSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplKQotICAgICAgICA6IG1fZHJh
d2luZ0NvbnRleHQoc2l6ZSwgaW5pdGlhbERyYXdpbmdDb250ZXh0Q1RNKHNpemUpLCB0aGlzKQor
ICAgIEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVjb3JkZXI6OkRlbGVnYXRl
KiBkZWxlZ2F0ZSA9IG51bGxwdHIpCisgICAgICAgIDogbV9kcmF3aW5nQ29udGV4dChzaXplLCBp
bml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSksIGRlbGVnYXRlKQogICAgIHsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCAxYzU0YWU4MjI5
Mzk0MjBkZDQwYjdiNzBiYTdlMzlkYmJhNjVmZTliLi5iOTBiZTI3NmI2NjM5YTQyNDkzMjljYmUy
ZjZiOTA0NzljMDYyM2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwCkBAIC0zNywxMCArMzcsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBE
aXNwbGF5TGlzdCB7CiAKLVJlY29yZGVyOjpSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
IHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGluaXRpYWxDVE0sIE9ic2VydmVyKiBvYnNlcnZlcikKK1JlY29yZGVyOjpSZWNvcmRlcihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlw
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIERlbGVnYXRlKiBkZWxlZ2F0ZSkK
ICAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwgaW5pdGlhbENsaXAsIEFmZmluZVRy
YW5zZm9ybSgpKQogICAgICwgbV9kaXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKLSAgICAsIG1fb2Jz
ZXJ2ZXIob2JzZXJ2ZXIpCisgICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQogewogICAgIExPR19X
SVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAiXG5SZWNvcmRpbmcgd2l0aCBjbGlw
ICIgPDwgaW5pdGlhbENsaXApOwogICAgIG1fc3RhdGVTdGFjay5hcHBlbmQoeyBzdGF0ZSwgaW5p
dGlhbENUTSwgaW5pdGlhbENsaXAgfSk7CkBAIC01OSw4ICs1OSw4IEBAIHZvaWQgUmVjb3JkZXI6
OnB1dEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0
LCBjb25zdCBXCiAKIHZvaWQgUmVjb3JkZXI6OndpbGxBcHBlbmRJdGVtKGNvbnN0IEl0ZW0mIGl0
ZW0pCiB7Ci0gICAgaWYgKG1fb2JzZXJ2ZXIpCi0gICAgICAgIG1fb2JzZXJ2ZXItPndpbGxBcHBl
bmRJdGVtKGl0ZW0pOworICAgIGlmIChtX2RlbGVnYXRlKQorICAgICAgICBtX2RlbGVnYXRlLT53
aWxsQXBwZW5kSXRlbShpdGVtKTsKIAogICAgIGlmIChpdGVtLmlzRHJhd2luZ0l0ZW0oKQogI2lm
IFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDllZTFk
MzkzOGYyMzJmM2YxOGQ5NzhhZjcxODcwMWQ4YmU0NjMwNzIuLjZmMzY3MDdlMGI3NjFiZjYyYzU0
MjM0MTNjOTQxMjUwMzM4YTU0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuaApAQCAtNTMsOCArNTMsOCBAQCBjbGFzcyBSZWNvcmRlciA6IHB1YmxpYyBHcmFwaGljc0Nv
bnRleHRJbXBsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShSZWNvcmRlcik7CiBwdWJsaWM6Ci0gICAgY2xhc3MgT2JzZXJ2ZXI7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiwgRGlzcGxheUxpc3QmLCBj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIE9ic2VydmVyKiA9IG51bGxwdHIpOworICAgIGNsYXNz
IERlbGVnYXRlOworICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYs
IERpc3BsYXlMaXN0JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJl
Y3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBEZWxlZ2F0ZSogPSBudWxs
cHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5SZWNvcmRlcigpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1
dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KTsK
QEAgLTYzLDkgKzYzLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBlbmRJdGVtQW5kVXBkYXRl
RXh0ZW50KFJlZjxEcmF3aW5nSXRlbT4mJik7CiAKLSAgICBjbGFzcyBPYnNlcnZlciB7CisgICAg
Y2xhc3MgRGVsZWdhdGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIo
KSB7IH0KKyAgICAgICAgdmlydHVhbCB+RGVsZWdhdGUoKSB7IH0KICAgICAgICAgdmlydHVhbCB2
b2lkIHdpbGxBcHBlbmRJdGVtKGNvbnN0IEl0ZW0mKSB7IH07CiAgICAgfTsKIApAQCAtMTg4LDcg
KzE4OCw3IEBAIHByaXZhdGU6CiAgICAgQ29udGV4dFN0YXRlJiBjdXJyZW50U3RhdGUoKTsKIAog
ICAgIERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0OwotICAgIE9ic2VydmVyKiBtX29ic2VydmVy
OworICAgIERlbGVnYXRlKiBtX2RlbGVnYXRlOwogCiAgICAgVmVjdG9yPENvbnRleHRTdGF0ZSwg
MzI+IG1fc3RhdGVTdGFjazsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA3OTZkYjY5OTZlZWRmZTViN2U5
MjgwMDEzNzIwNTRjZjY5YzM4MDQ2Li43YTNiMjMwMGI3YzM2ODkwZmZjMjUzYmJhMDU1NGFmMjAz
NjJmNWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTU1Nyw4ICs1NTcsOCBAQCBXZWJQcm9jZXNzL01lZGlh
U3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKIAogV2ViUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCi1XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwCiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCitXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZiZDlhYzQ1ZjMxYWM0M2MyZmMwOTY0YWY1ZmRk
ZTRhNzhlNjg0ODcuLjc0ODY5MDM0ODhjYTYzYTE1NGExZTljMDE2ZTU4ZmNjOGU4YmVhODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NDIyNCw4ICs0MjI0LDYgQEAKIAkJNzFBNjc2QTUyMkM2MjMxODAwN0Q2Mjk1IC8qIFdLVG91Y2hB
Y3Rpb25HZXN0dXJlUmVjb2duaXplci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbTsgcGF0aCA9IGlvcy9X
S1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcxRkI4MTBBMjI2MDYyN0EwMDMyMzY3NyAvKiBXZWJzaXRlU2ltdWxhdGVkTW91c2VF
dmVudHNEaXNwYXRjaFBvbGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJzaXRlU2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MjI3ODAwQjI0MDhCRDdEMDA3RDM3NkIgLyogUGxhdGZvcm1SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MjI3ODAwQzI0MDk3
QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcyMjc4MDBEMjQwOTdBMDIwMDdEMzc2
QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcyNkQ1NkREMjUzQTY0ODEwMDAyRUY5MCAvKiBSZW1vdGVSZXNvdXJj
ZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVJlc291cmNlQ2FjaGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjZENTZERTI1M0E2NDgxMDAwMkVGOTAgLyog
UmVtb3RlUmVzb3VyY2VDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZXNvdXJjZUNhY2hl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0E3RjM0MjQwNzg1N0QwMDREMjkz
MSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VC
YWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyMzcsNiArNDIzNSw4
IEBACiAJCTcyN0E3RjQ5MjQwOEFFRTYwMDREMjkzMSAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyUHJveHkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2RUYxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlj
a2VyTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbG9yUGlja2Vy
TWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOEU4NkYwMTc5NTE4OEMwMDg3
ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3MkI1MzE1NzI1M0MxRTREMDA0OTI5NUEgLyogUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyQjUzMTU4MjUzQzFFNEQwMDQ5Mjk1QSAv
KiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1QThEMkM0MTg3
Q0NGOUYwMEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tXZWJzaXRlRGF0YVN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTc1QThEMkM1MTg3Q0NGOUYwMEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYnNpdGVEYXRh
U3RvcmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1QThEMkQ0MTg3RDFDMDEw
MEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtODEzOCwxMiArODEzOCwxMiBAQAogCQkJCTcyN0E3RjM2MjQw
Nzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAqLywK
IAkJCQk3MjdBN0YzODI0MDc4OEYwMDA0RDI5MzEgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJl
YWJsZUJhY2tlbmQuaCAqLywKIAkJCQk3MjI3ODAwQjI0MDhCRDdEMDA3RDM3NkIgLyogUGxhdGZv
cm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCi0JCQkJNzIyNzgwMEMyNDA5N0EwMjAwN0Qz
NzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAgKi8sCi0JCQkJ
NzIyNzgwMEQyNDA5N0EwMjAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXJQcm94eS5oICovLAogCQkJCTcyN0E3RjQ5MjQwOEFFRTYwMDREMjkzMSAvKiBSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmggKi8sCiAJCQkJNTUwNjQwOUQyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgKi8sCiAJCQkJNTUwNjQwOUUyNDA3MTYwOTAwQUFF
MDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oICovLAogCQkJCTU1MDY0MEEwMjQw
NzE5RTEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4g
Ki8sCisJCQkJNzJCNTMxNTcyNTNDMUU0RDAwNDkyOTVBIC8qIFJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eS5jcHAgKi8sCisJCQkJNzJCNTMxNTgyNTNDMUU0RDAwNDkyOTVBIC8qIFJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eS5oICovLAogCQkJCTU1MDY0MDlGMjQwNzE5NkEwMEFBRTA0NSAvKiBSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBncmFwaGljczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZv
cm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDlhZmYwODhl
MzdjYTc2YTdmODY0YWU3ZTQyYmJiNzAwNGYxZjE1MjMuLjhlNjRmMDVhOGE2ZThmNWVjNTg5MTRk
NDcwNjRiMWQwYTU5NmQwY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVy
UHJveHkuaApAQCAtMzcsNCArMzcsMTIgQEAgdXNpbmcgQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5ID0gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTxBY2NlbGVyYXRlZEltYWcKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViS2l0
OjpVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSkKKyAgICBzdGF0aWMgYm9vbCBp
c1R5cGUoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKSB7IHJldHVybiBp
bWFnZUJ1ZmZlci5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSAmJiAhaW1hZ2VCdWZmZXIuaXNB
Y2NlbGVyYXRlZCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViS2l0OjpBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVy
UHJveHkpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVy
JiBpbWFnZUJ1ZmZlcikgeyByZXR1cm4gaW1hZ2VCdWZmZXIucmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKCkgJiYgaW1hZ2VCdWZmZXIuaXNBY2NlbGVyYXRlZCgpOyB9CitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5NTYyYTM2OGU2OWU0MjMwZTcyNjJjMjYzNmRmMjg2ZDc0
NmVhYzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyUHJveHkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlclByb3h5LmgiCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KLSNpbmNs
dWRlICJJbWFnZURhdGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMuaD4KLSNpbmNsdWRlIDx3dGYvU3lz
dGVtVHJhY2luZy5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwotCi1SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OlJlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5KQotICAgIDogbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkobWFrZVdlYWtQ
dHIocmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKLXsKLSAgICAvLyBDcmVhdGUgdGhlIFJl
bW90ZUltYWdlQnVmZmVyUHJveHkuCi0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkt
PnNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVy
KHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbV9yZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7Ci19Ci0KLVJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eTo6flJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eSgpCi17
Ci0gICAgLy8gUmVsZWFzZSB0aGUgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS4KLSAgICBpZiAoIW1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQotICAgICAgICByZXR1cm47Ci0gICAgbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OlJlbGVhc2VSZW1vdGVSZXNvdXJjZShtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllciks
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cigpKTsKLX0KLQotUmVmUHRyPEltYWdlRGF0YT4gUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlclByb3h5OjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3Jt
YXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0Ci17Ci0gICAgSVBDOjpJbWFnZURhdGFS
ZWZlcmVuY2UgaW1hZ2VEYXRhUmVmZXJlbmNlOwotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LT5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6R2V0SW1h
Z2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
LCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6R2V0SW1hZ2VEYXRhOjpSZXBseShp
bWFnZURhdGFSZWZlcmVuY2UpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIoKSwgMV9zKTsKLSAgICByZXR1cm4gaW1hZ2VEYXRhUmVmZXJl
bmNlLmJ1ZmZlcigpOwotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQ
cm94eTo6d2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoKQotewotICAgIGlmICht
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSAmJiAhaXNCYWNrZW5kQ3JlYXRlZCgpKQotICAg
ICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+d2FpdEZvckltYWdlQnVmZmVyQmFj
a2VuZFdhc0NyZWF0ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyUHJveHk6OndhaXRGb3JGbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKCkKLXsKLSAgICBp
ZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgJiYgaXNQZW5kaW5nRmx1c2goKSkKLSAg
ICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPndhaXRGb3JGbHVzaERpc3BsYXlM
aXN0V2FzQ29tbWl0dGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlclByb3h5OjpmbHVzaERpc3BsYXlMaXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdCYgZGlzcGxheUxpc3QpCi17Ci0gICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Njb3Bl
KEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJTdGFydCwgRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlckVuZCk7
Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnNlbmQoTWVzc2FnZXM6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OkZsdXNoRGlzcGxheUxpc3QoZGlzcGxheUxpc3QsIG1fcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOwotICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7Ci19Ci0K
LXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5OjpmbHVzaERpc3BsYXlM
aXN0QW5kV2FpdENvbW1pdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3Bs
YXlMaXN0KQotewotICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Njb3BlKEZsdXNoUmVtb3RlSW1h
Z2VCdWZmZXJTdGFydCwgRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlckVuZCwgMSk7Ci0gICAgbV9zZW50
Rmx1c2hJZGVudGlmaWVyID0gRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXI6OmdlbmVyYXRlKCk7
Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnNlbmQoTWVzc2FnZXM6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OkZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoZGlzcGxheUxpc3Qs
IG1fc2VudEZsdXNoSWRlbnRpZmllciwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7
Ci0gICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKLSAgICB3YWl0Rm9yRmx1c2hEaXNwbGF5TGlzdFdh
c0NvbW1pdHRlZCgpOwotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQ
cm94eTo6Y29tbWl0Rmx1c2hDb250ZXh0KERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyIGZsdXNo
SWRlbnRpZmllcikKLXsKLSAgICBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyID0gZmx1c2hJZGVu
dGlmaWVyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShH
UFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXJQcm94eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWEwMjZhODEyOTg3OTZl
N2JkMzVmYTk2ZWVlOTA0ZGU0YmZiNWZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotCi0jaW5jbHVkZSAiRGlz
cGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL0Rpc3BsYXlMaXN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFNpemUuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvUmVuZGVyaW5nTW9kZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBJbWFnZURh
dGE7Ci1lbnVtIGNsYXNzIEFscGhhUHJlbXVsdGlwbGljYXRpb24gOiB1aW50OF90OwotfQotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Owot
Ci1jbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkgewotcHVibGljOgot
ICAgIHZpcnR1YWwgflJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eSgpOwotCi0g
ICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOyB9Ci0KLSAg
ICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4gU2VlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
bWVzc2FnZXMuaW4uCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZUJhY2tlbmQoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2Vu
ZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlKSA9IDA7Ci0KLSAgICB2b2lkIGNvbW1pdEZsdXNoQ29udGV4dChE
aXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllcik7Ci0KLXByb3RlY3RlZDoKLSAgICBSZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2Vi
Q29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xv
clNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmKTsKLQotICAgIHZpcnR1YWwgYm9v
bCBpc0JhY2tlbmRDcmVhdGVkKCkgY29uc3QgPSAwOwotICAgIGJvb2wgaXNQZW5kaW5nRmx1c2go
KSBjb25zdCB7IHJldHVybiBtX3NlbnRGbHVzaElkZW50aWZpZXIgIT0gbV9yZWNlaXZlZEZsdXNo
SWRlbnRpZmllcjsgfQotCi0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VE
YXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0KSBjb25zdDsKLQotICAgIHZvaWQgd2FpdEZvckltYWdl
QnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoKTsKLSAgICB2b2lkIHdhaXRGb3JGbHVzaERpc3BsYXlM
aXN0V2FzQ29tbWl0dGVkKCk7Ci0KLSAgICAvLyBNZXNzYWdlcyB0byBiZSBzZW50LiBTZWUgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluLgotICAgIHZvaWQgZmx1c2hEaXNw
bGF5TGlzdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmKTsKLSAgICB2b2lkIGZs
dXNoRGlzcGxheUxpc3RBbmRXYWl0Q29tbWl0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdCYpOwotCi1wcml2YXRlOgotICAgIFdlYWtQdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5PiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKLSAgICBXZWJDb3JlOjpSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgeyBXZWJDb3JlOjpS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKLQotICAgIERpc3BsYXlMaXN0
Rmx1c2hJZGVudGlmaWVyIG1fc2VudEZsdXNoSWRlbnRpZmllcjsKLSAgICBEaXNwbGF5TGlzdEZs
dXNoSWRlbnRpZmllciBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oCmluZGV4IDIwZmJmODFjOTgyNTUyZWY3NmJiNmNkMTVkYzNhMWU5ZDM4
ODBlYzMuLjI3OWE3OTJhMDJkYzBlNzE3ZDI4YjM3OGZjMWRmMTBhYTg1MzQ3OGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCiAKLSNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJv
eHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaD4KQEAgLTM3LDU0ICszNiw3MSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tl
bmRUeXBlPgotY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlclByb3h5IHsKK2NsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkg
OiBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwg
cHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGUgewogICAgIHVz
aW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyID0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6Oklt
YWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlcjo6bV9iYWNrZW5kOwogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjpt
X2RyYXdpbmdDb250ZXh0OwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBz
aXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCiAgICAgewogICAgICAg
ICBpZiAoQmFja2VuZFR5cGU6OmNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25T
Y2FsZSkuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PihuZXcgUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpOworICAgICAgICByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KG5ldyBSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5KHNpemUsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpOwogICAgIH0KIAog
ICAgIH5SZW1vdGVJbWFnZUJ1ZmZlclByb3h5KCkKICAgICB7CisgICAgICAgIGlmICghbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGZs
dXNoRHJhd2luZ0NvbnRleHQoKTsKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHktPnJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgpLnJlbGVhc2VJbWFnZUJ1ZmZlcihtX3JlbW90
ZVJlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCi1wcm90ZWN0ZWQ6Ci0gICAgUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdlYkNvcmU6OlJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3Jl
OjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQotICAgICAgICA6IEJhc2VEaXNwbGF5TGlzdEltYWdl
QnVmZmVyKHNpemUpCi0gICAgICAgICwgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclBy
b3h5KHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQotICAgIHsKLSAgICB9CisgICAgV2ViQ29yZTo6UmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOyB9CiAKLSAgICB2b2lk
IGNyZWF0ZUJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
V2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUg
aGFuZGxlKSBvdmVycmlkZQorICAgIHZvaWQgY3JlYXRlQmFja2VuZChjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2Us
IEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCiAgICAgewogICAgICAgICBBU1NFUlQo
IW1fYmFja2VuZCk7CiAgICAgICAgIG1fYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUobG9n
aWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1v
dmUoaGFuZGxlKSk7CiAgICAgfQotICAgIAotICAgIGJvb2wgaXNCYWNrZW5kQ3JlYXRlZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsgfQorCisgICAgdm9pZCBjb21t
aXRGbHVzaERpc3BsYXlMaXN0KERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRp
ZmllcikKKyAgICB7CisgICAgICAgIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXIgPSBmbHVzaElk
ZW50aWZpZXI7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgICAgICA6IEJhc2VEaXNwbGF5
TGlzdEltYWdlQnVmZmVyKHNpemUsIHRoaXMpCisgICAgICAgICwgbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkobWFrZVdlYWtQdHIocmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSk7CisgICAg
fQorCisgICAgYm9vbCBpc1BlbmRpbmdGbHVzaCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VudEZsdXNo
SWRlbnRpZmllciAhPSBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyOyB9CiAKICAgICBCYWNrZW5k
VHlwZSogZW5zdXJlQmFja2VuZENyZWF0ZWQoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAg
ICAgaWYgKCFtX2JhY2tlbmQpCi0gICAgICAgICAgICBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVm
ZmVyUHJveHkmPigqdGhpcykuUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Ojp3
YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgpOworICAgICAgICBpZiAoIW1fYmFj
a2VuZCAmJiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAgICAgIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT53YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3Jl
YXRlZCgpOwogICAgICAgICByZXR1cm4gbV9iYWNrZW5kLmdldCgpOwogICAgIH0KIAogICAgIFJl
ZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11
bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVj
dCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CisgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgICAgICBhdXRv
JiBkaXNwbGF5TGlzdCA9IGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSo+KHRoaXMp
LT5tX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAgIGNvbnN0X2Nhc3Q8UmVt
b3RlSW1hZ2VCdWZmZXJQcm94eSo+KHRoaXMpLT5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyUHJveHk6OmZsdXNoRGlzcGxheUxpc3QoZGlzcGxheUxpc3QpOwotICAgICAgICBhdXRvIHJl
c3VsdCA9IGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSo+KHRoaXMpLT5SZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OmdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQs
IHNyY1JlY3QpOworICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXRlbUNvdW50KCkpIHsKKyAgICAg
ICAgICAgIGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSY+KCp0aGlzKS5mbHVzaERp
c3BsYXlMaXN0KGRpc3BsYXlMaXN0KTsKKyAgICAgICAgICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7
CisgICAgICAgIH0KKwogICAgICAgICAvLyBnZXRJbWFnZURhdGEgaXMgc3luY2hyb25vdXMsIHdo
aWNoIG1lYW5zIHdlJ3ZlIGFscmVhZHkgcmVjZWl2ZWQgdGhlIENvbW1pdEltYWdlQnVmZmVyRmx1
c2hDb250ZXh0IG1lc3NhZ2UuCi0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVy
biBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1h
dCwgc3JjUmVjdCwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAogICAgIHZv
aWQgcHV0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3Jt
YXQsIGNvbnN0IFdlYkNvcmU6OkltYWdlRGF0YSYgaW1hZ2VEYXRhLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50ID0geyB9
LCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQgPSBXZWJDb3JlOjpB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkKSBvdmVycmlkZQpAQCAtMTA0LDE3
ICsxMjAsNDQgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dCgpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBhdXRvJiBkaXNwbGF5TGlzdCA9IG1fZHJhd2luZ0NvbnRl
eHQuZGlzcGxheUxpc3QoKTsKLSAgICAgICAgaWYgKGRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpKQot
ICAgICAgICAgICAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5OjpmbHVzaERp
c3BsYXlMaXN0QW5kV2FpdENvbW1pdChkaXNwbGF5TGlzdCk7CisgICAgICAgIGlmICghZGlzcGxh
eUxpc3QuaXRlbUNvdW50KCkgfHwgIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Njb3BlKEZsdXNo
UmVtb3RlSW1hZ2VCdWZmZXJTdGFydCwgRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlckVuZCwgMSk7Cisg
ICAgICAgIG1fc2VudEZsdXNoSWRlbnRpZmllciA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LT5mbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBtX3JlbW90ZVJlc291
cmNlSWRlbnRpZmllcik7CisKKyAgICAgICAgLy8gV2FpdCBmb3Igb3VyIERpc3BsYXlMaXN0IHRv
IGJlIGZsdXNoZWQgYnV0IGRvIG5vdCBoYW5nLgorICAgICAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIG1heFdhaXRpbmdGbHVzaCA9IDM7CisgICAgICAgIGZvciAodW5zaWduZWQgbnVtV2Fp
dGluZ0ZsdXNoID0gMDsgbnVtV2FpdGluZ0ZsdXNoIDwgbWF4V2FpdGluZ0ZsdXNoICYmIGlzUGVu
ZGluZ0ZsdXNoKCk7ICsrbnVtV2FpdGluZ0ZsdXNoKQorICAgICAgICAgICAgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHktPndhaXRGb3JGbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKCk7
CisKKyAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lk
IGZsdXNoRGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
JiBkaXNwbGF5TGlzdCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghZGlzcGxheUxpc3Qu
aXRlbUNvdW50KCkgfHwgIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Njb3BlKEZsdXNoUmVtb3Rl
SW1hZ2VCdWZmZXJTdGFydCwgRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlckVuZCk7CisgICAgICAgIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5mbHVzaERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0
LCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgfQorCiAgICAgdm9pZCB3aWxsQXBw
ZW5kSXRlbShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbSYpIG92ZXJyaWRlCiAgICAg
ewogICAgICAgICBjb25zdGV4cHIgc2l6ZV90IERpc3BsYXlMaXN0QmF0Y2hTaXplID0gNTEyOwog
ICAgICAgICBhdXRvJiBkaXNwbGF5TGlzdCA9IG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3Qo
KTsKLSAgICAgICAgaWYgKGRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpID49IERpc3BsYXlMaXN0QmF0
Y2hTaXplKQotICAgICAgICAgICAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5
OjpmbHVzaERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KTsKKyAgICAgICAgaWYgKGRpc3BsYXlMaXN0
Lml0ZW1Db3VudCgpIDwgRGlzcGxheUxpc3RCYXRjaFNpemUgfHwgIW1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZsdXNoRGlzcGxh
eUxpc3QoZGlzcGxheUxpc3QpOworICAgICAgICBkaXNwbGF5TGlzdC5jbGVhcigpOwogICAgIH0K
KyAgICAKKyAgICBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBtX3NlbnRGbHVzaElkZW50aWZp
ZXI7CisgICAgRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgbV9yZWNlaXZlZEZsdXNoSWRlbnRp
ZmllcjsKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgeyBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVy
YXRlKCkgfTsKKyAgICBXZWFrUHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eT4gbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCBiMTQ2MWI0ODIxNDhk
MmI3NWI0MGYwOThkOTQwY2RlMTBhYjRmZmNlLi41ZDRlMDgyMGUwOWE1MTRmOWJmZTUzOGVhMjhh
ZmYyZTg5ZTgyYzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3Bw
CkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJJbWFnZURh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHku
aCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgpAQCAtODgsMzggKzg5LDc1
IEBAIGJvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp3YWl0Rm9yRmx1c2hEaXNwbGF5
TGlzdFdhc0NvbW1pdHRlZCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
IHNpemUsIFNob3VsZEFjY2VsZXJhdGUgc2hvdWxkQWNjZWxlcmF0ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CisgICAgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gaW1h
Z2VCdWZmZXI7CisKICAgICBpZiAoc2hvdWxkQWNjZWxlcmF0ZSA9PSBTaG91bGRBY2NlbGVyYXRl
OjpZZXMpIHsKLSAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZFJlbW90
ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpSZW1vdGVBY2Nl
bGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCAqdGhpcykpIHsKLSAgICAgICAg
ICAgIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5hZGQoaW1hZ2VCdWZmZXItPnJlbW90
ZVJlc291cmNlSWRlbnRpZmllcigpLCBpbWFnZUJ1ZmZlci5nZXQoKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gaW1hZ2VCdWZmZXI7Ci0gICAgICAgIH0KKyAgICAgICAgcmVuZGVyaW5nTW9kZSA9IFJl
bmRlcmluZ01vZGU6OlJlbW90ZUFjY2VsZXJhdGVkOworICAgICAgICBpbWFnZUJ1ZmZlciA9IEFj
Y2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25T
Y2FsZSwgKnRoaXMpOworICAgIH0KKworICAgIGlmICghaW1hZ2VCdWZmZXIpIHsKKyAgICAgICAg
cmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OlJlbW90ZVVuYWNjZWxlcmF0ZWQ7CisgICAg
ICAgIGltYWdlQnVmZmVyID0gVW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNy
ZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsICp0aGlzKTsKICAgICB9CiAKLSAgICBpZiAoYXV0
byBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVh
dGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6UmVtb3RlVW5hY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNj
YWxlLCBjb2xvclNwYWNlLCAqdGhpcykpIHsKLSAgICAgICAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyTWFwLmFkZChpbWFnZUJ1ZmZlci0+cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCksIGlt
YWdlQnVmZmVyLmdldCgpKTsKKyAgICBpZiAoaW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwg
cmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBpbWFnZUJ1ZmZlci0+
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KTsKKyAgICAgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVJbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlci0+cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCksIGltYWdlQnVmZmVyLmdldCgp
KTsKICAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwogICAgIH0KIAorICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCitSZWZQdHI8SW1hZ2VEYXRhPiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBJUEM6OkltYWdl
RGF0YVJlZmVyZW5jZSBpbWFnZURhdGFSZWZlcmVuY2U7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1Jl
Y3QsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpHZXRJbWFnZURhdGE6OlJlcGx5KGltYWdlRGF0YVJlZmVyZW5jZSksIG1fcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIsIDFfcyk7CisgICAgcmV0dXJuIGltYWdlRGF0YVJlZmVyZW5j
ZS5idWZmZXIoKTsKK30KKwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNo
RGlzcGxheUxpc3QoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwg
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpGbHVzaERpc3BsYXlMaXN0
KGRpc3BsYXlMaXN0LCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyKTsKK30KKworRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IERpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIFJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgRGlzcGxheUxpc3RGbHVzaElkZW50
aWZpZXIgc2VudEZsdXNoSWRlbnRpZmllciA9IERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyOjpn
ZW5lcmF0ZSgpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkZs
dXNoRGlzcGxheUxpc3RBbmRDb21taXQoZGlzcGxheUxpc3QsIHNlbnRGbHVzaElkZW50aWZpZXIs
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIp
OworICAgIHJldHVybiBzZW50Rmx1c2hJZGVudGlmaWVyOworfQorCiB2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbW90ZVJlc291cmNlSWRl
bnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgLy8gQ3JlYXRlSW1hZ2VC
dWZmZXIgbWVzc2FnZSBzaG91bGQgaGF2ZSBiZWVuIHJlY2VpdmVkIGJlZm9yZSB0aGlzIG9uZS4K
LSAgICBib29sIGZvdW5kID0gbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLnJlbW92ZShy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5k
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZWxlYXNlUmVt
b3RlUmVzb3VyY2UocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjppbWFn
ZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNv
bnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAoYXV0
byBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5nZXQocmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKSkKLSAgICAgICAgaW1hZ2VCdWZmZXItPmNyZWF0ZUJhY2tlbmQo
bG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdU
Rk1vdmUoaGFuZGxlKSk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5LmNhY2hlZEltYWdlQnVmZmVyKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7Cisg
ICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChpbWFn
ZUJ1ZmZlci0+aXNBY2NlbGVyYXRlZCgpKQorICAgICAgICBkb3duY2FzdDxBY2NlbGVyYXRlZFJl
bW90ZUltYWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZlcikuY3JlYXRlQmFja2VuZChsb2dpY2Fs
U2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZSho
YW5kbGUpKTsKKyAgICBlbHNlCisgICAgICAgIGRvd25jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpLmNyZWF0ZUJhY2tlbmQobG9naWNhbFNpemUs
IGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoaGFuZGxl
KSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaERpc3BsYXlM
aXN0V2FzQ29tbWl0dGVkKERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmll
ciwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsK
LSAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1h
cC5nZXQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkKLSAgICAgICAgaW1hZ2VCdWZmZXItPmNv
bW1pdEZsdXNoQ29udGV4dChmbHVzaElkZW50aWZpZXIpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIg
PSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOworICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChpbWFnZUJ1ZmZlci0+aXNBY2NlbGVyYXRlZCgpKQorICAgICAgICBkb3duY2Fz
dDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZlcikuY29tbWl0
Rmx1c2hEaXNwbGF5TGlzdChmbHVzaElkZW50aWZpZXIpOworICAgIGVsc2UKKyAgICAgICAgZG93
bmNhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZlciku
Y29tbWl0Rmx1c2hEaXNwbGF5TGlzdChmbHVzaElkZW50aWZpZXIpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4IDlk
MjkwMDIzZDQ5NzIxZWFkNmNiOTg3OTlkMjZmNWE4ZDBlZDRkYmUuLjNmZTUxYzVkYTk1ZTM3NTAz
ZDdkYmRiNDVlYjg2OTdjZDQyNjNmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuaApAQCAtMzEsMTYgKzMxLDI0IEBACiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVNlbmRlci5oIgotI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94
eS5oIgorI2luY2x1ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIgogI2luY2x1ZGUgIlJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNl
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
RmxvYXRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ01vZGUuaD4KLSNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CitjbGFzcyBEaXNwbGF5TGlzdDsKK2NsYXNzIEl0ZW07
Cit9CitjbGFzcyBGbG9hdFNpemU7CitjbGFzcyBJbWFnZURhdGE7CitlbnVtIGNsYXNzIEFscGhh
UHJlbXVsdGlwbGljYXRpb24gOiB1aW50OF90OworZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWlu
dDhfdDsKK2VudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIFNo
b3VsZEFjY2VsZXJhdGUgOiBib29sOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5CkBAIC01Miw3ICs2MCw3IEBAIHB1YmxpYzoKIAog
ICAgIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKTsKIAotICAgIFJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjsgfQorICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eSYgcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkgeyByZXR1cm4gbV9yZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHk7IH0KIAogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4KICAgICBJUEM6OkNv
bm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC02
MSw3ICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92
ZXJyaWRlOwogCisgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlNob3VsZEFjY2VsZXJhdGUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0
YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9y
bWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBXZWJDb3JlOjpSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdChjb25zdCBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpOworICAgIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyIGZsdXNoRGlzcGxheUxpc3RB
bmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29y
ZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNv
dXJjZShXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgYm9vbCB3YWl0
Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgpOwpAQCAtNzQsOCArODYsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5k
U2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAg
ICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKERpc3BsYXlMaXN0Rmx1c2hJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogCi0gICAgdXNpbmcg
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyLCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkqPjsK
LSAgICBJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlck1hcDsKKyAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgbV9yZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkgeyAqdGhpcyB9OwogICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIG1fcmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIgeyBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjhlYTY4NGJiYjNlNmI1ZmQzODFkOTY5MTc4NTdhMGFiM2Q0M2Q1MGYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGVQcm94eS5jcHAKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCitSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eShS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkK
KyAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KHJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSkKK3sKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlSW1h
Z2VCdWZmZXIoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6Oklt
YWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcikKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1faW1hZ2VC
dWZmZXJzLmFkZChpZGVudGlmaWVyLCBpbWFnZUJ1ZmZlcik7CisgICAgQVNTRVJUX1VOVVNFRChh
ZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30KKworSW1hZ2VCdWZmZXIqIFJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVkSW1hZ2VCdWZmZXIoUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJzLmdldChpZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVhc2VJbWFn
ZUJ1ZmZlcihSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBib29s
IGZvdW5kID0gbV9pbWFnZUJ1ZmZlcnMucmVtb3ZlKGlkZW50aWZpZXIpOworICAgIEFTU0VSVF9V
TlVTRUQoZm91bmQsIGZvdW5kKTsKKyAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5y
ZWxlYXNlUmVtb3RlUmVzb3VyY2UoaWRlbnRpZmllcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmEwODE1Yzg1MjVhYWMyZmJiMTdjNTI3N2JlYTdlMDVh
NDRiODAxZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKQEAgLTAsMCArMSw1OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgSW1hZ2VCdWZmZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CisKK2NsYXNzIFJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eSB7CitwdWJsaWM6CisgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYpOworCisgICAgdm9pZCBjYWNoZUltYWdlQnVmZmVy
KFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIq
KTsKKyAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogY2FjaGVkSW1hZ2VCdWZmZXIoV2ViQ29yZTo6
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbGVhc2VJbWFnZUJ1ZmZlcihX
ZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIHVzaW5n
IFJlbW90ZUltYWdlQnVmZmVyUHJveHlIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OkltYWdlQnVmZmVyKj47CisgICAgCisgICAgUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eUhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7CisgICAgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5JiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411829</attachid>
            <date>2020-10-19 19:32:43 -0700</date>
            <delta_ts>2020-10-19 20:44:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217558-20201019193242.patch</filename>
            <type>text/plain</type>
            <size>56002</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQ1ZjY0NzE3NGIxYjU1
MTQ3ZDU0MTMyYzI5OWM1NWU0NTY1ZDU0Yi4uMzVlZWY2YWFhOGI2OGFhODZlMmUyOTgxNzUwYjI0
OGQ0N2UwYjVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTEwLTE5ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXTogSW50cm9kdWNlIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB0byBtYW5hZ2UgdGhl
IHJlbW90ZSByZXNvdXJjZXMgaW4gV2ViIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBSZWNvcmRlcjo6T2JzZXJ2ZXIgdG8gUmVj
b3JkZXI6OkRlbGVnYXRlIGJlY2F1c2UgaXQgd2lsbCBiZSByZXNwb25zaWJsZQorICAgICAgICBm
b3IgY3JlYXRpbmcgRGlzcGxheUxpc3RJdGVtcyBpbiBmdXR1cmUgcGF0Y2hlcy4gU28gaXQgd2ls
bCBub3QgYmUganVzdAorICAgICAgICBhbiBvYnNlcnZlci4gQWxzbyBkbyBub3QgbWFrZSBEaXNw
bGF5TGlzdDo6SW1hZ2VCdWZmZXIgYSBzdXBlcmNsYXNzIG9mIGl0LgorICAgICAgICBSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LCB3aGljaCBpcyBhIHN1cGVyY2xhc3Mgb2YgRGlzcGxheUxpc3Q6Oklt
YWdlQnVmZmVyLAorICAgICAgICB3aWxsIGJlIHRoZSBzdXBlcmNsYXNzIG9mIFJlY29yZGVyOjpE
ZWxlZ2F0ZS4KKworICAgICAgICBNYWtlIEltYWdlQnVmZmVyQmFja2VuZDo6aXNBY2NlbGVyYXRl
ZCBhIHN0YXRpYyBtZW1iZXIgaW5zdGVhZCBvZiBhIHZpcnR1YWwKKyAgICAgICAgbWV0aG9kLiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgd291bGQgd2FudCB0byBrbm93IHdoZXRoZXIgdGhl
IGJhY2tlbmQKKyAgICAgICAgb2YgYW4gSW1hZ2VCdWZmZXIgaXNBY2NlbGVyYXRlZCBvciBub3Qg
d2l0aG91dCBoYXZpbmcgdG8gY3JlYXRlIGl0LgorICAgICAgICBJbWFnZUJ1ZmZlckJhY2tlbmQ6
OmlzQWNjZWxlcmF0ZWQgd2lsbCBiZSBzZXQgdG8gZmFsc2UgYW5kCisgICAgICAgIEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZDo6aXNBY2NlbGVyYXRlZCB3aWxsIGJlIHNldCB0byB0cnVlLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyQmFja2VuZDo6aXNBY2NlbGVyYXRlZCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6aXNB
Y2NlbGVyYXRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJh
d2luZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nQ29u
dGV4dDo6RHJhd2luZ0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OlJlY29yZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6d2lsbEFwcGVuZEl0ZW0pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjp+RGVsZWdhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpPYnNlcnZlcjo6fk9i
c2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6T2JzZXJ2ZXI6OndpbGxBcHBlbmRJdGVtKTogRGVsZXRlZC4KKwogMjAyMC0xMC0xNyAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJ
T04ocjI2ODU2MSk6IFN5bnRoZXRpYyBvYmxpcXVlIHRleHQgaXMgZHJhd24gdXBzaWRlLWRvd24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYmRlODgxMTFmZmU4ZjgwZDVhOWMwMzk1NTZkOWE0OGZiYWM0NDk4Ny4uNzZk
YjZkYjUyODgxNGQ3ZTAwYmM1NjFkNmY1NDNlZWM2ZGQ3MjRiNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1NCBAQAorMjAyMC0xMC0xOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBw
bGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc106IEludHJvZHVjZSBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkgdG8gbWFuYWdlIHRoZSByZW1vdGUgcmVzb3VyY2VzIGluIFdlYiBQcm9jZXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1NTgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUg
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5IGFuZCBtb3ZlIHNlbmRpbmcgdGhl
IG1lc3NhZ2VzCisgICAgICAgIHRvIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS4KKworICAg
ICAgICBUbyBhbGxvdyBjYXN0aW5nIEltYWdlQnVmZmVyIHRvIFJlbW90ZUltYWdlQnVmZmVyUHJv
eHksIGEgbmV3IG1ldGhvZCBuYW1lZAorICAgICAgICByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIo
KSBpcyBhZGRlZCB0byBJYW1nZUJ1ZmZlciBhbmQgaXQgaXMgb25seSBvdmVycmlkZGVuCisgICAg
ICAgIGJ5IFJlbW90ZUltYWdlQnVmZmVyUHJveHkuIFRoaXMgbWV0aG9kIGlzIHVzZWQgaW4gU1BF
Q0lBTElaRV9UWVBFX1RSQUlUUworICAgICAgICBtYWNyb3MgYWxvbmcgd2l0aCBJYW1nZUJ1ZmZl
cjo6aXNBY2NlbGVyYXRlZCgpLgorCisgICAgICAgIEludHJvZHVjZSBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkgd2hpY2ggd2lsbCBtYW5hZ2UgY2FjaGluZyBhbmQgcmVsZWFzaW5nCisgICAgICAg
IHRoZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LiBDYWNoaW5nIE5hdGl2ZUltYWdlIHdpbGwgYmUg
YWRkZWQgdG8gaXQgaW4KKyAgICAgICAgZnV0dXJlIHBhdGNoZXMuIE1vcmUgYWJvdXQgY29udHJv
bGxpbmcgdGhlIGxpZmUgY3ljbGVzIG9mIHJlbW90ZSByZXNvdXJjZXMgCisgICAgICAgIHdpbGwg
YmUgYWRkZWQgd2l0aCBzdXBwb3J0aW5nIGRyYXdpbmcgcmVtb3RlIHJlc291cmNlcyB0byByZW1v
dGUgY2xpZW50LgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChpc1R5cGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojp+UmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZUJh
Y2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojpjb21taXRG
bHVzaERpc3BsYXlMaXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eTo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdl
QnVmZmVyUHJveHk6OmlzUGVuZGluZ0ZsdXNoIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJbWFnZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNo
RGlzcGxheUxpc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6aW1hZ2VCdWZmZXJCYWNrZW5kV2Fz
Q3JlYXRlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Zmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmgu
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
OjpjYWNoZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5OjpjYWNoZWRJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVm
ZmVyUHJveHkuaC4KKwogMjAyMC0xMC0xNiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxh
d2FAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gSW50cm9kdWNlIFJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eSB0byBtYW5hZ2UgdGhlIHJlc291cmNlcyBpbiB0aGUgR1BVIFByb2Nl
c3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRl
SW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRl
SW1hZ2VCdWZmZXIuaAppbmRleCBjNmMxOWUxMjg5ZjQ4YjAyMGVhNzhiY2UzOWQxMDZjM2RiOTNi
MDdkLi44Njk3Mzk1ZmE0YzhkMDg1MWM3Yjc3OTA0MDZlNjFjOTE4ZmNlYTUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZl
ci5oCkBAIC01MCwxMyArNTAsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclR5cGU+KG5ldyBJ
bWFnZUJ1ZmZlclR5cGUoV1RGTW92ZShiYWNrZW5kKSwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4o
YXJndW1lbnRzKS4uLikpOwogICAgIH0KLSAgICAKLSAgICBib29sIGlzQWNjZWxlcmF0ZWQoKSBj
b25zdCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVC
YWNrZW5kQ3JlYXRlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGJhY2tlbmQtPmlzQWNjZWxlcmF0
ZWQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKworICAgIGJvb2wgaXNBY2NlbGVy
YXRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJhY2tlbmRUeXBlOjppc0FjY2VsZXJhdGVk
OyB9CiAKIHByb3RlY3RlZDoKICAgICBDb25jcmV0ZUltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0
cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggMGFlOWZjYmQwNTg4ZDRjNGUxZWY1YWYzY2M3ZjEy
YjYxMmJmNzhkYS4uOGI5NGY5MWQ5YmE5MTQ2MjQ0ZjAxYjcwM2NiMzQ3YThhOWQ3ZDE5OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0y
OCw2ICsyOCw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2Vu
ZC5oIgorI2luY2x1ZGUgIlJlbW90ZVJlc291cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJl
bmRlcmluZ01vZGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjAsNiArNjEsOSBAQCBw
dWJsaWM6CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VCdWZmZXIoKSA9
IGRlZmF1bHQ7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiB7IH07IH0KKyAgICAKICAgICB2aXJ0dWFsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hDb250
ZXh0KCkgPSAwOwogCkBAIC0xMDQsOCArMTA4LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBjb3B5VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmLCBHQ0dMZW51
bSwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9IDA7CiAgICAg
Ci0gICAgdmlydHVhbCBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCA9IDA7Ci0KIHByb3RlY3Rl
ZDoKICAgICBJbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCBjMDEwYTBm
MGNmY2Q4YzVlN2FiNmM5NGM1YzNjMzZmNDgzODZkMDFmLi4xNzFlZDNlNjk0MTMwYTM0MDE0MWU2
MWQ5MjEwMWUyODEwMWQ3MzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgY29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMJiwgR0NHTGVudW0sIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBib29sLCBi
b29sKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIAogICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBpc09yaWdpbkF0VXBwZXJMZWZ0Q29ybmVyID0gZmFsc2U7Ci0gICAgdmlydHVhbCBib29s
IGlzQWNjZWxlcmF0ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBpc0FjY2VsZXJhdGVkID0gZmFsc2U7CiAKIHByb3RlY3RlZDoKICAgICBXRUJD
T1JFX0VYUE9SVCBJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oCmluZGV4IDJhZjU0MmRmZWM4NDdhYmMzNzFh
YTJmMWU4ZTRiOGRkOWZiMTEwZTUuLjY2OTBiZWNkYzhiNGFhZTg1MjRiM2Y2ODEwZmI5MjY0Yzg1
YzQ5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotCiAjaW5jbHVkZSA8d3RmL09iamVj
dElkZW50aWZpZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsNSArMzMsMyBAQCBl
bnVtIFJlbW90ZVJlc291cmNlSWRlbnRpZmllclR5cGUgeyB9OwogdXNpbmcgUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXJU
eXBlPjsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9Q
Uk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggYzgwNjVh
OWVjMjUxNDY0NGY3NDA1ZjlhNTQxM2Y2MjIzNTYyNzE1NC4uZGJjM2I3ZWI4YjNkMWFkODhkMGFi
M2YwZWVmOTBhN2M4ZDg1ZTAzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
Y3BwCkBAIC0xOTAsMTEgKzE5MCw2IEBAIElPU3VyZmFjZSogSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kOjpzdXJmYWNlKCkKICAgICByZXR1cm4gbV9zdXJmYWNlLmdldCgpOwogfQogCi1ib29s
IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6aXNBY2NlbGVyYXRlZCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEhBVkUoSU9TVVJGQUNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAppbmRleCAy
NDE4ZjFkNDVkNTNkNDU5MzNiMzkwNGEyODhjNjEwMWYxNGJjYzMxLi4zMjMwOTRlYTc5NWM1ZDI0
ODNjODg0NDAzMTI0YTkwNDBjYzc0MGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQuaApAQCAtNjIsOSArNjIsOSBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEltYWdlRGF0YT4gZ2V0
SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRS
ZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiwgY29uc3QgSW50UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBkZXN0Rm9ybWF0KSBvdmVycmlkZTsKICAgICBJT1N1cmZhY2UqIHN1cmZhY2UoKTsKLSAgICBi
b29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc09yaWdpbkF0VXBwZXJMZWZ0Q29ybmVyID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNBY2NlbGVyYXRlZCA9IHRydWU7CiAKIHByb3RlY3RlZDoKICAgICBzdGF0
aWMgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29udGV4dENvbG9yU3BhY2UoY29uc3QgR3Jh
cGhpY3NDb250ZXh0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5n
Q29udGV4dC5jcHAKaW5kZXggMjNjYzA3ZThhZTQ0MmJkY2VhMGQzNjc0YTVhODU1MWM2NWNmZGM4
Ny4uZDQ2MTdkMzUxNmY0ZjNlNTFkNzVkNjQ0MzRhNmEzOTQ1N2EwMDAxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
RHJhd2luZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcApAQCAtMzMsOSArMzMs
OSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotRHJh
d2luZ0NvbnRleHQ6OkRyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwgUmVjb3JkZXI6Ok9ic2VydmVyKiBv
YnNlcnZlcikKK0RyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUm
IGxvZ2ljYWxTaXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIFJlY29yZGVy
OjpEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgOiBtX2NvbnRleHQoWyZdKEdyYXBoaWNzQ29udGV4
dCYgZGlzcGxheUxpc3RDb250ZXh0KSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlY29y
ZGVyPihkaXNwbGF5TGlzdENvbnRleHQsIG1fZGlzcGxheUxpc3QsIEdyYXBoaWNzQ29udGV4dFN0
YXRlKCksIEZsb2F0UmVjdCh7IH0sIGxvZ2ljYWxTaXplKSwgaW5pdGlhbENUTSwgb2JzZXJ2ZXIp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0
LCBtX2Rpc3BsYXlMaXN0LCBHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoeyB9LCBs
b2dpY2FsU2l6ZSksIGluaXRpYWxDVE0sIGRlbGVnYXRlKTsKICAgICB9KQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0RHJhd2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKaW5kZXggN2I2NzNmMzJh
ZDgxNWE1MDA4MWI3ZTdhYjEwODEzMTcxN2ZkZTU0My4uMjJlZDI1NmU4MGFkMjkzYTA1MjA2OWI3
NDMwODhhMTM1MWY0N2NjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3
aW5nQ29udGV4dC5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBj
bGFzcyBEcmF3aW5nQ29udGV4dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhd2luZ0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBs
b2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNID0geyB9LCBSZWNv
cmRlcjo6T2JzZXJ2ZXIqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhd2luZ0Nv
bnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBpbml0aWFsQ1RNID0geyB9LCBSZWNvcmRlcjo6RGVsZWdhdGUqID0gbnVsbHB0cik7CiAKICAg
ICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PERy
YXdpbmdDb250ZXh0Jj4oKnRoaXMpLm1fY29udGV4dDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIFJl
Y29yZGVyJiByZWNvcmRlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVm
ZmVyLmgKaW5kZXggNmZkOTEyZGZiOGZlMTFjMDk4ZGQ2MTI2YThjODc4YWM2YmE3YWUwMi4uMzI1
OTllMDYyZDdjZjU5ZDFkYzJlYWQwMWU3NjBkNjZlM2Y3ZWMzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VC
dWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJh
Y2tlbmRUeXBlPgotY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgQ29uY3JldGVJbWFnZUJ1ZmZl
cjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBSZWNvcmRlcjo6T2JzZXJ2ZXIgeworY2xhc3MgSW1hZ2VC
dWZmZXIgOiBwdWJsaWMgQ29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4gewogICAgIHVz
aW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyID0gQ29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5k
VHlwZT47CiAKIHB1YmxpYzoKQEAgLTQ4LDEyICs0OCwxMiBAQCBwdWJsaWM6CiAKICAgICBJbWFn
ZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgZGF0YUJhY2tlbmQsIGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSkKICAgICAgICAgOiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcihXVEZN
b3ZlKGRhdGFCYWNrZW5kKSkKLSAgICAgICAgLCBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRp
YWxEcmF3aW5nQ29udGV4dENUTShzaXplKSwgdGhpcykKKyAgICAgICAgLCBtX2RyYXdpbmdDb250
ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5nQ29udGV4dENUTShzaXplKSkKICAgICB7CiAgICAgfQog
Ci0gICAgSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplKQotICAgICAgICA6IG1fZHJh
d2luZ0NvbnRleHQoc2l6ZSwgaW5pdGlhbERyYXdpbmdDb250ZXh0Q1RNKHNpemUpLCB0aGlzKQor
ICAgIEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVjb3JkZXI6OkRlbGVnYXRl
KiBkZWxlZ2F0ZSA9IG51bGxwdHIpCisgICAgICAgIDogbV9kcmF3aW5nQ29udGV4dChzaXplLCBp
bml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSksIGRlbGVnYXRlKQogICAgIHsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCAxYzU0YWU4MjI5
Mzk0MjBkZDQwYjdiNzBiYTdlMzlkYmJhNjVmZTliLi5iOTBiZTI3NmI2NjM5YTQyNDkzMjljYmUy
ZjZiOTA0NzljMDYyM2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwCkBAIC0zNywxMCArMzcsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBE
aXNwbGF5TGlzdCB7CiAKLVJlY29yZGVyOjpSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
IHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGluaXRpYWxDVE0sIE9ic2VydmVyKiBvYnNlcnZlcikKK1JlY29yZGVyOjpSZWNvcmRlcihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlw
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIERlbGVnYXRlKiBkZWxlZ2F0ZSkK
ICAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwgaW5pdGlhbENsaXAsIEFmZmluZVRy
YW5zZm9ybSgpKQogICAgICwgbV9kaXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKLSAgICAsIG1fb2Jz
ZXJ2ZXIob2JzZXJ2ZXIpCisgICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQogewogICAgIExPR19X
SVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAiXG5SZWNvcmRpbmcgd2l0aCBjbGlw
ICIgPDwgaW5pdGlhbENsaXApOwogICAgIG1fc3RhdGVTdGFjay5hcHBlbmQoeyBzdGF0ZSwgaW5p
dGlhbENUTSwgaW5pdGlhbENsaXAgfSk7CkBAIC01OSw4ICs1OSw4IEBAIHZvaWQgUmVjb3JkZXI6
OnB1dEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0
LCBjb25zdCBXCiAKIHZvaWQgUmVjb3JkZXI6OndpbGxBcHBlbmRJdGVtKGNvbnN0IEl0ZW0mIGl0
ZW0pCiB7Ci0gICAgaWYgKG1fb2JzZXJ2ZXIpCi0gICAgICAgIG1fb2JzZXJ2ZXItPndpbGxBcHBl
bmRJdGVtKGl0ZW0pOworICAgIGlmIChtX2RlbGVnYXRlKQorICAgICAgICBtX2RlbGVnYXRlLT53
aWxsQXBwZW5kSXRlbShpdGVtKTsKIAogICAgIGlmIChpdGVtLmlzRHJhd2luZ0l0ZW0oKQogI2lm
IFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDllZTFk
MzkzOGYyMzJmM2YxOGQ5NzhhZjcxODcwMWQ4YmU0NjMwNzIuLjZmMzY3MDdlMGI3NjFiZjYyYzU0
MjM0MTNjOTQxMjUwMzM4YTU0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuaApAQCAtNTMsOCArNTMsOCBAQCBjbGFzcyBSZWNvcmRlciA6IHB1YmxpYyBHcmFwaGljc0Nv
bnRleHRJbXBsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShSZWNvcmRlcik7CiBwdWJsaWM6Ci0gICAgY2xhc3MgT2JzZXJ2ZXI7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiwgRGlzcGxheUxpc3QmLCBj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIE9ic2VydmVyKiA9IG51bGxwdHIpOworICAgIGNsYXNz
IERlbGVnYXRlOworICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYs
IERpc3BsYXlMaXN0JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJl
Y3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBEZWxlZ2F0ZSogPSBudWxs
cHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5SZWNvcmRlcigpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1
dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KTsK
QEAgLTYzLDkgKzYzLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBlbmRJdGVtQW5kVXBkYXRl
RXh0ZW50KFJlZjxEcmF3aW5nSXRlbT4mJik7CiAKLSAgICBjbGFzcyBPYnNlcnZlciB7CisgICAg
Y2xhc3MgRGVsZWdhdGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIo
KSB7IH0KKyAgICAgICAgdmlydHVhbCB+RGVsZWdhdGUoKSB7IH0KICAgICAgICAgdmlydHVhbCB2
b2lkIHdpbGxBcHBlbmRJdGVtKGNvbnN0IEl0ZW0mKSB7IH07CiAgICAgfTsKIApAQCAtMTg4LDcg
KzE4OCw3IEBAIHByaXZhdGU6CiAgICAgQ29udGV4dFN0YXRlJiBjdXJyZW50U3RhdGUoKTsKIAog
ICAgIERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0OwotICAgIE9ic2VydmVyKiBtX29ic2VydmVy
OworICAgIERlbGVnYXRlKiBtX2RlbGVnYXRlOwogCiAgICAgVmVjdG9yPENvbnRleHRTdGF0ZSwg
MzI+IG1fc3RhdGVTdGFjazsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA3OTZkYjY5OTZlZWRmZTViN2U5
MjgwMDEzNzIwNTRjZjY5YzM4MDQ2Li43YTNiMjMwMGI3YzM2ODkwZmZjMjUzYmJhMDU1NGFmMjAz
NjJmNWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTU1Nyw4ICs1NTcsOCBAQCBXZWJQcm9jZXNzL01lZGlh
U3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKIAogV2ViUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCi1XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwCiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCitXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZiZDlhYzQ1ZjMxYWM0M2MyZmMwOTY0YWY1ZmRk
ZTRhNzhlNjg0ODcuLjc0ODY5MDM0ODhjYTYzYTE1NGExZTljMDE2ZTU4ZmNjOGU4YmVhODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NDIyNCw4ICs0MjI0LDYgQEAKIAkJNzFBNjc2QTUyMkM2MjMxODAwN0Q2Mjk1IC8qIFdLVG91Y2hB
Y3Rpb25HZXN0dXJlUmVjb2duaXplci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbTsgcGF0aCA9IGlvcy9X
S1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcxRkI4MTBBMjI2MDYyN0EwMDMyMzY3NyAvKiBXZWJzaXRlU2ltdWxhdGVkTW91c2VF
dmVudHNEaXNwYXRjaFBvbGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJzaXRlU2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MjI3ODAwQjI0MDhCRDdEMDA3RDM3NkIgLyogUGxhdGZvcm1SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MjI3ODAwQzI0MDk3
QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcyMjc4MDBEMjQwOTdBMDIwMDdEMzc2
QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcyNkQ1NkREMjUzQTY0ODEwMDAyRUY5MCAvKiBSZW1vdGVSZXNvdXJj
ZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVJlc291cmNlQ2FjaGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjZENTZERTI1M0E2NDgxMDAwMkVGOTAgLyog
UmVtb3RlUmVzb3VyY2VDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZXNvdXJjZUNhY2hl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0E3RjM0MjQwNzg1N0QwMDREMjkz
MSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VC
YWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyMzcsNiArNDIzNSw4
IEBACiAJCTcyN0E3RjQ5MjQwOEFFRTYwMDREMjkzMSAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyUHJveHkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2RUYxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlj
a2VyTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbG9yUGlja2Vy
TWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOEU4NkYwMTc5NTE4OEMwMDg3
ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3MkI1MzE1NzI1M0MxRTREMDA0OTI5NUEgLyogUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyQjUzMTU4MjUzQzFFNEQwMDQ5Mjk1QSAv
KiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1QThEMkM0MTg3
Q0NGOUYwMEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tXZWJzaXRlRGF0YVN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTc1QThEMkM1MTg3Q0NGOUYwMEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYnNpdGVEYXRh
U3RvcmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1QThEMkQ0MTg3RDFDMDEw
MEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtODEzOCwxMiArODEzOCwxMiBAQAogCQkJCTcyN0E3RjM2MjQw
Nzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAqLywK
IAkJCQk3MjdBN0YzODI0MDc4OEYwMDA0RDI5MzEgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJl
YWJsZUJhY2tlbmQuaCAqLywKIAkJCQk3MjI3ODAwQjI0MDhCRDdEMDA3RDM3NkIgLyogUGxhdGZv
cm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCi0JCQkJNzIyNzgwMEMyNDA5N0EwMjAwN0Qz
NzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAgKi8sCi0JCQkJ
NzIyNzgwMEQyNDA5N0EwMjAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXJQcm94eS5oICovLAogCQkJCTcyN0E3RjQ5MjQwOEFFRTYwMDREMjkzMSAvKiBSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmggKi8sCiAJCQkJNTUwNjQwOUQyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgKi8sCiAJCQkJNTUwNjQwOUUyNDA3MTYwOTAwQUFF
MDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oICovLAogCQkJCTU1MDY0MEEwMjQw
NzE5RTEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4g
Ki8sCisJCQkJNzJCNTMxNTcyNTNDMUU0RDAwNDkyOTVBIC8qIFJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eS5jcHAgKi8sCisJCQkJNzJCNTMxNTgyNTNDMUU0RDAwNDkyOTVBIC8qIFJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eS5oICovLAogCQkJCTU1MDY0MDlGMjQwNzE5NkEwMEFBRTA0NSAvKiBSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBncmFwaGljczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZv
cm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDlhZmYwODhl
MzdjYTc2YTdmODY0YWU3ZTQyYmJiNzAwNGYxZjE1MjMuLjAwMDYwZWMxMDFjMjU0ZTJiNThhNzY0
NmE0YTQyNGYzZDAyNDQ5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVy
UHJveHkuaApAQCAtMzcsNCArMzcsMTQgQEAgdXNpbmcgQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5ID0gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTxBY2NlbGVyYXRlZEltYWcKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViS2l0
OjpVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSkKKyAgICBzdGF0aWMgYm9vbCBp
c1R5cGUoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKSB7IHJldHVybiBp
bWFnZUJ1ZmZlci5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSAmJiAhaW1hZ2VCdWZmZXIuaXNB
Y2NlbGVyYXRlZCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKKyNpZiBIQVZF
KElPU1VSRkFDRSkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViS2l0OjpBY2NlbGVy
YXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHkpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0
IFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikgeyByZXR1cm4gaW1hZ2VCdWZmZXIu
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkgJiYgaW1hZ2VCdWZmZXIuaXNBY2NlbGVyYXRlZCgp
OyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisjZW5kaWYKKwogI2VuZGlmIC8vIEVO
QUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlclByb3h5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTk1NjJh
MzY4ZTY5ZTQyMzBlNzI2MmMyNjM2ZGYyODZkNzQ2ZWFjNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCIKLQotI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIkltYWdlRGF0YVJlZmVyZW5jZS5oIgot
I2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlcy5oIgotI2luY2x1ZGUgIlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxp
c3RJdGVtcy5oPgotI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLVJlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXJQcm94eTo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCi0gICAgOiBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eShtYWtlV2Vha1B0cihyZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkpKQotewotICAgIC8vIENyZWF0ZSB0aGUgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS4KLSAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1
dGlvblNjYWxlLCBjb2xvclNwYWNlLCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsK
LX0KLQotUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Ojp+UmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KCkKLXsKLSAgICAvLyBSZWxlYXNlIHRoZSBSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LgotICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkp
Ci0gICAgICAgIHJldHVybjsKLSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c2Vu
ZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVsZWFzZVJlbW90ZVJlc291cmNl
KG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHktPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOwotfQotCi1SZWZQdHI8SW1hZ2VEYXRh
PiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OmdldEltYWdlRGF0YShBbHBo
YVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkg
Y29uc3QKLXsKLSAgICBJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGFSZWZlcmVuY2U7
Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpHZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0
LCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllciksIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpHZXRJbWFnZURhdGE6OlJlcGx5KGltYWdlRGF0YVJlZmVyZW5jZSksIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpLCAxX3Mp
OwotICAgIHJldHVybiBpbWFnZURhdGFSZWZlcmVuY2UuYnVmZmVyKCk7Ci19Ci0KLXZvaWQgUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Ojp3YWl0Rm9ySW1hZ2VCdWZmZXJCYWNr
ZW5kV2FzQ3JlYXRlZCgpCi17Ci0gICAgaWYgKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
ICYmICFpc0JhY2tlbmRDcmVhdGVkKCkpCi0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LT53YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgpOwotfQotCi12b2lk
IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6d2FpdEZvckZsdXNoRGlzcGxh
eUxpc3RXYXNDb21taXR0ZWQoKQotewotICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSAmJiBpc1BlbmRpbmdGbHVzaCgpKQotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS0+d2FpdEZvckZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoKTsKLX0KLQotdm9p
ZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OmZsdXNoRGlzcGxheUxpc3Qo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkKLXsKLSAgICBp
ZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQotICAgICAgICByZXR1cm47Ci0gICAg
Ci0gICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlclN0YXJ0
LCBGbHVzaFJlbW90ZUltYWdlQnVmZmVyRW5kKTsKLSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS0+c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Rmx1c2hEaXNw
bGF5TGlzdChkaXNwbGF5TGlzdCwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7Ci0g
ICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyUHJveHk6OmZsdXNoRGlzcGxheUxpc3RBbmRXYWl0Q29tbWl0KFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpCi17Ci0gICAgaWYgKCFtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgVHJhY2VTY29w
ZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlclN0YXJ0LCBGbHVzaFJlbW90ZUlt
YWdlQnVmZmVyRW5kLCAxKTsKLSAgICBtX3NlbnRGbHVzaElkZW50aWZpZXIgPSBEaXNwbGF5TGlz
dEZsdXNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKLSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS0+c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Rmx1c2hEaXNw
bGF5TGlzdEFuZENvbW1pdChkaXNwbGF5TGlzdCwgbV9zZW50Rmx1c2hJZGVudGlmaWVyLCBtX3Jl
bW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5y
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsKLSAgICBkaXNwbGF5TGlzdC5jbGVhcigpOwot
ICAgIHdhaXRGb3JGbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKCk7Ci19Ci0KLXZvaWQgUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Ojpjb21taXRGbHVzaENvbnRleHQoRGlz
cGxheUxpc3RGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyKQotewotICAgIG1fcmVjZWl2
ZWRGbHVzaElkZW50aWZpZXIgPSBmbHVzaElkZW50aWZpZXI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGI5YTAyNmE4MTI5ODc5NmU3YmQzNWZhOTZlZWU5MDRkZTRiZmI1ZmQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVy
UHJveHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCi0KLSNpbmNsdWRlICJEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oIgot
I2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
Q29sb3JTcGFjZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLWNsYXNzIEltYWdlRGF0YTsKLWVudW0gY2xhc3MgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiA6IHVpbnQ4X3Q7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7Ci0KLWNsYXNzIFJlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXJQcm94eSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+UmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlclByb3h5KCk7Ci0KLSAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXI7IH0KLQotICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVk
LiBTZWUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbi4KLSAgICB2aXJ0dWFsIHZv
aWQgY3JlYXRlQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpID0gMDsKLQot
ICAgIHZvaWQgY29tbWl0Rmx1c2hDb250ZXh0KERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyKTsK
LQotcHJvdGVjdGVkOgotICAgIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eShj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSYpOwotCi0gICAgdmlydHVhbCBib29sIGlzQmFja2VuZENyZWF0ZWQoKSBjb25zdCA9
IDA7Ci0gICAgYm9vbCBpc1BlbmRpbmdGbHVzaCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VudEZsdXNo
SWRlbnRpZmllciAhPSBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyOyB9Ci0KLSAgICBSZWZQdHI8
V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QpIGNv
bnN0OwotCi0gICAgdm9pZCB3YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgpOwot
ICAgIHZvaWQgd2FpdEZvckZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoKTsKLQotICAgIC8v
IE1lc3NhZ2VzIHRvIGJlIHNlbnQuIFNlZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVz
c2FnZXMuaW4uCi0gICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdCYpOwotICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdEFuZFdhaXRDb21taXQo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jik7Ci0KLXByaXZhdGU6Ci0gICAgV2Vh
a1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+IG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OwotICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciBtX3JlbW90ZVJl
c291cmNlSWRlbnRpZmllciB7IFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKSB9OwotCi0gICAgRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgbV9zZW50Rmx1c2hJ
ZGVudGlmaWVyOwotICAgIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyIG1fcmVjZWl2ZWRGbHVz
aElkZW50aWZpZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVO
QUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggMjBmYmY4
MWM5ODI1NTJlZjc2YmI2Y2QxNWRjM2ExZTlkMzg4MGVjMy4uMjc5YTc5MmEwMmRjMGU3MTdkMjhi
Mzc4ZmMxZGYxMGFhODUzNDc4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTI3
LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAotI2luY2x1ZGUgIlJlbW90
ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVt
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RSZWNvcmRlci5oPgpAQCAtMzcsNTQg
KzM2LDcxIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQmFja2VuZFR5cGU+Ci1jbGFzcyBSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5IDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjxCYWNr
ZW5kVHlwZT4sIHB1YmxpYyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkgewor
Y2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVyOjpEZWxlZ2F0ZSB7CiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXIgPSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+OwogICAg
IHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjptX2JhY2tlbmQ7CiAgICAgdXNpbmcg
QmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6Om1fZHJhd2luZ0NvbnRleHQ7CiAKIHB1YmxpYzoK
LSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+IGNyZWF0
ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5KQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSkKICAgICB7CiAgICAgICAgIGlmIChCYWNrZW5kVHlwZTo6Y2FsY3VsYXRl
QmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKS5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUltYWdlQnVmZmVyUHJveHk+KG5ldyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KHNpemUsIHJlbmRl
cmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5KSk7CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlSW1hZ2VC
dWZmZXJQcm94eT4obmV3IFJlbW90ZUltYWdlQnVmZmVyUHJveHkoc2l6ZSwgcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5KSk7CiAgICAgfQogCiAgICAgflJlbW90ZUltYWdlQnVmZmVyUHJveHko
KQogICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOworICAgICAg
ICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
KCkucmVsZWFzZUltYWdlQnVmZmVyKG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9
CiAKLXByb3RlY3RlZDoKLSAgICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYgc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCi0g
ICAgICAgIDogQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIoc2l6ZSkKLSAgICAgICAgLCBSZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVz
b2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCi0g
ICAgewotICAgIH0KKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXI7IH0KIAotICAgIHZvaWQgY3JlYXRlQmFja2VuZChjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5k
U2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpIG92ZXJyaWRlCisgICAgdm9pZCBj
cmVhdGVCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdl
YkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhh
bmRsZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9iYWNrZW5kKTsKICAgICAgICAgbV9iYWNr
ZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29s
dXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZShoYW5kbGUpKTsKICAgICB9Ci0gICAgCi0g
ICAgYm9vbCBpc0JhY2tlbmRDcmVhdGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9iYWNr
ZW5kLmdldCgpOyB9CisKKyAgICB2b2lkIGNvbW1pdEZsdXNoRGlzcGxheUxpc3QoRGlzcGxheUxp
c3RGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgbV9yZWNl
aXZlZEZsdXNoSWRlbnRpZmllciA9IGZsdXNoSWRlbnRpZmllcjsKKyAgICB9CisKK3Byb3RlY3Rl
ZDoKKyAgICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYg
c2l6ZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkpCisgICAgICAgIDogQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIoc2l6ZSwgdGhpcykK
KyAgICAgICAgLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShtYWtlV2Vha1B0cihyZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KTsKKyAgICB9CisKKyAgICBib29sIGlzUGVuZGluZ0ZsdXNo
KCkgY29uc3QgeyByZXR1cm4gbV9zZW50Rmx1c2hJZGVudGlmaWVyICE9IG1fcmVjZWl2ZWRGbHVz
aElkZW50aWZpZXI7IH0KIAogICAgIEJhY2tlbmRUeXBlKiBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgp
IGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoIW1fYmFja2VuZCkKLSAgICAgICAg
ICAgIGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSY+KCp0aGlzKS5SZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OndhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXND
cmVhdGVkKCk7CisgICAgICAgIGlmICghbV9iYWNrZW5kICYmIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5KQorICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPndh
aXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCk7CiAgICAgICAgIHJldHVybiBtX2Jh
Y2tlbmQuZ2V0KCk7CiAgICAgfQogCiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0
SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0KSBjb25zdCBvdmVycmlkZQogICAgIHsKKyAg
ICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworCiAgICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0gY29uc3RfY2FzdDxS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5Kj4odGhpcyktPm1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxp
c3QoKTsKLSAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Kj4odGhpcykt
PlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6Zmx1c2hEaXNwbGF5TGlzdChk
aXNwbGF5TGlzdCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gY29uc3RfY2FzdDxSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5Kj4odGhpcyktPlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94
eTo6Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCk7CisgICAgICAgIGlmIChkaXNw
bGF5TGlzdC5pdGVtQ291bnQoKSkgeworICAgICAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5Jj4oKnRoaXMpLmZsdXNoRGlzcGxheUxpc3QoZGlzcGxheUxpc3QpOworICAg
ICAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIGdl
dEltYWdlRGF0YSBpcyBzeW5jaHJvbm91cywgd2hpY2ggbWVhbnMgd2UndmUgYWxyZWFkeSByZWNl
aXZlZCB0aGUgQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQgbWVzc2FnZS4KLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LT5nZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCBtX3JlbW90ZVJlc291cmNl
SWRlbnRpZmllcik7CiAgICAgfQogCiAgICAgdm9pZCBwdXRJbWFnZURhdGEoV2ViQ29yZTo6QWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEYXRh
JiBpbWFnZURhdGEsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBkZXN0UG9pbnQgPSB7IH0sIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGlj
YXRpb24gZGVzdEZvcm1hdCA9IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11
bHRpcGxpZWQpIG92ZXJyaWRlCkBAIC0xMDQsMTcgKzEyMCw0NCBAQCBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGF1dG8m
IGRpc3BsYXlMaXN0ID0gbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwotICAgICAgICBp
ZiAoZGlzcGxheUxpc3QuaXRlbUNvdW50KCkpCi0gICAgICAgICAgICBSZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyUHJveHk6OmZsdXNoRGlzcGxheUxpc3RBbmRXYWl0Q29tbWl0KGRpc3Bs
YXlMaXN0KTsKKyAgICAgICAgaWYgKCFkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSB8fCAhbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
VHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlclN0YXJ0LCBGbHVz
aFJlbW90ZUltYWdlQnVmZmVyRW5kLCAxKTsKKyAgICAgICAgbV9zZW50Rmx1c2hJZGVudGlmaWVy
ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmZsdXNoRGlzcGxheUxpc3RBbmRDb21t
aXQoZGlzcGxheUxpc3QsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgICAgICAv
LyBXYWl0IGZvciBvdXIgRGlzcGxheUxpc3QgdG8gYmUgZmx1c2hlZCBidXQgZG8gbm90IGhhbmcu
CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4V2FpdGluZ0ZsdXNoID0gMzsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBudW1XYWl0aW5nRmx1c2ggPSAwOyBudW1XYWl0aW5nRmx1
c2ggPCBtYXhXYWl0aW5nRmx1c2ggJiYgaXNQZW5kaW5nRmx1c2goKTsgKytudW1XYWl0aW5nRmx1
c2gpCisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+d2FpdEZvckZs
dXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoKTsKKworICAgICAgICBkaXNwbGF5TGlzdC5jbGVh
cigpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdChjb25zdCBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgaWYgKCFkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSB8fCAhbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgVHJhY2VT
Y29wZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlclN0YXJ0LCBGbHVzaFJlbW90
ZUltYWdlQnVmZmVyRW5kKTsKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkt
PmZsdXNoRGlzcGxheUxpc3QoZGlzcGxheUxpc3QsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KTsKKyAgICB9CisKICAgICB2b2lkIHdpbGxBcHBlbmRJdGVtKGNvbnN0IFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtJikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGNvbnN0ZXhwciBzaXplX3Qg
RGlzcGxheUxpc3RCYXRjaFNpemUgPSA1MTI7CiAgICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0g
bV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwotICAgICAgICBpZiAoZGlzcGxheUxpc3Qu
aXRlbUNvdW50KCkgPj0gRGlzcGxheUxpc3RCYXRjaFNpemUpCi0gICAgICAgICAgICBSZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OmZsdXNoRGlzcGxheUxpc3QoZGlzcGxheUxp
c3QpOworICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXRlbUNvdW50KCkgPCBEaXNwbGF5TGlzdEJh
dGNoU2l6ZSB8fCAhbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgZmx1c2hEaXNwbGF5TGlzdChkaXNwbGF5TGlzdCk7CisgICAgICAg
IGRpc3BsYXlMaXN0LmNsZWFyKCk7CiAgICAgfQorICAgIAorICAgIERpc3BsYXlMaXN0Rmx1c2hJ
ZGVudGlmaWVyIG1fc2VudEZsdXNoSWRlbnRpZmllcjsKKyAgICBEaXNwbGF5TGlzdEZsdXNoSWRl
bnRpZmllciBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyOworICAgIFdlYkNvcmU6OlJlbW90ZVJl
c291cmNlSWRlbnRpZmllciBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllciB7IFdlYkNvcmU6OlJl
bW90ZVJlc291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFdlYWtQdHI8UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5PiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuY3BwCmluZGV4IGIxNDYxYjQ4MjE0OGQyYjc1YjQwZjA5OGQ5NDBjZGUxMGFiNGZmY2Uu
LjVkNGUwODIwZTA5YTUxNGY5YmZlNTM4ZWEyOGFmZjJlODllODJjNzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1
ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29u
bmVjdGlvbi5oIgorI2luY2x1ZGUgIkltYWdlRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eU1lc3NhZ2VzLmgiCkBAIC04OCwzOCArODksNzUgQEAgYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OndhaXRGb3JGbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKCkKIAogc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0
ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgU2hvdWxkQWNjZWxlcmF0ZSBzaG91
bGRBY2NlbGVyYXRlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSkKIHsKKyAgICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGU7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKKwogICAgIGlmIChzaG91bGRB
Y2NlbGVyYXRlID09IFNob3VsZEFjY2VsZXJhdGU6OlllcykgewotICAgICAgICBpZiAoYXV0byBp
bWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKHNp
emUsIFJlbmRlcmluZ01vZGU6OlJlbW90ZUFjY2VsZXJhdGVkLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsICp0aGlzKSkgewotICAgICAgICAgICAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyTWFwLmFkZChpbWFnZUJ1ZmZlci0+cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCksIGltYWdl
QnVmZmVyLmdldCgpKTsKLSAgICAgICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKLSAgICAgICAg
fQorICAgICAgICByZW5kZXJpbmdNb2RlID0gUmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0
ZWQ7CisgICAgICAgIGltYWdlQnVmZmVyID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5OjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCAqdGhpcyk7CisgICAgfQorCisgICAg
aWYgKCFpbWFnZUJ1ZmZlcikgeworICAgICAgICByZW5kZXJpbmdNb2RlID0gUmVuZGVyaW5nTW9k
ZTo6UmVtb3RlVW5hY2NlbGVyYXRlZDsKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBVbmFjY2VsZXJh
dGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwg
KnRoaXMpOwogICAgIH0KIAotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gVW5hY2NlbGVyYXRl
ZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpSZW1v
dGVVbmFjY2VsZXJhdGVkLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsICp0aGlzKSkgewot
ICAgICAgICBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuYWRkKGltYWdlQnVmZmVyLT5y
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VCdWZmZXIuZ2V0KCkpOworICAgIGlmIChp
bWFnZUJ1ZmZlcikgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2Nh
bGUsIGNvbG9yU3BhY2UsIGltYWdlQnVmZmVyLT5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSks
IG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgICAgICBtX3JlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5jYWNoZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyLT5yZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIoKSwgaW1hZ2VCdWZmZXIuZ2V0KCkpOwogICAgICAgICByZXR1cm4gaW1hZ2VCdWZm
ZXI7CiAgICAgfQogCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKK1JlZlB0cjxJbWFnZURhdGE+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJ
bnRSZWN0JiBzcmNSZWN0LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKQoreworICAgIElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YVJlZmVy
ZW5jZTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6R2V0
SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KSwgTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkdldEltYWdlRGF0YTo6UmVwbHko
aW1hZ2VEYXRhUmVmZXJlbmNlKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgMV9zKTsK
KyAgICByZXR1cm4gaW1hZ2VEYXRhUmVmZXJlbmNlLmJ1ZmZlcigpOworfQorCit2b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hEaXNwbGF5TGlzdChjb25zdCBEaXNwbGF5TGlz
dDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OkZsdXNoRGlzcGxheUxpc3QoZGlzcGxheUxpc3QsIHJlbW90ZVJlc291cmNl
SWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworfQorCitEaXNwbGF5
TGlzdEZsdXNoSWRlbnRpZmllciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoRGlz
cGxheUxpc3RBbmRDb21taXQoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5
TGlzdCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikK
K3sKKyAgICBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBzZW50Rmx1c2hJZGVudGlmaWVyID0g
RGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Rmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChkaXNw
bGF5TGlzdCwgc2VudEZsdXNoSWRlbnRpZmllciwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwg
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAgcmV0dXJuIHNlbnRGbHVzaElkZW50
aWZpZXI7Cit9CisKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVt
b3RlUmVzb3VyY2UoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcikKIHsKLSAgICAvLyBDcmVhdGVJbWFnZUJ1ZmZlciBtZXNzYWdlIHNob3VsZCBoYXZlIGJl
ZW4gcmVjZWl2ZWQgYmVmb3JlIHRoaXMgb25lLgotICAgIGJvb2wgZm91bmQgPSBtX2ltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJNYXAucmVtb3ZlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7Ci0g
ICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29u
c3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgaGFuZGxlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9pbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyTWFwLmdldChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKQotICAgICAg
ICBpbWFnZUJ1ZmZlci0+Y3JlYXRlQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZShoYW5kbGUpKTsKKyAgICBhdXRvIGlt
YWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVkSW1hZ2VCdWZmZXIo
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAg
ICByZXR1cm47CisgICAgCisgICAgaWYgKGltYWdlQnVmZmVyLT5pc0FjY2VsZXJhdGVkKCkpCisg
ICAgICAgIGRvd25jYXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdl
QnVmZmVyKS5jcmVhdGVCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlv
blNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRsZSkpOworICAgIGVsc2UKKyAgICAgICAg
ZG93bmNhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZl
cikuY3JlYXRlQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2Fs
ZSwgY29sb3JTcGFjZSwgV1RGTW92ZShoYW5kbGUpKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OmZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoRGlzcGxheUxpc3RG
bHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0g
bV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmdldChyZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpKQotICAgICAgICBpbWFnZUJ1ZmZlci0+Y29tbWl0Rmx1c2hDb250ZXh0KGZsdXNoSWRlbnRp
Zmllcik7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
LmNhY2hlZEltYWdlQnVmZmVyKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgaWYgKCFp
bWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGltYWdlQnVmZmVyLT5pc0Fj
Y2VsZXJhdGVkKCkpCisgICAgICAgIGRvd25jYXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jb21taXRGbHVzaERpc3BsYXlMaXN0KGZsdXNoSWRlbnRp
Zmllcik7CisgICAgZWxzZQorICAgICAgICBkb3duY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jb21taXRGbHVzaERpc3BsYXlMaXN0KGZsdXNo
SWRlbnRpZmllcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmgKaW5kZXggOWQyOTAwMjNkNDk3MjFlYWQ2Y2I5ODc5OWQyNmY1
YThkMGVkNGRiZS4uM2ZlNTFjNWRhOTVlMzc1MDNkN2RiZGI0NWViODY5N2NkNDI2M2Y3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCkBAIC0zMSwxNiArMzEsMjQgQEAK
ICNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCi0jaW5jbHVkZSAiUmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5LmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Rpc3Bs
YXlMaXN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFNpemUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVy
aW5nTW9kZS5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKK2Ns
YXNzIERpc3BsYXlMaXN0OworY2xhc3MgSXRlbTsKK30KK2NsYXNzIEZsb2F0U2l6ZTsKK2NsYXNz
IEltYWdlRGF0YTsKK2VudW0gY2xhc3MgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA6IHVpbnQ4X3Q7
CitlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90OworZW51bSBjbGFzcyBSZW5kZXJpbmdN
b2RlIDogdWludDhfdDsKK2VudW0gY2xhc3MgU2hvdWxkQWNjZWxlcmF0ZSA6IGJvb2w7Cit9CisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkK
QEAgLTUyLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgflJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSgpOwogCi0gICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
OyB9CisgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5JiByZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkoKSB7IHJldHVybiBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eTsgfQogCiAgICAgLy8gSVBD
OjpNZXNzYWdlU2VuZGVyLgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBjb25zdCBvdmVycmlkZTsKQEAgLTYxLDcgKzY5LDExIEBAIHB1YmxpYzoKICAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKKyAgICAvLyBNZXNzYWdlcyB0
byBiZSBzZW50LgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3Jl
YXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6U2hvdWxk
QWNjZWxlcmF0ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlKTsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IHNyY1JlY3QsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBm
bHVzaERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYs
IFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgRGlzcGxheUxpc3RGbHVz
aElkZW50aWZpZXIgZmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
OwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbW90ZVJlc291cmNl
SWRlbnRpZmllcik7CiAKICAgICBib29sIHdhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVh
dGVkKCk7CkBAIC03NCw4ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbWFnZUJ1ZmZlckJh
Y2tlbmRXYXNDcmVhdGVkKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGZsdXNoRGlzcGxheUxpc3RXYXND
b21taXR0ZWQoRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllcik7CiAKLSAgICB1c2luZyBJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFw
ID0gSGFzaE1hcDxXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eSo+OwotICAgIEltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXJNYXAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwOworICAgIFJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB7ICp0aGlzIH07CiAgICAgUmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciB7IFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGVhNjg0YmJiM2U2YjVmZDM4MWQ5
NjkxNzg1N2EwYWIzZDQzZDUwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcApAQCAtMCww
ICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisj
aW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZVJlc291cmNlQ2FjaGVQcm94
eTo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYg
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgIDogbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkocmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQoreworfQorCit2b2lkIFJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVJbWFnZUJ1ZmZlcihSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQorewor
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9pbWFnZUJ1ZmZlcnMuYWRkKGlkZW50aWZpZXIsIGltYWdl
QnVmZmVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50
cnkpOworfQorCitJbWFnZUJ1ZmZlciogUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZWRJ
bWFnZUJ1ZmZlcihSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBy
ZXR1cm4gbV9pbWFnZUJ1ZmZlcnMuZ2V0KGlkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKFJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciBpZGVudGlmaWVyKQoreworICAgIGJvb2wgZm91bmQgPSBtX2ltYWdlQnVmZmVycy5yZW1v
dmUoaWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOworICAgIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShpZGVudGlm
aWVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BV
X1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTA4
MTVjODUyNWFhYzJmYmIxN2M1Mjc3YmVhN2UwNWE0NGI4MDFmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQor
CisjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJbWFnZUJ1ZmZl
cjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTsKKworY2xhc3MgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHsKK3B1YmxpYzoKKyAg
ICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Jik7
CisKKyAgICB2b2lkIGNhY2hlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciopOworICAgIFdlYkNvcmU6OkltYWdlQnVmZmVy
KiBjYWNoZWRJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwor
ICAgIHZvaWQgcmVsZWFzZUltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
Zmllcik7CisKK3ByaXZhdGU6CisgICAgdXNpbmcgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eUhhc2hN
YXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6
SW1hZ2VCdWZmZXIqPjsKKyAgICAKKyAgICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5SGFzaE1hcCBt
X2ltYWdlQnVmZmVyczsKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCg==
</data>
<flag name="review"
          id="428144"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412367</attachid>
            <date>2020-10-26 17:56:55 -0700</date>
            <delta_ts>2020-10-26 19:44:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217558-20201026175652.patch</filename>
            <type>text/plain</type>
            <size>86666</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4OTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGZmYTc4ZjlkYTE1OTk2
ZWFmZWMzZWM3ZjQwMDMwZGQxZmMyMGViNS4uOWFkZjA5OGUxZDMwZThmOTJkOWQ3OWE0MWJmMDhm
YjFhM2FlMDIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIwLTEwLTI2ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXTogSW50cm9kdWNlIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB0byBtYW5hZ2UgdGhl
IHJlbW90ZSByZXNvdXJjZXMgaW4gV2ViIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU1OAorCisgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEZyYXNlci4KKworICAgICAgICBSZW5hbWUgUmVjb3JkZXI6Ok9ic2VydmVyIHRvIFJlY29y
ZGVyOjpEZWxlZ2F0ZSBiZWNhdXNlIGl0IHdpbGwgYmUgcmVzcG9uc2libGUKKyAgICAgICAgZm9y
IGNyZWF0aW5nIERpc3BsYXlMaXN0SXRlbXMgaW4gZnV0dXJlIHBhdGNoZXMuIFNvIGl0IHdpbGwg
bm90IGJlIGp1c3QKKyAgICAgICAgYW4gb2JzZXJ2ZXIuIEFsc28gZG8gbm90IG1ha2UgRGlzcGxh
eUxpc3Q6OkltYWdlQnVmZmVyIGEgc3VwZXJjbGFzcyBvZiBpdC4KKyAgICAgICAgUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eSwgd2hpY2ggaXMgYSBzdXBlcmNsYXNzIG9mIERpc3BsYXlMaXN0OjpJbWFn
ZUJ1ZmZlciwKKyAgICAgICAgd2lsbCBiZSB0aGUgc3VwZXJjbGFzcyBvZiBSZWNvcmRlcjo6RGVs
ZWdhdGUuCisKKyAgICAgICAgTWFrZSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmlzQWNjZWxlcmF0ZWQg
YSBzdGF0aWMgbWVtYmVyIGluc3RlYWQgb2YgYSB2aXJ0dWFsCisgICAgICAgIG1ldGhvZC4gUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IHdvdWxkIHdhbnQgdG8ga25vdyB3aGV0aGVyIHRoZSBi
YWNrZW5kCisgICAgICAgIG9mIGFuIEltYWdlQnVmZmVyIGlzQWNjZWxlcmF0ZWQgb3Igbm90IHdp
dGhvdXQgaGF2aW5nIHRvIGNyZWF0ZSBpdC4KKyAgICAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kOjpp
c0FjY2VsZXJhdGVkIHdpbGwgYmUgc2V0IHRvIGZhbHNlIGFuZAorICAgICAgICBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OmlzQWNjZWxlcmF0ZWQgd2lsbCBiZSBzZXQgdG8gdHJ1ZS4KKwor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
OjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJCYWNrZW5kOjppc0FjY2VsZXJhdGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlSWRlbnRp
Zmllci5oLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ6OmlzQWNjZWxlcmF0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nQ29udGV4dDo6RHJhd2lu
Z0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdERyYXdpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RHJhd2luZ0NvbnRleHQ6OkRyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpSZWNvcmRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OndpbGxBcHBlbmRJdGVtKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6
fkRlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6T2Jz
ZXJ2ZXI6On5PYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVjb3JkZXI6Ok9ic2VydmVyOjp3aWxsQXBwZW5kSXRlbSk6IERlbGV0ZWQuCisKIDIwMjAt
MTAtMjYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIEpTQyBzcGVj
aWFsIGZ1bmN0aW9uIGZvcndhcmQgZGVjbGFyYXRpb25zIChlLmcuIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04pIHRoYXQgYXJlIGludGVybmFsIHRvIGEgY3BwIGZpbGUgc2hvdWxkIGJlIGRlY2xh
cmVkIHdpdGggc3RhdGljIHRvIGF2b2lkIGV4dGVybmFsIGxpbmthZ2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTFj
ZDMwZDk1MGM1ZTA5OGUzZGJjOTczOGIwZTNjZjZjNDFlMDUwYy4uYmNmOTQ2Y2VjMjM0ZTM5ZmM1
MDZhZTA3NDEyMjE3OTQzNDZhNzQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NyBAQAorMjAyMC0x
MC0yNiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAg
ICAgIFtHUFUgUHJvY2Vzc106IEludHJvZHVjZSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgdG8g
bWFuYWdlIHRoZSByZW1vdGUgcmVzb3VyY2VzIGluIFdlYiBQcm9jZXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1NTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgUmVtb3ZlIFJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJQcm94eSBhbmQgbW92ZSBzZW5kaW5nIHRoZSBtZXNzYWdlcworICAgICAg
ICB0byBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuCisKKyAgICAgICAgVG8gYWxsb3cgY2Fz
dGluZyBJbWFnZUJ1ZmZlciB0byBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LCBhIG5ldyBtZXRob2Qg
bmFtZWQKKyAgICAgICAgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkgaXMgYWRkZWQgdG8gSWFt
Z2VCdWZmZXIgYW5kIGl0IGlzIG9ubHkgb3ZlcnJpZGRlbgorICAgICAgICBieSBSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LiBUaGlzIG1ldGhvZCBpcyB1c2VkIGluIFNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFMKKyAgICAgICAgbWFjcm9zIGFsb25nIHdpdGggSWFtZ2VCdWZmZXI6OmlzQWNjZWxlcmF0ZWQo
KS4KKworICAgICAgICBJbnRyb2R1Y2UgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHdoaWNoIHdp
bGwgbWFuYWdlIGNhY2hpbmcgYW5kIHJlbGVhc2luZworICAgICAgICB0aGUgUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eS4gQ2FjaGluZyBOYXRpdmVJbWFnZSB3aWxsIGJlIGFkZGVkIHRvIGl0IGluCisg
ICAgICAgIGZ1dHVyZSBwYXRjaGVzLiBNb3JlIGFib3V0IGNvbnRyb2xsaW5nIHRoZSBsaWZlIGN5
Y2xlcyBvZiByZW1vdGUgcmVzb3VyY2VzIAorICAgICAgICB3aWxsIGJlIGFkZGVkIGFsc28gd2hl
biBzdXBwb3J0aW5nIGRyYXdpbmcgcmVtb3RlIHJlc291cmNlcyB0byByZW1vdGUgY2xpZW50Cisg
ICAgICAgIGluIGZ1dHVyZSBwYXRjaGVzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6OlJlbW90ZUlt
YWdlQnVmZmVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpp
bWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Zmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Zmx1c2hEaXNwbGF5TGlzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmZsdXNoRGlzcGxheUxpc3RB
bmRDb21taXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJ
bWFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxl
YXNlUmVtb3RlUmVzb3VyY2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNv
dXJjZUNhY2hlOjpjYWNoZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVz
b3VyY2VDYWNoZTo6Y2FjaGVkSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAoaXNUeXBl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyUHJveHkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oOiBSZW1vdmVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJv
eHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6flJlbW90ZUltYWdlQnVm
ZmVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVh
dGVCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y29t
bWl0Rmx1c2hEaXNwbGF5TGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVy
UHJveHk6OlJlbW90ZUltYWdlQnVmZmVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5Ojppc1BlbmRpbmdGbHVzaCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OnRpbWVvdXRXYWl0Rm9yRmx1c2hEaXNwbGF5TGlzdFdh
c0NvbW1pdHRlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmZs
dXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldEltYWdlRGF0YSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hEaXNwbGF5
TGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1
c2hEaXNwbGF5TGlzdEFuZENvbW1pdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjppbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVk
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaERp
c3BsYXlMaXN0V2FzQ29tbWl0dGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDogQ29w
aWVkIGZyb20gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGUuY3BwLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OlJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eTo6Y2FjaGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eTo6Y2FjaGVkSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVhc2VJbWFnZUJ1ZmZlcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlLmguCisKIDIwMjAtMTAtMjYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBBZGQgbnVsbCBjaGVja3MgYW5kIHNtYXJ0IHBvaW50ZXJzIGlu
IFBERiBhbmQgUGx1Z2luIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiMzAzMzQyZDQ1MTE4ZjA5OGE0YTIzM2E0N2E5Y2Vm
OTJjZjlhNTJkLi5lY2Q0NTA4NWQ5YWUyNDg4YTBhMDk1ODQ2NjQ2ZjRlN2M1YTdhMGNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yMTYxLDcgKzIxNjEsNyBAQAogCQk3MjdBN0YzQTI0MDc4Qjg0MDA0RDI5MzEgLyogSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MkJBQzNBQjIzRTFFNTQ0MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNzI5OUJDNjcyM0Q2QTUzMjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlC
QzY0MjNENjg2QTYwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI5OUJDNjgyM0Q2QTUz
RTAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdN
b2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
NzI5RDA1MzAyNTMxNDI0MzAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlSWRlbnRpZmllci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5RDA1MkUyNTMx
M0UyNjAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyOUQwNTMwMjUzMTQyNDMwMDQy
MjA5OCAvKiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOUQwNTJFMjUzMTNFMjYwMDQyMjA5OCAvKiBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkE3M0JFRjI0NUEzRjkwMDAxQzlEMDMgLyogQW5pbWF0
aW9uRnJhbWVSYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MjJBODE1QzIzOEZENTA1MDBDMDA1ODMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJCQUMzQUUy
M0UxRjBCMDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8q
IEltYWdlQnVmZmVyQmFja2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTc1NTNDRkU4MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZVJlY29y
ZEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDc1NTNDRkU2MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZVJlY29yZEZhY3RvcnkuaCAqLzsg
fTsKQEAgLTk5NDYsNyArOTk0Niw3IEBACiAJCTcyN0FGRUQzMUEyRUE2QTAwMDA0NDJFOCAvKiBF
WFRzUkdCLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFWFRzUkdCLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJl
bXVsdGlwbGljYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMg
LyogUmVuZGVyaW5nTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJpbmdNb2RlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcyOUQwNTJFMjUzMTNFMjYwMDQyMjA5OCAvKiBSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyOUQwNTJFMjUzMTNFMjYw
MDQyMjA5OCAvKiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcyQkFDM0E0MjNFMTczMjcwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJCYWNrZW5kLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTUyM0UxNzMyODAwOEQ3NDFD
IC8qIEltYWdlQnVmZmVyQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbWFnZUJ1ZmZlckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJC
QUMzQTYyM0UxNzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1JbWFnZUJ1ZmZlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjYzNjYsMTAgKzI2MzY2LDEwIEBACiAJCQkJMDc0RTgyQjkx
OEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5oICovLAogCQkJCUJDQUI0MTdG
MTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uY3BwICovLAogCQkJCUJDQUI0MTgwMTNFMzU2RTgw
MEQ4QUFGMyAvKiBSZWdpb24uaCAqLywKLQkJCQk3MjlEMDUyRTI1MzEzRTI2MDA0MjIwOTggLyog
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmggKi8sCiAJCQkJMDczQTE1NTEyMTc3QTM5ODAwRUEw
OEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmNwcCAqLywKIAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBF
QTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCAqLywKIAkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBD
QzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovLAorCQkJCTcyOUQwNTJFMjUzMTNFMjYwMDQyMjA5
OCAvKiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCAqLywKIAkJCQlBNzNGOTVGQzEyQzk3
QkZFMDAzMUFBRjkgLyogUm91bmRlZFJlY3QuY3BwICovLAogCQkJCUE3M0Y5NUZEMTJDOTdCRkUw
MDMxQUFGOSAvKiBSb3VuZGVkUmVjdC5oICovLAogCQkJCTBGM0RENDREMTJGNUVBMUIwMDBEOTE5
MCAvKiBTaGFkb3dCbHVyLmNwcCAqLywKQEAgLTMzNzQyLDcgKzMzNzQyLDYgQEAKIAkJCQk0NkI5
NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEQzMxMkU5MjJGQ0Q3QzAwMDEyMDRFQyAvKiBSZW1vdGVQbGF5YmFjay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0RDMzEyRUIyMkZDRDdDOTAwMTIwNEVDIC8qIFJlbW90ZVBsYXliYWNrQXZhaWxh
YmlsaXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAotCQkJCTcyOUQwNTMwMjUzMTQyNDMwMDQy
MjA5OCAvKiBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3
M0ExNTU0MjE3N0E0MjYwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRDA2QzBEOEYwQ0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92ZUZvcm1hdENvbW1hbmQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTA1MDk5RTY0OTIwMDU2RTU4MSAvKiBSZW1vdmVO
b2RlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzc4Miw2ICszMzc4MSw3IEBACiAJCQkJ
MDhGMkYwMEExMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA4NjQxRDQ4MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzI5OUJDNjgyM0Q2QTUzRTAwQ0M2
ODgzIC8qIFJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyOUQwNTMwMjUzMTQy
NDMwMDQyMjA5OCAvKiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU1NkM3QzRCMjIxMjM5OTcwMDlCMDZDQSAvKiBSZW5kZXJpbmdVcGRhdGVTY2hlZHVs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0ODc4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5k
ZXJJbmxpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1OTVGRjQ3MTgyNENFRTMwMEZGNTFDRCAv
KiBSZW5kZXJJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKaW5kZXggYzZjMTll
MTI4OWY0OGIwMjBlYTc4YmNlMzlkMTA2YzNkYjkzYjA3ZC4uODY5NzM5NWZhNGM4ZDA4NTFjN2I3
NzkwNDA2ZTYxYzkxOGZjZWE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaApAQCAtNTAsMTMgKzUwLDggQEAgcHVi
bGljOgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJUeXBlPihuZXcgSW1hZ2VCdWZmZXJUeXBlKFdURk1vdmUoYmFj
a2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKTsKICAgICB9Ci0g
ICAgCi0gICAgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAg
ICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAg
ICAgIHJldHVybiBiYWNrZW5kLT5pc0FjY2VsZXJhdGVkKCk7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9CisKKyAgICBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBCYWNrZW5kVHlwZTo6aXNBY2NlbGVyYXRlZDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgQ29u
Y3JldGVJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2VuZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4
IDBhZTlmY2JkMDU4OGQ0YzRlMWVmNWFmM2NjN2YxMmI2MTJiZjc4ZGEuLjg1YzA3YmIwOTUxM2Jh
MDNiYzBlZGY1MjM3MzNmNzg0ODNkNjUyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAi
SW1hZ2VCdWZmZXJCYWNrZW5kLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nTW9kZS5oIgorI2luY2x1
ZGUgIlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTYwLDYgKzYxLDkgQEAgcHVibGljOgogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgfkltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OwogCisgICAgdmlydHVhbCBib29sIGlzQWNj
ZWxlcmF0ZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4geyB9OyB9
CisgICAgCiAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoQ29udGV4dCgpID0gMDsKIApAQCAtMTA0LDggKzEwOCw2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMJiwgR0NHTGVudW0sIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVt
LCBib29sLCBib29sKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3QgPSAwOwogICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2VsZXJh
dGVkKCkgY29uc3QgPSAwOwotCiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VCdWZmZXIoKSA9IGRlZmF1
bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJCYWNrZW5kLmgKaW5kZXggNThmYzE0ODM2ZDkyYWEyMDAxOWYyMGZlZWRjNTU3MWU5YWI1
ZTk1Yy4uY2I1ODcyNTY3ZjA4ODNiNWJkMDJlMGVlY2I4Y2VmZGJlNzEwYThlYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5k
LmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNvcHlUb1Bs
YXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYsIEdDR0xlbnVtLCBQbGF0Zm9y
bUdMT2JqZWN0LCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICAKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNPcmlnaW5BdFVwcGVyTGVmdENvcm5l
ciA9IGZhbHNlOwotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNBY2NlbGVyYXRlZCA9IGZh
bHNlOwogCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZmZXJCYWNrZW5k
KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmFmNTQyZGZlYzg0N2FiYzM3MWFhMmYx
ZThlNGI4ZGQ5ZmIxMTBlNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgPHd0Zi9P
YmplY3RJZGVudGlmaWVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXJUeXBlIHsgfTsKLXVzaW5nIFJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciA9IE9iamVjdElkZW50aWZpZXI8UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyVHlwZT47Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzcxOGJmMzBkMThjZDU3M2QwZjFi
MmRiZDRlYzBmZmE3NTdhZWMwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oCkBAIC0wLDAgKzEs
MzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJ
ZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciA9IE9iamVjdElkZW50aWZpZXI8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyVHlwZT47CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
Y3BwCmluZGV4IGM4MDY1YTllYzI1MTQ2NDRmNzQwNWY5YTU0MTNmNjIyMzU2MjcxNTQuLmRiYzNi
N2ViOGIzZDFhZDg4ZDBhYjNmMGVlZjkwYTdjOGQ4NWUwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtMTkwLDExICsxOTAsNiBAQCBJT1N1cmZhY2UqIEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZDo6c3VyZmFjZSgpCiAgICAgcmV0dXJuIG1fc3VyZmFjZS5n
ZXQoKTsKIH0KIAotYm9vbCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmlzQWNjZWxlcmF0
ZWQoKSBjb25zdAotewotICAgIHJldHVybiB0cnVlOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBIQVZFKElPU1VSRkFDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kLmgKaW5kZXggMjQxOGYxZDQ1ZDUzZDQ1OTMzYjM5MDRhMjg4YzYxMDFmMTRiY2MzMS4u
MzIzMDk0ZWE3OTVjNWQyNDgzYzg4NDQwMzEyNGE5MDQwY2M3NDBmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTYyLDkgKzYyLDkgQEAgcHVibGljOgogICAgIFJlZlB0
cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZv
cm1hdCwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcHV0SW1hZ2VE
YXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYs
IGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhh
UHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkgb3ZlcnJpZGU7CiAgICAgSU9TdXJmYWNlKiBz
dXJmYWNlKCk7Ci0gICAgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNPcmlnaW5BdFVwcGVyTGVmdENvcm5lciA9IHRydWU7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzQWNjZWxlcmF0ZWQgPSB0cnVlOwogCiBwcm90
ZWN0ZWQ6CiAgICAgc3RhdGljIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbnRleHRDb2xv
clNwYWNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCmluZGV4IDIzY2MwN2U4YWU0NDJiZGNlYTBkMzY3
NGE1YTg1NTFjNjVjZmRjODcuLmQ0NjE3ZDM1MTZmNGYzZTUxZDc1ZDY0NDM0YTZhMzk0NTdhMDAw
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5j
cHAKQEAgLTMzLDkgKzMzLDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNw
bGF5TGlzdCB7CiAKLURyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNp
emUmIGxvZ2ljYWxTaXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIFJlY29y
ZGVyOjpPYnNlcnZlciogb2JzZXJ2ZXIpCitEcmF3aW5nQ29udGV4dDo6RHJhd2luZ0NvbnRleHQo
Y29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0
aWFsQ1RNLCBSZWNvcmRlcjo6RGVsZWdhdGUqIGRlbGVnYXRlKQogICAgIDogbV9jb250ZXh0KFsm
XShHcmFwaGljc0NvbnRleHQmIGRpc3BsYXlMaXN0Q29udGV4dCkgewotICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCBtX2Rpc3BsYXlMaXN0LCBH
cmFwaGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoeyB9LCBsb2dpY2FsU2l6ZSksIGluaXRp
YWxDVE0sIG9ic2VydmVyKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjb3JkZXI+KGRp
c3BsYXlMaXN0Q29udGV4dCwgbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwg
RmxvYXRSZWN0KHsgfSwgbG9naWNhbFNpemUpLCBpbml0aWFsQ1RNLCBkZWxlZ2F0ZSk7CiAgICAg
fSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5o
CmluZGV4IDdiNjczZjMyYWQ4MTVhNTAwODFiN2U3YWIxMDgxMzE3MTdmZGU1NDMuLjIyZWQyNTZl
ODBhZDI5M2EwNTIwNjliNzQzMDg4YTEzNTFmNDdjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2Ug
RGlzcGxheUxpc3QgewogY2xhc3MgRHJhd2luZ0NvbnRleHQgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIERyYXdpbmdDb250ZXh0KGNv
bnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlh
bENUTSA9IHsgfSwgUmVjb3JkZXI6Ok9ic2VydmVyKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVf
RVhQT1JUIERyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSA9IHsgfSwgUmVjb3JkZXI6OkRlbGVnYXRlKiA9
IG51bGxwdHIpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1
cm4gY29uc3RfY2FzdDxEcmF3aW5nQ29udGV4dCY+KCp0aGlzKS5tX2NvbnRleHQ7IH0KICAgICBX
RUJDT1JFX0VYUE9SVCBSZWNvcmRlciYgcmVjb3JkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlci5oCmluZGV4IDZmZDkxMmRmYjhmZTExYzA5OGRkNjEyNmE4Yzg3
OGFjNmJhN2FlMDIuLjMyNTk5ZTA2MmQ3Y2Y1OWQxZGMyZWFkMDFlNzYwZDY2ZTNmN2VjM2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaApAQCAtMzIsNyArMzIs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4KLWNsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIENv
bmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVjb3JkZXI6Ok9ic2VydmVy
IHsKK2NsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2Vu
ZFR5cGU+IHsKICAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlciA9IENvbmNyZXRlSW1h
Z2VCdWZmZXI8QmFja2VuZFR5cGU+OwogCiBwdWJsaWM6CkBAIC00OCwxMiArNDgsMTIgQEAgcHVi
bGljOgogCiAgICAgSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGRh
dGFCYWNrZW5kLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgICAgIDogQmFzZUNvbmNyZXRl
SW1hZ2VCdWZmZXIoV1RGTW92ZShkYXRhQmFja2VuZCkpCi0gICAgICAgICwgbV9kcmF3aW5nQ29u
dGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSksIHRoaXMpCisgICAgICAg
ICwgbV9kcmF3aW5nQ29udGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSkp
CiAgICAgewogICAgIH0KIAotICAgIEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkK
LSAgICAgICAgOiBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5nQ29udGV4dENU
TShzaXplKSwgdGhpcykKKyAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJl
Y29yZGVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUgPSBudWxscHRyKQorICAgICAgICA6IG1fZHJhd2lu
Z0NvbnRleHQoc2l6ZSwgaW5pdGlhbERyYXdpbmdDb250ZXh0Q1RNKHNpemUpLCBkZWxlZ2F0ZSkK
ICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAK
aW5kZXggNjhkMmY2ODA1MTVlYWU1NThhMGQ0ZmJlZjZhYjFhMjdlMGEwOWViNC4uMWUxZTkxYWEw
ODRiOTZlNmViMjY1YzFmODBmZjJmOGU1MWZmMWZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMzcsMTAgKzM3LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCi1SZWNvcmRlcjo6UmVjb3JkZXIoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNLCBPYnNlcnZlciogb2JzZXJ2ZXIpCitSZWNv
cmRlcjo6UmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBEaXNwbGF5TGlzdCYgZGlz
cGxheUxpc3QsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgRmxvYXRS
ZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNLCBEZWxl
Z2F0ZSogZGVsZWdhdGUpCiAgICAgOiBHcmFwaGljc0NvbnRleHRJbXBsKGNvbnRleHQsIGluaXRp
YWxDbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSkKICAgICAsIG1fZGlzcGxheUxpc3QoZGlzcGxheUxp
c3QpCi0gICAgLCBtX29ic2VydmVyKG9ic2VydmVyKQorICAgICwgbV9kZWxlZ2F0ZShkZWxlZ2F0
ZSkKIHsKICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgIlxuUmVj
b3JkaW5nIHdpdGggY2xpcCAiIDw8IGluaXRpYWxDbGlwKTsKICAgICBtX3N0YXRlU3RhY2suYXBw
ZW5kKHsgc3RhdGUsIGluaXRpYWxDVE0sIGluaXRpYWxDbGlwIH0pOwpAQCAtOTMsOCArOTMsOCBA
QCBzdGF0aWMgUmVmPEl0ZW0+IGNyZWF0ZVN0YXRlQ2hhbmdlSXRlbShjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZSYgY2hhbmdlcwogCiB2b2lkIFJlY29yZGVyOjp3aWxsQXBwZW5kSXRl
bShjb25zdCBJdGVtJiBpdGVtKQogewotICAgIGlmIChtX29ic2VydmVyKQotICAgICAgICBtX29i
c2VydmVyLT53aWxsQXBwZW5kSXRlbShpdGVtKTsKKyAgICBpZiAobV9kZWxlZ2F0ZSkKKyAgICAg
ICAgbV9kZWxlZ2F0ZS0+d2lsbEFwcGVuZEl0ZW0oaXRlbSk7CiAKICAgICBpZiAoaXRlbS5pc0Ry
YXdpbmdJdGVtKCkKICNpZiBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuaAppbmRleCAxYjI0YzI2YzY3Mjg4ZjgxNzI3M2EyZDJhZWYyYjRiYzk2ZTM1Yzc1Li42YTI3
NzE4OTdlZDIzZTY5MDU2ZmFlYThmNWU1MzM5OGE1ZjhjOGM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTUzLDggKzUzLDggQEAgY2xhc3MgUmVjb3JkZXIgOiBw
dWJsaWMgR3JhcGhpY3NDb250ZXh0SW1wbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVjb3JkZXIpOwogcHVibGljOgotICAgIGNsYXNz
IE9ic2VydmVyOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYs
IERpc3BsYXlMaXN0JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJl
Y3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBPYnNlcnZlciogPSBudWxs
cHRyKTsKKyAgICBjbGFzcyBEZWxlZ2F0ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlcihH
cmFwaGljc0NvbnRleHQmLCBEaXNwbGF5TGlzdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
RGVsZWdhdGUqID0gbnVsbHB0cik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+UmVjb3Jk
ZXIoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHV0SW1hZ2VEYXRhKEFscGhhUHJlbXVs
dGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYsIGNvbnN0IEludFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRp
b24gZGVzdEZvcm1hdCk7CkBAIC02Myw5ICs2Myw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBw
ZW5kSXRlbUFuZFVwZGF0ZUV4dGVudChSZWY8RHJhd2luZ0l0ZW0+JiYpOwogCi0gICAgY2xhc3Mg
T2JzZXJ2ZXIgeworICAgIGNsYXNzIERlbGVnYXRlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHZp
cnR1YWwgfk9ic2VydmVyKCkgeyB9CisgICAgICAgIHZpcnR1YWwgfkRlbGVnYXRlKCkgeyB9CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQXBwZW5kSXRlbShjb25zdCBJdGVtJikgeyB9OwogICAg
IH07CiAKQEAgLTE4Nyw3ICsxODcsNyBAQCBwcml2YXRlOgogICAgIENvbnRleHRTdGF0ZSYgY3Vy
cmVudFN0YXRlKCk7CiAKICAgICBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKLSAgICBPYnNl
cnZlciogbV9vYnNlcnZlcjsKKyAgICBEZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKIAogICAgIFZlY3Rv
cjxDb250ZXh0U3RhdGUsIDMyPiBtX3N0YXRlU3RhY2s7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAppbmRleCA3OGQ4
MmY4YzQ0YmMzN2QyMTNhODA4ODRhYmU4NGZjZjAyYTA0ZjJiLi41MTg4ODRjOGQzODg2ZDBkNDBl
MDhkMmZjNTEyZGVjNDMxNTM4YmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaApAQCAtNDEsMTYgKzQxLDE2IEBAIGNs
YXNzIFJlbW90ZUltYWdlQnVmZmVyIDogcHVibGljIFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZm
ZXI8QmFja2VuZFR5cGU+LCBwdWJsCiAgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6
OnB1dEltYWdlRGF0YTsKIAogcHVibGljOgotICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKQorICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVm
ZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8UmVtb3RlSW1hZ2VCdWZmZXI+KHNpemUsIHJlc29sdXRpb25T
Y2FsZSwgY29sb3JTcGFjZSwgbnVsbHB0ciwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVm
ZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8UmVtb3RlSW1hZ2VCdWZmZXI+KHNpemUsIHJlc29sdXRpb25T
Y2FsZSwgY29sb3JTcGFjZSwgbnVsbHB0ciwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBSZW1vdGVJbWFnZUJ1ZmZlcihz
dGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2VuZCwgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICBSZW1vdGVJbWFnZUJ1ZmZlcihz
dGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2VuZCwgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICAgICAgOiBCYXNlQ29u
Y3JldGVJbWFnZUJ1ZmZlcihXVEZNb3ZlKGJhY2tlbmQpKQogICAgICAgICAsIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZChyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQogICAgIHsKLSAgICAgICAgbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQobV9iYWNr
ZW5kLT5sb2dpY2FsU2l6ZSgpLCBtX2JhY2tlbmQtPmJhY2tlbmRTaXplKCksIG1fYmFja2VuZC0+
cmVzb2x1dGlvblNjYWxlKCksIG1fYmFja2VuZC0+Y29sb3JTcGFjZSgpLCBtX2JhY2tlbmQtPmNy
ZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
OworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaW1hZ2VCdWZmZXJCYWNrZW5kV2Fz
Q3JlYXRlZChtX2JhY2tlbmQtPmxvZ2ljYWxTaXplKCksIG1fYmFja2VuZC0+YmFja2VuZFNpemUo
KSwgbV9iYWNrZW5kLT5yZXNvbHV0aW9uU2NhbGUoKSwgbV9iYWNrZW5kLT5jb2xvclNwYWNlKCks
IG1fYmFja2VuZC0+Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCksIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCiAgICAgflJlbW90ZUltYWdlQnVmZmVyKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCAxZWYyOGVlMmYyNTIxZGNhNTU0ZjQ4MDUwMmY3Mjc0
YzljYzI5YjM4Li44NGI1ZmQ2NjE2YjFlZmE5MzEwMzc0OTExN2MwODk4NDY3MmFmZTNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC03Miw2MiArNzIsNjIgQEAgdWludDY0X3QgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogICAg
IHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCk7CiB9CiAKLXZv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6aW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChj
b25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSBoYW5kbGUsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmltYWdlQnVmZmVy
QmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50
U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6SW1hZ2VCdWZmZXJCYWNrZW5kV2Fz
Q3JlYXRlZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgV1RGTW92ZShoYW5kbGUpLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OkltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQobG9naWNhbFNpemUs
IGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoaGFuZGxl
KSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRp
Zmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Zmx1c2hEaXNwbGF5TGlz
dFdhc0NvbW1pdHRlZChEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIs
IFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoRGlz
cGxheUxpc3RGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Rmx1c2hEaXNwbGF5TGlzdFdhc0Nv
bW1pdHRlZChmbHVzaElkZW50aWZpZXIsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6Rmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZChmbHVzaElkZW50
aWZpZXIsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVy
aW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdl
YkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
Cit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZs
b2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAg
QVNTRVJUKHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQg
fHwgcmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpSZW1vdGVVbmFjY2VsZXJhdGVkKTsK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gaW1hZ2U7CiAKICAg
ICBpZiAocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpSZW1vdGVBY2NlbGVyYXRlZCkK
LSAgICAgICAgaW1hZ2UgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyOjpjcmVhdGUobG9n
aWNhbFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgKnRoaXMsIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcik7CisgICAgICAgIGltYWdlID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsICp0
aGlzLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgaWYgKCFpbWFnZSkKLSAg
ICAgICAgaW1hZ2UgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dp
Y2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCAqdGhpcywgcmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICAgICAgaW1hZ2UgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VC
dWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCAq
dGhpcywgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIGlmIChpbWFnZSkgewot
ICAgICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVJbWFnZUJ1ZmZlcihyZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIsIFdURk1vdmUoaW1hZ2UpKTsKKyAgICAgICAgbV9yZW1vdGVSZXNvdXJj
ZUNhY2hlLmNhY2hlSW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZN
b3ZlKGltYWdlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpmbHVzaERpc3BsYXlM
aXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3Qs
IFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmZsdXNoRGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAoYXV0byBp
bWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1v
dGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikpCiAgICAgICAgIGltYWdlQnVmZmVyLT5mbHVzaERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0
KTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpmbHVzaERpc3BsYXlMaXN0QW5k
Q29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxp
c3QsIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgUmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Zmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBEaXNwbGF5TGlzdEZsdXNoSWRl
bnRpZmllciBmbHVzaElkZW50aWZpZXIsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBt
X3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIocmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKSkgeworICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNh
Y2hlLmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpIHsKICAg
ICAgICAgaW1hZ2VCdWZmZXItPmZsdXNoRGlzcGxheUxpc3QoZGlzcGxheUxpc3QpOwogICAgICAg
ICBpbWFnZUJ1ZmZlci0+Zmx1c2hDb250ZXh0KCk7Ci0gICAgICAgIGZsdXNoRGlzcGxheUxpc3RX
YXNDb21taXR0ZWQoZmx1c2hJZGVudGlmaWVyLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwor
ICAgICAgICBmbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKGZsdXNoSWRlbnRpZmllciwgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Z2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24g
b3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFJlbW90ZVJlc291cmNlSWRl
bnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRp
cGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIFJlZlB0cjxJbWFnZURhdGE+IGltYWdlRGF0YTsKLSAgICBpZiAoYXV0
byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9y
ZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikpCiAgICAgICAgIGltYWdlRGF0YSA9IGltYWdlQnVmZmVyLT5nZXRJbWFnZURhdGEo
b3V0cHV0Rm9ybWF0LCBzcmNSZWN0KTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkltYWdl
RGF0YVJlZmVyZW5jZShXVEZNb3ZlKGltYWdlRGF0YSkpKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLnJl
bGVhc2VSZW1vdGVSZXNvdXJjZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIG1fcmVt
b3RlUmVzb3VyY2VDYWNoZS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
aAppbmRleCBlZmZiYTQ0OWIxODhlYTJiNTRkMzYyYzJhYzU0YzI4ZmMwY2NiM2VkLi41MjdkYWFi
NmY2MGUwZTIwZmEwY2Q0ZDMwYWI4MDQyOTc4OTQyMzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgK
QEAgLTYyLDggKzYyLDggQEAgcHVibGljOgogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mq
IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdDsKIAogICAgIC8vIE1lc3NhZ2VzIHRv
IGJlIHNlbnQuCi0gICAgdm9pZCBpbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJh
Y2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIElt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KTsKLSAgICB2b2lkIGZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoRGlzcGxheUxpc3RGbHVz
aElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9p
ZCBpbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYg
bG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGZs
dXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIsIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKIHByaXZhdGU6CiAgICAgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIpOwpAQCAtNzcsMTEgKzc3LDExIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3Nh
Z2VzIHRvIGJlIHJlY2VpdmVkLgotICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdChjb25zdCBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpOwotICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChjb25zdCBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGdldEltYWdl
RGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29y
ZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYpOwotICAg
IHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
Zmllcik7CisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CisgICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CisgICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgZ2V0SW1hZ2VEYXRh
KFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJ
bnRSZWN0IHNyY1JlY3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSYmKT4mJik7CisgICAg
dm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKIAogICAgIFJlbW90ZVJlc291cmNlQ2FjaGUgbV9yZW1vdGVSZXNvdXJjZUNhY2hl
OwogICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgppbmRl
eCAwMzVkNmJiNDYyYzFhYzJjOTI2NjEyMDAzNTg1Mjc1NzY3OGMzMDNhLi5hODhlMGZiNjI2MjQ5
MTg5ZDhmNWIzYTM5YjliNjY0Mjg2MjJjYWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5tZXNzYWdlcy5pbgpAQCAtMjMsMTEgKzIzLDExIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQogCiBtZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIE5vdFJlZkNvdW50ZWQgewot
ICAgIHZvaWQgQ3JlYXRlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXpl
LCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQotICAgIHZvaWQgRmx1c2hE
aXNwbGF5TGlzdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QgZGlzcGxheUxpc3Qs
IFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpCi0gICAgdm9pZCBGbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdCBkaXNwbGF5TGlzdCwgV2ViS2l0OjpEaXNwbGF5TGlzdEZsdXNoSWRl
bnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAgR2V0SW1hZ2VEYXRhKGVudW06dWludDhf
dCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6
SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKSAtPiAoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRh
KSBTeW5jaHJvbm91cwotICAgIHZvaWQgUmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJl
bW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgdm9p
ZCBDcmVhdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNv
cmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgdm9pZCBGbHVzaERp
c3BsYXlMaXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBkaXNwbGF5TGlzdCwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKKyAgICB2b2lkIEZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0IGRpc3BsYXlMaXN0LCBXZWJLaXQ6OkRpc3BsYXlMaXN0Rmx1
c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICBHZXRJbWFnZURhdGEo
ZW51bTp1aW50OF90IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0
LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIC0+IChJUEM6OkltYWdlRGF0YVJl
ZmVyZW5jZSBpbWFnZURhdGEpIFN5bmNocm9ub3VzCisgICAgdm9pZCBSZWxlYXNlUmVtb3RlUmVz
b3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlLmNwcAppbmRleCBhZDA0NzI2MjUyMTk2Nzk0NjQ5NGM4YWM3YTU0OTAzMTBhN2Q3YjEy
Li41MTRhMTRlNzViNmZhMWVkMjUwZDhlZGJkOTBkM2YxNTVlMmI5MTU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGUuY3BwCkBAIC0zMSwyMCArMzEsMjAgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVJbWFnZUJ1
ZmZlcihSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiYgaW1hZ2UpCit2b2lkIFJlbW90ZVJlc291cmNl
Q2FjaGU6OmNhY2hlSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYmIGlt
YWdlKQogewotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9pbWFnZUJ1ZmZlcnMuYWRkKHJlbW90ZVJl
c291cmNlSWRlbnRpZmllciwgV1RGTW92ZShpbWFnZSkpOworICAgIGF1dG8gYWRkUmVzdWx0ID0g
bV9pbWFnZUJ1ZmZlcnMuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV1RGTW92ZShp
bWFnZSkpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRy
eSk7CiB9CiAKLVdlYkNvcmU6OkltYWdlQnVmZmVyKiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNo
ZWRJbWFnZUJ1ZmZlcihSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKQorV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hl
ZEltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpCiB7Ci0gICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJzLmdldChyZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOworICAgIHJldHVybiBtX2ltYWdlQnVmZmVycy5nZXQocmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxl
YXNlUmVtb3RlUmVzb3VyY2UoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNl
SWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291
cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpCiB7Ci0gICAgaWYgKG1faW1hZ2VCdWZmZXJzLnJlbW92ZShyZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpKQorICAgIGlmIChtX2ltYWdlQnVmZmVycy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIENhY2hpbmcgdGhlIHJlbW90ZSBy
ZXNvdXJjZSBzaG91bGQgaGF2ZSBoYXBwZW5lZCBiZWZvcmUgcmVsZWFzaW5nIGl0LgogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKaW5kZXggNGVkOGNlMGFjYzE1ZGYzNzMx
YzdmMWE2ODRjM2RkMDg5NmM1NjA4Zi4uMDU0NmFkMDdjMjg2NzVhOWQ2NTkwNzQ4NzQ5YmEyZTkx
ZTAzNmFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCiAKLSNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVJlc291cmNlSWRlbnRpZmll
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsMTIg
KzQyLDEyIEBAIGNsYXNzIFJlbW90ZVJlc291cmNlQ2FjaGUgewogcHVibGljOgogICAgIFJlbW90
ZVJlc291cmNlQ2FjaGUoKSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lkIGNhY2hlSW1hZ2VCdWZmZXIo
V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SW1hZ2VCdWZmZXI+JiYpOwotICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBjYWNoZWRJbWFn
ZUJ1ZmZlcihXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIHZvaWQgcmVs
ZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7Cisg
ICAgdm9pZCBjYWNoZUltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmKTsKKyAgICBXZWJD
b3JlOjpJbWFnZUJ1ZmZlciogY2FjaGVkSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiBwcml2YXRlOgotICAgIHVzaW5nIFJl
bW90ZUltYWdlQnVmZmVySGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+PjsKKyAgICB1
c2luZyBSZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVy
Pj47CiAKICAgICBSZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggMDU4NTc3ZTVmN2Rl
YjZkMmJkZjI1YjFjNzU1MzU2Zjk2YWRmODg4OS4uOTkxMTFhNzg5MGI1Nzg1ZjRlMTA2MmQ2ODgy
MDY1NDdkNTI1MDNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CkBAIC0yMjMsNyArMjIzLDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVj
bGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OlBvaW50ZXJJRCcsCiAgICAgICAgICdXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlSWRlbnRpZmllcicsCi0gICAgICAgICdXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXInLAorICAgICAgICAnV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyJywKICAg
ICAgICAgJ1dlYkNvcmU6OlJlbmRlcmluZ01vZGUnLAogICAgICAgICAnV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYklk
ZW50aWZpZXInLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggNjA5NjhmN2M1N2M3M2U4ZDMyNDg2MzkxNzk5OTkz
NzQwYjNjOGVjNC4uNThkMzlkZjliOGM1YzY3NTAyZmEyNDc1MjZjMDQwMmM1MmEzOGNhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CkBAIC01NTgsOCArNTU4LDggQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiAKIFdlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAotV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVk
aW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA2YjZhOTYwMDA3OTY3NzAwNmQzNTcwMGIxNjM0YmFhNTc5YTU3NjQ1
Li5lODQ3NDJiMDEwMWM2ODM2NTI0MmQzYzJjOTkwZjAzYjg3YmJhYjUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQyMjIsOCArNDIy
Miw2IEBACiAJCTcxQTY3NkE1MjJDNjIzMTgwMDdENjI5NSAvKiBXS1RvdWNoQWN0aW9uR2VzdHVy
ZVJlY29nbml6ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBX
S1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW07IHBhdGggPSBpb3MvV0tUb3VjaEFjdGlv
bkdlc3R1cmVSZWNvZ25pemVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUZC
ODEwQTIyNjA2MjdBMDAzMjM2NzcgLyogV2Vic2l0ZVNpbXVsYXRlZE1vdXNlRXZlbnRzRGlzcGF0
Y2hQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZVNpbXVs
YXRlZE1vdXNlRXZlbnRzRGlzcGF0Y2hQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzIyNzgwMEIyNDA4QkQ3RDAwN0QzNzZCIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzIyNzgwMEMyNDA5N0EwMjAwN0QzNzZC
IC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk3MjI3ODAwRDI0MDk3QTAyMDA3RDM3NkIgLyogUmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MjZENTZERDI1M0E2NDgxMDAwMkVGOTAgLyogUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVSZXNvdXJjZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzI2RDU2REUyNTNBNjQ4MTAwMDJFRjkwIC8qIFJlbW90ZVJlc291
cmNlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVzb3VyY2VDYWNoZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBN0YzNDI0MDc4NTdEMDA0RDI5MzEgLyogSW1hZ2VC
dWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjM1LDYgKzQyMzMsOCBAQAogCQk3MjdB
N0Y0OTI0MDhBRUU2MDA0RDI5MzEgLyogUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcyOEU4NkVGMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb2xvclBpY2tlck1hYy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjhFODZGMDE3OTUxODhDMDA4Nzg3OUUgLyogV2Vi
Q29sb3JQaWNrZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJDb2xvclBpY2tlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJC
NTMxNTcyNTNDMUU0RDAwNDkyOTVBIC8qIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3MkI1MzE1ODI1M0MxRTREMDA0OTI5NUEgLyogUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NUE4RDJDNDE4N0NDRjlGMDBDMzlD
OUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLV2Vic2l0ZURhdGFTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
NUE4RDJDNTE4N0NDRjlGMDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJzaXRlRGF0YVN0b3JlLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NUE4RDJENDE4N0QxQzAxMDBDMzlDOUUgLyog
V0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTgxMzMsMTIgKzgxMzMsMTIgQEAKIAkJCQk3MjdBN0YzNjI0MDc4OEYwMDA0RDI5
MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggKi8sCiAJCQkJNzI3QTdG
MzgyNDA3ODhGMDAwNEQyOTMxIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5k
LmggKi8sCiAJCQkJNzIyNzgwMEIyNDA4QkQ3RDAwN0QzNzZCIC8qIFBsYXRmb3JtUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oICovLAotCQkJCTcyMjc4MDBDMjQwOTdBMDIwMDdEMzc2QiAvKiBSZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwICovLAotCQkJCTcyMjc4MDBEMjQw
OTdBMDIwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCAq
LywKIAkJCQk3MjdBN0Y0OTI0MDhBRUU2MDA0RDI5MzEgLyogUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oICovLAogCQkJCTU1MDY0MDlEMjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuY3BwICovLAogCQkJCTU1MDY0MDlFMjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCAqLywKIAkJCQk1NTA2NDBBMDI0MDcxOUUxMDBBQUUw
NDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCTcy
QjUzMTU3MjUzQzFFNEQwMDQ5Mjk1QSAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwICov
LAorCQkJCTcyQjUzMTU4MjUzQzFFNEQwMDQ5Mjk1QSAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkuaCAqLywKIAkJCQk1NTA2NDA5RjI0MDcxOTZBMDBBQUUwNDUgLyogUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gZ3JhcGhpY3M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9Q
bGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCA5YWZmMDg4ZTM3Y2E3NmE3Zjg2
NGFlN2U0MmJiYjcwMDRmMWYxNTIzLi4wNTE3Njc4M2Q1NTMxYmZlNzBmODUwYmYyYzE0OWY3ODgy
MmQwZTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAg
LTM3LDQgKzM3LDE0IEBAIHVzaW5nIEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA9
IFJlbW90ZUltYWdlQnVmZmVyUHJveHk8QWNjZWxlcmF0ZWRJbWFnCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYktpdDo6VW5hY2NlbGVy
YXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHkpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0
IFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikgeyByZXR1cm4gaW1hZ2VCdWZmZXIu
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgJiYgIWltYWdlQnVmZmVyLmlzQWNjZWxlcmF0
ZWQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCisjaWYgSEFWRShJT1NVUkZB
Q0UpCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYktpdDo6QWNjZWxlcmF0ZWRSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3Jl
OjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpIHsgcmV0dXJuIGltYWdlQnVmZmVyLnJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcigpICYmIGltYWdlQnVmZmVyLmlzQWNjZWxlcmF0ZWQoKTsgfQor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorI2VuZGlmCisKICNlbmRpZiAvLyBFTkFCTEUo
R1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXJQcm94eS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5NTYyYTM2OGU2
OWU0MjMwZTcyNjJjMjYzNmRmMjg2ZDc0NmVhYzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMTAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgiCi0KLSNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCi0KLSNpbmNsdWRlICJJbWFnZURhdGFSZWZlcmVuY2UuaCIKLSNpbmNs
dWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRl
bXMuaD4KLSNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyUHJveHk6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eShjb25zdCBG
bG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQotICAgIDogbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkobWFrZVdlYWtQdHIocmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkK
LXsKLSAgICAvLyBDcmVhdGUgdGhlIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuCi0gICAgbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25T
Y2FsZSwgY29sb3JTcGFjZSwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS0+cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7Ci19Ci0K
LVJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6flJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJQcm94eSgpCi17Ci0gICAgLy8gUmVsZWFzZSB0aGUgUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eS4KLSAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQotICAg
ICAgICByZXR1cm47Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnNlbmQoTWVz
c2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbGVhc2VSZW1vdGVSZXNvdXJjZShtX3Jl
bW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5y
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsKLX0KLQotUmVmUHRyPEltYWdlRGF0YT4gUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5OjpnZXRJbWFnZURhdGEoQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0
Ci17Ci0gICAgSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhUmVmZXJlbmNlOwotICAg
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6R2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgbV9y
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6R2V0SW1hZ2VEYXRhOjpSZXBseShpbWFnZURhdGFSZWZlcmVuY2UpLCBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS0+cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSwgMV9zKTsKLSAg
ICByZXR1cm4gaW1hZ2VEYXRhUmVmZXJlbmNlLmJ1ZmZlcigpOwotfQotCi12b2lkIFJlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6d2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdh
c0NyZWF0ZWQoKQotewotICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSAmJiAh
aXNCYWNrZW5kQ3JlYXRlZCgpKQotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS0+d2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoKTsKLX0KLQotdm9pZCBSZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OndhaXRGb3JGbHVzaERpc3BsYXlMaXN0
V2FzQ29tbWl0dGVkKCkKLXsKLSAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkg
JiYgaXNQZW5kaW5nRmx1c2goKSkKLSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHktPndhaXRGb3JGbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKCk7Ci19Ci0KLXZvaWQgUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5OjpmbHVzaERpc3BsYXlMaXN0KFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpCi17Ci0gICAgaWYgKCFt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAg
IFRyYWNlU2NvcGUgdHJhY2luZ1Njb3BlKEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJTdGFydCwgRmx1
c2hSZW1vdGVJbWFnZUJ1ZmZlckVuZCk7Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkZsdXNoRGlzcGxheUxp
c3QoZGlzcGxheUxpc3QsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHktPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOwotICAgIGRp
c3BsYXlMaXN0LmNsZWFyKCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlclByb3h5OjpmbHVzaERpc3BsYXlMaXN0QW5kV2FpdENvbW1pdChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQotewotICAgIGlmICghbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFRyYWNlU2NvcGUgdHJh
Y2luZ1Njb3BlKEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJTdGFydCwgRmx1c2hSZW1vdGVJbWFnZUJ1
ZmZlckVuZCwgMSk7Ci0gICAgbV9zZW50Rmx1c2hJZGVudGlmaWVyID0gRGlzcGxheUxpc3RGbHVz
aElkZW50aWZpZXI6OmdlbmVyYXRlKCk7Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkZsdXNoRGlzcGxheUxp
c3RBbmRDb21taXQoZGlzcGxheUxpc3QsIG1fc2VudEZsdXNoSWRlbnRpZmllciwgbV9yZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIoKSk7Ci0gICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKLSAgICB3
YWl0Rm9yRmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZCgpOwotfQotCi12b2lkIFJlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6Y29tbWl0Rmx1c2hDb250ZXh0KERpc3BsYXlM
aXN0Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllcikKLXsKLSAgICBtX3JlY2VpdmVkRmx1
c2hJZGVudGlmaWVyID0gZmx1c2hJZGVudGlmaWVyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBiOWEwMjZhODEyOTg3OTZlN2JkMzVmYTk2ZWVlOTA0ZGU0YmZiNWZkLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQotCi0jaW5jbHVkZSAiRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCIKLSNpbmNs
dWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbG9y
U3BhY2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9GbG9hdFNpemUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVJlc291cmNlSWRlbnRp
Zmllci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nTW9kZS5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBJbWFnZURhdGE7Ci1lbnVtIGNsYXNzIEFscGhhUHJlbXVsdGlwbGlj
YXRpb24gOiB1aW50OF90OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OwotCi1jbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyUHJveHkgewotcHVibGljOgotICAgIHZpcnR1YWwgflJlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXJQcm94eSgpOwotCi0gICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyOyB9Ci0KLSAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4gU2Vl
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4uCi0gICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZUJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2Vi
Q29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKSA9IDA7Ci0KLSAgICB2
b2lkIGNvbW1pdEZsdXNoQ29udGV4dChEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllcik7Ci0KLXBy
b3RlY3RlZDoKLSAgICBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkoY29uc3Qg
V2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkmKTsKLQotICAgIHZpcnR1YWwgYm9vbCBpc0JhY2tlbmRDcmVhdGVkKCkgY29uc3QgPSAwOwot
ICAgIGJvb2wgaXNQZW5kaW5nRmx1c2goKSBjb25zdCB7IHJldHVybiBtX3NlbnRGbHVzaElkZW50
aWZpZXIgIT0gbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllcjsgfQotCi0gICAgUmVmUHRyPFdlYkNv
cmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRp
b24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0KSBjb25zdDsK
LQotICAgIHZvaWQgd2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoKTsKLSAgICB2
b2lkIHdhaXRGb3JGbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKCk7Ci0KLSAgICAvLyBNZXNz
YWdlcyB0byBiZSBzZW50LiBTZWUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2Vz
LmluLgotICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3QmKTsKLSAgICB2b2lkIGZsdXNoRGlzcGxheUxpc3RBbmRXYWl0Q29tbWl0KFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYpOwotCi1wcml2YXRlOgotICAgIFdlYWtQdHI8
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5PiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTsKLSAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgeyBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRl
KCkgfTsKLQotICAgIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyIG1fc2VudEZsdXNoSWRlbnRp
ZmllcjsKLSAgICBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBtX3JlY2VpdmVkRmx1c2hJZGVu
dGlmaWVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
R1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDIwZmJmODFjOTgy
NTUyZWY3NmJiNmNkMTVkYzNhMWU5ZDM4ODBlYzMuLjE0OTc0NzQyZWQ3N2U2MGEzNThjNTZlYTcz
NWRkODRjOTk0NzQwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0yNyw3ICsy
Nyw2IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKLSNpbmNsdWRlICJSZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaD4KQEAgLTM3LDU0ICszNiw4
MiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgotY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eSA6IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5
cGU+LCBwdWJsaWMgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5IHsKK2NsYXNz
IFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Oklt
YWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlcjo6RGVsZWdhdGUgewogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyID0g
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsKICAgICB1c2lu
ZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6bV9iYWNrZW5kOwogICAgIHVzaW5nIEJhc2VE
aXNwbGF5TGlzdEltYWdlQnVmZmVyOjptX2RyYXdpbmdDb250ZXh0OwogCiBwdWJsaWM6Ci0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PiBjcmVhdGUoY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xv
clNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSkKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUltYWdlQnVmZmVyUHJv
eHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkpCiAgICAgewogICAgICAgICBpZiAoQmFja2VuZFR5cGU6OmNhbGN1bGF0ZUJhY2tl
bmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSkuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5PihuZXcgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eShzaXplLCByZW5kZXJpbmdN
b2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSkpOworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUltYWdlQnVmZmVy
UHJveHk+KG5ldyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KHNpemUsIHJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSkpOwogICAgIH0KIAogICAgIH5SZW1vdGVJbWFnZUJ1ZmZlclByb3h5KCkKICAg
ICB7CisgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKKyAgICAgICAgbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgpLnJl
bGVhc2VJbWFnZUJ1ZmZlcihtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgfQor
CisgICAgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyOyB9CisKKyAgICB2b2lkIGNyZWF0ZUJhY2tlbmQoY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNp
emUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNl
LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KCFtX2JhY2tlbmQpOworICAgICAgICBtX2JhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKGxv
Z2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZN
b3ZlKGhhbmRsZSkpOworICAgIH0KKworICAgIHZvaWQgY29tbWl0Rmx1c2hEaXNwbGF5TGlzdChE
aXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIpCisgICAgeworICAgICAg
ICBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyID0gZmx1c2hJZGVudGlmaWVyOwogICAgIH0KIAog
cHJvdGVjdGVkOgotICAgIFJlbW90ZUltYWdlQnVmZmVyUHJveHkoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiBzaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICAg
ICAgOiBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcihzaXplKQotICAgICAgICAsIFJlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0
aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICBS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisg
ICAgICAgIDogQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIoc2l6ZSwgdGhpcykKKyAgICAgICAg
LCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShtYWtlV2Vha1B0cihyZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkpKQogICAgIHsKKyAgICAgICAgQVNTRVJUKG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5KTsKICAgICB9CiAKLSAgICB2b2lkIGNyZWF0ZUJhY2tlbmQoY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFj
a2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xv
clNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlKSBvdmVycmlkZQorICAgIGJv
b2wgaXNQZW5kaW5nRmx1c2goKSBjb25zdCB7IHJldHVybiBtX3NlbnRGbHVzaElkZW50aWZpZXIg
IT0gbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllcjsgfQorCisgICAgdm9pZCB0aW1lb3V0V2FpdEZv
ckZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCFt
X2JhY2tlbmQpOwotICAgICAgICBtX2JhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKGxvZ2lj
YWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3Zl
KGhhbmRsZSkpOworICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIFdhaXQgZm9yIG91ciBEaXNwbGF5TGlz
dCB0byBiZSBmbHVzaGVkIGJ1dCBkbyBub3QgaGFuZy4KKyAgICAgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBtYXhXYWl0aW5nRmx1c2ggPSAzOworICAgICAgICBmb3IgKHVuc2lnbmVkIG51
bVdhaXRpbmdGbHVzaCA9IDA7IG51bVdhaXRpbmdGbHVzaCA8IG1heFdhaXRpbmdGbHVzaCAmJiBp
c1BlbmRpbmdGbHVzaCgpOyArK251bVdhaXRpbmdGbHVzaCkKKyAgICAgICAgICAgIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LT53YWl0Rm9yRmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRl
ZCgpOwogICAgIH0KLSAgICAKLSAgICBib29sIGlzQmFja2VuZENyZWF0ZWQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7IH0KIAogICAgIEJhY2tlbmRUeXBlKiBlbnN1
cmVCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoIW1f
YmFja2VuZCkKLSAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSY+
KCp0aGlzKS5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OndhaXRGb3JJbWFn
ZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCk7CisgICAgICAgIGlmICghbV9iYWNrZW5kICYmIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHktPndhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCk7CiAg
ICAgICAgIHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7CiAgICAgfQogCiAgICAgUmVmUHRyPFdlYkNv
cmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRp
b24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0KSBjb25zdCBv
dmVycmlkZQogICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgICAgIGF1dG8mIGRpc3BsYXlM
aXN0ID0gY29uc3RfY2FzdDxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Kj4odGhpcyktPm1fZHJhd2lu
Z0NvbnRleHQuZGlzcGxheUxpc3QoKTsKLSAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5Kj4odGhpcyktPlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6
Zmx1c2hEaXNwbGF5TGlzdChkaXNwbGF5TGlzdCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gY29u
c3RfY2FzdDxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Kj4odGhpcyktPlJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJQcm94eTo6Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCk7
CisgICAgICAgIGlmIChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSkgeworICAgICAgICAgICAgY29u
c3RfY2FzdDxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Jj4oKnRoaXMpLmZsdXNoRGlzcGxheUxpc3Qo
ZGlzcGxheUxpc3QpOworICAgICAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKKyAgICAgICAg
fQorCiAgICAgICAgIC8vIGdldEltYWdlRGF0YSBpcyBzeW5jaHJvbm91cywgd2hpY2ggbWVhbnMg
d2UndmUgYWxyZWFkeSByZWNlaXZlZCB0aGUgQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQg
bWVzc2FnZS4KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LT5nZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0
LCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCiAgICAgdm9pZCBwdXRJ
bWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29u
c3QgV2ViQ29yZTo6SW1hZ2VEYXRhJiBpbWFnZURhdGEsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZXN0UG9pbnQgPSB7IH0sIFdlYkNv
cmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCA9IFdlYkNvcmU6OkFscGhhUHJl
bXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpIG92ZXJyaWRlCkBAIC0xMDMsMTggKzEzMCw0
OCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoKSBvdmVycmlk
ZQogICAgIHsKKyAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCgpOworICAgICAg
ICB0aW1lb3V0V2FpdEZvckZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoKTsKKyAgICB9CisK
KyAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQoKQorICAgIHsKKyAgICAgICAg
aWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAgICAgIHJldHVybjsK
KwogICAgICAgICBhdXRvJiBkaXNwbGF5TGlzdCA9IG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxp
c3QoKTsKLSAgICAgICAgaWYgKGRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpKQotICAgICAgICAgICAg
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5OjpmbHVzaERpc3BsYXlMaXN0QW5k
V2FpdENvbW1pdChkaXNwbGF5TGlzdCk7CisgICAgICAgIGlmICghZGlzcGxheUxpc3QuaXRlbUNv
dW50KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgVHJhY2VTY29wZSB0cmFjaW5n
U2NvcGUoRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlclN0YXJ0LCBGbHVzaFJlbW90ZUltYWdlQnVmZmVy
RW5kLCAxKTsKKyAgICAgICAgbV9zZW50Rmx1c2hJZGVudGlmaWVyID0gbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHktPmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoZGlzcGxheUxpc3QsIG1f
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIo
KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIGZsdXNoRGlzcGxheUxpc3QoY29uc3QgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgfHwgIWRpc3BsYXlM
aXN0Lml0ZW1Db3VudCgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFRyYWNlU2Nv
cGUgdHJhY2luZ1Njb3BlKEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJTdGFydCwgRmx1c2hSZW1vdGVJ
bWFnZUJ1ZmZlckVuZCk7CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5m
bHVzaERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0LCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CisgICAgfQorCiAgICAgdm9pZCB3aWxsQXBwZW5kSXRlbShjb25zdCBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbSYpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBjb25zdGV4cHIgc2l6ZV90
IERpc3BsYXlMaXN0QmF0Y2hTaXplID0gNTEyOwogICAgICAgICBhdXRvJiBkaXNwbGF5TGlzdCA9
IG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKTsKLSAgICAgICAgaWYgKGRpc3BsYXlMaXN0
Lml0ZW1Db3VudCgpID49IERpc3BsYXlMaXN0QmF0Y2hTaXplKQotICAgICAgICAgICAgUmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5OjpmbHVzaERpc3BsYXlMaXN0KGRpc3BsYXlM
aXN0KTsKKyAgICAgICAgaWYgKGRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpIDwgRGlzcGxheUxpc3RC
YXRjaFNpemUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZmx1c2hEaXNwbGF5TGlz
dChkaXNwbGF5TGlzdCk7CisgICAgICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7CiAgICAgfQorCisg
ICAgRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgbV9zZW50Rmx1c2hJZGVudGlmaWVyOworICAg
IERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXI7Cisg
ICAgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHsgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpIH07CisgICAgV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+IG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKaW5kZXggYjE0NjFiNDgyMTQ4
ZDJiNzViNDBmMDk4ZDk0MGNkZTEwYWI0ZmZjZS4uYWNjZmM2ODljNzdmNzM5Yzg4NTlmN2Q5YzE3
NTQ2YzY2NDA3N2U1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNw
cApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiSW1hZ2VE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZXMuaCIKQEAgLTg4LDM4ICs4OSw3
NSBAQCBib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6d2FpdEZvckZsdXNoRGlzcGxh
eUxpc3RXYXNDb21taXR0ZWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBTaG91bGRBY2NlbGVyYXRlIHNob3VsZEFjY2VsZXJhdGUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogeworICAgIFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGlt
YWdlQnVmZmVyOworCiAgICAgaWYgKHNob3VsZEFjY2VsZXJhdGUgPT0gU2hvdWxkQWNjZWxlcmF0
ZTo6WWVzKSB7Ci0gICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gQWNjZWxlcmF0ZWRSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNj
ZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgKnRoaXMpKSB7Ci0gICAgICAg
ICAgICBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuYWRkKGltYWdlQnVmZmVyLT5yZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VCdWZmZXIuZ2V0KCkpOwotICAgICAgICAgICAg
cmV0dXJuIGltYWdlQnVmZmVyOwotICAgICAgICB9CisgICAgICAgIHJlbmRlcmluZ01vZGUgPSBS
ZW5kZXJpbmdNb2RlOjpSZW1vdGVBY2NlbGVyYXRlZDsKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBB
Y2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9u
U2NhbGUsICp0aGlzKTsKKyAgICB9CisKKyAgICBpZiAoIWltYWdlQnVmZmVyKSB7CisgICAgICAg
IHJlbmRlcmluZ01vZGUgPSBSZW5kZXJpbmdNb2RlOjpSZW1vdGVVbmFjY2VsZXJhdGVkOworICAg
ICAgICBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojpj
cmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCAqdGhpcyk7CiAgICAgfQogCi0gICAgaWYgKGF1
dG8gaW1hZ2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3Jl
YXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlJlbW90ZVVuYWNjZWxlcmF0ZWQsIHJlc29sdXRpb25T
Y2FsZSwgY29sb3JTcGFjZSwgKnRoaXMpKSB7Ci0gICAgICAgIG1faW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlck1hcC5hZGQoaW1hZ2VCdWZmZXItPnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpLCBp
bWFnZUJ1ZmZlci5nZXQoKSk7CisgICAgaWYgKGltYWdlQnVmZmVyKSB7CisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVyKHNpemUs
IHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgaW1hZ2VCdWZmZXIt
PnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRp
Zmllcik7CisgICAgICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNhY2hlSW1hZ2VCdWZm
ZXIoaW1hZ2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBpbWFnZUJ1ZmZl
ci5nZXQoKSk7CiAgICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKICAgICB9CiAKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorUmVmUHRyPEltYWdlRGF0YT4g
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgSVBD
OjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhUmVmZXJlbmNlOworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpHZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0
LCBzcmNSZWN0LCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6R2V0SW1hZ2VEYXRhOjpSZXBseShpbWFnZURhdGFSZWZlcmVuY2Up
LCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCAxX3MpOworICAgIHJldHVybiBpbWFnZURh
dGFSZWZlcmVuY2UuYnVmZmVyKCk7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpmbHVzaERpc3BsYXlMaXN0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlz
cGxheUxpc3QsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Rmx1c2hEaXNwbGF5TGlzdChkaXNwbGF5TGlzdCwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Cit9CisKK0Rpc3BsYXlMaXN0Rmx1c2hJ
ZGVudGlmaWVyIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hEaXNwbGF5TGlzdEFu
ZENvbW1pdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorewor
ICAgIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyIHNlbnRGbHVzaElkZW50aWZpZXIgPSBEaXNw
bGF5TGlzdEZsdXNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpGbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGRpc3BsYXlM
aXN0LCBzZW50Rmx1c2hJZGVudGlmaWVyLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBt
X3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gc2VudEZsdXNoSWRlbnRp
ZmllcjsKK30KKwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1v
dGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKQogewotICAgIC8vIENyZWF0ZUltYWdlQnVmZmVyIG1lc3NhZ2Ugc2hvdWxkIGhh
dmUgYmVlbiByZWNlaXZlZCBiZWZvcmUgdGhpcyBvbmUuCi0gICAgYm9vbCBmb3VuZCA9IG1faW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5yZW1vdmUocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KTsKLSAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogfQogCi12
b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6aW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3Jl
YXRlZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5k
U2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
aW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
LCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0g
ICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAu
Z2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpCi0gICAgICAgIGltYWdlQnVmZmVyLT5jcmVh
dGVCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xv
clNwYWNlLCBXVEZNb3ZlKGhhbmRsZSkpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90
ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpOworICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICBpZiAoaW1hZ2VCdWZmZXItPmlzQWNjZWxlcmF0ZWQoKSkKKyAgICAgICAgZG93bmNhc3Q8
QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpLmNyZWF0ZUJh
Y2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsIFdURk1vdmUoaGFuZGxlKSk7CisgICAgZWxzZQorICAgICAgICBkb3duY2FzdDxVbmFjY2Vs
ZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jcmVhdGVCYWNrZW5k
KGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBX
VEZNb3ZlKGhhbmRsZSkpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Zmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZChEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBm
bHVzaElkZW50aWZpZXIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hEaXNwbGF5
TGlzdFdhc0NvbW1pdHRlZChEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZp
ZXIsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpCiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXJNYXAuZ2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpCi0gICAgICAgIGltYWdlQnVm
ZmVyLT5jb21taXRGbHVzaENvbnRleHQoZmx1c2hJZGVudGlmaWVyKTsKKyAgICBhdXRvIGltYWdl
QnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVkSW1hZ2VCdWZmZXIocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAoaW1hZ2VCdWZmZXItPmlzQWNjZWxlcmF0ZWQoKSkKKyAgICAg
ICAgZG93bmNhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZm
ZXIpLmNvbW1pdEZsdXNoRGlzcGxheUxpc3QoZmx1c2hJZGVudGlmaWVyKTsKKyAgICBlbHNlCisg
ICAgICAgIGRvd25jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1h
Z2VCdWZmZXIpLmNvbW1pdEZsdXNoRGlzcGxheUxpc3QoZmx1c2hJZGVudGlmaWVyKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
aAppbmRleCA5ZDI5MDAyM2Q0OTcyMWVhZDZjYjk4Nzk5ZDI2ZjVhOGQwZWQ0ZGJlLi40MzYxYmFh
ZmVmYzM1MGM3MDA5YTk3YTZkYjY4ZDUyNWViYzFlNDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmgKQEAgLTMxLDE2ICszMSwyNCBAQAogI2luY2x1ZGUgIkltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKLSNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKICNp
bmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
Q29sb3JTcGFjZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+Ci0jaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CitjbGFzcyBEaXNwbGF5TGlzdDsKK2NsYXNzIEl0
ZW07Cit9CitjbGFzcyBGbG9hdFNpemU7CitjbGFzcyBJbWFnZURhdGE7CitlbnVtIGNsYXNzIEFs
cGhhUHJlbXVsdGlwbGljYXRpb24gOiB1aW50OF90OworZW51bSBjbGFzcyBDb2xvclNwYWNlIDog
dWludDhfdDsKK2VudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNz
IFNob3VsZEFjY2VsZXJhdGUgOiBib29sOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5CkBAIC01Miw3ICs2MCw3IEBAIHB1YmxpYzoK
IAogICAgIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKTsKIAotICAgIFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjsgfQorICAgIFJlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eSYgcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkgeyByZXR1cm4gbV9yZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHk7IH0KIAogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4KICAgICBJUEM6
OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CkBA
IC02MSw4ICs2OSwxMiBAQCBwdWJsaWM6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IG92ZXJyaWRlOwogCisgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlNob3VsZEFjY2VsZXJhdGUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSk7Ci0gICAgdm9pZCByZWxlYXNlUmVtb3RlUmVz
b3VyY2UoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBmbHVzaERpc3BsYXlM
aXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgRGlzcGxheUxpc3RGbHVzaElkZW50aWZp
ZXIgZmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAg
IHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CiAKICAgICBib29sIHdhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVk
KCk7CiAgICAgYm9vbCB3YWl0Rm9yRmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZCgpOwpAQCAt
NzEsMTEgKzgzLDEwIEBAIHByaXZhdGU6CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KCk7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KLSAgICB2b2lkIGltYWdlQnVm
ZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJD
b3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlz
dFdhc0NvbW1pdHRlZChEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0
ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29s
b3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZChE
aXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKIAotICAgIHVzaW5nIEltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAgPSBIYXNo
TWFwPFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgUmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlclByb3h5Kj47Ci0gICAgSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcCBt
X2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXA7CisgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHsgKnRoaXMgfTsKICAgICBSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHsgUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZTAwZGNkNzViNGUz
YjE1N2YzN2E2MmE0YmVmOTljNDViNTgwZmQ1ZS4uOGYyNDU4NTYzNWY0NzA4M2QxZGIyN2E1YjM5
NjY2NWYzMTVlYmNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkubWVzc2FnZXMuaW4KQEAgLTIzLDggKzIzLDggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBOb3RSZWZDb3Vu
dGVkIHsKLSAgICB2b2lkIEltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoV2ViQ29yZTo6Rmxv
YXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpJbnRTaXplIGJhY2tlbmRTaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViS2l0OjpJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQotICAgIHZvaWQgRmx1c2hEaXNwbGF5
TGlzdFdhc0NvbW1pdHRlZChXZWJLaXQ6OkRpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyIGZsdXNo
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcikKKyAgICB2b2lkIEltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoV2Vi
Q29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpJbnRTaXplIGJhY2tlbmRTaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwg
V2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIHZv
aWQgRmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZChXZWJLaXQ6OkRpc3BsYXlMaXN0Rmx1c2hJ
ZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xZWQ3ZTZiZGQxYmZjNDNjYjY4N2EzMzc1OGEwZjE1MWYyZmZhNTBlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkuY3BwCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgiCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisg
ICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShyZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkpCit7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZUltYWdl
QnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIsIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcikKK3sKKyAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1faW1hZ2VCdWZmZXJzLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIs
IGltYWdlQnVmZmVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0Lmlz
TmV3RW50cnkpOworfQorCitJbWFnZUJ1ZmZlciogUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Ojpj
YWNoZWRJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQoreworICAgIHJldHVybiBtX2ltYWdlQnVmZmVycy5nZXQocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHk6OnJlbGVhc2VJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIGJvb2wgZm91bmQgPSBtX2ltYWdlQnVmZmVy
cy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VE
KGZvdW5kLCBmb3VuZCk7CisgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkucmVsZWFz
ZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM5NjhmNmFmYWRmM2NjZjk3YWI5
MjEzYjMxMWJkZmEwNDM4NjBmZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKQEAgLTAsMCAr
MSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgPFdlYkNv
cmUvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW1hZ2VCdWZmZXI7Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CisKK2Ns
YXNzIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB7CitwdWJsaWM6CisgICAgUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYpOworCisgICAgdm9pZCBj
YWNoZUltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV2Vi
Q29yZTo6SW1hZ2VCdWZmZXIqKTsKKyAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogY2FjaGVkSW1h
Z2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lk
IHJlbGVhc2VJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OworCitwcml2YXRlOgorICAgIHVzaW5nIFJlbW90ZUltYWdlQnVmZmVyUHJveHlIYXNoTWFwID0g
SGFzaE1hcDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6Oklt
YWdlQnVmZmVyKj47CisgICAgCisgICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eUhhc2hNYXAgbV9p
bWFnZUJ1ZmZlcnM7CisgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQo=
</data>
<flag name="commit-queue"
          id="428810"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412380</attachid>
            <date>2020-10-26 19:43:36 -0700</date>
            <delta_ts>2020-10-26 20:24:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217558-20201026194335.patch</filename>
            <type>text/plain</type>
            <size>87375</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4OTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGZmYTc4ZjlkYTE1OTk2
ZWFmZWMzZWM3ZjQwMDMwZGQxZmMyMGViNS4uNTFlZmE1ODI1N2QzNWE4MDMxMTY1ZTVmZTc2ZTNj
OWUyOThlMmJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTEwLTI2ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXTogSW50cm9kdWNlIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB0byBtYW5hZ2UgdGhl
IHJlbW90ZSByZXNvdXJjZXMgaW4gV2ViIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU1OAorCisgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEZyYXNlci4KKworICAgICAgICBSZW5hbWUgUmVjb3JkZXI6Ok9ic2VydmVyIHRvIFJlY29y
ZGVyOjpEZWxlZ2F0ZSBiZWNhdXNlIGl0IHdpbGwgYmUgcmVzcG9uc2libGUKKyAgICAgICAgZm9y
IGNyZWF0aW5nIERpc3BsYXlMaXN0SXRlbXMgaW4gZnV0dXJlIHBhdGNoZXMuIFNvIGl0IHdpbGwg
bm90IGJlIGp1c3QKKyAgICAgICAgYW4gb2JzZXJ2ZXIuIEFsc28gZG8gbm90IG1ha2UgRGlzcGxh
eUxpc3Q6OkltYWdlQnVmZmVyIGEgc3VwZXJjbGFzcyBvZiBpdC4KKyAgICAgICAgUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eSwgd2hpY2ggaXMgYSBzdXBlcmNsYXNzIG9mIERpc3BsYXlMaXN0OjpJbWFn
ZUJ1ZmZlciwKKyAgICAgICAgd2lsbCBiZSB0aGUgc3VwZXJjbGFzcyBvZiBSZWNvcmRlcjo6RGVs
ZWdhdGUuCisKKyAgICAgICAgTWFrZSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmlzQWNjZWxlcmF0ZWQg
YSBzdGF0aWMgbWVtYmVyIGluc3RlYWQgb2YgYSB2aXJ0dWFsCisgICAgICAgIG1ldGhvZC4gUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IHdvdWxkIHdhbnQgdG8ga25vdyB3aGV0aGVyIHRoZSBi
YWNrZW5kCisgICAgICAgIG9mIGFuIEltYWdlQnVmZmVyIGlzQWNjZWxlcmF0ZWQgb3Igbm90IHdp
dGhvdXQgaGF2aW5nIHRvIGNyZWF0ZSBpdC4KKyAgICAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kOjpp
c0FjY2VsZXJhdGVkIHdpbGwgYmUgc2V0IHRvIGZhbHNlIGFuZAorICAgICAgICBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OmlzQWNjZWxlcmF0ZWQgd2lsbCBiZSBzZXQgdG8gdHJ1ZS4KKwor
ICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VC
dWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmlzQWNjZWxlcmF0ZWQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmguCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6aXNBY2NlbGVyYXRlZCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nQ29udGV4dDo6RHJhd2luZ0NvbnRleHQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdElt
YWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI6
OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXI6OlJlY29yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlcjo6d2lsbEFwcGVuZEl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjp+RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpPYnNlcnZlcjo6fk9ic2VydmVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6T2JzZXJ2ZXI6OndpbGxBcHBl
bmRJdGVtKTogRGVsZXRlZC4KKwogMjAyMC0xMC0yNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBs
ZS5jb20+CiAKICAgICAgICAgSlNDIHNwZWNpYWwgZnVuY3Rpb24gZm9yd2FyZCBkZWNsYXJhdGlv
bnMgKGUuZy4gSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTikgdGhhdCBhcmUgaW50ZXJuYWwgdG8g
YSBjcHAgZmlsZSBzaG91bGQgYmUgZGVjbGFyZWQgd2l0aCBzdGF0aWMgdG8gYXZvaWQgZXh0ZXJu
YWwgbGlua2FnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAxMWNkMzBkOTUwYzVlMDk4ZTNkYmM5NzM4YjBlM2NmNmM0
MWUwNTBjLi5iY2Y5NDZjZWMyMzRlMzlmYzUwNmFlMDc0MTIyMTc5NDM0NmE3NDZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDc3IEBACisyMDIwLTEwLTI2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91
aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXTogSW50cm9kdWNlIFJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eSB0byBtYW5hZ2UgdGhlIHJlbW90ZSByZXNvdXJjZXMgaW4g
V2ViIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNzU1OAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAg
ICBSZW1vdmUgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5IGFuZCBtb3ZlIHNl
bmRpbmcgdGhlIG1lc3NhZ2VzCisgICAgICAgIHRvIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS4KKworICAgICAgICBUbyBhbGxvdyBjYXN0aW5nIEltYWdlQnVmZmVyIHRvIFJlbW90ZUltYWdl
QnVmZmVyUHJveHksIGEgbmV3IG1ldGhvZCBuYW1lZAorICAgICAgICByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIoKSBpcyBhZGRlZCB0byBJYW1nZUJ1ZmZlciBhbmQgaXQgaXMgb25seSBvdmVycmlk
ZGVuCisgICAgICAgIGJ5IFJlbW90ZUltYWdlQnVmZmVyUHJveHkuIFRoaXMgbWV0aG9kIGlzIHVz
ZWQgaW4gU1BFQ0lBTElaRV9UWVBFX1RSQUlUUworICAgICAgICBtYWNyb3MgYWxvbmcgd2l0aCBJ
YW1nZUJ1ZmZlcjo6aXNBY2NlbGVyYXRlZCgpLgorCisgICAgICAgIEludHJvZHVjZSBSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkgd2hpY2ggd2lsbCBtYW5hZ2UgY2FjaGluZyBhbmQgcmVsZWFzaW5n
CisgICAgICAgIHRoZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LiBDYWNoaW5nIE5hdGl2ZUltYWdl
IHdpbGwgYmUgYWRkZWQgdG8gaXQgaW4KKyAgICAgICAgZnV0dXJlIHBhdGNoZXMuIE1vcmUgYWJv
dXQgY29udHJvbGxpbmcgdGhlIGxpZmUgY3ljbGVzIG9mIHJlbW90ZSByZXNvdXJjZXMgCisgICAg
ICAgIHdpbGwgYmUgYWRkZWQgYWxzbyB3aGVuIHN1cHBvcnRpbmcgZHJhd2luZyByZW1vdGUgcmVz
b3VyY2VzIHRvIHJlbW90ZSBjbGllbnQKKyAgICAgICAgaW4gZnV0dXJlIHBhdGNoZXMuCisKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVJbWFnZUJ1ZmZlcjo6UmVtb3RlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpmbHVzaERpc3BsYXlMaXN0
V2FzQ29tbWl0dGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpmbHVzaERpc3BsYXlMaXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Zmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEltYWdlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWRJbWFnZUJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVSZXNv
dXJjZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
Lmg6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU291
cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlclByb3h5Lmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5Ojp+UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZUJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojpjb21taXRGbHVzaERpc3BsYXlMaXN0KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmlzUGVuZGluZ0ZsdXNo
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6dGltZW91
dFdhaXRGb3JGbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpj
cmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpmbHVzaERpc3BsYXlMaXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVz
b3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Omlt
YWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAuCisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZUltYWdlQnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZWRJbWFnZUJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFz
ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaC4KKwogMjAyMC0xMC0yNiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBudWxsIGNo
ZWNrcyBhbmQgc21hcnQgcG9pbnRlcnMgaW4gUERGIGFuZCBQbHVnaW4gY29kZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKaW5kZXggOTkxODNhNzIzZWE0Zjg0OTVkZmJkNjRjNzIwMjczMWZhZTYxNDYzYi4uMGZm
ZjljYzNlNmQzZGVmMzA5MDdiZjg3YWRmZTViMTVkNDJmYWYzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
CkBAIC0xMjE3LDggKzEyMTcsOCBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVnaW9uLmgKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy9SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaC5oCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJl
Y3QuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjMwMzM0
MmQ0NTExOGYwOThhNGEyMzNhNDdhOWNlZjkyY2Y5YTUyZC4uZWNkNDUwODVkOWFlMjQ4OGEwYTA5
NTg0NjY0NmY0ZTdjNWE3YTBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE2MSw3ICsyMTYxLDcgQEAKIAkJNzI3QTdGM0Ey
NDA3OEI4NDAwNEQyOTMxIC8qIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQUIyM0UxRTU0NDAw
OEQ3NDFDIC8qIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyOTlCQzY3MjNENkE1MzIwMENDNjg4
MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3Mjk5QkM2NDIzRDY4NkE2MDBDQzY4ODMgLyogQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTcyOTlCQzY4MjNENkE1M0UwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Mjk5QkM2NjIzRDY4
NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTcyOUQwNTMwMjUzMTQyNDMwMDQyMjA5OCAvKiBSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcyOUQwNTJFMjUzMTNFMjYwMDQyMjA5OCAvKiBSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk3MjlEMDUzMDI1MzE0MjQzMDA0MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjlE
MDUyRTI1MzEzRTI2MDA0MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJBNzNCRUYy
NDVBM0Y5MDAwMUM5RDAzIC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIyQTgxNUMyMzhGRDUwNTAwQzAwNTgzIC8q
IEFuaW1hdGlvbkZyYW1lUmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTcyQkFDM0FFMjNFMUYwQjAwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJh
Y2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcy
QkFDM0E1MjNFMTczMjgwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3NTUzQ0ZFODEwOEY0NzNG
MDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTUzQ0ZFNjEwOEY0NzNGMDBFQTI4MUUgLyogVGlt
ZWxpbmVSZWNvcmRGYWN0b3J5LmggKi87IH07CkBAIC05OTQ2LDcgKzk5NDYsNyBAQAogCQk3MjdB
RkVEMzFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gRVhUc1JHQi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOTlCQzY0MjNE
Njg2QTYwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFscGhhUHJlbXVsdGlwbGljYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVuZGVyaW5nTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MjlEMDUy
RTI1MzEzRTI2MDA0MjIwOTggLyogUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZVJlc291cmNlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3MjlEMDUyRTI1MzEzRTI2MDA0MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkJBQzNBNDIzRTE3MzI3MDA4RDc0MUMgLyog
SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEltYWdlQnVmZmVyQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcyQkFDM0E1MjNFMTczMjgwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJCYWNrZW5kLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFDM0E2MjNFMTczMjgwMDhENzQxQyAvKiBQbGF0Zm9y
bUltYWdlQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3Jt
SW1hZ2VCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2MzY2LDEwICsy
NjM2NiwxMCBAQAogCQkJCTA3NEU4MkI5MThBNjlGMEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVS
YW5nZXMuaCAqLywKIAkJCQlCQ0FCNDE3RjEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmNwcCAq
LywKIAkJCQlCQ0FCNDE4MDEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggKi8sCi0JCQkJNzI5
RDA1MkUyNTMxM0UyNjAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlSWRlbnRpZmllci5oICovLAog
CQkJCTA3M0ExNTUxMjE3N0EzOTgwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5jcHAgKi8s
CiAJCQkJMDczQTE1NTMyMTc3QTM5QTAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmggKi8s
CiAJCQkJNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCAqLywKKwkJ
CQk3MjlEMDUyRTI1MzEzRTI2MDA0MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LmggKi8sCiAJCQkJQTczRjk1RkMxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRSZWN0LmNwcCAq
LywKIAkJCQlBNzNGOTVGRDEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZFJlY3QuaCAqLywKIAkJ
CQkwRjNERDQ0RDEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5jcHAgKi8sCkBAIC0zMzc0
Miw3ICszMzc0Miw2IEBACiAJCQkJNDZCOTUxOUEyMDdENjM1NDAwQTdEMkREIC8qIFJlbW90ZUZy
YW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFOTIyRkNEN0MwMDAxMjA0RUMgLyogUmVt
b3RlUGxheWJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzMxMkVCMjJGQ0Q3QzkwMDEyMDRF
QyAvKiBSZW1vdGVQbGF5YmFja0F2YWlsYWJpbGl0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
LQkJCQk3MjlEMDUzMDI1MzE0MjQzMDA0MjIwOTggLyogUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzNBMTU1NDIxNzdBNDI2MDBFQTA4RjIgLyogUmVtb3Rl
VmlkZW9TYW1wbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUQwNkMwRDhGMENGRDExNDYwMDY1RjQz
RiAvKiBSZW1vdmVGb3JtYXRDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUwNTA5
OUU2NDkyMDA1NkU1ODEgLyogUmVtb3ZlTm9kZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLApAQCAt
MzM3ODIsNiArMzM3ODEsNyBAQAogCQkJCTA4RjJGMDBBMTIxM0U2MTcwMERDRUM0OCAvKiBSZW5k
ZXJJbWFnZVJlc291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODY0MUQ0ODEyMTQyRjdEMDA4
REU5RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTcyOTlCQzY4MjNENkE1M0UwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk3MjlEMDUzMDI1MzE0MjQzMDA0MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTZDN0M0QjIyMTIzOTk3MDA5QjA2Q0Eg
LyogUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VBNDg3
ODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW5saW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
NTk1RkY0NzE4MjRDRUUzMDBGRjUxQ0QgLyogUmVuZGVySXRlcmF0b3IuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJ
bWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJ
bWFnZUJ1ZmZlci5oCmluZGV4IGM2YzE5ZTEyODlmNDhiMDIwZWE3OGJjZTM5ZDEwNmMzZGI5M2Iw
N2QuLjg2OTczOTVmYTRjOGQwODUxYzdiNzc5MDQwNmU2MWM5MThmY2VhNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVy
LmgKQEAgLTUwLDEzICs1MCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyVHlwZT4obmV3IElt
YWdlQnVmZmVyVHlwZShXVEZNb3ZlKGJhY2tlbmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihh
cmd1bWVudHMpLi4uKSk7CiAgICAgfQotICAgIAotICAgIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNv
bnN0IG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJh
Y2tlbmRDcmVhdGVkKCkpCi0gICAgICAgICAgICByZXR1cm4gYmFja2VuZC0+aXNBY2NlbGVyYXRl
ZCgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorCisgICAgYm9vbCBpc0FjY2VsZXJh
dGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQmFja2VuZFR5cGU6OmlzQWNjZWxlcmF0ZWQ7
IH0KIAogcHJvdGVjdGVkOgogICAgIENvbmNyZXRlSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRy
PEJhY2tlbmRUeXBlPiYmIGJhY2tlbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCAwYWU5ZmNiZDA1ODhkNGM0ZTFlZjVhZjNjYzdmMTJi
NjEyYmY3OGRhLi44NWMwN2JiMDk1MTNiYTAzYmMwZWRmNTIzNzMzZjc4NDgzZDY1MjFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTI5
LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZC5oIgogI2luY2x1ZGUg
IlJlbmRlcmluZ01vZGUuaCIKKyNpbmNsdWRlICJSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MCw2ICs2MSw5IEBAIHB1YmxpYzoKICAg
ICAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsK
IAorICAgIHZpcnR1YWwgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQorICAgIAogICAgIHZpcnR1YWwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaENvbnRleHQo
KSA9IDA7CiAKQEAgLTEwNCw4ICsxMDgsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNv
cHlUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYsIEdDR0xlbnVtLCBQ
bGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKICAgICAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0ID0gMDsKLQogcHJvdGVjdGVkOgog
ICAgIEltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCmluZGV4IDU4ZmMxNDgzNmQ5
MmFhMjAwMTlmMjBmZWVkYzU1NzFlOWFiNWU5NWMuLmNiNTg3MjU2N2YwODgzYjViZDAyZTBlZWNi
OGNlZmRiZTcxMGE4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBjb3B5VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wmLCBHQ0dMZW51bSwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIGJvb2wsIGJvb2wp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzT3JpZ2luQXRVcHBlckxlZnRDb3JuZXIgPSBmYWxzZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNB
Y2NlbGVyYXRlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGlzQWNjZWxlcmF0ZWQgPSBmYWxzZTsKIAogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVf
RVhQT1JUIEltYWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBj
b25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDJhZjU0MmRmZWM4NDdhYmMzNzFhYTJmMWU4ZTRiOGRkOWZiMTEwZTUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwz
OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCi0KLSNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWVudW0gUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyVHlwZSB7IH07Ci11c2lu
ZyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJlbW90ZVJlc291
cmNlSWRlbnRpZmllclR5cGU+OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM3MThiZjMwZDE4Y2Q1NzNkMGYxYjJkYmQ0ZWMwZmZhNzU3YWVjMDQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2VudW0gUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCBjODA2NWE5ZWMyNTE0NjQ0Zjc0MDVm
OWE1NDEzZjYyMjM1NjI3MTU0Li5kYmMzYjdlYjhiM2QxYWQ4OGQwYWIzZjBlZWY5MGE3YzhkODVl
MDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTE5MCwxMSAr
MTkwLDYgQEAgSU9TdXJmYWNlKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OnN1cmZhY2Uo
KQogICAgIHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7CiB9CiAKLWJvb2wgSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kOjppc0FjY2VsZXJhdGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSEFWRShJT1NVUkZBQ0Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IDI0MThmMWQ0NWQ1M2Q0NTkz
M2IzOTA0YTI4OGM2MTAxZjE0YmNjMzEuLjMyMzA5NGVhNzk1YzVkMjQ4M2M4ODQ0MDMxMjRhOTA0
MGNjNzQwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCkBAIC02Miw5ICs2
Miw5IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2b2lkIHB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0
Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEmLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIG92
ZXJyaWRlOwogICAgIElPU3VyZmFjZSogc3VyZmFjZSgpOwotICAgIGJvb2wgaXNBY2NlbGVyYXRl
ZCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzT3JpZ2lu
QXRVcHBlckxlZnRDb3JuZXIgPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0Fj
Y2VsZXJhdGVkID0gdHJ1ZTsKIAogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0dD
b2xvclNwYWNlUmVmPiBjb250ZXh0Q29sb3JTcGFjZShjb25zdCBHcmFwaGljc0NvbnRleHQmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcAppbmRl
eCAyM2NjMDdlOGFlNDQyYmRjZWEwZDM2NzRhNWE4NTUxYzY1Y2ZkYzg3Li5kNDYxN2QzNTE2ZjRm
M2U1MWQ3NWQ2NDQzNGE2YTM5NDU3YTAwMDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCkBAIC0zMyw5ICszMyw5IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCi1EcmF3aW5nQ29udGV4dDo6RHJh
d2luZ0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBpbml0aWFsQ1RNLCBSZWNvcmRlcjo6T2JzZXJ2ZXIqIG9ic2VydmVyKQorRHJhd2lu
Z0NvbnRleHQ6OkRyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwgUmVjb3JkZXI6OkRlbGVnYXRlKiBkZWxl
Z2F0ZSkKICAgICA6IG1fY29udGV4dChbJl0oR3JhcGhpY3NDb250ZXh0JiBkaXNwbGF5TGlzdENv
bnRleHQpIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjb3JkZXI+KGRpc3BsYXlMaXN0
Q29udGV4dCwgbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgRmxvYXRSZWN0
KHsgfSwgbG9naWNhbFNpemUpLCBpbml0aWFsQ1RNLCBvYnNlcnZlcik7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQsIG1fZGlzcGxheUxpc3Qs
IEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIEZsb2F0UmVjdCh7IH0sIGxvZ2ljYWxTaXplKSwgaW5p
dGlhbENUTSwgZGVsZWdhdGUpOwogICAgIH0pCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaAppbmRleCA3YjY3M2YzMmFkODE1YTUwMDgxYjdlN2Fi
MTA4MTMxNzE3ZmRlNTQzLi4yMmVkMjU2ZTgwYWQyOTNhMDUyMDY5Yjc0MzA4OGExMzUxZjQ3Y2Mw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKQEAg
LTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIERyYXdpbmdDb250
ZXh0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JF
X0VYUE9SVCBEcmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0gPSB7IH0sIFJlY29yZGVyOjpPYnNlcnZlciog
PSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmF3aW5nQ29udGV4dChjb25zdCBGbG9h
dFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0gPSB7
IH0sIFJlY29yZGVyOjpEZWxlZ2F0ZSogPSBudWxscHRyKTsKIAogICAgIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RHJhd2luZ0NvbnRleHQmPigq
dGhpcykubV9jb250ZXh0OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVjb3JkZXImIHJlY29yZGVy
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAppbmRleCA2ZmQ5
MTJkZmI4ZmUxMWMwOThkZDYxMjZhOGM4NzhhYzZiYTdhZTAyLi4zMjU5OWUwNjJkN2NmNTlkMWRj
MmVhZDAxZTc2MGQ2NmUzZjdlYzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdElt
YWdlQnVmZmVyLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNw
YWNlIERpc3BsYXlMaXN0IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQmFja2VuZFR5cGU+Ci1jbGFz
cyBJbWFnZUJ1ZmZlciA6IHB1YmxpYyBDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwg
cHVibGljIFJlY29yZGVyOjpPYnNlcnZlciB7CitjbGFzcyBJbWFnZUJ1ZmZlciA6IHB1YmxpYyBD
b25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiB7CiAgICAgdXNpbmcgQmFzZUNvbmNyZXRl
SW1hZ2VCdWZmZXIgPSBDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsKIAogcHVibGlj
OgpAQCAtNDgsMTIgKzQ4LDEyIEBAIHB1YmxpYzoKIAogICAgIEltYWdlQnVmZmVyKHN0ZDo6dW5p
cXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBkYXRhQmFja2VuZCwgY29uc3QgRmxvYXRTaXplJiBzaXpl
KQogICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKFdURk1vdmUoZGF0YUJhY2tlbmQp
KQotICAgICAgICAsIG1fZHJhd2luZ0NvbnRleHQoc2l6ZSwgaW5pdGlhbERyYXdpbmdDb250ZXh0
Q1RNKHNpemUpLCB0aGlzKQorICAgICAgICAsIG1fZHJhd2luZ0NvbnRleHQoc2l6ZSwgaW5pdGlh
bERyYXdpbmdDb250ZXh0Q1RNKHNpemUpKQogICAgIHsKICAgICB9CiAKLSAgICBJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmIHNpemUpCi0gICAgICAgIDogbV9kcmF3aW5nQ29udGV4dChzaXpl
LCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSksIHRoaXMpCisgICAgSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBSZWNvcmRlcjo6RGVsZWdhdGUqIGRlbGVnYXRlID0gbnVs
bHB0cikKKyAgICAgICAgOiBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5nQ29u
dGV4dENUTShzaXplKSwgZGVsZWdhdGUpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDY4ZDJmNjgwNTE1ZWFlNTU4YTBkNGZiZWY2
YWIxYTI3ZTBhMDllYjQuLjFlMWU5MWFhMDg0Yjk2ZTZlYjI2NWMxZjgwZmYyZjhlNTFmZjFmZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTM3LDEwICsz
NywxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAot
UmVjb3JkZXI6OlJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgRGlzcGxheUxpc3Qm
IGRpc3BsYXlMaXN0LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEZs
b2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwg
T2JzZXJ2ZXIqIG9ic2VydmVyKQorUmVjb3JkZXI6OlJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhdGUsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgaW5pdGlhbENUTSwgRGVsZWdhdGUqIGRlbGVnYXRlKQogICAgIDogR3JhcGhpY3ND
b250ZXh0SW1wbChjb250ZXh0LCBpbml0aWFsQ2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpCiAgICAg
LCBtX2Rpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KQotICAgICwgbV9vYnNlcnZlcihvYnNlcnZlcikK
KyAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3Bs
YXlMaXN0cywgc3RyZWFtIDw8ICJcblJlY29yZGluZyB3aXRoIGNsaXAgIiA8PCBpbml0aWFsQ2xp
cCk7CiAgICAgbV9zdGF0ZVN0YWNrLmFwcGVuZCh7IHN0YXRlLCBpbml0aWFsQ1RNLCBpbml0aWFs
Q2xpcCB9KTsKQEAgLTkzLDggKzkzLDggQEAgc3RhdGljIFJlZjxJdGVtPiBjcmVhdGVTdGF0ZUNo
YW5nZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIGNoYW5nZXMKIAogdm9p
ZCBSZWNvcmRlcjo6d2lsbEFwcGVuZEl0ZW0oY29uc3QgSXRlbSYgaXRlbSkKIHsKLSAgICBpZiAo
bV9vYnNlcnZlcikKLSAgICAgICAgbV9vYnNlcnZlci0+d2lsbEFwcGVuZEl0ZW0oaXRlbSk7Cisg
ICAgaWYgKG1fZGVsZWdhdGUpCisgICAgICAgIG1fZGVsZWdhdGUtPndpbGxBcHBlbmRJdGVtKGl0
ZW0pOwogCiAgICAgaWYgKGl0ZW0uaXNEcmF3aW5nSXRlbSgpCiAjaWYgVVNFKENHKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggMWIyNGMyNmM2NzI4OGY4MTcyNzNh
MmQyYWVmMmI0YmM5NmUzNWM3NS4uNmEyNzcxODk3ZWQyM2U2OTA1NmZhZWE4ZjVlNTMzOThhNWY4
YzhjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC01Myw4ICs1
Myw4IEBAIGNsYXNzIFJlY29yZGVyIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEltcGwgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlY29y
ZGVyKTsKIHB1YmxpYzoKLSAgICBjbGFzcyBPYnNlcnZlcjsKLSAgICBXRUJDT1JFX0VYUE9SVCBS
ZWNvcmRlcihHcmFwaGljc0NvbnRleHQmLCBEaXNwbGF5TGlzdCYsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiwgT2JzZXJ2ZXIqID0gbnVsbHB0cik7CisgICAgY2xhc3MgRGVsZWdhdGU7CisgICAg
V0VCQ09SRV9FWFBPUlQgUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiwgRGlzcGxheUxpc3QmLCBj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIERlbGVnYXRlKiA9IG51bGxwdHIpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgflJlY29yZGVyKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJ
bWFnZURhdGEmLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBv
aW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpOwpAQCAtNjMsOSArNjMsOSBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRlbnQoUmVmPERyYXdp
bmdJdGVtPiYmKTsKIAotICAgIGNsYXNzIE9ic2VydmVyIHsKKyAgICBjbGFzcyBEZWxlZ2F0ZSB7
CiAgICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5PYnNlcnZlcigpIHsgfQorICAgICAgICB2
aXJ0dWFsIH5EZWxlZ2F0ZSgpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbEFwcGVuZEl0
ZW0oY29uc3QgSXRlbSYpIHsgfTsKICAgICB9OwogCkBAIC0xODcsNyArMTg3LDcgQEAgcHJpdmF0
ZToKICAgICBDb250ZXh0U3RhdGUmIGN1cnJlbnRTdGF0ZSgpOwogCiAgICAgRGlzcGxheUxpc3Qm
IG1fZGlzcGxheUxpc3Q7Ci0gICAgT2JzZXJ2ZXIqIG1fb2JzZXJ2ZXI7CisgICAgRGVsZWdhdGUq
IG1fZGVsZWdhdGU7CiAKICAgICBWZWN0b3I8Q29udGV4dFN0YXRlLCAzMj4gbV9zdGF0ZVN0YWNr
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyLmgKaW5kZXggNzhkODJmOGM0NGJjMzdkMjEzYTgwODg0YWJlODRmY2YwMmEw
NGYyYi4uNTE4ODg0YzhkMzg4NmQwZDQwZTA4ZDJmYzUxMmRlYzQzMTUzOGJhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
LmgKQEAgLTQxLDE2ICs0MSwxNiBAQCBjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBX
ZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwgcHVibAogICAgIHVzaW5n
IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpwdXRJbWFnZURhdGE7CiAKIHB1YmxpYzoKLSAgICBz
dGF0aWMgYXV0byBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgV2ViQ29yZTo6UmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICBzdGF0aWMgYXV0
byBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJl
dHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPFJlbW90ZUltYWdl
QnVmZmVyPihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG51bGxwdHIsIHJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIHJl
dHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPFJlbW90ZUltYWdl
QnVmZmVyPihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG51bGxwdHIsIHJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQog
Ci0gICAgUmVtb3RlSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJh
Y2tlbmQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIFdl
YkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
CisgICAgUmVtb3RlSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJh
Y2tlbmQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCiAgICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIoV1RGTW92ZShiYWNrZW5k
KSkKICAgICAgICAgLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQocmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCkKICAgICB7Ci0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5pbWFnZUJ1ZmZl
ckJhY2tlbmRXYXNDcmVhdGVkKG1fYmFja2VuZC0+bG9naWNhbFNpemUoKSwgbV9iYWNrZW5kLT5i
YWNrZW5kU2l6ZSgpLCBtX2JhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgpLCBtX2JhY2tlbmQtPmNv
bG9yU3BhY2UoKSwgbV9iYWNrZW5kLT5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSwg
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQobV9iYWNrZW5kLT5sb2dpY2FsU2l6ZSgp
LCBtX2JhY2tlbmQtPmJhY2tlbmRTaXplKCksIG1fYmFja2VuZC0+cmVzb2x1dGlvblNjYWxlKCks
IG1fYmFja2VuZC0+Y29sb3JTcGFjZSgpLCBtX2JhY2tlbmQtPmNyZWF0ZUltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSgpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAogICAg
IH5SZW1vdGVJbWFnZUJ1ZmZlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggMWVmMjhl
ZTJmMjUyMWRjYTU1NGY0ODA1MDJmNzI3NGM5Y2MyOWIzOC4uODRiNWZkNjYxNmIxZWZhOTMxMDM3
NDkxMTdjMDg5ODQ2NzJhZmUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtNzIsNjIg
KzcyLDYyIEBAIHVpbnQ2NF90IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJE
ZXN0aW5hdGlvbklEKCkgY29uc3QKICAgICByZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRp
Zmllci50b1VJbnQ2NCgpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmltYWdl
QnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29u
c3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjppbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0IEZsb2F0U2l6
ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
IGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OkltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQobG9naWNhbFNpemUsIGJhY2tlbmRTaXpl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoaGFuZGxlKSwgcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpJbWFnZUJ1ZmZlckJhY2tl
bmRXYXNDcmVhdGVkKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBj
b2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRsZSksIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciks
IG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoRGlzcGxheUxpc3RGbHVzaElk
ZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpmbHVzaERp
c3BsYXlMaXN0V2FzQ29tbWl0dGVkKERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRl
bnRpZmllciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OkZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoZmx1c2hJZGVudGlmaWVyLCByZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkZsdXNoRGlzcGxheUxp
c3RXYXNDb21taXR0ZWQoZmx1c2hJZGVudGlmaWVyLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxT
aXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQogewogICAgIEFTU0VSVChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmlu
Z01vZGU6OlJlbW90ZUFjY2VsZXJhdGVkIHx8IHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9k
ZTo6UmVtb3RlVW5hY2NlbGVyYXRlZCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
SW1hZ2VCdWZmZXI+IGltYWdlOwogCiAgICAgaWYgKHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5n
TW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQpCi0gICAgICAgIGltYWdlID0gQWNjZWxlcmF0ZWRSZW1v
dGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsICp0aGlzLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBpbWFnZSA9
IEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVzb2x1
dGlvblNjYWxlLCBjb2xvclNwYWNlLCAqdGhpcywgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKIAogICAgIGlmICghaW1hZ2UpCi0gICAgICAgIGltYWdlID0gVW5hY2NlbGVyYXRlZFJlbW90
ZUltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgKnRoaXMsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIGltYWdlID0g
VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIHJlc29s
dXRpb25TY2FsZSwgY29sb3JTcGFjZSwgKnRoaXMsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CiAKICAgICBpZiAoaW1hZ2UpIHsKLSAgICAgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNh
Y2hlSW1hZ2VCdWZmZXIocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdlKSk7
CisgICAgICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZUltYWdlQnVmZmVyKHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgV1RGTW92ZShpbWFnZSkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Zmx1c2hEaXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpmbHVzaERp
c3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxh
eUxpc3QsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2Fj
aGUuY2FjaGVkSW1hZ2VCdWZmZXIocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICBpZiAo
YXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZl
cihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQogICAgICAgICBpbWFnZUJ1ZmZlci0+Zmx1
c2hEaXNwbGF5TGlzdChkaXNwbGF5TGlzdCk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6Zmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBm
bHVzaElkZW50aWZpZXIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmZsdXNoRGlzcGxheUxpc3RB
bmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5
TGlzdCwgRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAg
IGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdl
QnVmZmVyKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpIHsKKyAgICBpZiAoYXV0byBpbWFnZUJ1
ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpKSB7CiAgICAgICAgIGltYWdlQnVmZmVyLT5mbHVzaERpc3BsYXlM
aXN0KGRpc3BsYXlMaXN0KTsKICAgICAgICAgaW1hZ2VCdWZmZXItPmZsdXNoQ29udGV4dCgpOwot
ICAgICAgICBmbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKGZsdXNoSWRlbnRpZmllciwgcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAgZmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1p
dHRlZChmbHVzaElkZW50aWZpZXIsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAg
fQogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEltYWdlRGF0YShXZWJDb3Jl
OjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBz
cmNSZWN0LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURh
dGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6
OkludFJlY3Qgc3JjUmVjdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdlRGF0YVJl
ZmVyZW5jZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSZWZQdHI8SW1hZ2VEYXRh
PiBpbWFnZURhdGE7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNl
Q2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICBp
ZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1
ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQogICAgICAgICBpbWFnZURhdGEgPSBp
bWFnZUJ1ZmZlci0+Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCk7CiAgICAgY29t
cGxldGlvbkhhbmRsZXIoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UoV1RGTW92ZShpbWFnZURhdGEp
KSk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZVJlc291
cmNlKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit2
b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAg
IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUucmVsZWFzZVJlbW90ZVJl
c291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggZWZmYmE0NDliMTg4ZWEyYjU0ZDM2MmMy
YWM1NGMyOGZjMGNjYjNlZC4uNTI3ZGFhYjZmNjBlMGUyMGZhMGNkNGQzMGFiODA0Mjk3ODk0MjM5
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC02Miw4ICs2Miw4IEBAIHB1YmxpYzoKICAgICBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29u
c3Q7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSBzZW50LgotICAgIHZvaWQgaW1hZ2VCdWZmZXJC
YWNrZW5kV2FzQ3JlYXRlZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6
OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0V2Fz
Q29tbWl0dGVkKERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNw
YWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CisgICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKERpc3Bs
YXlMaXN0Rmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwogCiBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKQEAgLTc3LDExICs3
NywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikg
b3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KLSAgICB2b2lkIGNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdl
YkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29s
b3JTcGFjZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGZs
dXNoRGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jiwg
V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGZsdXNoRGlzcGxh
eUxpc3RBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jiwg
RGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
Zmllcik7Ci0gICAgdm9pZCBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VE
YXRhUmVmZXJlbmNlJiYpPiYmKTsKLSAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJD
b3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVy
aW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgZmx1c2hEaXNwbGF5
TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdEFu
ZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBEaXNwbGF5
TGlzdEZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKKyAgICB2b2lkIGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9u
IG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURh
dGFSZWZlcmVuY2UmJik+JiYpOworICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVSZXNvdXJjZUNh
Y2hlIG1fcmVtb3RlUmVzb3VyY2VDYWNoZTsKICAgICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQubWVzc2FnZXMuaW4KaW5kZXggMDM1ZDZiYjQ2MmMxYWMyYzkyNjYxMjAwMzU4NTI3
NTc2NzhjMzAzYS4uYTg4ZTBmYjYyNjI0OTE4OWQ4ZjViM2EzOWI5YjY2NDI4NjIyY2FkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KQEAgLTIzLDExICsyMywxMSBA
QAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCBOb3RSZWZDb3VudGVkIHsKLSAgICB2b2lkIENyZWF0ZUltYWdlQnVmZmVyKFdlYkNv
cmU6OkZsb2F0U2l6ZSBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JT
cGFjZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRl
bnRpZmllcikKLSAgICB2b2lkIEZsdXNoRGlzcGxheUxpc3QoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0IGRpc3BsYXlMaXN0LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQotICAgIHZvaWQgRmx1c2hEaXNwbGF5TGlzdEFu
ZENvbW1pdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QgZGlzcGxheUxpc3QsIFdl
YktpdDo6RGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQotICAg
IEdldEltYWdlRGF0YShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikgLT4gKElQQzo6SW1h
Z2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YSkgU3luY2hyb25vdXMKLSAgICB2b2lkIFJlbGVhc2VS
ZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKQorICAgIHZvaWQgQ3JlYXRlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6Rmxv
YXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKQorICAgIHZvaWQgRmx1c2hEaXNwbGF5TGlzdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3QgZGlzcGxheUxpc3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgdm9pZCBGbHVzaERpc3BsYXlM
aXN0QW5kQ29tbWl0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBkaXNwbGF5TGlz
dCwgV2ViS2l0OjpEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCisgICAgR2V0SW1hZ2VEYXRhKGVudW06dWludDhfdCBXZWJDb3JlOjpBbHBoYVByZW11
bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKSAtPiAoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhKSBTeW5jaHJvbm91cwor
ICAgIHZvaWQgUmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB9CiAKICNlbmRpZiAvLyBF
TkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKaW5kZXggYWQwNDcyNjI1MjE5Njc5
NDY0OTRjOGFjN2E1NDkwMzEwYTdkN2IxMi4uNTE0YTE0ZTc1YjZmYTFlZDI1MGQ4ZWRiZDkwZDNm
MTU1ZTJiOTE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcApAQCAtMzEsMjAgKzMxLDIwIEBACiBuYW1l
c3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi12b2lkIFJlbW90ZVJl
c291cmNlQ2FjaGU6OmNhY2hlSW1hZ2VCdWZmZXIoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYmIGlt
YWdlKQordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZUltYWdlQnVmZmVyKFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4mJiBpbWFnZSkKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
aW1hZ2VCdWZmZXJzLmFkZChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUoaW1hZ2Up
KTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1faW1hZ2VCdWZmZXJzLmFkZChyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIFdURk1vdmUoaW1hZ2UpKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJl
c3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1XZWJDb3JlOjpJbWFnZUJ1ZmZlciog
UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkSW1hZ2VCdWZmZXIoUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK1dlYkNvcmU6OkltYWdlQnVmZmVyKiBS
ZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWRJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIHJldHVybiBtX2lt
YWdlQnVmZmVycy5nZXQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gbV9p
bWFnZUJ1ZmZlcnMuZ2V0KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiB9CiAKLXZvaWQg
UmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbW90ZVJlc291cmNl
SWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlc291cmNl
Q2FjaGU6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGlmIChtX2ltYWdlQnVmZmVycy5y
ZW1vdmUocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICBpZiAobV9pbWFnZUJ1ZmZlcnMu
cmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsKICAg
ICAvLyBDYWNoaW5nIHRoZSByZW1vdGUgcmVzb3VyY2Ugc2hvdWxkIGhhdmUgaGFwcGVuZWQgYmVm
b3JlIHJlbGVhc2luZyBpdC4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5o
CmluZGV4IDRlZDhjZTBhY2MxNWRmMzczMWM3ZjFhNjg0YzNkZDA4OTZjNTYwOGYuLjA1NDZhZDA3
YzI4Njc1YTlkNjU5MDc0ODc0OWJhMmU5MWUwMzZhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaApAQCAtMjcs
NyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi0jaW5jbHVkZSA8V2ViQ29y
ZS9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTQyLDEyICs0MiwxMiBAQCBjbGFzcyBSZW1vdGVSZXNvdXJjZUNh
Y2hlIHsKIHB1YmxpYzoKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlKCkgPSBkZWZhdWx0OwogCi0g
ICAgdm9pZCBjYWNoZUltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmKTsKLSAgICBXZWJDb3Jl
OjpJbWFnZUJ1ZmZlciogY2FjaGVkSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKLSAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgY2FjaGVJbWFnZUJ1ZmZlcihXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcj4mJik7CisgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGNhY2hlZEltYWdlQnVm
ZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCByZWxl
YXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
IAogcHJpdmF0ZToKLSAgICB1c2luZyBSZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAgPSBIYXNoTWFw
PFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OkltYWdlQnVmZmVyPj47CisgICAgdXNpbmcgUmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwID0g
SGFzaE1hcDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4+OwogCiAgICAgUmVtb3RlSW1hZ2VCdWZmZXJIYXNo
TWFwIG1faW1hZ2VCdWZmZXJzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CmluZGV4IDA1ODU3N2U1ZjdkZWI2ZDJiZGYyNWIxYzc1NTM1NmY5NmFkZjg4ODkuLjk5
MTExYTc4OTBiNTc4NWY0ZTEwNjJkNjg4MjA2NTQ3ZDUyNTAzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjIzLDcgKzIyMyw3IEBAIGRlZiB0eXBlc190
aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpQb2lu
dGVySUQnLAogICAgICAgICAnV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXInLAogICAgICAgICAn
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXInLAotICAgICAgICAnV2ViQ29y
ZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpSZW5kZXJpbmdNb2RlJywK
ICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDYwOTY4
ZjdjNTdjNzNlOGQzMjQ4NjM5MTc5OTk5Mzc0MGIzYzhlYzQuLjU4ZDM5ZGY5YjhjNWM2NzUwMmZh
MjQ3NTI2YzA0MDJjNTJhMzhjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNTU4LDggKzU1OCw4IEBAIFdl
YlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNw
cAogCiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKLVdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5j
cHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5j
cHAKK1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAK
IFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmI2YTk2MDAwNzk2Nzcw
MDZkMzU3MDBiMTYzNGJhYTU3OWE1NzY0NS4uZTg0NzQyYjAxMDFjNjgzNjUyNDJkM2MyYzk5MGYw
M2I4N2JiYWI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC00MjIyLDggKzQyMjIsNiBAQAogCQk3MUE2NzZBNTIyQzYyMzE4MDA3RDYy
OTUgLyogV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1t
OyBwYXRoID0gaW9zL1dLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFGQjgxMEEyMjYwNjI3QTAwMzIzNjc3IC8qIFdlYnNpdGVT
aW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYnNpdGVTaW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMjc4MDBCMjQwOEJEN0QwMDdEMzc2QiAv
KiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZv
cm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTcyMjc4MDBDMjQwOTdBMDIwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzIyNzgwMEQy
NDA5N0EwMjAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2RDU2REQyNTNBNjQ4MTAwMDJFRjkwIC8q
IFJlbW90ZVJlc291cmNlQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlUmVzb3Vy
Y2VDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNkQ1NkRFMjUzQTY0
ODEwMDAyRUY5MCAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZVJlc291cmNlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QTdGMzQy
NDA3ODU3RDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlclNoYXJl
YWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NDIzNSw2ICs0MjMzLDggQEAKIAkJNzI3QTdGNDkyNDA4QUVFNjAwNEQyOTMxIC8qIFJlbW90ZUlt
YWdlQnVmZmVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjhFODZFRjE3OTUxODhDMDA4Nzg3OUUg
LyogV2ViQ29sb3JQaWNrZXJNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViQ29sb3JQaWNrZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2
RjAxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29sb3JQaWNrZXJNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyQjUzMTU3MjUzQzFFNEQwMDQ5Mjk1QSAvKiBSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJCNTMxNTgyNTND
MUU0RDAwNDkyOTVBIC8qIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzVBOEQyQzQxODdDQ0Y5RjAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYnNpdGVEYXRhU3RvcmUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVBOEQyQzUxODdDQ0Y5RjAwQzM5QzlFIC8qIFdLV2Vi
c2l0ZURhdGFTdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdLV2Vic2l0ZURhdGFTdG9yZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVB
OEQyRDQxODdEMUMwMTAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZUludGVybmFs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MTMzLDEyICs4MTMzLDEyIEBACiAJ
CQkJNzI3QTdGMzYyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZC5oICovLAogCQkJCTcyN0E3RjM4MjQwNzg4RjAwMDREMjkzMSAvKiBQbGF0Zm9ybUlt
YWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZC5oICovLAogCQkJCTcyMjc4MDBCMjQwOEJEN0QwMDdE
Mzc2QiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLywKLQkJCQk3MjI3ODAw
QzI0MDk3QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5
LmNwcCAqLywKLQkJCQk3MjI3ODAwRDI0MDk3QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlclByb3h5LmggKi8sCiAJCQkJNzI3QTdGNDkyNDA4QUVFNjAwNEQyOTMx
IC8qIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLywKIAkJCQk1NTA2NDA5RDI0MDcxNjA5MDBB
QUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCAqLywKIAkJCQk1NTA2NDA5
RTI0MDcxNjA5MDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggKi8sCiAJ
CQkJNTUwNjQwQTAyNDA3MTlFMTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5tZXNzYWdlcy5pbiAqLywKKwkJCQk3MkI1MzE1NzI1M0MxRTREMDA0OTI5NUEgLyogUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5LmNwcCAqLywKKwkJCQk3MkI1MzE1ODI1M0MxRTREMDA0OTI5NUEg
LyogUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmggKi8sCiAJCQkJNTUwNjQwOUYyNDA3MTk2QTAw
QUFFMDQ1IC8qIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmggKi8sCiAJCQkpOwogCQkJcGF0
aCA9IGdyYXBoaWNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgK
aW5kZXggOWFmZjA4OGUzN2NhNzZhN2Y4NjRhZTdlNDJiYmI3MDA0ZjFmMTUyMy4uMDUxNzY3ODNk
NTUzMWJmZTcwZjg1MGJmMmMxNDlmNzg4MjJkMGUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0zNyw0ICszNywxNCBAQCB1c2luZyBBY2NlbGVyYXRl
ZFJlbW90ZUltYWdlQnVmZmVyUHJveHkgPSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PEFjY2VsZXJh
dGVkSW1hZwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19CRUdJTihXZWJLaXQ6OlVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KQorICAg
IHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZm
ZXIpIHsgcmV0dXJuIGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpICYm
ICFpbWFnZUJ1ZmZlci5pc0FjY2VsZXJhdGVkKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RU5EKCkKKworI2lmIEhBVkUoSU9TVVJGQUNFKQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJ
TihXZWJLaXQ6OkFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSkKKyAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKSB7IHJl
dHVybiBpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSAmJiBpbWFnZUJ1
ZmZlci5pc0FjY2VsZXJhdGVkKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKyNl
bmRpZgorCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlOTU2MmEzNjhlNjllNDIzMGU3MjYyYzI2MzZkZjI4NmQ3NDZlYWM1Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
clByb3h5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXJQcm94eS5oIgotCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotCi0jaW5jbHVkZSAiSW1h
Z2VEYXRhUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3Nh
Z2VzLmgiCi0jaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgiCi0jaW5jbHVk
ZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+Ci0jaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNp
bmcuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQot
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5OjpSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyUHJveHkoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJl
bmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSkKLSAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KG1ha2VXZWFrUHRyKHJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCi17Ci0gICAgLy8gQ3JlYXRlIHRoZSBSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LgotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCBy
ZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG1fcmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKCkpOwotfQotCi1SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVy
UHJveHk6On5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkoKQotewotICAgIC8v
IFJlbGVhc2UgdGhlIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuCi0gICAgaWYgKCFtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpS
ZWxlYXNlUmVtb3RlUmVzb3VyY2UobV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7Ci19
Ci0KLVJlZlB0cjxJbWFnZURhdGE+IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94
eTo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25z
dCBJbnRSZWN0JiBzcmNSZWN0KSBjb25zdAotewotICAgIElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNl
IGltYWdlRGF0YVJlZmVyZW5jZTsKLSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkdldEltYWdlRGF0YShv
dXRwdXRGb3JtYXQsIHNyY1JlY3QsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgTWVzc2Fn
ZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkdldEltYWdlRGF0YTo6UmVwbHkoaW1hZ2VEYXRh
UmVmZXJlbmNlKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyKCksIDFfcyk7Ci0gICAgcmV0dXJuIGltYWdlRGF0YVJlZmVyZW5jZS5idWZm
ZXIoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6Ondh
aXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCkKLXsKLSAgICBpZiAobV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkgJiYgIWlzQmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAgbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPndhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXND
cmVhdGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5
Ojp3YWl0Rm9yRmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZCgpCi17Ci0gICAgaWYgKG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5ICYmIGlzUGVuZGluZ0ZsdXNoKCkpCi0gICAgICAgIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT53YWl0Rm9yRmx1c2hEaXNwbGF5TGlzdFdhc0Nv
bW1pdHRlZCgpOwotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94
eTo6Zmx1c2hEaXNwbGF5TGlzdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRp
c3BsYXlMaXN0KQotewotICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCi0g
ICAgICAgIHJldHVybjsKLSAgICAKLSAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShGbHVzaFJl
bW90ZUltYWdlQnVmZmVyU3RhcnQsIEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJFbmQpOwotICAgIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpGbHVzaERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0LCBtX3JlbW90ZVJlc291cmNl
SWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcigpKTsKLSAgICBkaXNwbGF5TGlzdC5jbGVhcigpOwotfQotCi12b2lkIFJl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6Zmx1c2hEaXNwbGF5TGlzdEFuZFdh
aXRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkK
LXsKLSAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQotICAgICAgICByZXR1
cm47Ci0KLSAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShGbHVzaFJlbW90ZUltYWdlQnVmZmVy
U3RhcnQsIEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJFbmQsIDEpOwotICAgIG1fc2VudEZsdXNoSWRl
bnRpZmllciA9IERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwotICAgIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpGbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBtX3NlbnRG
bHVzaElkZW50aWZpZXIsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHktPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOwotICAgIGRp
c3BsYXlMaXN0LmNsZWFyKCk7Ci0gICAgd2FpdEZvckZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0
ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OmNv
bW1pdEZsdXNoQ29udGV4dChEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZp
ZXIpCi17Ci0gICAgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllciA9IGZsdXNoSWRlbnRpZmllcjsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NF
U1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHku
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjlhMDI2YTgxMjk4Nzk2ZTdiZDM1ZmE5
NmVlZTkwNGRlNGJmYjVmZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIkRpc3BsYXlMaXN0
Rmx1c2hJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgi
Ci0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9EaXNw
bGF5TGlzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlbmRl
cmluZ01vZGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgSW1hZ2VEYXRhOwotZW51
bSBjbGFzcyBBbHBoYVByZW11bHRpcGxpY2F0aW9uIDogdWludDhfdDsKLX0KLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLWNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKLQotY2xhc3Mg
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5IHsKLXB1YmxpYzoKLSAgICB2aXJ0
dWFsIH5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkoKTsKLQotICAgIFdlYkNv
cmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcjsgfQotCi0gICAgLy8gTWVz
c2FnZXMgdG8gYmUgcmVjZWl2ZWQuIFNlZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2Vz
LmluLgotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSkgPSAwOwotCi0gICAgdm9pZCBjb21taXRGbHVzaENvbnRleHQoRGlzcGxheUxp
c3RGbHVzaElkZW50aWZpZXIpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgUmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlclByb3h5KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJl
bmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Jik7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNCYWNr
ZW5kQ3JlYXRlZCgpIGNvbnN0ID0gMDsKLSAgICBib29sIGlzUGVuZGluZ0ZsdXNoKCkgY29uc3Qg
eyByZXR1cm4gbV9zZW50Rmx1c2hJZGVudGlmaWVyICE9IG1fcmVjZWl2ZWRGbHVzaElkZW50aWZp
ZXI7IH0KLQotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJD
b3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgc3JjUmVjdCkgY29uc3Q7Ci0KLSAgICB2b2lkIHdhaXRGb3JJbWFnZUJ1ZmZlckJh
Y2tlbmRXYXNDcmVhdGVkKCk7Ci0gICAgdm9pZCB3YWl0Rm9yRmx1c2hEaXNwbGF5TGlzdFdhc0Nv
bW1pdHRlZCgpOwotCi0gICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4gU2VlIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbi4KLSAgICB2b2lkIGZsdXNoRGlzcGxheUxpc3Qo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jik7Ci0gICAgdm9pZCBmbHVzaERpc3Bs
YXlMaXN0QW5kV2FpdENvbW1pdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmKTsK
LQotcHJpdmF0ZToKLSAgICBXZWFrUHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eT4gbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7Ci0gICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHsgV2ViQ29yZTo6UmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07Ci0KLSAgICBEaXNwbGF5TGlzdEZsdXNoSWRl
bnRpZmllciBtX3NlbnRGbHVzaElkZW50aWZpZXI7Ci0gICAgRGlzcGxheUxpc3RGbHVzaElkZW50
aWZpZXIgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
UHJveHkuaAppbmRleCAyMGZiZjgxYzk4MjU1MmVmNzZiYjZjZDE1ZGMzYTFlOWQzODgwZWMzLi4x
NDk3NDc0MmVkNzdlNjBhMzU4YzU2ZWE3MzVkZDg0Yzk5NDc0MGU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyUHJveHkuaApAQCAtMjcsNyArMjcsNiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQogCi0jaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJl
Y29yZGVyLmg+CkBAIC0zNyw1NCArMzYsODIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4K
LWNsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwgcHVibGljIFJlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXJQcm94eSB7CitjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IDogcHVibGlj
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlIHsKICAgICB1c2luZyBCYXNl
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZl
cjxCYWNrZW5kVHlwZT47CiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6Om1f
YmFja2VuZDsKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6bV9kcmF3aW5n
Q29udGV4dDsKIAogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlSW1h
Z2VCdWZmZXJQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgV2Vi
Q29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQogICAgIHsKICAgICAgICAgaWYgKEJh
Y2tlbmRUeXBlOjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShzaXplLCByZXNvbHV0aW9uU2NhbGUpLmlz
RW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4obmV3IFJlbW90ZUltYWdlQnVm
ZmVyUHJveHkoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNl
LCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PihuZXcgUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eShzaXplLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKTsKICAgICB9CiAKICAgICB+UmVt
b3RlSW1hZ2VCdWZmZXJQcm94eSgpCiAgICAgeworICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5KQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBmbHVzaERyYXdp
bmdDb250ZXh0KCk7CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkoKS5yZWxlYXNlSW1hZ2VCdWZmZXIobV9yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOworICAgIH0KKworICAgIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsgfQorCisgICAgdm9pZCBjcmVh
dGVCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNv
cmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRs
ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9iYWNrZW5kKTsKKyAgICAgICAgbV9iYWNrZW5k
ID0gQmFja2VuZFR5cGU6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZShoYW5kbGUpKTsKKyAgICB9CisKKyAgICB2b2lk
IGNvbW1pdEZsdXNoRGlzcGxheUxpc3QoRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgZmx1c2hJ
ZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllciA9IGZs
dXNoSWRlbnRpZmllcjsKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICBSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9y
U3BhY2UgY29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkpCi0gICAgICAgIDogQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIo
c2l6ZSkKLSAgICAgICAgLCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkoc2l6
ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCByZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkpCisgICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eShjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmIHNpemUsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgICAgICA6IEJhc2VEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyKHNpemUsIHRoaXMpCisgICAgICAgICwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHko
bWFrZVdlYWtQdHIocmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKICAgICB7CisgICAgICAg
IEFTU0VSVChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSk7CiAgICAgfQogCi0gICAgdm9p
ZCBjcmVhdGVCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
IGhhbmRsZSkgb3ZlcnJpZGUKKyAgICBib29sIGlzUGVuZGluZ0ZsdXNoKCkgY29uc3QgeyByZXR1
cm4gbV9zZW50Rmx1c2hJZGVudGlmaWVyICE9IG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXI7IH0K
KworICAgIHZvaWQgdGltZW91dFdhaXRGb3JGbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKCkK
ICAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9iYWNrZW5kKTsKLSAgICAgICAgbV9iYWNrZW5kID0g
QmFja2VuZFR5cGU6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25T
Y2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZShoYW5kbGUpKTsKKyAgICAgICAgaWYgKCFtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAv
LyBXYWl0IGZvciBvdXIgRGlzcGxheUxpc3QgdG8gYmUgZmx1c2hlZCBidXQgZG8gbm90IGhhbmcu
CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4V2FpdGluZ0ZsdXNoID0gMzsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBudW1XYWl0aW5nRmx1c2ggPSAwOyBudW1XYWl0aW5nRmx1
c2ggPCBtYXhXYWl0aW5nRmx1c2ggJiYgaXNQZW5kaW5nRmx1c2goKTsgKytudW1XYWl0aW5nRmx1
c2gpCisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+d2FpdEZvckZs
dXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoKTsKICAgICB9Ci0gICAgCi0gICAgYm9vbCBpc0Jh
Y2tlbmRDcmVhdGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9iYWNrZW5kLmdldCgpOyB9
CiAKICAgICBCYWNrZW5kVHlwZSogZW5zdXJlQmFja2VuZENyZWF0ZWQoKSBjb25zdCBvdmVycmlk
ZQogICAgIHsKLSAgICAgICAgaWYgKCFtX2JhY2tlbmQpCi0gICAgICAgICAgICBjb25zdF9jYXN0
PFJlbW90ZUltYWdlQnVmZmVyUHJveHkmPigqdGhpcykuUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlclByb3h5Ojp3YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgpOworICAg
ICAgICBpZiAoIW1fYmFja2VuZCAmJiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAg
ICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT53YWl0Rm9ySW1hZ2VCdWZm
ZXJCYWNrZW5kV2FzQ3JlYXRlZCgpOwogICAgICAgICByZXR1cm4gbV9iYWNrZW5kLmdldCgpOwog
ICAgIH0KIAogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJD
b3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgc3JjUmVjdCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CisgICAgICAgIGlmICghbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KwogICAgICAgICBhdXRvJiBkaXNwbGF5TGlzdCA9IGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eSo+KHRoaXMpLT5tX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAg
IGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSo+KHRoaXMpLT5SZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OmZsdXNoRGlzcGxheUxpc3QoZGlzcGxheUxpc3QpOwot
ICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSo+
KHRoaXMpLT5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OmdldEltYWdlRGF0
YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QpOworICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXRlbUNv
dW50KCkpIHsKKyAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSY+
KCp0aGlzKS5mbHVzaERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KTsKKyAgICAgICAgICAgIGRpc3Bs
YXlMaXN0LmNsZWFyKCk7CisgICAgICAgIH0KKwogICAgICAgICAvLyBnZXRJbWFnZURhdGEgaXMg
c3luY2hyb25vdXMsIHdoaWNoIG1lYW5zIHdlJ3ZlIGFscmVhZHkgcmVjZWl2ZWQgdGhlIENvbW1p
dEltYWdlQnVmZmVyRmx1c2hDb250ZXh0IG1lc3NhZ2UuCi0gICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Z2V0SW1hZ2VE
YXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OwogICAgIH0KIAogICAgIHZvaWQgcHV0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlw
bGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkltYWdlRGF0YSYgaW1hZ2VEYXRh
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgZGVzdFBvaW50ID0geyB9LCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RG
b3JtYXQgPSBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkKSBv
dmVycmlkZQpAQCAtMTAzLDE4ICsxMzAsNDggQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBmbHVz
aERyYXdpbmdDb250ZXh0KCkgb3ZlcnJpZGUKICAgICB7CisgICAgICAgIGZsdXNoRHJhd2luZ0Nv
bnRleHRBbmRDb21taXQoKTsKKyAgICAgICAgdGltZW91dFdhaXRGb3JGbHVzaERpc3BsYXlMaXN0
V2FzQ29tbWl0dGVkKCk7CisgICAgfQorCisgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0QW5k
Q29tbWl0KCkKKyAgICB7CisgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBt
X2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAgIGlmIChkaXNwbGF5TGlzdC5p
dGVtQ291bnQoKSkKLSAgICAgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQ
cm94eTo6Zmx1c2hEaXNwbGF5TGlzdEFuZFdhaXRDb21taXQoZGlzcGxheUxpc3QpOworICAgICAg
ICBpZiAoIWRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Njb3BlKEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJTdGFy
dCwgRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlckVuZCwgMSk7CisgICAgICAgIG1fc2VudEZsdXNoSWRl
bnRpZmllciA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5mbHVzaERpc3BsYXlMaXN0
QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Cisg
ICAgICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBmbHVz
aERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlz
cGxheUxpc3QpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5IHx8ICFkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShGbHVzaFJlbW90ZUltYWdl
QnVmZmVyU3RhcnQsIEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJFbmQpOworICAgICAgICBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Zmx1c2hEaXNwbGF5TGlzdChkaXNwbGF5TGlzdCwgbV9y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIH0KKwogICAgIHZvaWQgd2lsbEFwcGVu
ZEl0ZW0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0mKSBvdmVycmlkZQogICAgIHsK
ICAgICAgICAgY29uc3RleHByIHNpemVfdCBEaXNwbGF5TGlzdEJhdGNoU2l6ZSA9IDUxMjsKICAg
ICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7
Ci0gICAgICAgIGlmIChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSA+PSBEaXNwbGF5TGlzdEJhdGNo
U2l6ZSkKLSAgICAgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6
Zmx1c2hEaXNwbGF5TGlzdChkaXNwbGF5TGlzdCk7CisgICAgICAgIGlmIChkaXNwbGF5TGlzdC5p
dGVtQ291bnQoKSA8IERpc3BsYXlMaXN0QmF0Y2hTaXplKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIGZsdXNoRGlzcGxheUxpc3QoZGlzcGxheUxpc3QpOworICAgICAgICBkaXNwbGF5
TGlzdC5jbGVhcigpOwogICAgIH0KKworICAgIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyIG1f
c2VudEZsdXNoSWRlbnRpZmllcjsKKyAgICBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBtX3Jl
Y2VpdmVkRmx1c2hJZGVudGlmaWVyOworICAgIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciB7IFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFdlYWtQdHI8UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5PiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuY3BwCmluZGV4IGIxNDYxYjQ4MjE0OGQyYjc1YjQwZjA5OGQ5NDBjZGUxMGFiNGZmY2UuLmFj
Y2ZjNjg5Yzc3ZjczOWM4ODU5ZjdkOWMxNzU0NmM2NjQwNzdlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUg
IkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIkltYWdlRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1l
c3NhZ2VzLmgiCkBAIC04OCwzOCArODksNzUgQEAgYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OndhaXRGb3JGbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKCkKIAogc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUlt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgU2hvdWxkQWNjZWxlcmF0ZSBzaG91bGRB
Y2NlbGVyYXRlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkK
IHsKKyAgICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGU7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OkltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKKwogICAgIGlmIChzaG91bGRBY2Nl
bGVyYXRlID09IFNob3VsZEFjY2VsZXJhdGU6OlllcykgewotICAgICAgICBpZiAoYXV0byBpbWFn
ZUJ1ZmZlciA9IEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKHNpemUs
IFJlbmRlcmluZ01vZGU6OlJlbW90ZUFjY2VsZXJhdGVkLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsICp0aGlzKSkgewotICAgICAgICAgICAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVy
TWFwLmFkZChpbWFnZUJ1ZmZlci0+cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCksIGltYWdlQnVm
ZmVyLmdldCgpKTsKLSAgICAgICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKLSAgICAgICAgfQor
ICAgICAgICByZW5kZXJpbmdNb2RlID0gUmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQ7
CisgICAgICAgIGltYWdlQnVmZmVyID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
OjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCAqdGhpcyk7CisgICAgfQorCisgICAgaWYg
KCFpbWFnZUJ1ZmZlcikgeworICAgICAgICByZW5kZXJpbmdNb2RlID0gUmVuZGVyaW5nTW9kZTo6
UmVtb3RlVW5hY2NlbGVyYXRlZDsKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVk
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgKnRo
aXMpOwogICAgIH0KIAotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gVW5hY2NlbGVyYXRlZFJl
bW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpSZW1vdGVV
bmFjY2VsZXJhdGVkLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsICp0aGlzKSkgewotICAg
ICAgICBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuYWRkKGltYWdlQnVmZmVyLT5yZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VCdWZmZXIuZ2V0KCkpOworICAgIGlmIChpbWFn
ZUJ1ZmZlcikgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpDcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIGltYWdlQnVmZmVyLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSks
IG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgICAgICBtX3JlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5jYWNoZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyLT5yZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIoKSwgaW1hZ2VCdWZmZXIuZ2V0KCkpOwogICAgICAgICByZXR1cm4gaW1hZ2VC
dWZmZXI7CiAgICAgfQogCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVt
b3RlUmVzb3VyY2UoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcikKK1JlZlB0cjxJbWFnZURhdGE+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0
SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRS
ZWN0JiBzcmNSZWN0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKQoreworICAgIElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YVJl
ZmVyZW5jZTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
R2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkdldEltYWdlRGF0YTo6
UmVwbHkoaW1hZ2VEYXRhUmVmZXJlbmNlKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwg
MV9zKTsKKyAgICByZXR1cm4gaW1hZ2VEYXRhUmVmZXJlbmNlLmJ1ZmZlcigpOworfQorCit2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hEaXNwbGF5TGlzdChjb25zdCBEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkZsdXNoRGlzcGxheUxpc3QoZGlzcGxheUxpc3QsIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIp
OworfQorCitEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0JiBkaXNwbGF5TGlzdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBz
ZW50Rmx1c2hJZGVudGlmaWVyID0gRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXI6OmdlbmVyYXRl
KCk7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Rmx1c2hEaXNw
bGF5TGlzdEFuZENvbW1pdChkaXNwbGF5TGlzdCwgc2VudEZsdXNoSWRlbnRpZmllciwgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Cisg
ICAgcmV0dXJuIHNlbnRGbHVzaElkZW50aWZpZXI7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICAvLyBDcmVhdGVJbWFn
ZUJ1ZmZlciBtZXNzYWdlIHNob3VsZCBoYXZlIGJlZW4gcmVjZWl2ZWQgYmVmb3JlIHRoaXMgb25l
LgotICAgIGJvb2wgZm91bmQgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAucmVtb3Zl
KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7Ci0gICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91
bmQpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbGVhc2VS
ZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQordm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29u
c3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9pbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmdldChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKQot
ICAgICAgICBpbWFnZUJ1ZmZlci0+Y3JlYXRlQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNp
emUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZShoYW5kbGUpKTsKKyAgICBh
dXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVkSW1hZ2VC
dWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBpZiAoIWltYWdlQnVmZmVy
KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKGltYWdlQnVmZmVyLT5pc0FjY2VsZXJh
dGVkKCkpCisgICAgICAgIGRvd25jYXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eT4oKmltYWdlQnVmZmVyKS5jcmVhdGVCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwg
cmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRsZSkpOworICAgIGVsc2UK
KyAgICAgICAgZG93bmNhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCpp
bWFnZUJ1ZmZlcikuY3JlYXRlQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29s
dXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZShoYW5kbGUpKTsKIH0KIAotdm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoRGlz
cGxheUxpc3RGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OmZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoRGlzcGxheUxpc3RGbHVz
aElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvIGltYWdlQnVmZmVy
ID0gbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmdldChyZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpKQotICAgICAgICBpbWFnZUJ1ZmZlci0+Y29tbWl0Rmx1c2hDb250ZXh0KGZsdXNoSWRl
bnRpZmllcik7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5LmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAg
aWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGltYWdlQnVmZmVy
LT5pc0FjY2VsZXJhdGVkKCkpCisgICAgICAgIGRvd25jYXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jb21taXRGbHVzaERpc3BsYXlMaXN0KGZsdXNo
SWRlbnRpZmllcik7CisgICAgZWxzZQorICAgICAgICBkb3duY2FzdDxVbmFjY2VsZXJhdGVkUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jb21taXRGbHVzaERpc3BsYXlMaXN0
KGZsdXNoSWRlbnRpZmllcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKaW5kZXggOWQyOTAwMjNkNDk3MjFlYWQ2Y2I5ODc5
OWQyNmY1YThkMGVkNGRiZS4uNDM2MWJhYWZlZmMzNTBjNzAwOWE5N2E2ZGI2OGQ1MjVlYmMxZTQ1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCkBAIC0zMSwxNiArMzEs
MjQgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCi0jaW5jbHVkZSAi
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5LmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0Rpc3BsYXlMaXN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFNpemUuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
UmVuZGVyaW5nTW9kZS5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGlzcGxheUxpc3QgeworY2xh
c3MgRGlzcGxheUxpc3Q7CitjbGFzcyBJdGVtOworfQorY2xhc3MgRmxvYXRTaXplOworY2xhc3Mg
SW1hZ2VEYXRhOworZW51bSBjbGFzcyBBbHBoYVByZW11bHRpcGxpY2F0aW9uIDogdWludDhfdDsK
K2VudW0gY2xhc3MgQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIFJlbmRlcmluZ01v
ZGUgOiB1aW50OF90OworZW51bSBjbGFzcyBTaG91bGRBY2NlbGVyYXRlIDogYm9vbDsKK30KKwog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eQpA
QCAtNTIsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5KCk7CiAKLSAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI7
IH0KKyAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkmIHJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eSgpIHsgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OyB9CiAKICAgICAvLyBJUEM6
Ok1lc3NhZ2VTZW5kZXIuCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNjEsOCArNjksMTIgQEAgcHVibGljOgogICAgIC8v
IElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAorICAgIC8vIE1lc3NhZ2VzIHRv
IGJlIHNlbnQuCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpTaG91bGRB
Y2NlbGVyYXRlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UpOwot
ICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllcik7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdl
YkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBzcmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OworICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAg
IERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyIGZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoY29u
c3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgYm9vbCB3YWl0Rm9ySW1h
Z2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgpOwogICAgIGJvb2wgd2FpdEZvckZsdXNoRGlzcGxh
eUxpc3RXYXNDb21taXR0ZWQoKTsKQEAgLTcxLDExICs4MywxMCBAQCBwcml2YXRlOgogICAgIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVj
ZWl2ZWQuCi0gICAgdm9pZCBpbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tl
bmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsK
LSAgICB2b2lkIGZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoRGlzcGxheUxpc3RGbHVzaElk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBp
bWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9n
aWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGZsdXNo
RGlzcGxheUxpc3RXYXNDb21taXR0ZWQoRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIsIFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKLSAgICB1c2luZyBJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIsIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eSo+OwotICAgIEltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwOwor
ICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB7
ICp0aGlzIH07CiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciB7IFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3Nh
Z2VzLmluCmluZGV4IGUwMGRjZDc1YjRlM2IxNTdmMzdhNjJhNGJlZjk5YzQ1YjU4MGZkNWUuLjhm
MjQ1ODU2MzVmNDcwODNkMWRiMjdhNWIzOTY2NjVmMzE1ZWJjYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMyw4ICsyMyw4
IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkgTm90UmVmQ291bnRlZCB7Ci0gICAgdm9pZCBJbWFnZUJ1ZmZlckJhY2tl
bmRXYXNDcmVhdGVkKFdlYkNvcmU6OkZsb2F0U2l6ZSBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6SW50
U2l6ZSBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIFdlYktpdDo6SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwg
V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmll
cikKLSAgICB2b2lkIEZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoV2ViS2l0OjpEaXNwbGF5
TGlzdEZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgdm9pZCBJbWFnZUJ1
ZmZlckJhY2tlbmRXYXNDcmVhdGVkKFdlYkNvcmU6OkZsb2F0U2l6ZSBsb2dpY2FsU2l6ZSwgV2Vi
Q29yZTo6SW50U2l6ZSBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3Jl
OjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYktpdDo6SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
IGhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikKKyAgICB2b2lkIEZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQo
V2ViS2l0OjpEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291
cmNlQ2FjaGVQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWVkN2U2YmRkMWJmYzQzY2I2ODdhMzM3NThh
MGYxNTFmMmZmYTUwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcApAQCAtMCwwICsxLDYx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVk
ZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgIDogbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkocmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQoreworfQorCit2b2lkIFJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eTo6Y2FjaGVJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogaW1h
Z2VCdWZmZXIpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2ltYWdlQnVmZmVycy5hZGQocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBpbWFnZUJ1ZmZlcik7CisgICAgQVNTRVJUX1VOVVNF
RChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30KKworSW1hZ2VCdWZmZXIqIFJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVkSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4g
bV9pbWFnZUJ1ZmZlcnMuZ2V0KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlSW1hZ2VCdWZmZXIoUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBi
b29sIGZvdW5kID0gbV9pbWFnZUJ1ZmZlcnMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7CisgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOworICAgIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjIzOTY4ZjZhZmFkZjNjY2Y5N2FiOTIxM2IzMTFiZGZhMDQzODYwZmYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291
cmNlQ2FjaGVQcm94eS5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCisKKyNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IEltYWdlQnVmZmVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OworCitjbGFzcyBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgewor
cHVibGljOgorICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eShSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkmKTsKKworICAgIHZvaWQgY2FjaGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OkltYWdlQnVmZmVyKik7CisgICAgV2ViQ29y
ZTo6SW1hZ2VCdWZmZXIqIGNhY2hlZEltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCByZWxlYXNlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKworcHJpdmF0ZToKKyAgICB1c2luZyBSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5SGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlcio+OworICAgIAorICAgIFJlbW90ZUlt
YWdlQnVmZmVyUHJveHlIYXNoTWFwIG1faW1hZ2VCdWZmZXJzOworICAgIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykK
</data>
<flag name="commit-queue"
          id="428822"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412382</attachid>
            <date>2020-10-26 20:24:27 -0700</date>
            <delta_ts>2020-10-26 21:40:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217558-20201026202426.patch</filename>
            <type>text/plain</type>
            <size>87373</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4OTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGZmYTc4ZjlkYTE1OTk2
ZWFmZWMzZWM3ZjQwMDMwZGQxZmMyMGViNS4uNTFlZmE1ODI1N2QzNWE4MDMxMTY1ZTVmZTc2ZTNj
OWUyOThlMmJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTEwLTI2ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXTogSW50cm9kdWNlIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB0byBtYW5hZ2UgdGhl
IHJlbW90ZSByZXNvdXJjZXMgaW4gV2ViIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU1OAorCisgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEZyYXNlci4KKworICAgICAgICBSZW5hbWUgUmVjb3JkZXI6Ok9ic2VydmVyIHRvIFJlY29y
ZGVyOjpEZWxlZ2F0ZSBiZWNhdXNlIGl0IHdpbGwgYmUgcmVzcG9uc2libGUKKyAgICAgICAgZm9y
IGNyZWF0aW5nIERpc3BsYXlMaXN0SXRlbXMgaW4gZnV0dXJlIHBhdGNoZXMuIFNvIGl0IHdpbGwg
bm90IGJlIGp1c3QKKyAgICAgICAgYW4gb2JzZXJ2ZXIuIEFsc28gZG8gbm90IG1ha2UgRGlzcGxh
eUxpc3Q6OkltYWdlQnVmZmVyIGEgc3VwZXJjbGFzcyBvZiBpdC4KKyAgICAgICAgUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eSwgd2hpY2ggaXMgYSBzdXBlcmNsYXNzIG9mIERpc3BsYXlMaXN0OjpJbWFn
ZUJ1ZmZlciwKKyAgICAgICAgd2lsbCBiZSB0aGUgc3VwZXJjbGFzcyBvZiBSZWNvcmRlcjo6RGVs
ZWdhdGUuCisKKyAgICAgICAgTWFrZSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmlzQWNjZWxlcmF0ZWQg
YSBzdGF0aWMgbWVtYmVyIGluc3RlYWQgb2YgYSB2aXJ0dWFsCisgICAgICAgIG1ldGhvZC4gUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IHdvdWxkIHdhbnQgdG8ga25vdyB3aGV0aGVyIHRoZSBi
YWNrZW5kCisgICAgICAgIG9mIGFuIEltYWdlQnVmZmVyIGlzQWNjZWxlcmF0ZWQgb3Igbm90IHdp
dGhvdXQgaGF2aW5nIHRvIGNyZWF0ZSBpdC4KKyAgICAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kOjpp
c0FjY2VsZXJhdGVkIHdpbGwgYmUgc2V0IHRvIGZhbHNlIGFuZAorICAgICAgICBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OmlzQWNjZWxlcmF0ZWQgd2lsbCBiZSBzZXQgdG8gdHJ1ZS4KKwor
ICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VC
dWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmlzQWNjZWxlcmF0ZWQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmguCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6aXNBY2NlbGVyYXRlZCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nQ29udGV4dDo6RHJhd2luZ0NvbnRleHQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdElt
YWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI6
OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXI6OlJlY29yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlcjo6d2lsbEFwcGVuZEl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjp+RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpPYnNlcnZlcjo6fk9ic2VydmVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6T2JzZXJ2ZXI6OndpbGxBcHBl
bmRJdGVtKTogRGVsZXRlZC4KKwogMjAyMC0xMC0yNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBs
ZS5jb20+CiAKICAgICAgICAgSlNDIHNwZWNpYWwgZnVuY3Rpb24gZm9yd2FyZCBkZWNsYXJhdGlv
bnMgKGUuZy4gSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTikgdGhhdCBhcmUgaW50ZXJuYWwgdG8g
YSBjcHAgZmlsZSBzaG91bGQgYmUgZGVjbGFyZWQgd2l0aCBzdGF0aWMgdG8gYXZvaWQgZXh0ZXJu
YWwgbGlua2FnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAxMWNkMzBkOTUwYzVlMDk4ZTNkYmM5NzM4YjBlM2NmNmM0
MWUwNTBjLi5iY2Y5NDZjZWMyMzRlMzlmYzUwNmFlMDc0MTIyMTc5NDM0NmE3NDZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDc3IEBACisyMDIwLTEwLTI2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91
aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXTogSW50cm9kdWNlIFJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eSB0byBtYW5hZ2UgdGhlIHJlbW90ZSByZXNvdXJjZXMgaW4g
V2ViIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNzU1OAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAg
ICBSZW1vdmUgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5IGFuZCBtb3ZlIHNl
bmRpbmcgdGhlIG1lc3NhZ2VzCisgICAgICAgIHRvIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS4KKworICAgICAgICBUbyBhbGxvdyBjYXN0aW5nIEltYWdlQnVmZmVyIHRvIFJlbW90ZUltYWdl
QnVmZmVyUHJveHksIGEgbmV3IG1ldGhvZCBuYW1lZAorICAgICAgICByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIoKSBpcyBhZGRlZCB0byBJYW1nZUJ1ZmZlciBhbmQgaXQgaXMgb25seSBvdmVycmlk
ZGVuCisgICAgICAgIGJ5IFJlbW90ZUltYWdlQnVmZmVyUHJveHkuIFRoaXMgbWV0aG9kIGlzIHVz
ZWQgaW4gU1BFQ0lBTElaRV9UWVBFX1RSQUlUUworICAgICAgICBtYWNyb3MgYWxvbmcgd2l0aCBJ
YW1nZUJ1ZmZlcjo6aXNBY2NlbGVyYXRlZCgpLgorCisgICAgICAgIEludHJvZHVjZSBSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkgd2hpY2ggd2lsbCBtYW5hZ2UgY2FjaGluZyBhbmQgcmVsZWFzaW5n
CisgICAgICAgIHRoZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LiBDYWNoaW5nIE5hdGl2ZUltYWdl
IHdpbGwgYmUgYWRkZWQgdG8gaXQgaW4KKyAgICAgICAgZnV0dXJlIHBhdGNoZXMuIE1vcmUgYWJv
dXQgY29udHJvbGxpbmcgdGhlIGxpZmUgY3ljbGVzIG9mIHJlbW90ZSByZXNvdXJjZXMgCisgICAg
ICAgIHdpbGwgYmUgYWRkZWQgYWxzbyB3aGVuIHN1cHBvcnRpbmcgZHJhd2luZyByZW1vdGUgcmVz
b3VyY2VzIHRvIHJlbW90ZSBjbGllbnQKKyAgICAgICAgaW4gZnV0dXJlIHBhdGNoZXMuCisKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVJbWFnZUJ1ZmZlcjo6UmVtb3RlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpmbHVzaERpc3BsYXlMaXN0
V2FzQ29tbWl0dGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpmbHVzaERpc3BsYXlMaXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Zmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEltYWdlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWRJbWFnZUJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVSZXNv
dXJjZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
Lmg6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU291
cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlclByb3h5Lmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5Ojp+UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZUJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojpjb21taXRGbHVzaERpc3BsYXlMaXN0KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmlzUGVuZGluZ0ZsdXNo
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6dGltZW91
dFdhaXRGb3JGbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpj
cmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpmbHVzaERpc3BsYXlMaXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVz
b3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Omlt
YWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAuCisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZUltYWdlQnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZWRJbWFnZUJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFz
ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaC4KKwogMjAyMC0xMC0yNiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBudWxsIGNo
ZWNrcyBhbmQgc21hcnQgcG9pbnRlcnMgaW4gUERGIGFuZCBQbHVnaW4gY29kZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKaW5kZXggOTkxODNhNzIzZWE0Zjg0OTVkZmJkNjRjNzIwMjczMWZhZTYxNDYzYi4uNjg4
NGQwZjg2ZDI5ZGMxNDkxNjYxMTdiYTVjOTY0ZDEwYjMzYmRkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
CkBAIC0xMjE3LDggKzEyMTcsOCBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVnaW9uLmgKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy9SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL1JlbmRlcmluZ01vZGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIzMDMzNDJk
NDUxMThmMDk4YTRhMjMzYTQ3YTljZWY5MmNmOWE1MmQuLmVjZDQ1MDg1ZDlhZTI0ODhhMGEwOTU4
NDY2NDZmNGU3YzVhN2EwY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNjEsNyArMjE2MSw3IEBACiAJCTcyN0E3RjNBMjQw
NzhCODQwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0FCMjNFMUU1NDQwMDhE
NzQxQyAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMg
LyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVs
dGlwbGljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3Mjk5QkM2ODIzRDZBNTNFMDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjYyM0Q2ODZD
NjAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQk3MjlEMDUzMDI1MzE0MjQzMDA0MjIwOTggLyogUmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MjlEMDUyRTI1MzEzRTI2MDA0MjIwOTggLyogUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNzI5RDA1MzAyNTMxNDI0MzAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5RDA1
MkUyNTMxM0UyNjAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyQTczQkVGMjQ1
QTNGOTAwMDFDOUQwMyAvKiBBbmltYXRpb25GcmFtZVJhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMkE4MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBB
bmltYXRpb25GcmFtZVJhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3MkJBQzNBRTIzRTFGMEIwMDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNr
ZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJB
QzNBNTIzRTE3MzI4MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzU1M0NGRTgxMDhGNDczRjAw
RUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVs
aW5lUmVjb3JkRmFjdG9yeS5oICovOyB9OwpAQCAtOTk0Niw3ICs5OTQ2LDcgQEAKIAkJNzI3QUZF
RDMxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEVYVHNSR0IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Mjk5QkM2NDIzRDY4
NkE2MDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
bHBoYVByZW11bHRpcGxpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcy
OTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbmRlcmluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzI5RDA1MkUy
NTMxM0UyNjAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlSWRlbnRpZmllci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzI5RDA1MkUyNTMxM0UyNjAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTQyM0UxNzMyNzAwOEQ3NDFDIC8qIElt
YWdlQnVmZmVyQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MkJBQzNBNTIzRTE3MzI4MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyQmFja2VuZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1J
bWFnZUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUlt
YWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjM2NiwxMCArMjYz
NjYsMTAgQEAKIAkJCQkwNzRFODJCOTE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFu
Z2VzLmggKi8sCiAJCQkJQkNBQjQxN0YxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi8s
CiAJCQkJQkNBQjQxODAxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oICovLAotCQkJCTcyOUQw
NTJFMjUzMTNFMjYwMDQyMjA5OCAvKiBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCAqLywKIAkJ
CQkwNzNBMTU1MTIxNzdBMzk4MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuY3BwICovLAog
CQkJCTA3M0ExNTUzMjE3N0EzOUEwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5oICovLAog
CQkJCTcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8sCisJCQkJ
NzI5RDA1MkUyNTMxM0UyNjAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5o
ICovLAogCQkJCUE3M0Y5NUZDMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkUmVjdC5jcHAgKi8s
CiAJCQkJQTczRjk1RkQxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRSZWN0LmggKi8sCiAJCQkJ
MEYzREQ0NEQxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuY3BwICovLApAQCAtMzM3NDIs
NyArMzM3NDIsNiBAQAogCQkJCTQ2Qjk1MTlBMjA3RDYzNTQwMEE3RDJERCAvKiBSZW1vdGVGcmFt
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRTkyMkZDRDdDMDAwMTIwNEVDIC8qIFJlbW90
ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFQjIyRkNEN0M5MDAxMjA0RUMg
LyogUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNzI5RDA1MzAyNTMxNDI0MzAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlSWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDczQTE1NTQyMTc3QTQyNjAwRUEwOEYyIC8qIFJlbW90ZVZp
ZGVvU2FtcGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDZDMEQ4RjBDRkQxMTQ2MDA2NUY0M0Yg
LyogUmVtb3ZlRm9ybWF0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMDUwOTlF
NjQ5MjAwNTZFNTgxIC8qIFJlbW92ZU5vZGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKQEAgLTMz
NzgyLDYgKzMzNzgxLDcgQEAKIAkJCQkwOEYyRjAwQTEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVy
SW1hZ2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg2NDFENDgxMjE0MkY3RDAwOERF
OUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3Mjk5QkM2ODIzRDZBNTNFMDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNzI5RDA1MzAyNTMxNDI0MzAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTU2QzdDNEIyMjEyMzk5NzAwOUIwNkNBIC8q
IFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4Nzgw
OTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlcklubGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjU5
NUZGNDcxODI0Q0VFMzAwRkY1MUNEIC8qIFJlbmRlckl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1h
Z2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1h
Z2VCdWZmZXIuaAppbmRleCBjNmMxOWUxMjg5ZjQ4YjAyMGVhNzhiY2UzOWQxMDZjM2RiOTNiMDdk
Li44Njk3Mzk1ZmE0YzhkMDg1MWM3Yjc3OTA0MDZlNjFjOTE4ZmNlYTUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5o
CkBAIC01MCwxMyArNTAsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclR5cGU+KG5ldyBJbWFn
ZUJ1ZmZlclR5cGUoV1RGTW92ZShiYWNrZW5kKSwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJn
dW1lbnRzKS4uLikpOwogICAgIH0KLSAgICAKLSAgICBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25z
dCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNr
ZW5kQ3JlYXRlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGJhY2tlbmQtPmlzQWNjZWxlcmF0ZWQo
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKworICAgIGJvb2wgaXNBY2NlbGVyYXRl
ZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJhY2tlbmRUeXBlOjppc0FjY2VsZXJhdGVkOyB9
CiAKIHByb3RlY3RlZDoKICAgICBDb25jcmV0ZUltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxC
YWNrZW5kVHlwZT4mJiBiYWNrZW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggMGFlOWZjYmQwNTg4ZDRjNGUxZWY1YWYzY2M3ZjEyYjYx
MmJmNzhkYS4uODVjMDdiYjA5NTEzYmEwM2JjMGVkZjUyMzczM2Y3ODQ4M2Q2NTIxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0yOSw2
ICsyOSw3IEBACiAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmQuaCIKICNpbmNsdWRlICJS
ZW5kZXJpbmdNb2RlLmgiCisjaW5jbHVkZSAiUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjAsNiArNjEsOSBAQCBwdWJsaWM6CiAgICAg
CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7CiAK
KyAgICB2aXJ0dWFsIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiB7IH07IH0KKyAgICAKICAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hDb250ZXh0KCkg
PSAwOwogCkBAIC0xMDQsOCArMTA4LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjb3B5
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmLCBHQ0dMZW51bSwgUGxh
dGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9IDA7CiAgICAgCi0gICAg
dmlydHVhbCBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCA9IDA7Ci0KIHByb3RlY3RlZDoKICAg
ICBJbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCA1OGZjMTQ4MzZkOTJh
YTIwMDE5ZjIwZmVlZGM1NTcxZTlhYjVlOTVjLi5jYjU4NzI1NjdmMDg4M2I1YmQwMmUwZWVjYjhj
ZWZkYmU3MTBhOGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgY29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMJiwgR0NHTGVudW0sIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBib29sLCBib29sKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c09yaWdpbkF0VXBwZXJMZWZ0Q29ybmVyID0gZmFsc2U7Ci0gICAgdmlydHVhbCBib29sIGlzQWNj
ZWxlcmF0ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBpc0FjY2VsZXJhdGVkID0gZmFsc2U7CiAKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VY
UE9SVCBJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29u
c3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFj
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlSWRlbnRpZmllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy
YWY1NDJkZmVjODQ3YWJjMzcxYWEyZjFlOGU0YjhkZDlmYjExMGU1Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzkg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQotCi0jaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1lbnVtIFJlbW90ZVJlc291cmNlSWRlbnRpZmllclR5cGUgeyB9OwotdXNpbmcg
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXJUeXBlPjsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jNzE4YmYzMGQxOGNkNTczZDBmMWIyZGJkNGVjMGZmYTc1N2FlYzA0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitlbnVtIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggYzgwNjVhOWVjMjUxNDY0NGY3NDA1Zjlh
NTQxM2Y2MjIzNTYyNzE1NC4uZGJjM2I3ZWI4YjNkMWFkODhkMGFiM2YwZWVmOTBhN2M4ZDg1ZTAz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC0xOTAsMTEgKzE5
MCw2IEBAIElPU3VyZmFjZSogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpzdXJmYWNlKCkK
ICAgICByZXR1cm4gbV9zdXJmYWNlLmdldCgpOwogfQogCi1ib29sIEltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZDo6aXNBY2NlbGVyYXRlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEhBVkUoSU9TVVJGQUNFKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAppbmRleCAyNDE4ZjFkNDVkNTNkNDU5MzNi
MzkwNGEyODhjNjEwMWYxNGJjYzMxLi4zMjMwOTRlYTc5NWM1ZDI0ODNjODg0NDAzMTI0YTkwNDBj
Yzc0MGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaApAQCAtNjIsOSArNjIs
OSBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKEFscGhhUHJl
bXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZv
cm1hdCwgY29uc3QgSW1hZ2VEYXRhJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50
UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KSBvdmVy
cmlkZTsKICAgICBJT1N1cmZhY2UqIHN1cmZhY2UoKTsKLSAgICBib29sIGlzQWNjZWxlcmF0ZWQo
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc09yaWdpbkF0
VXBwZXJMZWZ0Q29ybmVyID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNBY2Nl
bGVyYXRlZCA9IHRydWU7CiAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgUmV0YWluUHRyPENHQ29s
b3JTcGFjZVJlZj4gY29udGV4dENvbG9yU3BhY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAKaW5kZXgg
MjNjYzA3ZThhZTQ0MmJkY2VhMGQzNjc0YTVhODU1MWM2NWNmZGM4Ny4uZDQ2MTdkMzUxNmY0ZjNl
NTFkNzVkNjQ0MzRhNmEzOTQ1N2EwMDAxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcApAQCAtMzMsOSArMzMsOSBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotRHJhd2luZ0NvbnRleHQ6OkRyYXdp
bmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgaW5pdGlhbENUTSwgUmVjb3JkZXI6Ok9ic2VydmVyKiBvYnNlcnZlcikKK0RyYXdpbmdD
b250ZXh0OjpEcmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIFJlY29yZGVyOjpEZWxlZ2F0ZSogZGVsZWdh
dGUpCiAgICAgOiBtX2NvbnRleHQoWyZdKEdyYXBoaWNzQ29udGV4dCYgZGlzcGxheUxpc3RDb250
ZXh0KSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlY29yZGVyPihkaXNwbGF5TGlzdENv
bnRleHQsIG1fZGlzcGxheUxpc3QsIEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIEZsb2F0UmVjdCh7
IH0sIGxvZ2ljYWxTaXplKSwgaW5pdGlhbENUTSwgb2JzZXJ2ZXIpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCBtX2Rpc3BsYXlMaXN0LCBH
cmFwaGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoeyB9LCBsb2dpY2FsU2l6ZSksIGluaXRp
YWxDVE0sIGRlbGVnYXRlKTsKICAgICB9KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdERyYXdpbmdDb250ZXh0LmgKaW5kZXggN2I2NzNmMzJhZDgxNWE1MDA4MWI3ZTdhYjEw
ODEzMTcxN2ZkZTU0My4uMjJlZDI1NmU4MGFkMjkzYTA1MjA2OWI3NDMwODhhMTM1MWY0N2NjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCkBAIC0z
NSw3ICszNSw3IEBAIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBjbGFzcyBEcmF3aW5nQ29udGV4
dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9F
WFBPUlQgRHJhd2luZ0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNID0geyB9LCBSZWNvcmRlcjo6T2JzZXJ2ZXIqID0g
bnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhd2luZ0NvbnRleHQoY29uc3QgRmxvYXRT
aXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNID0geyB9
LCBSZWNvcmRlcjo6RGVsZWdhdGUqID0gbnVsbHB0cik7CiAKICAgICBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PERyYXdpbmdDb250ZXh0Jj4oKnRo
aXMpLm1fY29udGV4dDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyJiByZWNvcmRlcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKaW5kZXggNmZkOTEy
ZGZiOGZlMTFjMDk4ZGQ2MTI2YThjODc4YWM2YmE3YWUwMi4uMzI1OTllMDYyZDdjZjU5ZDFkYzJl
YWQwMWU3NjBkNjZlM2Y3ZWMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlci5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFj
ZSBEaXNwbGF5TGlzdCB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgotY2xhc3Mg
SW1hZ2VCdWZmZXIgOiBwdWJsaWMgQ29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4sIHB1
YmxpYyBSZWNvcmRlcjo6T2JzZXJ2ZXIgeworY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgQ29u
Y3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4gewogICAgIHVzaW5nIEJhc2VDb25jcmV0ZUlt
YWdlQnVmZmVyID0gQ29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT47CiAKIHB1YmxpYzoK
QEAgLTQ4LDEyICs0OCwxMiBAQCBwdWJsaWM6CiAKICAgICBJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1
ZV9wdHI8QmFja2VuZFR5cGU+JiYgZGF0YUJhY2tlbmQsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkK
ICAgICAgICAgOiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcihXVEZNb3ZlKGRhdGFCYWNrZW5kKSkK
LSAgICAgICAgLCBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5nQ29udGV4dENU
TShzaXplKSwgdGhpcykKKyAgICAgICAgLCBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRpYWxE
cmF3aW5nQ29udGV4dENUTShzaXplKSkKICAgICB7CiAgICAgfQogCi0gICAgSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiBzaXplKQotICAgICAgICA6IG1fZHJhd2luZ0NvbnRleHQoc2l6ZSwg
aW5pdGlhbERyYXdpbmdDb250ZXh0Q1RNKHNpemUpLCB0aGlzKQorICAgIEltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVjb3JkZXI6OkRlbGVnYXRlKiBkZWxlZ2F0ZSA9IG51bGxw
dHIpCisgICAgICAgIDogbV9kcmF3aW5nQ29udGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRl
eHRDVE0oc2l6ZSksIGRlbGVnYXRlKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA2OGQyZjY4MDUxNWVhZTU1OGEwZDRmYmVmNmFi
MWEyN2UwYTA5ZWI0Li4xZTFlOTFhYTA4NGI5NmU2ZWIyNjVjMWY4MGZmMmY4ZTUxZmYxZmU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0zNywxMCArMzcs
MTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLVJl
Y29yZGVyOjpSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIERpc3BsYXlMaXN0JiBk
aXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9h
dFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIE9i
c2VydmVyKiBvYnNlcnZlcikKK1JlY29yZGVyOjpSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIGluaXRpYWxDVE0sIERlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICA6IEdyYXBoaWNzQ29u
dGV4dEltcGwoY29udGV4dCwgaW5pdGlhbENsaXAsIEFmZmluZVRyYW5zZm9ybSgpKQogICAgICwg
bV9kaXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKLSAgICAsIG1fb2JzZXJ2ZXIob2JzZXJ2ZXIpCisg
ICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQogewogICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5
TGlzdHMsIHN0cmVhbSA8PCAiXG5SZWNvcmRpbmcgd2l0aCBjbGlwICIgPDwgaW5pdGlhbENsaXAp
OwogICAgIG1fc3RhdGVTdGFjay5hcHBlbmQoeyBzdGF0ZSwgaW5pdGlhbENUTSwgaW5pdGlhbENs
aXAgfSk7CkBAIC05Myw4ICs5Myw4IEBAIHN0YXRpYyBSZWY8SXRlbT4gY3JlYXRlU3RhdGVDaGFu
Z2VJdGVtKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBjaGFuZ2VzCiAKIHZvaWQg
UmVjb3JkZXI6OndpbGxBcHBlbmRJdGVtKGNvbnN0IEl0ZW0mIGl0ZW0pCiB7Ci0gICAgaWYgKG1f
b2JzZXJ2ZXIpCi0gICAgICAgIG1fb2JzZXJ2ZXItPndpbGxBcHBlbmRJdGVtKGl0ZW0pOworICAg
IGlmIChtX2RlbGVnYXRlKQorICAgICAgICBtX2RlbGVnYXRlLT53aWxsQXBwZW5kSXRlbShpdGVt
KTsKIAogICAgIGlmIChpdGVtLmlzRHJhd2luZ0l0ZW0oKQogI2lmIFVTRShDRykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDFiMjRjMjZjNjcyODhmODE3MjczYTJk
MmFlZjJiNGJjOTZlMzVjNzUuLjZhMjc3MTg5N2VkMjNlNjkwNTZmYWVhOGY1ZTUzMzk4YTVmOGM4
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtNTMsOCArNTMs
OCBAQCBjbGFzcyBSZWNvcmRlciA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRJbXBsIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWNvcmRl
cik7CiBwdWJsaWM6Ci0gICAgY2xhc3MgT2JzZXJ2ZXI7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVj
b3JkZXIoR3JhcGhpY3NDb250ZXh0JiwgRGlzcGxheUxpc3QmLCBjb25zdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYsIE9ic2VydmVyKiA9IG51bGxwdHIpOworICAgIGNsYXNzIERlbGVnYXRlOworICAgIFdF
QkNPUkVfRVhQT1JUIFJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYsIERpc3BsYXlMaXN0JiwgY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBEZWxlZ2F0ZSogPSBudWxscHRyKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIH5SZWNvcmRlcigpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBw
dXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1h
Z2VEYXRhJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2lu
dCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KTsKQEAgLTYzLDkgKzYzLDkgQEAg
cHVibGljOgogCiAgICAgdm9pZCBhcHBlbmRJdGVtQW5kVXBkYXRlRXh0ZW50KFJlZjxEcmF3aW5n
SXRlbT4mJik7CiAKLSAgICBjbGFzcyBPYnNlcnZlciB7CisgICAgY2xhc3MgRGVsZWdhdGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSB7IH0KKyAgICAgICAgdmly
dHVhbCB+RGVsZWdhdGUoKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxBcHBlbmRJdGVt
KGNvbnN0IEl0ZW0mKSB7IH07CiAgICAgfTsKIApAQCAtMTg3LDcgKzE4Nyw3IEBAIHByaXZhdGU6
CiAgICAgQ29udGV4dFN0YXRlJiBjdXJyZW50U3RhdGUoKTsKIAogICAgIERpc3BsYXlMaXN0JiBt
X2Rpc3BsYXlMaXN0OwotICAgIE9ic2VydmVyKiBtX29ic2VydmVyOworICAgIERlbGVnYXRlKiBt
X2RlbGVnYXRlOwogCiAgICAgVmVjdG9yPENvbnRleHRTdGF0ZSwgMzI+IG1fc3RhdGVTdGFjazsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlci5oCmluZGV4IDc4ZDgyZjhjNDRiYzM3ZDIxM2E4MDg4NGFiZTg0ZmNmMDJhMDRm
MmIuLjUxODg4NGM4ZDM4ODZkMGQ0MGUwOGQyZmM1MTJkZWM0MzE1MzhiYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5o
CkBAIC00MSwxNiArNDEsMTYgQEAgY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXIgOiBwdWJsaWMgV2Vi
Q29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmwKICAgICB1c2luZyBC
YXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6cHV0SW1hZ2VEYXRhOwogCiBwdWJsaWM6Ci0gICAgc3Rh
dGljIGF1dG8gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIFdlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgc3RhdGljIGF1dG8g
Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1
cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxSZW1vdGVJbWFnZUJ1
ZmZlcj4oc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBudWxscHRyLCByZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICByZXR1
cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxSZW1vdGVJbWFnZUJ1
ZmZlcj4oc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBudWxscHRyLCByZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAot
ICAgIFJlbW90ZUltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNr
ZW5kLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCBXZWJD
b3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQor
ICAgIFJlbW90ZUltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNr
ZW5kLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCBXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKQogICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKFdURk1vdmUoYmFja2VuZCkp
CiAgICAgICAgICwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKHJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQpCiAgICAgewotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaW1hZ2VCdWZmZXJC
YWNrZW5kV2FzQ3JlYXRlZChtX2JhY2tlbmQtPmxvZ2ljYWxTaXplKCksIG1fYmFja2VuZC0+YmFj
a2VuZFNpemUoKSwgbV9iYWNrZW5kLT5yZXNvbHV0aW9uU2NhbGUoKSwgbV9iYWNrZW5kLT5jb2xv
clNwYWNlKCksIG1fYmFja2VuZC0+Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCksIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5pbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKG1fYmFja2VuZC0+bG9naWNhbFNpemUoKSwg
bV9iYWNrZW5kLT5iYWNrZW5kU2l6ZSgpLCBtX2JhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgpLCBt
X2JhY2tlbmQtPmNvbG9yU3BhY2UoKSwgbV9iYWNrZW5kLT5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUoKSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKICAgICB+
UmVtb3RlSW1hZ2VCdWZmZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDFlZjI4ZWUy
ZjI1MjFkY2E1NTRmNDgwNTAyZjcyNzRjOWNjMjliMzguLjg0YjVmZDY2MTZiMWVmYTkzMTAzNzQ5
MTE3YzA4OTg0NjcyYWZlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTcyLDYyICs3
Miw2MiBAQCB1aW50NjRfdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlU2VuZGVyRGVz
dGluYXRpb25JRCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIudG9VSW50NjQoKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjppbWFnZUJ1
ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0
IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6aW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBGbG9hdFNpemUm
IGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBo
YW5kbGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwg
cmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRsZSksIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6SW1hZ2VCdWZmZXJCYWNrZW5k
V2FzQ3JlYXRlZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgV1RGTW92ZShoYW5kbGUpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBt
X3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpmbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKERpc3BsYXlMaXN0Rmx1c2hJZGVu
dGlmaWVyIGZsdXNoSWRlbnRpZmllciwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Zmx1c2hEaXNw
bGF5TGlzdFdhc0NvbW1pdHRlZChEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50
aWZpZXIsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpGbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKGZsdXNoSWRlbnRpZmllciwgcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpGbHVzaERpc3BsYXlMaXN0
V2FzQ29tbWl0dGVkKGZsdXNoSWRlbnRpZmllciwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdN
b2RlOjpSZW1vdGVBY2NlbGVyYXRlZCB8fCByZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6
OlJlbW90ZVVuYWNjZWxlcmF0ZWQpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Oklt
YWdlQnVmZmVyPiBpbWFnZTsKIAogICAgIGlmIChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01v
ZGU6OlJlbW90ZUFjY2VsZXJhdGVkKQotICAgICAgICBpbWFnZSA9IEFjY2VsZXJhdGVkUmVtb3Rl
SW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNw
YWNlLCAqdGhpcywgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAgaW1hZ2UgPSBB
Y2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSwgKnRoaXMsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7
CiAKICAgICBpZiAoIWltYWdlKQotICAgICAgICBpbWFnZSA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsICp0aGlzLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBpbWFnZSA9IFVu
YWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZXNvbHV0
aW9uU2NhbGUsIGNvbG9yU3BhY2UsICp0aGlzLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OwogCiAgICAgaWYgKGltYWdlKSB7Ci0gICAgICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNo
ZUltYWdlQnVmZmVyKHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgV1RGTW92ZShpbWFnZSkpOwor
ICAgICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVJbWFnZUJ1ZmZlcihyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUoaW1hZ2UpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmZsdXNoRGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Zmx1c2hEaXNw
bGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlM
aXN0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKQogewotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hl
LmNhY2hlZEltYWdlQnVmZmVyKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpCisgICAgaWYgKGF1
dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIo
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAgICAgaW1hZ2VCdWZmZXItPmZsdXNo
RGlzcGxheUxpc3QoZGlzcGxheUxpc3QpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgZmx1
c2hJZGVudGlmaWVyLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpmbHVzaERpc3BsYXlMaXN0QW5k
Q29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxp
c3QsIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBp
ZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1
ZmZlcihyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKSB7CisgICAgaWYgKGF1dG8gaW1hZ2VCdWZm
ZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKSkgewogICAgICAgICBpbWFnZUJ1ZmZlci0+Zmx1c2hEaXNwbGF5TGlz
dChkaXNwbGF5TGlzdCk7CiAgICAgICAgIGltYWdlQnVmZmVyLT5mbHVzaENvbnRleHQoKTsKLSAg
ICAgICAgZmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZChmbHVzaElkZW50aWZpZXIsIHJlbW90
ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIGZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0
ZWQoZmx1c2hJZGVudGlmaWVyLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0K
IH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURhdGEoV2ViQ29yZTo6
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3Jj
UmVjdCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0SW1hZ2VEYXRh
KFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJ
bnRSZWN0IHNyY1JlY3QsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZl
cmVuY2UmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUmVmUHRyPEltYWdlRGF0YT4g
aW1hZ2VEYXRhOwotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNh
Y2hlLmNhY2hlZEltYWdlQnVmZmVyKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpCisgICAgaWYg
KGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZm
ZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAgICAgaW1hZ2VEYXRhID0gaW1h
Z2VCdWZmZXItPmdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QpOwogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlKFdURk1vdmUoaW1hZ2VEYXRhKSkp
OwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJj
ZShSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQordm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBt
X3JlbW90ZVJlc291cmNlQ2FjaGUucmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNl
SWRlbnRpZmllcik7CisgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLnJlbGVhc2VSZW1vdGVSZXNv
dXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IGVmZmJhNDQ5YjE4OGVhMmI1NGQzNjJjMmFj
NTRjMjhmYzBjY2IzZWQuLjUyN2RhYWI2ZjYwZTBlMjBmYTBjZDRkMzBhYjgwNDI5Nzg5NDIzOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtNjIsOCArNjIsOCBAQCBwdWJsaWM6CiAgICAgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0
OwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KLSAgICB2b2lkIGltYWdlQnVmZmVyQmFj
a2VuZFdhc0NyZWF0ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
V2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdFdhc0Nv
bW1pdHRlZChEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFj
ZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpOworICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZChEaXNwbGF5
TGlzdEZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKIAogcHJpdmF0ZToKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CkBAIC03NywxMSArNzcs
MTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92
ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCi0gICAgdm9pZCBjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJD
b3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9y
U3BhY2UsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBmbHVz
aERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdl
YkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBmbHVzaERpc3BsYXlM
aXN0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIERp
c3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpOwotICAgIHZvaWQgZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRp
b24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNvcmU6OlJlbW90
ZVJlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdlRGF0
YVJlZmVyZW5jZSYmKT4mJik7Ci0gICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29y
ZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVy
KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmlu
Z01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGZsdXNoRGlzcGxheUxp
c3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGZsdXNoRGlzcGxheUxpc3RBbmRD
b21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgRGlzcGxheUxp
c3RGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7
CisgICAgdm9pZCBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBv
dXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRh
UmVmZXJlbmNlJiYpPiYmKTsKKyAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUmVzb3VyY2VDYWNo
ZSBtX3JlbW90ZVJlc291cmNlQ2FjaGU7CiAgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLm1lc3NhZ2VzLmluCmluZGV4IDAzNWQ2YmI0NjJjMWFjMmM5MjY2MTIwMDM1ODUyNzU3
Njc4YzMwM2EuLmE4OGUwZmI2MjYyNDkxODlkOGY1YjNhMzliOWI2NjQyODYyMmNhZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCkBAIC0yMywxMSArMjMsMTEgQEAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQgTm90UmVmQ291bnRlZCB7Ci0gICAgdm9pZCBDcmVhdGVJbWFnZUJ1ZmZlcihXZWJDb3Jl
OjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpCi0gICAgdm9pZCBGbHVzaERpc3BsYXlMaXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
aXNwbGF5TGlzdCBkaXNwbGF5TGlzdCwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKLSAgICB2b2lkIEZsdXNoRGlzcGxheUxpc3RBbmRD
b21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0IGRpc3BsYXlMaXN0LCBXZWJL
aXQ6OkRpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKLSAgICBH
ZXRJbWFnZURhdGEoZW51bTp1aW50OF90IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24g
b3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNvcmU6OlJlbW90ZVJl
c291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpIC0+IChJUEM6OkltYWdl
RGF0YVJlZmVyZW5jZSBpbWFnZURhdGEpIFN5bmNocm9ub3VzCi0gICAgdm9pZCBSZWxlYXNlUmVt
b3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcikKKyAgICB2b2lkIENyZWF0ZUltYWdlQnVmZmVyKFdlYkNvcmU6OkZsb2F0
U2l6ZSBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikKKyAgICB2b2lkIEZsdXNoRGlzcGxheUxpc3QoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0IGRpc3BsYXlMaXN0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIHZvaWQgRmx1c2hEaXNwbGF5TGlz
dEFuZENvbW1pdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QgZGlzcGxheUxpc3Qs
IFdlYktpdDo6RGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKQorICAgIEdldEltYWdlRGF0YShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikgLT4gKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YSkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIFJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogfQogCiAjZW5kaWYgLy8gRU5B
QkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCmluZGV4IGFkMDQ3MjYyNTIxOTY3OTQ2
NDk0YzhhYzdhNTQ5MDMxMGE3ZDdiMTIuLjUxNGExNGU3NWI2ZmExZWQyNTBkOGVkYmQ5MGQzZjE1
NWUyYjkxNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKQEAgLTMxLDIwICszMSwyMCBAQAogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBSZW1vdGVSZXNv
dXJjZUNhY2hlOjpjYWNoZUltYWdlQnVmZmVyKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mJiBpbWFn
ZSkKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVJbWFnZUJ1ZmZlcihSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+JiYgaW1hZ2UpCiB7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX2lt
YWdlQnVmZmVycy5hZGQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdlKSk7
CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2ltYWdlQnVmZmVycy5hZGQocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdlKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1
bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIFJl
bW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlZEltYWdlQnVmZmVyKFJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCitXZWJDb3JlOjpJbWFnZUJ1ZmZlciogUmVt
b3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICByZXR1cm4gbV9pbWFn
ZUJ1ZmZlcnMuZ2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgcmV0dXJuIG1faW1h
Z2VCdWZmZXJzLmdldChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCi12b2lkIFJl
bW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAobV9pbWFnZUJ1ZmZlcnMucmVt
b3ZlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpCisgICAgaWYgKG1faW1hZ2VCdWZmZXJzLnJl
bW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQogICAgICAgICByZXR1cm47CiAgICAg
Ly8gQ2FjaGluZyB0aGUgcmVtb3RlIHJlc291cmNlIHNob3VsZCBoYXZlIGhhcHBlbmVkIGJlZm9y
ZSByZWxlYXNpbmcgaXQuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaApp
bmRleCA0ZWQ4Y2UwYWNjMTVkZjM3MzFjN2YxYTY4NGMzZGQwODk2YzU2MDhmLi4wNTQ2YWQwN2My
ODY3NWE5ZDY1OTA3NDg3NDliYTJlOTFlMDM2YWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKQEAgLTI3LDcg
KzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAotI2luY2x1ZGUgPFdlYkNvcmUv
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC00MiwxMiArNDIsMTIgQEAgY2xhc3MgUmVtb3RlUmVzb3VyY2VDYWNo
ZSB7CiBwdWJsaWM6CiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZSgpID0gZGVmYXVsdDsKIAotICAg
IHZvaWQgY2FjaGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIs
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4mJik7Ci0gICAgV2ViQ29yZTo6
SW1hZ2VCdWZmZXIqIGNhY2hlZEltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllcik7Ci0gICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNhY2hlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1h
Z2VCdWZmZXI+JiYpOworICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBjYWNoZWRJbWFnZUJ1ZmZl
cihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVsZWFz
ZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAK
IHByaXZhdGU6Ci0gICAgdXNpbmcgUmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwID0gSGFzaE1hcDxX
ZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcj4+OworICAgIHVzaW5nIFJlbW90ZUltYWdlQnVmZmVySGFzaE1hcCA9IEhh
c2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+PjsKIAogICAgIFJlbW90ZUltYWdlQnVmZmVySGFzaE1h
cCBtX2ltYWdlQnVmZmVyczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weQppbmRleCAwNTg1NzdlNWY3ZGViNmQyYmRmMjViMWM3NTUzNTZmOTZhZGY4ODg5Li45OTEx
MWE3ODkwYjU3ODVmNGUxMDYyZDY4ODIwNjU0N2Q1MjUwM2JkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIyMyw3ICsyMjMsNyBAQCBkZWYgdHlwZXNfdGhh
dF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6UG9pbnRl
cklEJywKICAgICAgICAgJ1dlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyJywKLSAgICAgICAgJ1dlYkNvcmU6
OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UmVuZGVyaW5nTW9kZScsCiAg
ICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllcicsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA2MDk2OGY3
YzU3YzczZThkMzI0ODYzOTE3OTk5OTM3NDBiM2M4ZWM0Li41OGQzOWRmOWI4YzVjNjc1MDJmYTI0
NzUyNmMwNDAyYzUyYTM4Y2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTU1OCw4ICs1NTgsOCBAQCBXZWJQ
cm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAK
IAogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCi1XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3Bw
CiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3Bw
CitXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZiNmE5NjAwMDc5Njc3MDA2
ZDM1NzAwYjE2MzRiYWE1NzlhNTc2NDUuLmU4NDc0MmIwMTAxYzY4MzY1MjQyZDNjMmM5OTBmMDNi
ODdiYmFiNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNDIyMiw4ICs0MjIyLDYgQEAKIAkJNzFBNjc2QTUyMkM2MjMxODAwN0Q2Mjk1
IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbTsg
cGF0aCA9IGlvcy9XS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcxRkI4MTBBMjI2MDYyN0EwMDMyMzY3NyAvKiBXZWJzaXRlU2lt
dWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJzaXRlU2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjI3ODAwQjI0MDhCRDdEMDA3RDM3NkIgLyog
UGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3Jt
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
MjI3ODAwQzI0MDk3QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
clByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcyMjc4MDBEMjQw
OTdBMDIwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNkQ1NkREMjUzQTY0ODEwMDAyRUY5MCAvKiBS
ZW1vdGVSZXNvdXJjZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVJlc291cmNl
Q2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjZENTZERTI1M0E2NDgx
MDAwMkVGOTAgLyogUmVtb3RlUmVzb3VyY2VDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVS
ZXNvdXJjZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0E3RjM0MjQw
Nzg1N0QwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFi
bGVJT1N1cmZhY2VCYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQy
MzUsNiArNDIzMyw4IEBACiAJCTcyN0E3RjQ5MjQwOEFFRTYwMDREMjkzMSAvKiBSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyUHJveHkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2RUYxNzk1MTg4QzAwODc4NzlFIC8q
IFdlYkNvbG9yUGlja2VyTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkNvbG9yUGlja2VyTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOEU4NkYw
MTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyTWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3MkI1MzE1NzI1M0MxRTREMDA0OTI5NUEgLyogUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyQjUzMTU4MjUzQzFF
NEQwMDQ5Mjk1QSAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTc1QThEMkM0MTg3Q0NGOUYwMEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJzaXRlRGF0YVN0b3JlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1QThEMkM1MTg3Q0NGOUYwMEMzOUM5RSAvKiBXS1dlYnNp
dGVEYXRhU3RvcmUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
S1dlYnNpdGVEYXRhU3RvcmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1QThE
MkQ0MTg3RDFDMDEwMEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODEzMywxMiArODEzMywxMiBAQAogCQkJ
CTcyN0E3RjM2MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQuaCAqLywKIAkJCQk3MjdBN0YzODI0MDc4OEYwMDA0RDI5MzEgLyogUGxhdGZvcm1JbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCAqLywKIAkJCQk3MjI3ODAwQjI0MDhCRDdEMDA3RDM3
NkIgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCi0JCQkJNzIyNzgwMEMy
NDA5N0EwMjAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5j
cHAgKi8sCi0JCQkJNzIyNzgwMEQyNDA5N0EwMjAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJQcm94eS5oICovLAogCQkJCTcyN0E3RjQ5MjQwOEFFRTYwMDREMjkzMSAv
KiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCiAJCQkJNTUwNjQwOUQyNDA3MTYwOTAwQUFF
MDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgKi8sCiAJCQkJNTUwNjQwOUUy
NDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oICovLAogCQkJ
CTU1MDY0MEEwMjQwNzE5RTEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
bWVzc2FnZXMuaW4gKi8sCisJCQkJNzJCNTMxNTcyNTNDMUU0RDAwNDkyOTVBIC8qIFJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eS5jcHAgKi8sCisJCQkJNzJCNTMxNTgyNTNDMUU0RDAwNDkyOTVBIC8q
IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oICovLAogCQkJCTU1MDY0MDlGMjQwNzE5NkEwMEFB
RTA0NSAvKiBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oICovLAogCQkJKTsKIAkJCXBhdGgg
PSBncmFwaGljczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmlu
ZGV4IDlhZmYwODhlMzdjYTc2YTdmODY0YWU3ZTQyYmJiNzAwNGYxZjE1MjMuLjA1MTc2NzgzZDU1
MzFiZmU3MGY4NTBiZjJjMTQ5Zjc4ODIyZDBlMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90
ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMzcsNCArMzcsMTQgQEAgdXNpbmcgQWNjZWxlcmF0ZWRS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5ID0gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTxBY2NlbGVyYXRl
ZEltYWcKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkVHSU4oV2ViS2l0OjpVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSkKKyAgICBz
dGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVy
KSB7IHJldHVybiBpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSAmJiAh
aW1hZ2VCdWZmZXIuaXNBY2NlbGVyYXRlZCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VO
RCgpCisKKyNpZiBIQVZFKElPU1VSRkFDRSkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
V2ViS2l0OjpBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHkpCisgICAgc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikgeyByZXR1
cm4gaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgJiYgaW1hZ2VCdWZm
ZXIuaXNBY2NlbGVyYXRlZCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisjZW5k
aWYKKwogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZTk1NjJhMzY4ZTY5ZTQyMzBlNzI2MmMyNjM2ZGYyODZkNzQ2ZWFjNS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQ
cm94eS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyUHJveHkuaCIKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIkltYWdl
RGF0YVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdl
cy5oIgotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgotI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5n
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLVJl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlclByb3h5KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkp
Ci0gICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShtYWtlV2Vha1B0cihyZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkpKQotewotICAgIC8vIENyZWF0ZSB0aGUgUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eS4KLSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c2VuZChNZXNz
YWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVu
ZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBtX3JlbW90ZVJlc291cmNl
SWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcigpKTsKLX0KLQotUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclBy
b3h5Ojp+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KCkKLXsKLSAgICAvLyBS
ZWxlYXNlIHRoZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LgotICAgIGlmICghbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS0+c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVs
ZWFzZVJlbW90ZVJlc291cmNlKG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOwotfQot
Ci1SZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6
OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3Qg
SW50UmVjdCYgc3JjUmVjdCkgY29uc3QKLXsKLSAgICBJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBp
bWFnZURhdGFSZWZlcmVuY2U7Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpHZXRJbWFnZURhdGEob3V0
cHV0Rm9ybWF0LCBzcmNSZWN0LCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllciksIE1lc3NhZ2Vz
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpHZXRJbWFnZURhdGE6OlJlcGx5KGltYWdlRGF0YVJl
ZmVyZW5jZSksIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcigpLCAxX3MpOwotICAgIHJldHVybiBpbWFnZURhdGFSZWZlcmVuY2UuYnVmZmVy
KCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Ojp3YWl0
Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgpCi17Ci0gICAgaWYgKG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5ICYmICFpc0JhY2tlbmRDcmVhdGVkKCkpCi0gICAgICAgIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT53YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3Jl
YXRlZCgpOwotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6
d2FpdEZvckZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoKQotewotICAgIGlmIChtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSAmJiBpc1BlbmRpbmdGbHVzaCgpKQotICAgICAgICBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+d2FpdEZvckZsdXNoRGlzcGxheUxpc3RXYXNDb21t
aXR0ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6
OmZsdXNoRGlzcGxheUxpc3QoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNw
bGF5TGlzdCkKLXsKLSAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQotICAg
ICAgICByZXR1cm47Ci0gICAgCi0gICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1v
dGVJbWFnZUJ1ZmZlclN0YXJ0LCBGbHVzaFJlbW90ZUltYWdlQnVmZmVyRW5kKTsKLSAgICBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Rmx1c2hEaXNwbGF5TGlzdChkaXNwbGF5TGlzdCwgbV9yZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIoKSk7Ci0gICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKLX0KLQotdm9pZCBSZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OmZsdXNoRGlzcGxheUxpc3RBbmRXYWl0
Q29tbWl0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpCi17
Ci0gICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlclN0
YXJ0LCBGbHVzaFJlbW90ZUltYWdlQnVmZmVyRW5kLCAxKTsKLSAgICBtX3NlbnRGbHVzaElkZW50
aWZpZXIgPSBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKLSAgICBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Rmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChkaXNwbGF5TGlzdCwgbV9zZW50Rmx1
c2hJZGVudGlmaWVyLCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LT5yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsKLSAgICBkaXNw
bGF5TGlzdC5jbGVhcigpOwotICAgIHdhaXRGb3JGbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVk
KCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Ojpjb21t
aXRGbHVzaENvbnRleHQoRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVy
KQotewotICAgIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXIgPSBmbHVzaElkZW50aWZpZXI7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5YTAyNmE4MTI5ODc5NmU3YmQzNWZhOTZl
ZWU5MDRkZTRiZmI1ZmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KLSNpbmNsdWRlICJEaXNwbGF5TGlzdEZs
dXNoSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxh
eUxpc3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJp
bmdNb2RlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEltYWdlRGF0YTsKLWVudW0g
Y2xhc3MgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA6IHVpbnQ4X3Q7Ci19Ci0KLW5hbWVzcGFjZSBX
ZWJLaXQgewotCi1jbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7Ci0KLWNsYXNzIFJl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVh
bCB+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KCk7Ci0KLSAgICBXZWJDb3Jl
OjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7IH0KLQotICAgIC8vIE1lc3Nh
Z2VzIHRvIGJlIHJlY2VpdmVkLiBTZWUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5p
bi4KLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUpID0gMDsKLQotICAgIHZvaWQgY29tbWl0Rmx1c2hDb250ZXh0KERpc3BsYXlMaXN0
Rmx1c2hJZGVudGlmaWVyKTsKLQotcHJvdGVjdGVkOgotICAgIFJlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXJQcm94eShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5k
ZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYpOwotCi0gICAgdmlydHVhbCBib29sIGlzQmFja2Vu
ZENyZWF0ZWQoKSBjb25zdCA9IDA7Ci0gICAgYm9vbCBpc1BlbmRpbmdGbHVzaCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2VudEZsdXNoSWRlbnRpZmllciAhPSBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVy
OyB9Ci0KLSAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29y
ZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHNyY1JlY3QpIGNvbnN0OwotCi0gICAgdm9pZCB3YWl0Rm9ySW1hZ2VCdWZmZXJCYWNr
ZW5kV2FzQ3JlYXRlZCgpOwotICAgIHZvaWQgd2FpdEZvckZsdXNoRGlzcGxheUxpc3RXYXNDb21t
aXR0ZWQoKTsKLQotICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuIFNlZSBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4uCi0gICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0KFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYpOwotICAgIHZvaWQgZmx1c2hEaXNwbGF5
TGlzdEFuZFdhaXRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jik7Ci0K
LXByaXZhdGU6Ci0gICAgV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+IG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwotICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllciBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllciB7IFdlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OwotCi0gICAgRGlzcGxheUxpc3RGbHVzaElkZW50
aWZpZXIgbV9zZW50Rmx1c2hJZGVudGlmaWVyOwotICAgIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlm
aWVyIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5LmgKaW5kZXggMjBmYmY4MWM5ODI1NTJlZjc2YmI2Y2QxNWRjM2ExZTlkMzg4MGVjMy4uMTQ5
NzQ3NDJlZDc3ZTYwYTM1OGM1NmVhNzM1ZGQ4NGM5OTQ3NDBlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlclByb3h5LmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
IAotI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRGlzcGxheUxpc3RJdGVtcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RSZWNv
cmRlci5oPgpAQCAtMzcsNTQgKzM2LDgyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQmFja2VuZFR5cGU+Ci1j
bGFzcyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyUHJveHkgeworY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA6IHB1YmxpYyBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZSB7CiAgICAgdXNpbmcgQmFzZURp
c3BsYXlMaXN0SW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8
QmFja2VuZFR5cGU+OwogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjptX2Jh
Y2tlbmQ7CiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6Om1fZHJhd2luZ0Nv
bnRleHQ7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUltYWdl
QnVmZmVyUHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdlYkNv
cmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAgICB7CiAgICAgICAgIGlmIChCYWNr
ZW5kVHlwZTo6Y2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKS5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KG5ldyBSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5KHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSk7CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4obmV3IFJlbW90ZUltYWdlQnVmZmVyUHJveHko
c2l6ZSwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSk7CiAgICAgfQogCiAgICAgflJlbW90
ZUltYWdlQnVmZmVyUHJveHkoKQogICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZmx1c2hEcmF3aW5n
Q29udGV4dCgpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5KCkucmVsZWFzZUltYWdlQnVmZmVyKG1fcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7IH0KKworICAgIHZvaWQgY3JlYXRl
QmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3Jl
OjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUp
CisgICAgeworICAgICAgICBBU1NFUlQoIW1fYmFja2VuZCk7CisgICAgICAgIG1fYmFja2VuZCA9
IEJhY2tlbmRUeXBlOjpjcmVhdGUobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoaGFuZGxlKSk7CisgICAgfQorCisgICAgdm9pZCBj
b21taXRGbHVzaERpc3BsYXlMaXN0KERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRl
bnRpZmllcikKKyAgICB7CisgICAgICAgIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXIgPSBmbHVz
aElkZW50aWZpZXI7CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01v
ZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5KQotICAgICAgICA6IEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyKHNp
emUpCi0gICAgICAgICwgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KHNpemUs
IHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5KQorICAgIFJlbW90ZUltYWdlQnVmZmVyUHJveHkoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiBzaXplLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAgOiBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
cihzaXplLCB0aGlzKQorICAgICAgICAsIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KG1h
a2VXZWFrUHRyKHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAgICAgeworICAgICAgICBB
U1NFUlQobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpOwogICAgIH0KIAotICAgIHZvaWQg
Y3JlYXRlQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBo
YW5kbGUpIG92ZXJyaWRlCisgICAgYm9vbCBpc1BlbmRpbmdGbHVzaCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2VudEZsdXNoSWRlbnRpZmllciAhPSBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyOyB9CisK
KyAgICB2b2lkIHRpbWVvdXRXYWl0Rm9yRmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZCgpCiAg
ICAgewotICAgICAgICBBU1NFUlQoIW1fYmFja2VuZCk7Ci0gICAgICAgIG1fYmFja2VuZCA9IEJh
Y2tlbmRUeXBlOjpjcmVhdGUobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2Nh
bGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoaGFuZGxlKSk7CisgICAgICAgIGlmICghbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8g
V2FpdCBmb3Igb3VyIERpc3BsYXlMaXN0IHRvIGJlIGZsdXNoZWQgYnV0IGRvIG5vdCBoYW5nLgor
ICAgICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFdhaXRpbmdGbHVzaCA9IDM7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgbnVtV2FpdGluZ0ZsdXNoID0gMDsgbnVtV2FpdGluZ0ZsdXNo
IDwgbWF4V2FpdGluZ0ZsdXNoICYmIGlzUGVuZGluZ0ZsdXNoKCk7ICsrbnVtV2FpdGluZ0ZsdXNo
KQorICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPndhaXRGb3JGbHVz
aERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKCk7CiAgICAgfQotICAgIAotICAgIGJvb2wgaXNCYWNr
ZW5kQ3JlYXRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsgfQog
CiAgICAgQmFja2VuZFR5cGUqIGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkgY29uc3Qgb3ZlcnJpZGUK
ICAgICB7Ci0gICAgICAgIGlmICghbV9iYWNrZW5kKQotICAgICAgICAgICAgY29uc3RfY2FzdDxS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5Jj4oKnRoaXMpLlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXJQcm94eTo6d2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoKTsKKyAgICAg
ICAgaWYgKCFtX2JhY2tlbmQgJiYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAg
ICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+d2FpdEZvckltYWdlQnVmZmVy
QmFja2VuZFdhc0NyZWF0ZWQoKTsKICAgICAgICAgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsKICAg
ICB9CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29y
ZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHNyY1JlY3QpIGNvbnN0IG92ZXJyaWRlCiAgICAgeworICAgICAgICBpZiAoIW1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
ICAgICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVy
UHJveHkqPih0aGlzKS0+bV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwotICAgICAgICBj
b25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyUHJveHkqPih0aGlzKS0+UmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlclByb3h5OjpmbHVzaERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KTsKLSAg
ICAgICAgYXV0byByZXN1bHQgPSBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyUHJveHkqPih0
aGlzKS0+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5OjpnZXRJbWFnZURhdGEo
b3V0cHV0Rm9ybWF0LCBzcmNSZWN0KTsKKyAgICAgICAgaWYgKGRpc3BsYXlMaXN0Lml0ZW1Db3Vu
dCgpKSB7CisgICAgICAgICAgICBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyUHJveHkmPigq
dGhpcykuZmx1c2hEaXNwbGF5TGlzdChkaXNwbGF5TGlzdCk7CisgICAgICAgICAgICBkaXNwbGF5
TGlzdC5jbGVhcigpOworICAgICAgICB9CisKICAgICAgICAgLy8gZ2V0SW1hZ2VEYXRhIGlzIHN5
bmNocm9ub3VzLCB3aGljaCBtZWFucyB3ZSd2ZSBhbHJlYWR5IHJlY2VpdmVkIHRoZSBDb21taXRJ
bWFnZUJ1ZmZlckZsdXNoQ29udGV4dCBtZXNzYWdlLgotICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmdldEltYWdlRGF0
YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
ICAgICB9CiAKICAgICB2b2lkIHB1dEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbWFnZURhdGEmIGltYWdlRGF0YSwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IGRlc3RQb2ludCA9IHsgfSwgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9y
bWF0ID0gV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCkgb3Zl
cnJpZGUKQEAgLTEwMywxOCArMTMwLDQ4IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgZmx1c2hE
cmF3aW5nQ29udGV4dCgpIG92ZXJyaWRlCiAgICAgeworICAgICAgICBmbHVzaERyYXdpbmdDb250
ZXh0QW5kQ29tbWl0KCk7CisgICAgICAgIHRpbWVvdXRXYWl0Rm9yRmx1c2hEaXNwbGF5TGlzdFdh
c0NvbW1pdHRlZCgpOworICAgIH0KKworICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dEFuZENv
bW1pdCgpCisgICAgeworICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0gbV9k
cmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwotICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXRl
bUNvdW50KCkpCi0gICAgICAgICAgICBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJv
eHk6OmZsdXNoRGlzcGxheUxpc3RBbmRXYWl0Q29tbWl0KGRpc3BsYXlMaXN0KTsKKyAgICAgICAg
aWYgKCFkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShGbHVzaFJlbW90ZUltYWdlQnVmZmVyU3RhcnQs
IEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJFbmQsIDEpOworICAgICAgICBtX3NlbnRGbHVzaElkZW50
aWZpZXIgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Zmx1c2hEaXNwbGF5TGlzdEFu
ZENvbW1pdChkaXNwbGF5TGlzdCwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAg
ICAgICBkaXNwbGF5TGlzdC5jbGVhcigpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgZmx1c2hE
aXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3Bs
YXlMaXN0KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSB8fCAhZGlzcGxheUxpc3QuaXRlbUNvdW50KCkpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1vdGVJbWFnZUJ1
ZmZlclN0YXJ0LCBGbHVzaFJlbW90ZUltYWdlQnVmZmVyRW5kKTsKKyAgICAgICAgbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHktPmZsdXNoRGlzcGxheUxpc3QoZGlzcGxheUxpc3QsIG1fcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB9CisKICAgICB2b2lkIHdpbGxBcHBlbmRJ
dGVtKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtJikgb3ZlcnJpZGUKICAgICB7CiAg
ICAgICAgIGNvbnN0ZXhwciBzaXplX3QgRGlzcGxheUxpc3RCYXRjaFNpemUgPSA1MTI7CiAgICAg
ICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0gbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwot
ICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXRlbUNvdW50KCkgPj0gRGlzcGxheUxpc3RCYXRjaFNp
emUpCi0gICAgICAgICAgICBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OmZs
dXNoRGlzcGxheUxpc3QoZGlzcGxheUxpc3QpOworICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXRl
bUNvdW50KCkgPCBEaXNwbGF5TGlzdEJhdGNoU2l6ZSkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBmbHVzaERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KTsKKyAgICAgICAgZGlzcGxheUxp
c3QuY2xlYXIoKTsKICAgICB9CisKKyAgICBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBtX3Nl
bnRGbHVzaElkZW50aWZpZXI7CisgICAgRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgbV9yZWNl
aXZlZEZsdXNoSWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgeyBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBXZWFrUHRyPFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eT4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmNwcAppbmRleCBiMTQ2MWI0ODIxNDhkMmI3NWI0MGYwOThkOTQwY2RlMTBhYjRmZmNlLi5hY2Nm
YzY4OWM3N2Y3MzljODg1OWY3ZDljMTc1NDZjNjY0MDc3ZTU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24uaCIKKyNpbmNsdWRlICJJbWFnZURhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNz
YWdlcy5oIgpAQCAtODgsMzggKzg5LDc1IEBAIGJvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5Ojp3YWl0Rm9yRmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZCgpCiAKIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFNob3VsZEFjY2VsZXJhdGUgc2hvdWxkQWNj
ZWxlcmF0ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7
CisgICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7CisKICAgICBpZiAoc2hvdWxkQWNjZWxl
cmF0ZSA9PSBTaG91bGRBY2NlbGVyYXRlOjpZZXMpIHsKLSAgICAgICAgaWYgKGF1dG8gaW1hZ2VC
dWZmZXIgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShzaXplLCBS
ZW5kZXJpbmdNb2RlOjpSZW1vdGVBY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNw
YWNlLCAqdGhpcykpIHsKLSAgICAgICAgICAgIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1h
cC5hZGQoaW1hZ2VCdWZmZXItPnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpLCBpbWFnZUJ1ZmZl
ci5nZXQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Ci0gICAgICAgIH0KKyAg
ICAgICAgcmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OlJlbW90ZUFjY2VsZXJhdGVkOwor
ICAgICAgICBpbWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6
Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgKnRoaXMpOworICAgIH0KKworICAgIGlmICgh
aW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgcmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OlJl
bW90ZVVuYWNjZWxlcmF0ZWQ7CisgICAgICAgIGltYWdlQnVmZmVyID0gVW5hY2NlbGVyYXRlZFJl
bW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsICp0aGlz
KTsKICAgICB9CiAKLSAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxlcmF0ZWRSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6UmVtb3RlVW5h
Y2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCAqdGhpcykpIHsKLSAgICAg
ICAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmFkZChpbWFnZUJ1ZmZlci0+cmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKCksIGltYWdlQnVmZmVyLmdldCgpKTsKKyAgICBpZiAoaW1hZ2VC
dWZmZXIpIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Q3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBj
b2xvclNwYWNlLCBpbWFnZUJ1ZmZlci0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpLCBt
X3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKyAgICAgICAgbV9yZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkuY2FjaGVJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci0+cmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKCksIGltYWdlQnVmZmVyLmdldCgpKTsKICAgICAgICAgcmV0dXJuIGltYWdlQnVm
ZmVyOwogICAgIH0KIAorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxs
cHRyOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZVJlbW90
ZVJlc291cmNlKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpCitSZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldElt
YWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVj
dCYgc3JjUmVjdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikKK3sKKyAgICBJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGFSZWZl
cmVuY2U7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Okdl
dEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciksIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpHZXRJbWFnZURhdGE6OlJl
cGx5KGltYWdlRGF0YVJlZmVyZW5jZSksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIDFf
cyk7CisgICAgcmV0dXJuIGltYWdlRGF0YVJlZmVyZW5jZS5idWZmZXIoKTsKK30KKwordm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoRGlzcGxheUxpc3QoY29uc3QgRGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpGbHVzaERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0LCByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsK
K30KKworRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdCYgZGlzcGxheUxpc3QsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgc2Vu
dEZsdXNoSWRlbnRpZmllciA9IERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkZsdXNoRGlzcGxh
eUxpc3RBbmRDb21taXQoZGlzcGxheUxpc3QsIHNlbnRGbHVzaElkZW50aWZpZXIsIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAg
IHJldHVybiBzZW50Rmx1c2hJZGVudGlmaWVyOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgLy8gQ3JlYXRlSW1hZ2VC
dWZmZXIgbWVzc2FnZSBzaG91bGQgaGF2ZSBiZWVuIHJlY2VpdmVkIGJlZm9yZSB0aGlzIG9uZS4K
LSAgICBib29sIGZvdW5kID0gbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLnJlbW92ZShy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5k
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZWxlYXNlUmVt
b3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpp
bWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUs
IGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjppbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0
IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlck1hcC5nZXQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkKLSAg
ICAgICAgaW1hZ2VCdWZmZXItPmNyZWF0ZUJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXpl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoaGFuZGxlKSk7CisgICAgYXV0
byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNhY2hlZEltYWdlQnVm
ZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgaWYgKCFpbWFnZUJ1ZmZlcikK
KyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChpbWFnZUJ1ZmZlci0+aXNBY2NlbGVyYXRl
ZCgpKQorICAgICAgICBkb3duY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+
KCppbWFnZUJ1ZmZlcikuY3JlYXRlQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZShoYW5kbGUpKTsKKyAgICBlbHNlCisg
ICAgICAgIGRvd25jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1h
Z2VCdWZmZXIpLmNyZWF0ZUJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0
aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoaGFuZGxlKSk7CiB9CiAKLXZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKERpc3Bs
YXlMaXN0Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjpmbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKERpc3BsYXlMaXN0Rmx1c2hJ
ZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9
IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5nZXQocmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKSkKLSAgICAgICAgaW1hZ2VCdWZmZXItPmNvbW1pdEZsdXNoQ29udGV4dChmbHVzaElkZW50
aWZpZXIpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94
eS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIGlm
ICghaW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChpbWFnZUJ1ZmZlci0+
aXNBY2NlbGVyYXRlZCgpKQorICAgICAgICBkb3duY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdl
QnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZlcikuY29tbWl0Rmx1c2hEaXNwbGF5TGlzdChmbHVzaElk
ZW50aWZpZXIpOworICAgIGVsc2UKKyAgICAgICAgZG93bmNhc3Q8VW5hY2NlbGVyYXRlZFJlbW90
ZUltYWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZlcikuY29tbWl0Rmx1c2hEaXNwbGF5TGlzdChm
bHVzaElkZW50aWZpZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4IDlkMjkwMDIzZDQ5NzIxZWFkNmNiOTg3OTlk
MjZmNWE4ZDBlZDRkYmUuLjQzNjFiYWFmZWZjMzUwYzcwMDlhOTdhNmRiNjhkNTI1ZWJjMWU0NTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtMzEsMTYgKzMxLDI0
IEBACiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgotI2luY2x1ZGUgIlJl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eS5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9E
aXNwbGF5TGlzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jl
bmRlcmluZ01vZGUuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKK2NsYXNz
IERpc3BsYXlMaXN0OworY2xhc3MgSXRlbTsKK30KK2NsYXNzIEZsb2F0U2l6ZTsKK2NsYXNzIElt
YWdlRGF0YTsKK2VudW0gY2xhc3MgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA6IHVpbnQ4X3Q7Citl
bnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90OworZW51bSBjbGFzcyBSZW5kZXJpbmdNb2Rl
IDogdWludDhfdDsKK2VudW0gY2xhc3MgU2hvdWxkQWNjZWxlcmF0ZSA6IGJvb2w7Cit9CisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkKQEAg
LTUyLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgflJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSgpOwogCi0gICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOyB9
CisgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5JiByZW1vdGVSZXNvdXJjZUNhY2hlUHJveHko
KSB7IHJldHVybiBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eTsgfQogCiAgICAgLy8gSVBDOjpN
ZXNzYWdlU2VuZGVyLgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24oKSBjb25zdCBvdmVycmlkZTsKQEAgLTYxLDggKzY5LDEyIEBAIHB1YmxpYzoKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKKyAgICAvLyBNZXNzYWdlcyB0byBi
ZSBzZW50LgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6U2hvdWxkQWNj
ZWxlcmF0ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlKTsKLSAg
ICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJD
b3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
KyAgICB2b2lkIGZsdXNoRGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBE
aXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIGJvb2wgd2FpdEZvckltYWdl
QnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoKTsKICAgICBib29sIHdhaXRGb3JGbHVzaERpc3BsYXlM
aXN0V2FzQ29tbWl0dGVkKCk7CkBAIC03MSwxMSArODMsMTAgQEAgcHJpdmF0ZToKICAgICBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2Vp
dmVkLgotICAgIHZvaWQgaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5k
U2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7Ci0g
ICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKERpc3BsYXlMaXN0Rmx1c2hJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgaW1h
Z2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2lj
YWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUs
IFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBmbHVzaERp
c3BsYXlMaXN0V2FzQ29tbWl0dGVkKERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCi0gICAgdXNpbmcgSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlck1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyLCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkqPjsKLSAgICBJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyTWFwIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcDsKKyAg
ICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgeyAq
dGhpcyB9OwogICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIgeyBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9Owog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdl
cy5pbgppbmRleCBlMDBkY2Q3NWI0ZTNiMTU3ZjM3YTYyYTRiZWY5OWM0NWI1ODBmZDVlLi44ZjI0
NTg1NjM1ZjQ3MDgzZDFkYjI3YTViMzk2NjY1ZjMxNWViY2IwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjMsOCArMjMsOCBA
QAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIHZvaWQgSW1hZ2VCdWZmZXJCYWNrZW5k
V2FzQ3JlYXRlZChXZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNvcmU6OkludFNp
emUgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFdl
YkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
Ci0gICAgdm9pZCBGbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKFdlYktpdDo6RGlzcGxheUxp
c3RGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIHZvaWQgSW1hZ2VCdWZm
ZXJCYWNrZW5kV2FzQ3JlYXRlZChXZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNv
cmU6OkludFNpemUgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBo
YW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpCisgICAgdm9pZCBGbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKFdl
YktpdDo6RGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlZDdlNmJkZDFiZmM0M2NiNjg3YTMzNzU4YTBm
MTUxZjJmZmE1MGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKQEAgLTAsMCArMSw2MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUg
IlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OlJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKK3sKK30KKwordm9pZCBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHk6OmNhY2hlSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGltYWdl
QnVmZmVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9pbWFnZUJ1ZmZlcnMuYWRkKHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgaW1hZ2VCdWZmZXIpOworICAgIEFTU0VSVF9VTlVTRUQo
YWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK0ltYWdlQnVmZmVyKiBSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlZEltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIG1f
aW1hZ2VCdWZmZXJzLmdldChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgYm9v
bCBmb3VuZCA9IG1faW1hZ2VCdWZmZXJzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOworICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKKyAgICBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yMzk2OGY2YWZhZGYzY2NmOTdhYjkyMTNiMzExYmRmYTA0Mzg2MGZmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQorCisjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaD4K
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJ
bWFnZUJ1ZmZlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTsKKworY2xhc3MgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHsKK3B1
YmxpYzoKKyAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5Jik7CisKKyAgICB2b2lkIGNhY2hlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciopOworICAgIFdlYkNvcmU6
OkltYWdlQnVmZmVyKiBjYWNoZWRJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVsZWFzZUltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgdXNpbmcgUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eUhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqPjsKKyAgICAKKyAgICBSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5SGFzaE1hcCBtX2ltYWdlQnVmZmVyczsKKyAgICBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>