<?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>214529</bug_id>
          
          <creation_ts>2020-07-19 00:09:09 -0700</creation_ts>
          <short_desc>[Cocoa] Add experimental MSE WebM parser</short_desc>
          <delta_ts>2020-07-21 22:09:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>214585</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>calvaris</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1672862</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-07-19 00:09:09 -0700</bug_when>
    <thetext>[Cocoa] Add experimental MSE WebM parser</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672863</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-19 00:18:56 -0700</bug_when>
    <thetext>&lt;rdar://problem/65782467&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672864</commentid>
    <comment_count>2</comment_count>
      <attachid>404658</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-07-19 00:25:44 -0700</bug_when>
    <thetext>Created attachment 404658
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672866</commentid>
    <comment_count>3</comment_count>
      <attachid>404659</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-07-19 01:15:09 -0700</bug_when>
    <thetext>Created attachment 404659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672867</commentid>
    <comment_count>4</comment_count>
      <attachid>404660</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-07-19 01:25:45 -0700</bug_when>
    <thetext>Created attachment 404660
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672868</commentid>
    <comment_count>5</comment_count>
      <attachid>404661</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-07-19 01:53:03 -0700</bug_when>
    <thetext>Created attachment 404661
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672901</commentid>
    <comment_count>6</comment_count>
      <attachid>404671</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-07-19 09:05:57 -0700</bug_when>
    <thetext>Created attachment 404671
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672902</commentid>
    <comment_count>7</comment_count>
      <attachid>404672</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-07-19 09:06:50 -0700</bug_when>
    <thetext>Created attachment 404672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672903</commentid>
    <comment_count>8</comment_count>
      <attachid>404673</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-07-19 09:09:56 -0700</bug_when>
    <thetext>Created attachment 404673
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672993</commentid>
    <comment_count>9</comment_count>
      <attachid>404699</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-07-19 23:29:52 -0700</bug_when>
    <thetext>Created attachment 404699
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673091</commentid>
    <comment_count>10</comment_count>
      <attachid>404718</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-07-20 09:03:31 -0700</bug_when>
    <thetext>Created attachment 404718
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673388</commentid>
    <comment_count>11</comment_count>
      <attachid>404800</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-07-21 00:41:25 -0700</bug_when>
    <thetext>Created attachment 404800
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673389</commentid>
    <comment_count>12</comment_count>
      <attachid>404801</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-07-21 00:44:47 -0700</bug_when>
    <thetext>Created attachment 404801
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673390</commentid>
    <comment_count>13</comment_count>
      <attachid>404802</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-07-21 00:53:17 -0700</bug_when>
    <thetext>Created attachment 404802
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673391</commentid>
    <comment_count>14</comment_count>
      <attachid>404803</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-07-21 00:56:35 -0700</bug_when>
    <thetext>Created attachment 404803
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673582</commentid>
    <comment_count>15</comment_count>
      <attachid>404803</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-07-21 12:51:46 -0700</bug_when>
    <thetext>Comment on attachment 404803
Patch

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

&gt; Source/ThirdParty/libwebrtc/ChangeLog:25
&gt; +        (vp9_parser::Vp9HeaderParser::subsampling_y const):
&gt; +        * libwebrtc.xcodeproj/project.pbxproj:
&gt; +
&gt; +2020-07-19  Jer Noble  &lt;jer.noble@apple.com&gt;

Oops, double ChangeLog entry

&gt; Source/WebCore/ChangeLog:183
&gt; +        (WebCore::VideoTrackPrivateWebM::trackIndex const):
&gt; +        * platform/graphics/cocoa/VideoTrackPrivateWebM.h: Copied from Source/WebCore/platform/graphics/cocoa/VP9UtilitiesCocoa.h.
&gt; +
&gt; +2020-07-19  Jer Noble  &lt;jer.noble@apple.com&gt;
&gt; +
&gt; +        [Cocoa] Add experimental MSE WebM parser

Ditto

&gt; Source/WebKit/ChangeLog:13
&gt; +        * Shared/WebPreferences.yaml:
&gt; +
&gt; +2020-07-19  Jer Noble  &lt;jer.noble@apple.com&gt;
&gt; +
&gt; +        [Cocoa] Add experimental MSE WebM parser

Ditto

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm:59
&gt; +    WebCore::SourceBufferParserAVFObjC* _parent;

It would be cleaner to make this a WeakPtr and not reset _parent in the SourceBufferParserAVFObjC destructor.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm:92
&gt; +- (void)invalidate
&gt; +{
&gt; +    [_parser setDelegate:nil];
&gt; +    _parser = nullptr;
&gt; +}

It looks like this is no longer used. If it is to be used, shouldn&apos;t it invalidate _parent?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm:172
&gt; +            CFTypeRef originalFormat = CMFormatDescriptionGetExtension(description, originalFormatKey);

If `CMFormatDescriptionGetMediaSubType` is soft-linked, shouldn&apos;t this too?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm:253
&gt; +    callOnMainThread([this, strongThis = makeRef(*this), asset = retainPtr(asset)] {

Rather than taking a strong ref, why not make a WeakPtr and bail if it is NULL? Any processing done after the parser is only alive because of the ref won&apos;t really be used anyway.

Here and in all of the `callOnMainThread` blocks in this class.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm:285
&gt; +            }

Although it is unlikely to be reached, it might be worth adding an `ASSERT_NOT_REACHED` as a final else block here.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm:326
&gt; +    m_willProvideContentKeyRequestInitializationDataForTrackIDCallback(trackID);

Is this guaranteed to be non-null?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm:334
&gt; +    m_didProvideContentKeyRequestInitializationDataForTrackIDCallback(WTFMove(initData), trackID);

Ditto.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:95
&gt; +    void willProvideContentKeyRequestInitializationDataForTrackID(uint64_t trackID);
&gt; +    void didProvideContentKeyRequestInitializationDataForTrackID(Ref&lt;Uint8Array&gt;&amp;&amp;, uint64_t trackID, Box&lt;BinarySemaphore&gt;);

Nit: the parameter name isn&apos;t necessary.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:102
&gt; +    void trackDidChangeSelected(VideoTrackPrivate&amp;, bool selected);
&gt; +    void trackDidChangeEnabled(AudioTrackPrivate&amp;, bool enabled);

Ditto.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:149
&gt; +    void didProvideMediaDataForTrackID(Ref&lt;MediaSample&gt;&amp;&amp;, uint64_t trackID, const String&amp; mediaType);

Ditto.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:169
&gt; +    void didBecomeReadyForMoreSamples(uint64_t trackID);

Ditto.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:518
&gt; +        // We must call synchronously to the main thread, as the AVStreamSession must be associated
&gt; +        // with the streamDataParser before the delegate method returns.

Any reason to not return immediately if weakThis is null?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:538
&gt; +        Box&lt;BinarySemaphore&gt; hasSessionSemaphore = Box&lt;BinarySemaphore&gt;::create();

Ditto.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:559
&gt; +        parser-&gt;appendData(WTFMove(data));

Ditto

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:705
&gt; +    auto trackID = track.id().string().toUInt64();
&gt;  

ASSERT(trackID)

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:731
&gt; +    auto trackID = track.id().string().toUInt64();
&gt;  

Ditto.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:743
&gt;          ALLOW_NEW_API_WITHOUT_GUARDS_BEGIN

Is this still necessary?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:929
&gt; +    auto trackID = trackIDString.string().toUInt64();

ASSERT(trackID)

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:971
&gt; +    auto trackID = trackIDString.string().toUInt64();

Ditto

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:1083
&gt; +    auto trackID = trackIDString.string().toUInt64();

Ditto

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:1141
&gt; +    auto trackID = trackIDString.string().toUInt64();

Ditto

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:1166
&gt; +    auto trackID = trackIDString.string().toUInt64();

Ditto

&gt; Source/WebCore/platform/graphics/avfoundation/objc/VideoTrackPrivateMediaSourceAVFObjC.h:31
&gt; +#include &lt;wtf/Function.h&gt;

Is this necessary?

&gt; Source/WebCore/platform/graphics/cocoa/SourceBufferParser.cpp:51
&gt; +RefPtr&lt;SourceBufferParser&gt; SourceBufferParser::create(const ContentType&amp; contentType)
&gt; +{
&gt; +    if (WTF::equalIgnoringASCIICase(contentType.containerType(), &quot;audio/webm&quot;) || WTF::equalIgnoringASCIICase(contentType.containerType(), &quot;video/webm&quot;))
&gt; +        return adoptRef(new SourceBufferParserWebM());
&gt; +    return adoptRef(new SourceBufferParserAVFObjC());
&gt; +}

This should check isWebmParserAvailable().

&gt; Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.cpp:175
&gt; +        return adoptRef(*new MediaDescriptionWebM(WTFMove(track)));

ASSERT(isWebmParserAvailable());

&gt; Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.cpp:202
&gt; +        if (!codecID.startsWith(&quot;V_&quot;) &amp;&amp; !codecID.startsWith(&quot;A_&quot;) &amp;&amp; !codecID.startsWith(&quot;S_&quot;)) {

The string constants should use `_str`, e.g. `&quot;V_&quot;_str`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673610</commentid>
    <comment_count>16</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-07-21 14:05:01 -0700</bug_when>
    <thetext>(In reply to Eric Carlson from comment #15)
&gt; Comment on attachment 404803 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=404803&amp;action=review
&gt; 
&gt; &gt; Source/ThirdParty/libwebrtc/ChangeLog:25
&gt; &gt; +        (vp9_parser::Vp9HeaderParser::subsampling_y const):
&gt; &gt; +        * libwebrtc.xcodeproj/project.pbxproj:
&gt; &gt; +
&gt; &gt; +2020-07-19  Jer Noble  &lt;jer.noble@apple.com&gt;
&gt; 
&gt; Oops, double ChangeLog entry

Whoops! (to this and the next two)

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm:59
&gt; &gt; +    WebCore::SourceBufferParserAVFObjC* _parent;
&gt; 
&gt; It would be cleaner to make this a WeakPtr and not reset _parent in the
&gt; SourceBufferParserAVFObjC destructor.

Unfortunately this can&apos;t work. The WeakPtr will almost always be used in a different thread than the one it was created in, and that&apos;s a no-no for WeakPtrs.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm:92
&gt; &gt; +- (void)invalidate
&gt; &gt; +{
&gt; &gt; +    [_parser setDelegate:nil];
&gt; &gt; +    _parser = nullptr;
&gt; &gt; +}
&gt; 
&gt; It looks like this is no longer used. If it is to be used, shouldn&apos;t it
&gt; invalidate _parent?

_parent is reset in the parent&apos;s destructor.  But you&apos;re right that we no longer call it. I think that&apos;s because I chose to store m_parser as a Ref&lt;&gt; rather than a RefPtr&lt;&gt;, so we can&apos;t just destroy it.  I think I&apos;ll add a virtual `void invalidate()` method to the virtual base class.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm:172
&gt; &gt; +            CFTypeRef originalFormat = CMFormatDescriptionGetExtension(description, originalFormatKey);
&gt; 
&gt; If `CMFormatDescriptionGetMediaSubType` is soft-linked, shouldn&apos;t this too?

We&apos;ve got this in CoreMediaSoftLink.h:

```
#define CMFormatDescriptionGetExtensions softLink_CoreMedia_CMFormatDescriptionGetExtensions
```

So we don&apos;t technically need to use the softLink_* version.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm:253
&gt; &gt; +    callOnMainThread([this, strongThis = makeRef(*this), asset = retainPtr(asset)] {
&gt; 
&gt; Rather than taking a strong ref, why not make a WeakPtr and bail if it is
&gt; NULL? Any processing done after the parser is only alive because of the ref
&gt; won&apos;t really be used anyway.

WeakPtrs don&apos;t work across threads, which is a super bummer, and I would have done it that way if it were possible.

&gt; Here and in all of the `callOnMainThread` blocks in this class.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm:285
&gt; &gt; +            }
&gt; 
&gt; Although it is unlikely to be reached, it might be worth adding an
&gt; `ASSERT_NOT_REACHED` as a final else block here.

Wouldn&apos;t that cause crashes if AVStreamDataParser ever started handling text or metadata tracks?  I guess we&apos;d find out really quick when they did.  Could we do an ERROR_LOG() instead?

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm:326
&gt; &gt; +    m_willProvideContentKeyRequestInitializationDataForTrackIDCallback(trackID);
&gt; 
&gt; Is this guaranteed to be non-null?

Ooh, good point. I&apos;ll fix this.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:95
&gt; &gt; +    void willProvideContentKeyRequestInitializationDataForTrackID(uint64_t trackID);
&gt; &gt; +    void didProvideContentKeyRequestInitializationDataForTrackID(Ref&lt;Uint8Array&gt;&amp;&amp;, uint64_t trackID, Box&lt;BinarySemaphore&gt;);
&gt; 
&gt; Nit: the parameter name isn&apos;t necessary.

Eh, for this case I&apos;d like to leave it. It&apos;s the one place that declares exactly what that parameter means.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:518
&gt; &gt; +        // We must call synchronously to the main thread, as the AVStreamSession must be associated
&gt; &gt; +        // with the streamDataParser before the delegate method returns.
&gt; 
&gt; Any reason to not return immediately if weakThis is null?

Threads again. You can pass a WeakPtr to another thread so long as you never access it.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:538
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:705
&gt; &gt; +    auto trackID = track.id().string().toUInt64();
&gt; &gt;  
&gt; 
&gt; ASSERT(trackID)

I fixed it so that zero was a valid trackID, since there&apos;s nothing keeping WebM from using a zero in its track_uuid field.

```
    HashMap&lt;uint64_t, RetainPtr&lt;AVSampleBufferAudioRenderer&gt;, DefaultHash&lt;uint64_t&gt;, WTF::UnsignedWithZeroKeyHashTraits&lt;uint64_t&gt;&gt; m_audioRenderers;
```

Of course, now they can&apos;t use `-1` as a UUID, but they couldn&apos;t before either.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:743
&gt; &gt;          ALLOW_NEW_API_WITHOUT_GUARDS_BEGIN
&gt; 
&gt; Is this still necessary?

Probably for downlevel builds?

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/VideoTrackPrivateMediaSourceAVFObjC.h:31
&gt; &gt; +#include &lt;wtf/Function.h&gt;
&gt; 
&gt; Is this necessary?

Probably not!

&gt; &gt; Source/WebCore/platform/graphics/cocoa/SourceBufferParser.cpp:51
&gt; &gt; +RefPtr&lt;SourceBufferParser&gt; SourceBufferParser::create(const ContentType&amp; contentType)
&gt; &gt; +{
&gt; &gt; +    if (WTF::equalIgnoringASCIICase(contentType.containerType(), &quot;audio/webm&quot;) || WTF::equalIgnoringASCIICase(contentType.containerType(), &quot;video/webm&quot;))
&gt; &gt; +        return adoptRef(new SourceBufferParserWebM());
&gt; &gt; +    return adoptRef(new SourceBufferParserAVFObjC());
&gt; &gt; +}
&gt; 
&gt; This should check isWebmParserAvailable().

Good catch.  This should probably just re-use `SourceBufferParserWebM::isContentTypeSupported()` rather than check &quot;video/webm&quot; and &quot;audio/webm&quot; explicitly, and that code already checks isWebmParserAvailable() (as well as checking that libwebrtc is present with a weak link check).

&gt; &gt; Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.cpp:175
&gt; &gt; +        return adoptRef(*new MediaDescriptionWebM(WTFMove(track)));
&gt; 
&gt; ASSERT(isWebmParserAvailable());

Ok.

&gt; &gt; Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.cpp:202
&gt; &gt; +        if (!codecID.startsWith(&quot;V_&quot;) &amp;&amp; !codecID.startsWith(&quot;A_&quot;) &amp;&amp; !codecID.startsWith(&quot;S_&quot;)) {
&gt; 
&gt; The string constants should use `_str`, e.g. `&quot;V_&quot;_str`

String::startsWith() has explicit support for constexpr `char *` string literal params, so this shouldn&apos;t be necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673647</commentid>
    <comment_count>17</comment_count>
      <attachid>404868</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-07-21 15:37:49 -0700</bug_when>
    <thetext>Created attachment 404868
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673695</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-21 17:25:15 -0700</bug_when>
    <thetext>Committed r264685: &lt;https://trac.webkit.org/changeset/264685&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 404868.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673749</commentid>
    <comment_count>19</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-07-21 22:09:45 -0700</bug_when>
    <thetext>Committed follow-up internal build fix: r264693 &lt;https://trac.webkit.org/r264693&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404658</attachid>
            <date>2020-07-19 00:25:44 -0700</date>
            <delta_ts>2020-07-19 01:15:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214529-20200719002543.patch</filename>
            <type>text/plain</type>
            <size>139801</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCA3YTg4NzA4MzMwMmQxYjM1ZDkwZmU2NjhjMGQxY2I5YzM1MTAwZmZhLi5jZGY5
NDQ3MjdhZDhlZWViNGIwYmJmN2NhMjgxMWQzMmU5MjAyMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNy0xOSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBleHBlcmltZW50
YWwgTVNFIFdlYk0gcGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTQ1MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUd28gZHJpdmUtYnkgZml4ZXM6IEFkZCBzb21lIG1pc3NpbmcgZXhwb3J0IHRv
IHRoZSBsaWJ3ZWJydGMuKi5leHAgZmlsZXMsIGFuZCBleHBvcnQgdGhlIHdlYm0gaGVhZGVycwor
ICAgICAgICBhcyBQcml2YXRlLCBub3QgUHVibGljLCBzbyB0aGV5J3JlIHB1dCBpbiB0aGUgY29y
cmVjdCBkaXJlY3RvcnkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9T
LmV4cDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBsaWJ3
ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wNy0xNiAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRlZ3JhdGUgbGlid2VibSBpbnRv
IHRoZSBsaWJ3ZWJydGMgcHJvamVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3OGQ1Y2QyNjE5YWMwMTU1MjAz
MWRjZGM1Y2M1M2U2MWFkNGQ0ZjdmLi41N2Y5ODkyYjljZmEzMTM2NmQ5YjQ2MzE0YWMyYThlMDQz
ODJmYjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ0IEBACisyMDIwLTA3LTE5ICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIGV4cGVyaW1l
bnRhbCBNU0UgV2ViTSBwYXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNDUyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgeWV0IHBhcnNlIGFjdHVh
bCBtZWRpYSBzYW1wbGVzOyBhcyBvZiB5ZXQgaXQgb25seSBwYXJzZXMgYXVkaW8gYW5kIHZpZGVv
CisgICAgICAgIHRyYWNrIGluZm9ybWF0aW9uLiBNZWRpYSBzYW1wbGUgcGFyc2luZyBpcyB1cGNv
bWluZy4KKworICAgICAgICBBZGQgYW4gZXhwZXJpbWVudGFsIE1TRSBXZWJNIHBhcnNlciB0byBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy4gVGhpcyB3aWxsIHJlcXVpcmUgZXh0ZW5zaXZlIHJl
ZmFjdG9yaW5nCisgICAgICAgIG9mIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLCB0byBleHRy
YWN0IG91dCB0aGUgcGFyc2VyIGludG8gYSBuZXcsIHZpcnR1YWxpemVkIGNsYXNzLiBUaGlzIG5l
dyBwYXJzZXIgY2FuCisgICAgICAgIHRha2UgYWR2YW50YWdlIG9mIG5ldyBDKys+MTEgZmVhdHVy
ZXMgc3VjaCBhcyBsYW1iZGFzIHRvIGNsZWFuIHVwIHNvbWUgcHJvYmxlbWF0aWMgZXhpc3Rpbmcg
Y29kZS4gVGhlIG5ldworICAgICAgICB2aXJ0dWFsaXplZCBTb3VyY2VCdWZmZXJQYXJzZXIgY2xh
c3MgdXNlcyBwYXNzZWQtaW4gRnVuY3Rpb24gb2JqZWN0cywgcmF0aGVyIHRoYW4gcHVyZS12aXJ0
dWFsIENsaWVudCBjbGFzc2VzCisgICAgICAgIHRvIG5vdGlmeSBpdCdzIHBhcmVudCBvYmplY3Qg
d2hlbiB0aGUgcGFyc2VyIGVuY291bnRlcnMgaW5pdGlhbGl6YXRpb24tIG9yIG1lZGlhLWRhdGEu
CisKKyAgICAgICAgQmVjYXVzZSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyB3aWxsIG5vdyBo
YXZlIHRvIGRlYWwgd2l0aCBBdWRpb1RyYWNrUHJpdmF0ZSBhbmQgVmlkZW9UcmFja1ByaXZhdGUg
b2JqZWN0cworICAgICAgICB0aGF0IGFyZSBub3QgbmVjZXNzYXJpbHkgQXVkaW8tIGFuZCBWaWRl
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyBzdWJjbGFzc2VzLCBtb3ZlIHRob3NlIGNs
YXNzZXMgbm90aWZpY2F0aW9uCisgICAgICAgIGZlYXR1cmVzIHVwIGludG8gQXVkaW8tIGFuZCBW
aWRlb1RyYWNrUHJpdmF0ZSwgYWdhaW4gdXNpbmcgYSBGdW5jdGlvbiBvYmplY3QgcmF0aGVyIHRo
YW4gYSBjbGllbnQgY2xhc3MuCisKKyAgICAgICAgQWRkIGEgbmV3IFNvdXJjZUJ1ZmZlclBhcnNl
cldlYk0gYW5kIGFzc29jaWF0ZWQgQXVkaW9UcmFja1ByaXZhdGVXZWJNIGFuZCBWaWRlb1RyYWNr
UHJpdmF0ZVdlYm0gY2xhc2Vzcywgd2hpY2gKKyAgICAgICAgdXNlIGxpYndlYm0gdmlhIGxpYndl
YnJ0YyB0byBwYXJzZSBhcHBlbmRlZCBidWZmZXJzLgorCisgICAgICAgIFRoaXMgZWFybHkgaW1w
bGVtZW50YXRpb24gaXMgbm90IHlldCBhYmxlIHRvIHBhc3MgdGhlIFdlYk0gV1BUIG1lZGlhLXNv
dXJjZS8gdGVzdHMsIGFzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDCisgICAgICAgIHdpbGwg
b25seSBjYXVzZSBhICJyZXNpemUiIGV2ZW50IHRvIGJlIGZpcmVkIHdoZW4gYSBNZWRpYVNhbXBs
ZSBpcyBlbnF1ZXVlZCBvciBkZWNvZGluZy4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHBhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2V0V2ViTVBhcnNlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2ViTVBhcnNlckVuYWJsZWQgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZTo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1RyYWNrUHJpdmF0ZTo6c2V0RW5hYmxlZENoYW5nZWRDYWxsYmFjayk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2tQcml2YXRlOjpzZXRTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb1RyYWNrUHJpdmF0ZTo6c2V0U2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
c2V0RW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQy5oOiBBZGRlZC4KKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQy5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVy
IGluaXRXaXRoUGFyc2VyOnBhcmVudDpdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFy
c2VyTGlzdGVuZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJM
aXN0ZW5lciBpbnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxp
c3RlbmVyIHN0cmVhbURhdGFQYXJzZXI6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldDpdKToKKyAg
ICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3RyZWFtRGF0YVBhcnNlcjpk
aWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0OndpdGhEaXNjb250aW51aXR5Ol0pOgorICAgICAgICAo
LVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZEZhaWxU
b1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcjpdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRh
UGFyc2VyTGlzdGVuZXIgc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlTWVkaWFEYXRhOmZvclRy
YWNrSUQ6bWVkaWFUeXBlOmZsYWdzOl0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJz
ZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyV2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElu
aXRpYWxpemF0aW9uRGF0YTpmb3JUcmFja0lEOl0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURh
dGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YTpmb3JUcmFja0lEOl0pOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpTb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6
On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQzo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OnNldFNob3VsZFByb3ZpZGVNZWRpYURh
dGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6OnNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OnJlc2V0UGFyc2VyU3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNB
c3NldCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRG
YWlsVG9QYXJzZVN0cmVhbURhdGFXaXRoRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250
ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1
ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5p
dGlhbGl6YXRpb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjpkaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFj
a0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxs
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNv
bnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmRDb21wbGV0ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFib3J0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpyZXNldFBhcnNlclN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkZXN0cm95
UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpj
bGVhclRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6dHJhY2tEaWRDaGFuZ2VTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpwYXJzZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmF0dGVtcHRUb0RlY3J5cHQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVXZWJNOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9UcmFja1ByaXZhdGVXZWJNOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk0pOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVXZWJNOjppZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OmxhYmVsIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6bGFuZ3VhZ2UgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVXZWJNOjp0cmFja0luZGV4IGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6Omlz
Q29udGVudFR5cGVTdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNl
cjo6c2V0RGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OnNldERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2lu
Z0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0RGlk
UHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clBhcnNlcjo6c2V0V2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0
YUZvclRyYWNrSURDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJz
ZXI6OnNldERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRy
YWNrSURDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNXZWJtUGFy
c2VyQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OnN1cHBvcnRlZFdlYk1Db2RlY3MpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aXNDb250ZW50VHlwZVN1
cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNl
cldlYk06OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnNob3VsZFByb3ZpZGVNZWRp
YWRhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk06OnJlc2V0UGFyc2VyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6T25FbGVtZW50QmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6T25FYm1sKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNl
cldlYk06Ok9uU2VnbWVudEJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlcldlYk06Ok9uSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpPbkNsdXN0ZXJCZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpPblRyYWNrRW50cnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjpzdGF0dXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyUGFyc2VyV2ViTTo6dHlwZSBjb25zdCk6CisgICAgICAgIChpc1R5cGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6dmFsaWRhdGVWUFBhcmFtZXRlcnMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVXZWJNOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFja1ByaXZhdGVXZWJNOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk0pOgorICAg
ICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVXZWJNOjppZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OmxhYmVsIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlV2ViTTo6bGFuZ3VhZ2UgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVXZWJNOjp0cmFja0luZGV4IGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaDog
QWRkZWQuCisKIDIwMjAtMDctMTQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0NvY29hXSBBZGQgTWVkaWFDYXBhYmlsaXRpZXMgc3VwcG9ydCBmb3IgU1cgVlA5
IGRlY29kZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIwOTk3Mzk0MDdmNmRkYWExY2ZiYmVjYjM2NWEyN2JiODlh
ZTE0YWQuLjZjMWM3NzM4ODc3N2U4MzA5Y2YxOTdmOTM1Mjk3MDM5MmQ0NGMxNTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDctMTkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZGQgZXhwZXJpbWVudGFsIE1TRSBXZWJNIHBhcnNl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NTI5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFu
IEV4cGVyaW1lbnRhbCBzZXR0aW5nIHRvIGVuYWJsZSB0aGUgTVNFIFdlYk0gcGFyc2VyIChvZmYg
YnkgZGVmYXVsdCkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbDoKKwog
MjAyMC0wNy0xNCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBb
Q29jb2FdIEFkZCBNZWRpYUNhcGFiaWxpdGllcyBzdXBwb3J0IGZvciBTVyBWUDkgZGVjb2Rlci4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9s
aWJ3ZWJydGMuaU9TLmV4cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0
aW9ucy9saWJ3ZWJydGMuaU9TLmV4cAppbmRleCBkMDRhOTE5Njg2ZTljYzg5NjdhOGFhZDA0Njlj
Njg1NTQ2NTcyNzliLi5hN2JjYzdiNTE0YzNiZTYzYWFkY2EwYjIxMjcxZjgxNWQ5MDU0MzIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGli
d2VicnRjLmlPUy5leHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3Vy
YXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCkBAIC0yODAsMTMgKzI4MCwyMCBAQCBfX1pUVk40d2Vi
bTEyQnVmZmVyUmVhZGVyRQogX19aVFZONHdlYm04Q2FsbGJhY2tFCiBfX1pONHdlYm04Q2FsbGJh
Y2sxME9uQmxvY2tFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzVCbG9ja0UKIF9fWk40
d2VibThDYWxsYmFjazEwT25DdWVQb2ludEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfOEN1
ZVBvaW50RQorX19aTjR3ZWJtOENhbGxiYWNrMTJPbkJsb2NrQmVnaW5FUktOU18xNUVsZW1lbnRN
ZXRhZGF0YUVSS05TXzVCbG9ja0VQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFjazEyT25D
bHVzdGVyRW5kRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU183Q2x1c3RlckUKIF9fWk40d2Vi
bThDYWxsYmFjazEyT25TZWdtZW50RW5kRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFCiBfX1pONHdl
Ym04Q2FsbGJhY2sxMk9uVHJhY2tFbnRyeUVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTBU
cmFja0VudHJ5RQorX19aTjR3ZWJtOENhbGxiYWNrMTRPbkNsdXN0ZXJCZWdpbkVSS05TXzE1RWxl
bWVudE1ldGFkYXRhRVJLTlNfN0NsdXN0ZXJFUE5TXzZBY3Rpb25FCiBfX1pONHdlYm04Q2FsbGJh
Y2sxNE9uRWRpdGlvbkVudHJ5RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMkVkaXRpb25F
bnRyeUUKK19fWk40d2VibThDYWxsYmFjazE0T25FbGVtZW50QmVnaW5FUktOU18xNUVsZW1lbnRN
ZXRhZGF0YUVQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxsYmFjazE0T25TZWdtZW50QmVnaW5F
UktOU18xNUVsZW1lbnRNZXRhZGF0YUVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFjazE1
T25CbG9ja0dyb3VwRW5kRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMEJsb2NrR3JvdXBF
CiBfX1pONHdlYm04Q2FsbGJhY2sxNk9uU2ltcGxlQmxvY2tFbmRFUktOU18xNUVsZW1lbnRNZXRh
ZGF0YUVSS05TXzExU2ltcGxlQmxvY2tFCiBfX1pONHdlYm04Q2FsbGJhY2sxNk9uVW5rbm93bkVs
ZW1lbnRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVQTlNfNlJlYWRlckVQeQorX19aTjR3ZWJtOENh
bGxiYWNrMTdPbkJsb2NrR3JvdXBCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0
aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrMThPblNpbXBsZUJsb2NrQmVnaW5FUktOU18xNUVsZW1l
bnRNZXRhZGF0YUVSS05TXzExU2ltcGxlQmxvY2tFUE5TXzZBY3Rpb25FCitfX1pONHdlYm04Q2Fs
bGJhY2s0U2tpcEVQTlNfNlJlYWRlckVQeQogX19aTjR3ZWJtOENhbGxiYWNrNU9uVGFnRVJLTlNf
MTVFbGVtZW50TWV0YWRhdGFFUktOU18zVGFnRQogX19aTjR3ZWJtOENhbGxiYWNrNk9uRWJtbEVS
S05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNEVibWxFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25J
bmZvRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU180SW5mb0UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMu
aU9Tc2ltLmV4cAppbmRleCBkMDRhOTE5Njg2ZTljYzg5NjdhOGFhZDA0NjljNjg1NTQ2NTcyNzli
Li5hN2JjYzdiNTE0YzNiZTYzYWFkY2EwYjIxMjcxZjgxNWQ5MDU0MzIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3Np
bS5leHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xp
YndlYnJ0Yy5pT1NzaW0uZXhwCkBAIC0yODAsMTMgKzI4MCwyMCBAQCBfX1pUVk40d2VibTEyQnVm
ZmVyUmVhZGVyRQogX19aVFZONHdlYm04Q2FsbGJhY2tFCiBfX1pONHdlYm04Q2FsbGJhY2sxME9u
QmxvY2tFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzVCbG9ja0UKIF9fWk40d2VibThD
YWxsYmFjazEwT25DdWVQb2ludEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfOEN1ZVBvaW50
RQorX19aTjR3ZWJtOENhbGxiYWNrMTJPbkJsb2NrQmVnaW5FUktOU18xNUVsZW1lbnRNZXRhZGF0
YUVSS05TXzVCbG9ja0VQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFjazEyT25DbHVzdGVy
RW5kRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU183Q2x1c3RlckUKIF9fWk40d2VibThDYWxs
YmFjazEyT25TZWdtZW50RW5kRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFCiBfX1pONHdlYm04Q2Fs
bGJhY2sxMk9uVHJhY2tFbnRyeUVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTBUcmFja0Vu
dHJ5RQorX19aTjR3ZWJtOENhbGxiYWNrMTRPbkNsdXN0ZXJCZWdpbkVSS05TXzE1RWxlbWVudE1l
dGFkYXRhRVJLTlNfN0NsdXN0ZXJFUE5TXzZBY3Rpb25FCiBfX1pONHdlYm04Q2FsbGJhY2sxNE9u
RWRpdGlvbkVudHJ5RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMkVkaXRpb25FbnRyeUUK
K19fWk40d2VibThDYWxsYmFjazE0T25FbGVtZW50QmVnaW5FUktOU18xNUVsZW1lbnRNZXRhZGF0
YUVQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxsYmFjazE0T25TZWdtZW50QmVnaW5FUktOU18x
NUVsZW1lbnRNZXRhZGF0YUVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFjazE1T25CbG9j
a0dyb3VwRW5kRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMEJsb2NrR3JvdXBFCiBfX1pO
NHdlYm04Q2FsbGJhY2sxNk9uU2ltcGxlQmxvY2tFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVS
S05TXzExU2ltcGxlQmxvY2tFCiBfX1pONHdlYm04Q2FsbGJhY2sxNk9uVW5rbm93bkVsZW1lbnRF
UktOU18xNUVsZW1lbnRNZXRhZGF0YUVQTlNfNlJlYWRlckVQeQorX19aTjR3ZWJtOENhbGxiYWNr
MTdPbkJsb2NrR3JvdXBCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQor
X19aTjR3ZWJtOENhbGxiYWNrMThPblNpbXBsZUJsb2NrQmVnaW5FUktOU18xNUVsZW1lbnRNZXRh
ZGF0YUVSS05TXzExU2ltcGxlQmxvY2tFUE5TXzZBY3Rpb25FCitfX1pONHdlYm04Q2FsbGJhY2s0
U2tpcEVQTlNfNlJlYWRlckVQeQogX19aTjR3ZWJtOENhbGxiYWNrNU9uVGFnRVJLTlNfMTVFbGVt
ZW50TWV0YWRhdGFFUktOU18zVGFnRQogX19aTjR3ZWJtOENhbGxiYWNrNk9uRWJtbEVSS05TXzE1
RWxlbWVudE1ldGFkYXRhRVJLTlNfNEVibWxFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25JbmZvRVJL
TlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU180SW5mb0UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cApp
bmRleCA4ZDg1YjViOGIzNzU0YWRkZWZkZTdjMjRmMmYyMGE0NjU4MzY2YWNkLi5mOGNjOTEzMTZi
Y2RjMDk2MDU4MmIzZjNjYTQxNjViMmVhYzI3MjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhw
CkBAIC0yNzgsMTMgKzI3OCwyMCBAQCBfX1pUVk40d2VibTEyQnVmZmVyUmVhZGVyRQogX19aVFZO
NHdlYm04Q2FsbGJhY2tFCiBfX1pONHdlYm04Q2FsbGJhY2sxME9uQmxvY2tFbmRFUktOU18xNUVs
ZW1lbnRNZXRhZGF0YUVSS05TXzVCbG9ja0UKIF9fWk40d2VibThDYWxsYmFjazEwT25DdWVQb2lu
dEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfOEN1ZVBvaW50RQorX19aTjR3ZWJtOENhbGxi
YWNrMTJPbkJsb2NrQmVnaW5FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzVCbG9ja0VQTlNf
NkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFjazEyT25DbHVzdGVyRW5kRVJLTlNfMTVFbGVtZW50
TWV0YWRhdGFFUktOU183Q2x1c3RlckUKIF9fWk40d2VibThDYWxsYmFjazEyT25TZWdtZW50RW5k
RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFCiBfX1pONHdlYm04Q2FsbGJhY2sxMk9uVHJhY2tFbnRy
eUVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTBUcmFja0VudHJ5RQorX19aTjR3ZWJtOENh
bGxiYWNrMTRPbkNsdXN0ZXJCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfN0NsdXN0
ZXJFUE5TXzZBY3Rpb25FCiBfX1pONHdlYm04Q2FsbGJhY2sxNE9uRWRpdGlvbkVudHJ5RVJLTlNf
MTVFbGVtZW50TWV0YWRhdGFFUktOU18xMkVkaXRpb25FbnRyeUUKK19fWk40d2VibThDYWxsYmFj
azE0T25FbGVtZW50QmVnaW5FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVQTlNfNkFjdGlvbkUKK19f
Wk40d2VibThDYWxsYmFjazE0T25TZWdtZW50QmVnaW5FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVQ
TlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFjazE1T25CbG9ja0dyb3VwRW5kRVJLTlNfMTVF
bGVtZW50TWV0YWRhdGFFUktOU18xMEJsb2NrR3JvdXBFCiBfX1pONHdlYm04Q2FsbGJhY2sxNk9u
U2ltcGxlQmxvY2tFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzExU2ltcGxlQmxvY2tF
CiBfX1pONHdlYm04Q2FsbGJhY2sxNk9uVW5rbm93bkVsZW1lbnRFUktOU18xNUVsZW1lbnRNZXRh
ZGF0YUVQTlNfNlJlYWRlckVQeQorX19aTjR3ZWJtOENhbGxiYWNrMTdPbkJsb2NrR3JvdXBCZWdp
bkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNr
MThPblNpbXBsZUJsb2NrQmVnaW5FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzExU2ltcGxl
QmxvY2tFUE5TXzZBY3Rpb25FCitfX1pONHdlYm04Q2FsbGJhY2s0U2tpcEVQTlNfNlJlYWRlckVQ
eQogX19aTjR3ZWJtOENhbGxiYWNrNU9uVGFnRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18z
VGFnRQogX19aTjR3ZWJtOENhbGxiYWNrNk9uRWJtbEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJL
TlNfNEVibWxFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25JbmZvRVJLTlNfMTVFbGVtZW50TWV0YWRh
dGFFUktOU180SW5mb0UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9s
aWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0ZGE3M2Ex
YmZiNDEwM2ExZjdhYTQxNDM0OWZlMGFmYWViYzBjOGFhLi4yMjY4MmJjNWM5OTY2NmI4N2RhNGQx
ZDFkMGY2ZjZiNjZhZmYwYmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0z
ODUzLDE2ICszODUzLDE2IEBACiAJCTVDRkQ1MzkyMUU0QkQzQTMwMDQ4MjkwOCAvKiByb3dfbmVv
bjY0LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNG
RDUzOEExRTRCRDNBMzAwNDgyOTA4IC8qIHJvd19uZW9uNjQuY2MgKi87IH07CiAJCTVDRkQ1Mzkz
MUU0QkQzQTMwMDQ4MjkwOCAvKiBzY2FsZV9uZW9uLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNGRDUzOEIxRTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxl
X25lb24uY2MgKi87IH07CiAJCTVDRkQ1Mzk0MUU0QkQzQTMwMDQ4MjkwOCAvKiBzY2FsZV9uZW9u
NjQuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZE
NTM4QzFFNEJEM0EzMDA0ODI5MDggLyogc2NhbGVfbmVvbjY0LmNjICovOyB9OwotCQlDREVCQjRB
QzI0QzAxOTlEMDBBREJENDQgLyogd2VibV9wYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDA4MjRDMDE5MUEwMEFEQkQ0NCAvKiB3ZWJt
X3BhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsK
LQkJQ0RFQkI0QUQyNEMwMTk5RDAwQURCRDQ0IC8qIGJ1ZmZlcl9yZWFkZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDBEMjRDMDE5MUEwMEFE
QkQ0NCAvKiBidWZmZXJfcmVhZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVi
bGljLCApOyB9OyB9OwotCQlDREVCQjRBRTI0QzAxOTlEMDBBREJENDQgLyogaWQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDBBMjRDMDE5MUEw
MEFEQkQ0NCAvKiBpZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsg
fTsgfTsKLQkJQ0RFQkI0QUYyNEMwMTk5RDAwQURCRDQ0IC8qIGlzdHJlYW1fcmVhZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwOTI0QzAx
OTFBMDBBREJENDQgLyogaXN0cmVhbV9yZWFkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQdWJsaWMsICk7IH07IH07Ci0JCUNERUJCNEIwMjRDMDE5OUQwMEFEQkQ0NCAvKiBkb21f
dHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
RUJCNDBCMjRDMDE5MUEwMEFEQkQ0NCAvKiBkb21fdHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07Ci0JCUNERUJCNEIxMjRDMDE5OUQwMEFEQkQ0NCAv
KiBlbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREVCQjQwQzI0QzAxOTFBMDBBREJENDQgLyogZWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjIyNEMwMTk5RDAwQURCRDQ0
IC8qIHN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RFQkI0MDYyNEMwMTkxQTAwQURCRDQ0IC8qIHN0YXR1cy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjMyNEMwMTk5RDAwQURCRDQ0
IC8qIHJlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RFQkI0MDUyNEMwMTkxQTAwQURCRDQ0IC8qIHJlYWRlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjQyNEMwMTk5RDAwQURCRDQ0
IC8qIGZpbGVfcmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREVCQjQwNzI0QzAxOTFBMDBBREJENDQgLyogZmlsZV9yZWFkZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07Ci0JCUNERUJCNEI1MjRDMDE5
OUQwMEFEQkQ0NCAvKiBjYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RFQkI0MEUyNEMwMTkxQTAwQURCRDQ0IC8qIGNhbGxiYWNrLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQlDREVCQjRBQzI0
QzAxOTlEMDBBREJENDQgLyogd2VibV9wYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDA4MjRDMDE5MUEwMEFEQkQ0NCAvKiB3ZWJtX3Bh
cnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUNERUJCNEFEMjRDMDE5OUQwMEFEQkQ0NCAvKiBidWZmZXJfcmVhZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwRDI0QzAxOTFBMDBBREJE
NDQgLyogYnVmZmVyX3JlYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUNERUJCNEFFMjRDMDE5OUQwMEFEQkQ0NCAvKiBpZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MEEyNEMwMTkxQTAw
QURCRDQ0IC8qIGlkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQ0RFQkI0QUYyNEMwMTk5RDAwQURCRDQ0IC8qIGlzdHJlYW1fcmVhZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwOTI0QzAx
OTFBMDBBREJENDQgLyogaXN0cmVhbV9yZWFkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREVCQjRCMDI0QzAxOTlEMDBBREJENDQgLyogZG9t
X3R5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
REVCQjQwQjI0QzAxOTFBMDBBREJENDQgLyogZG9tX3R5cGVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RFQkI0QjEyNEMwMTk5RDAwQURCRDQ0
IC8qIGVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENERUJCNDBDMjRDMDE5MUEwMEFEQkQ0NCAvKiBlbGVtZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RFQkI0QjIyNEMwMTk5RDAwQURC
RDQ0IC8qIHN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RFQkI0MDYyNEMwMTkxQTAwQURCRDQ0IC8qIHN0YXR1cy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNERUJCNEIzMjRDMDE5OUQwMEFE
QkQ0NCAvKiByZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENERUJCNDA1MjRDMDE5MUEwMEFEQkQ0NCAvKiByZWFkZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREVCQjRCNDI0QzAxOTlEMDBB
REJENDQgLyogZmlsZV9yZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENERUJCNDA3MjRDMDE5MUEwMEFEQkQ0NCAvKiBmaWxlX3JlYWRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNERUJCNEI1
MjRDMDE5OUQwMEFEQkQ0NCAvKiBjYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MEUyNEMwMTkxQTAwQURCRDQ0IC8qIGNhbGxiYWNr
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RF
QkI0QjYyNEMwMTlDNDAwQURCRDQ0IC8qIHVua25vd25fcGFyc2VyLmNjIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0NjQyNEMwMTkxQTAwQURCRDQ0
IC8qIHVua25vd25fcGFyc2VyLmNjICovOyB9OwogCQlDREVCQjRCNzI0QzAxOUM0MDBBREJENDQg
LyogbWFzdGVyX3BhcnNlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENERUJCNDZGMjRDMDE5MUEwMEFEQkQ0NCAvKiBtYXN0ZXJfcGFyc2VyLmNjICov
OyB9OwogCQlDREVCQjRCODI0QzAxOUM0MDBBREJENDQgLyogYmxvY2tfcGFyc2VyLmNjIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0NzYyNEMwMTkx
QTAwQURCRDQ0IC8qIGJsb2NrX3BhcnNlci5jYyAqLzsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CmluZGV4IDFkN2YyMDk4NjdjMWQ0ZTBhNDI3NDY5NzY1NWY4ZDFiMTM2ZGFkMGUuLmRjM2ZmMjU4
NDFhOTI1MzNiZWU4ZDA1ODE2MThhYjIwYzcwYzk5ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dApAQCAtMjkxLDYgKzI5MSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBAbm8tCiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0gQG5vLXVuaWZ5
CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gQG5vLXVuaWZ5CitwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIEBuby11bmlm
eQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJP
YmpDLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlk
ZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIEBu
by11bmlmeQpAQCAtMzMzLDYgKzMzNCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5D
Ry5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9UcmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRp
b1RyYWNrUHJpdmF0ZVdlYk0uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Db2xvckNvY29h
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9GbG9hdFJlY3RDb2NvYS5tbQogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC0zNDgsNiArMzUwLDggQEAg
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9JT1N1cmZhY2VQb29sQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJl
Y3RDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0
aW9uRmFjdG9yeUNvY29hLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2Nv
YS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0KQEAgLTM1
Niw2ICszNjAsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJh
cy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9u
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJHUFVMYXllci5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9U
cmFja1ByaXZhdGVXZWJNLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNl
c3Npb25WVC5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLm1tCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTNlMjIwYjJi
ODkwNmJhMzJlYTdlZTA4NTM3Mzg5ZDdjNDdjNjc4MC4uNmNjNjFiNjlhODczZTA1OGFmYTk1YjVh
NDMyMzE0YjYyZTc2YmFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDI2Niw2ICs0MjY2LDcgQEAKIAkJQ0RGNjVDQ0ExNDVC
NDQ4ODAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNjVDQzkxNDVCNDNBNzAwQzRDN0FB
IC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNERjc0ODNGMThGRUJDRUMwMDA2RUNDMCAvKiBHcmlk
UG9zaXRpb25zUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENERjc0ODNEMThGRUJDRUMwMDA2RUNDMCAvKiBHcmlkUG9zaXRpb25zUmVzb2x2
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlD
REY3NTZBMzIxNUMyOUU5MDBFRkNCNTAgLyogSlNNZWRpYUtleUVuY3J5cHRpb25TY2hlbWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjc1NkExMjE1
QzI5RTkwMEVGQ0I1MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oICovOyB9OworCQlD
REY5OTRGRDI0QzE1RkUzMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjk5NEZCMjRD
MTJBNkEwMDJFQTA2MiAvKiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tICovOyB9OwogCQlD
REZDMzYwNjE4Q0E2MUMyMDAyNkU1NkYgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREZDMzYwNDE4Q0E2MUMy
MDAyNkU1NkYgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0UwNTdGQTYxMjIwNzMxMTAwQTQ3NkQ1IC8q
IERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0UwNTdGQTQxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUNFMDhDM0QyMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RTA4QzNEMDE1MkI1OTlBMDAyMUI4QzIgLyogQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CkBAIC0xNDE2Myw2ICsxNDE2NCw4
IEBACiAJCUNEOEM2QzI5MjJGRERBOTEwMEE3MjBBQiAvKiBKU1JlbW90ZVBsYXliYWNrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTUmVtb3RlUGxheWJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0Q4RDMwNkQyM0FENEZBODAwNkMzOTc1IC8qIENETUxvZ2dpbmcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ0RNTG9nZ2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDhEMzA2
RTIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
RE1Mb2dnaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q4RjY2NzAyNEMw
RjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEOEY2NjcyMjRDMEYyMDgwMDBDNDIxQyAvKiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5MkY1MEYyMjYwRkZFRTAwRjg3QkIzIC8qIERvY3VtZW50RnVs
bHNjcmVlbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gRG9jdW1lbnRGdWxsc2NyZWVuLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0Q5MkY1MTAyMjYwRkZFRTAwRjg3QkIzIC8qIERvY3VtZW50RnVsbHNj
cmVlbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudEZ1bGxzY3JlZW4uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5MkY1MTYyMjYxMDM4MjAwRjg3QkIzIC8qIEZ1bGxzY3JlZW5N
YW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bGxzY3JlZW5NYW5hZ2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNDM0Myw2ICsxNDM0Niw4IEBACiAJCUNERThCNUVGMUE2OTc3
OEIwMEI0QjY2QSAvKiBMZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNERUE3QzgyMTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxs
U2NyZWVuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckZ1bGxTY3Jl
ZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTdDODMxMjc2MjMwNDAwQjg0
NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVuZGVyRnVsbFNjcmVlbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNERUIzRDcyMjRDNDFBNkUwMDFGQkVFRiAvKiBTb3VyY2VCdWZmZXJQYXJzZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU291cmNlQnVmZmVyUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RFQjNENzMyNEM0MUE2RTAwMUZCRUVGIC8qIFNvdXJjZUJ1ZmZlclBh
cnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VCdWZmZXJQYXJzZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQ0E4OTgxRURGNDQ3RDAwRENCMDhCIC8qIEFWQXNzZXRUcmFj
a1V0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFWQXNzZXRUcmFja1V0aWxpdGll
cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQ0E4OTkxRURGNDQ3RDAwRENC
MDhCIC8qIEFWQXNzZXRUcmFja1V0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBVkFzc2V0VHJh
Y2tVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFRTM5MzYxNzk3
NDI1OTAwMUQ3NTgwIC8qIFB1YmxpY1VSTE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUHVibGljVVJMTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNDM4MSw2ICsxNDM4NiwxMiBAQAogCQlDREY3NTY5RTIxNUMyODVFMDBF
RkNCNTAgLyogTWVkaWFLZXlFbmNyeXB0aW9uU2NoZW1lLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYUtleUVuY3J5
cHRpb25TY2hlbWUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREY3NTZBMDIx
NUMyOUU4MDBFRkNCNTAgLyogSlNNZWRpYUtleUVuY3J5cHRpb25TY2hlbWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYUtleUVuY3J5cHRpb25TY2hlbWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREY3NTZBMTIxNUMyOUU5MDBFRkNC
NTAgLyogSlNNZWRpYUtleUVuY3J5cHRpb25TY2hlbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNNZWRpYUtleUVuY3J5cHRpb25TY2hlbWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RGOTk0RkEyNEMxMkE2QTAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY5OTRGQjI0QzEyQTZBMDAyRUEwNjIg
LyogU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNERjk5NEZFMjRDMjgxMzYwMDJFQTA2MiAvKiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVmlkZW9UcmFja1ByaXZhdGVXZWJNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNERjk5NEZGMjRDMjgxMzYwMDJFQTA2MiAvKiBWaWRlb1RyYWNrUHJpdmF0ZVdl
Yk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RGOTk1MDAyNEMyODE0OTAwMkVBMDYyIC8qIEF1
ZGlvVHJhY2tQcml2YXRlV2ViTS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1RyYWNrUHJpdmF0ZVdl
Yk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RGOTk1MDEyNEMyODE0OTAwMkVB
MDYyIC8qIEF1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRp
b1RyYWNrUHJpdmF0ZVdlYk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREZD
MzYwMTE4Q0E2MTYzMDAyNkU1NkYgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREZDMzYwMjE4Q0E2MTYzMDAyNkU1NkYgLyog
UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDREZDMzYwMzE4Q0E2MUMyMDAyNkU1NkYgLyogUmVtb3RlQ29tbWFuZExp
c3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNv
bW1hbmRMaXN0ZW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTg2OCw2
ICsyNTg3OSw4IEBACiAJCUI1MzIwRDY4MTIyQTI0RTkwMDJEMTQ0MCAvKiBjb2NvYSAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0RGOTk1MDEyNEMyODE0
OTAwMkVBMDYyIC8qIEF1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHAgKi8sCisJCQkJQ0RGOTk1MDAy
NEMyODE0OTAwMkVBMDYyIC8qIEF1ZGlvVHJhY2tQcml2YXRlV2ViTS5oICovLAogCQkJCUY0OEQy
QUEzMjE1OTc0MEQwMEM2NzUyQiAvKiBDb2xvckNvY29hLmggKi8sCiAJCQkJRjQ4RDJBQTQyMTU5
NzQwRDAwQzY3NTJCIC8qIENvbG9yQ29jb2EubW0gKi8sCiAJCQkJQjI3NTM1NEMwQjA1MzgxNDAw
MkNFNjRGIC8qIEZsb2F0UmVjdENvY29hLm1tICovLApAQCAtMjU4ODksMTAgKzI1OTAyLDE2IEBA
CiAJCQkJQUQ5RkY2RTAxOTA4MzkxRDAwM0I2MUUwIC8qIElPU3VyZmFjZVBvb2xDb2NvYS5tbSAq
LywKIAkJCQlDREM0OEFDODIxNDlDRjJBMDAyNEZENTkgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0
aW9uRmFjdG9yeUNvY29hLmNwcCAqLywKIAkJCQlDREM0OEFDNzIxNDlDRjJBMDAyNEZENTkgLyog
TWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmggKi8sCisJCQkJQ0RFQjNENzIy
NEM0MUE2RTAwMUZCRUVGIC8qIFNvdXJjZUJ1ZmZlclBhcnNlci5jcHAgKi8sCisJCQkJQ0RFQjNE
NzMyNEM0MUE2RTAwMUZCRUVGIC8qIFNvdXJjZUJ1ZmZlclBhcnNlci5oICovLAorCQkJCUNEOEY2
NjcwMjRDMEYyMDgwMDBDNDIxQyAvKiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCAqLywKKwkJ
CQlDRDhGNjY3MjI0QzBGMjA4MDAwQzQyMUMgLyogU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oICov
LAogCQkJCUU0RThCNEVEMjE2Qjc5RjQwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3Jl
VGV4dC5jcHAgKi8sCiAJCQkJRTRFOEI0RUEyMTZCNzlFNTAwQjg4MzREIC8qIFN5c3RlbUZvbnRE
YXRhYmFzZUNvcmVUZXh0LmggKi8sCiAJCQkJNTI2NzI0RjIxQ0IyRkRGNjAwNzU5NzREIC8qIFRl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EuaCAqLywKIAkJCQk1MjY3MjRGMTFDQjJGREY2MDA3
NTk3NEQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbSAqLywKKwkJCQlDREY5OTRG
RjI0QzI4MTM2MDAyRUEwNjIgLyogVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcCAqLywKKwkJCQlD
REY5OTRGRTI0QzI4MTM2MDAyRUEwNjIgLyogVmlkZW9UcmFja1ByaXZhdGVXZWJNLmggKi8sCiAJ
CQkJQ0Q2RkU1QjcyNEJDRTY0NTAwOUZDREE0IC8qIFZQOVV0aWxpdGllc0NvY29hLmggKi8sCiAJ
CQkJQ0Q2RkU1QjgyNEJDRTY0NTAwOUZDREE0IC8qIFZQOVV0aWxpdGllc0NvY29hLm1tICovLAog
CQkJCTJEM0VGNDQ0MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVy
RGVsZWdhdGUuaCAqLywKQEAgLTI3MzgzLDYgKzI3NDAyLDggQEAKIAkJCQlDREM4QjVBNTE4MDQ3
NEY3MDAxNkU2ODUgLyogTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oICovLAogCQkJCUNEQzhC
NUE0MTgwNDc0RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tICovLAog
CQkJCTdBMjlGNTcxMThDNjk1MTQwMDREMEY4MSAvKiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGLmggKi8sCisJCQkJQ0RGOTk0RkEyNEMxMkE2QTAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMuaCAqLywKKwkJCQlDREY5OTRGQjI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQy5tbSAqLywKIAkJCQlDREM4QjVBOTE4MDQ3RkYxMDAxNkU2ODUg
LyogU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCAqLywKIAkJCQlDREM4QjVBODE4MDQ3RkYx
MDAxNkU2ODUgLyogU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gKi8sCiAJCQkJNTJENUEx
OEUxQzU0NTkwMzAwREUzNEEzIC8qIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oICovLApAQCAtMzI2
NDksNyArMzI2NzAsNiBAQAogCQkJCUExNDk3ODcxMUFCQUYzQTUwMENFRjdFNCAvKiBQbGF0Zm9y
bUNvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUM3NjJCMTQ5N0ZFMTQwMEJD
NDc3NSAvKiBQbGF0Zm9ybUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjYwMUVCRjE0QjNC
OUFEMDAxMkMwRkUgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MuaCBpbiBIZWFkZXJzICovLAot
CQkJCUNEQzc0NzA0MjRCRTJGQzcwMEMxODY4QiAvKiBQb3dlclNvdXJjZU5vdGlmaWVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0FBNDg3MDE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVu
dEZhY3RvcnlNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MjNGNzdCMTQ4NENBNEMwMDhDNkRC
RSAvKiBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1QkUxOTUx
RDU0RjVGQjAwREQ3QzY4IC8qIFBsYXRmb3JtR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
MjcxMCw2ICszMjczMCw3IEBACiAJCQkJOTc0NkFGMzIxNEY0RERFNjAwM0U3QTcwIC8qIFBvc2l0
aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY2MTcyRUMyM0EyQUMxRjAwM0FCMzA5
IC8qIFBvc3RNZXNzYWdlT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZEQkI2NTAxQUI4
Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCBpbiBIZWFkZXJzICovLAorCQkJCUNE
Qzc0NzA0MjRCRTJGQzcwMEMxODY4QiAvKiBQb3dlclNvdXJjZU5vdGlmaWVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDMEYyQTQ0MTEzODY5QUFCMDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTFDMTUwN0ExRTNGMkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252
ZXJ0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUExQURBRjdEMjM2MEZEM0UwMDlDQjc3NiAvKiBQ
cmV2aWV3Q29udmVydGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTM0NTMwLDYgKzM0NTUx
LDcgQEAKIAkJCQlDREE5OEUwQjE2MDNDRDYwMDBGRUEzQjEgLyogTGVnYWN5Q0RNLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUNERThCNUVDMUE2OTc3NzMwMEI0QjY2QSAvKiBMZWdhY3lDRE1Qcml2
YXRlQ2xlYXJLZXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RDQTk4RUIxOEIyQzhFQjAwQzEy
RkY5IC8qIExlZ2FjeUNETVByaXZhdGVNZWRpYVBsYXllci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlDREY5OTRGRDI0QzE1RkUzMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUNERThCNUYwMUE2OTc3OEIwMEI0QjY2QSAvKiBMZWdhY3lD
RE1TZXNzaW9uQ2xlYXJLZXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE1MDgwMzYxRTNGMDBB
RDAwNTFENzVEIC8qIExpYldlYlJUQ0F1ZGlvTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTVDREQ4MzY0MUU0MzI1QTAwMDYyMUU5MiAvKiBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oCmluZGV4IDExYzBhN2Y1ZDhmOWI0YjQyYTg3MWIzMzExZWFjNDQ1OTc1MzY0Mjcu
LmQwMTc4NGM3YWE0Yjc2ZDZjM2NkMjU5NzkyMzI0YTYwNTI5YTFmNzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCkBAIC0zOTEsNiArMzkxLDExIEBA
IHB1YmxpYzoKICAgICBib29sIGluY3JlbWVudGFsUERGTG9hZGluZ0VuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX2luY3JlbWVudGFsUERGTG9hZGluZ0VuYWJsZWQ7IH0KICNlbmRpZgogCisjaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICB2b2lkIHNldFdlYk1QYXJzZXJFbmFibGVkKGJvb2wg
aXNFbmFibGVkKSB7IG1fd2ViTVBhcnNlckVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29s
IHdlYk1QYXJzZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV93ZWJNUGFyc2VyRW5hYmxlZDsg
fQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgLy8gTmV2ZXIgaW5zdGFudGlhdGUuCiAgICAgUnVu
dGltZUVuYWJsZWRGZWF0dXJlcygpOwpAQCAtNTg0LDYgKzU4OSwxMCBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9pbmNyZW1lbnRhbFBERkxvYWRpbmdFbmFibGVkIHsgZmFsc2UgfTsKICNlbmRpZgog
CisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICBib29sIG1fd2ViTVBhcnNlckVuYWJsZWQg
eyBmYWxzZSB9OworI2VuZGlmCisKICAgICBmcmllbmQgY2xhc3MgV1RGOjpOZXZlckRlc3Ryb3ll
ZDxSdW50aW1lRW5hYmxlZEZlYXR1cmVzPjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oCmluZGV4IDdmYWUyM2VmNWRj
NDI5OWU4ZjA5ZmM0MTJmYzE3MTAyNjhiZWJjMjEuLmE5ZjgzNmJkMTE3M2UyMmUwYWU4MTRhMTc1
NDJhYTIzYTQ2MTVhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0F1ZGlvVHJhY2tQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJUcmFja1ByaXZhdGVCYXNlLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CiAKICNpZiBFTkFCTEUoVklERU8pCiAKQEAgLTU1LDYgKzU2LDggQEAgcHVibGljOgogICAg
ICAgICBtX2VuYWJsZWQgPSBlbmFibGVkOwogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAg
ICAgICBtX2NsaWVudC0+ZW5hYmxlZENoYW5nZWQoZW5hYmxlZCk7CisgICAgICAgIGlmIChtX2Vu
YWJsZWRDaGFuZ2VkQ2FsbGJhY2spCisgICAgICAgICAgICBtX2VuYWJsZWRDaGFuZ2VkQ2FsbGJh
Y2soKnRoaXMsIG1fZW5hYmxlZCk7CiAgICAgfQogCiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9lbmFibGVkOyB9CkBAIC02NCw2ICs2Nyw5IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgYm9vbCBpc0JhY2tlZEJ5TWVkaWFTdHJlYW1UcmFjaygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAKKyAgICB1c2luZyBFbmFibGVkQ2hhbmdlZENhbGxiYWNrID0gRnVuY3Rpb248dm9p
ZChBdWRpb1RyYWNrUHJpdmF0ZSYsIGJvb2wgZW5hYmxlZCk+OworICAgIHZvaWQgc2V0RW5hYmxl
ZENoYW5nZWRDYWxsYmFjayhFbmFibGVkQ2hhbmdlZENhbGxiYWNrJiYgY2FsbGJhY2spIHsgbV9l
bmFibGVkQ2hhbmdlZENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7IH0KKwogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuICJBdWRpb1RyYWNrUHJpdmF0ZSI7IH0KICNlbmRpZgpAQCAtNzQsNiAr
ODAsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIEF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50
KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKICAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07Cisg
ICAgRW5hYmxlZENoYW5nZWRDYWxsYmFjayBtX2VuYWJsZWRDaGFuZ2VkQ2FsbGJhY2s7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaAppbmRleCA3MThkODBlMzQ1MmM0N2ZlZWY0
MjY4ZjI5ZTNhMmU4N2JiNGRjYWQzLi4wYzQxM2MyZGRmNWQ5ZGEyYTE1YjExMzVjMDhlNTEwODUy
YjgwMmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRl
b1RyYWNrUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Zp
ZGVvVHJhY2tQcml2YXRlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoVklERU8pCiAK
ICNpbmNsdWRlICJUcmFja1ByaXZhdGVCYXNlLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDgsNiArNDksOCBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fc2VsZWN0ZWQgPSBzZWxlY3RlZDsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAg
ICAgICAgbV9jbGllbnQtPnNlbGVjdGVkQ2hhbmdlZChtX3NlbGVjdGVkKTsKKyAgICAgICAgaWYg
KG1fc2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2spCisgICAgICAgICAgICBtX3NlbGVjdGVkQ2hhbmdl
ZENhbGxiYWNrKCp0aGlzLCBtX3NlbGVjdGVkKTsKICAgICB9CiAgICAgdmlydHVhbCBib29sIHNl
bGVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RlZDsgfQogCkBAIC01OCwxMiArNjEsMTcg
QEAgcHVibGljOgogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICJWaWRlb1RyYWNrUHJpdmF0ZSI7IH0KICNlbmRpZgogCisgICAgdXNpbmcgU2VsZWN0
ZWRDaGFuZ2VkQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFZpZGVvVHJhY2tQcml2YXRlJiwgYm9v
bCBzZWxlY3RlZCk+OworICAgIHZvaWQgc2V0U2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2soU2VsZWN0
ZWRDaGFuZ2VkQ2FsbGJhY2smJiBjYWxsYmFjaykgeyBtX3NlbGVjdGVkQ2hhbmdlZENhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayk7IH0KKworCiBwcm90ZWN0ZWQ6CiAgICAgVmlkZW9UcmFja1By
aXZhdGUoKSA9IGRlZmF1bHQ7CiAKIHByaXZhdGU6CiAgICAgVmlkZW9UcmFja1ByaXZhdGVDbGll
bnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwogICAgIGJvb2wgbV9zZWxlY3RlZCB7IGZhbHNlIH07
CisgICAgU2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2sgbV9zZWxlY3RlZENoYW5nZWRDYWxsYmFjazsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcApp
bmRleCBjMWNiMWE0ZDM1NjEyNWQ5NDdkZWZmYzI3ZjU5ZmNhMGM5YjQxODQxLi5iYzEzOTc3OTdi
YWRhOGE0NzU5YmY1MmY5YTU0NjNiMmQ2NDFkNzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
Y3BwCkBAIC0zMyw5ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBw
YXJlbnQpCitBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6QXVkaW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaykKICAgICA6IG1faW1w
bChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKLSAgICAsIG1f
cGFyZW50KHBhcmVudCkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KQEAg
LTY3LDcgKzY2LDYgQEAgdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIEF1ZGlvVHJh
Y2tQcml2YXRlQVZGOjpzZXRFbmFibGVkKGVuYWJsZWQpOwotICAgIG1fcGFyZW50LT50cmFja0Rp
ZENoYW5nZUVuYWJsZWQodGhpcyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4
IDliYzRmMjZjMDczNDlmMTc3NmY2MGJlMGRkMWMyYWJjZDdiMzdkNmIuLjE0NTZjMDE2YmFlMDNi
ODc4YjUwYmY1OTkyNGZiNGQ5ZjM1MzAxOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAt
MzksOSArMzksOSBAQCBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzsKIGNsYXNzIEF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIGZpbmFsIDogcHVibGljIEF1ZGlvVHJh
Y2tQcml2YXRlQVZGIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQykKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrICp0cmFjaywgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKKyAgICBzdGF0aWMgUmVmPEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrICp0cmFjaykK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2spKTsKICAgICB9
CiAKICAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCkgZmluYWw7CkBAIC01MiwxMiArNTIsMTEgQEAg
cHVibGljOgogICAgIGludCB0cmFja0lEKCkgeyByZXR1cm4gbV90cmFja0lEOyB9CiAKIHByaXZh
dGU6Ci0gICAgZXhwbGljaXQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZB
c3NldFRyYWNrKiwgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCk7CisgICAgZXhw
bGljaXQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKik7
CiAgICAgCiAgICAgdm9pZCByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPiBtX2ltcGw7Ci0gICAgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMqIG1fcGFyZW50OwogICAgIGludCBtX3RyYWNrSUQ7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggNjY4OTkxMDFlMWZjNTg0MDc3NzdiNjlk
NjM5MTkxNWZkOWFkZGQyMS4uYmQ2ODVkNTRjMjNjNTdiYTNmYjZhYjBhYTIzMTZmNjg5M2VmMTgz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMjUzLDMwICsyNTMsNyBAQCBNZWRp
YVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6c3VwcG9ydHNUeXBlKGNvbgogICAgIGlmICghcGFyYW1ldGVycy5pc01lZGlhU291cmNlKQog
ICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7
CiAKLSAgICBTdHJpbmcgZXh0ZW5kZWRUeXBlID0gcGFyYW1ldGVycy50eXBlLnJhdygpOwotICAg
IFN0cmluZyBvdXRwdXRDb2RlY3MgPSBwYXJhbWV0ZXJzLnR5cGUucGFyYW1ldGVyKENvbnRlbnRU
eXBlOjpjb2RlY3NQYXJhbWV0ZXIoKSk7Ci0gICAgaWYgKCFvdXRwdXRDb2RlY3MuaXNFbXB0eSgp
ICYmIFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihvdXRwdXRNSU1FQ29kZWNQYXJhbWV0ZXJGb3JJbnB1dE1JTUVDb2RlY1BhcmFt
ZXRlcjopXSkgewotICAgICAgICBvdXRwdXRDb2RlY3MgPSBbUEFMOjpnZXRBVlN0cmVhbURhdGFQ
YXJzZXJDbGFzcygpIG91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFy
YW1ldGVyOm91dHB1dENvZGVjc107Ci0gICAgICAgIGV4dGVuZGVkVHlwZSA9IG1ha2VTdHJpbmco
cGFyYW1ldGVycy50eXBlLmNvbnRhaW5lclR5cGUoKSwgIjsgY29kZWNzPVwiIiwgb3V0cHV0Q29k
ZWNzLCAiXCIiKTsKLSAgICB9Ci0KLSAgICBhdXRvIHN1cHBvcnRlZCA9IE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwotICAgIGF1dG8mIHN0cmVhbURhdGFQYXJzZXJD
YWNoZSA9IEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpOwotICAg
IGlmIChzdHJlYW1EYXRhUGFyc2VyQ2FjaGUuaXNBdmFpbGFibGUoKSkKLSAgICAgICAgc3VwcG9y
dGVkID0gc3RyZWFtRGF0YVBhcnNlckNhY2hlLmNhbkRlY29kZVR5cGUoZXh0ZW5kZWRUeXBlKTsK
LSAgICBlbHNlIHsKLSAgICAgICAgYXV0byYgYXNzZXRDYWNoZSA9IEFWQXNzZXRNSU1FVHlwZUNh
Y2hlOjpzaW5nbGV0b24oKTsKLSAgICAgICAgaWYgKGFzc2V0Q2FjaGUuaXNBdmFpbGFibGUoKSkK
LSAgICAgICAgICAgIHN1cHBvcnRlZCA9IGFzc2V0Q2FjaGUuY2FuRGVjb2RlVHlwZShleHRlbmRl
ZFR5cGUpOwotICAgIH0KLQotICAgIGlmIChzdXBwb3J0ZWQgIT0gTWVkaWFQbGF5ZXI6OlN1cHBv
cnRzVHlwZTo6SXNTdXBwb3J0ZWQpCi0gICAgICAgIHJldHVybiBzdXBwb3J0ZWQ7Ci0KLSAgICBp
ZiAoIWNvbnRlbnRUeXBlTWVldHNIYXJkd2FyZURlY29kZVJlcXVpcmVtZW50cyhwYXJhbWV0ZXJz
LnR5cGUsIHBhcmFtZXRlcnMuY29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KSkK
LSAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVk
OwotCi0gICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkOwor
ICAgIHJldHVybiBTb3VyY2VCdWZmZXJQYXJzZXI6OmlzQ29udGVudFR5cGVTdXBwb3J0ZWQocGFy
YW1ldGVycy50eXBlKSA/IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkIDog
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiB9CiAKICNwcmFnbWEg
bWFyayAtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRl
QVZGT2JqQy5tbQppbmRleCA4Mjc4ZTA2YTUxMjI5N2M3ZWQyYjI2OTBmZmUwY2I0Mjg4ODVmYmY2
Li4yOTMyMjc5MzkxMGVhNTdmMTgxYzkyMDE3ZDNjZjM2NTc3NTIxMDMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KQEAgLTM0
LDYgKzM0LDcgQEAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIgogI2ltcG9ydCAiTWVkaWFTb3VyY2VQcml2YXRlQ2xp
ZW50LmgiCisjaW1wb3J0ICJTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgiCiAjaW1wb3J0ICJT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oIgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAj
aW1wb3J0IDx3dGYvQWxnb3JpdGhtcy5oPgpAQCAtODUsNyArODYsMTEgQEAgTWVkaWFTb3VyY2VQ
cml2YXRlOjpBZGRTdGF0dXMgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6YWRkU291cmNlQnVm
ZmVyKGNvbnN0IEMKICAgICBpZiAoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
OjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycykgPT0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6
SXNOb3RTdXBwb3J0ZWQpCiAgICAgICAgIHJldHVybiBOb3RTdXBwb3J0ZWQ7CiAKLSAgICBhdXRv
IG5ld1NvdXJjZUJ1ZmZlciA9IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUodGhp
cyk7CisgICAgYXV0byBwYXJzZXIgPSBTb3VyY2VCdWZmZXJQYXJzZXI6OmNyZWF0ZShjb250ZW50
VHlwZSk7CisgICAgaWYgKCFwYXJzZXIpCisgICAgICAgIHJldHVybiBOb3RTdXBwb3J0ZWQ7CisK
KyAgICBhdXRvIG5ld1NvdXJjZUJ1ZmZlciA9IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpj
cmVhdGUodGhpcywgcGFyc2VyLnJlbGVhc2VOb25OdWxsKCkpOwogI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCiAgICAgbmV3U291cmNlQnVmZmVyLT5zZXRDRE1JbnN0YW5jZShtX2NkbUluc3Rh
bmNlLmdldCgpKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwZmY0MGRlZmIxNjYxMzhiZWQwMGZl
MWZiOWI5MmIyN2I0N2Y1ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
LmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiU291cmNlQnVmZmVyUGFyc2VyLmgiCisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgorI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK09CSkNfQ0xBU1MgQVZBc3NldDsKK09CSkNfQ0xBU1Mg
QVZTdHJlYW1EYXRhUGFyc2VyOworT0JKQ19DTEFTUyBOU0RhdGE7CitPQkpDX0NMQVNTIE5TRXJy
b3I7CitPQkpDX0NMQVNTIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyOworCit0eXBlZGVm
IHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQyBmaW5hbCA6
IHB1YmxpYyBTb3VyY2VCdWZmZXJQYXJzZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDPiB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgaXNDb250ZW50
VHlwZVN1cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYpOworCisgICAgU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQygpOworICAgIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKTsK
KworICAgIEFWU3RyZWFtRGF0YVBhcnNlciogcGFyc2VyKCkgY29uc3QgeyByZXR1cm4gbV9wYXJz
ZXIuZ2V0KCk7IH0KKworICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIFR5cGU6OkFWRk9i
akM7IH0KKyAgICB2b2lkIGFwcGVuZERhdGEoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYsIEFwcGVu
ZEZsYWdzID0gQXBwZW5kRmxhZ3M6Ok5vbmUpIGZpbmFsOworICAgIHZvaWQgZmx1c2hQZW5kaW5n
TWVkaWFEYXRhKCkgZmluYWw7CisgICAgdm9pZCBzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9y
VHJhY2tJRChib29sLCBpbnQzMl90KSBmaW5hbDsKKyAgICBib29sIHNob3VsZFByb3ZpZGVNZWRp
YWRhdGFGb3JUcmFja0lEKGludDMyX3QpIGZpbmFsOworICAgIHZvaWQgcmVzZXRQYXJzZXJTdGF0
ZSgpIGZpbmFsOworCisgICAgdm9pZCBkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQq
KTsKKyAgICB2b2lkIGRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcihOU0Vycm9yKik7
CisgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChpbnQzMl90IHRyYWNrSUQs
IENNU2FtcGxlQnVmZmVyUmVmLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgdW5zaWduZWQgZmxh
Z3MpOworICAgIHZvaWQgd2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9u
RGF0YUZvclRyYWNrSUQoaW50MzJfdCB0cmFja0lEKTsKKyAgICB2b2lkIGRpZFByb3ZpZGVDb250
ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoTlNEYXRhKiwgaW50MzJf
dCB0cmFja0lEKTsKKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8QVZTdHJlYW1EYXRhUGFyc2Vy
PiBtX3BhcnNlcjsKKyAgICBSZXRhaW5QdHI8V2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXI+
IG1fZGVsZWdhdGU7CisgICAgYm9vbCBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6
YXRpb25TZWdtZW50IHsgZmFsc2UgfTsKKyAgICBib29sIG1fcGFyc2VyU3RhdGVXYXNSZXNldCB7
IGZhbHNlIH07Cit9OworCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQykKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29u
c3QgV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyJiBwYXJzZXIpIHsgcmV0dXJuIHBhcnNlci50
eXBlKCkgPT0gV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpUeXBlOjpBVkZPYmpDOyB9CitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTQ5ZmIyMjZmY2Fk
OWFhN2FmNWFlYWFhNjQzOTdhN2NlOWM0MjczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5tbQpAQCAtMCwwICsxLDMzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCAiU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oIgorCisjaW1wb3J0
ICJBVkFzc2V0TUlNRVR5cGVDYWNoZS5oIgorI2ltcG9ydCAiQVZBc3NldFRyYWNrVXRpbGl0aWVz
LmgiCisjaW1wb3J0ICJBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLmgiCisjaW1wb3J0
ICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIgorI2ltcG9ydCAiRm91ckND
LmgiCisjaW1wb3J0ICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5oIgorI2ltcG9ydCAi
TG9nZ2luZy5oIgorI2ltcG9ydCAiTWVkaWFEZXNjcmlwdGlvbi5oIgorI2ltcG9ydCAiTWVkaWFT
YW1wbGUuaCIKKyNpbXBvcnQgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgorI2ltcG9ydCAiTm90SW1w
bGVtZW50ZWQuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgorI2ltcG9ydCAiVGltZVJhbmdl
cy5oIgorI2ltcG9ydCAiVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCIKKyNp
bXBvcnQgPEFWRm91bmRhdGlvbi9BVkFzc2V0VHJhY2suaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRD
b3JlL1R5cGVkQXJyYXlJbmxpbmVzLmg+CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBv
cnQgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxw
YWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4
Y2VwdGlvbnMuaD4KKworI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW1w
b3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKworI3ByYWdtYSBtYXJrIC0K
KyNwcmFnbWEgbWFyayBXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcgorCitAaW50ZXJmYWNl
IFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIDogTlNPYmplY3Q8QVZTdHJlYW1EYXRhUGFy
c2VyT3V0cHV0SGFuZGxpbmc+IHsKKyAgICBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDKiBfcGFyZW50OworICAgIEFWU3RyZWFtRGF0YVBhcnNlciogX3BhcnNlcjsKK30KK0Bwcm9w
ZXJ0eSAoYXNzaWduKSBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKiBwYXJlbnQ7
CistIChpZClpbml0V2l0aFBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyKilwYXJzZXIgcGFyZW50
OihXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKilwYXJlbnQ7CitAZW5kCisKK0Bp
bXBsZW1lbnRhdGlvbiBXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcgorLSAoaWQpaW5pdFdp
dGhQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciopcGFyc2VyIHBhcmVudDooV2ViQ29yZTo6U291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQyopcGFyZW50Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0
XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBBU1NFUlQocGFy
ZW50KTsKKyAgICBfcGFyZW50ID0gcGFyZW50OworICAgIF9wYXJzZXIgPSBwYXJzZXI7CisgICAg
W19wYXJzZXIgc2V0RGVsZWdhdGU6c2VsZl07CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK0BzeW50
aGVzaXplIHBhcmVudD1fcGFyZW50OworCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbX3BhcnNl
ciBzZXREZWxlZ2F0ZTpuaWxdOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZClp
bnZhbGlkYXRlCit7CisgICAgW19wYXJzZXIgc2V0RGVsZWdhdGU6bmlsXTsKKyAgICBfcGFyc2Vy
ID0gbnVsbHB0cjsKK30KKworLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQ
YXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQ6KEFWQXNz
ZXQgKilhc3NldAoreworICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFt
RGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKKyAgICBfcGFyZW50LT5kaWRQYXJzZVN0cmVhbURhdGFB
c0Fzc2V0KGFzc2V0KTsKK30KKworLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURh
dGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQ6KEFW
QXNzZXQgKilhc3NldCB3aXRoRGlzY29udGludWl0eTooQk9PTClkaXNjb250aW51aXR5Cit7Cisg
ICAgVU5VU0VEX1BBUkFNKGRpc2NvbnRpbnVpdHkpOworICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFt
RGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKKyAgICBfcGFyZW50LT5k
aWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KGFzc2V0KTsKK30KKworLSAodm9pZClzdHJlYW1EYXRh
UGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZEZhaWxUb1Bh
cnNlU3RyZWFtRGF0YVdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCit7CisgICAgQVNTRVJUX1VO
VVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOworICAg
IF9wYXJlbnQtPmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcihlcnJvcik7Cit9CisK
Ky0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0
YVBhcnNlciBkaWRQcm92aWRlTWVkaWFEYXRhOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGUgZm9y
VHJhY2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lEIG1lZGlhVHlwZTooTlNTdHJpbmcg
Kiluc01lZGlhVHlwZSBmbGFnczooQVZTdHJlYW1EYXRhUGFyc2VyT3V0cHV0TWVkaWFEYXRhRmxh
Z3MpZmxhZ3MKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURh
dGFQYXJzZXIgPT0gX3BhcnNlcik7CisgICAgX3BhcmVudC0+ZGlkUHJvdmlkZU1lZGlhRGF0YUZv
clRyYWNrSUQodHJhY2tJRCwgc2FtcGxlLCBuc01lZGlhVHlwZSwgZmxhZ3MpOworfQorCitBTExP
V19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgorLSAodm9pZClzdHJlYW1EYXRhUGFy
c2VyV2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTooQVZTdHJl
YW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRU
cmFja0lEKXRyYWNrSUQKK0FMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAorewor
ICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBf
cGFyc2VyKTsKKyAgICBfcGFyZW50LT53aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlh
bGl6YXRpb25EYXRhRm9yVHJhY2tJRCh0cmFja0lEKTsKK30KKworQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfQkVHSU4KKy0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1E
YXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJ
bml0aWFsaXphdGlvbkRhdGE6KE5TRGF0YSAqKWluaXREYXRhIGZvclRyYWNrSUQ6KENNUGVyc2lz
dGVudFRyYWNrSUQpdHJhY2tJRAorQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5E
Cit7CisgICAgX3BhcmVudC0+ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm9yVHJhY2tJRChpbml0RGF0YSwgdHJhY2tJRCk7Cit9CitAZW5kCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworI3ByYWdtYSBtYXJrIC0KKyNwcmFnbWEgbWFyayBNZWRpYURlc2NyaXB0
aW9uQVZGT2JqQworCitjbGFzcyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyBmaW5hbCA6IHB1Ymxp
YyBNZWRpYURlc2NyaXB0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPE1lZGlhRGVzY3Jp
cHRpb25BVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrKiB0cmFjaykgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyh0cmFjaykpOyB9CisgICAgdmlydHVhbCB+
TWVkaWFEZXNjcmlwdGlvbkFWRk9iakMoKSB7IH0KKworICAgIGJvb2wgaXNWaWRlbygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNWaWRlbzsgfQorICAgIGJvb2wgaXNBdWRpbygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNBdWRpbzsgfQorICAgIGJvb2wgaXNUZXh0KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9pc1RleHQ7IH0KKyAgICBBdG9tU3RyaW5nIGNvZGVjKCkgY29u
c3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIC8vIEF0b21TdHJpbmdzIGNhbiBvbmx5IGJlIGRl
c3Ryb3llZCBmcm9tIHRoZSBzYW1lIHRocmVhZCB0aGV5J3JlCisgICAgICAgIC8vIGNyZWF0ZWQg
aW4uIFNpbmNlIHRoaXMgc3RydWN0dXJlIGlzIGNyZWF0ZWQgaW4gYSBwYXJzZXIgdGhyZWFkCisg
ICAgICAgIC8vIG9ubHkgY3JlYXRlIHRoZSBBdG9tU3RyaW5nIHRoZSBmaXJzdCB0aW1lIHRoaXMg
ZnVuY3Rpb24gaXMgYWNjZXNzZWQKKyAgICAgICAgLy8gd2hpY2ggaXMgcHJlc3VtYWJseSBvbiB0
aGUgbWFpbiB0aHJlYWQuCisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAg
IGlmICghbV9jb2RlYykKKyAgICAgICAgICAgIG1fY29kZWMgPSBBdG9tU3RyaW5nKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigmbV9vcmlnaW5hbENvZGVjKSwgNCk7CisgICAgICAgIHJl
dHVybiAqbV9jb2RlYzsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTWVkaWFEZXNjcmlwdGlvbkFW
Rk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaykKKyAgICAgICAgOiBtX2lzVmlkZW8oW3RyYWNrIGhh
c01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljVmlzdWFsXSkKKyAgICAg
ICAgLCBtX2lzQXVkaW8oW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJh
Y3RlcmlzdGljQXVkaWJsZV0pCisgICAgICAgICwgbV9pc1RleHQoW3RyYWNrIGhhc01lZGlhQ2hh
cmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJsZV0pCisgICAgeworICAgICAg
ICBOU0FycmF5KiBmb3JtYXREZXNjcmlwdGlvbnMgPSBbdHJhY2sgZm9ybWF0RGVzY3JpcHRpb25z
XTsKKyAgICAgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjcmlwdGlvbiA9IFtmb3JtYXRE
ZXNjcmlwdGlvbnMgY291bnRdID8gKF9fYnJpZGdlIENNRm9ybWF0RGVzY3JpcHRpb25SZWYpW2Zv
cm1hdERlc2NyaXB0aW9ucyBvYmplY3RBdEluZGV4OjBdIDogMDsKKyAgICAgICAgaWYgKGRlc2Ny
aXB0aW9uKSB7CisgICAgICAgICAgICBtX29yaWdpbmFsQ29kZWMgPSBQQUw6OnNvZnRMaW5rX0Nv
cmVNZWRpYV9DTUZvcm1hdERlc2NyaXB0aW9uR2V0TWVkaWFTdWJUeXBlKGRlc2NyaXB0aW9uKTsK
KyAgICAgICAgICAgIENGU3RyaW5nUmVmIG9yaWdpbmFsRm9ybWF0S2V5ID0gUEFMOjpjYW5Mb2Fk
X0NvcmVNZWRpYV9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9Qcm90ZWN0ZWRDb250ZW50
T3JpZ2luYWxGb3JtYXQoKSA/IFBBTDo6Z2V0X0NvcmVNZWRpYV9rQ01Gb3JtYXREZXNjcmlwdGlv
bkV4dGVuc2lvbl9Qcm90ZWN0ZWRDb250ZW50T3JpZ2luYWxGb3JtYXQoKSA6IENGU1RSKCJDb21t
b25FbmNyeXB0aW9uT3JpZ2luYWxGb3JtYXQiKTsKKyAgICAgICAgICAgIENGVHlwZVJlZiBvcmln
aW5hbEZvcm1hdCA9IENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb24oZGVzY3JpcHRpb24s
IG9yaWdpbmFsRm9ybWF0S2V5KTsKKyAgICAgICAgICAgIGlmIChvcmlnaW5hbEZvcm1hdCAmJiBD
RkdldFR5cGVJRChvcmlnaW5hbEZvcm1hdCkgPT0gQ0ZOdW1iZXJHZXRUeXBlSUQoKSkKKyAgICAg
ICAgICAgICAgICBDRk51bWJlckdldFZhbHVlKChDRk51bWJlclJlZilvcmlnaW5hbEZvcm1hdCwg
a0NGTnVtYmVyU0ludDMyVHlwZSwgJm1fb3JpZ2luYWxDb2RlYyk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBGb3VyQ2hhckNvZGUgbV9vcmlnaW5hbENvZGVjOworICAgIG11dGFibGUgT3B0aW9u
YWw8QXRvbVN0cmluZz4gbV9jb2RlYzsKKyAgICBib29sIG1faXNWaWRlbzsKKyAgICBib29sIG1f
aXNBdWRpbzsKKyAgICBib29sIG1faXNUZXh0OworfTsKKworI3ByYWdtYSBtYXJrIC0KKyNwcmFn
bWEgbWFyayBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDCisKK2Jvb2wgU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYgdHlw
ZSkKK3sKKyAgICBTdHJpbmcgZXh0ZW5kZWRUeXBlID0gdHlwZS5yYXcoKTsKKyAgICBTdHJpbmcg
b3V0cHV0Q29kZWNzID0gdHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRl
cigpKTsKKyAgICBpZiAoIW91dHB1dENvZGVjcy5pc0VtcHR5KCkgJiYgW1BBTDo6Z2V0QVZTdHJl
YW1EYXRhUGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dE1J
TUVDb2RlY1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFyYW1ldGVyOildKSB7CisgICAgICAg
IG91dHB1dENvZGVjcyA9IFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgb3V0cHV0
TUlNRUNvZGVjUGFyYW1ldGVyRm9ySW5wdXRNSU1FQ29kZWNQYXJhbWV0ZXI6b3V0cHV0Q29kZWNz
XTsKKyAgICAgICAgZXh0ZW5kZWRUeXBlID0gbWFrZVN0cmluZyh0eXBlLmNvbnRhaW5lclR5cGUo
KSwgIjsgY29kZWNzPVwiIiwgb3V0cHV0Q29kZWNzLCAiXCIiKTsKKyAgICB9CisKKyAgICBhdXRv
JiBzdHJlYW1EYXRhUGFyc2VyQ2FjaGUgPSBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hl
OjpzaW5nbGV0b24oKTsKKyAgICBpZiAoc3RyZWFtRGF0YVBhcnNlckNhY2hlLmlzQXZhaWxhYmxl
KCkpCisgICAgICAgIHJldHVybiBzdHJlYW1EYXRhUGFyc2VyQ2FjaGUuY2FuRGVjb2RlVHlwZShl
eHRlbmRlZFR5cGUpID09IE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0
ZWQ7CisKKyAgICBhdXRvJiBhc3NldENhY2hlID0gQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmds
ZXRvbigpOworICAgIGlmIChhc3NldENhY2hlLmlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVy
biBhc3NldENhY2hlLmNhbkRlY29kZVR5cGUoZXh0ZW5kZWRUeXBlKSA9PSBNZWRpYVBsYXllckVu
dW1zOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkOworCisgICAgcmV0dXJuIGZhbHNlOworfQor
CitTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkK
KyAgICA6IG1fcGFyc2VyKGFkb3B0TlMoW1BBTDo6YWxsb2NBVlN0cmVhbURhdGFQYXJzZXJJbnN0
YW5jZSgpIGluaXRdKSkKKyAgICAsIG1fZGVsZWdhdGUoYWRvcHROUyhbW1dlYkFWU3RyZWFtRGF0
YVBhcnNlckxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aFBhcnNlcjptX3BhcnNlci5nZXQoKSBwYXJl
bnQ6dGhpc10pKQoreworfQorCitTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQygpCit7CisgICAgbV9kZWxlZ2F0ZS5nZXQoKS5wYXJlbnQgPSBudWxs
cHRyOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEoVmVj
dG9yPHVuc2lnbmVkIGNoYXI+JiYgZGF0YSwgQXBwZW5kRmxhZ3MgZmxhZ3MpCit7CisgICAgYXV0
byBzaGFyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAg
YXV0byBuc0RhdGEgPSBzaGFyZWREYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBpZiAobV9wYXJz
ZXJTdGF0ZVdhc1Jlc2V0IHx8IGZsYWdzID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5KQor
ICAgICAgICBbbV9wYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkgd2l0aEZsYWdz
OkFWU3RyZWFtRGF0YVBhcnNlclN0cmVhbURhdGFEaXNjb250aW51aXR5XTsKKyAgICBlbHNlCisg
ICAgICAgIFttX3BhcnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKV07CisgICAgbV9w
YXJzZXJTdGF0ZVdhc1Jlc2V0ID0gZmFsc2U7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQzo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKCkKK3sKKyAgICBbbV9wYXJzZXIgcHJvdmlk
ZVBlbmRpbmdNZWRpYURhdGFdOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6
OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGJvb2wgc2hvdWxkLCBpbnQzMl90
IHRyYWNrSUQpCit7CisgICAgW21fcGFyc2VyIHNldFNob3VsZFByb3ZpZGVNZWRpYURhdGE6c2hv
dWxkIGZvclRyYWNrSUQ6dHJhY2tJRF07Cit9CisKK2Jvb2wgU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6c2hvdWxkUHJvdmlkZU1lZGlhZGF0YUZvclRyYWNrSUQoaW50MzJfdCB0cmFja0lEKQor
eworICAgIHJldHVybiBbbV9wYXJzZXIgc2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQ6
dHJhY2tJRF07Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6cmVzZXRQYXJz
ZXJTdGF0ZSgpCit7CisgICAgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0ID0gdHJ1ZTsKKyAgICBtX2Rp
c2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50ID0gdHJ1ZTsKK30KKwor
dm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0
KEFWQXNzZXQqIGFzc2V0KQoreworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHN0cm9uZ1Ro
aXMgPSBtYWtlUmVmKCp0aGlzKSwgYXNzZXQgPSByZXRhaW5QdHIoYXNzZXQpXSB7CisgICAgICAg
IG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlvblNlZ21lbnQgPSBmYWxzZTsK
KworICAgICAgICBpZiAoIW1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjaykKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBJbml0aWFsaXphdGlvblNlZ21lbnQgc2VnbWVu
dDsKKworICAgICAgICBpZiAoW2Fzc2V0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob3Zl
cmFsbER1cmF0aW9uSGludCldKQorICAgICAgICAgICAgc2VnbWVudC5kdXJhdGlvbiA9IFBBTDo6
dG9NZWRpYVRpbWUoW2Fzc2V0IG92ZXJhbGxEdXJhdGlvbkhpbnRdKTsKKworICAgICAgICBpZiAo
c2VnbWVudC5kdXJhdGlvbi5pc0ludmFsaWQoKSB8fCBzZWdtZW50LmR1cmF0aW9uID09IE1lZGlh
VGltZTo6emVyb1RpbWUoKSkKKyAgICAgICAgICAgIHNlZ21lbnQuZHVyYXRpb24gPSBQQUw6OnRv
TWVkaWFUaW1lKFthc3NldCBkdXJhdGlvbl0pOworCisgICAgICAgIGZvciAoQVZBc3NldFRyYWNr
KiB0cmFjayBpbiBbYXNzZXQgdHJhY2tzXSkgeworICAgICAgICAgICAgaWYgKFt0cmFjayBoYXNN
ZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGVdKSB7CisgICAg
ICAgICAgICAgICAgLy8gRklYTUUoMTI1MTYxKTogSGFuZGxlIGluLWJhbmQgdGV4dCB0cmFja3Mu
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNW
aXN1YWxdKSB7CisgICAgICAgICAgICAgICAgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5p
dGlhbGl6YXRpb25TZWdtZW50OjpWaWRlb1RyYWNrSW5mb3JtYXRpb24gaW5mbzsKKyAgICAgICAg
ICAgICAgICBhdXRvIHZpZGVvVHJhY2sgPSBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6Y3JlYXRlKHRyYWNrKTsKKyAgICAgICAgICAgICAgICBpbmZvLnRyYWNrID0gdmlkZW9U
cmFjay5jb3B5UmVmKCk7CisgICAgICAgICAgICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IE1lZGlh
RGVzY3JpcHRpb25BVkZPYmpDOjpjcmVhdGUodHJhY2spOworICAgICAgICAgICAgICAgIHNlZ21l
bnQudmlkZW9UcmFja3MuYXBwZW5kKGluZm8pOworCisgICAgICAgICAgICAgICAgaWYgKHRyYWNr
LmVuYWJsZWQgJiYgc2VnbWVudC52aWRlb1NpemUuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAg
ICAgICBzZWdtZW50LnZpZGVvU2l6ZSA9IEZsb2F0U2l6ZShDR1NpemVBcHBseUFmZmluZVRyYW5z
Zm9ybShbdHJhY2sgbmF0dXJhbFNpemVdLCBbdHJhY2sgcHJlZmVycmVkVHJhbnNmb3JtXSkpOwor
CisgICAgICAgICAgICB9IGVsc2UgaWYgKFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFW
TWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGVdKSB7CisgICAgICAgICAgICAgICAgU291cmNlQnVm
ZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OjpBdWRpb1RyYWNrSW5mb3Jt
YXRpb24gaW5mbzsKKyAgICAgICAgICAgICAgICBhdXRvIGF1ZGlvVHJhY2sgPSBBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKKyAgICAgICAgICAgICAg
ICBpbmZvLnRyYWNrID0gYXVkaW9UcmFjay5jb3B5UmVmKCk7CisgICAgICAgICAgICAgICAgaW5m
by5kZXNjcmlwdGlvbiA9IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDOjpjcmVhdGUodHJhY2spOwor
ICAgICAgICAgICAgICAgIHNlZ21lbnQuYXVkaW9UcmFja3MuYXBwZW5kKGluZm8pOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBGSVhNRSgxMjUxNjEpICAgIDogQWRkIFRleHRUcmFj
ayBzdXBwb3J0CisgICAgICAgIH0KKworICAgICAgICBtX2RpZFBhcnNlSW5pdGlhbGl6YXRpb25E
YXRhQ2FsbGJhY2soV1RGTW92ZShzZWdtZW50KSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yKE5T
RXJyb3IqIGVycm9yKQoreworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHN0cm9uZ1RoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpXSB7CisgICAgICAgIGlm
IChtX2RpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKQorICAgICAgICAgICAg
bV9kaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayhlcnJvci5nZXQoKS5jb2Rl
KTsKKyAgICB9KTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQcm92
aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChpbnQzMl90IHRyYWNrSUQsIENNU2FtcGxlQnVmZmVyUmVm
IHNhbXBsZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkIGZsYWdzKQor
eworICAgIFVOVVNFRF9QQVJBTShmbGFncyk7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywg
c3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzYW1wbGVCdWZmZXIgPSByZXRhaW5QdHIoc2Ft
cGxlQnVmZmVyKSwgdHJhY2tJRCwgbWVkaWFUeXBlID0gbWVkaWFUeXBlXSB7CisgICAgICAgIGlm
ICghbV9kaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2spCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgaWYgKG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlvblNlZ21l
bnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byBtZWRpYVNhbXBsZSA9IE1l
ZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKHNhbXBsZUJ1ZmZlci5nZXQoKSwgdHJhY2tJRCk7CisK
KyAgICAgICAgaWYgKG1lZGlhU2FtcGxlLT5pc0hvbW9nZW5lb3VzKCkpIHsKKyAgICAgICAgICAg
IG1fZGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKFdURk1vdmUobWVkaWFTYW1wbGUpLCB0cmFj
a0lELCBtZWRpYVR5cGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgZm9yIChhdXRvJiBzYW1wbGUgOiBtZWRpYVNhbXBsZS0+ZGl2aWRlSW50b0hvbW9nZW5lb3Vz
U2FtcGxlcygpKQorICAgICAgICAgICAgbV9kaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2soV1RG
TW92ZShzYW1wbGUpLCB0cmFja0lELCBtZWRpYVR5cGUpOworICAgIH0pOworfQorCit2b2lkIFNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OndpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0
aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKGludDMyX3QgdHJhY2tJRCkKK3sKKyAgICBtX3dpbGxQ
cm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJh
Y2sodHJhY2tJRCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJv
dmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChOU0RhdGEq
IG5zSW5pdERhdGEsIGludDMyX3QgdHJhY2tJRCkKK3sKKyAgICBhdXRvIGluaXREYXRhID0gVWlu
dDhBcnJheTo6Y3JlYXRlKG5zSW5pdERhdGEubGVuZ3RoKTsKKyAgICBbbnNJbml0RGF0YSBnZXRC
eXRlczppbml0RGF0YS0+ZGF0YSgpIGxlbmd0aDppbml0RGF0YS0+bGVuZ3RoKCldOworCisgICAg
bV9kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lE
Q2FsbGJhY2soV1RGTW92ZShpbml0RGF0YSksIHRyYWNrSUQpOworfQorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRleCBk
ZmExMzRiNGQ2OGZkYjc0NzM0Mzc4ZDlmOWRkM2JkODQxZjMzZDY1Li42ZDE5NGFiMTQwYThiZDM0
OTNiZWIzYWRkZjMyODNkM2I4ZTc1ZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lm
IEVOQUJMRShNRURJQV9TT1VSQ0UpICYmIFVTRShBVkZPVU5EQVRJT04pCiAKKyNpbmNsdWRlICJT
b3VyY2VCdWZmZXJQYXJzZXIuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlLmgiCiAj
aW5jbHVkZSA8ZGlzcGF0Y2gvZ3JvdXAuaD4KICNpbmNsdWRlIDx3dGYvQm94Lmg+CkBAIC0zOCwx
OCArMzksMTcgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV1RGU2VtYXBo
b3JlLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKLU9C
SkNfQ0xBU1MgQVZBc3NldDsKIE9CSkNfQ0xBU1MgQVZTdHJlYW1EYXRhUGFyc2VyOwogT0JKQ19D
TEFTUyBBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXI7CiBPQkpDX0NMQVNTIEFWU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyOwogT0JKQ19DTEFTUyBOU0RhdGE7CiBPQkpDX0NMQVNTIE5TRXJyb3I7
CiBPQkpDX0NMQVNTIE5TT2JqZWN0OwotT0JKQ19DTEFTUyBXZWJBVlN0cmVhbURhdGFQYXJzZXJM
aXN0ZW5lcjsKIE9CSkNfQ0xBU1MgV2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyOwogCiB0
eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7CkBA
IC04NiwzNCArODYsMjcgQEAgY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMgZmluYWwK
ICNlbmRpZgogewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM+IGNyZWF0ZShNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKik7CisgICAgc3RhdGljIFJl
ZjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gY3JlYXRlKE1lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMqLCBSZWY8U291cmNlQnVmZmVyUGFyc2VyPiYmKTsKICAgICB2aXJ0dWFsIH5Tb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQygpOwogCiAgICAgdm9pZCBjbGVhck1lZGlhU291cmNlKCkgeyBt
X21lZGlhU291cmNlID0gbnVsbHB0cjsgfQogCi0gICAgLy8gQVZTdHJlYW1EYXRhUGFyc2VyIGRl
bGVnYXRlIG1ldGhvZHMKLSAgICB2b2lkIGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3Nl
dCopOwotICAgIHZvaWQgZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yKE5TRXJyb3Iq
KTsKLSAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGludCB0cmFja0lELCBD
TVNhbXBsZUJ1ZmZlclJlZiwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkIGZsYWdz
KTsKLSAgICB2b2lkIGRpZFJlYWNoRW5kT2ZUcmFja1dpdGhUcmFja0lEKGludCB0cmFja0lELCBj
b25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7Ci0gICAgdm9pZCB3aWxsUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChpbnQgdHJhY2tJRCk7Ci0gICAgdm9p
ZCBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lE
KE5TRGF0YSosIGludCB0cmFja0lELCBCb3g8QmluYXJ5U2VtYXBob3JlPik7Ci0KLSAgICBib29s
IHByb2Nlc3NDb2RlZEZyYW1lKGludCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJlZiwgY29uc3Qg
U3RyaW5nJiBtZWRpYVR5cGUpOworICAgIHZvaWQgd2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVz
dEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoaW50MzJfdCB0cmFja0lEKTsKKyAgICB2b2lk
IGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQo
UmVmPFVpbnQ4QXJyYXk+JiYsIGludDMyX3QgdHJhY2tJRCwgQm94PEJpbmFyeVNlbWFwaG9yZT4p
OwogCiAgICAgYm9vbCBoYXNWaWRlbygpIGNvbnN0OwogICAgIGJvb2wgaGFzU2VsZWN0ZWRWaWRl
bygpIGNvbnN0OwogICAgIGJvb2wgaGFzQXVkaW8oKSBjb25zdDsKIAotICAgIHZvaWQgdHJhY2tE
aWRDaGFuZ2VFbmFibGVkKFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKik7Ci0g
ICAgdm9pZCB0cmFja0RpZENoYW5nZUVuYWJsZWQoQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMqKTsKKyAgICB2b2lkIHRyYWNrRGlkQ2hhbmdlU2VsZWN0ZWQoVmlkZW9UcmFja1By
aXZhdGUmLCBib29sIHNlbGVjdGVkKTsKKyAgICB2b2lkIHRyYWNrRGlkQ2hhbmdlRW5hYmxlZChB
dWRpb1RyYWNrUHJpdmF0ZSYsIGJvb2wgZW5hYmxlZCk7CiAKICAgICB2b2lkIHdpbGxTZWVrKCk7
CiAgICAgTWVkaWFUaW1lIGZhc3RTZWVrVGltZUZvck1lZGlhVGltZShjb25zdCBNZWRpYVRpbWUm
LCBjb25zdCBNZWRpYVRpbWUmIG5lZ2F0aXZlVGhyZXNob2xkLCBjb25zdCBNZWRpYVRpbWUmIHBv
c2l0aXZlVGhyZXNob2xkKTsKICAgICBGbG9hdFNpemUgbmF0dXJhbFNpemUoKTsKIAogICAgIGlu
dCBwcm90ZWN0ZWRUcmFja0lEKCkgY29uc3QgeyByZXR1cm4gbV9wcm90ZWN0ZWRUcmFja0lEOyB9
Ci0gICAgQVZTdHJlYW1EYXRhUGFyc2VyKiBwYXJzZXIoKSBjb25zdCB7IHJldHVybiBtX3BhcnNl
ci5nZXQoKTsgfQorICAgIEFWU3RyZWFtRGF0YVBhcnNlciogcGFyc2VyKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRDRE1TZXNzaW9uKENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMqKTsKICAgICB2
b2lkIHNldENETUluc3RhbmNlKENETUluc3RhbmNlKik7CiAgICAgdm9pZCBhdHRlbXB0VG9EZWNy
eXB0KCk7CkBAIC0xNDgsNyArMTQxLDEyIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgot
ICAgIGV4cGxpY2l0IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakMqKTsKKyAgICBleHBsaWNpdCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDKiwgUmVmPFNvdXJjZUJ1ZmZlclBhcnNlcj4mJik7CisKKyAg
ICB1c2luZyBJbml0aWFsaXphdGlvblNlZ21lbnQgPSBTb3VyY2VCdWZmZXJQYXJzZXI6OkluaXRp
YWxpemF0aW9uU2VnbWVudDsKKyAgICB2b2lkIGRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKElu
aXRpYWxpemF0aW9uU2VnbWVudCYmKTsKKyAgICB2b2lkIGRpZEVuY291bnRlckVycm9yRHVyaW5n
UGFyc2luZyhpbnQzMl90KTsKKyAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lE
KFJlZjxNZWRpYVNhbXBsZT4mJiwgaW50MzJfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlh
VHlwZSk7CiAKICAgICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlIG92ZXJyaWRlcwogICAgIHZvaWQg
c2V0Q2xpZW50KFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQqKSBmaW5hbDsKQEAgLTE3MiwyOCAr
MTcwLDI4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhcHBlbmRDb21wbGV0ZWQoKTsKICAgICB2b2lk
IGRlc3Ryb3lQYXJzZXIoKTsKICAgICB2b2lkIGRlc3Ryb3lSZW5kZXJlcnMoKTsKKyAgICB2b2lk
IGNsZWFyVHJhY2tzKCk7CiAKICAgICB2b2lkIGZsdXNoVmlkZW8oKTsKICAgICBBTExPV19ORVdf
QVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCiAgICAgdm9pZCBmbHVzaChBVlNhbXBsZUJ1ZmZlckF1
ZGlvUmVuZGVyZXIgKik7CiAgICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKIAot
ICAgIFZlY3RvcjxSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+PiBt
X3ZpZGVvVHJhY2tzOwotICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM+PiBtX2F1ZGlvVHJhY2tzOworICAgIFZlY3RvcjxSZWZQdHI8VmlkZW9UcmFj
a1ByaXZhdGU+PiBtX3ZpZGVvVHJhY2tzOworICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFja1By
aXZhdGU+PiBtX2F1ZGlvVHJhY2tzOwogICAgIFZlY3RvcjxTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQ0Vycm9yQ2xpZW50Kj4gbV9lcnJvckNsaWVudHM7CiAKICAgICBXZWFrUHRyRmFjdG9yeTxT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gbV9hcHBlbmRXZWFrRmFjdG9yeTsKIAotICAgIFJl
dGFpblB0cjxBVlN0cmVhbURhdGFQYXJzZXI+IG1fcGFyc2VyOwotICAgIFJldGFpblB0cjxBVkFz
c2V0PiBtX2Fzc2V0OworICAgIFJlZjxTb3VyY2VCdWZmZXJQYXJzZXI+IG1fcGFyc2VyOwogICAg
IFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gbV9kaXNwbGF5TGF5ZXI7CiAg
ICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgogICAgIEhhc2hNYXA8aW50LCBS
ZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyPj4gbV9hdWRpb1JlbmRlcmVyczsK
ICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAotICAgIFJldGFpblB0cjxXZWJB
VlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcj4gbV9kZWxlZ2F0ZTsKICAgICBSZXRhaW5QdHI8V2Vi
QVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyPiBtX2Vycm9yTGlzdGVuZXI7CiAgICAgUmV0YWlu
UHRyPE5TRXJyb3I+IG1faGRjcEVycm9yOwogICAgIEJveDxCaW5hcnlTZW1hcGhvcmU+IG1faGFz
U2Vzc2lvblNlbWFwaG9yZTsKKyAgICBCb3g8U2VtYXBob3JlPiBtX2Fib3J0U2VtYXBob3JlOwog
ICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX2dyb3VwX3Q+IG1faXNBcHBlbmRpbmdHcm91cDsKICAg
ICBSZWZQdHI8V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uPiBtX2RlY29tcHJlc3Npb25TZXNz
aW9uOwogCkBAIC0yMTEsOCArMjA5LDYgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxGbG9hdFNp
emU+IG1fY2FjaGVkU2l6ZTsKICAgICBGbG9hdFNpemUgbV9jdXJyZW50U2l6ZTsKICAgICBib29s
IG1fcGFyc2luZ1N1Y2NlZWRlZCB7IHRydWUgfTsKLSAgICBib29sIG1fcGFyc2VyU3RhdGVXYXNS
ZXNldCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlh
bGl6YXRpb25TZWdtZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1fd2FpdGluZ0ZvcktleSB7IHRy
dWUgfTsKICAgICBpbnQgbV9lbmFibGVkVmlkZW9UcmFja0lEIHsgLTEgfTsKICAgICBpbnQgbV9w
cm90ZWN0ZWRUcmFja0lEIHsgLTEgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggZDczNTc3NWNjOGYwNGI4YjAyMWIz
NWM3MDE2OTViZDI0ZjZmOGRhOC4uZDUxMTFmZTM3YTdiZjYyMmY5MGY2ZWFiNDNjNTEwNmYxZTNj
ZDc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMubW0KQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbXBvcnQgIk1lZGlhU291cmNlUHJp
dmF0ZUFWRk9iakMuaCIKICNpbXBvcnQgIk5vdEltcGxlbWVudGVkLmgiCiAjaW1wb3J0ICJTaGFy
ZWRCdWZmZXIuaCIKKyNpbXBvcnQgIlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCIKICNpbXBv
cnQgIlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaCIKICNpbXBvcnQgIlRpbWVSYW5nZXMuaCIK
ICNpbXBvcnQgIlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgiCkBAIC04Miwx
NTMgKzgzLDYgQEAgLSAodm9pZClhZGRTdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJz
ZXIgKilzdHJlYW1EYXRhUGFyc2VyOwogLSAodm9pZClyZW1vdmVTdHJlYW1EYXRhUGFyc2VyOihB
VlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyOwogQGVuZAogCi0jcHJhZ21hIG1h
cmsgLQotI3ByYWdtYSBtYXJrIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyCi0KLUBpbnRl
cmZhY2UgV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgOiBOU09iamVjdDxBVlN0cmVhbURh
dGFQYXJzZXJPdXRwdXRIYW5kbGluZz4gewotICAgIFdlYWtQdHI8V2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM+IF9wYXJlbnQ7Ci0gICAgQm94PFNlbWFwaG9yZT4gX2Fib3J0U2Vt
YXBob3JlOwotICAgIEFWU3RyZWFtRGF0YVBhcnNlciogX3BhcnNlcjsKLX0KLUBwcm9wZXJ0eSAo
YXNzaWduKSBXZWFrUHRyPFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBwYXJl
bnQ7Ci1AcHJvcGVydHkgKGFzc2lnbikgQm94PFNlbWFwaG9yZT4gYWJvcnRTZW1hcGhvcmU7Ci0t
IChpZClpbml0V2l0aFBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyKilwYXJzZXIgcGFyZW50OihX
ZWFrUHRyPFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPilwYXJlbnQ7Ci1AZW5k
Ci0KLUBpbXBsZW1lbnRhdGlvbiBXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcgotLSAoaWQp
aW5pdFdpdGhQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciopcGFyc2VyIHBhcmVudDooV2Vha1B0
cjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4pcGFyZW50Ci17Ci0gICAgc2Vs
ZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0K
LSAgICBBU1NFUlQocGFyZW50KTsKLSAgICBfcGFyZW50ID0gcGFyZW50OwotICAgIF9wYXJzZXIg
PSBwYXJzZXI7Ci0gICAgW19wYXJzZXIgc2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgcmV0dXJuIHNl
bGY7Ci19Ci0KLUBzeW50aGVzaXplIHBhcmVudD1fcGFyZW50OwotQHN5bnRoZXNpemUgYWJvcnRT
ZW1hcGhvcmU9X2Fib3J0U2VtYXBob3JlOwotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbX3Bh
cnNlciBzZXREZWxlZ2F0ZTpuaWxdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9p
ZClpbnZhbGlkYXRlCi17Ci0gICAgW19wYXJzZXIgc2V0RGVsZWdhdGU6bmlsXTsKLSAgICBfcGFy
c2VyID0gbnVsbHB0cjsKLX0KLQotLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURh
dGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQ6KEFW
QXNzZXQgKilhc3NldAotewotICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3Ry
ZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLQotICAgIFJldGFpblB0cjxBVkFzc2V0PiBwcm90
ZWN0ZWRBc3NldCA9IGFzc2V0OwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3BhcmVudCA9IF9wYXJl
bnQsIHByb3RlY3RlZEFzc2V0ID0gV1RGTW92ZShwcm90ZWN0ZWRBc3NldCldIHsKLSAgICAgICAg
aWYgKHBhcmVudCkKLSAgICAgICAgICAgIHBhcmVudC0+ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3Nl
dChwcm90ZWN0ZWRBc3NldC5nZXQoKSk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpc3RyZWFtRGF0
YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQYXJzZVN0
cmVhbURhdGFBc0Fzc2V0OihBVkFzc2V0ICopYXNzZXQgd2l0aERpc2NvbnRpbnVpdHk6KEJPT0wp
ZGlzY29udGludWl0eQotewotICAgIFVOVVNFRF9QQVJBTShkaXNjb250aW51aXR5KTsKLSAgICBB
U1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNl
cik7Ci0KLSAgICBSZXRhaW5QdHI8QVZBc3NldD4gcHJvdGVjdGVkQXNzZXQgPSBhc3NldDsKLSAg
ICBjYWxsT25NYWluVGhyZWFkKFtwYXJlbnQgPSBfcGFyZW50LCBwcm90ZWN0ZWRBc3NldCA9IFdU
Rk1vdmUocHJvdGVjdGVkQXNzZXQpXSB7Ci0gICAgICAgIGlmIChwYXJlbnQpCi0gICAgICAgICAg
ICBwYXJlbnQtPmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQocHJvdGVjdGVkQXNzZXQuZ2V0KCkp
OwotICAgIH0pOwotfQotCi0tICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBh
cnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9y
OihOU0Vycm9yICopZXJyb3IKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIs
IHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7Ci0KLSAgICBSZXRhaW5QdHI8TlNFcnJvcj4g
cHJvdGVjdGVkRXJyb3IgPSBlcnJvcjsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwYXJlbnQgPSBf
cGFyZW50LCBwcm90ZWN0ZWRFcnJvciA9IFdURk1vdmUocHJvdGVjdGVkRXJyb3IpXSB7Ci0gICAg
ICAgIGlmIChwYXJlbnQpCi0gICAgICAgICAgICBwYXJlbnQtPmRpZEZhaWxUb1BhcnNlU3RyZWFt
RGF0YVdpdGhFcnJvcihwcm90ZWN0ZWRFcnJvci5nZXQoKSk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZv
aWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNl
ciBkaWRQcm92aWRlTWVkaWFEYXRhOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGUgZm9yVHJhY2tJ
RDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lEIG1lZGlhVHlwZTooTlNTdHJpbmcgKiluc01l
ZGlhVHlwZSBmbGFnczooQVZTdHJlYW1EYXRhUGFyc2VyT3V0cHV0TWVkaWFEYXRhRmxhZ3MpZmxh
Z3MKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJz
ZXIgPT0gX3BhcnNlcik7Ci0KLSAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHByb3Rl
Y3RlZFNhbXBsZSA9IHNhbXBsZTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwYXJlbnQgPSBfcGFy
ZW50LCBwcm90ZWN0ZWRTYW1wbGUgPSBXVEZNb3ZlKHByb3RlY3RlZFNhbXBsZSksIHRyYWNrSUQs
IG1lZGlhVHlwZSA9IFN0cmluZyhuc01lZGlhVHlwZSksIGZsYWdzXSB7Ci0gICAgICAgIGlmIChw
YXJlbnQpCi0gICAgICAgICAgICBwYXJlbnQtPmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lE
KHRyYWNrSUQsIHByb3RlY3RlZFNhbXBsZS5nZXQoKSwgbWVkaWFUeXBlLCBmbGFncyk7Ci0gICAg
fSk7Ci19Ci0KLS0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICop
c3RyZWFtRGF0YVBhcnNlciBkaWRSZWFjaEVuZE9mVHJhY2tXaXRoVHJhY2tJRDooQ01QZXJzaXN0
ZW50VHJhY2tJRCl0cmFja0lEIG1lZGlhVHlwZTooTlNTdHJpbmcgKiluc01lZGlhVHlwZQotewot
ICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBf
cGFyc2VyKTsKLQotICAgIGNhbGxPbk1haW5UaHJlYWQoW3BhcmVudCA9IF9wYXJlbnQsIHRyYWNr
SUQsIG1lZGlhVHlwZSA9IFN0cmluZyhuc01lZGlhVHlwZSldIHsKLSAgICAgICAgaWYgKHBhcmVu
dCkKLSAgICAgICAgICAgIHBhcmVudC0+ZGlkUmVhY2hFbmRPZlRyYWNrV2l0aFRyYWNrSUQodHJh
Y2tJRCwgbWVkaWFUeXBlKTsKLSAgICB9KTsKLX0KLQotQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfQkVHSU4KLS0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcldpbGxQcm92aWRlQ29udGVu
dEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGE6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVh
bURhdGFQYXJzZXIgZm9yVHJhY2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lECi1BTExP
V19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHN0
cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7Ci0KLSAgICAvLyBX
ZSBtdXN0IGNhbGwgc3luY2hyb25vdXNseSB0byB0aGUgbWFpbiB0aHJlYWQsIGFzIHRoZSBBVlN0
cmVhbVNlc3Npb24gbXVzdCBiZSBhc3NvY2lhdGVkCi0gICAgLy8gd2l0aCB0aGUgc3RyZWFtRGF0
YVBhcnNlciBiZWZvcmUgdGhlIGRlbGVnYXRlIG1ldGhvZCByZXR1cm5zLgotICAgIEJveDxCaW5h
cnlTZW1hcGhvcmU+IHJlc3BvbmRlZFNlbWFwaG9yZSA9IEJveDxCaW5hcnlTZW1hcGhvcmU+Ojpj
cmVhdGUoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwYXJlbnQgPSBfcGFyZW50LCB0cmFja0lE
LCByZXNwb25kZWRTZW1hcGhvcmVdKCkgewotICAgICAgICBpZiAocGFyZW50KQotICAgICAgICAg
ICAgcGFyZW50LT53aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRCh0cmFja0lEKTsKLSAgICAgICAgcmVzcG9uZGVkU2VtYXBob3JlLT5zaWduYWwo
KTsKLSAgICB9KTsKLQotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGlmIChyZXNwb25kZWRT
ZW1hcGhvcmUtPndhaXRGb3IoMTAwX21zKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICBpZiAoX2Fib3J0U2VtYXBob3JlLT53YWl0Rm9yKDEwMF9tcykpIHsKLSAgICAgICAgICAgIF9h
Ym9ydFNlbWFwaG9yZS0+c2lnbmFsKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICB9Ci19Ci0KLUFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCi0tICh2
b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJz
ZXIgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOihOU0RhdGEg
Kilpbml0RGF0YSBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQKLUFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAotewotICAgIEFTU0VSVF9VTlVTRUQoc3Ry
ZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLQotICAgIEJveDxC
aW5hcnlTZW1hcGhvcmU+IGhhc1Nlc3Npb25TZW1hcGhvcmUgPSBCb3g8QmluYXJ5U2VtYXBob3Jl
Pjo6Y3JlYXRlKCk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcGFyZW50ID0gX3BhcmVudCwgcHJv
dGVjdGVkSW5pdERhdGEgPSBSZXRhaW5QdHI8TlNEYXRhPihpbml0RGF0YSksIHRyYWNrSUQsIGhh
c1Nlc3Npb25TZW1hcGhvcmVdIHsKLSAgICAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAgIHBh
cmVudC0+ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJh
Y2tJRChwcm90ZWN0ZWRJbml0RGF0YS5nZXQoKSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNlbWFwaG9y
ZSk7Ci0gICAgfSk7Ci0KLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBpZiAoaGFzU2Vzc2lv
blNlbWFwaG9yZS0+d2FpdEZvcigxMDBfbXMpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIGlmIChfYWJvcnRTZW1hcGhvcmUtPndhaXRGb3IoMTAwX21zKSkgewotICAgICAgICAgICAg
X2Fib3J0U2VtYXBob3JlLT5zaWduYWwoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgIH0KLX0KLUBlbmQKLQogQGludGVyZmFjZSBXZWJBVlNhbXBsZUJ1ZmZlckVycm9yTGlz
dGVuZXIgOiBOU09iamVjdCB7CiAgICAgV2Vha1B0cjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQz4gX3BhcmVudDsKICAgICBWZWN0b3I8UmV0YWluUHRyPEFWU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyPj4gX2xheWVyczsKQEAgLTM5MSw0MyArMjQ1LDYgQEAgQGVuZAogbmFtZXNw
YWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIFBBTDsKIAotI3ByYWdtYSBtYXJrIC0KLSNw
cmFnbWEgbWFyayBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQwotCi1jbGFzcyBNZWRpYURlc2NyaXB0
aW9uQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBNZWRpYURlc2NyaXB0aW9uIHsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNr
KiB0cmFjaykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyh0
cmFjaykpOyB9Ci0gICAgdmlydHVhbCB+TWVkaWFEZXNjcmlwdGlvbkFWRk9iakMoKSB7IH0KLQot
ICAgIEF0b21TdHJpbmcgY29kZWMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvZGVjOyB9
Ci0gICAgYm9vbCBpc1ZpZGVvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1ZpZGVvOyB9
Ci0gICAgYm9vbCBpc0F1ZGlvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0F1ZGlvOyB9
Ci0gICAgYm9vbCBpc1RleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzVGV4dDsgfQot
ICAgIAotcHJpdmF0ZToKLSAgICBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyhBVkFzc2V0VHJhY2sq
IHRyYWNrKQotICAgICAgICA6IG1faXNWaWRlbyhbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3Rp
YzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWxdKQotICAgICAgICAsIG1faXNBdWRpbyhbdHJh
Y2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNBdWRpYmxlXSkK
LSAgICAgICAgLCBtX2lzVGV4dChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlh
Q2hhcmFjdGVyaXN0aWNMZWdpYmxlXSkKLSAgICB7Ci0gICAgICAgIE5TQXJyYXkqIGZvcm1hdERl
c2NyaXB0aW9ucyA9IFt0cmFjayBmb3JtYXREZXNjcmlwdGlvbnNdOwotICAgICAgICBDTUZvcm1h
dERlc2NyaXB0aW9uUmVmIGRlc2NyaXB0aW9uID0gW2Zvcm1hdERlc2NyaXB0aW9ucyBjb3VudF0g
PyAoX19icmlkZ2UgQ01Gb3JtYXREZXNjcmlwdGlvblJlZilbZm9ybWF0RGVzY3JpcHRpb25zIG9i
amVjdEF0SW5kZXg6MF0gOiAwOwotICAgICAgICBpZiAoZGVzY3JpcHRpb24pIHsKLSAgICAgICAg
ICAgIEZvdXJDaGFyQ29kZSBjb2RlYyA9IENNRm9ybWF0RGVzY3JpcHRpb25HZXRNZWRpYVN1YlR5
cGUoZGVzY3JpcHRpb24pOwotICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgb3JpZ2luYWxGb3JtYXRL
ZXkgPSBQQUw6OmNhbkxvYWRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9u
X1Byb3RlY3RlZENvbnRlbnRPcmlnaW5hbEZvcm1hdCgpID8gUEFMOjpnZXRfQ29yZU1lZGlhX2tD
TUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1Byb3RlY3RlZENvbnRlbnRPcmlnaW5hbEZvcm1h
dCgpIDogQ0ZTVFIoIkNvbW1vbkVuY3J5cHRpb25PcmlnaW5hbEZvcm1hdCIpOwotICAgICAgICAg
ICAgQ0ZUeXBlUmVmIG9yaWdpbmFsRm9ybWF0ID0gQ01Gb3JtYXREZXNjcmlwdGlvbkdldEV4dGVu
c2lvbihkZXNjcmlwdGlvbiwgb3JpZ2luYWxGb3JtYXRLZXkpOwotICAgICAgICAgICAgaWYgKG9y
aWdpbmFsRm9ybWF0ICYmIENGR2V0VHlwZUlEKG9yaWdpbmFsRm9ybWF0KSA9PSBDRk51bWJlckdl
dFR5cGVJRCgpKQotICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUoKENGTnVtYmVyUmVm
KW9yaWdpbmFsRm9ybWF0LCBrQ0ZOdW1iZXJTSW50MzJUeXBlLCAmY29kZWMpOwotICAgICAgICAg
ICAgbV9jb2RlYyA9IEF0b21TdHJpbmcocmVpbnRlcnByZXRfY2FzdDxMQ2hhcio+KCZjb2RlYyks
IDQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQXRvbVN0cmluZyBtX2NvZGVjOwotICAgIGJv
b2wgbV9pc1ZpZGVvOwotICAgIGJvb2wgbV9pc0F1ZGlvOwotICAgIGJvb2wgbV9pc1RleHQ7Ci19
OwotCiAjcHJhZ21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDCiAKQEAgLTQ2NSwxNCArMjgyLDEzIEBAIHN0YXRpYyB2b2lkIGJ1ZmZlcldhc0NvbnN1bWVk
Q2FsbGJhY2soQ01Ob3RpZmljYXRpb25DZW50ZXJSZWYsIGNvbnN0IHZvaWQqIGxpc3RlCiAgICAg
ICAgIHNvdXJjZUJ1ZmZlci0+YnVmZmVyV2FzQ29uc3VtZWQoKTsKIH0KIAotUmVmPFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDPiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKE1l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKK1JlZjxTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQz4gU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZShNZWRpYVNvdXJjZVBy
aXZhdGVBVkZPYmpDKiBwYXJlbnQsIFJlZjxTb3VyY2VCdWZmZXJQYXJzZXI+JiYgcGFyc2VyKQog
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKHBh
cmVudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDKHBhcmVudCwgV1RGTW92ZShwYXJzZXIpKSk7CiB9CiAKLVNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVBVkZP
YmpDKiBwYXJlbnQpCi0gICAgOiBtX3BhcnNlcihhZG9wdE5TKFtQQUw6OmFsbG9jQVZTdHJlYW1E
YXRhUGFyc2VySW5zdGFuY2UoKSBpbml0XSkpCi0gICAgLCBtX2RlbGVnYXRlKGFkb3B0TlMoW1tX
ZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJzZXI6bV9wYXJz
ZXIuZ2V0KCkgcGFyZW50Om1ha2VXZWFrUHRyKCp0aGlzKV0pKQorU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMqIHBhcmVudCwgUmVmPFNvdXJjZUJ1ZmZlclBhcnNlcj4mJiBwYXJzZXIpCisgICAgOiBt
X3BhcnNlcihXVEZNb3ZlKHBhcnNlcikpCiAgICAgLCBtX2Vycm9yTGlzdGVuZXIoYWRvcHROUyhb
W1dlYkFWU2FtcGxlQnVmZmVyRXJyb3JMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6bWFr
ZVdlYWtQdHIoKnRoaXMpXSkpCiAgICAgLCBtX2lzQXBwZW5kaW5nR3JvdXAoYWRvcHRPU09iamVj
dChkaXNwYXRjaF9ncm91cF9jcmVhdGUoKSkpCiAgICAgLCBtX21lZGlhU291cmNlKHBhcmVudCkK
QEAgLTQ4NiwxMCArMzAyLDI2IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDCiAKICAgICBpZiAo
IVtQQUw6OmdldEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQ2xhc3MoKSBpbnN0YW5jZXNSZXNw
b25kVG9TZWxlY3RvcjpAc2VsZWN0b3IocHJlcm9sbERlY29kZVdpdGhDb21wbGV0aW9uSGFuZGxl
cjopXSkKICAgICAgICAgQ01Ob3RpZmljYXRpb25DZW50ZXJBZGRMaXN0ZW5lcihDTU5vdGlmaWNh
dGlvbkNlbnRlckdldERlZmF1bHRMb2NhbENlbnRlcigpLCByZWludGVycHJldF9jYXN0PHZvaWQq
PihtX21hcElEKSwgYnVmZmVyV2FzQ29uc3VtZWRDYWxsYmFjaywga0NNU2FtcGxlQnVmZmVyQ29u
c3VtZXJOb3RpZmljYXRpb25fQnVmZmVyQ29uc3VtZWQsIG51bGxwdHIsIDApOwotICAgIAotICAg
IG1fZGVsZWdhdGUuZ2V0KCkuYWJvcnRTZW1hcGhvcmUgPSBCb3g8U2VtYXBob3JlPjo6Y3JlYXRl
KDApOwogCiAgICAgc291cmNlQnVmZmVyTWFwKCkuYWRkKG1fbWFwSUQsIG1ha2VXZWFrUHRyKCp0
aGlzKSk7CisKKyAgICBtX3BhcnNlci0+c2V0RGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxs
YmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKEluaXRpYWxpemF0aW9uU2VnbWVu
dCYmIHNlZ21lbnQpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICB3ZWFrVGhpcy0+ZGlkUGFyc2VJbml0
aWFsaXphdGlvbkRhdGEoV1RGTW92ZShzZWdtZW50KSk7CisgICAgfSk7CisKKyAgICBtX3BhcnNl
ci0+c2V0RGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2soW3dlYWtUaGlzID0g
bWFrZVdlYWtQdHIodGhpcyldIChpbnQzMl90IGVycm9yQ29kZSkgbXV0YWJsZSB7CisgICAgICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAg
ICAgIHdlYWtUaGlzLT5kaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmcoZXJyb3JDb2RlKTsK
KyAgICB9KTsKKworICAgIG1fcGFyc2VyLT5zZXREaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2so
W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChSZWY8TWVkaWFTYW1wbGU+JiYgc2FtcGxl
LCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkgbXV0YWJsZSB7Cisg
ICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAg
ICAgICAgICAgIHdlYWtUaGlzLT5kaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChXVEZNb3Zl
KHNhbXBsZSksIHRyYWNrSUQsIG1lZGlhVHlwZSk7CisgICAgfSk7CiB9CiAKIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjp+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoKQpAQCAtNTAwLDYg
KzMzMiw3IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp+U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMoKQogICAgIHNvdXJjZUJ1ZmZlck1hcCgpLnJlbW92ZShtX21hcElEKTsKICAgICBk
ZXN0cm95UGFyc2VyKCk7CiAgICAgZGVzdHJveVJlbmRlcmVycygpOworICAgIGNsZWFyVHJhY2tz
KCk7CiAKICAgICBpZiAoIVtQQUw6OmdldEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQ2xhc3Mo
KSBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3IocHJlcm9sbERlY29kZVdpdGhD
b21wbGV0aW9uSGFuZGxlcjopXSkKICAgICAgICAgQ01Ob3RpZmljYXRpb25DZW50ZXJSZW1vdmVM
aXN0ZW5lcihDTU5vdGlmaWNhdGlvbkNlbnRlckdldERlZmF1bHRMb2NhbENlbnRlcigpLCB0aGlz
LCBidWZmZXJXYXNDb25zdW1lZENhbGxiYWNrLCBrQ01TYW1wbGVCdWZmZXJDb25zdW1lck5vdGlm
aWNhdGlvbl9CdWZmZXJDb25zdW1lZCwgbnVsbHB0cik7CkBAIC01MDgsNyArMzQxLDcgQEAgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6On5Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQygpCiAg
ICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFsKCk7CiB9CiAKLXZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3NldCog
YXNzZXQpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRpYWxp
emF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbnQmJiBzZWdtZW50KQogewogICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUik7CiAKQEAgLTUxNiw1MiArMzQ5LDMzIEBAIHZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3NldCog
YXNzZXQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX21lZGlhU291cmNlLT5wbGF5ZXIo
KS0+c2hvdWxkQ2hlY2tIYXJkd2FyZVN1cHBvcnQoKSkgewotICAgICAgICBmb3IgKEFWQXNzZXRU
cmFjayAqdHJhY2sgaW4gW2Fzc2V0IHRyYWNrc10pIHsKLSAgICAgICAgICAgIGlmICghYXNzZXRU
cmFja01lZXRzSGFyZHdhcmVEZWNvZGVSZXF1aXJlbWVudHModHJhY2ssIG1fbWVkaWFTb3VyY2Ut
PnBsYXllcigpLT5tZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgpKSkg
eworICAgICAgICBmb3IgKGF1dG8mIGluZm8gOiBzZWdtZW50LnZpZGVvVHJhY2tzKSB7CisgICAg
ICAgICAgICBhdXRvIGNvZGVjID0gRm91ckNDOjpmcm9tU3RyaW5nKGluZm8uZGVzY3JpcHRpb24t
PmNvZGVjKCkpOworICAgICAgICAgICAgaWYgKCFjb2RlYykKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIGlmICghY29kZWNzTWVldEhhcmR3YXJlRGVjb2RlUmVxdWlyZW1l
bnRzKHt7ICpjb2RlYyB9fSwgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPm1lZGlhQ29udGVudFR5
cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KCkpKSB7CiAgICAgICAgICAgICAgICAgbV9wYXJz
aW5nU3VjY2VlZGVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9hc3NldCA9IGFzc2V0OwotCi0gICAgbV92
aWRlb1RyYWNrcy5jbGVhcigpOwotICAgIG1fYXVkaW9UcmFja3MuY2xlYXIoKTsKLQotICAgIG1f
ZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlvblNlZ21lbnQgPSBmYWxzZTsKLQot
ICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudCBzZWdt
ZW50OwotCi0gICAgaWYgKFttX2Fzc2V0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob3Zl
cmFsbER1cmF0aW9uSGludCldKQotICAgICAgICBzZWdtZW50LmR1cmF0aW9uID0gUEFMOjp0b01l
ZGlhVGltZShbbV9hc3NldCBvdmVyYWxsRHVyYXRpb25IaW50XSk7Ci0KLSAgICBpZiAoc2VnbWVu
dC5kdXJhdGlvbi5pc0ludmFsaWQoKSB8fCBzZWdtZW50LmR1cmF0aW9uID09IE1lZGlhVGltZTo6
emVyb1RpbWUoKSkKLSAgICAgICAgc2VnbWVudC5kdXJhdGlvbiA9IFBBTDo6dG9NZWRpYVRpbWUo
W21fYXNzZXQgZHVyYXRpb25dKTsKLQotICAgIGZvciAoQVZBc3NldFRyYWNrKiB0cmFjayBpbiBb
bV9hc3NldCB0cmFja3NdKSB7Ci0gICAgICAgIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJp
c3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlXSkgewotICAgICAgICAgICAgLy8gRklY
TUUoMTI1MTYxKTogSGFuZGxlIGluLWJhbmQgdGV4dCB0cmFja3MuCi0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgfQorICAgIGNsZWFyVHJhY2tzKCk7CiAKLSAgICAgICAgaWYgKFt0cmFj
ayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbF0pIHsK
LSAgICAgICAgICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2Vn
bWVudDo6VmlkZW9UcmFja0luZm9ybWF0aW9uIGluZm87Ci0gICAgICAgICAgICBhdXRvIHZpZGVv
VHJhY2sgPSBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNr
LCB0aGlzKTsKLSAgICAgICAgICAgIGluZm8udHJhY2sgPSB2aWRlb1RyYWNrLmNvcHlSZWYoKTsK
LSAgICAgICAgICAgIG1fdmlkZW9UcmFja3MuYXBwZW5kKFdURk1vdmUodmlkZW9UcmFjaykpOwot
ICAgICAgICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDOjpj
cmVhdGUodHJhY2spOwotICAgICAgICAgICAgc2VnbWVudC52aWRlb1RyYWNrcy5hcHBlbmQoaW5m
byk7Ci0gICAgICAgIH0gZWxzZSBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZN
ZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJsZV0pIHsKLSAgICAgICAgICAgIFNvdXJjZUJ1ZmZlclBy
aXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDo6QXVkaW9UcmFja0luZm9ybWF0aW9u
IGluZm87Ci0gICAgICAgICAgICBhdXRvIGF1ZGlvVHJhY2sgPSBBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNrLCB0aGlzKTsKLSAgICAgICAgICAgIGluZm8u
dHJhY2sgPSBhdWRpb1RyYWNrLmNvcHlSZWYoKTsKLSAgICAgICAgICAgIG1fYXVkaW9UcmFja3Mu
YXBwZW5kKFdURk1vdmUoYXVkaW9UcmFjaykpOwotICAgICAgICAgICAgaW5mby5kZXNjcmlwdGlv
biA9IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDOjpjcmVhdGUodHJhY2spOwotICAgICAgICAgICAg
c2VnbWVudC5hdWRpb1RyYWNrcy5hcHBlbmQoaW5mbyk7Ci0gICAgICAgIH0KKyAgICBmb3IgKGF1
dG8gdmlkZW9UcmFja0luZm8gOiBzZWdtZW50LnZpZGVvVHJhY2tzKSB7CisgICAgICAgIHZpZGVv
VHJhY2tJbmZvLnRyYWNrLT5zZXRTZWxlY3RlZENoYW5nZWRDYWxsYmFjayhbd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cih0aGlzKV0gKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjaywgYm9vbCBzZWxlY3Rl
ZCkgeworICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlz
LT50cmFja0RpZENoYW5nZVNlbGVjdGVkKHRyYWNrLCBzZWxlY3RlZCk7CisgICAgICAgIH0pOwor
ICAgICAgICBtX3ZpZGVvVHJhY2tzLmFwcGVuZCh2aWRlb1RyYWNrSW5mby50cmFjayk7CisgICAg
fQogCi0gICAgICAgIC8vIEZJWE1FKDEyNTE2MSk6IEFkZCBUZXh0VHJhY2sgc3VwcG9ydAorICAg
IGZvciAoYXV0byBhdWRpb1RyYWNrSW5mbyA6IHNlZ21lbnQuYXVkaW9UcmFja3MpIHsKKyAgICAg
ICAgYXVkaW9UcmFja0luZm8udHJhY2stPnNldEVuYWJsZWRDaGFuZ2VkQ2FsbGJhY2soW3dlYWtU
aGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChBdWRpb1RyYWNrUHJpdmF0ZSYgdHJhY2ssIGJvb2wg
ZW5hYmxlZCkgeworICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdl
YWtUaGlzLT50cmFja0RpZENoYW5nZUVuYWJsZWQodHJhY2ssIGVuYWJsZWQpOworICAgICAgICB9
KTsKKyAgICAgICAgbV9hdWRpb1RyYWNrcy5hcHBlbmQoYXVkaW9UcmFja0luZm8udHJhY2spOwog
ICAgIH0KIAogICAgIGlmIChtX21lZGlhU291cmNlKQpAQCAtNTcxLDYxICszODUsMjkgQEAgdm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChB
VkFzc2V0KiBhc3NldCkKICAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRS
ZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KHNlZ21lbnQpOwogfQogCi12b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRGYWlsVG9QYXJzZVN0cmVhbURhdGFXaXRoRXJyb3IoTlNF
cnJvciAqZXJyb3IpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRFbmNvdW50
ZXJFcnJvckR1cmluZ1BhcnNpbmcoaW50MzJfdCBjb2RlKQogewogI2lmIExPR19ESVNBQkxFRAog
ICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAjZW5kaWYKLSAgICBFUlJPUl9MT0coTE9HSURFTlRJ
RklFUiwgW1tlcnJvciBkZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10pOworICAgIEVSUk9SX0xPRyhM
T0dJREVOVElGSUVSLCBjb2RlKTsKIAogICAgIG1fcGFyc2luZ1N1Y2NlZWRlZCA9IGZhbHNlOwog
fQogCi1zdHJ1Y3QgUHJvY2Vzc0NvZGVkRnJhbWVJbmZvIHsKLSAgICBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQyogc291cmNlQnVmZmVyOwotICAgIGludCB0cmFja0lEOwotICAgIGNvbnN0IFN0
cmluZyYgbWVkaWFUeXBlOwotfTsKLQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoaW50IHRyYWNrSUQsIENNU2FtcGxlQnVmZmVy
UmVmIHNhbXBsZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkKQordm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNr
SUQoUmVmPE1lZGlhU2FtcGxlPiYmIG1lZGlhU2FtcGxlLCBpbnQzMl90IHRyYWNrSUQsIGNvbnN0
IFN0cmluZyYgbWVkaWFUeXBlKQogewotICAgIHByb2Nlc3NDb2RlZEZyYW1lKHRyYWNrSUQsIHNh
bXBsZUJ1ZmZlciwgbWVkaWFUeXBlKTsKLX0KKyAgICBVTlVTRURfUEFSQU0obWVkaWFUeXBlKTsK
IAotYm9vbCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6cHJvY2Vzc0NvZGVkRnJhbWUoaW50
IHRyYWNrSUQsIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgY29uc3QgU3RyaW5nJikK
LXsKICAgICBpZiAodHJhY2tJRCAhPSBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgJiYgIW1fYXVkaW9S
ZW5kZXJlcnMuY29udGFpbnModHJhY2tJRCkpIHsKICAgICAgICAgLy8gRklYTUUoMTI1MTYxKTog
V2UgZG9uJ3QgaGFuZGxlIHRleHQgdHJhY2tzLCBhbmQgcGFzc2luZyB0aGlzIHNhbXBsZSB1cCB0
byBTb3VyY2VCdWZmZXIKICAgICAgICAgLy8gd2lsbCBqdXN0IGNvbmZ1c2UgaXRzIHN0YXRlLiBE
cm9wIHRoaXMgc2FtcGxlIHVudGlsIHdlIGNhbiBoYW5kbGUgdGV4dCB0cmFja3MgcHJvcGVybHku
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
IChtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50KQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIW1fY2xpZW50KQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgIGF1dG8gbWVkaWFTYW1wbGUgPSBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZShz
YW1wbGVCdWZmZXIsIHRyYWNrSUQpOwotCi0gICAgaWYgKG1lZGlhU2FtcGxlLT5pc0hvbW9nZW5l
b3VzKCkpIHsKLSAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsIG1lZGlhU2FtcGxlLT50
b0pTT05TdHJpbmcoKSk7CisgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsIG1lZGlhU2FtcGxl
LT50b0pTT05TdHJpbmcoKSk7CisgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUobWVkaWFTYW1wbGUpOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBhdXRvIG1lZGlhU2FtcGxlcyA9IG1lZGlhU2Ft
cGxlLT5kaXZpZGVJbnRvSG9tb2dlbmVvdXNTYW1wbGVzKCk7Ci0gICAgZm9yIChhdXRvJiBzYW1w
bGUgOiBtZWRpYVNhbXBsZXMpIHsKLSAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsIHNh
bXBsZS0+dG9KU09OU3RyaW5nKCkpOwotICAgICAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJp
dmF0ZURpZFJlY2VpdmVTYW1wbGUoc2FtcGxlKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUmVhY2hFbmRPZlRyYWNr
V2l0aFRyYWNrSUQoaW50LCBjb25zdCBTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OndpbGxQcm92aWRlQ29udGVu
dEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKGludCB0cmFja0lEKQpAQCAt
NjMzLDE4ICs0MTUsMjAgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6d2lsbFBy
b3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUYKICAgICBpZiAoIW1fbWVk
aWFTb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX3BhcnNlcik7Ci0KICNp
ZiBIQVZFKEFWU1RSRUFNU0VTU0lPTikgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEp
CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAidHJhY2sgPSAiLCB0cmFja0lEKTsKIAog
ICAgIG1fcHJvdGVjdGVkVHJhY2tJRCA9IHRyYWNrSUQ7CiAKKyAgICBhdXRvIHBhcnNlciA9IHRo
aXMtPnBhcnNlcigpOworICAgIGlmICghcGFyc2VyKQorICAgICAgICByZXR1cm47CisKICAgICBp
ZiAoQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyogc2Vzc2lvbiA9IG1fbWVkaWFTb3VyY2Ut
PnBsYXllcigpLT5jZG1TZXNzaW9uKCkpCi0gICAgICAgIHNlc3Npb24tPmFkZFBhcnNlcihtX3Bh
cnNlci5nZXQoKSk7CisgICAgICAgIHNlc3Npb24tPmFkZFBhcnNlcihwYXJzZXIpOwogICAgIGVs
c2UgaWYgKCFDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6aXNBdmFpbGFibGUoKSkgewog
ICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgW21fbWVkaWFTb3Vy
Y2UtPnBsYXllcigpLT5zdHJlYW1TZXNzaW9uKCkgYWRkU3RyZWFtRGF0YVBhcnNlcjptX3BhcnNl
ci5nZXQoKV07CisgICAgICAgIFttX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c3RyZWFtU2Vzc2lv
bigpIGFkZFN0cmVhbURhdGFQYXJzZXI6cGFyc2VyXTsKICAgICAgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwogICAgIH0KICNlbHNlCkBAIC02NTIsNyArNDM2LDcgQEAgdm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxp
emF0aW9uRGF0YUYKICNlbmRpZgogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lE
KE5TRGF0YSogaW5pdERhdGEsIGludCB0cmFja0lELCBCb3g8QmluYXJ5U2VtYXBob3JlPiBoYXNT
ZXNzaW9uU2VtYXBob3JlKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJv
dmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChSZWY8VWlu
dDhBcnJheT4mJiBpbml0RGF0YSwgaW50IHRyYWNrSUQsIEJveDxCaW5hcnlTZW1hcGhvcmU+IGhh
c1Nlc3Npb25TZW1hcGhvcmUpCiB7CiAgICAgaWYgKCFtX21lZGlhU291cmNlKQogICAgICAgICBy
ZXR1cm47CkBAIC02NjEsMTEgKzQ0NSwxMSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGbwogICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInRyYWNrID0gIiwgdHJhY2tJRCk7CiAKICAgICBt
X3Byb3RlY3RlZFRyYWNrSUQgPSB0cmFja0lEOwotICAgIG1faW5pdERhdGEgPSBVaW50OEFycmF5
OjpjcmVhdGUoW2luaXREYXRhIGxlbmd0aF0pOwotICAgIFtpbml0RGF0YSBnZXRCeXRlczptX2lu
aXREYXRhLT5kYXRhKCkgbGVuZ3RoOm1faW5pdERhdGEtPmxlbmd0aCgpXTsKKyAgICBtX2luaXRE
YXRhID0gV1RGTW92ZShpbml0RGF0YSk7CiAgICAgbV9tZWRpYVNvdXJjZS0+c291cmNlQnVmZmVy
S2V5TmVlZGVkKHRoaXMsIG1faW5pdERhdGEuZ2V0KCkpOwogICAgIGlmIChhdXRvIHNlc3Npb24g
PSBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+Y2RtU2Vzc2lvbigpKSB7Ci0gICAgICAgIHNlc3Np
b24tPmFkZFBhcnNlcihtX3BhcnNlci5nZXQoKSk7CisgICAgICAgIGlmIChhdXRvIHBhcnNlciA9
IHRoaXMtPnBhcnNlcigpKQorICAgICAgICAgICAgc2Vzc2lvbi0+YWRkUGFyc2VyKHBhcnNlcik7
CiAgICAgICAgIGhhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtNjc2LDE0ICs0NjAsMTUgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KICAg
ICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUgPSBoYXNTZXNzaW9uU2VtYXBob3JlOwogICAgIAogI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKLSAg
ICBhdXRvIGluaXREYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW5pdERhdGEpOwor
ICAgIGF1dG8gaW5pdERhdGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS0+
ZGF0YSgpLCBpbml0RGF0YS0+Ynl0ZUxlbmd0aCgpKTsKICAgICBhdXRvIGtleUlEcyA9IENETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoaW5pdERhdGFCdWZmZXIp
OwogICAgIGlmICgha2V5SURzKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9jZG1JbnN0
YW5jZSkgewogICAgICAgICBpZiAoYXV0byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUluc3RhbmNl
LT5zZXNzaW9uRm9yS2V5SURzKGtleUlEcy52YWx1ZSgpKSkgewotICAgICAgICAgICAgW2luc3Rh
bmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50Om1f
cGFyc2VyLmdldCgpXTsKKyAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlciA9IHRoaXMtPnBhcnNl
cigpKQorICAgICAgICAgICAgICAgIFtpbnN0YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNzaW9u
KCkgYWRkQ29udGVudEtleVJlY2lwaWVudDpwYXJzZXJdOwogICAgICAgICAgICAgaWYgKG1faGFz
U2Vzc2lvblNlbWFwaG9yZSkgewogICAgICAgICAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9y
ZS0+c2lnbmFsKCk7CiAgICAgICAgICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlID0gbnVs
bHB0cjsKQEAgLTcyNCwxNiArNTA5LDU0IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQogewogICAgIERFQlVHX0xP
RyhMT0dJREVOVElGSUVSLCAiZGF0YSBsZW5ndGggPSAiLCBkYXRhLnNpemUoKSk7CiAKKyAgICBB
U1NFUlQoIW1faGFzU2Vzc2lvblNlbWFwaG9yZSk7CisgICAgQVNTRVJUKCFtX2Fib3J0U2VtYXBo
b3JlKTsKKworICAgIG1fYWJvcnRTZW1hcGhvcmUgPSBCb3g8U2VtYXBob3JlPjo6Y3JlYXRlKDAp
OworICAgIG1fcGFyc2VyLT5zZXRXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6
YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMp
LCBhYm9ydFNlbWFwaG9yZSA9IG1fYWJvcnRTZW1hcGhvcmVdICh1aW50MzJfdCB0cmFja0lEKSBt
dXRhYmxlIHsKKyAgICAgICAgLy8gV2UgbXVzdCBjYWxsIHN5bmNocm9ub3VzbHkgdG8gdGhlIG1h
aW4gdGhyZWFkLCBhcyB0aGUgQVZTdHJlYW1TZXNzaW9uIG11c3QgYmUgYXNzb2NpYXRlZAorICAg
ICAgICAvLyB3aXRoIHRoZSBzdHJlYW1EYXRhUGFyc2VyIGJlZm9yZSB0aGUgZGVsZWdhdGUgbWV0
aG9kIHJldHVybnMuCisgICAgICAgIEJveDxCaW5hcnlTZW1hcGhvcmU+IHJlc3BvbmRlZFNlbWFw
aG9yZSA9IEJveDxCaW5hcnlTZW1hcGhvcmU+OjpjcmVhdGUoKTsKKyAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgdHJhY2tJRCwgcmVzcG9uZGVk
U2VtYXBob3JlXSgpIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAg
ICB3ZWFrVGhpcy0+d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0
YUZvclRyYWNrSUQodHJhY2tJRCk7CisgICAgICAgICAgICByZXNwb25kZWRTZW1hcGhvcmUtPnNp
Z25hbCgpOworICAgICAgICB9KTsKKworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAg
ICAgaWYgKHJlc3BvbmRlZFNlbWFwaG9yZS0+d2FpdEZvcigxMDBfbXMpKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYgKGFib3J0U2VtYXBob3JlLT53YWl0Rm9yKDEw
MF9tcykpIHsKKyAgICAgICAgICAgICAgICBhYm9ydFNlbWFwaG9yZS0+c2lnbmFsKCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSk7CisK
KyAgICBtX3BhcnNlci0+c2V0RGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm9yVHJhY2tJRENhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBh
Ym9ydFNlbWFwaG9yZSA9IG1fYWJvcnRTZW1hcGhvcmVdIChSZWY8VWludDhBcnJheT4mJiBpbml0
RGF0YSwgaW50MzJfdCB0cmFja0lEKSBtdXRhYmxlIHsKKyAgICAgICAgQm94PEJpbmFyeVNlbWFw
aG9yZT4gaGFzU2Vzc2lvblNlbWFwaG9yZSA9IEJveDxCaW5hcnlTZW1hcGhvcmU+OjpjcmVhdGUo
KTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlz
KSwgaW5pdERhdGEgPSBXVEZNb3ZlKGluaXREYXRhKSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNlbWFw
aG9yZV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAg
ICAgICAgd2Vha1RoaXMtPmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9u
RGF0YUZvclRyYWNrSUQoV1RGTW92ZShpbml0RGF0YSksIHRyYWNrSUQsIGhhc1Nlc3Npb25TZW1h
cGhvcmUpOworICAgICAgICB9KTsKKworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAg
ICAgaWYgKGhhc1Nlc3Npb25TZW1hcGhvcmUtPndhaXRGb3IoMTAwX21zKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlmIChhYm9ydFNlbWFwaG9yZS0+d2FpdEZvcigx
MDBfbXMpKSB7CisgICAgICAgICAgICAgICAgYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pOwor
CiAgICAgbV9wYXJzaW5nU3VjY2VlZGVkID0gdHJ1ZTsKICAgICBkaXNwYXRjaF9ncm91cF9lbnRl
cihtX2lzQXBwZW5kaW5nR3JvdXAuZ2V0KCkpOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMoZ2xvYmFs
RGF0YVBhcnNlclF1ZXVlKCksIFtkYXRhID0gV1RGTW92ZShkYXRhKSwgd2Vha1RoaXMgPSBtX2Fw
cGVuZFdlYWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKnRoaXMpLCBwYXJzZXIgPSBtX3BhcnNlciwg
ZGVsZWdhdGUgPSBtX2RlbGVnYXRlLCBpc0FwcGVuZGluZ0dyb3VwID0gbV9pc0FwcGVuZGluZ0dy
b3VwLCBwYXJzZXJTdGF0ZVdhc1Jlc2V0ID0gbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0XSAoKSBtdXRh
YmxlIHsKLSAgICAgICAgYXV0byBzaGFyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShkYXRhKSk7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkRGF0YS0+Y3JlYXRlTlNE
YXRhKCk7Ci0gICAgICAgIGlmIChwYXJzZXJTdGF0ZVdhc1Jlc2V0KQotICAgICAgICAgICAgW3Bh
cnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRh
UGFyc2VyU3RyZWFtRGF0YURpc2NvbnRpbnVpdHldOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBbcGFyc2VyIGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpXTsKKyAgICBkaXNwYXRjaF9h
c3luYyhnbG9iYWxEYXRhUGFyc2VyUXVldWUoKSwgW2RhdGEgPSBXVEZNb3ZlKGRhdGEpLCB3ZWFr
VGhpcyA9IG1fYXBwZW5kV2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyksIHBhcnNlciA9
IG1fcGFyc2VyLCBpc0FwcGVuZGluZ0dyb3VwID0gbV9pc0FwcGVuZGluZ0dyb3VwXSAoKSBtdXRh
YmxlIHsKKyAgICAgICAgcGFyc2VyLT5hcHBlbmREYXRhKFdURk1vdmUoZGF0YSkpOwogCiAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzXSB7CiAgICAgICAgICAgICBpZiAod2Vha1Ro
aXMpCkBAIC03NDEsMTEgKzU2NCwyMCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjphcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgZGF0YSkKICAgICAgICAgfSk7CiAgICAg
ICAgIGRpc3BhdGNoX2dyb3VwX2xlYXZlKGlzQXBwZW5kaW5nR3JvdXAuZ2V0KCkpOwogICAgIH0p
OwotICAgIG1fcGFyc2VyU3RhdGVXYXNSZXNldCA9IGZhbHNlOwogfQogCiB2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmRDb21wbGV0ZWQoKQogeworICAgIGlmIChtX2Fib3J0
U2VtYXBob3JlKSB7CisgICAgICAgIG1fYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAg
ICBtX2Fib3J0U2VtYXBob3JlID0gbmlsOworICAgIH0KKworICAgIGlmIChtX2hhc1Nlc3Npb25T
ZW1hcGhvcmUpIHsKKyAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKKyAg
ICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlID0gbmlsOworICAgIH0KKwogICAgIGlmIChtX3Bh
cnNpbmdTdWNjZWVkZWQgJiYgbV9tZWRpYVNvdXJjZSkKICAgICAgICAgbV9tZWRpYVNvdXJjZS0+
cGxheWVyKCktPnNldExvYWRpbmdQcm9ncmVzc3NlZCh0cnVlKTsKIApAQCAtNzYwLDM5ICs1OTIs
MzkgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YWJvcnQoKQogICAgIC8vIFRo
ZSBwYXJzaW5nIHF1ZXVlIG1heSBiZSBibG9ja2VkIHdhaXRpbmcgZm9yIHRoZSBtYWluIHRocmVh
ZCB0byBwcm92aWRlIGl0IGEgQVZTdHJlYW1TZXNzaW9uLiBXZQogICAgIC8vIHdlcmUgYXNrZWQg
dG8gYWJvcnQsIGFuZCB0aGF0IGNhbmNlbHMgYWxsIG91dHN0YW5kaW5nIGFwcGVuZCBvcGVyYXRp
b25zLiBXaXRob3V0IGNhbmNlbGxpbmcgdGhpcwogICAgIC8vIHNlbWFwaG9yZSwgdGhlIG1faXNB
cHBlbmRpbmdHcm91cCB3YWl0IG9wZXJhdGlvbiB3aWxsIGRlYWRsb2NrLgotICAgIGlmIChtX2hh
c1Nlc3Npb25TZW1hcGhvcmUpCisgICAgaWYgKG1faGFzU2Vzc2lvblNlbWFwaG9yZSkgewogICAg
ICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwotICAgIG1fZGVsZWdhdGUuZ2V0
KCkuYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhv
cmUgPSBudWxscHRyOworICAgIH0KKyAgICBpZiAobV9hYm9ydFNlbWFwaG9yZSkgeworICAgICAg
ICBtX2Fib3J0U2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICAgICAgbV9hYm9ydFNlbWFwaG9yZSA9
IG51bGxwdHI7CisgICAgfQogICAgIGRpc3BhdGNoX2dyb3VwX3dhaXQobV9pc0FwcGVuZGluZ0dy
b3VwLmdldCgpLCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOwotICAgIG1fYXBwZW5kV2Vha0ZhY3Rv
cnkucmV2b2tlQWxsKCk7Ci0gICAgbV9kZWxlZ2F0ZS5nZXQoKS5wYXJlbnQgPSBtX2FwcGVuZFdl
YWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKnRoaXMpOwotICAgIG1fZGVsZWdhdGUuZ2V0KCkuYWJv
cnRTZW1hcGhvcmUgPSBCb3g8U2VtYXBob3JlPjo6Y3JlYXRlKDApOwogfQogCiB2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpyZXNldFBhcnNlclN0YXRlKCkKIHsKICAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIpOwogCi0gICAgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0ID0gdHJ1ZTsK
LSAgICBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50ID0gdHJ1
ZTsKKyAgICBtX3BhcnNlci0+cmVzZXRQYXJzZXJTdGF0ZSgpOwogfQogCiB2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjpkZXN0cm95UGFyc2VyKCkKIHsKKyAgICBhdXRvIHBhcnNlciA9
IHRoaXMtPnBhcnNlcigpOworICAgIGlmICghcGFyc2VyKQorICAgICAgICByZXR1cm47CiAjaWYg
SEFWRShBVlNUUkVBTVNFU1NJT04pICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQog
ICAgIGlmIChtX21lZGlhU291cmNlICYmIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5oYXNTdHJl
YW1TZXNzaW9uKCkpCi0gICAgICAgIFttX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c3RyZWFtU2Vz
c2lvbigpIHJlbW92ZVN0cmVhbURhdGFQYXJzZXI6bV9wYXJzZXIuZ2V0KCldOworICAgICAgICBb
bV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPnN0cmVhbVNlc3Npb24oKSByZW1vdmVTdHJlYW1EYXRh
UGFyc2VyOnBhcnNlcl07CiAjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBI
QVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCiAgICAgaWYgKG1fY2RtSW5zdGFuY2UpIHsKICAgICAg
ICAgaWYgKGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktl
eUlEcyhtX2tleUlEcykpCi0gICAgICAgICAgICBbaW5zdGFuY2VTZXNzaW9uLT5jb250ZW50S2V5
U2Vzc2lvbigpIHJlbW92ZUNvbnRlbnRLZXlSZWNpcGllbnQ6bV9wYXJzZXIuZ2V0KCldOworICAg
ICAgICAgICAgW2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSByZW1vdmVDb250
ZW50S2V5UmVjaXBpZW50OnBhcnNlcl07CiAgICAgfQogI2VuZGlmCi0KLSAgICBbbV9kZWxlZ2F0
ZSBpbnZhbGlkYXRlXTsKLSAgICBtX2RlbGVnYXRlID0gbnVsbHB0cjsKLSAgICBtX3BhcnNlciA9
IG51bGxwdHI7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRlc3Ryb3lS
ZW5kZXJlcnMoKQpAQCAtODE3LDYgKzY0OSwxNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjpkZXN0cm95UmVuZGVyZXJzKCkKICAgICBtX2F1ZGlvUmVuZGVyZXJzLmNsZWFyKCk7
CiB9CiAKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNsZWFyVHJhY2tzKCkKK3sK
KyAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV92aWRlb1RyYWNrcykKKyAgICAgICAgdHJhY2stPnNl
dFNlbGVjdGVkQ2hhbmdlZENhbGxiYWNrKG51bGxwdHIpOworICAgIG1fdmlkZW9UcmFja3MuY2xl
YXIoKTsKKworICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX2F1ZGlvVHJhY2tzKQorICAgICAgICB0
cmFjay0+c2V0RW5hYmxlZENoYW5nZWRDYWxsYmFjayhudWxscHRyKTsKKyAgICBtX2F1ZGlvVHJh
Y2tzLmNsZWFyKCk7Cit9CisKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnJlbW92
ZWRGcm9tTWVkaWFTb3VyY2UoKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CkBA
IC04NTYsMjEgKzY5OSwyMSBAQCBib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpoYXNB
dWRpbygpIGNvbnN0CiAgICAgcmV0dXJuIG1fY2xpZW50ICYmIG1fY2xpZW50LT5zb3VyY2VCdWZm
ZXJQcml2YXRlSGFzQXVkaW8oKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDKiB0cmFjaykKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hh
bmdlU2VsZWN0ZWQoVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNrLCBib29sIHNlbGVjdGVkKQogewot
ICAgIGludCB0cmFja0lEID0gdHJhY2stPnRyYWNrSUQoKTsKKyAgICBpbnQgdHJhY2tJRCA9IHRy
YWNrLmlkKCkudG9JbnQoKTsKIAotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInZpZGVv
IHRyYWNrSUQgPSAiLCB0cmFja0lELCAiLCBzZWxlY3RlZCA9ICIsIHRyYWNrLT5zZWxlY3RlZCgp
KTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJ2aWRlbyB0cmFja0lEID0gIiwgdHJh
Y2tJRCwgIiwgc2VsZWN0ZWQgPSAiLCBzZWxlY3RlZCk7CiAKLSAgICBpZiAoIXRyYWNrLT5zZWxl
Y3RlZCgpICYmIG1fZW5hYmxlZFZpZGVvVHJhY2tJRCA9PSB0cmFja0lEKSB7CisgICAgaWYgKCFz
ZWxlY3RlZCAmJiBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgPT0gdHJhY2tJRCkgewogICAgICAgICBt
X2VuYWJsZWRWaWRlb1RyYWNrSUQgPSAtMTsKLSAgICAgICAgW21fcGFyc2VyIHNldFNob3VsZFBy
b3ZpZGVNZWRpYURhdGE6Tk8gZm9yVHJhY2tJRDp0cmFja0lEXTsKKyAgICAgICAgbV9wYXJzZXIt
PnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGZhbHNlLCB0cmFja0lEKTsKIAog
ICAgICAgICBpZiAobV9kZWNvbXByZXNzaW9uU2Vzc2lvbikKICAgICAgICAgICAgIG1fZGVjb21w
cmVzc2lvblNlc3Npb24tPnN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRhKCk7Ci0gICAgfSBlbHNlIGlm
ICh0cmFjay0+c2VsZWN0ZWQoKSkgeworICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWQpIHsKICAgICAg
ICAgbV9lbmFibGVkVmlkZW9UcmFja0lEID0gdHJhY2tJRDsKLSAgICAgICAgW21fcGFyc2VyIHNl
dFNob3VsZFByb3ZpZGVNZWRpYURhdGE6WUVTIGZvclRyYWNrSUQ6dHJhY2tJRF07CisgICAgICAg
IG1fcGFyc2VyLT5zZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCh0cnVlLCB0cmFj
a0lEKTsKIAogICAgICAgICBpZiAobV9kZWNvbXByZXNzaW9uU2Vzc2lvbikgewogICAgICAgICAg
ICAgbV9kZWNvbXByZXNzaW9uU2Vzc2lvbi0+cmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeShbdGhp
cywgdHJhY2tJRF0gewpAQCAtODgyLDIxICs3MjUsMjEgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKFZpZGVvVHJhY2tQcml2YXRlTWVkaWFT
b3UKICAgICBtX21lZGlhU291cmNlLT5oYXNTZWxlY3RlZFZpZGVvQ2hhbmdlZCgqdGhpcyk7CiB9
CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlRW5hYmxl
ZChBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyogdHJhY2spCit2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQoQXVkaW9UcmFja1By
aXZhdGUmIHRyYWNrLCBib29sIGVuYWJsZWQpCiB7Ci0gICAgaW50IHRyYWNrSUQgPSB0cmFjay0+
dHJhY2tJRCgpOworICAgIGludCB0cmFja0lEID0gdHJhY2suaWQoKS50b0ludCgpOwogCi0gICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiYXVkaW8gdHJhY2tJRCA9ICIsIHRyYWNrSUQsICIs
IHNlbGVjdGVkID0gIiwgdHJhY2stPmVuYWJsZWQoKSk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCAiYXVkaW8gdHJhY2tJRCA9ICIsIHRyYWNrSUQsICIsIHNlbGVjdGVkID0gIiwgZW5h
YmxlZCk7CiAKLSAgICBpZiAoIXRyYWNrLT5lbmFibGVkKCkpIHsKKyAgICBpZiAoIWVuYWJsZWQp
IHsKICAgICAgICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgogICAgICAgICBS
ZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyPiByZW5kZXJlciA9IG1fYXVkaW9S
ZW5kZXJlcnMuZ2V0KHRyYWNrSUQpOwogICAgICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VB
UkRTX0VORAotICAgICAgICBbbV9wYXJzZXIgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YTpOTyBm
b3JUcmFja0lEOnRyYWNrSURdOworICAgICAgICBtX3BhcnNlci0+c2V0U2hvdWxkUHJvdmlkZU1l
ZGlhRGF0YUZvclRyYWNrSUQoZmFsc2UsIHRyYWNrSUQpOwogICAgICAgICBpZiAobV9tZWRpYVNv
dXJjZSkKICAgICAgICAgICAgIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5yZW1vdmVBdWRpb1Jl
bmRlcmVyKHJlbmRlcmVyLmdldCgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBbbV9wYXJzZXIg
c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YTpZRVMgZm9yVHJhY2tJRDp0cmFja0lEXTsKKyAgICAg
ICAgbV9wYXJzZXItPnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKHRydWUsIHRy
YWNrSUQpOwogICAgICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCiAgICAg
ICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXI+IHJlbmRlcmVyOwogICAg
ICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORApAQCAtOTI2LDYgKzc2OSwxMyBA
QCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQo
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdQogICAgIH0KIH0KIAorQVZTdHJlYW1EYXRhUGFyc2Vy
KiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6cGFyc2VyKCkgY29uc3QKK3sKKyAgICBpZiAo
aXM8U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQz4obV9wYXJzZXIuZ2V0KCkpKQorICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQz4obV9wYXJzZXIuZ2V0KCkp
LnBhcnNlcigpOworICAgIHJldHVybiBuaWw7Cit9CisKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OnNldENETVNlc3Npb24oQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyogc2Vz
c2lvbikKIHsKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKQEAgLTk4Nyw3ICs4
MzcsOCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphdHRlbXB0VG9EZWNyeXB0
KCkKICAgICBpZiAoIWluc3RhbmNlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgW2lu
c3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50
Om1fcGFyc2VyLmdldCgpXTsKKyAgICBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5wYXJzZXIoKSkK
KyAgICAgICAgW2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50
S2V5UmVjaXBpZW50OnBhcnNlcl07CiAgICAgaWYgKG1faGFzU2Vzc2lvblNlbWFwaG9yZSkgewog
ICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwogICAgICAgICBtX2hhc1Nl
c3Npb25TZW1hcGhvcmUgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggYzc4
Yjk1M2M3YmFhOGVjYjI5MjhiZjJjM2RkNTUxYTkwZWQyMzhjYy4uNmIxMWNjYTMyYmRkNDlkMmFk
ZDYxMGU5YTdhNzc2YjU5NWI4YTk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFja1By
aXZhdGVBVkYuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogI2lmIEVOQUJMRShNRURJ
QV9TT1VSQ0UpCiAKQEAgLTQyLDE0ICs0MywxMSBAQCBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIGZpbmFs
IDogcHVibGljIFZpZGVvVHJhY2tQcml2YXRlQVZGIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQykKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3Nl
dFRyYWNrKiB0cmFjaywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKKyAgICBz
dGF0aWMgUmVmPFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZB
c3NldFRyYWNrKiB0cmFjaykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZp
ZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akModHJhY2spKTsKICAgICB9CiAKLSAgICBib29sIHNlbGVjdGVkKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBzZXRTZWxlY3RlZChib29sKSBvdmVycmlkZTsKLQogICAgIHZvaWQgc2V0QXNz
ZXRUcmFjayhBVkFzc2V0VHJhY2sqKTsKICAgICBBVkFzc2V0VHJhY2sqIGFzc2V0VHJhY2soKSBj
b25zdDsKIApAQCAtNTgsMTQgKzU2LDEyIEBAIHB1YmxpYzoKICAgICBGbG9hdFNpemUgbmF0dXJh
bFNpemUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQyogcGFyZW50KTsKKyAgICBleHBsaWNpdCBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQyhBVkFzc2V0VHJhY2sqKTsKICAgICAKICAgICB2b2lkIHJlc2V0UHJvcGVydGllc0Zy
b21UcmFjaygpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0lt
cGw+IG1faW1wbDsKLSAgICBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogbV9wYXJlbnQ7CiAg
ICAgaW50IG1fdHJhY2tJRDsKLSAgICBib29sIG1fc2VsZWN0ZWQ7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9W
aWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLm1tCmluZGV4IDJjNzM5Mjc5NmUwZjUyNWY5NGMyOGFhMjBhYWQxMGUzMGQw
ZDA1MWMuLmFmZDFiN2YzYTkzMzQ5MTcxZDkxMDU4ZjY4NWNmZTgwYmI4ZDczMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Zp
ZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0zNCwxMSArMzQsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpWaWRlb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrLCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQyogcGFyZW50KQorVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKEFWQXNzZXRUcmFjayogdHJh
Y2spCiAgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0
cmFjaykpCi0gICAgLCBtX3BhcmVudChwYXJlbnQpCiAgICAgLCBtX3RyYWNrSUQoLTEpCi0gICAg
LCBtX3NlbGVjdGVkKGZhbHNlKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwog
fQpAQCAtNjUsMjEgKzYzLDYgQEAgQVZBc3NldFRyYWNrKiBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6YXNzZXRUcmFjaygpIGNvbnN0CiAgICAgcmV0dXJuIG1faW1wbC0+YXNz
ZXRUcmFjaygpOwogfQogCi0KLWJvb2wgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OnNlbGVjdGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zZWxlY3RlZDsKLX0KLQotdm9p
ZCBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0U2VsZWN0ZWQoYm9vbCBz
ZWxlY3RlZCkKLXsKLSAgICBpZiAobV9zZWxlY3RlZCA9PSBzZWxlY3RlZCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV9zZWxlY3RlZCA9IHNlbGVjdGVkOwotICAgIG1fcGFyZW50LT50cmFja0Rp
ZENoYW5nZUVuYWJsZWQodGhpcyk7Ci19Ci0KIEZsb2F0U2l6ZSBWaWRlb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQzo6bmF0dXJhbFNpemUoKSBjb25zdAogewogICAgIHJldHVybiBGbG9h
dFNpemUoW2Fzc2V0VHJhY2soKSBuYXR1cmFsU2l6ZV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRl
V2ViTS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2ZkZTliZDZmZGMxNmQxNDYwZjg1MzE1NDhhYTk4ZWNlYjIw
NDEzZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZVdl
Yk0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8QXVkaW9UcmFja1ByaXZhdGVXZWJN
PiBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZSh3ZWJtOjpUcmFja0VudHJ5JiYgdHJhY2tF
bnRyeSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJpdmF0ZVdlYk0o
V1RGTW92ZSh0cmFja0VudHJ5KSkpOworfQorCitBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OkF1ZGlv
VHJhY2tQcml2YXRlV2ViTSh3ZWJtOjpUcmFja0VudHJ5JiYgdHJhY2tFbnRyeSkKKyAgICA6IG1f
dHJhY2soV1RGTW92ZSh0cmFja0VudHJ5KSkKK3sKKyAgICBpZiAobV90cmFjay5pc19lbmFibGVk
LmlzX3ByZXNlbnQoKSkKKyAgICAgICAgc2V0RW5hYmxlZChtX3RyYWNrLmlzX2VuYWJsZWQudmFs
dWUoKSk7Cit9CisKK0F0b21TdHJpbmcgQXVkaW9UcmFja1ByaXZhdGVXZWJNOjppZCgpIGNvbnN0
Cit7CisgICAgaWYgKG1fdHJhY2tJRC5pc051bGwoKSkKKyAgICAgICAgbV90cmFja0lEID0gbV90
cmFjay50cmFja191aWQuaXNfcHJlc2VudCgpID8gQXRvbVN0cmluZzo6bnVtYmVyKG1fdHJhY2su
dHJhY2tfdWlkLnZhbHVlKCkpIDogZW1wdHlBdG9tKCk7CisgICAgcmV0dXJuIG1fdHJhY2tJRDsK
K30KKworQXRvbVN0cmluZyBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OmxhYmVsKCkgY29uc3QKK3sK
KyAgICBpZiAobV9sYWJlbC5pc051bGwoKSkKKyAgICAgICAgbV9sYWJlbCA9IG1fdHJhY2submFt
ZS5pc19wcmVzZW50KCkgPyBBdG9tU3RyaW5nOjpmcm9tVVRGOChtX3RyYWNrLm5hbWUudmFsdWUo
KS5kYXRhKCksIG1fdHJhY2submFtZS52YWx1ZSgpLmxlbmd0aCgpKSA6IGVtcHR5QXRvbSgpOwor
ICAgIHJldHVybiBtX2xhYmVsOworfQorCitBdG9tU3RyaW5nIEF1ZGlvVHJhY2tQcml2YXRlV2Vi
TTo6bGFuZ3VhZ2UoKSBjb25zdAoreworICAgIGlmIChtX2xhbmd1YWdlLmlzTnVsbCgpKQorICAg
ICAgICBtX2xhbmd1YWdlID0gbV90cmFjay5sYW5ndWFnZS5pc19wcmVzZW50KCkgPyBBdG9tU3Ry
aW5nOjpmcm9tVVRGOChtX3RyYWNrLmxhbmd1YWdlLnZhbHVlKCkuZGF0YSgpLCBtX3RyYWNrLmxh
bmd1YWdlLnZhbHVlKCkubGVuZ3RoKCkpIDogZW1wdHlBdG9tKCk7CisgICAgcmV0dXJuIG1fbGFu
Z3VhZ2U7Cit9CisKK2ludCBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OnRyYWNrSW5kZXgoKSBjb25z
dAoreworICAgIGlmIChtX3RyYWNrLnRyYWNrX251bWJlci5pc19wcmVzZW50KCkpCisgICAgICAg
IHJldHVybiBtX3RyYWNrLnRyYWNrX251bWJlci52YWx1ZSgpOworICAgIHJldHVybiAwOworfQor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9B
dWRpb1RyYWNrUHJpdmF0ZVdlYk0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwNTZlODVkMTZiYzIy
ZGVmMGRlZTQxNDVhN2Y2ZDg3NTI1ZGFmZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaApAQCAt
MCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBdWRp
b1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHdlYm0vZG9tX3R5cGVzLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVXZWJNIGZpbmFsIDogcHVibGlj
IEF1ZGlvVHJhY2tQcml2YXRlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEF1ZGlvVHJhY2tQ
cml2YXRlV2ViTT4gY3JlYXRlKHdlYm06OlRyYWNrRW50cnkmJik7CisgICAgdmlydHVhbCB+QXVk
aW9UcmFja1ByaXZhdGVXZWJNKCkgPSBkZWZhdWx0OworCisgICAgQXRvbVN0cmluZyBpZCgpIGNv
bnN0IGZpbmFsOworICAgIEF0b21TdHJpbmcgbGFiZWwoKSBjb25zdCBmaW5hbDsKKyAgICBBdG9t
U3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgZmluYWw7CisgICAgaW50IHRyYWNrSW5kZXgoKSBjb25z
dCBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBBdWRpb1RyYWNrUHJpdmF0ZVdlYk0od2VibTo6VHJh
Y2tFbnRyeSYmKTsKKyAgICB3ZWJtOjpUcmFja0VudHJ5IG1fdHJhY2s7CisgICAgbXV0YWJsZSBB
dG9tU3RyaW5nIG1fdHJhY2tJRDsKKyAgICBtdXRhYmxlIEF0b21TdHJpbmcgbV9sYWJlbDsKKyAg
ICBtdXRhYmxlIEF0b21TdHJpbmcgbV9sYW5ndWFnZTsKK307CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmYTIyOGM4MzdjZTRlMDA0MjIwMDY4OWY3ZjhmOTZlNjQ4
MWY0ODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU291cmNlQnVmZmVyUGFyc2VyLmgi
CisKKyNpbmNsdWRlICJDb250ZW50VHlwZS5oIgorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakMuaCIKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgiCisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBT
b3VyY2VCdWZmZXJQYXJzZXI6OmlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29uc3QgQ29udGVudFR5
cGUmIHR5cGUpCit7CisgICAgaWYgKFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmlzQ29udGVudFR5
cGVTdXBwb3J0ZWQodHlwZSkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChTb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDOjppc0NvbnRlbnRUeXBlU3VwcG9ydGVkKHR5cGUpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1JlZlB0cjxTb3VyY2VCdWZm
ZXJQYXJzZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6Y3JlYXRlKGNvbnN0IENvbnRlbnRUeXBlJiBj
b250ZW50VHlwZSkKK3sKKyAgICBpZiAoV1RGOjplcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnRl
bnRUeXBlLmNvbnRhaW5lclR5cGUoKSwgImF1ZGlvL3dlYm0iKSB8fCBXVEY6OmVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UoY29udGVudFR5cGUuY29udGFpbmVyVHlwZSgpLCAidmlkZW8vd2VibSIpKQor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkpOworfQor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliNmIwOTg2ZDY0NzNhMTVjMDhl
Y2Q0NTgzYWVjY2EwNTIyMjdlZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaApAQCAtMCwwICsxLDEw
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU291cmNlQnVmZmVy
UHJpdmF0ZUNsaWVudC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4QXJyYXkuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIENvbnRlbnRUeXBlOworY2xhc3MgTWVkaWFTYW1wbGU7CisKK2NsYXNzIFNvdXJjZUJ1ZmZl
clBhcnNlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTb3VyY2VCdWZmZXJQYXJzZXI+
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBpc0NvbnRlbnRUeXBlU3VwcG9ydGVkKGNvbnN0
IENvbnRlbnRUeXBlJik7CisKKyAgICBzdGF0aWMgUmVmUHRyPFNvdXJjZUJ1ZmZlclBhcnNlcj4g
Y3JlYXRlKGNvbnN0IENvbnRlbnRUeXBlJik7CisgICAgdmlydHVhbCB+U291cmNlQnVmZmVyUGFy
c2VyKCkgPSBkZWZhdWx0OworCisgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7CisgICAg
ICAgIEFWRk9iakMsCisgICAgICAgIFdlYk0sCisgICAgfTsKKyAgICB2aXJ0dWFsIFR5cGUgdHlw
ZSgpIGNvbnN0ID0gMDsKKyAgICBlbnVtIGNsYXNzIEFwcGVuZEZsYWdzIDogdWludDhfdCB7Cisg
ICAgICAgIE5vbmUsCisgICAgICAgIERpc2NvbnRpbnVpdHksCisgICAgfTsKKyAgICB2aXJ0dWFs
IHZvaWQgYXBwZW5kRGF0YShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgQXBwZW5kRmxhZ3MgPSBB
cHBlbmRGbGFnczo6Tm9uZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmbHVzaFBlbmRpbmdNZWRp
YURhdGEoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFG
b3JUcmFja0lEKGJvb2wsIGludDMyX3QpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUHJv
dmlkZU1lZGlhZGF0YUZvclRyYWNrSUQoaW50MzJfdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBy
ZXNldFBhcnNlclN0YXRlKCkgPSAwOworCisgICAgLy8gV2lsbCBiZSBjYWxsZWQgb24gdGhlIG1h
aW4gdGhyZWFkLgorICAgIHVzaW5nIEluaXRpYWxpemF0aW9uU2VnbWVudCA9IFNvdXJjZUJ1ZmZl
clByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDsKKyAgICB1c2luZyBEaWRQYXJz
ZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEluaXRpYWxp
emF0aW9uU2VnbWVudCYmKT47CisgICAgdm9pZCBzZXREaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0
YUNhbGxiYWNrKERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2smJiBjYWxsYmFjaykK
KyAgICB7CisgICAgICAgIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spOworICAgIH0KKworICAgIC8vIFdpbGwgYmUgY2FsbGVkIG9uIHRoZSBt
YWluIHRocmVhZC4KKyAgICB1c2luZyBEaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxs
YmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChpbnQzMl90IGVycm9yQ29kZSk+OworICAgIHZvaWQg
c2V0RGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2soRGlkRW5jb3VudGVyRXJy
b3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2smJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIG1fZGlk
RW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsK
KyAgICB9CisKKyAgICAvLyBXaWxsIGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAg
dXNpbmcgRGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKFJl
ZjxNZWRpYVNhbXBsZT4mJiwgaW50MzJfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlw
ZSk+OworICAgIHZvaWQgc2V0RGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKERpZFByb3ZpZGVN
ZWRpYURhdGFDYWxsYmFjayYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgbV9kaWRQcm92aWRl
TWVkaWFEYXRhQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKKyAgICB9CisKKyAgICAvLyBX
aWxsIGJlIGNhbGxlZCBzeW5jaHJvbm91c2x5IG9uIHRoZSBwYXJzZXIgdGhlYWQuCisgICAgdXNp
bmcgV2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNr
SURDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZCh1aW50MzJfdCB0cmFja0lEKT47CisgICAg
dm9pZCBzZXRXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9y
VHJhY2tJRENhbGxiYWNrKFdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlv
bkRhdGFGb3JUcmFja0lEQ2FsbGJhY2smJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIG1fd2ls
bFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworICAgIH0KKworICAgIC8vIFdpbGwgYmUgY2FsbGVk
IHN5bmNocm9ub3VzbHkgb24gdGhlIHBhcnNlciB0aGVhZC4KKyAgICB1c2luZyBEaWRQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sgPSBX
VEY6OkZ1bmN0aW9uPHZvaWQoUmVmPFVpbnQ4QXJyYXk+JiYsIGludDMyX3QgdHJhY2tJRCk+Owor
ICAgIHZvaWQgc2V0RGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRENhbGxiYWNrKERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgbV9k
aWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBTb3Vy
Y2VCdWZmZXJQYXJzZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBEaWRQYXJzZUluaXRpYWxpemF0aW9u
RGF0YUNhbGxiYWNrIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjazsKKyAgICBE
aWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayBtX2RpZEVuY291bnRlckVycm9y
RHVyaW5nUGFyc2luZ0NhbGxiYWNrOworICAgIERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayBt
X2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjazsKKyAgICBXaWxsUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrIG1fd2lsbFByb3ZpZGVD
b250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjazsKKyAg
ICBEaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lE
Q2FsbGJhY2sgbV9kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFG
b3JUcmFja0lEQ2FsbGJhY2s7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRhNGMwNzZlMTIwZTBlZTM3ZTliOGMzYzY1ZjJhODFiMWMzN2ZiOTEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtMCwwICsxLDM1OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmgiCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaCIKKyNpbmNsdWRlICJJbmJh
bmRUZXh0VHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiTWVkaWFEZXNjcmlwdGlvbi5oIgorI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2
YXRlV2ViTS5oIgorI2luY2x1ZGUgPHdlYm0vd2VibV9wYXJzZXIuaD4KKyNpbmNsdWRlIDx3dGYv
QWxnb3JpdGhtcy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUg
PHd0Zi9kYXJ3aW4vV2Vha0xpbmtpbmcuaD4KKworV1RGX1dFQUtfTElOS19GT1JDRV9JTVBPUlQo
d2VibTo6c3dhcCk7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGJvb2wgaXNXZWJt
UGFyc2VyQXZhaWxhYmxlKCkKK3sKKyAgICByZXR1cm4gISF3ZWJtOjpzd2FwICYmIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViTVBhcnNlckVuYWJsZWQoKTsKK30K
KwordXNpbmcgbmFtZXNwYWNlIHdlYm07CisKK2NsYXNzIFZlY3RvclJlYWRlciBmaW5hbCA6IHB1
YmxpYyB3ZWJtOjpSZWFkZXIgeworcHVibGljOgorICAgIFZlY3RvclJlYWRlcihWZWN0b3I8dW5z
aWduZWQgY2hhcj4mJiBkYXRhKQorICAgICAgICA6IG1fZGF0YSB7IFdURk1vdmUoZGF0YSkgfQor
ICAgIHsKKyAgICB9CisKKyAgICBTdGF0dXMgUmVhZChzdGQ6OnNpemVfdCBudW1Ub1JlYWQsIHVp
bnQ4X3QqIG91dHB1dEJ1ZmZlciwgdWludDY0X3QqIG51bUFjdHVhbGx5UmVhZCkgZmluYWwKKyAg
ICB7CisgICAgICAgIEFTU0VSVChvdXRwdXRCdWZmZXIgJiYgbnVtQWN0dWFsbHlSZWFkKTsKKyAg
ICAgICAgaWYgKCFvdXRwdXRCdWZmZXIgfHwgIW51bUFjdHVhbGx5UmVhZCkKKyAgICAgICAgICAg
IHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKworICAgICAgICBpZiAo
bV9wb3NpdGlvbiA+PSBtX2RhdGEuc2l6ZSgpKSB7CisgICAgICAgICAgICAqbnVtQWN0dWFsbHlS
ZWFkID0gMDsKKyAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprRW5kT2ZGaWxlKTsK
KyAgICAgICAgfQorCisgICAgICAgIHNpemVfdCBudW1BdmFpbGFibGUgPSBtX2RhdGEuc2l6ZSgp
IC0gbV9wb3NpdGlvbjsKKyAgICAgICAgaWYgKG51bVRvUmVhZCA8IG51bUF2YWlsYWJsZSkgewor
ICAgICAgICAgICAgbWVtY3B5KG91dHB1dEJ1ZmZlciwgbV9kYXRhLmRhdGEoKSArIG1fcG9zaXRp
b24sIG51bVRvUmVhZCk7CisgICAgICAgICAgICAqbnVtQWN0dWFsbHlSZWFkID0gbnVtVG9SZWFk
OworICAgICAgICAgICAgbV9wb3NpdGlvbiArPSBudW1Ub1JlYWQ7CisgICAgICAgICAgICByZXR1
cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKKyAgICAgICAgfQorCisgICAgICAgIG1l
bWNweShvdXRwdXRCdWZmZXIsIG1fZGF0YS5kYXRhKCkgKyBtX3Bvc2l0aW9uLCBudW1BdmFpbGFi
bGUpOworICAgICAgICAqbnVtQWN0dWFsbHlSZWFkID0gbnVtQXZhaWxhYmxlOworICAgICAgICBt
X3Bvc2l0aW9uICs9IG51bUF2YWlsYWJsZTsKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6
OmtPa1BhcnRpYWwpOworICAgIH0KKworICAgIFN0YXR1cyBTa2lwKHVpbnQ2NF90IG51bVRvU2tp
cCwgdWludDY0X3QqIG51bUFjdHVhbGx5U2tpcHBlZCkgZmluYWwKKyAgICB7CisgICAgICAgIEFT
U0VSVChudW1BY3R1YWxseVNraXBwZWQpOworICAgICAgICBpZiAoIW51bUFjdHVhbGx5U2tpcHBl
ZCkKKyAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsK
KworICAgICAgICBpZiAobV9wb3NpdGlvbiA+PSBtX2RhdGEuc2l6ZSgpKSB7CisgICAgICAgICAg
ICAqbnVtQWN0dWFsbHlTa2lwcGVkID0gMDsKKyAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3Rh
dHVzOjprV291bGRCbG9jayk7CisgICAgICAgIH0KKworICAgICAgICBzaXplX3QgbnVtQXZhaWxh
YmxlID0gbV9kYXRhLnNpemUoKSAtIG1fcG9zaXRpb247CisKKyAgICAgICAgaWYgKG51bVRvU2tp
cCA8IG51bUF2YWlsYWJsZSkgeworICAgICAgICAgICAgKm51bUFjdHVhbGx5U2tpcHBlZCA9IG51
bVRvU2tpcDsKKyAgICAgICAgICAgIG1fcG9zaXRpb24gKz0gbnVtVG9Ta2lwOworICAgICAgICAg
ICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CisgICAgICAgIH0KKworICAg
ICAgICAqbnVtQWN0dWFsbHlTa2lwcGVkID0gbnVtQXZhaWxhYmxlOworICAgICAgICBtX3Bvc2l0
aW9uICs9IG51bUF2YWlsYWJsZTsKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa1Bh
cnRpYWwpOworICAgIH0KKworICAgIHVpbnQ2NF90IFBvc2l0aW9uKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9wb3NpdGlvbjsgfQorCitwcml2YXRlOgorICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFy
PiBtX2RhdGE7CisgICAgc2l6ZV90IG1fcG9zaXRpb24geyAwIH07Cit9OworCitjbGFzcyBNZWRp
YURlc2NyaXB0aW9uV2ViTSBmaW5hbCA6IHB1YmxpYyBNZWRpYURlc2NyaXB0aW9uIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmPE1lZGlhRGVzY3JpcHRpb25XZWJNPiBjcmVhdGUod2VibTo6VHJh
Y2tFbnRyeSYmIHRyYWNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVk
aWFEZXNjcmlwdGlvbldlYk0oV1RGTW92ZSh0cmFjaykpKTsKKyAgICB9CisKKyAgICBNZWRpYURl
c2NyaXB0aW9uV2ViTSh3ZWJtOjpUcmFja0VudHJ5JiYgdHJhY2spCisgICAgICAgIDogbV90cmFj
ayB7IFdURk1vdmUodHJhY2spIH0KKyAgICB7CisgICAgfQorCisgICAgQXRvbVN0cmluZyBjb2Rl
YygpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBpZiAobV9jb2RlYykKKyAgICAgICAgICAg
IHJldHVybiAqbV9jb2RlYzsKKworICAgICAgICAvLyBGcm9tOiBodHRwczovL3d3dy5tYXRyb3Nr
YS5vcmcvdGVjaG5pY2FsL2NvZGVjX3NwZWNzLmh0bWwKKyAgICAgICAgLy8gIkVhY2ggQ29kZWMg
SUQgTVVTVCBpbmNsdWRlIGEgTWFqb3IgQ29kZWMgSUQgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRo
ZSBDb2RlYyBJRCBQcmVmaXguCisgICAgICAgIC8vIEEgTWFqb3IgQ29kZWMgSUQgTUFZIGJlIGZv
bGxvd2VkIGJ5IGFuIE9QVElPTkFMIENvZGVjIElEIFN1ZmZpeCB0byBjb21tdW5pY2F0ZSBhIHJl
ZmluZW1lbnQKKyAgICAgICAgLy8gb2YgdGhlIE1ham9yIENvZGVjIElELiBJZiBhIENvZGVjIElE
IFN1ZmZpeCBpcyB1c2VkLCB0aGVuIHRoZSBDb2RlYyBJRCBNVVNUIGluY2x1ZGUgYSBmb3J3YXJk
CisgICAgICAgIC8vIHNsYXNoICjigJwv4oCdKSBhcyBhIHNlcGFyYXRvciBiZXR3ZWVuIHRoZSBN
YWpvciBDb2RlYyBJRCBhbmQgdGhlIENvZGVjIElEIFN1ZmZpeC4gVGhlIE1ham9yIENvZGVjCisg
ICAgICAgIC8vIElEIE1VU1QgYmUgY29tcG9zZWQgb2Ygb25seSBjYXBpdGFsIGxldHRlcnMgKEEt
WikgYW5kIG51bWJlcnMgKDAtOSkuIFRoZSBDb2RlYyBJRCBTdWZmaXggTVVTVAorICAgICAgICAv
LyBiZSBjb21wb3NlZCBvZiBvbmx5IGNhcGl0YWwgbGV0dGVycyAoQS1aKSwgbnVtYmVycyAoMC05
KSwgdW5kZXJzY29yZSAo4oCcX+KAnSksIGFuZCBmb3J3YXJkIHNsYXNoICjigJwv4oCdKS4iCisK
KyAgICAgICAgaWYgKCFtX3RyYWNrLmNvZGVjX2lkLmlzX3ByZXNlbnQoKSkgeworICAgICAgICAg
ICAgbV9jb2RlYyA9IGVtcHR5QXRvbSgpOworICAgICAgICAgICAgcmV0dXJuICptX2NvZGVjOwor
ICAgICAgICB9CisKKyAgICAgICAgU3RyaW5nVmlldyBjb2RlY0lEIHsgbV90cmFjay5jb2RlY19p
ZC52YWx1ZSgpLmRhdGEoKSwgKHVuc2lnbmVkKW1fdHJhY2suY29kZWNfaWQudmFsdWUoKS5sZW5n
dGgoKSB9OworICAgICAgICBpZiAoIWNvZGVjSUQuc3RhcnRzV2l0aCgiVl8iKSAmJiAhY29kZWNJ
RC5zdGFydHNXaXRoKCJBXyIpICYmICFjb2RlY0lELnN0YXJ0c1dpdGgoIlNfIikpIHsKKyAgICAg
ICAgICAgIG1fY29kZWMgPSBlbXB0eUF0b20oKTsKKyAgICAgICAgICAgIHJldHVybiAqbV9jb2Rl
YzsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gc2xhc2hMb2NhdGlvbiA9IGNvZGVjSUQuZmlu
ZCgnLycpOworICAgICAgICBhdXRvIGxlbmd0aCA9IHNsYXNoTG9jYXRpb24gPT0gbm90Rm91bmQg
PyBjb2RlY0lELmxlbmd0aCgpIC0gMiA6IHNsYXNoTG9jYXRpb24gLSAyOworICAgICAgICBtX2Nv
ZGVjID0gQXRvbVN0cmluZyB7IGNvZGVjSUQuc3Vic3RyaW5nKDIsIGxlbmd0aCkuY29udmVydFRv
QVNDSUlMb3dlcmNhc2UoKSB9OworICAgICAgICByZXR1cm4gKm1fY29kZWM7CisgICAgfQorICAg
IGJvb2wgaXNWaWRlbygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdHJhY2sudHJhY2tfdHlwZS5p
c19wcmVzZW50KCkgJiYgbV90cmFjay50cmFja190eXBlLnZhbHVlKCkgPT0gVHJhY2tUeXBlOjpr
VmlkZW87IH0KKyAgICBib29sIGlzQXVkaW8oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RyYWNr
LnRyYWNrX3R5cGUuaXNfcHJlc2VudCgpICYmIG1fdHJhY2sudHJhY2tfdHlwZS52YWx1ZSgpID09
IFRyYWNrVHlwZTo6a0F1ZGlvOyB9CisgICAgYm9vbCBpc1RleHQoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3RyYWNrLnRyYWNrX3R5cGUuaXNfcHJlc2VudCgpICYmIG1fdHJhY2sudHJhY2tfdHlw
ZS52YWx1ZSgpID09IFRyYWNrVHlwZTo6a1N1YnRpdGxlOyB9CisKKyAgICBjb25zdCB3ZWJtOjpU
cmFja0VudHJ5JiB0cmFjaygpIHsgcmV0dXJuIG1fdHJhY2s7IH0KKworcHJpdmF0ZToKKyAgICBt
dXRhYmxlIE9wdGlvbmFsPEF0b21TdHJpbmc+IG1fY29kZWM7CisgICAgd2VibTo6VHJhY2tFbnRy
eSBtX3RyYWNrOworfTsKKworc3RhdGljIFZlY3RvcjxTdHJpbmc+IHN1cHBvcnRlZFdlYk1Db2Rl
Y3MoKQoreworICAgIGF1dG8gY29kZWNzID0gbWFrZU5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHJp
bmc+Pih7CisgICAgICAgICJ2cDA5IiwKKyAgICAgICAgInZvcmJpcyIsCisgICAgICAgICJvcHVz
IiwKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZWNzOworfQorCitib29sIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk06OmlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29uc3QgQ29udGVudFR5cGUmIHR5cGUp
Cit7CisgICAgaWYgKCFpc1dlYm1QYXJzZXJBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKCFXVEY6OmVxdWFsSWdub3JpbmdBU0NJSUNhc2UodHlwZS5jb250YWlu
ZXJUeXBlKCksICJhdWRpby93ZWJtIikKKyAgICAgICAgJiYgIVdURjo6ZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZSh0eXBlLmNvbnRhaW5lclR5cGUoKSwgInZpZGVvL3dlYm0iKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgU3RyaW5nIGNvZGVjc1BhcmFtZXRlciA9IHR5cGUucGFyYW1ldGVy
KENvbnRlbnRUeXBlOjpjb2RlY3NQYXJhbWV0ZXIoKSk7CisgICAgaWYgKCFjb2RlY3NQYXJhbWV0
ZXIpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgYXV0byBzcGxpdFJlc3VsdHMgPSBTdHJp
bmdWaWV3KGNvZGVjc1BhcmFtZXRlcikuc3BsaXQoJywnKTsKKyAgICBmb3IgKGF1dG8gc3BsaXQg
OiBzcGxpdFJlc3VsdHMpIHsKKyAgICAgICAgcmV0dXJuIFdURjo6YW55T2Yoc3VwcG9ydGVkV2Vi
TUNvZGVjcygpLCBbJl0oYXV0byYgY29kZWMpIHsKKyAgICAgICAgICAgIHJldHVybiBzcGxpdC5z
dGFydHNXaXRoKGNvZGVjKTsKKyAgICAgICAgfSk7CisgICAgfQorICAgIHJldHVybiB0cnVlOwor
fQorCitTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNKCkKK3sK
KyAgICBpZiAoaXNXZWJtUGFyc2VyQXZhaWxhYmxlKCkpCisgICAgICAgIG1fcGFyc2VyID0gV1RG
OjptYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxXZWJtUGFyc2VyPigpOworfQorCitT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjp+U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpID0gZGVmYXVs
dDsKKwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjphcHBlbmREYXRhKFZlY3Rvcjx1bnNp
Z25lZCBjaGFyPiYmIGJ1ZmZlciwgQXBwZW5kRmxhZ3MgYXBwZW5kRmxhZ3MpCit7CisgICAgaWYg
KCFtX3BhcnNlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yUmVhZGVyIHJlYWRlciB7
IFdURk1vdmUoYnVmZmVyKSB9OworICAgIGlmIChhcHBlbmRGbGFncyA9PSBBcHBlbmRGbGFnczo6
RGlzY29udGludWl0eSkKKyAgICAgICAgbV9wYXJzZXItPkRpZFNlZWsoKTsKKyAgICBtX3N0YXR1
cyA9IG1fcGFyc2VyLT5GZWVkKHRoaXMsICZyZWFkZXIpOworICAgIGlmIChtX3N0YXR1cy5vaygp
IHx8IG1fc3RhdHVzLmNvZGUgPT0gU3RhdHVzOjprRW5kT2ZGaWxlKQorICAgICAgICByZXR1cm47
CisKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGNvZGUgPSBtX3N0YXR1cy5jb2RlXSB7CisgICAgICAgIGlmIChtX2RpZEVuY291bnRl
ckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKQorICAgICAgICAgICAgbV9kaWRFbmNvdW50ZXJF
cnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayhjb2RlKTsKKyAgICB9KTsKK30KKwordm9pZCBTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjpmbHVzaFBlbmRpbmdNZWRpYURhdGEoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2V0U2hvdWxk
UHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoYm9vbCwgaW50MzJfdCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCitib29sIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnNob3VsZFByb3Zp
ZGVNZWRpYWRhdGFGb3JUcmFja0lEKGludDMyX3QpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6cmVz
ZXRQYXJzZXJTdGF0ZSgpCit7CisgICAgbV9wYXJzZXItPkRpZFNlZWsoKTsKKyAgICBtX3N0YXRl
ID0gU3RhdGU6Ok5vbmU7Cit9CisKK1N0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkVs
ZW1lbnRCZWdpbihjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBBY3Rpb24qIGFjdGlv
bikKK3sKKyAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOworICAgIEFTU0VSVChhY3Rpb24pOwor
ICAgIGlmICghYWN0aW9uKQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a05vdEVub3Vn
aE1lbW9yeSk7CisKKyAgICBpZiAoKG1fc3RhdGUgPT0gU3RhdGU6Ok5vbmUgJiYgbWV0YWRhdGEu
aWQgIT0gSWQ6OmtFYm1sKQorICAgICAgICB8fCAobV9zdGF0ZSA9PSBTdGF0ZTo6UmVhZEVibWwg
JiYgbWV0YWRhdGEuaWQgIT0gSWQ6OmtTZWdtZW50KQorICAgICAgICB8fCAobV9zdGF0ZSA9PSBT
dGF0ZTo6UmVhZGluZ1NlZ21lbnQgJiYgbWV0YWRhdGEuaWQgIT0gSWQ6OmtJbmZvKQorICAgICAg
ICB8fCAobV9zdGF0ZSA9PSBTdGF0ZTo6UmVhZEluZm8gJiYgbWV0YWRhdGEuaWQgIT0gSWQ6OmtU
cmFja3MpCisgICAgICAgIHx8IChtX3N0YXRlID09IFN0YXRlOjpSZWFkVHJhY2sgJiYgbWV0YWRh
dGEuaWQgIT0gSWQ6OmtUcmFja0VudHJ5ICYmIG1ldGFkYXRhLmlkICE9IElkOjprQ2x1c3RlcikK
KyAgICAgICAgfHwgKG1ldGFkYXRhLmlkID09IElkOjprQ3VlcyB8fCBtZXRhZGF0YS5pZCA9PSBJ
ZDo6a0NoYXB0ZXJzKSkgeworICAgICAgICAqYWN0aW9uID0gQWN0aW9uOjprU2tpcDsKKyAgICAg
ICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CisgICAgfQorCisgICAgaWYg
KG1ldGFkYXRhLmlkID09IElkOjprRWJtbCkKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFk
aW5nRWJtbDsKKyAgICBlbHNlIGlmIChtZXRhZGF0YS5pZCA9PSBJZDo6a1NlZ21lbnQpCisgICAg
ICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZGluZ1NlZ21lbnQ7CisgICAgZWxzZSBpZiAobWV0YWRh
dGEuaWQgPT0gSWQ6OmtJbmZvKQorICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWRpbmdJbmZv
OworICAgIGVsc2UgaWYgKG1ldGFkYXRhLmlkID09IElkOjprVHJhY2tzKQorICAgICAgICBtX3N0
YXRlID0gU3RhdGU6OlJlYWRpbmdUcmFja3M7CisgICAgZWxzZSBpZiAobWV0YWRhdGEuaWQgPT0g
SWQ6OmtUcmFja0VudHJ5KQorICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWRpbmdUcmFjazsK
KyAgICBlbHNlIGlmIChtZXRhZGF0YS5pZCA9PSBJZDo6a0NsdXN0ZXIpCisgICAgICAgIG1fc3Rh
dGUgPSBTdGF0ZTo6UmVhZGluZ0NsdXN0ZXI7CisKKyAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6
a09rQ29tcGxldGVkKTsKK30KKworU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRWJt
bChjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBFYm1sJiBlYm1sKQorewor
ICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CisgICAgaWYgKGVibWwuZG9jX3R5cGUuaXNfcHJl
c2VudCgpICYmIGVibWwuZG9jX3R5cGUudmFsdWUoKS5jb21wYXJlKCJ3ZWJtIikpCisgICAgICAg
IHJldHVybiBTdGF0dXMoU3RhdHVzOjpDb2RlKEVycm9yQ29kZTo6SW52YWxpZERvY1R5cGUpKTsK
KworICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50RW5jb3VudGVyZWQgPSB0cnVlOworICAgIG1f
aW5pdGlhbGl6YXRpb25TZWdtZW50ID0gV1RGOjptYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2ND
aGVjazxJbml0aWFsaXphdGlvblNlZ21lbnQ+KCk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFk
RWJtbDsKKworICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworfQorCitT
dGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25TZWdtZW50QmVnaW4oY29uc3QgRWxlbWVu
dE1ldGFkYXRhJiBtZXRhZGF0YSwgQWN0aW9uKiBhY3Rpb24pCit7CisgICAgVU5VU0VEX1BBUkFN
KG1ldGFkYXRhKTsKKyAgICBpZiAoIW1faW5pdGlhbGl6YXRpb25TZWdtZW50RW5jb3VudGVyZWQp
CisgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjpDb2RlKEVycm9yQ29kZTo6SW52YWxpZElu
aXRTZWdtZW50KSk7CisKKyAgICBBU1NFUlQoYWN0aW9uKTsKKyAgICBpZiAoIWFjdGlvbikKKyAg
ICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworICAgICphY3Rp
b24gPSBBY3Rpb246OmtSZWFkOworCisgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBs
ZXRlZCk7Cit9CisKK1N0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkluZm8oY29uc3Qg
RWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uc3QgSW5mbyYgaW5mbykKK3sKKyAgICBVTlVT
RURfUEFSQU0obWV0YWRhdGEpOworICAgIGlmICghbV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNv
dW50ZXJlZCB8fCAhbV9pbml0aWFsaXphdGlvblNlZ21lbnQpCisgICAgICAgIHJldHVybiBTdGF0
dXMoU3RhdHVzOjpDb2RlKEVycm9yQ29kZTo6SW52YWxpZEluaXRTZWdtZW50KSk7CisKKyAgICBh
dXRvIHRpbWVjb2RlU2NhbGUgPSBpbmZvLnRpbWVjb2RlX3NjYWxlLmlzX3ByZXNlbnQoKSA/IGlu
Zm8udGltZWNvZGVfc2NhbGUudmFsdWUoKSA6IDEwMDAwMDA7CisgICAgbV90aW1lc2NhbGUgPSAx
MDAwMDAwMDAwIC8gdGltZWNvZGVTY2FsZTsKKyAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudC0+
ZHVyYXRpb24gPSBpbmZvLmR1cmF0aW9uLmlzX3ByZXNlbnQoKSA/IE1lZGlhVGltZShpbmZvLmR1
cmF0aW9uLnZhbHVlKCksIG1fdGltZXNjYWxlKSA6IE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUo
KTsKKyAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWRJbmZvOworCisgICAgcmV0dXJuIFN0YXR1cyhT
dGF0dXM6OmtPa0NvbXBsZXRlZCk7Cit9CisKK1N0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
OjpPbkNsdXN0ZXJCZWdpbihjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBD
bHVzdGVyJiBjbHVzdGVyLCBBY3Rpb24qIGFjdGlvbikKK3sKKyAgICBVTlVTRURfUEFSQU0obWV0
YWRhdGEpOworICAgIFVOVVNFRF9QQVJBTShjbHVzdGVyKTsKKyAgICBBU1NFUlQoYWN0aW9uKTsK
KyAgICBpZiAoIWFjdGlvbikKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91
Z2hNZW1vcnkpOworCisgICAgaWYgKG1faW5pdGlhbGl6YXRpb25TZWdtZW50RW5jb3VudGVyZWQg
JiYgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKSB7CisgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5pdGlh
bGl6YXRpb25TZWdtZW50ID0gV1RGTW92ZSgqbV9pbml0aWFsaXphdGlvblNlZ21lbnQpXSAoKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFj
ayhXVEZNb3ZlKGluaXRpYWxpemF0aW9uU2VnbWVudCkpOworICAgICAgICB9KTsKKyAgICB9Cisg
ICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCA9IGZhbHNlOworICAgIG1faW5p
dGlhbGl6YXRpb25TZWdtZW50ID0gbnVsbHB0cjsKKworICAgICphY3Rpb24gPSBBY3Rpb246OmtS
ZWFkOworCisgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7Cit9CisKK1N0
YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblRyYWNrRW50cnkoY29uc3QgRWxlbWVudE1l
dGFkYXRhJiBtZXRhZGF0YSwgY29uc3QgVHJhY2tFbnRyeSYgdHJhY2tFbnRyeSkKK3sKKyAgICBV
TlVTRURfUEFSQU0obWV0YWRhdGEpOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZFRyYWNrOwor
ICAgIGlmICghdHJhY2tFbnRyeS50cmFja190eXBlLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgcmV0
dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CisKKyAgICBhdXRvIHRyYWNrVHlwZSA9
IHRyYWNrRW50cnkudHJhY2tfdHlwZS52YWx1ZSgpOworICAgIGlmICh0cmFja1R5cGUgPT0gVHJh
Y2tUeXBlOjprVmlkZW8pCisgICAgICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50LT52aWRlb1Ry
YWNrcy5hcHBlbmQoeyBNZWRpYURlc2NyaXB0aW9uV2ViTTo6Y3JlYXRlKFRyYWNrRW50cnkodHJh
Y2tFbnRyeSkpLCBWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZShUcmFja0VudHJ5KHRyYWNr
RW50cnkpKSB9KTsKKyAgICBlbHNlIGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprQXVkaW8p
CisgICAgICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50LT5hdWRpb1RyYWNrcy5hcHBlbmQoeyBN
ZWRpYURlc2NyaXB0aW9uV2ViTTo6Y3JlYXRlKFRyYWNrRW50cnkodHJhY2tFbnRyeSkpLCBBdWRp
b1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZShUcmFja0VudHJ5KHRyYWNrRW50cnkpKSB9KTsKKwor
ICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQ3MWMyNjg1MGQwOWQxYjhmMmFlZjZi
NDIzYjU5ZmRlODA2MTUzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaApAQCAtMCwwICsxLDEw
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU291cmNlQnVmZmVy
UGFyc2VyLmgiCisjaW5jbHVkZSA8d2VibS9jYWxsYmFjay5oPgorI2luY2x1ZGUgPHdlYm0vc3Rh
dHVzLmg+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+
CisjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVl
Q01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOworCituYW1lc3BhY2Ugd2VibSB7Citj
bGFzcyBXZWJtUGFyc2VyOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0gOiBwdWJsaWMgU291cmNlQnVmZmVyUGFyc2VyLCBwcml2YXRlIHdl
Ym06OkNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBpc0NvbnRlbnRUeXBlU3Vw
cG9ydGVkKGNvbnN0IENvbnRlbnRUeXBlJik7CisKKyAgICBTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
KCk7CisgICAgflNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKTsKKworICAgIHN0YXRpYyBib29sIGlz
QXZhaWxhYmxlKCk7CisKKyAgICBjb25zdCB3ZWJtOjpTdGF0dXMmIHN0YXR1cygpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdHVzOyB9CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBUeXBl
OjpXZWJNOyB9CisgICAgdm9pZCBhcHBlbmREYXRhKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmLCBB
cHBlbmRGbGFncyA9IEFwcGVuZEZsYWdzOjpOb25lKSBmaW5hbDsKKyAgICB2b2lkIGZsdXNoUGVu
ZGluZ01lZGlhRGF0YSgpIGZpbmFsOworICAgIHZvaWQgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0
YUZvclRyYWNrSUQoYm9vbCwgaW50MzJfdCkgZmluYWw7CisgICAgYm9vbCBzaG91bGRQcm92aWRl
TWVkaWFkYXRhRm9yVHJhY2tJRChpbnQzMl90KSBmaW5hbDsKKyAgICB2b2lkIHJlc2V0UGFyc2Vy
U3RhdGUoKSBmaW5hbDsKKworICAgIGVudW0gY2xhc3MgRXJyb3JDb2RlIDogaW50MzJfdCB7Cisg
ICAgICAgIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk1FcnJvckNvZGVTdGFydCA9IDIwMDAsCisgICAg
ICAgIEludmFsaWREb2NUeXBlLAorICAgICAgICBJbnZhbGlkSW5pdFNlZ21lbnQsCisgICAgfTsK
KworcHJpdmF0ZToKKyAgICAvLyB3ZWJtOjpDYWxsYmFjaworICAgIHdlYm06OlN0YXR1cyBPbkVs
ZW1lbnRCZWdpbihjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmLCB3ZWJtOjpBY3Rpb24qKSBm
aW5hbDsKKyAgICB3ZWJtOjpTdGF0dXMgT25FYm1sKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0
YSYsIGNvbnN0IHdlYm06OkVibWwmKSBmaW5hbDsKKyAgICB3ZWJtOjpTdGF0dXMgT25TZWdtZW50
QmVnaW4oY29uc3Qgd2VibTo6RWxlbWVudE1ldGFkYXRhJiwgd2VibTo6QWN0aW9uKikgZmluYWw7
CisgICAgd2VibTo6U3RhdHVzIE9uSW5mbyhjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmLCBj
b25zdCB3ZWJtOjpJbmZvJikgZmluYWw7CisgICAgd2VibTo6U3RhdHVzIE9uQ2x1c3RlckJlZ2lu
KGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYsIGNvbnN0IHdlYm06OkNsdXN0ZXImLCB3ZWJt
OjpBY3Rpb24qKSBmaW5hbDsKKyAgICB3ZWJtOjpTdGF0dXMgT25UcmFja0VudHJ5KGNvbnN0IHdl
Ym06OkVsZW1lbnRNZXRhZGF0YSYsIGNvbnN0IHdlYm06OlRyYWNrRW50cnkmKSBmaW5hbDsKKwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbml0aWFsaXphdGlvblNlZ21lbnQ+IG1faW5pdGlhbGl6YXRp
b25TZWdtZW50OworICAgIHdlYm06OlN0YXR1cyBtX3N0YXR1czsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8d2VibTo6V2VibVBhcnNlcj4gbV9wYXJzZXI7CisgICAgYm9vbCBtX2luaXRpYWxpemF0aW9u
U2VnbWVudEVuY291bnRlcmVkIHsgZmFsc2UgfTsKKyAgICB1aW50MzJfdCBtX3RpbWVzY2FsZSB7
IDEwMDAgfTsKKworICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsKKyAgICAgICAgTm9u
ZSwKKyAgICAgICAgUmVhZGluZ0VibWwsCisgICAgICAgIFJlYWRFYm1sLAorICAgICAgICBSZWFk
aW5nU2VnbWVudCwKKyAgICAgICAgUmVhZGluZ0luZm8sCisgICAgICAgIFJlYWRJbmZvLAorICAg
ICAgICBSZWFkaW5nVHJhY2tzLAorICAgICAgICBSZWFkaW5nVHJhY2ssCisgICAgICAgIFJlYWRU
cmFjaywKKyAgICAgICAgUmVhZGluZ0NsdXN0ZXIsCisgICAgfTsKKyAgICBTdGF0ZSBtX3N0YXRl
IHsgU3RhdGU6Ok5vbmUgfTsKKworICAgIFZlY3Rvcjx3ZWJtOjpUcmFja0VudHJ5PiBtX3RyYWNr
czsKK307CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQYXJzZXImIHBhcnNlcikgeyByZXR1cm4gcGFyc2VyLnR5cGUoKSA9PSBX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlR5cGU6OldlYk07IH0KK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0KaW5kZXggNTY4NTk1MzNkZWI2YWVj
YzkwYzU3ZTE5NTEyY2ZkZDhlMGUyZTRiMS4uMGM3ZWQyY2E5YjdlZTcxOWExNWI1MGYyZjUyMjQ3
Y2Y3YWVkZWIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0KQEAgLTEyMiw3ICsxMjIsNyBAQCBi
b29sIHZhbGlkYXRlVlBQYXJhbWV0ZXJzKFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkJiBjb2Rl
Y0NvbmZpZ3VyYXRpb24sIE1lZGlhQwogICAgICAgICBpbmZvLnBvd2VyRWZmaWNpZW50ID0gdHJ1
ZTsKIAogICAgICAgICAvLyBIVyBWUDkgRGVjb2RlciBzdXBwb3J0cyBQcm9maWxlIDAgJiAyOgot
ICAgICAgICBpZiAoIWNvZGVjQ29uZmlndXJhdGlvbi5wcm9maWxlICYmIGNvZGVjQ29uZmlndXJh
dGlvbi5wcm9maWxlICE9IDIpCisgICAgICAgIGlmIChjb2RlY0NvbmZpZ3VyYXRpb24ucHJvZmls
ZSAmJiBjb2RlY0NvbmZpZ3VyYXRpb24ucHJvZmlsZSAhPSAyKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgICAgIC8vIEhXIFZQOSBEZWNvZGVyIHN1cHBvcnRzIHVwIHRvIExldmVs
IDY6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9W
aWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjliNTc2OTI4
Nzg1YTIwYmZhMGRkNTAzNDU2Mjc0M2MyNzg1OTJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNw
cApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlV2ViTS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1JlZjxWaWRlb1RyYWNrUHJpdmF0ZVdlYk0+IFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6Y3JlYXRl
KHdlYm06OlRyYWNrRW50cnkmJiB0cmFja0VudHJ5KQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFZpZGVvVHJhY2tQcml2YXRlV2ViTShXVEZNb3ZlKHRyYWNrRW50cnkpKSk7Cit9CisKK1Zp
ZGVvVHJhY2tQcml2YXRlV2ViTTo6VmlkZW9UcmFja1ByaXZhdGVXZWJNKHdlYm06OlRyYWNrRW50
cnkmJiB0cmFja0VudHJ5KQorICAgIDogbV90cmFjayhXVEZNb3ZlKHRyYWNrRW50cnkpKQorewor
ICAgIGlmIChtX3RyYWNrLmlzX2VuYWJsZWQuaXNfcHJlc2VudCgpKQorICAgICAgICBzZXRTZWxl
Y3RlZChtX3RyYWNrLmlzX2VuYWJsZWQudmFsdWUoKSk7Cit9CisKK0F0b21TdHJpbmcgVmlkZW9U
cmFja1ByaXZhdGVXZWJNOjppZCgpIGNvbnN0Cit7CisgICAgaWYgKG1fdHJhY2tJRC5pc051bGwo
KSkKKyAgICAgICAgbV90cmFja0lEID0gbV90cmFjay50cmFja191aWQuaXNfcHJlc2VudCgpID8g
QXRvbVN0cmluZzo6bnVtYmVyKG1fdHJhY2sudHJhY2tfdWlkLnZhbHVlKCkpIDogZW1wdHlBdG9t
KCk7CisgICAgcmV0dXJuIG1fdHJhY2tJRDsKK30KKworQXRvbVN0cmluZyBWaWRlb1RyYWNrUHJp
dmF0ZVdlYk06OmxhYmVsKCkgY29uc3QKK3sKKyAgICBpZiAobV9sYWJlbC5pc051bGwoKSkKKyAg
ICAgICAgbV9sYWJlbCA9IG1fdHJhY2submFtZS5pc19wcmVzZW50KCkgPyBBdG9tU3RyaW5nOjpm
cm9tVVRGOChtX3RyYWNrLm5hbWUudmFsdWUoKS5kYXRhKCksIG1fdHJhY2submFtZS52YWx1ZSgp
Lmxlbmd0aCgpKSA6IGVtcHR5QXRvbSgpOworICAgIHJldHVybiBtX2xhYmVsOworfQorCitBdG9t
U3RyaW5nIFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6bGFuZ3VhZ2UoKSBjb25zdAoreworICAgIGlm
IChtX2xhbmd1YWdlLmlzTnVsbCgpKQorICAgICAgICBtX2xhbmd1YWdlID0gbV90cmFjay5sYW5n
dWFnZS5pc19wcmVzZW50KCkgPyBBdG9tU3RyaW5nOjpmcm9tVVRGOChtX3RyYWNrLmxhbmd1YWdl
LnZhbHVlKCkuZGF0YSgpLCBtX3RyYWNrLmxhbmd1YWdlLnZhbHVlKCkubGVuZ3RoKCkpIDogZW1w
dHlBdG9tKCk7CisgICAgcmV0dXJuIG1fbGFuZ3VhZ2U7Cit9CisKK2ludCBWaWRlb1RyYWNrUHJp
dmF0ZVdlYk06OnRyYWNrSW5kZXgoKSBjb25zdAoreworICAgIGlmIChtX3RyYWNrLnRyYWNrX251
bWJlci5pc19wcmVzZW50KCkpCisgICAgICAgIHJldHVybiBtX3RyYWNrLnRyYWNrX251bWJlci52
YWx1ZSgpOworICAgIHJldHVybiAwOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBiYmZmMmJhMWRkN2U1YjIxNWZhODQ1Y2I4YjVjN2RjMTk4MDI0YmUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9W
aWRlb1RyYWNrUHJpdmF0ZVdlYk0uaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHdl
Ym0vZG9tX3R5cGVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVmlkZW9UcmFj
a1ByaXZhdGVXZWJNIGZpbmFsIDogcHVibGljIFZpZGVvVHJhY2tQcml2YXRlIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPFZpZGVvVHJhY2tQcml2YXRlV2ViTT4gY3JlYXRlKHdlYm06OlRyYWNr
RW50cnkmJik7CisgICAgdmlydHVhbCB+VmlkZW9UcmFja1ByaXZhdGVXZWJNKCkgPSBkZWZhdWx0
OworCisgICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IGZpbmFsOworICAgIEF0b21TdHJpbmcgbGFi
ZWwoKSBjb25zdCBmaW5hbDsKKyAgICBBdG9tU3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgZmluYWw7
CisgICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBWaWRl
b1RyYWNrUHJpdmF0ZVdlYk0od2VibTo6VHJhY2tFbnRyeSYmKTsKKyAgICB3ZWJtOjpUcmFja0Vu
dHJ5IG1fdHJhY2s7CisgICAgbXV0YWJsZSBBdG9tU3RyaW5nIG1fdHJhY2tJRDsKKyAgICBtdXRh
YmxlIEF0b21TdHJpbmcgbV9sYWJlbDsKKyAgICBtdXRhYmxlIEF0b21TdHJpbmcgbV9sYW5ndWFn
ZTsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVu
Y2VzLnlhbWwgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmluZGV4
IGUwNGNhZGNhMmRjNWE4YzQxOWI3MmZhMTllZTczZmU3M2ExMGI2MDEuLjE5ODQzZWIwZDM2OTYz
Y2UzZmNjZTUxMzU5MDQ1YzAyZDliMDUzZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJl
ZmVyZW5jZXMueWFtbApAQCAtNjY4LDYgKzY2OCwxNCBAQCBWUDlEZWNvZGVyRW5hYmxlZDoKICAg
aHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIFZQOSBkZWNvZGVyIgogICBjYXRlZ29y
eTogZXhwZXJpbWVudGFsCiAKK1dlYk1QYXJzZXJFbmFibGVkOgorICB0eXBlOiBib29sCisgIGRl
ZmF1bHRWYWx1ZTogZmFsc2UKKyAgd2ViY29yZUJpbmRpbmc6IFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXMKKyAgaHVtYW5SZWFkYWJsZU5hbWU6ICJXZWJNIE1TRSBwYXJzZXIiCisgIGh1bWFuUmVhZGFi
bGVEZXNjcmlwdGlvbjogIkVuYWJsZSBXZWJNIE1TRSBwYXJzZXIiCisgIGNhdGVnb3J5OiBleHBl
cmltZW50YWwKKwogVXNlTGVnYWN5VGV4dEFsaWduUG9zaXRpb25lZEVsZW1lbnRCZWhhdmlvcjoK
ICAgdHlwZTogYm9vbAogICBkZWZhdWx0VmFsdWU6IGZhbHNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404659</attachid>
            <date>2020-07-19 01:15:09 -0700</date>
            <delta_ts>2020-07-19 01:25:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214529-20200719011508.patch</filename>
            <type>text/plain</type>
            <size>138807</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBhY2ZhNzFkMTE0MWY2M2Q0ZWYxMGJkMmY2NjE5YzcxYTNhNWU4ZTQxLi41MGE1
MmNkNTIxZDljMGEzYzQ3N2U5MzhkZTc5MmNiZDdiNjVlYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNy0xOSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBleHBlcmltZW50
YWwgTVNFIFdlYk0gcGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTQ1MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUd28gZHJpdmUtYnkgZml4ZXM6IEFkZCBzb21lIG1pc3NpbmcgZXhwb3J0IHRv
IHRoZSBsaWJ3ZWJydGMuKi5leHAgZmlsZXMsIGFuZCBleHBvcnQgdGhlIHdlYm0gaGVhZGVycwor
ICAgICAgICBhcyBQcml2YXRlLCBub3QgUHVibGljLCBzbyB0aGV5J3JlIHB1dCBpbiB0aGUgY29y
cmVjdCBkaXJlY3RvcnkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9T
LmV4cDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBsaWJ3
ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wNy0xNyAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldml3ZWQgYnVpbGQgZml4IGFm
dGVyIHIyNjU1OTI7IHJhdGhlciB0aGFuIHJlbW92ZSB0aGUgZGVhZCBjb2RlIGNhdXNpbmcgbGlu
ayBlcnJvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMzdjZDRhNGM4YzYwYmM0ZjViOTkxZGQyOGJkMDIxOThj
ZjQzMmE4Li43Mzc4Mjc4MTVlNDIyYzVlNTllMGIxZWE0ZGU2MTA5YmJhNDlhNGEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQ0IEBACisyMDIwLTA3LTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIGV4cGVyaW1lbnRhbCBNU0UgV2ViTSBw
YXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NDUyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgeWV0IHBhcnNlIGFjdHVhbCBtZWRpYSBzYW1wbGVz
OyBhcyBvZiB5ZXQgaXQgb25seSBwYXJzZXMgYXVkaW8gYW5kIHZpZGVvCisgICAgICAgIHRyYWNr
IGluZm9ybWF0aW9uLiBNZWRpYSBzYW1wbGUgcGFyc2luZyBpcyB1cGNvbWluZy4KKworICAgICAg
ICBBZGQgYW4gZXhwZXJpbWVudGFsIE1TRSBXZWJNIHBhcnNlciB0byBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy4gVGhpcyB3aWxsIHJlcXVpcmUgZXh0ZW5zaXZlIHJlZmFjdG9yaW5nCisgICAg
ICAgIG9mIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLCB0byBleHRyYWN0IG91dCB0aGUgcGFy
c2VyIGludG8gYSBuZXcsIHZpcnR1YWxpemVkIGNsYXNzLiBUaGlzIG5ldyBwYXJzZXIgY2FuCisg
ICAgICAgIHRha2UgYWR2YW50YWdlIG9mIG5ldyBDKys+MTEgZmVhdHVyZXMgc3VjaCBhcyBsYW1i
ZGFzIHRvIGNsZWFuIHVwIHNvbWUgcHJvYmxlbWF0aWMgZXhpc3RpbmcgY29kZS4gVGhlIG5ldwor
ICAgICAgICB2aXJ0dWFsaXplZCBTb3VyY2VCdWZmZXJQYXJzZXIgY2xhc3MgdXNlcyBwYXNzZWQt
aW4gRnVuY3Rpb24gb2JqZWN0cywgcmF0aGVyIHRoYW4gcHVyZS12aXJ0dWFsIENsaWVudCBjbGFz
c2VzCisgICAgICAgIHRvIG5vdGlmeSBpdCdzIHBhcmVudCBvYmplY3Qgd2hlbiB0aGUgcGFyc2Vy
IGVuY291bnRlcnMgaW5pdGlhbGl6YXRpb24tIG9yIG1lZGlhLWRhdGEuCisKKyAgICAgICAgQmVj
YXVzZSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyB3aWxsIG5vdyBoYXZlIHRvIGRlYWwgd2l0
aCBBdWRpb1RyYWNrUHJpdmF0ZSBhbmQgVmlkZW9UcmFja1ByaXZhdGUgb2JqZWN0cworICAgICAg
ICB0aGF0IGFyZSBub3QgbmVjZXNzYXJpbHkgQXVkaW8tIGFuZCBWaWRlb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyBzdWJjbGFzc2VzLCBtb3ZlIHRob3NlIGNsYXNzZXMgbm90aWZpY2F0
aW9uCisgICAgICAgIGZlYXR1cmVzIHVwIGludG8gQXVkaW8tIGFuZCBWaWRlb1RyYWNrUHJpdmF0
ZSwgYWdhaW4gdXNpbmcgYSBGdW5jdGlvbiBvYmplY3QgcmF0aGVyIHRoYW4gYSBjbGllbnQgY2xh
c3MuCisKKyAgICAgICAgQWRkIGEgbmV3IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0gYW5kIGFzc29j
aWF0ZWQgQXVkaW9UcmFja1ByaXZhdGVXZWJNIGFuZCBWaWRlb1RyYWNrUHJpdmF0ZVdlYm0gY2xh
c2Vzcywgd2hpY2gKKyAgICAgICAgdXNlIGxpYndlYm0gdmlhIGxpYndlYnJ0YyB0byBwYXJzZSBh
cHBlbmRlZCBidWZmZXJzLgorCisgICAgICAgIFRoaXMgZWFybHkgaW1wbGVtZW50YXRpb24gaXMg
bm90IHlldCBhYmxlIHRvIHBhc3MgdGhlIFdlYk0gV1BUIG1lZGlhLXNvdXJjZS8gdGVzdHMsIGFz
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDCisgICAgICAgIHdpbGwgb25seSBjYXVzZSBhICJy
ZXNpemUiIGV2ZW50IHRvIGJlIGZpcmVkIHdoZW4gYSBNZWRpYVNhbXBsZSBpcyBlbnF1ZXVlZCBv
ciBkZWNvZGluZy4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2V0V2ViTVBhcnNlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6d2ViTVBhcnNlckVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Ry
YWNrUHJpdmF0ZTo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJp
dmF0ZTo6c2V0RW5hYmxlZENoYW5nZWRDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQ
cml2YXRlOjpzZXRTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0
ZTo6c2V0U2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0RW5hYmxlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OnN1cHBvcnRzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5oOiBBZGRlZC4KKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbTogQWRkZWQu
CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIGluaXRXaXRoUGFyc2Vy
OnBhcmVudDpdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgZGVh
bGxvY10pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBpbnZhbGlk
YXRlXSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbURh
dGFQYXJzZXI6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldDpdKToKKyAgICAgICAgKC1bV2ViQVZT
dHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3RyZWFtRGF0YVBhcnNlcjpkaWRQYXJzZVN0cmVhbURh
dGFBc0Fzc2V0OndpdGhEaXNjb250aW51aXR5Ol0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURh
dGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0
YVdpdGhFcnJvcjpdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIg
c3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlTWVkaWFEYXRhOmZvclRyYWNrSUQ6bWVkaWFUeXBl
OmZsYWdzOl0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJl
YW1EYXRhUGFyc2VyV2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0
YTpmb3JUcmFja0lEOl0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5l
ciBzdHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YTpmb3JUcmFja0lEOl0pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakM6OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OnNob3VsZFByb3Zp
ZGVNZWRpYWRhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakM6OnJlc2V0UGFyc2VyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldCk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRGYWlsVG9QYXJzZVN0cmVh
bURhdGFXaXRoRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElu
aXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjp+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRFbmNv
dW50ZXJFcnJvckR1cmluZ1BhcnNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRL
ZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmRDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpyZXNldFBhcnNlclN0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkZXN0cm95UGFyc2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjbGVhclRyYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFu
Z2VTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpwYXJzZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmF0dGVtcHRUb0RlY3J5cHQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGVXZWJNOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
a1ByaXZhdGVXZWJNOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk0pOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9UcmFja1ByaXZhdGVXZWJNOjppZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1RyYWNrUHJpdmF0ZVdlYk06OmxhYmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
VHJhY2tQcml2YXRlV2ViTTo6bGFuZ3VhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGVXZWJNOjp0cmFja0luZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OmlzQ29udGVudFR5cGVTdXBw
b3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0RGlkUGFyc2VJ
bml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXI6OnNldERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0RGlkUHJvdmlkZU1lZGlhRGF0
YUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0V2ls
bFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OnNldERpZFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNXZWJtUGFyc2VyQXZhaWxhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OnN1cHBvcnRlZFdlYk1Db2RlY3MpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmFwcGVuZERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6Zmx1c2hQZW5k
aW5nTWVkaWFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lE
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnJlc2V0UGFyc2Vy
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FbGVt
ZW50QmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25F
Ym1sKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uU2VnbWVu
dEJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uSW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkNsdXN0ZXJC
ZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblRyYWNr
RW50cnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpzdGF0dXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6dHlwZSBjb25zdCk6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
dmFsaWRhdGVWUFBhcmFtZXRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFja1ByaXZhdGVXZWJNOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFj
a1ByaXZhdGVXZWJNOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk0pOgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFja1ByaXZhdGVXZWJNOjppZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b1RyYWNrUHJpdmF0ZVdlYk06OmxhYmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
VHJhY2tQcml2YXRlV2ViTTo6bGFuZ3VhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFja1ByaXZhdGVXZWJNOjp0cmFja0luZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaDogQWRkZWQuCisKIDIwMjAt
MDctMTggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIGZpeCBidWlsZCB3YXJuaW5ncyBpbiB0aGUgV2ViWFIgYmFja2VuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAxM2M1YjFlYmE4MzNmYjdhNmQxNjRjN2NhOTdhNTBkNDUxYTU5NDMwLi40M2I4ODc4
OTFhOWNiYzgyMDI3MzIxMmU5ZDc2NGM2NjFmYTc2NDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDIwLTA3LTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAg
ICAgIFtDb2NvYV0gQWRkIGV4cGVyaW1lbnRhbCBNU0UgV2ViTSBwYXJzZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDUyOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhbiBFeHBlcmltZW50YWwg
c2V0dGluZyB0byBlbmFibGUgdGhlIE1TRSBXZWJNIHBhcnNlciAob2ZmIGJ5IGRlZmF1bHQpLgor
CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisKIDIwMjAtMDQtMzAgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIGRhdGEgY29w
aWVzIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgY3VzdG9tIFVSTCBzY2hlbWUgaGFuZGxlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xp
YndlYnJ0Yy5pT1MuZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRp
b25zL2xpYndlYnJ0Yy5pT1MuZXhwCmluZGV4IGQwNGE5MTk2ODZlOWNjODk2N2E4YWFkMDQ2OWM2
ODU1NDY1NzI3OWIuLmE3YmNjN2I1MTRjM2JlNjNhYWRjYTBiMjEyNzFmODE1ZDkwNTQzMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3
ZWJydGMuaU9TLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJh
dGlvbnMvbGlid2VicnRjLmlPUy5leHAKQEAgLTI4MCwxMyArMjgwLDIwIEBAIF9fWlRWTjR3ZWJt
MTJCdWZmZXJSZWFkZXJFCiBfX1pUVk40d2VibThDYWxsYmFja0UKIF9fWk40d2VibThDYWxsYmFj
azEwT25CbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRQogX19aTjR3
ZWJtOENhbGxiYWNrMTBPbkN1ZVBvaW50RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU184Q3Vl
UG9pbnRFCitfX1pONHdlYm04Q2FsbGJhY2sxMk9uQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1l
dGFkYXRhRVJLTlNfNUJsb2NrRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPbkNs
dXN0ZXJFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzdDbHVzdGVyRQogX19aTjR3ZWJt
OENhbGxiYWNrMTJPblNlZ21lbnRFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUUKIF9fWk40d2Vi
bThDYWxsYmFjazEyT25UcmFja0VudHJ5RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMFRy
YWNrRW50cnlFCitfX1pONHdlYm04Q2FsbGJhY2sxNE9uQ2x1c3RlckJlZ2luRVJLTlNfMTVFbGVt
ZW50TWV0YWRhdGFFUktOU183Q2x1c3RlckVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFj
azE0T25FZGl0aW9uRW50cnlFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEyRWRpdGlvbkVu
dHJ5RQorX19aTjR3ZWJtOENhbGxiYWNrMTRPbkVsZW1lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1l
dGFkYXRhRVBOU182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrMTRPblNlZ21lbnRCZWdpbkVS
S05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTVP
bkJsb2NrR3JvdXBFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEwQmxvY2tHcm91cEUK
IF9fWk40d2VibThDYWxsYmFjazE2T25TaW1wbGVCbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFk
YXRhRVJLTlNfMTFTaW1wbGVCbG9ja0UKIF9fWk40d2VibThDYWxsYmFjazE2T25Vbmtub3duRWxl
bWVudEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182UmVhZGVyRVB5CitfX1pONHdlYm04Q2Fs
bGJhY2sxN09uQmxvY2tHcm91cEJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rp
b25FCitfX1pONHdlYm04Q2FsbGJhY2sxOE9uU2ltcGxlQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVu
dE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVCbG9ja0VQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxs
YmFjazRTa2lwRVBOU182UmVhZGVyRVB5CiBfX1pONHdlYm04Q2FsbGJhY2s1T25UYWdFUktOU18x
NUVsZW1lbnRNZXRhZGF0YUVSS05TXzNUYWdFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25FYm1sRVJL
TlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU180RWJtbEUKIF9fWk40d2VibThDYWxsYmFjazZPbklu
Zm9FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzRJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhw
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5p
T1NzaW0uZXhwCmluZGV4IGQwNGE5MTk2ODZlOWNjODk2N2E4YWFkMDQ2OWM2ODU1NDY1NzI3OWIu
LmE3YmNjN2I1MTRjM2JlNjNhYWRjYTBiMjEyNzFmODE1ZDkwNTQzMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2lt
LmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGli
d2VicnRjLmlPU3NpbS5leHAKQEAgLTI4MCwxMyArMjgwLDIwIEBAIF9fWlRWTjR3ZWJtMTJCdWZm
ZXJSZWFkZXJFCiBfX1pUVk40d2VibThDYWxsYmFja0UKIF9fWk40d2VibThDYWxsYmFjazEwT25C
bG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRQogX19aTjR3ZWJtOENh
bGxiYWNrMTBPbkN1ZVBvaW50RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU184Q3VlUG9pbnRF
CitfX1pONHdlYm04Q2FsbGJhY2sxMk9uQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRh
RVJLTlNfNUJsb2NrRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPbkNsdXN0ZXJF
bmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzdDbHVzdGVyRQogX19aTjR3ZWJtOENhbGxi
YWNrMTJPblNlZ21lbnRFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUUKIF9fWk40d2VibThDYWxs
YmFjazEyT25UcmFja0VudHJ5RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMFRyYWNrRW50
cnlFCitfX1pONHdlYm04Q2FsbGJhY2sxNE9uQ2x1c3RlckJlZ2luRVJLTlNfMTVFbGVtZW50TWV0
YWRhdGFFUktOU183Q2x1c3RlckVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFjazE0T25F
ZGl0aW9uRW50cnlFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEyRWRpdGlvbkVudHJ5RQor
X19aTjR3ZWJtOENhbGxiYWNrMTRPbkVsZW1lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRh
RVBOU182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrMTRPblNlZ21lbnRCZWdpbkVSS05TXzE1
RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTVPbkJsb2Nr
R3JvdXBFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEwQmxvY2tHcm91cEUKIF9fWk40
d2VibThDYWxsYmFjazE2T25TaW1wbGVCbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJL
TlNfMTFTaW1wbGVCbG9ja0UKIF9fWk40d2VibThDYWxsYmFjazE2T25Vbmtub3duRWxlbWVudEVS
S05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182UmVhZGVyRVB5CitfX1pONHdlYm04Q2FsbGJhY2sx
N09uQmxvY2tHcm91cEJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rpb25FCitf
X1pONHdlYm04Q2FsbGJhY2sxOE9uU2ltcGxlQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFk
YXRhRVJLTlNfMTFTaW1wbGVCbG9ja0VQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxsYmFjazRT
a2lwRVBOU182UmVhZGVyRVB5CiBfX1pONHdlYm04Q2FsbGJhY2s1T25UYWdFUktOU18xNUVsZW1l
bnRNZXRhZGF0YUVSS05TXzNUYWdFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25FYm1sRVJLTlNfMTVF
bGVtZW50TWV0YWRhdGFFUktOU180RWJtbEUKIF9fWk40d2VibThDYWxsYmFjazZPbkluZm9FUktO
U18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzRJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCmlu
ZGV4IDhkODViNWI4YjM3NTRhZGRlZmRlN2MyNGYyZjIwYTQ2NTgzNjZhY2QuLmY4Y2M5MTMxNmJj
ZGMwOTYwNTgyYjNmM2NhNDE2NWIyZWFjMjcyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAK
QEAgLTI3OCwxMyArMjc4LDIwIEBAIF9fWlRWTjR3ZWJtMTJCdWZmZXJSZWFkZXJFCiBfX1pUVk40
d2VibThDYWxsYmFja0UKIF9fWk40d2VibThDYWxsYmFjazEwT25CbG9ja0VuZEVSS05TXzE1RWxl
bWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRQogX19aTjR3ZWJtOENhbGxiYWNrMTBPbkN1ZVBvaW50
RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU184Q3VlUG9pbnRFCitfX1pONHdlYm04Q2FsbGJh
Y2sxMk9uQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRVBOU182
QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPbkNsdXN0ZXJFbmRFUktOU18xNUVsZW1lbnRN
ZXRhZGF0YUVSS05TXzdDbHVzdGVyRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPblNlZ21lbnRFbmRF
UktOU18xNUVsZW1lbnRNZXRhZGF0YUUKIF9fWk40d2VibThDYWxsYmFjazEyT25UcmFja0VudHJ5
RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMFRyYWNrRW50cnlFCitfX1pONHdlYm04Q2Fs
bGJhY2sxNE9uQ2x1c3RlckJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU183Q2x1c3Rl
ckVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFjazE0T25FZGl0aW9uRW50cnlFUktOU18x
NUVsZW1lbnRNZXRhZGF0YUVSS05TXzEyRWRpdGlvbkVudHJ5RQorX19aTjR3ZWJtOENhbGxiYWNr
MTRPbkVsZW1lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQorX19a
TjR3ZWJtOENhbGxiYWNrMTRPblNlZ21lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBO
U182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTVPbkJsb2NrR3JvdXBFbmRFUktOU18xNUVs
ZW1lbnRNZXRhZGF0YUVSS05TXzEwQmxvY2tHcm91cEUKIF9fWk40d2VibThDYWxsYmFjazE2T25T
aW1wbGVCbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVCbG9ja0UK
IF9fWk40d2VibThDYWxsYmFjazE2T25Vbmtub3duRWxlbWVudEVSS05TXzE1RWxlbWVudE1ldGFk
YXRhRVBOU182UmVhZGVyRVB5CitfX1pONHdlYm04Q2FsbGJhY2sxN09uQmxvY2tHcm91cEJlZ2lu
RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rpb25FCitfX1pONHdlYm04Q2FsbGJhY2sx
OE9uU2ltcGxlQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVC
bG9ja0VQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxsYmFjazRTa2lwRVBOU182UmVhZGVyRVB5
CiBfX1pONHdlYm04Q2FsbGJhY2s1T25UYWdFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzNU
YWdFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25FYm1sRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktO
U180RWJtbEUKIF9fWk40d2VibThDYWxsYmFjazZPbkluZm9FUktOU18xNUVsZW1lbnRNZXRhZGF0
YUVSS05TXzRJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL2xp
YndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRkYTczYTFi
ZmI0MTAzYTFmN2FhNDE0MzQ5ZmUwYWZhZWJjMGM4YWEuLjIyNjgyYmM1Yzk5NjY2Yjg3ZGE0ZDFk
MWQwZjZmNmI2NmFmZjBiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4
NTMsMTYgKzM4NTMsMTYgQEAKIAkJNUNGRDUzOTIxRTRCRDNBMzAwNDgyOTA4IC8qIHJvd19uZW9u
NjQuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZE
NTM4QTFFNEJEM0EzMDA0ODI5MDggLyogcm93X25lb242NC5jYyAqLzsgfTsKIAkJNUNGRDUzOTMx
RTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb24uY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZENTM4QjFFNEJEM0EzMDA0ODI5MDggLyogc2NhbGVf
bmVvbi5jYyAqLzsgfTsKIAkJNUNGRDUzOTQxRTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb242
NC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRkQ1
MzhDMUU0QkQzQTMwMDQ4MjkwOCAvKiBzY2FsZV9uZW9uNjQuY2MgKi87IH07Ci0JCUNERUJCNEFD
MjRDMDE5OUQwMEFEQkQ0NCAvKiB3ZWJtX3BhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MDgyNEMwMTkxQTAwQURCRDQ0IC8qIHdlYm1f
cGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9Owot
CQlDREVCQjRBRDI0QzAxOTlEMDBBREJENDQgLyogYnVmZmVyX3JlYWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MEQyNEMwMTkxQTAwQURC
RDQ0IC8qIGJ1ZmZlcl9yZWFkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07Ci0JCUNERUJCNEFFMjRDMDE5OUQwMEFEQkQ0NCAvKiBpZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MEEyNEMwMTkxQTAw
QURCRDQ0IC8qIGlkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9
OyB9OwotCQlDREVCQjRBRjI0QzAxOTlEMDBBREJENDQgLyogaXN0cmVhbV9yZWFkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDA5MjRDMDE5
MUEwMEFEQkQ0NCAvKiBpc3RyZWFtX3JlYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjAyNEMwMTk5RDAwQURCRDQ0IC8qIGRvbV90
eXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RF
QkI0MEIyNEMwMTkxQTAwQURCRDQ0IC8qIGRvbV90eXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjEyNEMwMTk5RDAwQURCRDQ0IC8q
IGVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENERUJCNDBDMjRDMDE5MUEwMEFEQkQ0NCAvKiBlbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCMjI0QzAxOTlEMDBBREJENDQg
Lyogc3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREVCQjQwNjI0QzAxOTFBMDBBREJENDQgLyogc3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCMzI0QzAxOTlEMDBBREJENDQg
LyogcmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREVCQjQwNTI0QzAxOTFBMDBBREJENDQgLyogcmVhZGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCNDI0QzAxOTlEMDBBREJENDQg
LyogZmlsZV9yZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENERUJCNDA3MjRDMDE5MUEwMEFEQkQ0NCAvKiBmaWxlX3JlYWRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjUyNEMwMTk5
RDAwQURCRDQ0IC8qIGNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREVCQjQwRTI0QzAxOTFBMDBBREJENDQgLyogY2FsbGJhY2suaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCUNERUJCNEFDMjRD
MDE5OUQwMEFEQkQ0NCAvKiB3ZWJtX3BhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MDgyNEMwMTkxQTAwQURCRDQ0IC8qIHdlYm1fcGFy
c2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
Q0RFQkI0QUQyNEMwMTk5RDAwQURCRDQ0IC8qIGJ1ZmZlcl9yZWFkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDBEMjRDMDE5MUEwMEFEQkQ0
NCAvKiBidWZmZXJfcmVhZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQ0RFQkI0QUUyNEMwMTk5RDAwQURCRDQ0IC8qIGlkLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwQTI0QzAxOTFBMDBB
REJENDQgLyogaWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlDREVCQjRBRjI0QzAxOTlEMDBBREJENDQgLyogaXN0cmVhbV9yZWFkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDA5MjRDMDE5
MUEwMEFEQkQ0NCAvKiBpc3RyZWFtX3JlYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUNERUJCNEIwMjRDMDE5OUQwMEFEQkQ0NCAvKiBkb21f
dHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
RUJCNDBCMjRDMDE5MUEwMEFEQkQ0NCAvKiBkb21fdHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREVCQjRCMTI0QzAxOTlEMDBBREJENDQg
LyogZWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RFQkI0MEMyNEMwMTkxQTAwQURCRDQ0IC8qIGVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREVCQjRCMjI0QzAxOTlEMDBBREJE
NDQgLyogc3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREVCQjQwNjI0QzAxOTFBMDBBREJENDQgLyogc3RhdHVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RFQkI0QjMyNEMwMTk5RDAwQURC
RDQ0IC8qIHJlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RFQkI0MDUyNEMwMTkxQTAwQURCRDQ0IC8qIHJlYWRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNERUJCNEI0MjRDMDE5OUQwMEFE
QkQ0NCAvKiBmaWxlX3JlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RFQkI0MDcyNEMwMTkxQTAwQURCRDQ0IC8qIGZpbGVfcmVhZGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RFQkI0QjUy
NEMwMTk5RDAwQURCRDQ0IC8qIGNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwRTI0QzAxOTFBMDBBREJENDQgLyogY2FsbGJhY2su
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDREVC
QjRCNjI0QzAxOUM0MDBBREJENDQgLyogdW5rbm93bl9wYXJzZXIuY2MgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQ2NDI0QzAxOTFBMDBBREJENDQg
LyogdW5rbm93bl9wYXJzZXIuY2MgKi87IH07CiAJCUNERUJCNEI3MjRDMDE5QzQwMEFEQkQ0NCAv
KiBtYXN0ZXJfcGFyc2VyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RFQkI0NkYyNEMwMTkxQTAwQURCRDQ0IC8qIG1hc3Rlcl9wYXJzZXIuY2MgKi87
IH07CiAJCUNERUJCNEI4MjRDMDE5QzQwMEFEQkQ0NCAvKiBibG9ja19wYXJzZXIuY2MgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQ3NjI0QzAxOTFB
MDBBREJENDQgLyogYmxvY2tfcGFyc2VyLmNjICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggMWQ3ZjIwOTg2N2MxZDRlMGE0Mjc0Njk3NjU1ZjhkMWIxMzZkYWQwZS4uZGMzZmYyNTg0
MWE5MjUzM2JlZThkMDU4MTYxOGFiMjBjNzBjOTlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CkBAIC0yOTEsNiArMjkxLDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIEBuby0KIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbSBAbm8tdW5pZnkK
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBAbm8tdW5pZnkKK3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gQG5vLXVuaWZ5
CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9i
akMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRl
b1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gQG5v
LXVuaWZ5CkBAIC0zMzMsNiArMzM0LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNH
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlv
VHJhY2tQcml2YXRlV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2Eu
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zsb2F0UmVjdENvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTM0OCw2ICszNTAsOCBAQCBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVj
dENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29h
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbQpAQCAtMzU2
LDYgKzM2MCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFz
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24u
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYkdQVUxheWVyLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1Ry
YWNrUHJpdmF0ZVdlYk0uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vz
c2lvblZULm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ODZmY2RlYzA1
ODYwMjIyYmYwMzQwMmE3MTZhZDJmNDZiMDBjNTc4Li44MmZkZWVjZGVkOGJhYjZmYjA5ZWIyZTQy
ZDY2NmVhYTQyMjUyZDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MjY3LDYgKzQyNjcsNyBAQAogCQlDREY2NUNDQTE0NUI0
NDg4MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY2NUNDOTE0NUI0M0E3MDBDNEM3QUEg
LyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RGNzQ4M0YxOEZFQkNFQzAwMDZFQ0MwIC8qIEdyaWRQ
b3NpdGlvbnNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RGNzQ4M0QxOEZFQkNFQzAwMDZFQ0MwIC8qIEdyaWRQb3NpdGlvbnNSZXNvbHZl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNE
Rjc1NkEzMjE1QzI5RTkwMEVGQ0I1MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNzU2QTEyMTVD
MjlFOTAwRUZDQjUwIC8qIEpTTWVkaWFLZXlFbmNyeXB0aW9uU2NoZW1lLmggKi87IH07CisJCUNE
Rjk5NEZEMjRDMTVGRTMwMDJFQTA2MiAvKiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGOTk0RkIyNEMx
MkE2QTAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gKi87IH07CiAJCUNE
RkMzNjA2MThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERkMzNjA0MThDQTYxQzIw
MDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTA1N0ZBNjEyMjA3MzExMDBBNDc2RDUgLyog
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRTA1N0ZBNDEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
MDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKQEAgLTE0MTY2LDYgKzE0MTY3LDgg
QEAKIAkJQ0Q4QzZDMjkyMkZEREE5MTAwQTcyMEFCIC8qIEpTUmVtb3RlUGxheWJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNSZW1vdGVQbGF5YmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDhEMzA2RDIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDRE1Mb2dnaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOEQzMDZF
MjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENE
TUxvZ2dpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDhGNjY3MDI0QzBG
MjA4MDAwQzQyMUMgLyogU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0Q4RjY2NzIyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDkyRjUwRjIyNjBGRkVFMDBGODdCQjMgLyogRG9jdW1lbnRGdWxs
c2NyZWVuLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBEb2N1bWVudEZ1bGxzY3JlZW4uaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDkyRjUxMDIyNjBGRkVFMDBGODdCQjMgLyogRG9jdW1lbnRGdWxsc2Ny
ZWVuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50RnVsbHNjcmVlbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDkyRjUxNjIyNjEwMzgyMDBGODdCQjMgLyogRnVsbHNjcmVlbk1h
bmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVsbHNjcmVlbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MzQ2LDYgKzE0MzQ5LDggQEAKIAkJQ0RFOEI1RUYxQTY5Nzc4
QjAwQjRCNjZBIC8qIExlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTdDODIxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxT
Y3JlZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyRnVsbFNjcmVl
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBN0M4MzEyNzYyMzA0MDBCODQ2
REQgLyogUmVuZGVyRnVsbFNjcmVlbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW5kZXJGdWxsU2NyZWVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RFQjNENzIyNEM0MUE2RTAwMUZCRUVGIC8qIFNvdXJjZUJ1ZmZlclBhcnNlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTb3VyY2VCdWZmZXJQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREVCM0Q3MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFy
c2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZUJ1ZmZlclBhcnNlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDREVDQTg5ODFFREY0NDdEMDBEQ0IwOEIgLyogQVZBc3NldFRyYWNr
VXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVZBc3NldFRyYWNrVXRpbGl0aWVz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVDQTg5OTFFREY0NDdEMDBEQ0Iw
OEIgLyogQVZBc3NldFRyYWNrVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFWQXNzZXRUcmFj
a1V0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVFMzkzNjE3OTc0
MjU5MDAxRDc1ODAgLyogUHVibGljVVJMTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQdWJsaWNVUkxNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE0Mzg0LDYgKzE0Mzg5LDEyIEBACiAJCUNERjc1NjlFMjE1QzI4NUUwMEVG
Q0I1MCAvKiBNZWRpYUtleUVuY3J5cHRpb25TY2hlbWUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhS2V5RW5jcnlw
dGlvblNjaGVtZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERjc1NkEwMjE1
QzI5RTgwMEVGQ0I1MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERjc1NkExMjE1QzI5RTkwMEVGQ0I1
MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREY5OTRGQTI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjk5NEZCMjRDMTJBNkEwMDJFQTA2MiAv
KiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RGOTk0RkUyNEMyODEzNjAwMkVBMDYyIC8qIFZpZGVvVHJhY2tQcml2YXRlV2ViTS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RGOTk0RkYyNEMyODEzNjAwMkVBMDYyIC8qIFZpZGVvVHJhY2tQcml2YXRlV2Vi
TS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY5OTUwMDI0QzI4MTQ5MDAyRUEwNjIgLyogQXVk
aW9UcmFja1ByaXZhdGVXZWJNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRlV2Vi
TS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY5OTUwMTI0QzI4MTQ5MDAyRUEw
NjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlv
VHJhY2tQcml2YXRlV2ViTS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERkMz
NjAxMThDQTYxNjMwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERkMzNjAyMThDQTYxNjMwMDI2RTU2RiAvKiBS
ZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNERkMzNjAzMThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlz
dGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ29t
bWFuZExpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1ODcxLDYg
KzI1ODgyLDggQEAKIAkJQjUzMjBENjgxMjJBMjRFOTAwMkQxNDQwIC8qIGNvY29hICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDREY5OTUwMTI0QzI4MTQ5
MDAyRUEwNjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcCAqLywKKwkJCQlDREY5OTUwMDI0
QzI4MTQ5MDAyRUEwNjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmggKi8sCiAJCQkJRjQ4RDJB
QTMyMTU5NzQwRDAwQzY3NTJCIC8qIENvbG9yQ29jb2EuaCAqLywKIAkJCQlGNDhEMkFBNDIxNTk3
NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5tbSAqLywKIAkJCQlCMjc1MzU0QzBCMDUzODE0MDAy
Q0U2NEYgLyogRmxvYXRSZWN0Q29jb2EubW0gKi8sCkBAIC0yNTg5MiwxMCArMjU5MDUsMTYgQEAK
IAkJCQlBRDlGRjZFMDE5MDgzOTFEMDAzQjYxRTAgLyogSU9TdXJmYWNlUG9vbENvY29hLm1tICov
LAogCQkJCUNEQzQ4QUM4MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuY3BwICovLAogCQkJCUNEQzQ4QUM3MjE0OUNGMkEwMDI0RkQ1OSAvKiBN
ZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuaCAqLywKKwkJCQlDREVCM0Q3MjI0
QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmNwcCAqLywKKwkJCQlDREVCM0Q3
MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmggKi8sCisJCQkJQ0Q4RjY2
NzAyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwICovLAorCQkJ
CUNEOEY2NjcyMjRDMEYyMDgwMDBDNDIxQyAvKiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmggKi8s
CiAJCQkJRTRFOEI0RUQyMTZCNzlGNDAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0LmNwcCAqLywKIAkJCQlFNEU4QjRFQTIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQuaCAqLywKIAkJCQk1MjY3MjRGMjFDQjJGREY2MDA3NTk3NEQgLyogVGV4
dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5oICovLAogCQkJCTUyNjcyNEYxMUNCMkZERjYwMDc1
OTc0RCAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tICovLAorCQkJCUNERjk5NEZG
MjRDMjgxMzYwMDJFQTA2MiAvKiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwICovLAorCQkJCUNE
Rjk5NEZFMjRDMjgxMzYwMDJFQTA2MiAvKiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaCAqLywKIAkJ
CQlDRDZGRTVCNzI0QkNFNjQ1MDA5RkNEQTQgLyogVlA5VXRpbGl0aWVzQ29jb2EuaCAqLywKIAkJ
CQlDRDZGRTVCODI0QkNFNjQ1MDA5RkNEQTQgLyogVlA5VXRpbGl0aWVzQ29jb2EubW0gKi8sCiAJ
CQkJMkQzRUY0NDQxOTE3OTE1QzAwMDM0MTg0IC8qIFdlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJE
ZWxlZ2F0ZS5oICovLApAQCAtMjczODgsNiArMjc0MDcsOCBAQAogCQkJCUNEQzhCNUE1MTgwNDc0
RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmggKi8sCiAJCQkJQ0RDOEI1
QTQxODA0NzRGNzAwMTZFNjg1IC8qIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gKi8sCiAJ
CQkJN0EyOUY1NzExOEM2OTUxNDAwNEQwRjgxIC8qIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuaCAqLywKKwkJCQlDREY5OTRGQTI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5oICovLAorCQkJCUNERjk5NEZCMjRDMTJBNkEwMDJFQTA2MiAvKiBTb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLm1tICovLAogCQkJCUNEQzhCNUE5MTgwNDdGRjEwMDE2RTY4NSAv
KiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oICovLAogCQkJCUNEQzhCNUE4MTgwNDdGRjEw
MDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSAqLywKIAkJCQk1MkQ1QTE4
RTFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmggKi8sCkBAIC0zNDU5
OCw2ICszNDYxOSw3IEBACiAJCQkJMjZBQTBGOUUxOEQyQTE4QjAwNDE5MzgxIC8qIFNlbGVjdG9y
UHNldWRvRWxlbWVudFR5cGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NENThERkQxRjk1
NjVBODAwMTEyNzkxIC8qIFNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxMEE4
MUY5MDIyQTQwMDUxMDJDRSAvKiBTb2Z0TGlua0xpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQ0RGOTk0RkQyNEMxNUZFMzAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDREM4QjVBQTE4MDQ3RkYxMDAxNkU2ODUgLyogU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBODMzQzdDQTBBMkNG
MDZCMDBENTc2NjQgLyogU1ZHTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzE2OTJERDIy
M0QyM0FCRDAwNkU4OEY3IC8qIFN5c3RlbUJhdHRlcnkubW0gaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggMTFjMGE3ZjVk
OGY5YjRiNDJhODcxYjMzMTFlYWM0NDU5NzUzNjQyNy4uZDAxNzg0YzdhYTRiNzZkNmMzY2QyNTk3
OTIzMjRhNjA1MjlhMWY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgKQEAgLTM5MSw2ICszOTEsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaW5jcmVt
ZW50YWxQREZMb2FkaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5jcmVtZW50YWxQREZM
b2FkaW5nRW5hYmxlZDsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAg
IHZvaWQgc2V0V2ViTVBhcnNlckVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV93ZWJNUGFyc2Vy
RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgd2ViTVBhcnNlckVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX3dlYk1QYXJzZXJFbmFibGVkOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAg
ICAvLyBOZXZlciBpbnN0YW50aWF0ZS4KICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCk7CkBA
IC01ODQsNiArNTg5LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2luY3JlbWVudGFsUERGTG9h
ZGluZ0VuYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNF
KQorICAgIGJvb2wgbV93ZWJNUGFyc2VyRW5hYmxlZCB7IGZhbHNlIH07CisjZW5kaWYKKwogICAg
IGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVzdHJveWVkPFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM+
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVk
aW9UcmFja1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlv
VHJhY2tQcml2YXRlLmgKaW5kZXggN2ZhZTIzZWY1ZGM0Mjk5ZThmMDlmYzQxMmZjMTcxMDI2OGJl
YmMyMS4uYTlmODM2YmQxMTczZTIyZTBhZTgxNGExNzU0MmFhMjNhNDYxNWE0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0
ZUJhc2UuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogI2lmIEVOQUJMRShWSURFTykK
IApAQCAtNTUsNiArNTYsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7
CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5lbmFibGVkQ2hh
bmdlZChlbmFibGVkKTsKKyAgICAgICAgaWYgKG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjaykKKyAg
ICAgICAgICAgIG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjaygqdGhpcywgbV9lbmFibGVkKTsKICAg
ICB9CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KQEAg
LTY0LDYgKzY3LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzQmFja2VkQnlNZWRp
YVN0cmVhbVRyYWNrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHVzaW5nIEVuYWJs
ZWRDaGFuZ2VkQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEF1ZGlvVHJhY2tQcml2YXRlJiwgYm9v
bCBlbmFibGVkKT47CisgICAgdm9pZCBzZXRFbmFibGVkQ2hhbmdlZENhbGxiYWNrKEVuYWJsZWRD
aGFuZ2VkQ2FsbGJhY2smJiBjYWxsYmFjaykgeyBtX2VuYWJsZWRDaGFuZ2VkQ2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKTsgfQorCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29u
c3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkF1ZGlvVHJh
Y2tQcml2YXRlIjsgfQogI2VuZGlmCkBAIC03NCw2ICs4MCw3IEBAIHByb3RlY3RlZDoKIHByaXZh
dGU6CiAgICAgQXVkaW9UcmFja1ByaXZhdGVDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9Owog
ICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2UgfTsKKyAgICBFbmFibGVkQ2hhbmdlZENhbGxiYWNr
IG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJp
dmF0ZS5oCmluZGV4IDcxOGQ4MGUzNDUyYzQ3ZmVlZjQyNjhmMjllM2EyZTg3YmI0ZGNhZDMuLjBj
NDEzYzJkZGY1ZDlkYTJhMTViMTEzNWMwOGU1MTA4NTJiODAyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaApAQCAtMjgs
NiArMjgsNyBAQAogI2lmIEVOQUJMRShWSURFTykKIAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZUJh
c2UuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00OCw2ICs0OSw4IEBAIHB1YmxpYzoKICAgICAgICAgbV9zZWxlY3RlZCA9IHNlbGVjdGVk
OwogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+c2VsZWN0ZWRD
aGFuZ2VkKG1fc2VsZWN0ZWQpOworICAgICAgICBpZiAobV9zZWxlY3RlZENoYW5nZWRDYWxsYmFj
aykKKyAgICAgICAgICAgIG1fc2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2soKnRoaXMsIG1fc2VsZWN0
ZWQpOwogICAgIH0KICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCB7IHJldHVybiBt
X3NlbGVjdGVkOyB9CiAKQEAgLTU4LDEyICs2MSwxNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgY2hh
ciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlZpZGVvVHJhY2tQcml2YXRl
IjsgfQogI2VuZGlmCiAKKyAgICB1c2luZyBTZWxlY3RlZENoYW5nZWRDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoVmlkZW9UcmFja1ByaXZhdGUmLCBib29sIHNlbGVjdGVkKT47CisgICAgdm9pZCBz
ZXRTZWxlY3RlZENoYW5nZWRDYWxsYmFjayhTZWxlY3RlZENoYW5nZWRDYWxsYmFjayYmIGNhbGxi
YWNrKSB7IG1fc2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQor
CisKIHByb3RlY3RlZDoKICAgICBWaWRlb1RyYWNrUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAogcHJp
dmF0ZToKICAgICBWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07
CiAgICAgYm9vbCBtX3NlbGVjdGVkIHsgZmFsc2UgfTsKKyAgICBTZWxlY3RlZENoYW5nZWRDYWxs
YmFjayBtX3NlbGVjdGVkQ2hhbmdlZENhbGxiYWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwCmluZGV4IGMxY2IxYTRkMzU2MTI1ZDk0N2Rl
ZmZjMjdmNTlmY2EwYzliNDE4NDEuLmJjMTM5Nzc5N2JhZGE4YTQ3NTliZjUyZjlhNTQ2M2IyZDY0
MWQ3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAKQEAgLTMzLDkgKzMzLDggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFj
aywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKK0F1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhB
VkFzc2V0VHJhY2sqIHRyYWNrKQogICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbD4odHJhY2spKQotICAgICwgbV9wYXJlbnQocGFyZW50KQogewogICAgIHJl
c2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQpAQCAtNjcsNyArNjYsNiBAQCB2b2lkIEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgQXVkaW9UcmFja1ByaXZhdGVBVkY6OnNldEVuYWJsZWQo
ZW5hYmxlZCk7Ci0gICAgbV9wYXJlbnQtPnRyYWNrRGlkQ2hhbmdlRW5hYmxlZCh0aGlzKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggOWJjNGYyNmMwNzM0OWYxNzc2ZjYwYmUw
ZGQxYzJhYmNkN2IzN2Q2Yi4uMTQ1NmMwMTZiYWUwM2I4NzhiNTBiZjU5OTI0ZmI0ZDlmMzUzMDE4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOwogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGVBVkYgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKQogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+
IGNyZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyog
cGFyZW50KQorICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM+IGNyZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2ssIHBh
cmVudCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyh0cmFjaykpOwogICAgIH0KIAogICAgIHZvaWQgc2V0RW5hYmxlZChi
b29sKSBmaW5hbDsKQEAgLTUyLDEyICs1MiwxMSBAQCBwdWJsaWM6CiAgICAgaW50IHRyYWNrSUQo
KSB7IHJldHVybiBtX3RyYWNrSUQ7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqLCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQyogcGFyZW50KTsKKyAgICBleHBsaWNpdCBBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqKTsKICAgICAKICAgICB2b2lkIHJlc2V0UHJv
cGVydGllc0Zyb21UcmFjaygpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFWVHJhY2tQcml2YXRl
QVZGT2JqQ0ltcGw+IG1faW1wbDsKLSAgICBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogbV9w
YXJlbnQ7CiAgICAgaW50IG1fdHJhY2tJRDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5t
bQppbmRleCA2Njg5OTEwMWUxZmM1ODQwNzc3N2I2OWQ2MzkxOTE1ZmQ5YWRkZDIxLi5iZDY4NWQ1
NGMyM2M1N2JhM2ZiNmFiMGFhMjMxNmY2ODkzZWYxODMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCkBAIC0yNTMsMzAgKzI1Myw3IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUoY29uCiAgICAg
aWYgKCFwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIAotICAgIFN0cmluZyBleHRlbmRlZFR5
cGUgPSBwYXJhbWV0ZXJzLnR5cGUucmF3KCk7Ci0gICAgU3RyaW5nIG91dHB1dENvZGVjcyA9IHBh
cmFtZXRlcnMudHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsK
LSAgICBpZiAoIW91dHB1dENvZGVjcy5pc0VtcHR5KCkgJiYgW1BBTDo6Z2V0QVZTdHJlYW1EYXRh
UGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dE1JTUVDb2Rl
Y1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFyYW1ldGVyOildKSB7Ci0gICAgICAgIG91dHB1
dENvZGVjcyA9IFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgb3V0cHV0TUlNRUNv
ZGVjUGFyYW1ldGVyRm9ySW5wdXRNSU1FQ29kZWNQYXJhbWV0ZXI6b3V0cHV0Q29kZWNzXTsKLSAg
ICAgICAgZXh0ZW5kZWRUeXBlID0gbWFrZVN0cmluZyhwYXJhbWV0ZXJzLnR5cGUuY29udGFpbmVy
VHlwZSgpLCAiOyBjb2RlY3M9XCIiLCBvdXRwdXRDb2RlY3MsICJcIiIpOwotICAgIH0KLQotICAg
IGF1dG8gc3VwcG9ydGVkID0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0
ZWQ7Ci0gICAgYXV0byYgc3RyZWFtRGF0YVBhcnNlckNhY2hlID0gQVZTdHJlYW1EYXRhUGFyc2Vy
TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKHN0cmVhbURhdGFQYXJzZXJDYWNo
ZS5pc0F2YWlsYWJsZSgpKQotICAgICAgICBzdXBwb3J0ZWQgPSBzdHJlYW1EYXRhUGFyc2VyQ2Fj
aGUuY2FuRGVjb2RlVHlwZShleHRlbmRlZFR5cGUpOwotICAgIGVsc2UgewotICAgICAgICBhdXRv
JiBhc3NldENhY2hlID0gQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpOwotICAgICAg
ICBpZiAoYXNzZXRDYWNoZS5pc0F2YWlsYWJsZSgpKQotICAgICAgICAgICAgc3VwcG9ydGVkID0g
YXNzZXRDYWNoZS5jYW5EZWNvZGVUeXBlKGV4dGVuZGVkVHlwZSk7Ci0gICAgfQotCi0gICAgaWYg
KHN1cHBvcnRlZCAhPSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZCkKLSAg
ICAgICAgcmV0dXJuIHN1cHBvcnRlZDsKLQotICAgIGlmICghY29udGVudFR5cGVNZWV0c0hhcmR3
YXJlRGVjb2RlUmVxdWlyZW1lbnRzKHBhcmFtZXRlcnMudHlwZSwgcGFyYW1ldGVycy5jb250ZW50
VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQpKQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7Ci0KLSAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQ7CisgICAgcmV0dXJuIFNvdXJjZUJ1ZmZlclBh
cnNlcjo6aXNDb250ZW50VHlwZVN1cHBvcnRlZChwYXJhbWV0ZXJzLnR5cGUpID8gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
OjpJc05vdFN1cHBvcnRlZDsKIH0KIAogI3ByYWdtYSBtYXJrIC0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNl
UHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDgyNzhlMDZh
NTEyMjk3YzdlZDJiMjY5MGZmZTBjYjQyODg4NWZiZjYuLjI5MzIyNzkzOTEwZWE1N2YxODFjOTIw
MTdkM2NmMzY1Nzc1MjEwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCAiTG9n
Z2luZy5oIgogI2ltcG9ydCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgi
CiAjaW1wb3J0ICJNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaCIKKyNpbXBvcnQgIlNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakMuaCIKICNpbXBvcnQgIlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
LmgiCiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9BbGdvcml0aG1zLmg+
CkBAIC04NSw3ICs4NiwxMSBAQCBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBNZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgQwogICAgIGlmIChNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJz
KSA9PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZCkKICAgICAgICAg
cmV0dXJuIE5vdFN1cHBvcnRlZDsKIAotICAgIGF1dG8gbmV3U291cmNlQnVmZmVyID0gU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSh0aGlzKTsKKyAgICBhdXRvIHBhcnNlciA9IFNv
dXJjZUJ1ZmZlclBhcnNlcjo6Y3JlYXRlKGNvbnRlbnRUeXBlKTsKKyAgICBpZiAoIXBhcnNlcikK
KyAgICAgICAgcmV0dXJuIE5vdFN1cHBvcnRlZDsKKworICAgIGF1dG8gbmV3U291cmNlQnVmZmVy
ID0gU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSh0aGlzLCBwYXJzZXIucmVsZWFz
ZU5vbk51bGwoKSk7CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBuZXdTb3VyY2VC
dWZmZXItPnNldENETUluc3RhbmNlKG1fY2RtSW5zdGFuY2UuZ2V0KCkpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzBmZjQwZGVmYjE2NjEzOGJlZDAwZmUxZmI5YjkyYjI3YjQ3ZjVlOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaApAQCAtMCwwICsxLDc1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXIuaCIK
KyNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKwor
T0JKQ19DTEFTUyBBVkFzc2V0OworT0JKQ19DTEFTUyBBVlN0cmVhbURhdGFQYXJzZXI7CitPQkpD
X0NMQVNTIE5TRGF0YTsKK09CSkNfQ0xBU1MgTlNFcnJvcjsKK09CSkNfQ0xBU1MgV2ViQVZTdHJl
YW1EYXRhUGFyc2VyTGlzdGVuZXI7CisKK3R5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVm
ZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDIGZpbmFsIDogcHVibGljIFNvdXJjZUJ1ZmZlclBhcnNl
ciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM+IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBpc0NvbnRlbnRUeXBlU3VwcG9ydGVkKGNvbnN0IENvbnRl
bnRUeXBlJik7CisKKyAgICBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCk7CisgICAgdmlydHVh
bCB+U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpOworCisgICAgQVZTdHJlYW1EYXRhUGFyc2Vy
KiBwYXJzZXIoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlci5nZXQoKTsgfQorCisgICAgVHlwZSB0
eXBlKCkgY29uc3QgeyByZXR1cm4gVHlwZTo6QVZGT2JqQzsgfQorICAgIHZvaWQgYXBwZW5kRGF0
YShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgQXBwZW5kRmxhZ3MgPSBBcHBlbmRGbGFnczo6Tm9u
ZSkgZmluYWw7CisgICAgdm9pZCBmbHVzaFBlbmRpbmdNZWRpYURhdGEoKSBmaW5hbDsKKyAgICB2
b2lkIHNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGJvb2wsIGludDMyX3QpIGZp
bmFsOworICAgIGJvb2wgc2hvdWxkUHJvdmlkZU1lZGlhZGF0YUZvclRyYWNrSUQoaW50MzJfdCkg
ZmluYWw7CisgICAgdm9pZCByZXNldFBhcnNlclN0YXRlKCkgZmluYWw7CisKKyAgICB2b2lkIGRp
ZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3NldCopOworICAgIHZvaWQgZGlkRmFpbFRvUGFy
c2VTdHJlYW1EYXRhV2l0aEVycm9yKE5TRXJyb3IqKTsKKyAgICB2b2lkIGRpZFByb3ZpZGVNZWRp
YURhdGFGb3JUcmFja0lEKGludDMyX3QgdHJhY2tJRCwgQ01TYW1wbGVCdWZmZXJSZWYsIGNvbnN0
IFN0cmluZyYgbWVkaWFUeXBlLCB1bnNpZ25lZCBmbGFncyk7CisgICAgdm9pZCB3aWxsUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChpbnQzMl90IHRy
YWNrSUQpOworICAgIHZvaWQgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm9yVHJhY2tJRChOU0RhdGEqLCBpbnQzMl90IHRyYWNrSUQpOworCitwcml2YXRlOgor
ICAgIFJldGFpblB0cjxBVlN0cmVhbURhdGFQYXJzZXI+IG1fcGFyc2VyOworICAgIFJldGFpblB0
cjxXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcj4gbV9kZWxlZ2F0ZTsKKyAgICBib29sIG1f
ZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlvblNlZ21lbnQgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHsgZmFsc2UgfTsKK307CisKK30KKworU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
YXJzZXImIHBhcnNlcikgeyByZXR1cm4gcGFyc2VyLnR5cGUoKSA9PSBXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQYXJzZXI6OlR5cGU6OkFWRk9iakM7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5E
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjcxNDlmYjIyNmZjYWQ5YWE3YWY1YWVhYWE2NDM5N2E3Y2U5YzQy
NzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0wLDAgKzEs
MzM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJTb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLmgiCisKKyNpbXBvcnQgIkFWQXNzZXRNSU1FVHlwZUNhY2hlLmgi
CisjaW1wb3J0ICJBVkFzc2V0VHJhY2tVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIkFWU3RyZWFtRGF0
YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCIKKyNpbXBvcnQgIkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmgiCisjaW1wb3J0ICJGb3VyQ0MuaCIKKyNpbXBvcnQgIkluYmFuZFRleHRU
cmFja1ByaXZhdGVBVkZPYmpDLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJNZWRp
YURlc2NyaXB0aW9uLmgiCisjaW1wb3J0ICJNZWRpYVNhbXBsZS5oIgorI2ltcG9ydCAiTWVkaWFT
YW1wbGVBVkZPYmpDLmgiCisjaW1wb3J0ICJOb3RJbXBsZW1lbnRlZC5oIgorI2ltcG9ydCAiU2hh
cmVkQnVmZmVyLmgiCisjaW1wb3J0ICJUaW1lUmFuZ2VzLmgiCisjaW1wb3J0ICJWaWRlb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIgorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQXNz
ZXRUcmFjay5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheUlubGluZXMuaD4K
KyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8cGFsL2F2Zm91bmRhdGlvbi9NZWRp
YVRpbWVBVkZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9u
U1BJLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorCisjaW1wb3J0IDxw
YWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRp
b25Tb2Z0TGluay5oPgorCisjcHJhZ21hIG1hcmsgLQorI3ByYWdtYSBtYXJrIFdlYkFWU3RyZWFt
RGF0YVBhcnNlckxpc3RlbmVyCisKK0BpbnRlcmZhY2UgV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlz
dGVuZXIgOiBOU09iamVjdDxBVlN0cmVhbURhdGFQYXJzZXJPdXRwdXRIYW5kbGluZz4geworICAg
IFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMqIF9wYXJlbnQ7CisgICAgQVZTdHJl
YW1EYXRhUGFyc2VyKiBfcGFyc2VyOworfQorQHByb3BlcnR5IChhc3NpZ24pIFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMqIHBhcmVudDsKKy0gKGlkKWluaXRXaXRoUGFyc2VyOihB
VlN0cmVhbURhdGFQYXJzZXIqKXBhcnNlciBwYXJlbnQ6KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMqKXBhcmVudDsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYkFWU3RyZWFt
RGF0YVBhcnNlckxpc3RlbmVyCistIChpZClpbml0V2l0aFBhcnNlcjooQVZTdHJlYW1EYXRhUGFy
c2VyKilwYXJzZXIgcGFyZW50OihXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKilw
YXJlbnQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKworICAgIEFTU0VSVChwYXJlbnQpOworICAgIF9wYXJlbnQgPSBwYXJl
bnQ7CisgICAgX3BhcnNlciA9IHBhcnNlcjsKKyAgICBbX3BhcnNlciBzZXREZWxlZ2F0ZTpzZWxm
XTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworQHN5bnRoZXNpemUgcGFyZW50PV9wYXJlbnQ7CisK
Ky0gKHZvaWQpZGVhbGxvYworeworICAgIFtfcGFyc2VyIHNldERlbGVnYXRlOm5pbF07CisgICAg
W3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKWludmFsaWRhdGUKK3sKKyAgICBbX3BhcnNl
ciBzZXREZWxlZ2F0ZTpuaWxdOworICAgIF9wYXJzZXIgPSBudWxscHRyOworfQorCistICh2b2lk
KXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIg
ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldDooQVZBc3NldCAqKWFzc2V0Cit7CisgICAgQVNTRVJU
X1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOwor
ICAgIF9wYXJlbnQtPmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoYXNzZXQpOworfQorCistICh2
b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJz
ZXIgZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldDooQVZBc3NldCAqKWFzc2V0IHdpdGhEaXNjb250
aW51aXR5OihCT09MKWRpc2NvbnRpbnVpdHkKK3sKKyAgICBVTlVTRURfUEFSQU0oZGlzY29udGlu
dWl0eSk7CisgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFy
c2VyID09IF9wYXJzZXIpOworICAgIF9wYXJlbnQtPmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQo
YXNzZXQpOworfQorCistICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNl
ciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yOihO
U0Vycm9yICopZXJyb3IKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0
cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7CisgICAgX3BhcmVudC0+ZGlkRmFpbFRvUGFyc2VT
dHJlYW1EYXRhV2l0aEVycm9yKGVycm9yKTsKK30KKworLSAodm9pZClzdHJlYW1EYXRhUGFyc2Vy
OihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFByb3ZpZGVNZWRpYURh
dGE6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZSBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFj
a0lEKXRyYWNrSUQgbWVkaWFUeXBlOihOU1N0cmluZyAqKW5zTWVkaWFUeXBlIGZsYWdzOihBVlN0
cmVhbURhdGFQYXJzZXJPdXRwdXRNZWRpYURhdGFGbGFncylmbGFncworeworICAgIEFTU0VSVF9V
TlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKKyAg
ICBfcGFyZW50LT5kaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCh0cmFja0lELCBzYW1wbGUs
IG5zTWVkaWFUeXBlLCBmbGFncyk7Cit9CisKK0FMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0JFR0lOCistICh2b2lkKXN0cmVhbURhdGFQYXJzZXJXaWxsUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRh
UGFyc2VyIGZvclRyYWNrSUQ6KENNUGVyc2lzdGVudFRyYWNrSUQpdHJhY2tJRAorQUxMT1dfREVQ
UkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECit7CisgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1E
YXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOworICAgIF9wYXJlbnQtPndp
bGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHRy
YWNrSUQpOworfQorCitBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgorLSAo
dm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFy
c2VyIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTooTlNEYXRh
ICopaW5pdERhdGEgZm9yVHJhY2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lECitBTExP
V19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKK3sKKyAgICBfcGFyZW50LT5kaWRQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKGluaXREYXRh
LCB0cmFja0lEKTsKK30KK0BlbmQKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjcHJhZ21hIG1h
cmsgLQorI3ByYWdtYSBtYXJrIE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDCisKK2NsYXNzIE1lZGlh
RGVzY3JpcHRpb25BVkZPYmpDIGZpbmFsIDogcHVibGljIE1lZGlhRGVzY3JpcHRpb24geworcHVi
bGljOgorICAgIHN0YXRpYyBSZWY8TWVkaWFEZXNjcmlwdGlvbkFWRk9iakM+IGNyZWF0ZShBVkFz
c2V0VHJhY2sqIHRyYWNrKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhRGVzY3JpcHRpb25B
VkZPYmpDKHRyYWNrKSk7IH0KKyAgICB2aXJ0dWFsIH5NZWRpYURlc2NyaXB0aW9uQVZGT2JqQygp
IHsgfQorCisgICAgYm9vbCBpc1ZpZGVvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1Zp
ZGVvOyB9CisgICAgYm9vbCBpc0F1ZGlvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0F1
ZGlvOyB9CisgICAgYm9vbCBpc1RleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzVGV4
dDsgfQorICAgIEF0b21TdHJpbmcgY29kZWMoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgLy8gQXRvbVN0cmluZ3MgY2FuIG9ubHkgYmUgZGVzdHJveWVkIGZyb20gdGhlIHNhbWUgdGhy
ZWFkIHRoZXkncmUKKyAgICAgICAgLy8gY3JlYXRlZCBpbi4gU2luY2UgdGhpcyBzdHJ1Y3R1cmUg
aXMgY3JlYXRlZCBpbiBhIHBhcnNlciB0aHJlYWQKKyAgICAgICAgLy8gb25seSBjcmVhdGUgdGhl
IEF0b21TdHJpbmcgdGhlIGZpcnN0IHRpbWUgdGhpcyBmdW5jdGlvbiBpcyBhY2Nlc3NlZAorICAg
ICAgICAvLyB3aGljaCBpcyBwcmVzdW1hYmx5IG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgaWYgKCFtX2NvZGVjKQorICAgICAgICAg
ICAgbV9jb2RlYyA9IEF0b21TdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCZt
X29yaWdpbmFsQ29kZWMpLCA0KTsKKyAgICAgICAgcmV0dXJuICptX2NvZGVjOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNr
KQorICAgICAgICA6IG1faXNWaWRlbyhbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1l
ZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWxdKQorICAgICAgICAsIG1faXNBdWRpbyhbdHJhY2sgaGFz
TWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNBdWRpYmxlXSkKKyAgICAg
ICAgLCBtX2lzVGV4dChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFj
dGVyaXN0aWNMZWdpYmxlXSkKKyAgICB7CisgICAgICAgIE5TQXJyYXkqIGZvcm1hdERlc2NyaXB0
aW9ucyA9IFt0cmFjayBmb3JtYXREZXNjcmlwdGlvbnNdOworICAgICAgICBDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmIGRlc2NyaXB0aW9uID0gW2Zvcm1hdERlc2NyaXB0aW9ucyBjb3VudF0gPyAoX19i
cmlkZ2UgQ01Gb3JtYXREZXNjcmlwdGlvblJlZilbZm9ybWF0RGVzY3JpcHRpb25zIG9iamVjdEF0
SW5kZXg6MF0gOiAwOworICAgICAgICBpZiAoZGVzY3JpcHRpb24pIHsKKyAgICAgICAgICAgIG1f
b3JpZ2luYWxDb2RlYyA9IFBBTDo6c29mdExpbmtfQ29yZU1lZGlhX0NNRm9ybWF0RGVzY3JpcHRp
b25HZXRNZWRpYVN1YlR5cGUoZGVzY3JpcHRpb24pOworICAgICAgICAgICAgQ0ZTdHJpbmdSZWYg
b3JpZ2luYWxGb3JtYXRLZXkgPSBQQUw6OmNhbkxvYWRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2Ny
aXB0aW9uRXh0ZW5zaW9uX1Byb3RlY3RlZENvbnRlbnRPcmlnaW5hbEZvcm1hdCgpID8gUEFMOjpn
ZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1Byb3RlY3RlZENvbnRl
bnRPcmlnaW5hbEZvcm1hdCgpIDogQ0ZTVFIoIkNvbW1vbkVuY3J5cHRpb25PcmlnaW5hbEZvcm1h
dCIpOworICAgICAgICAgICAgQ0ZUeXBlUmVmIG9yaWdpbmFsRm9ybWF0ID0gQ01Gb3JtYXREZXNj
cmlwdGlvbkdldEV4dGVuc2lvbihkZXNjcmlwdGlvbiwgb3JpZ2luYWxGb3JtYXRLZXkpOworICAg
ICAgICAgICAgaWYgKG9yaWdpbmFsRm9ybWF0ICYmIENGR2V0VHlwZUlEKG9yaWdpbmFsRm9ybWF0
KSA9PSBDRk51bWJlckdldFR5cGVJRCgpKQorICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFs
dWUoKENGTnVtYmVyUmVmKW9yaWdpbmFsRm9ybWF0LCBrQ0ZOdW1iZXJTSW50MzJUeXBlLCAmbV9v
cmlnaW5hbENvZGVjKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEZvdXJDaGFyQ29kZSBtX29y
aWdpbmFsQ29kZWM7CisgICAgbXV0YWJsZSBPcHRpb25hbDxBdG9tU3RyaW5nPiBtX2NvZGVjOwor
ICAgIGJvb2wgbV9pc1ZpZGVvOworICAgIGJvb2wgbV9pc0F1ZGlvOworICAgIGJvb2wgbV9pc1Rl
eHQ7Cit9OworCisjcHJhZ21hIG1hcmsgLQorI3ByYWdtYSBtYXJrIFNvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakMKKworYm9vbCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjppc0NvbnRlbnRUeXBl
U3VwcG9ydGVkKGNvbnN0IENvbnRlbnRUeXBlJiB0eXBlKQoreworICAgIFN0cmluZyBleHRlbmRl
ZFR5cGUgPSB0eXBlLnJhdygpOworICAgIFN0cmluZyBvdXRwdXRDb2RlY3MgPSB0eXBlLnBhcmFt
ZXRlcihDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVyKCkpOworICAgIGlmICghb3V0cHV0Q29k
ZWNzLmlzRW1wdHkoKSAmJiBbUEFMOjpnZXRBVlN0cmVhbURhdGFQYXJzZXJDbGFzcygpIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob3V0cHV0TUlNRUNvZGVjUGFyYW1ldGVyRm9ySW5wdXRN
SU1FQ29kZWNQYXJhbWV0ZXI6KV0pIHsKKyAgICAgICAgb3V0cHV0Q29kZWNzID0gW1BBTDo6Z2V0
QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSBvdXRwdXRNSU1FQ29kZWNQYXJhbWV0ZXJGb3JJbnB1
dE1JTUVDb2RlY1BhcmFtZXRlcjpvdXRwdXRDb2RlY3NdOworICAgICAgICBleHRlbmRlZFR5cGUg
PSBtYWtlU3RyaW5nKHR5cGUuY29udGFpbmVyVHlwZSgpLCAiOyBjb2RlY3M9XCIiLCBvdXRwdXRD
b2RlY3MsICJcIiIpOworICAgIH0KKworICAgIGF1dG8mIHN0cmVhbURhdGFQYXJzZXJDYWNoZSA9
IEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpOworICAgIGlmIChz
dHJlYW1EYXRhUGFyc2VyQ2FjaGUuaXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIHN0cmVh
bURhdGFQYXJzZXJDYWNoZS5jYW5EZWNvZGVUeXBlKGV4dGVuZGVkVHlwZSkgPT0gTWVkaWFQbGF5
ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZDsKKworICAgIGF1dG8mIGFzc2V0Q2Fj
aGUgPSBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCk7CisgICAgaWYgKGFzc2V0Q2Fj
aGUuaXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIGFzc2V0Q2FjaGUuY2FuRGVjb2RlVHlw
ZShleHRlbmRlZFR5cGUpID09IE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNTdXBw
b3J0ZWQ7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKQorICAgIDogbV9wYXJzZXIoYWRvcHROUyhb
UEFMOjphbGxvY0FWU3RyZWFtRGF0YVBhcnNlckluc3RhbmNlKCkgaW5pdF0pKQorICAgICwgbV9k
ZWxlZ2F0ZShhZG9wdE5TKFtbV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgYWxsb2NdIGlu
aXRXaXRoUGFyc2VyOm1fcGFyc2VyLmdldCgpIHBhcmVudDp0aGlzXSkpCit7Cit9CisKK1NvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKK3sKKyAg
ICBtX2RlbGVnYXRlLmdldCgpLnBhcmVudCA9IG51bGxwdHI7Cit9CisKK3ZvaWQgU291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRh
LCBBcHBlbmRGbGFncyBmbGFncykKK3sKKyAgICBhdXRvIHNoYXJlZERhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZERhdGEt
PmNyZWF0ZU5TRGF0YSgpOworICAgIGlmIChtX3BhcnNlclN0YXRlV2FzUmVzZXQgfHwgZmxhZ3Mg
PT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCisgICAgICAgIFttX3BhcnNlciBhcHBlbmRT
dHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2VyU3RyZWFt
RGF0YURpc2NvbnRpbnVpdHldOworICAgIGVsc2UKKyAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0
cmVhbURhdGE6bnNEYXRhLmdldCgpXTsKKyAgICBtX3BhcnNlclN0YXRlV2FzUmVzZXQgPSBmYWxz
ZTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpmbHVzaFBlbmRpbmdNZWRp
YURhdGEoKQoreworICAgIFttX3BhcnNlciBwcm92aWRlUGVuZGluZ01lZGlhRGF0YV07Cit9CisK
K3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0
YUZvclRyYWNrSUQoYm9vbCBzaG91bGQsIGludDMyX3QgdHJhY2tJRCkKK3sKKyAgICBbbV9wYXJz
ZXIgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YTpzaG91bGQgZm9yVHJhY2tJRDp0cmFja0lEXTsK
K30KKworYm9vbCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpzaG91bGRQcm92aWRlTWVkaWFk
YXRhRm9yVHJhY2tJRChpbnQzMl90IHRyYWNrSUQpCit7CisgICAgcmV0dXJuIFttX3BhcnNlciBz
aG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRDp0cmFja0lEXTsKK30KKwordm9pZCBTb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpyZXNldFBhcnNlclN0YXRlKCkKK3sKKyAgICBtX3BhcnNl
clN0YXRlV2FzUmVzZXQgPSB0cnVlOworICAgIG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0
aWFsaXphdGlvblNlZ21lbnQgPSB0cnVlOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3NldCogYXNzZXQpCit7CisgICAg
Y2FsbE9uTWFpblRocmVhZChbdGhpcywgc3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBhc3Nl
dCA9IHJldGFpblB0cihhc3NldCldIHsKKyAgICAgICAgbV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4
dEluaXRpYWxpemF0aW9uU2VnbWVudCA9IGZhbHNlOworCisgICAgICAgIGlmICghbV9kaWRQYXJz
ZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIEluaXRpYWxpemF0aW9uU2VnbWVudCBzZWdtZW50OworCisgICAgICAgIGlmIChbYXNzZXQg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdmVyYWxsRHVyYXRpb25IaW50KV0pCisgICAg
ICAgICAgICBzZWdtZW50LmR1cmF0aW9uID0gUEFMOjp0b01lZGlhVGltZShbYXNzZXQgb3ZlcmFs
bER1cmF0aW9uSGludF0pOworCisgICAgICAgIGlmIChzZWdtZW50LmR1cmF0aW9uLmlzSW52YWxp
ZCgpIHx8IHNlZ21lbnQuZHVyYXRpb24gPT0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpKQorICAgICAg
ICAgICAgc2VnbWVudC5kdXJhdGlvbiA9IFBBTDo6dG9NZWRpYVRpbWUoW2Fzc2V0IGR1cmF0aW9u
XSk7CisKKyAgICAgICAgZm9yIChBVkFzc2V0VHJhY2sqIHRyYWNrIGluIFthc3NldCB0cmFja3Nd
KSB7CisgICAgICAgICAgICBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRp
YUNoYXJhY3RlcmlzdGljTGVnaWJsZV0pIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRSgxMjUx
NjEpOiBIYW5kbGUgaW4tYmFuZCB0ZXh0IHRyYWNrcy4KKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKFt0cmFjayBoYXNNZWRpYUNoYXJh
Y3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbF0pIHsKKyAgICAgICAgICAgICAg
ICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ6OlZpZGVv
VHJhY2tJbmZvcm1hdGlvbiBpbmZvOworICAgICAgICAgICAgICAgIGF1dG8gdmlkZW9UcmFjayA9
IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGUodHJhY2spOworICAg
ICAgICAgICAgICAgIGluZm8udHJhY2sgPSB2aWRlb1RyYWNrLmNvcHlSZWYoKTsKKyAgICAgICAg
ICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVkaWFEZXNjcmlwdGlvbkFWRk9iakM6OmNyZWF0
ZSh0cmFjayk7CisgICAgICAgICAgICAgICAgc2VnbWVudC52aWRlb1RyYWNrcy5hcHBlbmQoaW5m
byk7CisKKyAgICAgICAgICAgICAgICBpZiAodHJhY2suZW5hYmxlZCAmJiBzZWdtZW50LnZpZGVv
U2l6ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIHNlZ21lbnQudmlkZW9TaXplID0g
RmxvYXRTaXplKENHU2l6ZUFwcGx5QWZmaW5lVHJhbnNmb3JtKFt0cmFjayBuYXR1cmFsU2l6ZV0s
IFt0cmFjayBwcmVmZXJyZWRUcmFuc2Zvcm1dKSk7CisKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
W3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJs
ZV0pIHsKKyAgICAgICAgICAgICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFs
aXphdGlvblNlZ21lbnQ6OkF1ZGlvVHJhY2tJbmZvcm1hdGlvbiBpbmZvOworICAgICAgICAgICAg
ICAgIGF1dG8gYXVkaW9UcmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
OjpjcmVhdGUodHJhY2spOworICAgICAgICAgICAgICAgIGluZm8udHJhY2sgPSBhdWRpb1RyYWNr
LmNvcHlSZWYoKTsKKyAgICAgICAgICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVkaWFEZXNj
cmlwdGlvbkFWRk9iakM6OmNyZWF0ZSh0cmFjayk7CisgICAgICAgICAgICAgICAgc2VnbWVudC5h
dWRpb1RyYWNrcy5hcHBlbmQoaW5mbyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IEZJWE1FKDEyNTE2MSkgICAgOiBBZGQgVGV4dFRyYWNrIHN1cHBvcnQKKyAgICAgICAgfQorCisg
ICAgICAgIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhXVEZNb3ZlKHNlZ21l
bnQpKTsKKyAgICB9KTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRG
YWlsVG9QYXJzZVN0cmVhbURhdGFXaXRoRXJyb3IoTlNFcnJvciogZXJyb3IpCit7CisgICAgY2Fs
bE9uTWFpblRocmVhZChbdGhpcywgc3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBlcnJvciA9
IHJldGFpblB0cihlcnJvcildIHsKKyAgICAgICAgaWYgKG1fZGlkRW5jb3VudGVyRXJyb3JEdXJp
bmdQYXJzaW5nQ2FsbGJhY2spCisgICAgICAgICAgICBtX2RpZEVuY291bnRlckVycm9yRHVyaW5n
UGFyc2luZ0NhbGxiYWNrKGVycm9yLmdldCgpLmNvZGUpOworICAgIH0pOworfQorCit2b2lkIFNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGlu
dDMyX3QgdHJhY2tJRCwgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyLCBjb25zdCBTdHJp
bmcmIG1lZGlhVHlwZSwgdW5zaWduZWQgZmxhZ3MpCit7CisgICAgVU5VU0VEX1BBUkFNKGZsYWdz
KTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhp
cyksIHNhbXBsZUJ1ZmZlciA9IHJldGFpblB0cihzYW1wbGVCdWZmZXIpLCB0cmFja0lELCBtZWRp
YVR5cGUgPSBtZWRpYVR5cGVdIHsKKyAgICAgICAgaWYgKCFtX2RpZFByb3ZpZGVNZWRpYURhdGFD
YWxsYmFjaykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAobV9kaXNjYXJkU2Ft
cGxlc1VudGlsTmV4dEluaXRpYWxpemF0aW9uU2VnbWVudCkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBhdXRvIG1lZGlhU2FtcGxlID0gTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUo
c2FtcGxlQnVmZmVyLmdldCgpLCB0cmFja0lEKTsKKworICAgICAgICBpZiAobWVkaWFTYW1wbGUt
PmlzSG9tb2dlbmVvdXMoKSkgeworICAgICAgICAgICAgbV9kaWRQcm92aWRlTWVkaWFEYXRhQ2Fs
bGJhY2soV1RGTW92ZShtZWRpYVNhbXBsZSksIHRyYWNrSUQsIG1lZGlhVHlwZSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGF1dG8mIHNhbXBsZSA6IG1l
ZGlhU2FtcGxlLT5kaXZpZGVJbnRvSG9tb2dlbmVvdXNTYW1wbGVzKCkpCisgICAgICAgICAgICBt
X2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhXVEZNb3ZlKHNhbXBsZSksIHRyYWNrSUQsIG1l
ZGlhVHlwZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6
d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQo
aW50MzJfdCB0cmFja0lEKQoreworICAgIG1fd2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElu
aXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayh0cmFja0lEKTsKK30KKwordm9pZCBT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0
aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKE5TRGF0YSogbnNJbml0RGF0YSwgaW50MzJfdCB0cmFj
a0lEKQoreworICAgIGF1dG8gaW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVhdGUobnNJbml0RGF0
YS5sZW5ndGgpOworICAgIFtuc0luaXREYXRhIGdldEJ5dGVzOmluaXREYXRhLT5kYXRhKCkgbGVu
Z3RoOmluaXREYXRhLT5sZW5ndGgoKV07CisKKyAgICBtX2RpZFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayhXVEZNb3ZlKGluaXREYXRh
KSwgdHJhY2tJRCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IGRmYTEzNGI0ZDY4ZmRiNzQ3MzQzNzhkOWY5
ZGQzYmQ4NDFmMzNkNjUuLjZkMTk0YWIxNDBhOGJkMzQ5M2JlYjNhZGRmMzI4M2QzYjhlNzVmZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYg
VVNFKEFWRk9VTkRBVElPTikKIAorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlci5oIgogI2lu
Y2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGUuaCIKICNpbmNsdWRlIDxkaXNwYXRjaC9ncm91cC5o
PgogI2luY2x1ZGUgPHd0Zi9Cb3guaD4KQEAgLTM4LDE4ICszOSwxNyBAQAogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9XVEZTZW1hcGhvcmUuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYv
dGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIAotT0JKQ19DTEFTUyBBVkFzc2V0OwogT0JKQ19D
TEFTUyBBVlN0cmVhbURhdGFQYXJzZXI7CiBPQkpDX0NMQVNTIEFWU2FtcGxlQnVmZmVyQXVkaW9S
ZW5kZXJlcjsKIE9CSkNfQ0xBU1MgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7CiBPQkpDX0NM
QVNTIE5TRGF0YTsKIE9CSkNfQ0xBU1MgTlNFcnJvcjsKIE9CSkNfQ0xBU1MgTlNPYmplY3Q7Ci1P
QkpDX0NMQVNTIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyOwogT0JKQ19DTEFTUyBXZWJB
VlNhbXBsZUJ1ZmZlckVycm9yTGlzdGVuZXI7CiAKIHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2Ft
cGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKQEAgLTg2LDM0ICs4NiwyNyBAQCBjbGFzcyBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyBmaW5hbAogI2VuZGlmCiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gY3JlYXRlKE1lZGlhU291cmNl
UHJpdmF0ZUFWRk9iakMqKTsKKyAgICBzdGF0aWMgUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDPiBjcmVhdGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyosIFJlZjxTb3VyY2VCdWZmZXJQ
YXJzZXI+JiYpOwogICAgIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKCk7CiAK
ICAgICB2b2lkIGNsZWFyTWVkaWFTb3VyY2UoKSB7IG1fbWVkaWFTb3VyY2UgPSBudWxscHRyOyB9
CiAKLSAgICAvLyBBVlN0cmVhbURhdGFQYXJzZXIgZGVsZWdhdGUgbWV0aG9kcwotICAgIHZvaWQg
ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChBVkFzc2V0Kik7Ci0gICAgdm9pZCBkaWRGYWlsVG9Q
YXJzZVN0cmVhbURhdGFXaXRoRXJyb3IoTlNFcnJvciopOwotICAgIHZvaWQgZGlkUHJvdmlkZU1l
ZGlhRGF0YUZvclRyYWNrSUQoaW50IHRyYWNrSUQsIENNU2FtcGxlQnVmZmVyUmVmLCBjb25zdCBT
dHJpbmcmIG1lZGlhVHlwZSwgdW5zaWduZWQgZmxhZ3MpOwotICAgIHZvaWQgZGlkUmVhY2hFbmRP
ZlRyYWNrV2l0aFRyYWNrSUQoaW50IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsK
LSAgICB2b2lkIHdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFG
b3JUcmFja0lEKGludCB0cmFja0lEKTsKLSAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoTlNEYXRhKiwgaW50IHRyYWNrSUQsIEJv
eDxCaW5hcnlTZW1hcGhvcmU+KTsKLQotICAgIGJvb2wgcHJvY2Vzc0NvZGVkRnJhbWUoaW50IHRy
YWNrSUQsIENNU2FtcGxlQnVmZmVyUmVmLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CisgICAg
dm9pZCB3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJh
Y2tJRChpbnQzMl90IHRyYWNrSUQpOworICAgIHZvaWQgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1
ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChSZWY8VWludDhBcnJheT4mJiwgaW50MzJf
dCB0cmFja0lELCBCb3g8QmluYXJ5U2VtYXBob3JlPik7CiAKICAgICBib29sIGhhc1ZpZGVvKCkg
Y29uc3Q7CiAgICAgYm9vbCBoYXNTZWxlY3RlZFZpZGVvKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNB
dWRpbygpIGNvbnN0OwogCi0gICAgdm9pZCB0cmFja0RpZENoYW5nZUVuYWJsZWQoVmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqKTsKLSAgICB2b2lkIHRyYWNrRGlkQ2hhbmdlRW5h
YmxlZChBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyopOworICAgIHZvaWQgdHJh
Y2tEaWRDaGFuZ2VTZWxlY3RlZChWaWRlb1RyYWNrUHJpdmF0ZSYsIGJvb2wgc2VsZWN0ZWQpOwor
ICAgIHZvaWQgdHJhY2tEaWRDaGFuZ2VFbmFibGVkKEF1ZGlvVHJhY2tQcml2YXRlJiwgYm9vbCBl
bmFibGVkKTsKIAogICAgIHZvaWQgd2lsbFNlZWsoKTsKICAgICBNZWRpYVRpbWUgZmFzdFNlZWtU
aW1lRm9yTWVkaWFUaW1lKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRp
dmVUaHJlc2hvbGQsIGNvbnN0IE1lZGlhVGltZSYgcG9zaXRpdmVUaHJlc2hvbGQpOwogICAgIEZs
b2F0U2l6ZSBuYXR1cmFsU2l6ZSgpOwogCiAgICAgaW50IHByb3RlY3RlZFRyYWNrSUQoKSBjb25z
dCB7IHJldHVybiBtX3Byb3RlY3RlZFRyYWNrSUQ7IH0KLSAgICBBVlN0cmVhbURhdGFQYXJzZXIq
IHBhcnNlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyLmdldCgpOyB9CisgICAgQVZTdHJlYW1E
YXRhUGFyc2VyKiBwYXJzZXIoKSBjb25zdDsKICAgICB2b2lkIHNldENETVNlc3Npb24oQ0RNU2Vz
c2lvbk1lZGlhU291cmNlQVZGT2JqQyopOwogICAgIHZvaWQgc2V0Q0RNSW5zdGFuY2UoQ0RNSW5z
dGFuY2UqKTsKICAgICB2b2lkIGF0dGVtcHRUb0RlY3J5cHQoKTsKQEAgLTE0OCw3ICsxNDEsMTIg
QEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyopOworICAgIGV4cGxpY2l0
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqLCBS
ZWY8U291cmNlQnVmZmVyUGFyc2VyPiYmKTsKKworICAgIHVzaW5nIEluaXRpYWxpemF0aW9uU2Vn
bWVudCA9IFNvdXJjZUJ1ZmZlclBhcnNlcjo6SW5pdGlhbGl6YXRpb25TZWdtZW50OworICAgIHZv
aWQgZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYpOwor
ICAgIHZvaWQgZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nKGludDMyX3QpOworICAgIHZv
aWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoUmVmPE1lZGlhU2FtcGxlPiYmLCBpbnQz
Ml90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKIAogICAgIC8vIFNvdXJjZUJ1
ZmZlclByaXZhdGUgb3ZlcnJpZGVzCiAgICAgdm9pZCBzZXRDbGllbnQoU291cmNlQnVmZmVyUHJp
dmF0ZUNsaWVudCopIGZpbmFsOwpAQCAtMTcyLDI4ICsxNzAsMjggQEAgcHJpdmF0ZToKICAgICB2
b2lkIGFwcGVuZENvbXBsZXRlZCgpOwogICAgIHZvaWQgZGVzdHJveVBhcnNlcigpOwogICAgIHZv
aWQgZGVzdHJveVJlbmRlcmVycygpOworICAgIHZvaWQgY2xlYXJUcmFja3MoKTsKIAogICAgIHZv
aWQgZmx1c2hWaWRlbygpOwogICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4K
ICAgICB2b2lkIGZsdXNoKEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlciAqKTsKICAgICBBTExP
V19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAogCi0gICAgVmVjdG9yPFJlZlB0cjxWaWRlb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4+IG1fdmlkZW9UcmFja3M7Ci0gICAgVmVjdG9y
PFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4+IG1fYXVkaW9UcmFj
a3M7CisgICAgVmVjdG9yPFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4+IG1fdmlkZW9UcmFja3M7
CisgICAgVmVjdG9yPFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4+IG1fYXVkaW9UcmFja3M7CiAg
ICAgVmVjdG9yPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQqPiBtX2Vycm9y
Q2xpZW50czsKIAogICAgIFdlYWtQdHJGYWN0b3J5PFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
PiBtX2FwcGVuZFdlYWtGYWN0b3J5OwogCi0gICAgUmV0YWluUHRyPEFWU3RyZWFtRGF0YVBhcnNl
cj4gbV9wYXJzZXI7Ci0gICAgUmV0YWluUHRyPEFWQXNzZXQ+IG1fYXNzZXQ7CisgICAgUmVmPFNv
dXJjZUJ1ZmZlclBhcnNlcj4gbV9wYXJzZXI7CiAgICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyPiBtX2Rpc3BsYXlMYXllcjsKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRf
R1VBUkRTX0JFR0lOCiAgICAgSGFzaE1hcDxpbnQsIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckF1
ZGlvUmVuZGVyZXI+PiBtX2F1ZGlvUmVuZGVyZXJzOwogICAgIEFMTE9XX05FV19BUElfV0lUSE9V
VF9HVUFSRFNfRU5ECi0gICAgUmV0YWluUHRyPFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVy
PiBtX2RlbGVnYXRlOwogICAgIFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlckVycm9yTGlzdGVu
ZXI+IG1fZXJyb3JMaXN0ZW5lcjsKICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gbV9oZGNwRXJyb3I7
CiAgICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gbV9oYXNTZXNzaW9uU2VtYXBob3JlOworICAgIEJv
eDxTZW1hcGhvcmU+IG1fYWJvcnRTZW1hcGhvcmU7CiAgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hf
Z3JvdXBfdD4gbV9pc0FwcGVuZGluZ0dyb3VwOwogICAgIFJlZlB0cjxXZWJDb3JlRGVjb21wcmVz
c2lvblNlc3Npb24+IG1fZGVjb21wcmVzc2lvblNlc3Npb247CiAKQEAgLTIxMSw4ICsyMDksNiBA
QCBwcml2YXRlOgogICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gbV9jYWNoZWRTaXplOwogICAgIEZs
b2F0U2l6ZSBtX2N1cnJlbnRTaXplOwogICAgIGJvb2wgbV9wYXJzaW5nU3VjY2VlZGVkIHsgdHJ1
ZSB9OwotICAgIGJvb2wgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHsgZmFsc2UgfTsKLSAgICBib29s
IG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlvblNlZ21lbnQgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV93YWl0aW5nRm9yS2V5IHsgdHJ1ZSB9OwogICAgIGludCBtX2VuYWJsZWRW
aWRlb1RyYWNrSUQgeyAtMSB9OwogICAgIGludCBtX3Byb3RlY3RlZFRyYWNrSUQgeyAtMSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5tbQppbmRleCBkNzM1Nzc1Y2M4ZjA0YjhiMDIxYjM1YzcwMTY5NWJkMjRmNmY4ZGE4Li5kNTEx
MWZlMzdhN2JmNjIyZjkwZjZlYWI0M2M1MTA2ZjFlM2NkNzVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtNDQsNiAr
NDQsNyBAQAogI2ltcG9ydCAiTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oIgogI2ltcG9ydCAi
Tm90SW1wbGVtZW50ZWQuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgorI2ltcG9ydCAiU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oIgogI2ltcG9ydCAiU291cmNlQnVmZmVyUHJpdmF0ZUNs
aWVudC5oIgogI2ltcG9ydCAiVGltZVJhbmdlcy5oIgogI2ltcG9ydCAiVmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuaCIKQEAgLTgyLDE1MyArODMsNiBAQCAtICh2b2lkKWFkZFN0
cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXI7CiAt
ICh2b2lkKXJlbW92ZVN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVh
bURhdGFQYXJzZXI7CiBAZW5kCiAKLSNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1hcmsgV2ViQVZT
dHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIKLQotQGludGVyZmFjZSBXZWJBVlN0cmVhbURhdGFQYXJz
ZXJMaXN0ZW5lciA6IE5TT2JqZWN0PEFWU3RyZWFtRGF0YVBhcnNlck91dHB1dEhhbmRsaW5nPiB7
Ci0gICAgV2Vha1B0cjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gX3BhcmVu
dDsKLSAgICBCb3g8U2VtYXBob3JlPiBfYWJvcnRTZW1hcGhvcmU7Ci0gICAgQVZTdHJlYW1EYXRh
UGFyc2VyKiBfcGFyc2VyOwotfQotQHByb3BlcnR5IChhc3NpZ24pIFdlYWtQdHI8V2ViQ29yZTo6
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IHBhcmVudDsKLUBwcm9wZXJ0eSAoYXNzaWduKSBC
b3g8U2VtYXBob3JlPiBhYm9ydFNlbWFwaG9yZTsKLS0gKGlkKWluaXRXaXRoUGFyc2VyOihBVlN0
cmVhbURhdGFQYXJzZXIqKXBhcnNlciBwYXJlbnQ6KFdlYWtQdHI8V2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM+KXBhcmVudDsKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYkFW
U3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyCi0tIChpZClpbml0V2l0aFBhcnNlcjooQVZTdHJlYW1E
YXRhUGFyc2VyKilwYXJzZXIgcGFyZW50OihXZWFrUHRyPFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDPilwYXJlbnQKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlm
ICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIEFTU0VSVChwYXJlbnQpOwotICAg
IF9wYXJlbnQgPSBwYXJlbnQ7Ci0gICAgX3BhcnNlciA9IHBhcnNlcjsKLSAgICBbX3BhcnNlciBz
ZXREZWxlZ2F0ZTpzZWxmXTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotQHN5bnRoZXNpemUgcGFy
ZW50PV9wYXJlbnQ7Ci1Ac3ludGhlc2l6ZSBhYm9ydFNlbWFwaG9yZT1fYWJvcnRTZW1hcGhvcmU7
Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtfcGFyc2VyIHNldERlbGVnYXRlOm5pbF07Ci0g
ICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWludmFsaWRhdGUKLXsKLSAgICBbX3Bh
cnNlciBzZXREZWxlZ2F0ZTpuaWxdOwotICAgIF9wYXJzZXIgPSBudWxscHRyOwotfQotCi0tICh2
b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJz
ZXIgZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldDooQVZBc3NldCAqKWFzc2V0Ci17Ci0gICAgQVNT
RVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIp
OwotCi0gICAgUmV0YWluUHRyPEFWQXNzZXQ+IHByb3RlY3RlZEFzc2V0ID0gYXNzZXQ7Ci0gICAg
Y2FsbE9uTWFpblRocmVhZChbcGFyZW50ID0gX3BhcmVudCwgcHJvdGVjdGVkQXNzZXQgPSBXVEZN
b3ZlKHByb3RlY3RlZEFzc2V0KV0gewotICAgICAgICBpZiAocGFyZW50KQotICAgICAgICAgICAg
cGFyZW50LT5kaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KHByb3RlY3RlZEFzc2V0LmdldCgpKTsK
LSAgICB9KTsKLX0KLQotLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJz
ZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQ6KEFWQXNzZXQg
Kilhc3NldCB3aXRoRGlzY29udGludWl0eTooQk9PTClkaXNjb250aW51aXR5Ci17Ci0gICAgVU5V
U0VEX1BBUkFNKGRpc2NvbnRpbnVpdHkpOwotICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBh
cnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLQotICAgIFJldGFpblB0cjxBVkFz
c2V0PiBwcm90ZWN0ZWRBc3NldCA9IGFzc2V0OwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3BhcmVu
dCA9IF9wYXJlbnQsIHByb3RlY3RlZEFzc2V0ID0gV1RGTW92ZShwcm90ZWN0ZWRBc3NldCldIHsK
LSAgICAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAgIHBhcmVudC0+ZGlkUGFyc2VTdHJlYW1E
YXRhQXNBc3NldChwcm90ZWN0ZWRBc3NldC5nZXQoKSk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQp
c3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBk
aWRGYWlsVG9QYXJzZVN0cmVhbURhdGFXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgotewotICAg
IEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFy
c2VyKTsKLQotICAgIFJldGFpblB0cjxOU0Vycm9yPiBwcm90ZWN0ZWRFcnJvciA9IGVycm9yOwot
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3BhcmVudCA9IF9wYXJlbnQsIHByb3RlY3RlZEVycm9yID0g
V1RGTW92ZShwcm90ZWN0ZWRFcnJvcildIHsKLSAgICAgICAgaWYgKHBhcmVudCkKLSAgICAgICAg
ICAgIHBhcmVudC0+ZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yKHByb3RlY3RlZEVy
cm9yLmdldCgpKTsKLSAgICB9KTsKLX0KLQotLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0
cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFByb3ZpZGVNZWRpYURhdGE6KENN
U2FtcGxlQnVmZmVyUmVmKXNhbXBsZSBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRy
YWNrSUQgbWVkaWFUeXBlOihOU1N0cmluZyAqKW5zTWVkaWFUeXBlIGZsYWdzOihBVlN0cmVhbURh
dGFQYXJzZXJPdXRwdXRNZWRpYURhdGFGbGFncylmbGFncwotewotICAgIEFTU0VSVF9VTlVTRUQo
c3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLQotICAgIFJl
dGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gcHJvdGVjdGVkU2FtcGxlID0gc2FtcGxlOwotICAg
IGNhbGxPbk1haW5UaHJlYWQoW3BhcmVudCA9IF9wYXJlbnQsIHByb3RlY3RlZFNhbXBsZSA9IFdU
Rk1vdmUocHJvdGVjdGVkU2FtcGxlKSwgdHJhY2tJRCwgbWVkaWFUeXBlID0gU3RyaW5nKG5zTWVk
aWFUeXBlKSwgZmxhZ3NdIHsKLSAgICAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAgIHBhcmVu
dC0+ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQodHJhY2tJRCwgcHJvdGVjdGVkU2FtcGxl
LmdldCgpLCBtZWRpYVR5cGUsIGZsYWdzKTsKLSAgICB9KTsKLX0KLQotLSAodm9pZClzdHJlYW1E
YXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFJlYWNo
RW5kT2ZUcmFja1dpdGhUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQgbWVkaWFU
eXBlOihOU1N0cmluZyAqKW5zTWVkaWFUeXBlCi17Ci0gICAgQVNTRVJUX1VOVVNFRChzdHJlYW1E
YXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOwotCi0gICAgY2FsbE9uTWFp
blRocmVhZChbcGFyZW50ID0gX3BhcmVudCwgdHJhY2tJRCwgbWVkaWFUeXBlID0gU3RyaW5nKG5z
TWVkaWFUeXBlKV0gewotICAgICAgICBpZiAocGFyZW50KQotICAgICAgICAgICAgcGFyZW50LT5k
aWRSZWFjaEVuZE9mVHJhY2tXaXRoVHJhY2tJRCh0cmFja0lELCBtZWRpYVR5cGUpOwotICAgIH0p
OwotfQotCi1BTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgotLSAodm9pZClz
dHJlYW1EYXRhUGFyc2VyV2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9u
RGF0YTooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBmb3JUcmFja0lEOihD
TVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQKLUFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0VORAotewotICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0
YVBhcnNlciA9PSBfcGFyc2VyKTsKLQotICAgIC8vIFdlIG11c3QgY2FsbCBzeW5jaHJvbm91c2x5
IHRvIHRoZSBtYWluIHRocmVhZCwgYXMgdGhlIEFWU3RyZWFtU2Vzc2lvbiBtdXN0IGJlIGFzc29j
aWF0ZWQKLSAgICAvLyB3aXRoIHRoZSBzdHJlYW1EYXRhUGFyc2VyIGJlZm9yZSB0aGUgZGVsZWdh
dGUgbWV0aG9kIHJldHVybnMuCi0gICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gcmVzcG9uZGVkU2Vt
YXBob3JlID0gQm94PEJpbmFyeVNlbWFwaG9yZT46OmNyZWF0ZSgpOwotICAgIGNhbGxPbk1haW5U
aHJlYWQoW3BhcmVudCA9IF9wYXJlbnQsIHRyYWNrSUQsIHJlc3BvbmRlZFNlbWFwaG9yZV0oKSB7
Ci0gICAgICAgIGlmIChwYXJlbnQpCi0gICAgICAgICAgICBwYXJlbnQtPndpbGxQcm92aWRlQ29u
dGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHRyYWNrSUQpOwotICAg
ICAgICByZXNwb25kZWRTZW1hcGhvcmUtPnNpZ25hbCgpOwotICAgIH0pOwotCi0gICAgd2hpbGUg
KHRydWUpIHsKLSAgICAgICAgaWYgKHJlc3BvbmRlZFNlbWFwaG9yZS0+d2FpdEZvcigxMDBfbXMp
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChfYWJvcnRTZW1hcGhvcmUtPndh
aXRGb3IoMTAwX21zKSkgewotICAgICAgICAgICAgX2Fib3J0U2VtYXBob3JlLT5zaWduYWwoKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLX0KLQotQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfQkVHSU4KLS0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZT
dHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQcm92aWRlQ29udGVudEtleVJl
cXVlc3RJbml0aWFsaXphdGlvbkRhdGE6KE5TRGF0YSAqKWluaXREYXRhIGZvclRyYWNrSUQ6KENN
UGVyc2lzdGVudFRyYWNrSUQpdHJhY2tJRAotQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5ECi17Ci0gICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRh
UGFyc2VyID09IF9wYXJzZXIpOwotCi0gICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gaGFzU2Vzc2lv
blNlbWFwaG9yZSA9IEJveDxCaW5hcnlTZW1hcGhvcmU+OjpjcmVhdGUoKTsKLSAgICBjYWxsT25N
YWluVGhyZWFkKFtwYXJlbnQgPSBfcGFyZW50LCBwcm90ZWN0ZWRJbml0RGF0YSA9IFJldGFpblB0
cjxOU0RhdGE+KGluaXREYXRhKSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNlbWFwaG9yZV0gewotICAg
ICAgICBpZiAocGFyZW50KQotICAgICAgICAgICAgcGFyZW50LT5kaWRQcm92aWRlQ29udGVudEtl
eVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHByb3RlY3RlZEluaXREYXRhLmdl
dCgpLCB0cmFja0lELCBoYXNTZXNzaW9uU2VtYXBob3JlKTsKLSAgICB9KTsKLQotICAgIHdoaWxl
ICh0cnVlKSB7Ci0gICAgICAgIGlmIChoYXNTZXNzaW9uU2VtYXBob3JlLT53YWl0Rm9yKDEwMF9t
cykpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKF9hYm9ydFNlbWFwaG9yZS0+
d2FpdEZvcigxMDBfbXMpKSB7Ci0gICAgICAgICAgICBfYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotfQotQGVuZAotCiBAaW50
ZXJmYWNlIFdlYkFWU2FtcGxlQnVmZmVyRXJyb3JMaXN0ZW5lciA6IE5TT2JqZWN0IHsKICAgICBX
ZWFrUHRyPFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBfcGFyZW50OwogICAg
IFZlY3RvcjxSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+PiBfbGF5ZXJzOwpA
QCAtMzkxLDQzICsyNDUsNiBAQCBAZW5kCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1l
c3BhY2UgUEFMOwogCi0jcHJhZ21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIE1lZGlhRGVzY3JpcHRp
b25BVkZPYmpDCi0KLWNsYXNzIE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDIGZpbmFsIDogcHVibGlj
IE1lZGlhRGVzY3JpcHRpb24gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVkaWFEZXNjcmlw
dGlvbkFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sqIHRyYWNrKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDKHRyYWNrKSk7IH0KLSAgICB2aXJ0dWFsIH5N
ZWRpYURlc2NyaXB0aW9uQVZGT2JqQygpIHsgfQotCi0gICAgQXRvbVN0cmluZyBjb2RlYygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY29kZWM7IH0KLSAgICBib29sIGlzVmlkZW8oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2lzVmlkZW87IH0KLSAgICBib29sIGlzQXVkaW8oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2lzQXVkaW87IH0KLSAgICBib29sIGlzVGV4dCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNUZXh0OyB9Ci0gICAgCi1wcml2YXRlOgotICAgIE1lZGlh
RGVzY3JpcHRpb25BVkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2spCi0gICAgICAgIDogbV9pc1Zp
ZGVvKFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zp
c3VhbF0pCi0gICAgICAgICwgbV9pc0F1ZGlvKFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGlj
OkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGVdKQotICAgICAgICAsIG1faXNUZXh0KFt0cmFj
ayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGVdKQot
ICAgIHsKLSAgICAgICAgTlNBcnJheSogZm9ybWF0RGVzY3JpcHRpb25zID0gW3RyYWNrIGZvcm1h
dERlc2NyaXB0aW9uc107Ci0gICAgICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzY3JpcHRp
b24gPSBbZm9ybWF0RGVzY3JpcHRpb25zIGNvdW50XSA/IChfX2JyaWRnZSBDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmKVtmb3JtYXREZXNjcmlwdGlvbnMgb2JqZWN0QXRJbmRleDowXSA6IDA7Ci0gICAg
ICAgIGlmIChkZXNjcmlwdGlvbikgewotICAgICAgICAgICAgRm91ckNoYXJDb2RlIGNvZGVjID0g
Q01Gb3JtYXREZXNjcmlwdGlvbkdldE1lZGlhU3ViVHlwZShkZXNjcmlwdGlvbik7Ci0gICAgICAg
ICAgICBDRlN0cmluZ1JlZiBvcmlnaW5hbEZvcm1hdEtleSA9IFBBTDo6Y2FuTG9hZF9Db3JlTWVk
aWFfa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fUHJvdGVjdGVkQ29udGVudE9yaWdpbmFs
Rm9ybWF0KCkgPyBQQUw6OmdldF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNp
b25fUHJvdGVjdGVkQ29udGVudE9yaWdpbmFsRm9ybWF0KCkgOiBDRlNUUigiQ29tbW9uRW5jcnlw
dGlvbk9yaWdpbmFsRm9ybWF0Iik7Ci0gICAgICAgICAgICBDRlR5cGVSZWYgb3JpZ2luYWxGb3Jt
YXQgPSBDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9uKGRlc2NyaXB0aW9uLCBvcmlnaW5h
bEZvcm1hdEtleSk7Ci0gICAgICAgICAgICBpZiAob3JpZ2luYWxGb3JtYXQgJiYgQ0ZHZXRUeXBl
SUQob3JpZ2luYWxGb3JtYXQpID09IENGTnVtYmVyR2V0VHlwZUlEKCkpCi0gICAgICAgICAgICAg
ICAgQ0ZOdW1iZXJHZXRWYWx1ZSgoQ0ZOdW1iZXJSZWYpb3JpZ2luYWxGb3JtYXQsIGtDRk51bWJl
clNJbnQzMlR5cGUsICZjb2RlYyk7Ci0gICAgICAgICAgICBtX2NvZGVjID0gQXRvbVN0cmluZyhy
ZWludGVycHJldF9jYXN0PExDaGFyKj4oJmNvZGVjKSwgNCk7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBBdG9tU3RyaW5nIG1fY29kZWM7Ci0gICAgYm9vbCBtX2lzVmlkZW87Ci0gICAgYm9vbCBt
X2lzQXVkaW87Ci0gICAgYm9vbCBtX2lzVGV4dDsKLX07Ci0KICNwcmFnbWEgbWFyayAtCiAjcHJh
Z21hIG1hcmsgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMKIApAQCAtNDY1LDE0ICsyODIsMTMg
QEAgc3RhdGljIHZvaWQgYnVmZmVyV2FzQ29uc3VtZWRDYWxsYmFjayhDTU5vdGlmaWNhdGlvbkNl
bnRlclJlZiwgY29uc3Qgdm9pZCogbGlzdGUKICAgICAgICAgc291cmNlQnVmZmVyLT5idWZmZXJX
YXNDb25zdW1lZCgpOwogfQogCi1SZWY8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyog
cGFyZW50KQorUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6Y3JlYXRlKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqIHBhcmVudCwgUmVm
PFNvdXJjZUJ1ZmZlclBhcnNlcj4mJiBwYXJzZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMocGFyZW50KSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMocGFyZW50LCBXVEZNb3ZlKHBhcnNl
cikpKTsKIH0KIAotU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKLSAgICA6IG1fcGFy
c2VyKGFkb3B0TlMoW1BBTDo6YWxsb2NBVlN0cmVhbURhdGFQYXJzZXJJbnN0YW5jZSgpIGluaXRd
KSkKLSAgICAsIG1fZGVsZWdhdGUoYWRvcHROUyhbW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3Rl
bmVyIGFsbG9jXSBpbml0V2l0aFBhcnNlcjptX3BhcnNlci5nZXQoKSBwYXJlbnQ6bWFrZVdlYWtQ
dHIoKnRoaXMpXSkpCitTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyogcGFyZW50LCBSZWY8U291cmNl
QnVmZmVyUGFyc2VyPiYmIHBhcnNlcikKKyAgICA6IG1fcGFyc2VyKFdURk1vdmUocGFyc2VyKSkK
ICAgICAsIG1fZXJyb3JMaXN0ZW5lcihhZG9wdE5TKFtbV2ViQVZTYW1wbGVCdWZmZXJFcnJvckxp
c3RlbmVyIGFsbG9jXSBpbml0V2l0aFBhcmVudDptYWtlV2Vha1B0cigqdGhpcyldKSkKICAgICAs
IG1faXNBcHBlbmRpbmdHcm91cChhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX2dyb3VwX2NyZWF0ZSgp
KSkKICAgICAsIG1fbWVkaWFTb3VyY2UocGFyZW50KQpAQCAtNDg2LDEwICszMDIsMjYgQEAgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMKIAogICAgIGlmICghW1BBTDo6Z2V0QVZTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJDbGFzcygpIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3Rvcihw
cmVyb2xsRGVjb2RlV2l0aENvbXBsZXRpb25IYW5kbGVyOildKQogICAgICAgICBDTU5vdGlmaWNh
dGlvbkNlbnRlckFkZExpc3RlbmVyKENNTm90aWZpY2F0aW9uQ2VudGVyR2V0RGVmYXVsdExvY2Fs
Q2VudGVyKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1fbWFwSUQpLCBidWZmZXJXYXNDb25z
dW1lZENhbGxiYWNrLCBrQ01TYW1wbGVCdWZmZXJDb25zdW1lck5vdGlmaWNhdGlvbl9CdWZmZXJD
b25zdW1lZCwgbnVsbHB0ciwgMCk7Ci0gICAgCi0gICAgbV9kZWxlZ2F0ZS5nZXQoKS5hYm9ydFNl
bWFwaG9yZSA9IEJveDxTZW1hcGhvcmU+OjpjcmVhdGUoMCk7CiAKICAgICBzb3VyY2VCdWZmZXJN
YXAoKS5hZGQobV9tYXBJRCwgbWFrZVdlYWtQdHIoKnRoaXMpKTsKKworICAgIG1fcGFyc2VyLT5z
ZXREaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKHRoaXMpXSAoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYgc2VnbWVudCkgbXV0YWJsZSB7Cisg
ICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAg
ICAgICAgICAgIHdlYWtUaGlzLT5kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShXVEZNb3ZlKHNl
Z21lbnQpKTsKKyAgICB9KTsKKworICAgIG1fcGFyc2VyLT5zZXREaWRFbmNvdW50ZXJFcnJvckR1
cmluZ1BhcnNpbmdDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKGludDMy
X3QgZXJyb3JDb2RlKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgd2Vha1RoaXMtPmRpZEVuY291bnRl
ckVycm9yRHVyaW5nUGFyc2luZyhlcnJvckNvZGUpOworICAgIH0pOworCisgICAgbV9wYXJzZXIt
PnNldERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKV0gKFJlZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0
IFN0cmluZyYgbWVkaWFUeXBlKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgd2Vha1RoaXMtPmRpZFBy
b3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKFdURk1vdmUoc2FtcGxlKSwgdHJhY2tJRCwgbWVkaWFU
eXBlKTsKKyAgICB9KTsKIH0KIAogU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6On5Tb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQygpCkBAIC01MDAsNiArMzMyLDcgQEAgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6On5Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQygpCiAgICAgc291cmNlQnVm
ZmVyTWFwKCkucmVtb3ZlKG1fbWFwSUQpOwogICAgIGRlc3Ryb3lQYXJzZXIoKTsKICAgICBkZXN0
cm95UmVuZGVyZXJzKCk7CisgICAgY2xlYXJUcmFja3MoKTsKIAogICAgIGlmICghW1BBTDo6Z2V0
QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJDbGFzcygpIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVj
dG9yOkBzZWxlY3RvcihwcmVyb2xsRGVjb2RlV2l0aENvbXBsZXRpb25IYW5kbGVyOildKQogICAg
ICAgICBDTU5vdGlmaWNhdGlvbkNlbnRlclJlbW92ZUxpc3RlbmVyKENNTm90aWZpY2F0aW9uQ2Vu
dGVyR2V0RGVmYXVsdExvY2FsQ2VudGVyKCksIHRoaXMsIGJ1ZmZlcldhc0NvbnN1bWVkQ2FsbGJh
Y2ssIGtDTVNhbXBsZUJ1ZmZlckNvbnN1bWVyTm90aWZpY2F0aW9uX0J1ZmZlckNvbnN1bWVkLCBu
dWxscHRyKTsKQEAgLTUwOCw3ICszNDEsNyBAQCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
flNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKCkKICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBo
b3JlLT5zaWduYWwoKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlk
UGFyc2VTdHJlYW1EYXRhQXNBc3NldChBVkFzc2V0KiBhc3NldCkKK3ZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9u
U2VnbWVudCYmIHNlZ21lbnQpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIApA
QCAtNTE2LDUyICszNDksMzMgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlk
UGFyc2VTdHJlYW1EYXRhQXNBc3NldChBVkFzc2V0KiBhc3NldCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5zaG91bGRDaGVja0hhcmR3YXJlU3Vw
cG9ydCgpKSB7Ci0gICAgICAgIGZvciAoQVZBc3NldFRyYWNrICp0cmFjayBpbiBbYXNzZXQgdHJh
Y2tzXSkgewotICAgICAgICAgICAgaWYgKCFhc3NldFRyYWNrTWVldHNIYXJkd2FyZURlY29kZVJl
cXVpcmVtZW50cyh0cmFjaywgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPm1lZGlhQ29udGVudFR5
cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KCkpKSB7CisgICAgICAgIGZvciAoYXV0byYgaW5m
byA6IHNlZ21lbnQudmlkZW9UcmFja3MpIHsKKyAgICAgICAgICAgIGF1dG8gY29kZWMgPSBGb3Vy
Q0M6OmZyb21TdHJpbmcoaW5mby5kZXNjcmlwdGlvbi0+Y29kZWMoKSk7CisgICAgICAgICAgICBp
ZiAoIWNvZGVjKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKCFj
b2RlY3NNZWV0SGFyZHdhcmVEZWNvZGVSZXF1aXJlbWVudHMoe3sgKmNvZGVjIH19LCBtX21lZGlh
U291cmNlLT5wbGF5ZXIoKS0+bWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBv
cnQoKSkpIHsKICAgICAgICAgICAgICAgICBtX3BhcnNpbmdTdWNjZWVkZWQgPSBmYWxzZTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBtX2Fzc2V0ID0gYXNzZXQ7Ci0KLSAgICBtX3ZpZGVvVHJhY2tzLmNsZWFyKCk7Ci0gICAg
bV9hdWRpb1RyYWNrcy5jbGVhcigpOwotCi0gICAgbV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4dElu
aXRpYWxpemF0aW9uU2VnbWVudCA9IGZhbHNlOwotCi0gICAgU291cmNlQnVmZmVyUHJpdmF0ZUNs
aWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50IHNlZ21lbnQ7Ci0KLSAgICBpZiAoW21fYXNzZXQg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdmVyYWxsRHVyYXRpb25IaW50KV0pCi0gICAg
ICAgIHNlZ21lbnQuZHVyYXRpb24gPSBQQUw6OnRvTWVkaWFUaW1lKFttX2Fzc2V0IG92ZXJhbGxE
dXJhdGlvbkhpbnRdKTsKLQotICAgIGlmIChzZWdtZW50LmR1cmF0aW9uLmlzSW52YWxpZCgpIHx8
IHNlZ21lbnQuZHVyYXRpb24gPT0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpKQotICAgICAgICBzZWdt
ZW50LmR1cmF0aW9uID0gUEFMOjp0b01lZGlhVGltZShbbV9hc3NldCBkdXJhdGlvbl0pOwotCi0g
ICAgZm9yIChBVkFzc2V0VHJhY2sqIHRyYWNrIGluIFttX2Fzc2V0IHRyYWNrc10pIHsKLSAgICAg
ICAgaWYgKFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3Rp
Y0xlZ2libGVdKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRSgxMjUxNjEpOiBIYW5kbGUgaW4tYmFu
ZCB0ZXh0IHRyYWNrcy4KLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAgY2xl
YXJUcmFja3MoKTsKIAotICAgICAgICBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6
QVZNZWRpYUNoYXJhY3RlcmlzdGljVmlzdWFsXSkgewotICAgICAgICAgICAgU291cmNlQnVmZmVy
UHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OjpWaWRlb1RyYWNrSW5mb3JtYXRp
b24gaW5mbzsKLSAgICAgICAgICAgIGF1dG8gdmlkZW9UcmFjayA9IFZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGUodHJhY2ssIHRoaXMpOwotICAgICAgICAgICAgaW5m
by50cmFjayA9IHZpZGVvVHJhY2suY29weVJlZigpOwotICAgICAgICAgICAgbV92aWRlb1RyYWNr
cy5hcHBlbmQoV1RGTW92ZSh2aWRlb1RyYWNrKSk7Ci0gICAgICAgICAgICBpbmZvLmRlc2NyaXB0
aW9uID0gTWVkaWFEZXNjcmlwdGlvbkFWRk9iakM6OmNyZWF0ZSh0cmFjayk7Ci0gICAgICAgICAg
ICBzZWdtZW50LnZpZGVvVHJhY2tzLmFwcGVuZChpbmZvKTsKLSAgICAgICAgfSBlbHNlIGlmIChb
dHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNBdWRpYmxl
XSkgewotICAgICAgICAgICAgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRp
b25TZWdtZW50OjpBdWRpb1RyYWNrSW5mb3JtYXRpb24gaW5mbzsKLSAgICAgICAgICAgIGF1dG8g
YXVkaW9UcmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGUo
dHJhY2ssIHRoaXMpOwotICAgICAgICAgICAgaW5mby50cmFjayA9IGF1ZGlvVHJhY2suY29weVJl
ZigpOwotICAgICAgICAgICAgbV9hdWRpb1RyYWNrcy5hcHBlbmQoV1RGTW92ZShhdWRpb1RyYWNr
KSk7Ci0gICAgICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVkaWFEZXNjcmlwdGlvbkFWRk9i
akM6OmNyZWF0ZSh0cmFjayk7Ci0gICAgICAgICAgICBzZWdtZW50LmF1ZGlvVHJhY2tzLmFwcGVu
ZChpbmZvKTsKLSAgICAgICAgfQorICAgIGZvciAoYXV0byB2aWRlb1RyYWNrSW5mbyA6IHNlZ21l
bnQudmlkZW9UcmFja3MpIHsKKyAgICAgICAgdmlkZW9UcmFja0luZm8udHJhY2stPnNldFNlbGVj
dGVkQ2hhbmdlZENhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoVmlkZW9U
cmFja1ByaXZhdGUmIHRyYWNrLCBib29sIHNlbGVjdGVkKSB7CisgICAgICAgICAgICBpZiAod2Vh
a1RoaXMpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPnRyYWNrRGlkQ2hhbmdlU2VsZWN0ZWQo
dHJhY2ssIHNlbGVjdGVkKTsKKyAgICAgICAgfSk7CisgICAgICAgIG1fdmlkZW9UcmFja3MuYXBw
ZW5kKHZpZGVvVHJhY2tJbmZvLnRyYWNrKTsKKyAgICB9CiAKLSAgICAgICAgLy8gRklYTUUoMTI1
MTYxKTogQWRkIFRleHRUcmFjayBzdXBwb3J0CisgICAgZm9yIChhdXRvIGF1ZGlvVHJhY2tJbmZv
IDogc2VnbWVudC5hdWRpb1RyYWNrcykgeworICAgICAgICBhdWRpb1RyYWNrSW5mby50cmFjay0+
c2V0RW5hYmxlZENoYW5nZWRDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0g
KEF1ZGlvVHJhY2tQcml2YXRlJiB0cmFjaywgYm9vbCBlbmFibGVkKSB7CisgICAgICAgICAgICBp
ZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPnRyYWNrRGlkQ2hhbmdlRW5h
YmxlZCh0cmFjaywgZW5hYmxlZCk7CisgICAgICAgIH0pOworICAgICAgICBtX2F1ZGlvVHJhY2tz
LmFwcGVuZChhdWRpb1RyYWNrSW5mby50cmFjayk7CiAgICAgfQogCiAgICAgaWYgKG1fbWVkaWFT
b3VyY2UpCkBAIC01NzEsNjEgKzM4NSwyOSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQogICAgICAgICBt
X2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21l
bnQoc2VnbWVudCk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEZh
aWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcihOU0Vycm9yICplcnJvcikKK3ZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhpbnQz
Ml90IGNvZGUpCiB7CiAjaWYgTE9HX0RJU0FCTEVECiAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsK
ICNlbmRpZgotICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCBbW2Vycm9yIGRlc2NyaXB0aW9u
XSBVVEY4U3RyaW5nXSk7CisgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsIGNvZGUpOwogCiAg
ICAgbV9wYXJzaW5nU3VjY2VlZGVkID0gZmFsc2U7CiB9CiAKLXN0cnVjdCBQcm9jZXNzQ29kZWRG
cmFtZUluZm8gewotICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBzb3VyY2VCdWZmZXI7
Ci0gICAgaW50IHRyYWNrSUQ7Ci0gICAgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGU7Ci19OwotCi12
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJh
Y2tJRChpbnQgdHJhY2tJRCwgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyLCBjb25zdCBT
dHJpbmcmIG1lZGlhVHlwZSwgdW5zaWduZWQpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChSZWY8TWVkaWFTYW1wbGU+JiYgbWVk
aWFTYW1wbGUsIGludDMyX3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpCiB7Ci0g
ICAgcHJvY2Vzc0NvZGVkRnJhbWUodHJhY2tJRCwgc2FtcGxlQnVmZmVyLCBtZWRpYVR5cGUpOwot
fQorICAgIFVOVVNFRF9QQVJBTShtZWRpYVR5cGUpOwogCi1ib29sIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpwcm9jZXNzQ29kZWRGcmFtZShpbnQgdHJhY2tJRCwgQ01TYW1wbGVCdWZmZXJS
ZWYgc2FtcGxlQnVmZmVyLCBjb25zdCBTdHJpbmcmKQotewogICAgIGlmICh0cmFja0lEICE9IG1f
ZW5hYmxlZFZpZGVvVHJhY2tJRCAmJiAhbV9hdWRpb1JlbmRlcmVycy5jb250YWlucyh0cmFja0lE
KSkgewogICAgICAgICAvLyBGSVhNRSgxMjUxNjEpOiBXZSBkb24ndCBoYW5kbGUgdGV4dCB0cmFj
a3MsIGFuZCBwYXNzaW5nIHRoaXMgc2FtcGxlIHVwIHRvIFNvdXJjZUJ1ZmZlcgogICAgICAgICAv
LyB3aWxsIGp1c3QgY29uZnVzZSBpdHMgc3RhdGUuIERyb3AgdGhpcyBzYW1wbGUgdW50aWwgd2Ug
Y2FuIGhhbmRsZSB0ZXh0IHRyYWNrcyBwcm9wZXJseS4KLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5l
eHRJbml0aWFsaXphdGlvblNlZ21lbnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlm
ICghbV9jbGllbnQpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgYXV0byBtZWRpYVNhbXBs
ZSA9IE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKHNhbXBsZUJ1ZmZlciwgdHJhY2tJRCk7Ci0K
LSAgICBpZiAobWVkaWFTYW1wbGUtPmlzSG9tb2dlbmVvdXMoKSkgewotICAgICAgICBERUJVR19M
T0coTE9HSURFTlRJRklFUiwgbWVkaWFTYW1wbGUtPnRvSlNPTlN0cmluZygpKTsKKyAgICBERUJV
R19MT0coTE9HSURFTlRJRklFUiwgbWVkaWFTYW1wbGUtPnRvSlNPTlN0cmluZygpKTsKKyAgICBp
ZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVj
ZWl2ZVNhbXBsZShtZWRpYVNhbXBsZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQot
ICAgIGF1dG8gbWVkaWFTYW1wbGVzID0gbWVkaWFTYW1wbGUtPmRpdmlkZUludG9Ib21vZ2VuZW91
c1NhbXBsZXMoKTsKLSAgICBmb3IgKGF1dG8mIHNhbXBsZSA6IG1lZGlhU2FtcGxlcykgewotICAg
ICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgc2FtcGxlLT50b0pTT05TdHJpbmcoKSk7Ci0g
ICAgICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVNhbXBsZShzYW1w
bGUpOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpkaWRSZWFjaEVuZE9mVHJhY2tXaXRoVHJhY2tJRChpbnQsIGNvbnN0IFN0
cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9u
RGF0YUZvclRyYWNrSUQoaW50IHRyYWNrSUQpCkBAIC02MzMsMTggKzQxNSwyMCBAQCB2b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5p
dGlhbGl6YXRpb25EYXRhRgogICAgIGlmICghbV9tZWRpYVNvdXJjZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgQVNTRVJUKG1fcGFyc2VyKTsKLQogI2lmIEhBVkUoQVZTVFJFQU1TRVNTSU9OKSAm
JiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIsICJ0cmFjayA9ICIsIHRyYWNrSUQpOwogCiAgICAgbV9wcm90ZWN0ZWRUcmFja0lEID0g
dHJhY2tJRDsKIAorICAgIGF1dG8gcGFyc2VyID0gdGhpcy0+cGFyc2VyKCk7CisgICAgaWYgKCFw
YXJzZXIpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChDRE1TZXNzaW9uTWVkaWFTb3VyY2VB
VkZPYmpDKiBzZXNzaW9uID0gbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPmNkbVNlc3Npb24oKSkK
LSAgICAgICAgc2Vzc2lvbi0+YWRkUGFyc2VyKG1fcGFyc2VyLmdldCgpKTsKKyAgICAgICAgc2Vz
c2lvbi0+YWRkUGFyc2VyKHBhcnNlcik7CiAgICAgZWxzZSBpZiAoIUNETVNlc3Npb25BVkNvbnRl
bnRLZXlTZXNzaW9uOjppc0F2YWlsYWJsZSgpKSB7CiAgICAgICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotICAgICAgICBbbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPnN0cmVhbVNlc3Np
b24oKSBhZGRTdHJlYW1EYXRhUGFyc2VyOm1fcGFyc2VyLmdldCgpXTsKKyAgICAgICAgW21fbWVk
aWFTb3VyY2UtPnBsYXllcigpLT5zdHJlYW1TZXNzaW9uKCkgYWRkU3RyZWFtRGF0YVBhcnNlcjpw
YXJzZXJdOwogICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgfQogI2Vsc2UK
QEAgLTY1Miw3ICs0MzYsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxs
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRgogI2VuZGlmCiB9CiAK
LXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoTlNEYXRhKiBpbml0RGF0YSwgaW50IHRy
YWNrSUQsIEJveDxCaW5hcnlTZW1hcGhvcmU+IGhhc1Nlc3Npb25TZW1hcGhvcmUpCit2b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0
aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKFJlZjxVaW50OEFycmF5PiYmIGluaXREYXRhLCBpbnQg
dHJhY2tJRCwgQm94PEJpbmFyeVNlbWFwaG9yZT4gaGFzU2Vzc2lvblNlbWFwaG9yZSkKIHsKICAg
ICBpZiAoIW1fbWVkaWFTb3VyY2UpCiAgICAgICAgIHJldHVybjsKQEAgLTY2MSwxMSArNDQ1LDEx
IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
LCAidHJhY2sgPSAiLCB0cmFja0lEKTsKIAogICAgIG1fcHJvdGVjdGVkVHJhY2tJRCA9IHRyYWNr
SUQ7Ci0gICAgbV9pbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShbaW5pdERhdGEgbGVuZ3Ro
XSk7Ci0gICAgW2luaXREYXRhIGdldEJ5dGVzOm1faW5pdERhdGEtPmRhdGEoKSBsZW5ndGg6bV9p
bml0RGF0YS0+bGVuZ3RoKCldOworICAgIG1faW5pdERhdGEgPSBXVEZNb3ZlKGluaXREYXRhKTsK
ICAgICBtX21lZGlhU291cmNlLT5zb3VyY2VCdWZmZXJLZXlOZWVkZWQodGhpcywgbV9pbml0RGF0
YS5nZXQoKSk7CiAgICAgaWYgKGF1dG8gc2Vzc2lvbiA9IG1fbWVkaWFTb3VyY2UtPnBsYXllcigp
LT5jZG1TZXNzaW9uKCkpIHsKLSAgICAgICAgc2Vzc2lvbi0+YWRkUGFyc2VyKG1fcGFyc2VyLmdl
dCgpKTsKKyAgICAgICAgaWYgKGF1dG8gcGFyc2VyID0gdGhpcy0+cGFyc2VyKCkpCisgICAgICAg
ICAgICBzZXNzaW9uLT5hZGRQYXJzZXIocGFyc2VyKTsKICAgICAgICAgaGFzU2Vzc2lvblNlbWFw
aG9yZS0+c2lnbmFsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02NzYsMTQgKzQ2MCwx
NSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtl
eVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGbwogICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZSA9
IGhhc1Nlc3Npb25TZW1hcGhvcmU7CiAgICAgCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkg
JiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQotICAgIGF1dG8gaW5pdERhdGFCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0YSk7CisgICAgYXV0byBpbml0RGF0YUJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRhLT5kYXRhKCksIGluaXREYXRhLT5ieXRlTGVu
Z3RoKCkpOwogICAgIGF1dG8ga2V5SURzID0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpl
eHRyYWN0S2V5SURzU2luZihpbml0RGF0YUJ1ZmZlcik7CiAgICAgaWYgKCFrZXlJRHMpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChtX2NkbUluc3RhbmNlKSB7CiAgICAgICAgIGlmIChhdXRv
IGluc3RhbmNlU2Vzc2lvbiA9IG1fY2RtSW5zdGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMoa2V5SURz
LnZhbHVlKCkpKSB7Ci0gICAgICAgICAgICBbaW5zdGFuY2VTZXNzaW9uLT5jb250ZW50S2V5U2Vz
c2lvbigpIGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6bV9wYXJzZXIuZ2V0KCldOworICAgICAgICAg
ICAgaWYgKGF1dG8gcGFyc2VyID0gdGhpcy0+cGFyc2VyKCkpCisgICAgICAgICAgICAgICAgW2lu
c3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50
OnBhcnNlcl07CiAgICAgICAgICAgICBpZiAobV9oYXNTZXNzaW9uU2VtYXBob3JlKSB7CiAgICAg
ICAgICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKICAgICAgICAgICAg
ICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUgPSBudWxscHRyOwpAQCAtNzI0LDE2ICs1MDksNTQg
QEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25l
ZCBjaGFyPiYmIGRhdGEpCiB7CiAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsICJkYXRhIGxl
bmd0aCA9ICIsIGRhdGEuc2l6ZSgpKTsKIAorICAgIEFTU0VSVCghbV9oYXNTZXNzaW9uU2VtYXBo
b3JlKTsKKyAgICBBU1NFUlQoIW1fYWJvcnRTZW1hcGhvcmUpOworCisgICAgbV9hYm9ydFNlbWFw
aG9yZSA9IEJveDxTZW1hcGhvcmU+OjpjcmVhdGUoMCk7CisgICAgbV9wYXJzZXItPnNldFdpbGxQ
cm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJh
Y2soW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGFib3J0U2VtYXBob3JlID0gbV9hYm9y
dFNlbWFwaG9yZV0gKHVpbnQzMl90IHRyYWNrSUQpIG11dGFibGUgeworICAgICAgICAvLyBXZSBt
dXN0IGNhbGwgc3luY2hyb25vdXNseSB0byB0aGUgbWFpbiB0aHJlYWQsIGFzIHRoZSBBVlN0cmVh
bVNlc3Npb24gbXVzdCBiZSBhc3NvY2lhdGVkCisgICAgICAgIC8vIHdpdGggdGhlIHN0cmVhbURh
dGFQYXJzZXIgYmVmb3JlIHRoZSBkZWxlZ2F0ZSBtZXRob2QgcmV0dXJucy4KKyAgICAgICAgQm94
PEJpbmFyeVNlbWFwaG9yZT4gcmVzcG9uZGVkU2VtYXBob3JlID0gQm94PEJpbmFyeVNlbWFwaG9y
ZT46OmNyZWF0ZSgpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IFdURk1v
dmUod2Vha1RoaXMpLCB0cmFja0lELCByZXNwb25kZWRTZW1hcGhvcmVdKCkgeworICAgICAgICAg
ICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT53aWxsUHJvdmlkZUNv
bnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCh0cmFja0lEKTsKKyAg
ICAgICAgICAgIHJlc3BvbmRlZFNlbWFwaG9yZS0+c2lnbmFsKCk7CisgICAgICAgIH0pOworCisg
ICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBpZiAocmVzcG9uZGVkU2VtYXBob3Jl
LT53YWl0Rm9yKDEwMF9tcykpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg
ICBpZiAoYWJvcnRTZW1hcGhvcmUtPndhaXRGb3IoMTAwX21zKSkgeworICAgICAgICAgICAgICAg
IGFib3J0U2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIG1fcGFyc2VyLT5zZXREaWRQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2so
W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGFib3J0U2VtYXBob3JlID0gbV9hYm9ydFNl
bWFwaG9yZV0gKFJlZjxVaW50OEFycmF5PiYmIGluaXREYXRhLCBpbnQzMl90IHRyYWNrSUQpIG11
dGFibGUgeworICAgICAgICBCb3g8QmluYXJ5U2VtYXBob3JlPiBoYXNTZXNzaW9uU2VtYXBob3Jl
ID0gQm94PEJpbmFyeVNlbWFwaG9yZT46OmNyZWF0ZSgpOworICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBpbml0RGF0YSA9IFdURk1vdmUoaW5p
dERhdGEpLCB0cmFja0lELCBoYXNTZXNzaW9uU2VtYXBob3JlXSAoKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+ZGlkUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChXVEZNb3ZlKGlu
aXREYXRhKSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNlbWFwaG9yZSk7CisgICAgICAgIH0pOworCisg
ICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBpZiAoaGFzU2Vzc2lvblNlbWFwaG9y
ZS0+d2FpdEZvcigxMDBfbXMpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgaWYgKGFib3J0U2VtYXBob3JlLT53YWl0Rm9yKDEwMF9tcykpIHsKKyAgICAgICAgICAgICAg
ICBhYm9ydFNlbWFwaG9yZS0+c2lnbmFsKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfSk7CisKICAgICBtX3BhcnNpbmdTdWNjZWVkZWQg
PSB0cnVlOwogICAgIGRpc3BhdGNoX2dyb3VwX2VudGVyKG1faXNBcHBlbmRpbmdHcm91cC5nZXQo
KSk7CiAKLSAgICBkaXNwYXRjaF9hc3luYyhnbG9iYWxEYXRhUGFyc2VyUXVldWUoKSwgW2RhdGEg
PSBXVEZNb3ZlKGRhdGEpLCB3ZWFrVGhpcyA9IG1fYXBwZW5kV2Vha0ZhY3RvcnkuY3JlYXRlV2Vh
a1B0cigqdGhpcyksIHBhcnNlciA9IG1fcGFyc2VyLCBkZWxlZ2F0ZSA9IG1fZGVsZWdhdGUsIGlz
QXBwZW5kaW5nR3JvdXAgPSBtX2lzQXBwZW5kaW5nR3JvdXAsIHBhcnNlclN0YXRlV2FzUmVzZXQg
PSBtX3BhcnNlclN0YXRlV2FzUmVzZXRdICgpIG11dGFibGUgewotICAgICAgICBhdXRvIHNoYXJl
ZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKLSAgICAgICAgYXV0
byBuc0RhdGEgPSBzaGFyZWREYXRhLT5jcmVhdGVOU0RhdGEoKTsKLSAgICAgICAgaWYgKHBhcnNl
clN0YXRlV2FzUmVzZXQpCi0gICAgICAgICAgICBbcGFyc2VyIGFwcGVuZFN0cmVhbURhdGE6bnNE
YXRhLmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURhdGFQYXJzZXJTdHJlYW1EYXRhRGlzY29udGlu
dWl0eV07Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFtwYXJzZXIgYXBwZW5kU3RyZWFtRGF0
YTpuc0RhdGEuZ2V0KCldOworICAgIGRpc3BhdGNoX2FzeW5jKGdsb2JhbERhdGFQYXJzZXJRdWV1
ZSgpLCBbZGF0YSA9IFdURk1vdmUoZGF0YSksIHdlYWtUaGlzID0gbV9hcHBlbmRXZWFrRmFjdG9y
eS5jcmVhdGVXZWFrUHRyKCp0aGlzKSwgcGFyc2VyID0gbV9wYXJzZXIsIGlzQXBwZW5kaW5nR3Jv
dXAgPSBtX2lzQXBwZW5kaW5nR3JvdXBdICgpIG11dGFibGUgeworICAgICAgICBwYXJzZXItPmFw
cGVuZERhdGEoV1RGTW92ZShkYXRhKSk7CiAKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vh
a1RoaXNdIHsKICAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKQEAgLTc0MSwxMSArNTY0LDIwIEBA
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZChWZWN0b3I8dW5zaWduZWQg
Y2hhcj4mJiBkYXRhKQogICAgICAgICB9KTsKICAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfbGVhdmUo
aXNBcHBlbmRpbmdHcm91cC5nZXQoKSk7CiAgICAgfSk7Ci0gICAgbV9wYXJzZXJTdGF0ZVdhc1Jl
c2V0ID0gZmFsc2U7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVu
ZENvbXBsZXRlZCgpCiB7CisgICAgaWYgKG1fYWJvcnRTZW1hcGhvcmUpIHsKKyAgICAgICAgbV9h
Ym9ydFNlbWFwaG9yZS0+c2lnbmFsKCk7CisgICAgICAgIG1fYWJvcnRTZW1hcGhvcmUgPSBuaWw7
CisgICAgfQorCisgICAgaWYgKG1faGFzU2Vzc2lvblNlbWFwaG9yZSkgeworICAgICAgICBtX2hh
c1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhv
cmUgPSBuaWw7CisgICAgfQorCiAgICAgaWYgKG1fcGFyc2luZ1N1Y2NlZWRlZCAmJiBtX21lZGlh
U291cmNlKQogICAgICAgICBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c2V0TG9hZGluZ1Byb2dy
ZXNzc2VkKHRydWUpOwogCkBAIC03NjAsMzkgKzU5MiwzOSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjphYm9ydCgpCiAgICAgLy8gVGhlIHBhcnNpbmcgcXVldWUgbWF5IGJlIGJs
b2NrZWQgd2FpdGluZyBmb3IgdGhlIG1haW4gdGhyZWFkIHRvIHByb3ZpZGUgaXQgYSBBVlN0cmVh
bVNlc3Npb24uIFdlCiAgICAgLy8gd2VyZSBhc2tlZCB0byBhYm9ydCwgYW5kIHRoYXQgY2FuY2Vs
cyBhbGwgb3V0c3RhbmRpbmcgYXBwZW5kIG9wZXJhdGlvbnMuIFdpdGhvdXQgY2FuY2VsbGluZyB0
aGlzCiAgICAgLy8gc2VtYXBob3JlLCB0aGUgbV9pc0FwcGVuZGluZ0dyb3VwIHdhaXQgb3BlcmF0
aW9uIHdpbGwgZGVhZGxvY2suCi0gICAgaWYgKG1faGFzU2Vzc2lvblNlbWFwaG9yZSkKKyAgICBp
ZiAobV9oYXNTZXNzaW9uU2VtYXBob3JlKSB7CiAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9y
ZS0+c2lnbmFsKCk7Ci0gICAgbV9kZWxlZ2F0ZS5nZXQoKS5hYm9ydFNlbWFwaG9yZS0+c2lnbmFs
KCk7CisgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZSA9IG51bGxwdHI7CisgICAgfQorICAg
IGlmIChtX2Fib3J0U2VtYXBob3JlKSB7CisgICAgICAgIG1fYWJvcnRTZW1hcGhvcmUtPnNpZ25h
bCgpOworICAgICAgICBtX2Fib3J0U2VtYXBob3JlID0gbnVsbHB0cjsKKyAgICB9CiAgICAgZGlz
cGF0Y2hfZ3JvdXBfd2FpdChtX2lzQXBwZW5kaW5nR3JvdXAuZ2V0KCksIERJU1BBVENIX1RJTUVf
Rk9SRVZFUik7Ci0gICAgbV9hcHBlbmRXZWFrRmFjdG9yeS5yZXZva2VBbGwoKTsKLSAgICBtX2Rl
bGVnYXRlLmdldCgpLnBhcmVudCA9IG1fYXBwZW5kV2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigq
dGhpcyk7Ci0gICAgbV9kZWxlZ2F0ZS5nZXQoKS5hYm9ydFNlbWFwaG9yZSA9IEJveDxTZW1hcGhv
cmU+OjpjcmVhdGUoMCk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnJl
c2V0UGFyc2VyU3RhdGUoKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAKLSAg
ICBtX3BhcnNlclN0YXRlV2FzUmVzZXQgPSB0cnVlOwotICAgIG1fZGlzY2FyZFNhbXBsZXNVbnRp
bE5leHRJbml0aWFsaXphdGlvblNlZ21lbnQgPSB0cnVlOworICAgIG1fcGFyc2VyLT5yZXNldFBh
cnNlclN0YXRlKCk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRlc3Ry
b3lQYXJzZXIoKQogeworICAgIGF1dG8gcGFyc2VyID0gdGhpcy0+cGFyc2VyKCk7CisgICAgaWYg
KCFwYXJzZXIpCisgICAgICAgIHJldHVybjsKICNpZiBIQVZFKEFWU1RSRUFNU0VTU0lPTikgJiYg
RU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgaWYgKG1fbWVkaWFTb3VyY2UgJiYg
bV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPmhhc1N0cmVhbVNlc3Npb24oKSkKLSAgICAgICAgW21f
bWVkaWFTb3VyY2UtPnBsYXllcigpLT5zdHJlYW1TZXNzaW9uKCkgcmVtb3ZlU3RyZWFtRGF0YVBh
cnNlcjptX3BhcnNlci5nZXQoKV07CisgICAgICAgIFttX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+
c3RyZWFtU2Vzc2lvbigpIHJlbW92ZVN0cmVhbURhdGFQYXJzZXI6cGFyc2VyXTsKICNlbmRpZgog
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikK
ICAgICBpZiAobV9jZG1JbnN0YW5jZSkgewogICAgICAgICBpZiAoYXV0byBpbnN0YW5jZVNlc3Np
b24gPSBtX2NkbUluc3RhbmNlLT5zZXNzaW9uRm9yS2V5SURzKG1fa2V5SURzKSkKLSAgICAgICAg
ICAgIFtpbnN0YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNzaW9uKCkgcmVtb3ZlQ29udGVudEtl
eVJlY2lwaWVudDptX3BhcnNlci5nZXQoKV07CisgICAgICAgICAgICBbaW5zdGFuY2VTZXNzaW9u
LT5jb250ZW50S2V5U2Vzc2lvbigpIHJlbW92ZUNvbnRlbnRLZXlSZWNpcGllbnQ6cGFyc2VyXTsK
ICAgICB9CiAjZW5kaWYKLQotICAgIFttX2RlbGVnYXRlIGludmFsaWRhdGVdOwotICAgIG1fZGVs
ZWdhdGUgPSBudWxscHRyOwotICAgIG1fcGFyc2VyID0gbnVsbHB0cjsKIH0KIAogdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGVzdHJveVJlbmRlcmVycygpCkBAIC04MTcsNiArNjQ5
LDE3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRlc3Ryb3lSZW5kZXJlcnMo
KQogICAgIG1fYXVkaW9SZW5kZXJlcnMuY2xlYXIoKTsKIH0KIAordm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6Y2xlYXJUcmFja3MoKQoreworICAgIGZvciAoYXV0byYgdHJhY2sgOiBt
X3ZpZGVvVHJhY2tzKQorICAgICAgICB0cmFjay0+c2V0U2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2so
bnVsbHB0cik7CisgICAgbV92aWRlb1RyYWNrcy5jbGVhcigpOworCisgICAgZm9yIChhdXRvJiB0
cmFjayA6IG1fYXVkaW9UcmFja3MpCisgICAgICAgIHRyYWNrLT5zZXRFbmFibGVkQ2hhbmdlZENh
bGxiYWNrKG51bGxwdHIpOworICAgIG1fYXVkaW9UcmFja3MuY2xlYXIoKTsKK30KKwogdm9pZCBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6cmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpCiB7CiAg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKQEAgLTg1NiwyMSArNjk5LDIxIEBAIGJvb2wg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Omhhc0F1ZGlvKCkgY29uc3QKICAgICByZXR1cm4g
bV9jbGllbnQgJiYgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRpbygpOwogfQog
Ci12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQo
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqIHRyYWNrKQordm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFuZ2VTZWxlY3RlZChWaWRlb1RyYWNrUHJp
dmF0ZSYgdHJhY2ssIGJvb2wgc2VsZWN0ZWQpCiB7Ci0gICAgaW50IHRyYWNrSUQgPSB0cmFjay0+
dHJhY2tJRCgpOworICAgIGludCB0cmFja0lEID0gdHJhY2suaWQoKS50b0ludCgpOwogCi0gICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAidmlkZW8gdHJhY2tJRCA9ICIsIHRyYWNrSUQsICIs
IHNlbGVjdGVkID0gIiwgdHJhY2stPnNlbGVjdGVkKCkpOworICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgInZpZGVvIHRyYWNrSUQgPSAiLCB0cmFja0lELCAiLCBzZWxlY3RlZCA9ICIsIHNl
bGVjdGVkKTsKIAotICAgIGlmICghdHJhY2stPnNlbGVjdGVkKCkgJiYgbV9lbmFibGVkVmlkZW9U
cmFja0lEID09IHRyYWNrSUQpIHsKKyAgICBpZiAoIXNlbGVjdGVkICYmIG1fZW5hYmxlZFZpZGVv
VHJhY2tJRCA9PSB0cmFja0lEKSB7CiAgICAgICAgIG1fZW5hYmxlZFZpZGVvVHJhY2tJRCA9IC0x
OwotICAgICAgICBbbV9wYXJzZXIgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YTpOTyBmb3JUcmFj
a0lEOnRyYWNrSURdOworICAgICAgICBtX3BhcnNlci0+c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0
YUZvclRyYWNrSUQoZmFsc2UsIHRyYWNrSUQpOwogCiAgICAgICAgIGlmIChtX2RlY29tcHJlc3Np
b25TZXNzaW9uKQogICAgICAgICAgICAgbV9kZWNvbXByZXNzaW9uU2Vzc2lvbi0+c3RvcFJlcXVl
c3RpbmdNZWRpYURhdGEoKTsKLSAgICB9IGVsc2UgaWYgKHRyYWNrLT5zZWxlY3RlZCgpKSB7Cisg
ICAgfSBlbHNlIGlmIChzZWxlY3RlZCkgewogICAgICAgICBtX2VuYWJsZWRWaWRlb1RyYWNrSUQg
PSB0cmFja0lEOwotICAgICAgICBbbV9wYXJzZXIgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YTpZ
RVMgZm9yVHJhY2tJRDp0cmFja0lEXTsKKyAgICAgICAgbV9wYXJzZXItPnNldFNob3VsZFByb3Zp
ZGVNZWRpYURhdGFGb3JUcmFja0lEKHRydWUsIHRyYWNrSUQpOwogCiAgICAgICAgIGlmIChtX2Rl
Y29tcHJlc3Npb25TZXNzaW9uKSB7CiAgICAgICAgICAgICBtX2RlY29tcHJlc3Npb25TZXNzaW9u
LT5yZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5KFt0aGlzLCB0cmFja0lEXSB7CkBAIC04ODIsMjEg
KzcyNSwyMSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5n
ZUVuYWJsZWQoVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdQogICAgIG1fbWVkaWFTb3VyY2UtPmhh
c1NlbGVjdGVkVmlkZW9DaGFuZ2VkKCp0aGlzKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDKiB0cmFjaykKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRy
YWNrRGlkQ2hhbmdlRW5hYmxlZChBdWRpb1RyYWNrUHJpdmF0ZSYgdHJhY2ssIGJvb2wgZW5hYmxl
ZCkKIHsKLSAgICBpbnQgdHJhY2tJRCA9IHRyYWNrLT50cmFja0lEKCk7CisgICAgaW50IHRyYWNr
SUQgPSB0cmFjay5pZCgpLnRvSW50KCk7CiAKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
ICJhdWRpbyB0cmFja0lEID0gIiwgdHJhY2tJRCwgIiwgc2VsZWN0ZWQgPSAiLCB0cmFjay0+ZW5h
YmxlZCgpKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJhdWRpbyB0cmFja0lEID0g
IiwgdHJhY2tJRCwgIiwgc2VsZWN0ZWQgPSAiLCBlbmFibGVkKTsKIAotICAgIGlmICghdHJhY2st
PmVuYWJsZWQoKSkgeworICAgIGlmICghZW5hYmxlZCkgewogICAgICAgICBBTExPV19ORVdfQVBJ
X1dJVEhPVVRfR1VBUkRTX0JFR0lOCiAgICAgICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckF1
ZGlvUmVuZGVyZXI+IHJlbmRlcmVyID0gbV9hdWRpb1JlbmRlcmVycy5nZXQodHJhY2tJRCk7CiAg
ICAgICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECi0gICAgICAgIFttX3BhcnNl
ciBzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhOk5PIGZvclRyYWNrSUQ6dHJhY2tJRF07CisgICAg
ICAgIG1fcGFyc2VyLT5zZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChmYWxzZSwg
dHJhY2tJRCk7CiAgICAgICAgIGlmIChtX21lZGlhU291cmNlKQogICAgICAgICAgICAgbV9tZWRp
YVNvdXJjZS0+cGxheWVyKCktPnJlbW92ZUF1ZGlvUmVuZGVyZXIocmVuZGVyZXIuZ2V0KCkpOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIFttX3BhcnNlciBzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRh
OllFUyBmb3JUcmFja0lEOnRyYWNrSURdOworICAgICAgICBtX3BhcnNlci0+c2V0U2hvdWxkUHJv
dmlkZU1lZGlhRGF0YUZvclRyYWNrSUQodHJ1ZSwgdHJhY2tJRCk7CiAgICAgICAgIEFMTE9XX05F
V19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KICAgICAgICAgUmV0YWluUHRyPEFWU2FtcGxlQnVm
ZmVyQXVkaW9SZW5kZXJlcj4gcmVuZGVyZXI7CiAgICAgICAgIEFMTE9XX05FV19BUElfV0lUSE9V
VF9HVUFSRFNfRU5ECkBAIC05MjYsNiArNzY5LDEzIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlRW5hYmxlZChBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291
CiAgICAgfQogfQogCitBVlN0cmVhbURhdGFQYXJzZXIqIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpwYXJzZXIoKSBjb25zdAoreworICAgIGlmIChpczxTb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDPihtX3BhcnNlci5nZXQoKSkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDPihtX3BhcnNlci5nZXQoKSkucGFyc2VyKCk7CisgICAgcmV0dXJuIG5p
bDsKK30KKwogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6c2V0Q0RNU2Vzc2lvbihD
RE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDKiBzZXNzaW9uKQogewogI2lmIEVOQUJMRShMRUdB
Q1lfRU5DUllQVEVEX01FRElBKQpAQCAtOTg3LDcgKzgzNyw4IEBAIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmF0dGVtcHRUb0RlY3J5cHQoKQogICAgIGlmICghaW5zdGFuY2VTZXNz
aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBbaW5zdGFuY2VTZXNzaW9uLT5jb250ZW50S2V5
U2Vzc2lvbigpIGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6bV9wYXJzZXIuZ2V0KCldOworICAgIGlm
IChhdXRvIHBhcnNlciA9IHRoaXMtPnBhcnNlcigpKQorICAgICAgICBbaW5zdGFuY2VTZXNzaW9u
LT5jb250ZW50S2V5U2Vzc2lvbigpIGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6cGFyc2VyXTsKICAg
ICBpZiAobV9oYXNTZXNzaW9uU2VtYXBob3JlKSB7CiAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFw
aG9yZS0+c2lnbmFsKCk7CiAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZSA9IG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCBjNzhiOTUzYzdiYWE4ZWNiMjkyOGJmMmMzZGQ1
NTFhOTBlZDIzOGNjLi42YjExY2NhMzJiZGQ0OWQyYWRkNjEwZTlhN2E3NzZiNTk1YjhhOThiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIklu
dFNpemUuaCIKICNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZUFWRi5oIgorI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIApAQCAtNDIsMTQgKzQz
LDExIEBAIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOwogY2xhc3MgVmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgVmlkZW9UcmFja1ByaXZh
dGVBVkYgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFZpZGVvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDKQogcHVibGljOgotICAgIHN0YXRpYyBSZWY8VmlkZW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sqIHRyYWNrLCBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQorICAgIHN0YXRpYyBSZWY8VmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sqIHRyYWNrKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakModHJhY2ssIHBhcmVudCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBW
aWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyh0cmFjaykpOwogICAgIH0KIAotICAg
IGJvb2wgc2VsZWN0ZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIHNldFNlbGVjdGVkKGJv
b2wpIG92ZXJyaWRlOwotCiAgICAgdm9pZCBzZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFjayopOwog
ICAgIEFWQXNzZXRUcmFjayogYXNzZXRUcmFjaygpIGNvbnN0OwogCkBAIC01OCwxNCArNTYsMTIg
QEAgcHVibGljOgogICAgIEZsb2F0U2l6ZSBuYXR1cmFsU2l6ZSgpIGNvbnN0OwogCiBwcml2YXRl
OgotICAgIGV4cGxpY2l0IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKEFWQXNz
ZXRUcmFjayosIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpOworICAgIGV4cGxp
Y2l0IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKEFWQXNzZXRUcmFjayopOwog
ICAgIAogICAgIHZvaWQgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4gbV9pbXBsOwotICAgIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDKiBtX3BhcmVudDsKICAgICBpbnQgbV90cmFja0lEOwotICAgIGJv
b2wgbV9zZWxlY3RlZDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggMmM3
MzkyNzk2ZTBmNTI1Zjk0YzI4YWEyMGFhZDEwZTMwZDBkMDUxYy4uYWZkMWI3ZjNhOTMzNDkxNzFk
OTEwNThmNjg1Y2ZlODBiYjhkNzMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTM0
LDExICszNCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVmlkZW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKEFW
QXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCitW
aWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaykKICAgICA6IG1faW1wbChtYWtlVW5p
cXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKLSAgICAsIG1fcGFyZW50KHBh
cmVudCkKICAgICAsIG1fdHJhY2tJRCgtMSkKLSAgICAsIG1fc2VsZWN0ZWQoZmFsc2UpCiB7CiAg
ICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CkBAIC02NSwyMSArNjMsNiBAQCBBVkFz
c2V0VHJhY2sqIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjphc3NldFRyYWNr
KCkgY29uc3QKICAgICByZXR1cm4gbV9pbXBsLT5hc3NldFRyYWNrKCk7CiB9CiAKLQotYm9vbCBW
aWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2VsZWN0ZWQoKSBjb25zdAotewot
ICAgIHJldHVybiBtX3NlbGVjdGVkOwotfQotCi12b2lkIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpzZXRTZWxlY3RlZChib29sIHNlbGVjdGVkKQotewotICAgIGlmIChtX3Nl
bGVjdGVkID09IHNlbGVjdGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3NlbGVjdGVkID0g
c2VsZWN0ZWQ7Ci0gICAgbV9wYXJlbnQtPnRyYWNrRGlkQ2hhbmdlRW5hYmxlZCh0aGlzKTsKLX0K
LQogRmxvYXRTaXplIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpuYXR1cmFs
U2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEZsb2F0U2l6ZShbYXNzZXRUcmFjaygpIG5hdHVy
YWxTaXplXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmRl
OWJkNmZkYzE2ZDE0NjBmODUzMTU0OGFhOThlY2ViMjA0MTNmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVX
ZWJNLmNwcApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlV2ViTS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1JlZjxBdWRpb1RyYWNrUHJpdmF0ZVdlYk0+IEF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6
Y3JlYXRlKHdlYm06OlRyYWNrRW50cnkmJiB0cmFja0VudHJ5KQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEF1ZGlvVHJhY2tQcml2YXRlV2ViTShXVEZNb3ZlKHRyYWNrRW50cnkpKSk7Cit9
CisKK0F1ZGlvVHJhY2tQcml2YXRlV2ViTTo6QXVkaW9UcmFja1ByaXZhdGVXZWJNKHdlYm06OlRy
YWNrRW50cnkmJiB0cmFja0VudHJ5KQorICAgIDogbV90cmFjayhXVEZNb3ZlKHRyYWNrRW50cnkp
KQoreworICAgIGlmIChtX3RyYWNrLmlzX2VuYWJsZWQuaXNfcHJlc2VudCgpKQorICAgICAgICBz
ZXRFbmFibGVkKG1fdHJhY2suaXNfZW5hYmxlZC52YWx1ZSgpKTsKK30KKworQXRvbVN0cmluZyBB
dWRpb1RyYWNrUHJpdmF0ZVdlYk06OmlkKCkgY29uc3QKK3sKKyAgICBpZiAobV90cmFja0lELmlz
TnVsbCgpKQorICAgICAgICBtX3RyYWNrSUQgPSBtX3RyYWNrLnRyYWNrX3VpZC5pc19wcmVzZW50
KCkgPyBBdG9tU3RyaW5nOjpudW1iZXIobV90cmFjay50cmFja191aWQudmFsdWUoKSkgOiBlbXB0
eUF0b20oKTsKKyAgICByZXR1cm4gbV90cmFja0lEOworfQorCitBdG9tU3RyaW5nIEF1ZGlvVHJh
Y2tQcml2YXRlV2ViTTo6bGFiZWwoKSBjb25zdAoreworICAgIGlmIChtX2xhYmVsLmlzTnVsbCgp
KQorICAgICAgICBtX2xhYmVsID0gbV90cmFjay5uYW1lLmlzX3ByZXNlbnQoKSA/IEF0b21TdHJp
bmc6OmZyb21VVEY4KG1fdHJhY2submFtZS52YWx1ZSgpLmRhdGEoKSwgbV90cmFjay5uYW1lLnZh
bHVlKCkubGVuZ3RoKCkpIDogZW1wdHlBdG9tKCk7CisgICAgcmV0dXJuIG1fbGFiZWw7Cit9CisK
K0F0b21TdHJpbmcgQXVkaW9UcmFja1ByaXZhdGVXZWJNOjpsYW5ndWFnZSgpIGNvbnN0Cit7Cisg
ICAgaWYgKG1fbGFuZ3VhZ2UuaXNOdWxsKCkpCisgICAgICAgIG1fbGFuZ3VhZ2UgPSBtX3RyYWNr
Lmxhbmd1YWdlLmlzX3ByZXNlbnQoKSA/IEF0b21TdHJpbmc6OmZyb21VVEY4KG1fdHJhY2subGFu
Z3VhZ2UudmFsdWUoKS5kYXRhKCksIG1fdHJhY2subGFuZ3VhZ2UudmFsdWUoKS5sZW5ndGgoKSkg
OiBlbXB0eUF0b20oKTsKKyAgICByZXR1cm4gbV9sYW5ndWFnZTsKK30KKworaW50IEF1ZGlvVHJh
Y2tQcml2YXRlV2ViTTo6dHJhY2tJbmRleCgpIGNvbnN0Cit7CisgICAgaWYgKG1fdHJhY2sudHJh
Y2tfbnVtYmVyLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgcmV0dXJuIG1fdHJhY2sudHJhY2tfbnVt
YmVyLnZhbHVlKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVX
ZWJNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODA1NmU4NWQxNmJjMjJkZWYwZGVlNDE0NWE3ZjZkODc1MjVkYWZm
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlLmgiCisjaW5jbHVk
ZSA8d2VibS9kb21fdHlwZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRp
b1RyYWNrUHJpdmF0ZVdlYk0gZmluYWwgOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGUgeworcHVi
bGljOgorICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVXZWJNPiBjcmVhdGUod2VibTo6
VHJhY2tFbnRyeSYmKTsKKyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNrUHJpdmF0ZVdlYk0oKSA9IGRl
ZmF1bHQ7CisKKyAgICBBdG9tU3RyaW5nIGlkKCkgY29uc3QgZmluYWw7CisgICAgQXRvbVN0cmlu
ZyBsYWJlbCgpIGNvbnN0IGZpbmFsOworICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBm
aW5hbDsKKyAgICBpbnQgdHJhY2tJbmRleCgpIGNvbnN0IGZpbmFsOworCitwcml2YXRlOgorICAg
IEF1ZGlvVHJhY2tQcml2YXRlV2ViTSh3ZWJtOjpUcmFja0VudHJ5JiYpOworICAgIHdlYm06OlRy
YWNrRW50cnkgbV90cmFjazsKKyAgICBtdXRhYmxlIEF0b21TdHJpbmcgbV90cmFja0lEOworICAg
IG11dGFibGUgQXRvbVN0cmluZyBtX2xhYmVsOworICAgIG11dGFibGUgQXRvbVN0cmluZyBtX2xh
bmd1YWdlOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Zh
MjI4YzgzN2NlNGUwMDQyMjAwNjg5ZjdmOGY5NmU2NDgxZjQ4MAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
ci5jcHAKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXIuaCIKKworI2luY2x1ZGUgIkNvbnRlbnRUeXBl
LmgiCisjaW5jbHVkZSAiU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oIgorI2luY2x1ZGUgIlNv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIFNvdXJjZUJ1ZmZlclBhcnNlcjo6aXNDb250
ZW50VHlwZVN1cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYgdHlwZSkKK3sKKyAgICBpZiAoU291
cmNlQnVmZmVyUGFyc2VyV2ViTTo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCh0eXBlKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgaWYgKFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmlzQ29u
dGVudFR5cGVTdXBwb3J0ZWQodHlwZSkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVy
biBmYWxzZTsKK30KKworUmVmUHRyPFNvdXJjZUJ1ZmZlclBhcnNlcj4gU291cmNlQnVmZmVyUGFy
c2VyOjpjcmVhdGUoY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlKQoreworICAgIGlmIChX
VEY6OmVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY29udGVudFR5cGUuY29udGFpbmVyVHlwZSgpLCAi
YXVkaW8vd2VibSIpIHx8IFdURjo6ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb250ZW50VHlwZS5j
b250YWluZXJUeXBlKCksICJ2aWRlby93ZWJtIikpCisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgU291cmNlQnVmZmVyUGFyc2VyV2ViTSgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWI2YjA5ODZkNjQ3M2ExNWMwOGVjZDQ1ODNhZWNjYTA1MjIyN2VkNwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlci5oCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmgiCisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvVWludDhBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29udGVudFR5cGU7CitjbGFzcyBN
ZWRpYVNhbXBsZTsKKworY2xhc3MgU291cmNlQnVmZmVyUGFyc2VyIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFNvdXJjZUJ1ZmZlclBhcnNlcj4geworcHVibGljOgorICAgIHN0YXRpYyBi
b29sIGlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29uc3QgQ29udGVudFR5cGUmKTsKKworICAgIHN0
YXRpYyBSZWZQdHI8U291cmNlQnVmZmVyUGFyc2VyPiBjcmVhdGUoY29uc3QgQ29udGVudFR5cGUm
KTsKKyAgICB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQYXJzZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBl
bnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsKKyAgICAgICAgQVZGT2JqQywKKyAgICAgICAgV2Vi
TSwKKyAgICB9OworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOworICAgIGVudW0g
Y2xhc3MgQXBwZW5kRmxhZ3MgOiB1aW50OF90IHsKKyAgICAgICAgTm9uZSwKKyAgICAgICAgRGlz
Y29udGludWl0eSwKKyAgICB9OworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmREYXRhKFZlY3Rvcjx1
bnNpZ25lZCBjaGFyPiYmLCBBcHBlbmRGbGFncyA9IEFwcGVuZEZsYWdzOjpOb25lKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGZsdXNoUGVuZGluZ01lZGlhRGF0YSgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoYm9vbCwgaW50MzJfdCkg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQcm92aWRlTWVkaWFkYXRhRm9yVHJhY2tJRChp
bnQzMl90KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSA9IDA7CisK
KyAgICAvLyBXaWxsIGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgdXNpbmcgSW5p
dGlhbGl6YXRpb25TZWdtZW50ID0gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6
YXRpb25TZWdtZW50OworICAgIHVzaW5nIERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJh
Y2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYpPjsKKyAgICB2
b2lkIHNldERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soRGlkUGFyc2VJbml0aWFs
aXphdGlvbkRhdGFDYWxsYmFjayYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgbV9kaWRQYXJz
ZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CisgICAgfQor
CisgICAgLy8gV2lsbCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgorICAgIHVzaW5nIERp
ZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lk
KGludDMyX3QgZXJyb3JDb2RlKT47CisgICAgdm9pZCBzZXREaWRFbmNvdW50ZXJFcnJvckR1cmlu
Z1BhcnNpbmdDYWxsYmFjayhEaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayYm
IGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgbV9kaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNp
bmdDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworICAgIH0KKworICAgIC8vIFdpbGwgYmUg
Y2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICB1c2luZyBEaWRQcm92aWRlTWVkaWFEYXRh
Q2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmPE1lZGlhU2FtcGxlPiYmLCBpbnQzMl90
IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKT47CisgICAgdm9pZCBzZXREaWRQcm92
aWRlTWVkaWFEYXRhQ2FsbGJhY2soRGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrJiYgY2FsbGJh
Y2spCisgICAgeworICAgICAgICBtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spOworICAgIH0KKworICAgIC8vIFdpbGwgYmUgY2FsbGVkIHN5bmNocm9ub3Vz
bHkgb24gdGhlIHBhcnNlciB0aGVhZC4KKyAgICB1c2luZyBXaWxsUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrID0gV1RGOjpGdW5jdGlv
bjx2b2lkKHVpbnQzMl90IHRyYWNrSUQpPjsKKyAgICB2b2lkIHNldFdpbGxQcm92aWRlQ29udGVu
dEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soV2lsbFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayYm
IGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgbV93aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7
CisgICAgfQorCisgICAgLy8gV2lsbCBiZSBjYWxsZWQgc3luY2hyb25vdXNseSBvbiB0aGUgcGFy
c2VyIHRoZWFkLgorICAgIHVzaW5nIERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxp
emF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChSZWY8VWlu
dDhBcnJheT4mJiwgaW50MzJfdCB0cmFja0lEKT47CisgICAgdm9pZCBzZXREaWRQcm92aWRlQ29u
dGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soRGlkUHJv
dmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNr
JiYgY2FsbGJhY2spCisgICAgeworICAgICAgICBtX2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVz
dEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
OworICAgIH0KKworcHJvdGVjdGVkOgorICAgIFNvdXJjZUJ1ZmZlclBhcnNlcigpID0gZGVmYXVs
dDsKKworICAgIERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2sgbV9kaWRQYXJzZUlu
aXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrOworICAgIERpZEVuY291bnRlckVycm9yRHVyaW5nUGFy
c2luZ0NhbGxiYWNrIG1fZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2s7Cisg
ICAgRGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrIG1fZGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxi
YWNrOworICAgIFdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFG
b3JUcmFja0lEQ2FsbGJhY2sgbV93aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6
YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrOworICAgIERpZFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayBtX2RpZFByb3ZpZGVDb250
ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjazsKK307CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGE0YzA3NmUx
MjBlMGVlMzdlOWI4YzNjNjVmMmE4MWIxYzM3ZmI5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwCkBAIC0wLDAgKzEsMzU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaCIKKworI2luY2x1ZGUgIkF1ZGlvVHJh
Y2tQcml2YXRlV2ViTS5oIgorI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIKKyNp
bmNsdWRlICJNZWRpYURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
KyNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCisjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGVXZWJNLmgiCisjaW5jbHVkZSA8d2Vi
bS93ZWJtX3BhcnNlci5oPgorI2luY2x1ZGUgPHd0Zi9BbGdvcml0aG1zLmg+CisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL2Rhcndpbi9XZWFrTGlua2luZy5o
PgorCitXVEZfV0VBS19MSU5LX0ZPUkNFX0lNUE9SVCh3ZWJtOjpzd2FwKTsKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdGF0aWMgYm9vbCBpc1dlYm1QYXJzZXJBdmFpbGFibGUoKQoreworICAg
IHJldHVybiAhIXdlYm06OnN3YXAgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS53ZWJNUGFyc2VyRW5hYmxlZCgpOworfQorCit1c2luZyBuYW1lc3BhY2Ugd2VibTsK
KworY2xhc3MgVmVjdG9yUmVhZGVyIGZpbmFsIDogcHVibGljIHdlYm06OlJlYWRlciB7CitwdWJs
aWM6CisgICAgVmVjdG9yUmVhZGVyKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRhdGEpCisgICAg
ICAgIDogbV9kYXRhIHsgV1RGTW92ZShkYXRhKSB9CisgICAgeworICAgIH0KKworICAgIFN0YXR1
cyBSZWFkKHN0ZDo6c2l6ZV90IG51bVRvUmVhZCwgdWludDhfdCogb3V0cHV0QnVmZmVyLCB1aW50
NjRfdCogbnVtQWN0dWFsbHlSZWFkKSBmaW5hbAorICAgIHsKKyAgICAgICAgQVNTRVJUKG91dHB1
dEJ1ZmZlciAmJiBudW1BY3R1YWxseVJlYWQpOworICAgICAgICBpZiAoIW91dHB1dEJ1ZmZlciB8
fCAhbnVtQWN0dWFsbHlSZWFkKQorICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtO
b3RFbm91Z2hNZW1vcnkpOworCisgICAgICAgIGlmIChtX3Bvc2l0aW9uID49IG1fZGF0YS5zaXpl
KCkpIHsKKyAgICAgICAgICAgICpudW1BY3R1YWxseVJlYWQgPSAwOworICAgICAgICAgICAgcmV0
dXJuIFN0YXR1cyhTdGF0dXM6OmtFbmRPZkZpbGUpOworICAgICAgICB9CisKKyAgICAgICAgc2l6
ZV90IG51bUF2YWlsYWJsZSA9IG1fZGF0YS5zaXplKCkgLSBtX3Bvc2l0aW9uOworICAgICAgICBp
ZiAobnVtVG9SZWFkIDwgbnVtQXZhaWxhYmxlKSB7CisgICAgICAgICAgICBtZW1jcHkob3V0cHV0
QnVmZmVyLCBtX2RhdGEuZGF0YSgpICsgbV9wb3NpdGlvbiwgbnVtVG9SZWFkKTsKKyAgICAgICAg
ICAgICpudW1BY3R1YWxseVJlYWQgPSBudW1Ub1JlYWQ7CisgICAgICAgICAgICBtX3Bvc2l0aW9u
ICs9IG51bVRvUmVhZDsKKyAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21w
bGV0ZWQpOworICAgICAgICB9CisKKyAgICAgICAgbWVtY3B5KG91dHB1dEJ1ZmZlciwgbV9kYXRh
LmRhdGEoKSArIG1fcG9zaXRpb24sIG51bUF2YWlsYWJsZSk7CisgICAgICAgICpudW1BY3R1YWxs
eVJlYWQgPSBudW1BdmFpbGFibGU7CisgICAgICAgIG1fcG9zaXRpb24gKz0gbnVtQXZhaWxhYmxl
OworICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rUGFydGlhbCk7CisgICAgfQorCisg
ICAgU3RhdHVzIFNraXAodWludDY0X3QgbnVtVG9Ta2lwLCB1aW50NjRfdCogbnVtQWN0dWFsbHlT
a2lwcGVkKSBmaW5hbAorICAgIHsKKyAgICAgICAgQVNTRVJUKG51bUFjdHVhbGx5U2tpcHBlZCk7
CisgICAgICAgIGlmICghbnVtQWN0dWFsbHlTa2lwcGVkKQorICAgICAgICAgICAgcmV0dXJuIFN0
YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworCisgICAgICAgIGlmIChtX3Bvc2l0aW9u
ID49IG1fZGF0YS5zaXplKCkpIHsKKyAgICAgICAgICAgICpudW1BY3R1YWxseVNraXBwZWQgPSAw
OworICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtXb3VsZEJsb2NrKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHNpemVfdCBudW1BdmFpbGFibGUgPSBtX2RhdGEuc2l6ZSgpIC0gbV9w
b3NpdGlvbjsKKworICAgICAgICBpZiAobnVtVG9Ta2lwIDwgbnVtQXZhaWxhYmxlKSB7CisgICAg
ICAgICAgICAqbnVtQWN0dWFsbHlTa2lwcGVkID0gbnVtVG9Ta2lwOworICAgICAgICAgICAgbV9w
b3NpdGlvbiArPSBudW1Ub1NraXA7CisgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6
a09rQ29tcGxldGVkKTsKKyAgICAgICAgfQorCisgICAgICAgICpudW1BY3R1YWxseVNraXBwZWQg
PSBudW1BdmFpbGFibGU7CisgICAgICAgIG1fcG9zaXRpb24gKz0gbnVtQXZhaWxhYmxlOworICAg
ICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rUGFydGlhbCk7CisgICAgfQorCisgICAgdWlu
dDY0X3QgUG9zaXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CisKK3By
aXZhdGU6CisgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IG1fZGF0YTsKKyAgICBzaXplX3QgbV9w
b3NpdGlvbiB7IDAgfTsKK307CisKK2NsYXNzIE1lZGlhRGVzY3JpcHRpb25XZWJNIGZpbmFsIDog
cHVibGljIE1lZGlhRGVzY3JpcHRpb24geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8TWVkaWFE
ZXNjcmlwdGlvbldlYk0+IGNyZWF0ZSh3ZWJtOjpUcmFja0VudHJ5JiYgdHJhY2spCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYURlc2NyaXB0aW9uV2ViTShXVEZNb3Zl
KHRyYWNrKSkpOworICAgIH0KKworICAgIE1lZGlhRGVzY3JpcHRpb25XZWJNKHdlYm06OlRyYWNr
RW50cnkmJiB0cmFjaykKKyAgICAgICAgOiBtX3RyYWNrIHsgV1RGTW92ZSh0cmFjaykgfQorICAg
IHsKKyAgICB9CisKKyAgICBBdG9tU3RyaW5nIGNvZGVjKCkgY29uc3QgZmluYWwKKyAgICB7Cisg
ICAgICAgIGlmIChtX2NvZGVjKQorICAgICAgICAgICAgcmV0dXJuICptX2NvZGVjOworCisgICAg
ICAgIC8vIEZyb206IGh0dHBzOi8vd3d3Lm1hdHJvc2thLm9yZy90ZWNobmljYWwvY29kZWNfc3Bl
Y3MuaHRtbAorICAgICAgICAvLyAiRWFjaCBDb2RlYyBJRCBNVVNUIGluY2x1ZGUgYSBNYWpvciBD
b2RlYyBJRCBpbW1lZGlhdGVseSBmb2xsb3dpbmcgdGhlIENvZGVjIElEIFByZWZpeC4KKyAgICAg
ICAgLy8gQSBNYWpvciBDb2RlYyBJRCBNQVkgYmUgZm9sbG93ZWQgYnkgYW4gT1BUSU9OQUwgQ29k
ZWMgSUQgU3VmZml4IHRvIGNvbW11bmljYXRlIGEgcmVmaW5lbWVudAorICAgICAgICAvLyBvZiB0
aGUgTWFqb3IgQ29kZWMgSUQuIElmIGEgQ29kZWMgSUQgU3VmZml4IGlzIHVzZWQsIHRoZW4gdGhl
IENvZGVjIElEIE1VU1QgaW5jbHVkZSBhIGZvcndhcmQKKyAgICAgICAgLy8gc2xhc2ggKOKAnC/i
gJ0pIGFzIGEgc2VwYXJhdG9yIGJldHdlZW4gdGhlIE1ham9yIENvZGVjIElEIGFuZCB0aGUgQ29k
ZWMgSUQgU3VmZml4LiBUaGUgTWFqb3IgQ29kZWMKKyAgICAgICAgLy8gSUQgTVVTVCBiZSBjb21w
b3NlZCBvZiBvbmx5IGNhcGl0YWwgbGV0dGVycyAoQS1aKSBhbmQgbnVtYmVycyAoMC05KS4gVGhl
IENvZGVjIElEIFN1ZmZpeCBNVVNUCisgICAgICAgIC8vIGJlIGNvbXBvc2VkIG9mIG9ubHkgY2Fw
aXRhbCBsZXR0ZXJzIChBLVopLCBudW1iZXJzICgwLTkpLCB1bmRlcnNjb3JlICjigJxf4oCdKSwg
YW5kIGZvcndhcmQgc2xhc2ggKOKAnC/igJ0pLiIKKworICAgICAgICBpZiAoIW1fdHJhY2suY29k
ZWNfaWQuaXNfcHJlc2VudCgpKSB7CisgICAgICAgICAgICBtX2NvZGVjID0gZW1wdHlBdG9tKCk7
CisgICAgICAgICAgICByZXR1cm4gKm1fY29kZWM7CisgICAgICAgIH0KKworICAgICAgICBTdHJp
bmdWaWV3IGNvZGVjSUQgeyBtX3RyYWNrLmNvZGVjX2lkLnZhbHVlKCkuZGF0YSgpLCAodW5zaWdu
ZWQpbV90cmFjay5jb2RlY19pZC52YWx1ZSgpLmxlbmd0aCgpIH07CisgICAgICAgIGlmICghY29k
ZWNJRC5zdGFydHNXaXRoKCJWXyIpICYmICFjb2RlY0lELnN0YXJ0c1dpdGgoIkFfIikgJiYgIWNv
ZGVjSUQuc3RhcnRzV2l0aCgiU18iKSkgeworICAgICAgICAgICAgbV9jb2RlYyA9IGVtcHR5QXRv
bSgpOworICAgICAgICAgICAgcmV0dXJuICptX2NvZGVjOworICAgICAgICB9CisKKyAgICAgICAg
YXV0byBzbGFzaExvY2F0aW9uID0gY29kZWNJRC5maW5kKCcvJyk7CisgICAgICAgIGF1dG8gbGVu
Z3RoID0gc2xhc2hMb2NhdGlvbiA9PSBub3RGb3VuZCA/IGNvZGVjSUQubGVuZ3RoKCkgLSAyIDog
c2xhc2hMb2NhdGlvbiAtIDI7CisgICAgICAgIG1fY29kZWMgPSBBdG9tU3RyaW5nIHsgY29kZWNJ
RC5zdWJzdHJpbmcoMiwgbGVuZ3RoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIH07CisgICAg
ICAgIHJldHVybiAqbV9jb2RlYzsKKyAgICB9CisgICAgYm9vbCBpc1ZpZGVvKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV90cmFjay50cmFja190eXBlLmlzX3ByZXNlbnQoKSAmJiBtX3RyYWNrLnRy
YWNrX3R5cGUudmFsdWUoKSA9PSBUcmFja1R5cGU6OmtWaWRlbzsgfQorICAgIGJvb2wgaXNBdWRp
bygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdHJhY2sudHJhY2tfdHlwZS5pc19wcmVzZW50KCkg
JiYgbV90cmFjay50cmFja190eXBlLnZhbHVlKCkgPT0gVHJhY2tUeXBlOjprQXVkaW87IH0KKyAg
ICBib29sIGlzVGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdHJhY2sudHJhY2tfdHlwZS5p
c19wcmVzZW50KCkgJiYgbV90cmFjay50cmFja190eXBlLnZhbHVlKCkgPT0gVHJhY2tUeXBlOjpr
U3VidGl0bGU7IH0KKworICAgIGNvbnN0IHdlYm06OlRyYWNrRW50cnkmIHRyYWNrKCkgeyByZXR1
cm4gbV90cmFjazsgfQorCitwcml2YXRlOgorICAgIG11dGFibGUgT3B0aW9uYWw8QXRvbVN0cmlu
Zz4gbV9jb2RlYzsKKyAgICB3ZWJtOjpUcmFja0VudHJ5IG1fdHJhY2s7Cit9OworCitzdGF0aWMg
VmVjdG9yPFN0cmluZz4gc3VwcG9ydGVkV2ViTUNvZGVjcygpCit7CisgICAgYXV0byBjb2RlY3Mg
PSBtYWtlTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFN0cmluZz4+KHsKKyAgICAgICAgInZwMDkiLAor
ICAgICAgICAidm9yYmlzIiwKKyAgICAgICAgIm9wdXMiLAorICAgIH0pOworICAgIHJldHVybiBj
b2RlY3M7Cit9CisKK2Jvb2wgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aXNDb250ZW50VHlwZVN1
cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYgdHlwZSkKK3sKKyAgICBpZiAoIWlzV2VibVBhcnNl
ckF2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIVdURjo6ZXF1
YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLmNvbnRhaW5lclR5cGUoKSwgImF1ZGlvL3dlYm0iKQor
ICAgICAgICAmJiAhV1RGOjplcXVhbElnbm9yaW5nQVNDSUlDYXNlKHR5cGUuY29udGFpbmVyVHlw
ZSgpLCAidmlkZW8vd2VibSIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBTdHJpbmcg
Y29kZWNzUGFyYW1ldGVyID0gdHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFt
ZXRlcigpKTsKKyAgICBpZiAoIWNvZGVjc1BhcmFtZXRlcikKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICBhdXRvIHNwbGl0UmVzdWx0cyA9IFN0cmluZ1ZpZXcoY29kZWNzUGFyYW1ldGVyKS5z
cGxpdCgnLCcpOworICAgIGZvciAoYXV0byBzcGxpdCA6IHNwbGl0UmVzdWx0cykgeworICAgICAg
ICByZXR1cm4gV1RGOjphbnlPZihzdXBwb3J0ZWRXZWJNQ29kZWNzKCksIFsmXShhdXRvJiBjb2Rl
YykgeworICAgICAgICAgICAgcmV0dXJuIHNwbGl0LnN0YXJ0c1dpdGgoY29kZWMpOworICAgICAg
ICB9KTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk06OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKQoreworICAgIGlmIChpc1dlYm1QYXJzZXJBdmFp
bGFibGUoKSkKKyAgICAgICAgbV9wYXJzZXIgPSBXVEY6Om1ha2VVbmlxdWVXaXRob3V0RmFzdE1h
bGxvY0NoZWNrPFdlYm1QYXJzZXI+KCk7Cit9CisKK1NvdXJjZUJ1ZmZlclBhcnNlcldlYk06On5T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNKCkgPSBkZWZhdWx0OworCit2b2lkIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk06OmFwcGVuZERhdGEoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgYnVmZmVyLCBBcHBl
bmRGbGFncyBhcHBlbmRGbGFncykKK3sKKyAgICBpZiAoIW1fcGFyc2VyKQorICAgICAgICByZXR1
cm47CisKKyAgICBWZWN0b3JSZWFkZXIgcmVhZGVyIHsgV1RGTW92ZShidWZmZXIpIH07CisgICAg
aWYgKGFwcGVuZEZsYWdzID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5KQorICAgICAgICBt
X3BhcnNlci0+RGlkU2VlaygpOworICAgIG1fc3RhdHVzID0gbV9wYXJzZXItPkZlZWQodGhpcywg
JnJlYWRlcik7CisgICAgaWYgKG1fc3RhdHVzLm9rKCkgfHwgbV9zdGF0dXMuY29kZSA9PSBTdGF0
dXM6OmtFbmRPZkZpbGUpCisgICAgICAgIHJldHVybjsKKworICAgIGNhbGxPbk1haW5UaHJlYWQo
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29kZSA9IG1fc3RhdHVzLmNv
ZGVdIHsKKyAgICAgICAgaWYgKG1fZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJh
Y2spCisgICAgICAgICAgICBtX2RpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNr
KGNvZGUpOworICAgIH0pOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmZsdXNo
UGVuZGluZ01lZGlhRGF0YSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJ
RChib29sLCBpbnQzMl90KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgU291
cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2hvdWxkUHJvdmlkZU1lZGlhZGF0YUZvclRyYWNrSUQoaW50
MzJfdCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpyZXNldFBhcnNlclN0YXRlKCkKK3sKKyAgICBt
X3BhcnNlci0+RGlkU2VlaygpOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6Tm9uZTsKK30KKworU3Rh
dHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRWxlbWVudEJlZ2luKGNvbnN0IEVsZW1lbnRN
ZXRhZGF0YSYgbWV0YWRhdGEsIEFjdGlvbiogYWN0aW9uKQoreworICAgIFVOVVNFRF9QQVJBTSht
ZXRhZGF0YSk7CisgICAgQVNTRVJUKGFjdGlvbik7CisgICAgaWYgKCFhY3Rpb24pCisgICAgICAg
IHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKworICAgIGlmICgobV9z
dGF0ZSA9PSBTdGF0ZTo6Tm9uZSAmJiBtZXRhZGF0YS5pZCAhPSBJZDo6a0VibWwpCisgICAgICAg
IHx8IChtX3N0YXRlID09IFN0YXRlOjpSZWFkRWJtbCAmJiBtZXRhZGF0YS5pZCAhPSBJZDo6a1Nl
Z21lbnQpCisgICAgICAgIHx8IChtX3N0YXRlID09IFN0YXRlOjpSZWFkaW5nU2VnbWVudCAmJiBt
ZXRhZGF0YS5pZCAhPSBJZDo6a0luZm8pCisgICAgICAgIHx8IChtX3N0YXRlID09IFN0YXRlOjpS
ZWFkSW5mbyAmJiBtZXRhZGF0YS5pZCAhPSBJZDo6a1RyYWNrcykKKyAgICAgICAgfHwgKG1fc3Rh
dGUgPT0gU3RhdGU6OlJlYWRUcmFjayAmJiBtZXRhZGF0YS5pZCAhPSBJZDo6a1RyYWNrRW50cnkg
JiYgbWV0YWRhdGEuaWQgIT0gSWQ6OmtDbHVzdGVyKQorICAgICAgICB8fCAobWV0YWRhdGEuaWQg
PT0gSWQ6OmtDdWVzIHx8IG1ldGFkYXRhLmlkID09IElkOjprQ2hhcHRlcnMpKSB7CisgICAgICAg
ICphY3Rpb24gPSBBY3Rpb246OmtTa2lwOworICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6
a09rQ29tcGxldGVkKTsKKyAgICB9CisKKyAgICBpZiAobWV0YWRhdGEuaWQgPT0gSWQ6OmtFYm1s
KQorICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWRpbmdFYm1sOworICAgIGVsc2UgaWYgKG1l
dGFkYXRhLmlkID09IElkOjprU2VnbWVudCkKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFk
aW5nU2VnbWVudDsKKyAgICBlbHNlIGlmIChtZXRhZGF0YS5pZCA9PSBJZDo6a0luZm8pCisgICAg
ICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZGluZ0luZm87CisgICAgZWxzZSBpZiAobWV0YWRhdGEu
aWQgPT0gSWQ6OmtUcmFja3MpCisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZGluZ1RyYWNr
czsKKyAgICBlbHNlIGlmIChtZXRhZGF0YS5pZCA9PSBJZDo6a1RyYWNrRW50cnkpCisgICAgICAg
IG1fc3RhdGUgPSBTdGF0ZTo6UmVhZGluZ1RyYWNrOworICAgIGVsc2UgaWYgKG1ldGFkYXRhLmlk
ID09IElkOjprQ2x1c3RlcikKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkaW5nQ2x1c3Rl
cjsKKworICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworfQorCitTdGF0
dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FYm1sKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYg
bWV0YWRhdGEsIGNvbnN0IEVibWwmIGVibWwpCit7CisgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRh
KTsKKyAgICBpZiAoZWJtbC5kb2NfdHlwZS5pc19wcmVzZW50KCkgJiYgZWJtbC5kb2NfdHlwZS52
YWx1ZSgpLmNvbXBhcmUoIndlYm0iKSkKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OkNv
ZGUoRXJyb3JDb2RlOjpJbnZhbGlkRG9jVHlwZSkpOworCisgICAgbV9pbml0aWFsaXphdGlvblNl
Z21lbnRFbmNvdW50ZXJlZCA9IHRydWU7CisgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnQgPSBX
VEY6Om1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEluaXRpYWxpemF0aW9uU2VnbWVu
dD4oKTsKKyAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWRFYm1sOworCisgICAgcmV0dXJuIFN0YXR1
cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7Cit9CisKK1N0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpPblNlZ21lbnRCZWdpbihjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBBY3Rp
b24qIGFjdGlvbikKK3sKKyAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOworICAgIGlmICghbV9p
bml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCkKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhT
dGF0dXM6OkNvZGUoRXJyb3JDb2RlOjpJbnZhbGlkSW5pdFNlZ21lbnQpKTsKKworICAgIEFTU0VS
VChhY3Rpb24pOworICAgIGlmICghYWN0aW9uKQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1
czo6a05vdEVub3VnaE1lbW9yeSk7CisgICAgKmFjdGlvbiA9IEFjdGlvbjo6a1JlYWQ7CisKKyAg
ICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKK30KKworU3RhdHVzIFNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06Ok9uSW5mbyhjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRh
LCBjb25zdCBJbmZvJiBpbmZvKQoreworICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CisgICAg
aWYgKCFtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkIHx8ICFtX2luaXRpYWxpemF0
aW9uU2VnbWVudCkKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OkNvZGUoRXJyb3JDb2Rl
OjpJbnZhbGlkSW5pdFNlZ21lbnQpKTsKKworICAgIGF1dG8gdGltZWNvZGVTY2FsZSA9IGluZm8u
dGltZWNvZGVfc2NhbGUuaXNfcHJlc2VudCgpID8gaW5mby50aW1lY29kZV9zY2FsZS52YWx1ZSgp
IDogMTAwMDAwMDsKKyAgICBtX3RpbWVzY2FsZSA9IDEwMDAwMDAwMDAgLyB0aW1lY29kZVNjYWxl
OworICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50LT5kdXJhdGlvbiA9IGluZm8uZHVyYXRpb24u
aXNfcHJlc2VudCgpID8gTWVkaWFUaW1lKGluZm8uZHVyYXRpb24udmFsdWUoKSwgbV90aW1lc2Nh
bGUpIDogTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6
UmVhZEluZm87CisKKyAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKK30K
KworU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQ2x1c3RlckJlZ2luKGNvbnN0IEVs
ZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0IENsdXN0ZXImIGNsdXN0ZXIsIEFjdGlvbiog
YWN0aW9uKQoreworICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CisgICAgVU5VU0VEX1BBUkFN
KGNsdXN0ZXIpOworICAgIEFTU0VSVChhY3Rpb24pOworICAgIGlmICghYWN0aW9uKQorICAgICAg
ICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisKKyAgICBpZiAobV9p
bml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCAmJiBtX2RpZFBhcnNlSW5pdGlhbGl6YXRp
b25EYXRhQ2FsbGJhY2spIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpbml0aWFsaXphdGlvblNlZ21lbnQgPSBXVEZNb3Zl
KCptX2luaXRpYWxpemF0aW9uU2VnbWVudCldICgpIG11dGFibGUgeworICAgICAgICAgICAgbV9k
aWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFdURk1vdmUoaW5pdGlhbGl6YXRpb25T
ZWdtZW50KSk7CisgICAgICAgIH0pOworICAgIH0KKyAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVu
dEVuY291bnRlcmVkID0gZmFsc2U7CisgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnQgPSBudWxs
cHRyOworCisgICAgKmFjdGlvbiA9IEFjdGlvbjo6a1JlYWQ7CisKKyAgICByZXR1cm4gU3RhdHVz
KFN0YXR1czo6a09rQ29tcGxldGVkKTsKK30KKworU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk06Ok9uVHJhY2tFbnRyeShjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBU
cmFja0VudHJ5JiB0cmFja0VudHJ5KQoreworICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7Cisg
ICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkVHJhY2s7CisgICAgaWYgKCF0cmFja0VudHJ5LnRyYWNr
X3R5cGUuaXNfcHJlc2VudCgpKQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29t
cGxldGVkKTsKKworICAgIGF1dG8gdHJhY2tUeXBlID0gdHJhY2tFbnRyeS50cmFja190eXBlLnZh
bHVlKCk7CisgICAgaWYgKHRyYWNrVHlwZSA9PSBUcmFja1R5cGU6OmtWaWRlbykKKyAgICAgICAg
bV9pbml0aWFsaXphdGlvblNlZ21lbnQtPnZpZGVvVHJhY2tzLmFwcGVuZCh7IE1lZGlhRGVzY3Jp
cHRpb25XZWJNOjpjcmVhdGUoVHJhY2tFbnRyeSh0cmFja0VudHJ5KSksIFZpZGVvVHJhY2tQcml2
YXRlV2ViTTo6Y3JlYXRlKFRyYWNrRW50cnkodHJhY2tFbnRyeSkpIH0pOworICAgIGVsc2UgaWYg
KHRyYWNrVHlwZSA9PSBUcmFja1R5cGU6OmtBdWRpbykKKyAgICAgICAgbV9pbml0aWFsaXphdGlv
blNlZ21lbnQtPmF1ZGlvVHJhY2tzLmFwcGVuZCh7IE1lZGlhRGVzY3JpcHRpb25XZWJNOjpjcmVh
dGUoVHJhY2tFbnRyeSh0cmFja0VudHJ5KSksIEF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6Y3JlYXRl
KFRyYWNrRW50cnkodHJhY2tFbnRyeSkpIH0pOworCisgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6
OmtPa0NvbXBsZXRlZCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40NDcxYzI2ODUwZDA5ZDFiOGYyYWVmNmI0MjNiNTlmZGU4MDYxNTMyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5oCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXIuaCIKKyNpbmNsdWRlIDx3ZWJt
L2NhbGxiYWNrLmg+CisjaW5jbHVkZSA8d2VibS9zdGF0dXMuaD4KKyNpbmNsdWRlIDx3dGYvRGVx
dWUuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1l
Lmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCit0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVC
dWZmZXJSZWY7CisKK25hbWVzcGFjZSB3ZWJtIHsKK2NsYXNzIFdlYm1QYXJzZXI7Cit9CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU291cmNlQnVmZmVyUGFyc2VyV2ViTSA6IHB1Ymxp
YyBTb3VyY2VCdWZmZXJQYXJzZXIsIHByaXZhdGUgd2VibTo6Q2FsbGJhY2sgeworcHVibGljOgor
ICAgIHN0YXRpYyBib29sIGlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29uc3QgQ29udGVudFR5cGUm
KTsKKworICAgIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKTsKKyAgICB+U291cmNlQnVmZmVyUGFy
c2VyV2ViTSgpOworCisgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKKworICAgIGNvbnN0
IHdlYm06OlN0YXR1cyYgc3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0KKworICAg
IFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIFR5cGU6OldlYk07IH0KKyAgICB2b2lkIGFwcGVu
ZERhdGEoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYsIEFwcGVuZEZsYWdzID0gQXBwZW5kRmxhZ3M6
Ok5vbmUpIGZpbmFsOworICAgIHZvaWQgZmx1c2hQZW5kaW5nTWVkaWFEYXRhKCkgZmluYWw7Cisg
ICAgdm9pZCBzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChib29sLCBpbnQzMl90
KSBmaW5hbDsKKyAgICBib29sIHNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lEKGludDMy
X3QpIGZpbmFsOworICAgIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpIGZpbmFsOworCisgICAgZW51
bSBjbGFzcyBFcnJvckNvZGUgOiBpbnQzMl90IHsKKyAgICAgICAgU291cmNlQnVmZmVyUGFyc2Vy
V2ViTUVycm9yQ29kZVN0YXJ0ID0gMjAwMCwKKyAgICAgICAgSW52YWxpZERvY1R5cGUsCisgICAg
ICAgIEludmFsaWRJbml0U2VnbWVudCwKKyAgICB9OworCitwcml2YXRlOgorICAgIC8vIHdlYm06
OkNhbGxiYWNrCisgICAgd2VibTo6U3RhdHVzIE9uRWxlbWVudEJlZ2luKGNvbnN0IHdlYm06OkVs
ZW1lbnRNZXRhZGF0YSYsIHdlYm06OkFjdGlvbiopIGZpbmFsOworICAgIHdlYm06OlN0YXR1cyBP
bkVibWwoY29uc3Qgd2VibTo6RWxlbWVudE1ldGFkYXRhJiwgY29uc3Qgd2VibTo6RWJtbCYpIGZp
bmFsOworICAgIHdlYm06OlN0YXR1cyBPblNlZ21lbnRCZWdpbihjb25zdCB3ZWJtOjpFbGVtZW50
TWV0YWRhdGEmLCB3ZWJtOjpBY3Rpb24qKSBmaW5hbDsKKyAgICB3ZWJtOjpTdGF0dXMgT25JbmZv
KGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYsIGNvbnN0IHdlYm06OkluZm8mKSBmaW5hbDsK
KyAgICB3ZWJtOjpTdGF0dXMgT25DbHVzdGVyQmVnaW4oY29uc3Qgd2VibTo6RWxlbWVudE1ldGFk
YXRhJiwgY29uc3Qgd2VibTo6Q2x1c3RlciYsIHdlYm06OkFjdGlvbiopIGZpbmFsOworICAgIHdl
Ym06OlN0YXR1cyBPblRyYWNrRW50cnkoY29uc3Qgd2VibTo6RWxlbWVudE1ldGFkYXRhJiwgY29u
c3Qgd2VibTo6VHJhY2tFbnRyeSYpIGZpbmFsOworCisgICAgc3RkOjp1bmlxdWVfcHRyPEluaXRp
YWxpemF0aW9uU2VnbWVudD4gbV9pbml0aWFsaXphdGlvblNlZ21lbnQ7CisgICAgd2VibTo6U3Rh
dHVzIG1fc3RhdHVzOworICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJtOjpXZWJtUGFyc2VyPiBtX3Bh
cnNlcjsKKyAgICBib29sIG1faW5pdGlhbGl6YXRpb25TZWdtZW50RW5jb3VudGVyZWQgeyBmYWxz
ZSB9OworICAgIHVpbnQzMl90IG1fdGltZXNjYWxlIHsgMTAwMCB9OworCisgICAgZW51bSBjbGFz
cyBTdGF0ZSA6IHVpbnQ4X3QgeworICAgICAgICBOb25lLAorICAgICAgICBSZWFkaW5nRWJtbCwK
KyAgICAgICAgUmVhZEVibWwsCisgICAgICAgIFJlYWRpbmdTZWdtZW50LAorICAgICAgICBSZWFk
aW5nSW5mbywKKyAgICAgICAgUmVhZEluZm8sCisgICAgICAgIFJlYWRpbmdUcmFja3MsCisgICAg
ICAgIFJlYWRpbmdUcmFjaywKKyAgICAgICAgUmVhZFRyYWNrLAorICAgICAgICBSZWFkaW5nQ2x1
c3RlciwKKyAgICB9OworICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6Tm9uZSB9OworCisgICAg
VmVjdG9yPHdlYm06OlRyYWNrRW50cnk+IG1fdHJhY2tzOworfTsKKworfQorCitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk0pCisgICAg
c3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlciYgcGFy
c2VyKSB7IHJldHVybiBwYXJzZXIudHlwZSgpID09IFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNl
cjo6VHlwZTo6V2ViTTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRp
ZXNDb2NvYS5tbQppbmRleCA1Njg1OTUzM2RlYjZhZWNjOTBjNTdlMTk1MTJjZmRkOGUwZTJlNGIx
Li4wYzdlZDJjYTliN2VlNzE5YTE1YjUwZjJmNTIyNDdjZjdhZWRlYjFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRp
ZXNDb2NvYS5tbQpAQCAtMTIyLDcgKzEyMiw3IEBAIGJvb2wgdmFsaWRhdGVWUFBhcmFtZXRlcnMo
VlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQmIGNvZGVjQ29uZmlndXJhdGlvbiwgTWVkaWFDCiAg
ICAgICAgIGluZm8ucG93ZXJFZmZpY2llbnQgPSB0cnVlOwogCiAgICAgICAgIC8vIEhXIFZQOSBE
ZWNvZGVyIHN1cHBvcnRzIFByb2ZpbGUgMCAmIDI6Ci0gICAgICAgIGlmICghY29kZWNDb25maWd1
cmF0aW9uLnByb2ZpbGUgJiYgY29kZWNDb25maWd1cmF0aW9uLnByb2ZpbGUgIT0gMikKKyAgICAg
ICAgaWYgKGNvZGVjQ29uZmlndXJhdGlvbi5wcm9maWxlICYmIGNvZGVjQ29uZmlndXJhdGlvbi5w
cm9maWxlICE9IDIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgLy8gSFcg
VlA5IERlY29kZXIgc3VwcG9ydHMgdXAgdG8gTGV2ZWwgNjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0
ZVdlYk0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2OWI1NzY5Mjg3ODVhMjBiZmEwZGQ1MDM0NTYyNzQzYzI3
ODU5MmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGVX
ZWJNLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFZpZGVvVHJhY2tQcml2YXRlV2Vi
TT4gVmlkZW9UcmFja1ByaXZhdGVXZWJNOjpjcmVhdGUod2VibTo6VHJhY2tFbnRyeSYmIHRyYWNr
RW50cnkpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFja1ByaXZhdGVXZWJN
KFdURk1vdmUodHJhY2tFbnRyeSkpKTsKK30KKworVmlkZW9UcmFja1ByaXZhdGVXZWJNOjpWaWRl
b1RyYWNrUHJpdmF0ZVdlYk0od2VibTo6VHJhY2tFbnRyeSYmIHRyYWNrRW50cnkpCisgICAgOiBt
X3RyYWNrKFdURk1vdmUodHJhY2tFbnRyeSkpCit7CisgICAgaWYgKG1fdHJhY2suaXNfZW5hYmxl
ZC5pc19wcmVzZW50KCkpCisgICAgICAgIHNldFNlbGVjdGVkKG1fdHJhY2suaXNfZW5hYmxlZC52
YWx1ZSgpKTsKK30KKworQXRvbVN0cmluZyBWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OmlkKCkgY29u
c3QKK3sKKyAgICBpZiAobV90cmFja0lELmlzTnVsbCgpKQorICAgICAgICBtX3RyYWNrSUQgPSBt
X3RyYWNrLnRyYWNrX3VpZC5pc19wcmVzZW50KCkgPyBBdG9tU3RyaW5nOjpudW1iZXIobV90cmFj
ay50cmFja191aWQudmFsdWUoKSkgOiBlbXB0eUF0b20oKTsKKyAgICByZXR1cm4gbV90cmFja0lE
OworfQorCitBdG9tU3RyaW5nIFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6bGFiZWwoKSBjb25zdAor
eworICAgIGlmIChtX2xhYmVsLmlzTnVsbCgpKQorICAgICAgICBtX2xhYmVsID0gbV90cmFjay5u
YW1lLmlzX3ByZXNlbnQoKSA/IEF0b21TdHJpbmc6OmZyb21VVEY4KG1fdHJhY2submFtZS52YWx1
ZSgpLmRhdGEoKSwgbV90cmFjay5uYW1lLnZhbHVlKCkubGVuZ3RoKCkpIDogZW1wdHlBdG9tKCk7
CisgICAgcmV0dXJuIG1fbGFiZWw7Cit9CisKK0F0b21TdHJpbmcgVmlkZW9UcmFja1ByaXZhdGVX
ZWJNOjpsYW5ndWFnZSgpIGNvbnN0Cit7CisgICAgaWYgKG1fbGFuZ3VhZ2UuaXNOdWxsKCkpCisg
ICAgICAgIG1fbGFuZ3VhZ2UgPSBtX3RyYWNrLmxhbmd1YWdlLmlzX3ByZXNlbnQoKSA/IEF0b21T
dHJpbmc6OmZyb21VVEY4KG1fdHJhY2subGFuZ3VhZ2UudmFsdWUoKS5kYXRhKCksIG1fdHJhY2su
bGFuZ3VhZ2UudmFsdWUoKS5sZW5ndGgoKSkgOiBlbXB0eUF0b20oKTsKKyAgICByZXR1cm4gbV9s
YW5ndWFnZTsKK30KKworaW50IFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6dHJhY2tJbmRleCgpIGNv
bnN0Cit7CisgICAgaWYgKG1fdHJhY2sudHJhY2tfbnVtYmVyLmlzX3ByZXNlbnQoKSkKKyAgICAg
ICAgcmV0dXJuIG1fdHJhY2sudHJhY2tfbnVtYmVyLnZhbHVlKCk7CisgICAgcmV0dXJuIDA7Cit9
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGJiZmYyYmExZGQ3
ZTViMjE1ZmE4NDVjYjhiNWM3ZGMxOTgwMjRiZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5oCkBA
IC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlZp
ZGVvVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSA8d2VibS9kb21fdHlwZXMuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0gZmluYWwgOiBwdWJs
aWMgVmlkZW9UcmFja1ByaXZhdGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8VmlkZW9UcmFj
a1ByaXZhdGVXZWJNPiBjcmVhdGUod2VibTo6VHJhY2tFbnRyeSYmKTsKKyAgICB2aXJ0dWFsIH5W
aWRlb1RyYWNrUHJpdmF0ZVdlYk0oKSA9IGRlZmF1bHQ7CisKKyAgICBBdG9tU3RyaW5nIGlkKCkg
Y29uc3QgZmluYWw7CisgICAgQXRvbVN0cmluZyBsYWJlbCgpIGNvbnN0IGZpbmFsOworICAgIEF0
b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBmaW5hbDsKKyAgICBpbnQgdHJhY2tJbmRleCgpIGNv
bnN0IGZpbmFsOworCitwcml2YXRlOgorICAgIFZpZGVvVHJhY2tQcml2YXRlV2ViTSh3ZWJtOjpU
cmFja0VudHJ5JiYpOworICAgIHdlYm06OlRyYWNrRW50cnkgbV90cmFjazsKKyAgICBtdXRhYmxl
IEF0b21TdHJpbmcgbV90cmFja0lEOworICAgIG11dGFibGUgQXRvbVN0cmluZyBtX2xhYmVsOwor
ICAgIG11dGFibGUgQXRvbVN0cmluZyBtX2xhbmd1YWdlOworfTsKKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKaW5kZXggZTA0Y2FkY2EyZGM1YThjNDE5YjcyZmEx
OWVlNzNmZTczYTEwYjYwMS4uMTk4NDNlYjBkMzY5NjNjZTNmY2NlNTEzNTkwNDVjMDJkOWIwNTNm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCkBAIC02NjgsNiAr
NjY4LDE0IEBAIFZQOURlY29kZXJFbmFibGVkOgogICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246
ICJFbmFibGUgVlA5IGRlY29kZXIiCiAgIGNhdGVnb3J5OiBleHBlcmltZW50YWwKIAorV2ViTVBh
cnNlckVuYWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAgZGVmYXVsdFZhbHVlOiBmYWxzZQorICB3ZWJj
b3JlQmluZGluZzogUnVudGltZUVuYWJsZWRGZWF0dXJlcworICBodW1hblJlYWRhYmxlTmFtZTog
IldlYk0gTVNFIHBhcnNlciIKKyAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIFdl
Yk0gTVNFIHBhcnNlciIKKyAgY2F0ZWdvcnk6IGV4cGVyaW1lbnRhbAorCiBVc2VMZWdhY3lUZXh0
QWxpZ25Qb3NpdGlvbmVkRWxlbWVudEJlaGF2aW9yOgogICB0eXBlOiBib29sCiAgIGRlZmF1bHRW
YWx1ZTogZmFsc2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404660</attachid>
            <date>2020-07-19 01:25:45 -0700</date>
            <delta_ts>2020-07-19 01:53:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214529-20200719012545.patch</filename>
            <type>text/plain</type>
            <size>138607</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBhY2ZhNzFkMTE0MWY2M2Q0ZWYxMGJkMmY2NjE5YzcxYTNhNWU4ZTQxLi41MGE1
MmNkNTIxZDljMGEzYzQ3N2U5MzhkZTc5MmNiZDdiNjVlYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNy0xOSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBleHBlcmltZW50
YWwgTVNFIFdlYk0gcGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTQ1MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUd28gZHJpdmUtYnkgZml4ZXM6IEFkZCBzb21lIG1pc3NpbmcgZXhwb3J0IHRv
IHRoZSBsaWJ3ZWJydGMuKi5leHAgZmlsZXMsIGFuZCBleHBvcnQgdGhlIHdlYm0gaGVhZGVycwor
ICAgICAgICBhcyBQcml2YXRlLCBub3QgUHVibGljLCBzbyB0aGV5J3JlIHB1dCBpbiB0aGUgY29y
cmVjdCBkaXJlY3RvcnkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9T
LmV4cDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBsaWJ3
ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wNy0xNyAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldml3ZWQgYnVpbGQgZml4IGFm
dGVyIHIyNjU1OTI7IHJhdGhlciB0aGFuIHJlbW92ZSB0aGUgZGVhZCBjb2RlIGNhdXNpbmcgbGlu
ayBlcnJvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMzdjZDRhNGM4YzYwYmM0ZjViOTkxZGQyOGJkMDIxOThj
ZjQzMmE4Li43Mzc4Mjc4MTVlNDIyYzVlNTllMGIxZWE0ZGU2MTA5YmJhNDlhNGEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQ0IEBACisyMDIwLTA3LTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIGV4cGVyaW1lbnRhbCBNU0UgV2ViTSBw
YXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NDUyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgeWV0IHBhcnNlIGFjdHVhbCBtZWRpYSBzYW1wbGVz
OyBhcyBvZiB5ZXQgaXQgb25seSBwYXJzZXMgYXVkaW8gYW5kIHZpZGVvCisgICAgICAgIHRyYWNr
IGluZm9ybWF0aW9uLiBNZWRpYSBzYW1wbGUgcGFyc2luZyBpcyB1cGNvbWluZy4KKworICAgICAg
ICBBZGQgYW4gZXhwZXJpbWVudGFsIE1TRSBXZWJNIHBhcnNlciB0byBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy4gVGhpcyB3aWxsIHJlcXVpcmUgZXh0ZW5zaXZlIHJlZmFjdG9yaW5nCisgICAg
ICAgIG9mIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLCB0byBleHRyYWN0IG91dCB0aGUgcGFy
c2VyIGludG8gYSBuZXcsIHZpcnR1YWxpemVkIGNsYXNzLiBUaGlzIG5ldyBwYXJzZXIgY2FuCisg
ICAgICAgIHRha2UgYWR2YW50YWdlIG9mIG5ldyBDKys+MTEgZmVhdHVyZXMgc3VjaCBhcyBsYW1i
ZGFzIHRvIGNsZWFuIHVwIHNvbWUgcHJvYmxlbWF0aWMgZXhpc3RpbmcgY29kZS4gVGhlIG5ldwor
ICAgICAgICB2aXJ0dWFsaXplZCBTb3VyY2VCdWZmZXJQYXJzZXIgY2xhc3MgdXNlcyBwYXNzZWQt
aW4gRnVuY3Rpb24gb2JqZWN0cywgcmF0aGVyIHRoYW4gcHVyZS12aXJ0dWFsIENsaWVudCBjbGFz
c2VzCisgICAgICAgIHRvIG5vdGlmeSBpdCdzIHBhcmVudCBvYmplY3Qgd2hlbiB0aGUgcGFyc2Vy
IGVuY291bnRlcnMgaW5pdGlhbGl6YXRpb24tIG9yIG1lZGlhLWRhdGEuCisKKyAgICAgICAgQmVj
YXVzZSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyB3aWxsIG5vdyBoYXZlIHRvIGRlYWwgd2l0
aCBBdWRpb1RyYWNrUHJpdmF0ZSBhbmQgVmlkZW9UcmFja1ByaXZhdGUgb2JqZWN0cworICAgICAg
ICB0aGF0IGFyZSBub3QgbmVjZXNzYXJpbHkgQXVkaW8tIGFuZCBWaWRlb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyBzdWJjbGFzc2VzLCBtb3ZlIHRob3NlIGNsYXNzZXMgbm90aWZpY2F0
aW9uCisgICAgICAgIGZlYXR1cmVzIHVwIGludG8gQXVkaW8tIGFuZCBWaWRlb1RyYWNrUHJpdmF0
ZSwgYWdhaW4gdXNpbmcgYSBGdW5jdGlvbiBvYmplY3QgcmF0aGVyIHRoYW4gYSBjbGllbnQgY2xh
c3MuCisKKyAgICAgICAgQWRkIGEgbmV3IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0gYW5kIGFzc29j
aWF0ZWQgQXVkaW9UcmFja1ByaXZhdGVXZWJNIGFuZCBWaWRlb1RyYWNrUHJpdmF0ZVdlYm0gY2xh
c2Vzcywgd2hpY2gKKyAgICAgICAgdXNlIGxpYndlYm0gdmlhIGxpYndlYnJ0YyB0byBwYXJzZSBh
cHBlbmRlZCBidWZmZXJzLgorCisgICAgICAgIFRoaXMgZWFybHkgaW1wbGVtZW50YXRpb24gaXMg
bm90IHlldCBhYmxlIHRvIHBhc3MgdGhlIFdlYk0gV1BUIG1lZGlhLXNvdXJjZS8gdGVzdHMsIGFz
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDCisgICAgICAgIHdpbGwgb25seSBjYXVzZSBhICJy
ZXNpemUiIGV2ZW50IHRvIGJlIGZpcmVkIHdoZW4gYSBNZWRpYVNhbXBsZSBpcyBlbnF1ZXVlZCBv
ciBkZWNvZGluZy4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2V0V2ViTVBhcnNlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6d2ViTVBhcnNlckVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Ry
YWNrUHJpdmF0ZTo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJp
dmF0ZTo6c2V0RW5hYmxlZENoYW5nZWRDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQ
cml2YXRlOjpzZXRTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0
ZTo6c2V0U2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0RW5hYmxlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OnN1cHBvcnRzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5oOiBBZGRlZC4KKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbTogQWRkZWQu
CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIGluaXRXaXRoUGFyc2Vy
OnBhcmVudDpdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgZGVh
bGxvY10pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBpbnZhbGlk
YXRlXSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbURh
dGFQYXJzZXI6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldDpdKToKKyAgICAgICAgKC1bV2ViQVZT
dHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3RyZWFtRGF0YVBhcnNlcjpkaWRQYXJzZVN0cmVhbURh
dGFBc0Fzc2V0OndpdGhEaXNjb250aW51aXR5Ol0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURh
dGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0
YVdpdGhFcnJvcjpdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIg
c3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlTWVkaWFEYXRhOmZvclRyYWNrSUQ6bWVkaWFUeXBl
OmZsYWdzOl0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJl
YW1EYXRhUGFyc2VyV2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0
YTpmb3JUcmFja0lEOl0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5l
ciBzdHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YTpmb3JUcmFja0lEOl0pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakM6OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OnNob3VsZFByb3Zp
ZGVNZWRpYWRhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakM6OnJlc2V0UGFyc2VyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldCk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRGYWlsVG9QYXJzZVN0cmVh
bURhdGFXaXRoRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElu
aXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjp+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRFbmNv
dW50ZXJFcnJvckR1cmluZ1BhcnNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRL
ZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmRDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpyZXNldFBhcnNlclN0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkZXN0cm95UGFyc2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjbGVhclRyYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFu
Z2VTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpwYXJzZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmF0dGVtcHRUb0RlY3J5cHQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGVXZWJNOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
a1ByaXZhdGVXZWJNOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk0pOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9UcmFja1ByaXZhdGVXZWJNOjppZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1RyYWNrUHJpdmF0ZVdlYk06OmxhYmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
VHJhY2tQcml2YXRlV2ViTTo6bGFuZ3VhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGVXZWJNOjp0cmFja0luZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OmlzQ29udGVudFR5cGVTdXBw
b3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0RGlkUGFyc2VJ
bml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXI6OnNldERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0RGlkUHJvdmlkZU1lZGlhRGF0
YUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0V2ls
bFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OnNldERpZFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNXZWJtUGFyc2VyQXZhaWxhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OnN1cHBvcnRlZFdlYk1Db2RlY3MpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmFwcGVuZERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6Zmx1c2hQZW5k
aW5nTWVkaWFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lE
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnJlc2V0UGFyc2Vy
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FbGVt
ZW50QmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25F
Ym1sKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uU2VnbWVu
dEJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uSW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkNsdXN0ZXJC
ZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblRyYWNr
RW50cnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpzdGF0dXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6dHlwZSBjb25zdCk6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
dmFsaWRhdGVWUFBhcmFtZXRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFja1ByaXZhdGVXZWJNOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFj
a1ByaXZhdGVXZWJNOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk0pOgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFja1ByaXZhdGVXZWJNOjppZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b1RyYWNrUHJpdmF0ZVdlYk06OmxhYmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
VHJhY2tQcml2YXRlV2ViTTo6bGFuZ3VhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFja1ByaXZhdGVXZWJNOjp0cmFja0luZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaDogQWRkZWQuCisKIDIwMjAt
MDctMTggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIGZpeCBidWlsZCB3YXJuaW5ncyBpbiB0aGUgV2ViWFIgYmFja2VuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAxM2M1YjFlYmE4MzNmYjdhNmQxNjRjN2NhOTdhNTBkNDUxYTU5NDMwLi40M2I4ODc4
OTFhOWNiYzgyMDI3MzIxMmU5ZDc2NGM2NjFmYTc2NDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDIwLTA3LTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAg
ICAgIFtDb2NvYV0gQWRkIGV4cGVyaW1lbnRhbCBNU0UgV2ViTSBwYXJzZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDUyOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhbiBFeHBlcmltZW50YWwg
c2V0dGluZyB0byBlbmFibGUgdGhlIE1TRSBXZWJNIHBhcnNlciAob2ZmIGJ5IGRlZmF1bHQpLgor
CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisKIDIwMjAtMDQtMzAgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIGRhdGEgY29w
aWVzIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgY3VzdG9tIFVSTCBzY2hlbWUgaGFuZGxlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xp
YndlYnJ0Yy5pT1MuZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRp
b25zL2xpYndlYnJ0Yy5pT1MuZXhwCmluZGV4IGQwNGE5MTk2ODZlOWNjODk2N2E4YWFkMDQ2OWM2
ODU1NDY1NzI3OWIuLmE3YmNjN2I1MTRjM2JlNjNhYWRjYTBiMjEyNzFmODE1ZDkwNTQzMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3
ZWJydGMuaU9TLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJh
dGlvbnMvbGlid2VicnRjLmlPUy5leHAKQEAgLTI4MCwxMyArMjgwLDIwIEBAIF9fWlRWTjR3ZWJt
MTJCdWZmZXJSZWFkZXJFCiBfX1pUVk40d2VibThDYWxsYmFja0UKIF9fWk40d2VibThDYWxsYmFj
azEwT25CbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRQogX19aTjR3
ZWJtOENhbGxiYWNrMTBPbkN1ZVBvaW50RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU184Q3Vl
UG9pbnRFCitfX1pONHdlYm04Q2FsbGJhY2sxMk9uQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1l
dGFkYXRhRVJLTlNfNUJsb2NrRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPbkNs
dXN0ZXJFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzdDbHVzdGVyRQogX19aTjR3ZWJt
OENhbGxiYWNrMTJPblNlZ21lbnRFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUUKIF9fWk40d2Vi
bThDYWxsYmFjazEyT25UcmFja0VudHJ5RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMFRy
YWNrRW50cnlFCitfX1pONHdlYm04Q2FsbGJhY2sxNE9uQ2x1c3RlckJlZ2luRVJLTlNfMTVFbGVt
ZW50TWV0YWRhdGFFUktOU183Q2x1c3RlckVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFj
azE0T25FZGl0aW9uRW50cnlFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEyRWRpdGlvbkVu
dHJ5RQorX19aTjR3ZWJtOENhbGxiYWNrMTRPbkVsZW1lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1l
dGFkYXRhRVBOU182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrMTRPblNlZ21lbnRCZWdpbkVS
S05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTVP
bkJsb2NrR3JvdXBFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEwQmxvY2tHcm91cEUK
IF9fWk40d2VibThDYWxsYmFjazE2T25TaW1wbGVCbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFk
YXRhRVJLTlNfMTFTaW1wbGVCbG9ja0UKIF9fWk40d2VibThDYWxsYmFjazE2T25Vbmtub3duRWxl
bWVudEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182UmVhZGVyRVB5CitfX1pONHdlYm04Q2Fs
bGJhY2sxN09uQmxvY2tHcm91cEJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rp
b25FCitfX1pONHdlYm04Q2FsbGJhY2sxOE9uU2ltcGxlQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVu
dE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVCbG9ja0VQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxs
YmFjazRTa2lwRVBOU182UmVhZGVyRVB5CiBfX1pONHdlYm04Q2FsbGJhY2s1T25UYWdFUktOU18x
NUVsZW1lbnRNZXRhZGF0YUVSS05TXzNUYWdFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25FYm1sRVJL
TlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU180RWJtbEUKIF9fWk40d2VibThDYWxsYmFjazZPbklu
Zm9FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzRJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhw
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5p
T1NzaW0uZXhwCmluZGV4IGQwNGE5MTk2ODZlOWNjODk2N2E4YWFkMDQ2OWM2ODU1NDY1NzI3OWIu
LmE3YmNjN2I1MTRjM2JlNjNhYWRjYTBiMjEyNzFmODE1ZDkwNTQzMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2lt
LmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGli
d2VicnRjLmlPU3NpbS5leHAKQEAgLTI4MCwxMyArMjgwLDIwIEBAIF9fWlRWTjR3ZWJtMTJCdWZm
ZXJSZWFkZXJFCiBfX1pUVk40d2VibThDYWxsYmFja0UKIF9fWk40d2VibThDYWxsYmFjazEwT25C
bG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRQogX19aTjR3ZWJtOENh
bGxiYWNrMTBPbkN1ZVBvaW50RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU184Q3VlUG9pbnRF
CitfX1pONHdlYm04Q2FsbGJhY2sxMk9uQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRh
RVJLTlNfNUJsb2NrRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPbkNsdXN0ZXJF
bmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzdDbHVzdGVyRQogX19aTjR3ZWJtOENhbGxi
YWNrMTJPblNlZ21lbnRFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUUKIF9fWk40d2VibThDYWxs
YmFjazEyT25UcmFja0VudHJ5RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMFRyYWNrRW50
cnlFCitfX1pONHdlYm04Q2FsbGJhY2sxNE9uQ2x1c3RlckJlZ2luRVJLTlNfMTVFbGVtZW50TWV0
YWRhdGFFUktOU183Q2x1c3RlckVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFjazE0T25F
ZGl0aW9uRW50cnlFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEyRWRpdGlvbkVudHJ5RQor
X19aTjR3ZWJtOENhbGxiYWNrMTRPbkVsZW1lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRh
RVBOU182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrMTRPblNlZ21lbnRCZWdpbkVSS05TXzE1
RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTVPbkJsb2Nr
R3JvdXBFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEwQmxvY2tHcm91cEUKIF9fWk40
d2VibThDYWxsYmFjazE2T25TaW1wbGVCbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJL
TlNfMTFTaW1wbGVCbG9ja0UKIF9fWk40d2VibThDYWxsYmFjazE2T25Vbmtub3duRWxlbWVudEVS
S05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182UmVhZGVyRVB5CitfX1pONHdlYm04Q2FsbGJhY2sx
N09uQmxvY2tHcm91cEJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rpb25FCitf
X1pONHdlYm04Q2FsbGJhY2sxOE9uU2ltcGxlQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFk
YXRhRVJLTlNfMTFTaW1wbGVCbG9ja0VQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxsYmFjazRT
a2lwRVBOU182UmVhZGVyRVB5CiBfX1pONHdlYm04Q2FsbGJhY2s1T25UYWdFUktOU18xNUVsZW1l
bnRNZXRhZGF0YUVSS05TXzNUYWdFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25FYm1sRVJLTlNfMTVF
bGVtZW50TWV0YWRhdGFFUktOU180RWJtbEUKIF9fWk40d2VibThDYWxsYmFjazZPbkluZm9FUktO
U18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzRJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCmlu
ZGV4IDhkODViNWI4YjM3NTRhZGRlZmRlN2MyNGYyZjIwYTQ2NTgzNjZhY2QuLmY4Y2M5MTMxNmJj
ZGMwOTYwNTgyYjNmM2NhNDE2NWIyZWFjMjcyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAK
QEAgLTI3OCwxMyArMjc4LDIwIEBAIF9fWlRWTjR3ZWJtMTJCdWZmZXJSZWFkZXJFCiBfX1pUVk40
d2VibThDYWxsYmFja0UKIF9fWk40d2VibThDYWxsYmFjazEwT25CbG9ja0VuZEVSS05TXzE1RWxl
bWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRQogX19aTjR3ZWJtOENhbGxiYWNrMTBPbkN1ZVBvaW50
RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU184Q3VlUG9pbnRFCitfX1pONHdlYm04Q2FsbGJh
Y2sxMk9uQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRVBOU182
QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPbkNsdXN0ZXJFbmRFUktOU18xNUVsZW1lbnRN
ZXRhZGF0YUVSS05TXzdDbHVzdGVyRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPblNlZ21lbnRFbmRF
UktOU18xNUVsZW1lbnRNZXRhZGF0YUUKIF9fWk40d2VibThDYWxsYmFjazEyT25UcmFja0VudHJ5
RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMFRyYWNrRW50cnlFCitfX1pONHdlYm04Q2Fs
bGJhY2sxNE9uQ2x1c3RlckJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU183Q2x1c3Rl
ckVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFjazE0T25FZGl0aW9uRW50cnlFUktOU18x
NUVsZW1lbnRNZXRhZGF0YUVSS05TXzEyRWRpdGlvbkVudHJ5RQorX19aTjR3ZWJtOENhbGxiYWNr
MTRPbkVsZW1lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQorX19a
TjR3ZWJtOENhbGxiYWNrMTRPblNlZ21lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBO
U182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTVPbkJsb2NrR3JvdXBFbmRFUktOU18xNUVs
ZW1lbnRNZXRhZGF0YUVSS05TXzEwQmxvY2tHcm91cEUKIF9fWk40d2VibThDYWxsYmFjazE2T25T
aW1wbGVCbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVCbG9ja0UK
IF9fWk40d2VibThDYWxsYmFjazE2T25Vbmtub3duRWxlbWVudEVSS05TXzE1RWxlbWVudE1ldGFk
YXRhRVBOU182UmVhZGVyRVB5CitfX1pONHdlYm04Q2FsbGJhY2sxN09uQmxvY2tHcm91cEJlZ2lu
RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rpb25FCitfX1pONHdlYm04Q2FsbGJhY2sx
OE9uU2ltcGxlQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVC
bG9ja0VQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxsYmFjazRTa2lwRVBOU182UmVhZGVyRVB5
CiBfX1pONHdlYm04Q2FsbGJhY2s1T25UYWdFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzNU
YWdFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25FYm1sRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktO
U180RWJtbEUKIF9fWk40d2VibThDYWxsYmFjazZPbkluZm9FUktOU18xNUVsZW1lbnRNZXRhZGF0
YUVSS05TXzRJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL2xp
YndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRkYTczYTFi
ZmI0MTAzYTFmN2FhNDE0MzQ5ZmUwYWZhZWJjMGM4YWEuLjIyNjgyYmM1Yzk5NjY2Yjg3ZGE0ZDFk
MWQwZjZmNmI2NmFmZjBiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4
NTMsMTYgKzM4NTMsMTYgQEAKIAkJNUNGRDUzOTIxRTRCRDNBMzAwNDgyOTA4IC8qIHJvd19uZW9u
NjQuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZE
NTM4QTFFNEJEM0EzMDA0ODI5MDggLyogcm93X25lb242NC5jYyAqLzsgfTsKIAkJNUNGRDUzOTMx
RTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb24uY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZENTM4QjFFNEJEM0EzMDA0ODI5MDggLyogc2NhbGVf
bmVvbi5jYyAqLzsgfTsKIAkJNUNGRDUzOTQxRTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb242
NC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRkQ1
MzhDMUU0QkQzQTMwMDQ4MjkwOCAvKiBzY2FsZV9uZW9uNjQuY2MgKi87IH07Ci0JCUNERUJCNEFD
MjRDMDE5OUQwMEFEQkQ0NCAvKiB3ZWJtX3BhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MDgyNEMwMTkxQTAwQURCRDQ0IC8qIHdlYm1f
cGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9Owot
CQlDREVCQjRBRDI0QzAxOTlEMDBBREJENDQgLyogYnVmZmVyX3JlYWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MEQyNEMwMTkxQTAwQURC
RDQ0IC8qIGJ1ZmZlcl9yZWFkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07Ci0JCUNERUJCNEFFMjRDMDE5OUQwMEFEQkQ0NCAvKiBpZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MEEyNEMwMTkxQTAw
QURCRDQ0IC8qIGlkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9
OyB9OwotCQlDREVCQjRBRjI0QzAxOTlEMDBBREJENDQgLyogaXN0cmVhbV9yZWFkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDA5MjRDMDE5
MUEwMEFEQkQ0NCAvKiBpc3RyZWFtX3JlYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjAyNEMwMTk5RDAwQURCRDQ0IC8qIGRvbV90
eXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RF
QkI0MEIyNEMwMTkxQTAwQURCRDQ0IC8qIGRvbV90eXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjEyNEMwMTk5RDAwQURCRDQ0IC8q
IGVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENERUJCNDBDMjRDMDE5MUEwMEFEQkQ0NCAvKiBlbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCMjI0QzAxOTlEMDBBREJENDQg
Lyogc3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREVCQjQwNjI0QzAxOTFBMDBBREJENDQgLyogc3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCMzI0QzAxOTlEMDBBREJENDQg
LyogcmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREVCQjQwNTI0QzAxOTFBMDBBREJENDQgLyogcmVhZGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCNDI0QzAxOTlEMDBBREJENDQg
LyogZmlsZV9yZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENERUJCNDA3MjRDMDE5MUEwMEFEQkQ0NCAvKiBmaWxlX3JlYWRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjUyNEMwMTk5
RDAwQURCRDQ0IC8qIGNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREVCQjQwRTI0QzAxOTFBMDBBREJENDQgLyogY2FsbGJhY2suaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCUNERUJCNEFDMjRD
MDE5OUQwMEFEQkQ0NCAvKiB3ZWJtX3BhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MDgyNEMwMTkxQTAwQURCRDQ0IC8qIHdlYm1fcGFy
c2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
Q0RFQkI0QUQyNEMwMTk5RDAwQURCRDQ0IC8qIGJ1ZmZlcl9yZWFkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDBEMjRDMDE5MUEwMEFEQkQ0
NCAvKiBidWZmZXJfcmVhZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQ0RFQkI0QUUyNEMwMTk5RDAwQURCRDQ0IC8qIGlkLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwQTI0QzAxOTFBMDBB
REJENDQgLyogaWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlDREVCQjRBRjI0QzAxOTlEMDBBREJENDQgLyogaXN0cmVhbV9yZWFkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDA5MjRDMDE5
MUEwMEFEQkQ0NCAvKiBpc3RyZWFtX3JlYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUNERUJCNEIwMjRDMDE5OUQwMEFEQkQ0NCAvKiBkb21f
dHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
RUJCNDBCMjRDMDE5MUEwMEFEQkQ0NCAvKiBkb21fdHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREVCQjRCMTI0QzAxOTlEMDBBREJENDQg
LyogZWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RFQkI0MEMyNEMwMTkxQTAwQURCRDQ0IC8qIGVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREVCQjRCMjI0QzAxOTlEMDBBREJE
NDQgLyogc3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREVCQjQwNjI0QzAxOTFBMDBBREJENDQgLyogc3RhdHVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RFQkI0QjMyNEMwMTk5RDAwQURC
RDQ0IC8qIHJlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RFQkI0MDUyNEMwMTkxQTAwQURCRDQ0IC8qIHJlYWRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNERUJCNEI0MjRDMDE5OUQwMEFE
QkQ0NCAvKiBmaWxlX3JlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RFQkI0MDcyNEMwMTkxQTAwQURCRDQ0IC8qIGZpbGVfcmVhZGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RFQkI0QjUy
NEMwMTk5RDAwQURCRDQ0IC8qIGNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwRTI0QzAxOTFBMDBBREJENDQgLyogY2FsbGJhY2su
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDREVC
QjRCNjI0QzAxOUM0MDBBREJENDQgLyogdW5rbm93bl9wYXJzZXIuY2MgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQ2NDI0QzAxOTFBMDBBREJENDQg
LyogdW5rbm93bl9wYXJzZXIuY2MgKi87IH07CiAJCUNERUJCNEI3MjRDMDE5QzQwMEFEQkQ0NCAv
KiBtYXN0ZXJfcGFyc2VyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RFQkI0NkYyNEMwMTkxQTAwQURCRDQ0IC8qIG1hc3Rlcl9wYXJzZXIuY2MgKi87
IH07CiAJCUNERUJCNEI4MjRDMDE5QzQwMEFEQkQ0NCAvKiBibG9ja19wYXJzZXIuY2MgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQ3NjI0QzAxOTFB
MDBBREJENDQgLyogYmxvY2tfcGFyc2VyLmNjICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggMWQ3ZjIwOTg2N2MxZDRlMGE0Mjc0Njk3NjU1ZjhkMWIxMzZkYWQwZS4uZGMzZmYyNTg0
MWE5MjUzM2JlZThkMDU4MTYxOGFiMjBjNzBjOTlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CkBAIC0yOTEsNiArMjkxLDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIEBuby0KIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbSBAbm8tdW5pZnkK
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBAbm8tdW5pZnkKK3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gQG5vLXVuaWZ5
CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9i
akMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRl
b1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gQG5v
LXVuaWZ5CkBAIC0zMzMsNiArMzM0LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNH
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlv
VHJhY2tQcml2YXRlV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2Eu
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zsb2F0UmVjdENvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTM0OCw2ICszNTAsOCBAQCBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVj
dENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29h
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbQpAQCAtMzU2
LDYgKzM2MCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFz
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24u
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYkdQVUxheWVyLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1Ry
YWNrUHJpdmF0ZVdlYk0uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vz
c2lvblZULm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ODZmY2RlYzA1
ODYwMjIyYmYwMzQwMmE3MTZhZDJmNDZiMDBjNTc4Li44MmZkZWVjZGVkOGJhYjZmYjA5ZWIyZTQy
ZDY2NmVhYTQyMjUyZDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MjY3LDYgKzQyNjcsNyBAQAogCQlDREY2NUNDQTE0NUI0
NDg4MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY2NUNDOTE0NUI0M0E3MDBDNEM3QUEg
LyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RGNzQ4M0YxOEZFQkNFQzAwMDZFQ0MwIC8qIEdyaWRQ
b3NpdGlvbnNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RGNzQ4M0QxOEZFQkNFQzAwMDZFQ0MwIC8qIEdyaWRQb3NpdGlvbnNSZXNvbHZl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNE
Rjc1NkEzMjE1QzI5RTkwMEVGQ0I1MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNzU2QTEyMTVD
MjlFOTAwRUZDQjUwIC8qIEpTTWVkaWFLZXlFbmNyeXB0aW9uU2NoZW1lLmggKi87IH07CisJCUNE
Rjk5NEZEMjRDMTVGRTMwMDJFQTA2MiAvKiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGOTk0RkIyNEMx
MkE2QTAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gKi87IH07CiAJCUNE
RkMzNjA2MThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERkMzNjA0MThDQTYxQzIw
MDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTA1N0ZBNjEyMjA3MzExMDBBNDc2RDUgLyog
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRTA1N0ZBNDEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
MDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKQEAgLTE0MTY2LDYgKzE0MTY3LDgg
QEAKIAkJQ0Q4QzZDMjkyMkZEREE5MTAwQTcyMEFCIC8qIEpTUmVtb3RlUGxheWJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNSZW1vdGVQbGF5YmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDhEMzA2RDIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDRE1Mb2dnaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOEQzMDZF
MjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENE
TUxvZ2dpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDhGNjY3MDI0QzBG
MjA4MDAwQzQyMUMgLyogU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0Q4RjY2NzIyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDkyRjUwRjIyNjBGRkVFMDBGODdCQjMgLyogRG9jdW1lbnRGdWxs
c2NyZWVuLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBEb2N1bWVudEZ1bGxzY3JlZW4uaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDkyRjUxMDIyNjBGRkVFMDBGODdCQjMgLyogRG9jdW1lbnRGdWxsc2Ny
ZWVuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50RnVsbHNjcmVlbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDkyRjUxNjIyNjEwMzgyMDBGODdCQjMgLyogRnVsbHNjcmVlbk1h
bmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVsbHNjcmVlbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MzQ2LDYgKzE0MzQ5LDggQEAKIAkJQ0RFOEI1RUYxQTY5Nzc4
QjAwQjRCNjZBIC8qIExlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTdDODIxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxT
Y3JlZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyRnVsbFNjcmVl
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBN0M4MzEyNzYyMzA0MDBCODQ2
REQgLyogUmVuZGVyRnVsbFNjcmVlbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW5kZXJGdWxsU2NyZWVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RFQjNENzIyNEM0MUE2RTAwMUZCRUVGIC8qIFNvdXJjZUJ1ZmZlclBhcnNlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTb3VyY2VCdWZmZXJQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREVCM0Q3MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFy
c2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZUJ1ZmZlclBhcnNlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDREVDQTg5ODFFREY0NDdEMDBEQ0IwOEIgLyogQVZBc3NldFRyYWNr
VXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVZBc3NldFRyYWNrVXRpbGl0aWVz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVDQTg5OTFFREY0NDdEMDBEQ0Iw
OEIgLyogQVZBc3NldFRyYWNrVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFWQXNzZXRUcmFj
a1V0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVFMzkzNjE3OTc0
MjU5MDAxRDc1ODAgLyogUHVibGljVVJMTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQdWJsaWNVUkxNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE0Mzg0LDYgKzE0Mzg5LDEyIEBACiAJCUNERjc1NjlFMjE1QzI4NUUwMEVG
Q0I1MCAvKiBNZWRpYUtleUVuY3J5cHRpb25TY2hlbWUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhS2V5RW5jcnlw
dGlvblNjaGVtZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERjc1NkEwMjE1
QzI5RTgwMEVGQ0I1MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERjc1NkExMjE1QzI5RTkwMEVGQ0I1
MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREY5OTRGQTI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjk5NEZCMjRDMTJBNkEwMDJFQTA2MiAv
KiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RGOTk0RkUyNEMyODEzNjAwMkVBMDYyIC8qIFZpZGVvVHJhY2tQcml2YXRlV2ViTS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RGOTk0RkYyNEMyODEzNjAwMkVBMDYyIC8qIFZpZGVvVHJhY2tQcml2YXRlV2Vi
TS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY5OTUwMDI0QzI4MTQ5MDAyRUEwNjIgLyogQXVk
aW9UcmFja1ByaXZhdGVXZWJNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRlV2Vi
TS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY5OTUwMTI0QzI4MTQ5MDAyRUEw
NjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlv
VHJhY2tQcml2YXRlV2ViTS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERkMz
NjAxMThDQTYxNjMwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERkMzNjAyMThDQTYxNjMwMDI2RTU2RiAvKiBS
ZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNERkMzNjAzMThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlz
dGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ29t
bWFuZExpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1ODcxLDYg
KzI1ODgyLDggQEAKIAkJQjUzMjBENjgxMjJBMjRFOTAwMkQxNDQwIC8qIGNvY29hICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDREY5OTUwMTI0QzI4MTQ5
MDAyRUEwNjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcCAqLywKKwkJCQlDREY5OTUwMDI0
QzI4MTQ5MDAyRUEwNjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmggKi8sCiAJCQkJRjQ4RDJB
QTMyMTU5NzQwRDAwQzY3NTJCIC8qIENvbG9yQ29jb2EuaCAqLywKIAkJCQlGNDhEMkFBNDIxNTk3
NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5tbSAqLywKIAkJCQlCMjc1MzU0QzBCMDUzODE0MDAy
Q0U2NEYgLyogRmxvYXRSZWN0Q29jb2EubW0gKi8sCkBAIC0yNTg5MiwxMCArMjU5MDUsMTYgQEAK
IAkJCQlBRDlGRjZFMDE5MDgzOTFEMDAzQjYxRTAgLyogSU9TdXJmYWNlUG9vbENvY29hLm1tICov
LAogCQkJCUNEQzQ4QUM4MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuY3BwICovLAogCQkJCUNEQzQ4QUM3MjE0OUNGMkEwMDI0RkQ1OSAvKiBN
ZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuaCAqLywKKwkJCQlDREVCM0Q3MjI0
QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmNwcCAqLywKKwkJCQlDREVCM0Q3
MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmggKi8sCisJCQkJQ0Q4RjY2
NzAyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwICovLAorCQkJ
CUNEOEY2NjcyMjRDMEYyMDgwMDBDNDIxQyAvKiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmggKi8s
CiAJCQkJRTRFOEI0RUQyMTZCNzlGNDAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0LmNwcCAqLywKIAkJCQlFNEU4QjRFQTIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQuaCAqLywKIAkJCQk1MjY3MjRGMjFDQjJGREY2MDA3NTk3NEQgLyogVGV4
dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5oICovLAogCQkJCTUyNjcyNEYxMUNCMkZERjYwMDc1
OTc0RCAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tICovLAorCQkJCUNERjk5NEZG
MjRDMjgxMzYwMDJFQTA2MiAvKiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwICovLAorCQkJCUNE
Rjk5NEZFMjRDMjgxMzYwMDJFQTA2MiAvKiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaCAqLywKIAkJ
CQlDRDZGRTVCNzI0QkNFNjQ1MDA5RkNEQTQgLyogVlA5VXRpbGl0aWVzQ29jb2EuaCAqLywKIAkJ
CQlDRDZGRTVCODI0QkNFNjQ1MDA5RkNEQTQgLyogVlA5VXRpbGl0aWVzQ29jb2EubW0gKi8sCiAJ
CQkJMkQzRUY0NDQxOTE3OTE1QzAwMDM0MTg0IC8qIFdlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJE
ZWxlZ2F0ZS5oICovLApAQCAtMjczODgsNiArMjc0MDcsOCBAQAogCQkJCUNEQzhCNUE1MTgwNDc0
RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmggKi8sCiAJCQkJQ0RDOEI1
QTQxODA0NzRGNzAwMTZFNjg1IC8qIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gKi8sCiAJ
CQkJN0EyOUY1NzExOEM2OTUxNDAwNEQwRjgxIC8qIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuaCAqLywKKwkJCQlDREY5OTRGQTI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5oICovLAorCQkJCUNERjk5NEZCMjRDMTJBNkEwMDJFQTA2MiAvKiBTb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLm1tICovLAogCQkJCUNEQzhCNUE5MTgwNDdGRjEwMDE2RTY4NSAv
KiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oICovLAogCQkJCUNEQzhCNUE4MTgwNDdGRjEw
MDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSAqLywKIAkJCQk1MkQ1QTE4
RTFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmggKi8sCkBAIC0zNDU5
OCw2ICszNDYxOSw3IEBACiAJCQkJMjZBQTBGOUUxOEQyQTE4QjAwNDE5MzgxIC8qIFNlbGVjdG9y
UHNldWRvRWxlbWVudFR5cGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NENThERkQxRjk1
NjVBODAwMTEyNzkxIC8qIFNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxMEE4
MUY5MDIyQTQwMDUxMDJDRSAvKiBTb2Z0TGlua0xpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQ0RGOTk0RkQyNEMxNUZFMzAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDREM4QjVBQTE4MDQ3RkYxMDAxNkU2ODUgLyogU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBODMzQzdDQTBBMkNG
MDZCMDBENTc2NjQgLyogU1ZHTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzE2OTJERDIy
M0QyM0FCRDAwNkU4OEY3IC8qIFN5c3RlbUJhdHRlcnkubW0gaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggMTFjMGE3ZjVk
OGY5YjRiNDJhODcxYjMzMTFlYWM0NDU5NzUzNjQyNy4uZDAxNzg0YzdhYTRiNzZkNmMzY2QyNTk3
OTIzMjRhNjA1MjlhMWY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgKQEAgLTM5MSw2ICszOTEsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaW5jcmVt
ZW50YWxQREZMb2FkaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5jcmVtZW50YWxQREZM
b2FkaW5nRW5hYmxlZDsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAg
IHZvaWQgc2V0V2ViTVBhcnNlckVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV93ZWJNUGFyc2Vy
RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgd2ViTVBhcnNlckVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX3dlYk1QYXJzZXJFbmFibGVkOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAg
ICAvLyBOZXZlciBpbnN0YW50aWF0ZS4KICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCk7CkBA
IC01ODQsNiArNTg5LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2luY3JlbWVudGFsUERGTG9h
ZGluZ0VuYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNF
KQorICAgIGJvb2wgbV93ZWJNUGFyc2VyRW5hYmxlZCB7IGZhbHNlIH07CisjZW5kaWYKKwogICAg
IGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVzdHJveWVkPFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM+
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVk
aW9UcmFja1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlv
VHJhY2tQcml2YXRlLmgKaW5kZXggN2ZhZTIzZWY1ZGM0Mjk5ZThmMDlmYzQxMmZjMTcxMDI2OGJl
YmMyMS4uYTlmODM2YmQxMTczZTIyZTBhZTgxNGExNzU0MmFhMjNhNDYxNWE0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0
ZUJhc2UuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogI2lmIEVOQUJMRShWSURFTykK
IApAQCAtNTUsNiArNTYsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7
CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5lbmFibGVkQ2hh
bmdlZChlbmFibGVkKTsKKyAgICAgICAgaWYgKG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjaykKKyAg
ICAgICAgICAgIG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjaygqdGhpcywgbV9lbmFibGVkKTsKICAg
ICB9CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KQEAg
LTY0LDYgKzY3LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzQmFja2VkQnlNZWRp
YVN0cmVhbVRyYWNrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHVzaW5nIEVuYWJs
ZWRDaGFuZ2VkQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEF1ZGlvVHJhY2tQcml2YXRlJiwgYm9v
bCBlbmFibGVkKT47CisgICAgdm9pZCBzZXRFbmFibGVkQ2hhbmdlZENhbGxiYWNrKEVuYWJsZWRD
aGFuZ2VkQ2FsbGJhY2smJiBjYWxsYmFjaykgeyBtX2VuYWJsZWRDaGFuZ2VkQ2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKTsgfQorCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29u
c3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkF1ZGlvVHJh
Y2tQcml2YXRlIjsgfQogI2VuZGlmCkBAIC03NCw2ICs4MCw3IEBAIHByb3RlY3RlZDoKIHByaXZh
dGU6CiAgICAgQXVkaW9UcmFja1ByaXZhdGVDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9Owog
ICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2UgfTsKKyAgICBFbmFibGVkQ2hhbmdlZENhbGxiYWNr
IG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJp
dmF0ZS5oCmluZGV4IDcxOGQ4MGUzNDUyYzQ3ZmVlZjQyNjhmMjllM2EyZTg3YmI0ZGNhZDMuLjBj
NDEzYzJkZGY1ZDlkYTJhMTViMTEzNWMwOGU1MTA4NTJiODAyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaApAQCAtMjgs
NiArMjgsNyBAQAogI2lmIEVOQUJMRShWSURFTykKIAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZUJh
c2UuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00OCw2ICs0OSw4IEBAIHB1YmxpYzoKICAgICAgICAgbV9zZWxlY3RlZCA9IHNlbGVjdGVk
OwogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+c2VsZWN0ZWRD
aGFuZ2VkKG1fc2VsZWN0ZWQpOworICAgICAgICBpZiAobV9zZWxlY3RlZENoYW5nZWRDYWxsYmFj
aykKKyAgICAgICAgICAgIG1fc2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2soKnRoaXMsIG1fc2VsZWN0
ZWQpOwogICAgIH0KICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCB7IHJldHVybiBt
X3NlbGVjdGVkOyB9CiAKQEAgLTU4LDEyICs2MSwxNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgY2hh
ciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlZpZGVvVHJhY2tQcml2YXRl
IjsgfQogI2VuZGlmCiAKKyAgICB1c2luZyBTZWxlY3RlZENoYW5nZWRDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoVmlkZW9UcmFja1ByaXZhdGUmLCBib29sIHNlbGVjdGVkKT47CisgICAgdm9pZCBz
ZXRTZWxlY3RlZENoYW5nZWRDYWxsYmFjayhTZWxlY3RlZENoYW5nZWRDYWxsYmFjayYmIGNhbGxi
YWNrKSB7IG1fc2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQor
CisKIHByb3RlY3RlZDoKICAgICBWaWRlb1RyYWNrUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAogcHJp
dmF0ZToKICAgICBWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07
CiAgICAgYm9vbCBtX3NlbGVjdGVkIHsgZmFsc2UgfTsKKyAgICBTZWxlY3RlZENoYW5nZWRDYWxs
YmFjayBtX3NlbGVjdGVkQ2hhbmdlZENhbGxiYWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwCmluZGV4IGMxY2IxYTRkMzU2MTI1ZDk0N2Rl
ZmZjMjdmNTlmY2EwYzliNDE4NDEuLmJjMTM5Nzc5N2JhZGE4YTQ3NTliZjUyZjlhNTQ2M2IyZDY0
MWQ3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAKQEAgLTMzLDkgKzMzLDggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFj
aywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKK0F1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhB
VkFzc2V0VHJhY2sqIHRyYWNrKQogICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbD4odHJhY2spKQotICAgICwgbV9wYXJlbnQocGFyZW50KQogewogICAgIHJl
c2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQpAQCAtNjcsNyArNjYsNiBAQCB2b2lkIEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgQXVkaW9UcmFja1ByaXZhdGVBVkY6OnNldEVuYWJsZWQo
ZW5hYmxlZCk7Ci0gICAgbV9wYXJlbnQtPnRyYWNrRGlkQ2hhbmdlRW5hYmxlZCh0aGlzKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggOWJjNGYyNmMwNzM0OWYxNzc2ZjYwYmUw
ZGQxYzJhYmNkN2IzN2Q2Yi4uMTQ1NmMwMTZiYWUwM2I4NzhiNTBiZjU5OTI0ZmI0ZDlmMzUzMDE4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOwogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGVBVkYgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKQogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+
IGNyZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyog
cGFyZW50KQorICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM+IGNyZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2ssIHBh
cmVudCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyh0cmFjaykpOwogICAgIH0KIAogICAgIHZvaWQgc2V0RW5hYmxlZChi
b29sKSBmaW5hbDsKQEAgLTUyLDEyICs1MiwxMSBAQCBwdWJsaWM6CiAgICAgaW50IHRyYWNrSUQo
KSB7IHJldHVybiBtX3RyYWNrSUQ7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqLCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQyogcGFyZW50KTsKKyAgICBleHBsaWNpdCBBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqKTsKICAgICAKICAgICB2b2lkIHJlc2V0UHJv
cGVydGllc0Zyb21UcmFjaygpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFWVHJhY2tQcml2YXRl
QVZGT2JqQ0ltcGw+IG1faW1wbDsKLSAgICBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogbV9w
YXJlbnQ7CiAgICAgaW50IG1fdHJhY2tJRDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5t
bQppbmRleCA2Njg5OTEwMWUxZmM1ODQwNzc3N2I2OWQ2MzkxOTE1ZmQ5YWRkZDIxLi5iZDY4NWQ1
NGMyM2M1N2JhM2ZiNmFiMGFhMjMxNmY2ODkzZWYxODMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCkBAIC0yNTMsMzAgKzI1Myw3IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUoY29uCiAgICAg
aWYgKCFwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIAotICAgIFN0cmluZyBleHRlbmRlZFR5
cGUgPSBwYXJhbWV0ZXJzLnR5cGUucmF3KCk7Ci0gICAgU3RyaW5nIG91dHB1dENvZGVjcyA9IHBh
cmFtZXRlcnMudHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsK
LSAgICBpZiAoIW91dHB1dENvZGVjcy5pc0VtcHR5KCkgJiYgW1BBTDo6Z2V0QVZTdHJlYW1EYXRh
UGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dE1JTUVDb2Rl
Y1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFyYW1ldGVyOildKSB7Ci0gICAgICAgIG91dHB1
dENvZGVjcyA9IFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgb3V0cHV0TUlNRUNv
ZGVjUGFyYW1ldGVyRm9ySW5wdXRNSU1FQ29kZWNQYXJhbWV0ZXI6b3V0cHV0Q29kZWNzXTsKLSAg
ICAgICAgZXh0ZW5kZWRUeXBlID0gbWFrZVN0cmluZyhwYXJhbWV0ZXJzLnR5cGUuY29udGFpbmVy
VHlwZSgpLCAiOyBjb2RlY3M9XCIiLCBvdXRwdXRDb2RlY3MsICJcIiIpOwotICAgIH0KLQotICAg
IGF1dG8gc3VwcG9ydGVkID0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0
ZWQ7Ci0gICAgYXV0byYgc3RyZWFtRGF0YVBhcnNlckNhY2hlID0gQVZTdHJlYW1EYXRhUGFyc2Vy
TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKHN0cmVhbURhdGFQYXJzZXJDYWNo
ZS5pc0F2YWlsYWJsZSgpKQotICAgICAgICBzdXBwb3J0ZWQgPSBzdHJlYW1EYXRhUGFyc2VyQ2Fj
aGUuY2FuRGVjb2RlVHlwZShleHRlbmRlZFR5cGUpOwotICAgIGVsc2UgewotICAgICAgICBhdXRv
JiBhc3NldENhY2hlID0gQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpOwotICAgICAg
ICBpZiAoYXNzZXRDYWNoZS5pc0F2YWlsYWJsZSgpKQotICAgICAgICAgICAgc3VwcG9ydGVkID0g
YXNzZXRDYWNoZS5jYW5EZWNvZGVUeXBlKGV4dGVuZGVkVHlwZSk7Ci0gICAgfQotCi0gICAgaWYg
KHN1cHBvcnRlZCAhPSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZCkKLSAg
ICAgICAgcmV0dXJuIHN1cHBvcnRlZDsKLQotICAgIGlmICghY29udGVudFR5cGVNZWV0c0hhcmR3
YXJlRGVjb2RlUmVxdWlyZW1lbnRzKHBhcmFtZXRlcnMudHlwZSwgcGFyYW1ldGVycy5jb250ZW50
VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQpKQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7Ci0KLSAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQ7CisgICAgcmV0dXJuIFNvdXJjZUJ1ZmZlclBh
cnNlcjo6aXNDb250ZW50VHlwZVN1cHBvcnRlZChwYXJhbWV0ZXJzLnR5cGUpID8gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
OjpJc05vdFN1cHBvcnRlZDsKIH0KIAogI3ByYWdtYSBtYXJrIC0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNl
UHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDgyNzhlMDZh
NTEyMjk3YzdlZDJiMjY5MGZmZTBjYjQyODg4NWZiZjYuLjI5MzIyNzkzOTEwZWE1N2YxODFjOTIw
MTdkM2NmMzY1Nzc1MjEwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCAiTG9n
Z2luZy5oIgogI2ltcG9ydCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgi
CiAjaW1wb3J0ICJNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaCIKKyNpbXBvcnQgIlNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakMuaCIKICNpbXBvcnQgIlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
LmgiCiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9BbGdvcml0aG1zLmg+
CkBAIC04NSw3ICs4NiwxMSBAQCBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBNZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgQwogICAgIGlmIChNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJz
KSA9PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZCkKICAgICAgICAg
cmV0dXJuIE5vdFN1cHBvcnRlZDsKIAotICAgIGF1dG8gbmV3U291cmNlQnVmZmVyID0gU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSh0aGlzKTsKKyAgICBhdXRvIHBhcnNlciA9IFNv
dXJjZUJ1ZmZlclBhcnNlcjo6Y3JlYXRlKGNvbnRlbnRUeXBlKTsKKyAgICBpZiAoIXBhcnNlcikK
KyAgICAgICAgcmV0dXJuIE5vdFN1cHBvcnRlZDsKKworICAgIGF1dG8gbmV3U291cmNlQnVmZmVy
ID0gU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSh0aGlzLCBwYXJzZXIucmVsZWFz
ZU5vbk51bGwoKSk7CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBuZXdTb3VyY2VC
dWZmZXItPnNldENETUluc3RhbmNlKG1fY2RtSW5zdGFuY2UuZ2V0KCkpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzBmZjQwZGVmYjE2NjEzOGJlZDAwZmUxZmI5YjkyYjI3YjQ3ZjVlOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaApAQCAtMCwwICsxLDc1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXIuaCIK
KyNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKwor
T0JKQ19DTEFTUyBBVkFzc2V0OworT0JKQ19DTEFTUyBBVlN0cmVhbURhdGFQYXJzZXI7CitPQkpD
X0NMQVNTIE5TRGF0YTsKK09CSkNfQ0xBU1MgTlNFcnJvcjsKK09CSkNfQ0xBU1MgV2ViQVZTdHJl
YW1EYXRhUGFyc2VyTGlzdGVuZXI7CisKK3R5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVm
ZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDIGZpbmFsIDogcHVibGljIFNvdXJjZUJ1ZmZlclBhcnNl
ciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM+IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBpc0NvbnRlbnRUeXBlU3VwcG9ydGVkKGNvbnN0IENvbnRl
bnRUeXBlJik7CisKKyAgICBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCk7CisgICAgdmlydHVh
bCB+U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpOworCisgICAgQVZTdHJlYW1EYXRhUGFyc2Vy
KiBwYXJzZXIoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlci5nZXQoKTsgfQorCisgICAgVHlwZSB0
eXBlKCkgY29uc3QgeyByZXR1cm4gVHlwZTo6QVZGT2JqQzsgfQorICAgIHZvaWQgYXBwZW5kRGF0
YShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgQXBwZW5kRmxhZ3MgPSBBcHBlbmRGbGFnczo6Tm9u
ZSkgZmluYWw7CisgICAgdm9pZCBmbHVzaFBlbmRpbmdNZWRpYURhdGEoKSBmaW5hbDsKKyAgICB2
b2lkIHNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGJvb2wsIGludDMyX3QpIGZp
bmFsOworICAgIGJvb2wgc2hvdWxkUHJvdmlkZU1lZGlhZGF0YUZvclRyYWNrSUQoaW50MzJfdCkg
ZmluYWw7CisgICAgdm9pZCByZXNldFBhcnNlclN0YXRlKCkgZmluYWw7CisKKyAgICB2b2lkIGRp
ZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3NldCopOworICAgIHZvaWQgZGlkRmFpbFRvUGFy
c2VTdHJlYW1EYXRhV2l0aEVycm9yKE5TRXJyb3IqKTsKKyAgICB2b2lkIGRpZFByb3ZpZGVNZWRp
YURhdGFGb3JUcmFja0lEKGludDMyX3QgdHJhY2tJRCwgQ01TYW1wbGVCdWZmZXJSZWYsIGNvbnN0
IFN0cmluZyYgbWVkaWFUeXBlLCB1bnNpZ25lZCBmbGFncyk7CisgICAgdm9pZCB3aWxsUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChpbnQzMl90IHRy
YWNrSUQpOworICAgIHZvaWQgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm9yVHJhY2tJRChOU0RhdGEqLCBpbnQzMl90IHRyYWNrSUQpOworCitwcml2YXRlOgor
ICAgIFJldGFpblB0cjxBVlN0cmVhbURhdGFQYXJzZXI+IG1fcGFyc2VyOworICAgIFJldGFpblB0
cjxXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcj4gbV9kZWxlZ2F0ZTsKKyAgICBib29sIG1f
ZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlvblNlZ21lbnQgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHsgZmFsc2UgfTsKK307CisKK30KKworU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
YXJzZXImIHBhcnNlcikgeyByZXR1cm4gcGFyc2VyLnR5cGUoKSA9PSBXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQYXJzZXI6OlR5cGU6OkFWRk9iakM7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5E
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNkZjA5OTA4Njg3ZjY3MmZmNTIyMmI2NWRiZjAwMDEzZTFmMDli
OTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0wLDAgKzEs
MzM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJTb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLmgiCisKKyNpbXBvcnQgIkFWQXNzZXRNSU1FVHlwZUNhY2hlLmgi
CisjaW1wb3J0ICJBVkFzc2V0VHJhY2tVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIkFWU3RyZWFtRGF0
YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCIKKyNpbXBvcnQgIkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmgiCisjaW1wb3J0ICJGb3VyQ0MuaCIKKyNpbXBvcnQgIkluYmFuZFRleHRU
cmFja1ByaXZhdGVBVkZPYmpDLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJNZWRp
YURlc2NyaXB0aW9uLmgiCisjaW1wb3J0ICJNZWRpYVNhbXBsZS5oIgorI2ltcG9ydCAiTWVkaWFT
YW1wbGVBVkZPYmpDLmgiCisjaW1wb3J0ICJOb3RJbXBsZW1lbnRlZC5oIgorI2ltcG9ydCAiU2hh
cmVkQnVmZmVyLmgiCisjaW1wb3J0ICJUaW1lUmFuZ2VzLmgiCisjaW1wb3J0ICJWaWRlb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIgorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQXNz
ZXRUcmFjay5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheUlubGluZXMuaD4K
KyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8cGFsL2F2Zm91bmRhdGlvbi9NZWRp
YVRpbWVBVkZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9u
U1BJLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorCisjaW1wb3J0IDxw
YWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRp
b25Tb2Z0TGluay5oPgorCisjcHJhZ21hIG1hcmsgLQorI3ByYWdtYSBtYXJrIFdlYkFWU3RyZWFt
RGF0YVBhcnNlckxpc3RlbmVyCisKK0BpbnRlcmZhY2UgV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlz
dGVuZXIgOiBOU09iamVjdDxBVlN0cmVhbURhdGFQYXJzZXJPdXRwdXRIYW5kbGluZz4geworICAg
IFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMqIF9wYXJlbnQ7CisgICAgQVZTdHJl
YW1EYXRhUGFyc2VyKiBfcGFyc2VyOworfQorQHByb3BlcnR5IChhc3NpZ24pIFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMqIHBhcmVudDsKKy0gKGlkKWluaXRXaXRoUGFyc2VyOihB
VlN0cmVhbURhdGFQYXJzZXIqKXBhcnNlciBwYXJlbnQ6KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMqKXBhcmVudDsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYkFWU3RyZWFt
RGF0YVBhcnNlckxpc3RlbmVyCistIChpZClpbml0V2l0aFBhcnNlcjooQVZTdHJlYW1EYXRhUGFy
c2VyKilwYXJzZXIgcGFyZW50OihXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKilw
YXJlbnQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKworICAgIEFTU0VSVChwYXJlbnQpOworICAgIF9wYXJlbnQgPSBwYXJl
bnQ7CisgICAgX3BhcnNlciA9IHBhcnNlcjsKKyAgICBbX3BhcnNlciBzZXREZWxlZ2F0ZTpzZWxm
XTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworQHN5bnRoZXNpemUgcGFyZW50PV9wYXJlbnQ7CisK
Ky0gKHZvaWQpZGVhbGxvYworeworICAgIFtfcGFyc2VyIHNldERlbGVnYXRlOm5pbF07CisgICAg
W3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKWludmFsaWRhdGUKK3sKKyAgICBbX3BhcnNl
ciBzZXREZWxlZ2F0ZTpuaWxdOworICAgIF9wYXJzZXIgPSBudWxscHRyOworfQorCistICh2b2lk
KXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIg
ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldDooQVZBc3NldCAqKWFzc2V0Cit7CisgICAgQVNTRVJU
X1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOwor
ICAgIF9wYXJlbnQtPmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoYXNzZXQpOworfQorCistICh2
b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJz
ZXIgZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldDooQVZBc3NldCAqKWFzc2V0IHdpdGhEaXNjb250
aW51aXR5OihCT09MKWRpc2NvbnRpbnVpdHkKK3sKKyAgICBVTlVTRURfUEFSQU0oZGlzY29udGlu
dWl0eSk7CisgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFy
c2VyID09IF9wYXJzZXIpOworICAgIF9wYXJlbnQtPmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQo
YXNzZXQpOworfQorCistICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNl
ciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yOihO
U0Vycm9yICopZXJyb3IKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0
cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7CisgICAgX3BhcmVudC0+ZGlkRmFpbFRvUGFyc2VT
dHJlYW1EYXRhV2l0aEVycm9yKGVycm9yKTsKK30KKworLSAodm9pZClzdHJlYW1EYXRhUGFyc2Vy
OihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFByb3ZpZGVNZWRpYURh
dGE6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZSBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFj
a0lEKXRyYWNrSUQgbWVkaWFUeXBlOihOU1N0cmluZyAqKW5zTWVkaWFUeXBlIGZsYWdzOihBVlN0
cmVhbURhdGFQYXJzZXJPdXRwdXRNZWRpYURhdGFGbGFncylmbGFncworeworICAgIEFTU0VSVF9V
TlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKKyAg
ICBfcGFyZW50LT5kaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCh0cmFja0lELCBzYW1wbGUs
IG5zTWVkaWFUeXBlLCBmbGFncyk7Cit9CisKK0FMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0JFR0lOCistICh2b2lkKXN0cmVhbURhdGFQYXJzZXJXaWxsUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRh
UGFyc2VyIGZvclRyYWNrSUQ6KENNUGVyc2lzdGVudFRyYWNrSUQpdHJhY2tJRAorQUxMT1dfREVQ
UkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECit7CisgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1E
YXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOworICAgIF9wYXJlbnQtPndp
bGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHRy
YWNrSUQpOworfQorCitBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgorLSAo
dm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFy
c2VyIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTooTlNEYXRh
ICopaW5pdERhdGEgZm9yVHJhY2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lECitBTExP
V19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKK3sKKyAgICBfcGFyZW50LT5kaWRQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKGluaXREYXRh
LCB0cmFja0lEKTsKK30KK0BlbmQKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjcHJhZ21hIG1h
cmsgLQorI3ByYWdtYSBtYXJrIE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDCisKK2NsYXNzIE1lZGlh
RGVzY3JpcHRpb25BVkZPYmpDIGZpbmFsIDogcHVibGljIE1lZGlhRGVzY3JpcHRpb24geworcHVi
bGljOgorICAgIHN0YXRpYyBSZWY8TWVkaWFEZXNjcmlwdGlvbkFWRk9iakM+IGNyZWF0ZShBVkFz
c2V0VHJhY2sqIHRyYWNrKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhRGVzY3JpcHRpb25B
VkZPYmpDKHRyYWNrKSk7IH0KKyAgICB2aXJ0dWFsIH5NZWRpYURlc2NyaXB0aW9uQVZGT2JqQygp
IHsgfQorCisgICAgYm9vbCBpc1ZpZGVvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1Zp
ZGVvOyB9CisgICAgYm9vbCBpc0F1ZGlvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0F1
ZGlvOyB9CisgICAgYm9vbCBpc1RleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzVGV4
dDsgfQorICAgIEF0b21TdHJpbmcgY29kZWMoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgLy8gQXRvbVN0cmluZ3MgY2FuIG9ubHkgYmUgZGVzdHJveWVkIGZyb20gdGhlIHNhbWUgdGhy
ZWFkIHRoZXkncmUKKyAgICAgICAgLy8gY3JlYXRlZCBpbi4gU2luY2UgdGhpcyBzdHJ1Y3R1cmUg
aXMgY3JlYXRlZCBpbiBhIHBhcnNlciB0aHJlYWQKKyAgICAgICAgLy8gb25seSBjcmVhdGUgdGhl
IEF0b21TdHJpbmcgdGhlIGZpcnN0IHRpbWUgdGhpcyBmdW5jdGlvbiBpcyBhY2Nlc3NlZAorICAg
ICAgICAvLyB3aGljaCBpcyBwcmVzdW1hYmx5IG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgaWYgKCFtX2NvZGVjKQorICAgICAgICAg
ICAgbV9jb2RlYyA9IEF0b21TdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCZt
X29yaWdpbmFsQ29kZWMpLCA0KTsKKyAgICAgICAgcmV0dXJuICptX2NvZGVjOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNr
KQorICAgICAgICA6IG1faXNWaWRlbyhbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1l
ZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWxdKQorICAgICAgICAsIG1faXNBdWRpbyhbdHJhY2sgaGFz
TWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNBdWRpYmxlXSkKKyAgICAg
ICAgLCBtX2lzVGV4dChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFj
dGVyaXN0aWNMZWdpYmxlXSkKKyAgICB7CisgICAgICAgIE5TQXJyYXkqIGZvcm1hdERlc2NyaXB0
aW9ucyA9IFt0cmFjayBmb3JtYXREZXNjcmlwdGlvbnNdOworICAgICAgICBDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmIGRlc2NyaXB0aW9uID0gW2Zvcm1hdERlc2NyaXB0aW9ucyBjb3VudF0gPyAoX19i
cmlkZ2UgQ01Gb3JtYXREZXNjcmlwdGlvblJlZilbZm9ybWF0RGVzY3JpcHRpb25zIG9iamVjdEF0
SW5kZXg6MF0gOiAwOworICAgICAgICBpZiAoZGVzY3JpcHRpb24pIHsKKyAgICAgICAgICAgIG1f
b3JpZ2luYWxDb2RlYyA9IFBBTDo6c29mdExpbmtfQ29yZU1lZGlhX0NNRm9ybWF0RGVzY3JpcHRp
b25HZXRNZWRpYVN1YlR5cGUoZGVzY3JpcHRpb24pOworICAgICAgICAgICAgQ0ZTdHJpbmdSZWYg
b3JpZ2luYWxGb3JtYXRLZXkgPSBQQUw6OmNhbkxvYWRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2Ny
aXB0aW9uRXh0ZW5zaW9uX1Byb3RlY3RlZENvbnRlbnRPcmlnaW5hbEZvcm1hdCgpID8gUEFMOjpn
ZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1Byb3RlY3RlZENvbnRl
bnRPcmlnaW5hbEZvcm1hdCgpIDogQ0ZTVFIoIkNvbW1vbkVuY3J5cHRpb25PcmlnaW5hbEZvcm1h
dCIpOworICAgICAgICAgICAgQ0ZUeXBlUmVmIG9yaWdpbmFsRm9ybWF0ID0gQ01Gb3JtYXREZXNj
cmlwdGlvbkdldEV4dGVuc2lvbihkZXNjcmlwdGlvbiwgb3JpZ2luYWxGb3JtYXRLZXkpOworICAg
ICAgICAgICAgaWYgKG9yaWdpbmFsRm9ybWF0ICYmIENGR2V0VHlwZUlEKG9yaWdpbmFsRm9ybWF0
KSA9PSBDRk51bWJlckdldFR5cGVJRCgpKQorICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFs
dWUoKENGTnVtYmVyUmVmKW9yaWdpbmFsRm9ybWF0LCBrQ0ZOdW1iZXJTSW50MzJUeXBlLCAmbV9v
cmlnaW5hbENvZGVjKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEZvdXJDaGFyQ29kZSBtX29y
aWdpbmFsQ29kZWM7CisgICAgbXV0YWJsZSBPcHRpb25hbDxBdG9tU3RyaW5nPiBtX2NvZGVjOwor
ICAgIGJvb2wgbV9pc1ZpZGVvOworICAgIGJvb2wgbV9pc0F1ZGlvOworICAgIGJvb2wgbV9pc1Rl
eHQ7Cit9OworCisjcHJhZ21hIG1hcmsgLQorI3ByYWdtYSBtYXJrIFNvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakMKKworYm9vbCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjppc0NvbnRlbnRUeXBl
U3VwcG9ydGVkKGNvbnN0IENvbnRlbnRUeXBlJiB0eXBlKQoreworICAgIFN0cmluZyBleHRlbmRl
ZFR5cGUgPSB0eXBlLnJhdygpOworICAgIFN0cmluZyBvdXRwdXRDb2RlY3MgPSB0eXBlLnBhcmFt
ZXRlcihDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVyKCkpOworICAgIGlmICghb3V0cHV0Q29k
ZWNzLmlzRW1wdHkoKSAmJiBbUEFMOjpnZXRBVlN0cmVhbURhdGFQYXJzZXJDbGFzcygpIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob3V0cHV0TUlNRUNvZGVjUGFyYW1ldGVyRm9ySW5wdXRN
SU1FQ29kZWNQYXJhbWV0ZXI6KV0pIHsKKyAgICAgICAgb3V0cHV0Q29kZWNzID0gW1BBTDo6Z2V0
QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSBvdXRwdXRNSU1FQ29kZWNQYXJhbWV0ZXJGb3JJbnB1
dE1JTUVDb2RlY1BhcmFtZXRlcjpvdXRwdXRDb2RlY3NdOworICAgICAgICBleHRlbmRlZFR5cGUg
PSBtYWtlU3RyaW5nKHR5cGUuY29udGFpbmVyVHlwZSgpLCAiOyBjb2RlY3M9XCIiLCBvdXRwdXRD
b2RlY3MsICJcIiIpOworICAgIH0KKworICAgIGF1dG8mIHN0cmVhbURhdGFQYXJzZXJDYWNoZSA9
IEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpOworICAgIGlmIChz
dHJlYW1EYXRhUGFyc2VyQ2FjaGUuaXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIHN0cmVh
bURhdGFQYXJzZXJDYWNoZS5jYW5EZWNvZGVUeXBlKGV4dGVuZGVkVHlwZSkgPT0gTWVkaWFQbGF5
ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZDsKKworICAgIGF1dG8mIGFzc2V0Q2Fj
aGUgPSBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCk7CisgICAgaWYgKGFzc2V0Q2Fj
aGUuaXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIGFzc2V0Q2FjaGUuY2FuRGVjb2RlVHlw
ZShleHRlbmRlZFR5cGUpID09IE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNTdXBw
b3J0ZWQ7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKQorICAgIDogbV9wYXJzZXIoYWRvcHROUyhb
UEFMOjphbGxvY0FWU3RyZWFtRGF0YVBhcnNlckluc3RhbmNlKCkgaW5pdF0pKQorICAgICwgbV9k
ZWxlZ2F0ZShhZG9wdE5TKFtbV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgYWxsb2NdIGlu
aXRXaXRoUGFyc2VyOm1fcGFyc2VyLmdldCgpIHBhcmVudDp0aGlzXSkpCit7Cit9CisKK1NvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKK3sKKyAg
ICBtX2RlbGVnYXRlLmdldCgpLnBhcmVudCA9IG51bGxwdHI7Cit9CisKK3ZvaWQgU291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRh
LCBBcHBlbmRGbGFncyBmbGFncykKK3sKKyAgICBhdXRvIHNoYXJlZERhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZERhdGEt
PmNyZWF0ZU5TRGF0YSgpOworICAgIGlmIChtX3BhcnNlclN0YXRlV2FzUmVzZXQgfHwgZmxhZ3Mg
PT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCisgICAgICAgIFttX3BhcnNlciBhcHBlbmRT
dHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2VyU3RyZWFt
RGF0YURpc2NvbnRpbnVpdHldOworICAgIGVsc2UKKyAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0
cmVhbURhdGE6bnNEYXRhLmdldCgpXTsKKyAgICBtX3BhcnNlclN0YXRlV2FzUmVzZXQgPSBmYWxz
ZTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpmbHVzaFBlbmRpbmdNZWRp
YURhdGEoKQoreworICAgIFttX3BhcnNlciBwcm92aWRlUGVuZGluZ01lZGlhRGF0YV07Cit9CisK
K3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0
YUZvclRyYWNrSUQoYm9vbCBzaG91bGQsIGludDMyX3QgdHJhY2tJRCkKK3sKKyAgICBbbV9wYXJz
ZXIgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YTpzaG91bGQgZm9yVHJhY2tJRDp0cmFja0lEXTsK
K30KKworYm9vbCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpzaG91bGRQcm92aWRlTWVkaWFk
YXRhRm9yVHJhY2tJRChpbnQzMl90IHRyYWNrSUQpCit7CisgICAgcmV0dXJuIFttX3BhcnNlciBz
aG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRDp0cmFja0lEXTsKK30KKwordm9pZCBTb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpyZXNldFBhcnNlclN0YXRlKCkKK3sKKyAgICBtX3BhcnNl
clN0YXRlV2FzUmVzZXQgPSB0cnVlOworICAgIG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0
aWFsaXphdGlvblNlZ21lbnQgPSB0cnVlOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3NldCogYXNzZXQpCit7CisgICAg
Y2FsbE9uTWFpblRocmVhZChbdGhpcywgc3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBhc3Nl
dCA9IHJldGFpblB0cihhc3NldCldIHsKKyAgICAgICAgbV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4
dEluaXRpYWxpemF0aW9uU2VnbWVudCA9IGZhbHNlOworCisgICAgICAgIGlmICghbV9kaWRQYXJz
ZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIEluaXRpYWxpemF0aW9uU2VnbWVudCBzZWdtZW50OworCisgICAgICAgIGlmIChbYXNzZXQg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdmVyYWxsRHVyYXRpb25IaW50KV0pCisgICAg
ICAgICAgICBzZWdtZW50LmR1cmF0aW9uID0gUEFMOjp0b01lZGlhVGltZShbYXNzZXQgb3ZlcmFs
bER1cmF0aW9uSGludF0pOworCisgICAgICAgIGlmIChzZWdtZW50LmR1cmF0aW9uLmlzSW52YWxp
ZCgpIHx8IHNlZ21lbnQuZHVyYXRpb24gPT0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpKQorICAgICAg
ICAgICAgc2VnbWVudC5kdXJhdGlvbiA9IFBBTDo6dG9NZWRpYVRpbWUoW2Fzc2V0IGR1cmF0aW9u
XSk7CisKKyAgICAgICAgZm9yIChBVkFzc2V0VHJhY2sqIHRyYWNrIGluIFthc3NldCB0cmFja3Nd
KSB7CisgICAgICAgICAgICBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRp
YUNoYXJhY3RlcmlzdGljTGVnaWJsZV0pIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRSgxMjUx
NjEpOiBIYW5kbGUgaW4tYmFuZCB0ZXh0IHRyYWNrcy4KKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKFt0cmFjayBoYXNNZWRpYUNoYXJh
Y3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbF0pIHsKKyAgICAgICAgICAgICAg
ICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ6OlZpZGVv
VHJhY2tJbmZvcm1hdGlvbiBpbmZvOworICAgICAgICAgICAgICAgIGF1dG8gdmlkZW9UcmFjayA9
IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGUodHJhY2spOworICAg
ICAgICAgICAgICAgIGluZm8udHJhY2sgPSB2aWRlb1RyYWNrLmNvcHlSZWYoKTsKKyAgICAgICAg
ICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVkaWFEZXNjcmlwdGlvbkFWRk9iakM6OmNyZWF0
ZSh0cmFjayk7CisgICAgICAgICAgICAgICAgc2VnbWVudC52aWRlb1RyYWNrcy5hcHBlbmQoaW5m
byk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGlj
OkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGVdKSB7CisgICAgICAgICAgICAgICAgU291cmNl
QnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OjpBdWRpb1RyYWNrSW5m
b3JtYXRpb24gaW5mbzsKKyAgICAgICAgICAgICAgICBhdXRvIGF1ZGlvVHJhY2sgPSBBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKKyAgICAgICAgICAg
ICAgICBpbmZvLnRyYWNrID0gYXVkaW9UcmFjay5jb3B5UmVmKCk7CisgICAgICAgICAgICAgICAg
aW5mby5kZXNjcmlwdGlvbiA9IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDOjpjcmVhdGUodHJhY2sp
OworICAgICAgICAgICAgICAgIHNlZ21lbnQuYXVkaW9UcmFja3MuYXBwZW5kKGluZm8pOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBGSVhNRSgxMjUxNjEpICAgIDogQWRkIFRleHRU
cmFjayBzdXBwb3J0CisgICAgICAgIH0KKworICAgICAgICBtX2RpZFBhcnNlSW5pdGlhbGl6YXRp
b25EYXRhQ2FsbGJhY2soV1RGTW92ZShzZWdtZW50KSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9y
KE5TRXJyb3IqIGVycm9yKQoreworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHN0cm9uZ1Ro
aXMgPSBtYWtlUmVmKCp0aGlzKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpXSB7CisgICAgICAg
IGlmIChtX2RpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKQorICAgICAgICAg
ICAgbV9kaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayhlcnJvci5nZXQoKS5j
b2RlKTsKKyAgICB9KTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQ
cm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChpbnQzMl90IHRyYWNrSUQsIENNU2FtcGxlQnVmZmVy
UmVmIHNhbXBsZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkIGZsYWdz
KQoreworICAgIFVOVVNFRF9QQVJBTShmbGFncyk7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhp
cywgc3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzYW1wbGVCdWZmZXIgPSByZXRhaW5QdHIo
c2FtcGxlQnVmZmVyKSwgdHJhY2tJRCwgbWVkaWFUeXBlID0gbWVkaWFUeXBlXSB7CisgICAgICAg
IGlmICghbV9kaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2spCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlvblNl
Z21lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byBtZWRpYVNhbXBsZSA9
IE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKHNhbXBsZUJ1ZmZlci5nZXQoKSwgdHJhY2tJRCk7
CisKKyAgICAgICAgaWYgKG1lZGlhU2FtcGxlLT5pc0hvbW9nZW5lb3VzKCkpIHsKKyAgICAgICAg
ICAgIG1fZGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKFdURk1vdmUobWVkaWFTYW1wbGUpLCB0
cmFja0lELCBtZWRpYVR5cGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgZm9yIChhdXRvJiBzYW1wbGUgOiBtZWRpYVNhbXBsZS0+ZGl2aWRlSW50b0hvbW9nZW5l
b3VzU2FtcGxlcygpKQorICAgICAgICAgICAgbV9kaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2so
V1RGTW92ZShzYW1wbGUpLCB0cmFja0lELCBtZWRpYVR5cGUpOworICAgIH0pOworfQorCit2b2lk
IFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OndpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJ
bml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKGludDMyX3QgdHJhY2tJRCkKK3sKKyAgICBtX3dp
bGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2Fs
bGJhY2sodHJhY2tJRCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlk
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChOU0Rh
dGEqIG5zSW5pdERhdGEsIGludDMyX3QgdHJhY2tJRCkKK3sKKyAgICBhdXRvIGluaXREYXRhID0g
VWludDhBcnJheTo6Y3JlYXRlKG5zSW5pdERhdGEubGVuZ3RoKTsKKyAgICBbbnNJbml0RGF0YSBn
ZXRCeXRlczppbml0RGF0YS0+ZGF0YSgpIGxlbmd0aDppbml0RGF0YS0+bGVuZ3RoKCldOworCisg
ICAgbV9kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFj
a0lEQ2FsbGJhY2soV1RGTW92ZShpbml0RGF0YSksIHRyYWNrSUQpOworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRl
eCBkZmExMzRiNGQ2OGZkYjc0NzM0Mzc4ZDlmOWRkM2JkODQxZjMzZDY1Li42ZDE5NGFiMTQwYThi
ZDM0OTNiZWIzYWRkZjMyODNkM2I4ZTc1ZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpICYmIFVTRShBVkZPVU5EQVRJT04pCiAKKyNpbmNsdWRl
ICJTb3VyY2VCdWZmZXJQYXJzZXIuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlLmgi
CiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZ3JvdXAuaD4KICNpbmNsdWRlIDx3dGYvQm94Lmg+CkBAIC0z
OCwxOCArMzksMTcgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV1RGU2Vt
YXBob3JlLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9tU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAK
LU9CSkNfQ0xBU1MgQVZBc3NldDsKIE9CSkNfQ0xBU1MgQVZTdHJlYW1EYXRhUGFyc2VyOwogT0JK
Q19DTEFTUyBBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXI7CiBPQkpDX0NMQVNTIEFWU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOwogT0JKQ19DTEFTUyBOU0RhdGE7CiBPQkpDX0NMQVNTIE5TRXJy
b3I7CiBPQkpDX0NMQVNTIE5TT2JqZWN0OwotT0JKQ19DTEFTUyBXZWJBVlN0cmVhbURhdGFQYXJz
ZXJMaXN0ZW5lcjsKIE9CSkNfQ0xBU1MgV2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyOwog
CiB0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7
CkBAIC04NiwzNCArODYsMjcgQEAgY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMgZmlu
YWwKICNlbmRpZgogewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM+IGNyZWF0ZShNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKik7CisgICAgc3RhdGlj
IFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gY3JlYXRlKE1lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakMqLCBSZWY8U291cmNlQnVmZmVyUGFyc2VyPiYmKTsKICAgICB2aXJ0dWFsIH5Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQygpOwogCiAgICAgdm9pZCBjbGVhck1lZGlhU291cmNlKCkg
eyBtX21lZGlhU291cmNlID0gbnVsbHB0cjsgfQogCi0gICAgLy8gQVZTdHJlYW1EYXRhUGFyc2Vy
IGRlbGVnYXRlIG1ldGhvZHMKLSAgICB2b2lkIGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZB
c3NldCopOwotICAgIHZvaWQgZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yKE5TRXJy
b3IqKTsKLSAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGludCB0cmFja0lE
LCBDTVNhbXBsZUJ1ZmZlclJlZiwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkIGZs
YWdzKTsKLSAgICB2b2lkIGRpZFJlYWNoRW5kT2ZUcmFja1dpdGhUcmFja0lEKGludCB0cmFja0lE
LCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7Ci0gICAgdm9pZCB3aWxsUHJvdmlkZUNvbnRlbnRL
ZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChpbnQgdHJhY2tJRCk7Ci0gICAg
dm9pZCBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFj
a0lEKE5TRGF0YSosIGludCB0cmFja0lELCBCb3g8QmluYXJ5U2VtYXBob3JlPik7Ci0KLSAgICBi
b29sIHByb2Nlc3NDb2RlZEZyYW1lKGludCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJlZiwgY29u
c3QgU3RyaW5nJiBtZWRpYVR5cGUpOworICAgIHZvaWQgd2lsbFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoaW50MzJfdCB0cmFja0lEKTsKKyAgICB2
b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNr
SUQoUmVmPFVpbnQ4QXJyYXk+JiYsIGludDMyX3QgdHJhY2tJRCwgQm94PEJpbmFyeVNlbWFwaG9y
ZT4pOwogCiAgICAgYm9vbCBoYXNWaWRlbygpIGNvbnN0OwogICAgIGJvb2wgaGFzU2VsZWN0ZWRW
aWRlbygpIGNvbnN0OwogICAgIGJvb2wgaGFzQXVkaW8oKSBjb25zdDsKIAotICAgIHZvaWQgdHJh
Y2tEaWRDaGFuZ2VFbmFibGVkKFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKik7
Ci0gICAgdm9pZCB0cmFja0RpZENoYW5nZUVuYWJsZWQoQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMqKTsKKyAgICB2b2lkIHRyYWNrRGlkQ2hhbmdlU2VsZWN0ZWQoVmlkZW9UcmFj
a1ByaXZhdGUmLCBib29sIHNlbGVjdGVkKTsKKyAgICB2b2lkIHRyYWNrRGlkQ2hhbmdlRW5hYmxl
ZChBdWRpb1RyYWNrUHJpdmF0ZSYsIGJvb2wgZW5hYmxlZCk7CiAKICAgICB2b2lkIHdpbGxTZWVr
KCk7CiAgICAgTWVkaWFUaW1lIGZhc3RTZWVrVGltZUZvck1lZGlhVGltZShjb25zdCBNZWRpYVRp
bWUmLCBjb25zdCBNZWRpYVRpbWUmIG5lZ2F0aXZlVGhyZXNob2xkLCBjb25zdCBNZWRpYVRpbWUm
IHBvc2l0aXZlVGhyZXNob2xkKTsKICAgICBGbG9hdFNpemUgbmF0dXJhbFNpemUoKTsKIAogICAg
IGludCBwcm90ZWN0ZWRUcmFja0lEKCkgY29uc3QgeyByZXR1cm4gbV9wcm90ZWN0ZWRUcmFja0lE
OyB9Ci0gICAgQVZTdHJlYW1EYXRhUGFyc2VyKiBwYXJzZXIoKSBjb25zdCB7IHJldHVybiBtX3Bh
cnNlci5nZXQoKTsgfQorICAgIEFWU3RyZWFtRGF0YVBhcnNlciogcGFyc2VyKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRDRE1TZXNzaW9uKENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMqKTsKICAg
ICB2b2lkIHNldENETUluc3RhbmNlKENETUluc3RhbmNlKik7CiAgICAgdm9pZCBhdHRlbXB0VG9E
ZWNyeXB0KCk7CkBAIC0xNDgsNyArMTQxLDEyIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRl
OgotICAgIGV4cGxpY2l0IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJp
dmF0ZUFWRk9iakMqKTsKKyAgICBleHBsaWNpdCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhN
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiwgUmVmPFNvdXJjZUJ1ZmZlclBhcnNlcj4mJik7CisK
KyAgICB1c2luZyBJbml0aWFsaXphdGlvblNlZ21lbnQgPSBTb3VyY2VCdWZmZXJQYXJzZXI6Oklu
aXRpYWxpemF0aW9uU2VnbWVudDsKKyAgICB2b2lkIGRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRh
KEluaXRpYWxpemF0aW9uU2VnbWVudCYmKTsKKyAgICB2b2lkIGRpZEVuY291bnRlckVycm9yRHVy
aW5nUGFyc2luZyhpbnQzMl90KTsKKyAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFj
a0lEKFJlZjxNZWRpYVNhbXBsZT4mJiwgaW50MzJfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1l
ZGlhVHlwZSk7CiAKICAgICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlIG92ZXJyaWRlcwogICAgIHZv
aWQgc2V0Q2xpZW50KFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQqKSBmaW5hbDsKQEAgLTE3Miwy
OCArMTcwLDI4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhcHBlbmRDb21wbGV0ZWQoKTsKICAgICB2
b2lkIGRlc3Ryb3lQYXJzZXIoKTsKICAgICB2b2lkIGRlc3Ryb3lSZW5kZXJlcnMoKTsKKyAgICB2
b2lkIGNsZWFyVHJhY2tzKCk7CiAKICAgICB2b2lkIGZsdXNoVmlkZW8oKTsKICAgICBBTExPV19O
RVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCiAgICAgdm9pZCBmbHVzaChBVlNhbXBsZUJ1ZmZl
ckF1ZGlvUmVuZGVyZXIgKik7CiAgICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQK
IAotICAgIFZlY3RvcjxSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+
PiBtX3ZpZGVvVHJhY2tzOwotICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM+PiBtX2F1ZGlvVHJhY2tzOworICAgIFZlY3RvcjxSZWZQdHI8VmlkZW9U
cmFja1ByaXZhdGU+PiBtX3ZpZGVvVHJhY2tzOworICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFj
a1ByaXZhdGU+PiBtX2F1ZGlvVHJhY2tzOwogICAgIFZlY3RvcjxTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQ0Vycm9yQ2xpZW50Kj4gbV9lcnJvckNsaWVudHM7CiAKICAgICBXZWFrUHRyRmFjdG9y
eTxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gbV9hcHBlbmRXZWFrRmFjdG9yeTsKIAotICAg
IFJldGFpblB0cjxBVlN0cmVhbURhdGFQYXJzZXI+IG1fcGFyc2VyOwotICAgIFJldGFpblB0cjxB
VkFzc2V0PiBtX2Fzc2V0OworICAgIFJlZjxTb3VyY2VCdWZmZXJQYXJzZXI+IG1fcGFyc2VyOwog
ICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gbV9kaXNwbGF5TGF5ZXI7
CiAgICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgogICAgIEhhc2hNYXA8aW50
LCBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyPj4gbV9hdWRpb1JlbmRlcmVy
czsKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAotICAgIFJldGFpblB0cjxX
ZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcj4gbV9kZWxlZ2F0ZTsKICAgICBSZXRhaW5QdHI8
V2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyPiBtX2Vycm9yTGlzdGVuZXI7CiAgICAgUmV0
YWluUHRyPE5TRXJyb3I+IG1faGRjcEVycm9yOwogICAgIEJveDxCaW5hcnlTZW1hcGhvcmU+IG1f
aGFzU2Vzc2lvblNlbWFwaG9yZTsKKyAgICBCb3g8U2VtYXBob3JlPiBtX2Fib3J0U2VtYXBob3Jl
OwogICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX2dyb3VwX3Q+IG1faXNBcHBlbmRpbmdHcm91cDsK
ICAgICBSZWZQdHI8V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uPiBtX2RlY29tcHJlc3Npb25T
ZXNzaW9uOwogCkBAIC0yMTEsOCArMjA5LDYgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxGbG9h
dFNpemU+IG1fY2FjaGVkU2l6ZTsKICAgICBGbG9hdFNpemUgbV9jdXJyZW50U2l6ZTsKICAgICBi
b29sIG1fcGFyc2luZ1N1Y2NlZWRlZCB7IHRydWUgfTsKLSAgICBib29sIG1fcGFyc2VyU3RhdGVX
YXNSZXNldCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5p
dGlhbGl6YXRpb25TZWdtZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1fd2FpdGluZ0ZvcktleSB7
IHRydWUgfTsKICAgICBpbnQgbV9lbmFibGVkVmlkZW9UcmFja0lEIHsgLTEgfTsKICAgICBpbnQg
bV9wcm90ZWN0ZWRUcmFja0lEIHsgLTEgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggZDczNTc3NWNjOGYwNGI4YjAy
MWIzNWM3MDE2OTViZDI0ZjZmOGRhOC4uZDUxMTFmZTM3YTdiZjYyMmY5MGY2ZWFiNDNjNTEwNmYx
ZTNjZDc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0KQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbXBvcnQgIk1lZGlhU291cmNl
UHJpdmF0ZUFWRk9iakMuaCIKICNpbXBvcnQgIk5vdEltcGxlbWVudGVkLmgiCiAjaW1wb3J0ICJT
aGFyZWRCdWZmZXIuaCIKKyNpbXBvcnQgIlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCIKICNp
bXBvcnQgIlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaCIKICNpbXBvcnQgIlRpbWVSYW5nZXMu
aCIKICNpbXBvcnQgIlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgiCkBAIC04
MiwxNTMgKzgzLDYgQEAgLSAodm9pZClhZGRTdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQ
YXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyOwogLSAodm9pZClyZW1vdmVTdHJlYW1EYXRhUGFyc2Vy
OihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyOwogQGVuZAogCi0jcHJhZ21h
IG1hcmsgLQotI3ByYWdtYSBtYXJrIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyCi0KLUBp
bnRlcmZhY2UgV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgOiBOU09iamVjdDxBVlN0cmVh
bURhdGFQYXJzZXJPdXRwdXRIYW5kbGluZz4gewotICAgIFdlYWtQdHI8V2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM+IF9wYXJlbnQ7Ci0gICAgQm94PFNlbWFwaG9yZT4gX2Fib3J0
U2VtYXBob3JlOwotICAgIEFWU3RyZWFtRGF0YVBhcnNlciogX3BhcnNlcjsKLX0KLUBwcm9wZXJ0
eSAoYXNzaWduKSBXZWFrUHRyPFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBw
YXJlbnQ7Ci1AcHJvcGVydHkgKGFzc2lnbikgQm94PFNlbWFwaG9yZT4gYWJvcnRTZW1hcGhvcmU7
Ci0tIChpZClpbml0V2l0aFBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyKilwYXJzZXIgcGFyZW50
OihXZWFrUHRyPFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPilwYXJlbnQ7Ci1A
ZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcgotLSAo
aWQpaW5pdFdpdGhQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciopcGFyc2VyIHBhcmVudDooV2Vh
a1B0cjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4pcGFyZW50Ci17Ci0gICAg
c2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7
Ci0KLSAgICBBU1NFUlQocGFyZW50KTsKLSAgICBfcGFyZW50ID0gcGFyZW50OwotICAgIF9wYXJz
ZXIgPSBwYXJzZXI7Ci0gICAgW19wYXJzZXIgc2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgcmV0dXJu
IHNlbGY7Ci19Ci0KLUBzeW50aGVzaXplIHBhcmVudD1fcGFyZW50OwotQHN5bnRoZXNpemUgYWJv
cnRTZW1hcGhvcmU9X2Fib3J0U2VtYXBob3JlOwotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBb
X3BhcnNlciBzZXREZWxlZ2F0ZTpuaWxdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAo
dm9pZClpbnZhbGlkYXRlCi17Ci0gICAgW19wYXJzZXIgc2V0RGVsZWdhdGU6bmlsXTsKLSAgICBf
cGFyc2VyID0gbnVsbHB0cjsKLX0KLQotLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVh
bURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQ6
KEFWQXNzZXQgKilhc3NldAotewotICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwg
c3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLQotICAgIFJldGFpblB0cjxBVkFzc2V0PiBw
cm90ZWN0ZWRBc3NldCA9IGFzc2V0OwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3BhcmVudCA9IF9w
YXJlbnQsIHByb3RlY3RlZEFzc2V0ID0gV1RGTW92ZShwcm90ZWN0ZWRBc3NldCldIHsKLSAgICAg
ICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAgIHBhcmVudC0+ZGlkUGFyc2VTdHJlYW1EYXRhQXNB
c3NldChwcm90ZWN0ZWRBc3NldC5nZXQoKSk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpc3RyZWFt
RGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQYXJz
ZVN0cmVhbURhdGFBc0Fzc2V0OihBVkFzc2V0ICopYXNzZXQgd2l0aERpc2NvbnRpbnVpdHk6KEJP
T0wpZGlzY29udGludWl0eQotewotICAgIFVOVVNFRF9QQVJBTShkaXNjb250aW51aXR5KTsKLSAg
ICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3Bh
cnNlcik7Ci0KLSAgICBSZXRhaW5QdHI8QVZBc3NldD4gcHJvdGVjdGVkQXNzZXQgPSBhc3NldDsK
LSAgICBjYWxsT25NYWluVGhyZWFkKFtwYXJlbnQgPSBfcGFyZW50LCBwcm90ZWN0ZWRBc3NldCA9
IFdURk1vdmUocHJvdGVjdGVkQXNzZXQpXSB7Ci0gICAgICAgIGlmIChwYXJlbnQpCi0gICAgICAg
ICAgICBwYXJlbnQtPmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQocHJvdGVjdGVkQXNzZXQuZ2V0
KCkpOwotICAgIH0pOwotfQotCi0tICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0
YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVy
cm9yOihOU0Vycm9yICopZXJyb3IKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJz
ZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7Ci0KLSAgICBSZXRhaW5QdHI8TlNFcnJv
cj4gcHJvdGVjdGVkRXJyb3IgPSBlcnJvcjsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwYXJlbnQg
PSBfcGFyZW50LCBwcm90ZWN0ZWRFcnJvciA9IFdURk1vdmUocHJvdGVjdGVkRXJyb3IpXSB7Ci0g
ICAgICAgIGlmIChwYXJlbnQpCi0gICAgICAgICAgICBwYXJlbnQtPmRpZEZhaWxUb1BhcnNlU3Ry
ZWFtRGF0YVdpdGhFcnJvcihwcm90ZWN0ZWRFcnJvci5nZXQoKSk7Ci0gICAgfSk7Ci19Ci0KLS0g
KHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBh
cnNlciBkaWRQcm92aWRlTWVkaWFEYXRhOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGUgZm9yVHJh
Y2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lEIG1lZGlhVHlwZTooTlNTdHJpbmcgKilu
c01lZGlhVHlwZSBmbGFnczooQVZTdHJlYW1EYXRhUGFyc2VyT3V0cHV0TWVkaWFEYXRhRmxhZ3Mp
ZmxhZ3MKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQ
YXJzZXIgPT0gX3BhcnNlcik7Ci0KLSAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHBy
b3RlY3RlZFNhbXBsZSA9IHNhbXBsZTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwYXJlbnQgPSBf
cGFyZW50LCBwcm90ZWN0ZWRTYW1wbGUgPSBXVEZNb3ZlKHByb3RlY3RlZFNhbXBsZSksIHRyYWNr
SUQsIG1lZGlhVHlwZSA9IFN0cmluZyhuc01lZGlhVHlwZSksIGZsYWdzXSB7Ci0gICAgICAgIGlm
IChwYXJlbnQpCi0gICAgICAgICAgICBwYXJlbnQtPmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFj
a0lEKHRyYWNrSUQsIHByb3RlY3RlZFNhbXBsZS5nZXQoKSwgbWVkaWFUeXBlLCBmbGFncyk7Ci0g
ICAgfSk7Ci19Ci0KLS0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2Vy
ICopc3RyZWFtRGF0YVBhcnNlciBkaWRSZWFjaEVuZE9mVHJhY2tXaXRoVHJhY2tJRDooQ01QZXJz
aXN0ZW50VHJhY2tJRCl0cmFja0lEIG1lZGlhVHlwZTooTlNTdHJpbmcgKiluc01lZGlhVHlwZQot
ewotICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9
PSBfcGFyc2VyKTsKLQotICAgIGNhbGxPbk1haW5UaHJlYWQoW3BhcmVudCA9IF9wYXJlbnQsIHRy
YWNrSUQsIG1lZGlhVHlwZSA9IFN0cmluZyhuc01lZGlhVHlwZSldIHsKLSAgICAgICAgaWYgKHBh
cmVudCkKLSAgICAgICAgICAgIHBhcmVudC0+ZGlkUmVhY2hFbmRPZlRyYWNrV2l0aFRyYWNrSUQo
dHJhY2tJRCwgbWVkaWFUeXBlKTsKLSAgICB9KTsKLX0KLQotQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfQkVHSU4KLS0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcldpbGxQcm92aWRlQ29u
dGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGE6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0
cmVhbURhdGFQYXJzZXIgZm9yVHJhY2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lECi1B
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKLXsKLSAgICBBU1NFUlRfVU5VU0VE
KHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7Ci0KLSAgICAv
LyBXZSBtdXN0IGNhbGwgc3luY2hyb25vdXNseSB0byB0aGUgbWFpbiB0aHJlYWQsIGFzIHRoZSBB
VlN0cmVhbVNlc3Npb24gbXVzdCBiZSBhc3NvY2lhdGVkCi0gICAgLy8gd2l0aCB0aGUgc3RyZWFt
RGF0YVBhcnNlciBiZWZvcmUgdGhlIGRlbGVnYXRlIG1ldGhvZCByZXR1cm5zLgotICAgIEJveDxC
aW5hcnlTZW1hcGhvcmU+IHJlc3BvbmRlZFNlbWFwaG9yZSA9IEJveDxCaW5hcnlTZW1hcGhvcmU+
OjpjcmVhdGUoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwYXJlbnQgPSBfcGFyZW50LCB0cmFj
a0lELCByZXNwb25kZWRTZW1hcGhvcmVdKCkgewotICAgICAgICBpZiAocGFyZW50KQotICAgICAg
ICAgICAgcGFyZW50LT53aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25E
YXRhRm9yVHJhY2tJRCh0cmFja0lEKTsKLSAgICAgICAgcmVzcG9uZGVkU2VtYXBob3JlLT5zaWdu
YWwoKTsKLSAgICB9KTsKLQotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGlmIChyZXNwb25k
ZWRTZW1hcGhvcmUtPndhaXRGb3IoMTAwX21zKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBpZiAoX2Fib3J0U2VtYXBob3JlLT53YWl0Rm9yKDEwMF9tcykpIHsKLSAgICAgICAgICAg
IF9hYm9ydFNlbWFwaG9yZS0+c2lnbmFsKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLUFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCi0t
ICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQ
YXJzZXIgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOihOU0Rh
dGEgKilpbml0RGF0YSBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQKLUFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAotewotICAgIEFTU0VSVF9VTlVTRUQo
c3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLQotICAgIEJv
eDxCaW5hcnlTZW1hcGhvcmU+IGhhc1Nlc3Npb25TZW1hcGhvcmUgPSBCb3g8QmluYXJ5U2VtYXBo
b3JlPjo6Y3JlYXRlKCk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcGFyZW50ID0gX3BhcmVudCwg
cHJvdGVjdGVkSW5pdERhdGEgPSBSZXRhaW5QdHI8TlNEYXRhPihpbml0RGF0YSksIHRyYWNrSUQs
IGhhc1Nlc3Npb25TZW1hcGhvcmVdIHsKLSAgICAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAg
IHBhcmVudC0+ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9y
VHJhY2tJRChwcm90ZWN0ZWRJbml0RGF0YS5nZXQoKSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNlbWFw
aG9yZSk7Ci0gICAgfSk7Ci0KLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBpZiAoaGFzU2Vz
c2lvblNlbWFwaG9yZS0+d2FpdEZvcigxMDBfbXMpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIGlmIChfYWJvcnRTZW1hcGhvcmUtPndhaXRGb3IoMTAwX21zKSkgewotICAgICAgICAg
ICAgX2Fib3J0U2VtYXBob3JlLT5zaWduYWwoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotICAgIH0KLX0KLUBlbmQKLQogQGludGVyZmFjZSBXZWJBVlNhbXBsZUJ1ZmZlckVycm9y
TGlzdGVuZXIgOiBOU09iamVjdCB7CiAgICAgV2Vha1B0cjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQz4gX3BhcmVudDsKICAgICBWZWN0b3I8UmV0YWluUHRyPEFWU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyPj4gX2xheWVyczsKQEAgLTM5MSw0MyArMjQ1LDYgQEAgQGVuZAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIFBBTDsKIAotI3ByYWdtYSBtYXJrIC0K
LSNwcmFnbWEgbWFyayBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQwotCi1jbGFzcyBNZWRpYURlc2Ny
aXB0aW9uQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBNZWRpYURlc2NyaXB0aW9uIHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRy
YWNrKiB0cmFjaykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYURlc2NyaXB0aW9uQVZGT2Jq
Qyh0cmFjaykpOyB9Ci0gICAgdmlydHVhbCB+TWVkaWFEZXNjcmlwdGlvbkFWRk9iakMoKSB7IH0K
LQotICAgIEF0b21TdHJpbmcgY29kZWMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvZGVj
OyB9Ci0gICAgYm9vbCBpc1ZpZGVvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1ZpZGVv
OyB9Ci0gICAgYm9vbCBpc0F1ZGlvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0F1ZGlv
OyB9Ci0gICAgYm9vbCBpc1RleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzVGV4dDsg
fQotICAgIAotcHJpdmF0ZToKLSAgICBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyhBVkFzc2V0VHJh
Y2sqIHRyYWNrKQotICAgICAgICA6IG1faXNWaWRlbyhbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJp
c3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWxdKQotICAgICAgICAsIG1faXNBdWRpbyhb
dHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNBdWRpYmxl
XSkKLSAgICAgICAgLCBtX2lzVGV4dChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1l
ZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlXSkKLSAgICB7Ci0gICAgICAgIE5TQXJyYXkqIGZvcm1h
dERlc2NyaXB0aW9ucyA9IFt0cmFjayBmb3JtYXREZXNjcmlwdGlvbnNdOwotICAgICAgICBDTUZv
cm1hdERlc2NyaXB0aW9uUmVmIGRlc2NyaXB0aW9uID0gW2Zvcm1hdERlc2NyaXB0aW9ucyBjb3Vu
dF0gPyAoX19icmlkZ2UgQ01Gb3JtYXREZXNjcmlwdGlvblJlZilbZm9ybWF0RGVzY3JpcHRpb25z
IG9iamVjdEF0SW5kZXg6MF0gOiAwOwotICAgICAgICBpZiAoZGVzY3JpcHRpb24pIHsKLSAgICAg
ICAgICAgIEZvdXJDaGFyQ29kZSBjb2RlYyA9IENNRm9ybWF0RGVzY3JpcHRpb25HZXRNZWRpYVN1
YlR5cGUoZGVzY3JpcHRpb24pOwotICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgb3JpZ2luYWxGb3Jt
YXRLZXkgPSBQQUw6OmNhbkxvYWRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5z
aW9uX1Byb3RlY3RlZENvbnRlbnRPcmlnaW5hbEZvcm1hdCgpID8gUEFMOjpnZXRfQ29yZU1lZGlh
X2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1Byb3RlY3RlZENvbnRlbnRPcmlnaW5hbEZv
cm1hdCgpIDogQ0ZTVFIoIkNvbW1vbkVuY3J5cHRpb25PcmlnaW5hbEZvcm1hdCIpOwotICAgICAg
ICAgICAgQ0ZUeXBlUmVmIG9yaWdpbmFsRm9ybWF0ID0gQ01Gb3JtYXREZXNjcmlwdGlvbkdldEV4
dGVuc2lvbihkZXNjcmlwdGlvbiwgb3JpZ2luYWxGb3JtYXRLZXkpOwotICAgICAgICAgICAgaWYg
KG9yaWdpbmFsRm9ybWF0ICYmIENGR2V0VHlwZUlEKG9yaWdpbmFsRm9ybWF0KSA9PSBDRk51bWJl
ckdldFR5cGVJRCgpKQotICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUoKENGTnVtYmVy
UmVmKW9yaWdpbmFsRm9ybWF0LCBrQ0ZOdW1iZXJTSW50MzJUeXBlLCAmY29kZWMpOwotICAgICAg
ICAgICAgbV9jb2RlYyA9IEF0b21TdHJpbmcocmVpbnRlcnByZXRfY2FzdDxMQ2hhcio+KCZjb2Rl
YyksIDQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQXRvbVN0cmluZyBtX2NvZGVjOwotICAg
IGJvb2wgbV9pc1ZpZGVvOwotICAgIGJvb2wgbV9pc0F1ZGlvOwotICAgIGJvb2wgbV9pc1RleHQ7
Ci19OwotCiAjcHJhZ21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDCiAKQEAgLTQ2NSwxNCArMjgyLDEzIEBAIHN0YXRpYyB2b2lkIGJ1ZmZlcldhc0NvbnN1
bWVkQ2FsbGJhY2soQ01Ob3RpZmljYXRpb25DZW50ZXJSZWYsIGNvbnN0IHZvaWQqIGxpc3RlCiAg
ICAgICAgIHNvdXJjZUJ1ZmZlci0+YnVmZmVyV2FzQ29uc3VtZWQoKTsKIH0KIAotUmVmPFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y3JlYXRl
KE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKK1JlZjxTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQz4gU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZShNZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDKiBwYXJlbnQsIFJlZjxTb3VyY2VCdWZmZXJQYXJzZXI+JiYgcGFyc2Vy
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
KHBhcmVudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDKHBhcmVudCwgV1RGTW92ZShwYXJzZXIpKSk7CiB9CiAKLVNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDKiBwYXJlbnQpCi0gICAgOiBtX3BhcnNlcihhZG9wdE5TKFtQQUw6OmFsbG9jQVZTdHJl
YW1EYXRhUGFyc2VySW5zdGFuY2UoKSBpbml0XSkpCi0gICAgLCBtX2RlbGVnYXRlKGFkb3B0TlMo
W1tXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJzZXI6bV9w
YXJzZXIuZ2V0KCkgcGFyZW50Om1ha2VXZWFrUHRyKCp0aGlzKV0pKQorU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakMqIHBhcmVudCwgUmVmPFNvdXJjZUJ1ZmZlclBhcnNlcj4mJiBwYXJzZXIpCisgICAg
OiBtX3BhcnNlcihXVEZNb3ZlKHBhcnNlcikpCiAgICAgLCBtX2Vycm9yTGlzdGVuZXIoYWRvcHRO
UyhbW1dlYkFWU2FtcGxlQnVmZmVyRXJyb3JMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6
bWFrZVdlYWtQdHIoKnRoaXMpXSkpCiAgICAgLCBtX2lzQXBwZW5kaW5nR3JvdXAoYWRvcHRPU09i
amVjdChkaXNwYXRjaF9ncm91cF9jcmVhdGUoKSkpCiAgICAgLCBtX21lZGlhU291cmNlKHBhcmVu
dCkKQEAgLTQ4NiwxMCArMzAyLDI2IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDCiAKICAgICBp
ZiAoIVtQQUw6OmdldEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQ2xhc3MoKSBpbnN0YW5jZXNS
ZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3IocHJlcm9sbERlY29kZVdpdGhDb21wbGV0aW9uSGFu
ZGxlcjopXSkKICAgICAgICAgQ01Ob3RpZmljYXRpb25DZW50ZXJBZGRMaXN0ZW5lcihDTU5vdGlm
aWNhdGlvbkNlbnRlckdldERlZmF1bHRMb2NhbENlbnRlcigpLCByZWludGVycHJldF9jYXN0PHZv
aWQqPihtX21hcElEKSwgYnVmZmVyV2FzQ29uc3VtZWRDYWxsYmFjaywga0NNU2FtcGxlQnVmZmVy
Q29uc3VtZXJOb3RpZmljYXRpb25fQnVmZmVyQ29uc3VtZWQsIG51bGxwdHIsIDApOwotICAgIAot
ICAgIG1fZGVsZWdhdGUuZ2V0KCkuYWJvcnRTZW1hcGhvcmUgPSBCb3g8U2VtYXBob3JlPjo6Y3Jl
YXRlKDApOwogCiAgICAgc291cmNlQnVmZmVyTWFwKCkuYWRkKG1fbWFwSUQsIG1ha2VXZWFrUHRy
KCp0aGlzKSk7CisKKyAgICBtX3BhcnNlci0+c2V0RGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFD
YWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKEluaXRpYWxpemF0aW9uU2Vn
bWVudCYmIHNlZ21lbnQpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICB3ZWFrVGhpcy0+ZGlkUGFyc2VJ
bml0aWFsaXphdGlvbkRhdGEoV1RGTW92ZShzZWdtZW50KSk7CisgICAgfSk7CisKKyAgICBtX3Bh
cnNlci0+c2V0RGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2soW3dlYWtUaGlz
ID0gbWFrZVdlYWtQdHIodGhpcyldIChpbnQzMl90IGVycm9yQ29kZSkgbXV0YWJsZSB7CisgICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAg
ICAgICAgIHdlYWtUaGlzLT5kaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmcoZXJyb3JDb2Rl
KTsKKyAgICB9KTsKKworICAgIG1fcGFyc2VyLT5zZXREaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJh
Y2soW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChSZWY8TWVkaWFTYW1wbGU+JiYgc2Ft
cGxlLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkgbXV0YWJsZSB7
CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIGlmICh3ZWFrVGhpcykK
KyAgICAgICAgICAgIHdlYWtUaGlzLT5kaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChXVEZN
b3ZlKHNhbXBsZSksIHRyYWNrSUQsIG1lZGlhVHlwZSk7CisgICAgfSk7CiB9CiAKIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjp+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoKQpAQCAtNTAw
LDYgKzMzMiw3IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp+U291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMoKQogICAgIHNvdXJjZUJ1ZmZlck1hcCgpLnJlbW92ZShtX21hcElEKTsKICAg
ICBkZXN0cm95UGFyc2VyKCk7CiAgICAgZGVzdHJveVJlbmRlcmVycygpOworICAgIGNsZWFyVHJh
Y2tzKCk7CiAKICAgICBpZiAoIVtQQUw6OmdldEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQ2xh
c3MoKSBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3IocHJlcm9sbERlY29kZVdp
dGhDb21wbGV0aW9uSGFuZGxlcjopXSkKICAgICAgICAgQ01Ob3RpZmljYXRpb25DZW50ZXJSZW1v
dmVMaXN0ZW5lcihDTU5vdGlmaWNhdGlvbkNlbnRlckdldERlZmF1bHRMb2NhbENlbnRlcigpLCB0
aGlzLCBidWZmZXJXYXNDb25zdW1lZENhbGxiYWNrLCBrQ01TYW1wbGVCdWZmZXJDb25zdW1lck5v
dGlmaWNhdGlvbl9CdWZmZXJDb25zdW1lZCwgbnVsbHB0cik7CkBAIC01MDgsNyArMzQxLDcgQEAg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6On5Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQygp
CiAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFsKCk7CiB9CiAKLXZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3Nl
dCogYXNzZXQpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRp
YWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbnQmJiBzZWdtZW50KQogewogICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUik7CiAKQEAgLTUxNiw1MiArMzQ5LDMzIEBAIHZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3Nl
dCogYXNzZXQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX21lZGlhU291cmNlLT5wbGF5
ZXIoKS0+c2hvdWxkQ2hlY2tIYXJkd2FyZVN1cHBvcnQoKSkgewotICAgICAgICBmb3IgKEFWQXNz
ZXRUcmFjayAqdHJhY2sgaW4gW2Fzc2V0IHRyYWNrc10pIHsKLSAgICAgICAgICAgIGlmICghYXNz
ZXRUcmFja01lZXRzSGFyZHdhcmVEZWNvZGVSZXF1aXJlbWVudHModHJhY2ssIG1fbWVkaWFTb3Vy
Y2UtPnBsYXllcigpLT5tZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgp
KSkgeworICAgICAgICBmb3IgKGF1dG8mIGluZm8gOiBzZWdtZW50LnZpZGVvVHJhY2tzKSB7Cisg
ICAgICAgICAgICBhdXRvIGNvZGVjID0gRm91ckNDOjpmcm9tU3RyaW5nKGluZm8uZGVzY3JpcHRp
b24tPmNvZGVjKCkpOworICAgICAgICAgICAgaWYgKCFjb2RlYykKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIGlmICghY29kZWNzTWVldEhhcmR3YXJlRGVjb2RlUmVxdWly
ZW1lbnRzKHt7ICpjb2RlYyB9fSwgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPm1lZGlhQ29udGVu
dFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KCkpKSB7CiAgICAgICAgICAgICAgICAgbV9w
YXJzaW5nU3VjY2VlZGVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9hc3NldCA9IGFzc2V0OwotCi0gICAg
bV92aWRlb1RyYWNrcy5jbGVhcigpOwotICAgIG1fYXVkaW9UcmFja3MuY2xlYXIoKTsKLQotICAg
IG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlvblNlZ21lbnQgPSBmYWxzZTsK
LQotICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudCBz
ZWdtZW50OwotCi0gICAgaWYgKFttX2Fzc2V0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
b3ZlcmFsbER1cmF0aW9uSGludCldKQotICAgICAgICBzZWdtZW50LmR1cmF0aW9uID0gUEFMOjp0
b01lZGlhVGltZShbbV9hc3NldCBvdmVyYWxsRHVyYXRpb25IaW50XSk7Ci0KLSAgICBpZiAoc2Vn
bWVudC5kdXJhdGlvbi5pc0ludmFsaWQoKSB8fCBzZWdtZW50LmR1cmF0aW9uID09IE1lZGlhVGlt
ZTo6emVyb1RpbWUoKSkKLSAgICAgICAgc2VnbWVudC5kdXJhdGlvbiA9IFBBTDo6dG9NZWRpYVRp
bWUoW21fYXNzZXQgZHVyYXRpb25dKTsKLQotICAgIGZvciAoQVZBc3NldFRyYWNrKiB0cmFjayBp
biBbbV9hc3NldCB0cmFja3NdKSB7Ci0gICAgICAgIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0
ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlXSkgewotICAgICAgICAgICAgLy8g
RklYTUUoMTI1MTYxKTogSGFuZGxlIGluLWJhbmQgdGV4dCB0cmFja3MuCi0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgfQorICAgIGNsZWFyVHJhY2tzKCk7CiAKLSAgICAgICAgaWYgKFt0
cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbF0p
IHsKLSAgICAgICAgICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9u
U2VnbWVudDo6VmlkZW9UcmFja0luZm9ybWF0aW9uIGluZm87Ci0gICAgICAgICAgICBhdXRvIHZp
ZGVvVHJhY2sgPSBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRy
YWNrLCB0aGlzKTsKLSAgICAgICAgICAgIGluZm8udHJhY2sgPSB2aWRlb1RyYWNrLmNvcHlSZWYo
KTsKLSAgICAgICAgICAgIG1fdmlkZW9UcmFja3MuYXBwZW5kKFdURk1vdmUodmlkZW9UcmFjaykp
OwotICAgICAgICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpD
OjpjcmVhdGUodHJhY2spOwotICAgICAgICAgICAgc2VnbWVudC52aWRlb1RyYWNrcy5hcHBlbmQo
aW5mbyk7Ci0gICAgICAgIH0gZWxzZSBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6
QVZNZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJsZV0pIHsKLSAgICAgICAgICAgIFNvdXJjZUJ1ZmZl
clByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDo6QXVkaW9UcmFja0luZm9ybWF0
aW9uIGluZm87Ci0gICAgICAgICAgICBhdXRvIGF1ZGlvVHJhY2sgPSBBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNrLCB0aGlzKTsKLSAgICAgICAgICAgIGlu
Zm8udHJhY2sgPSBhdWRpb1RyYWNrLmNvcHlSZWYoKTsKLSAgICAgICAgICAgIG1fYXVkaW9UcmFj
a3MuYXBwZW5kKFdURk1vdmUoYXVkaW9UcmFjaykpOwotICAgICAgICAgICAgaW5mby5kZXNjcmlw
dGlvbiA9IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDOjpjcmVhdGUodHJhY2spOwotICAgICAgICAg
ICAgc2VnbWVudC5hdWRpb1RyYWNrcy5hcHBlbmQoaW5mbyk7Ci0gICAgICAgIH0KKyAgICBmb3Ig
KGF1dG8gdmlkZW9UcmFja0luZm8gOiBzZWdtZW50LnZpZGVvVHJhY2tzKSB7CisgICAgICAgIHZp
ZGVvVHJhY2tJbmZvLnRyYWNrLT5zZXRTZWxlY3RlZENoYW5nZWRDYWxsYmFjayhbd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cih0aGlzKV0gKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjaywgYm9vbCBzZWxl
Y3RlZCkgeworICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtU
aGlzLT50cmFja0RpZENoYW5nZVNlbGVjdGVkKHRyYWNrLCBzZWxlY3RlZCk7CisgICAgICAgIH0p
OworICAgICAgICBtX3ZpZGVvVHJhY2tzLmFwcGVuZCh2aWRlb1RyYWNrSW5mby50cmFjayk7Cisg
ICAgfQogCi0gICAgICAgIC8vIEZJWE1FKDEyNTE2MSk6IEFkZCBUZXh0VHJhY2sgc3VwcG9ydAor
ICAgIGZvciAoYXV0byBhdWRpb1RyYWNrSW5mbyA6IHNlZ21lbnQuYXVkaW9UcmFja3MpIHsKKyAg
ICAgICAgYXVkaW9UcmFja0luZm8udHJhY2stPnNldEVuYWJsZWRDaGFuZ2VkQ2FsbGJhY2soW3dl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChBdWRpb1RyYWNrUHJpdmF0ZSYgdHJhY2ssIGJv
b2wgZW5hYmxlZCkgeworICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAg
IHdlYWtUaGlzLT50cmFja0RpZENoYW5nZUVuYWJsZWQodHJhY2ssIGVuYWJsZWQpOworICAgICAg
ICB9KTsKKyAgICAgICAgbV9hdWRpb1RyYWNrcy5hcHBlbmQoYXVkaW9UcmFja0luZm8udHJhY2sp
OwogICAgIH0KIAogICAgIGlmIChtX21lZGlhU291cmNlKQpAQCAtNTcxLDYxICszODUsMjkgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3Nl
dChBVkFzc2V0KiBhc3NldCkKICAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVE
aWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KHNlZ21lbnQpOwogfQogCi12b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRGYWlsVG9QYXJzZVN0cmVhbURhdGFXaXRoRXJyb3Io
TlNFcnJvciAqZXJyb3IpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRFbmNv
dW50ZXJFcnJvckR1cmluZ1BhcnNpbmcoaW50MzJfdCBjb2RlKQogewogI2lmIExPR19ESVNBQkxF
RAogICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAjZW5kaWYKLSAgICBFUlJPUl9MT0coTE9HSURF
TlRJRklFUiwgW1tlcnJvciBkZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10pOworICAgIEVSUk9SX0xP
RyhMT0dJREVOVElGSUVSLCBjb2RlKTsKIAogICAgIG1fcGFyc2luZ1N1Y2NlZWRlZCA9IGZhbHNl
OwogfQogCi1zdHJ1Y3QgUHJvY2Vzc0NvZGVkRnJhbWVJbmZvIHsKLSAgICBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQyogc291cmNlQnVmZmVyOwotICAgIGludCB0cmFja0lEOwotICAgIGNvbnN0
IFN0cmluZyYgbWVkaWFUeXBlOwotfTsKLQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoaW50IHRyYWNrSUQsIENNU2FtcGxlQnVm
ZmVyUmVmIHNhbXBsZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkKQor
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRy
YWNrSUQoUmVmPE1lZGlhU2FtcGxlPiYmIG1lZGlhU2FtcGxlLCBpbnQzMl90IHRyYWNrSUQsIGNv
bnN0IFN0cmluZyYgbWVkaWFUeXBlKQogewotICAgIHByb2Nlc3NDb2RlZEZyYW1lKHRyYWNrSUQs
IHNhbXBsZUJ1ZmZlciwgbWVkaWFUeXBlKTsKLX0KKyAgICBVTlVTRURfUEFSQU0obWVkaWFUeXBl
KTsKIAotYm9vbCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6cHJvY2Vzc0NvZGVkRnJhbWUo
aW50IHRyYWNrSUQsIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgY29uc3QgU3RyaW5n
JikKLXsKICAgICBpZiAodHJhY2tJRCAhPSBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgJiYgIW1fYXVk
aW9SZW5kZXJlcnMuY29udGFpbnModHJhY2tJRCkpIHsKICAgICAgICAgLy8gRklYTUUoMTI1MTYx
KTogV2UgZG9uJ3QgaGFuZGxlIHRleHQgdHJhY2tzLCBhbmQgcGFzc2luZyB0aGlzIHNhbXBsZSB1
cCB0byBTb3VyY2VCdWZmZXIKICAgICAgICAgLy8gd2lsbCBqdXN0IGNvbmZ1c2UgaXRzIHN0YXRl
LiBEcm9wIHRoaXMgc2FtcGxlIHVudGlsIHdlIGNhbiBoYW5kbGUgdGV4dCB0cmFja3MgcHJvcGVy
bHkuCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGlmIChtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50KQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIW1fY2xpZW50KQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIGF1dG8gbWVkaWFTYW1wbGUgPSBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0
ZShzYW1wbGVCdWZmZXIsIHRyYWNrSUQpOwotCi0gICAgaWYgKG1lZGlhU2FtcGxlLT5pc0hvbW9n
ZW5lb3VzKCkpIHsKLSAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsIG1lZGlhU2FtcGxl
LT50b0pTT05TdHJpbmcoKSk7CisgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsIG1lZGlhU2Ft
cGxlLT50b0pTT05TdHJpbmcoKSk7CisgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVu
dC0+c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUobWVkaWFTYW1wbGUpOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBhdXRvIG1lZGlhU2FtcGxlcyA9IG1lZGlh
U2FtcGxlLT5kaXZpZGVJbnRvSG9tb2dlbmVvdXNTYW1wbGVzKCk7Ci0gICAgZm9yIChhdXRvJiBz
YW1wbGUgOiBtZWRpYVNhbXBsZXMpIHsKLSAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIs
IHNhbXBsZS0+dG9KU09OU3RyaW5nKCkpOwotICAgICAgICBtX2NsaWVudC0+c291cmNlQnVmZmVy
UHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUoc2FtcGxlKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUmVhY2hFbmRPZlRy
YWNrV2l0aFRyYWNrSUQoaW50LCBjb25zdCBTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OndpbGxQcm92aWRlQ29u
dGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKGludCB0cmFja0lEKQpA
QCAtNjMzLDE4ICs0MTUsMjAgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6d2ls
bFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUYKICAgICBpZiAoIW1f
bWVkaWFTb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX3BhcnNlcik7Ci0K
ICNpZiBIQVZFKEFWU1RSRUFNU0VTU0lPTikgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVE
SUEpCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAidHJhY2sgPSAiLCB0cmFja0lEKTsK
IAogICAgIG1fcHJvdGVjdGVkVHJhY2tJRCA9IHRyYWNrSUQ7CiAKKyAgICBhdXRvIHBhcnNlciA9
IHRoaXMtPnBhcnNlcigpOworICAgIGlmICghcGFyc2VyKQorICAgICAgICByZXR1cm47CisKICAg
ICBpZiAoQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyogc2Vzc2lvbiA9IG1fbWVkaWFTb3Vy
Y2UtPnBsYXllcigpLT5jZG1TZXNzaW9uKCkpCi0gICAgICAgIHNlc3Npb24tPmFkZFBhcnNlciht
X3BhcnNlci5nZXQoKSk7CisgICAgICAgIHNlc3Npb24tPmFkZFBhcnNlcihwYXJzZXIpOwogICAg
IGVsc2UgaWYgKCFDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6aXNBdmFpbGFibGUoKSkg
ewogICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgW21fbWVkaWFT
b3VyY2UtPnBsYXllcigpLT5zdHJlYW1TZXNzaW9uKCkgYWRkU3RyZWFtRGF0YVBhcnNlcjptX3Bh
cnNlci5nZXQoKV07CisgICAgICAgIFttX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c3RyZWFtU2Vz
c2lvbigpIGFkZFN0cmVhbURhdGFQYXJzZXI6cGFyc2VyXTsKICAgICAgICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwogICAgIH0KICNlbHNlCkBAIC02NTIsNyArNDM2LDcgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRp
YWxpemF0aW9uRGF0YUYKICNlbmRpZgogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFj
a0lEKE5TRGF0YSogaW5pdERhdGEsIGludCB0cmFja0lELCBCb3g8QmluYXJ5U2VtYXBob3JlPiBo
YXNTZXNzaW9uU2VtYXBob3JlKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlk
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChSZWY8
VWludDhBcnJheT4mJiBpbml0RGF0YSwgaW50IHRyYWNrSUQsIEJveDxCaW5hcnlTZW1hcGhvcmU+
IGhhc1Nlc3Npb25TZW1hcGhvcmUpCiB7CiAgICAgaWYgKCFtX21lZGlhU291cmNlKQogICAgICAg
ICByZXR1cm47CkBAIC02NjEsMTEgKzQ0NSwxMSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGbwog
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInRyYWNrID0gIiwgdHJhY2tJRCk7CiAKICAg
ICBtX3Byb3RlY3RlZFRyYWNrSUQgPSB0cmFja0lEOwotICAgIG1faW5pdERhdGEgPSBVaW50OEFy
cmF5OjpjcmVhdGUoW2luaXREYXRhIGxlbmd0aF0pOwotICAgIFtpbml0RGF0YSBnZXRCeXRlczpt
X2luaXREYXRhLT5kYXRhKCkgbGVuZ3RoOm1faW5pdERhdGEtPmxlbmd0aCgpXTsKKyAgICBtX2lu
aXREYXRhID0gV1RGTW92ZShpbml0RGF0YSk7CiAgICAgbV9tZWRpYVNvdXJjZS0+c291cmNlQnVm
ZmVyS2V5TmVlZGVkKHRoaXMsIG1faW5pdERhdGEuZ2V0KCkpOwogICAgIGlmIChhdXRvIHNlc3Np
b24gPSBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+Y2RtU2Vzc2lvbigpKSB7Ci0gICAgICAgIHNl
c3Npb24tPmFkZFBhcnNlcihtX3BhcnNlci5nZXQoKSk7CisgICAgICAgIGlmIChhdXRvIHBhcnNl
ciA9IHRoaXMtPnBhcnNlcigpKQorICAgICAgICAgICAgc2Vzc2lvbi0+YWRkUGFyc2VyKHBhcnNl
cik7CiAgICAgICAgIGhhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtNjc2LDE0ICs0NjAsMTUgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8K
ICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUgPSBoYXNTZXNzaW9uU2VtYXBob3JlOwogICAgIAog
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikK
LSAgICBhdXRvIGluaXREYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW5pdERhdGEp
OworICAgIGF1dG8gaW5pdERhdGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0
YS0+ZGF0YSgpLCBpbml0RGF0YS0+Ynl0ZUxlbmd0aCgpKTsKICAgICBhdXRvIGtleUlEcyA9IENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoaW5pdERhdGFCdWZm
ZXIpOwogICAgIGlmICgha2V5SURzKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9jZG1J
bnN0YW5jZSkgewogICAgICAgICBpZiAoYXV0byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUluc3Rh
bmNlLT5zZXNzaW9uRm9yS2V5SURzKGtleUlEcy52YWx1ZSgpKSkgewotICAgICAgICAgICAgW2lu
c3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50
Om1fcGFyc2VyLmdldCgpXTsKKyAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlciA9IHRoaXMtPnBh
cnNlcigpKQorICAgICAgICAgICAgICAgIFtpbnN0YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNz
aW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVudDpwYXJzZXJdOwogICAgICAgICAgICAgaWYgKG1f
aGFzU2Vzc2lvblNlbWFwaG9yZSkgewogICAgICAgICAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFw
aG9yZS0+c2lnbmFsKCk7CiAgICAgICAgICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlID0g
bnVsbHB0cjsKQEAgLTcyNCwxNiArNTA5LDU0IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQogewogICAgIERFQlVH
X0xPRyhMT0dJREVOVElGSUVSLCAiZGF0YSBsZW5ndGggPSAiLCBkYXRhLnNpemUoKSk7CiAKKyAg
ICBBU1NFUlQoIW1faGFzU2Vzc2lvblNlbWFwaG9yZSk7CisgICAgQVNTRVJUKCFtX2Fib3J0U2Vt
YXBob3JlKTsKKworICAgIG1fYWJvcnRTZW1hcGhvcmUgPSBCb3g8U2VtYXBob3JlPjo6Y3JlYXRl
KDApOworICAgIG1fcGFyc2VyLT5zZXRXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlh
bGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpLCBhYm9ydFNlbWFwaG9yZSA9IG1fYWJvcnRTZW1hcGhvcmVdICh1aW50MzJfdCB0cmFja0lE
KSBtdXRhYmxlIHsKKyAgICAgICAgLy8gV2UgbXVzdCBjYWxsIHN5bmNocm9ub3VzbHkgdG8gdGhl
IG1haW4gdGhyZWFkLCBhcyB0aGUgQVZTdHJlYW1TZXNzaW9uIG11c3QgYmUgYXNzb2NpYXRlZAor
ICAgICAgICAvLyB3aXRoIHRoZSBzdHJlYW1EYXRhUGFyc2VyIGJlZm9yZSB0aGUgZGVsZWdhdGUg
bWV0aG9kIHJldHVybnMuCisgICAgICAgIEJveDxCaW5hcnlTZW1hcGhvcmU+IHJlc3BvbmRlZFNl
bWFwaG9yZSA9IEJveDxCaW5hcnlTZW1hcGhvcmU+OjpjcmVhdGUoKTsKKyAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgdHJhY2tJRCwgcmVzcG9u
ZGVkU2VtYXBob3JlXSgpIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAg
ICAgICB3ZWFrVGhpcy0+d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9u
RGF0YUZvclRyYWNrSUQodHJhY2tJRCk7CisgICAgICAgICAgICByZXNwb25kZWRTZW1hcGhvcmUt
PnNpZ25hbCgpOworICAgICAgICB9KTsKKworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAg
ICAgICAgaWYgKHJlc3BvbmRlZFNlbWFwaG9yZS0+d2FpdEZvcigxMDBfbXMpKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYgKGFib3J0U2VtYXBob3JlLT53YWl0Rm9y
KDEwMF9tcykpIHsKKyAgICAgICAgICAgICAgICBhYm9ydFNlbWFwaG9yZS0+c2lnbmFsKCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSk7
CisKKyAgICBtX3BhcnNlci0+c2V0RGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6
YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMp
LCBhYm9ydFNlbWFwaG9yZSA9IG1fYWJvcnRTZW1hcGhvcmVdIChSZWY8VWludDhBcnJheT4mJiBp
bml0RGF0YSwgaW50MzJfdCB0cmFja0lEKSBtdXRhYmxlIHsKKyAgICAgICAgQm94PEJpbmFyeVNl
bWFwaG9yZT4gaGFzU2Vzc2lvblNlbWFwaG9yZSA9IEJveDxCaW5hcnlTZW1hcGhvcmU+OjpjcmVh
dGUoKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtU
aGlzKSwgaW5pdERhdGEgPSBXVEZNb3ZlKGluaXREYXRhKSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNl
bWFwaG9yZV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAg
ICAgICAgICAgd2Vha1RoaXMtPmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YUZvclRyYWNrSUQoV1RGTW92ZShpbml0RGF0YSksIHRyYWNrSUQsIGhhc1Nlc3Npb25T
ZW1hcGhvcmUpOworICAgICAgICB9KTsKKworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAg
ICAgICAgaWYgKGhhc1Nlc3Npb25TZW1hcGhvcmUtPndhaXRGb3IoMTAwX21zKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlmIChhYm9ydFNlbWFwaG9yZS0+d2FpdEZv
cigxMDBfbXMpKSB7CisgICAgICAgICAgICAgICAgYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0p
OworCiAgICAgbV9wYXJzaW5nU3VjY2VlZGVkID0gdHJ1ZTsKICAgICBkaXNwYXRjaF9ncm91cF9l
bnRlcihtX2lzQXBwZW5kaW5nR3JvdXAuZ2V0KCkpOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMoZ2xv
YmFsRGF0YVBhcnNlclF1ZXVlKCksIFtkYXRhID0gV1RGTW92ZShkYXRhKSwgd2Vha1RoaXMgPSBt
X2FwcGVuZFdlYWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKnRoaXMpLCBwYXJzZXIgPSBtX3BhcnNl
ciwgZGVsZWdhdGUgPSBtX2RlbGVnYXRlLCBpc0FwcGVuZGluZ0dyb3VwID0gbV9pc0FwcGVuZGlu
Z0dyb3VwLCBwYXJzZXJTdGF0ZVdhc1Jlc2V0ID0gbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0XSAoKSBt
dXRhYmxlIHsKLSAgICAgICAgYXV0byBzaGFyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShkYXRhKSk7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkRGF0YS0+Y3JlYXRl
TlNEYXRhKCk7Ci0gICAgICAgIGlmIChwYXJzZXJTdGF0ZVdhc1Jlc2V0KQotICAgICAgICAgICAg
W3BhcnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1E
YXRhUGFyc2VyU3RyZWFtRGF0YURpc2NvbnRpbnVpdHldOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBbcGFyc2VyIGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpXTsKKyAgICBkaXNwYXRj
aF9hc3luYyhnbG9iYWxEYXRhUGFyc2VyUXVldWUoKSwgW2RhdGEgPSBXVEZNb3ZlKGRhdGEpLCB3
ZWFrVGhpcyA9IG1fYXBwZW5kV2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyksIHBhcnNl
ciA9IG1fcGFyc2VyLCBpc0FwcGVuZGluZ0dyb3VwID0gbV9pc0FwcGVuZGluZ0dyb3VwXSAoKSBt
dXRhYmxlIHsKKyAgICAgICAgcGFyc2VyLT5hcHBlbmREYXRhKFdURk1vdmUoZGF0YSkpOwogCiAg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzXSB7CiAgICAgICAgICAgICBpZiAod2Vh
a1RoaXMpCkBAIC03NDEsMTEgKzU2NCwyMCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjphcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgZGF0YSkKICAgICAgICAgfSk7CiAg
ICAgICAgIGRpc3BhdGNoX2dyb3VwX2xlYXZlKGlzQXBwZW5kaW5nR3JvdXAuZ2V0KCkpOwogICAg
IH0pOwotICAgIG1fcGFyc2VyU3RhdGVXYXNSZXNldCA9IGZhbHNlOwogfQogCiB2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmRDb21wbGV0ZWQoKQogeworICAgIGlmIChtX2Fi
b3J0U2VtYXBob3JlKSB7CisgICAgICAgIG1fYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgpOworICAg
ICAgICBtX2Fib3J0U2VtYXBob3JlID0gbmlsOworICAgIH0KKworICAgIGlmIChtX2hhc1Nlc3Np
b25TZW1hcGhvcmUpIHsKKyAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsK
KyAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlID0gbmlsOworICAgIH0KKwogICAgIGlmICht
X3BhcnNpbmdTdWNjZWVkZWQgJiYgbV9tZWRpYVNvdXJjZSkKICAgICAgICAgbV9tZWRpYVNvdXJj
ZS0+cGxheWVyKCktPnNldExvYWRpbmdQcm9ncmVzc3NlZCh0cnVlKTsKIApAQCAtNzYwLDM5ICs1
OTIsMzkgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YWJvcnQoKQogICAgIC8v
IFRoZSBwYXJzaW5nIHF1ZXVlIG1heSBiZSBibG9ja2VkIHdhaXRpbmcgZm9yIHRoZSBtYWluIHRo
cmVhZCB0byBwcm92aWRlIGl0IGEgQVZTdHJlYW1TZXNzaW9uLiBXZQogICAgIC8vIHdlcmUgYXNr
ZWQgdG8gYWJvcnQsIGFuZCB0aGF0IGNhbmNlbHMgYWxsIG91dHN0YW5kaW5nIGFwcGVuZCBvcGVy
YXRpb25zLiBXaXRob3V0IGNhbmNlbGxpbmcgdGhpcwogICAgIC8vIHNlbWFwaG9yZSwgdGhlIG1f
aXNBcHBlbmRpbmdHcm91cCB3YWl0IG9wZXJhdGlvbiB3aWxsIGRlYWRsb2NrLgotICAgIGlmICht
X2hhc1Nlc3Npb25TZW1hcGhvcmUpCisgICAgaWYgKG1faGFzU2Vzc2lvblNlbWFwaG9yZSkgewog
ICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwotICAgIG1fZGVsZWdhdGUu
Z2V0KCkuYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAgICBtX2hhc1Nlc3Npb25TZW1h
cGhvcmUgPSBudWxscHRyOworICAgIH0KKyAgICBpZiAobV9hYm9ydFNlbWFwaG9yZSkgeworICAg
ICAgICBtX2Fib3J0U2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICAgICAgbV9hYm9ydFNlbWFwaG9y
ZSA9IG51bGxwdHI7CisgICAgfQogICAgIGRpc3BhdGNoX2dyb3VwX3dhaXQobV9pc0FwcGVuZGlu
Z0dyb3VwLmdldCgpLCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOwotICAgIG1fYXBwZW5kV2Vha0Zh
Y3RvcnkucmV2b2tlQWxsKCk7Ci0gICAgbV9kZWxlZ2F0ZS5nZXQoKS5wYXJlbnQgPSBtX2FwcGVu
ZFdlYWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKnRoaXMpOwotICAgIG1fZGVsZWdhdGUuZ2V0KCku
YWJvcnRTZW1hcGhvcmUgPSBCb3g8U2VtYXBob3JlPjo6Y3JlYXRlKDApOwogfQogCiB2b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpyZXNldFBhcnNlclN0YXRlKCkKIHsKICAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIpOwogCi0gICAgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0ID0gdHJ1
ZTsKLSAgICBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50ID0g
dHJ1ZTsKKyAgICBtX3BhcnNlci0+cmVzZXRQYXJzZXJTdGF0ZSgpOwogfQogCiB2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkZXN0cm95UGFyc2VyKCkKIHsKKyAgICBhdXRvIHBhcnNl
ciA9IHRoaXMtPnBhcnNlcigpOworICAgIGlmICghcGFyc2VyKQorICAgICAgICByZXR1cm47CiAj
aWYgSEFWRShBVlNUUkVBTVNFU1NJT04pICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElB
KQogICAgIGlmIChtX21lZGlhU291cmNlICYmIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5oYXNT
dHJlYW1TZXNzaW9uKCkpCi0gICAgICAgIFttX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c3RyZWFt
U2Vzc2lvbigpIHJlbW92ZVN0cmVhbURhdGFQYXJzZXI6bV9wYXJzZXIuZ2V0KCldOworICAgICAg
ICBbbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPnN0cmVhbVNlc3Npb24oKSByZW1vdmVTdHJlYW1E
YXRhUGFyc2VyOnBhcnNlcl07CiAjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAm
JiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCiAgICAgaWYgKG1fY2RtSW5zdGFuY2UpIHsKICAg
ICAgICAgaWYgKGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZv
cktleUlEcyhtX2tleUlEcykpCi0gICAgICAgICAgICBbaW5zdGFuY2VTZXNzaW9uLT5jb250ZW50
S2V5U2Vzc2lvbigpIHJlbW92ZUNvbnRlbnRLZXlSZWNpcGllbnQ6bV9wYXJzZXIuZ2V0KCldOwor
ICAgICAgICAgICAgW2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSByZW1vdmVD
b250ZW50S2V5UmVjaXBpZW50OnBhcnNlcl07CiAgICAgfQogI2VuZGlmCi0KLSAgICBbbV9kZWxl
Z2F0ZSBpbnZhbGlkYXRlXTsKLSAgICBtX2RlbGVnYXRlID0gbnVsbHB0cjsKLSAgICBtX3BhcnNl
ciA9IG51bGxwdHI7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRlc3Ry
b3lSZW5kZXJlcnMoKQpAQCAtODE3LDYgKzY0OSwxNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpkZXN0cm95UmVuZGVyZXJzKCkKICAgICBtX2F1ZGlvUmVuZGVyZXJzLmNsZWFy
KCk7CiB9CiAKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNsZWFyVHJhY2tzKCkK
K3sKKyAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV92aWRlb1RyYWNrcykKKyAgICAgICAgdHJhY2st
PnNldFNlbGVjdGVkQ2hhbmdlZENhbGxiYWNrKG51bGxwdHIpOworICAgIG1fdmlkZW9UcmFja3Mu
Y2xlYXIoKTsKKworICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX2F1ZGlvVHJhY2tzKQorICAgICAg
ICB0cmFjay0+c2V0RW5hYmxlZENoYW5nZWRDYWxsYmFjayhudWxscHRyKTsKKyAgICBtX2F1ZGlv
VHJhY2tzLmNsZWFyKCk7Cit9CisKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnJl
bW92ZWRGcm9tTWVkaWFTb3VyY2UoKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7
CkBAIC04NTYsMjEgKzY5OSwyMSBAQCBib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpo
YXNBdWRpbygpIGNvbnN0CiAgICAgcmV0dXJuIG1fY2xpZW50ICYmIG1fY2xpZW50LT5zb3VyY2VC
dWZmZXJQcml2YXRlSGFzQXVkaW8oKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDKiB0cmFjaykKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlk
Q2hhbmdlU2VsZWN0ZWQoVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNrLCBib29sIHNlbGVjdGVkKQog
ewotICAgIGludCB0cmFja0lEID0gdHJhY2stPnRyYWNrSUQoKTsKKyAgICBpbnQgdHJhY2tJRCA9
IHRyYWNrLmlkKCkudG9JbnQoKTsKIAotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInZp
ZGVvIHRyYWNrSUQgPSAiLCB0cmFja0lELCAiLCBzZWxlY3RlZCA9ICIsIHRyYWNrLT5zZWxlY3Rl
ZCgpKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJ2aWRlbyB0cmFja0lEID0gIiwg
dHJhY2tJRCwgIiwgc2VsZWN0ZWQgPSAiLCBzZWxlY3RlZCk7CiAKLSAgICBpZiAoIXRyYWNrLT5z
ZWxlY3RlZCgpICYmIG1fZW5hYmxlZFZpZGVvVHJhY2tJRCA9PSB0cmFja0lEKSB7CisgICAgaWYg
KCFzZWxlY3RlZCAmJiBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgPT0gdHJhY2tJRCkgewogICAgICAg
ICBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgPSAtMTsKLSAgICAgICAgW21fcGFyc2VyIHNldFNob3Vs
ZFByb3ZpZGVNZWRpYURhdGE6Tk8gZm9yVHJhY2tJRDp0cmFja0lEXTsKKyAgICAgICAgbV9wYXJz
ZXItPnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGZhbHNlLCB0cmFja0lEKTsK
IAogICAgICAgICBpZiAobV9kZWNvbXByZXNzaW9uU2Vzc2lvbikKICAgICAgICAgICAgIG1fZGVj
b21wcmVzc2lvblNlc3Npb24tPnN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRhKCk7Ci0gICAgfSBlbHNl
IGlmICh0cmFjay0+c2VsZWN0ZWQoKSkgeworICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWQpIHsKICAg
ICAgICAgbV9lbmFibGVkVmlkZW9UcmFja0lEID0gdHJhY2tJRDsKLSAgICAgICAgW21fcGFyc2Vy
IHNldFNob3VsZFByb3ZpZGVNZWRpYURhdGE6WUVTIGZvclRyYWNrSUQ6dHJhY2tJRF07CisgICAg
ICAgIG1fcGFyc2VyLT5zZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCh0cnVlLCB0
cmFja0lEKTsKIAogICAgICAgICBpZiAobV9kZWNvbXByZXNzaW9uU2Vzc2lvbikgewogICAgICAg
ICAgICAgbV9kZWNvbXByZXNzaW9uU2Vzc2lvbi0+cmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeShb
dGhpcywgdHJhY2tJRF0gewpAQCAtODgyLDIxICs3MjUsMjEgQEAgdm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKFZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTb3UKICAgICBtX21lZGlhU291cmNlLT5oYXNTZWxlY3RlZFZpZGVvQ2hhbmdlZCgqdGhpcyk7
CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlRW5h
YmxlZChBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyogdHJhY2spCit2b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQoQXVkaW9UcmFj
a1ByaXZhdGUmIHRyYWNrLCBib29sIGVuYWJsZWQpCiB7Ci0gICAgaW50IHRyYWNrSUQgPSB0cmFj
ay0+dHJhY2tJRCgpOworICAgIGludCB0cmFja0lEID0gdHJhY2suaWQoKS50b0ludCgpOwogCi0g
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiYXVkaW8gdHJhY2tJRCA9ICIsIHRyYWNrSUQs
ICIsIHNlbGVjdGVkID0gIiwgdHJhY2stPmVuYWJsZWQoKSk7CisgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSLCAiYXVkaW8gdHJhY2tJRCA9ICIsIHRyYWNrSUQsICIsIHNlbGVjdGVkID0gIiwg
ZW5hYmxlZCk7CiAKLSAgICBpZiAoIXRyYWNrLT5lbmFibGVkKCkpIHsKKyAgICBpZiAoIWVuYWJs
ZWQpIHsKICAgICAgICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgogICAgICAg
ICBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyPiByZW5kZXJlciA9IG1fYXVk
aW9SZW5kZXJlcnMuZ2V0KHRyYWNrSUQpOwogICAgICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRf
R1VBUkRTX0VORAotICAgICAgICBbbV9wYXJzZXIgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YTpO
TyBmb3JUcmFja0lEOnRyYWNrSURdOworICAgICAgICBtX3BhcnNlci0+c2V0U2hvdWxkUHJvdmlk
ZU1lZGlhRGF0YUZvclRyYWNrSUQoZmFsc2UsIHRyYWNrSUQpOwogICAgICAgICBpZiAobV9tZWRp
YVNvdXJjZSkKICAgICAgICAgICAgIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5yZW1vdmVBdWRp
b1JlbmRlcmVyKHJlbmRlcmVyLmdldCgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBbbV9wYXJz
ZXIgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YTpZRVMgZm9yVHJhY2tJRDp0cmFja0lEXTsKKyAg
ICAgICAgbV9wYXJzZXItPnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKHRydWUs
IHRyYWNrSUQpOwogICAgICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCiAg
ICAgICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXI+IHJlbmRlcmVyOwog
ICAgICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORApAQCAtOTI2LDYgKzc2OSwx
MyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJs
ZWQoQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdQogICAgIH0KIH0KIAorQVZTdHJlYW1EYXRhUGFy
c2VyKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6cGFyc2VyKCkgY29uc3QKK3sKKyAgICBp
ZiAoaXM8U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQz4obV9wYXJzZXIuZ2V0KCkpKQorICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQz4obV9wYXJzZXIuZ2V0
KCkpLnBhcnNlcigpOworICAgIHJldHVybiBuaWw7Cit9CisKIHZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OnNldENETVNlc3Npb24oQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyog
c2Vzc2lvbikKIHsKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKQEAgLTk4Nyw3
ICs4MzcsOCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphdHRlbXB0VG9EZWNy
eXB0KCkKICAgICBpZiAoIWluc3RhbmNlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
W2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBp
ZW50Om1fcGFyc2VyLmdldCgpXTsKKyAgICBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5wYXJzZXIo
KSkKKyAgICAgICAgW2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250
ZW50S2V5UmVjaXBpZW50OnBhcnNlcl07CiAgICAgaWYgKG1faGFzU2Vzc2lvblNlbWFwaG9yZSkg
ewogICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwogICAgICAgICBtX2hh
c1Nlc3Npb25TZW1hcGhvcmUgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXgg
Yzc4Yjk1M2M3YmFhOGVjYjI5MjhiZjJjM2RkNTUxYTkwZWQyMzhjYy4uNmIxMWNjYTMyYmRkNDlk
MmFkZDYxMGU5YTdhNzc2YjU5NWI4YTk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFj
a1ByaXZhdGVBVkYuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCiAKQEAgLTQyLDE0ICs0MywxMSBAQCBjbGFzcyBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIGZp
bmFsIDogcHVibGljIFZpZGVvVHJhY2tQcml2YXRlQVZGIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQykKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZB
c3NldFRyYWNrKiB0cmFjaywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKKyAg
ICBzdGF0aWMgUmVmPFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUo
QVZBc3NldFRyYWNrKiB0cmFjaykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakModHJhY2spKTsKICAgICB9CiAKLSAgICBib29sIHNlbGVjdGVkKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBzZXRTZWxlY3RlZChib29sKSBvdmVycmlkZTsKLQogICAgIHZvaWQgc2V0
QXNzZXRUcmFjayhBVkFzc2V0VHJhY2sqKTsKICAgICBBVkFzc2V0VHJhY2sqIGFzc2V0VHJhY2so
KSBjb25zdDsKIApAQCAtNTgsMTQgKzU2LDEyIEBAIHB1YmxpYzoKICAgICBGbG9hdFNpemUgbmF0
dXJhbFNpemUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBWaWRlb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqLCBTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQyogcGFyZW50KTsKKyAgICBleHBsaWNpdCBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqKTsKICAgICAKICAgICB2b2lkIHJlc2V0UHJvcGVydGll
c0Zyb21UcmFjaygpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGw+IG1faW1wbDsKLSAgICBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogbV9wYXJlbnQ7
CiAgICAgaW50IG1fdHJhY2tJRDsKLSAgICBib29sIG1fc2VsZWN0ZWQ7CiB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDJjNzM5Mjc5NmUwZjUyNWY5NGMyOGFhMjBhYWQxMGUz
MGQwZDA1MWMuLmFmZDFiN2YzYTkzMzQ5MTcxZDkxMDU4ZjY4NWNmZTgwYmI4ZDczMmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0zNCwxMSArMzQsOSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpWaWRlb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrLCBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQorVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKEFWQXNzZXRUcmFjayog
dHJhY2spCiAgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBs
Pih0cmFjaykpCi0gICAgLCBtX3BhcmVudChwYXJlbnQpCiAgICAgLCBtX3RyYWNrSUQoLTEpCi0g
ICAgLCBtX3NlbGVjdGVkKGZhbHNlKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygp
OwogfQpAQCAtNjUsMjEgKzYzLDYgQEAgQVZBc3NldFRyYWNrKiBWaWRlb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQzo6YXNzZXRUcmFjaygpIGNvbnN0CiAgICAgcmV0dXJuIG1faW1wbC0+
YXNzZXRUcmFjaygpOwogfQogCi0KLWJvb2wgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OnNlbGVjdGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zZWxlY3RlZDsKLX0KLQot
dm9pZCBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0U2VsZWN0ZWQoYm9v
bCBzZWxlY3RlZCkKLXsKLSAgICBpZiAobV9zZWxlY3RlZCA9PSBzZWxlY3RlZCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV9zZWxlY3RlZCA9IHNlbGVjdGVkOwotICAgIG1fcGFyZW50LT50cmFj
a0RpZENoYW5nZUVuYWJsZWQodGhpcyk7Ci19Ci0KIEZsb2F0U2l6ZSBWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6bmF0dXJhbFNpemUoKSBjb25zdAogewogICAgIHJldHVybiBG
bG9hdFNpemUoW2Fzc2V0VHJhY2soKSBuYXR1cmFsU2l6ZV0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2
YXRlV2ViTS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2ZkZTliZDZmZGMxNmQxNDYwZjg1MzE1NDhhYTk4ZWNl
YjIwNDEzZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0
ZVdlYk0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8QXVkaW9UcmFja1ByaXZhdGVX
ZWJNPiBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZSh3ZWJtOjpUcmFja0VudHJ5JiYgdHJh
Y2tFbnRyeSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJpdmF0ZVdl
Yk0oV1RGTW92ZSh0cmFja0VudHJ5KSkpOworfQorCitBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OkF1
ZGlvVHJhY2tQcml2YXRlV2ViTSh3ZWJtOjpUcmFja0VudHJ5JiYgdHJhY2tFbnRyeSkKKyAgICA6
IG1fdHJhY2soV1RGTW92ZSh0cmFja0VudHJ5KSkKK3sKKyAgICBpZiAobV90cmFjay5pc19lbmFi
bGVkLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgc2V0RW5hYmxlZChtX3RyYWNrLmlzX2VuYWJsZWQu
dmFsdWUoKSk7Cit9CisKK0F0b21TdHJpbmcgQXVkaW9UcmFja1ByaXZhdGVXZWJNOjppZCgpIGNv
bnN0Cit7CisgICAgaWYgKG1fdHJhY2tJRC5pc051bGwoKSkKKyAgICAgICAgbV90cmFja0lEID0g
bV90cmFjay50cmFja191aWQuaXNfcHJlc2VudCgpID8gQXRvbVN0cmluZzo6bnVtYmVyKG1fdHJh
Y2sudHJhY2tfdWlkLnZhbHVlKCkpIDogZW1wdHlBdG9tKCk7CisgICAgcmV0dXJuIG1fdHJhY2tJ
RDsKK30KKworQXRvbVN0cmluZyBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OmxhYmVsKCkgY29uc3QK
K3sKKyAgICBpZiAobV9sYWJlbC5pc051bGwoKSkKKyAgICAgICAgbV9sYWJlbCA9IG1fdHJhY2su
bmFtZS5pc19wcmVzZW50KCkgPyBBdG9tU3RyaW5nOjpmcm9tVVRGOChtX3RyYWNrLm5hbWUudmFs
dWUoKS5kYXRhKCksIG1fdHJhY2submFtZS52YWx1ZSgpLmxlbmd0aCgpKSA6IGVtcHR5QXRvbSgp
OworICAgIHJldHVybiBtX2xhYmVsOworfQorCitBdG9tU3RyaW5nIEF1ZGlvVHJhY2tQcml2YXRl
V2ViTTo6bGFuZ3VhZ2UoKSBjb25zdAoreworICAgIGlmIChtX2xhbmd1YWdlLmlzTnVsbCgpKQor
ICAgICAgICBtX2xhbmd1YWdlID0gbV90cmFjay5sYW5ndWFnZS5pc19wcmVzZW50KCkgPyBBdG9t
U3RyaW5nOjpmcm9tVVRGOChtX3RyYWNrLmxhbmd1YWdlLnZhbHVlKCkuZGF0YSgpLCBtX3RyYWNr
Lmxhbmd1YWdlLnZhbHVlKCkubGVuZ3RoKCkpIDogZW1wdHlBdG9tKCk7CisgICAgcmV0dXJuIG1f
bGFuZ3VhZ2U7Cit9CisKK2ludCBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OnRyYWNrSW5kZXgoKSBj
b25zdAoreworICAgIGlmIChtX3RyYWNrLnRyYWNrX251bWJlci5pc19wcmVzZW50KCkpCisgICAg
ICAgIHJldHVybiBtX3RyYWNrLnRyYWNrX251bWJlci52YWx1ZSgpOworICAgIHJldHVybiAwOwor
fQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwNTZlODVkMTZi
YzIyZGVmMGRlZTQxNDVhN2Y2ZDg3NTI1ZGFmZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaApA
QCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJB
dWRpb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHdlYm0vZG9tX3R5cGVzLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVXZWJNIGZpbmFsIDogcHVi
bGljIEF1ZGlvVHJhY2tQcml2YXRlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEF1ZGlvVHJh
Y2tQcml2YXRlV2ViTT4gY3JlYXRlKHdlYm06OlRyYWNrRW50cnkmJik7CisgICAgdmlydHVhbCB+
QXVkaW9UcmFja1ByaXZhdGVXZWJNKCkgPSBkZWZhdWx0OworCisgICAgQXRvbVN0cmluZyBpZCgp
IGNvbnN0IGZpbmFsOworICAgIEF0b21TdHJpbmcgbGFiZWwoKSBjb25zdCBmaW5hbDsKKyAgICBB
dG9tU3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgZmluYWw7CisgICAgaW50IHRyYWNrSW5kZXgoKSBj
b25zdCBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBBdWRpb1RyYWNrUHJpdmF0ZVdlYk0od2VibTo6
VHJhY2tFbnRyeSYmKTsKKyAgICB3ZWJtOjpUcmFja0VudHJ5IG1fdHJhY2s7CisgICAgbXV0YWJs
ZSBBdG9tU3RyaW5nIG1fdHJhY2tJRDsKKyAgICBtdXRhYmxlIEF0b21TdHJpbmcgbV9sYWJlbDsK
KyAgICBtdXRhYmxlIEF0b21TdHJpbmcgbV9sYW5ndWFnZTsKK307CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmYTIyOGM4MzdjZTRlMDA0MjIwMDY4OWY3ZjhmOTZl
NjQ4MWY0ODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU291cmNlQnVmZmVyUGFyc2Vy
LmgiCisKKyNpbmNsdWRlICJDb250ZW50VHlwZS5oIgorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMuaCIKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgiCisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9v
bCBTb3VyY2VCdWZmZXJQYXJzZXI6OmlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29uc3QgQ29udGVu
dFR5cGUmIHR5cGUpCit7CisgICAgaWYgKFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmlzQ29udGVu
dFR5cGVTdXBwb3J0ZWQodHlwZSkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChTb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDOjppc0NvbnRlbnRUeXBlU3VwcG9ydGVkKHR5cGUpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1JlZlB0cjxTb3VyY2VC
dWZmZXJQYXJzZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6Y3JlYXRlKGNvbnN0IENvbnRlbnRUeXBl
JiBjb250ZW50VHlwZSkKK3sKKyAgICBpZiAoV1RGOjplcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNv
bnRlbnRUeXBlLmNvbnRhaW5lclR5cGUoKSwgImF1ZGlvL3dlYm0iKSB8fCBXVEY6OmVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UoY29udGVudFR5cGUuY29udGFpbmVyVHlwZSgpLCAidmlkZW8vd2VibSIp
KQorICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkpOwor
fQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliNmIwOTg2ZDY0NzNhMTVj
MDhlY2Q0NTgzYWVjY2EwNTIyMjdlZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaApAQCAtMCwwICsx
LDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU291cmNlQnVm
ZmVyUHJpdmF0ZUNsaWVudC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4QXJyYXku
aD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIENvbnRlbnRUeXBlOworY2xhc3MgTWVkaWFTYW1wbGU7CisKK2NsYXNzIFNvdXJjZUJ1
ZmZlclBhcnNlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTb3VyY2VCdWZmZXJQYXJz
ZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBpc0NvbnRlbnRUeXBlU3VwcG9ydGVkKGNv
bnN0IENvbnRlbnRUeXBlJik7CisKKyAgICBzdGF0aWMgUmVmUHRyPFNvdXJjZUJ1ZmZlclBhcnNl
cj4gY3JlYXRlKGNvbnN0IENvbnRlbnRUeXBlJik7CisgICAgdmlydHVhbCB+U291cmNlQnVmZmVy
UGFyc2VyKCkgPSBkZWZhdWx0OworCisgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7Cisg
ICAgICAgIEFWRk9iakMsCisgICAgICAgIFdlYk0sCisgICAgfTsKKyAgICB2aXJ0dWFsIFR5cGUg
dHlwZSgpIGNvbnN0ID0gMDsKKyAgICBlbnVtIGNsYXNzIEFwcGVuZEZsYWdzIDogdWludDhfdCB7
CisgICAgICAgIE5vbmUsCisgICAgICAgIERpc2NvbnRpbnVpdHksCisgICAgfTsKKyAgICB2aXJ0
dWFsIHZvaWQgYXBwZW5kRGF0YShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgQXBwZW5kRmxhZ3Mg
PSBBcHBlbmRGbGFnczo6Tm9uZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmbHVzaFBlbmRpbmdN
ZWRpYURhdGEoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZFByb3ZpZGVNZWRpYURh
dGFGb3JUcmFja0lEKGJvb2wsIGludDMyX3QpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
UHJvdmlkZU1lZGlhZGF0YUZvclRyYWNrSUQoaW50MzJfdCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCByZXNldFBhcnNlclN0YXRlKCkgPSAwOworCisgICAgLy8gV2lsbCBiZSBjYWxsZWQgb24gdGhl
IG1haW4gdGhyZWFkLgorICAgIHVzaW5nIEluaXRpYWxpemF0aW9uU2VnbWVudCA9IFNvdXJjZUJ1
ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDsKKyAgICB1c2luZyBEaWRQ
YXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEluaXRp
YWxpemF0aW9uU2VnbWVudCYmKT47CisgICAgdm9pZCBzZXREaWRQYXJzZUluaXRpYWxpemF0aW9u
RGF0YUNhbGxiYWNrKERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2smJiBjYWxsYmFj
aykKKyAgICB7CisgICAgICAgIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spOworICAgIH0KKworICAgIC8vIFdpbGwgYmUgY2FsbGVkIG9uIHRo
ZSBtYWluIHRocmVhZC4KKyAgICB1c2luZyBEaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdD
YWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChpbnQzMl90IGVycm9yQ29kZSk+OworICAgIHZv
aWQgc2V0RGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2soRGlkRW5jb3VudGVy
RXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2smJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIG1f
ZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KTsKKyAgICB9CisKKyAgICAvLyBXaWxsIGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCisg
ICAgdXNpbmcgRGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lk
KFJlZjxNZWRpYVNhbXBsZT4mJiwgaW50MzJfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlh
VHlwZSk+OworICAgIHZvaWQgc2V0RGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKERpZFByb3Zp
ZGVNZWRpYURhdGFDYWxsYmFjayYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgbV9kaWRQcm92
aWRlTWVkaWFEYXRhQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKKyAgICB9CisKKyAgICAv
LyBXaWxsIGJlIGNhbGxlZCBzeW5jaHJvbm91c2x5IG9uIHRoZSBwYXJzZXIgdGhlYWQuCisgICAg
dXNpbmcgV2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRy
YWNrSURDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZCh1aW50MzJfdCB0cmFja0lEKT47Cisg
ICAgdm9pZCBzZXRXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRENhbGxiYWNrKFdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXph
dGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2smJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIG1f
d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURD
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworICAgIH0KKworICAgIC8vIFdpbGwgYmUgY2Fs
bGVkIHN5bmNocm9ub3VzbHkgb24gdGhlIHBhcnNlciB0aGVhZC4KKyAgICB1c2luZyBEaWRQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sg
PSBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmPFVpbnQ4QXJyYXk+JiYsIGludDMyX3QgdHJhY2tJRCk+
OworICAgIHZvaWQgc2V0RGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25E
YXRhRm9yVHJhY2tJRENhbGxiYWNrKERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxp
emF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAg
bV9kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lE
Q2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBT
b3VyY2VCdWZmZXJQYXJzZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBEaWRQYXJzZUluaXRpYWxpemF0
aW9uRGF0YUNhbGxiYWNrIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjazsKKyAg
ICBEaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayBtX2RpZEVuY291bnRlckVy
cm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrOworICAgIERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFj
ayBtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjazsKKyAgICBXaWxsUHJvdmlkZUNvbnRlbnRL
ZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrIG1fd2lsbFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjazsK
KyAgICBEaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFj
a0lEQ2FsbGJhY2sgbV9kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRh
dGFGb3JUcmFja0lEQ2FsbGJhY2s7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRhNGMwNzZlMTIwZTBlZTM3ZTliOGMzYzY1ZjJhODFiMWMzN2Zi
OTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtMCwwICsxLDM1OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNLmgiCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaCIKKyNpbmNsdWRlICJJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiTWVkaWFEZXNjcmlwdGlvbi5oIgor
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tQ
cml2YXRlV2ViTS5oIgorI2luY2x1ZGUgPHdlYm0vd2VibV9wYXJzZXIuaD4KKyNpbmNsdWRlIDx3
dGYvQWxnb3JpdGhtcy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1
ZGUgPHd0Zi9kYXJ3aW4vV2Vha0xpbmtpbmcuaD4KKworV1RGX1dFQUtfTElOS19GT1JDRV9JTVBP
UlQod2VibTo6c3dhcCk7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGJvb2wgaXNX
ZWJtUGFyc2VyQXZhaWxhYmxlKCkKK3sKKyAgICByZXR1cm4gISF3ZWJtOjpzd2FwICYmIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViTVBhcnNlckVuYWJsZWQoKTsK
K30KKwordXNpbmcgbmFtZXNwYWNlIHdlYm07CisKK2NsYXNzIFZlY3RvclJlYWRlciBmaW5hbCA6
IHB1YmxpYyB3ZWJtOjpSZWFkZXIgeworcHVibGljOgorICAgIFZlY3RvclJlYWRlcihWZWN0b3I8
dW5zaWduZWQgY2hhcj4mJiBkYXRhKQorICAgICAgICA6IG1fZGF0YSB7IFdURk1vdmUoZGF0YSkg
fQorICAgIHsKKyAgICB9CisKKyAgICBTdGF0dXMgUmVhZChzdGQ6OnNpemVfdCBudW1Ub1JlYWQs
IHVpbnQ4X3QqIG91dHB1dEJ1ZmZlciwgdWludDY0X3QqIG51bUFjdHVhbGx5UmVhZCkgZmluYWwK
KyAgICB7CisgICAgICAgIEFTU0VSVChvdXRwdXRCdWZmZXIgJiYgbnVtQWN0dWFsbHlSZWFkKTsK
KyAgICAgICAgaWYgKCFvdXRwdXRCdWZmZXIgfHwgIW51bUFjdHVhbGx5UmVhZCkKKyAgICAgICAg
ICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKworICAgICAgICBp
ZiAobV9wb3NpdGlvbiA+PSBtX2RhdGEuc2l6ZSgpKSB7CisgICAgICAgICAgICAqbnVtQWN0dWFs
bHlSZWFkID0gMDsKKyAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprRW5kT2ZGaWxl
KTsKKyAgICAgICAgfQorCisgICAgICAgIHNpemVfdCBudW1BdmFpbGFibGUgPSBtX2RhdGEuc2l6
ZSgpIC0gbV9wb3NpdGlvbjsKKyAgICAgICAgaWYgKG51bVRvUmVhZCA8IG51bUF2YWlsYWJsZSkg
eworICAgICAgICAgICAgbWVtY3B5KG91dHB1dEJ1ZmZlciwgbV9kYXRhLmRhdGEoKSArIG1fcG9z
aXRpb24sIG51bVRvUmVhZCk7CisgICAgICAgICAgICAqbnVtQWN0dWFsbHlSZWFkID0gbnVtVG9S
ZWFkOworICAgICAgICAgICAgbV9wb3NpdGlvbiArPSBudW1Ub1JlYWQ7CisgICAgICAgICAgICBy
ZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKKyAgICAgICAgfQorCisgICAgICAg
IG1lbWNweShvdXRwdXRCdWZmZXIsIG1fZGF0YS5kYXRhKCkgKyBtX3Bvc2l0aW9uLCBudW1BdmFp
bGFibGUpOworICAgICAgICAqbnVtQWN0dWFsbHlSZWFkID0gbnVtQXZhaWxhYmxlOworICAgICAg
ICBtX3Bvc2l0aW9uICs9IG51bUF2YWlsYWJsZTsKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0
dXM6OmtPa1BhcnRpYWwpOworICAgIH0KKworICAgIFN0YXR1cyBTa2lwKHVpbnQ2NF90IG51bVRv
U2tpcCwgdWludDY0X3QqIG51bUFjdHVhbGx5U2tpcHBlZCkgZmluYWwKKyAgICB7CisgICAgICAg
IEFTU0VSVChudW1BY3R1YWxseVNraXBwZWQpOworICAgICAgICBpZiAoIW51bUFjdHVhbGx5U2tp
cHBlZCkKKyAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5
KTsKKworICAgICAgICBpZiAobV9wb3NpdGlvbiA+PSBtX2RhdGEuc2l6ZSgpKSB7CisgICAgICAg
ICAgICAqbnVtQWN0dWFsbHlTa2lwcGVkID0gMDsKKyAgICAgICAgICAgIHJldHVybiBTdGF0dXMo
U3RhdHVzOjprV291bGRCbG9jayk7CisgICAgICAgIH0KKworICAgICAgICBzaXplX3QgbnVtQXZh
aWxhYmxlID0gbV9kYXRhLnNpemUoKSAtIG1fcG9zaXRpb247CisKKyAgICAgICAgaWYgKG51bVRv
U2tpcCA8IG51bUF2YWlsYWJsZSkgeworICAgICAgICAgICAgKm51bUFjdHVhbGx5U2tpcHBlZCA9
IG51bVRvU2tpcDsKKyAgICAgICAgICAgIG1fcG9zaXRpb24gKz0gbnVtVG9Ta2lwOworICAgICAg
ICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CisgICAgICAgIH0KKwor
ICAgICAgICAqbnVtQWN0dWFsbHlTa2lwcGVkID0gbnVtQXZhaWxhYmxlOworICAgICAgICBtX3Bv
c2l0aW9uICs9IG51bUF2YWlsYWJsZTsKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtP
a1BhcnRpYWwpOworICAgIH0KKworICAgIHVpbnQ2NF90IFBvc2l0aW9uKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9wb3NpdGlvbjsgfQorCitwcml2YXRlOgorICAgIFZlY3Rvcjx1bnNpZ25lZCBj
aGFyPiBtX2RhdGE7CisgICAgc2l6ZV90IG1fcG9zaXRpb24geyAwIH07Cit9OworCitjbGFzcyBN
ZWRpYURlc2NyaXB0aW9uV2ViTSBmaW5hbCA6IHB1YmxpYyBNZWRpYURlc2NyaXB0aW9uIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUmVmPE1lZGlhRGVzY3JpcHRpb25XZWJNPiBjcmVhdGUod2VibTo6
VHJhY2tFbnRyeSYmIHRyYWNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TWVkaWFEZXNjcmlwdGlvbldlYk0oV1RGTW92ZSh0cmFjaykpKTsKKyAgICB9CisKKyAgICBNZWRp
YURlc2NyaXB0aW9uV2ViTSh3ZWJtOjpUcmFja0VudHJ5JiYgdHJhY2spCisgICAgICAgIDogbV90
cmFjayB7IFdURk1vdmUodHJhY2spIH0KKyAgICB7CisgICAgfQorCisgICAgQXRvbVN0cmluZyBj
b2RlYygpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBpZiAobV9jb2RlYykKKyAgICAgICAg
ICAgIHJldHVybiAqbV9jb2RlYzsKKworICAgICAgICAvLyBGcm9tOiBodHRwczovL3d3dy5tYXRy
b3NrYS5vcmcvdGVjaG5pY2FsL2NvZGVjX3NwZWNzLmh0bWwKKyAgICAgICAgLy8gIkVhY2ggQ29k
ZWMgSUQgTVVTVCBpbmNsdWRlIGEgTWFqb3IgQ29kZWMgSUQgaW1tZWRpYXRlbHkgZm9sbG93aW5n
IHRoZSBDb2RlYyBJRCBQcmVmaXguCisgICAgICAgIC8vIEEgTWFqb3IgQ29kZWMgSUQgTUFZIGJl
IGZvbGxvd2VkIGJ5IGFuIE9QVElPTkFMIENvZGVjIElEIFN1ZmZpeCB0byBjb21tdW5pY2F0ZSBh
IHJlZmluZW1lbnQKKyAgICAgICAgLy8gb2YgdGhlIE1ham9yIENvZGVjIElELiBJZiBhIENvZGVj
IElEIFN1ZmZpeCBpcyB1c2VkLCB0aGVuIHRoZSBDb2RlYyBJRCBNVVNUIGluY2x1ZGUgYSBmb3J3
YXJkCisgICAgICAgIC8vIHNsYXNoICjigJwv4oCdKSBhcyBhIHNlcGFyYXRvciBiZXR3ZWVuIHRo
ZSBNYWpvciBDb2RlYyBJRCBhbmQgdGhlIENvZGVjIElEIFN1ZmZpeC4gVGhlIE1ham9yIENvZGVj
CisgICAgICAgIC8vIElEIE1VU1QgYmUgY29tcG9zZWQgb2Ygb25seSBjYXBpdGFsIGxldHRlcnMg
KEEtWikgYW5kIG51bWJlcnMgKDAtOSkuIFRoZSBDb2RlYyBJRCBTdWZmaXggTVVTVAorICAgICAg
ICAvLyBiZSBjb21wb3NlZCBvZiBvbmx5IGNhcGl0YWwgbGV0dGVycyAoQS1aKSwgbnVtYmVycyAo
MC05KSwgdW5kZXJzY29yZSAo4oCcX+KAnSksIGFuZCBmb3J3YXJkIHNsYXNoICjigJwv4oCdKS4i
CisKKyAgICAgICAgaWYgKCFtX3RyYWNrLmNvZGVjX2lkLmlzX3ByZXNlbnQoKSkgeworICAgICAg
ICAgICAgbV9jb2RlYyA9IGVtcHR5QXRvbSgpOworICAgICAgICAgICAgcmV0dXJuICptX2NvZGVj
OworICAgICAgICB9CisKKyAgICAgICAgU3RyaW5nVmlldyBjb2RlY0lEIHsgbV90cmFjay5jb2Rl
Y19pZC52YWx1ZSgpLmRhdGEoKSwgKHVuc2lnbmVkKW1fdHJhY2suY29kZWNfaWQudmFsdWUoKS5s
ZW5ndGgoKSB9OworICAgICAgICBpZiAoIWNvZGVjSUQuc3RhcnRzV2l0aCgiVl8iKSAmJiAhY29k
ZWNJRC5zdGFydHNXaXRoKCJBXyIpICYmICFjb2RlY0lELnN0YXJ0c1dpdGgoIlNfIikpIHsKKyAg
ICAgICAgICAgIG1fY29kZWMgPSBlbXB0eUF0b20oKTsKKyAgICAgICAgICAgIHJldHVybiAqbV9j
b2RlYzsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gc2xhc2hMb2NhdGlvbiA9IGNvZGVjSUQu
ZmluZCgnLycpOworICAgICAgICBhdXRvIGxlbmd0aCA9IHNsYXNoTG9jYXRpb24gPT0gbm90Rm91
bmQgPyBjb2RlY0lELmxlbmd0aCgpIC0gMiA6IHNsYXNoTG9jYXRpb24gLSAyOworICAgICAgICBt
X2NvZGVjID0gQXRvbVN0cmluZyB7IGNvZGVjSUQuc3Vic3RyaW5nKDIsIGxlbmd0aCkuY29udmVy
dFRvQVNDSUlMb3dlcmNhc2UoKSB9OworICAgICAgICByZXR1cm4gKm1fY29kZWM7CisgICAgfQor
ICAgIGJvb2wgaXNWaWRlbygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdHJhY2sudHJhY2tfdHlw
ZS5pc19wcmVzZW50KCkgJiYgbV90cmFjay50cmFja190eXBlLnZhbHVlKCkgPT0gVHJhY2tUeXBl
OjprVmlkZW87IH0KKyAgICBib29sIGlzQXVkaW8oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Ry
YWNrLnRyYWNrX3R5cGUuaXNfcHJlc2VudCgpICYmIG1fdHJhY2sudHJhY2tfdHlwZS52YWx1ZSgp
ID09IFRyYWNrVHlwZTo6a0F1ZGlvOyB9CisgICAgYm9vbCBpc1RleHQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3RyYWNrLnRyYWNrX3R5cGUuaXNfcHJlc2VudCgpICYmIG1fdHJhY2sudHJhY2tf
dHlwZS52YWx1ZSgpID09IFRyYWNrVHlwZTo6a1N1YnRpdGxlOyB9CisKKyAgICBjb25zdCB3ZWJt
OjpUcmFja0VudHJ5JiB0cmFjaygpIHsgcmV0dXJuIG1fdHJhY2s7IH0KKworcHJpdmF0ZToKKyAg
ICBtdXRhYmxlIE9wdGlvbmFsPEF0b21TdHJpbmc+IG1fY29kZWM7CisgICAgd2VibTo6VHJhY2tF
bnRyeSBtX3RyYWNrOworfTsKKworc3RhdGljIFZlY3RvcjxTdHJpbmc+IHN1cHBvcnRlZFdlYk1D
b2RlY3MoKQoreworICAgIGF1dG8gY29kZWNzID0gbWFrZU5ldmVyRGVzdHJveWVkPFZlY3RvcjxT
dHJpbmc+Pih7CisgICAgICAgICJ2cDA5IiwKKyAgICAgICAgInZvcmJpcyIsCisgICAgICAgICJv
cHVzIiwKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZWNzOworfQorCitib29sIFNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OmlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29uc3QgQ29udGVudFR5cGUmIHR5
cGUpCit7CisgICAgaWYgKCFpc1dlYm1QYXJzZXJBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKCFXVEY6OmVxdWFsSWdub3JpbmdBU0NJSUNhc2UodHlwZS5jb250
YWluZXJUeXBlKCksICJhdWRpby93ZWJtIikKKyAgICAgICAgJiYgIVdURjo6ZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZSh0eXBlLmNvbnRhaW5lclR5cGUoKSwgInZpZGVvL3dlYm0iKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgU3RyaW5nIGNvZGVjc1BhcmFtZXRlciA9IHR5cGUucGFyYW1l
dGVyKENvbnRlbnRUeXBlOjpjb2RlY3NQYXJhbWV0ZXIoKSk7CisgICAgaWYgKCFjb2RlY3NQYXJh
bWV0ZXIpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgYXV0byBzcGxpdFJlc3VsdHMgPSBT
dHJpbmdWaWV3KGNvZGVjc1BhcmFtZXRlcikuc3BsaXQoJywnKTsKKyAgICBmb3IgKGF1dG8gc3Bs
aXQgOiBzcGxpdFJlc3VsdHMpIHsKKyAgICAgICAgcmV0dXJuIFdURjo6YW55T2Yoc3VwcG9ydGVk
V2ViTUNvZGVjcygpLCBbJl0oYXV0byYgY29kZWMpIHsKKyAgICAgICAgICAgIHJldHVybiBzcGxp
dC5zdGFydHNXaXRoKGNvZGVjKTsKKyAgICAgICAgfSk7CisgICAgfQorICAgIHJldHVybiB0cnVl
OworfQorCitTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNKCkK
K3sKKyAgICBpZiAoaXNXZWJtUGFyc2VyQXZhaWxhYmxlKCkpCisgICAgICAgIG1fcGFyc2VyID0g
V1RGOjptYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxXZWJtUGFyc2VyPigpOworfQor
CitTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjp+U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpID0gZGVm
YXVsdDsKKwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjphcHBlbmREYXRhKFZlY3Rvcjx1
bnNpZ25lZCBjaGFyPiYmIGJ1ZmZlciwgQXBwZW5kRmxhZ3MgYXBwZW5kRmxhZ3MpCit7CisgICAg
aWYgKCFtX3BhcnNlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yUmVhZGVyIHJlYWRl
ciB7IFdURk1vdmUoYnVmZmVyKSB9OworICAgIGlmIChhcHBlbmRGbGFncyA9PSBBcHBlbmRGbGFn
czo6RGlzY29udGludWl0eSkKKyAgICAgICAgbV9wYXJzZXItPkRpZFNlZWsoKTsKKyAgICBtX3N0
YXR1cyA9IG1fcGFyc2VyLT5GZWVkKHRoaXMsICZyZWFkZXIpOworICAgIGlmIChtX3N0YXR1cy5v
aygpIHx8IG1fc3RhdHVzLmNvZGUgPT0gU3RhdHVzOjprRW5kT2ZGaWxlKQorICAgICAgICByZXR1
cm47CisKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGNvZGUgPSBtX3N0YXR1cy5jb2RlXSB7CisgICAgICAgIGlmIChtX2RpZEVuY291
bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKQorICAgICAgICAgICAgbV9kaWRFbmNvdW50
ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayhjb2RlKTsKKyAgICB9KTsKK30KKwordm9pZCBT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpmbHVzaFBlbmRpbmdNZWRpYURhdGEoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2V0U2hv
dWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoYm9vbCwgaW50MzJfdCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCitib29sIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnNob3VsZFBy
b3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lEKGludDMyX3QpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
cmVzZXRQYXJzZXJTdGF0ZSgpCit7CisgICAgbV9wYXJzZXItPkRpZFNlZWsoKTsKKyAgICBtX3N0
YXRlID0gU3RhdGU6Ok5vbmU7Cit9CisKK1N0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpP
bkVsZW1lbnRCZWdpbihjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBBY3Rpb24qIGFj
dGlvbikKK3sKKyAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOworICAgIEFTU0VSVChhY3Rpb24p
OworICAgIGlmICghYWN0aW9uKQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a05vdEVu
b3VnaE1lbW9yeSk7CisKKyAgICBpZiAoKG1fc3RhdGUgPT0gU3RhdGU6Ok5vbmUgJiYgbWV0YWRh
dGEuaWQgIT0gSWQ6OmtFYm1sKQorICAgICAgICB8fCAobV9zdGF0ZSA9PSBTdGF0ZTo6UmVhZEVi
bWwgJiYgbWV0YWRhdGEuaWQgIT0gSWQ6OmtTZWdtZW50KQorICAgICAgICB8fCAobV9zdGF0ZSA9
PSBTdGF0ZTo6UmVhZGluZ1NlZ21lbnQgJiYgbWV0YWRhdGEuaWQgIT0gSWQ6OmtJbmZvKQorICAg
ICAgICB8fCAobV9zdGF0ZSA9PSBTdGF0ZTo6UmVhZEluZm8gJiYgbWV0YWRhdGEuaWQgIT0gSWQ6
OmtUcmFja3MpCisgICAgICAgIHx8IChtX3N0YXRlID09IFN0YXRlOjpSZWFkVHJhY2sgJiYgbWV0
YWRhdGEuaWQgIT0gSWQ6OmtUcmFja0VudHJ5ICYmIG1ldGFkYXRhLmlkICE9IElkOjprQ2x1c3Rl
cikKKyAgICAgICAgfHwgKG1ldGFkYXRhLmlkID09IElkOjprQ3VlcyB8fCBtZXRhZGF0YS5pZCA9
PSBJZDo6a0NoYXB0ZXJzKSkgeworICAgICAgICAqYWN0aW9uID0gQWN0aW9uOjprU2tpcDsKKyAg
ICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CisgICAgfQorCisgICAg
aWYgKG1ldGFkYXRhLmlkID09IElkOjprRWJtbCkKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpS
ZWFkaW5nRWJtbDsKKyAgICBlbHNlIGlmIChtZXRhZGF0YS5pZCA9PSBJZDo6a1NlZ21lbnQpCisg
ICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZGluZ1NlZ21lbnQ7CisgICAgZWxzZSBpZiAobWV0
YWRhdGEuaWQgPT0gSWQ6OmtJbmZvKQorICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWRpbmdJ
bmZvOworICAgIGVsc2UgaWYgKG1ldGFkYXRhLmlkID09IElkOjprVHJhY2tzKQorICAgICAgICBt
X3N0YXRlID0gU3RhdGU6OlJlYWRpbmdUcmFja3M7CisgICAgZWxzZSBpZiAobWV0YWRhdGEuaWQg
PT0gSWQ6OmtUcmFja0VudHJ5KQorICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWRpbmdUcmFj
azsKKyAgICBlbHNlIGlmIChtZXRhZGF0YS5pZCA9PSBJZDo6a0NsdXN0ZXIpCisgICAgICAgIG1f
c3RhdGUgPSBTdGF0ZTo6UmVhZGluZ0NsdXN0ZXI7CisKKyAgICByZXR1cm4gU3RhdHVzKFN0YXR1
czo6a09rQ29tcGxldGVkKTsKK30KKworU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9u
RWJtbChjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBFYm1sJiBlYm1sKQor
eworICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CisgICAgaWYgKGVibWwuZG9jX3R5cGUuaXNf
cHJlc2VudCgpICYmIGVibWwuZG9jX3R5cGUudmFsdWUoKS5jb21wYXJlKCJ3ZWJtIikpCisgICAg
ICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjpDb2RlKEVycm9yQ29kZTo6SW52YWxpZERvY1R5cGUp
KTsKKworICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50RW5jb3VudGVyZWQgPSB0cnVlOworICAg
IG1faW5pdGlhbGl6YXRpb25TZWdtZW50ID0gV1RGOjptYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxs
b2NDaGVjazxJbml0aWFsaXphdGlvblNlZ21lbnQ+KCk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpS
ZWFkRWJtbDsKKworICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworfQor
CitTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25TZWdtZW50QmVnaW4oY29uc3QgRWxl
bWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgQWN0aW9uKiBhY3Rpb24pCit7CisgICAgVU5VU0VEX1BB
UkFNKG1ldGFkYXRhKTsKKyAgICBpZiAoIW1faW5pdGlhbGl6YXRpb25TZWdtZW50RW5jb3VudGVy
ZWQpCisgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjpDb2RlKEVycm9yQ29kZTo6SW52YWxp
ZEluaXRTZWdtZW50KSk7CisKKyAgICBBU1NFUlQoYWN0aW9uKTsKKyAgICBpZiAoIWFjdGlvbikK
KyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworICAgICph
Y3Rpb24gPSBBY3Rpb246OmtSZWFkOworCisgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0Nv
bXBsZXRlZCk7Cit9CisKK1N0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkluZm8oY29u
c3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uc3QgSW5mbyYgaW5mbykKK3sKKyAgICBV
TlVTRURfUEFSQU0obWV0YWRhdGEpOworICAgIGlmICghbV9pbml0aWFsaXphdGlvblNlZ21lbnRF
bmNvdW50ZXJlZCB8fCAhbV9pbml0aWFsaXphdGlvblNlZ21lbnQpCisgICAgICAgIHJldHVybiBT
dGF0dXMoU3RhdHVzOjpDb2RlKEVycm9yQ29kZTo6SW52YWxpZEluaXRTZWdtZW50KSk7CisKKyAg
ICBhdXRvIHRpbWVjb2RlU2NhbGUgPSBpbmZvLnRpbWVjb2RlX3NjYWxlLmlzX3ByZXNlbnQoKSA/
IGluZm8udGltZWNvZGVfc2NhbGUudmFsdWUoKSA6IDEwMDAwMDA7CisgICAgbV90aW1lc2NhbGUg
PSAxMDAwMDAwMDAwIC8gdGltZWNvZGVTY2FsZTsKKyAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVu
dC0+ZHVyYXRpb24gPSBpbmZvLmR1cmF0aW9uLmlzX3ByZXNlbnQoKSA/IE1lZGlhVGltZShpbmZv
LmR1cmF0aW9uLnZhbHVlKCksIG1fdGltZXNjYWxlKSA6IE1lZGlhVGltZTo6aW5kZWZpbml0ZVRp
bWUoKTsKKyAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWRJbmZvOworCisgICAgcmV0dXJuIFN0YXR1
cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7Cit9CisKK1N0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpPbkNsdXN0ZXJCZWdpbihjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25z
dCBDbHVzdGVyJiBjbHVzdGVyLCBBY3Rpb24qIGFjdGlvbikKK3sKKyAgICBVTlVTRURfUEFSQU0o
bWV0YWRhdGEpOworICAgIFVOVVNFRF9QQVJBTShjbHVzdGVyKTsKKyAgICBBU1NFUlQoYWN0aW9u
KTsKKyAgICBpZiAoIWFjdGlvbikKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RF
bm91Z2hNZW1vcnkpOworCisgICAgaWYgKG1faW5pdGlhbGl6YXRpb25TZWdtZW50RW5jb3VudGVy
ZWQgJiYgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKSB7CisgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5p
dGlhbGl6YXRpb25TZWdtZW50ID0gV1RGTW92ZSgqbV9pbml0aWFsaXphdGlvblNlZ21lbnQpXSAo
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxs
YmFjayhXVEZNb3ZlKGluaXRpYWxpemF0aW9uU2VnbWVudCkpOworICAgICAgICB9KTsKKyAgICB9
CisgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCA9IGZhbHNlOworICAgIG1f
aW5pdGlhbGl6YXRpb25TZWdtZW50ID0gbnVsbHB0cjsKKworICAgICphY3Rpb24gPSBBY3Rpb246
OmtSZWFkOworCisgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7Cit9CisK
K1N0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblRyYWNrRW50cnkoY29uc3QgRWxlbWVu
dE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uc3QgVHJhY2tFbnRyeSYgdHJhY2tFbnRyeSkKK3sKKyAg
ICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZFRyYWNr
OworICAgIGlmICghdHJhY2tFbnRyeS50cmFja190eXBlLmlzX3ByZXNlbnQoKSkKKyAgICAgICAg
cmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CisKKyAgICBhdXRvIHRyYWNrVHlw
ZSA9IHRyYWNrRW50cnkudHJhY2tfdHlwZS52YWx1ZSgpOworICAgIGlmICh0cmFja1R5cGUgPT0g
VHJhY2tUeXBlOjprVmlkZW8pCisgICAgICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50LT52aWRl
b1RyYWNrcy5hcHBlbmQoeyBNZWRpYURlc2NyaXB0aW9uV2ViTTo6Y3JlYXRlKFRyYWNrRW50cnko
dHJhY2tFbnRyeSkpLCBWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZShUcmFja0VudHJ5KHRy
YWNrRW50cnkpKSB9KTsKKyAgICBlbHNlIGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprQXVk
aW8pCisgICAgICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50LT5hdWRpb1RyYWNrcy5hcHBlbmQo
eyBNZWRpYURlc2NyaXB0aW9uV2ViTTo6Y3JlYXRlKFRyYWNrRW50cnkodHJhY2tFbnRyeSkpLCBB
dWRpb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZShUcmFja0VudHJ5KHRyYWNrRW50cnkpKSB9KTsK
KworICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworfQorCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQ3MWMyNjg1MGQwOWQxYjhmMmFl
ZjZiNDIzYjU5ZmRlODA2MTUzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaApAQCAtMCwwICsx
LDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU291cmNlQnVm
ZmVyUGFyc2VyLmgiCisjaW5jbHVkZSA8d2VibS9jYWxsYmFjay5oPgorI2luY2x1ZGUgPHdlYm0v
c3RhdHVzLmg+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CisjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwordHlwZWRlZiBzdHJ1Y3Qgb3Bh
cXVlQ01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOworCituYW1lc3BhY2Ugd2VibSB7
CitjbGFzcyBXZWJtUGFyc2VyOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNv
dXJjZUJ1ZmZlclBhcnNlcldlYk0gOiBwdWJsaWMgU291cmNlQnVmZmVyUGFyc2VyLCBwcml2YXRl
IHdlYm06OkNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBpc0NvbnRlbnRUeXBl
U3VwcG9ydGVkKGNvbnN0IENvbnRlbnRUeXBlJik7CisKKyAgICBTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNKCk7CisgICAgflNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKTsKKworICAgIHN0YXRpYyBib29s
IGlzQXZhaWxhYmxlKCk7CisKKyAgICBjb25zdCB3ZWJtOjpTdGF0dXMmIHN0YXR1cygpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdHVzOyB9CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBU
eXBlOjpXZWJNOyB9CisgICAgdm9pZCBhcHBlbmREYXRhKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYm
LCBBcHBlbmRGbGFncyA9IEFwcGVuZEZsYWdzOjpOb25lKSBmaW5hbDsKKyAgICB2b2lkIGZsdXNo
UGVuZGluZ01lZGlhRGF0YSgpIGZpbmFsOworICAgIHZvaWQgc2V0U2hvdWxkUHJvdmlkZU1lZGlh
RGF0YUZvclRyYWNrSUQoYm9vbCwgaW50MzJfdCkgZmluYWw7CisgICAgYm9vbCBzaG91bGRQcm92
aWRlTWVkaWFkYXRhRm9yVHJhY2tJRChpbnQzMl90KSBmaW5hbDsKKyAgICB2b2lkIHJlc2V0UGFy
c2VyU3RhdGUoKSBmaW5hbDsKKworICAgIGVudW0gY2xhc3MgRXJyb3JDb2RlIDogaW50MzJfdCB7
CisgICAgICAgIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk1FcnJvckNvZGVTdGFydCA9IDIwMDAsCisg
ICAgICAgIEludmFsaWREb2NUeXBlLAorICAgICAgICBJbnZhbGlkSW5pdFNlZ21lbnQsCisgICAg
fTsKKworcHJpdmF0ZToKKyAgICAvLyB3ZWJtOjpDYWxsYmFjaworICAgIHdlYm06OlN0YXR1cyBP
bkVsZW1lbnRCZWdpbihjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmLCB3ZWJtOjpBY3Rpb24q
KSBmaW5hbDsKKyAgICB3ZWJtOjpTdGF0dXMgT25FYm1sKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRh
ZGF0YSYsIGNvbnN0IHdlYm06OkVibWwmKSBmaW5hbDsKKyAgICB3ZWJtOjpTdGF0dXMgT25TZWdt
ZW50QmVnaW4oY29uc3Qgd2VibTo6RWxlbWVudE1ldGFkYXRhJiwgd2VibTo6QWN0aW9uKikgZmlu
YWw7CisgICAgd2VibTo6U3RhdHVzIE9uSW5mbyhjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEm
LCBjb25zdCB3ZWJtOjpJbmZvJikgZmluYWw7CisgICAgd2VibTo6U3RhdHVzIE9uQ2x1c3RlckJl
Z2luKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYsIGNvbnN0IHdlYm06OkNsdXN0ZXImLCB3
ZWJtOjpBY3Rpb24qKSBmaW5hbDsKKyAgICB3ZWJtOjpTdGF0dXMgT25UcmFja0VudHJ5KGNvbnN0
IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYsIGNvbnN0IHdlYm06OlRyYWNrRW50cnkmKSBmaW5hbDsK
KworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbml0aWFsaXphdGlvblNlZ21lbnQ+IG1faW5pdGlhbGl6
YXRpb25TZWdtZW50OworICAgIHdlYm06OlN0YXR1cyBtX3N0YXR1czsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8d2VibTo6V2VibVBhcnNlcj4gbV9wYXJzZXI7CisgICAgYm9vbCBtX2luaXRpYWxpemF0
aW9uU2VnbWVudEVuY291bnRlcmVkIHsgZmFsc2UgfTsKKyAgICB1aW50MzJfdCBtX3RpbWVzY2Fs
ZSB7IDEwMDAgfTsKKworICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsKKyAgICAgICAg
Tm9uZSwKKyAgICAgICAgUmVhZGluZ0VibWwsCisgICAgICAgIFJlYWRFYm1sLAorICAgICAgICBS
ZWFkaW5nU2VnbWVudCwKKyAgICAgICAgUmVhZGluZ0luZm8sCisgICAgICAgIFJlYWRJbmZvLAor
ICAgICAgICBSZWFkaW5nVHJhY2tzLAorICAgICAgICBSZWFkaW5nVHJhY2ssCisgICAgICAgIFJl
YWRUcmFjaywKKyAgICAgICAgUmVhZGluZ0NsdXN0ZXIsCisgICAgfTsKKyAgICBTdGF0ZSBtX3N0
YXRlIHsgU3RhdGU6Ok5vbmUgfTsKKworICAgIFZlY3Rvcjx3ZWJtOjpUcmFja0VudHJ5PiBtX3Ry
YWNrczsKK307CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQYXJzZXImIHBhcnNlcikgeyByZXR1cm4gcGFyc2VyLnR5cGUoKSA9
PSBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlR5cGU6OldlYk07IH0KK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0KaW5kZXggNTY4NTk1MzNkZWI2
YWVjYzkwYzU3ZTE5NTEyY2ZkZDhlMGUyZTRiMS4uMGM3ZWQyY2E5YjdlZTcxOWExNWI1MGYyZjUy
MjQ3Y2Y3YWVkZWIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0KQEAgLTEyMiw3ICsxMjIsNyBA
QCBib29sIHZhbGlkYXRlVlBQYXJhbWV0ZXJzKFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkJiBj
b2RlY0NvbmZpZ3VyYXRpb24sIE1lZGlhQwogICAgICAgICBpbmZvLnBvd2VyRWZmaWNpZW50ID0g
dHJ1ZTsKIAogICAgICAgICAvLyBIVyBWUDkgRGVjb2RlciBzdXBwb3J0cyBQcm9maWxlIDAgJiAy
OgotICAgICAgICBpZiAoIWNvZGVjQ29uZmlndXJhdGlvbi5wcm9maWxlICYmIGNvZGVjQ29uZmln
dXJhdGlvbi5wcm9maWxlICE9IDIpCisgICAgICAgIGlmIChjb2RlY0NvbmZpZ3VyYXRpb24ucHJv
ZmlsZSAmJiBjb2RlY0NvbmZpZ3VyYXRpb24ucHJvZmlsZSAhPSAyKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIEhXIFZQOSBEZWNvZGVyIHN1cHBvcnRzIHVwIHRvIExl
dmVsIDY6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjliNTc2
OTI4Nzg1YTIwYmZhMGRkNTAzNDU2Mjc0M2MyNzg1OTJlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJN
LmNwcApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlV2ViTS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1JlZjxWaWRlb1RyYWNrUHJpdmF0ZVdlYk0+IFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6Y3Jl
YXRlKHdlYm06OlRyYWNrRW50cnkmJiB0cmFja0VudHJ5KQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFZpZGVvVHJhY2tQcml2YXRlV2ViTShXVEZNb3ZlKHRyYWNrRW50cnkpKSk7Cit9CisK
K1ZpZGVvVHJhY2tQcml2YXRlV2ViTTo6VmlkZW9UcmFja1ByaXZhdGVXZWJNKHdlYm06OlRyYWNr
RW50cnkmJiB0cmFja0VudHJ5KQorICAgIDogbV90cmFjayhXVEZNb3ZlKHRyYWNrRW50cnkpKQor
eworICAgIGlmIChtX3RyYWNrLmlzX2VuYWJsZWQuaXNfcHJlc2VudCgpKQorICAgICAgICBzZXRT
ZWxlY3RlZChtX3RyYWNrLmlzX2VuYWJsZWQudmFsdWUoKSk7Cit9CisKK0F0b21TdHJpbmcgVmlk
ZW9UcmFja1ByaXZhdGVXZWJNOjppZCgpIGNvbnN0Cit7CisgICAgaWYgKG1fdHJhY2tJRC5pc051
bGwoKSkKKyAgICAgICAgbV90cmFja0lEID0gbV90cmFjay50cmFja191aWQuaXNfcHJlc2VudCgp
ID8gQXRvbVN0cmluZzo6bnVtYmVyKG1fdHJhY2sudHJhY2tfdWlkLnZhbHVlKCkpIDogZW1wdHlB
dG9tKCk7CisgICAgcmV0dXJuIG1fdHJhY2tJRDsKK30KKworQXRvbVN0cmluZyBWaWRlb1RyYWNr
UHJpdmF0ZVdlYk06OmxhYmVsKCkgY29uc3QKK3sKKyAgICBpZiAobV9sYWJlbC5pc051bGwoKSkK
KyAgICAgICAgbV9sYWJlbCA9IG1fdHJhY2submFtZS5pc19wcmVzZW50KCkgPyBBdG9tU3RyaW5n
Ojpmcm9tVVRGOChtX3RyYWNrLm5hbWUudmFsdWUoKS5kYXRhKCksIG1fdHJhY2submFtZS52YWx1
ZSgpLmxlbmd0aCgpKSA6IGVtcHR5QXRvbSgpOworICAgIHJldHVybiBtX2xhYmVsOworfQorCitB
dG9tU3RyaW5nIFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6bGFuZ3VhZ2UoKSBjb25zdAoreworICAg
IGlmIChtX2xhbmd1YWdlLmlzTnVsbCgpKQorICAgICAgICBtX2xhbmd1YWdlID0gbV90cmFjay5s
YW5ndWFnZS5pc19wcmVzZW50KCkgPyBBdG9tU3RyaW5nOjpmcm9tVVRGOChtX3RyYWNrLmxhbmd1
YWdlLnZhbHVlKCkuZGF0YSgpLCBtX3RyYWNrLmxhbmd1YWdlLnZhbHVlKCkubGVuZ3RoKCkpIDog
ZW1wdHlBdG9tKCk7CisgICAgcmV0dXJuIG1fbGFuZ3VhZ2U7Cit9CisKK2ludCBWaWRlb1RyYWNr
UHJpdmF0ZVdlYk06OnRyYWNrSW5kZXgoKSBjb25zdAoreworICAgIGlmIChtX3RyYWNrLnRyYWNr
X251bWJlci5pc19wcmVzZW50KCkpCisgICAgICAgIHJldHVybiBtX3RyYWNrLnRyYWNrX251bWJl
ci52YWx1ZSgpOworICAgIHJldHVybiAwOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2Vi
TS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBiYmZmMmJhMWRkN2U1YjIxNWZhODQ1Y2I4YjVjN2RjMTk4MDI0YmUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUg
PHdlYm0vZG9tX3R5cGVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVmlkZW9U
cmFja1ByaXZhdGVXZWJNIGZpbmFsIDogcHVibGljIFZpZGVvVHJhY2tQcml2YXRlIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmPFZpZGVvVHJhY2tQcml2YXRlV2ViTT4gY3JlYXRlKHdlYm06OlRy
YWNrRW50cnkmJik7CisgICAgdmlydHVhbCB+VmlkZW9UcmFja1ByaXZhdGVXZWJNKCkgPSBkZWZh
dWx0OworCisgICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IGZpbmFsOworICAgIEF0b21TdHJpbmcg
bGFiZWwoKSBjb25zdCBmaW5hbDsKKyAgICBBdG9tU3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgZmlu
YWw7CisgICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBW
aWRlb1RyYWNrUHJpdmF0ZVdlYk0od2VibTo6VHJhY2tFbnRyeSYmKTsKKyAgICB3ZWJtOjpUcmFj
a0VudHJ5IG1fdHJhY2s7CisgICAgbXV0YWJsZSBBdG9tU3RyaW5nIG1fdHJhY2tJRDsKKyAgICBt
dXRhYmxlIEF0b21TdHJpbmcgbV9sYWJlbDsKKyAgICBtdXRhYmxlIEF0b21TdHJpbmcgbV9sYW5n
dWFnZTsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZl
cmVuY2VzLnlhbWwgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmlu
ZGV4IGUwNGNhZGNhMmRjNWE4YzQxOWI3MmZhMTllZTczZmU3M2ExMGI2MDEuLjE5ODQzZWIwZDM2
OTYzY2UzZmNjZTUxMzU5MDQ1YzAyZDliMDUzZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UHJlZmVyZW5jZXMueWFtbApAQCAtNjY4LDYgKzY2OCwxNCBAQCBWUDlEZWNvZGVyRW5hYmxlZDoK
ICAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIFZQOSBkZWNvZGVyIgogICBjYXRl
Z29yeTogZXhwZXJpbWVudGFsCiAKK1dlYk1QYXJzZXJFbmFibGVkOgorICB0eXBlOiBib29sCisg
IGRlZmF1bHRWYWx1ZTogZmFsc2UKKyAgd2ViY29yZUJpbmRpbmc6IFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMKKyAgaHVtYW5SZWFkYWJsZU5hbWU6ICJXZWJNIE1TRSBwYXJzZXIiCisgIGh1bWFuUmVh
ZGFibGVEZXNjcmlwdGlvbjogIkVuYWJsZSBXZWJNIE1TRSBwYXJzZXIiCisgIGNhdGVnb3J5OiBl
eHBlcmltZW50YWwKKwogVXNlTGVnYWN5VGV4dEFsaWduUG9zaXRpb25lZEVsZW1lbnRCZWhhdmlv
cjoKICAgdHlwZTogYm9vbAogICBkZWZhdWx0VmFsdWU6IGZhbHNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404661</attachid>
            <date>2020-07-19 01:53:03 -0700</date>
            <delta_ts>2020-07-19 09:05:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214529-20200719015302.patch</filename>
            <type>text/plain</type>
            <size>138632</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBhY2ZhNzFkMTE0MWY2M2Q0ZWYxMGJkMmY2NjE5YzcxYTNhNWU4ZTQxLi41MGE1
MmNkNTIxZDljMGEzYzQ3N2U5MzhkZTc5MmNiZDdiNjVlYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNy0xOSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBleHBlcmltZW50
YWwgTVNFIFdlYk0gcGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTQ1MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUd28gZHJpdmUtYnkgZml4ZXM6IEFkZCBzb21lIG1pc3NpbmcgZXhwb3J0IHRv
IHRoZSBsaWJ3ZWJydGMuKi5leHAgZmlsZXMsIGFuZCBleHBvcnQgdGhlIHdlYm0gaGVhZGVycwor
ICAgICAgICBhcyBQcml2YXRlLCBub3QgUHVibGljLCBzbyB0aGV5J3JlIHB1dCBpbiB0aGUgY29y
cmVjdCBkaXJlY3RvcnkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9T
LmV4cDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBsaWJ3
ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wNy0xNyAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldml3ZWQgYnVpbGQgZml4IGFm
dGVyIHIyNjU1OTI7IHJhdGhlciB0aGFuIHJlbW92ZSB0aGUgZGVhZCBjb2RlIGNhdXNpbmcgbGlu
ayBlcnJvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMzdjZDRhNGM4YzYwYmM0ZjViOTkxZGQyOGJkMDIxOThj
ZjQzMmE4Li43Mzc4Mjc4MTVlNDIyYzVlNTllMGIxZWE0ZGU2MTA5YmJhNDlhNGEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQ0IEBACisyMDIwLTA3LTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIGV4cGVyaW1lbnRhbCBNU0UgV2ViTSBw
YXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NDUyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgeWV0IHBhcnNlIGFjdHVhbCBtZWRpYSBzYW1wbGVz
OyBhcyBvZiB5ZXQgaXQgb25seSBwYXJzZXMgYXVkaW8gYW5kIHZpZGVvCisgICAgICAgIHRyYWNr
IGluZm9ybWF0aW9uLiBNZWRpYSBzYW1wbGUgcGFyc2luZyBpcyB1cGNvbWluZy4KKworICAgICAg
ICBBZGQgYW4gZXhwZXJpbWVudGFsIE1TRSBXZWJNIHBhcnNlciB0byBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy4gVGhpcyB3aWxsIHJlcXVpcmUgZXh0ZW5zaXZlIHJlZmFjdG9yaW5nCisgICAg
ICAgIG9mIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLCB0byBleHRyYWN0IG91dCB0aGUgcGFy
c2VyIGludG8gYSBuZXcsIHZpcnR1YWxpemVkIGNsYXNzLiBUaGlzIG5ldyBwYXJzZXIgY2FuCisg
ICAgICAgIHRha2UgYWR2YW50YWdlIG9mIG5ldyBDKys+MTEgZmVhdHVyZXMgc3VjaCBhcyBsYW1i
ZGFzIHRvIGNsZWFuIHVwIHNvbWUgcHJvYmxlbWF0aWMgZXhpc3RpbmcgY29kZS4gVGhlIG5ldwor
ICAgICAgICB2aXJ0dWFsaXplZCBTb3VyY2VCdWZmZXJQYXJzZXIgY2xhc3MgdXNlcyBwYXNzZWQt
aW4gRnVuY3Rpb24gb2JqZWN0cywgcmF0aGVyIHRoYW4gcHVyZS12aXJ0dWFsIENsaWVudCBjbGFz
c2VzCisgICAgICAgIHRvIG5vdGlmeSBpdCdzIHBhcmVudCBvYmplY3Qgd2hlbiB0aGUgcGFyc2Vy
IGVuY291bnRlcnMgaW5pdGlhbGl6YXRpb24tIG9yIG1lZGlhLWRhdGEuCisKKyAgICAgICAgQmVj
YXVzZSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyB3aWxsIG5vdyBoYXZlIHRvIGRlYWwgd2l0
aCBBdWRpb1RyYWNrUHJpdmF0ZSBhbmQgVmlkZW9UcmFja1ByaXZhdGUgb2JqZWN0cworICAgICAg
ICB0aGF0IGFyZSBub3QgbmVjZXNzYXJpbHkgQXVkaW8tIGFuZCBWaWRlb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyBzdWJjbGFzc2VzLCBtb3ZlIHRob3NlIGNsYXNzZXMgbm90aWZpY2F0
aW9uCisgICAgICAgIGZlYXR1cmVzIHVwIGludG8gQXVkaW8tIGFuZCBWaWRlb1RyYWNrUHJpdmF0
ZSwgYWdhaW4gdXNpbmcgYSBGdW5jdGlvbiBvYmplY3QgcmF0aGVyIHRoYW4gYSBjbGllbnQgY2xh
c3MuCisKKyAgICAgICAgQWRkIGEgbmV3IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0gYW5kIGFzc29j
aWF0ZWQgQXVkaW9UcmFja1ByaXZhdGVXZWJNIGFuZCBWaWRlb1RyYWNrUHJpdmF0ZVdlYm0gY2xh
c2Vzcywgd2hpY2gKKyAgICAgICAgdXNlIGxpYndlYm0gdmlhIGxpYndlYnJ0YyB0byBwYXJzZSBh
cHBlbmRlZCBidWZmZXJzLgorCisgICAgICAgIFRoaXMgZWFybHkgaW1wbGVtZW50YXRpb24gaXMg
bm90IHlldCBhYmxlIHRvIHBhc3MgdGhlIFdlYk0gV1BUIG1lZGlhLXNvdXJjZS8gdGVzdHMsIGFz
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDCisgICAgICAgIHdpbGwgb25seSBjYXVzZSBhICJy
ZXNpemUiIGV2ZW50IHRvIGJlIGZpcmVkIHdoZW4gYSBNZWRpYVNhbXBsZSBpcyBlbnF1ZXVlZCBv
ciBkZWNvZGluZy4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2V0V2ViTVBhcnNlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6d2ViTVBhcnNlckVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Ry
YWNrUHJpdmF0ZTo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJp
dmF0ZTo6c2V0RW5hYmxlZENoYW5nZWRDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQ
cml2YXRlOjpzZXRTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0
ZTo6c2V0U2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0RW5hYmxlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OnN1cHBvcnRzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5oOiBBZGRlZC4KKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbTogQWRkZWQu
CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIGluaXRXaXRoUGFyc2Vy
OnBhcmVudDpdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgZGVh
bGxvY10pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBpbnZhbGlk
YXRlXSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbURh
dGFQYXJzZXI6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldDpdKToKKyAgICAgICAgKC1bV2ViQVZT
dHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3RyZWFtRGF0YVBhcnNlcjpkaWRQYXJzZVN0cmVhbURh
dGFBc0Fzc2V0OndpdGhEaXNjb250aW51aXR5Ol0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURh
dGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0
YVdpdGhFcnJvcjpdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIg
c3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlTWVkaWFEYXRhOmZvclRyYWNrSUQ6bWVkaWFUeXBl
OmZsYWdzOl0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJl
YW1EYXRhUGFyc2VyV2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0
YTpmb3JUcmFja0lEOl0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5l
ciBzdHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YTpmb3JUcmFja0lEOl0pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakM6OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OnNob3VsZFByb3Zp
ZGVNZWRpYWRhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakM6OnJlc2V0UGFyc2VyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldCk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRGYWlsVG9QYXJzZVN0cmVh
bURhdGFXaXRoRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElu
aXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjp+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRFbmNv
dW50ZXJFcnJvckR1cmluZ1BhcnNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRL
ZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmRDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpyZXNldFBhcnNlclN0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkZXN0cm95UGFyc2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjbGVhclRyYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFu
Z2VTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpwYXJzZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmF0dGVtcHRUb0RlY3J5cHQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGVXZWJNOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
a1ByaXZhdGVXZWJNOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk0pOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9UcmFja1ByaXZhdGVXZWJNOjppZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1RyYWNrUHJpdmF0ZVdlYk06OmxhYmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
VHJhY2tQcml2YXRlV2ViTTo6bGFuZ3VhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGVXZWJNOjp0cmFja0luZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OmlzQ29udGVudFR5cGVTdXBw
b3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0RGlkUGFyc2VJ
bml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXI6OnNldERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0RGlkUHJvdmlkZU1lZGlhRGF0
YUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0V2ls
bFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OnNldERpZFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNXZWJtUGFyc2VyQXZhaWxhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OnN1cHBvcnRlZFdlYk1Db2RlY3MpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmFwcGVuZERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6Zmx1c2hQZW5k
aW5nTWVkaWFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lE
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnJlc2V0UGFyc2Vy
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FbGVt
ZW50QmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25F
Ym1sKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uU2VnbWVu
dEJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uSW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkNsdXN0ZXJC
ZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblRyYWNr
RW50cnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpzdGF0dXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6dHlwZSBjb25zdCk6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
dmFsaWRhdGVWUFBhcmFtZXRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFja1ByaXZhdGVXZWJNOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFj
a1ByaXZhdGVXZWJNOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk0pOgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFja1ByaXZhdGVXZWJNOjppZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b1RyYWNrUHJpdmF0ZVdlYk06OmxhYmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
VHJhY2tQcml2YXRlV2ViTTo6bGFuZ3VhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFja1ByaXZhdGVXZWJNOjp0cmFja0luZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaDogQWRkZWQuCisKIDIwMjAt
MDctMTggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIGZpeCBidWlsZCB3YXJuaW5ncyBpbiB0aGUgV2ViWFIgYmFja2VuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAxM2M1YjFlYmE4MzNmYjdhNmQxNjRjN2NhOTdhNTBkNDUxYTU5NDMwLi40M2I4ODc4
OTFhOWNiYzgyMDI3MzIxMmU5ZDc2NGM2NjFmYTc2NDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDIwLTA3LTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAg
ICAgIFtDb2NvYV0gQWRkIGV4cGVyaW1lbnRhbCBNU0UgV2ViTSBwYXJzZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDUyOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhbiBFeHBlcmltZW50YWwg
c2V0dGluZyB0byBlbmFibGUgdGhlIE1TRSBXZWJNIHBhcnNlciAob2ZmIGJ5IGRlZmF1bHQpLgor
CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisKIDIwMjAtMDQtMzAgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIGRhdGEgY29w
aWVzIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgY3VzdG9tIFVSTCBzY2hlbWUgaGFuZGxlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xp
YndlYnJ0Yy5pT1MuZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRp
b25zL2xpYndlYnJ0Yy5pT1MuZXhwCmluZGV4IGQwNGE5MTk2ODZlOWNjODk2N2E4YWFkMDQ2OWM2
ODU1NDY1NzI3OWIuLmE3YmNjN2I1MTRjM2JlNjNhYWRjYTBiMjEyNzFmODE1ZDkwNTQzMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3
ZWJydGMuaU9TLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJh
dGlvbnMvbGlid2VicnRjLmlPUy5leHAKQEAgLTI4MCwxMyArMjgwLDIwIEBAIF9fWlRWTjR3ZWJt
MTJCdWZmZXJSZWFkZXJFCiBfX1pUVk40d2VibThDYWxsYmFja0UKIF9fWk40d2VibThDYWxsYmFj
azEwT25CbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRQogX19aTjR3
ZWJtOENhbGxiYWNrMTBPbkN1ZVBvaW50RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU184Q3Vl
UG9pbnRFCitfX1pONHdlYm04Q2FsbGJhY2sxMk9uQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1l
dGFkYXRhRVJLTlNfNUJsb2NrRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPbkNs
dXN0ZXJFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzdDbHVzdGVyRQogX19aTjR3ZWJt
OENhbGxiYWNrMTJPblNlZ21lbnRFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUUKIF9fWk40d2Vi
bThDYWxsYmFjazEyT25UcmFja0VudHJ5RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMFRy
YWNrRW50cnlFCitfX1pONHdlYm04Q2FsbGJhY2sxNE9uQ2x1c3RlckJlZ2luRVJLTlNfMTVFbGVt
ZW50TWV0YWRhdGFFUktOU183Q2x1c3RlckVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFj
azE0T25FZGl0aW9uRW50cnlFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEyRWRpdGlvbkVu
dHJ5RQorX19aTjR3ZWJtOENhbGxiYWNrMTRPbkVsZW1lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1l
dGFkYXRhRVBOU182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrMTRPblNlZ21lbnRCZWdpbkVS
S05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTVP
bkJsb2NrR3JvdXBFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEwQmxvY2tHcm91cEUK
IF9fWk40d2VibThDYWxsYmFjazE2T25TaW1wbGVCbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFk
YXRhRVJLTlNfMTFTaW1wbGVCbG9ja0UKIF9fWk40d2VibThDYWxsYmFjazE2T25Vbmtub3duRWxl
bWVudEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182UmVhZGVyRVB5CitfX1pONHdlYm04Q2Fs
bGJhY2sxN09uQmxvY2tHcm91cEJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rp
b25FCitfX1pONHdlYm04Q2FsbGJhY2sxOE9uU2ltcGxlQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVu
dE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVCbG9ja0VQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxs
YmFjazRTa2lwRVBOU182UmVhZGVyRVB5CiBfX1pONHdlYm04Q2FsbGJhY2s1T25UYWdFUktOU18x
NUVsZW1lbnRNZXRhZGF0YUVSS05TXzNUYWdFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25FYm1sRVJL
TlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU180RWJtbEUKIF9fWk40d2VibThDYWxsYmFjazZPbklu
Zm9FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzRJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhw
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5p
T1NzaW0uZXhwCmluZGV4IGQwNGE5MTk2ODZlOWNjODk2N2E4YWFkMDQ2OWM2ODU1NDY1NzI3OWIu
LmE3YmNjN2I1MTRjM2JlNjNhYWRjYTBiMjEyNzFmODE1ZDkwNTQzMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2lt
LmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGli
d2VicnRjLmlPU3NpbS5leHAKQEAgLTI4MCwxMyArMjgwLDIwIEBAIF9fWlRWTjR3ZWJtMTJCdWZm
ZXJSZWFkZXJFCiBfX1pUVk40d2VibThDYWxsYmFja0UKIF9fWk40d2VibThDYWxsYmFjazEwT25C
bG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRQogX19aTjR3ZWJtOENh
bGxiYWNrMTBPbkN1ZVBvaW50RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU184Q3VlUG9pbnRF
CitfX1pONHdlYm04Q2FsbGJhY2sxMk9uQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRh
RVJLTlNfNUJsb2NrRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPbkNsdXN0ZXJF
bmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzdDbHVzdGVyRQogX19aTjR3ZWJtOENhbGxi
YWNrMTJPblNlZ21lbnRFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUUKIF9fWk40d2VibThDYWxs
YmFjazEyT25UcmFja0VudHJ5RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMFRyYWNrRW50
cnlFCitfX1pONHdlYm04Q2FsbGJhY2sxNE9uQ2x1c3RlckJlZ2luRVJLTlNfMTVFbGVtZW50TWV0
YWRhdGFFUktOU183Q2x1c3RlckVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFjazE0T25F
ZGl0aW9uRW50cnlFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEyRWRpdGlvbkVudHJ5RQor
X19aTjR3ZWJtOENhbGxiYWNrMTRPbkVsZW1lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRh
RVBOU182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrMTRPblNlZ21lbnRCZWdpbkVSS05TXzE1
RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTVPbkJsb2Nr
R3JvdXBFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEwQmxvY2tHcm91cEUKIF9fWk40
d2VibThDYWxsYmFjazE2T25TaW1wbGVCbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJL
TlNfMTFTaW1wbGVCbG9ja0UKIF9fWk40d2VibThDYWxsYmFjazE2T25Vbmtub3duRWxlbWVudEVS
S05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182UmVhZGVyRVB5CitfX1pONHdlYm04Q2FsbGJhY2sx
N09uQmxvY2tHcm91cEJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rpb25FCitf
X1pONHdlYm04Q2FsbGJhY2sxOE9uU2ltcGxlQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFk
YXRhRVJLTlNfMTFTaW1wbGVCbG9ja0VQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxsYmFjazRT
a2lwRVBOU182UmVhZGVyRVB5CiBfX1pONHdlYm04Q2FsbGJhY2s1T25UYWdFUktOU18xNUVsZW1l
bnRNZXRhZGF0YUVSS05TXzNUYWdFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25FYm1sRVJLTlNfMTVF
bGVtZW50TWV0YWRhdGFFUktOU180RWJtbEUKIF9fWk40d2VibThDYWxsYmFjazZPbkluZm9FUktO
U18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzRJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCmlu
ZGV4IDhkODViNWI4YjM3NTRhZGRlZmRlN2MyNGYyZjIwYTQ2NTgzNjZhY2QuLmY4Y2M5MTMxNmJj
ZGMwOTYwNTgyYjNmM2NhNDE2NWIyZWFjMjcyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAK
QEAgLTI3OCwxMyArMjc4LDIwIEBAIF9fWlRWTjR3ZWJtMTJCdWZmZXJSZWFkZXJFCiBfX1pUVk40
d2VibThDYWxsYmFja0UKIF9fWk40d2VibThDYWxsYmFjazEwT25CbG9ja0VuZEVSS05TXzE1RWxl
bWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRQogX19aTjR3ZWJtOENhbGxiYWNrMTBPbkN1ZVBvaW50
RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU184Q3VlUG9pbnRFCitfX1pONHdlYm04Q2FsbGJh
Y2sxMk9uQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRVBOU182
QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPbkNsdXN0ZXJFbmRFUktOU18xNUVsZW1lbnRN
ZXRhZGF0YUVSS05TXzdDbHVzdGVyRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPblNlZ21lbnRFbmRF
UktOU18xNUVsZW1lbnRNZXRhZGF0YUUKIF9fWk40d2VibThDYWxsYmFjazEyT25UcmFja0VudHJ5
RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMFRyYWNrRW50cnlFCitfX1pONHdlYm04Q2Fs
bGJhY2sxNE9uQ2x1c3RlckJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU183Q2x1c3Rl
ckVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFjazE0T25FZGl0aW9uRW50cnlFUktOU18x
NUVsZW1lbnRNZXRhZGF0YUVSS05TXzEyRWRpdGlvbkVudHJ5RQorX19aTjR3ZWJtOENhbGxiYWNr
MTRPbkVsZW1lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQorX19a
TjR3ZWJtOENhbGxiYWNrMTRPblNlZ21lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBO
U182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTVPbkJsb2NrR3JvdXBFbmRFUktOU18xNUVs
ZW1lbnRNZXRhZGF0YUVSS05TXzEwQmxvY2tHcm91cEUKIF9fWk40d2VibThDYWxsYmFjazE2T25T
aW1wbGVCbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVCbG9ja0UK
IF9fWk40d2VibThDYWxsYmFjazE2T25Vbmtub3duRWxlbWVudEVSS05TXzE1RWxlbWVudE1ldGFk
YXRhRVBOU182UmVhZGVyRVB5CitfX1pONHdlYm04Q2FsbGJhY2sxN09uQmxvY2tHcm91cEJlZ2lu
RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rpb25FCitfX1pONHdlYm04Q2FsbGJhY2sx
OE9uU2ltcGxlQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVC
bG9ja0VQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxsYmFjazRTa2lwRVBOU182UmVhZGVyRVB5
CiBfX1pONHdlYm04Q2FsbGJhY2s1T25UYWdFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzNU
YWdFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25FYm1sRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktO
U180RWJtbEUKIF9fWk40d2VibThDYWxsYmFjazZPbkluZm9FUktOU18xNUVsZW1lbnRNZXRhZGF0
YUVSS05TXzRJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL2xp
YndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRkYTczYTFi
ZmI0MTAzYTFmN2FhNDE0MzQ5ZmUwYWZhZWJjMGM4YWEuLjIyNjgyYmM1Yzk5NjY2Yjg3ZGE0ZDFk
MWQwZjZmNmI2NmFmZjBiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4
NTMsMTYgKzM4NTMsMTYgQEAKIAkJNUNGRDUzOTIxRTRCRDNBMzAwNDgyOTA4IC8qIHJvd19uZW9u
NjQuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZE
NTM4QTFFNEJEM0EzMDA0ODI5MDggLyogcm93X25lb242NC5jYyAqLzsgfTsKIAkJNUNGRDUzOTMx
RTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb24uY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZENTM4QjFFNEJEM0EzMDA0ODI5MDggLyogc2NhbGVf
bmVvbi5jYyAqLzsgfTsKIAkJNUNGRDUzOTQxRTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb242
NC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRkQ1
MzhDMUU0QkQzQTMwMDQ4MjkwOCAvKiBzY2FsZV9uZW9uNjQuY2MgKi87IH07Ci0JCUNERUJCNEFD
MjRDMDE5OUQwMEFEQkQ0NCAvKiB3ZWJtX3BhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MDgyNEMwMTkxQTAwQURCRDQ0IC8qIHdlYm1f
cGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9Owot
CQlDREVCQjRBRDI0QzAxOTlEMDBBREJENDQgLyogYnVmZmVyX3JlYWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MEQyNEMwMTkxQTAwQURC
RDQ0IC8qIGJ1ZmZlcl9yZWFkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07Ci0JCUNERUJCNEFFMjRDMDE5OUQwMEFEQkQ0NCAvKiBpZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MEEyNEMwMTkxQTAw
QURCRDQ0IC8qIGlkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9
OyB9OwotCQlDREVCQjRBRjI0QzAxOTlEMDBBREJENDQgLyogaXN0cmVhbV9yZWFkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDA5MjRDMDE5
MUEwMEFEQkQ0NCAvKiBpc3RyZWFtX3JlYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjAyNEMwMTk5RDAwQURCRDQ0IC8qIGRvbV90
eXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RF
QkI0MEIyNEMwMTkxQTAwQURCRDQ0IC8qIGRvbV90eXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjEyNEMwMTk5RDAwQURCRDQ0IC8q
IGVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENERUJCNDBDMjRDMDE5MUEwMEFEQkQ0NCAvKiBlbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCMjI0QzAxOTlEMDBBREJENDQg
Lyogc3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREVCQjQwNjI0QzAxOTFBMDBBREJENDQgLyogc3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCMzI0QzAxOTlEMDBBREJENDQg
LyogcmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREVCQjQwNTI0QzAxOTFBMDBBREJENDQgLyogcmVhZGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCNDI0QzAxOTlEMDBBREJENDQg
LyogZmlsZV9yZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENERUJCNDA3MjRDMDE5MUEwMEFEQkQ0NCAvKiBmaWxlX3JlYWRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjUyNEMwMTk5
RDAwQURCRDQ0IC8qIGNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREVCQjQwRTI0QzAxOTFBMDBBREJENDQgLyogY2FsbGJhY2suaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCUNERUJCNEFDMjRD
MDE5OUQwMEFEQkQ0NCAvKiB3ZWJtX3BhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MDgyNEMwMTkxQTAwQURCRDQ0IC8qIHdlYm1fcGFy
c2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
Q0RFQkI0QUQyNEMwMTk5RDAwQURCRDQ0IC8qIGJ1ZmZlcl9yZWFkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDBEMjRDMDE5MUEwMEFEQkQ0
NCAvKiBidWZmZXJfcmVhZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQ0RFQkI0QUUyNEMwMTk5RDAwQURCRDQ0IC8qIGlkLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwQTI0QzAxOTFBMDBB
REJENDQgLyogaWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlDREVCQjRBRjI0QzAxOTlEMDBBREJENDQgLyogaXN0cmVhbV9yZWFkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDA5MjRDMDE5
MUEwMEFEQkQ0NCAvKiBpc3RyZWFtX3JlYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUNERUJCNEIwMjRDMDE5OUQwMEFEQkQ0NCAvKiBkb21f
dHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
RUJCNDBCMjRDMDE5MUEwMEFEQkQ0NCAvKiBkb21fdHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREVCQjRCMTI0QzAxOTlEMDBBREJENDQg
LyogZWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RFQkI0MEMyNEMwMTkxQTAwQURCRDQ0IC8qIGVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREVCQjRCMjI0QzAxOTlEMDBBREJE
NDQgLyogc3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREVCQjQwNjI0QzAxOTFBMDBBREJENDQgLyogc3RhdHVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RFQkI0QjMyNEMwMTk5RDAwQURC
RDQ0IC8qIHJlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RFQkI0MDUyNEMwMTkxQTAwQURCRDQ0IC8qIHJlYWRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNERUJCNEI0MjRDMDE5OUQwMEFE
QkQ0NCAvKiBmaWxlX3JlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RFQkI0MDcyNEMwMTkxQTAwQURCRDQ0IC8qIGZpbGVfcmVhZGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RFQkI0QjUy
NEMwMTk5RDAwQURCRDQ0IC8qIGNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwRTI0QzAxOTFBMDBBREJENDQgLyogY2FsbGJhY2su
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDREVC
QjRCNjI0QzAxOUM0MDBBREJENDQgLyogdW5rbm93bl9wYXJzZXIuY2MgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQ2NDI0QzAxOTFBMDBBREJENDQg
LyogdW5rbm93bl9wYXJzZXIuY2MgKi87IH07CiAJCUNERUJCNEI3MjRDMDE5QzQwMEFEQkQ0NCAv
KiBtYXN0ZXJfcGFyc2VyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RFQkI0NkYyNEMwMTkxQTAwQURCRDQ0IC8qIG1hc3Rlcl9wYXJzZXIuY2MgKi87
IH07CiAJCUNERUJCNEI4MjRDMDE5QzQwMEFEQkQ0NCAvKiBibG9ja19wYXJzZXIuY2MgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQ3NjI0QzAxOTFB
MDBBREJENDQgLyogYmxvY2tfcGFyc2VyLmNjICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggMWQ3ZjIwOTg2N2MxZDRlMGE0Mjc0Njk3NjU1ZjhkMWIxMzZkYWQwZS4uZGMzZmYyNTg0
MWE5MjUzM2JlZThkMDU4MTYxOGFiMjBjNzBjOTlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CkBAIC0yOTEsNiArMjkxLDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIEBuby0KIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbSBAbm8tdW5pZnkK
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBAbm8tdW5pZnkKK3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gQG5vLXVuaWZ5
CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9i
akMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRl
b1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gQG5v
LXVuaWZ5CkBAIC0zMzMsNiArMzM0LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNH
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlv
VHJhY2tQcml2YXRlV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2Eu
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zsb2F0UmVjdENvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTM0OCw2ICszNTAsOCBAQCBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVj
dENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29h
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbQpAQCAtMzU2
LDYgKzM2MCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFz
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24u
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYkdQVUxheWVyLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1Ry
YWNrUHJpdmF0ZVdlYk0uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vz
c2lvblZULm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ODZmY2RlYzA1
ODYwMjIyYmYwMzQwMmE3MTZhZDJmNDZiMDBjNTc4Li44MmZkZWVjZGVkOGJhYjZmYjA5ZWIyZTQy
ZDY2NmVhYTQyMjUyZDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MjY3LDYgKzQyNjcsNyBAQAogCQlDREY2NUNDQTE0NUI0
NDg4MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY2NUNDOTE0NUI0M0E3MDBDNEM3QUEg
LyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RGNzQ4M0YxOEZFQkNFQzAwMDZFQ0MwIC8qIEdyaWRQ
b3NpdGlvbnNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RGNzQ4M0QxOEZFQkNFQzAwMDZFQ0MwIC8qIEdyaWRQb3NpdGlvbnNSZXNvbHZl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNE
Rjc1NkEzMjE1QzI5RTkwMEVGQ0I1MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNzU2QTEyMTVD
MjlFOTAwRUZDQjUwIC8qIEpTTWVkaWFLZXlFbmNyeXB0aW9uU2NoZW1lLmggKi87IH07CisJCUNE
Rjk5NEZEMjRDMTVGRTMwMDJFQTA2MiAvKiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGOTk0RkIyNEMx
MkE2QTAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gKi87IH07CiAJCUNE
RkMzNjA2MThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERkMzNjA0MThDQTYxQzIw
MDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTA1N0ZBNjEyMjA3MzExMDBBNDc2RDUgLyog
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRTA1N0ZBNDEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
MDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKQEAgLTE0MTY2LDYgKzE0MTY3LDgg
QEAKIAkJQ0Q4QzZDMjkyMkZEREE5MTAwQTcyMEFCIC8qIEpTUmVtb3RlUGxheWJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNSZW1vdGVQbGF5YmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDhEMzA2RDIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDRE1Mb2dnaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOEQzMDZF
MjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENE
TUxvZ2dpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDhGNjY3MDI0QzBG
MjA4MDAwQzQyMUMgLyogU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0Q4RjY2NzIyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDkyRjUwRjIyNjBGRkVFMDBGODdCQjMgLyogRG9jdW1lbnRGdWxs
c2NyZWVuLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBEb2N1bWVudEZ1bGxzY3JlZW4uaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDkyRjUxMDIyNjBGRkVFMDBGODdCQjMgLyogRG9jdW1lbnRGdWxsc2Ny
ZWVuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50RnVsbHNjcmVlbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDkyRjUxNjIyNjEwMzgyMDBGODdCQjMgLyogRnVsbHNjcmVlbk1h
bmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVsbHNjcmVlbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MzQ2LDYgKzE0MzQ5LDggQEAKIAkJQ0RFOEI1RUYxQTY5Nzc4
QjAwQjRCNjZBIC8qIExlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTdDODIxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxT
Y3JlZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyRnVsbFNjcmVl
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBN0M4MzEyNzYyMzA0MDBCODQ2
REQgLyogUmVuZGVyRnVsbFNjcmVlbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW5kZXJGdWxsU2NyZWVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RFQjNENzIyNEM0MUE2RTAwMUZCRUVGIC8qIFNvdXJjZUJ1ZmZlclBhcnNlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTb3VyY2VCdWZmZXJQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREVCM0Q3MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFy
c2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZUJ1ZmZlclBhcnNlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDREVDQTg5ODFFREY0NDdEMDBEQ0IwOEIgLyogQVZBc3NldFRyYWNr
VXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVZBc3NldFRyYWNrVXRpbGl0aWVz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVDQTg5OTFFREY0NDdEMDBEQ0Iw
OEIgLyogQVZBc3NldFRyYWNrVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFWQXNzZXRUcmFj
a1V0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVFMzkzNjE3OTc0
MjU5MDAxRDc1ODAgLyogUHVibGljVVJMTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQdWJsaWNVUkxNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE0Mzg0LDYgKzE0Mzg5LDEyIEBACiAJCUNERjc1NjlFMjE1QzI4NUUwMEVG
Q0I1MCAvKiBNZWRpYUtleUVuY3J5cHRpb25TY2hlbWUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhS2V5RW5jcnlw
dGlvblNjaGVtZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERjc1NkEwMjE1
QzI5RTgwMEVGQ0I1MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERjc1NkExMjE1QzI5RTkwMEVGQ0I1
MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREY5OTRGQTI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjk5NEZCMjRDMTJBNkEwMDJFQTA2MiAv
KiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RGOTk0RkUyNEMyODEzNjAwMkVBMDYyIC8qIFZpZGVvVHJhY2tQcml2YXRlV2ViTS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RGOTk0RkYyNEMyODEzNjAwMkVBMDYyIC8qIFZpZGVvVHJhY2tQcml2YXRlV2Vi
TS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY5OTUwMDI0QzI4MTQ5MDAyRUEwNjIgLyogQXVk
aW9UcmFja1ByaXZhdGVXZWJNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRlV2Vi
TS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY5OTUwMTI0QzI4MTQ5MDAyRUEw
NjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlv
VHJhY2tQcml2YXRlV2ViTS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERkMz
NjAxMThDQTYxNjMwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERkMzNjAyMThDQTYxNjMwMDI2RTU2RiAvKiBS
ZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNERkMzNjAzMThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlz
dGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ29t
bWFuZExpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1ODcxLDYg
KzI1ODgyLDggQEAKIAkJQjUzMjBENjgxMjJBMjRFOTAwMkQxNDQwIC8qIGNvY29hICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDREY5OTUwMTI0QzI4MTQ5
MDAyRUEwNjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcCAqLywKKwkJCQlDREY5OTUwMDI0
QzI4MTQ5MDAyRUEwNjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmggKi8sCiAJCQkJRjQ4RDJB
QTMyMTU5NzQwRDAwQzY3NTJCIC8qIENvbG9yQ29jb2EuaCAqLywKIAkJCQlGNDhEMkFBNDIxNTk3
NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5tbSAqLywKIAkJCQlCMjc1MzU0QzBCMDUzODE0MDAy
Q0U2NEYgLyogRmxvYXRSZWN0Q29jb2EubW0gKi8sCkBAIC0yNTg5MiwxMCArMjU5MDUsMTYgQEAK
IAkJCQlBRDlGRjZFMDE5MDgzOTFEMDAzQjYxRTAgLyogSU9TdXJmYWNlUG9vbENvY29hLm1tICov
LAogCQkJCUNEQzQ4QUM4MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuY3BwICovLAogCQkJCUNEQzQ4QUM3MjE0OUNGMkEwMDI0RkQ1OSAvKiBN
ZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuaCAqLywKKwkJCQlDREVCM0Q3MjI0
QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmNwcCAqLywKKwkJCQlDREVCM0Q3
MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmggKi8sCisJCQkJQ0Q4RjY2
NzAyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwICovLAorCQkJ
CUNEOEY2NjcyMjRDMEYyMDgwMDBDNDIxQyAvKiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmggKi8s
CiAJCQkJRTRFOEI0RUQyMTZCNzlGNDAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0LmNwcCAqLywKIAkJCQlFNEU4QjRFQTIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQuaCAqLywKIAkJCQk1MjY3MjRGMjFDQjJGREY2MDA3NTk3NEQgLyogVGV4
dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5oICovLAogCQkJCTUyNjcyNEYxMUNCMkZERjYwMDc1
OTc0RCAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tICovLAorCQkJCUNERjk5NEZG
MjRDMjgxMzYwMDJFQTA2MiAvKiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwICovLAorCQkJCUNE
Rjk5NEZFMjRDMjgxMzYwMDJFQTA2MiAvKiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaCAqLywKIAkJ
CQlDRDZGRTVCNzI0QkNFNjQ1MDA5RkNEQTQgLyogVlA5VXRpbGl0aWVzQ29jb2EuaCAqLywKIAkJ
CQlDRDZGRTVCODI0QkNFNjQ1MDA5RkNEQTQgLyogVlA5VXRpbGl0aWVzQ29jb2EubW0gKi8sCiAJ
CQkJMkQzRUY0NDQxOTE3OTE1QzAwMDM0MTg0IC8qIFdlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJE
ZWxlZ2F0ZS5oICovLApAQCAtMjczODgsNiArMjc0MDcsOCBAQAogCQkJCUNEQzhCNUE1MTgwNDc0
RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmggKi8sCiAJCQkJQ0RDOEI1
QTQxODA0NzRGNzAwMTZFNjg1IC8qIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gKi8sCiAJ
CQkJN0EyOUY1NzExOEM2OTUxNDAwNEQwRjgxIC8qIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuaCAqLywKKwkJCQlDREY5OTRGQTI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5oICovLAorCQkJCUNERjk5NEZCMjRDMTJBNkEwMDJFQTA2MiAvKiBTb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLm1tICovLAogCQkJCUNEQzhCNUE5MTgwNDdGRjEwMDE2RTY4NSAv
KiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oICovLAogCQkJCUNEQzhCNUE4MTgwNDdGRjEw
MDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSAqLywKIAkJCQk1MkQ1QTE4
RTFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmggKi8sCkBAIC0zNDU5
OCw2ICszNDYxOSw3IEBACiAJCQkJMjZBQTBGOUUxOEQyQTE4QjAwNDE5MzgxIC8qIFNlbGVjdG9y
UHNldWRvRWxlbWVudFR5cGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NENThERkQxRjk1
NjVBODAwMTEyNzkxIC8qIFNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxMEE4
MUY5MDIyQTQwMDUxMDJDRSAvKiBTb2Z0TGlua0xpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQ0RGOTk0RkQyNEMxNUZFMzAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDREM4QjVBQTE4MDQ3RkYxMDAxNkU2ODUgLyogU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBODMzQzdDQTBBMkNG
MDZCMDBENTc2NjQgLyogU1ZHTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzE2OTJERDIy
M0QyM0FCRDAwNkU4OEY3IC8qIFN5c3RlbUJhdHRlcnkubW0gaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggMTFjMGE3ZjVk
OGY5YjRiNDJhODcxYjMzMTFlYWM0NDU5NzUzNjQyNy4uZDAxNzg0YzdhYTRiNzZkNmMzY2QyNTk3
OTIzMjRhNjA1MjlhMWY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgKQEAgLTM5MSw2ICszOTEsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaW5jcmVt
ZW50YWxQREZMb2FkaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5jcmVtZW50YWxQREZM
b2FkaW5nRW5hYmxlZDsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAg
IHZvaWQgc2V0V2ViTVBhcnNlckVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV93ZWJNUGFyc2Vy
RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgd2ViTVBhcnNlckVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX3dlYk1QYXJzZXJFbmFibGVkOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAg
ICAvLyBOZXZlciBpbnN0YW50aWF0ZS4KICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCk7CkBA
IC01ODQsNiArNTg5LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2luY3JlbWVudGFsUERGTG9h
ZGluZ0VuYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNF
KQorICAgIGJvb2wgbV93ZWJNUGFyc2VyRW5hYmxlZCB7IGZhbHNlIH07CisjZW5kaWYKKwogICAg
IGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVzdHJveWVkPFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM+
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVk
aW9UcmFja1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlv
VHJhY2tQcml2YXRlLmgKaW5kZXggN2ZhZTIzZWY1ZGM0Mjk5ZThmMDlmYzQxMmZjMTcxMDI2OGJl
YmMyMS4uYTlmODM2YmQxMTczZTIyZTBhZTgxNGExNzU0MmFhMjNhNDYxNWE0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0
ZUJhc2UuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogI2lmIEVOQUJMRShWSURFTykK
IApAQCAtNTUsNiArNTYsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7
CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5lbmFibGVkQ2hh
bmdlZChlbmFibGVkKTsKKyAgICAgICAgaWYgKG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjaykKKyAg
ICAgICAgICAgIG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjaygqdGhpcywgbV9lbmFibGVkKTsKICAg
ICB9CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KQEAg
LTY0LDYgKzY3LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzQmFja2VkQnlNZWRp
YVN0cmVhbVRyYWNrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHVzaW5nIEVuYWJs
ZWRDaGFuZ2VkQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEF1ZGlvVHJhY2tQcml2YXRlJiwgYm9v
bCBlbmFibGVkKT47CisgICAgdm9pZCBzZXRFbmFibGVkQ2hhbmdlZENhbGxiYWNrKEVuYWJsZWRD
aGFuZ2VkQ2FsbGJhY2smJiBjYWxsYmFjaykgeyBtX2VuYWJsZWRDaGFuZ2VkQ2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKTsgfQorCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29u
c3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkF1ZGlvVHJh
Y2tQcml2YXRlIjsgfQogI2VuZGlmCkBAIC03NCw2ICs4MCw3IEBAIHByb3RlY3RlZDoKIHByaXZh
dGU6CiAgICAgQXVkaW9UcmFja1ByaXZhdGVDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9Owog
ICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2UgfTsKKyAgICBFbmFibGVkQ2hhbmdlZENhbGxiYWNr
IG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJp
dmF0ZS5oCmluZGV4IDcxOGQ4MGUzNDUyYzQ3ZmVlZjQyNjhmMjllM2EyZTg3YmI0ZGNhZDMuLjBj
NDEzYzJkZGY1ZDlkYTJhMTViMTEzNWMwOGU1MTA4NTJiODAyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaApAQCAtMjgs
NiArMjgsNyBAQAogI2lmIEVOQUJMRShWSURFTykKIAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZUJh
c2UuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00OCw2ICs0OSw4IEBAIHB1YmxpYzoKICAgICAgICAgbV9zZWxlY3RlZCA9IHNlbGVjdGVk
OwogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+c2VsZWN0ZWRD
aGFuZ2VkKG1fc2VsZWN0ZWQpOworICAgICAgICBpZiAobV9zZWxlY3RlZENoYW5nZWRDYWxsYmFj
aykKKyAgICAgICAgICAgIG1fc2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2soKnRoaXMsIG1fc2VsZWN0
ZWQpOwogICAgIH0KICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCB7IHJldHVybiBt
X3NlbGVjdGVkOyB9CiAKQEAgLTU4LDEyICs2MSwxNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgY2hh
ciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlZpZGVvVHJhY2tQcml2YXRl
IjsgfQogI2VuZGlmCiAKKyAgICB1c2luZyBTZWxlY3RlZENoYW5nZWRDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoVmlkZW9UcmFja1ByaXZhdGUmLCBib29sIHNlbGVjdGVkKT47CisgICAgdm9pZCBz
ZXRTZWxlY3RlZENoYW5nZWRDYWxsYmFjayhTZWxlY3RlZENoYW5nZWRDYWxsYmFjayYmIGNhbGxi
YWNrKSB7IG1fc2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQor
CisKIHByb3RlY3RlZDoKICAgICBWaWRlb1RyYWNrUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAogcHJp
dmF0ZToKICAgICBWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07
CiAgICAgYm9vbCBtX3NlbGVjdGVkIHsgZmFsc2UgfTsKKyAgICBTZWxlY3RlZENoYW5nZWRDYWxs
YmFjayBtX3NlbGVjdGVkQ2hhbmdlZENhbGxiYWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwCmluZGV4IGMxY2IxYTRkMzU2MTI1ZDk0N2Rl
ZmZjMjdmNTlmY2EwYzliNDE4NDEuLmJjMTM5Nzc5N2JhZGE4YTQ3NTliZjUyZjlhNTQ2M2IyZDY0
MWQ3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAKQEAgLTMzLDkgKzMzLDggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFj
aywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKK0F1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhB
VkFzc2V0VHJhY2sqIHRyYWNrKQogICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbD4odHJhY2spKQotICAgICwgbV9wYXJlbnQocGFyZW50KQogewogICAgIHJl
c2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQpAQCAtNjcsNyArNjYsNiBAQCB2b2lkIEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgQXVkaW9UcmFja1ByaXZhdGVBVkY6OnNldEVuYWJsZWQo
ZW5hYmxlZCk7Ci0gICAgbV9wYXJlbnQtPnRyYWNrRGlkQ2hhbmdlRW5hYmxlZCh0aGlzKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggOWJjNGYyNmMwNzM0OWYxNzc2ZjYwYmUw
ZGQxYzJhYmNkN2IzN2Q2Yi4uMTQ1NmMwMTZiYWUwM2I4NzhiNTBiZjU5OTI0ZmI0ZDlmMzUzMDE4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOwogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGVBVkYgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKQogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+
IGNyZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyog
cGFyZW50KQorICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM+IGNyZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2ssIHBh
cmVudCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyh0cmFjaykpOwogICAgIH0KIAogICAgIHZvaWQgc2V0RW5hYmxlZChi
b29sKSBmaW5hbDsKQEAgLTUyLDEyICs1MiwxMSBAQCBwdWJsaWM6CiAgICAgaW50IHRyYWNrSUQo
KSB7IHJldHVybiBtX3RyYWNrSUQ7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqLCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQyogcGFyZW50KTsKKyAgICBleHBsaWNpdCBBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqKTsKICAgICAKICAgICB2b2lkIHJlc2V0UHJv
cGVydGllc0Zyb21UcmFjaygpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFWVHJhY2tQcml2YXRl
QVZGT2JqQ0ltcGw+IG1faW1wbDsKLSAgICBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogbV9w
YXJlbnQ7CiAgICAgaW50IG1fdHJhY2tJRDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5t
bQppbmRleCA2Njg5OTEwMWUxZmM1ODQwNzc3N2I2OWQ2MzkxOTE1ZmQ5YWRkZDIxLi5iZDY4NWQ1
NGMyM2M1N2JhM2ZiNmFiMGFhMjMxNmY2ODkzZWYxODMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCkBAIC0yNTMsMzAgKzI1Myw3IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUoY29uCiAgICAg
aWYgKCFwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIAotICAgIFN0cmluZyBleHRlbmRlZFR5
cGUgPSBwYXJhbWV0ZXJzLnR5cGUucmF3KCk7Ci0gICAgU3RyaW5nIG91dHB1dENvZGVjcyA9IHBh
cmFtZXRlcnMudHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsK
LSAgICBpZiAoIW91dHB1dENvZGVjcy5pc0VtcHR5KCkgJiYgW1BBTDo6Z2V0QVZTdHJlYW1EYXRh
UGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dE1JTUVDb2Rl
Y1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFyYW1ldGVyOildKSB7Ci0gICAgICAgIG91dHB1
dENvZGVjcyA9IFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgb3V0cHV0TUlNRUNv
ZGVjUGFyYW1ldGVyRm9ySW5wdXRNSU1FQ29kZWNQYXJhbWV0ZXI6b3V0cHV0Q29kZWNzXTsKLSAg
ICAgICAgZXh0ZW5kZWRUeXBlID0gbWFrZVN0cmluZyhwYXJhbWV0ZXJzLnR5cGUuY29udGFpbmVy
VHlwZSgpLCAiOyBjb2RlY3M9XCIiLCBvdXRwdXRDb2RlY3MsICJcIiIpOwotICAgIH0KLQotICAg
IGF1dG8gc3VwcG9ydGVkID0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0
ZWQ7Ci0gICAgYXV0byYgc3RyZWFtRGF0YVBhcnNlckNhY2hlID0gQVZTdHJlYW1EYXRhUGFyc2Vy
TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKHN0cmVhbURhdGFQYXJzZXJDYWNo
ZS5pc0F2YWlsYWJsZSgpKQotICAgICAgICBzdXBwb3J0ZWQgPSBzdHJlYW1EYXRhUGFyc2VyQ2Fj
aGUuY2FuRGVjb2RlVHlwZShleHRlbmRlZFR5cGUpOwotICAgIGVsc2UgewotICAgICAgICBhdXRv
JiBhc3NldENhY2hlID0gQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpOwotICAgICAg
ICBpZiAoYXNzZXRDYWNoZS5pc0F2YWlsYWJsZSgpKQotICAgICAgICAgICAgc3VwcG9ydGVkID0g
YXNzZXRDYWNoZS5jYW5EZWNvZGVUeXBlKGV4dGVuZGVkVHlwZSk7Ci0gICAgfQotCi0gICAgaWYg
KHN1cHBvcnRlZCAhPSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZCkKLSAg
ICAgICAgcmV0dXJuIHN1cHBvcnRlZDsKLQotICAgIGlmICghY29udGVudFR5cGVNZWV0c0hhcmR3
YXJlRGVjb2RlUmVxdWlyZW1lbnRzKHBhcmFtZXRlcnMudHlwZSwgcGFyYW1ldGVycy5jb250ZW50
VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQpKQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7Ci0KLSAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQ7CisgICAgcmV0dXJuIFNvdXJjZUJ1ZmZlclBh
cnNlcjo6aXNDb250ZW50VHlwZVN1cHBvcnRlZChwYXJhbWV0ZXJzLnR5cGUpID8gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
OjpJc05vdFN1cHBvcnRlZDsKIH0KIAogI3ByYWdtYSBtYXJrIC0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNl
UHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDgyNzhlMDZh
NTEyMjk3YzdlZDJiMjY5MGZmZTBjYjQyODg4NWZiZjYuLjI5MzIyNzkzOTEwZWE1N2YxODFjOTIw
MTdkM2NmMzY1Nzc1MjEwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCAiTG9n
Z2luZy5oIgogI2ltcG9ydCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgi
CiAjaW1wb3J0ICJNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaCIKKyNpbXBvcnQgIlNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakMuaCIKICNpbXBvcnQgIlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
LmgiCiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9BbGdvcml0aG1zLmg+
CkBAIC04NSw3ICs4NiwxMSBAQCBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBNZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgQwogICAgIGlmIChNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJz
KSA9PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZCkKICAgICAgICAg
cmV0dXJuIE5vdFN1cHBvcnRlZDsKIAotICAgIGF1dG8gbmV3U291cmNlQnVmZmVyID0gU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSh0aGlzKTsKKyAgICBhdXRvIHBhcnNlciA9IFNv
dXJjZUJ1ZmZlclBhcnNlcjo6Y3JlYXRlKGNvbnRlbnRUeXBlKTsKKyAgICBpZiAoIXBhcnNlcikK
KyAgICAgICAgcmV0dXJuIE5vdFN1cHBvcnRlZDsKKworICAgIGF1dG8gbmV3U291cmNlQnVmZmVy
ID0gU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSh0aGlzLCBwYXJzZXIucmVsZWFz
ZU5vbk51bGwoKSk7CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBuZXdTb3VyY2VC
dWZmZXItPnNldENETUluc3RhbmNlKG1fY2RtSW5zdGFuY2UuZ2V0KCkpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzBmZjQwZGVmYjE2NjEzOGJlZDAwZmUxZmI5YjkyYjI3YjQ3ZjVlOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaApAQCAtMCwwICsxLDc1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXIuaCIK
KyNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKwor
T0JKQ19DTEFTUyBBVkFzc2V0OworT0JKQ19DTEFTUyBBVlN0cmVhbURhdGFQYXJzZXI7CitPQkpD
X0NMQVNTIE5TRGF0YTsKK09CSkNfQ0xBU1MgTlNFcnJvcjsKK09CSkNfQ0xBU1MgV2ViQVZTdHJl
YW1EYXRhUGFyc2VyTGlzdGVuZXI7CisKK3R5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVm
ZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDIGZpbmFsIDogcHVibGljIFNvdXJjZUJ1ZmZlclBhcnNl
ciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM+IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBpc0NvbnRlbnRUeXBlU3VwcG9ydGVkKGNvbnN0IENvbnRl
bnRUeXBlJik7CisKKyAgICBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCk7CisgICAgdmlydHVh
bCB+U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpOworCisgICAgQVZTdHJlYW1EYXRhUGFyc2Vy
KiBwYXJzZXIoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlci5nZXQoKTsgfQorCisgICAgVHlwZSB0
eXBlKCkgY29uc3QgeyByZXR1cm4gVHlwZTo6QVZGT2JqQzsgfQorICAgIHZvaWQgYXBwZW5kRGF0
YShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgQXBwZW5kRmxhZ3MgPSBBcHBlbmRGbGFnczo6Tm9u
ZSkgZmluYWw7CisgICAgdm9pZCBmbHVzaFBlbmRpbmdNZWRpYURhdGEoKSBmaW5hbDsKKyAgICB2
b2lkIHNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGJvb2wsIGludDMyX3QpIGZp
bmFsOworICAgIGJvb2wgc2hvdWxkUHJvdmlkZU1lZGlhZGF0YUZvclRyYWNrSUQoaW50MzJfdCkg
ZmluYWw7CisgICAgdm9pZCByZXNldFBhcnNlclN0YXRlKCkgZmluYWw7CisKKyAgICB2b2lkIGRp
ZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3NldCopOworICAgIHZvaWQgZGlkRmFpbFRvUGFy
c2VTdHJlYW1EYXRhV2l0aEVycm9yKE5TRXJyb3IqKTsKKyAgICB2b2lkIGRpZFByb3ZpZGVNZWRp
YURhdGFGb3JUcmFja0lEKGludDMyX3QgdHJhY2tJRCwgQ01TYW1wbGVCdWZmZXJSZWYsIGNvbnN0
IFN0cmluZyYgbWVkaWFUeXBlLCB1bnNpZ25lZCBmbGFncyk7CisgICAgdm9pZCB3aWxsUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChpbnQzMl90IHRy
YWNrSUQpOworICAgIHZvaWQgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm9yVHJhY2tJRChOU0RhdGEqLCBpbnQzMl90IHRyYWNrSUQpOworCitwcml2YXRlOgor
ICAgIFJldGFpblB0cjxBVlN0cmVhbURhdGFQYXJzZXI+IG1fcGFyc2VyOworICAgIFJldGFpblB0
cjxXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcj4gbV9kZWxlZ2F0ZTsKKyAgICBib29sIG1f
ZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlvblNlZ21lbnQgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHsgZmFsc2UgfTsKK307CisKK30KKworU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
YXJzZXImIHBhcnNlcikgeyByZXR1cm4gcGFyc2VyLnR5cGUoKSA9PSBXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQYXJzZXI6OlR5cGU6OkFWRk9iakM7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5E
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNkZjA5OTA4Njg3ZjY3MmZmNTIyMmI2NWRiZjAwMDEzZTFmMDli
OTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0wLDAgKzEs
MzM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJTb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLmgiCisKKyNpbXBvcnQgIkFWQXNzZXRNSU1FVHlwZUNhY2hlLmgi
CisjaW1wb3J0ICJBVkFzc2V0VHJhY2tVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIkFWU3RyZWFtRGF0
YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCIKKyNpbXBvcnQgIkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmgiCisjaW1wb3J0ICJGb3VyQ0MuaCIKKyNpbXBvcnQgIkluYmFuZFRleHRU
cmFja1ByaXZhdGVBVkZPYmpDLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJNZWRp
YURlc2NyaXB0aW9uLmgiCisjaW1wb3J0ICJNZWRpYVNhbXBsZS5oIgorI2ltcG9ydCAiTWVkaWFT
YW1wbGVBVkZPYmpDLmgiCisjaW1wb3J0ICJOb3RJbXBsZW1lbnRlZC5oIgorI2ltcG9ydCAiU2hh
cmVkQnVmZmVyLmgiCisjaW1wb3J0ICJUaW1lUmFuZ2VzLmgiCisjaW1wb3J0ICJWaWRlb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIgorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQXNz
ZXRUcmFjay5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheUlubGluZXMuaD4K
KyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8cGFsL2F2Zm91bmRhdGlvbi9NZWRp
YVRpbWVBVkZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9u
U1BJLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorCisjaW1wb3J0IDxw
YWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRp
b25Tb2Z0TGluay5oPgorCisjcHJhZ21hIG1hcmsgLQorI3ByYWdtYSBtYXJrIFdlYkFWU3RyZWFt
RGF0YVBhcnNlckxpc3RlbmVyCisKK0BpbnRlcmZhY2UgV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlz
dGVuZXIgOiBOU09iamVjdDxBVlN0cmVhbURhdGFQYXJzZXJPdXRwdXRIYW5kbGluZz4geworICAg
IFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMqIF9wYXJlbnQ7CisgICAgQVZTdHJl
YW1EYXRhUGFyc2VyKiBfcGFyc2VyOworfQorQHByb3BlcnR5IChhc3NpZ24pIFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMqIHBhcmVudDsKKy0gKGlkKWluaXRXaXRoUGFyc2VyOihB
VlN0cmVhbURhdGFQYXJzZXIqKXBhcnNlciBwYXJlbnQ6KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMqKXBhcmVudDsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYkFWU3RyZWFt
RGF0YVBhcnNlckxpc3RlbmVyCistIChpZClpbml0V2l0aFBhcnNlcjooQVZTdHJlYW1EYXRhUGFy
c2VyKilwYXJzZXIgcGFyZW50OihXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKilw
YXJlbnQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKworICAgIEFTU0VSVChwYXJlbnQpOworICAgIF9wYXJlbnQgPSBwYXJl
bnQ7CisgICAgX3BhcnNlciA9IHBhcnNlcjsKKyAgICBbX3BhcnNlciBzZXREZWxlZ2F0ZTpzZWxm
XTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworQHN5bnRoZXNpemUgcGFyZW50PV9wYXJlbnQ7CisK
Ky0gKHZvaWQpZGVhbGxvYworeworICAgIFtfcGFyc2VyIHNldERlbGVnYXRlOm5pbF07CisgICAg
W3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKWludmFsaWRhdGUKK3sKKyAgICBbX3BhcnNl
ciBzZXREZWxlZ2F0ZTpuaWxdOworICAgIF9wYXJzZXIgPSBudWxscHRyOworfQorCistICh2b2lk
KXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIg
ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldDooQVZBc3NldCAqKWFzc2V0Cit7CisgICAgQVNTRVJU
X1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOwor
ICAgIF9wYXJlbnQtPmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoYXNzZXQpOworfQorCistICh2
b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJz
ZXIgZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldDooQVZBc3NldCAqKWFzc2V0IHdpdGhEaXNjb250
aW51aXR5OihCT09MKWRpc2NvbnRpbnVpdHkKK3sKKyAgICBVTlVTRURfUEFSQU0oZGlzY29udGlu
dWl0eSk7CisgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFy
c2VyID09IF9wYXJzZXIpOworICAgIF9wYXJlbnQtPmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQo
YXNzZXQpOworfQorCistICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNl
ciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yOihO
U0Vycm9yICopZXJyb3IKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0
cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7CisgICAgX3BhcmVudC0+ZGlkRmFpbFRvUGFyc2VT
dHJlYW1EYXRhV2l0aEVycm9yKGVycm9yKTsKK30KKworLSAodm9pZClzdHJlYW1EYXRhUGFyc2Vy
OihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFByb3ZpZGVNZWRpYURh
dGE6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZSBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFj
a0lEKXRyYWNrSUQgbWVkaWFUeXBlOihOU1N0cmluZyAqKW5zTWVkaWFUeXBlIGZsYWdzOihBVlN0
cmVhbURhdGFQYXJzZXJPdXRwdXRNZWRpYURhdGFGbGFncylmbGFncworeworICAgIEFTU0VSVF9V
TlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKKyAg
ICBfcGFyZW50LT5kaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCh0cmFja0lELCBzYW1wbGUs
IG5zTWVkaWFUeXBlLCBmbGFncyk7Cit9CisKK0FMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0JFR0lOCistICh2b2lkKXN0cmVhbURhdGFQYXJzZXJXaWxsUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRh
UGFyc2VyIGZvclRyYWNrSUQ6KENNUGVyc2lzdGVudFRyYWNrSUQpdHJhY2tJRAorQUxMT1dfREVQ
UkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECit7CisgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1E
YXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOworICAgIF9wYXJlbnQtPndp
bGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHRy
YWNrSUQpOworfQorCitBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgorLSAo
dm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFy
c2VyIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTooTlNEYXRh
ICopaW5pdERhdGEgZm9yVHJhY2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lECitBTExP
V19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKK3sKKyAgICBfcGFyZW50LT5kaWRQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKGluaXREYXRh
LCB0cmFja0lEKTsKK30KK0BlbmQKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjcHJhZ21hIG1h
cmsgLQorI3ByYWdtYSBtYXJrIE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDCisKK2NsYXNzIE1lZGlh
RGVzY3JpcHRpb25BVkZPYmpDIGZpbmFsIDogcHVibGljIE1lZGlhRGVzY3JpcHRpb24geworcHVi
bGljOgorICAgIHN0YXRpYyBSZWY8TWVkaWFEZXNjcmlwdGlvbkFWRk9iakM+IGNyZWF0ZShBVkFz
c2V0VHJhY2sqIHRyYWNrKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhRGVzY3JpcHRpb25B
VkZPYmpDKHRyYWNrKSk7IH0KKyAgICB2aXJ0dWFsIH5NZWRpYURlc2NyaXB0aW9uQVZGT2JqQygp
IHsgfQorCisgICAgYm9vbCBpc1ZpZGVvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1Zp
ZGVvOyB9CisgICAgYm9vbCBpc0F1ZGlvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0F1
ZGlvOyB9CisgICAgYm9vbCBpc1RleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzVGV4
dDsgfQorICAgIEF0b21TdHJpbmcgY29kZWMoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgLy8gQXRvbVN0cmluZ3MgY2FuIG9ubHkgYmUgZGVzdHJveWVkIGZyb20gdGhlIHNhbWUgdGhy
ZWFkIHRoZXkncmUKKyAgICAgICAgLy8gY3JlYXRlZCBpbi4gU2luY2UgdGhpcyBzdHJ1Y3R1cmUg
aXMgY3JlYXRlZCBpbiBhIHBhcnNlciB0aHJlYWQKKyAgICAgICAgLy8gb25seSBjcmVhdGUgdGhl
IEF0b21TdHJpbmcgdGhlIGZpcnN0IHRpbWUgdGhpcyBmdW5jdGlvbiBpcyBhY2Nlc3NlZAorICAg
ICAgICAvLyB3aGljaCBpcyBwcmVzdW1hYmx5IG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgaWYgKCFtX2NvZGVjKQorICAgICAgICAg
ICAgbV9jb2RlYyA9IEF0b21TdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCZt
X29yaWdpbmFsQ29kZWMpLCA0KTsKKyAgICAgICAgcmV0dXJuICptX2NvZGVjOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNr
KQorICAgICAgICA6IG1faXNWaWRlbyhbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1l
ZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWxdKQorICAgICAgICAsIG1faXNBdWRpbyhbdHJhY2sgaGFz
TWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNBdWRpYmxlXSkKKyAgICAg
ICAgLCBtX2lzVGV4dChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFj
dGVyaXN0aWNMZWdpYmxlXSkKKyAgICB7CisgICAgICAgIE5TQXJyYXkqIGZvcm1hdERlc2NyaXB0
aW9ucyA9IFt0cmFjayBmb3JtYXREZXNjcmlwdGlvbnNdOworICAgICAgICBDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmIGRlc2NyaXB0aW9uID0gW2Zvcm1hdERlc2NyaXB0aW9ucyBjb3VudF0gPyAoX19i
cmlkZ2UgQ01Gb3JtYXREZXNjcmlwdGlvblJlZilbZm9ybWF0RGVzY3JpcHRpb25zIG9iamVjdEF0
SW5kZXg6MF0gOiAwOworICAgICAgICBpZiAoZGVzY3JpcHRpb24pIHsKKyAgICAgICAgICAgIG1f
b3JpZ2luYWxDb2RlYyA9IFBBTDo6c29mdExpbmtfQ29yZU1lZGlhX0NNRm9ybWF0RGVzY3JpcHRp
b25HZXRNZWRpYVN1YlR5cGUoZGVzY3JpcHRpb24pOworICAgICAgICAgICAgQ0ZTdHJpbmdSZWYg
b3JpZ2luYWxGb3JtYXRLZXkgPSBQQUw6OmNhbkxvYWRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2Ny
aXB0aW9uRXh0ZW5zaW9uX1Byb3RlY3RlZENvbnRlbnRPcmlnaW5hbEZvcm1hdCgpID8gUEFMOjpn
ZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1Byb3RlY3RlZENvbnRl
bnRPcmlnaW5hbEZvcm1hdCgpIDogQ0ZTVFIoIkNvbW1vbkVuY3J5cHRpb25PcmlnaW5hbEZvcm1h
dCIpOworICAgICAgICAgICAgQ0ZUeXBlUmVmIG9yaWdpbmFsRm9ybWF0ID0gQ01Gb3JtYXREZXNj
cmlwdGlvbkdldEV4dGVuc2lvbihkZXNjcmlwdGlvbiwgb3JpZ2luYWxGb3JtYXRLZXkpOworICAg
ICAgICAgICAgaWYgKG9yaWdpbmFsRm9ybWF0ICYmIENGR2V0VHlwZUlEKG9yaWdpbmFsRm9ybWF0
KSA9PSBDRk51bWJlckdldFR5cGVJRCgpKQorICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFs
dWUoKENGTnVtYmVyUmVmKW9yaWdpbmFsRm9ybWF0LCBrQ0ZOdW1iZXJTSW50MzJUeXBlLCAmbV9v
cmlnaW5hbENvZGVjKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEZvdXJDaGFyQ29kZSBtX29y
aWdpbmFsQ29kZWM7CisgICAgbXV0YWJsZSBPcHRpb25hbDxBdG9tU3RyaW5nPiBtX2NvZGVjOwor
ICAgIGJvb2wgbV9pc1ZpZGVvOworICAgIGJvb2wgbV9pc0F1ZGlvOworICAgIGJvb2wgbV9pc1Rl
eHQ7Cit9OworCisjcHJhZ21hIG1hcmsgLQorI3ByYWdtYSBtYXJrIFNvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakMKKworYm9vbCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjppc0NvbnRlbnRUeXBl
U3VwcG9ydGVkKGNvbnN0IENvbnRlbnRUeXBlJiB0eXBlKQoreworICAgIFN0cmluZyBleHRlbmRl
ZFR5cGUgPSB0eXBlLnJhdygpOworICAgIFN0cmluZyBvdXRwdXRDb2RlY3MgPSB0eXBlLnBhcmFt
ZXRlcihDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVyKCkpOworICAgIGlmICghb3V0cHV0Q29k
ZWNzLmlzRW1wdHkoKSAmJiBbUEFMOjpnZXRBVlN0cmVhbURhdGFQYXJzZXJDbGFzcygpIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob3V0cHV0TUlNRUNvZGVjUGFyYW1ldGVyRm9ySW5wdXRN
SU1FQ29kZWNQYXJhbWV0ZXI6KV0pIHsKKyAgICAgICAgb3V0cHV0Q29kZWNzID0gW1BBTDo6Z2V0
QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSBvdXRwdXRNSU1FQ29kZWNQYXJhbWV0ZXJGb3JJbnB1
dE1JTUVDb2RlY1BhcmFtZXRlcjpvdXRwdXRDb2RlY3NdOworICAgICAgICBleHRlbmRlZFR5cGUg
PSBtYWtlU3RyaW5nKHR5cGUuY29udGFpbmVyVHlwZSgpLCAiOyBjb2RlY3M9XCIiLCBvdXRwdXRD
b2RlY3MsICJcIiIpOworICAgIH0KKworICAgIGF1dG8mIHN0cmVhbURhdGFQYXJzZXJDYWNoZSA9
IEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpOworICAgIGlmIChz
dHJlYW1EYXRhUGFyc2VyQ2FjaGUuaXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIHN0cmVh
bURhdGFQYXJzZXJDYWNoZS5jYW5EZWNvZGVUeXBlKGV4dGVuZGVkVHlwZSkgPT0gTWVkaWFQbGF5
ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZDsKKworICAgIGF1dG8mIGFzc2V0Q2Fj
aGUgPSBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCk7CisgICAgaWYgKGFzc2V0Q2Fj
aGUuaXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIGFzc2V0Q2FjaGUuY2FuRGVjb2RlVHlw
ZShleHRlbmRlZFR5cGUpID09IE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNTdXBw
b3J0ZWQ7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKQorICAgIDogbV9wYXJzZXIoYWRvcHROUyhb
UEFMOjphbGxvY0FWU3RyZWFtRGF0YVBhcnNlckluc3RhbmNlKCkgaW5pdF0pKQorICAgICwgbV9k
ZWxlZ2F0ZShhZG9wdE5TKFtbV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgYWxsb2NdIGlu
aXRXaXRoUGFyc2VyOm1fcGFyc2VyLmdldCgpIHBhcmVudDp0aGlzXSkpCit7Cit9CisKK1NvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKK3sKKyAg
ICBtX2RlbGVnYXRlLmdldCgpLnBhcmVudCA9IG51bGxwdHI7Cit9CisKK3ZvaWQgU291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRh
LCBBcHBlbmRGbGFncyBmbGFncykKK3sKKyAgICBhdXRvIHNoYXJlZERhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZERhdGEt
PmNyZWF0ZU5TRGF0YSgpOworICAgIGlmIChtX3BhcnNlclN0YXRlV2FzUmVzZXQgfHwgZmxhZ3Mg
PT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCisgICAgICAgIFttX3BhcnNlciBhcHBlbmRT
dHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2VyU3RyZWFt
RGF0YURpc2NvbnRpbnVpdHldOworICAgIGVsc2UKKyAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0
cmVhbURhdGE6bnNEYXRhLmdldCgpXTsKKyAgICBtX3BhcnNlclN0YXRlV2FzUmVzZXQgPSBmYWxz
ZTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpmbHVzaFBlbmRpbmdNZWRp
YURhdGEoKQoreworICAgIFttX3BhcnNlciBwcm92aWRlUGVuZGluZ01lZGlhRGF0YV07Cit9CisK
K3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0
YUZvclRyYWNrSUQoYm9vbCBzaG91bGQsIGludDMyX3QgdHJhY2tJRCkKK3sKKyAgICBbbV9wYXJz
ZXIgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YTpzaG91bGQgZm9yVHJhY2tJRDp0cmFja0lEXTsK
K30KKworYm9vbCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpzaG91bGRQcm92aWRlTWVkaWFk
YXRhRm9yVHJhY2tJRChpbnQzMl90IHRyYWNrSUQpCit7CisgICAgcmV0dXJuIFttX3BhcnNlciBz
aG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRDp0cmFja0lEXTsKK30KKwordm9pZCBTb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpyZXNldFBhcnNlclN0YXRlKCkKK3sKKyAgICBtX3BhcnNl
clN0YXRlV2FzUmVzZXQgPSB0cnVlOworICAgIG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0
aWFsaXphdGlvblNlZ21lbnQgPSB0cnVlOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3NldCogYXNzZXQpCit7CisgICAg
Y2FsbE9uTWFpblRocmVhZChbdGhpcywgc3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBhc3Nl
dCA9IHJldGFpblB0cihhc3NldCldIHsKKyAgICAgICAgbV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4
dEluaXRpYWxpemF0aW9uU2VnbWVudCA9IGZhbHNlOworCisgICAgICAgIGlmICghbV9kaWRQYXJz
ZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIEluaXRpYWxpemF0aW9uU2VnbWVudCBzZWdtZW50OworCisgICAgICAgIGlmIChbYXNzZXQg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdmVyYWxsRHVyYXRpb25IaW50KV0pCisgICAg
ICAgICAgICBzZWdtZW50LmR1cmF0aW9uID0gUEFMOjp0b01lZGlhVGltZShbYXNzZXQgb3ZlcmFs
bER1cmF0aW9uSGludF0pOworCisgICAgICAgIGlmIChzZWdtZW50LmR1cmF0aW9uLmlzSW52YWxp
ZCgpIHx8IHNlZ21lbnQuZHVyYXRpb24gPT0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpKQorICAgICAg
ICAgICAgc2VnbWVudC5kdXJhdGlvbiA9IFBBTDo6dG9NZWRpYVRpbWUoW2Fzc2V0IGR1cmF0aW9u
XSk7CisKKyAgICAgICAgZm9yIChBVkFzc2V0VHJhY2sqIHRyYWNrIGluIFthc3NldCB0cmFja3Nd
KSB7CisgICAgICAgICAgICBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRp
YUNoYXJhY3RlcmlzdGljTGVnaWJsZV0pIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRSgxMjUx
NjEpOiBIYW5kbGUgaW4tYmFuZCB0ZXh0IHRyYWNrcy4KKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKFt0cmFjayBoYXNNZWRpYUNoYXJh
Y3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbF0pIHsKKyAgICAgICAgICAgICAg
ICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ6OlZpZGVv
VHJhY2tJbmZvcm1hdGlvbiBpbmZvOworICAgICAgICAgICAgICAgIGF1dG8gdmlkZW9UcmFjayA9
IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGUodHJhY2spOworICAg
ICAgICAgICAgICAgIGluZm8udHJhY2sgPSB2aWRlb1RyYWNrLmNvcHlSZWYoKTsKKyAgICAgICAg
ICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVkaWFEZXNjcmlwdGlvbkFWRk9iakM6OmNyZWF0
ZSh0cmFjayk7CisgICAgICAgICAgICAgICAgc2VnbWVudC52aWRlb1RyYWNrcy5hcHBlbmQoaW5m
byk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGlj
OkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGVdKSB7CisgICAgICAgICAgICAgICAgU291cmNl
QnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OjpBdWRpb1RyYWNrSW5m
b3JtYXRpb24gaW5mbzsKKyAgICAgICAgICAgICAgICBhdXRvIGF1ZGlvVHJhY2sgPSBBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKKyAgICAgICAgICAg
ICAgICBpbmZvLnRyYWNrID0gYXVkaW9UcmFjay5jb3B5UmVmKCk7CisgICAgICAgICAgICAgICAg
aW5mby5kZXNjcmlwdGlvbiA9IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDOjpjcmVhdGUodHJhY2sp
OworICAgICAgICAgICAgICAgIHNlZ21lbnQuYXVkaW9UcmFja3MuYXBwZW5kKGluZm8pOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBGSVhNRSgxMjUxNjEpICAgIDogQWRkIFRleHRU
cmFjayBzdXBwb3J0CisgICAgICAgIH0KKworICAgICAgICBtX2RpZFBhcnNlSW5pdGlhbGl6YXRp
b25EYXRhQ2FsbGJhY2soV1RGTW92ZShzZWdtZW50KSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9y
KE5TRXJyb3IqIGVycm9yKQoreworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHN0cm9uZ1Ro
aXMgPSBtYWtlUmVmKCp0aGlzKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpXSB7CisgICAgICAg
IGlmIChtX2RpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKQorICAgICAgICAg
ICAgbV9kaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayhlcnJvci5nZXQoKS5j
b2RlKTsKKyAgICB9KTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQ
cm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChpbnQzMl90IHRyYWNrSUQsIENNU2FtcGxlQnVmZmVy
UmVmIHNhbXBsZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkIGZsYWdz
KQoreworICAgIFVOVVNFRF9QQVJBTShmbGFncyk7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhp
cywgc3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzYW1wbGVCdWZmZXIgPSByZXRhaW5QdHIo
c2FtcGxlQnVmZmVyKSwgdHJhY2tJRCwgbWVkaWFUeXBlID0gbWVkaWFUeXBlXSB7CisgICAgICAg
IGlmICghbV9kaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2spCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlvblNl
Z21lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byBtZWRpYVNhbXBsZSA9
IE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKHNhbXBsZUJ1ZmZlci5nZXQoKSwgdHJhY2tJRCk7
CisKKyAgICAgICAgaWYgKG1lZGlhU2FtcGxlLT5pc0hvbW9nZW5lb3VzKCkpIHsKKyAgICAgICAg
ICAgIG1fZGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKFdURk1vdmUobWVkaWFTYW1wbGUpLCB0
cmFja0lELCBtZWRpYVR5cGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgZm9yIChhdXRvJiBzYW1wbGUgOiBtZWRpYVNhbXBsZS0+ZGl2aWRlSW50b0hvbW9nZW5l
b3VzU2FtcGxlcygpKQorICAgICAgICAgICAgbV9kaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2so
V1RGTW92ZShzYW1wbGUpLCB0cmFja0lELCBtZWRpYVR5cGUpOworICAgIH0pOworfQorCit2b2lk
IFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OndpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJ
bml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKGludDMyX3QgdHJhY2tJRCkKK3sKKyAgICBtX3dp
bGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2Fs
bGJhY2sodHJhY2tJRCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlk
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChOU0Rh
dGEqIG5zSW5pdERhdGEsIGludDMyX3QgdHJhY2tJRCkKK3sKKyAgICBhdXRvIGluaXREYXRhID0g
VWludDhBcnJheTo6Y3JlYXRlKG5zSW5pdERhdGEubGVuZ3RoKTsKKyAgICBbbnNJbml0RGF0YSBn
ZXRCeXRlczppbml0RGF0YS0+ZGF0YSgpIGxlbmd0aDppbml0RGF0YS0+bGVuZ3RoKCldOworCisg
ICAgbV9kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFj
a0lEQ2FsbGJhY2soV1RGTW92ZShpbml0RGF0YSksIHRyYWNrSUQpOworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRl
eCBkZmExMzRiNGQ2OGZkYjc0NzM0Mzc4ZDlmOWRkM2JkODQxZjMzZDY1Li42ZDE5NGFiMTQwYThi
ZDM0OTNiZWIzYWRkZjMyODNkM2I4ZTc1ZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpICYmIFVTRShBVkZPVU5EQVRJT04pCiAKKyNpbmNsdWRl
ICJTb3VyY2VCdWZmZXJQYXJzZXIuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlLmgi
CiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZ3JvdXAuaD4KICNpbmNsdWRlIDx3dGYvQm94Lmg+CkBAIC0z
OCwxOCArMzksMTcgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV1RGU2Vt
YXBob3JlLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9tU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAK
LU9CSkNfQ0xBU1MgQVZBc3NldDsKIE9CSkNfQ0xBU1MgQVZTdHJlYW1EYXRhUGFyc2VyOwogT0JK
Q19DTEFTUyBBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXI7CiBPQkpDX0NMQVNTIEFWU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOwogT0JKQ19DTEFTUyBOU0RhdGE7CiBPQkpDX0NMQVNTIE5TRXJy
b3I7CiBPQkpDX0NMQVNTIE5TT2JqZWN0OwotT0JKQ19DTEFTUyBXZWJBVlN0cmVhbURhdGFQYXJz
ZXJMaXN0ZW5lcjsKIE9CSkNfQ0xBU1MgV2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyOwog
CiB0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7
CkBAIC04NiwzNCArODYsMjcgQEAgY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMgZmlu
YWwKICNlbmRpZgogewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM+IGNyZWF0ZShNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKik7CisgICAgc3RhdGlj
IFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gY3JlYXRlKE1lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakMqLCBSZWY8U291cmNlQnVmZmVyUGFyc2VyPiYmKTsKICAgICB2aXJ0dWFsIH5Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQygpOwogCiAgICAgdm9pZCBjbGVhck1lZGlhU291cmNlKCkg
eyBtX21lZGlhU291cmNlID0gbnVsbHB0cjsgfQogCi0gICAgLy8gQVZTdHJlYW1EYXRhUGFyc2Vy
IGRlbGVnYXRlIG1ldGhvZHMKLSAgICB2b2lkIGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZB
c3NldCopOwotICAgIHZvaWQgZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yKE5TRXJy
b3IqKTsKLSAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGludCB0cmFja0lE
LCBDTVNhbXBsZUJ1ZmZlclJlZiwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkIGZs
YWdzKTsKLSAgICB2b2lkIGRpZFJlYWNoRW5kT2ZUcmFja1dpdGhUcmFja0lEKGludCB0cmFja0lE
LCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7Ci0gICAgdm9pZCB3aWxsUHJvdmlkZUNvbnRlbnRL
ZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChpbnQgdHJhY2tJRCk7Ci0gICAg
dm9pZCBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFj
a0lEKE5TRGF0YSosIGludCB0cmFja0lELCBCb3g8QmluYXJ5U2VtYXBob3JlPik7Ci0KLSAgICBi
b29sIHByb2Nlc3NDb2RlZEZyYW1lKGludCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJlZiwgY29u
c3QgU3RyaW5nJiBtZWRpYVR5cGUpOworICAgIHZvaWQgd2lsbFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoaW50MzJfdCB0cmFja0lEKTsKKyAgICB2
b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNr
SUQoUmVmPFVpbnQ4QXJyYXk+JiYsIGludDMyX3QgdHJhY2tJRCwgQm94PEJpbmFyeVNlbWFwaG9y
ZT4pOwogCiAgICAgYm9vbCBoYXNWaWRlbygpIGNvbnN0OwogICAgIGJvb2wgaGFzU2VsZWN0ZWRW
aWRlbygpIGNvbnN0OwogICAgIGJvb2wgaGFzQXVkaW8oKSBjb25zdDsKIAotICAgIHZvaWQgdHJh
Y2tEaWRDaGFuZ2VFbmFibGVkKFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKik7
Ci0gICAgdm9pZCB0cmFja0RpZENoYW5nZUVuYWJsZWQoQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMqKTsKKyAgICB2b2lkIHRyYWNrRGlkQ2hhbmdlU2VsZWN0ZWQoVmlkZW9UcmFj
a1ByaXZhdGUmLCBib29sIHNlbGVjdGVkKTsKKyAgICB2b2lkIHRyYWNrRGlkQ2hhbmdlRW5hYmxl
ZChBdWRpb1RyYWNrUHJpdmF0ZSYsIGJvb2wgZW5hYmxlZCk7CiAKICAgICB2b2lkIHdpbGxTZWVr
KCk7CiAgICAgTWVkaWFUaW1lIGZhc3RTZWVrVGltZUZvck1lZGlhVGltZShjb25zdCBNZWRpYVRp
bWUmLCBjb25zdCBNZWRpYVRpbWUmIG5lZ2F0aXZlVGhyZXNob2xkLCBjb25zdCBNZWRpYVRpbWUm
IHBvc2l0aXZlVGhyZXNob2xkKTsKICAgICBGbG9hdFNpemUgbmF0dXJhbFNpemUoKTsKIAogICAg
IGludCBwcm90ZWN0ZWRUcmFja0lEKCkgY29uc3QgeyByZXR1cm4gbV9wcm90ZWN0ZWRUcmFja0lE
OyB9Ci0gICAgQVZTdHJlYW1EYXRhUGFyc2VyKiBwYXJzZXIoKSBjb25zdCB7IHJldHVybiBtX3Bh
cnNlci5nZXQoKTsgfQorICAgIEFWU3RyZWFtRGF0YVBhcnNlciogcGFyc2VyKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRDRE1TZXNzaW9uKENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMqKTsKICAg
ICB2b2lkIHNldENETUluc3RhbmNlKENETUluc3RhbmNlKik7CiAgICAgdm9pZCBhdHRlbXB0VG9E
ZWNyeXB0KCk7CkBAIC0xNDgsNyArMTQxLDEyIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRl
OgotICAgIGV4cGxpY2l0IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJp
dmF0ZUFWRk9iakMqKTsKKyAgICBleHBsaWNpdCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhN
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiwgUmVmPFNvdXJjZUJ1ZmZlclBhcnNlcj4mJik7CisK
KyAgICB1c2luZyBJbml0aWFsaXphdGlvblNlZ21lbnQgPSBTb3VyY2VCdWZmZXJQYXJzZXI6Oklu
aXRpYWxpemF0aW9uU2VnbWVudDsKKyAgICB2b2lkIGRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRh
KEluaXRpYWxpemF0aW9uU2VnbWVudCYmKTsKKyAgICB2b2lkIGRpZEVuY291bnRlckVycm9yRHVy
aW5nUGFyc2luZyhpbnQzMl90KTsKKyAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFj
a0lEKFJlZjxNZWRpYVNhbXBsZT4mJiwgaW50MzJfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1l
ZGlhVHlwZSk7CiAKICAgICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlIG92ZXJyaWRlcwogICAgIHZv
aWQgc2V0Q2xpZW50KFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQqKSBmaW5hbDsKQEAgLTE3Miwy
OCArMTcwLDI4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhcHBlbmRDb21wbGV0ZWQoKTsKICAgICB2
b2lkIGRlc3Ryb3lQYXJzZXIoKTsKICAgICB2b2lkIGRlc3Ryb3lSZW5kZXJlcnMoKTsKKyAgICB2
b2lkIGNsZWFyVHJhY2tzKCk7CiAKICAgICB2b2lkIGZsdXNoVmlkZW8oKTsKICAgICBBTExPV19O
RVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCiAgICAgdm9pZCBmbHVzaChBVlNhbXBsZUJ1ZmZl
ckF1ZGlvUmVuZGVyZXIgKik7CiAgICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQK
IAotICAgIFZlY3RvcjxSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+
PiBtX3ZpZGVvVHJhY2tzOwotICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM+PiBtX2F1ZGlvVHJhY2tzOworICAgIFZlY3RvcjxSZWZQdHI8VmlkZW9U
cmFja1ByaXZhdGU+PiBtX3ZpZGVvVHJhY2tzOworICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFj
a1ByaXZhdGU+PiBtX2F1ZGlvVHJhY2tzOwogICAgIFZlY3RvcjxTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQ0Vycm9yQ2xpZW50Kj4gbV9lcnJvckNsaWVudHM7CiAKICAgICBXZWFrUHRyRmFjdG9y
eTxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gbV9hcHBlbmRXZWFrRmFjdG9yeTsKIAotICAg
IFJldGFpblB0cjxBVlN0cmVhbURhdGFQYXJzZXI+IG1fcGFyc2VyOwotICAgIFJldGFpblB0cjxB
VkFzc2V0PiBtX2Fzc2V0OworICAgIFJlZjxTb3VyY2VCdWZmZXJQYXJzZXI+IG1fcGFyc2VyOwog
ICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gbV9kaXNwbGF5TGF5ZXI7
CiAgICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgogICAgIEhhc2hNYXA8aW50
LCBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyPj4gbV9hdWRpb1JlbmRlcmVy
czsKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAotICAgIFJldGFpblB0cjxX
ZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcj4gbV9kZWxlZ2F0ZTsKICAgICBSZXRhaW5QdHI8
V2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyPiBtX2Vycm9yTGlzdGVuZXI7CiAgICAgUmV0
YWluUHRyPE5TRXJyb3I+IG1faGRjcEVycm9yOwogICAgIEJveDxCaW5hcnlTZW1hcGhvcmU+IG1f
aGFzU2Vzc2lvblNlbWFwaG9yZTsKKyAgICBCb3g8U2VtYXBob3JlPiBtX2Fib3J0U2VtYXBob3Jl
OwogICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX2dyb3VwX3Q+IG1faXNBcHBlbmRpbmdHcm91cDsK
ICAgICBSZWZQdHI8V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uPiBtX2RlY29tcHJlc3Npb25T
ZXNzaW9uOwogCkBAIC0yMTEsOCArMjA5LDYgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxGbG9h
dFNpemU+IG1fY2FjaGVkU2l6ZTsKICAgICBGbG9hdFNpemUgbV9jdXJyZW50U2l6ZTsKICAgICBi
b29sIG1fcGFyc2luZ1N1Y2NlZWRlZCB7IHRydWUgfTsKLSAgICBib29sIG1fcGFyc2VyU3RhdGVX
YXNSZXNldCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5p
dGlhbGl6YXRpb25TZWdtZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1fd2FpdGluZ0ZvcktleSB7
IHRydWUgfTsKICAgICBpbnQgbV9lbmFibGVkVmlkZW9UcmFja0lEIHsgLTEgfTsKICAgICBpbnQg
bV9wcm90ZWN0ZWRUcmFja0lEIHsgLTEgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggZDczNTc3NWNjOGYwNGI4YjAy
MWIzNWM3MDE2OTViZDI0ZjZmOGRhOC4uYjlhNDg5YzA4Mjk0M2UzNTk2NDRhNDM1NjYyOWVlZmJh
OWQ5Mjk5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0KQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbXBvcnQgIk1lZGlhU291cmNl
UHJpdmF0ZUFWRk9iakMuaCIKICNpbXBvcnQgIk5vdEltcGxlbWVudGVkLmgiCiAjaW1wb3J0ICJT
aGFyZWRCdWZmZXIuaCIKKyNpbXBvcnQgIlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCIKICNp
bXBvcnQgIlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaCIKICNpbXBvcnQgIlRpbWVSYW5nZXMu
aCIKICNpbXBvcnQgIlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgiCkBAIC04
MiwxNTMgKzgzLDYgQEAgLSAodm9pZClhZGRTdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQ
YXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyOwogLSAodm9pZClyZW1vdmVTdHJlYW1EYXRhUGFyc2Vy
OihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyOwogQGVuZAogCi0jcHJhZ21h
IG1hcmsgLQotI3ByYWdtYSBtYXJrIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyCi0KLUBp
bnRlcmZhY2UgV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgOiBOU09iamVjdDxBVlN0cmVh
bURhdGFQYXJzZXJPdXRwdXRIYW5kbGluZz4gewotICAgIFdlYWtQdHI8V2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM+IF9wYXJlbnQ7Ci0gICAgQm94PFNlbWFwaG9yZT4gX2Fib3J0
U2VtYXBob3JlOwotICAgIEFWU3RyZWFtRGF0YVBhcnNlciogX3BhcnNlcjsKLX0KLUBwcm9wZXJ0
eSAoYXNzaWduKSBXZWFrUHRyPFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBw
YXJlbnQ7Ci1AcHJvcGVydHkgKGFzc2lnbikgQm94PFNlbWFwaG9yZT4gYWJvcnRTZW1hcGhvcmU7
Ci0tIChpZClpbml0V2l0aFBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyKilwYXJzZXIgcGFyZW50
OihXZWFrUHRyPFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPilwYXJlbnQ7Ci1A
ZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcgotLSAo
aWQpaW5pdFdpdGhQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciopcGFyc2VyIHBhcmVudDooV2Vh
a1B0cjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4pcGFyZW50Ci17Ci0gICAg
c2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7
Ci0KLSAgICBBU1NFUlQocGFyZW50KTsKLSAgICBfcGFyZW50ID0gcGFyZW50OwotICAgIF9wYXJz
ZXIgPSBwYXJzZXI7Ci0gICAgW19wYXJzZXIgc2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgcmV0dXJu
IHNlbGY7Ci19Ci0KLUBzeW50aGVzaXplIHBhcmVudD1fcGFyZW50OwotQHN5bnRoZXNpemUgYWJv
cnRTZW1hcGhvcmU9X2Fib3J0U2VtYXBob3JlOwotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBb
X3BhcnNlciBzZXREZWxlZ2F0ZTpuaWxdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAo
dm9pZClpbnZhbGlkYXRlCi17Ci0gICAgW19wYXJzZXIgc2V0RGVsZWdhdGU6bmlsXTsKLSAgICBf
cGFyc2VyID0gbnVsbHB0cjsKLX0KLQotLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVh
bURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQ6
KEFWQXNzZXQgKilhc3NldAotewotICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwg
c3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLQotICAgIFJldGFpblB0cjxBVkFzc2V0PiBw
cm90ZWN0ZWRBc3NldCA9IGFzc2V0OwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3BhcmVudCA9IF9w
YXJlbnQsIHByb3RlY3RlZEFzc2V0ID0gV1RGTW92ZShwcm90ZWN0ZWRBc3NldCldIHsKLSAgICAg
ICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAgIHBhcmVudC0+ZGlkUGFyc2VTdHJlYW1EYXRhQXNB
c3NldChwcm90ZWN0ZWRBc3NldC5nZXQoKSk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpc3RyZWFt
RGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQYXJz
ZVN0cmVhbURhdGFBc0Fzc2V0OihBVkFzc2V0ICopYXNzZXQgd2l0aERpc2NvbnRpbnVpdHk6KEJP
T0wpZGlzY29udGludWl0eQotewotICAgIFVOVVNFRF9QQVJBTShkaXNjb250aW51aXR5KTsKLSAg
ICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3Bh
cnNlcik7Ci0KLSAgICBSZXRhaW5QdHI8QVZBc3NldD4gcHJvdGVjdGVkQXNzZXQgPSBhc3NldDsK
LSAgICBjYWxsT25NYWluVGhyZWFkKFtwYXJlbnQgPSBfcGFyZW50LCBwcm90ZWN0ZWRBc3NldCA9
IFdURk1vdmUocHJvdGVjdGVkQXNzZXQpXSB7Ci0gICAgICAgIGlmIChwYXJlbnQpCi0gICAgICAg
ICAgICBwYXJlbnQtPmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQocHJvdGVjdGVkQXNzZXQuZ2V0
KCkpOwotICAgIH0pOwotfQotCi0tICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0
YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVy
cm9yOihOU0Vycm9yICopZXJyb3IKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJz
ZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7Ci0KLSAgICBSZXRhaW5QdHI8TlNFcnJv
cj4gcHJvdGVjdGVkRXJyb3IgPSBlcnJvcjsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwYXJlbnQg
PSBfcGFyZW50LCBwcm90ZWN0ZWRFcnJvciA9IFdURk1vdmUocHJvdGVjdGVkRXJyb3IpXSB7Ci0g
ICAgICAgIGlmIChwYXJlbnQpCi0gICAgICAgICAgICBwYXJlbnQtPmRpZEZhaWxUb1BhcnNlU3Ry
ZWFtRGF0YVdpdGhFcnJvcihwcm90ZWN0ZWRFcnJvci5nZXQoKSk7Ci0gICAgfSk7Ci19Ci0KLS0g
KHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBh
cnNlciBkaWRQcm92aWRlTWVkaWFEYXRhOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGUgZm9yVHJh
Y2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lEIG1lZGlhVHlwZTooTlNTdHJpbmcgKilu
c01lZGlhVHlwZSBmbGFnczooQVZTdHJlYW1EYXRhUGFyc2VyT3V0cHV0TWVkaWFEYXRhRmxhZ3Mp
ZmxhZ3MKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQ
YXJzZXIgPT0gX3BhcnNlcik7Ci0KLSAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHBy
b3RlY3RlZFNhbXBsZSA9IHNhbXBsZTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwYXJlbnQgPSBf
cGFyZW50LCBwcm90ZWN0ZWRTYW1wbGUgPSBXVEZNb3ZlKHByb3RlY3RlZFNhbXBsZSksIHRyYWNr
SUQsIG1lZGlhVHlwZSA9IFN0cmluZyhuc01lZGlhVHlwZSksIGZsYWdzXSB7Ci0gICAgICAgIGlm
IChwYXJlbnQpCi0gICAgICAgICAgICBwYXJlbnQtPmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFj
a0lEKHRyYWNrSUQsIHByb3RlY3RlZFNhbXBsZS5nZXQoKSwgbWVkaWFUeXBlLCBmbGFncyk7Ci0g
ICAgfSk7Ci19Ci0KLS0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2Vy
ICopc3RyZWFtRGF0YVBhcnNlciBkaWRSZWFjaEVuZE9mVHJhY2tXaXRoVHJhY2tJRDooQ01QZXJz
aXN0ZW50VHJhY2tJRCl0cmFja0lEIG1lZGlhVHlwZTooTlNTdHJpbmcgKiluc01lZGlhVHlwZQot
ewotICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9
PSBfcGFyc2VyKTsKLQotICAgIGNhbGxPbk1haW5UaHJlYWQoW3BhcmVudCA9IF9wYXJlbnQsIHRy
YWNrSUQsIG1lZGlhVHlwZSA9IFN0cmluZyhuc01lZGlhVHlwZSldIHsKLSAgICAgICAgaWYgKHBh
cmVudCkKLSAgICAgICAgICAgIHBhcmVudC0+ZGlkUmVhY2hFbmRPZlRyYWNrV2l0aFRyYWNrSUQo
dHJhY2tJRCwgbWVkaWFUeXBlKTsKLSAgICB9KTsKLX0KLQotQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfQkVHSU4KLS0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcldpbGxQcm92aWRlQ29u
dGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGE6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0
cmVhbURhdGFQYXJzZXIgZm9yVHJhY2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lECi1B
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKLXsKLSAgICBBU1NFUlRfVU5VU0VE
KHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7Ci0KLSAgICAv
LyBXZSBtdXN0IGNhbGwgc3luY2hyb25vdXNseSB0byB0aGUgbWFpbiB0aHJlYWQsIGFzIHRoZSBB
VlN0cmVhbVNlc3Npb24gbXVzdCBiZSBhc3NvY2lhdGVkCi0gICAgLy8gd2l0aCB0aGUgc3RyZWFt
RGF0YVBhcnNlciBiZWZvcmUgdGhlIGRlbGVnYXRlIG1ldGhvZCByZXR1cm5zLgotICAgIEJveDxC
aW5hcnlTZW1hcGhvcmU+IHJlc3BvbmRlZFNlbWFwaG9yZSA9IEJveDxCaW5hcnlTZW1hcGhvcmU+
OjpjcmVhdGUoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwYXJlbnQgPSBfcGFyZW50LCB0cmFj
a0lELCByZXNwb25kZWRTZW1hcGhvcmVdKCkgewotICAgICAgICBpZiAocGFyZW50KQotICAgICAg
ICAgICAgcGFyZW50LT53aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25E
YXRhRm9yVHJhY2tJRCh0cmFja0lEKTsKLSAgICAgICAgcmVzcG9uZGVkU2VtYXBob3JlLT5zaWdu
YWwoKTsKLSAgICB9KTsKLQotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGlmIChyZXNwb25k
ZWRTZW1hcGhvcmUtPndhaXRGb3IoMTAwX21zKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBpZiAoX2Fib3J0U2VtYXBob3JlLT53YWl0Rm9yKDEwMF9tcykpIHsKLSAgICAgICAgICAg
IF9hYm9ydFNlbWFwaG9yZS0+c2lnbmFsKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLUFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCi0t
ICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQ
YXJzZXIgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOihOU0Rh
dGEgKilpbml0RGF0YSBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQKLUFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAotewotICAgIEFTU0VSVF9VTlVTRUQo
c3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLQotICAgIEJv
eDxCaW5hcnlTZW1hcGhvcmU+IGhhc1Nlc3Npb25TZW1hcGhvcmUgPSBCb3g8QmluYXJ5U2VtYXBo
b3JlPjo6Y3JlYXRlKCk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcGFyZW50ID0gX3BhcmVudCwg
cHJvdGVjdGVkSW5pdERhdGEgPSBSZXRhaW5QdHI8TlNEYXRhPihpbml0RGF0YSksIHRyYWNrSUQs
IGhhc1Nlc3Npb25TZW1hcGhvcmVdIHsKLSAgICAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAg
IHBhcmVudC0+ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9y
VHJhY2tJRChwcm90ZWN0ZWRJbml0RGF0YS5nZXQoKSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNlbWFw
aG9yZSk7Ci0gICAgfSk7Ci0KLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBpZiAoaGFzU2Vz
c2lvblNlbWFwaG9yZS0+d2FpdEZvcigxMDBfbXMpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIGlmIChfYWJvcnRTZW1hcGhvcmUtPndhaXRGb3IoMTAwX21zKSkgewotICAgICAgICAg
ICAgX2Fib3J0U2VtYXBob3JlLT5zaWduYWwoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotICAgIH0KLX0KLUBlbmQKLQogQGludGVyZmFjZSBXZWJBVlNhbXBsZUJ1ZmZlckVycm9y
TGlzdGVuZXIgOiBOU09iamVjdCB7CiAgICAgV2Vha1B0cjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQz4gX3BhcmVudDsKICAgICBWZWN0b3I8UmV0YWluUHRyPEFWU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyPj4gX2xheWVyczsKQEAgLTM5MSw0MyArMjQ1LDYgQEAgQGVuZAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIFBBTDsKIAotI3ByYWdtYSBtYXJrIC0K
LSNwcmFnbWEgbWFyayBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQwotCi1jbGFzcyBNZWRpYURlc2Ny
aXB0aW9uQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBNZWRpYURlc2NyaXB0aW9uIHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRy
YWNrKiB0cmFjaykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYURlc2NyaXB0aW9uQVZGT2Jq
Qyh0cmFjaykpOyB9Ci0gICAgdmlydHVhbCB+TWVkaWFEZXNjcmlwdGlvbkFWRk9iakMoKSB7IH0K
LQotICAgIEF0b21TdHJpbmcgY29kZWMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvZGVj
OyB9Ci0gICAgYm9vbCBpc1ZpZGVvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1ZpZGVv
OyB9Ci0gICAgYm9vbCBpc0F1ZGlvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0F1ZGlv
OyB9Ci0gICAgYm9vbCBpc1RleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzVGV4dDsg
fQotICAgIAotcHJpdmF0ZToKLSAgICBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyhBVkFzc2V0VHJh
Y2sqIHRyYWNrKQotICAgICAgICA6IG1faXNWaWRlbyhbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJp
c3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWxdKQotICAgICAgICAsIG1faXNBdWRpbyhb
dHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNBdWRpYmxl
XSkKLSAgICAgICAgLCBtX2lzVGV4dChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1l
ZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlXSkKLSAgICB7Ci0gICAgICAgIE5TQXJyYXkqIGZvcm1h
dERlc2NyaXB0aW9ucyA9IFt0cmFjayBmb3JtYXREZXNjcmlwdGlvbnNdOwotICAgICAgICBDTUZv
cm1hdERlc2NyaXB0aW9uUmVmIGRlc2NyaXB0aW9uID0gW2Zvcm1hdERlc2NyaXB0aW9ucyBjb3Vu
dF0gPyAoX19icmlkZ2UgQ01Gb3JtYXREZXNjcmlwdGlvblJlZilbZm9ybWF0RGVzY3JpcHRpb25z
IG9iamVjdEF0SW5kZXg6MF0gOiAwOwotICAgICAgICBpZiAoZGVzY3JpcHRpb24pIHsKLSAgICAg
ICAgICAgIEZvdXJDaGFyQ29kZSBjb2RlYyA9IENNRm9ybWF0RGVzY3JpcHRpb25HZXRNZWRpYVN1
YlR5cGUoZGVzY3JpcHRpb24pOwotICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgb3JpZ2luYWxGb3Jt
YXRLZXkgPSBQQUw6OmNhbkxvYWRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5z
aW9uX1Byb3RlY3RlZENvbnRlbnRPcmlnaW5hbEZvcm1hdCgpID8gUEFMOjpnZXRfQ29yZU1lZGlh
X2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1Byb3RlY3RlZENvbnRlbnRPcmlnaW5hbEZv
cm1hdCgpIDogQ0ZTVFIoIkNvbW1vbkVuY3J5cHRpb25PcmlnaW5hbEZvcm1hdCIpOwotICAgICAg
ICAgICAgQ0ZUeXBlUmVmIG9yaWdpbmFsRm9ybWF0ID0gQ01Gb3JtYXREZXNjcmlwdGlvbkdldEV4
dGVuc2lvbihkZXNjcmlwdGlvbiwgb3JpZ2luYWxGb3JtYXRLZXkpOwotICAgICAgICAgICAgaWYg
KG9yaWdpbmFsRm9ybWF0ICYmIENGR2V0VHlwZUlEKG9yaWdpbmFsRm9ybWF0KSA9PSBDRk51bWJl
ckdldFR5cGVJRCgpKQotICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUoKENGTnVtYmVy
UmVmKW9yaWdpbmFsRm9ybWF0LCBrQ0ZOdW1iZXJTSW50MzJUeXBlLCAmY29kZWMpOwotICAgICAg
ICAgICAgbV9jb2RlYyA9IEF0b21TdHJpbmcocmVpbnRlcnByZXRfY2FzdDxMQ2hhcio+KCZjb2Rl
YyksIDQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQXRvbVN0cmluZyBtX2NvZGVjOwotICAg
IGJvb2wgbV9pc1ZpZGVvOwotICAgIGJvb2wgbV9pc0F1ZGlvOwotICAgIGJvb2wgbV9pc1RleHQ7
Ci19OwotCiAjcHJhZ21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDCiAKQEAgLTQ2NSwxNCArMjgyLDEzIEBAIHN0YXRpYyB2b2lkIGJ1ZmZlcldhc0NvbnN1
bWVkQ2FsbGJhY2soQ01Ob3RpZmljYXRpb25DZW50ZXJSZWYsIGNvbnN0IHZvaWQqIGxpc3RlCiAg
ICAgICAgIHNvdXJjZUJ1ZmZlci0+YnVmZmVyV2FzQ29uc3VtZWQoKTsKIH0KIAotUmVmPFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y3JlYXRl
KE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKK1JlZjxTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQz4gU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZShNZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDKiBwYXJlbnQsIFJlZjxTb3VyY2VCdWZmZXJQYXJzZXI+JiYgcGFyc2Vy
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
KHBhcmVudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDKHBhcmVudCwgV1RGTW92ZShwYXJzZXIpKSk7CiB9CiAKLVNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDKiBwYXJlbnQpCi0gICAgOiBtX3BhcnNlcihhZG9wdE5TKFtQQUw6OmFsbG9jQVZTdHJl
YW1EYXRhUGFyc2VySW5zdGFuY2UoKSBpbml0XSkpCi0gICAgLCBtX2RlbGVnYXRlKGFkb3B0TlMo
W1tXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJzZXI6bV9w
YXJzZXIuZ2V0KCkgcGFyZW50Om1ha2VXZWFrUHRyKCp0aGlzKV0pKQorU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakMqIHBhcmVudCwgUmVmPFNvdXJjZUJ1ZmZlclBhcnNlcj4mJiBwYXJzZXIpCisgICAg
OiBtX3BhcnNlcihXVEZNb3ZlKHBhcnNlcikpCiAgICAgLCBtX2Vycm9yTGlzdGVuZXIoYWRvcHRO
UyhbW1dlYkFWU2FtcGxlQnVmZmVyRXJyb3JMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6
bWFrZVdlYWtQdHIoKnRoaXMpXSkpCiAgICAgLCBtX2lzQXBwZW5kaW5nR3JvdXAoYWRvcHRPU09i
amVjdChkaXNwYXRjaF9ncm91cF9jcmVhdGUoKSkpCiAgICAgLCBtX21lZGlhU291cmNlKHBhcmVu
dCkKQEAgLTQ4NiwxMCArMzAyLDI2IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDCiAKICAgICBp
ZiAoIVtQQUw6OmdldEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQ2xhc3MoKSBpbnN0YW5jZXNS
ZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3IocHJlcm9sbERlY29kZVdpdGhDb21wbGV0aW9uSGFu
ZGxlcjopXSkKICAgICAgICAgQ01Ob3RpZmljYXRpb25DZW50ZXJBZGRMaXN0ZW5lcihDTU5vdGlm
aWNhdGlvbkNlbnRlckdldERlZmF1bHRMb2NhbENlbnRlcigpLCByZWludGVycHJldF9jYXN0PHZv
aWQqPihtX21hcElEKSwgYnVmZmVyV2FzQ29uc3VtZWRDYWxsYmFjaywga0NNU2FtcGxlQnVmZmVy
Q29uc3VtZXJOb3RpZmljYXRpb25fQnVmZmVyQ29uc3VtZWQsIG51bGxwdHIsIDApOwotICAgIAot
ICAgIG1fZGVsZWdhdGUuZ2V0KCkuYWJvcnRTZW1hcGhvcmUgPSBCb3g8U2VtYXBob3JlPjo6Y3Jl
YXRlKDApOwogCiAgICAgc291cmNlQnVmZmVyTWFwKCkuYWRkKG1fbWFwSUQsIG1ha2VXZWFrUHRy
KCp0aGlzKSk7CisKKyAgICBtX3BhcnNlci0+c2V0RGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFD
YWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKEluaXRpYWxpemF0aW9uU2Vn
bWVudCYmIHNlZ21lbnQpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICB3ZWFrVGhpcy0+ZGlkUGFyc2VJ
bml0aWFsaXphdGlvbkRhdGEoV1RGTW92ZShzZWdtZW50KSk7CisgICAgfSk7CisKKyAgICBtX3Bh
cnNlci0+c2V0RGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2soW3dlYWtUaGlz
ID0gbWFrZVdlYWtQdHIodGhpcyldIChpbnQzMl90IGVycm9yQ29kZSkgbXV0YWJsZSB7CisgICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAg
ICAgICAgIHdlYWtUaGlzLT5kaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmcoZXJyb3JDb2Rl
KTsKKyAgICB9KTsKKworICAgIG1fcGFyc2VyLT5zZXREaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJh
Y2soW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChSZWY8TWVkaWFTYW1wbGU+JiYgc2Ft
cGxlLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkgbXV0YWJsZSB7
CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIGlmICh3ZWFrVGhpcykK
KyAgICAgICAgICAgIHdlYWtUaGlzLT5kaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChXVEZN
b3ZlKHNhbXBsZSksIHRyYWNrSUQsIG1lZGlhVHlwZSk7CisgICAgfSk7CiB9CiAKIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjp+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoKQpAQCAtNTAw
LDYgKzMzMiw3IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp+U291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMoKQogICAgIHNvdXJjZUJ1ZmZlck1hcCgpLnJlbW92ZShtX21hcElEKTsKICAg
ICBkZXN0cm95UGFyc2VyKCk7CiAgICAgZGVzdHJveVJlbmRlcmVycygpOworICAgIGNsZWFyVHJh
Y2tzKCk7CiAKICAgICBpZiAoIVtQQUw6OmdldEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQ2xh
c3MoKSBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3IocHJlcm9sbERlY29kZVdp
dGhDb21wbGV0aW9uSGFuZGxlcjopXSkKICAgICAgICAgQ01Ob3RpZmljYXRpb25DZW50ZXJSZW1v
dmVMaXN0ZW5lcihDTU5vdGlmaWNhdGlvbkNlbnRlckdldERlZmF1bHRMb2NhbENlbnRlcigpLCB0
aGlzLCBidWZmZXJXYXNDb25zdW1lZENhbGxiYWNrLCBrQ01TYW1wbGVCdWZmZXJDb25zdW1lck5v
dGlmaWNhdGlvbl9CdWZmZXJDb25zdW1lZCwgbnVsbHB0cik7CkBAIC01MDgsNyArMzQxLDcgQEAg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6On5Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQygp
CiAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFsKCk7CiB9CiAKLXZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3Nl
dCogYXNzZXQpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRp
YWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbnQmJiBzZWdtZW50KQogewogICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUik7CiAKQEAgLTUxNiw1MiArMzQ5LDMzIEBAIHZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3Nl
dCogYXNzZXQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX21lZGlhU291cmNlLT5wbGF5
ZXIoKS0+c2hvdWxkQ2hlY2tIYXJkd2FyZVN1cHBvcnQoKSkgewotICAgICAgICBmb3IgKEFWQXNz
ZXRUcmFjayAqdHJhY2sgaW4gW2Fzc2V0IHRyYWNrc10pIHsKLSAgICAgICAgICAgIGlmICghYXNz
ZXRUcmFja01lZXRzSGFyZHdhcmVEZWNvZGVSZXF1aXJlbWVudHModHJhY2ssIG1fbWVkaWFTb3Vy
Y2UtPnBsYXllcigpLT5tZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgp
KSkgeworICAgICAgICBmb3IgKGF1dG8mIGluZm8gOiBzZWdtZW50LnZpZGVvVHJhY2tzKSB7Cisg
ICAgICAgICAgICBhdXRvIGNvZGVjID0gRm91ckNDOjpmcm9tU3RyaW5nKGluZm8uZGVzY3JpcHRp
b24tPmNvZGVjKCkpOworICAgICAgICAgICAgaWYgKCFjb2RlYykKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIGlmICghY29kZWNzTWVldEhhcmR3YXJlRGVjb2RlUmVxdWly
ZW1lbnRzKHt7ICpjb2RlYyB9fSwgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPm1lZGlhQ29udGVu
dFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KCkpKSB7CiAgICAgICAgICAgICAgICAgbV9w
YXJzaW5nU3VjY2VlZGVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9hc3NldCA9IGFzc2V0OwotCi0gICAg
bV92aWRlb1RyYWNrcy5jbGVhcigpOwotICAgIG1fYXVkaW9UcmFja3MuY2xlYXIoKTsKLQotICAg
IG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlvblNlZ21lbnQgPSBmYWxzZTsK
LQotICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudCBz
ZWdtZW50OwotCi0gICAgaWYgKFttX2Fzc2V0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
b3ZlcmFsbER1cmF0aW9uSGludCldKQotICAgICAgICBzZWdtZW50LmR1cmF0aW9uID0gUEFMOjp0
b01lZGlhVGltZShbbV9hc3NldCBvdmVyYWxsRHVyYXRpb25IaW50XSk7Ci0KLSAgICBpZiAoc2Vn
bWVudC5kdXJhdGlvbi5pc0ludmFsaWQoKSB8fCBzZWdtZW50LmR1cmF0aW9uID09IE1lZGlhVGlt
ZTo6emVyb1RpbWUoKSkKLSAgICAgICAgc2VnbWVudC5kdXJhdGlvbiA9IFBBTDo6dG9NZWRpYVRp
bWUoW21fYXNzZXQgZHVyYXRpb25dKTsKLQotICAgIGZvciAoQVZBc3NldFRyYWNrKiB0cmFjayBp
biBbbV9hc3NldCB0cmFja3NdKSB7Ci0gICAgICAgIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0
ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlXSkgewotICAgICAgICAgICAgLy8g
RklYTUUoMTI1MTYxKTogSGFuZGxlIGluLWJhbmQgdGV4dCB0cmFja3MuCi0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgfQorICAgIGNsZWFyVHJhY2tzKCk7CiAKLSAgICAgICAgaWYgKFt0
cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbF0p
IHsKLSAgICAgICAgICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9u
U2VnbWVudDo6VmlkZW9UcmFja0luZm9ybWF0aW9uIGluZm87Ci0gICAgICAgICAgICBhdXRvIHZp
ZGVvVHJhY2sgPSBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRy
YWNrLCB0aGlzKTsKLSAgICAgICAgICAgIGluZm8udHJhY2sgPSB2aWRlb1RyYWNrLmNvcHlSZWYo
KTsKLSAgICAgICAgICAgIG1fdmlkZW9UcmFja3MuYXBwZW5kKFdURk1vdmUodmlkZW9UcmFjaykp
OwotICAgICAgICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpD
OjpjcmVhdGUodHJhY2spOwotICAgICAgICAgICAgc2VnbWVudC52aWRlb1RyYWNrcy5hcHBlbmQo
aW5mbyk7Ci0gICAgICAgIH0gZWxzZSBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6
QVZNZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJsZV0pIHsKLSAgICAgICAgICAgIFNvdXJjZUJ1ZmZl
clByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDo6QXVkaW9UcmFja0luZm9ybWF0
aW9uIGluZm87Ci0gICAgICAgICAgICBhdXRvIGF1ZGlvVHJhY2sgPSBBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNrLCB0aGlzKTsKLSAgICAgICAgICAgIGlu
Zm8udHJhY2sgPSBhdWRpb1RyYWNrLmNvcHlSZWYoKTsKLSAgICAgICAgICAgIG1fYXVkaW9UcmFj
a3MuYXBwZW5kKFdURk1vdmUoYXVkaW9UcmFjaykpOwotICAgICAgICAgICAgaW5mby5kZXNjcmlw
dGlvbiA9IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDOjpjcmVhdGUodHJhY2spOwotICAgICAgICAg
ICAgc2VnbWVudC5hdWRpb1RyYWNrcy5hcHBlbmQoaW5mbyk7Ci0gICAgICAgIH0KKyAgICBmb3Ig
KGF1dG8gdmlkZW9UcmFja0luZm8gOiBzZWdtZW50LnZpZGVvVHJhY2tzKSB7CisgICAgICAgIHZp
ZGVvVHJhY2tJbmZvLnRyYWNrLT5zZXRTZWxlY3RlZENoYW5nZWRDYWxsYmFjayhbd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cih0aGlzKV0gKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjaywgYm9vbCBzZWxl
Y3RlZCkgeworICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtU
aGlzLT50cmFja0RpZENoYW5nZVNlbGVjdGVkKHRyYWNrLCBzZWxlY3RlZCk7CisgICAgICAgIH0p
OworICAgICAgICBtX3ZpZGVvVHJhY2tzLmFwcGVuZCh2aWRlb1RyYWNrSW5mby50cmFjayk7Cisg
ICAgfQogCi0gICAgICAgIC8vIEZJWE1FKDEyNTE2MSk6IEFkZCBUZXh0VHJhY2sgc3VwcG9ydAor
ICAgIGZvciAoYXV0byBhdWRpb1RyYWNrSW5mbyA6IHNlZ21lbnQuYXVkaW9UcmFja3MpIHsKKyAg
ICAgICAgYXVkaW9UcmFja0luZm8udHJhY2stPnNldEVuYWJsZWRDaGFuZ2VkQ2FsbGJhY2soW3dl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChBdWRpb1RyYWNrUHJpdmF0ZSYgdHJhY2ssIGJv
b2wgZW5hYmxlZCkgeworICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAg
IHdlYWtUaGlzLT50cmFja0RpZENoYW5nZUVuYWJsZWQodHJhY2ssIGVuYWJsZWQpOworICAgICAg
ICB9KTsKKyAgICAgICAgbV9hdWRpb1RyYWNrcy5hcHBlbmQoYXVkaW9UcmFja0luZm8udHJhY2sp
OwogICAgIH0KIAogICAgIGlmIChtX21lZGlhU291cmNlKQpAQCAtNTcxLDYxICszODUsMjkgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3Nl
dChBVkFzc2V0KiBhc3NldCkKICAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVE
aWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KHNlZ21lbnQpOwogfQogCi12b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRGYWlsVG9QYXJzZVN0cmVhbURhdGFXaXRoRXJyb3Io
TlNFcnJvciAqZXJyb3IpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRFbmNv
dW50ZXJFcnJvckR1cmluZ1BhcnNpbmcoaW50MzJfdCBjb2RlKQogewogI2lmIExPR19ESVNBQkxF
RAotICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CisgICAgVU5VU0VEX1BBUkFNKGNvZGUpOwogI2Vu
ZGlmCi0gICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsIFtbZXJyb3IgZGVzY3JpcHRpb25dIFVU
RjhTdHJpbmddKTsKKyAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgY29kZSk7CiAKICAgICBt
X3BhcnNpbmdTdWNjZWVkZWQgPSBmYWxzZTsKIH0KIAotc3RydWN0IFByb2Nlc3NDb2RlZEZyYW1l
SW5mbyB7Ci0gICAgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHNvdXJjZUJ1ZmZlcjsKLSAg
ICBpbnQgdHJhY2tJRDsKLSAgICBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZTsKLX07Ci0KLXZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lE
KGludCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIsIGNvbnN0IFN0cmlu
ZyYgbWVkaWFUeXBlLCB1bnNpZ25lZCkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNh
bXBsZSwgaW50MzJfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkKIHsKLSAgICBw
cm9jZXNzQ29kZWRGcmFtZSh0cmFja0lELCBzYW1wbGVCdWZmZXIsIG1lZGlhVHlwZSk7Ci19Cisg
ICAgVU5VU0VEX1BBUkFNKG1lZGlhVHlwZSk7CiAKLWJvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OnByb2Nlc3NDb2RlZEZyYW1lKGludCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJlZiBz
YW1wbGVCdWZmZXIsIGNvbnN0IFN0cmluZyYpCi17CiAgICAgaWYgKHRyYWNrSUQgIT0gbV9lbmFi
bGVkVmlkZW9UcmFja0lEICYmICFtX2F1ZGlvUmVuZGVyZXJzLmNvbnRhaW5zKHRyYWNrSUQpKSB7
CiAgICAgICAgIC8vIEZJWE1FKDEyNTE2MSk6IFdlIGRvbid0IGhhbmRsZSB0ZXh0IHRyYWNrcywg
YW5kIHBhc3NpbmcgdGhpcyBzYW1wbGUgdXAgdG8gU291cmNlQnVmZmVyCiAgICAgICAgIC8vIHdp
bGwganVzdCBjb25mdXNlIGl0cyBzdGF0ZS4gRHJvcCB0aGlzIHNhbXBsZSB1bnRpbCB3ZSBjYW4g
aGFuZGxlIHRleHQgdHJhY2tzIHByb3Blcmx5LgotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4dElu
aXRpYWxpemF0aW9uU2VnbWVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFt
X2NsaWVudCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBhdXRvIG1lZGlhU2FtcGxlID0g
TWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUoc2FtcGxlQnVmZmVyLCB0cmFja0lEKTsKLQotICAg
IGlmIChtZWRpYVNhbXBsZS0+aXNIb21vZ2VuZW91cygpKSB7Ci0gICAgICAgIERFQlVHX0xPRyhM
T0dJREVOVElGSUVSLCBtZWRpYVNhbXBsZS0+dG9KU09OU3RyaW5nKCkpOworICAgIERFQlVHX0xP
RyhMT0dJREVOVElGSUVSLCBtZWRpYVNhbXBsZS0+dG9KU09OU3RyaW5nKCkpOworICAgIGlmICht
X2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZl
U2FtcGxlKG1lZGlhU2FtcGxlKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAg
YXV0byBtZWRpYVNhbXBsZXMgPSBtZWRpYVNhbXBsZS0+ZGl2aWRlSW50b0hvbW9nZW5lb3VzU2Ft
cGxlcygpOwotICAgIGZvciAoYXV0byYgc2FtcGxlIDogbWVkaWFTYW1wbGVzKSB7Ci0gICAgICAg
IERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCBzYW1wbGUtPnRvSlNPTlN0cmluZygpKTsKLSAgICAg
ICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2FtcGxlKHNhbXBsZSk7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OmRpZFJlYWNoRW5kT2ZUcmFja1dpdGhUcmFja0lEKGludCwgY29uc3QgU3RyaW5n
JikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRChpbnQgdHJhY2tJRCkKQEAgLTYzMywxOCArNDE1LDIwIEBAIHZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OndpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFs
aXphdGlvbkRhdGFGCiAgICAgaWYgKCFtX21lZGlhU291cmNlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBBU1NFUlQobV9wYXJzZXIpOwotCiAjaWYgSEFWRShBVlNUUkVBTVNFU1NJT04pICYmIEVO
QUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklF
UiwgInRyYWNrID0gIiwgdHJhY2tJRCk7CiAKICAgICBtX3Byb3RlY3RlZFRyYWNrSUQgPSB0cmFj
a0lEOwogCisgICAgYXV0byBwYXJzZXIgPSB0aGlzLT5wYXJzZXIoKTsKKyAgICBpZiAoIXBhcnNl
cikKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9i
akMqIHNlc3Npb24gPSBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+Y2RtU2Vzc2lvbigpKQotICAg
ICAgICBzZXNzaW9uLT5hZGRQYXJzZXIobV9wYXJzZXIuZ2V0KCkpOworICAgICAgICBzZXNzaW9u
LT5hZGRQYXJzZXIocGFyc2VyKTsKICAgICBlbHNlIGlmICghQ0RNU2Vzc2lvbkFWQ29udGVudEtl
eVNlc3Npb246OmlzQXZhaWxhYmxlKCkpIHsKICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TCi0gICAgICAgIFttX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c3RyZWFtU2Vzc2lvbigp
IGFkZFN0cmVhbURhdGFQYXJzZXI6bV9wYXJzZXIuZ2V0KCldOworICAgICAgICBbbV9tZWRpYVNv
dXJjZS0+cGxheWVyKCktPnN0cmVhbVNlc3Npb24oKSBhZGRTdHJlYW1EYXRhUGFyc2VyOnBhcnNl
cl07CiAgICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICB9CiAjZWxzZQpAQCAt
NjUyLDcgKzQzNiw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OndpbGxQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGCiAjZW5kaWYKIH0KIAotdm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChOU0RhdGEqIGluaXREYXRhLCBpbnQgdHJhY2tJ
RCwgQm94PEJpbmFyeVNlbWFwaG9yZT4gaGFzU2Vzc2lvblNlbWFwaG9yZSkKK3ZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxp
emF0aW9uRGF0YUZvclRyYWNrSUQoUmVmPFVpbnQ4QXJyYXk+JiYgaW5pdERhdGEsIGludCB0cmFj
a0lELCBCb3g8QmluYXJ5U2VtYXBob3JlPiBoYXNTZXNzaW9uU2VtYXBob3JlKQogewogICAgIGlm
ICghbV9tZWRpYVNvdXJjZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjYxLDExICs0NDUsMTEgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1
ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJ0
cmFjayA9ICIsIHRyYWNrSUQpOwogCiAgICAgbV9wcm90ZWN0ZWRUcmFja0lEID0gdHJhY2tJRDsK
LSAgICBtX2luaXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRlKFtpbml0RGF0YSBsZW5ndGhdKTsK
LSAgICBbaW5pdERhdGEgZ2V0Qnl0ZXM6bV9pbml0RGF0YS0+ZGF0YSgpIGxlbmd0aDptX2luaXRE
YXRhLT5sZW5ndGgoKV07CisgICAgbV9pbml0RGF0YSA9IFdURk1vdmUoaW5pdERhdGEpOwogICAg
IG1fbWVkaWFTb3VyY2UtPnNvdXJjZUJ1ZmZlcktleU5lZWRlZCh0aGlzLCBtX2luaXREYXRhLmdl
dCgpKTsKICAgICBpZiAoYXV0byBzZXNzaW9uID0gbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPmNk
bVNlc3Npb24oKSkgewotICAgICAgICBzZXNzaW9uLT5hZGRQYXJzZXIobV9wYXJzZXIuZ2V0KCkp
OworICAgICAgICBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5wYXJzZXIoKSkKKyAgICAgICAgICAg
IHNlc3Npb24tPmFkZFBhcnNlcihwYXJzZXIpOwogICAgICAgICBoYXNTZXNzaW9uU2VtYXBob3Jl
LT5zaWduYWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTY3NiwxNCArNDYwLDE1IEBA
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUZvCiAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlID0gaGFz
U2Vzc2lvblNlbWFwaG9yZTsKICAgICAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBI
QVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCi0gICAgYXV0byBpbml0RGF0YUJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRhKTsKKyAgICBhdXRvIGluaXREYXRhQnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEtPmJ5dGVMZW5ndGgo
KSk7CiAgICAgYXV0byBrZXlJRHMgPSBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJh
Y3RLZXlJRHNTaW5mKGluaXREYXRhQnVmZmVyKTsKICAgICBpZiAoIWtleUlEcykKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKG1fY2RtSW5zdGFuY2UpIHsKICAgICAgICAgaWYgKGF1dG8gaW5z
dGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhrZXlJRHMudmFs
dWUoKSkpIHsKLSAgICAgICAgICAgIFtpbnN0YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNzaW9u
KCkgYWRkQ29udGVudEtleVJlY2lwaWVudDptX3BhcnNlci5nZXQoKV07CisgICAgICAgICAgICBp
ZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5wYXJzZXIoKSkKKyAgICAgICAgICAgICAgICBbaW5zdGFu
Y2VTZXNzaW9uLT5jb250ZW50S2V5U2Vzc2lvbigpIGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6cGFy
c2VyXTsKICAgICAgICAgICAgIGlmIChtX2hhc1Nlc3Npb25TZW1hcGhvcmUpIHsKICAgICAgICAg
ICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwogICAgICAgICAgICAgICAg
IG1faGFzU2Vzc2lvblNlbWFwaG9yZSA9IG51bGxwdHI7CkBAIC03MjQsMTYgKzUwOSw1NCBAQCB2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNo
YXI+JiYgZGF0YSkKIHsKICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgImRhdGEgbGVuZ3Ro
ID0gIiwgZGF0YS5zaXplKCkpOwogCisgICAgQVNTRVJUKCFtX2hhc1Nlc3Npb25TZW1hcGhvcmUp
OworICAgIEFTU0VSVCghbV9hYm9ydFNlbWFwaG9yZSk7CisKKyAgICBtX2Fib3J0U2VtYXBob3Jl
ID0gQm94PFNlbWFwaG9yZT46OmNyZWF0ZSgwKTsKKyAgICBtX3BhcnNlci0+c2V0V2lsbFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayhb
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgYWJvcnRTZW1hcGhvcmUgPSBtX2Fib3J0U2Vt
YXBob3JlXSAodWludDMyX3QgdHJhY2tJRCkgbXV0YWJsZSB7CisgICAgICAgIC8vIFdlIG11c3Qg
Y2FsbCBzeW5jaHJvbm91c2x5IHRvIHRoZSBtYWluIHRocmVhZCwgYXMgdGhlIEFWU3RyZWFtU2Vz
c2lvbiBtdXN0IGJlIGFzc29jaWF0ZWQKKyAgICAgICAgLy8gd2l0aCB0aGUgc3RyZWFtRGF0YVBh
cnNlciBiZWZvcmUgdGhlIGRlbGVnYXRlIG1ldGhvZCByZXR1cm5zLgorICAgICAgICBCb3g8Qmlu
YXJ5U2VtYXBob3JlPiByZXNwb25kZWRTZW1hcGhvcmUgPSBCb3g8QmluYXJ5U2VtYXBob3JlPjo6
Y3JlYXRlKCk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzID0gV1RGTW92ZSh3
ZWFrVGhpcyksIHRyYWNrSUQsIHJlc3BvbmRlZFNlbWFwaG9yZV0oKSB7CisgICAgICAgICAgICBp
ZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPndpbGxQcm92aWRlQ29udGVu
dEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHRyYWNrSUQpOworICAgICAg
ICAgICAgcmVzcG9uZGVkU2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICAgICAgfSk7CisKKyAgICAg
ICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGlmIChyZXNwb25kZWRTZW1hcGhvcmUtPndh
aXRGb3IoMTAwX21zKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlm
IChhYm9ydFNlbWFwaG9yZS0+d2FpdEZvcigxMDBfbXMpKSB7CisgICAgICAgICAgICAgICAgYWJv
cnRTZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0pOworCisgICAgbV9wYXJzZXItPnNldERpZFByb3ZpZGVD
b250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayhbd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgYWJvcnRTZW1hcGhvcmUgPSBtX2Fib3J0U2VtYXBo
b3JlXSAoUmVmPFVpbnQ4QXJyYXk+JiYgaW5pdERhdGEsIGludDMyX3QgdHJhY2tJRCkgbXV0YWJs
ZSB7CisgICAgICAgIEJveDxCaW5hcnlTZW1hcGhvcmU+IGhhc1Nlc3Npb25TZW1hcGhvcmUgPSBC
b3g8QmluYXJ5U2VtYXBob3JlPjo6Y3JlYXRlKCk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGluaXREYXRhID0gV1RGTW92ZShpbml0RGF0
YSksIHRyYWNrSUQsIGhhc1Nlc3Npb25TZW1hcGhvcmVdICgpIG11dGFibGUgeworICAgICAgICAg
ICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5kaWRQcm92aWRlQ29u
dGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKFdURk1vdmUoaW5pdERh
dGEpLCB0cmFja0lELCBoYXNTZXNzaW9uU2VtYXBob3JlKTsKKyAgICAgICAgfSk7CisKKyAgICAg
ICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGlmIChoYXNTZXNzaW9uU2VtYXBob3JlLT53
YWl0Rm9yKDEwMF9tcykpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBp
ZiAoYWJvcnRTZW1hcGhvcmUtPndhaXRGb3IoMTAwX21zKSkgeworICAgICAgICAgICAgICAgIGFi
b3J0U2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9KTsKKwogICAgIG1fcGFyc2luZ1N1Y2NlZWRlZCA9IHRy
dWU7CiAgICAgZGlzcGF0Y2hfZ3JvdXBfZW50ZXIobV9pc0FwcGVuZGluZ0dyb3VwLmdldCgpKTsK
IAotICAgIGRpc3BhdGNoX2FzeW5jKGdsb2JhbERhdGFQYXJzZXJRdWV1ZSgpLCBbZGF0YSA9IFdU
Rk1vdmUoZGF0YSksIHdlYWtUaGlzID0gbV9hcHBlbmRXZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRy
KCp0aGlzKSwgcGFyc2VyID0gbV9wYXJzZXIsIGRlbGVnYXRlID0gbV9kZWxlZ2F0ZSwgaXNBcHBl
bmRpbmdHcm91cCA9IG1faXNBcHBlbmRpbmdHcm91cCwgcGFyc2VyU3RhdGVXYXNSZXNldCA9IG1f
cGFyc2VyU3RhdGVXYXNSZXNldF0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gc2hhcmVkRGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwotICAgICAgICBhdXRvIG5z
RGF0YSA9IHNoYXJlZERhdGEtPmNyZWF0ZU5TRGF0YSgpOwotICAgICAgICBpZiAocGFyc2VyU3Rh
dGVXYXNSZXNldCkKLSAgICAgICAgICAgIFtwYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEu
Z2V0KCkgd2l0aEZsYWdzOkFWU3RyZWFtRGF0YVBhcnNlclN0cmVhbURhdGFEaXNjb250aW51aXR5
XTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgW3BhcnNlciBhcHBlbmRTdHJlYW1EYXRhOm5z
RGF0YS5nZXQoKV07CisgICAgZGlzcGF0Y2hfYXN5bmMoZ2xvYmFsRGF0YVBhcnNlclF1ZXVlKCks
IFtkYXRhID0gV1RGTW92ZShkYXRhKSwgd2Vha1RoaXMgPSBtX2FwcGVuZFdlYWtGYWN0b3J5LmNy
ZWF0ZVdlYWtQdHIoKnRoaXMpLCBwYXJzZXIgPSBtX3BhcnNlciwgaXNBcHBlbmRpbmdHcm91cCA9
IG1faXNBcHBlbmRpbmdHcm91cF0gKCkgbXV0YWJsZSB7CisgICAgICAgIHBhcnNlci0+YXBwZW5k
RGF0YShXVEZNb3ZlKGRhdGEpKTsKIAogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhp
c10gewogICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQpAQCAtNzQxLDExICs1NjQsMjAgQEAgdm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFy
PiYmIGRhdGEpCiAgICAgICAgIH0pOwogICAgICAgICBkaXNwYXRjaF9ncm91cF9sZWF2ZShpc0Fw
cGVuZGluZ0dyb3VwLmdldCgpKTsKICAgICB9KTsKLSAgICBtX3BhcnNlclN0YXRlV2FzUmVzZXQg
PSBmYWxzZTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kQ29t
cGxldGVkKCkKIHsKKyAgICBpZiAobV9hYm9ydFNlbWFwaG9yZSkgeworICAgICAgICBtX2Fib3J0
U2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICAgICAgbV9hYm9ydFNlbWFwaG9yZSA9IG5pbDsKKyAg
ICB9CisKKyAgICBpZiAobV9oYXNTZXNzaW9uU2VtYXBob3JlKSB7CisgICAgICAgIG1faGFzU2Vz
c2lvblNlbWFwaG9yZS0+c2lnbmFsKCk7CisgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZSA9
IG5pbDsKKyAgICB9CisKICAgICBpZiAobV9wYXJzaW5nU3VjY2VlZGVkICYmIG1fbWVkaWFTb3Vy
Y2UpCiAgICAgICAgIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5zZXRMb2FkaW5nUHJvZ3Jlc3Nz
ZWQodHJ1ZSk7CiAKQEAgLTc2MCwzOSArNTkyLDM5IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OmFib3J0KCkKICAgICAvLyBUaGUgcGFyc2luZyBxdWV1ZSBtYXkgYmUgYmxvY2tl
ZCB3YWl0aW5nIGZvciB0aGUgbWFpbiB0aHJlYWQgdG8gcHJvdmlkZSBpdCBhIEFWU3RyZWFtU2Vz
c2lvbi4gV2UKICAgICAvLyB3ZXJlIGFza2VkIHRvIGFib3J0LCBhbmQgdGhhdCBjYW5jZWxzIGFs
bCBvdXRzdGFuZGluZyBhcHBlbmQgb3BlcmF0aW9ucy4gV2l0aG91dCBjYW5jZWxsaW5nIHRoaXMK
ICAgICAvLyBzZW1hcGhvcmUsIHRoZSBtX2lzQXBwZW5kaW5nR3JvdXAgd2FpdCBvcGVyYXRpb24g
d2lsbCBkZWFkbG9jay4KLSAgICBpZiAobV9oYXNTZXNzaW9uU2VtYXBob3JlKQorICAgIGlmICht
X2hhc1Nlc3Npb25TZW1hcGhvcmUpIHsKICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlLT5z
aWduYWwoKTsKLSAgICBtX2RlbGVnYXRlLmdldCgpLmFib3J0U2VtYXBob3JlLT5zaWduYWwoKTsK
KyAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlID0gbnVsbHB0cjsKKyAgICB9CisgICAgaWYg
KG1fYWJvcnRTZW1hcGhvcmUpIHsKKyAgICAgICAgbV9hYm9ydFNlbWFwaG9yZS0+c2lnbmFsKCk7
CisgICAgICAgIG1fYWJvcnRTZW1hcGhvcmUgPSBudWxscHRyOworICAgIH0KICAgICBkaXNwYXRj
aF9ncm91cF93YWl0KG1faXNBcHBlbmRpbmdHcm91cC5nZXQoKSwgRElTUEFUQ0hfVElNRV9GT1JF
VkVSKTsKLSAgICBtX2FwcGVuZFdlYWtGYWN0b3J5LnJldm9rZUFsbCgpOwotICAgIG1fZGVsZWdh
dGUuZ2V0KCkucGFyZW50ID0gbV9hcHBlbmRXZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCp0aGlz
KTsKLSAgICBtX2RlbGVnYXRlLmdldCgpLmFib3J0U2VtYXBob3JlID0gQm94PFNlbWFwaG9yZT46
OmNyZWF0ZSgwKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6cmVzZXRQ
YXJzZXJTdGF0ZSgpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIAotICAgIG1f
cGFyc2VyU3RhdGVXYXNSZXNldCA9IHRydWU7Ci0gICAgbV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4
dEluaXRpYWxpemF0aW9uU2VnbWVudCA9IHRydWU7CisgICAgbV9wYXJzZXItPnJlc2V0UGFyc2Vy
U3RhdGUoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGVzdHJveVBh
cnNlcigpCiB7CisgICAgYXV0byBwYXJzZXIgPSB0aGlzLT5wYXJzZXIoKTsKKyAgICBpZiAoIXBh
cnNlcikKKyAgICAgICAgcmV0dXJuOwogI2lmIEhBVkUoQVZTVFJFQU1TRVNTSU9OKSAmJiBFTkFC
TEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBpZiAobV9tZWRpYVNvdXJjZSAmJiBtX21l
ZGlhU291cmNlLT5wbGF5ZXIoKS0+aGFzU3RyZWFtU2Vzc2lvbigpKQotICAgICAgICBbbV9tZWRp
YVNvdXJjZS0+cGxheWVyKCktPnN0cmVhbVNlc3Npb24oKSByZW1vdmVTdHJlYW1EYXRhUGFyc2Vy
Om1fcGFyc2VyLmdldCgpXTsKKyAgICAgICAgW21fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5zdHJl
YW1TZXNzaW9uKCkgcmVtb3ZlU3RyZWFtRGF0YVBhcnNlcjpwYXJzZXJdOwogI2VuZGlmCiAjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQogICAg
IGlmIChtX2NkbUluc3RhbmNlKSB7CiAgICAgICAgIGlmIChhdXRvIGluc3RhbmNlU2Vzc2lvbiA9
IG1fY2RtSW5zdGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMobV9rZXlJRHMpKQotICAgICAgICAgICAg
W2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSByZW1vdmVDb250ZW50S2V5UmVj
aXBpZW50Om1fcGFyc2VyLmdldCgpXTsKKyAgICAgICAgICAgIFtpbnN0YW5jZVNlc3Npb24tPmNv
bnRlbnRLZXlTZXNzaW9uKCkgcmVtb3ZlQ29udGVudEtleVJlY2lwaWVudDpwYXJzZXJdOwogICAg
IH0KICNlbmRpZgotCi0gICAgW21fZGVsZWdhdGUgaW52YWxpZGF0ZV07Ci0gICAgbV9kZWxlZ2F0
ZSA9IG51bGxwdHI7Ci0gICAgbV9wYXJzZXIgPSBudWxscHRyOwogfQogCiB2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjpkZXN0cm95UmVuZGVyZXJzKCkKQEAgLTgxNyw2ICs2NDksMTcg
QEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGVzdHJveVJlbmRlcmVycygpCiAg
ICAgbV9hdWRpb1JlbmRlcmVycy5jbGVhcigpOwogfQogCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpjbGVhclRyYWNrcygpCit7CisgICAgZm9yIChhdXRvJiB0cmFjayA6IG1fdmlk
ZW9UcmFja3MpCisgICAgICAgIHRyYWNrLT5zZXRTZWxlY3RlZENoYW5nZWRDYWxsYmFjayhudWxs
cHRyKTsKKyAgICBtX3ZpZGVvVHJhY2tzLmNsZWFyKCk7CisKKyAgICBmb3IgKGF1dG8mIHRyYWNr
IDogbV9hdWRpb1RyYWNrcykKKyAgICAgICAgdHJhY2stPnNldEVuYWJsZWRDaGFuZ2VkQ2FsbGJh
Y2sobnVsbHB0cik7CisgICAgbV9hdWRpb1RyYWNrcy5jbGVhcigpOworfQorCiB2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpyZW1vdmVkRnJvbU1lZGlhU291cmNlKCkKIHsKICAgICBB
TFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwpAQCAtODU2LDIxICs2OTksMjEgQEAgYm9vbCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6aGFzQXVkaW8oKSBjb25zdAogICAgIHJldHVybiBtX2Ns
aWVudCAmJiBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUhhc0F1ZGlvKCk7CiB9CiAKLXZv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlRW5hYmxlZChWaWRl
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyogdHJhY2spCit2b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZVNlbGVjdGVkKFZpZGVvVHJhY2tQcml2YXRl
JiB0cmFjaywgYm9vbCBzZWxlY3RlZCkKIHsKLSAgICBpbnQgdHJhY2tJRCA9IHRyYWNrLT50cmFj
a0lEKCk7CisgICAgaW50IHRyYWNrSUQgPSB0cmFjay5pZCgpLnRvSW50KCk7CiAKLSAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIsICJ2aWRlbyB0cmFja0lEID0gIiwgdHJhY2tJRCwgIiwgc2Vs
ZWN0ZWQgPSAiLCB0cmFjay0+c2VsZWN0ZWQoKSk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSLCAidmlkZW8gdHJhY2tJRCA9ICIsIHRyYWNrSUQsICIsIHNlbGVjdGVkID0gIiwgc2VsZWN0
ZWQpOwogCi0gICAgaWYgKCF0cmFjay0+c2VsZWN0ZWQoKSAmJiBtX2VuYWJsZWRWaWRlb1RyYWNr
SUQgPT0gdHJhY2tJRCkgeworICAgIGlmICghc2VsZWN0ZWQgJiYgbV9lbmFibGVkVmlkZW9UcmFj
a0lEID09IHRyYWNrSUQpIHsKICAgICAgICAgbV9lbmFibGVkVmlkZW9UcmFja0lEID0gLTE7Ci0g
ICAgICAgIFttX3BhcnNlciBzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhOk5PIGZvclRyYWNrSUQ6
dHJhY2tJRF07CisgICAgICAgIG1fcGFyc2VyLT5zZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9y
VHJhY2tJRChmYWxzZSwgdHJhY2tJRCk7CiAKICAgICAgICAgaWYgKG1fZGVjb21wcmVzc2lvblNl
c3Npb24pCiAgICAgICAgICAgICBtX2RlY29tcHJlc3Npb25TZXNzaW9uLT5zdG9wUmVxdWVzdGlu
Z01lZGlhRGF0YSgpOwotICAgIH0gZWxzZSBpZiAodHJhY2stPnNlbGVjdGVkKCkpIHsKKyAgICB9
IGVsc2UgaWYgKHNlbGVjdGVkKSB7CiAgICAgICAgIG1fZW5hYmxlZFZpZGVvVHJhY2tJRCA9IHRy
YWNrSUQ7Ci0gICAgICAgIFttX3BhcnNlciBzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhOllFUyBm
b3JUcmFja0lEOnRyYWNrSURdOworICAgICAgICBtX3BhcnNlci0+c2V0U2hvdWxkUHJvdmlkZU1l
ZGlhRGF0YUZvclRyYWNrSUQodHJ1ZSwgdHJhY2tJRCk7CiAKICAgICAgICAgaWYgKG1fZGVjb21w
cmVzc2lvblNlc3Npb24pIHsKICAgICAgICAgICAgIG1fZGVjb21wcmVzc2lvblNlc3Npb24tPnJl
cXVlc3RNZWRpYURhdGFXaGVuUmVhZHkoW3RoaXMsIHRyYWNrSURdIHsKQEAgLTg4MiwyMSArNzI1
LDIxIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlRW5h
YmxlZChWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291CiAgICAgbV9tZWRpYVNvdXJjZS0+aGFzU2Vs
ZWN0ZWRWaWRlb0NoYW5nZWQoKnRoaXMpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQoQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMqIHRyYWNrKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tE
aWRDaGFuZ2VFbmFibGVkKEF1ZGlvVHJhY2tQcml2YXRlJiB0cmFjaywgYm9vbCBlbmFibGVkKQog
ewotICAgIGludCB0cmFja0lEID0gdHJhY2stPnRyYWNrSUQoKTsKKyAgICBpbnQgdHJhY2tJRCA9
IHRyYWNrLmlkKCkudG9JbnQoKTsKIAotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImF1
ZGlvIHRyYWNrSUQgPSAiLCB0cmFja0lELCAiLCBzZWxlY3RlZCA9ICIsIHRyYWNrLT5lbmFibGVk
KCkpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImF1ZGlvIHRyYWNrSUQgPSAiLCB0
cmFja0lELCAiLCBzZWxlY3RlZCA9ICIsIGVuYWJsZWQpOwogCi0gICAgaWYgKCF0cmFjay0+ZW5h
YmxlZCgpKSB7CisgICAgaWYgKCFlbmFibGVkKSB7CiAgICAgICAgIEFMTE9XX05FV19BUElfV0lU
SE9VVF9HVUFSRFNfQkVHSU4KICAgICAgICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyQXVkaW9S
ZW5kZXJlcj4gcmVuZGVyZXIgPSBtX2F1ZGlvUmVuZGVyZXJzLmdldCh0cmFja0lEKTsKICAgICAg
ICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKLSAgICAgICAgW21fcGFyc2VyIHNl
dFNob3VsZFByb3ZpZGVNZWRpYURhdGE6Tk8gZm9yVHJhY2tJRDp0cmFja0lEXTsKKyAgICAgICAg
bV9wYXJzZXItPnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGZhbHNlLCB0cmFj
a0lEKTsKICAgICAgICAgaWYgKG1fbWVkaWFTb3VyY2UpCiAgICAgICAgICAgICBtX21lZGlhU291
cmNlLT5wbGF5ZXIoKS0+cmVtb3ZlQXVkaW9SZW5kZXJlcihyZW5kZXJlci5nZXQoKSk7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgW21fcGFyc2VyIHNldFNob3VsZFByb3ZpZGVNZWRpYURhdGE6WUVT
IGZvclRyYWNrSUQ6dHJhY2tJRF07CisgICAgICAgIG1fcGFyc2VyLT5zZXRTaG91bGRQcm92aWRl
TWVkaWFEYXRhRm9yVHJhY2tJRCh0cnVlLCB0cmFja0lEKTsKICAgICAgICAgQUxMT1dfTkVXX0FQ
SV9XSVRIT1VUX0dVQVJEU19CRUdJTgogICAgICAgICBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJB
dWRpb1JlbmRlcmVyPiByZW5kZXJlcjsKICAgICAgICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dV
QVJEU19FTkQKQEAgLTkyNiw2ICs3NjksMTMgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3UKICAg
ICB9CiB9CiAKK0FWU3RyZWFtRGF0YVBhcnNlciogU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OnBhcnNlcigpIGNvbnN0Cit7CisgICAgaWYgKGlzPFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM+
KG1fcGFyc2VyLmdldCgpKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakM+KG1fcGFyc2VyLmdldCgpKS5wYXJzZXIoKTsKKyAgICByZXR1cm4gbmlsOwor
fQorCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpzZXRDRE1TZXNzaW9uKENETVNl
c3Npb25NZWRpYVNvdXJjZUFWRk9iakMqIHNlc3Npb24pCiB7CiAjaWYgRU5BQkxFKExFR0FDWV9F
TkNSWVBURURfTUVESUEpCkBAIC05ODcsNyArODM3LDggQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6YXR0ZW1wdFRvRGVjcnlwdCgpCiAgICAgaWYgKCFpbnN0YW5jZVNlc3Npb24p
CiAgICAgICAgIHJldHVybjsKIAotICAgIFtpbnN0YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNz
aW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVudDptX3BhcnNlci5nZXQoKV07CisgICAgaWYgKGF1
dG8gcGFyc2VyID0gdGhpcy0+cGFyc2VyKCkpCisgICAgICAgIFtpbnN0YW5jZVNlc3Npb24tPmNv
bnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVudDpwYXJzZXJdOwogICAgIGlm
IChtX2hhc1Nlc3Npb25TZW1hcGhvcmUpIHsKICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3Jl
LT5zaWduYWwoKTsKICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlID0gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IGM3OGI5NTNjN2JhYThlY2IyOTI4YmYyYzNkZDU1MWE5
MGVkMjM4Y2MuLjZiMTFjY2EzMmJkZDQ5ZDJhZGQ2MTBlOWE3YTc3NmI1OTViOGE5OGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiSW50U2l6
ZS5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlQVZGLmgiCisjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogCkBAIC00MiwxNCArNDMsMTEg
QEAgY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZUFW
RiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMpCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDKiBwYXJlbnQpCisgICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayogdHJhY2spCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQyh0cmFjaywgcGFyZW50KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrKSk7CiAgICAgfQogCi0gICAgYm9v
bCBzZWxlY3RlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCkg
b3ZlcnJpZGU7Ci0KICAgICB2b2lkIHNldEFzc2V0VHJhY2soQVZBc3NldFRyYWNrKik7CiAgICAg
QVZBc3NldFRyYWNrKiBhc3NldFRyYWNrKCkgY29uc3Q7CiAKQEAgLTU4LDE0ICs1NiwxMiBAQCBw
dWJsaWM6CiAgICAgRmxvYXRTaXplIG5hdHVyYWxTaXplKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0g
ICAgZXhwbGljaXQgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRy
YWNrKiwgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCk7CisgICAgZXhwbGljaXQg
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKik7CiAgICAg
CiAgICAgdm9pZCByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPiBtX2ltcGw7Ci0gICAgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMqIG1fcGFyZW50OwogICAgIGludCBtX3RyYWNrSUQ7Ci0gICAgYm9vbCBt
X3NlbGVjdGVkOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCAyYzczOTI3
OTZlMGY1MjVmOTRjMjhhYTIwYWFkMTBlMzBkMGQwNTFjLi5hZmQxYjdmM2E5MzM0OTE3MWQ5MTA1
OGY2ODVjZmU4MGJiOGQ3MzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMzQsMTEg
KzM0LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1WaWRlb1RyYWNrUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3Nl
dFRyYWNrKiB0cmFjaywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKK1ZpZGVv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrKQogICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8
QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQotICAgICwgbV9wYXJlbnQocGFyZW50
KQogICAgICwgbV90cmFja0lEKC0xKQotICAgICwgbV9zZWxlY3RlZChmYWxzZSkKIHsKICAgICBy
ZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KQEAgLTY1LDIxICs2Myw2IEBAIEFWQXNzZXRU
cmFjayogVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmFzc2V0VHJhY2soKSBj
b25zdAogICAgIHJldHVybiBtX2ltcGwtPmFzc2V0VHJhY2soKTsKIH0KIAotCi1ib29sIFZpZGVv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZWxlY3RlZCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fc2VsZWN0ZWQ7Ci19Ci0KLXZvaWQgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OnNldFNlbGVjdGVkKGJvb2wgc2VsZWN0ZWQpCi17Ci0gICAgaWYgKG1fc2VsZWN0
ZWQgPT0gc2VsZWN0ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc2VsZWN0ZWQgPSBzZWxl
Y3RlZDsKLSAgICBtX3BhcmVudC0+dHJhY2tEaWRDaGFuZ2VFbmFibGVkKHRoaXMpOwotfQotCiBG
bG9hdFNpemUgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Om5hdHVyYWxTaXpl
KCkgY29uc3QKIHsKICAgICByZXR1cm4gRmxvYXRTaXplKFthc3NldFRyYWNrKCkgbmF0dXJhbFNp
emVdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmZGU5YmQ2
ZmRjMTZkMTQ2MGY4NTMxNTQ4YWE5OGVjZWIyMDQxM2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0u
Y3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGVXZWJNLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworUmVmPEF1ZGlvVHJhY2tQcml2YXRlV2ViTT4gQXVkaW9UcmFja1ByaXZhdGVXZWJNOjpjcmVh
dGUod2VibTo6VHJhY2tFbnRyeSYmIHRyYWNrRW50cnkpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQXVkaW9UcmFja1ByaXZhdGVXZWJNKFdURk1vdmUodHJhY2tFbnRyeSkpKTsKK30KKwor
QXVkaW9UcmFja1ByaXZhdGVXZWJNOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk0od2VibTo6VHJhY2tF
bnRyeSYmIHRyYWNrRW50cnkpCisgICAgOiBtX3RyYWNrKFdURk1vdmUodHJhY2tFbnRyeSkpCit7
CisgICAgaWYgKG1fdHJhY2suaXNfZW5hYmxlZC5pc19wcmVzZW50KCkpCisgICAgICAgIHNldEVu
YWJsZWQobV90cmFjay5pc19lbmFibGVkLnZhbHVlKCkpOworfQorCitBdG9tU3RyaW5nIEF1ZGlv
VHJhY2tQcml2YXRlV2ViTTo6aWQoKSBjb25zdAoreworICAgIGlmIChtX3RyYWNrSUQuaXNOdWxs
KCkpCisgICAgICAgIG1fdHJhY2tJRCA9IG1fdHJhY2sudHJhY2tfdWlkLmlzX3ByZXNlbnQoKSA/
IEF0b21TdHJpbmc6Om51bWJlcihtX3RyYWNrLnRyYWNrX3VpZC52YWx1ZSgpKSA6IGVtcHR5QXRv
bSgpOworICAgIHJldHVybiBtX3RyYWNrSUQ7Cit9CisKK0F0b21TdHJpbmcgQXVkaW9UcmFja1By
aXZhdGVXZWJNOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgaWYgKG1fbGFiZWwuaXNOdWxsKCkpCisg
ICAgICAgIG1fbGFiZWwgPSBtX3RyYWNrLm5hbWUuaXNfcHJlc2VudCgpID8gQXRvbVN0cmluZzo6
ZnJvbVVURjgobV90cmFjay5uYW1lLnZhbHVlKCkuZGF0YSgpLCBtX3RyYWNrLm5hbWUudmFsdWUo
KS5sZW5ndGgoKSkgOiBlbXB0eUF0b20oKTsKKyAgICByZXR1cm4gbV9sYWJlbDsKK30KKworQXRv
bVN0cmluZyBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06Omxhbmd1YWdlKCkgY29uc3QKK3sKKyAgICBp
ZiAobV9sYW5ndWFnZS5pc051bGwoKSkKKyAgICAgICAgbV9sYW5ndWFnZSA9IG1fdHJhY2subGFu
Z3VhZ2UuaXNfcHJlc2VudCgpID8gQXRvbVN0cmluZzo6ZnJvbVVURjgobV90cmFjay5sYW5ndWFn
ZS52YWx1ZSgpLmRhdGEoKSwgbV90cmFjay5sYW5ndWFnZS52YWx1ZSgpLmxlbmd0aCgpKSA6IGVt
cHR5QXRvbSgpOworICAgIHJldHVybiBtX2xhbmd1YWdlOworfQorCitpbnQgQXVkaW9UcmFja1By
aXZhdGVXZWJNOjp0cmFja0luZGV4KCkgY29uc3QKK3sKKyAgICBpZiAobV90cmFjay50cmFja19u
dW1iZXIuaXNfcHJlc2VudCgpKQorICAgICAgICByZXR1cm4gbV90cmFjay50cmFja19udW1iZXIu
dmFsdWUoKTsKKyAgICByZXR1cm4gMDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44MDU2ZTg1ZDE2YmMyMmRlZjBkZWU0MTQ1YTdmNmQ4NzUyNWRhZmYwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
QXVkaW9UcmFja1ByaXZhdGVXZWJNLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3
ZWJtL2RvbV90eXBlcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvVHJh
Y2tQcml2YXRlV2ViTSBmaW5hbCA6IHB1YmxpYyBBdWRpb1RyYWNrUHJpdmF0ZSB7CitwdWJsaWM6
CisgICAgc3RhdGljIFJlZjxBdWRpb1RyYWNrUHJpdmF0ZVdlYk0+IGNyZWF0ZSh3ZWJtOjpUcmFj
a0VudHJ5JiYpOworICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2tQcml2YXRlV2ViTSgpID0gZGVmYXVs
dDsKKworICAgIEF0b21TdHJpbmcgaWQoKSBjb25zdCBmaW5hbDsKKyAgICBBdG9tU3RyaW5nIGxh
YmVsKCkgY29uc3QgZmluYWw7CisgICAgQXRvbVN0cmluZyBsYW5ndWFnZSgpIGNvbnN0IGZpbmFs
OworICAgIGludCB0cmFja0luZGV4KCkgY29uc3QgZmluYWw7CisKK3ByaXZhdGU6CisgICAgQXVk
aW9UcmFja1ByaXZhdGVXZWJNKHdlYm06OlRyYWNrRW50cnkmJik7CisgICAgd2VibTo6VHJhY2tF
bnRyeSBtX3RyYWNrOworICAgIG11dGFibGUgQXRvbVN0cmluZyBtX3RyYWNrSUQ7CisgICAgbXV0
YWJsZSBBdG9tU3RyaW5nIG1fbGFiZWw7CisgICAgbXV0YWJsZSBBdG9tU3RyaW5nIG1fbGFuZ3Vh
Z2U7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmEyMjhj
ODM3Y2U0ZTAwNDIyMDA2ODlmN2Y4Zjk2ZTY0ODFmNDgwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNw
cApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlci5oIgorCisjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIK
KyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgiCisjaW5jbHVkZSAiU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgU291cmNlQnVmZmVyUGFyc2VyOjppc0NvbnRlbnRU
eXBlU3VwcG9ydGVkKGNvbnN0IENvbnRlbnRUeXBlJiB0eXBlKQoreworICAgIGlmIChTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjppc0NvbnRlbnRUeXBlU3VwcG9ydGVkKHR5cGUpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBpZiAoU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6aXNDb250ZW50
VHlwZVN1cHBvcnRlZCh0eXBlKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitSZWZQdHI8U291cmNlQnVmZmVyUGFyc2VyPiBTb3VyY2VCdWZmZXJQYXJzZXI6
OmNyZWF0ZShjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUpCit7CisgICAgaWYgKFdURjo6
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb250ZW50VHlwZS5jb250YWluZXJUeXBlKCksICJhdWRp
by93ZWJtIikgfHwgV1RGOjplcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnRlbnRUeXBlLmNvbnRh
aW5lclR5cGUoKSwgInZpZGVvL3dlYm0iKSkKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNKCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQygpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45YjZiMDk4NmQ2NDczYTE1YzA4ZWNkNDU4M2FlY2NhMDUyMjI3ZWQ3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyLmgKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaCIKKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9VaW50OEFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDb250ZW50VHlwZTsKK2NsYXNzIE1lZGlh
U2FtcGxlOworCitjbGFzcyBTb3VyY2VCdWZmZXJQYXJzZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8U291cmNlQnVmZmVyUGFyc2VyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wg
aXNDb250ZW50VHlwZVN1cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYpOworCisgICAgc3RhdGlj
IFJlZlB0cjxTb3VyY2VCdWZmZXJQYXJzZXI+IGNyZWF0ZShjb25zdCBDb250ZW50VHlwZSYpOwor
ICAgIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclBhcnNlcigpID0gZGVmYXVsdDsKKworICAgIGVudW0g
Y2xhc3MgVHlwZSA6IHVpbnQ4X3QgeworICAgICAgICBBVkZPYmpDLAorICAgICAgICBXZWJNLAor
ICAgIH07CisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7CisgICAgZW51bSBjbGFz
cyBBcHBlbmRGbGFncyA6IHVpbnQ4X3QgeworICAgICAgICBOb25lLAorICAgICAgICBEaXNjb250
aW51aXR5LAorICAgIH07CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZERhdGEoVmVjdG9yPHVuc2ln
bmVkIGNoYXI+JiYsIEFwcGVuZEZsYWdzID0gQXBwZW5kRmxhZ3M6Ok5vbmUpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZmx1c2hQZW5kaW5nTWVkaWFEYXRhKCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChib29sLCBpbnQzMl90KSA9IDA7
CisgICAgdmlydHVhbCBib29sIHNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lEKGludDMy
X3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpID0gMDsKKworICAg
IC8vIFdpbGwgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICB1c2luZyBJbml0aWFs
aXphdGlvblNlZ21lbnQgPSBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlv
blNlZ21lbnQ7CisgICAgdXNpbmcgRGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayA9
IFdURjo6RnVuY3Rpb248dm9pZChJbml0aWFsaXphdGlvblNlZ21lbnQmJik+OworICAgIHZvaWQg
c2V0RGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhEaWRQYXJzZUluaXRpYWxpemF0
aW9uRGF0YUNhbGxiYWNrJiYgY2FsbGJhY2spCisgICAgeworICAgICAgICBtX2RpZFBhcnNlSW5p
dGlhbGl6YXRpb25EYXRhQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKKyAgICB9CisKKyAg
ICAvLyBXaWxsIGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgdXNpbmcgRGlkRW5j
b3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoaW50
MzJfdCBlcnJvckNvZGUpPjsKKyAgICB2b2lkIHNldERpZEVuY291bnRlckVycm9yRHVyaW5nUGFy
c2luZ0NhbGxiYWNrKERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrJiYgY2Fs
bGJhY2spCisgICAgeworICAgICAgICBtX2RpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CisgICAgfQorCisgICAgLy8gV2lsbCBiZSBjYWxs
ZWQgb24gdGhlIG1haW4gdGhyZWFkLgorICAgIHVzaW5nIERpZFByb3ZpZGVNZWRpYURhdGFDYWxs
YmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChSZWY8TWVkaWFTYW1wbGU+JiYsIGludDMyX3QgdHJh
Y2tJRCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpPjsKKyAgICB2b2lkIHNldERpZFByb3ZpZGVN
ZWRpYURhdGFDYWxsYmFjayhEaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2smJiBjYWxsYmFjaykK
KyAgICB7CisgICAgICAgIG1fZGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayk7CisgICAgfQorCisgICAgLy8gV2lsbCBiZSBjYWxsZWQgc3luY2hyb25vdXNseSBv
biB0aGUgcGFyc2VyIHRoZWFkLgorICAgIHVzaW5nIFdpbGxQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZv
aWQodWludDMyX3QgdHJhY2tJRCk+OworICAgIHZvaWQgc2V0V2lsbFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayhXaWxsUHJvdmlkZUNv
bnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrJiYgY2Fs
bGJhY2spCisgICAgeworICAgICAgICBtX3dpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0
aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKKyAg
ICB9CisKKyAgICAvLyBXaWxsIGJlIGNhbGxlZCBzeW5jaHJvbm91c2x5IG9uIHRoZSBwYXJzZXIg
dGhlYWQuCisgICAgdXNpbmcgRGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm9yVHJhY2tJRENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKFJlZjxVaW50OEFy
cmF5PiYmLCBpbnQzMl90IHRyYWNrSUQpPjsKKyAgICB2b2lkIHNldERpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayhEaWRQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2smJiBj
YWxsYmFjaykKKyAgICB7CisgICAgICAgIG1fZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5p
dGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7Cisg
ICAgfQorCitwcm90ZWN0ZWQ6CisgICAgU291cmNlQnVmZmVyUGFyc2VyKCkgPSBkZWZhdWx0Owor
CisgICAgRGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayBtX2RpZFBhcnNlSW5pdGlh
bGl6YXRpb25EYXRhQ2FsbGJhY2s7CisgICAgRGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5n
Q2FsbGJhY2sgbV9kaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjazsKKyAgICBE
aWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2sgbV9kaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2s7
CisgICAgV2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRy
YWNrSURDYWxsYmFjayBtX3dpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlv
bkRhdGFGb3JUcmFja0lEQ2FsbGJhY2s7CisgICAgRGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrIG1fZGlkUHJvdmlkZUNvbnRlbnRL
ZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrOworfTsKKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTRjMDc2ZTEyMGUw
ZWUzN2U5YjhjM2M2NWYyYTgxYjFjMzdmYjkxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAK
QEAgLTAsMCArMSwzNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oIgorCisjaW5jbHVkZSAiQXVkaW9UcmFja1By
aXZhdGVXZWJNLmgiCisjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgorI2luY2x1
ZGUgIk1lZGlhRGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2lu
Y2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaCIKKyNpbmNsdWRlIDx3ZWJtL3dl
Ym1fcGFyc2VyLmg+CisjaW5jbHVkZSA8d3RmL0FsZ29yaXRobXMuaD4KKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvZGFyd2luL1dlYWtMaW5raW5nLmg+CisK
K1dURl9XRUFLX0xJTktfRk9SQ0VfSU1QT1JUKHdlYm06OnN3YXApOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0YXRpYyBib29sIGlzV2VibVBhcnNlckF2YWlsYWJsZSgpCit7CisgICAgcmV0
dXJuICEhd2VibTo6c3dhcCAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLndlYk1QYXJzZXJFbmFibGVkKCk7Cit9CisKK3VzaW5nIG5hbWVzcGFjZSB3ZWJtOworCitj
bGFzcyBWZWN0b3JSZWFkZXIgZmluYWwgOiBwdWJsaWMgd2VibTo6UmVhZGVyIHsKK3B1YmxpYzoK
KyAgICBWZWN0b3JSZWFkZXIoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgZGF0YSkKKyAgICAgICAg
OiBtX2RhdGEgeyBXVEZNb3ZlKGRhdGEpIH0KKyAgICB7CisgICAgfQorCisgICAgU3RhdHVzIFJl
YWQoc3RkOjpzaXplX3QgbnVtVG9SZWFkLCB1aW50OF90KiBvdXRwdXRCdWZmZXIsIHVpbnQ2NF90
KiBudW1BY3R1YWxseVJlYWQpIGZpbmFsCisgICAgeworICAgICAgICBBU1NFUlQob3V0cHV0QnVm
ZmVyICYmIG51bUFjdHVhbGx5UmVhZCk7CisgICAgICAgIGlmICghb3V0cHV0QnVmZmVyIHx8ICFu
dW1BY3R1YWxseVJlYWQpCisgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a05vdEVu
b3VnaE1lbW9yeSk7CisKKyAgICAgICAgaWYgKG1fcG9zaXRpb24gPj0gbV9kYXRhLnNpemUoKSkg
eworICAgICAgICAgICAgKm51bUFjdHVhbGx5UmVhZCA9IDA7CisgICAgICAgICAgICByZXR1cm4g
U3RhdHVzKFN0YXR1czo6a0VuZE9mRmlsZSk7CisgICAgICAgIH0KKworICAgICAgICBzaXplX3Qg
bnVtQXZhaWxhYmxlID0gbV9kYXRhLnNpemUoKSAtIG1fcG9zaXRpb247CisgICAgICAgIGlmIChu
dW1Ub1JlYWQgPCBudW1BdmFpbGFibGUpIHsKKyAgICAgICAgICAgIG1lbWNweShvdXRwdXRCdWZm
ZXIsIG1fZGF0YS5kYXRhKCkgKyBtX3Bvc2l0aW9uLCBudW1Ub1JlYWQpOworICAgICAgICAgICAg
Km51bUFjdHVhbGx5UmVhZCA9IG51bVRvUmVhZDsKKyAgICAgICAgICAgIG1fcG9zaXRpb24gKz0g
bnVtVG9SZWFkOworICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRl
ZCk7CisgICAgICAgIH0KKworICAgICAgICBtZW1jcHkob3V0cHV0QnVmZmVyLCBtX2RhdGEuZGF0
YSgpICsgbV9wb3NpdGlvbiwgbnVtQXZhaWxhYmxlKTsKKyAgICAgICAgKm51bUFjdHVhbGx5UmVh
ZCA9IG51bUF2YWlsYWJsZTsKKyAgICAgICAgbV9wb3NpdGlvbiArPSBudW1BdmFpbGFibGU7Cisg
ICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tQYXJ0aWFsKTsKKyAgICB9CisKKyAgICBT
dGF0dXMgU2tpcCh1aW50NjRfdCBudW1Ub1NraXAsIHVpbnQ2NF90KiBudW1BY3R1YWxseVNraXBw
ZWQpIGZpbmFsCisgICAgeworICAgICAgICBBU1NFUlQobnVtQWN0dWFsbHlTa2lwcGVkKTsKKyAg
ICAgICAgaWYgKCFudW1BY3R1YWxseVNraXBwZWQpCisgICAgICAgICAgICByZXR1cm4gU3RhdHVz
KFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisKKyAgICAgICAgaWYgKG1fcG9zaXRpb24gPj0g
bV9kYXRhLnNpemUoKSkgeworICAgICAgICAgICAgKm51bUFjdHVhbGx5U2tpcHBlZCA9IDA7Cisg
ICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a1dvdWxkQmxvY2spOworICAgICAgICB9
CisKKyAgICAgICAgc2l6ZV90IG51bUF2YWlsYWJsZSA9IG1fZGF0YS5zaXplKCkgLSBtX3Bvc2l0
aW9uOworCisgICAgICAgIGlmIChudW1Ub1NraXAgPCBudW1BdmFpbGFibGUpIHsKKyAgICAgICAg
ICAgICpudW1BY3R1YWxseVNraXBwZWQgPSBudW1Ub1NraXA7CisgICAgICAgICAgICBtX3Bvc2l0
aW9uICs9IG51bVRvU2tpcDsKKyAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tD
b21wbGV0ZWQpOworICAgICAgICB9CisKKyAgICAgICAgKm51bUFjdHVhbGx5U2tpcHBlZCA9IG51
bUF2YWlsYWJsZTsKKyAgICAgICAgbV9wb3NpdGlvbiArPSBudW1BdmFpbGFibGU7CisgICAgICAg
IHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tQYXJ0aWFsKTsKKyAgICB9CisKKyAgICB1aW50NjRf
dCBQb3NpdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcG9zaXRpb247IH0KKworcHJpdmF0
ZToKKyAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gbV9kYXRhOworICAgIHNpemVfdCBtX3Bvc2l0
aW9uIHsgMCB9OworfTsKKworY2xhc3MgTWVkaWFEZXNjcmlwdGlvbldlYk0gZmluYWwgOiBwdWJs
aWMgTWVkaWFEZXNjcmlwdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxNZWRpYURlc2Ny
aXB0aW9uV2ViTT4gY3JlYXRlKHdlYm06OlRyYWNrRW50cnkmJiB0cmFjaykKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhRGVzY3JpcHRpb25XZWJNKFdURk1vdmUodHJh
Y2spKSk7CisgICAgfQorCisgICAgTWVkaWFEZXNjcmlwdGlvbldlYk0od2VibTo6VHJhY2tFbnRy
eSYmIHRyYWNrKQorICAgICAgICA6IG1fdHJhY2sgeyBXVEZNb3ZlKHRyYWNrKSB9CisgICAgewor
ICAgIH0KKworICAgIEF0b21TdHJpbmcgY29kZWMoKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAg
ICAgaWYgKG1fY29kZWMpCisgICAgICAgICAgICByZXR1cm4gKm1fY29kZWM7CisKKyAgICAgICAg
Ly8gRnJvbTogaHR0cHM6Ly93d3cubWF0cm9za2Eub3JnL3RlY2huaWNhbC9jb2RlY19zcGVjcy5o
dG1sCisgICAgICAgIC8vICJFYWNoIENvZGVjIElEIE1VU1QgaW5jbHVkZSBhIE1ham9yIENvZGVj
IElEIGltbWVkaWF0ZWx5IGZvbGxvd2luZyB0aGUgQ29kZWMgSUQgUHJlZml4LgorICAgICAgICAv
LyBBIE1ham9yIENvZGVjIElEIE1BWSBiZSBmb2xsb3dlZCBieSBhbiBPUFRJT05BTCBDb2RlYyBJ
RCBTdWZmaXggdG8gY29tbXVuaWNhdGUgYSByZWZpbmVtZW50CisgICAgICAgIC8vIG9mIHRoZSBN
YWpvciBDb2RlYyBJRC4gSWYgYSBDb2RlYyBJRCBTdWZmaXggaXMgdXNlZCwgdGhlbiB0aGUgQ29k
ZWMgSUQgTVVTVCBpbmNsdWRlIGEgZm9yd2FyZAorICAgICAgICAvLyBzbGFzaCAo4oCcL+KAnSkg
YXMgYSBzZXBhcmF0b3IgYmV0d2VlbiB0aGUgTWFqb3IgQ29kZWMgSUQgYW5kIHRoZSBDb2RlYyBJ
RCBTdWZmaXguIFRoZSBNYWpvciBDb2RlYworICAgICAgICAvLyBJRCBNVVNUIGJlIGNvbXBvc2Vk
IG9mIG9ubHkgY2FwaXRhbCBsZXR0ZXJzIChBLVopIGFuZCBudW1iZXJzICgwLTkpLiBUaGUgQ29k
ZWMgSUQgU3VmZml4IE1VU1QKKyAgICAgICAgLy8gYmUgY29tcG9zZWQgb2Ygb25seSBjYXBpdGFs
IGxldHRlcnMgKEEtWiksIG51bWJlcnMgKDAtOSksIHVuZGVyc2NvcmUgKOKAnF/igJ0pLCBhbmQg
Zm9yd2FyZCBzbGFzaCAo4oCcL+KAnSkuIgorCisgICAgICAgIGlmICghbV90cmFjay5jb2RlY19p
ZC5pc19wcmVzZW50KCkpIHsKKyAgICAgICAgICAgIG1fY29kZWMgPSBlbXB0eUF0b20oKTsKKyAg
ICAgICAgICAgIHJldHVybiAqbV9jb2RlYzsKKyAgICAgICAgfQorCisgICAgICAgIFN0cmluZ1Zp
ZXcgY29kZWNJRCB7IG1fdHJhY2suY29kZWNfaWQudmFsdWUoKS5kYXRhKCksICh1bnNpZ25lZClt
X3RyYWNrLmNvZGVjX2lkLnZhbHVlKCkubGVuZ3RoKCkgfTsKKyAgICAgICAgaWYgKCFjb2RlY0lE
LnN0YXJ0c1dpdGgoIlZfIikgJiYgIWNvZGVjSUQuc3RhcnRzV2l0aCgiQV8iKSAmJiAhY29kZWNJ
RC5zdGFydHNXaXRoKCJTXyIpKSB7CisgICAgICAgICAgICBtX2NvZGVjID0gZW1wdHlBdG9tKCk7
CisgICAgICAgICAgICByZXR1cm4gKm1fY29kZWM7CisgICAgICAgIH0KKworICAgICAgICBhdXRv
IHNsYXNoTG9jYXRpb24gPSBjb2RlY0lELmZpbmQoJy8nKTsKKyAgICAgICAgYXV0byBsZW5ndGgg
PSBzbGFzaExvY2F0aW9uID09IG5vdEZvdW5kID8gY29kZWNJRC5sZW5ndGgoKSAtIDIgOiBzbGFz
aExvY2F0aW9uIC0gMjsKKyAgICAgICAgbV9jb2RlYyA9IEF0b21TdHJpbmcgeyBjb2RlY0lELnN1
YnN0cmluZygyLCBsZW5ndGgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgfTsKKyAgICAgICAg
cmV0dXJuICptX2NvZGVjOworICAgIH0KKyAgICBib29sIGlzVmlkZW8oKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3RyYWNrLnRyYWNrX3R5cGUuaXNfcHJlc2VudCgpICYmIG1fdHJhY2sudHJhY2tf
dHlwZS52YWx1ZSgpID09IFRyYWNrVHlwZTo6a1ZpZGVvOyB9CisgICAgYm9vbCBpc0F1ZGlvKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV90cmFjay50cmFja190eXBlLmlzX3ByZXNlbnQoKSAmJiBt
X3RyYWNrLnRyYWNrX3R5cGUudmFsdWUoKSA9PSBUcmFja1R5cGU6OmtBdWRpbzsgfQorICAgIGJv
b2wgaXNUZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90cmFjay50cmFja190eXBlLmlzX3By
ZXNlbnQoKSAmJiBtX3RyYWNrLnRyYWNrX3R5cGUudmFsdWUoKSA9PSBUcmFja1R5cGU6OmtTdWJ0
aXRsZTsgfQorCisgICAgY29uc3Qgd2VibTo6VHJhY2tFbnRyeSYgdHJhY2soKSB7IHJldHVybiBt
X3RyYWNrOyB9CisKK3ByaXZhdGU6CisgICAgbXV0YWJsZSBPcHRpb25hbDxBdG9tU3RyaW5nPiBt
X2NvZGVjOworICAgIHdlYm06OlRyYWNrRW50cnkgbV90cmFjazsKK307CisKK3N0YXRpYyBWZWN0
b3I8U3RyaW5nPiBzdXBwb3J0ZWRXZWJNQ29kZWNzKCkKK3sKKyAgICBhdXRvIGNvZGVjcyA9IG1h
a2VOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3RyaW5nPj4oeworICAgICAgICAidnAwOSIsCisgICAg
ICAgICJ2b3JiaXMiLAorICAgICAgICAib3B1cyIsCisgICAgfSk7CisgICAgcmV0dXJuIGNvZGVj
czsKK30KKworYm9vbCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppc0NvbnRlbnRUeXBlU3VwcG9y
dGVkKGNvbnN0IENvbnRlbnRUeXBlJiB0eXBlKQoreworICAgIGlmICghaXNXZWJtUGFyc2VyQXZh
aWxhYmxlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghV1RGOjplcXVhbEln
bm9yaW5nQVNDSUlDYXNlKHR5cGUuY29udGFpbmVyVHlwZSgpLCAiYXVkaW8vd2VibSIpCisgICAg
ICAgICYmICFXVEY6OmVxdWFsSWdub3JpbmdBU0NJSUNhc2UodHlwZS5jb250YWluZXJUeXBlKCks
ICJ2aWRlby93ZWJtIikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFN0cmluZyBjb2Rl
Y3NQYXJhbWV0ZXIgPSB0eXBlLnBhcmFtZXRlcihDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVy
KCkpOworICAgIGlmICghY29kZWNzUGFyYW1ldGVyKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIGF1dG8gc3BsaXRSZXN1bHRzID0gU3RyaW5nVmlldyhjb2RlY3NQYXJhbWV0ZXIpLnNwbGl0
KCcsJyk7CisgICAgZm9yIChhdXRvIHNwbGl0IDogc3BsaXRSZXN1bHRzKSB7CisgICAgICAgIHJl
dHVybiBXVEY6OmFueU9mKHN1cHBvcnRlZFdlYk1Db2RlY3MoKSwgWyZdKGF1dG8mIGNvZGVjKSB7
CisgICAgICAgICAgICByZXR1cm4gc3BsaXQuc3RhcnRzV2l0aChjb2RlYyk7CisgICAgICAgIH0p
OworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpCit7CisgICAgaWYgKGlzV2VibVBhcnNlckF2YWlsYWJs
ZSgpKQorICAgICAgICBtX3BhcnNlciA9IFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8V2VibVBhcnNlcj4oKTsKK30KKworU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6flNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0oKSA9IGRlZmF1bHQ7CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6YXBwZW5kRGF0YShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBidWZmZXIsIEFwcGVuZEZs
YWdzIGFwcGVuZEZsYWdzKQoreworICAgIGlmICghbV9wYXJzZXIpCisgICAgICAgIHJldHVybjsK
KworICAgIFZlY3RvclJlYWRlciByZWFkZXIgeyBXVEZNb3ZlKGJ1ZmZlcikgfTsKKyAgICBpZiAo
YXBwZW5kRmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCisgICAgICAgIG1fcGFy
c2VyLT5EaWRTZWVrKCk7CisgICAgbV9zdGF0dXMgPSBtX3BhcnNlci0+RmVlZCh0aGlzLCAmcmVh
ZGVyKTsKKyAgICBpZiAobV9zdGF0dXMub2soKSB8fCBtX3N0YXR1cy5jb2RlID09IFN0YXR1czo6
a0VuZE9mRmlsZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FsbE9uTWFpblRocmVhZChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb2RlID0gbV9zdGF0dXMuY29kZV0g
eworICAgICAgICBpZiAobV9kaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjaykK
KyAgICAgICAgICAgIG1fZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2soY29k
ZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6Zmx1c2hQZW5k
aW5nTWVkaWFEYXRhKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGJv
b2wsIGludDMyX3QpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpzaG91bGRQcm92aWRlTWVkaWFkYXRhRm9yVHJhY2tJRChpbnQzMl90
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lk
IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnJlc2V0UGFyc2VyU3RhdGUoKQoreworICAgIG1fcGFy
c2VyLT5EaWRTZWVrKCk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpOb25lOworfQorCitTdGF0dXMg
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FbGVtZW50QmVnaW4oY29uc3QgRWxlbWVudE1ldGFk
YXRhJiBtZXRhZGF0YSwgQWN0aW9uKiBhY3Rpb24pCit7CisgICAgVU5VU0VEX1BBUkFNKG1ldGFk
YXRhKTsKKyAgICBBU1NFUlQoYWN0aW9uKTsKKyAgICBpZiAoIWFjdGlvbikKKyAgICAgICAgcmV0
dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworCisgICAgaWYgKChtX3N0YXRl
ID09IFN0YXRlOjpOb25lICYmIG1ldGFkYXRhLmlkICE9IElkOjprRWJtbCkKKyAgICAgICAgfHwg
KG1fc3RhdGUgPT0gU3RhdGU6OlJlYWRFYm1sICYmIG1ldGFkYXRhLmlkICE9IElkOjprU2VnbWVu
dCkKKyAgICAgICAgfHwgKG1fc3RhdGUgPT0gU3RhdGU6OlJlYWRpbmdTZWdtZW50ICYmIG1ldGFk
YXRhLmlkICE9IElkOjprSW5mbykKKyAgICAgICAgfHwgKG1fc3RhdGUgPT0gU3RhdGU6OlJlYWRJ
bmZvICYmIG1ldGFkYXRhLmlkICE9IElkOjprVHJhY2tzKQorICAgICAgICB8fCAobV9zdGF0ZSA9
PSBTdGF0ZTo6UmVhZFRyYWNrICYmIG1ldGFkYXRhLmlkICE9IElkOjprVHJhY2tFbnRyeSAmJiBt
ZXRhZGF0YS5pZCAhPSBJZDo6a0NsdXN0ZXIpCisgICAgICAgIHx8IChtZXRhZGF0YS5pZCA9PSBJ
ZDo6a0N1ZXMgfHwgbWV0YWRhdGEuaWQgPT0gSWQ6OmtDaGFwdGVycykpIHsKKyAgICAgICAgKmFj
dGlvbiA9IEFjdGlvbjo6a1NraXA7CisgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tD
b21wbGV0ZWQpOworICAgIH0KKworICAgIGlmIChtZXRhZGF0YS5pZCA9PSBJZDo6a0VibWwpCisg
ICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZGluZ0VibWw7CisgICAgZWxzZSBpZiAobWV0YWRh
dGEuaWQgPT0gSWQ6OmtTZWdtZW50KQorICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWRpbmdT
ZWdtZW50OworICAgIGVsc2UgaWYgKG1ldGFkYXRhLmlkID09IElkOjprSW5mbykKKyAgICAgICAg
bV9zdGF0ZSA9IFN0YXRlOjpSZWFkaW5nSW5mbzsKKyAgICBlbHNlIGlmIChtZXRhZGF0YS5pZCA9
PSBJZDo6a1RyYWNrcykKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkaW5nVHJhY2tzOwor
ICAgIGVsc2UgaWYgKG1ldGFkYXRhLmlkID09IElkOjprVHJhY2tFbnRyeSkKKyAgICAgICAgbV9z
dGF0ZSA9IFN0YXRlOjpSZWFkaW5nVHJhY2s7CisgICAgZWxzZSBpZiAobWV0YWRhdGEuaWQgPT0g
SWQ6OmtDbHVzdGVyKQorICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWRpbmdDbHVzdGVyOwor
CisgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7Cit9CisKK1N0YXR1cyBT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkVibWwoY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRh
ZGF0YSwgY29uc3QgRWJtbCYgZWJtbCkKK3sKKyAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOwor
ICAgIGlmIChlYm1sLmRvY190eXBlLmlzX3ByZXNlbnQoKSAmJiBlYm1sLmRvY190eXBlLnZhbHVl
KCkuY29tcGFyZSgid2VibSIpKQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6Q29kZShF
cnJvckNvZGU6OkludmFsaWREb2NUeXBlKSk7CisKKyAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVu
dEVuY291bnRlcmVkID0gdHJ1ZTsKKyAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudCA9IFdURjo6
bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8SW5pdGlhbGl6YXRpb25TZWdtZW50Pigp
OworICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZEVibWw7CisKKyAgICByZXR1cm4gU3RhdHVzKFN0
YXR1czo6a09rQ29tcGxldGVkKTsKK30KKworU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
Ok9uU2VnbWVudEJlZ2luKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIEFjdGlvbiog
YWN0aW9uKQoreworICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CisgICAgaWYgKCFtX2luaXRp
YWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkKQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1
czo6Q29kZShFcnJvckNvZGU6OkludmFsaWRJbml0U2VnbWVudCkpOworCisgICAgQVNTRVJUKGFj
dGlvbik7CisgICAgaWYgKCFhY3Rpb24pCisgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjpr
Tm90RW5vdWdoTWVtb3J5KTsKKyAgICAqYWN0aW9uID0gQWN0aW9uOjprUmVhZDsKKworICAgIHJl
dHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworfQorCitTdGF0dXMgU291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6T25JbmZvKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNv
bnN0IEluZm8mIGluZm8pCit7CisgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKKyAgICBpZiAo
IW1faW5pdGlhbGl6YXRpb25TZWdtZW50RW5jb3VudGVyZWQgfHwgIW1faW5pdGlhbGl6YXRpb25T
ZWdtZW50KQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6Q29kZShFcnJvckNvZGU6Oklu
dmFsaWRJbml0U2VnbWVudCkpOworCisgICAgYXV0byB0aW1lY29kZVNjYWxlID0gaW5mby50aW1l
Y29kZV9zY2FsZS5pc19wcmVzZW50KCkgPyBpbmZvLnRpbWVjb2RlX3NjYWxlLnZhbHVlKCkgOiAx
MDAwMDAwOworICAgIG1fdGltZXNjYWxlID0gMTAwMDAwMDAwMCAvIHRpbWVjb2RlU2NhbGU7Cisg
ICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnQtPmR1cmF0aW9uID0gaW5mby5kdXJhdGlvbi5pc19w
cmVzZW50KCkgPyBNZWRpYVRpbWUoaW5mby5kdXJhdGlvbi52YWx1ZSgpLCBtX3RpbWVzY2FsZSkg
OiBNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFk
SW5mbzsKKworICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworfQorCitT
dGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25DbHVzdGVyQmVnaW4oY29uc3QgRWxlbWVu
dE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uc3QgQ2x1c3RlciYgY2x1c3RlciwgQWN0aW9uKiBhY3Rp
b24pCit7CisgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oY2x1
c3Rlcik7CisgICAgQVNTRVJUKGFjdGlvbik7CisgICAgaWYgKCFhY3Rpb24pCisgICAgICAgIHJl
dHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKworICAgIGlmIChtX2luaXRp
YWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkICYmIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRh
dGFDYWxsYmFjaykgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGluaXRpYWxpemF0aW9uU2VnbWVudCA9IFdURk1vdmUoKm1f
aW5pdGlhbGl6YXRpb25TZWdtZW50KV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBtX2RpZFBh
cnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soV1RGTW92ZShpbml0aWFsaXphdGlvblNlZ21l
bnQpKTsKKyAgICAgICAgfSk7CisgICAgfQorICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50RW5j
b3VudGVyZWQgPSBmYWxzZTsKKyAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudCA9IG51bGxwdHI7
CisKKyAgICAqYWN0aW9uID0gQWN0aW9uOjprUmVhZDsKKworICAgIHJldHVybiBTdGF0dXMoU3Rh
dHVzOjprT2tDb21wbGV0ZWQpOworfQorCitTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
T25UcmFja0VudHJ5KGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0IFRyYWNr
RW50cnkmIHRyYWNrRW50cnkpCit7CisgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKKyAgICBt
X3N0YXRlID0gU3RhdGU6OlJlYWRUcmFjazsKKyAgICBpZiAoIXRyYWNrRW50cnkudHJhY2tfdHlw
ZS5pc19wcmVzZW50KCkpCisgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0
ZWQpOworCisgICAgYXV0byB0cmFja1R5cGUgPSB0cmFja0VudHJ5LnRyYWNrX3R5cGUudmFsdWUo
KTsKKyAgICBpZiAodHJhY2tUeXBlID09IFRyYWNrVHlwZTo6a1ZpZGVvKQorICAgICAgICBtX2lu
aXRpYWxpemF0aW9uU2VnbWVudC0+dmlkZW9UcmFja3MuYXBwZW5kKHsgTWVkaWFEZXNjcmlwdGlv
bldlYk06OmNyZWF0ZShUcmFja0VudHJ5KHRyYWNrRW50cnkpKSwgVmlkZW9UcmFja1ByaXZhdGVX
ZWJNOjpjcmVhdGUoVHJhY2tFbnRyeSh0cmFja0VudHJ5KSkgfSk7CisgICAgZWxzZSBpZiAodHJh
Y2tUeXBlID09IFRyYWNrVHlwZTo6a0F1ZGlvKQorICAgICAgICBtX2luaXRpYWxpemF0aW9uU2Vn
bWVudC0+YXVkaW9UcmFja3MuYXBwZW5kKHsgTWVkaWFEZXNjcmlwdGlvbldlYk06OmNyZWF0ZShU
cmFja0VudHJ5KHRyYWNrRW50cnkpKSwgQXVkaW9UcmFja1ByaXZhdGVXZWJNOjpjcmVhdGUoVHJh
Y2tFbnRyeSh0cmFja0VudHJ5KSkgfSk7CisKKyAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09r
Q29tcGxldGVkKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQ0NzFjMjY4NTBkMDlkMWI4ZjJhZWY2YjQyM2I1OWZkZTgwNjE1MzIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNLmgKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlci5oIgorI2luY2x1ZGUgPHdlYm0vY2Fs
bGJhY2suaD4KKyNpbmNsdWRlIDx3ZWJtL3N0YXR1cy5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4K
KyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK3R5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZl
clJlZjsKKworbmFtZXNwYWNlIHdlYm0geworY2xhc3MgV2VibVBhcnNlcjsKK30KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNIDogcHVibGljIFNv
dXJjZUJ1ZmZlclBhcnNlciwgcHJpdmF0ZSB3ZWJtOjpDYWxsYmFjayB7CitwdWJsaWM6CisgICAg
c3RhdGljIGJvb2wgaXNDb250ZW50VHlwZVN1cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYpOwor
CisgICAgU291cmNlQnVmZmVyUGFyc2VyV2ViTSgpOworICAgIH5Tb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNKCk7CisKKyAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOworCisgICAgY29uc3Qgd2Vi
bTo6U3RhdHVzJiBzdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1czsgfQorCisgICAgVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gVHlwZTo6V2ViTTsgfQorICAgIHZvaWQgYXBwZW5kRGF0
YShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgQXBwZW5kRmxhZ3MgPSBBcHBlbmRGbGFnczo6Tm9u
ZSkgZmluYWw7CisgICAgdm9pZCBmbHVzaFBlbmRpbmdNZWRpYURhdGEoKSBmaW5hbDsKKyAgICB2
b2lkIHNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGJvb2wsIGludDMyX3QpIGZp
bmFsOworICAgIGJvb2wgc2hvdWxkUHJvdmlkZU1lZGlhZGF0YUZvclRyYWNrSUQoaW50MzJfdCkg
ZmluYWw7CisgICAgdm9pZCByZXNldFBhcnNlclN0YXRlKCkgZmluYWw7CisKKyAgICBlbnVtIGNs
YXNzIEVycm9yQ29kZSA6IGludDMyX3QgeworICAgICAgICBTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
RXJyb3JDb2RlU3RhcnQgPSAyMDAwLAorICAgICAgICBJbnZhbGlkRG9jVHlwZSwKKyAgICAgICAg
SW52YWxpZEluaXRTZWdtZW50LAorICAgIH07CisKK3ByaXZhdGU6CisgICAgLy8gd2VibTo6Q2Fs
bGJhY2sKKyAgICB3ZWJtOjpTdGF0dXMgT25FbGVtZW50QmVnaW4oY29uc3Qgd2VibTo6RWxlbWVu
dE1ldGFkYXRhJiwgd2VibTo6QWN0aW9uKikgZmluYWw7CisgICAgd2VibTo6U3RhdHVzIE9uRWJt
bChjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmLCBjb25zdCB3ZWJtOjpFYm1sJikgZmluYWw7
CisgICAgd2VibTo6U3RhdHVzIE9uU2VnbWVudEJlZ2luKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRh
ZGF0YSYsIHdlYm06OkFjdGlvbiopIGZpbmFsOworICAgIHdlYm06OlN0YXR1cyBPbkluZm8oY29u
c3Qgd2VibTo6RWxlbWVudE1ldGFkYXRhJiwgY29uc3Qgd2VibTo6SW5mbyYpIGZpbmFsOworICAg
IHdlYm06OlN0YXR1cyBPbkNsdXN0ZXJCZWdpbihjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEm
LCBjb25zdCB3ZWJtOjpDbHVzdGVyJiwgd2VibTo6QWN0aW9uKikgZmluYWw7CisgICAgd2VibTo6
U3RhdHVzIE9uVHJhY2tFbnRyeShjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmLCBjb25zdCB3
ZWJtOjpUcmFja0VudHJ5JikgZmluYWw7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5pdGlhbGl6
YXRpb25TZWdtZW50PiBtX2luaXRpYWxpemF0aW9uU2VnbWVudDsKKyAgICB3ZWJtOjpTdGF0dXMg
bV9zdGF0dXM7CisgICAgc3RkOjp1bmlxdWVfcHRyPHdlYm06OldlYm1QYXJzZXI+IG1fcGFyc2Vy
OworICAgIGJvb2wgbV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCB7IGZhbHNlIH07
CisgICAgdWludDMyX3QgbV90aW1lc2NhbGUgeyAxMDAwIH07CisKKyAgICBlbnVtIGNsYXNzIFN0
YXRlIDogdWludDhfdCB7CisgICAgICAgIE5vbmUsCisgICAgICAgIFJlYWRpbmdFYm1sLAorICAg
ICAgICBSZWFkRWJtbCwKKyAgICAgICAgUmVhZGluZ1NlZ21lbnQsCisgICAgICAgIFJlYWRpbmdJ
bmZvLAorICAgICAgICBSZWFkSW5mbywKKyAgICAgICAgUmVhZGluZ1RyYWNrcywKKyAgICAgICAg
UmVhZGluZ1RyYWNrLAorICAgICAgICBSZWFkVHJhY2ssCisgICAgICAgIFJlYWRpbmdDbHVzdGVy
LAorICAgIH07CisgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpOb25lIH07CisKKyAgICBWZWN0
b3I8d2VibTo6VHJhY2tFbnRyeT4gbV90cmFja3M7Cit9OworCit9CisKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTSkKKyAgICBzdGF0
aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyJiBwYXJzZXIp
IHsgcmV0dXJuIHBhcnNlci50eXBlKCkgPT0gV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpU
eXBlOjpXZWJNOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0Nv
Y29hLm1tCmluZGV4IDU2ODU5NTMzZGViNmFlY2M5MGM1N2UxOTUxMmNmZGQ4ZTBlMmU0YjEuLjBj
N2VkMmNhOWI3ZWU3MTlhMTViNTBmMmY1MjI0N2NmN2FlZGViMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0Nv
Y29hLm1tCkBAIC0xMjIsNyArMTIyLDcgQEAgYm9vbCB2YWxpZGF0ZVZQUGFyYW1ldGVycyhWUENv
ZGVjQ29uZmlndXJhdGlvblJlY29yZCYgY29kZWNDb25maWd1cmF0aW9uLCBNZWRpYUMKICAgICAg
ICAgaW5mby5wb3dlckVmZmljaWVudCA9IHRydWU7CiAKICAgICAgICAgLy8gSFcgVlA5IERlY29k
ZXIgc3VwcG9ydHMgUHJvZmlsZSAwICYgMjoKLSAgICAgICAgaWYgKCFjb2RlY0NvbmZpZ3VyYXRp
b24ucHJvZmlsZSAmJiBjb2RlY0NvbmZpZ3VyYXRpb24ucHJvZmlsZSAhPSAyKQorICAgICAgICBp
ZiAoY29kZWNDb25maWd1cmF0aW9uLnByb2ZpbGUgJiYgY29kZWNDb25maWd1cmF0aW9uLnByb2Zp
bGUgIT0gMikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAvLyBIVyBWUDkg
RGVjb2RlciBzdXBwb3J0cyB1cCB0byBMZXZlbCA2OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2Vi
TS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzY5YjU3NjkyODc4NWEyMGJmYTBkZDUwMzQ1NjI3NDNjMjc4NTky
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZVdlYk0u
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8VmlkZW9UcmFja1ByaXZhdGVXZWJNPiBW
aWRlb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZSh3ZWJtOjpUcmFja0VudHJ5JiYgdHJhY2tFbnRy
eSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0oV1RG
TW92ZSh0cmFja0VudHJ5KSkpOworfQorCitWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OlZpZGVvVHJh
Y2tQcml2YXRlV2ViTSh3ZWJtOjpUcmFja0VudHJ5JiYgdHJhY2tFbnRyeSkKKyAgICA6IG1fdHJh
Y2soV1RGTW92ZSh0cmFja0VudHJ5KSkKK3sKKyAgICBpZiAobV90cmFjay5pc19lbmFibGVkLmlz
X3ByZXNlbnQoKSkKKyAgICAgICAgc2V0U2VsZWN0ZWQobV90cmFjay5pc19lbmFibGVkLnZhbHVl
KCkpOworfQorCitBdG9tU3RyaW5nIFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6aWQoKSBjb25zdAor
eworICAgIGlmIChtX3RyYWNrSUQuaXNOdWxsKCkpCisgICAgICAgIG1fdHJhY2tJRCA9IG1fdHJh
Y2sudHJhY2tfdWlkLmlzX3ByZXNlbnQoKSA/IEF0b21TdHJpbmc6Om51bWJlcihtX3RyYWNrLnRy
YWNrX3VpZC52YWx1ZSgpKSA6IGVtcHR5QXRvbSgpOworICAgIHJldHVybiBtX3RyYWNrSUQ7Cit9
CisKK0F0b21TdHJpbmcgVmlkZW9UcmFja1ByaXZhdGVXZWJNOjpsYWJlbCgpIGNvbnN0Cit7Cisg
ICAgaWYgKG1fbGFiZWwuaXNOdWxsKCkpCisgICAgICAgIG1fbGFiZWwgPSBtX3RyYWNrLm5hbWUu
aXNfcHJlc2VudCgpID8gQXRvbVN0cmluZzo6ZnJvbVVURjgobV90cmFjay5uYW1lLnZhbHVlKCku
ZGF0YSgpLCBtX3RyYWNrLm5hbWUudmFsdWUoKS5sZW5ndGgoKSkgOiBlbXB0eUF0b20oKTsKKyAg
ICByZXR1cm4gbV9sYWJlbDsKK30KKworQXRvbVN0cmluZyBWaWRlb1RyYWNrUHJpdmF0ZVdlYk06
Omxhbmd1YWdlKCkgY29uc3QKK3sKKyAgICBpZiAobV9sYW5ndWFnZS5pc051bGwoKSkKKyAgICAg
ICAgbV9sYW5ndWFnZSA9IG1fdHJhY2subGFuZ3VhZ2UuaXNfcHJlc2VudCgpID8gQXRvbVN0cmlu
Zzo6ZnJvbVVURjgobV90cmFjay5sYW5ndWFnZS52YWx1ZSgpLmRhdGEoKSwgbV90cmFjay5sYW5n
dWFnZS52YWx1ZSgpLmxlbmd0aCgpKSA6IGVtcHR5QXRvbSgpOworICAgIHJldHVybiBtX2xhbmd1
YWdlOworfQorCitpbnQgVmlkZW9UcmFja1ByaXZhdGVXZWJNOjp0cmFja0luZGV4KCkgY29uc3QK
K3sKKyAgICBpZiAobV90cmFjay50cmFja19udW1iZXIuaXNfcHJlc2VudCgpKQorICAgICAgICBy
ZXR1cm4gbV90cmFjay50cmFja19udW1iZXIudmFsdWUoKTsKKyAgICByZXR1cm4gMDsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlk
ZW9UcmFja1ByaXZhdGVXZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYmJmZjJiYTFkZDdlNWIy
MTVmYTg0NWNiOGI1YzdkYzE5ODAyNGJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmgKQEAgLTAs
MCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiVmlkZW9U
cmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3ZWJtL2RvbV90eXBlcy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFZpZGVvVHJhY2tQcml2YXRlV2ViTSBmaW5hbCA6IHB1YmxpYyBW
aWRlb1RyYWNrUHJpdmF0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrUHJp
dmF0ZVdlYk0+IGNyZWF0ZSh3ZWJtOjpUcmFja0VudHJ5JiYpOworICAgIHZpcnR1YWwgflZpZGVv
VHJhY2tQcml2YXRlV2ViTSgpID0gZGVmYXVsdDsKKworICAgIEF0b21TdHJpbmcgaWQoKSBjb25z
dCBmaW5hbDsKKyAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3QgZmluYWw7CisgICAgQXRvbVN0
cmluZyBsYW5ndWFnZSgpIGNvbnN0IGZpbmFsOworICAgIGludCB0cmFja0luZGV4KCkgY29uc3Qg
ZmluYWw7CisKK3ByaXZhdGU6CisgICAgVmlkZW9UcmFja1ByaXZhdGVXZWJNKHdlYm06OlRyYWNr
RW50cnkmJik7CisgICAgd2VibTo6VHJhY2tFbnRyeSBtX3RyYWNrOworICAgIG11dGFibGUgQXRv
bVN0cmluZyBtX3RyYWNrSUQ7CisgICAgbXV0YWJsZSBBdG9tU3RyaW5nIG1fbGFiZWw7CisgICAg
bXV0YWJsZSBBdG9tU3RyaW5nIG1fbGFuZ3VhZ2U7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCBlMDRjYWRjYTJkYzVhOGM0MTliNzJmYTE5ZWU3
M2ZlNzNhMTBiNjAxLi4xOTg0M2ViMGQzNjk2M2NlM2ZjY2U1MTM1OTA0NWMwMmQ5YjA1M2ZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKQEAgLTY2OCw2ICs2Njgs
MTQgQEAgVlA5RGVjb2RlckVuYWJsZWQ6CiAgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIkVu
YWJsZSBWUDkgZGVjb2RlciIKICAgY2F0ZWdvcnk6IGV4cGVyaW1lbnRhbAogCitXZWJNUGFyc2Vy
RW5hYmxlZDoKKyAgdHlwZTogYm9vbAorICBkZWZhdWx0VmFsdWU6IGZhbHNlCisgIHdlYmNvcmVC
aW5kaW5nOiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiV2Vi
TSBNU0UgcGFyc2VyIgorICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJFbmFibGUgV2ViTSBN
U0UgcGFyc2VyIgorICBjYXRlZ29yeTogZXhwZXJpbWVudGFsCisKIFVzZUxlZ2FjeVRleHRBbGln
blBvc2l0aW9uZWRFbGVtZW50QmVoYXZpb3I6CiAgIHR5cGU6IGJvb2wKICAgZGVmYXVsdFZhbHVl
OiBmYWxzZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404671</attachid>
            <date>2020-07-19 09:05:57 -0700</date>
            <delta_ts>2020-07-19 09:06:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214529-20200719090556.patch</filename>
            <type>text/plain</type>
            <size>139289</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBhY2ZhNzFkMTE0MWY2M2Q0ZWYxMGJkMmY2NjE5YzcxYTNhNWU4ZTQxLi41MGE1
MmNkNTIxZDljMGEzYzQ3N2U5MzhkZTc5MmNiZDdiNjVlYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNy0xOSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBleHBlcmltZW50
YWwgTVNFIFdlYk0gcGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTQ1MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUd28gZHJpdmUtYnkgZml4ZXM6IEFkZCBzb21lIG1pc3NpbmcgZXhwb3J0IHRv
IHRoZSBsaWJ3ZWJydGMuKi5leHAgZmlsZXMsIGFuZCBleHBvcnQgdGhlIHdlYm0gaGVhZGVycwor
ICAgICAgICBhcyBQcml2YXRlLCBub3QgUHVibGljLCBzbyB0aGV5J3JlIHB1dCBpbiB0aGUgY29y
cmVjdCBkaXJlY3RvcnkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9T
LmV4cDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBsaWJ3
ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wNy0xNyAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldml3ZWQgYnVpbGQgZml4IGFm
dGVyIHIyNjU1OTI7IHJhdGhlciB0aGFuIHJlbW92ZSB0aGUgZGVhZCBjb2RlIGNhdXNpbmcgbGlu
ayBlcnJvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMzdjZDRhNGM4YzYwYmM0ZjViOTkxZGQyOGJkMDIxOThj
ZjQzMmE4Li43Mzc4Mjc4MTVlNDIyYzVlNTllMGIxZWE0ZGU2MTA5YmJhNDlhNGEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQ0IEBACisyMDIwLTA3LTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIGV4cGVyaW1lbnRhbCBNU0UgV2ViTSBw
YXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NDUyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgeWV0IHBhcnNlIGFjdHVhbCBtZWRpYSBzYW1wbGVz
OyBhcyBvZiB5ZXQgaXQgb25seSBwYXJzZXMgYXVkaW8gYW5kIHZpZGVvCisgICAgICAgIHRyYWNr
IGluZm9ybWF0aW9uLiBNZWRpYSBzYW1wbGUgcGFyc2luZyBpcyB1cGNvbWluZy4KKworICAgICAg
ICBBZGQgYW4gZXhwZXJpbWVudGFsIE1TRSBXZWJNIHBhcnNlciB0byBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy4gVGhpcyB3aWxsIHJlcXVpcmUgZXh0ZW5zaXZlIHJlZmFjdG9yaW5nCisgICAg
ICAgIG9mIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLCB0byBleHRyYWN0IG91dCB0aGUgcGFy
c2VyIGludG8gYSBuZXcsIHZpcnR1YWxpemVkIGNsYXNzLiBUaGlzIG5ldyBwYXJzZXIgY2FuCisg
ICAgICAgIHRha2UgYWR2YW50YWdlIG9mIG5ldyBDKys+MTEgZmVhdHVyZXMgc3VjaCBhcyBsYW1i
ZGFzIHRvIGNsZWFuIHVwIHNvbWUgcHJvYmxlbWF0aWMgZXhpc3RpbmcgY29kZS4gVGhlIG5ldwor
ICAgICAgICB2aXJ0dWFsaXplZCBTb3VyY2VCdWZmZXJQYXJzZXIgY2xhc3MgdXNlcyBwYXNzZWQt
aW4gRnVuY3Rpb24gb2JqZWN0cywgcmF0aGVyIHRoYW4gcHVyZS12aXJ0dWFsIENsaWVudCBjbGFz
c2VzCisgICAgICAgIHRvIG5vdGlmeSBpdCdzIHBhcmVudCBvYmplY3Qgd2hlbiB0aGUgcGFyc2Vy
IGVuY291bnRlcnMgaW5pdGlhbGl6YXRpb24tIG9yIG1lZGlhLWRhdGEuCisKKyAgICAgICAgQmVj
YXVzZSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyB3aWxsIG5vdyBoYXZlIHRvIGRlYWwgd2l0
aCBBdWRpb1RyYWNrUHJpdmF0ZSBhbmQgVmlkZW9UcmFja1ByaXZhdGUgb2JqZWN0cworICAgICAg
ICB0aGF0IGFyZSBub3QgbmVjZXNzYXJpbHkgQXVkaW8tIGFuZCBWaWRlb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyBzdWJjbGFzc2VzLCBtb3ZlIHRob3NlIGNsYXNzZXMgbm90aWZpY2F0
aW9uCisgICAgICAgIGZlYXR1cmVzIHVwIGludG8gQXVkaW8tIGFuZCBWaWRlb1RyYWNrUHJpdmF0
ZSwgYWdhaW4gdXNpbmcgYSBGdW5jdGlvbiBvYmplY3QgcmF0aGVyIHRoYW4gYSBjbGllbnQgY2xh
c3MuCisKKyAgICAgICAgQWRkIGEgbmV3IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0gYW5kIGFzc29j
aWF0ZWQgQXVkaW9UcmFja1ByaXZhdGVXZWJNIGFuZCBWaWRlb1RyYWNrUHJpdmF0ZVdlYm0gY2xh
c2Vzcywgd2hpY2gKKyAgICAgICAgdXNlIGxpYndlYm0gdmlhIGxpYndlYnJ0YyB0byBwYXJzZSBh
cHBlbmRlZCBidWZmZXJzLgorCisgICAgICAgIFRoaXMgZWFybHkgaW1wbGVtZW50YXRpb24gaXMg
bm90IHlldCBhYmxlIHRvIHBhc3MgdGhlIFdlYk0gV1BUIG1lZGlhLXNvdXJjZS8gdGVzdHMsIGFz
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDCisgICAgICAgIHdpbGwgb25seSBjYXVzZSBhICJy
ZXNpemUiIGV2ZW50IHRvIGJlIGZpcmVkIHdoZW4gYSBNZWRpYVNhbXBsZSBpcyBlbnF1ZXVlZCBv
ciBkZWNvZGluZy4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2V0V2ViTVBhcnNlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6d2ViTVBhcnNlckVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Ry
YWNrUHJpdmF0ZTo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJp
dmF0ZTo6c2V0RW5hYmxlZENoYW5nZWRDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQ
cml2YXRlOjpzZXRTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0
ZTo6c2V0U2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0RW5hYmxlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OnN1cHBvcnRzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5oOiBBZGRlZC4KKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbTogQWRkZWQu
CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIGluaXRXaXRoUGFyc2Vy
OnBhcmVudDpdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgZGVh
bGxvY10pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBpbnZhbGlk
YXRlXSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbURh
dGFQYXJzZXI6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldDpdKToKKyAgICAgICAgKC1bV2ViQVZT
dHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3RyZWFtRGF0YVBhcnNlcjpkaWRQYXJzZVN0cmVhbURh
dGFBc0Fzc2V0OndpdGhEaXNjb250aW51aXR5Ol0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURh
dGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0
YVdpdGhFcnJvcjpdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIg
c3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlTWVkaWFEYXRhOmZvclRyYWNrSUQ6bWVkaWFUeXBl
OmZsYWdzOl0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJl
YW1EYXRhUGFyc2VyV2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0
YTpmb3JUcmFja0lEOl0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5l
ciBzdHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YTpmb3JUcmFja0lEOl0pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakM6OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OnNob3VsZFByb3Zp
ZGVNZWRpYWRhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakM6OnJlc2V0UGFyc2VyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldCk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRGYWlsVG9QYXJzZVN0cmVh
bURhdGFXaXRoRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElu
aXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjp+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRFbmNv
dW50ZXJFcnJvckR1cmluZ1BhcnNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRL
ZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmRDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpyZXNldFBhcnNlclN0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkZXN0cm95UGFyc2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjbGVhclRyYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFu
Z2VTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpwYXJzZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmF0dGVtcHRUb0RlY3J5cHQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGVXZWJNOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
a1ByaXZhdGVXZWJNOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk0pOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9UcmFja1ByaXZhdGVXZWJNOjppZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1RyYWNrUHJpdmF0ZVdlYk06OmxhYmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
VHJhY2tQcml2YXRlV2ViTTo6bGFuZ3VhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGVXZWJNOjp0cmFja0luZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OmlzQ29udGVudFR5cGVTdXBw
b3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0RGlkUGFyc2VJ
bml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXI6OnNldERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0RGlkUHJvdmlkZU1lZGlhRGF0
YUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0V2ls
bFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OnNldERpZFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNXZWJtUGFyc2VyQXZhaWxhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OnN1cHBvcnRlZFdlYk1Db2RlY3MpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmFwcGVuZERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6Zmx1c2hQZW5k
aW5nTWVkaWFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lE
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnJlc2V0UGFyc2Vy
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FbGVt
ZW50QmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25F
Ym1sKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uU2VnbWVu
dEJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uSW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkNsdXN0ZXJC
ZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblRyYWNr
RW50cnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpzdGF0dXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6dHlwZSBjb25zdCk6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
dmFsaWRhdGVWUFBhcmFtZXRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFja1ByaXZhdGVXZWJNOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFj
a1ByaXZhdGVXZWJNOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk0pOgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFja1ByaXZhdGVXZWJNOjppZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b1RyYWNrUHJpdmF0ZVdlYk06OmxhYmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
VHJhY2tQcml2YXRlV2ViTTo6bGFuZ3VhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFja1ByaXZhdGVXZWJNOjp0cmFja0luZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaDogQWRkZWQuCisKIDIwMjAt
MDctMTggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIGZpeCBidWlsZCB3YXJuaW5ncyBpbiB0aGUgV2ViWFIgYmFja2VuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAxM2M1YjFlYmE4MzNmYjdhNmQxNjRjN2NhOTdhNTBkNDUxYTU5NDMwLi40M2I4ODc4
OTFhOWNiYzgyMDI3MzIxMmU5ZDc2NGM2NjFmYTc2NDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDIwLTA3LTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAg
ICAgIFtDb2NvYV0gQWRkIGV4cGVyaW1lbnRhbCBNU0UgV2ViTSBwYXJzZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDUyOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhbiBFeHBlcmltZW50YWwg
c2V0dGluZyB0byBlbmFibGUgdGhlIE1TRSBXZWJNIHBhcnNlciAob2ZmIGJ5IGRlZmF1bHQpLgor
CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisKIDIwMjAtMDQtMzAgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIGRhdGEgY29w
aWVzIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgY3VzdG9tIFVSTCBzY2hlbWUgaGFuZGxlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xp
YndlYnJ0Yy5pT1MuZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRp
b25zL2xpYndlYnJ0Yy5pT1MuZXhwCmluZGV4IGQwNGE5MTk2ODZlOWNjODk2N2E4YWFkMDQ2OWM2
ODU1NDY1NzI3OWIuLmE3YmNjN2I1MTRjM2JlNjNhYWRjYTBiMjEyNzFmODE1ZDkwNTQzMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3
ZWJydGMuaU9TLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJh
dGlvbnMvbGlid2VicnRjLmlPUy5leHAKQEAgLTI4MCwxMyArMjgwLDIwIEBAIF9fWlRWTjR3ZWJt
MTJCdWZmZXJSZWFkZXJFCiBfX1pUVk40d2VibThDYWxsYmFja0UKIF9fWk40d2VibThDYWxsYmFj
azEwT25CbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRQogX19aTjR3
ZWJtOENhbGxiYWNrMTBPbkN1ZVBvaW50RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU184Q3Vl
UG9pbnRFCitfX1pONHdlYm04Q2FsbGJhY2sxMk9uQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1l
dGFkYXRhRVJLTlNfNUJsb2NrRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPbkNs
dXN0ZXJFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzdDbHVzdGVyRQogX19aTjR3ZWJt
OENhbGxiYWNrMTJPblNlZ21lbnRFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUUKIF9fWk40d2Vi
bThDYWxsYmFjazEyT25UcmFja0VudHJ5RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMFRy
YWNrRW50cnlFCitfX1pONHdlYm04Q2FsbGJhY2sxNE9uQ2x1c3RlckJlZ2luRVJLTlNfMTVFbGVt
ZW50TWV0YWRhdGFFUktOU183Q2x1c3RlckVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFj
azE0T25FZGl0aW9uRW50cnlFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEyRWRpdGlvbkVu
dHJ5RQorX19aTjR3ZWJtOENhbGxiYWNrMTRPbkVsZW1lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1l
dGFkYXRhRVBOU182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrMTRPblNlZ21lbnRCZWdpbkVS
S05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTVP
bkJsb2NrR3JvdXBFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEwQmxvY2tHcm91cEUK
IF9fWk40d2VibThDYWxsYmFjazE2T25TaW1wbGVCbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFk
YXRhRVJLTlNfMTFTaW1wbGVCbG9ja0UKIF9fWk40d2VibThDYWxsYmFjazE2T25Vbmtub3duRWxl
bWVudEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182UmVhZGVyRVB5CitfX1pONHdlYm04Q2Fs
bGJhY2sxN09uQmxvY2tHcm91cEJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rp
b25FCitfX1pONHdlYm04Q2FsbGJhY2sxOE9uU2ltcGxlQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVu
dE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVCbG9ja0VQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxs
YmFjazRTa2lwRVBOU182UmVhZGVyRVB5CiBfX1pONHdlYm04Q2FsbGJhY2s1T25UYWdFUktOU18x
NUVsZW1lbnRNZXRhZGF0YUVSS05TXzNUYWdFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25FYm1sRVJL
TlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU180RWJtbEUKIF9fWk40d2VibThDYWxsYmFjazZPbklu
Zm9FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzRJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhw
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5p
T1NzaW0uZXhwCmluZGV4IGQwNGE5MTk2ODZlOWNjODk2N2E4YWFkMDQ2OWM2ODU1NDY1NzI3OWIu
LmE3YmNjN2I1MTRjM2JlNjNhYWRjYTBiMjEyNzFmODE1ZDkwNTQzMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2lt
LmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGli
d2VicnRjLmlPU3NpbS5leHAKQEAgLTI4MCwxMyArMjgwLDIwIEBAIF9fWlRWTjR3ZWJtMTJCdWZm
ZXJSZWFkZXJFCiBfX1pUVk40d2VibThDYWxsYmFja0UKIF9fWk40d2VibThDYWxsYmFjazEwT25C
bG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRQogX19aTjR3ZWJtOENh
bGxiYWNrMTBPbkN1ZVBvaW50RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU184Q3VlUG9pbnRF
CitfX1pONHdlYm04Q2FsbGJhY2sxMk9uQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRh
RVJLTlNfNUJsb2NrRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPbkNsdXN0ZXJF
bmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzdDbHVzdGVyRQogX19aTjR3ZWJtOENhbGxi
YWNrMTJPblNlZ21lbnRFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUUKIF9fWk40d2VibThDYWxs
YmFjazEyT25UcmFja0VudHJ5RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMFRyYWNrRW50
cnlFCitfX1pONHdlYm04Q2FsbGJhY2sxNE9uQ2x1c3RlckJlZ2luRVJLTlNfMTVFbGVtZW50TWV0
YWRhdGFFUktOU183Q2x1c3RlckVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFjazE0T25F
ZGl0aW9uRW50cnlFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEyRWRpdGlvbkVudHJ5RQor
X19aTjR3ZWJtOENhbGxiYWNrMTRPbkVsZW1lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRh
RVBOU182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrMTRPblNlZ21lbnRCZWdpbkVSS05TXzE1
RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTVPbkJsb2Nr
R3JvdXBFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEwQmxvY2tHcm91cEUKIF9fWk40
d2VibThDYWxsYmFjazE2T25TaW1wbGVCbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJL
TlNfMTFTaW1wbGVCbG9ja0UKIF9fWk40d2VibThDYWxsYmFjazE2T25Vbmtub3duRWxlbWVudEVS
S05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182UmVhZGVyRVB5CitfX1pONHdlYm04Q2FsbGJhY2sx
N09uQmxvY2tHcm91cEJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rpb25FCitf
X1pONHdlYm04Q2FsbGJhY2sxOE9uU2ltcGxlQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFk
YXRhRVJLTlNfMTFTaW1wbGVCbG9ja0VQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxsYmFjazRT
a2lwRVBOU182UmVhZGVyRVB5CiBfX1pONHdlYm04Q2FsbGJhY2s1T25UYWdFUktOU18xNUVsZW1l
bnRNZXRhZGF0YUVSS05TXzNUYWdFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25FYm1sRVJLTlNfMTVF
bGVtZW50TWV0YWRhdGFFUktOU180RWJtbEUKIF9fWk40d2VibThDYWxsYmFjazZPbkluZm9FUktO
U18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzRJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCmlu
ZGV4IDhkODViNWI4YjM3NTRhZGRlZmRlN2MyNGYyZjIwYTQ2NTgzNjZhY2QuLmY4Y2M5MTMxNmJj
ZGMwOTYwNTgyYjNmM2NhNDE2NWIyZWFjMjcyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAK
QEAgLTI3OCwxMyArMjc4LDIwIEBAIF9fWlRWTjR3ZWJtMTJCdWZmZXJSZWFkZXJFCiBfX1pUVk40
d2VibThDYWxsYmFja0UKIF9fWk40d2VibThDYWxsYmFjazEwT25CbG9ja0VuZEVSS05TXzE1RWxl
bWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRQogX19aTjR3ZWJtOENhbGxiYWNrMTBPbkN1ZVBvaW50
RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU184Q3VlUG9pbnRFCitfX1pONHdlYm04Q2FsbGJh
Y2sxMk9uQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRVBOU182
QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPbkNsdXN0ZXJFbmRFUktOU18xNUVsZW1lbnRN
ZXRhZGF0YUVSS05TXzdDbHVzdGVyRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPblNlZ21lbnRFbmRF
UktOU18xNUVsZW1lbnRNZXRhZGF0YUUKIF9fWk40d2VibThDYWxsYmFjazEyT25UcmFja0VudHJ5
RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMFRyYWNrRW50cnlFCitfX1pONHdlYm04Q2Fs
bGJhY2sxNE9uQ2x1c3RlckJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU183Q2x1c3Rl
ckVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFjazE0T25FZGl0aW9uRW50cnlFUktOU18x
NUVsZW1lbnRNZXRhZGF0YUVSS05TXzEyRWRpdGlvbkVudHJ5RQorX19aTjR3ZWJtOENhbGxiYWNr
MTRPbkVsZW1lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQorX19a
TjR3ZWJtOENhbGxiYWNrMTRPblNlZ21lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBO
U182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTVPbkJsb2NrR3JvdXBFbmRFUktOU18xNUVs
ZW1lbnRNZXRhZGF0YUVSS05TXzEwQmxvY2tHcm91cEUKIF9fWk40d2VibThDYWxsYmFjazE2T25T
aW1wbGVCbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVCbG9ja0UK
IF9fWk40d2VibThDYWxsYmFjazE2T25Vbmtub3duRWxlbWVudEVSS05TXzE1RWxlbWVudE1ldGFk
YXRhRVBOU182UmVhZGVyRVB5CitfX1pONHdlYm04Q2FsbGJhY2sxN09uQmxvY2tHcm91cEJlZ2lu
RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rpb25FCitfX1pONHdlYm04Q2FsbGJhY2sx
OE9uU2ltcGxlQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVC
bG9ja0VQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxsYmFjazRTa2lwRVBOU182UmVhZGVyRVB5
CiBfX1pONHdlYm04Q2FsbGJhY2s1T25UYWdFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzNU
YWdFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25FYm1sRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktO
U180RWJtbEUKIF9fWk40d2VibThDYWxsYmFjazZPbkluZm9FUktOU18xNUVsZW1lbnRNZXRhZGF0
YUVSS05TXzRJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL2xp
YndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRkYTczYTFi
ZmI0MTAzYTFmN2FhNDE0MzQ5ZmUwYWZhZWJjMGM4YWEuLjIyNjgyYmM1Yzk5NjY2Yjg3ZGE0ZDFk
MWQwZjZmNmI2NmFmZjBiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4
NTMsMTYgKzM4NTMsMTYgQEAKIAkJNUNGRDUzOTIxRTRCRDNBMzAwNDgyOTA4IC8qIHJvd19uZW9u
NjQuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZE
NTM4QTFFNEJEM0EzMDA0ODI5MDggLyogcm93X25lb242NC5jYyAqLzsgfTsKIAkJNUNGRDUzOTMx
RTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb24uY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZENTM4QjFFNEJEM0EzMDA0ODI5MDggLyogc2NhbGVf
bmVvbi5jYyAqLzsgfTsKIAkJNUNGRDUzOTQxRTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb242
NC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRkQ1
MzhDMUU0QkQzQTMwMDQ4MjkwOCAvKiBzY2FsZV9uZW9uNjQuY2MgKi87IH07Ci0JCUNERUJCNEFD
MjRDMDE5OUQwMEFEQkQ0NCAvKiB3ZWJtX3BhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MDgyNEMwMTkxQTAwQURCRDQ0IC8qIHdlYm1f
cGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9Owot
CQlDREVCQjRBRDI0QzAxOTlEMDBBREJENDQgLyogYnVmZmVyX3JlYWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MEQyNEMwMTkxQTAwQURC
RDQ0IC8qIGJ1ZmZlcl9yZWFkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07Ci0JCUNERUJCNEFFMjRDMDE5OUQwMEFEQkQ0NCAvKiBpZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MEEyNEMwMTkxQTAw
QURCRDQ0IC8qIGlkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9
OyB9OwotCQlDREVCQjRBRjI0QzAxOTlEMDBBREJENDQgLyogaXN0cmVhbV9yZWFkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDA5MjRDMDE5
MUEwMEFEQkQ0NCAvKiBpc3RyZWFtX3JlYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjAyNEMwMTk5RDAwQURCRDQ0IC8qIGRvbV90
eXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RF
QkI0MEIyNEMwMTkxQTAwQURCRDQ0IC8qIGRvbV90eXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjEyNEMwMTk5RDAwQURCRDQ0IC8q
IGVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENERUJCNDBDMjRDMDE5MUEwMEFEQkQ0NCAvKiBlbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCMjI0QzAxOTlEMDBBREJENDQg
Lyogc3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREVCQjQwNjI0QzAxOTFBMDBBREJENDQgLyogc3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCMzI0QzAxOTlEMDBBREJENDQg
LyogcmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREVCQjQwNTI0QzAxOTFBMDBBREJENDQgLyogcmVhZGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCNDI0QzAxOTlEMDBBREJENDQg
LyogZmlsZV9yZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENERUJCNDA3MjRDMDE5MUEwMEFEQkQ0NCAvKiBmaWxlX3JlYWRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjUyNEMwMTk5
RDAwQURCRDQ0IC8qIGNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREVCQjQwRTI0QzAxOTFBMDBBREJENDQgLyogY2FsbGJhY2suaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCUNERUJCNEFDMjRD
MDE5OUQwMEFEQkQ0NCAvKiB3ZWJtX3BhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MDgyNEMwMTkxQTAwQURCRDQ0IC8qIHdlYm1fcGFy
c2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
Q0RFQkI0QUQyNEMwMTk5RDAwQURCRDQ0IC8qIGJ1ZmZlcl9yZWFkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDBEMjRDMDE5MUEwMEFEQkQ0
NCAvKiBidWZmZXJfcmVhZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQ0RFQkI0QUUyNEMwMTk5RDAwQURCRDQ0IC8qIGlkLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwQTI0QzAxOTFBMDBB
REJENDQgLyogaWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlDREVCQjRBRjI0QzAxOTlEMDBBREJENDQgLyogaXN0cmVhbV9yZWFkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDA5MjRDMDE5
MUEwMEFEQkQ0NCAvKiBpc3RyZWFtX3JlYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUNERUJCNEIwMjRDMDE5OUQwMEFEQkQ0NCAvKiBkb21f
dHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
RUJCNDBCMjRDMDE5MUEwMEFEQkQ0NCAvKiBkb21fdHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREVCQjRCMTI0QzAxOTlEMDBBREJENDQg
LyogZWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RFQkI0MEMyNEMwMTkxQTAwQURCRDQ0IC8qIGVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREVCQjRCMjI0QzAxOTlEMDBBREJE
NDQgLyogc3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREVCQjQwNjI0QzAxOTFBMDBBREJENDQgLyogc3RhdHVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RFQkI0QjMyNEMwMTk5RDAwQURC
RDQ0IC8qIHJlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RFQkI0MDUyNEMwMTkxQTAwQURCRDQ0IC8qIHJlYWRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNERUJCNEI0MjRDMDE5OUQwMEFE
QkQ0NCAvKiBmaWxlX3JlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RFQkI0MDcyNEMwMTkxQTAwQURCRDQ0IC8qIGZpbGVfcmVhZGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RFQkI0QjUy
NEMwMTk5RDAwQURCRDQ0IC8qIGNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwRTI0QzAxOTFBMDBBREJENDQgLyogY2FsbGJhY2su
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDREVC
QjRCNjI0QzAxOUM0MDBBREJENDQgLyogdW5rbm93bl9wYXJzZXIuY2MgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQ2NDI0QzAxOTFBMDBBREJENDQg
LyogdW5rbm93bl9wYXJzZXIuY2MgKi87IH07CiAJCUNERUJCNEI3MjRDMDE5QzQwMEFEQkQ0NCAv
KiBtYXN0ZXJfcGFyc2VyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RFQkI0NkYyNEMwMTkxQTAwQURCRDQ0IC8qIG1hc3Rlcl9wYXJzZXIuY2MgKi87
IH07CiAJCUNERUJCNEI4MjRDMDE5QzQwMEFEQkQ0NCAvKiBibG9ja19wYXJzZXIuY2MgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQ3NjI0QzAxOTFB
MDBBREJENDQgLyogYmxvY2tfcGFyc2VyLmNjICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggMWQ3ZjIwOTg2N2MxZDRlMGE0Mjc0Njk3NjU1ZjhkMWIxMzZkYWQwZS4uZGMzZmYyNTg0
MWE5MjUzM2JlZThkMDU4MTYxOGFiMjBjNzBjOTlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CkBAIC0yOTEsNiArMjkxLDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIEBuby0KIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbSBAbm8tdW5pZnkK
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBAbm8tdW5pZnkKK3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gQG5vLXVuaWZ5
CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9i
akMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRl
b1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gQG5v
LXVuaWZ5CkBAIC0zMzMsNiArMzM0LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNH
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlv
VHJhY2tQcml2YXRlV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2Eu
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zsb2F0UmVjdENvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTM0OCw2ICszNTAsOCBAQCBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVj
dENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29h
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbQpAQCAtMzU2
LDYgKzM2MCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFz
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24u
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYkdQVUxheWVyLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1Ry
YWNrUHJpdmF0ZVdlYk0uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vz
c2lvblZULm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ODZmY2RlYzA1
ODYwMjIyYmYwMzQwMmE3MTZhZDJmNDZiMDBjNTc4Li44MmZkZWVjZGVkOGJhYjZmYjA5ZWIyZTQy
ZDY2NmVhYTQyMjUyZDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MjY3LDYgKzQyNjcsNyBAQAogCQlDREY2NUNDQTE0NUI0
NDg4MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY2NUNDOTE0NUI0M0E3MDBDNEM3QUEg
LyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RGNzQ4M0YxOEZFQkNFQzAwMDZFQ0MwIC8qIEdyaWRQ
b3NpdGlvbnNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RGNzQ4M0QxOEZFQkNFQzAwMDZFQ0MwIC8qIEdyaWRQb3NpdGlvbnNSZXNvbHZl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNE
Rjc1NkEzMjE1QzI5RTkwMEVGQ0I1MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNzU2QTEyMTVD
MjlFOTAwRUZDQjUwIC8qIEpTTWVkaWFLZXlFbmNyeXB0aW9uU2NoZW1lLmggKi87IH07CisJCUNE
Rjk5NEZEMjRDMTVGRTMwMDJFQTA2MiAvKiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGOTk0RkIyNEMx
MkE2QTAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gKi87IH07CiAJCUNE
RkMzNjA2MThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERkMzNjA0MThDQTYxQzIw
MDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTA1N0ZBNjEyMjA3MzExMDBBNDc2RDUgLyog
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRTA1N0ZBNDEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
MDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKQEAgLTE0MTY2LDYgKzE0MTY3LDgg
QEAKIAkJQ0Q4QzZDMjkyMkZEREE5MTAwQTcyMEFCIC8qIEpTUmVtb3RlUGxheWJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNSZW1vdGVQbGF5YmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDhEMzA2RDIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDRE1Mb2dnaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOEQzMDZF
MjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENE
TUxvZ2dpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDhGNjY3MDI0QzBG
MjA4MDAwQzQyMUMgLyogU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0Q4RjY2NzIyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDkyRjUwRjIyNjBGRkVFMDBGODdCQjMgLyogRG9jdW1lbnRGdWxs
c2NyZWVuLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBEb2N1bWVudEZ1bGxzY3JlZW4uaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDkyRjUxMDIyNjBGRkVFMDBGODdCQjMgLyogRG9jdW1lbnRGdWxsc2Ny
ZWVuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50RnVsbHNjcmVlbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDkyRjUxNjIyNjEwMzgyMDBGODdCQjMgLyogRnVsbHNjcmVlbk1h
bmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVsbHNjcmVlbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MzQ2LDYgKzE0MzQ5LDggQEAKIAkJQ0RFOEI1RUYxQTY5Nzc4
QjAwQjRCNjZBIC8qIExlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTdDODIxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxT
Y3JlZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyRnVsbFNjcmVl
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBN0M4MzEyNzYyMzA0MDBCODQ2
REQgLyogUmVuZGVyRnVsbFNjcmVlbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW5kZXJGdWxsU2NyZWVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RFQjNENzIyNEM0MUE2RTAwMUZCRUVGIC8qIFNvdXJjZUJ1ZmZlclBhcnNlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTb3VyY2VCdWZmZXJQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREVCM0Q3MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFy
c2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZUJ1ZmZlclBhcnNlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDREVDQTg5ODFFREY0NDdEMDBEQ0IwOEIgLyogQVZBc3NldFRyYWNr
VXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVZBc3NldFRyYWNrVXRpbGl0aWVz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVDQTg5OTFFREY0NDdEMDBEQ0Iw
OEIgLyogQVZBc3NldFRyYWNrVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFWQXNzZXRUcmFj
a1V0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVFMzkzNjE3OTc0
MjU5MDAxRDc1ODAgLyogUHVibGljVVJMTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQdWJsaWNVUkxNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE0Mzg0LDYgKzE0Mzg5LDEyIEBACiAJCUNERjc1NjlFMjE1QzI4NUUwMEVG
Q0I1MCAvKiBNZWRpYUtleUVuY3J5cHRpb25TY2hlbWUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhS2V5RW5jcnlw
dGlvblNjaGVtZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERjc1NkEwMjE1
QzI5RTgwMEVGQ0I1MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERjc1NkExMjE1QzI5RTkwMEVGQ0I1
MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREY5OTRGQTI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjk5NEZCMjRDMTJBNkEwMDJFQTA2MiAv
KiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RGOTk0RkUyNEMyODEzNjAwMkVBMDYyIC8qIFZpZGVvVHJhY2tQcml2YXRlV2ViTS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RGOTk0RkYyNEMyODEzNjAwMkVBMDYyIC8qIFZpZGVvVHJhY2tQcml2YXRlV2Vi
TS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY5OTUwMDI0QzI4MTQ5MDAyRUEwNjIgLyogQXVk
aW9UcmFja1ByaXZhdGVXZWJNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRlV2Vi
TS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY5OTUwMTI0QzI4MTQ5MDAyRUEw
NjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlv
VHJhY2tQcml2YXRlV2ViTS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERkMz
NjAxMThDQTYxNjMwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERkMzNjAyMThDQTYxNjMwMDI2RTU2RiAvKiBS
ZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNERkMzNjAzMThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlz
dGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ29t
bWFuZExpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1ODcxLDYg
KzI1ODgyLDggQEAKIAkJQjUzMjBENjgxMjJBMjRFOTAwMkQxNDQwIC8qIGNvY29hICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDREY5OTUwMTI0QzI4MTQ5
MDAyRUEwNjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcCAqLywKKwkJCQlDREY5OTUwMDI0
QzI4MTQ5MDAyRUEwNjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmggKi8sCiAJCQkJRjQ4RDJB
QTMyMTU5NzQwRDAwQzY3NTJCIC8qIENvbG9yQ29jb2EuaCAqLywKIAkJCQlGNDhEMkFBNDIxNTk3
NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5tbSAqLywKIAkJCQlCMjc1MzU0QzBCMDUzODE0MDAy
Q0U2NEYgLyogRmxvYXRSZWN0Q29jb2EubW0gKi8sCkBAIC0yNTg5MiwxMCArMjU5MDUsMTYgQEAK
IAkJCQlBRDlGRjZFMDE5MDgzOTFEMDAzQjYxRTAgLyogSU9TdXJmYWNlUG9vbENvY29hLm1tICov
LAogCQkJCUNEQzQ4QUM4MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuY3BwICovLAogCQkJCUNEQzQ4QUM3MjE0OUNGMkEwMDI0RkQ1OSAvKiBN
ZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuaCAqLywKKwkJCQlDREVCM0Q3MjI0
QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmNwcCAqLywKKwkJCQlDREVCM0Q3
MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmggKi8sCisJCQkJQ0Q4RjY2
NzAyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwICovLAorCQkJ
CUNEOEY2NjcyMjRDMEYyMDgwMDBDNDIxQyAvKiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmggKi8s
CiAJCQkJRTRFOEI0RUQyMTZCNzlGNDAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0LmNwcCAqLywKIAkJCQlFNEU4QjRFQTIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQuaCAqLywKIAkJCQk1MjY3MjRGMjFDQjJGREY2MDA3NTk3NEQgLyogVGV4
dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5oICovLAogCQkJCTUyNjcyNEYxMUNCMkZERjYwMDc1
OTc0RCAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tICovLAorCQkJCUNERjk5NEZG
MjRDMjgxMzYwMDJFQTA2MiAvKiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwICovLAorCQkJCUNE
Rjk5NEZFMjRDMjgxMzYwMDJFQTA2MiAvKiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaCAqLywKIAkJ
CQlDRDZGRTVCNzI0QkNFNjQ1MDA5RkNEQTQgLyogVlA5VXRpbGl0aWVzQ29jb2EuaCAqLywKIAkJ
CQlDRDZGRTVCODI0QkNFNjQ1MDA5RkNEQTQgLyogVlA5VXRpbGl0aWVzQ29jb2EubW0gKi8sCiAJ
CQkJMkQzRUY0NDQxOTE3OTE1QzAwMDM0MTg0IC8qIFdlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJE
ZWxlZ2F0ZS5oICovLApAQCAtMjczODgsNiArMjc0MDcsOCBAQAogCQkJCUNEQzhCNUE1MTgwNDc0
RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmggKi8sCiAJCQkJQ0RDOEI1
QTQxODA0NzRGNzAwMTZFNjg1IC8qIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gKi8sCiAJ
CQkJN0EyOUY1NzExOEM2OTUxNDAwNEQwRjgxIC8qIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuaCAqLywKKwkJCQlDREY5OTRGQTI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5oICovLAorCQkJCUNERjk5NEZCMjRDMTJBNkEwMDJFQTA2MiAvKiBTb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLm1tICovLAogCQkJCUNEQzhCNUE5MTgwNDdGRjEwMDE2RTY4NSAv
KiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oICovLAogCQkJCUNEQzhCNUE4MTgwNDdGRjEw
MDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSAqLywKIAkJCQk1MkQ1QTE4
RTFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmggKi8sCkBAIC0zNDU5
OCw2ICszNDYxOSw3IEBACiAJCQkJMjZBQTBGOUUxOEQyQTE4QjAwNDE5MzgxIC8qIFNlbGVjdG9y
UHNldWRvRWxlbWVudFR5cGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NENThERkQxRjk1
NjVBODAwMTEyNzkxIC8qIFNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxMEE4
MUY5MDIyQTQwMDUxMDJDRSAvKiBTb2Z0TGlua0xpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQ0RGOTk0RkQyNEMxNUZFMzAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDREM4QjVBQTE4MDQ3RkYxMDAxNkU2ODUgLyogU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBODMzQzdDQTBBMkNG
MDZCMDBENTc2NjQgLyogU1ZHTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzE2OTJERDIy
M0QyM0FCRDAwNkU4OEY3IC8qIFN5c3RlbUJhdHRlcnkubW0gaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggMTFjMGE3ZjVk
OGY5YjRiNDJhODcxYjMzMTFlYWM0NDU5NzUzNjQyNy4uZDAxNzg0YzdhYTRiNzZkNmMzY2QyNTk3
OTIzMjRhNjA1MjlhMWY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgKQEAgLTM5MSw2ICszOTEsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaW5jcmVt
ZW50YWxQREZMb2FkaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5jcmVtZW50YWxQREZM
b2FkaW5nRW5hYmxlZDsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAg
IHZvaWQgc2V0V2ViTVBhcnNlckVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV93ZWJNUGFyc2Vy
RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgd2ViTVBhcnNlckVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX3dlYk1QYXJzZXJFbmFibGVkOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAg
ICAvLyBOZXZlciBpbnN0YW50aWF0ZS4KICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCk7CkBA
IC01ODQsNiArNTg5LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2luY3JlbWVudGFsUERGTG9h
ZGluZ0VuYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNF
KQorICAgIGJvb2wgbV93ZWJNUGFyc2VyRW5hYmxlZCB7IGZhbHNlIH07CisjZW5kaWYKKwogICAg
IGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVzdHJveWVkPFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM+
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVk
aW9UcmFja1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlv
VHJhY2tQcml2YXRlLmgKaW5kZXggN2ZhZTIzZWY1ZGM0Mjk5ZThmMDlmYzQxMmZjMTcxMDI2OGJl
YmMyMS4uYTlmODM2YmQxMTczZTIyZTBhZTgxNGExNzU0MmFhMjNhNDYxNWE0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0
ZUJhc2UuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogI2lmIEVOQUJMRShWSURFTykK
IApAQCAtNTUsNiArNTYsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7
CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5lbmFibGVkQ2hh
bmdlZChlbmFibGVkKTsKKyAgICAgICAgaWYgKG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjaykKKyAg
ICAgICAgICAgIG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjaygqdGhpcywgbV9lbmFibGVkKTsKICAg
ICB9CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KQEAg
LTY0LDYgKzY3LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzQmFja2VkQnlNZWRp
YVN0cmVhbVRyYWNrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHVzaW5nIEVuYWJs
ZWRDaGFuZ2VkQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEF1ZGlvVHJhY2tQcml2YXRlJiwgYm9v
bCBlbmFibGVkKT47CisgICAgdm9pZCBzZXRFbmFibGVkQ2hhbmdlZENhbGxiYWNrKEVuYWJsZWRD
aGFuZ2VkQ2FsbGJhY2smJiBjYWxsYmFjaykgeyBtX2VuYWJsZWRDaGFuZ2VkQ2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKTsgfQorCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29u
c3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkF1ZGlvVHJh
Y2tQcml2YXRlIjsgfQogI2VuZGlmCkBAIC03NCw2ICs4MCw3IEBAIHByb3RlY3RlZDoKIHByaXZh
dGU6CiAgICAgQXVkaW9UcmFja1ByaXZhdGVDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9Owog
ICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2UgfTsKKyAgICBFbmFibGVkQ2hhbmdlZENhbGxiYWNr
IG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJp
dmF0ZS5oCmluZGV4IDcxOGQ4MGUzNDUyYzQ3ZmVlZjQyNjhmMjllM2EyZTg3YmI0ZGNhZDMuLjBj
NDEzYzJkZGY1ZDlkYTJhMTViMTEzNWMwOGU1MTA4NTJiODAyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaApAQCAtMjgs
NiArMjgsNyBAQAogI2lmIEVOQUJMRShWSURFTykKIAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZUJh
c2UuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00OCw2ICs0OSw4IEBAIHB1YmxpYzoKICAgICAgICAgbV9zZWxlY3RlZCA9IHNlbGVjdGVk
OwogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+c2VsZWN0ZWRD
aGFuZ2VkKG1fc2VsZWN0ZWQpOworICAgICAgICBpZiAobV9zZWxlY3RlZENoYW5nZWRDYWxsYmFj
aykKKyAgICAgICAgICAgIG1fc2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2soKnRoaXMsIG1fc2VsZWN0
ZWQpOwogICAgIH0KICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCB7IHJldHVybiBt
X3NlbGVjdGVkOyB9CiAKQEAgLTU4LDEyICs2MSwxNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgY2hh
ciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlZpZGVvVHJhY2tQcml2YXRl
IjsgfQogI2VuZGlmCiAKKyAgICB1c2luZyBTZWxlY3RlZENoYW5nZWRDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoVmlkZW9UcmFja1ByaXZhdGUmLCBib29sIHNlbGVjdGVkKT47CisgICAgdm9pZCBz
ZXRTZWxlY3RlZENoYW5nZWRDYWxsYmFjayhTZWxlY3RlZENoYW5nZWRDYWxsYmFjayYmIGNhbGxi
YWNrKSB7IG1fc2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQor
CisKIHByb3RlY3RlZDoKICAgICBWaWRlb1RyYWNrUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAogcHJp
dmF0ZToKICAgICBWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07
CiAgICAgYm9vbCBtX3NlbGVjdGVkIHsgZmFsc2UgfTsKKyAgICBTZWxlY3RlZENoYW5nZWRDYWxs
YmFjayBtX3NlbGVjdGVkQ2hhbmdlZENhbGxiYWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwCmluZGV4IGMxY2IxYTRkMzU2MTI1ZDk0N2Rl
ZmZjMjdmNTlmY2EwYzliNDE4NDEuLmJjMTM5Nzc5N2JhZGE4YTQ3NTliZjUyZjlhNTQ2M2IyZDY0
MWQ3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAKQEAgLTMzLDkgKzMzLDggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFj
aywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKK0F1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhB
VkFzc2V0VHJhY2sqIHRyYWNrKQogICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbD4odHJhY2spKQotICAgICwgbV9wYXJlbnQocGFyZW50KQogewogICAgIHJl
c2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQpAQCAtNjcsNyArNjYsNiBAQCB2b2lkIEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgQXVkaW9UcmFja1ByaXZhdGVBVkY6OnNldEVuYWJsZWQo
ZW5hYmxlZCk7Ci0gICAgbV9wYXJlbnQtPnRyYWNrRGlkQ2hhbmdlRW5hYmxlZCh0aGlzKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggOWJjNGYyNmMwNzM0OWYxNzc2ZjYwYmUw
ZGQxYzJhYmNkN2IzN2Q2Yi4uMTQ1NmMwMTZiYWUwM2I4NzhiNTBiZjU5OTI0ZmI0ZDlmMzUzMDE4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOwogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGVBVkYgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKQogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+
IGNyZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyog
cGFyZW50KQorICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM+IGNyZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2ssIHBh
cmVudCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyh0cmFjaykpOwogICAgIH0KIAogICAgIHZvaWQgc2V0RW5hYmxlZChi
b29sKSBmaW5hbDsKQEAgLTUyLDEyICs1MiwxMSBAQCBwdWJsaWM6CiAgICAgaW50IHRyYWNrSUQo
KSB7IHJldHVybiBtX3RyYWNrSUQ7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqLCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQyogcGFyZW50KTsKKyAgICBleHBsaWNpdCBBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqKTsKICAgICAKICAgICB2b2lkIHJlc2V0UHJv
cGVydGllc0Zyb21UcmFjaygpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFWVHJhY2tQcml2YXRl
QVZGT2JqQ0ltcGw+IG1faW1wbDsKLSAgICBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogbV9w
YXJlbnQ7CiAgICAgaW50IG1fdHJhY2tJRDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5t
bQppbmRleCA2Njg5OTEwMWUxZmM1ODQwNzc3N2I2OWQ2MzkxOTE1ZmQ5YWRkZDIxLi5iZDY4NWQ1
NGMyM2M1N2JhM2ZiNmFiMGFhMjMxNmY2ODkzZWYxODMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCkBAIC0yNTMsMzAgKzI1Myw3IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUoY29uCiAgICAg
aWYgKCFwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIAotICAgIFN0cmluZyBleHRlbmRlZFR5
cGUgPSBwYXJhbWV0ZXJzLnR5cGUucmF3KCk7Ci0gICAgU3RyaW5nIG91dHB1dENvZGVjcyA9IHBh
cmFtZXRlcnMudHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsK
LSAgICBpZiAoIW91dHB1dENvZGVjcy5pc0VtcHR5KCkgJiYgW1BBTDo6Z2V0QVZTdHJlYW1EYXRh
UGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dE1JTUVDb2Rl
Y1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFyYW1ldGVyOildKSB7Ci0gICAgICAgIG91dHB1
dENvZGVjcyA9IFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgb3V0cHV0TUlNRUNv
ZGVjUGFyYW1ldGVyRm9ySW5wdXRNSU1FQ29kZWNQYXJhbWV0ZXI6b3V0cHV0Q29kZWNzXTsKLSAg
ICAgICAgZXh0ZW5kZWRUeXBlID0gbWFrZVN0cmluZyhwYXJhbWV0ZXJzLnR5cGUuY29udGFpbmVy
VHlwZSgpLCAiOyBjb2RlY3M9XCIiLCBvdXRwdXRDb2RlY3MsICJcIiIpOwotICAgIH0KLQotICAg
IGF1dG8gc3VwcG9ydGVkID0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0
ZWQ7Ci0gICAgYXV0byYgc3RyZWFtRGF0YVBhcnNlckNhY2hlID0gQVZTdHJlYW1EYXRhUGFyc2Vy
TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKHN0cmVhbURhdGFQYXJzZXJDYWNo
ZS5pc0F2YWlsYWJsZSgpKQotICAgICAgICBzdXBwb3J0ZWQgPSBzdHJlYW1EYXRhUGFyc2VyQ2Fj
aGUuY2FuRGVjb2RlVHlwZShleHRlbmRlZFR5cGUpOwotICAgIGVsc2UgewotICAgICAgICBhdXRv
JiBhc3NldENhY2hlID0gQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpOwotICAgICAg
ICBpZiAoYXNzZXRDYWNoZS5pc0F2YWlsYWJsZSgpKQotICAgICAgICAgICAgc3VwcG9ydGVkID0g
YXNzZXRDYWNoZS5jYW5EZWNvZGVUeXBlKGV4dGVuZGVkVHlwZSk7Ci0gICAgfQotCi0gICAgaWYg
KHN1cHBvcnRlZCAhPSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZCkKLSAg
ICAgICAgcmV0dXJuIHN1cHBvcnRlZDsKLQotICAgIGlmICghY29udGVudFR5cGVNZWV0c0hhcmR3
YXJlRGVjb2RlUmVxdWlyZW1lbnRzKHBhcmFtZXRlcnMudHlwZSwgcGFyYW1ldGVycy5jb250ZW50
VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQpKQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7Ci0KLSAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQ7CisgICAgcmV0dXJuIFNvdXJjZUJ1ZmZlclBh
cnNlcjo6aXNDb250ZW50VHlwZVN1cHBvcnRlZChwYXJhbWV0ZXJzLnR5cGUpID8gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
OjpJc05vdFN1cHBvcnRlZDsKIH0KIAogI3ByYWdtYSBtYXJrIC0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNl
UHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDgyNzhlMDZh
NTEyMjk3YzdlZDJiMjY5MGZmZTBjYjQyODg4NWZiZjYuLjI5MzIyNzkzOTEwZWE1N2YxODFjOTIw
MTdkM2NmMzY1Nzc1MjEwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCAiTG9n
Z2luZy5oIgogI2ltcG9ydCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgi
CiAjaW1wb3J0ICJNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaCIKKyNpbXBvcnQgIlNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakMuaCIKICNpbXBvcnQgIlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
LmgiCiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9BbGdvcml0aG1zLmg+
CkBAIC04NSw3ICs4NiwxMSBAQCBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBNZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgQwogICAgIGlmIChNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJz
KSA9PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZCkKICAgICAgICAg
cmV0dXJuIE5vdFN1cHBvcnRlZDsKIAotICAgIGF1dG8gbmV3U291cmNlQnVmZmVyID0gU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSh0aGlzKTsKKyAgICBhdXRvIHBhcnNlciA9IFNv
dXJjZUJ1ZmZlclBhcnNlcjo6Y3JlYXRlKGNvbnRlbnRUeXBlKTsKKyAgICBpZiAoIXBhcnNlcikK
KyAgICAgICAgcmV0dXJuIE5vdFN1cHBvcnRlZDsKKworICAgIGF1dG8gbmV3U291cmNlQnVmZmVy
ID0gU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSh0aGlzLCBwYXJzZXIucmVsZWFz
ZU5vbk51bGwoKSk7CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBuZXdTb3VyY2VC
dWZmZXItPnNldENETUluc3RhbmNlKG1fY2RtSW5zdGFuY2UuZ2V0KCkpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMGZkMDViZDNjMWYwYWFmZDk0NjlhMTFkMjk5MjljNmJiOTgyMmZjNgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaApAQCAtMCwwICsxLDc5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5j
bHVkZSAiU291cmNlQnVmZmVyUGFyc2VyLmgiCisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgor
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK09CSkNfQ0xBU1MgQVZBc3NldDsKK09CSkNfQ0xB
U1MgQVZTdHJlYW1EYXRhUGFyc2VyOworT0JKQ19DTEFTUyBOU0RhdGE7CitPQkpDX0NMQVNTIE5T
RXJyb3I7CitPQkpDX0NMQVNTIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyOworCit0eXBl
ZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQyBmaW5h
bCA6IHB1YmxpYyBTb3VyY2VCdWZmZXJQYXJzZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDPiB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgaXNDb250
ZW50VHlwZVN1cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYpOworCisgICAgU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQygpOworICAgIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMo
KTsKKworICAgIEFWU3RyZWFtRGF0YVBhcnNlciogcGFyc2VyKCkgY29uc3QgeyByZXR1cm4gbV9w
YXJzZXIuZ2V0KCk7IH0KKworICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIFR5cGU6OkFW
Rk9iakM7IH0KKyAgICB2b2lkIGFwcGVuZERhdGEoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYsIEFw
cGVuZEZsYWdzID0gQXBwZW5kRmxhZ3M6Ok5vbmUpIGZpbmFsOworICAgIHZvaWQgZmx1c2hQZW5k
aW5nTWVkaWFEYXRhKCkgZmluYWw7CisgICAgdm9pZCBzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRh
Rm9yVHJhY2tJRChib29sLCBpbnQzMl90KSBmaW5hbDsKKyAgICBib29sIHNob3VsZFByb3ZpZGVN
ZWRpYWRhdGFGb3JUcmFja0lEKGludDMyX3QpIGZpbmFsOworICAgIHZvaWQgcmVzZXRQYXJzZXJT
dGF0ZSgpIGZpbmFsOworCisgICAgdm9pZCBkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNz
ZXQqKTsKKyAgICB2b2lkIGRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcihOU0Vycm9y
Kik7CisgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChpbnQzMl90IHRyYWNr
SUQsIENNU2FtcGxlQnVmZmVyUmVmLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgdW5zaWduZWQg
ZmxhZ3MpOworICAgIHZvaWQgd2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YUZvclRyYWNrSUQoaW50MzJfdCB0cmFja0lEKTsKKyAgICB2b2lkIGRpZFByb3ZpZGVD
b250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoTlNEYXRhKiwgaW50
MzJfdCB0cmFja0lEKTsKKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8QVZTdHJlYW1EYXRhUGFy
c2VyPiBtX3BhcnNlcjsKKyAgICBSZXRhaW5QdHI8V2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVu
ZXI+IG1fZGVsZWdhdGU7CisgICAgYm9vbCBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlh
bGl6YXRpb25TZWdtZW50IHsgZmFsc2UgfTsKKyAgICBib29sIG1fcGFyc2VyU3RhdGVXYXNSZXNl
dCB7IGZhbHNlIH07Cit9OworCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2Vi
Q29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQykKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyJiBwYXJzZXIpIHsgcmV0dXJuIHBhcnNl
ci50eXBlKCkgPT0gV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpUeXBlOjpBVkZPYmpDOyB9
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjg1MDU1MDk5Y2ZkZDJmMzIwOWQ5NjFhMmIyNjgwYmZi
ZmY0NmU5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTAs
MCArMSwzMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCIKKworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisK
KyNpbXBvcnQgIkFWQXNzZXRNSU1FVHlwZUNhY2hlLmgiCisjaW1wb3J0ICJBVkFzc2V0VHJhY2tV
dGlsaXRpZXMuaCIKKyNpbXBvcnQgIkFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCIK
KyNpbXBvcnQgIkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgiCisjaW1wb3J0
ICJGb3VyQ0MuaCIKKyNpbXBvcnQgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgiCisj
aW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJNZWRpYURlc2NyaXB0aW9uLmgiCisjaW1wb3J0
ICJNZWRpYVNhbXBsZS5oIgorI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCisjaW1wb3J0
ICJOb3RJbXBsZW1lbnRlZC5oIgorI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCisjaW1wb3J0ICJU
aW1lUmFuZ2VzLmgiCisjaW1wb3J0ICJWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5oIgorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQXNzZXRUcmFjay5oPgorI2ltcG9ydCA8SmF2
YVNjcmlwdENvcmUvVHlwZWRBcnJheUlubGluZXMuaD4KKyNpbXBvcnQgPG9iamMvcnVudGltZS5o
PgorI2ltcG9ydCA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KKyNp
bXBvcnQgPHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmg+CisjaW1wb3J0IDx3dGYvQmxv
Y2tPYmpDRXhjZXB0aW9ucy5oPgorCisjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsu
aD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgorCisjcHJhZ21h
IG1hcmsgLQorI3ByYWdtYSBtYXJrIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyCisKK0Bp
bnRlcmZhY2UgV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgOiBOU09iamVjdDxBVlN0cmVh
bURhdGFQYXJzZXJPdXRwdXRIYW5kbGluZz4geworICAgIFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMqIF9wYXJlbnQ7CisgICAgQVZTdHJlYW1EYXRhUGFyc2VyKiBfcGFyc2VyOwor
fQorQHByb3BlcnR5IChhc3NpZ24pIFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMq
IHBhcmVudDsKKy0gKGlkKWluaXRXaXRoUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIqKXBhcnNl
ciBwYXJlbnQ6KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMqKXBhcmVudDsKK0Bl
bmQKKworQGltcGxlbWVudGF0aW9uIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyCistIChp
ZClpbml0V2l0aFBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyKilwYXJzZXIgcGFyZW50OihXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKilwYXJlbnQKK3sKKyAgICBzZWxmID0gW3N1
cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIEFT
U0VSVChwYXJlbnQpOworICAgIF9wYXJlbnQgPSBwYXJlbnQ7CisgICAgX3BhcnNlciA9IHBhcnNl
cjsKKyAgICBbX3BhcnNlciBzZXREZWxlZ2F0ZTpzZWxmXTsKKyAgICByZXR1cm4gc2VsZjsKK30K
KworQHN5bnRoZXNpemUgcGFyZW50PV9wYXJlbnQ7CisKKy0gKHZvaWQpZGVhbGxvYworeworICAg
IFtfcGFyc2VyIHNldERlbGVnYXRlOm5pbF07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCist
ICh2b2lkKWludmFsaWRhdGUKK3sKKyAgICBbX3BhcnNlciBzZXREZWxlZ2F0ZTpuaWxdOworICAg
IF9wYXJzZXIgPSBudWxscHRyOworfQorCistICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3Ry
ZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3Nl
dDooQVZBc3NldCAqKWFzc2V0Cit7CisgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2Vy
LCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOworICAgIF9wYXJlbnQtPmRpZFBhcnNlU3Ry
ZWFtRGF0YUFzQXNzZXQoYXNzZXQpOworfQorCistICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFW
U3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkUGFyc2VTdHJlYW1EYXRhQXNB
c3NldDooQVZBc3NldCAqKWFzc2V0IHdpdGhEaXNjb250aW51aXR5OihCT09MKWRpc2NvbnRpbnVp
dHkKK3sKKyAgICBVTlVTRURfUEFSQU0oZGlzY29udGludWl0eSk7CisgICAgQVNTRVJUX1VOVVNF
RChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOworICAgIF9w
YXJlbnQtPmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoYXNzZXQpOworfQorCistICh2b2lkKXN0
cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlk
RmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBB
U1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNl
cik7CisgICAgX3BhcmVudC0+ZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yKGVycm9y
KTsKK30KKworLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilz
dHJlYW1EYXRhUGFyc2VyIGRpZFByb3ZpZGVNZWRpYURhdGE6KENNU2FtcGxlQnVmZmVyUmVmKXNh
bXBsZSBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQgbWVkaWFUeXBlOihO
U1N0cmluZyAqKW5zTWVkaWFUeXBlIGZsYWdzOihBVlN0cmVhbURhdGFQYXJzZXJPdXRwdXRNZWRp
YURhdGFGbGFncylmbGFncworeworICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwg
c3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKKyAgICBfcGFyZW50LT5kaWRQcm92aWRlTWVk
aWFEYXRhRm9yVHJhY2tJRCh0cmFja0lELCBzYW1wbGUsIG5zTWVkaWFUeXBlLCBmbGFncyk7Cit9
CisKK0FMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCistICh2b2lkKXN0cmVh
bURhdGFQYXJzZXJXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
OihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGZvclRyYWNrSUQ6KENNUGVy
c2lzdGVudFRyYWNrSUQpdHJhY2tJRAorQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5ECit7CisgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFy
c2VyID09IF9wYXJzZXIpOworICAgIF9wYXJlbnQtPndpbGxQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHRyYWNrSUQpOworfQorCitBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgorLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihB
VlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTooTlNEYXRhICopaW5pdERhdGEgZm9yVHJhY2tJRDoo
Q01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lECitBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURh
dGFQYXJzZXIgPT0gX3BhcnNlcik7CisgICAgX3BhcmVudC0+ZGlkUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChpbml0RGF0YSwgdHJhY2tJRCk7Cit9
CitAZW5kCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI3ByYWdtYSBtYXJrIC0KKyNwcmFnbWEg
bWFyayBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQworCitjbGFzcyBNZWRpYURlc2NyaXB0aW9uQVZG
T2JqQyBmaW5hbCA6IHB1YmxpYyBNZWRpYURlc2NyaXB0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrKiB0cmFj
aykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyh0cmFjaykp
OyB9CisgICAgdmlydHVhbCB+TWVkaWFEZXNjcmlwdGlvbkFWRk9iakMoKSB7IH0KKworICAgIGJv
b2wgaXNWaWRlbygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNWaWRlbzsgfQorICAgIGJv
b2wgaXNBdWRpbygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNBdWRpbzsgfQorICAgIGJv
b2wgaXNUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1RleHQ7IH0KKyAgICBBdG9t
U3RyaW5nIGNvZGVjKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIC8vIEF0b21TdHJp
bmdzIGNhbiBvbmx5IGJlIGRlc3Ryb3llZCBmcm9tIHRoZSBzYW1lIHRocmVhZCB0aGV5J3JlCisg
ICAgICAgIC8vIGNyZWF0ZWQgaW4uIFNpbmNlIHRoaXMgc3RydWN0dXJlIGlzIGNyZWF0ZWQgaW4g
YSBwYXJzZXIgdGhyZWFkCisgICAgICAgIC8vIG9ubHkgY3JlYXRlIHRoZSBBdG9tU3RyaW5nIHRo
ZSBmaXJzdCB0aW1lIHRoaXMgZnVuY3Rpb24gaXMgYWNjZXNzZWQKKyAgICAgICAgLy8gd2hpY2gg
aXMgcHJlc3VtYWJseSBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgICAgIGlmICghbV9jb2RlYykKKyAgICAgICAgICAgIG1fY29kZWMgPSBB
dG9tU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigmbV9vcmlnaW5hbENvZGVj
KSwgNCk7CisgICAgICAgIHJldHVybiAqbV9jb2RlYzsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
TWVkaWFEZXNjcmlwdGlvbkFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaykKKyAgICAgICAgOiBt
X2lzVmlkZW8oW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3Rlcmlz
dGljVmlzdWFsXSkKKyAgICAgICAgLCBtX2lzQXVkaW8oW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVy
aXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJsZV0pCisgICAgICAgICwgbV9pc1RleHQo
W3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJs
ZV0pCisgICAgeworICAgICAgICBOU0FycmF5KiBmb3JtYXREZXNjcmlwdGlvbnMgPSBbdHJhY2sg
Zm9ybWF0RGVzY3JpcHRpb25zXTsKKyAgICAgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNj
cmlwdGlvbiA9IFtmb3JtYXREZXNjcmlwdGlvbnMgY291bnRdID8gKF9fYnJpZGdlIENNRm9ybWF0
RGVzY3JpcHRpb25SZWYpW2Zvcm1hdERlc2NyaXB0aW9ucyBvYmplY3RBdEluZGV4OjBdIDogMDsK
KyAgICAgICAgaWYgKGRlc2NyaXB0aW9uKSB7CisgICAgICAgICAgICBtX29yaWdpbmFsQ29kZWMg
PSBQQUw6OnNvZnRMaW5rX0NvcmVNZWRpYV9DTUZvcm1hdERlc2NyaXB0aW9uR2V0TWVkaWFTdWJU
eXBlKGRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgIENGU3RyaW5nUmVmIG9yaWdpbmFsRm9ybWF0
S2V5ID0gUEFMOjpjYW5Mb2FkX0NvcmVNZWRpYV9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lv
bl9Qcm90ZWN0ZWRDb250ZW50T3JpZ2luYWxGb3JtYXQoKSA/IFBBTDo6Z2V0X0NvcmVNZWRpYV9r
Q01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9Qcm90ZWN0ZWRDb250ZW50T3JpZ2luYWxGb3Jt
YXQoKSA6IENGU1RSKCJDb21tb25FbmNyeXB0aW9uT3JpZ2luYWxGb3JtYXQiKTsKKyAgICAgICAg
ICAgIENGVHlwZVJlZiBvcmlnaW5hbEZvcm1hdCA9IENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRl
bnNpb24oZGVzY3JpcHRpb24sIG9yaWdpbmFsRm9ybWF0S2V5KTsKKyAgICAgICAgICAgIGlmIChv
cmlnaW5hbEZvcm1hdCAmJiBDRkdldFR5cGVJRChvcmlnaW5hbEZvcm1hdCkgPT0gQ0ZOdW1iZXJH
ZXRUeXBlSUQoKSkKKyAgICAgICAgICAgICAgICBDRk51bWJlckdldFZhbHVlKChDRk51bWJlclJl
ZilvcmlnaW5hbEZvcm1hdCwga0NGTnVtYmVyU0ludDMyVHlwZSwgJm1fb3JpZ2luYWxDb2RlYyk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBGb3VyQ2hhckNvZGUgbV9vcmlnaW5hbENvZGVjOwor
ICAgIG11dGFibGUgT3B0aW9uYWw8QXRvbVN0cmluZz4gbV9jb2RlYzsKKyAgICBib29sIG1faXNW
aWRlbzsKKyAgICBib29sIG1faXNBdWRpbzsKKyAgICBib29sIG1faXNUZXh0OworfTsKKworI3By
YWdtYSBtYXJrIC0KKyNwcmFnbWEgbWFyayBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDCisKK2Jv
b2wgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRlZChjb25z
dCBDb250ZW50VHlwZSYgdHlwZSkKK3sKKyAgICBTdHJpbmcgZXh0ZW5kZWRUeXBlID0gdHlwZS5y
YXcoKTsKKyAgICBTdHJpbmcgb3V0cHV0Q29kZWNzID0gdHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5
cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsKKyAgICBpZiAoIW91dHB1dENvZGVjcy5pc0VtcHR5KCkg
JiYgW1BBTDo6Z2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKG91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFyYW1l
dGVyOildKSB7CisgICAgICAgIG91dHB1dENvZGVjcyA9IFtQQUw6OmdldEFWU3RyZWFtRGF0YVBh
cnNlckNsYXNzKCkgb3V0cHV0TUlNRUNvZGVjUGFyYW1ldGVyRm9ySW5wdXRNSU1FQ29kZWNQYXJh
bWV0ZXI6b3V0cHV0Q29kZWNzXTsKKyAgICAgICAgZXh0ZW5kZWRUeXBlID0gbWFrZVN0cmluZyh0
eXBlLmNvbnRhaW5lclR5cGUoKSwgIjsgY29kZWNzPVwiIiwgb3V0cHV0Q29kZWNzLCAiXCIiKTsK
KyAgICB9CisKKyAgICBhdXRvJiBzdHJlYW1EYXRhUGFyc2VyQ2FjaGUgPSBBVlN0cmVhbURhdGFQ
YXJzZXJNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKTsKKyAgICBpZiAoc3RyZWFtRGF0YVBhcnNl
ckNhY2hlLmlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBzdHJlYW1EYXRhUGFyc2VyQ2Fj
aGUuY2FuRGVjb2RlVHlwZShleHRlbmRlZFR5cGUpID09IE1lZGlhUGxheWVyRW51bXM6OlN1cHBv
cnRzVHlwZTo6SXNTdXBwb3J0ZWQ7CisKKyAgICBhdXRvJiBhc3NldENhY2hlID0gQVZBc3NldE1J
TUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpOworICAgIGlmIChhc3NldENhY2hlLmlzQXZhaWxhYmxl
KCkpCisgICAgICAgIHJldHVybiBhc3NldENhY2hlLmNhbkRlY29kZVR5cGUoZXh0ZW5kZWRUeXBl
KSA9PSBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkOworCisgICAg
cmV0dXJuIGZhbHNlOworfQorCitTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDKCkKKyAgICA6IG1fcGFyc2VyKGFkb3B0TlMoW1BBTDo6YWxsb2NBVlN0
cmVhbURhdGFQYXJzZXJJbnN0YW5jZSgpIGluaXRdKSkKKyAgICAsIG1fZGVsZWdhdGUoYWRvcHRO
UyhbW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aFBhcnNlcjpt
X3BhcnNlci5nZXQoKSBwYXJlbnQ6dGhpc10pKQoreworfQorCitTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCit7CisgICAgbV9kZWxlZ2F0ZS5n
ZXQoKS5wYXJlbnQgPSBudWxscHRyOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6OmFwcGVuZERhdGEoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgZGF0YSwgQXBwZW5kRmxhZ3Mg
ZmxhZ3MpCit7CisgICAgYXV0byBzaGFyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShkYXRhKSk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWREYXRhLT5jcmVhdGVOU0RhdGEo
KTsKKyAgICBpZiAobV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHx8IGZsYWdzID09IEFwcGVuZEZsYWdz
OjpEaXNjb250aW51aXR5KQorICAgICAgICBbbV9wYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0Rh
dGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3RyZWFtRGF0YVBhcnNlclN0cmVhbURhdGFEaXNjb250aW51
aXR5XTsKKyAgICBlbHNlCisgICAgICAgIFttX3BhcnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0
YS5nZXQoKV07CisgICAgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0ID0gZmFsc2U7Cit9CisKK3ZvaWQg
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKCkKK3sKKyAg
ICBbbV9wYXJzZXIgcHJvdmlkZVBlbmRpbmdNZWRpYURhdGFdOworfQorCit2b2lkIFNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakM6OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGJv
b2wgc2hvdWxkLCBpbnQzMl90IHRyYWNrSUQpCit7CisgICAgW21fcGFyc2VyIHNldFNob3VsZFBy
b3ZpZGVNZWRpYURhdGE6c2hvdWxkIGZvclRyYWNrSUQ6dHJhY2tJRF07Cit9CisKK2Jvb2wgU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6c2hvdWxkUHJvdmlkZU1lZGlhZGF0YUZvclRyYWNrSUQo
aW50MzJfdCB0cmFja0lEKQoreworICAgIHJldHVybiBbbV9wYXJzZXIgc2hvdWxkUHJvdmlkZU1l
ZGlhRGF0YUZvclRyYWNrSUQ6dHJhY2tJRF07Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQzo6cmVzZXRQYXJzZXJTdGF0ZSgpCit7CisgICAgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0
ID0gdHJ1ZTsKKyAgICBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdt
ZW50ID0gdHJ1ZTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQYXJz
ZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQoreworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYXNzZXQgPSByZXRhaW5QdHIo
YXNzZXQpXSB7CisgICAgICAgIG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlv
blNlZ21lbnQgPSBmYWxzZTsKKworICAgICAgICBpZiAoIW1fZGlkUGFyc2VJbml0aWFsaXphdGlv
bkRhdGFDYWxsYmFjaykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBJbml0aWFsaXph
dGlvblNlZ21lbnQgc2VnbWVudDsKKworICAgICAgICBpZiAoW2Fzc2V0IHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Iob3ZlcmFsbER1cmF0aW9uSGludCldKQorICAgICAgICAgICAgc2VnbWVu
dC5kdXJhdGlvbiA9IFBBTDo6dG9NZWRpYVRpbWUoW2Fzc2V0IG92ZXJhbGxEdXJhdGlvbkhpbnRd
KTsKKworICAgICAgICBpZiAoc2VnbWVudC5kdXJhdGlvbi5pc0ludmFsaWQoKSB8fCBzZWdtZW50
LmR1cmF0aW9uID09IE1lZGlhVGltZTo6emVyb1RpbWUoKSkKKyAgICAgICAgICAgIHNlZ21lbnQu
ZHVyYXRpb24gPSBQQUw6OnRvTWVkaWFUaW1lKFthc3NldCBkdXJhdGlvbl0pOworCisgICAgICAg
IGZvciAoQVZBc3NldFRyYWNrKiB0cmFjayBpbiBbYXNzZXQgdHJhY2tzXSkgeworICAgICAgICAg
ICAgaWYgKFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3Rp
Y0xlZ2libGVdKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUUoMTI1MTYxKTogSGFuZGxlIGlu
LWJhbmQgdGV4dCB0cmFja3MuCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1l
ZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWxdKSB7CisgICAgICAgICAgICAgICAgU291cmNlQnVmZmVy
UHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OjpWaWRlb1RyYWNrSW5mb3JtYXRp
b24gaW5mbzsKKyAgICAgICAgICAgICAgICBhdXRvIHZpZGVvVHJhY2sgPSBWaWRlb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKKyAgICAgICAgICAgICAgICBp
bmZvLnRyYWNrID0gdmlkZW9UcmFjay5jb3B5UmVmKCk7CisgICAgICAgICAgICAgICAgaW5mby5k
ZXNjcmlwdGlvbiA9IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDOjpjcmVhdGUodHJhY2spOworICAg
ICAgICAgICAgICAgIHNlZ21lbnQudmlkZW9UcmFja3MuYXBwZW5kKGluZm8pOworICAgICAgICAg
ICAgfSBlbHNlIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFj
dGVyaXN0aWNBdWRpYmxlXSkgeworICAgICAgICAgICAgICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDo6QXVkaW9UcmFja0luZm9ybWF0aW9uIGluZm87
CisgICAgICAgICAgICAgICAgYXV0byBhdWRpb1RyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjayk7CisgICAgICAgICAgICAgICAgaW5mby50cmFj
ayA9IGF1ZGlvVHJhY2suY29weVJlZigpOworICAgICAgICAgICAgICAgIGluZm8uZGVzY3JpcHRp
b24gPSBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKKyAgICAgICAgICAg
ICAgICBzZWdtZW50LmF1ZGlvVHJhY2tzLmFwcGVuZChpbmZvKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gRklYTUUoMTI1MTYxKSAgICA6IEFkZCBUZXh0VHJhY2sgc3VwcG9ydAor
ICAgICAgICB9CisKKyAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNr
KFdURk1vdmUoc2VnbWVudCkpOworICAgIH0pOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakM6OmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcihOU0Vycm9yKiBlcnJv
cikKK3sKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigq
dGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKV0geworICAgICAgICBpZiAobV9kaWRFbmNv
dW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjaykKKyAgICAgICAgICAgIG1fZGlkRW5jb3Vu
dGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2soZXJyb3IuZ2V0KCkuY29kZSk7CisgICAgfSk7
Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0
YUZvclRyYWNrSUQoaW50MzJfdCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZm
ZXIsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlLCB1bnNpZ25lZCBmbGFncykKK3sKKyAgICBVTlVT
RURfUEFSQU0oZmxhZ3MpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHN0cm9uZ1RoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgc2FtcGxlQnVmZmVyID0gcmV0YWluUHRyKHNhbXBsZUJ1ZmZlciks
IHRyYWNrSUQsIG1lZGlhVHlwZSA9IG1lZGlhVHlwZV0geworICAgICAgICBpZiAoIW1fZGlkUHJv
dmlkZU1lZGlhRGF0YUNhbGxiYWNrKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlm
IChtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50KQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gbWVkaWFTYW1wbGUgPSBNZWRpYVNhbXBsZUFW
Rk9iakM6OmNyZWF0ZShzYW1wbGVCdWZmZXIuZ2V0KCksIHRyYWNrSUQpOworCisgICAgICAgIGlm
IChtZWRpYVNhbXBsZS0+aXNIb21vZ2VuZW91cygpKSB7CisgICAgICAgICAgICBtX2RpZFByb3Zp
ZGVNZWRpYURhdGFDYWxsYmFjayhXVEZNb3ZlKG1lZGlhU2FtcGxlKSwgdHJhY2tJRCwgbWVkaWFU
eXBlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoYXV0
byYgc2FtcGxlIDogbWVkaWFTYW1wbGUtPmRpdmlkZUludG9Ib21vZ2VuZW91c1NhbXBsZXMoKSkK
KyAgICAgICAgICAgIG1fZGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKFdURk1vdmUoc2FtcGxl
KSwgdHJhY2tJRCwgbWVkaWFUeXBlKTsKKyAgICB9KTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25E
YXRhRm9yVHJhY2tJRChpbnQzMl90IHRyYWNrSUQpCit7CisgICAgbV93aWxsUHJvdmlkZUNvbnRl
bnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrKHRyYWNrSUQp
OworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoTlNEYXRhKiBuc0luaXREYXRh
LCBpbnQzMl90IHRyYWNrSUQpCit7CisgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNy
ZWF0ZShuc0luaXREYXRhLmxlbmd0aCk7CisgICAgW25zSW5pdERhdGEgZ2V0Qnl0ZXM6aW5pdERh
dGEtPmRhdGEoKSBsZW5ndGg6aW5pdERhdGEtPmxlbmd0aCgpXTsKKworICAgIG1fZGlkUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrKFdU
Rk1vdmUoaW5pdERhdGEpLCB0cmFja0lEKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQy5oCmluZGV4IGRmYTEzNGI0ZDY4ZmRiNzQ3MzQzNzhkOWY5ZGQzYmQ4NDFm
MzNkNjUuLjZkMTk0YWIxNDBhOGJkMzQ5M2JlYjNhZGRmMzI4M2QzYjhlNzVmZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApA
QCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYgVVNFKEFWRk9V
TkRBVElPTikKIAorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlci5oIgogI2luY2x1ZGUgIlNv
dXJjZUJ1ZmZlclByaXZhdGUuaCIKICNpbmNsdWRlIDxkaXNwYXRjaC9ncm91cC5oPgogI2luY2x1
ZGUgPHd0Zi9Cb3guaD4KQEAgLTM4LDE4ICszOSwxNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
I2luY2x1ZGUgPHd0Zi9XVEZTZW1hcGhvcmUuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9C
aW5hcnlTZW1hcGhvcmUuaD4KIAotT0JKQ19DTEFTUyBBVkFzc2V0OwogT0JKQ19DTEFTUyBBVlN0
cmVhbURhdGFQYXJzZXI7CiBPQkpDX0NMQVNTIEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlcjsK
IE9CSkNfQ0xBU1MgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7CiBPQkpDX0NMQVNTIE5TRGF0
YTsKIE9CSkNfQ0xBU1MgTlNFcnJvcjsKIE9CSkNfQ0xBU1MgTlNPYmplY3Q7Ci1PQkpDX0NMQVNT
IFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyOwogT0JKQ19DTEFTUyBXZWJBVlNhbXBsZUJ1
ZmZlckVycm9yTGlzdGVuZXI7CiAKIHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVy
ICpDTVNhbXBsZUJ1ZmZlclJlZjsKQEAgLTg2LDM0ICs4NiwyNyBAQCBjbGFzcyBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQyBmaW5hbAogI2VuZGlmCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gY3JlYXRlKE1lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMqKTsKKyAgICBzdGF0aWMgUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBjcmVh
dGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyosIFJlZjxTb3VyY2VCdWZmZXJQYXJzZXI+JiYp
OwogICAgIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKCk7CiAKICAgICB2b2lk
IGNsZWFyTWVkaWFTb3VyY2UoKSB7IG1fbWVkaWFTb3VyY2UgPSBudWxscHRyOyB9CiAKLSAgICAv
LyBBVlN0cmVhbURhdGFQYXJzZXIgZGVsZWdhdGUgbWV0aG9kcwotICAgIHZvaWQgZGlkUGFyc2VT
dHJlYW1EYXRhQXNBc3NldChBVkFzc2V0Kik7Ci0gICAgdm9pZCBkaWRGYWlsVG9QYXJzZVN0cmVh
bURhdGFXaXRoRXJyb3IoTlNFcnJvciopOwotICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZv
clRyYWNrSUQoaW50IHRyYWNrSUQsIENNU2FtcGxlQnVmZmVyUmVmLCBjb25zdCBTdHJpbmcmIG1l
ZGlhVHlwZSwgdW5zaWduZWQgZmxhZ3MpOwotICAgIHZvaWQgZGlkUmVhY2hFbmRPZlRyYWNrV2l0
aFRyYWNrSUQoaW50IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKLSAgICB2b2lk
IHdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lE
KGludCB0cmFja0lEKTsKLSAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRp
YWxpemF0aW9uRGF0YUZvclRyYWNrSUQoTlNEYXRhKiwgaW50IHRyYWNrSUQsIEJveDxCaW5hcnlT
ZW1hcGhvcmU+KTsKLQotICAgIGJvb2wgcHJvY2Vzc0NvZGVkRnJhbWUoaW50IHRyYWNrSUQsIENN
U2FtcGxlQnVmZmVyUmVmLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CisgICAgdm9pZCB3aWxs
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChpbnQz
Ml90IHRyYWNrSUQpOworICAgIHZvaWQgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlh
bGl6YXRpb25EYXRhRm9yVHJhY2tJRChSZWY8VWludDhBcnJheT4mJiwgaW50MzJfdCB0cmFja0lE
LCBCb3g8QmluYXJ5U2VtYXBob3JlPik7CiAKICAgICBib29sIGhhc1ZpZGVvKCkgY29uc3Q7CiAg
ICAgYm9vbCBoYXNTZWxlY3RlZFZpZGVvKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNBdWRpbygpIGNv
bnN0OwogCi0gICAgdm9pZCB0cmFja0RpZENoYW5nZUVuYWJsZWQoVmlkZW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMqKTsKLSAgICB2b2lkIHRyYWNrRGlkQ2hhbmdlRW5hYmxlZChBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyopOworICAgIHZvaWQgdHJhY2tEaWRDaGFu
Z2VTZWxlY3RlZChWaWRlb1RyYWNrUHJpdmF0ZSYsIGJvb2wgc2VsZWN0ZWQpOworICAgIHZvaWQg
dHJhY2tEaWRDaGFuZ2VFbmFibGVkKEF1ZGlvVHJhY2tQcml2YXRlJiwgYm9vbCBlbmFibGVkKTsK
IAogICAgIHZvaWQgd2lsbFNlZWsoKTsKICAgICBNZWRpYVRpbWUgZmFzdFNlZWtUaW1lRm9yTWVk
aWFUaW1lKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVUaHJlc2hv
bGQsIGNvbnN0IE1lZGlhVGltZSYgcG9zaXRpdmVUaHJlc2hvbGQpOwogICAgIEZsb2F0U2l6ZSBu
YXR1cmFsU2l6ZSgpOwogCiAgICAgaW50IHByb3RlY3RlZFRyYWNrSUQoKSBjb25zdCB7IHJldHVy
biBtX3Byb3RlY3RlZFRyYWNrSUQ7IH0KLSAgICBBVlN0cmVhbURhdGFQYXJzZXIqIHBhcnNlcigp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyLmdldCgpOyB9CisgICAgQVZTdHJlYW1EYXRhUGFyc2Vy
KiBwYXJzZXIoKSBjb25zdDsKICAgICB2b2lkIHNldENETVNlc3Npb24oQ0RNU2Vzc2lvbk1lZGlh
U291cmNlQVZGT2JqQyopOwogICAgIHZvaWQgc2V0Q0RNSW5zdGFuY2UoQ0RNSW5zdGFuY2UqKTsK
ICAgICB2b2lkIGF0dGVtcHRUb0RlY3J5cHQoKTsKQEAgLTE0OCw3ICsxNDEsMTIgQEAgcHVibGlj
OgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyopOworICAgIGV4cGxpY2l0IFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqLCBSZWY8U291cmNl
QnVmZmVyUGFyc2VyPiYmKTsKKworICAgIHVzaW5nIEluaXRpYWxpemF0aW9uU2VnbWVudCA9IFNv
dXJjZUJ1ZmZlclBhcnNlcjo6SW5pdGlhbGl6YXRpb25TZWdtZW50OworICAgIHZvaWQgZGlkUGFy
c2VJbml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYpOworICAgIHZvaWQg
ZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nKGludDMyX3QpOworICAgIHZvaWQgZGlkUHJv
dmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoUmVmPE1lZGlhU2FtcGxlPiYmLCBpbnQzMl90IHRyYWNr
SUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZh
dGUgb3ZlcnJpZGVzCiAgICAgdm9pZCBzZXRDbGllbnQoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVu
dCopIGZpbmFsOwpAQCAtMTcyLDI4ICsxNzAsMjggQEAgcHJpdmF0ZToKICAgICB2b2lkIGFwcGVu
ZENvbXBsZXRlZCgpOwogICAgIHZvaWQgZGVzdHJveVBhcnNlcigpOwogICAgIHZvaWQgZGVzdHJv
eVJlbmRlcmVycygpOworICAgIHZvaWQgY2xlYXJUcmFja3MoKTsKIAogICAgIHZvaWQgZmx1c2hW
aWRlbygpOwogICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KICAgICB2b2lk
IGZsdXNoKEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlciAqKTsKICAgICBBTExPV19ORVdfQVBJ
X1dJVEhPVVRfR1VBUkRTX0VORAogCi0gICAgVmVjdG9yPFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQz4+IG1fdmlkZW9UcmFja3M7Ci0gICAgVmVjdG9yPFJlZlB0cjxB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4+IG1fYXVkaW9UcmFja3M7CisgICAg
VmVjdG9yPFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4+IG1fdmlkZW9UcmFja3M7CisgICAgVmVj
dG9yPFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4+IG1fYXVkaW9UcmFja3M7CiAgICAgVmVjdG9y
PFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQqPiBtX2Vycm9yQ2xpZW50czsK
IAogICAgIFdlYWtQdHJGYWN0b3J5PFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBtX2FwcGVu
ZFdlYWtGYWN0b3J5OwogCi0gICAgUmV0YWluUHRyPEFWU3RyZWFtRGF0YVBhcnNlcj4gbV9wYXJz
ZXI7Ci0gICAgUmV0YWluUHRyPEFWQXNzZXQ+IG1fYXNzZXQ7CisgICAgUmVmPFNvdXJjZUJ1ZmZl
clBhcnNlcj4gbV9wYXJzZXI7CiAgICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyPiBtX2Rpc3BsYXlMYXllcjsKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JF
R0lOCiAgICAgSGFzaE1hcDxpbnQsIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVy
ZXI+PiBtX2F1ZGlvUmVuZGVyZXJzOwogICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNf
RU5ECi0gICAgUmV0YWluUHRyPFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyPiBtX2RlbGVn
YXRlOwogICAgIFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlckVycm9yTGlzdGVuZXI+IG1fZXJy
b3JMaXN0ZW5lcjsKICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gbV9oZGNwRXJyb3I7CiAgICAgQm94
PEJpbmFyeVNlbWFwaG9yZT4gbV9oYXNTZXNzaW9uU2VtYXBob3JlOworICAgIEJveDxTZW1hcGhv
cmU+IG1fYWJvcnRTZW1hcGhvcmU7CiAgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfZ3JvdXBfdD4g
bV9pc0FwcGVuZGluZ0dyb3VwOwogICAgIFJlZlB0cjxXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Np
b24+IG1fZGVjb21wcmVzc2lvblNlc3Npb247CiAKQEAgLTIxMSw4ICsyMDksNiBAQCBwcml2YXRl
OgogICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gbV9jYWNoZWRTaXplOwogICAgIEZsb2F0U2l6ZSBt
X2N1cnJlbnRTaXplOwogICAgIGJvb2wgbV9wYXJzaW5nU3VjY2VlZGVkIHsgdHJ1ZSB9OwotICAg
IGJvb2wgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHsgZmFsc2UgfTsKLSAgICBib29sIG1fZGlzY2Fy
ZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlvblNlZ21lbnQgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV93YWl0aW5nRm9yS2V5IHsgdHJ1ZSB9OwogICAgIGludCBtX2VuYWJsZWRWaWRlb1RyYWNr
SUQgeyAtMSB9OwogICAgIGludCBtX3Byb3RlY3RlZFRyYWNrSUQgeyAtMSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRl
eCBkNzM1Nzc1Y2M4ZjA0YjhiMDIxYjM1YzcwMTY5NWJkMjRmNmY4ZGE4Li5iOWE0ODljMDgyOTQz
ZTM1OTY0NGE0MzU2NjI5ZWVmYmE5ZDkyOTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtNDQsNiArNDQsNyBAQAog
I2ltcG9ydCAiTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oIgogI2ltcG9ydCAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgorI2ltcG9ydCAiU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5oIgogI2ltcG9ydCAiU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oIgog
I2ltcG9ydCAiVGltZVJhbmdlcy5oIgogI2ltcG9ydCAiVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaCIKQEAgLTgyLDE1MyArODMsNiBAQCAtICh2b2lkKWFkZFN0cmVhbURhdGFQ
YXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXI7CiAtICh2b2lkKXJl
bW92ZVN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJz
ZXI7CiBAZW5kCiAKLSNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1hcmsgV2ViQVZTdHJlYW1EYXRh
UGFyc2VyTGlzdGVuZXIKLQotQGludGVyZmFjZSBXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5l
ciA6IE5TT2JqZWN0PEFWU3RyZWFtRGF0YVBhcnNlck91dHB1dEhhbmRsaW5nPiB7Ci0gICAgV2Vh
a1B0cjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gX3BhcmVudDsKLSAgICBC
b3g8U2VtYXBob3JlPiBfYWJvcnRTZW1hcGhvcmU7Ci0gICAgQVZTdHJlYW1EYXRhUGFyc2VyKiBf
cGFyc2VyOwotfQotQHByb3BlcnR5IChhc3NpZ24pIFdlYWtQdHI8V2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM+IHBhcmVudDsKLUBwcm9wZXJ0eSAoYXNzaWduKSBCb3g8U2VtYXBo
b3JlPiBhYm9ydFNlbWFwaG9yZTsKLS0gKGlkKWluaXRXaXRoUGFyc2VyOihBVlN0cmVhbURhdGFQ
YXJzZXIqKXBhcnNlciBwYXJlbnQ6KFdlYWtQdHI8V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM+KXBhcmVudDsKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYkFWU3RyZWFtRGF0
YVBhcnNlckxpc3RlbmVyCi0tIChpZClpbml0V2l0aFBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2Vy
KilwYXJzZXIgcGFyZW50OihXZWFrUHRyPFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDPilwYXJlbnQKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikK
LSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIEFTU0VSVChwYXJlbnQpOwotICAgIF9wYXJlbnQg
PSBwYXJlbnQ7Ci0gICAgX3BhcnNlciA9IHBhcnNlcjsKLSAgICBbX3BhcnNlciBzZXREZWxlZ2F0
ZTpzZWxmXTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotQHN5bnRoZXNpemUgcGFyZW50PV9wYXJl
bnQ7Ci1Ac3ludGhlc2l6ZSBhYm9ydFNlbWFwaG9yZT1fYWJvcnRTZW1hcGhvcmU7Ci0KLS0gKHZv
aWQpZGVhbGxvYwotewotICAgIFtfcGFyc2VyIHNldERlbGVnYXRlOm5pbF07Ci0gICAgW3N1cGVy
IGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWludmFsaWRhdGUKLXsKLSAgICBbX3BhcnNlciBzZXRE
ZWxlZ2F0ZTpuaWxdOwotICAgIF9wYXJzZXIgPSBudWxscHRyOwotfQotCi0tICh2b2lkKXN0cmVh
bURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkUGFy
c2VTdHJlYW1EYXRhQXNBc3NldDooQVZBc3NldCAqKWFzc2V0Ci17Ci0gICAgQVNTRVJUX1VOVVNF
RChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOwotCi0gICAg
UmV0YWluUHRyPEFWQXNzZXQ+IHByb3RlY3RlZEFzc2V0ID0gYXNzZXQ7Ci0gICAgY2FsbE9uTWFp
blRocmVhZChbcGFyZW50ID0gX3BhcmVudCwgcHJvdGVjdGVkQXNzZXQgPSBXVEZNb3ZlKHByb3Rl
Y3RlZEFzc2V0KV0gewotICAgICAgICBpZiAocGFyZW50KQotICAgICAgICAgICAgcGFyZW50LT5k
aWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KHByb3RlY3RlZEFzc2V0LmdldCgpKTsKLSAgICB9KTsK
LX0KLQotLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJl
YW1EYXRhUGFyc2VyIGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQ6KEFWQXNzZXQgKilhc3NldCB3
aXRoRGlzY29udGludWl0eTooQk9PTClkaXNjb250aW51aXR5Ci17Ci0gICAgVU5VU0VEX1BBUkFN
KGRpc2NvbnRpbnVpdHkpOwotICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3Ry
ZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLQotICAgIFJldGFpblB0cjxBVkFzc2V0PiBwcm90
ZWN0ZWRBc3NldCA9IGFzc2V0OwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3BhcmVudCA9IF9wYXJl
bnQsIHByb3RlY3RlZEFzc2V0ID0gV1RGTW92ZShwcm90ZWN0ZWRBc3NldCldIHsKLSAgICAgICAg
aWYgKHBhcmVudCkKLSAgICAgICAgICAgIHBhcmVudC0+ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3Nl
dChwcm90ZWN0ZWRBc3NldC5nZXQoKSk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpc3RyZWFtRGF0
YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRGYWlsVG9Q
YXJzZVN0cmVhbURhdGFXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgotewotICAgIEFTU0VSVF9V
TlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLQot
ICAgIFJldGFpblB0cjxOU0Vycm9yPiBwcm90ZWN0ZWRFcnJvciA9IGVycm9yOwotICAgIGNhbGxP
bk1haW5UaHJlYWQoW3BhcmVudCA9IF9wYXJlbnQsIHByb3RlY3RlZEVycm9yID0gV1RGTW92ZShw
cm90ZWN0ZWRFcnJvcildIHsKLSAgICAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAgIHBhcmVu
dC0+ZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yKHByb3RlY3RlZEVycm9yLmdldCgp
KTsKLSAgICB9KTsKLX0KLQotLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQ
YXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFByb3ZpZGVNZWRpYURhdGE6KENNU2FtcGxlQnVm
ZmVyUmVmKXNhbXBsZSBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQgbWVk
aWFUeXBlOihOU1N0cmluZyAqKW5zTWVkaWFUeXBlIGZsYWdzOihBVlN0cmVhbURhdGFQYXJzZXJP
dXRwdXRNZWRpYURhdGFGbGFncylmbGFncwotewotICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0
YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLQotICAgIFJldGFpblB0cjxD
TVNhbXBsZUJ1ZmZlclJlZj4gcHJvdGVjdGVkU2FtcGxlID0gc2FtcGxlOwotICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3BhcmVudCA9IF9wYXJlbnQsIHByb3RlY3RlZFNhbXBsZSA9IFdURk1vdmUocHJv
dGVjdGVkU2FtcGxlKSwgdHJhY2tJRCwgbWVkaWFUeXBlID0gU3RyaW5nKG5zTWVkaWFUeXBlKSwg
ZmxhZ3NdIHsKLSAgICAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAgIHBhcmVudC0+ZGlkUHJv
dmlkZU1lZGlhRGF0YUZvclRyYWNrSUQodHJhY2tJRCwgcHJvdGVjdGVkU2FtcGxlLmdldCgpLCBt
ZWRpYVR5cGUsIGZsYWdzKTsKLSAgICB9KTsKLX0KLQotLSAodm9pZClzdHJlYW1EYXRhUGFyc2Vy
OihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFJlYWNoRW5kT2ZUcmFj
a1dpdGhUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQgbWVkaWFUeXBlOihOU1N0
cmluZyAqKW5zTWVkaWFUeXBlCi17Ci0gICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2Vy
LCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOwotCi0gICAgY2FsbE9uTWFpblRocmVhZChb
cGFyZW50ID0gX3BhcmVudCwgdHJhY2tJRCwgbWVkaWFUeXBlID0gU3RyaW5nKG5zTWVkaWFUeXBl
KV0gewotICAgICAgICBpZiAocGFyZW50KQotICAgICAgICAgICAgcGFyZW50LT5kaWRSZWFjaEVu
ZE9mVHJhY2tXaXRoVHJhY2tJRCh0cmFja0lELCBtZWRpYVR5cGUpOwotICAgIH0pOwotfQotCi1B
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgotLSAodm9pZClzdHJlYW1EYXRh
UGFyc2VyV2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTooQVZT
dHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBmb3JUcmFja0lEOihDTVBlcnNpc3Rl
bnRUcmFja0lEKXRyYWNrSUQKLUFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAot
ewotICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9
PSBfcGFyc2VyKTsKLQotICAgIC8vIFdlIG11c3QgY2FsbCBzeW5jaHJvbm91c2x5IHRvIHRoZSBt
YWluIHRocmVhZCwgYXMgdGhlIEFWU3RyZWFtU2Vzc2lvbiBtdXN0IGJlIGFzc29jaWF0ZWQKLSAg
ICAvLyB3aXRoIHRoZSBzdHJlYW1EYXRhUGFyc2VyIGJlZm9yZSB0aGUgZGVsZWdhdGUgbWV0aG9k
IHJldHVybnMuCi0gICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gcmVzcG9uZGVkU2VtYXBob3JlID0g
Qm94PEJpbmFyeVNlbWFwaG9yZT46OmNyZWF0ZSgpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Bh
cmVudCA9IF9wYXJlbnQsIHRyYWNrSUQsIHJlc3BvbmRlZFNlbWFwaG9yZV0oKSB7Ci0gICAgICAg
IGlmIChwYXJlbnQpCi0gICAgICAgICAgICBwYXJlbnQtPndpbGxQcm92aWRlQ29udGVudEtleVJl
cXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHRyYWNrSUQpOwotICAgICAgICByZXNw
b25kZWRTZW1hcGhvcmUtPnNpZ25hbCgpOwotICAgIH0pOwotCi0gICAgd2hpbGUgKHRydWUpIHsK
LSAgICAgICAgaWYgKHJlc3BvbmRlZFNlbWFwaG9yZS0+d2FpdEZvcigxMDBfbXMpKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChfYWJvcnRTZW1hcGhvcmUtPndhaXRGb3IoMTAw
X21zKSkgewotICAgICAgICAgICAgX2Fib3J0U2VtYXBob3JlLT5zaWduYWwoKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLX0KLQotQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfQkVHSU4KLS0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRh
UGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0
aWFsaXphdGlvbkRhdGE6KE5TRGF0YSAqKWluaXREYXRhIGZvclRyYWNrSUQ6KENNUGVyc2lzdGVu
dFRyYWNrSUQpdHJhY2tJRAotQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECi17
Ci0gICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09
IF9wYXJzZXIpOwotCi0gICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gaGFzU2Vzc2lvblNlbWFwaG9y
ZSA9IEJveDxCaW5hcnlTZW1hcGhvcmU+OjpjcmVhdGUoKTsKLSAgICBjYWxsT25NYWluVGhyZWFk
KFtwYXJlbnQgPSBfcGFyZW50LCBwcm90ZWN0ZWRJbml0RGF0YSA9IFJldGFpblB0cjxOU0RhdGE+
KGluaXREYXRhKSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNlbWFwaG9yZV0gewotICAgICAgICBpZiAo
cGFyZW50KQotICAgICAgICAgICAgcGFyZW50LT5kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJ
bml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHByb3RlY3RlZEluaXREYXRhLmdldCgpLCB0cmFj
a0lELCBoYXNTZXNzaW9uU2VtYXBob3JlKTsKLSAgICB9KTsKLQotICAgIHdoaWxlICh0cnVlKSB7
Ci0gICAgICAgIGlmIChoYXNTZXNzaW9uU2VtYXBob3JlLT53YWl0Rm9yKDEwMF9tcykpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKF9hYm9ydFNlbWFwaG9yZS0+d2FpdEZvcigx
MDBfbXMpKSB7Ci0gICAgICAgICAgICBfYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotfQotQGVuZAotCiBAaW50ZXJmYWNlIFdl
YkFWU2FtcGxlQnVmZmVyRXJyb3JMaXN0ZW5lciA6IE5TT2JqZWN0IHsKICAgICBXZWFrUHRyPFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBfcGFyZW50OwogICAgIFZlY3RvcjxS
ZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+PiBfbGF5ZXJzOwpAQCAtMzkxLDQz
ICsyNDUsNiBAQCBAZW5kCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgUEFM
OwogCi0jcHJhZ21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIE1lZGlhRGVzY3JpcHRpb25BVkZPYmpD
Ci0KLWNsYXNzIE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDIGZpbmFsIDogcHVibGljIE1lZGlhRGVz
Y3JpcHRpb24gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVkaWFEZXNjcmlwdGlvbkFWRk9i
akM+IGNyZWF0ZShBVkFzc2V0VHJhY2sqIHRyYWNrKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1l
ZGlhRGVzY3JpcHRpb25BVkZPYmpDKHRyYWNrKSk7IH0KLSAgICB2aXJ0dWFsIH5NZWRpYURlc2Ny
aXB0aW9uQVZGT2JqQygpIHsgfQotCi0gICAgQXRvbVN0cmluZyBjb2RlYygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fY29kZWM7IH0KLSAgICBib29sIGlzVmlkZW8oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2lzVmlkZW87IH0KLSAgICBib29sIGlzQXVkaW8oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2lzQXVkaW87IH0KLSAgICBib29sIGlzVGV4dCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1faXNUZXh0OyB9Ci0gICAgCi1wcml2YXRlOgotICAgIE1lZGlhRGVzY3JpcHRp
b25BVkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2spCi0gICAgICAgIDogbV9pc1ZpZGVvKFt0cmFj
ayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbF0pCi0g
ICAgICAgICwgbV9pc0F1ZGlvKFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFD
aGFyYWN0ZXJpc3RpY0F1ZGlibGVdKQotICAgICAgICAsIG1faXNUZXh0KFt0cmFjayBoYXNNZWRp
YUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGVdKQotICAgIHsKLSAg
ICAgICAgTlNBcnJheSogZm9ybWF0RGVzY3JpcHRpb25zID0gW3RyYWNrIGZvcm1hdERlc2NyaXB0
aW9uc107Ci0gICAgICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzY3JpcHRpb24gPSBbZm9y
bWF0RGVzY3JpcHRpb25zIGNvdW50XSA/IChfX2JyaWRnZSBDTUZvcm1hdERlc2NyaXB0aW9uUmVm
KVtmb3JtYXREZXNjcmlwdGlvbnMgb2JqZWN0QXRJbmRleDowXSA6IDA7Ci0gICAgICAgIGlmIChk
ZXNjcmlwdGlvbikgewotICAgICAgICAgICAgRm91ckNoYXJDb2RlIGNvZGVjID0gQ01Gb3JtYXRE
ZXNjcmlwdGlvbkdldE1lZGlhU3ViVHlwZShkZXNjcmlwdGlvbik7Ci0gICAgICAgICAgICBDRlN0
cmluZ1JlZiBvcmlnaW5hbEZvcm1hdEtleSA9IFBBTDo6Y2FuTG9hZF9Db3JlTWVkaWFfa0NNRm9y
bWF0RGVzY3JpcHRpb25FeHRlbnNpb25fUHJvdGVjdGVkQ29udGVudE9yaWdpbmFsRm9ybWF0KCkg
PyBQQUw6OmdldF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fUHJvdGVj
dGVkQ29udGVudE9yaWdpbmFsRm9ybWF0KCkgOiBDRlNUUigiQ29tbW9uRW5jcnlwdGlvbk9yaWdp
bmFsRm9ybWF0Iik7Ci0gICAgICAgICAgICBDRlR5cGVSZWYgb3JpZ2luYWxGb3JtYXQgPSBDTUZv
cm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9uKGRlc2NyaXB0aW9uLCBvcmlnaW5hbEZvcm1hdEtl
eSk7Ci0gICAgICAgICAgICBpZiAob3JpZ2luYWxGb3JtYXQgJiYgQ0ZHZXRUeXBlSUQob3JpZ2lu
YWxGb3JtYXQpID09IENGTnVtYmVyR2V0VHlwZUlEKCkpCi0gICAgICAgICAgICAgICAgQ0ZOdW1i
ZXJHZXRWYWx1ZSgoQ0ZOdW1iZXJSZWYpb3JpZ2luYWxGb3JtYXQsIGtDRk51bWJlclNJbnQzMlR5
cGUsICZjb2RlYyk7Ci0gICAgICAgICAgICBtX2NvZGVjID0gQXRvbVN0cmluZyhyZWludGVycHJl
dF9jYXN0PExDaGFyKj4oJmNvZGVjKSwgNCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBBdG9t
U3RyaW5nIG1fY29kZWM7Ci0gICAgYm9vbCBtX2lzVmlkZW87Ci0gICAgYm9vbCBtX2lzQXVkaW87
Ci0gICAgYm9vbCBtX2lzVGV4dDsKLX07Ci0KICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMKIApAQCAtNDY1LDE0ICsyODIsMTMgQEAgc3RhdGlj
IHZvaWQgYnVmZmVyV2FzQ29uc3VtZWRDYWxsYmFjayhDTU5vdGlmaWNhdGlvbkNlbnRlclJlZiwg
Y29uc3Qgdm9pZCogbGlzdGUKICAgICAgICAgc291cmNlQnVmZmVyLT5idWZmZXJXYXNDb25zdW1l
ZCgpOwogfQogCi1SZWY8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyogcGFyZW50KQor
UmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6Y3JlYXRlKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqIHBhcmVudCwgUmVmPFNvdXJjZUJ1
ZmZlclBhcnNlcj4mJiBwYXJzZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMocGFyZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMocGFyZW50LCBXVEZNb3ZlKHBhcnNlcikpKTsKIH0K
IAotU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
KE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKLSAgICA6IG1fcGFyc2VyKGFkb3B0
TlMoW1BBTDo6YWxsb2NBVlN0cmVhbURhdGFQYXJzZXJJbnN0YW5jZSgpIGluaXRdKSkKLSAgICAs
IG1fZGVsZWdhdGUoYWRvcHROUyhbW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIGFsbG9j
XSBpbml0V2l0aFBhcnNlcjptX3BhcnNlci5nZXQoKSBwYXJlbnQ6bWFrZVdlYWtQdHIoKnRoaXMp
XSkpCitTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyogcGFyZW50LCBSZWY8U291cmNlQnVmZmVyUGFy
c2VyPiYmIHBhcnNlcikKKyAgICA6IG1fcGFyc2VyKFdURk1vdmUocGFyc2VyKSkKICAgICAsIG1f
ZXJyb3JMaXN0ZW5lcihhZG9wdE5TKFtbV2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyIGFs
bG9jXSBpbml0V2l0aFBhcmVudDptYWtlV2Vha1B0cigqdGhpcyldKSkKICAgICAsIG1faXNBcHBl
bmRpbmdHcm91cChhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX2dyb3VwX2NyZWF0ZSgpKSkKICAgICAs
IG1fbWVkaWFTb3VyY2UocGFyZW50KQpAQCAtNDg2LDEwICszMDIsMjYgQEAgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJp
dmF0ZUFWRk9iakMKIAogICAgIGlmICghW1BBTDo6Z2V0QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJDbGFzcygpIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3RvcihwcmVyb2xsRGVj
b2RlV2l0aENvbXBsZXRpb25IYW5kbGVyOildKQogICAgICAgICBDTU5vdGlmaWNhdGlvbkNlbnRl
ckFkZExpc3RlbmVyKENNTm90aWZpY2F0aW9uQ2VudGVyR2V0RGVmYXVsdExvY2FsQ2VudGVyKCks
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1fbWFwSUQpLCBidWZmZXJXYXNDb25zdW1lZENhbGxi
YWNrLCBrQ01TYW1wbGVCdWZmZXJDb25zdW1lck5vdGlmaWNhdGlvbl9CdWZmZXJDb25zdW1lZCwg
bnVsbHB0ciwgMCk7Ci0gICAgCi0gICAgbV9kZWxlZ2F0ZS5nZXQoKS5hYm9ydFNlbWFwaG9yZSA9
IEJveDxTZW1hcGhvcmU+OjpjcmVhdGUoMCk7CiAKICAgICBzb3VyY2VCdWZmZXJNYXAoKS5hZGQo
bV9tYXBJRCwgbWFrZVdlYWtQdHIoKnRoaXMpKTsKKworICAgIG1fcGFyc2VyLT5zZXREaWRQYXJz
ZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMp
XSAoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYgc2VnbWVudCkgbXV0YWJsZSB7CisgICAgICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAg
IHdlYWtUaGlzLT5kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShXVEZNb3ZlKHNlZ21lbnQpKTsK
KyAgICB9KTsKKworICAgIG1fcGFyc2VyLT5zZXREaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNp
bmdDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKGludDMyX3QgZXJyb3JD
b2RlKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAg
aWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgd2Vha1RoaXMtPmRpZEVuY291bnRlckVycm9yRHVy
aW5nUGFyc2luZyhlcnJvckNvZGUpOworICAgIH0pOworCisgICAgbV9wYXJzZXItPnNldERpZFBy
b3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKFJl
ZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYg
bWVkaWFUeXBlKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgd2Vha1RoaXMtPmRpZFByb3ZpZGVNZWRp
YURhdGFGb3JUcmFja0lEKFdURk1vdmUoc2FtcGxlKSwgdHJhY2tJRCwgbWVkaWFUeXBlKTsKKyAg
ICB9KTsKIH0KIAogU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6On5Tb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQygpCkBAIC01MDAsNiArMzMyLDcgQEAgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6On5Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQygpCiAgICAgc291cmNlQnVmZmVyTWFwKCku
cmVtb3ZlKG1fbWFwSUQpOwogICAgIGRlc3Ryb3lQYXJzZXIoKTsKICAgICBkZXN0cm95UmVuZGVy
ZXJzKCk7CisgICAgY2xlYXJUcmFja3MoKTsKIAogICAgIGlmICghW1BBTDo6Z2V0QVZTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJDbGFzcygpIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxl
Y3RvcihwcmVyb2xsRGVjb2RlV2l0aENvbXBsZXRpb25IYW5kbGVyOildKQogICAgICAgICBDTU5v
dGlmaWNhdGlvbkNlbnRlclJlbW92ZUxpc3RlbmVyKENNTm90aWZpY2F0aW9uQ2VudGVyR2V0RGVm
YXVsdExvY2FsQ2VudGVyKCksIHRoaXMsIGJ1ZmZlcldhc0NvbnN1bWVkQ2FsbGJhY2ssIGtDTVNh
bXBsZUJ1ZmZlckNvbnN1bWVyTm90aWZpY2F0aW9uX0J1ZmZlckNvbnN1bWVkLCBudWxscHRyKTsK
QEAgLTUwOCw3ICszNDEsNyBAQCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6flNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDKCkKICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlLT5zaWdu
YWwoKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VTdHJl
YW1EYXRhQXNBc3NldChBVkFzc2V0KiBhc3NldCkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVudCYm
IHNlZ21lbnQpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIApAQCAtNTE2LDUy
ICszNDksMzMgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VTdHJl
YW1EYXRhQXNBc3NldChBVkFzc2V0KiBhc3NldCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5zaG91bGRDaGVja0hhcmR3YXJlU3VwcG9ydCgpKSB7
Ci0gICAgICAgIGZvciAoQVZBc3NldFRyYWNrICp0cmFjayBpbiBbYXNzZXQgdHJhY2tzXSkgewot
ICAgICAgICAgICAgaWYgKCFhc3NldFRyYWNrTWVldHNIYXJkd2FyZURlY29kZVJlcXVpcmVtZW50
cyh0cmFjaywgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPm1lZGlhQ29udGVudFR5cGVzUmVxdWly
aW5nSGFyZHdhcmVTdXBwb3J0KCkpKSB7CisgICAgICAgIGZvciAoYXV0byYgaW5mbyA6IHNlZ21l
bnQudmlkZW9UcmFja3MpIHsKKyAgICAgICAgICAgIGF1dG8gY29kZWMgPSBGb3VyQ0M6OmZyb21T
dHJpbmcoaW5mby5kZXNjcmlwdGlvbi0+Y29kZWMoKSk7CisgICAgICAgICAgICBpZiAoIWNvZGVj
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKCFjb2RlY3NNZWV0
SGFyZHdhcmVEZWNvZGVSZXF1aXJlbWVudHMoe3sgKmNvZGVjIH19LCBtX21lZGlhU291cmNlLT5w
bGF5ZXIoKS0+bWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSkpIHsK
ICAgICAgICAgICAgICAgICBtX3BhcnNpbmdTdWNjZWVkZWQgPSBmYWxzZTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2Fz
c2V0ID0gYXNzZXQ7Ci0KLSAgICBtX3ZpZGVvVHJhY2tzLmNsZWFyKCk7Ci0gICAgbV9hdWRpb1Ry
YWNrcy5jbGVhcigpOwotCi0gICAgbV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4dEluaXRpYWxpemF0
aW9uU2VnbWVudCA9IGZhbHNlOwotCi0gICAgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5p
dGlhbGl6YXRpb25TZWdtZW50IHNlZ21lbnQ7Ci0KLSAgICBpZiAoW21fYXNzZXQgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihvdmVyYWxsRHVyYXRpb25IaW50KV0pCi0gICAgICAgIHNlZ21l
bnQuZHVyYXRpb24gPSBQQUw6OnRvTWVkaWFUaW1lKFttX2Fzc2V0IG92ZXJhbGxEdXJhdGlvbkhp
bnRdKTsKLQotICAgIGlmIChzZWdtZW50LmR1cmF0aW9uLmlzSW52YWxpZCgpIHx8IHNlZ21lbnQu
ZHVyYXRpb24gPT0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpKQotICAgICAgICBzZWdtZW50LmR1cmF0
aW9uID0gUEFMOjp0b01lZGlhVGltZShbbV9hc3NldCBkdXJhdGlvbl0pOwotCi0gICAgZm9yIChB
VkFzc2V0VHJhY2sqIHRyYWNrIGluIFttX2Fzc2V0IHRyYWNrc10pIHsKLSAgICAgICAgaWYgKFt0
cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGVd
KSB7Ci0gICAgICAgICAgICAvLyBGSVhNRSgxMjUxNjEpOiBIYW5kbGUgaW4tYmFuZCB0ZXh0IHRy
YWNrcy4KLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAgY2xlYXJUcmFja3Mo
KTsKIAotICAgICAgICBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNo
YXJhY3RlcmlzdGljVmlzdWFsXSkgewotICAgICAgICAgICAgU291cmNlQnVmZmVyUHJpdmF0ZUNs
aWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OjpWaWRlb1RyYWNrSW5mb3JtYXRpb24gaW5mbzsK
LSAgICAgICAgICAgIGF1dG8gdmlkZW9UcmFjayA9IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpjcmVhdGUodHJhY2ssIHRoaXMpOwotICAgICAgICAgICAgaW5mby50cmFjayA9
IHZpZGVvVHJhY2suY29weVJlZigpOwotICAgICAgICAgICAgbV92aWRlb1RyYWNrcy5hcHBlbmQo
V1RGTW92ZSh2aWRlb1RyYWNrKSk7Ci0gICAgICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVk
aWFEZXNjcmlwdGlvbkFWRk9iakM6OmNyZWF0ZSh0cmFjayk7Ci0gICAgICAgICAgICBzZWdtZW50
LnZpZGVvVHJhY2tzLmFwcGVuZChpbmZvKTsKLSAgICAgICAgfSBlbHNlIGlmIChbdHJhY2sgaGFz
TWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNBdWRpYmxlXSkgewotICAg
ICAgICAgICAgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50
OjpBdWRpb1RyYWNrSW5mb3JtYXRpb24gaW5mbzsKLSAgICAgICAgICAgIGF1dG8gYXVkaW9UcmFj
ayA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGUodHJhY2ssIHRo
aXMpOwotICAgICAgICAgICAgaW5mby50cmFjayA9IGF1ZGlvVHJhY2suY29weVJlZigpOwotICAg
ICAgICAgICAgbV9hdWRpb1RyYWNrcy5hcHBlbmQoV1RGTW92ZShhdWRpb1RyYWNrKSk7Ci0gICAg
ICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVkaWFEZXNjcmlwdGlvbkFWRk9iakM6OmNyZWF0
ZSh0cmFjayk7Ci0gICAgICAgICAgICBzZWdtZW50LmF1ZGlvVHJhY2tzLmFwcGVuZChpbmZvKTsK
LSAgICAgICAgfQorICAgIGZvciAoYXV0byB2aWRlb1RyYWNrSW5mbyA6IHNlZ21lbnQudmlkZW9U
cmFja3MpIHsKKyAgICAgICAgdmlkZW9UcmFja0luZm8udHJhY2stPnNldFNlbGVjdGVkQ2hhbmdl
ZENhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoVmlkZW9UcmFja1ByaXZh
dGUmIHRyYWNrLCBib29sIHNlbGVjdGVkKSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisg
ICAgICAgICAgICAgICAgd2Vha1RoaXMtPnRyYWNrRGlkQ2hhbmdlU2VsZWN0ZWQodHJhY2ssIHNl
bGVjdGVkKTsKKyAgICAgICAgfSk7CisgICAgICAgIG1fdmlkZW9UcmFja3MuYXBwZW5kKHZpZGVv
VHJhY2tJbmZvLnRyYWNrKTsKKyAgICB9CiAKLSAgICAgICAgLy8gRklYTUUoMTI1MTYxKTogQWRk
IFRleHRUcmFjayBzdXBwb3J0CisgICAgZm9yIChhdXRvIGF1ZGlvVHJhY2tJbmZvIDogc2VnbWVu
dC5hdWRpb1RyYWNrcykgeworICAgICAgICBhdWRpb1RyYWNrSW5mby50cmFjay0+c2V0RW5hYmxl
ZENoYW5nZWRDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKEF1ZGlvVHJh
Y2tQcml2YXRlJiB0cmFjaywgYm9vbCBlbmFibGVkKSB7CisgICAgICAgICAgICBpZiAod2Vha1Ro
aXMpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPnRyYWNrRGlkQ2hhbmdlRW5hYmxlZCh0cmFj
aywgZW5hYmxlZCk7CisgICAgICAgIH0pOworICAgICAgICBtX2F1ZGlvVHJhY2tzLmFwcGVuZChh
dWRpb1RyYWNrSW5mby50cmFjayk7CiAgICAgfQogCiAgICAgaWYgKG1fbWVkaWFTb3VyY2UpCkBA
IC01NzEsNjEgKzM4NSwyOSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQ
YXJzZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQogICAgICAgICBtX2NsaWVudC0+
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoc2VnbWVu
dCk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEZhaWxUb1BhcnNl
U3RyZWFtRGF0YVdpdGhFcnJvcihOU0Vycm9yICplcnJvcikKK3ZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OmRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhpbnQzMl90IGNvZGUp
CiB7CiAjaWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKKyAgICBVTlVT
RURfUEFSQU0oY29kZSk7CiAjZW5kaWYKLSAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgW1tl
cnJvciBkZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10pOworICAgIEVSUk9SX0xPRyhMT0dJREVOVElG
SUVSLCBjb2RlKTsKIAogICAgIG1fcGFyc2luZ1N1Y2NlZWRlZCA9IGZhbHNlOwogfQogCi1zdHJ1
Y3QgUHJvY2Vzc0NvZGVkRnJhbWVJbmZvIHsKLSAgICBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qyogc291cmNlQnVmZmVyOwotICAgIGludCB0cmFja0lEOwotICAgIGNvbnN0IFN0cmluZyYgbWVk
aWFUeXBlOwotfTsKLQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlk
ZU1lZGlhRGF0YUZvclRyYWNrSUQoaW50IHRyYWNrSUQsIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBs
ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkKQordm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoUmVmPE1l
ZGlhU2FtcGxlPiYmIG1lZGlhU2FtcGxlLCBpbnQzMl90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYg
bWVkaWFUeXBlKQogewotICAgIHByb2Nlc3NDb2RlZEZyYW1lKHRyYWNrSUQsIHNhbXBsZUJ1ZmZl
ciwgbWVkaWFUeXBlKTsKLX0KKyAgICBVTlVTRURfUEFSQU0obWVkaWFUeXBlKTsKIAotYm9vbCBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6cHJvY2Vzc0NvZGVkRnJhbWUoaW50IHRyYWNrSUQs
IENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgY29uc3QgU3RyaW5nJikKLXsKICAgICBp
ZiAodHJhY2tJRCAhPSBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgJiYgIW1fYXVkaW9SZW5kZXJlcnMu
Y29udGFpbnModHJhY2tJRCkpIHsKICAgICAgICAgLy8gRklYTUUoMTI1MTYxKTogV2UgZG9uJ3Qg
aGFuZGxlIHRleHQgdHJhY2tzLCBhbmQgcGFzc2luZyB0aGlzIHNhbXBsZSB1cCB0byBTb3VyY2VC
dWZmZXIKICAgICAgICAgLy8gd2lsbCBqdXN0IGNvbmZ1c2UgaXRzIHN0YXRlLiBEcm9wIHRoaXMg
c2FtcGxlIHVudGlsIHdlIGNhbiBoYW5kbGUgdGV4dCB0cmFja3MgcHJvcGVybHkuCi0gICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX2Rpc2Nh
cmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50KQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBpZiAoIW1fY2xpZW50KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
IGF1dG8gbWVkaWFTYW1wbGUgPSBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZShzYW1wbGVCdWZm
ZXIsIHRyYWNrSUQpOwotCi0gICAgaWYgKG1lZGlhU2FtcGxlLT5pc0hvbW9nZW5lb3VzKCkpIHsK
LSAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsIG1lZGlhU2FtcGxlLT50b0pTT05TdHJp
bmcoKSk7CisgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsIG1lZGlhU2FtcGxlLT50b0pTT05T
dHJpbmcoKSk7CisgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+c291cmNlQnVm
ZmVyUHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUobWVkaWFTYW1wbGUpOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0KLSAgICBhdXRvIG1lZGlhU2FtcGxlcyA9IG1lZGlhU2FtcGxlLT5kaXZp
ZGVJbnRvSG9tb2dlbmVvdXNTYW1wbGVzKCk7Ci0gICAgZm9yIChhdXRvJiBzYW1wbGUgOiBtZWRp
YVNhbXBsZXMpIHsKLSAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsIHNhbXBsZS0+dG9K
U09OU3RyaW5nKCkpOwotICAgICAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZURpZFJl
Y2VpdmVTYW1wbGUoc2FtcGxlKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUmVhY2hFbmRPZlRyYWNrV2l0aFRyYWNr
SUQoaW50LCBjb25zdCBTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKIHZv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OndpbGxQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKGludCB0cmFja0lEKQpAQCAtNjMzLDE4ICs0
MTUsMjAgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250
ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUYKICAgICBpZiAoIW1fbWVkaWFTb3VyY2Up
CiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX3BhcnNlcik7Ci0KICNpZiBIQVZFKEFW
U1RSRUFNU0VTU0lPTikgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCAidHJhY2sgPSAiLCB0cmFja0lEKTsKIAogICAgIG1fcHJv
dGVjdGVkVHJhY2tJRCA9IHRyYWNrSUQ7CiAKKyAgICBhdXRvIHBhcnNlciA9IHRoaXMtPnBhcnNl
cigpOworICAgIGlmICghcGFyc2VyKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoQ0RNU2Vz
c2lvbk1lZGlhU291cmNlQVZGT2JqQyogc2Vzc2lvbiA9IG1fbWVkaWFTb3VyY2UtPnBsYXllcigp
LT5jZG1TZXNzaW9uKCkpCi0gICAgICAgIHNlc3Npb24tPmFkZFBhcnNlcihtX3BhcnNlci5nZXQo
KSk7CisgICAgICAgIHNlc3Npb24tPmFkZFBhcnNlcihwYXJzZXIpOwogICAgIGVsc2UgaWYgKCFD
RE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6aXNBdmFpbGFibGUoKSkgewogICAgICAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgW21fbWVkaWFTb3VyY2UtPnBsYXll
cigpLT5zdHJlYW1TZXNzaW9uKCkgYWRkU3RyZWFtRGF0YVBhcnNlcjptX3BhcnNlci5nZXQoKV07
CisgICAgICAgIFttX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c3RyZWFtU2Vzc2lvbigpIGFkZFN0
cmVhbURhdGFQYXJzZXI6cGFyc2VyXTsKICAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwogICAgIH0KICNlbHNlCkBAIC02NTIsNyArNDM2LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0
YUYKICNlbmRpZgogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKE5TRGF0YSog
aW5pdERhdGEsIGludCB0cmFja0lELCBCb3g8QmluYXJ5U2VtYXBob3JlPiBoYXNTZXNzaW9uU2Vt
YXBob3JlKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRl
bnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChSZWY8VWludDhBcnJheT4m
JiBpbml0RGF0YSwgaW50IHRyYWNrSUQsIEJveDxCaW5hcnlTZW1hcGhvcmU+IGhhc1Nlc3Npb25T
ZW1hcGhvcmUpCiB7CiAgICAgaWYgKCFtX21lZGlhU291cmNlKQogICAgICAgICByZXR1cm47CkBA
IC02NjEsMTEgKzQ0NSwxMSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQ
cm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGbwogICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUiwgInRyYWNrID0gIiwgdHJhY2tJRCk7CiAKICAgICBtX3Byb3RlY3Rl
ZFRyYWNrSUQgPSB0cmFja0lEOwotICAgIG1faW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVhdGUo
W2luaXREYXRhIGxlbmd0aF0pOwotICAgIFtpbml0RGF0YSBnZXRCeXRlczptX2luaXREYXRhLT5k
YXRhKCkgbGVuZ3RoOm1faW5pdERhdGEtPmxlbmd0aCgpXTsKKyAgICBtX2luaXREYXRhID0gV1RG
TW92ZShpbml0RGF0YSk7CiAgICAgbV9tZWRpYVNvdXJjZS0+c291cmNlQnVmZmVyS2V5TmVlZGVk
KHRoaXMsIG1faW5pdERhdGEuZ2V0KCkpOwogICAgIGlmIChhdXRvIHNlc3Npb24gPSBtX21lZGlh
U291cmNlLT5wbGF5ZXIoKS0+Y2RtU2Vzc2lvbigpKSB7Ci0gICAgICAgIHNlc3Npb24tPmFkZFBh
cnNlcihtX3BhcnNlci5nZXQoKSk7CisgICAgICAgIGlmIChhdXRvIHBhcnNlciA9IHRoaXMtPnBh
cnNlcigpKQorICAgICAgICAgICAgc2Vzc2lvbi0+YWRkUGFyc2VyKHBhcnNlcik7CiAgICAgICAg
IGhhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtNjc2LDE0ICs0NjAsMTUgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlk
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KICAgICBtX2hhc1Nl
c3Npb25TZW1hcGhvcmUgPSBoYXNTZXNzaW9uU2VtYXBob3JlOwogICAgIAogI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKLSAgICBhdXRvIGlu
aXREYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW5pdERhdGEpOworICAgIGF1dG8g
aW5pdERhdGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS0+ZGF0YSgpLCBp
bml0RGF0YS0+Ynl0ZUxlbmd0aCgpKTsKICAgICBhdXRvIGtleUlEcyA9IENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoaW5pdERhdGFCdWZmZXIpOwogICAgIGlm
ICgha2V5SURzKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9jZG1JbnN0YW5jZSkgewog
ICAgICAgICBpZiAoYXV0byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUluc3RhbmNlLT5zZXNzaW9u
Rm9yS2V5SURzKGtleUlEcy52YWx1ZSgpKSkgewotICAgICAgICAgICAgW2luc3RhbmNlU2Vzc2lv
bi0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50Om1fcGFyc2VyLmdl
dCgpXTsKKyAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlciA9IHRoaXMtPnBhcnNlcigpKQorICAg
ICAgICAgICAgICAgIFtpbnN0YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29u
dGVudEtleVJlY2lwaWVudDpwYXJzZXJdOwogICAgICAgICAgICAgaWYgKG1faGFzU2Vzc2lvblNl
bWFwaG9yZSkgewogICAgICAgICAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFs
KCk7CiAgICAgICAgICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlID0gbnVsbHB0cjsKQEAg
LTcyNCwxNiArNTA5LDU0IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVu
ZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQogewogICAgIERFQlVHX0xPRyhMT0dJREVO
VElGSUVSLCAiZGF0YSBsZW5ndGggPSAiLCBkYXRhLnNpemUoKSk7CiAKKyAgICBBU1NFUlQoIW1f
aGFzU2Vzc2lvblNlbWFwaG9yZSk7CisgICAgQVNTRVJUKCFtX2Fib3J0U2VtYXBob3JlKTsKKwor
ICAgIG1fYWJvcnRTZW1hcGhvcmUgPSBCb3g8U2VtYXBob3JlPjo6Y3JlYXRlKDApOworICAgIG1f
cGFyc2VyLT5zZXRXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRENhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBhYm9ydFNl
bWFwaG9yZSA9IG1fYWJvcnRTZW1hcGhvcmVdICh1aW50MzJfdCB0cmFja0lEKSBtdXRhYmxlIHsK
KyAgICAgICAgLy8gV2UgbXVzdCBjYWxsIHN5bmNocm9ub3VzbHkgdG8gdGhlIG1haW4gdGhyZWFk
LCBhcyB0aGUgQVZTdHJlYW1TZXNzaW9uIG11c3QgYmUgYXNzb2NpYXRlZAorICAgICAgICAvLyB3
aXRoIHRoZSBzdHJlYW1EYXRhUGFyc2VyIGJlZm9yZSB0aGUgZGVsZWdhdGUgbWV0aG9kIHJldHVy
bnMuCisgICAgICAgIEJveDxCaW5hcnlTZW1hcGhvcmU+IHJlc3BvbmRlZFNlbWFwaG9yZSA9IEJv
eDxCaW5hcnlTZW1hcGhvcmU+OjpjcmVhdGUoKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
d2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgdHJhY2tJRCwgcmVzcG9uZGVkU2VtYXBob3Jl
XSgpIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3ZWFrVGhp
cy0+d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNr
SUQodHJhY2tJRCk7CisgICAgICAgICAgICByZXNwb25kZWRTZW1hcGhvcmUtPnNpZ25hbCgpOwor
ICAgICAgICB9KTsKKworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgaWYgKHJl
c3BvbmRlZFNlbWFwaG9yZS0+d2FpdEZvcigxMDBfbXMpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgaWYgKGFib3J0U2VtYXBob3JlLT53YWl0Rm9yKDEwMF9tcykpIHsK
KyAgICAgICAgICAgICAgICBhYm9ydFNlbWFwaG9yZS0+c2lnbmFsKCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSk7CisKKyAgICBtX3Bh
cnNlci0+c2V0RGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9y
VHJhY2tJRENhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBhYm9ydFNlbWFw
aG9yZSA9IG1fYWJvcnRTZW1hcGhvcmVdIChSZWY8VWludDhBcnJheT4mJiBpbml0RGF0YSwgaW50
MzJfdCB0cmFja0lEKSBtdXRhYmxlIHsKKyAgICAgICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gaGFz
U2Vzc2lvblNlbWFwaG9yZSA9IEJveDxCaW5hcnlTZW1hcGhvcmU+OjpjcmVhdGUoKTsKKyAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgaW5pdERh
dGEgPSBXVEZNb3ZlKGluaXREYXRhKSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNlbWFwaG9yZV0gKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgd2Vh
a1RoaXMtPmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRy
YWNrSUQoV1RGTW92ZShpbml0RGF0YSksIHRyYWNrSUQsIGhhc1Nlc3Npb25TZW1hcGhvcmUpOwor
ICAgICAgICB9KTsKKworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgaWYgKGhh
c1Nlc3Npb25TZW1hcGhvcmUtPndhaXRGb3IoMTAwX21zKSkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIGlmIChhYm9ydFNlbWFwaG9yZS0+d2FpdEZvcigxMDBfbXMpKSB7
CisgICAgICAgICAgICAgICAgYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pOworCiAgICAgbV9w
YXJzaW5nU3VjY2VlZGVkID0gdHJ1ZTsKICAgICBkaXNwYXRjaF9ncm91cF9lbnRlcihtX2lzQXBw
ZW5kaW5nR3JvdXAuZ2V0KCkpOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMoZ2xvYmFsRGF0YVBhcnNl
clF1ZXVlKCksIFtkYXRhID0gV1RGTW92ZShkYXRhKSwgd2Vha1RoaXMgPSBtX2FwcGVuZFdlYWtG
YWN0b3J5LmNyZWF0ZVdlYWtQdHIoKnRoaXMpLCBwYXJzZXIgPSBtX3BhcnNlciwgZGVsZWdhdGUg
PSBtX2RlbGVnYXRlLCBpc0FwcGVuZGluZ0dyb3VwID0gbV9pc0FwcGVuZGluZ0dyb3VwLCBwYXJz
ZXJTdGF0ZVdhc1Jlc2V0ID0gbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0XSAoKSBtdXRhYmxlIHsKLSAg
ICAgICAgYXV0byBzaGFyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRh
KSk7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkRGF0YS0+Y3JlYXRlTlNEYXRhKCk7Ci0g
ICAgICAgIGlmIChwYXJzZXJTdGF0ZVdhc1Jlc2V0KQotICAgICAgICAgICAgW3BhcnNlciBhcHBl
bmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2VyU3Ry
ZWFtRGF0YURpc2NvbnRpbnVpdHldOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBbcGFyc2Vy
IGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpXTsKKyAgICBkaXNwYXRjaF9hc3luYyhnbG9i
YWxEYXRhUGFyc2VyUXVldWUoKSwgW2RhdGEgPSBXVEZNb3ZlKGRhdGEpLCB3ZWFrVGhpcyA9IG1f
YXBwZW5kV2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyksIHBhcnNlciA9IG1fcGFyc2Vy
LCBpc0FwcGVuZGluZ0dyb3VwID0gbV9pc0FwcGVuZGluZ0dyb3VwXSAoKSBtdXRhYmxlIHsKKyAg
ICAgICAgcGFyc2VyLT5hcHBlbmREYXRhKFdURk1vdmUoZGF0YSkpOwogCiAgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3dlYWtUaGlzXSB7CiAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCkBAIC03
NDEsMTEgKzU2NCwyMCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQo
VmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgZGF0YSkKICAgICAgICAgfSk7CiAgICAgICAgIGRpc3Bh
dGNoX2dyb3VwX2xlYXZlKGlzQXBwZW5kaW5nR3JvdXAuZ2V0KCkpOwogICAgIH0pOwotICAgIG1f
cGFyc2VyU3RhdGVXYXNSZXNldCA9IGZhbHNlOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjphcHBlbmRDb21wbGV0ZWQoKQogeworICAgIGlmIChtX2Fib3J0U2VtYXBob3Jl
KSB7CisgICAgICAgIG1fYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAgICBtX2Fib3J0
U2VtYXBob3JlID0gbmlsOworICAgIH0KKworICAgIGlmIChtX2hhc1Nlc3Npb25TZW1hcGhvcmUp
IHsKKyAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICAgICAgbV9o
YXNTZXNzaW9uU2VtYXBob3JlID0gbmlsOworICAgIH0KKwogICAgIGlmIChtX3BhcnNpbmdTdWNj
ZWVkZWQgJiYgbV9tZWRpYVNvdXJjZSkKICAgICAgICAgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCkt
PnNldExvYWRpbmdQcm9ncmVzc3NlZCh0cnVlKTsKIApAQCAtNzYwLDM5ICs1OTIsMzkgQEAgdm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YWJvcnQoKQogICAgIC8vIFRoZSBwYXJzaW5n
IHF1ZXVlIG1heSBiZSBibG9ja2VkIHdhaXRpbmcgZm9yIHRoZSBtYWluIHRocmVhZCB0byBwcm92
aWRlIGl0IGEgQVZTdHJlYW1TZXNzaW9uLiBXZQogICAgIC8vIHdlcmUgYXNrZWQgdG8gYWJvcnQs
IGFuZCB0aGF0IGNhbmNlbHMgYWxsIG91dHN0YW5kaW5nIGFwcGVuZCBvcGVyYXRpb25zLiBXaXRo
b3V0IGNhbmNlbGxpbmcgdGhpcwogICAgIC8vIHNlbWFwaG9yZSwgdGhlIG1faXNBcHBlbmRpbmdH
cm91cCB3YWl0IG9wZXJhdGlvbiB3aWxsIGRlYWRsb2NrLgotICAgIGlmIChtX2hhc1Nlc3Npb25T
ZW1hcGhvcmUpCisgICAgaWYgKG1faGFzU2Vzc2lvblNlbWFwaG9yZSkgewogICAgICAgICBtX2hh
c1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwotICAgIG1fZGVsZWdhdGUuZ2V0KCkuYWJvcnRT
ZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUgPSBudWxs
cHRyOworICAgIH0KKyAgICBpZiAobV9hYm9ydFNlbWFwaG9yZSkgeworICAgICAgICBtX2Fib3J0
U2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICAgICAgbV9hYm9ydFNlbWFwaG9yZSA9IG51bGxwdHI7
CisgICAgfQogICAgIGRpc3BhdGNoX2dyb3VwX3dhaXQobV9pc0FwcGVuZGluZ0dyb3VwLmdldCgp
LCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOwotICAgIG1fYXBwZW5kV2Vha0ZhY3RvcnkucmV2b2tl
QWxsKCk7Ci0gICAgbV9kZWxlZ2F0ZS5nZXQoKS5wYXJlbnQgPSBtX2FwcGVuZFdlYWtGYWN0b3J5
LmNyZWF0ZVdlYWtQdHIoKnRoaXMpOwotICAgIG1fZGVsZWdhdGUuZ2V0KCkuYWJvcnRTZW1hcGhv
cmUgPSBCb3g8U2VtYXBob3JlPjo6Y3JlYXRlKDApOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpyZXNldFBhcnNlclN0YXRlKCkKIHsKICAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIpOwogCi0gICAgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0ID0gdHJ1ZTsKLSAgICBtX2Rp
c2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50ID0gdHJ1ZTsKKyAgICBt
X3BhcnNlci0+cmVzZXRQYXJzZXJTdGF0ZSgpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpkZXN0cm95UGFyc2VyKCkKIHsKKyAgICBhdXRvIHBhcnNlciA9IHRoaXMtPnBh
cnNlcigpOworICAgIGlmICghcGFyc2VyKQorICAgICAgICByZXR1cm47CiAjaWYgSEFWRShBVlNU
UkVBTVNFU1NJT04pICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIGlmICht
X21lZGlhU291cmNlICYmIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5oYXNTdHJlYW1TZXNzaW9u
KCkpCi0gICAgICAgIFttX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c3RyZWFtU2Vzc2lvbigpIHJl
bW92ZVN0cmVhbURhdGFQYXJzZXI6bV9wYXJzZXIuZ2V0KCldOworICAgICAgICBbbV9tZWRpYVNv
dXJjZS0+cGxheWVyKCktPnN0cmVhbVNlc3Npb24oKSByZW1vdmVTdHJlYW1EYXRhUGFyc2VyOnBh
cnNlcl07CiAjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09O
VEVOVEtFWVNFU1NJT04pCiAgICAgaWYgKG1fY2RtSW5zdGFuY2UpIHsKICAgICAgICAgaWYgKGF1
dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhtX2tl
eUlEcykpCi0gICAgICAgICAgICBbaW5zdGFuY2VTZXNzaW9uLT5jb250ZW50S2V5U2Vzc2lvbigp
IHJlbW92ZUNvbnRlbnRLZXlSZWNpcGllbnQ6bV9wYXJzZXIuZ2V0KCldOworICAgICAgICAgICAg
W2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSByZW1vdmVDb250ZW50S2V5UmVj
aXBpZW50OnBhcnNlcl07CiAgICAgfQogI2VuZGlmCi0KLSAgICBbbV9kZWxlZ2F0ZSBpbnZhbGlk
YXRlXTsKLSAgICBtX2RlbGVnYXRlID0gbnVsbHB0cjsKLSAgICBtX3BhcnNlciA9IG51bGxwdHI7
CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRlc3Ryb3lSZW5kZXJlcnMo
KQpAQCAtODE3LDYgKzY0OSwxNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpk
ZXN0cm95UmVuZGVyZXJzKCkKICAgICBtX2F1ZGlvUmVuZGVyZXJzLmNsZWFyKCk7CiB9CiAKK3Zv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNsZWFyVHJhY2tzKCkKK3sKKyAgICBmb3Ig
KGF1dG8mIHRyYWNrIDogbV92aWRlb1RyYWNrcykKKyAgICAgICAgdHJhY2stPnNldFNlbGVjdGVk
Q2hhbmdlZENhbGxiYWNrKG51bGxwdHIpOworICAgIG1fdmlkZW9UcmFja3MuY2xlYXIoKTsKKwor
ICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX2F1ZGlvVHJhY2tzKQorICAgICAgICB0cmFjay0+c2V0
RW5hYmxlZENoYW5nZWRDYWxsYmFjayhudWxscHRyKTsKKyAgICBtX2F1ZGlvVHJhY2tzLmNsZWFy
KCk7Cit9CisKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnJlbW92ZWRGcm9tTWVk
aWFTb3VyY2UoKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CkBAIC04NTYsMjEg
KzY5OSwyMSBAQCBib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpoYXNBdWRpbygpIGNv
bnN0CiAgICAgcmV0dXJuIG1fY2xpZW50ICYmIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRl
SGFzQXVkaW8oKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tE
aWRDaGFuZ2VFbmFibGVkKFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiB0cmFj
aykKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlU2VsZWN0
ZWQoVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNrLCBib29sIHNlbGVjdGVkKQogewotICAgIGludCB0
cmFja0lEID0gdHJhY2stPnRyYWNrSUQoKTsKKyAgICBpbnQgdHJhY2tJRCA9IHRyYWNrLmlkKCku
dG9JbnQoKTsKIAotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInZpZGVvIHRyYWNrSUQg
PSAiLCB0cmFja0lELCAiLCBzZWxlY3RlZCA9ICIsIHRyYWNrLT5zZWxlY3RlZCgpKTsKKyAgICBB
TFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJ2aWRlbyB0cmFja0lEID0gIiwgdHJhY2tJRCwgIiwg
c2VsZWN0ZWQgPSAiLCBzZWxlY3RlZCk7CiAKLSAgICBpZiAoIXRyYWNrLT5zZWxlY3RlZCgpICYm
IG1fZW5hYmxlZFZpZGVvVHJhY2tJRCA9PSB0cmFja0lEKSB7CisgICAgaWYgKCFzZWxlY3RlZCAm
JiBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgPT0gdHJhY2tJRCkgewogICAgICAgICBtX2VuYWJsZWRW
aWRlb1RyYWNrSUQgPSAtMTsKLSAgICAgICAgW21fcGFyc2VyIHNldFNob3VsZFByb3ZpZGVNZWRp
YURhdGE6Tk8gZm9yVHJhY2tJRDp0cmFja0lEXTsKKyAgICAgICAgbV9wYXJzZXItPnNldFNob3Vs
ZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGZhbHNlLCB0cmFja0lEKTsKIAogICAgICAgICBp
ZiAobV9kZWNvbXByZXNzaW9uU2Vzc2lvbikKICAgICAgICAgICAgIG1fZGVjb21wcmVzc2lvblNl
c3Npb24tPnN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRhKCk7Ci0gICAgfSBlbHNlIGlmICh0cmFjay0+
c2VsZWN0ZWQoKSkgeworICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWQpIHsKICAgICAgICAgbV9lbmFi
bGVkVmlkZW9UcmFja0lEID0gdHJhY2tJRDsKLSAgICAgICAgW21fcGFyc2VyIHNldFNob3VsZFBy
b3ZpZGVNZWRpYURhdGE6WUVTIGZvclRyYWNrSUQ6dHJhY2tJRF07CisgICAgICAgIG1fcGFyc2Vy
LT5zZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCh0cnVlLCB0cmFja0lEKTsKIAog
ICAgICAgICBpZiAobV9kZWNvbXByZXNzaW9uU2Vzc2lvbikgewogICAgICAgICAgICAgbV9kZWNv
bXByZXNzaW9uU2Vzc2lvbi0+cmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeShbdGhpcywgdHJhY2tJ
RF0gewpAQCAtODgyLDIxICs3MjUsMjEgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3UKICAgICBt
X21lZGlhU291cmNlLT5oYXNTZWxlY3RlZFZpZGVvQ2hhbmdlZCgqdGhpcyk7CiB9CiAKLXZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlRW5hYmxlZChBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyogdHJhY2spCit2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQoQXVkaW9UcmFja1ByaXZhdGUmIHRy
YWNrLCBib29sIGVuYWJsZWQpCiB7Ci0gICAgaW50IHRyYWNrSUQgPSB0cmFjay0+dHJhY2tJRCgp
OworICAgIGludCB0cmFja0lEID0gdHJhY2suaWQoKS50b0ludCgpOwogCi0gICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCAiYXVkaW8gdHJhY2tJRCA9ICIsIHRyYWNrSUQsICIsIHNlbGVjdGVk
ID0gIiwgdHJhY2stPmVuYWJsZWQoKSk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAi
YXVkaW8gdHJhY2tJRCA9ICIsIHRyYWNrSUQsICIsIHNlbGVjdGVkID0gIiwgZW5hYmxlZCk7CiAK
LSAgICBpZiAoIXRyYWNrLT5lbmFibGVkKCkpIHsKKyAgICBpZiAoIWVuYWJsZWQpIHsKICAgICAg
ICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgogICAgICAgICBSZXRhaW5QdHI8
QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyPiByZW5kZXJlciA9IG1fYXVkaW9SZW5kZXJlcnMu
Z2V0KHRyYWNrSUQpOwogICAgICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAot
ICAgICAgICBbbV9wYXJzZXIgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YTpOTyBmb3JUcmFja0lE
OnRyYWNrSURdOworICAgICAgICBtX3BhcnNlci0+c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZv
clRyYWNrSUQoZmFsc2UsIHRyYWNrSUQpOwogICAgICAgICBpZiAobV9tZWRpYVNvdXJjZSkKICAg
ICAgICAgICAgIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5yZW1vdmVBdWRpb1JlbmRlcmVyKHJl
bmRlcmVyLmdldCgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBbbV9wYXJzZXIgc2V0U2hvdWxk
UHJvdmlkZU1lZGlhRGF0YTpZRVMgZm9yVHJhY2tJRDp0cmFja0lEXTsKKyAgICAgICAgbV9wYXJz
ZXItPnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKHRydWUsIHRyYWNrSUQpOwog
ICAgICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCiAgICAgICAgIFJldGFp
blB0cjxBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXI+IHJlbmRlcmVyOwogICAgICAgICBBTExP
V19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORApAQCAtOTI2LDYgKzc2OSwxMyBAQCB2b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQoQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdQogICAgIH0KIH0KIAorQVZTdHJlYW1EYXRhUGFyc2VyKiBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6cGFyc2VyKCkgY29uc3QKK3sKKyAgICBpZiAoaXM8U291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQz4obV9wYXJzZXIuZ2V0KCkpKQorICAgICAgICByZXR1cm4gZG93
bmNhc3Q8U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQz4obV9wYXJzZXIuZ2V0KCkpLnBhcnNlcigp
OworICAgIHJldHVybiBuaWw7Cit9CisKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OnNldENETVNlc3Npb24oQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyogc2Vzc2lvbikKIHsK
ICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKQEAgLTk4Nyw3ICs4MzcsOCBAQCB2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphdHRlbXB0VG9EZWNyeXB0KCkKICAgICBp
ZiAoIWluc3RhbmNlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgW2luc3RhbmNlU2Vz
c2lvbi0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50Om1fcGFyc2Vy
LmdldCgpXTsKKyAgICBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5wYXJzZXIoKSkKKyAgICAgICAg
W2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBp
ZW50OnBhcnNlcl07CiAgICAgaWYgKG1faGFzU2Vzc2lvblNlbWFwaG9yZSkgewogICAgICAgICBt
X2hhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwogICAgICAgICBtX2hhc1Nlc3Npb25TZW1h
cGhvcmUgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggYzc4Yjk1M2M3YmFh
OGVjYjI5MjhiZjJjM2RkNTUxYTkwZWQyMzhjYy4uNmIxMWNjYTMyYmRkNDlkMmFkZDYxMGU5YTdh
Nzc2YjU5NWI4YTk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGVBVkYu
aCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
CiAKQEAgLTQyLDE0ICs0MywxMSBAQCBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzsK
IGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIGZpbmFsIDogcHVibGlj
IFZpZGVvVHJhY2tQcml2YXRlQVZGIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShWaWRlb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQykKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFZp
ZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrKiB0
cmFjaywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKKyAgICBzdGF0aWMgUmVm
PFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNr
KiB0cmFjaykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2sp
KTsKICAgICB9CiAKLSAgICBib29sIHNlbGVjdGVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBzZXRTZWxlY3RlZChib29sKSBvdmVycmlkZTsKLQogICAgIHZvaWQgc2V0QXNzZXRUcmFjayhB
VkFzc2V0VHJhY2sqKTsKICAgICBBVkFzc2V0VHJhY2sqIGFzc2V0VHJhY2soKSBjb25zdDsKIApA
QCAtNTgsMTQgKzU2LDEyIEBAIHB1YmxpYzoKICAgICBGbG9hdFNpemUgbmF0dXJhbFNpemUoKSBj
b25zdDsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFy
ZW50KTsKKyAgICBleHBsaWNpdCBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhB
VkFzc2V0VHJhY2sqKTsKICAgICAKICAgICB2b2lkIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygp
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+IG1faW1w
bDsKLSAgICBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogbV9wYXJlbnQ7CiAgICAgaW50IG1f
dHJhY2tJRDsKLSAgICBib29sIG1fc2VsZWN0ZWQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCmluZGV4IDJjNzM5Mjc5NmUwZjUyNWY5NGMyOGFhMjBhYWQxMGUzMGQwZDA1MWMuLmFm
ZDFiN2YzYTkzMzQ5MTcxZDkxMDU4ZjY4NWNmZTgwYmI4ZDczMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tCkBAIC0zNCwxMSArMzQsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVZp
ZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQyogcGFyZW50KQorVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OlZpZGVv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2spCiAgICAg
OiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCi0g
ICAgLCBtX3BhcmVudChwYXJlbnQpCiAgICAgLCBtX3RyYWNrSUQoLTEpCi0gICAgLCBtX3NlbGVj
dGVkKGZhbHNlKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQpAQCAtNjUs
MjEgKzYzLDYgQEAgQVZBc3NldFRyYWNrKiBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6YXNzZXRUcmFjaygpIGNvbnN0CiAgICAgcmV0dXJuIG1faW1wbC0+YXNzZXRUcmFjaygp
OwogfQogCi0KLWJvb2wgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNlbGVj
dGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zZWxlY3RlZDsKLX0KLQotdm9pZCBWaWRlb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0U2VsZWN0ZWQoYm9vbCBzZWxlY3RlZCkK
LXsKLSAgICBpZiAobV9zZWxlY3RlZCA9PSBzZWxlY3RlZCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9zZWxlY3RlZCA9IHNlbGVjdGVkOwotICAgIG1fcGFyZW50LT50cmFja0RpZENoYW5nZUVu
YWJsZWQodGhpcyk7Ci19Ci0KIEZsb2F0U2l6ZSBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6bmF0dXJhbFNpemUoKSBjb25zdAogewogICAgIHJldHVybiBGbG9hdFNpemUoW2Fz
c2V0VHJhY2soKSBuYXR1cmFsU2l6ZV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWYyMGJjZjlkZjEwMWFjYTE4NWIyM2MzMTlmZDIzYmQ3ZWUyYzlkMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1
ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaCIKKwor
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPEF1
ZGlvVHJhY2tQcml2YXRlV2ViTT4gQXVkaW9UcmFja1ByaXZhdGVXZWJNOjpjcmVhdGUod2VibTo6
VHJhY2tFbnRyeSYmIHRyYWNrRW50cnkpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVk
aW9UcmFja1ByaXZhdGVXZWJNKFdURk1vdmUodHJhY2tFbnRyeSkpKTsKK30KKworQXVkaW9UcmFj
a1ByaXZhdGVXZWJNOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk0od2VibTo6VHJhY2tFbnRyeSYmIHRy
YWNrRW50cnkpCisgICAgOiBtX3RyYWNrKFdURk1vdmUodHJhY2tFbnRyeSkpCit7CisgICAgaWYg
KG1fdHJhY2suaXNfZW5hYmxlZC5pc19wcmVzZW50KCkpCisgICAgICAgIHNldEVuYWJsZWQobV90
cmFjay5pc19lbmFibGVkLnZhbHVlKCkpOworfQorCitBdG9tU3RyaW5nIEF1ZGlvVHJhY2tQcml2
YXRlV2ViTTo6aWQoKSBjb25zdAoreworICAgIGlmIChtX3RyYWNrSUQuaXNOdWxsKCkpCisgICAg
ICAgIG1fdHJhY2tJRCA9IG1fdHJhY2sudHJhY2tfdWlkLmlzX3ByZXNlbnQoKSA/IEF0b21TdHJp
bmc6Om51bWJlcihtX3RyYWNrLnRyYWNrX3VpZC52YWx1ZSgpKSA6IGVtcHR5QXRvbSgpOworICAg
IHJldHVybiBtX3RyYWNrSUQ7Cit9CisKK0F0b21TdHJpbmcgQXVkaW9UcmFja1ByaXZhdGVXZWJN
OjpsYWJlbCgpIGNvbnN0Cit7CisgICAgaWYgKG1fbGFiZWwuaXNOdWxsKCkpCisgICAgICAgIG1f
bGFiZWwgPSBtX3RyYWNrLm5hbWUuaXNfcHJlc2VudCgpID8gQXRvbVN0cmluZzo6ZnJvbVVURjgo
bV90cmFjay5uYW1lLnZhbHVlKCkuZGF0YSgpLCBtX3RyYWNrLm5hbWUudmFsdWUoKS5sZW5ndGgo
KSkgOiBlbXB0eUF0b20oKTsKKyAgICByZXR1cm4gbV9sYWJlbDsKK30KKworQXRvbVN0cmluZyBB
dWRpb1RyYWNrUHJpdmF0ZVdlYk06Omxhbmd1YWdlKCkgY29uc3QKK3sKKyAgICBpZiAobV9sYW5n
dWFnZS5pc051bGwoKSkKKyAgICAgICAgbV9sYW5ndWFnZSA9IG1fdHJhY2subGFuZ3VhZ2UuaXNf
cHJlc2VudCgpID8gQXRvbVN0cmluZzo6ZnJvbVVURjgobV90cmFjay5sYW5ndWFnZS52YWx1ZSgp
LmRhdGEoKSwgbV90cmFjay5sYW5ndWFnZS52YWx1ZSgpLmxlbmd0aCgpKSA6IGVtcHR5QXRvbSgp
OworICAgIHJldHVybiBtX2xhbmd1YWdlOworfQorCitpbnQgQXVkaW9UcmFja1ByaXZhdGVXZWJN
Ojp0cmFja0luZGV4KCkgY29uc3QKK3sKKyAgICBpZiAobV90cmFjay50cmFja19udW1iZXIuaXNf
cHJlc2VudCgpKQorICAgICAgICByZXR1cm4gbV90cmFjay50cmFja19udW1iZXIudmFsdWUoKTsK
KyAgICByZXR1cm4gMDsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NPVVJDRSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlv
VHJhY2tQcml2YXRlV2ViTS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE5NzhkZjc4YzNiNTZmYTRl
NzFiOTAxZGY2YWY3YzkyZTE2OTkxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5oCkBAIC0wLDAg
KzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHdlYm0v
ZG9tX3R5cGVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9UcmFja1By
aXZhdGVXZWJNIGZpbmFsIDogcHVibGljIEF1ZGlvVHJhY2tQcml2YXRlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmPEF1ZGlvVHJhY2tQcml2YXRlV2ViTT4gY3JlYXRlKHdlYm06OlRyYWNrRW50
cnkmJik7CisgICAgdmlydHVhbCB+QXVkaW9UcmFja1ByaXZhdGVXZWJNKCkgPSBkZWZhdWx0Owor
CisgICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IGZpbmFsOworICAgIEF0b21TdHJpbmcgbGFiZWwo
KSBjb25zdCBmaW5hbDsKKyAgICBBdG9tU3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgZmluYWw7Cisg
ICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBBdWRpb1Ry
YWNrUHJpdmF0ZVdlYk0od2VibTo6VHJhY2tFbnRyeSYmKTsKKyAgICB3ZWJtOjpUcmFja0VudHJ5
IG1fdHJhY2s7CisgICAgbXV0YWJsZSBBdG9tU3RyaW5nIG1fdHJhY2tJRDsKKyAgICBtdXRhYmxl
IEF0b21TdHJpbmcgbV9sYWJlbDsKKyAgICBtdXRhYmxlIEF0b21TdHJpbmcgbV9sYW5ndWFnZTsK
K307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmEyMjhjODM3Y2U0ZTAwNDIyMDA2ODlmN2Y4Zjk2ZTY0
ODFmNDgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcApAQCAtMCwwICsxLDUyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlci5o
IgorCisjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDLmgiCisjaW5jbHVkZSAiU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oIgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wg
U291cmNlQnVmZmVyUGFyc2VyOjppc0NvbnRlbnRUeXBlU3VwcG9ydGVkKGNvbnN0IENvbnRlbnRU
eXBlJiB0eXBlKQoreworICAgIGlmIChTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppc0NvbnRlbnRU
eXBlU3VwcG9ydGVkKHR5cGUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoU291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCh0eXBlKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitSZWZQdHI8U291cmNlQnVm
ZmVyUGFyc2VyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OmNyZWF0ZShjb25zdCBDb250ZW50VHlwZSYg
Y29udGVudFR5cGUpCit7CisgICAgaWYgKFdURjo6ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb250
ZW50VHlwZS5jb250YWluZXJUeXBlKCksICJhdWRpby93ZWJtIikgfHwgV1RGOjplcXVhbElnbm9y
aW5nQVNDSUlDYXNlKGNvbnRlbnRUeXBlLmNvbnRhaW5lclR5cGUoKSwgInZpZGVvL3dlYm0iKSkK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNKCkpOwor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpKTsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDMxY2MyOWI2Zjk1Y2NhMDA0
ZjJmNDVkZjhlMzUwNzNlNTg2ZjUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKQEAgLTAsMCArMSwx
MDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCisKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmgiCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvVWludDhBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29udGVudFR5cGU7CitjbGFzcyBNZWRp
YVNhbXBsZTsKKworY2xhc3MgU291cmNlQnVmZmVyUGFyc2VyIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFNvdXJjZUJ1ZmZlclBhcnNlcj4geworcHVibGljOgorICAgIHN0YXRpYyBib29s
IGlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29uc3QgQ29udGVudFR5cGUmKTsKKworICAgIHN0YXRp
YyBSZWZQdHI8U291cmNlQnVmZmVyUGFyc2VyPiBjcmVhdGUoY29uc3QgQ29udGVudFR5cGUmKTsK
KyAgICB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQYXJzZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBlbnVt
IGNsYXNzIFR5cGUgOiB1aW50OF90IHsKKyAgICAgICAgQVZGT2JqQywKKyAgICAgICAgV2ViTSwK
KyAgICB9OworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOworICAgIGVudW0gY2xh
c3MgQXBwZW5kRmxhZ3MgOiB1aW50OF90IHsKKyAgICAgICAgTm9uZSwKKyAgICAgICAgRGlzY29u
dGludWl0eSwKKyAgICB9OworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmREYXRhKFZlY3Rvcjx1bnNp
Z25lZCBjaGFyPiYmLCBBcHBlbmRGbGFncyA9IEFwcGVuZEZsYWdzOjpOb25lKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGZsdXNoUGVuZGluZ01lZGlhRGF0YSgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoYm9vbCwgaW50MzJfdCkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQcm92aWRlTWVkaWFkYXRhRm9yVHJhY2tJRChpbnQz
Ml90KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSA9IDA7CisKKyAg
ICAvLyBXaWxsIGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgdXNpbmcgSW5pdGlh
bGl6YXRpb25TZWdtZW50ID0gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRp
b25TZWdtZW50OworICAgIHVzaW5nIERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2sg
PSBXVEY6OkZ1bmN0aW9uPHZvaWQoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYpPjsKKyAgICB2b2lk
IHNldERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soRGlkUGFyc2VJbml0aWFsaXph
dGlvbkRhdGFDYWxsYmFjayYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgbV9kaWRQYXJzZUlu
aXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CisgICAgfQorCisg
ICAgLy8gV2lsbCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgorICAgIHVzaW5nIERpZEVu
Y291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKGlu
dDMyX3QgZXJyb3JDb2RlKT47CisgICAgdm9pZCBzZXREaWRFbmNvdW50ZXJFcnJvckR1cmluZ1Bh
cnNpbmdDYWxsYmFjayhEaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayYmIGNh
bGxiYWNrKQorICAgIHsKKyAgICAgICAgbV9kaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdD
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworICAgIH0KKworICAgIC8vIFdpbGwgYmUgY2Fs
bGVkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICB1c2luZyBEaWRQcm92aWRlTWVkaWFEYXRhQ2Fs
bGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmPE1lZGlhU2FtcGxlPiYmLCBpbnQzMl90IHRy
YWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKT47CisgICAgdm9pZCBzZXREaWRQcm92aWRl
TWVkaWFEYXRhQ2FsbGJhY2soRGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrJiYgY2FsbGJhY2sp
CisgICAgeworICAgICAgICBtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spOworICAgIH0KKworICAgIC8vIFdpbGwgYmUgY2FsbGVkIHN5bmNocm9ub3VzbHkg
b24gdGhlIHBhcnNlciB0aGVhZC4KKyAgICB1c2luZyBXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1
ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2
b2lkKHVpbnQzMl90IHRyYWNrSUQpPjsKKyAgICB2b2lkIHNldFdpbGxQcm92aWRlQ29udGVudEtl
eVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soV2lsbFByb3ZpZGVD
b250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayYmIGNh
bGxiYWNrKQorICAgIHsKKyAgICAgICAgbV93aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5p
dGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7Cisg
ICAgfQorCisgICAgLy8gV2lsbCBiZSBjYWxsZWQgc3luY2hyb25vdXNseSBvbiB0aGUgcGFyc2Vy
IHRoZWFkLgorICAgIHVzaW5nIERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChSZWY8VWludDhB
cnJheT4mJiwgaW50MzJfdCB0cmFja0lEKT47CisgICAgdm9pZCBzZXREaWRQcm92aWRlQ29udGVu
dEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soRGlkUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrJiYg
Y2FsbGJhY2spCisgICAgeworICAgICAgICBtX2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElu
aXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwor
ICAgIH0KKworcHJvdGVjdGVkOgorICAgIFNvdXJjZUJ1ZmZlclBhcnNlcigpID0gZGVmYXVsdDsK
KworICAgIERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2sgbV9kaWRQYXJzZUluaXRp
YWxpemF0aW9uRGF0YUNhbGxiYWNrOworICAgIERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2lu
Z0NhbGxiYWNrIG1fZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2s7CisgICAg
RGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrIG1fZGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNr
OworICAgIFdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JU
cmFja0lEQ2FsbGJhY2sgbV93aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm9yVHJhY2tJRENhbGxiYWNrOworICAgIERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVz
dEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayBtX2RpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjazsKK307CisKK30K
KworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExYjZiYmM0NjQzZDQzZDcxY2YxNzJhYmM4YzcwMWRjN2Vm
NTM0Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtMCwwICsxLDM2MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5jbHVkZSAiQXVkaW9U
cmFja1ByaXZhdGVXZWJNLmgiCisjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgor
I2luY2x1ZGUgIk1lZGlhRGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgorI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaCIKKyNpbmNsdWRlIDx3
ZWJtL3dlYm1fcGFyc2VyLmg+CisjaW5jbHVkZSA8d3RmL0FsZ29yaXRobXMuaD4KKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvZGFyd2luL1dlYWtMaW5raW5n
Lmg+CisKK1dURl9XRUFLX0xJTktfRk9SQ0VfSU1QT1JUKHdlYm06OnN3YXApOworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0YXRpYyBib29sIGlzV2VibVBhcnNlckF2YWlsYWJsZSgpCit7Cisg
ICAgcmV0dXJuICEhd2VibTo6c3dhcCAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLndlYk1QYXJzZXJFbmFibGVkKCk7Cit9CisKK3VzaW5nIG5hbWVzcGFjZSB3ZWJt
OworCitjbGFzcyBWZWN0b3JSZWFkZXIgZmluYWwgOiBwdWJsaWMgd2VibTo6UmVhZGVyIHsKK3B1
YmxpYzoKKyAgICBWZWN0b3JSZWFkZXIoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgZGF0YSkKKyAg
ICAgICAgOiBtX2RhdGEgeyBXVEZNb3ZlKGRhdGEpIH0KKyAgICB7CisgICAgfQorCisgICAgU3Rh
dHVzIFJlYWQoc3RkOjpzaXplX3QgbnVtVG9SZWFkLCB1aW50OF90KiBvdXRwdXRCdWZmZXIsIHVp
bnQ2NF90KiBudW1BY3R1YWxseVJlYWQpIGZpbmFsCisgICAgeworICAgICAgICBBU1NFUlQob3V0
cHV0QnVmZmVyICYmIG51bUFjdHVhbGx5UmVhZCk7CisgICAgICAgIGlmICghb3V0cHV0QnVmZmVy
IHx8ICFudW1BY3R1YWxseVJlYWQpCisgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6
a05vdEVub3VnaE1lbW9yeSk7CisKKyAgICAgICAgaWYgKG1fcG9zaXRpb24gPj0gbV9kYXRhLnNp
emUoKSkgeworICAgICAgICAgICAgKm51bUFjdHVhbGx5UmVhZCA9IDA7CisgICAgICAgICAgICBy
ZXR1cm4gU3RhdHVzKFN0YXR1czo6a0VuZE9mRmlsZSk7CisgICAgICAgIH0KKworICAgICAgICBz
aXplX3QgbnVtQXZhaWxhYmxlID0gbV9kYXRhLnNpemUoKSAtIG1fcG9zaXRpb247CisgICAgICAg
IGlmIChudW1Ub1JlYWQgPCBudW1BdmFpbGFibGUpIHsKKyAgICAgICAgICAgIG1lbWNweShvdXRw
dXRCdWZmZXIsIG1fZGF0YS5kYXRhKCkgKyBtX3Bvc2l0aW9uLCBudW1Ub1JlYWQpOworICAgICAg
ICAgICAgKm51bUFjdHVhbGx5UmVhZCA9IG51bVRvUmVhZDsKKyAgICAgICAgICAgIG1fcG9zaXRp
b24gKz0gbnVtVG9SZWFkOworICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0Nv
bXBsZXRlZCk7CisgICAgICAgIH0KKworICAgICAgICBtZW1jcHkob3V0cHV0QnVmZmVyLCBtX2Rh
dGEuZGF0YSgpICsgbV9wb3NpdGlvbiwgbnVtQXZhaWxhYmxlKTsKKyAgICAgICAgKm51bUFjdHVh
bGx5UmVhZCA9IG51bUF2YWlsYWJsZTsKKyAgICAgICAgbV9wb3NpdGlvbiArPSBudW1BdmFpbGFi
bGU7CisgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tQYXJ0aWFsKTsKKyAgICB9CisK
KyAgICBTdGF0dXMgU2tpcCh1aW50NjRfdCBudW1Ub1NraXAsIHVpbnQ2NF90KiBudW1BY3R1YWxs
eVNraXBwZWQpIGZpbmFsCisgICAgeworICAgICAgICBBU1NFUlQobnVtQWN0dWFsbHlTa2lwcGVk
KTsKKyAgICAgICAgaWYgKCFudW1BY3R1YWxseVNraXBwZWQpCisgICAgICAgICAgICByZXR1cm4g
U3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisKKyAgICAgICAgaWYgKG1fcG9zaXRp
b24gPj0gbV9kYXRhLnNpemUoKSkgeworICAgICAgICAgICAgKm51bUFjdHVhbGx5U2tpcHBlZCA9
IDA7CisgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a1dvdWxkQmxvY2spOworICAg
ICAgICB9CisKKyAgICAgICAgc2l6ZV90IG51bUF2YWlsYWJsZSA9IG1fZGF0YS5zaXplKCkgLSBt
X3Bvc2l0aW9uOworCisgICAgICAgIGlmIChudW1Ub1NraXAgPCBudW1BdmFpbGFibGUpIHsKKyAg
ICAgICAgICAgICpudW1BY3R1YWxseVNraXBwZWQgPSBudW1Ub1NraXA7CisgICAgICAgICAgICBt
X3Bvc2l0aW9uICs9IG51bVRvU2tpcDsKKyAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVz
OjprT2tDb21wbGV0ZWQpOworICAgICAgICB9CisKKyAgICAgICAgKm51bUFjdHVhbGx5U2tpcHBl
ZCA9IG51bUF2YWlsYWJsZTsKKyAgICAgICAgbV9wb3NpdGlvbiArPSBudW1BdmFpbGFibGU7Cisg
ICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tQYXJ0aWFsKTsKKyAgICB9CisKKyAgICB1
aW50NjRfdCBQb3NpdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcG9zaXRpb247IH0KKwor
cHJpdmF0ZToKKyAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gbV9kYXRhOworICAgIHNpemVfdCBt
X3Bvc2l0aW9uIHsgMCB9OworfTsKKworY2xhc3MgTWVkaWFEZXNjcmlwdGlvbldlYk0gZmluYWwg
OiBwdWJsaWMgTWVkaWFEZXNjcmlwdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxNZWRp
YURlc2NyaXB0aW9uV2ViTT4gY3JlYXRlKHdlYm06OlRyYWNrRW50cnkmJiB0cmFjaykKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhRGVzY3JpcHRpb25XZWJNKFdURk1v
dmUodHJhY2spKSk7CisgICAgfQorCisgICAgTWVkaWFEZXNjcmlwdGlvbldlYk0od2VibTo6VHJh
Y2tFbnRyeSYmIHRyYWNrKQorICAgICAgICA6IG1fdHJhY2sgeyBXVEZNb3ZlKHRyYWNrKSB9Cisg
ICAgeworICAgIH0KKworICAgIEF0b21TdHJpbmcgY29kZWMoKSBjb25zdCBmaW5hbAorICAgIHsK
KyAgICAgICAgaWYgKG1fY29kZWMpCisgICAgICAgICAgICByZXR1cm4gKm1fY29kZWM7CisKKyAg
ICAgICAgLy8gRnJvbTogaHR0cHM6Ly93d3cubWF0cm9za2Eub3JnL3RlY2huaWNhbC9jb2RlY19z
cGVjcy5odG1sCisgICAgICAgIC8vICJFYWNoIENvZGVjIElEIE1VU1QgaW5jbHVkZSBhIE1ham9y
IENvZGVjIElEIGltbWVkaWF0ZWx5IGZvbGxvd2luZyB0aGUgQ29kZWMgSUQgUHJlZml4LgorICAg
ICAgICAvLyBBIE1ham9yIENvZGVjIElEIE1BWSBiZSBmb2xsb3dlZCBieSBhbiBPUFRJT05BTCBD
b2RlYyBJRCBTdWZmaXggdG8gY29tbXVuaWNhdGUgYSByZWZpbmVtZW50CisgICAgICAgIC8vIG9m
IHRoZSBNYWpvciBDb2RlYyBJRC4gSWYgYSBDb2RlYyBJRCBTdWZmaXggaXMgdXNlZCwgdGhlbiB0
aGUgQ29kZWMgSUQgTVVTVCBpbmNsdWRlIGEgZm9yd2FyZAorICAgICAgICAvLyBzbGFzaCAo4oCc
L+KAnSkgYXMgYSBzZXBhcmF0b3IgYmV0d2VlbiB0aGUgTWFqb3IgQ29kZWMgSUQgYW5kIHRoZSBD
b2RlYyBJRCBTdWZmaXguIFRoZSBNYWpvciBDb2RlYworICAgICAgICAvLyBJRCBNVVNUIGJlIGNv
bXBvc2VkIG9mIG9ubHkgY2FwaXRhbCBsZXR0ZXJzIChBLVopIGFuZCBudW1iZXJzICgwLTkpLiBU
aGUgQ29kZWMgSUQgU3VmZml4IE1VU1QKKyAgICAgICAgLy8gYmUgY29tcG9zZWQgb2Ygb25seSBj
YXBpdGFsIGxldHRlcnMgKEEtWiksIG51bWJlcnMgKDAtOSksIHVuZGVyc2NvcmUgKOKAnF/igJ0p
LCBhbmQgZm9yd2FyZCBzbGFzaCAo4oCcL+KAnSkuIgorCisgICAgICAgIGlmICghbV90cmFjay5j
b2RlY19pZC5pc19wcmVzZW50KCkpIHsKKyAgICAgICAgICAgIG1fY29kZWMgPSBlbXB0eUF0b20o
KTsKKyAgICAgICAgICAgIHJldHVybiAqbV9jb2RlYzsKKyAgICAgICAgfQorCisgICAgICAgIFN0
cmluZ1ZpZXcgY29kZWNJRCB7IG1fdHJhY2suY29kZWNfaWQudmFsdWUoKS5kYXRhKCksICh1bnNp
Z25lZCltX3RyYWNrLmNvZGVjX2lkLnZhbHVlKCkubGVuZ3RoKCkgfTsKKyAgICAgICAgaWYgKCFj
b2RlY0lELnN0YXJ0c1dpdGgoIlZfIikgJiYgIWNvZGVjSUQuc3RhcnRzV2l0aCgiQV8iKSAmJiAh
Y29kZWNJRC5zdGFydHNXaXRoKCJTXyIpKSB7CisgICAgICAgICAgICBtX2NvZGVjID0gZW1wdHlB
dG9tKCk7CisgICAgICAgICAgICByZXR1cm4gKm1fY29kZWM7CisgICAgICAgIH0KKworICAgICAg
ICBhdXRvIHNsYXNoTG9jYXRpb24gPSBjb2RlY0lELmZpbmQoJy8nKTsKKyAgICAgICAgYXV0byBs
ZW5ndGggPSBzbGFzaExvY2F0aW9uID09IG5vdEZvdW5kID8gY29kZWNJRC5sZW5ndGgoKSAtIDIg
OiBzbGFzaExvY2F0aW9uIC0gMjsKKyAgICAgICAgbV9jb2RlYyA9IEF0b21TdHJpbmcgeyBjb2Rl
Y0lELnN1YnN0cmluZygyLCBsZW5ndGgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgfTsKKyAg
ICAgICAgcmV0dXJuICptX2NvZGVjOworICAgIH0KKyAgICBib29sIGlzVmlkZW8oKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX3RyYWNrLnRyYWNrX3R5cGUuaXNfcHJlc2VudCgpICYmIG1fdHJhY2su
dHJhY2tfdHlwZS52YWx1ZSgpID09IFRyYWNrVHlwZTo6a1ZpZGVvOyB9CisgICAgYm9vbCBpc0F1
ZGlvKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90cmFjay50cmFja190eXBlLmlzX3ByZXNlbnQo
KSAmJiBtX3RyYWNrLnRyYWNrX3R5cGUudmFsdWUoKSA9PSBUcmFja1R5cGU6OmtBdWRpbzsgfQor
ICAgIGJvb2wgaXNUZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90cmFjay50cmFja190eXBl
LmlzX3ByZXNlbnQoKSAmJiBtX3RyYWNrLnRyYWNrX3R5cGUudmFsdWUoKSA9PSBUcmFja1R5cGU6
OmtTdWJ0aXRsZTsgfQorCisgICAgY29uc3Qgd2VibTo6VHJhY2tFbnRyeSYgdHJhY2soKSB7IHJl
dHVybiBtX3RyYWNrOyB9CisKK3ByaXZhdGU6CisgICAgbXV0YWJsZSBPcHRpb25hbDxBdG9tU3Ry
aW5nPiBtX2NvZGVjOworICAgIHdlYm06OlRyYWNrRW50cnkgbV90cmFjazsKK307CisKK3N0YXRp
YyBWZWN0b3I8U3RyaW5nPiBzdXBwb3J0ZWRXZWJNQ29kZWNzKCkKK3sKKyAgICBhdXRvIGNvZGVj
cyA9IG1ha2VOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3RyaW5nPj4oeworICAgICAgICAidnAwOSIs
CisgICAgICAgICJ2b3JiaXMiLAorICAgICAgICAib3B1cyIsCisgICAgfSk7CisgICAgcmV0dXJu
IGNvZGVjczsKK30KKworYm9vbCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppc0NvbnRlbnRUeXBl
U3VwcG9ydGVkKGNvbnN0IENvbnRlbnRUeXBlJiB0eXBlKQoreworICAgIGlmICghaXNXZWJtUGFy
c2VyQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghV1RGOjpl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKHR5cGUuY29udGFpbmVyVHlwZSgpLCAiYXVkaW8vd2VibSIp
CisgICAgICAgICYmICFXVEY6OmVxdWFsSWdub3JpbmdBU0NJSUNhc2UodHlwZS5jb250YWluZXJU
eXBlKCksICJ2aWRlby93ZWJtIikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFN0cmlu
ZyBjb2RlY3NQYXJhbWV0ZXIgPSB0eXBlLnBhcmFtZXRlcihDb250ZW50VHlwZTo6Y29kZWNzUGFy
YW1ldGVyKCkpOworICAgIGlmICghY29kZWNzUGFyYW1ldGVyKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgIGF1dG8gc3BsaXRSZXN1bHRzID0gU3RyaW5nVmlldyhjb2RlY3NQYXJhbWV0ZXIp
LnNwbGl0KCcsJyk7CisgICAgZm9yIChhdXRvIHNwbGl0IDogc3BsaXRSZXN1bHRzKSB7CisgICAg
ICAgIHJldHVybiBXVEY6OmFueU9mKHN1cHBvcnRlZFdlYk1Db2RlY3MoKSwgWyZdKGF1dG8mIGNv
ZGVjKSB7CisgICAgICAgICAgICByZXR1cm4gc3BsaXQuc3RhcnRzV2l0aChjb2RlYyk7CisgICAg
ICAgIH0pOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworU291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpCit7CisgICAgaWYgKGlzV2VibVBhcnNlckF2
YWlsYWJsZSgpKQorICAgICAgICBtX3BhcnNlciA9IFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s8V2VibVBhcnNlcj4oKTsKK30KKworU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
flNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKSA9IGRlZmF1bHQ7CisKK3ZvaWQgU291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6YXBwZW5kRGF0YShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBidWZmZXIsIEFw
cGVuZEZsYWdzIGFwcGVuZEZsYWdzKQoreworICAgIGlmICghbV9wYXJzZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIFZlY3RvclJlYWRlciByZWFkZXIgeyBXVEZNb3ZlKGJ1ZmZlcikgfTsKKyAg
ICBpZiAoYXBwZW5kRmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCisgICAgICAg
IG1fcGFyc2VyLT5EaWRTZWVrKCk7CisgICAgbV9zdGF0dXMgPSBtX3BhcnNlci0+RmVlZCh0aGlz
LCAmcmVhZGVyKTsKKyAgICBpZiAobV9zdGF0dXMub2soKSB8fCBtX3N0YXR1cy5jb2RlID09IFN0
YXR1czo6a0VuZE9mRmlsZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FsbE9uTWFpblRocmVh
ZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb2RlID0gbV9zdGF0dXMu
Y29kZV0geworICAgICAgICBpZiAobV9kaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxs
YmFjaykKKyAgICAgICAgICAgIG1fZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJh
Y2soY29kZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6Zmx1
c2hQZW5kaW5nTWVkaWFEYXRhKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFj
a0lEKGJvb2wsIGludDMyX3QpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpzaG91bGRQcm92aWRlTWVkaWFkYXRhRm9yVHJhY2tJRChp
bnQzMl90KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnJlc2V0UGFyc2VyU3RhdGUoKQoreworICAg
IG1fcGFyc2VyLT5EaWRTZWVrKCk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpOb25lOworfQorCitT
dGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FbGVtZW50QmVnaW4oY29uc3QgRWxlbWVu
dE1ldGFkYXRhJiBtZXRhZGF0YSwgQWN0aW9uKiBhY3Rpb24pCit7CisgICAgVU5VU0VEX1BBUkFN
KG1ldGFkYXRhKTsKKyAgICBBU1NFUlQoYWN0aW9uKTsKKyAgICBpZiAoIWFjdGlvbikKKyAgICAg
ICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworCisgICAgaWYgKCht
X3N0YXRlID09IFN0YXRlOjpOb25lICYmIG1ldGFkYXRhLmlkICE9IElkOjprRWJtbCkKKyAgICAg
ICAgfHwgKG1fc3RhdGUgPT0gU3RhdGU6OlJlYWRFYm1sICYmIG1ldGFkYXRhLmlkICE9IElkOjpr
U2VnbWVudCkKKyAgICAgICAgfHwgKG1fc3RhdGUgPT0gU3RhdGU6OlJlYWRpbmdTZWdtZW50ICYm
IG1ldGFkYXRhLmlkICE9IElkOjprSW5mbykKKyAgICAgICAgfHwgKG1fc3RhdGUgPT0gU3RhdGU6
OlJlYWRJbmZvICYmIG1ldGFkYXRhLmlkICE9IElkOjprVHJhY2tzKQorICAgICAgICB8fCAobV9z
dGF0ZSA9PSBTdGF0ZTo6UmVhZFRyYWNrICYmIG1ldGFkYXRhLmlkICE9IElkOjprVHJhY2tFbnRy
eSAmJiBtZXRhZGF0YS5pZCAhPSBJZDo6a0NsdXN0ZXIpCisgICAgICAgIHx8IChtZXRhZGF0YS5p
ZCA9PSBJZDo6a0N1ZXMgfHwgbWV0YWRhdGEuaWQgPT0gSWQ6OmtDaGFwdGVycykpIHsKKyAgICAg
ICAgKmFjdGlvbiA9IEFjdGlvbjo6a1NraXA7CisgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVz
OjprT2tDb21wbGV0ZWQpOworICAgIH0KKworICAgIGlmIChtZXRhZGF0YS5pZCA9PSBJZDo6a0Vi
bWwpCisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZGluZ0VibWw7CisgICAgZWxzZSBpZiAo
bWV0YWRhdGEuaWQgPT0gSWQ6OmtTZWdtZW50KQorICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlJl
YWRpbmdTZWdtZW50OworICAgIGVsc2UgaWYgKG1ldGFkYXRhLmlkID09IElkOjprSW5mbykKKyAg
ICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkaW5nSW5mbzsKKyAgICBlbHNlIGlmIChtZXRhZGF0
YS5pZCA9PSBJZDo6a1RyYWNrcykKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkaW5nVHJh
Y2tzOworICAgIGVsc2UgaWYgKG1ldGFkYXRhLmlkID09IElkOjprVHJhY2tFbnRyeSkKKyAgICAg
ICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkaW5nVHJhY2s7CisgICAgZWxzZSBpZiAobWV0YWRhdGEu
aWQgPT0gSWQ6OmtDbHVzdGVyKQorICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWRpbmdDbHVz
dGVyOworCisgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7Cit9CisKK1N0
YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkVibWwoY29uc3QgRWxlbWVudE1ldGFkYXRh
JiBtZXRhZGF0YSwgY29uc3QgRWJtbCYgZWJtbCkKK3sKKyAgICBVTlVTRURfUEFSQU0obWV0YWRh
dGEpOworICAgIGlmIChlYm1sLmRvY190eXBlLmlzX3ByZXNlbnQoKSAmJiBlYm1sLmRvY190eXBl
LnZhbHVlKCkuY29tcGFyZSgid2VibSIpKQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6
Q29kZShFcnJvckNvZGU6OkludmFsaWREb2NUeXBlKSk7CisKKyAgICBtX2luaXRpYWxpemF0aW9u
U2VnbWVudEVuY291bnRlcmVkID0gdHJ1ZTsKKyAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudCA9
IFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8SW5pdGlhbGl6YXRpb25TZWdt
ZW50PigpOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZEVibWw7CisKKyAgICByZXR1cm4gU3Rh
dHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKK30KKworU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNl
cldlYk06Ok9uU2VnbWVudEJlZ2luKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIEFj
dGlvbiogYWN0aW9uKQoreworICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CisgICAgaWYgKCFt
X2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkKQorICAgICAgICByZXR1cm4gU3RhdHVz
KFN0YXR1czo6Q29kZShFcnJvckNvZGU6OkludmFsaWRJbml0U2VnbWVudCkpOworCisgICAgQVNT
RVJUKGFjdGlvbik7CisgICAgaWYgKCFhY3Rpb24pCisgICAgICAgIHJldHVybiBTdGF0dXMoU3Rh
dHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKyAgICAqYWN0aW9uID0gQWN0aW9uOjprUmVhZDsKKwor
ICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworfQorCitTdGF0dXMgU291
cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25JbmZvKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRh
dGEsIGNvbnN0IEluZm8mIGluZm8pCit7CisgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKKyAg
ICBpZiAoIW1faW5pdGlhbGl6YXRpb25TZWdtZW50RW5jb3VudGVyZWQgfHwgIW1faW5pdGlhbGl6
YXRpb25TZWdtZW50KQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6Q29kZShFcnJvckNv
ZGU6OkludmFsaWRJbml0U2VnbWVudCkpOworCisgICAgYXV0byB0aW1lY29kZVNjYWxlID0gaW5m
by50aW1lY29kZV9zY2FsZS5pc19wcmVzZW50KCkgPyBpbmZvLnRpbWVjb2RlX3NjYWxlLnZhbHVl
KCkgOiAxMDAwMDAwOworICAgIG1fdGltZXNjYWxlID0gMTAwMDAwMDAwMCAvIHRpbWVjb2RlU2Nh
bGU7CisgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnQtPmR1cmF0aW9uID0gaW5mby5kdXJhdGlv
bi5pc19wcmVzZW50KCkgPyBNZWRpYVRpbWUoaW5mby5kdXJhdGlvbi52YWx1ZSgpLCBtX3RpbWVz
Y2FsZSkgOiBNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCk7CisgICAgbV9zdGF0ZSA9IFN0YXRl
OjpSZWFkSW5mbzsKKworICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOwor
fQorCitTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25DbHVzdGVyQmVnaW4oY29uc3Qg
RWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uc3QgQ2x1c3RlciYgY2x1c3RlciwgQWN0aW9u
KiBhY3Rpb24pCit7CisgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKKyAgICBVTlVTRURfUEFS
QU0oY2x1c3Rlcik7CisgICAgQVNTRVJUKGFjdGlvbik7CisgICAgaWYgKCFhY3Rpb24pCisgICAg
ICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKworICAgIGlmICht
X2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkICYmIG1fZGlkUGFyc2VJbml0aWFsaXph
dGlvbkRhdGFDYWxsYmFjaykgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluaXRpYWxpemF0aW9uU2VnbWVudCA9IFdURk1v
dmUoKm1faW5pdGlhbGl6YXRpb25TZWdtZW50KV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBt
X2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soV1RGTW92ZShpbml0aWFsaXphdGlv
blNlZ21lbnQpKTsKKyAgICAgICAgfSk7CisgICAgfQorICAgIG1faW5pdGlhbGl6YXRpb25TZWdt
ZW50RW5jb3VudGVyZWQgPSBmYWxzZTsKKyAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudCA9IG51
bGxwdHI7CisKKyAgICAqYWN0aW9uID0gQWN0aW9uOjprUmVhZDsKKworICAgIHJldHVybiBTdGF0
dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworfQorCitTdGF0dXMgU291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6T25UcmFja0VudHJ5KGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0
IFRyYWNrRW50cnkmIHRyYWNrRW50cnkpCit7CisgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsK
KyAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWRUcmFjazsKKyAgICBpZiAoIXRyYWNrRW50cnkudHJh
Y2tfdHlwZS5pc19wcmVzZW50KCkpCisgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tD
b21wbGV0ZWQpOworCisgICAgYXV0byB0cmFja1R5cGUgPSB0cmFja0VudHJ5LnRyYWNrX3R5cGUu
dmFsdWUoKTsKKyAgICBpZiAodHJhY2tUeXBlID09IFRyYWNrVHlwZTo6a1ZpZGVvKQorICAgICAg
ICBtX2luaXRpYWxpemF0aW9uU2VnbWVudC0+dmlkZW9UcmFja3MuYXBwZW5kKHsgTWVkaWFEZXNj
cmlwdGlvbldlYk06OmNyZWF0ZShUcmFja0VudHJ5KHRyYWNrRW50cnkpKSwgVmlkZW9UcmFja1By
aXZhdGVXZWJNOjpjcmVhdGUoVHJhY2tFbnRyeSh0cmFja0VudHJ5KSkgfSk7CisgICAgZWxzZSBp
ZiAodHJhY2tUeXBlID09IFRyYWNrVHlwZTo6a0F1ZGlvKQorICAgICAgICBtX2luaXRpYWxpemF0
aW9uU2VnbWVudC0+YXVkaW9UcmFja3MuYXBwZW5kKHsgTWVkaWFEZXNjcmlwdGlvbldlYk06OmNy
ZWF0ZShUcmFja0VudHJ5KHRyYWNrRW50cnkpKSwgQXVkaW9UcmFja1ByaXZhdGVXZWJNOjpjcmVh
dGUoVHJhY2tFbnRyeSh0cmFja0VudHJ5KSkgfSk7CisKKyAgICByZXR1cm4gU3RhdHVzKFN0YXR1
czo6a09rQ29tcGxldGVkKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NPVVJD
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZWI0ODBmMjc4ODg5
OWU4YTNjZjQ3Mzc2ZTUyMDJhNTlhZTg2ZTU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCkBA
IC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQorCisjaW5jbHVkZSAiU291cmNlQnVmZmVyUGFyc2VyLmgiCisjaW5jbHVk
ZSA8d2VibS9jYWxsYmFjay5oPgorI2luY2x1ZGUgPHdlYm0vc3RhdHVzLmg+CisjaW5jbHVkZSA8
d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL01l
ZGlhVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKwordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNN
U2FtcGxlQnVmZmVyUmVmOworCituYW1lc3BhY2Ugd2VibSB7CitjbGFzcyBXZWJtUGFyc2VyOwor
fQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0g
OiBwdWJsaWMgU291cmNlQnVmZmVyUGFyc2VyLCBwcml2YXRlIHdlYm06OkNhbGxiYWNrIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBpc0NvbnRlbnRUeXBlU3VwcG9ydGVkKGNvbnN0IENvbnRl
bnRUeXBlJik7CisKKyAgICBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNKCk7CisgICAgflNvdXJjZUJ1
ZmZlclBhcnNlcldlYk0oKTsKKworICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CisKKyAg
ICBjb25zdCB3ZWJtOjpTdGF0dXMmIHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9
CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBUeXBlOjpXZWJNOyB9CisgICAgdm9p
ZCBhcHBlbmREYXRhKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmLCBBcHBlbmRGbGFncyA9IEFwcGVu
ZEZsYWdzOjpOb25lKSBmaW5hbDsKKyAgICB2b2lkIGZsdXNoUGVuZGluZ01lZGlhRGF0YSgpIGZp
bmFsOworICAgIHZvaWQgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoYm9vbCwg
aW50MzJfdCkgZmluYWw7CisgICAgYm9vbCBzaG91bGRQcm92aWRlTWVkaWFkYXRhRm9yVHJhY2tJ
RChpbnQzMl90KSBmaW5hbDsKKyAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKKwor
ICAgIGVudW0gY2xhc3MgRXJyb3JDb2RlIDogaW50MzJfdCB7CisgICAgICAgIFNvdXJjZUJ1ZmZl
clBhcnNlcldlYk1FcnJvckNvZGVTdGFydCA9IDIwMDAsCisgICAgICAgIEludmFsaWREb2NUeXBl
LAorICAgICAgICBJbnZhbGlkSW5pdFNlZ21lbnQsCisgICAgfTsKKworcHJpdmF0ZToKKyAgICAv
LyB3ZWJtOjpDYWxsYmFjaworICAgIHdlYm06OlN0YXR1cyBPbkVsZW1lbnRCZWdpbihjb25zdCB3
ZWJtOjpFbGVtZW50TWV0YWRhdGEmLCB3ZWJtOjpBY3Rpb24qKSBmaW5hbDsKKyAgICB3ZWJtOjpT
dGF0dXMgT25FYm1sKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYsIGNvbnN0IHdlYm06OkVi
bWwmKSBmaW5hbDsKKyAgICB3ZWJtOjpTdGF0dXMgT25TZWdtZW50QmVnaW4oY29uc3Qgd2VibTo6
RWxlbWVudE1ldGFkYXRhJiwgd2VibTo6QWN0aW9uKikgZmluYWw7CisgICAgd2VibTo6U3RhdHVz
IE9uSW5mbyhjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmLCBjb25zdCB3ZWJtOjpJbmZvJikg
ZmluYWw7CisgICAgd2VibTo6U3RhdHVzIE9uQ2x1c3RlckJlZ2luKGNvbnN0IHdlYm06OkVsZW1l
bnRNZXRhZGF0YSYsIGNvbnN0IHdlYm06OkNsdXN0ZXImLCB3ZWJtOjpBY3Rpb24qKSBmaW5hbDsK
KyAgICB3ZWJtOjpTdGF0dXMgT25UcmFja0VudHJ5KGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0
YSYsIGNvbnN0IHdlYm06OlRyYWNrRW50cnkmKSBmaW5hbDsKKworICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbml0aWFsaXphdGlvblNlZ21lbnQ+IG1faW5pdGlhbGl6YXRpb25TZWdtZW50OworICAgIHdl
Ym06OlN0YXR1cyBtX3N0YXR1czsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VibTo6V2VibVBhcnNl
cj4gbV9wYXJzZXI7CisgICAgYm9vbCBtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVk
IHsgZmFsc2UgfTsKKyAgICB1aW50MzJfdCBtX3RpbWVzY2FsZSB7IDEwMDAgfTsKKworICAgIGVu
dW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsKKyAgICAgICAgTm9uZSwKKyAgICAgICAgUmVhZGlu
Z0VibWwsCisgICAgICAgIFJlYWRFYm1sLAorICAgICAgICBSZWFkaW5nU2VnbWVudCwKKyAgICAg
ICAgUmVhZGluZ0luZm8sCisgICAgICAgIFJlYWRJbmZvLAorICAgICAgICBSZWFkaW5nVHJhY2tz
LAorICAgICAgICBSZWFkaW5nVHJhY2ssCisgICAgICAgIFJlYWRUcmFjaywKKyAgICAgICAgUmVh
ZGluZ0NsdXN0ZXIsCisgICAgfTsKKyAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6Ok5vbmUgfTsK
KworICAgIFZlY3Rvcjx3ZWJtOjpUcmFja0VudHJ5PiBtX3RyYWNrczsKK307CisKK30KKworU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJz
ZXImIHBhcnNlcikgeyByZXR1cm4gcGFyc2VyLnR5cGUoKSA9PSBXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXI6OlR5cGU6OldlYk07IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwor
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tCmluZGV4
IDU2ODU5NTMzZGViNmFlY2M5MGM1N2UxOTUxMmNmZGQ4ZTBlMmU0YjEuLjBjN2VkMmNhOWI3ZWU3
MTlhMTViNTBmMmY1MjI0N2NmN2FlZGViMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tCkBAIC0x
MjIsNyArMTIyLDcgQEAgYm9vbCB2YWxpZGF0ZVZQUGFyYW1ldGVycyhWUENvZGVjQ29uZmlndXJh
dGlvblJlY29yZCYgY29kZWNDb25maWd1cmF0aW9uLCBNZWRpYUMKICAgICAgICAgaW5mby5wb3dl
ckVmZmljaWVudCA9IHRydWU7CiAKICAgICAgICAgLy8gSFcgVlA5IERlY29kZXIgc3VwcG9ydHMg
UHJvZmlsZSAwICYgMjoKLSAgICAgICAgaWYgKCFjb2RlY0NvbmZpZ3VyYXRpb24ucHJvZmlsZSAm
JiBjb2RlY0NvbmZpZ3VyYXRpb24ucHJvZmlsZSAhPSAyKQorICAgICAgICBpZiAoY29kZWNDb25m
aWd1cmF0aW9uLnByb2ZpbGUgJiYgY29kZWNDb25maWd1cmF0aW9uLnByb2ZpbGUgIT0gMikKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAvLyBIVyBWUDkgRGVjb2RlciBzdXBw
b3J0cyB1cCB0byBMZXZlbCA2OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmEzNGYyZTU4M2ZlY2JkYTM0Zjc1N2JiMmIzMTk3ZjNlZmNlODIzMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJh
Y2tQcml2YXRlV2ViTS5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaCIKKworI2lmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFZpZGVvVHJh
Y2tQcml2YXRlV2ViTT4gVmlkZW9UcmFja1ByaXZhdGVXZWJNOjpjcmVhdGUod2VibTo6VHJhY2tF
bnRyeSYmIHRyYWNrRW50cnkpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFj
a1ByaXZhdGVXZWJNKFdURk1vdmUodHJhY2tFbnRyeSkpKTsKK30KKworVmlkZW9UcmFja1ByaXZh
dGVXZWJNOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk0od2VibTo6VHJhY2tFbnRyeSYmIHRyYWNrRW50
cnkpCisgICAgOiBtX3RyYWNrKFdURk1vdmUodHJhY2tFbnRyeSkpCit7CisgICAgaWYgKG1fdHJh
Y2suaXNfZW5hYmxlZC5pc19wcmVzZW50KCkpCisgICAgICAgIHNldFNlbGVjdGVkKG1fdHJhY2su
aXNfZW5hYmxlZC52YWx1ZSgpKTsKK30KKworQXRvbVN0cmluZyBWaWRlb1RyYWNrUHJpdmF0ZVdl
Yk06OmlkKCkgY29uc3QKK3sKKyAgICBpZiAobV90cmFja0lELmlzTnVsbCgpKQorICAgICAgICBt
X3RyYWNrSUQgPSBtX3RyYWNrLnRyYWNrX3VpZC5pc19wcmVzZW50KCkgPyBBdG9tU3RyaW5nOjpu
dW1iZXIobV90cmFjay50cmFja191aWQudmFsdWUoKSkgOiBlbXB0eUF0b20oKTsKKyAgICByZXR1
cm4gbV90cmFja0lEOworfQorCitBdG9tU3RyaW5nIFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6bGFi
ZWwoKSBjb25zdAoreworICAgIGlmIChtX2xhYmVsLmlzTnVsbCgpKQorICAgICAgICBtX2xhYmVs
ID0gbV90cmFjay5uYW1lLmlzX3ByZXNlbnQoKSA/IEF0b21TdHJpbmc6OmZyb21VVEY4KG1fdHJh
Y2submFtZS52YWx1ZSgpLmRhdGEoKSwgbV90cmFjay5uYW1lLnZhbHVlKCkubGVuZ3RoKCkpIDog
ZW1wdHlBdG9tKCk7CisgICAgcmV0dXJuIG1fbGFiZWw7Cit9CisKK0F0b21TdHJpbmcgVmlkZW9U
cmFja1ByaXZhdGVXZWJNOjpsYW5ndWFnZSgpIGNvbnN0Cit7CisgICAgaWYgKG1fbGFuZ3VhZ2Uu
aXNOdWxsKCkpCisgICAgICAgIG1fbGFuZ3VhZ2UgPSBtX3RyYWNrLmxhbmd1YWdlLmlzX3ByZXNl
bnQoKSA/IEF0b21TdHJpbmc6OmZyb21VVEY4KG1fdHJhY2subGFuZ3VhZ2UudmFsdWUoKS5kYXRh
KCksIG1fdHJhY2subGFuZ3VhZ2UudmFsdWUoKS5sZW5ndGgoKSkgOiBlbXB0eUF0b20oKTsKKyAg
ICByZXR1cm4gbV9sYW5ndWFnZTsKK30KKworaW50IFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6dHJh
Y2tJbmRleCgpIGNvbnN0Cit7CisgICAgaWYgKG1fdHJhY2sudHJhY2tfbnVtYmVyLmlzX3ByZXNl
bnQoKSkKKyAgICAgICAgcmV0dXJuIG1fdHJhY2sudHJhY2tfbnVtYmVyLnZhbHVlKCk7CisgICAg
cmV0dXJuIDA7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNr
UHJpdmF0ZVdlYk0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Zp
ZGVvVHJhY2tQcml2YXRlV2ViTS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhMDhlZTUwZDI3YWFhZjE4ZDRhZmVl
ZmQ3ZjdjNzUwZTQ2NmRhNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaApAQCAtMCwwICsxLDU1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNF
KQorCisjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3ZWJtL2RvbV90
eXBlcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZpZGVvVHJhY2tQcml2YXRl
V2ViTSBmaW5hbCA6IHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZSB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZVdlYk0+IGNyZWF0ZSh3ZWJtOjpUcmFja0VudHJ5JiYp
OworICAgIHZpcnR1YWwgflZpZGVvVHJhY2tQcml2YXRlV2ViTSgpID0gZGVmYXVsdDsKKworICAg
IEF0b21TdHJpbmcgaWQoKSBjb25zdCBmaW5hbDsKKyAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29u
c3QgZmluYWw7CisgICAgQXRvbVN0cmluZyBsYW5ndWFnZSgpIGNvbnN0IGZpbmFsOworICAgIGlu
dCB0cmFja0luZGV4KCkgY29uc3QgZmluYWw7CisKK3ByaXZhdGU6CisgICAgVmlkZW9UcmFja1By
aXZhdGVXZWJNKHdlYm06OlRyYWNrRW50cnkmJik7CisgICAgd2VibTo6VHJhY2tFbnRyeSBtX3Ry
YWNrOworICAgIG11dGFibGUgQXRvbVN0cmluZyBtX3RyYWNrSUQ7CisgICAgbXV0YWJsZSBBdG9t
U3RyaW5nIG1fbGFiZWw7CisgICAgbXV0YWJsZSBBdG9tU3RyaW5nIG1fbGFuZ3VhZ2U7Cit9Owor
Cit9CisKKyNlbmRpZiBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlByZWZlcmVuY2VzLnlhbWwKaW5kZXggZTA0Y2FkY2EyZGM1YThjNDE5YjcyZmExOWVlNzNmZTcz
YTEwYjYwMS4uNDJiMDQ5NzA5YjNmZTA4ZWEzMGZjNWRkOTZmNjgxYmY2YzdjMTYyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCkBAIC02NjgsNiArNjY4LDE1IEBA
IFZQOURlY29kZXJFbmFibGVkOgogICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJFbmFibGUg
VlA5IGRlY29kZXIiCiAgIGNhdGVnb3J5OiBleHBlcmltZW50YWwKIAorV2ViTVBhcnNlckVuYWJs
ZWQ6CisgIHR5cGU6IGJvb2wKKyAgZGVmYXVsdFZhbHVlOiBmYWxzZQorICB3ZWJjb3JlQmluZGlu
ZzogUnVudGltZUVuYWJsZWRGZWF0dXJlcworICBodW1hblJlYWRhYmxlTmFtZTogIldlYk0gTVNF
IHBhcnNlciIKKyAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIFdlYk0gTVNFIHBh
cnNlciIKKyAgY2F0ZWdvcnk6IGV4cGVyaW1lbnRhbAorICBjb25kaXRpb246IEVOQUJMRShNRURJ
QV9TT1VSQ0UpCisKIFVzZUxlZ2FjeVRleHRBbGlnblBvc2l0aW9uZWRFbGVtZW50QmVoYXZpb3I6
CiAgIHR5cGU6IGJvb2wKICAgZGVmYXVsdFZhbHVlOiBmYWxzZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404672</attachid>
            <date>2020-07-19 09:06:50 -0700</date>
            <delta_ts>2020-07-19 09:09:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214529-20200719090649.patch</filename>
            <type>text/plain</type>
            <size>139292</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBhY2ZhNzFkMTE0MWY2M2Q0ZWYxMGJkMmY2NjE5YzcxYTNhNWU4ZTQxLi41MGE1
MmNkNTIxZDljMGEzYzQ3N2U5MzhkZTc5MmNiZDdiNjVlYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNy0xOSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBleHBlcmltZW50
YWwgTVNFIFdlYk0gcGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTQ1MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUd28gZHJpdmUtYnkgZml4ZXM6IEFkZCBzb21lIG1pc3NpbmcgZXhwb3J0IHRv
IHRoZSBsaWJ3ZWJydGMuKi5leHAgZmlsZXMsIGFuZCBleHBvcnQgdGhlIHdlYm0gaGVhZGVycwor
ICAgICAgICBhcyBQcml2YXRlLCBub3QgUHVibGljLCBzbyB0aGV5J3JlIHB1dCBpbiB0aGUgY29y
cmVjdCBkaXJlY3RvcnkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9T
LmV4cDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBsaWJ3
ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wNy0xNyAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldml3ZWQgYnVpbGQgZml4IGFm
dGVyIHIyNjU1OTI7IHJhdGhlciB0aGFuIHJlbW92ZSB0aGUgZGVhZCBjb2RlIGNhdXNpbmcgbGlu
ayBlcnJvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMzdjZDRhNGM4YzYwYmM0ZjViOTkxZGQyOGJkMDIxOThj
ZjQzMmE4Li43Mzc4Mjc4MTVlNDIyYzVlNTllMGIxZWE0ZGU2MTA5YmJhNDlhNGEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQ0IEBACisyMDIwLTA3LTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIGV4cGVyaW1lbnRhbCBNU0UgV2ViTSBw
YXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NDUyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgeWV0IHBhcnNlIGFjdHVhbCBtZWRpYSBzYW1wbGVz
OyBhcyBvZiB5ZXQgaXQgb25seSBwYXJzZXMgYXVkaW8gYW5kIHZpZGVvCisgICAgICAgIHRyYWNr
IGluZm9ybWF0aW9uLiBNZWRpYSBzYW1wbGUgcGFyc2luZyBpcyB1cGNvbWluZy4KKworICAgICAg
ICBBZGQgYW4gZXhwZXJpbWVudGFsIE1TRSBXZWJNIHBhcnNlciB0byBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy4gVGhpcyB3aWxsIHJlcXVpcmUgZXh0ZW5zaXZlIHJlZmFjdG9yaW5nCisgICAg
ICAgIG9mIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLCB0byBleHRyYWN0IG91dCB0aGUgcGFy
c2VyIGludG8gYSBuZXcsIHZpcnR1YWxpemVkIGNsYXNzLiBUaGlzIG5ldyBwYXJzZXIgY2FuCisg
ICAgICAgIHRha2UgYWR2YW50YWdlIG9mIG5ldyBDKys+MTEgZmVhdHVyZXMgc3VjaCBhcyBsYW1i
ZGFzIHRvIGNsZWFuIHVwIHNvbWUgcHJvYmxlbWF0aWMgZXhpc3RpbmcgY29kZS4gVGhlIG5ldwor
ICAgICAgICB2aXJ0dWFsaXplZCBTb3VyY2VCdWZmZXJQYXJzZXIgY2xhc3MgdXNlcyBwYXNzZWQt
aW4gRnVuY3Rpb24gb2JqZWN0cywgcmF0aGVyIHRoYW4gcHVyZS12aXJ0dWFsIENsaWVudCBjbGFz
c2VzCisgICAgICAgIHRvIG5vdGlmeSBpdCdzIHBhcmVudCBvYmplY3Qgd2hlbiB0aGUgcGFyc2Vy
IGVuY291bnRlcnMgaW5pdGlhbGl6YXRpb24tIG9yIG1lZGlhLWRhdGEuCisKKyAgICAgICAgQmVj
YXVzZSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyB3aWxsIG5vdyBoYXZlIHRvIGRlYWwgd2l0
aCBBdWRpb1RyYWNrUHJpdmF0ZSBhbmQgVmlkZW9UcmFja1ByaXZhdGUgb2JqZWN0cworICAgICAg
ICB0aGF0IGFyZSBub3QgbmVjZXNzYXJpbHkgQXVkaW8tIGFuZCBWaWRlb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyBzdWJjbGFzc2VzLCBtb3ZlIHRob3NlIGNsYXNzZXMgbm90aWZpY2F0
aW9uCisgICAgICAgIGZlYXR1cmVzIHVwIGludG8gQXVkaW8tIGFuZCBWaWRlb1RyYWNrUHJpdmF0
ZSwgYWdhaW4gdXNpbmcgYSBGdW5jdGlvbiBvYmplY3QgcmF0aGVyIHRoYW4gYSBjbGllbnQgY2xh
c3MuCisKKyAgICAgICAgQWRkIGEgbmV3IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0gYW5kIGFzc29j
aWF0ZWQgQXVkaW9UcmFja1ByaXZhdGVXZWJNIGFuZCBWaWRlb1RyYWNrUHJpdmF0ZVdlYm0gY2xh
c2Vzcywgd2hpY2gKKyAgICAgICAgdXNlIGxpYndlYm0gdmlhIGxpYndlYnJ0YyB0byBwYXJzZSBh
cHBlbmRlZCBidWZmZXJzLgorCisgICAgICAgIFRoaXMgZWFybHkgaW1wbGVtZW50YXRpb24gaXMg
bm90IHlldCBhYmxlIHRvIHBhc3MgdGhlIFdlYk0gV1BUIG1lZGlhLXNvdXJjZS8gdGVzdHMsIGFz
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDCisgICAgICAgIHdpbGwgb25seSBjYXVzZSBhICJy
ZXNpemUiIGV2ZW50IHRvIGJlIGZpcmVkIHdoZW4gYSBNZWRpYVNhbXBsZSBpcyBlbnF1ZXVlZCBv
ciBkZWNvZGluZy4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2V0V2ViTVBhcnNlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6d2ViTVBhcnNlckVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Ry
YWNrUHJpdmF0ZTo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJp
dmF0ZTo6c2V0RW5hYmxlZENoYW5nZWRDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQ
cml2YXRlOjpzZXRTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0
ZTo6c2V0U2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0RW5hYmxlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OnN1cHBvcnRzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5oOiBBZGRlZC4KKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbTogQWRkZWQu
CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIGluaXRXaXRoUGFyc2Vy
OnBhcmVudDpdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgZGVh
bGxvY10pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBpbnZhbGlk
YXRlXSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbURh
dGFQYXJzZXI6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldDpdKToKKyAgICAgICAgKC1bV2ViQVZT
dHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3RyZWFtRGF0YVBhcnNlcjpkaWRQYXJzZVN0cmVhbURh
dGFBc0Fzc2V0OndpdGhEaXNjb250aW51aXR5Ol0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURh
dGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0
YVdpdGhFcnJvcjpdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIg
c3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlTWVkaWFEYXRhOmZvclRyYWNrSUQ6bWVkaWFUeXBl
OmZsYWdzOl0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJl
YW1EYXRhUGFyc2VyV2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0
YTpmb3JUcmFja0lEOl0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5l
ciBzdHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YTpmb3JUcmFja0lEOl0pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakM6OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OnNob3VsZFByb3Zp
ZGVNZWRpYWRhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakM6OnJlc2V0UGFyc2VyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldCk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRGYWlsVG9QYXJzZVN0cmVh
bURhdGFXaXRoRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElu
aXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjp+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRFbmNv
dW50ZXJFcnJvckR1cmluZ1BhcnNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRL
ZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmRDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpyZXNldFBhcnNlclN0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkZXN0cm95UGFyc2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjbGVhclRyYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFu
Z2VTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpwYXJzZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmF0dGVtcHRUb0RlY3J5cHQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGVXZWJNOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
a1ByaXZhdGVXZWJNOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk0pOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9UcmFja1ByaXZhdGVXZWJNOjppZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1RyYWNrUHJpdmF0ZVdlYk06OmxhYmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
VHJhY2tQcml2YXRlV2ViTTo6bGFuZ3VhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGVXZWJNOjp0cmFja0luZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OmlzQ29udGVudFR5cGVTdXBw
b3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0RGlkUGFyc2VJ
bml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXI6OnNldERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0RGlkUHJvdmlkZU1lZGlhRGF0
YUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0V2ls
bFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OnNldERpZFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNXZWJtUGFyc2VyQXZhaWxhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OnN1cHBvcnRlZFdlYk1Db2RlY3MpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmFwcGVuZERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6Zmx1c2hQZW5k
aW5nTWVkaWFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lE
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnJlc2V0UGFyc2Vy
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FbGVt
ZW50QmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25F
Ym1sKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uU2VnbWVu
dEJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uSW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkNsdXN0ZXJC
ZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblRyYWNr
RW50cnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpzdGF0dXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6dHlwZSBjb25zdCk6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
dmFsaWRhdGVWUFBhcmFtZXRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFja1ByaXZhdGVXZWJNOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFj
a1ByaXZhdGVXZWJNOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk0pOgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFja1ByaXZhdGVXZWJNOjppZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b1RyYWNrUHJpdmF0ZVdlYk06OmxhYmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
VHJhY2tQcml2YXRlV2ViTTo6bGFuZ3VhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFja1ByaXZhdGVXZWJNOjp0cmFja0luZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaDogQWRkZWQuCisKIDIwMjAt
MDctMTggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIGZpeCBidWlsZCB3YXJuaW5ncyBpbiB0aGUgV2ViWFIgYmFja2VuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAxM2M1YjFlYmE4MzNmYjdhNmQxNjRjN2NhOTdhNTBkNDUxYTU5NDMwLi40M2I4ODc4
OTFhOWNiYzgyMDI3MzIxMmU5ZDc2NGM2NjFmYTc2NDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDIwLTA3LTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAg
ICAgIFtDb2NvYV0gQWRkIGV4cGVyaW1lbnRhbCBNU0UgV2ViTSBwYXJzZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDUyOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhbiBFeHBlcmltZW50YWwg
c2V0dGluZyB0byBlbmFibGUgdGhlIE1TRSBXZWJNIHBhcnNlciAob2ZmIGJ5IGRlZmF1bHQpLgor
CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisKIDIwMjAtMDQtMzAgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIGRhdGEgY29w
aWVzIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgY3VzdG9tIFVSTCBzY2hlbWUgaGFuZGxlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xp
YndlYnJ0Yy5pT1MuZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRp
b25zL2xpYndlYnJ0Yy5pT1MuZXhwCmluZGV4IGQwNGE5MTk2ODZlOWNjODk2N2E4YWFkMDQ2OWM2
ODU1NDY1NzI3OWIuLmE3YmNjN2I1MTRjM2JlNjNhYWRjYTBiMjEyNzFmODE1ZDkwNTQzMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3
ZWJydGMuaU9TLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJh
dGlvbnMvbGlid2VicnRjLmlPUy5leHAKQEAgLTI4MCwxMyArMjgwLDIwIEBAIF9fWlRWTjR3ZWJt
MTJCdWZmZXJSZWFkZXJFCiBfX1pUVk40d2VibThDYWxsYmFja0UKIF9fWk40d2VibThDYWxsYmFj
azEwT25CbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRQogX19aTjR3
ZWJtOENhbGxiYWNrMTBPbkN1ZVBvaW50RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU184Q3Vl
UG9pbnRFCitfX1pONHdlYm04Q2FsbGJhY2sxMk9uQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1l
dGFkYXRhRVJLTlNfNUJsb2NrRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPbkNs
dXN0ZXJFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzdDbHVzdGVyRQogX19aTjR3ZWJt
OENhbGxiYWNrMTJPblNlZ21lbnRFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUUKIF9fWk40d2Vi
bThDYWxsYmFjazEyT25UcmFja0VudHJ5RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMFRy
YWNrRW50cnlFCitfX1pONHdlYm04Q2FsbGJhY2sxNE9uQ2x1c3RlckJlZ2luRVJLTlNfMTVFbGVt
ZW50TWV0YWRhdGFFUktOU183Q2x1c3RlckVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFj
azE0T25FZGl0aW9uRW50cnlFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEyRWRpdGlvbkVu
dHJ5RQorX19aTjR3ZWJtOENhbGxiYWNrMTRPbkVsZW1lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1l
dGFkYXRhRVBOU182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrMTRPblNlZ21lbnRCZWdpbkVS
S05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTVP
bkJsb2NrR3JvdXBFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEwQmxvY2tHcm91cEUK
IF9fWk40d2VibThDYWxsYmFjazE2T25TaW1wbGVCbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFk
YXRhRVJLTlNfMTFTaW1wbGVCbG9ja0UKIF9fWk40d2VibThDYWxsYmFjazE2T25Vbmtub3duRWxl
bWVudEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182UmVhZGVyRVB5CitfX1pONHdlYm04Q2Fs
bGJhY2sxN09uQmxvY2tHcm91cEJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rp
b25FCitfX1pONHdlYm04Q2FsbGJhY2sxOE9uU2ltcGxlQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVu
dE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVCbG9ja0VQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxs
YmFjazRTa2lwRVBOU182UmVhZGVyRVB5CiBfX1pONHdlYm04Q2FsbGJhY2s1T25UYWdFUktOU18x
NUVsZW1lbnRNZXRhZGF0YUVSS05TXzNUYWdFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25FYm1sRVJL
TlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU180RWJtbEUKIF9fWk40d2VibThDYWxsYmFjazZPbklu
Zm9FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzRJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhw
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5p
T1NzaW0uZXhwCmluZGV4IGQwNGE5MTk2ODZlOWNjODk2N2E4YWFkMDQ2OWM2ODU1NDY1NzI3OWIu
LmE3YmNjN2I1MTRjM2JlNjNhYWRjYTBiMjEyNzFmODE1ZDkwNTQzMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2lt
LmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGli
d2VicnRjLmlPU3NpbS5leHAKQEAgLTI4MCwxMyArMjgwLDIwIEBAIF9fWlRWTjR3ZWJtMTJCdWZm
ZXJSZWFkZXJFCiBfX1pUVk40d2VibThDYWxsYmFja0UKIF9fWk40d2VibThDYWxsYmFjazEwT25C
bG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRQogX19aTjR3ZWJtOENh
bGxiYWNrMTBPbkN1ZVBvaW50RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU184Q3VlUG9pbnRF
CitfX1pONHdlYm04Q2FsbGJhY2sxMk9uQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRh
RVJLTlNfNUJsb2NrRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPbkNsdXN0ZXJF
bmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzdDbHVzdGVyRQogX19aTjR3ZWJtOENhbGxi
YWNrMTJPblNlZ21lbnRFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUUKIF9fWk40d2VibThDYWxs
YmFjazEyT25UcmFja0VudHJ5RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMFRyYWNrRW50
cnlFCitfX1pONHdlYm04Q2FsbGJhY2sxNE9uQ2x1c3RlckJlZ2luRVJLTlNfMTVFbGVtZW50TWV0
YWRhdGFFUktOU183Q2x1c3RlckVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFjazE0T25F
ZGl0aW9uRW50cnlFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEyRWRpdGlvbkVudHJ5RQor
X19aTjR3ZWJtOENhbGxiYWNrMTRPbkVsZW1lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRh
RVBOU182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrMTRPblNlZ21lbnRCZWdpbkVSS05TXzE1
RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTVPbkJsb2Nr
R3JvdXBFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEwQmxvY2tHcm91cEUKIF9fWk40
d2VibThDYWxsYmFjazE2T25TaW1wbGVCbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJL
TlNfMTFTaW1wbGVCbG9ja0UKIF9fWk40d2VibThDYWxsYmFjazE2T25Vbmtub3duRWxlbWVudEVS
S05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182UmVhZGVyRVB5CitfX1pONHdlYm04Q2FsbGJhY2sx
N09uQmxvY2tHcm91cEJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rpb25FCitf
X1pONHdlYm04Q2FsbGJhY2sxOE9uU2ltcGxlQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFk
YXRhRVJLTlNfMTFTaW1wbGVCbG9ja0VQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxsYmFjazRT
a2lwRVBOU182UmVhZGVyRVB5CiBfX1pONHdlYm04Q2FsbGJhY2s1T25UYWdFUktOU18xNUVsZW1l
bnRNZXRhZGF0YUVSS05TXzNUYWdFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25FYm1sRVJLTlNfMTVF
bGVtZW50TWV0YWRhdGFFUktOU180RWJtbEUKIF9fWk40d2VibThDYWxsYmFjazZPbkluZm9FUktO
U18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzRJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCmlu
ZGV4IDhkODViNWI4YjM3NTRhZGRlZmRlN2MyNGYyZjIwYTQ2NTgzNjZhY2QuLmY4Y2M5MTMxNmJj
ZGMwOTYwNTgyYjNmM2NhNDE2NWIyZWFjMjcyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAK
QEAgLTI3OCwxMyArMjc4LDIwIEBAIF9fWlRWTjR3ZWJtMTJCdWZmZXJSZWFkZXJFCiBfX1pUVk40
d2VibThDYWxsYmFja0UKIF9fWk40d2VibThDYWxsYmFjazEwT25CbG9ja0VuZEVSS05TXzE1RWxl
bWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRQogX19aTjR3ZWJtOENhbGxiYWNrMTBPbkN1ZVBvaW50
RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU184Q3VlUG9pbnRFCitfX1pONHdlYm04Q2FsbGJh
Y2sxMk9uQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRVBOU182
QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPbkNsdXN0ZXJFbmRFUktOU18xNUVsZW1lbnRN
ZXRhZGF0YUVSS05TXzdDbHVzdGVyRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPblNlZ21lbnRFbmRF
UktOU18xNUVsZW1lbnRNZXRhZGF0YUUKIF9fWk40d2VibThDYWxsYmFjazEyT25UcmFja0VudHJ5
RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMFRyYWNrRW50cnlFCitfX1pONHdlYm04Q2Fs
bGJhY2sxNE9uQ2x1c3RlckJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU183Q2x1c3Rl
ckVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFjazE0T25FZGl0aW9uRW50cnlFUktOU18x
NUVsZW1lbnRNZXRhZGF0YUVSS05TXzEyRWRpdGlvbkVudHJ5RQorX19aTjR3ZWJtOENhbGxiYWNr
MTRPbkVsZW1lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQorX19a
TjR3ZWJtOENhbGxiYWNrMTRPblNlZ21lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBO
U182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTVPbkJsb2NrR3JvdXBFbmRFUktOU18xNUVs
ZW1lbnRNZXRhZGF0YUVSS05TXzEwQmxvY2tHcm91cEUKIF9fWk40d2VibThDYWxsYmFjazE2T25T
aW1wbGVCbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVCbG9ja0UK
IF9fWk40d2VibThDYWxsYmFjazE2T25Vbmtub3duRWxlbWVudEVSS05TXzE1RWxlbWVudE1ldGFk
YXRhRVBOU182UmVhZGVyRVB5CitfX1pONHdlYm04Q2FsbGJhY2sxN09uQmxvY2tHcm91cEJlZ2lu
RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rpb25FCitfX1pONHdlYm04Q2FsbGJhY2sx
OE9uU2ltcGxlQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVC
bG9ja0VQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxsYmFjazRTa2lwRVBOU182UmVhZGVyRVB5
CiBfX1pONHdlYm04Q2FsbGJhY2s1T25UYWdFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzNU
YWdFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25FYm1sRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktO
U180RWJtbEUKIF9fWk40d2VibThDYWxsYmFjazZPbkluZm9FUktOU18xNUVsZW1lbnRNZXRhZGF0
YUVSS05TXzRJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL2xp
YndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRkYTczYTFi
ZmI0MTAzYTFmN2FhNDE0MzQ5ZmUwYWZhZWJjMGM4YWEuLjIyNjgyYmM1Yzk5NjY2Yjg3ZGE0ZDFk
MWQwZjZmNmI2NmFmZjBiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4
NTMsMTYgKzM4NTMsMTYgQEAKIAkJNUNGRDUzOTIxRTRCRDNBMzAwNDgyOTA4IC8qIHJvd19uZW9u
NjQuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZE
NTM4QTFFNEJEM0EzMDA0ODI5MDggLyogcm93X25lb242NC5jYyAqLzsgfTsKIAkJNUNGRDUzOTMx
RTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb24uY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZENTM4QjFFNEJEM0EzMDA0ODI5MDggLyogc2NhbGVf
bmVvbi5jYyAqLzsgfTsKIAkJNUNGRDUzOTQxRTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb242
NC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRkQ1
MzhDMUU0QkQzQTMwMDQ4MjkwOCAvKiBzY2FsZV9uZW9uNjQuY2MgKi87IH07Ci0JCUNERUJCNEFD
MjRDMDE5OUQwMEFEQkQ0NCAvKiB3ZWJtX3BhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MDgyNEMwMTkxQTAwQURCRDQ0IC8qIHdlYm1f
cGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9Owot
CQlDREVCQjRBRDI0QzAxOTlEMDBBREJENDQgLyogYnVmZmVyX3JlYWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MEQyNEMwMTkxQTAwQURC
RDQ0IC8qIGJ1ZmZlcl9yZWFkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07Ci0JCUNERUJCNEFFMjRDMDE5OUQwMEFEQkQ0NCAvKiBpZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MEEyNEMwMTkxQTAw
QURCRDQ0IC8qIGlkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9
OyB9OwotCQlDREVCQjRBRjI0QzAxOTlEMDBBREJENDQgLyogaXN0cmVhbV9yZWFkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDA5MjRDMDE5
MUEwMEFEQkQ0NCAvKiBpc3RyZWFtX3JlYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjAyNEMwMTk5RDAwQURCRDQ0IC8qIGRvbV90
eXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RF
QkI0MEIyNEMwMTkxQTAwQURCRDQ0IC8qIGRvbV90eXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjEyNEMwMTk5RDAwQURCRDQ0IC8q
IGVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENERUJCNDBDMjRDMDE5MUEwMEFEQkQ0NCAvKiBlbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCMjI0QzAxOTlEMDBBREJENDQg
Lyogc3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREVCQjQwNjI0QzAxOTFBMDBBREJENDQgLyogc3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCMzI0QzAxOTlEMDBBREJENDQg
LyogcmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREVCQjQwNTI0QzAxOTFBMDBBREJENDQgLyogcmVhZGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCNDI0QzAxOTlEMDBBREJENDQg
LyogZmlsZV9yZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENERUJCNDA3MjRDMDE5MUEwMEFEQkQ0NCAvKiBmaWxlX3JlYWRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjUyNEMwMTk5
RDAwQURCRDQ0IC8qIGNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREVCQjQwRTI0QzAxOTFBMDBBREJENDQgLyogY2FsbGJhY2suaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCUNERUJCNEFDMjRD
MDE5OUQwMEFEQkQ0NCAvKiB3ZWJtX3BhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MDgyNEMwMTkxQTAwQURCRDQ0IC8qIHdlYm1fcGFy
c2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
Q0RFQkI0QUQyNEMwMTk5RDAwQURCRDQ0IC8qIGJ1ZmZlcl9yZWFkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDBEMjRDMDE5MUEwMEFEQkQ0
NCAvKiBidWZmZXJfcmVhZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQ0RFQkI0QUUyNEMwMTk5RDAwQURCRDQ0IC8qIGlkLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwQTI0QzAxOTFBMDBB
REJENDQgLyogaWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlDREVCQjRBRjI0QzAxOTlEMDBBREJENDQgLyogaXN0cmVhbV9yZWFkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDA5MjRDMDE5
MUEwMEFEQkQ0NCAvKiBpc3RyZWFtX3JlYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUNERUJCNEIwMjRDMDE5OUQwMEFEQkQ0NCAvKiBkb21f
dHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
RUJCNDBCMjRDMDE5MUEwMEFEQkQ0NCAvKiBkb21fdHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREVCQjRCMTI0QzAxOTlEMDBBREJENDQg
LyogZWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RFQkI0MEMyNEMwMTkxQTAwQURCRDQ0IC8qIGVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREVCQjRCMjI0QzAxOTlEMDBBREJE
NDQgLyogc3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREVCQjQwNjI0QzAxOTFBMDBBREJENDQgLyogc3RhdHVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RFQkI0QjMyNEMwMTk5RDAwQURC
RDQ0IC8qIHJlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RFQkI0MDUyNEMwMTkxQTAwQURCRDQ0IC8qIHJlYWRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNERUJCNEI0MjRDMDE5OUQwMEFE
QkQ0NCAvKiBmaWxlX3JlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RFQkI0MDcyNEMwMTkxQTAwQURCRDQ0IC8qIGZpbGVfcmVhZGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RFQkI0QjUy
NEMwMTk5RDAwQURCRDQ0IC8qIGNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwRTI0QzAxOTFBMDBBREJENDQgLyogY2FsbGJhY2su
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDREVC
QjRCNjI0QzAxOUM0MDBBREJENDQgLyogdW5rbm93bl9wYXJzZXIuY2MgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQ2NDI0QzAxOTFBMDBBREJENDQg
LyogdW5rbm93bl9wYXJzZXIuY2MgKi87IH07CiAJCUNERUJCNEI3MjRDMDE5QzQwMEFEQkQ0NCAv
KiBtYXN0ZXJfcGFyc2VyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RFQkI0NkYyNEMwMTkxQTAwQURCRDQ0IC8qIG1hc3Rlcl9wYXJzZXIuY2MgKi87
IH07CiAJCUNERUJCNEI4MjRDMDE5QzQwMEFEQkQ0NCAvKiBibG9ja19wYXJzZXIuY2MgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQ3NjI0QzAxOTFB
MDBBREJENDQgLyogYmxvY2tfcGFyc2VyLmNjICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggMWQ3ZjIwOTg2N2MxZDRlMGE0Mjc0Njk3NjU1ZjhkMWIxMzZkYWQwZS4uZGMzZmYyNTg0
MWE5MjUzM2JlZThkMDU4MTYxOGFiMjBjNzBjOTlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CkBAIC0yOTEsNiArMjkxLDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIEBuby0KIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbSBAbm8tdW5pZnkK
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBAbm8tdW5pZnkKK3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gQG5vLXVuaWZ5
CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9i
akMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRl
b1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gQG5v
LXVuaWZ5CkBAIC0zMzMsNiArMzM0LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNH
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlv
VHJhY2tQcml2YXRlV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2Eu
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zsb2F0UmVjdENvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTM0OCw2ICszNTAsOCBAQCBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVj
dENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29h
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbQpAQCAtMzU2
LDYgKzM2MCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFz
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24u
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYkdQVUxheWVyLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1Ry
YWNrUHJpdmF0ZVdlYk0uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vz
c2lvblZULm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ODZmY2RlYzA1
ODYwMjIyYmYwMzQwMmE3MTZhZDJmNDZiMDBjNTc4Li44MmZkZWVjZGVkOGJhYjZmYjA5ZWIyZTQy
ZDY2NmVhYTQyMjUyZDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MjY3LDYgKzQyNjcsNyBAQAogCQlDREY2NUNDQTE0NUI0
NDg4MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY2NUNDOTE0NUI0M0E3MDBDNEM3QUEg
LyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RGNzQ4M0YxOEZFQkNFQzAwMDZFQ0MwIC8qIEdyaWRQ
b3NpdGlvbnNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RGNzQ4M0QxOEZFQkNFQzAwMDZFQ0MwIC8qIEdyaWRQb3NpdGlvbnNSZXNvbHZl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNE
Rjc1NkEzMjE1QzI5RTkwMEVGQ0I1MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNzU2QTEyMTVD
MjlFOTAwRUZDQjUwIC8qIEpTTWVkaWFLZXlFbmNyeXB0aW9uU2NoZW1lLmggKi87IH07CisJCUNE
Rjk5NEZEMjRDMTVGRTMwMDJFQTA2MiAvKiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGOTk0RkIyNEMx
MkE2QTAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gKi87IH07CiAJCUNE
RkMzNjA2MThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERkMzNjA0MThDQTYxQzIw
MDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTA1N0ZBNjEyMjA3MzExMDBBNDc2RDUgLyog
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRTA1N0ZBNDEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
MDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKQEAgLTE0MTY2LDYgKzE0MTY3LDgg
QEAKIAkJQ0Q4QzZDMjkyMkZEREE5MTAwQTcyMEFCIC8qIEpTUmVtb3RlUGxheWJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNSZW1vdGVQbGF5YmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDhEMzA2RDIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDRE1Mb2dnaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOEQzMDZF
MjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENE
TUxvZ2dpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDhGNjY3MDI0QzBG
MjA4MDAwQzQyMUMgLyogU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0Q4RjY2NzIyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDkyRjUwRjIyNjBGRkVFMDBGODdCQjMgLyogRG9jdW1lbnRGdWxs
c2NyZWVuLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBEb2N1bWVudEZ1bGxzY3JlZW4uaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDkyRjUxMDIyNjBGRkVFMDBGODdCQjMgLyogRG9jdW1lbnRGdWxsc2Ny
ZWVuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50RnVsbHNjcmVlbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDkyRjUxNjIyNjEwMzgyMDBGODdCQjMgLyogRnVsbHNjcmVlbk1h
bmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVsbHNjcmVlbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MzQ2LDYgKzE0MzQ5LDggQEAKIAkJQ0RFOEI1RUYxQTY5Nzc4
QjAwQjRCNjZBIC8qIExlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTdDODIxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxT
Y3JlZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyRnVsbFNjcmVl
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBN0M4MzEyNzYyMzA0MDBCODQ2
REQgLyogUmVuZGVyRnVsbFNjcmVlbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW5kZXJGdWxsU2NyZWVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RFQjNENzIyNEM0MUE2RTAwMUZCRUVGIC8qIFNvdXJjZUJ1ZmZlclBhcnNlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTb3VyY2VCdWZmZXJQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREVCM0Q3MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFy
c2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZUJ1ZmZlclBhcnNlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDREVDQTg5ODFFREY0NDdEMDBEQ0IwOEIgLyogQVZBc3NldFRyYWNr
VXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVZBc3NldFRyYWNrVXRpbGl0aWVz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVDQTg5OTFFREY0NDdEMDBEQ0Iw
OEIgLyogQVZBc3NldFRyYWNrVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFWQXNzZXRUcmFj
a1V0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVFMzkzNjE3OTc0
MjU5MDAxRDc1ODAgLyogUHVibGljVVJMTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQdWJsaWNVUkxNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE0Mzg0LDYgKzE0Mzg5LDEyIEBACiAJCUNERjc1NjlFMjE1QzI4NUUwMEVG
Q0I1MCAvKiBNZWRpYUtleUVuY3J5cHRpb25TY2hlbWUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhS2V5RW5jcnlw
dGlvblNjaGVtZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERjc1NkEwMjE1
QzI5RTgwMEVGQ0I1MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERjc1NkExMjE1QzI5RTkwMEVGQ0I1
MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREY5OTRGQTI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjk5NEZCMjRDMTJBNkEwMDJFQTA2MiAv
KiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RGOTk0RkUyNEMyODEzNjAwMkVBMDYyIC8qIFZpZGVvVHJhY2tQcml2YXRlV2ViTS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RGOTk0RkYyNEMyODEzNjAwMkVBMDYyIC8qIFZpZGVvVHJhY2tQcml2YXRlV2Vi
TS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY5OTUwMDI0QzI4MTQ5MDAyRUEwNjIgLyogQXVk
aW9UcmFja1ByaXZhdGVXZWJNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRlV2Vi
TS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY5OTUwMTI0QzI4MTQ5MDAyRUEw
NjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlv
VHJhY2tQcml2YXRlV2ViTS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERkMz
NjAxMThDQTYxNjMwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERkMzNjAyMThDQTYxNjMwMDI2RTU2RiAvKiBS
ZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNERkMzNjAzMThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlz
dGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ29t
bWFuZExpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1ODcxLDYg
KzI1ODgyLDggQEAKIAkJQjUzMjBENjgxMjJBMjRFOTAwMkQxNDQwIC8qIGNvY29hICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDREY5OTUwMTI0QzI4MTQ5
MDAyRUEwNjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcCAqLywKKwkJCQlDREY5OTUwMDI0
QzI4MTQ5MDAyRUEwNjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmggKi8sCiAJCQkJRjQ4RDJB
QTMyMTU5NzQwRDAwQzY3NTJCIC8qIENvbG9yQ29jb2EuaCAqLywKIAkJCQlGNDhEMkFBNDIxNTk3
NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5tbSAqLywKIAkJCQlCMjc1MzU0QzBCMDUzODE0MDAy
Q0U2NEYgLyogRmxvYXRSZWN0Q29jb2EubW0gKi8sCkBAIC0yNTg5MiwxMCArMjU5MDUsMTYgQEAK
IAkJCQlBRDlGRjZFMDE5MDgzOTFEMDAzQjYxRTAgLyogSU9TdXJmYWNlUG9vbENvY29hLm1tICov
LAogCQkJCUNEQzQ4QUM4MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuY3BwICovLAogCQkJCUNEQzQ4QUM3MjE0OUNGMkEwMDI0RkQ1OSAvKiBN
ZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuaCAqLywKKwkJCQlDREVCM0Q3MjI0
QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmNwcCAqLywKKwkJCQlDREVCM0Q3
MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmggKi8sCisJCQkJQ0Q4RjY2
NzAyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwICovLAorCQkJ
CUNEOEY2NjcyMjRDMEYyMDgwMDBDNDIxQyAvKiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmggKi8s
CiAJCQkJRTRFOEI0RUQyMTZCNzlGNDAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0LmNwcCAqLywKIAkJCQlFNEU4QjRFQTIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQuaCAqLywKIAkJCQk1MjY3MjRGMjFDQjJGREY2MDA3NTk3NEQgLyogVGV4
dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5oICovLAogCQkJCTUyNjcyNEYxMUNCMkZERjYwMDc1
OTc0RCAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tICovLAorCQkJCUNERjk5NEZG
MjRDMjgxMzYwMDJFQTA2MiAvKiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwICovLAorCQkJCUNE
Rjk5NEZFMjRDMjgxMzYwMDJFQTA2MiAvKiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaCAqLywKIAkJ
CQlDRDZGRTVCNzI0QkNFNjQ1MDA5RkNEQTQgLyogVlA5VXRpbGl0aWVzQ29jb2EuaCAqLywKIAkJ
CQlDRDZGRTVCODI0QkNFNjQ1MDA5RkNEQTQgLyogVlA5VXRpbGl0aWVzQ29jb2EubW0gKi8sCiAJ
CQkJMkQzRUY0NDQxOTE3OTE1QzAwMDM0MTg0IC8qIFdlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJE
ZWxlZ2F0ZS5oICovLApAQCAtMjczODgsNiArMjc0MDcsOCBAQAogCQkJCUNEQzhCNUE1MTgwNDc0
RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmggKi8sCiAJCQkJQ0RDOEI1
QTQxODA0NzRGNzAwMTZFNjg1IC8qIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gKi8sCiAJ
CQkJN0EyOUY1NzExOEM2OTUxNDAwNEQwRjgxIC8qIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuaCAqLywKKwkJCQlDREY5OTRGQTI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5oICovLAorCQkJCUNERjk5NEZCMjRDMTJBNkEwMDJFQTA2MiAvKiBTb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLm1tICovLAogCQkJCUNEQzhCNUE5MTgwNDdGRjEwMDE2RTY4NSAv
KiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oICovLAogCQkJCUNEQzhCNUE4MTgwNDdGRjEw
MDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSAqLywKIAkJCQk1MkQ1QTE4
RTFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmggKi8sCkBAIC0zNDU5
OCw2ICszNDYxOSw3IEBACiAJCQkJMjZBQTBGOUUxOEQyQTE4QjAwNDE5MzgxIC8qIFNlbGVjdG9y
UHNldWRvRWxlbWVudFR5cGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NENThERkQxRjk1
NjVBODAwMTEyNzkxIC8qIFNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxMEE4
MUY5MDIyQTQwMDUxMDJDRSAvKiBTb2Z0TGlua0xpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQ0RGOTk0RkQyNEMxNUZFMzAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDREM4QjVBQTE4MDQ3RkYxMDAxNkU2ODUgLyogU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBODMzQzdDQTBBMkNG
MDZCMDBENTc2NjQgLyogU1ZHTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzE2OTJERDIy
M0QyM0FCRDAwNkU4OEY3IC8qIFN5c3RlbUJhdHRlcnkubW0gaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggMTFjMGE3ZjVk
OGY5YjRiNDJhODcxYjMzMTFlYWM0NDU5NzUzNjQyNy4uZDAxNzg0YzdhYTRiNzZkNmMzY2QyNTk3
OTIzMjRhNjA1MjlhMWY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgKQEAgLTM5MSw2ICszOTEsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaW5jcmVt
ZW50YWxQREZMb2FkaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5jcmVtZW50YWxQREZM
b2FkaW5nRW5hYmxlZDsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAg
IHZvaWQgc2V0V2ViTVBhcnNlckVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV93ZWJNUGFyc2Vy
RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgd2ViTVBhcnNlckVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX3dlYk1QYXJzZXJFbmFibGVkOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAg
ICAvLyBOZXZlciBpbnN0YW50aWF0ZS4KICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCk7CkBA
IC01ODQsNiArNTg5LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2luY3JlbWVudGFsUERGTG9h
ZGluZ0VuYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNF
KQorICAgIGJvb2wgbV93ZWJNUGFyc2VyRW5hYmxlZCB7IGZhbHNlIH07CisjZW5kaWYKKwogICAg
IGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVzdHJveWVkPFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM+
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVk
aW9UcmFja1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlv
VHJhY2tQcml2YXRlLmgKaW5kZXggN2ZhZTIzZWY1ZGM0Mjk5ZThmMDlmYzQxMmZjMTcxMDI2OGJl
YmMyMS4uYTlmODM2YmQxMTczZTIyZTBhZTgxNGExNzU0MmFhMjNhNDYxNWE0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0
ZUJhc2UuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogI2lmIEVOQUJMRShWSURFTykK
IApAQCAtNTUsNiArNTYsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7
CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5lbmFibGVkQ2hh
bmdlZChlbmFibGVkKTsKKyAgICAgICAgaWYgKG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjaykKKyAg
ICAgICAgICAgIG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjaygqdGhpcywgbV9lbmFibGVkKTsKICAg
ICB9CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KQEAg
LTY0LDYgKzY3LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzQmFja2VkQnlNZWRp
YVN0cmVhbVRyYWNrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHVzaW5nIEVuYWJs
ZWRDaGFuZ2VkQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEF1ZGlvVHJhY2tQcml2YXRlJiwgYm9v
bCBlbmFibGVkKT47CisgICAgdm9pZCBzZXRFbmFibGVkQ2hhbmdlZENhbGxiYWNrKEVuYWJsZWRD
aGFuZ2VkQ2FsbGJhY2smJiBjYWxsYmFjaykgeyBtX2VuYWJsZWRDaGFuZ2VkQ2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKTsgfQorCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29u
c3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkF1ZGlvVHJh
Y2tQcml2YXRlIjsgfQogI2VuZGlmCkBAIC03NCw2ICs4MCw3IEBAIHByb3RlY3RlZDoKIHByaXZh
dGU6CiAgICAgQXVkaW9UcmFja1ByaXZhdGVDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9Owog
ICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2UgfTsKKyAgICBFbmFibGVkQ2hhbmdlZENhbGxiYWNr
IG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJp
dmF0ZS5oCmluZGV4IDcxOGQ4MGUzNDUyYzQ3ZmVlZjQyNjhmMjllM2EyZTg3YmI0ZGNhZDMuLjBj
NDEzYzJkZGY1ZDlkYTJhMTViMTEzNWMwOGU1MTA4NTJiODAyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaApAQCAtMjgs
NiArMjgsNyBAQAogI2lmIEVOQUJMRShWSURFTykKIAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZUJh
c2UuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00OCw2ICs0OSw4IEBAIHB1YmxpYzoKICAgICAgICAgbV9zZWxlY3RlZCA9IHNlbGVjdGVk
OwogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+c2VsZWN0ZWRD
aGFuZ2VkKG1fc2VsZWN0ZWQpOworICAgICAgICBpZiAobV9zZWxlY3RlZENoYW5nZWRDYWxsYmFj
aykKKyAgICAgICAgICAgIG1fc2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2soKnRoaXMsIG1fc2VsZWN0
ZWQpOwogICAgIH0KICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCB7IHJldHVybiBt
X3NlbGVjdGVkOyB9CiAKQEAgLTU4LDEyICs2MSwxNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgY2hh
ciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlZpZGVvVHJhY2tQcml2YXRl
IjsgfQogI2VuZGlmCiAKKyAgICB1c2luZyBTZWxlY3RlZENoYW5nZWRDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoVmlkZW9UcmFja1ByaXZhdGUmLCBib29sIHNlbGVjdGVkKT47CisgICAgdm9pZCBz
ZXRTZWxlY3RlZENoYW5nZWRDYWxsYmFjayhTZWxlY3RlZENoYW5nZWRDYWxsYmFjayYmIGNhbGxi
YWNrKSB7IG1fc2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQor
CisKIHByb3RlY3RlZDoKICAgICBWaWRlb1RyYWNrUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAogcHJp
dmF0ZToKICAgICBWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07
CiAgICAgYm9vbCBtX3NlbGVjdGVkIHsgZmFsc2UgfTsKKyAgICBTZWxlY3RlZENoYW5nZWRDYWxs
YmFjayBtX3NlbGVjdGVkQ2hhbmdlZENhbGxiYWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwCmluZGV4IGMxY2IxYTRkMzU2MTI1ZDk0N2Rl
ZmZjMjdmNTlmY2EwYzliNDE4NDEuLmJjMTM5Nzc5N2JhZGE4YTQ3NTliZjUyZjlhNTQ2M2IyZDY0
MWQ3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAKQEAgLTMzLDkgKzMzLDggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFj
aywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKK0F1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhB
VkFzc2V0VHJhY2sqIHRyYWNrKQogICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbD4odHJhY2spKQotICAgICwgbV9wYXJlbnQocGFyZW50KQogewogICAgIHJl
c2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQpAQCAtNjcsNyArNjYsNiBAQCB2b2lkIEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgQXVkaW9UcmFja1ByaXZhdGVBVkY6OnNldEVuYWJsZWQo
ZW5hYmxlZCk7Ci0gICAgbV9wYXJlbnQtPnRyYWNrRGlkQ2hhbmdlRW5hYmxlZCh0aGlzKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggOWJjNGYyNmMwNzM0OWYxNzc2ZjYwYmUw
ZGQxYzJhYmNkN2IzN2Q2Yi4uMTQ1NmMwMTZiYWUwM2I4NzhiNTBiZjU5OTI0ZmI0ZDlmMzUzMDE4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOwogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGVBVkYgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKQogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+
IGNyZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyog
cGFyZW50KQorICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM+IGNyZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2ssIHBh
cmVudCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyh0cmFjaykpOwogICAgIH0KIAogICAgIHZvaWQgc2V0RW5hYmxlZChi
b29sKSBmaW5hbDsKQEAgLTUyLDEyICs1MiwxMSBAQCBwdWJsaWM6CiAgICAgaW50IHRyYWNrSUQo
KSB7IHJldHVybiBtX3RyYWNrSUQ7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqLCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQyogcGFyZW50KTsKKyAgICBleHBsaWNpdCBBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqKTsKICAgICAKICAgICB2b2lkIHJlc2V0UHJv
cGVydGllc0Zyb21UcmFjaygpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFWVHJhY2tQcml2YXRl
QVZGT2JqQ0ltcGw+IG1faW1wbDsKLSAgICBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogbV9w
YXJlbnQ7CiAgICAgaW50IG1fdHJhY2tJRDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5t
bQppbmRleCA2Njg5OTEwMWUxZmM1ODQwNzc3N2I2OWQ2MzkxOTE1ZmQ5YWRkZDIxLi5iZDY4NWQ1
NGMyM2M1N2JhM2ZiNmFiMGFhMjMxNmY2ODkzZWYxODMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCkBAIC0yNTMsMzAgKzI1Myw3IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUoY29uCiAgICAg
aWYgKCFwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIAotICAgIFN0cmluZyBleHRlbmRlZFR5
cGUgPSBwYXJhbWV0ZXJzLnR5cGUucmF3KCk7Ci0gICAgU3RyaW5nIG91dHB1dENvZGVjcyA9IHBh
cmFtZXRlcnMudHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsK
LSAgICBpZiAoIW91dHB1dENvZGVjcy5pc0VtcHR5KCkgJiYgW1BBTDo6Z2V0QVZTdHJlYW1EYXRh
UGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dE1JTUVDb2Rl
Y1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFyYW1ldGVyOildKSB7Ci0gICAgICAgIG91dHB1
dENvZGVjcyA9IFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgb3V0cHV0TUlNRUNv
ZGVjUGFyYW1ldGVyRm9ySW5wdXRNSU1FQ29kZWNQYXJhbWV0ZXI6b3V0cHV0Q29kZWNzXTsKLSAg
ICAgICAgZXh0ZW5kZWRUeXBlID0gbWFrZVN0cmluZyhwYXJhbWV0ZXJzLnR5cGUuY29udGFpbmVy
VHlwZSgpLCAiOyBjb2RlY3M9XCIiLCBvdXRwdXRDb2RlY3MsICJcIiIpOwotICAgIH0KLQotICAg
IGF1dG8gc3VwcG9ydGVkID0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0
ZWQ7Ci0gICAgYXV0byYgc3RyZWFtRGF0YVBhcnNlckNhY2hlID0gQVZTdHJlYW1EYXRhUGFyc2Vy
TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKHN0cmVhbURhdGFQYXJzZXJDYWNo
ZS5pc0F2YWlsYWJsZSgpKQotICAgICAgICBzdXBwb3J0ZWQgPSBzdHJlYW1EYXRhUGFyc2VyQ2Fj
aGUuY2FuRGVjb2RlVHlwZShleHRlbmRlZFR5cGUpOwotICAgIGVsc2UgewotICAgICAgICBhdXRv
JiBhc3NldENhY2hlID0gQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpOwotICAgICAg
ICBpZiAoYXNzZXRDYWNoZS5pc0F2YWlsYWJsZSgpKQotICAgICAgICAgICAgc3VwcG9ydGVkID0g
YXNzZXRDYWNoZS5jYW5EZWNvZGVUeXBlKGV4dGVuZGVkVHlwZSk7Ci0gICAgfQotCi0gICAgaWYg
KHN1cHBvcnRlZCAhPSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZCkKLSAg
ICAgICAgcmV0dXJuIHN1cHBvcnRlZDsKLQotICAgIGlmICghY29udGVudFR5cGVNZWV0c0hhcmR3
YXJlRGVjb2RlUmVxdWlyZW1lbnRzKHBhcmFtZXRlcnMudHlwZSwgcGFyYW1ldGVycy5jb250ZW50
VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQpKQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7Ci0KLSAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQ7CisgICAgcmV0dXJuIFNvdXJjZUJ1ZmZlclBh
cnNlcjo6aXNDb250ZW50VHlwZVN1cHBvcnRlZChwYXJhbWV0ZXJzLnR5cGUpID8gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
OjpJc05vdFN1cHBvcnRlZDsKIH0KIAogI3ByYWdtYSBtYXJrIC0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNl
UHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDgyNzhlMDZh
NTEyMjk3YzdlZDJiMjY5MGZmZTBjYjQyODg4NWZiZjYuLjI5MzIyNzkzOTEwZWE1N2YxODFjOTIw
MTdkM2NmMzY1Nzc1MjEwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCAiTG9n
Z2luZy5oIgogI2ltcG9ydCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgi
CiAjaW1wb3J0ICJNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaCIKKyNpbXBvcnQgIlNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakMuaCIKICNpbXBvcnQgIlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
LmgiCiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9BbGdvcml0aG1zLmg+
CkBAIC04NSw3ICs4NiwxMSBAQCBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBNZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgQwogICAgIGlmIChNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJz
KSA9PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZCkKICAgICAgICAg
cmV0dXJuIE5vdFN1cHBvcnRlZDsKIAotICAgIGF1dG8gbmV3U291cmNlQnVmZmVyID0gU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSh0aGlzKTsKKyAgICBhdXRvIHBhcnNlciA9IFNv
dXJjZUJ1ZmZlclBhcnNlcjo6Y3JlYXRlKGNvbnRlbnRUeXBlKTsKKyAgICBpZiAoIXBhcnNlcikK
KyAgICAgICAgcmV0dXJuIE5vdFN1cHBvcnRlZDsKKworICAgIGF1dG8gbmV3U291cmNlQnVmZmVy
ID0gU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSh0aGlzLCBwYXJzZXIucmVsZWFz
ZU5vbk51bGwoKSk7CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBuZXdTb3VyY2VC
dWZmZXItPnNldENETUluc3RhbmNlKG1fY2RtSW5zdGFuY2UuZ2V0KCkpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMGZkMDViZDNjMWYwYWFmZDk0NjlhMTFkMjk5MjljNmJiOTgyMmZjNgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaApAQCAtMCwwICsxLDc5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5j
bHVkZSAiU291cmNlQnVmZmVyUGFyc2VyLmgiCisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgor
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK09CSkNfQ0xBU1MgQVZBc3NldDsKK09CSkNfQ0xB
U1MgQVZTdHJlYW1EYXRhUGFyc2VyOworT0JKQ19DTEFTUyBOU0RhdGE7CitPQkpDX0NMQVNTIE5T
RXJyb3I7CitPQkpDX0NMQVNTIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyOworCit0eXBl
ZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQyBmaW5h
bCA6IHB1YmxpYyBTb3VyY2VCdWZmZXJQYXJzZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDPiB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgaXNDb250
ZW50VHlwZVN1cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYpOworCisgICAgU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQygpOworICAgIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMo
KTsKKworICAgIEFWU3RyZWFtRGF0YVBhcnNlciogcGFyc2VyKCkgY29uc3QgeyByZXR1cm4gbV9w
YXJzZXIuZ2V0KCk7IH0KKworICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIFR5cGU6OkFW
Rk9iakM7IH0KKyAgICB2b2lkIGFwcGVuZERhdGEoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYsIEFw
cGVuZEZsYWdzID0gQXBwZW5kRmxhZ3M6Ok5vbmUpIGZpbmFsOworICAgIHZvaWQgZmx1c2hQZW5k
aW5nTWVkaWFEYXRhKCkgZmluYWw7CisgICAgdm9pZCBzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRh
Rm9yVHJhY2tJRChib29sLCBpbnQzMl90KSBmaW5hbDsKKyAgICBib29sIHNob3VsZFByb3ZpZGVN
ZWRpYWRhdGFGb3JUcmFja0lEKGludDMyX3QpIGZpbmFsOworICAgIHZvaWQgcmVzZXRQYXJzZXJT
dGF0ZSgpIGZpbmFsOworCisgICAgdm9pZCBkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNz
ZXQqKTsKKyAgICB2b2lkIGRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcihOU0Vycm9y
Kik7CisgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChpbnQzMl90IHRyYWNr
SUQsIENNU2FtcGxlQnVmZmVyUmVmLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgdW5zaWduZWQg
ZmxhZ3MpOworICAgIHZvaWQgd2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YUZvclRyYWNrSUQoaW50MzJfdCB0cmFja0lEKTsKKyAgICB2b2lkIGRpZFByb3ZpZGVD
b250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoTlNEYXRhKiwgaW50
MzJfdCB0cmFja0lEKTsKKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8QVZTdHJlYW1EYXRhUGFy
c2VyPiBtX3BhcnNlcjsKKyAgICBSZXRhaW5QdHI8V2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVu
ZXI+IG1fZGVsZWdhdGU7CisgICAgYm9vbCBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlh
bGl6YXRpb25TZWdtZW50IHsgZmFsc2UgfTsKKyAgICBib29sIG1fcGFyc2VyU3RhdGVXYXNSZXNl
dCB7IGZhbHNlIH07Cit9OworCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2Vi
Q29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQykKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyJiBwYXJzZXIpIHsgcmV0dXJuIHBhcnNl
ci50eXBlKCkgPT0gV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpUeXBlOjpBVkZPYmpDOyB9
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjg1MDU1MDk5Y2ZkZDJmMzIwOWQ5NjFhMmIyNjgwYmZi
ZmY0NmU5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTAs
MCArMSwzMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCIKKworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisK
KyNpbXBvcnQgIkFWQXNzZXRNSU1FVHlwZUNhY2hlLmgiCisjaW1wb3J0ICJBVkFzc2V0VHJhY2tV
dGlsaXRpZXMuaCIKKyNpbXBvcnQgIkFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCIK
KyNpbXBvcnQgIkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgiCisjaW1wb3J0
ICJGb3VyQ0MuaCIKKyNpbXBvcnQgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgiCisj
aW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJNZWRpYURlc2NyaXB0aW9uLmgiCisjaW1wb3J0
ICJNZWRpYVNhbXBsZS5oIgorI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCisjaW1wb3J0
ICJOb3RJbXBsZW1lbnRlZC5oIgorI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCisjaW1wb3J0ICJU
aW1lUmFuZ2VzLmgiCisjaW1wb3J0ICJWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5oIgorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQXNzZXRUcmFjay5oPgorI2ltcG9ydCA8SmF2
YVNjcmlwdENvcmUvVHlwZWRBcnJheUlubGluZXMuaD4KKyNpbXBvcnQgPG9iamMvcnVudGltZS5o
PgorI2ltcG9ydCA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KKyNp
bXBvcnQgPHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmg+CisjaW1wb3J0IDx3dGYvQmxv
Y2tPYmpDRXhjZXB0aW9ucy5oPgorCisjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsu
aD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgorCisjcHJhZ21h
IG1hcmsgLQorI3ByYWdtYSBtYXJrIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyCisKK0Bp
bnRlcmZhY2UgV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgOiBOU09iamVjdDxBVlN0cmVh
bURhdGFQYXJzZXJPdXRwdXRIYW5kbGluZz4geworICAgIFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMqIF9wYXJlbnQ7CisgICAgQVZTdHJlYW1EYXRhUGFyc2VyKiBfcGFyc2VyOwor
fQorQHByb3BlcnR5IChhc3NpZ24pIFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMq
IHBhcmVudDsKKy0gKGlkKWluaXRXaXRoUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIqKXBhcnNl
ciBwYXJlbnQ6KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMqKXBhcmVudDsKK0Bl
bmQKKworQGltcGxlbWVudGF0aW9uIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyCistIChp
ZClpbml0V2l0aFBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyKilwYXJzZXIgcGFyZW50OihXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKilwYXJlbnQKK3sKKyAgICBzZWxmID0gW3N1
cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIEFT
U0VSVChwYXJlbnQpOworICAgIF9wYXJlbnQgPSBwYXJlbnQ7CisgICAgX3BhcnNlciA9IHBhcnNl
cjsKKyAgICBbX3BhcnNlciBzZXREZWxlZ2F0ZTpzZWxmXTsKKyAgICByZXR1cm4gc2VsZjsKK30K
KworQHN5bnRoZXNpemUgcGFyZW50PV9wYXJlbnQ7CisKKy0gKHZvaWQpZGVhbGxvYworeworICAg
IFtfcGFyc2VyIHNldERlbGVnYXRlOm5pbF07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCist
ICh2b2lkKWludmFsaWRhdGUKK3sKKyAgICBbX3BhcnNlciBzZXREZWxlZ2F0ZTpuaWxdOworICAg
IF9wYXJzZXIgPSBudWxscHRyOworfQorCistICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3Ry
ZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3Nl
dDooQVZBc3NldCAqKWFzc2V0Cit7CisgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2Vy
LCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOworICAgIF9wYXJlbnQtPmRpZFBhcnNlU3Ry
ZWFtRGF0YUFzQXNzZXQoYXNzZXQpOworfQorCistICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFW
U3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkUGFyc2VTdHJlYW1EYXRhQXNB
c3NldDooQVZBc3NldCAqKWFzc2V0IHdpdGhEaXNjb250aW51aXR5OihCT09MKWRpc2NvbnRpbnVp
dHkKK3sKKyAgICBVTlVTRURfUEFSQU0oZGlzY29udGludWl0eSk7CisgICAgQVNTRVJUX1VOVVNF
RChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOworICAgIF9w
YXJlbnQtPmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoYXNzZXQpOworfQorCistICh2b2lkKXN0
cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlk
RmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBB
U1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNl
cik7CisgICAgX3BhcmVudC0+ZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yKGVycm9y
KTsKK30KKworLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilz
dHJlYW1EYXRhUGFyc2VyIGRpZFByb3ZpZGVNZWRpYURhdGE6KENNU2FtcGxlQnVmZmVyUmVmKXNh
bXBsZSBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQgbWVkaWFUeXBlOihO
U1N0cmluZyAqKW5zTWVkaWFUeXBlIGZsYWdzOihBVlN0cmVhbURhdGFQYXJzZXJPdXRwdXRNZWRp
YURhdGFGbGFncylmbGFncworeworICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwg
c3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKKyAgICBfcGFyZW50LT5kaWRQcm92aWRlTWVk
aWFEYXRhRm9yVHJhY2tJRCh0cmFja0lELCBzYW1wbGUsIG5zTWVkaWFUeXBlLCBmbGFncyk7Cit9
CisKK0FMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCistICh2b2lkKXN0cmVh
bURhdGFQYXJzZXJXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
OihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGZvclRyYWNrSUQ6KENNUGVy
c2lzdGVudFRyYWNrSUQpdHJhY2tJRAorQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5ECit7CisgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFy
c2VyID09IF9wYXJzZXIpOworICAgIF9wYXJlbnQtPndpbGxQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHRyYWNrSUQpOworfQorCitBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgorLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihB
VlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTooTlNEYXRhICopaW5pdERhdGEgZm9yVHJhY2tJRDoo
Q01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lECitBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURh
dGFQYXJzZXIgPT0gX3BhcnNlcik7CisgICAgX3BhcmVudC0+ZGlkUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChpbml0RGF0YSwgdHJhY2tJRCk7Cit9
CitAZW5kCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI3ByYWdtYSBtYXJrIC0KKyNwcmFnbWEg
bWFyayBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQworCitjbGFzcyBNZWRpYURlc2NyaXB0aW9uQVZG
T2JqQyBmaW5hbCA6IHB1YmxpYyBNZWRpYURlc2NyaXB0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrKiB0cmFj
aykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyh0cmFjaykp
OyB9CisgICAgdmlydHVhbCB+TWVkaWFEZXNjcmlwdGlvbkFWRk9iakMoKSB7IH0KKworICAgIGJv
b2wgaXNWaWRlbygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNWaWRlbzsgfQorICAgIGJv
b2wgaXNBdWRpbygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNBdWRpbzsgfQorICAgIGJv
b2wgaXNUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1RleHQ7IH0KKyAgICBBdG9t
U3RyaW5nIGNvZGVjKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIC8vIEF0b21TdHJp
bmdzIGNhbiBvbmx5IGJlIGRlc3Ryb3llZCBmcm9tIHRoZSBzYW1lIHRocmVhZCB0aGV5J3JlCisg
ICAgICAgIC8vIGNyZWF0ZWQgaW4uIFNpbmNlIHRoaXMgc3RydWN0dXJlIGlzIGNyZWF0ZWQgaW4g
YSBwYXJzZXIgdGhyZWFkCisgICAgICAgIC8vIG9ubHkgY3JlYXRlIHRoZSBBdG9tU3RyaW5nIHRo
ZSBmaXJzdCB0aW1lIHRoaXMgZnVuY3Rpb24gaXMgYWNjZXNzZWQKKyAgICAgICAgLy8gd2hpY2gg
aXMgcHJlc3VtYWJseSBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgICAgIGlmICghbV9jb2RlYykKKyAgICAgICAgICAgIG1fY29kZWMgPSBB
dG9tU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigmbV9vcmlnaW5hbENvZGVj
KSwgNCk7CisgICAgICAgIHJldHVybiAqbV9jb2RlYzsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
TWVkaWFEZXNjcmlwdGlvbkFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaykKKyAgICAgICAgOiBt
X2lzVmlkZW8oW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3Rlcmlz
dGljVmlzdWFsXSkKKyAgICAgICAgLCBtX2lzQXVkaW8oW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVy
aXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJsZV0pCisgICAgICAgICwgbV9pc1RleHQo
W3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJs
ZV0pCisgICAgeworICAgICAgICBOU0FycmF5KiBmb3JtYXREZXNjcmlwdGlvbnMgPSBbdHJhY2sg
Zm9ybWF0RGVzY3JpcHRpb25zXTsKKyAgICAgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNj
cmlwdGlvbiA9IFtmb3JtYXREZXNjcmlwdGlvbnMgY291bnRdID8gKF9fYnJpZGdlIENNRm9ybWF0
RGVzY3JpcHRpb25SZWYpW2Zvcm1hdERlc2NyaXB0aW9ucyBvYmplY3RBdEluZGV4OjBdIDogMDsK
KyAgICAgICAgaWYgKGRlc2NyaXB0aW9uKSB7CisgICAgICAgICAgICBtX29yaWdpbmFsQ29kZWMg
PSBQQUw6OnNvZnRMaW5rX0NvcmVNZWRpYV9DTUZvcm1hdERlc2NyaXB0aW9uR2V0TWVkaWFTdWJU
eXBlKGRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgIENGU3RyaW5nUmVmIG9yaWdpbmFsRm9ybWF0
S2V5ID0gUEFMOjpjYW5Mb2FkX0NvcmVNZWRpYV9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lv
bl9Qcm90ZWN0ZWRDb250ZW50T3JpZ2luYWxGb3JtYXQoKSA/IFBBTDo6Z2V0X0NvcmVNZWRpYV9r
Q01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9Qcm90ZWN0ZWRDb250ZW50T3JpZ2luYWxGb3Jt
YXQoKSA6IENGU1RSKCJDb21tb25FbmNyeXB0aW9uT3JpZ2luYWxGb3JtYXQiKTsKKyAgICAgICAg
ICAgIENGVHlwZVJlZiBvcmlnaW5hbEZvcm1hdCA9IENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRl
bnNpb24oZGVzY3JpcHRpb24sIG9yaWdpbmFsRm9ybWF0S2V5KTsKKyAgICAgICAgICAgIGlmIChv
cmlnaW5hbEZvcm1hdCAmJiBDRkdldFR5cGVJRChvcmlnaW5hbEZvcm1hdCkgPT0gQ0ZOdW1iZXJH
ZXRUeXBlSUQoKSkKKyAgICAgICAgICAgICAgICBDRk51bWJlckdldFZhbHVlKChDRk51bWJlclJl
ZilvcmlnaW5hbEZvcm1hdCwga0NGTnVtYmVyU0ludDMyVHlwZSwgJm1fb3JpZ2luYWxDb2RlYyk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBGb3VyQ2hhckNvZGUgbV9vcmlnaW5hbENvZGVjOwor
ICAgIG11dGFibGUgT3B0aW9uYWw8QXRvbVN0cmluZz4gbV9jb2RlYzsKKyAgICBib29sIG1faXNW
aWRlbzsKKyAgICBib29sIG1faXNBdWRpbzsKKyAgICBib29sIG1faXNUZXh0OworfTsKKworI3By
YWdtYSBtYXJrIC0KKyNwcmFnbWEgbWFyayBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDCisKK2Jv
b2wgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRlZChjb25z
dCBDb250ZW50VHlwZSYgdHlwZSkKK3sKKyAgICBTdHJpbmcgZXh0ZW5kZWRUeXBlID0gdHlwZS5y
YXcoKTsKKyAgICBTdHJpbmcgb3V0cHV0Q29kZWNzID0gdHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5
cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsKKyAgICBpZiAoIW91dHB1dENvZGVjcy5pc0VtcHR5KCkg
JiYgW1BBTDo6Z2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKG91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFyYW1l
dGVyOildKSB7CisgICAgICAgIG91dHB1dENvZGVjcyA9IFtQQUw6OmdldEFWU3RyZWFtRGF0YVBh
cnNlckNsYXNzKCkgb3V0cHV0TUlNRUNvZGVjUGFyYW1ldGVyRm9ySW5wdXRNSU1FQ29kZWNQYXJh
bWV0ZXI6b3V0cHV0Q29kZWNzXTsKKyAgICAgICAgZXh0ZW5kZWRUeXBlID0gbWFrZVN0cmluZyh0
eXBlLmNvbnRhaW5lclR5cGUoKSwgIjsgY29kZWNzPVwiIiwgb3V0cHV0Q29kZWNzLCAiXCIiKTsK
KyAgICB9CisKKyAgICBhdXRvJiBzdHJlYW1EYXRhUGFyc2VyQ2FjaGUgPSBBVlN0cmVhbURhdGFQ
YXJzZXJNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKTsKKyAgICBpZiAoc3RyZWFtRGF0YVBhcnNl
ckNhY2hlLmlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBzdHJlYW1EYXRhUGFyc2VyQ2Fj
aGUuY2FuRGVjb2RlVHlwZShleHRlbmRlZFR5cGUpID09IE1lZGlhUGxheWVyRW51bXM6OlN1cHBv
cnRzVHlwZTo6SXNTdXBwb3J0ZWQ7CisKKyAgICBhdXRvJiBhc3NldENhY2hlID0gQVZBc3NldE1J
TUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpOworICAgIGlmIChhc3NldENhY2hlLmlzQXZhaWxhYmxl
KCkpCisgICAgICAgIHJldHVybiBhc3NldENhY2hlLmNhbkRlY29kZVR5cGUoZXh0ZW5kZWRUeXBl
KSA9PSBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkOworCisgICAg
cmV0dXJuIGZhbHNlOworfQorCitTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDKCkKKyAgICA6IG1fcGFyc2VyKGFkb3B0TlMoW1BBTDo6YWxsb2NBVlN0
cmVhbURhdGFQYXJzZXJJbnN0YW5jZSgpIGluaXRdKSkKKyAgICAsIG1fZGVsZWdhdGUoYWRvcHRO
UyhbW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aFBhcnNlcjpt
X3BhcnNlci5nZXQoKSBwYXJlbnQ6dGhpc10pKQoreworfQorCitTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCit7CisgICAgbV9kZWxlZ2F0ZS5n
ZXQoKS5wYXJlbnQgPSBudWxscHRyOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6OmFwcGVuZERhdGEoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgZGF0YSwgQXBwZW5kRmxhZ3Mg
ZmxhZ3MpCit7CisgICAgYXV0byBzaGFyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShkYXRhKSk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWREYXRhLT5jcmVhdGVOU0RhdGEo
KTsKKyAgICBpZiAobV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHx8IGZsYWdzID09IEFwcGVuZEZsYWdz
OjpEaXNjb250aW51aXR5KQorICAgICAgICBbbV9wYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0Rh
dGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3RyZWFtRGF0YVBhcnNlclN0cmVhbURhdGFEaXNjb250aW51
aXR5XTsKKyAgICBlbHNlCisgICAgICAgIFttX3BhcnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0
YS5nZXQoKV07CisgICAgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0ID0gZmFsc2U7Cit9CisKK3ZvaWQg
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKCkKK3sKKyAg
ICBbbV9wYXJzZXIgcHJvdmlkZVBlbmRpbmdNZWRpYURhdGFdOworfQorCit2b2lkIFNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakM6OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGJv
b2wgc2hvdWxkLCBpbnQzMl90IHRyYWNrSUQpCit7CisgICAgW21fcGFyc2VyIHNldFNob3VsZFBy
b3ZpZGVNZWRpYURhdGE6c2hvdWxkIGZvclRyYWNrSUQ6dHJhY2tJRF07Cit9CisKK2Jvb2wgU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6c2hvdWxkUHJvdmlkZU1lZGlhZGF0YUZvclRyYWNrSUQo
aW50MzJfdCB0cmFja0lEKQoreworICAgIHJldHVybiBbbV9wYXJzZXIgc2hvdWxkUHJvdmlkZU1l
ZGlhRGF0YUZvclRyYWNrSUQ6dHJhY2tJRF07Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQzo6cmVzZXRQYXJzZXJTdGF0ZSgpCit7CisgICAgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0
ID0gdHJ1ZTsKKyAgICBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdt
ZW50ID0gdHJ1ZTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQYXJz
ZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQoreworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYXNzZXQgPSByZXRhaW5QdHIo
YXNzZXQpXSB7CisgICAgICAgIG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlv
blNlZ21lbnQgPSBmYWxzZTsKKworICAgICAgICBpZiAoIW1fZGlkUGFyc2VJbml0aWFsaXphdGlv
bkRhdGFDYWxsYmFjaykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBJbml0aWFsaXph
dGlvblNlZ21lbnQgc2VnbWVudDsKKworICAgICAgICBpZiAoW2Fzc2V0IHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Iob3ZlcmFsbER1cmF0aW9uSGludCldKQorICAgICAgICAgICAgc2VnbWVu
dC5kdXJhdGlvbiA9IFBBTDo6dG9NZWRpYVRpbWUoW2Fzc2V0IG92ZXJhbGxEdXJhdGlvbkhpbnRd
KTsKKworICAgICAgICBpZiAoc2VnbWVudC5kdXJhdGlvbi5pc0ludmFsaWQoKSB8fCBzZWdtZW50
LmR1cmF0aW9uID09IE1lZGlhVGltZTo6emVyb1RpbWUoKSkKKyAgICAgICAgICAgIHNlZ21lbnQu
ZHVyYXRpb24gPSBQQUw6OnRvTWVkaWFUaW1lKFthc3NldCBkdXJhdGlvbl0pOworCisgICAgICAg
IGZvciAoQVZBc3NldFRyYWNrKiB0cmFjayBpbiBbYXNzZXQgdHJhY2tzXSkgeworICAgICAgICAg
ICAgaWYgKFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3Rp
Y0xlZ2libGVdKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUUoMTI1MTYxKTogSGFuZGxlIGlu
LWJhbmQgdGV4dCB0cmFja3MuCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1l
ZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWxdKSB7CisgICAgICAgICAgICAgICAgU291cmNlQnVmZmVy
UHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OjpWaWRlb1RyYWNrSW5mb3JtYXRp
b24gaW5mbzsKKyAgICAgICAgICAgICAgICBhdXRvIHZpZGVvVHJhY2sgPSBWaWRlb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKKyAgICAgICAgICAgICAgICBp
bmZvLnRyYWNrID0gdmlkZW9UcmFjay5jb3B5UmVmKCk7CisgICAgICAgICAgICAgICAgaW5mby5k
ZXNjcmlwdGlvbiA9IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDOjpjcmVhdGUodHJhY2spOworICAg
ICAgICAgICAgICAgIHNlZ21lbnQudmlkZW9UcmFja3MuYXBwZW5kKGluZm8pOworICAgICAgICAg
ICAgfSBlbHNlIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFj
dGVyaXN0aWNBdWRpYmxlXSkgeworICAgICAgICAgICAgICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDo6QXVkaW9UcmFja0luZm9ybWF0aW9uIGluZm87
CisgICAgICAgICAgICAgICAgYXV0byBhdWRpb1RyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjayk7CisgICAgICAgICAgICAgICAgaW5mby50cmFj
ayA9IGF1ZGlvVHJhY2suY29weVJlZigpOworICAgICAgICAgICAgICAgIGluZm8uZGVzY3JpcHRp
b24gPSBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKKyAgICAgICAgICAg
ICAgICBzZWdtZW50LmF1ZGlvVHJhY2tzLmFwcGVuZChpbmZvKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gRklYTUUoMTI1MTYxKSAgICA6IEFkZCBUZXh0VHJhY2sgc3VwcG9ydAor
ICAgICAgICB9CisKKyAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNr
KFdURk1vdmUoc2VnbWVudCkpOworICAgIH0pOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakM6OmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcihOU0Vycm9yKiBlcnJv
cikKK3sKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigq
dGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKV0geworICAgICAgICBpZiAobV9kaWRFbmNv
dW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjaykKKyAgICAgICAgICAgIG1fZGlkRW5jb3Vu
dGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2soZXJyb3IuZ2V0KCkuY29kZSk7CisgICAgfSk7
Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0
YUZvclRyYWNrSUQoaW50MzJfdCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZm
ZXIsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlLCB1bnNpZ25lZCBmbGFncykKK3sKKyAgICBVTlVT
RURfUEFSQU0oZmxhZ3MpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHN0cm9uZ1RoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgc2FtcGxlQnVmZmVyID0gcmV0YWluUHRyKHNhbXBsZUJ1ZmZlciks
IHRyYWNrSUQsIG1lZGlhVHlwZSA9IG1lZGlhVHlwZV0geworICAgICAgICBpZiAoIW1fZGlkUHJv
dmlkZU1lZGlhRGF0YUNhbGxiYWNrKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlm
IChtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50KQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gbWVkaWFTYW1wbGUgPSBNZWRpYVNhbXBsZUFW
Rk9iakM6OmNyZWF0ZShzYW1wbGVCdWZmZXIuZ2V0KCksIHRyYWNrSUQpOworCisgICAgICAgIGlm
IChtZWRpYVNhbXBsZS0+aXNIb21vZ2VuZW91cygpKSB7CisgICAgICAgICAgICBtX2RpZFByb3Zp
ZGVNZWRpYURhdGFDYWxsYmFjayhXVEZNb3ZlKG1lZGlhU2FtcGxlKSwgdHJhY2tJRCwgbWVkaWFU
eXBlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoYXV0
byYgc2FtcGxlIDogbWVkaWFTYW1wbGUtPmRpdmlkZUludG9Ib21vZ2VuZW91c1NhbXBsZXMoKSkK
KyAgICAgICAgICAgIG1fZGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKFdURk1vdmUoc2FtcGxl
KSwgdHJhY2tJRCwgbWVkaWFUeXBlKTsKKyAgICB9KTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25E
YXRhRm9yVHJhY2tJRChpbnQzMl90IHRyYWNrSUQpCit7CisgICAgbV93aWxsUHJvdmlkZUNvbnRl
bnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrKHRyYWNrSUQp
OworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoTlNEYXRhKiBuc0luaXREYXRh
LCBpbnQzMl90IHRyYWNrSUQpCit7CisgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNy
ZWF0ZShuc0luaXREYXRhLmxlbmd0aCk7CisgICAgW25zSW5pdERhdGEgZ2V0Qnl0ZXM6aW5pdERh
dGEtPmRhdGEoKSBsZW5ndGg6aW5pdERhdGEtPmxlbmd0aCgpXTsKKworICAgIG1fZGlkUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrKFdU
Rk1vdmUoaW5pdERhdGEpLCB0cmFja0lEKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQy5oCmluZGV4IGRmYTEzNGI0ZDY4ZmRiNzQ3MzQzNzhkOWY5ZGQzYmQ4NDFm
MzNkNjUuLjZkMTk0YWIxNDBhOGJkMzQ5M2JlYjNhZGRmMzI4M2QzYjhlNzVmZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApA
QCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYgVVNFKEFWRk9V
TkRBVElPTikKIAorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlci5oIgogI2luY2x1ZGUgIlNv
dXJjZUJ1ZmZlclByaXZhdGUuaCIKICNpbmNsdWRlIDxkaXNwYXRjaC9ncm91cC5oPgogI2luY2x1
ZGUgPHd0Zi9Cb3guaD4KQEAgLTM4LDE4ICszOSwxNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
I2luY2x1ZGUgPHd0Zi9XVEZTZW1hcGhvcmUuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9C
aW5hcnlTZW1hcGhvcmUuaD4KIAotT0JKQ19DTEFTUyBBVkFzc2V0OwogT0JKQ19DTEFTUyBBVlN0
cmVhbURhdGFQYXJzZXI7CiBPQkpDX0NMQVNTIEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlcjsK
IE9CSkNfQ0xBU1MgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7CiBPQkpDX0NMQVNTIE5TRGF0
YTsKIE9CSkNfQ0xBU1MgTlNFcnJvcjsKIE9CSkNfQ0xBU1MgTlNPYmplY3Q7Ci1PQkpDX0NMQVNT
IFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyOwogT0JKQ19DTEFTUyBXZWJBVlNhbXBsZUJ1
ZmZlckVycm9yTGlzdGVuZXI7CiAKIHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVy
ICpDTVNhbXBsZUJ1ZmZlclJlZjsKQEAgLTg2LDM0ICs4NiwyNyBAQCBjbGFzcyBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQyBmaW5hbAogI2VuZGlmCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gY3JlYXRlKE1lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMqKTsKKyAgICBzdGF0aWMgUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBjcmVh
dGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyosIFJlZjxTb3VyY2VCdWZmZXJQYXJzZXI+JiYp
OwogICAgIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKCk7CiAKICAgICB2b2lk
IGNsZWFyTWVkaWFTb3VyY2UoKSB7IG1fbWVkaWFTb3VyY2UgPSBudWxscHRyOyB9CiAKLSAgICAv
LyBBVlN0cmVhbURhdGFQYXJzZXIgZGVsZWdhdGUgbWV0aG9kcwotICAgIHZvaWQgZGlkUGFyc2VT
dHJlYW1EYXRhQXNBc3NldChBVkFzc2V0Kik7Ci0gICAgdm9pZCBkaWRGYWlsVG9QYXJzZVN0cmVh
bURhdGFXaXRoRXJyb3IoTlNFcnJvciopOwotICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZv
clRyYWNrSUQoaW50IHRyYWNrSUQsIENNU2FtcGxlQnVmZmVyUmVmLCBjb25zdCBTdHJpbmcmIG1l
ZGlhVHlwZSwgdW5zaWduZWQgZmxhZ3MpOwotICAgIHZvaWQgZGlkUmVhY2hFbmRPZlRyYWNrV2l0
aFRyYWNrSUQoaW50IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKLSAgICB2b2lk
IHdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lE
KGludCB0cmFja0lEKTsKLSAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRp
YWxpemF0aW9uRGF0YUZvclRyYWNrSUQoTlNEYXRhKiwgaW50IHRyYWNrSUQsIEJveDxCaW5hcnlT
ZW1hcGhvcmU+KTsKLQotICAgIGJvb2wgcHJvY2Vzc0NvZGVkRnJhbWUoaW50IHRyYWNrSUQsIENN
U2FtcGxlQnVmZmVyUmVmLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CisgICAgdm9pZCB3aWxs
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChpbnQz
Ml90IHRyYWNrSUQpOworICAgIHZvaWQgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlh
bGl6YXRpb25EYXRhRm9yVHJhY2tJRChSZWY8VWludDhBcnJheT4mJiwgaW50MzJfdCB0cmFja0lE
LCBCb3g8QmluYXJ5U2VtYXBob3JlPik7CiAKICAgICBib29sIGhhc1ZpZGVvKCkgY29uc3Q7CiAg
ICAgYm9vbCBoYXNTZWxlY3RlZFZpZGVvKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNBdWRpbygpIGNv
bnN0OwogCi0gICAgdm9pZCB0cmFja0RpZENoYW5nZUVuYWJsZWQoVmlkZW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMqKTsKLSAgICB2b2lkIHRyYWNrRGlkQ2hhbmdlRW5hYmxlZChBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyopOworICAgIHZvaWQgdHJhY2tEaWRDaGFu
Z2VTZWxlY3RlZChWaWRlb1RyYWNrUHJpdmF0ZSYsIGJvb2wgc2VsZWN0ZWQpOworICAgIHZvaWQg
dHJhY2tEaWRDaGFuZ2VFbmFibGVkKEF1ZGlvVHJhY2tQcml2YXRlJiwgYm9vbCBlbmFibGVkKTsK
IAogICAgIHZvaWQgd2lsbFNlZWsoKTsKICAgICBNZWRpYVRpbWUgZmFzdFNlZWtUaW1lRm9yTWVk
aWFUaW1lKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVUaHJlc2hv
bGQsIGNvbnN0IE1lZGlhVGltZSYgcG9zaXRpdmVUaHJlc2hvbGQpOwogICAgIEZsb2F0U2l6ZSBu
YXR1cmFsU2l6ZSgpOwogCiAgICAgaW50IHByb3RlY3RlZFRyYWNrSUQoKSBjb25zdCB7IHJldHVy
biBtX3Byb3RlY3RlZFRyYWNrSUQ7IH0KLSAgICBBVlN0cmVhbURhdGFQYXJzZXIqIHBhcnNlcigp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyLmdldCgpOyB9CisgICAgQVZTdHJlYW1EYXRhUGFyc2Vy
KiBwYXJzZXIoKSBjb25zdDsKICAgICB2b2lkIHNldENETVNlc3Npb24oQ0RNU2Vzc2lvbk1lZGlh
U291cmNlQVZGT2JqQyopOwogICAgIHZvaWQgc2V0Q0RNSW5zdGFuY2UoQ0RNSW5zdGFuY2UqKTsK
ICAgICB2b2lkIGF0dGVtcHRUb0RlY3J5cHQoKTsKQEAgLTE0OCw3ICsxNDEsMTIgQEAgcHVibGlj
OgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyopOworICAgIGV4cGxpY2l0IFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqLCBSZWY8U291cmNl
QnVmZmVyUGFyc2VyPiYmKTsKKworICAgIHVzaW5nIEluaXRpYWxpemF0aW9uU2VnbWVudCA9IFNv
dXJjZUJ1ZmZlclBhcnNlcjo6SW5pdGlhbGl6YXRpb25TZWdtZW50OworICAgIHZvaWQgZGlkUGFy
c2VJbml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYpOworICAgIHZvaWQg
ZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nKGludDMyX3QpOworICAgIHZvaWQgZGlkUHJv
dmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoUmVmPE1lZGlhU2FtcGxlPiYmLCBpbnQzMl90IHRyYWNr
SUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZh
dGUgb3ZlcnJpZGVzCiAgICAgdm9pZCBzZXRDbGllbnQoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVu
dCopIGZpbmFsOwpAQCAtMTcyLDI4ICsxNzAsMjggQEAgcHJpdmF0ZToKICAgICB2b2lkIGFwcGVu
ZENvbXBsZXRlZCgpOwogICAgIHZvaWQgZGVzdHJveVBhcnNlcigpOwogICAgIHZvaWQgZGVzdHJv
eVJlbmRlcmVycygpOworICAgIHZvaWQgY2xlYXJUcmFja3MoKTsKIAogICAgIHZvaWQgZmx1c2hW
aWRlbygpOwogICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KICAgICB2b2lk
IGZsdXNoKEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlciAqKTsKICAgICBBTExPV19ORVdfQVBJ
X1dJVEhPVVRfR1VBUkRTX0VORAogCi0gICAgVmVjdG9yPFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQz4+IG1fdmlkZW9UcmFja3M7Ci0gICAgVmVjdG9yPFJlZlB0cjxB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4+IG1fYXVkaW9UcmFja3M7CisgICAg
VmVjdG9yPFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4+IG1fdmlkZW9UcmFja3M7CisgICAgVmVj
dG9yPFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4+IG1fYXVkaW9UcmFja3M7CiAgICAgVmVjdG9y
PFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQqPiBtX2Vycm9yQ2xpZW50czsK
IAogICAgIFdlYWtQdHJGYWN0b3J5PFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBtX2FwcGVu
ZFdlYWtGYWN0b3J5OwogCi0gICAgUmV0YWluUHRyPEFWU3RyZWFtRGF0YVBhcnNlcj4gbV9wYXJz
ZXI7Ci0gICAgUmV0YWluUHRyPEFWQXNzZXQ+IG1fYXNzZXQ7CisgICAgUmVmPFNvdXJjZUJ1ZmZl
clBhcnNlcj4gbV9wYXJzZXI7CiAgICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyPiBtX2Rpc3BsYXlMYXllcjsKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JF
R0lOCiAgICAgSGFzaE1hcDxpbnQsIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVy
ZXI+PiBtX2F1ZGlvUmVuZGVyZXJzOwogICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNf
RU5ECi0gICAgUmV0YWluUHRyPFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyPiBtX2RlbGVn
YXRlOwogICAgIFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlckVycm9yTGlzdGVuZXI+IG1fZXJy
b3JMaXN0ZW5lcjsKICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gbV9oZGNwRXJyb3I7CiAgICAgQm94
PEJpbmFyeVNlbWFwaG9yZT4gbV9oYXNTZXNzaW9uU2VtYXBob3JlOworICAgIEJveDxTZW1hcGhv
cmU+IG1fYWJvcnRTZW1hcGhvcmU7CiAgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfZ3JvdXBfdD4g
bV9pc0FwcGVuZGluZ0dyb3VwOwogICAgIFJlZlB0cjxXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Np
b24+IG1fZGVjb21wcmVzc2lvblNlc3Npb247CiAKQEAgLTIxMSw4ICsyMDksNiBAQCBwcml2YXRl
OgogICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gbV9jYWNoZWRTaXplOwogICAgIEZsb2F0U2l6ZSBt
X2N1cnJlbnRTaXplOwogICAgIGJvb2wgbV9wYXJzaW5nU3VjY2VlZGVkIHsgdHJ1ZSB9OwotICAg
IGJvb2wgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHsgZmFsc2UgfTsKLSAgICBib29sIG1fZGlzY2Fy
ZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlvblNlZ21lbnQgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV93YWl0aW5nRm9yS2V5IHsgdHJ1ZSB9OwogICAgIGludCBtX2VuYWJsZWRWaWRlb1RyYWNr
SUQgeyAtMSB9OwogICAgIGludCBtX3Byb3RlY3RlZFRyYWNrSUQgeyAtMSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRl
eCBkNzM1Nzc1Y2M4ZjA0YjhiMDIxYjM1YzcwMTY5NWJkMjRmNmY4ZGE4Li5iOWE0ODljMDgyOTQz
ZTM1OTY0NGE0MzU2NjI5ZWVmYmE5ZDkyOTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtNDQsNiArNDQsNyBAQAog
I2ltcG9ydCAiTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oIgogI2ltcG9ydCAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgorI2ltcG9ydCAiU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5oIgogI2ltcG9ydCAiU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oIgog
I2ltcG9ydCAiVGltZVJhbmdlcy5oIgogI2ltcG9ydCAiVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaCIKQEAgLTgyLDE1MyArODMsNiBAQCAtICh2b2lkKWFkZFN0cmVhbURhdGFQ
YXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXI7CiAtICh2b2lkKXJl
bW92ZVN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJz
ZXI7CiBAZW5kCiAKLSNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1hcmsgV2ViQVZTdHJlYW1EYXRh
UGFyc2VyTGlzdGVuZXIKLQotQGludGVyZmFjZSBXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5l
ciA6IE5TT2JqZWN0PEFWU3RyZWFtRGF0YVBhcnNlck91dHB1dEhhbmRsaW5nPiB7Ci0gICAgV2Vh
a1B0cjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gX3BhcmVudDsKLSAgICBC
b3g8U2VtYXBob3JlPiBfYWJvcnRTZW1hcGhvcmU7Ci0gICAgQVZTdHJlYW1EYXRhUGFyc2VyKiBf
cGFyc2VyOwotfQotQHByb3BlcnR5IChhc3NpZ24pIFdlYWtQdHI8V2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM+IHBhcmVudDsKLUBwcm9wZXJ0eSAoYXNzaWduKSBCb3g8U2VtYXBo
b3JlPiBhYm9ydFNlbWFwaG9yZTsKLS0gKGlkKWluaXRXaXRoUGFyc2VyOihBVlN0cmVhbURhdGFQ
YXJzZXIqKXBhcnNlciBwYXJlbnQ6KFdlYWtQdHI8V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM+KXBhcmVudDsKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYkFWU3RyZWFtRGF0
YVBhcnNlckxpc3RlbmVyCi0tIChpZClpbml0V2l0aFBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2Vy
KilwYXJzZXIgcGFyZW50OihXZWFrUHRyPFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDPilwYXJlbnQKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikK
LSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIEFTU0VSVChwYXJlbnQpOwotICAgIF9wYXJlbnQg
PSBwYXJlbnQ7Ci0gICAgX3BhcnNlciA9IHBhcnNlcjsKLSAgICBbX3BhcnNlciBzZXREZWxlZ2F0
ZTpzZWxmXTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotQHN5bnRoZXNpemUgcGFyZW50PV9wYXJl
bnQ7Ci1Ac3ludGhlc2l6ZSBhYm9ydFNlbWFwaG9yZT1fYWJvcnRTZW1hcGhvcmU7Ci0KLS0gKHZv
aWQpZGVhbGxvYwotewotICAgIFtfcGFyc2VyIHNldERlbGVnYXRlOm5pbF07Ci0gICAgW3N1cGVy
IGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWludmFsaWRhdGUKLXsKLSAgICBbX3BhcnNlciBzZXRE
ZWxlZ2F0ZTpuaWxdOwotICAgIF9wYXJzZXIgPSBudWxscHRyOwotfQotCi0tICh2b2lkKXN0cmVh
bURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkUGFy
c2VTdHJlYW1EYXRhQXNBc3NldDooQVZBc3NldCAqKWFzc2V0Ci17Ci0gICAgQVNTRVJUX1VOVVNF
RChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOwotCi0gICAg
UmV0YWluUHRyPEFWQXNzZXQ+IHByb3RlY3RlZEFzc2V0ID0gYXNzZXQ7Ci0gICAgY2FsbE9uTWFp
blRocmVhZChbcGFyZW50ID0gX3BhcmVudCwgcHJvdGVjdGVkQXNzZXQgPSBXVEZNb3ZlKHByb3Rl
Y3RlZEFzc2V0KV0gewotICAgICAgICBpZiAocGFyZW50KQotICAgICAgICAgICAgcGFyZW50LT5k
aWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KHByb3RlY3RlZEFzc2V0LmdldCgpKTsKLSAgICB9KTsK
LX0KLQotLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJl
YW1EYXRhUGFyc2VyIGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQ6KEFWQXNzZXQgKilhc3NldCB3
aXRoRGlzY29udGludWl0eTooQk9PTClkaXNjb250aW51aXR5Ci17Ci0gICAgVU5VU0VEX1BBUkFN
KGRpc2NvbnRpbnVpdHkpOwotICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3Ry
ZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLQotICAgIFJldGFpblB0cjxBVkFzc2V0PiBwcm90
ZWN0ZWRBc3NldCA9IGFzc2V0OwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3BhcmVudCA9IF9wYXJl
bnQsIHByb3RlY3RlZEFzc2V0ID0gV1RGTW92ZShwcm90ZWN0ZWRBc3NldCldIHsKLSAgICAgICAg
aWYgKHBhcmVudCkKLSAgICAgICAgICAgIHBhcmVudC0+ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3Nl
dChwcm90ZWN0ZWRBc3NldC5nZXQoKSk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpc3RyZWFtRGF0
YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRGYWlsVG9Q
YXJzZVN0cmVhbURhdGFXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgotewotICAgIEFTU0VSVF9V
TlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLQot
ICAgIFJldGFpblB0cjxOU0Vycm9yPiBwcm90ZWN0ZWRFcnJvciA9IGVycm9yOwotICAgIGNhbGxP
bk1haW5UaHJlYWQoW3BhcmVudCA9IF9wYXJlbnQsIHByb3RlY3RlZEVycm9yID0gV1RGTW92ZShw
cm90ZWN0ZWRFcnJvcildIHsKLSAgICAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAgIHBhcmVu
dC0+ZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yKHByb3RlY3RlZEVycm9yLmdldCgp
KTsKLSAgICB9KTsKLX0KLQotLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQ
YXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFByb3ZpZGVNZWRpYURhdGE6KENNU2FtcGxlQnVm
ZmVyUmVmKXNhbXBsZSBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQgbWVk
aWFUeXBlOihOU1N0cmluZyAqKW5zTWVkaWFUeXBlIGZsYWdzOihBVlN0cmVhbURhdGFQYXJzZXJP
dXRwdXRNZWRpYURhdGFGbGFncylmbGFncwotewotICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0
YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLQotICAgIFJldGFpblB0cjxD
TVNhbXBsZUJ1ZmZlclJlZj4gcHJvdGVjdGVkU2FtcGxlID0gc2FtcGxlOwotICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3BhcmVudCA9IF9wYXJlbnQsIHByb3RlY3RlZFNhbXBsZSA9IFdURk1vdmUocHJv
dGVjdGVkU2FtcGxlKSwgdHJhY2tJRCwgbWVkaWFUeXBlID0gU3RyaW5nKG5zTWVkaWFUeXBlKSwg
ZmxhZ3NdIHsKLSAgICAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAgIHBhcmVudC0+ZGlkUHJv
dmlkZU1lZGlhRGF0YUZvclRyYWNrSUQodHJhY2tJRCwgcHJvdGVjdGVkU2FtcGxlLmdldCgpLCBt
ZWRpYVR5cGUsIGZsYWdzKTsKLSAgICB9KTsKLX0KLQotLSAodm9pZClzdHJlYW1EYXRhUGFyc2Vy
OihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFJlYWNoRW5kT2ZUcmFj
a1dpdGhUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQgbWVkaWFUeXBlOihOU1N0
cmluZyAqKW5zTWVkaWFUeXBlCi17Ci0gICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2Vy
LCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOwotCi0gICAgY2FsbE9uTWFpblRocmVhZChb
cGFyZW50ID0gX3BhcmVudCwgdHJhY2tJRCwgbWVkaWFUeXBlID0gU3RyaW5nKG5zTWVkaWFUeXBl
KV0gewotICAgICAgICBpZiAocGFyZW50KQotICAgICAgICAgICAgcGFyZW50LT5kaWRSZWFjaEVu
ZE9mVHJhY2tXaXRoVHJhY2tJRCh0cmFja0lELCBtZWRpYVR5cGUpOwotICAgIH0pOwotfQotCi1B
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgotLSAodm9pZClzdHJlYW1EYXRh
UGFyc2VyV2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTooQVZT
dHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBmb3JUcmFja0lEOihDTVBlcnNpc3Rl
bnRUcmFja0lEKXRyYWNrSUQKLUFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAot
ewotICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9
PSBfcGFyc2VyKTsKLQotICAgIC8vIFdlIG11c3QgY2FsbCBzeW5jaHJvbm91c2x5IHRvIHRoZSBt
YWluIHRocmVhZCwgYXMgdGhlIEFWU3RyZWFtU2Vzc2lvbiBtdXN0IGJlIGFzc29jaWF0ZWQKLSAg
ICAvLyB3aXRoIHRoZSBzdHJlYW1EYXRhUGFyc2VyIGJlZm9yZSB0aGUgZGVsZWdhdGUgbWV0aG9k
IHJldHVybnMuCi0gICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gcmVzcG9uZGVkU2VtYXBob3JlID0g
Qm94PEJpbmFyeVNlbWFwaG9yZT46OmNyZWF0ZSgpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Bh
cmVudCA9IF9wYXJlbnQsIHRyYWNrSUQsIHJlc3BvbmRlZFNlbWFwaG9yZV0oKSB7Ci0gICAgICAg
IGlmIChwYXJlbnQpCi0gICAgICAgICAgICBwYXJlbnQtPndpbGxQcm92aWRlQ29udGVudEtleVJl
cXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHRyYWNrSUQpOwotICAgICAgICByZXNw
b25kZWRTZW1hcGhvcmUtPnNpZ25hbCgpOwotICAgIH0pOwotCi0gICAgd2hpbGUgKHRydWUpIHsK
LSAgICAgICAgaWYgKHJlc3BvbmRlZFNlbWFwaG9yZS0+d2FpdEZvcigxMDBfbXMpKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChfYWJvcnRTZW1hcGhvcmUtPndhaXRGb3IoMTAw
X21zKSkgewotICAgICAgICAgICAgX2Fib3J0U2VtYXBob3JlLT5zaWduYWwoKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLX0KLQotQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfQkVHSU4KLS0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRh
UGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0
aWFsaXphdGlvbkRhdGE6KE5TRGF0YSAqKWluaXREYXRhIGZvclRyYWNrSUQ6KENNUGVyc2lzdGVu
dFRyYWNrSUQpdHJhY2tJRAotQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECi17
Ci0gICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09
IF9wYXJzZXIpOwotCi0gICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gaGFzU2Vzc2lvblNlbWFwaG9y
ZSA9IEJveDxCaW5hcnlTZW1hcGhvcmU+OjpjcmVhdGUoKTsKLSAgICBjYWxsT25NYWluVGhyZWFk
KFtwYXJlbnQgPSBfcGFyZW50LCBwcm90ZWN0ZWRJbml0RGF0YSA9IFJldGFpblB0cjxOU0RhdGE+
KGluaXREYXRhKSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNlbWFwaG9yZV0gewotICAgICAgICBpZiAo
cGFyZW50KQotICAgICAgICAgICAgcGFyZW50LT5kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJ
bml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHByb3RlY3RlZEluaXREYXRhLmdldCgpLCB0cmFj
a0lELCBoYXNTZXNzaW9uU2VtYXBob3JlKTsKLSAgICB9KTsKLQotICAgIHdoaWxlICh0cnVlKSB7
Ci0gICAgICAgIGlmIChoYXNTZXNzaW9uU2VtYXBob3JlLT53YWl0Rm9yKDEwMF9tcykpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKF9hYm9ydFNlbWFwaG9yZS0+d2FpdEZvcigx
MDBfbXMpKSB7Ci0gICAgICAgICAgICBfYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotfQotQGVuZAotCiBAaW50ZXJmYWNlIFdl
YkFWU2FtcGxlQnVmZmVyRXJyb3JMaXN0ZW5lciA6IE5TT2JqZWN0IHsKICAgICBXZWFrUHRyPFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBfcGFyZW50OwogICAgIFZlY3RvcjxS
ZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+PiBfbGF5ZXJzOwpAQCAtMzkxLDQz
ICsyNDUsNiBAQCBAZW5kCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgUEFM
OwogCi0jcHJhZ21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIE1lZGlhRGVzY3JpcHRpb25BVkZPYmpD
Ci0KLWNsYXNzIE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDIGZpbmFsIDogcHVibGljIE1lZGlhRGVz
Y3JpcHRpb24gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVkaWFEZXNjcmlwdGlvbkFWRk9i
akM+IGNyZWF0ZShBVkFzc2V0VHJhY2sqIHRyYWNrKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1l
ZGlhRGVzY3JpcHRpb25BVkZPYmpDKHRyYWNrKSk7IH0KLSAgICB2aXJ0dWFsIH5NZWRpYURlc2Ny
aXB0aW9uQVZGT2JqQygpIHsgfQotCi0gICAgQXRvbVN0cmluZyBjb2RlYygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fY29kZWM7IH0KLSAgICBib29sIGlzVmlkZW8oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2lzVmlkZW87IH0KLSAgICBib29sIGlzQXVkaW8oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2lzQXVkaW87IH0KLSAgICBib29sIGlzVGV4dCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1faXNUZXh0OyB9Ci0gICAgCi1wcml2YXRlOgotICAgIE1lZGlhRGVzY3JpcHRp
b25BVkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2spCi0gICAgICAgIDogbV9pc1ZpZGVvKFt0cmFj
ayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbF0pCi0g
ICAgICAgICwgbV9pc0F1ZGlvKFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFD
aGFyYWN0ZXJpc3RpY0F1ZGlibGVdKQotICAgICAgICAsIG1faXNUZXh0KFt0cmFjayBoYXNNZWRp
YUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGVdKQotICAgIHsKLSAg
ICAgICAgTlNBcnJheSogZm9ybWF0RGVzY3JpcHRpb25zID0gW3RyYWNrIGZvcm1hdERlc2NyaXB0
aW9uc107Ci0gICAgICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzY3JpcHRpb24gPSBbZm9y
bWF0RGVzY3JpcHRpb25zIGNvdW50XSA/IChfX2JyaWRnZSBDTUZvcm1hdERlc2NyaXB0aW9uUmVm
KVtmb3JtYXREZXNjcmlwdGlvbnMgb2JqZWN0QXRJbmRleDowXSA6IDA7Ci0gICAgICAgIGlmIChk
ZXNjcmlwdGlvbikgewotICAgICAgICAgICAgRm91ckNoYXJDb2RlIGNvZGVjID0gQ01Gb3JtYXRE
ZXNjcmlwdGlvbkdldE1lZGlhU3ViVHlwZShkZXNjcmlwdGlvbik7Ci0gICAgICAgICAgICBDRlN0
cmluZ1JlZiBvcmlnaW5hbEZvcm1hdEtleSA9IFBBTDo6Y2FuTG9hZF9Db3JlTWVkaWFfa0NNRm9y
bWF0RGVzY3JpcHRpb25FeHRlbnNpb25fUHJvdGVjdGVkQ29udGVudE9yaWdpbmFsRm9ybWF0KCkg
PyBQQUw6OmdldF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fUHJvdGVj
dGVkQ29udGVudE9yaWdpbmFsRm9ybWF0KCkgOiBDRlNUUigiQ29tbW9uRW5jcnlwdGlvbk9yaWdp
bmFsRm9ybWF0Iik7Ci0gICAgICAgICAgICBDRlR5cGVSZWYgb3JpZ2luYWxGb3JtYXQgPSBDTUZv
cm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9uKGRlc2NyaXB0aW9uLCBvcmlnaW5hbEZvcm1hdEtl
eSk7Ci0gICAgICAgICAgICBpZiAob3JpZ2luYWxGb3JtYXQgJiYgQ0ZHZXRUeXBlSUQob3JpZ2lu
YWxGb3JtYXQpID09IENGTnVtYmVyR2V0VHlwZUlEKCkpCi0gICAgICAgICAgICAgICAgQ0ZOdW1i
ZXJHZXRWYWx1ZSgoQ0ZOdW1iZXJSZWYpb3JpZ2luYWxGb3JtYXQsIGtDRk51bWJlclNJbnQzMlR5
cGUsICZjb2RlYyk7Ci0gICAgICAgICAgICBtX2NvZGVjID0gQXRvbVN0cmluZyhyZWludGVycHJl
dF9jYXN0PExDaGFyKj4oJmNvZGVjKSwgNCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBBdG9t
U3RyaW5nIG1fY29kZWM7Ci0gICAgYm9vbCBtX2lzVmlkZW87Ci0gICAgYm9vbCBtX2lzQXVkaW87
Ci0gICAgYm9vbCBtX2lzVGV4dDsKLX07Ci0KICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMKIApAQCAtNDY1LDE0ICsyODIsMTMgQEAgc3RhdGlj
IHZvaWQgYnVmZmVyV2FzQ29uc3VtZWRDYWxsYmFjayhDTU5vdGlmaWNhdGlvbkNlbnRlclJlZiwg
Y29uc3Qgdm9pZCogbGlzdGUKICAgICAgICAgc291cmNlQnVmZmVyLT5idWZmZXJXYXNDb25zdW1l
ZCgpOwogfQogCi1SZWY8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyogcGFyZW50KQor
UmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6Y3JlYXRlKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqIHBhcmVudCwgUmVmPFNvdXJjZUJ1
ZmZlclBhcnNlcj4mJiBwYXJzZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMocGFyZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMocGFyZW50LCBXVEZNb3ZlKHBhcnNlcikpKTsKIH0K
IAotU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
KE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKLSAgICA6IG1fcGFyc2VyKGFkb3B0
TlMoW1BBTDo6YWxsb2NBVlN0cmVhbURhdGFQYXJzZXJJbnN0YW5jZSgpIGluaXRdKSkKLSAgICAs
IG1fZGVsZWdhdGUoYWRvcHROUyhbW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIGFsbG9j
XSBpbml0V2l0aFBhcnNlcjptX3BhcnNlci5nZXQoKSBwYXJlbnQ6bWFrZVdlYWtQdHIoKnRoaXMp
XSkpCitTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyogcGFyZW50LCBSZWY8U291cmNlQnVmZmVyUGFy
c2VyPiYmIHBhcnNlcikKKyAgICA6IG1fcGFyc2VyKFdURk1vdmUocGFyc2VyKSkKICAgICAsIG1f
ZXJyb3JMaXN0ZW5lcihhZG9wdE5TKFtbV2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyIGFs
bG9jXSBpbml0V2l0aFBhcmVudDptYWtlV2Vha1B0cigqdGhpcyldKSkKICAgICAsIG1faXNBcHBl
bmRpbmdHcm91cChhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX2dyb3VwX2NyZWF0ZSgpKSkKICAgICAs
IG1fbWVkaWFTb3VyY2UocGFyZW50KQpAQCAtNDg2LDEwICszMDIsMjYgQEAgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJp
dmF0ZUFWRk9iakMKIAogICAgIGlmICghW1BBTDo6Z2V0QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJDbGFzcygpIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3RvcihwcmVyb2xsRGVj
b2RlV2l0aENvbXBsZXRpb25IYW5kbGVyOildKQogICAgICAgICBDTU5vdGlmaWNhdGlvbkNlbnRl
ckFkZExpc3RlbmVyKENNTm90aWZpY2F0aW9uQ2VudGVyR2V0RGVmYXVsdExvY2FsQ2VudGVyKCks
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1fbWFwSUQpLCBidWZmZXJXYXNDb25zdW1lZENhbGxi
YWNrLCBrQ01TYW1wbGVCdWZmZXJDb25zdW1lck5vdGlmaWNhdGlvbl9CdWZmZXJDb25zdW1lZCwg
bnVsbHB0ciwgMCk7Ci0gICAgCi0gICAgbV9kZWxlZ2F0ZS5nZXQoKS5hYm9ydFNlbWFwaG9yZSA9
IEJveDxTZW1hcGhvcmU+OjpjcmVhdGUoMCk7CiAKICAgICBzb3VyY2VCdWZmZXJNYXAoKS5hZGQo
bV9tYXBJRCwgbWFrZVdlYWtQdHIoKnRoaXMpKTsKKworICAgIG1fcGFyc2VyLT5zZXREaWRQYXJz
ZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMp
XSAoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYgc2VnbWVudCkgbXV0YWJsZSB7CisgICAgICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAg
IHdlYWtUaGlzLT5kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShXVEZNb3ZlKHNlZ21lbnQpKTsK
KyAgICB9KTsKKworICAgIG1fcGFyc2VyLT5zZXREaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNp
bmdDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKGludDMyX3QgZXJyb3JD
b2RlKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAg
aWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgd2Vha1RoaXMtPmRpZEVuY291bnRlckVycm9yRHVy
aW5nUGFyc2luZyhlcnJvckNvZGUpOworICAgIH0pOworCisgICAgbV9wYXJzZXItPnNldERpZFBy
b3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKFJl
ZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYg
bWVkaWFUeXBlKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgd2Vha1RoaXMtPmRpZFByb3ZpZGVNZWRp
YURhdGFGb3JUcmFja0lEKFdURk1vdmUoc2FtcGxlKSwgdHJhY2tJRCwgbWVkaWFUeXBlKTsKKyAg
ICB9KTsKIH0KIAogU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6On5Tb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQygpCkBAIC01MDAsNiArMzMyLDcgQEAgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6On5Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQygpCiAgICAgc291cmNlQnVmZmVyTWFwKCku
cmVtb3ZlKG1fbWFwSUQpOwogICAgIGRlc3Ryb3lQYXJzZXIoKTsKICAgICBkZXN0cm95UmVuZGVy
ZXJzKCk7CisgICAgY2xlYXJUcmFja3MoKTsKIAogICAgIGlmICghW1BBTDo6Z2V0QVZTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJDbGFzcygpIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxl
Y3RvcihwcmVyb2xsRGVjb2RlV2l0aENvbXBsZXRpb25IYW5kbGVyOildKQogICAgICAgICBDTU5v
dGlmaWNhdGlvbkNlbnRlclJlbW92ZUxpc3RlbmVyKENNTm90aWZpY2F0aW9uQ2VudGVyR2V0RGVm
YXVsdExvY2FsQ2VudGVyKCksIHRoaXMsIGJ1ZmZlcldhc0NvbnN1bWVkQ2FsbGJhY2ssIGtDTVNh
bXBsZUJ1ZmZlckNvbnN1bWVyTm90aWZpY2F0aW9uX0J1ZmZlckNvbnN1bWVkLCBudWxscHRyKTsK
QEAgLTUwOCw3ICszNDEsNyBAQCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6flNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDKCkKICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlLT5zaWdu
YWwoKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VTdHJl
YW1EYXRhQXNBc3NldChBVkFzc2V0KiBhc3NldCkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVudCYm
IHNlZ21lbnQpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIApAQCAtNTE2LDUy
ICszNDksMzMgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VTdHJl
YW1EYXRhQXNBc3NldChBVkFzc2V0KiBhc3NldCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5zaG91bGRDaGVja0hhcmR3YXJlU3VwcG9ydCgpKSB7
Ci0gICAgICAgIGZvciAoQVZBc3NldFRyYWNrICp0cmFjayBpbiBbYXNzZXQgdHJhY2tzXSkgewot
ICAgICAgICAgICAgaWYgKCFhc3NldFRyYWNrTWVldHNIYXJkd2FyZURlY29kZVJlcXVpcmVtZW50
cyh0cmFjaywgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPm1lZGlhQ29udGVudFR5cGVzUmVxdWly
aW5nSGFyZHdhcmVTdXBwb3J0KCkpKSB7CisgICAgICAgIGZvciAoYXV0byYgaW5mbyA6IHNlZ21l
bnQudmlkZW9UcmFja3MpIHsKKyAgICAgICAgICAgIGF1dG8gY29kZWMgPSBGb3VyQ0M6OmZyb21T
dHJpbmcoaW5mby5kZXNjcmlwdGlvbi0+Y29kZWMoKSk7CisgICAgICAgICAgICBpZiAoIWNvZGVj
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKCFjb2RlY3NNZWV0
SGFyZHdhcmVEZWNvZGVSZXF1aXJlbWVudHMoe3sgKmNvZGVjIH19LCBtX21lZGlhU291cmNlLT5w
bGF5ZXIoKS0+bWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSkpIHsK
ICAgICAgICAgICAgICAgICBtX3BhcnNpbmdTdWNjZWVkZWQgPSBmYWxzZTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2Fz
c2V0ID0gYXNzZXQ7Ci0KLSAgICBtX3ZpZGVvVHJhY2tzLmNsZWFyKCk7Ci0gICAgbV9hdWRpb1Ry
YWNrcy5jbGVhcigpOwotCi0gICAgbV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4dEluaXRpYWxpemF0
aW9uU2VnbWVudCA9IGZhbHNlOwotCi0gICAgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5p
dGlhbGl6YXRpb25TZWdtZW50IHNlZ21lbnQ7Ci0KLSAgICBpZiAoW21fYXNzZXQgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihvdmVyYWxsRHVyYXRpb25IaW50KV0pCi0gICAgICAgIHNlZ21l
bnQuZHVyYXRpb24gPSBQQUw6OnRvTWVkaWFUaW1lKFttX2Fzc2V0IG92ZXJhbGxEdXJhdGlvbkhp
bnRdKTsKLQotICAgIGlmIChzZWdtZW50LmR1cmF0aW9uLmlzSW52YWxpZCgpIHx8IHNlZ21lbnQu
ZHVyYXRpb24gPT0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpKQotICAgICAgICBzZWdtZW50LmR1cmF0
aW9uID0gUEFMOjp0b01lZGlhVGltZShbbV9hc3NldCBkdXJhdGlvbl0pOwotCi0gICAgZm9yIChB
VkFzc2V0VHJhY2sqIHRyYWNrIGluIFttX2Fzc2V0IHRyYWNrc10pIHsKLSAgICAgICAgaWYgKFt0
cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGVd
KSB7Ci0gICAgICAgICAgICAvLyBGSVhNRSgxMjUxNjEpOiBIYW5kbGUgaW4tYmFuZCB0ZXh0IHRy
YWNrcy4KLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAgY2xlYXJUcmFja3Mo
KTsKIAotICAgICAgICBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNo
YXJhY3RlcmlzdGljVmlzdWFsXSkgewotICAgICAgICAgICAgU291cmNlQnVmZmVyUHJpdmF0ZUNs
aWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OjpWaWRlb1RyYWNrSW5mb3JtYXRpb24gaW5mbzsK
LSAgICAgICAgICAgIGF1dG8gdmlkZW9UcmFjayA9IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpjcmVhdGUodHJhY2ssIHRoaXMpOwotICAgICAgICAgICAgaW5mby50cmFjayA9
IHZpZGVvVHJhY2suY29weVJlZigpOwotICAgICAgICAgICAgbV92aWRlb1RyYWNrcy5hcHBlbmQo
V1RGTW92ZSh2aWRlb1RyYWNrKSk7Ci0gICAgICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVk
aWFEZXNjcmlwdGlvbkFWRk9iakM6OmNyZWF0ZSh0cmFjayk7Ci0gICAgICAgICAgICBzZWdtZW50
LnZpZGVvVHJhY2tzLmFwcGVuZChpbmZvKTsKLSAgICAgICAgfSBlbHNlIGlmIChbdHJhY2sgaGFz
TWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNBdWRpYmxlXSkgewotICAg
ICAgICAgICAgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50
OjpBdWRpb1RyYWNrSW5mb3JtYXRpb24gaW5mbzsKLSAgICAgICAgICAgIGF1dG8gYXVkaW9UcmFj
ayA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGUodHJhY2ssIHRo
aXMpOwotICAgICAgICAgICAgaW5mby50cmFjayA9IGF1ZGlvVHJhY2suY29weVJlZigpOwotICAg
ICAgICAgICAgbV9hdWRpb1RyYWNrcy5hcHBlbmQoV1RGTW92ZShhdWRpb1RyYWNrKSk7Ci0gICAg
ICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVkaWFEZXNjcmlwdGlvbkFWRk9iakM6OmNyZWF0
ZSh0cmFjayk7Ci0gICAgICAgICAgICBzZWdtZW50LmF1ZGlvVHJhY2tzLmFwcGVuZChpbmZvKTsK
LSAgICAgICAgfQorICAgIGZvciAoYXV0byB2aWRlb1RyYWNrSW5mbyA6IHNlZ21lbnQudmlkZW9U
cmFja3MpIHsKKyAgICAgICAgdmlkZW9UcmFja0luZm8udHJhY2stPnNldFNlbGVjdGVkQ2hhbmdl
ZENhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoVmlkZW9UcmFja1ByaXZh
dGUmIHRyYWNrLCBib29sIHNlbGVjdGVkKSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisg
ICAgICAgICAgICAgICAgd2Vha1RoaXMtPnRyYWNrRGlkQ2hhbmdlU2VsZWN0ZWQodHJhY2ssIHNl
bGVjdGVkKTsKKyAgICAgICAgfSk7CisgICAgICAgIG1fdmlkZW9UcmFja3MuYXBwZW5kKHZpZGVv
VHJhY2tJbmZvLnRyYWNrKTsKKyAgICB9CiAKLSAgICAgICAgLy8gRklYTUUoMTI1MTYxKTogQWRk
IFRleHRUcmFjayBzdXBwb3J0CisgICAgZm9yIChhdXRvIGF1ZGlvVHJhY2tJbmZvIDogc2VnbWVu
dC5hdWRpb1RyYWNrcykgeworICAgICAgICBhdWRpb1RyYWNrSW5mby50cmFjay0+c2V0RW5hYmxl
ZENoYW5nZWRDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKEF1ZGlvVHJh
Y2tQcml2YXRlJiB0cmFjaywgYm9vbCBlbmFibGVkKSB7CisgICAgICAgICAgICBpZiAod2Vha1Ro
aXMpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPnRyYWNrRGlkQ2hhbmdlRW5hYmxlZCh0cmFj
aywgZW5hYmxlZCk7CisgICAgICAgIH0pOworICAgICAgICBtX2F1ZGlvVHJhY2tzLmFwcGVuZChh
dWRpb1RyYWNrSW5mby50cmFjayk7CiAgICAgfQogCiAgICAgaWYgKG1fbWVkaWFTb3VyY2UpCkBA
IC01NzEsNjEgKzM4NSwyOSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQ
YXJzZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQogICAgICAgICBtX2NsaWVudC0+
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoc2VnbWVu
dCk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEZhaWxUb1BhcnNl
U3RyZWFtRGF0YVdpdGhFcnJvcihOU0Vycm9yICplcnJvcikKK3ZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OmRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhpbnQzMl90IGNvZGUp
CiB7CiAjaWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKKyAgICBVTlVT
RURfUEFSQU0oY29kZSk7CiAjZW5kaWYKLSAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgW1tl
cnJvciBkZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10pOworICAgIEVSUk9SX0xPRyhMT0dJREVOVElG
SUVSLCBjb2RlKTsKIAogICAgIG1fcGFyc2luZ1N1Y2NlZWRlZCA9IGZhbHNlOwogfQogCi1zdHJ1
Y3QgUHJvY2Vzc0NvZGVkRnJhbWVJbmZvIHsKLSAgICBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qyogc291cmNlQnVmZmVyOwotICAgIGludCB0cmFja0lEOwotICAgIGNvbnN0IFN0cmluZyYgbWVk
aWFUeXBlOwotfTsKLQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlk
ZU1lZGlhRGF0YUZvclRyYWNrSUQoaW50IHRyYWNrSUQsIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBs
ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkKQordm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoUmVmPE1l
ZGlhU2FtcGxlPiYmIG1lZGlhU2FtcGxlLCBpbnQzMl90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYg
bWVkaWFUeXBlKQogewotICAgIHByb2Nlc3NDb2RlZEZyYW1lKHRyYWNrSUQsIHNhbXBsZUJ1ZmZl
ciwgbWVkaWFUeXBlKTsKLX0KKyAgICBVTlVTRURfUEFSQU0obWVkaWFUeXBlKTsKIAotYm9vbCBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6cHJvY2Vzc0NvZGVkRnJhbWUoaW50IHRyYWNrSUQs
IENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgY29uc3QgU3RyaW5nJikKLXsKICAgICBp
ZiAodHJhY2tJRCAhPSBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgJiYgIW1fYXVkaW9SZW5kZXJlcnMu
Y29udGFpbnModHJhY2tJRCkpIHsKICAgICAgICAgLy8gRklYTUUoMTI1MTYxKTogV2UgZG9uJ3Qg
aGFuZGxlIHRleHQgdHJhY2tzLCBhbmQgcGFzc2luZyB0aGlzIHNhbXBsZSB1cCB0byBTb3VyY2VC
dWZmZXIKICAgICAgICAgLy8gd2lsbCBqdXN0IGNvbmZ1c2UgaXRzIHN0YXRlLiBEcm9wIHRoaXMg
c2FtcGxlIHVudGlsIHdlIGNhbiBoYW5kbGUgdGV4dCB0cmFja3MgcHJvcGVybHkuCi0gICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX2Rpc2Nh
cmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50KQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBpZiAoIW1fY2xpZW50KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
IGF1dG8gbWVkaWFTYW1wbGUgPSBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZShzYW1wbGVCdWZm
ZXIsIHRyYWNrSUQpOwotCi0gICAgaWYgKG1lZGlhU2FtcGxlLT5pc0hvbW9nZW5lb3VzKCkpIHsK
LSAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsIG1lZGlhU2FtcGxlLT50b0pTT05TdHJp
bmcoKSk7CisgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsIG1lZGlhU2FtcGxlLT50b0pTT05T
dHJpbmcoKSk7CisgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+c291cmNlQnVm
ZmVyUHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUobWVkaWFTYW1wbGUpOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0KLSAgICBhdXRvIG1lZGlhU2FtcGxlcyA9IG1lZGlhU2FtcGxlLT5kaXZp
ZGVJbnRvSG9tb2dlbmVvdXNTYW1wbGVzKCk7Ci0gICAgZm9yIChhdXRvJiBzYW1wbGUgOiBtZWRp
YVNhbXBsZXMpIHsKLSAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsIHNhbXBsZS0+dG9K
U09OU3RyaW5nKCkpOwotICAgICAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZURpZFJl
Y2VpdmVTYW1wbGUoc2FtcGxlKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUmVhY2hFbmRPZlRyYWNrV2l0aFRyYWNr
SUQoaW50LCBjb25zdCBTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKIHZv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OndpbGxQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKGludCB0cmFja0lEKQpAQCAtNjMzLDE4ICs0
MTUsMjAgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250
ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUYKICAgICBpZiAoIW1fbWVkaWFTb3VyY2Up
CiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX3BhcnNlcik7Ci0KICNpZiBIQVZFKEFW
U1RSRUFNU0VTU0lPTikgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCAidHJhY2sgPSAiLCB0cmFja0lEKTsKIAogICAgIG1fcHJv
dGVjdGVkVHJhY2tJRCA9IHRyYWNrSUQ7CiAKKyAgICBhdXRvIHBhcnNlciA9IHRoaXMtPnBhcnNl
cigpOworICAgIGlmICghcGFyc2VyKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoQ0RNU2Vz
c2lvbk1lZGlhU291cmNlQVZGT2JqQyogc2Vzc2lvbiA9IG1fbWVkaWFTb3VyY2UtPnBsYXllcigp
LT5jZG1TZXNzaW9uKCkpCi0gICAgICAgIHNlc3Npb24tPmFkZFBhcnNlcihtX3BhcnNlci5nZXQo
KSk7CisgICAgICAgIHNlc3Npb24tPmFkZFBhcnNlcihwYXJzZXIpOwogICAgIGVsc2UgaWYgKCFD
RE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6aXNBdmFpbGFibGUoKSkgewogICAgICAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgW21fbWVkaWFTb3VyY2UtPnBsYXll
cigpLT5zdHJlYW1TZXNzaW9uKCkgYWRkU3RyZWFtRGF0YVBhcnNlcjptX3BhcnNlci5nZXQoKV07
CisgICAgICAgIFttX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c3RyZWFtU2Vzc2lvbigpIGFkZFN0
cmVhbURhdGFQYXJzZXI6cGFyc2VyXTsKICAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwogICAgIH0KICNlbHNlCkBAIC02NTIsNyArNDM2LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0
YUYKICNlbmRpZgogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKE5TRGF0YSog
aW5pdERhdGEsIGludCB0cmFja0lELCBCb3g8QmluYXJ5U2VtYXBob3JlPiBoYXNTZXNzaW9uU2Vt
YXBob3JlKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRl
bnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChSZWY8VWludDhBcnJheT4m
JiBpbml0RGF0YSwgaW50IHRyYWNrSUQsIEJveDxCaW5hcnlTZW1hcGhvcmU+IGhhc1Nlc3Npb25T
ZW1hcGhvcmUpCiB7CiAgICAgaWYgKCFtX21lZGlhU291cmNlKQogICAgICAgICByZXR1cm47CkBA
IC02NjEsMTEgKzQ0NSwxMSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQ
cm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGbwogICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUiwgInRyYWNrID0gIiwgdHJhY2tJRCk7CiAKICAgICBtX3Byb3RlY3Rl
ZFRyYWNrSUQgPSB0cmFja0lEOwotICAgIG1faW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVhdGUo
W2luaXREYXRhIGxlbmd0aF0pOwotICAgIFtpbml0RGF0YSBnZXRCeXRlczptX2luaXREYXRhLT5k
YXRhKCkgbGVuZ3RoOm1faW5pdERhdGEtPmxlbmd0aCgpXTsKKyAgICBtX2luaXREYXRhID0gV1RG
TW92ZShpbml0RGF0YSk7CiAgICAgbV9tZWRpYVNvdXJjZS0+c291cmNlQnVmZmVyS2V5TmVlZGVk
KHRoaXMsIG1faW5pdERhdGEuZ2V0KCkpOwogICAgIGlmIChhdXRvIHNlc3Npb24gPSBtX21lZGlh
U291cmNlLT5wbGF5ZXIoKS0+Y2RtU2Vzc2lvbigpKSB7Ci0gICAgICAgIHNlc3Npb24tPmFkZFBh
cnNlcihtX3BhcnNlci5nZXQoKSk7CisgICAgICAgIGlmIChhdXRvIHBhcnNlciA9IHRoaXMtPnBh
cnNlcigpKQorICAgICAgICAgICAgc2Vzc2lvbi0+YWRkUGFyc2VyKHBhcnNlcik7CiAgICAgICAg
IGhhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtNjc2LDE0ICs0NjAsMTUgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlk
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KICAgICBtX2hhc1Nl
c3Npb25TZW1hcGhvcmUgPSBoYXNTZXNzaW9uU2VtYXBob3JlOwogICAgIAogI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKLSAgICBhdXRvIGlu
aXREYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW5pdERhdGEpOworICAgIGF1dG8g
aW5pdERhdGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS0+ZGF0YSgpLCBp
bml0RGF0YS0+Ynl0ZUxlbmd0aCgpKTsKICAgICBhdXRvIGtleUlEcyA9IENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoaW5pdERhdGFCdWZmZXIpOwogICAgIGlm
ICgha2V5SURzKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9jZG1JbnN0YW5jZSkgewog
ICAgICAgICBpZiAoYXV0byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUluc3RhbmNlLT5zZXNzaW9u
Rm9yS2V5SURzKGtleUlEcy52YWx1ZSgpKSkgewotICAgICAgICAgICAgW2luc3RhbmNlU2Vzc2lv
bi0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50Om1fcGFyc2VyLmdl
dCgpXTsKKyAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlciA9IHRoaXMtPnBhcnNlcigpKQorICAg
ICAgICAgICAgICAgIFtpbnN0YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29u
dGVudEtleVJlY2lwaWVudDpwYXJzZXJdOwogICAgICAgICAgICAgaWYgKG1faGFzU2Vzc2lvblNl
bWFwaG9yZSkgewogICAgICAgICAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFs
KCk7CiAgICAgICAgICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlID0gbnVsbHB0cjsKQEAg
LTcyNCwxNiArNTA5LDU0IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVu
ZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQogewogICAgIERFQlVHX0xPRyhMT0dJREVO
VElGSUVSLCAiZGF0YSBsZW5ndGggPSAiLCBkYXRhLnNpemUoKSk7CiAKKyAgICBBU1NFUlQoIW1f
aGFzU2Vzc2lvblNlbWFwaG9yZSk7CisgICAgQVNTRVJUKCFtX2Fib3J0U2VtYXBob3JlKTsKKwor
ICAgIG1fYWJvcnRTZW1hcGhvcmUgPSBCb3g8U2VtYXBob3JlPjo6Y3JlYXRlKDApOworICAgIG1f
cGFyc2VyLT5zZXRXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRENhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBhYm9ydFNl
bWFwaG9yZSA9IG1fYWJvcnRTZW1hcGhvcmVdICh1aW50MzJfdCB0cmFja0lEKSBtdXRhYmxlIHsK
KyAgICAgICAgLy8gV2UgbXVzdCBjYWxsIHN5bmNocm9ub3VzbHkgdG8gdGhlIG1haW4gdGhyZWFk
LCBhcyB0aGUgQVZTdHJlYW1TZXNzaW9uIG11c3QgYmUgYXNzb2NpYXRlZAorICAgICAgICAvLyB3
aXRoIHRoZSBzdHJlYW1EYXRhUGFyc2VyIGJlZm9yZSB0aGUgZGVsZWdhdGUgbWV0aG9kIHJldHVy
bnMuCisgICAgICAgIEJveDxCaW5hcnlTZW1hcGhvcmU+IHJlc3BvbmRlZFNlbWFwaG9yZSA9IEJv
eDxCaW5hcnlTZW1hcGhvcmU+OjpjcmVhdGUoKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
d2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgdHJhY2tJRCwgcmVzcG9uZGVkU2VtYXBob3Jl
XSgpIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3ZWFrVGhp
cy0+d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNr
SUQodHJhY2tJRCk7CisgICAgICAgICAgICByZXNwb25kZWRTZW1hcGhvcmUtPnNpZ25hbCgpOwor
ICAgICAgICB9KTsKKworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgaWYgKHJl
c3BvbmRlZFNlbWFwaG9yZS0+d2FpdEZvcigxMDBfbXMpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgaWYgKGFib3J0U2VtYXBob3JlLT53YWl0Rm9yKDEwMF9tcykpIHsK
KyAgICAgICAgICAgICAgICBhYm9ydFNlbWFwaG9yZS0+c2lnbmFsKCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSk7CisKKyAgICBtX3Bh
cnNlci0+c2V0RGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9y
VHJhY2tJRENhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBhYm9ydFNlbWFw
aG9yZSA9IG1fYWJvcnRTZW1hcGhvcmVdIChSZWY8VWludDhBcnJheT4mJiBpbml0RGF0YSwgaW50
MzJfdCB0cmFja0lEKSBtdXRhYmxlIHsKKyAgICAgICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gaGFz
U2Vzc2lvblNlbWFwaG9yZSA9IEJveDxCaW5hcnlTZW1hcGhvcmU+OjpjcmVhdGUoKTsKKyAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgaW5pdERh
dGEgPSBXVEZNb3ZlKGluaXREYXRhKSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNlbWFwaG9yZV0gKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgd2Vh
a1RoaXMtPmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRy
YWNrSUQoV1RGTW92ZShpbml0RGF0YSksIHRyYWNrSUQsIGhhc1Nlc3Npb25TZW1hcGhvcmUpOwor
ICAgICAgICB9KTsKKworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgaWYgKGhh
c1Nlc3Npb25TZW1hcGhvcmUtPndhaXRGb3IoMTAwX21zKSkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIGlmIChhYm9ydFNlbWFwaG9yZS0+d2FpdEZvcigxMDBfbXMpKSB7
CisgICAgICAgICAgICAgICAgYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pOworCiAgICAgbV9w
YXJzaW5nU3VjY2VlZGVkID0gdHJ1ZTsKICAgICBkaXNwYXRjaF9ncm91cF9lbnRlcihtX2lzQXBw
ZW5kaW5nR3JvdXAuZ2V0KCkpOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMoZ2xvYmFsRGF0YVBhcnNl
clF1ZXVlKCksIFtkYXRhID0gV1RGTW92ZShkYXRhKSwgd2Vha1RoaXMgPSBtX2FwcGVuZFdlYWtG
YWN0b3J5LmNyZWF0ZVdlYWtQdHIoKnRoaXMpLCBwYXJzZXIgPSBtX3BhcnNlciwgZGVsZWdhdGUg
PSBtX2RlbGVnYXRlLCBpc0FwcGVuZGluZ0dyb3VwID0gbV9pc0FwcGVuZGluZ0dyb3VwLCBwYXJz
ZXJTdGF0ZVdhc1Jlc2V0ID0gbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0XSAoKSBtdXRhYmxlIHsKLSAg
ICAgICAgYXV0byBzaGFyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRh
KSk7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkRGF0YS0+Y3JlYXRlTlNEYXRhKCk7Ci0g
ICAgICAgIGlmIChwYXJzZXJTdGF0ZVdhc1Jlc2V0KQotICAgICAgICAgICAgW3BhcnNlciBhcHBl
bmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2VyU3Ry
ZWFtRGF0YURpc2NvbnRpbnVpdHldOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBbcGFyc2Vy
IGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpXTsKKyAgICBkaXNwYXRjaF9hc3luYyhnbG9i
YWxEYXRhUGFyc2VyUXVldWUoKSwgW2RhdGEgPSBXVEZNb3ZlKGRhdGEpLCB3ZWFrVGhpcyA9IG1f
YXBwZW5kV2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyksIHBhcnNlciA9IG1fcGFyc2Vy
LCBpc0FwcGVuZGluZ0dyb3VwID0gbV9pc0FwcGVuZGluZ0dyb3VwXSAoKSBtdXRhYmxlIHsKKyAg
ICAgICAgcGFyc2VyLT5hcHBlbmREYXRhKFdURk1vdmUoZGF0YSkpOwogCiAgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3dlYWtUaGlzXSB7CiAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCkBAIC03
NDEsMTEgKzU2NCwyMCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQo
VmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgZGF0YSkKICAgICAgICAgfSk7CiAgICAgICAgIGRpc3Bh
dGNoX2dyb3VwX2xlYXZlKGlzQXBwZW5kaW5nR3JvdXAuZ2V0KCkpOwogICAgIH0pOwotICAgIG1f
cGFyc2VyU3RhdGVXYXNSZXNldCA9IGZhbHNlOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjphcHBlbmRDb21wbGV0ZWQoKQogeworICAgIGlmIChtX2Fib3J0U2VtYXBob3Jl
KSB7CisgICAgICAgIG1fYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAgICBtX2Fib3J0
U2VtYXBob3JlID0gbmlsOworICAgIH0KKworICAgIGlmIChtX2hhc1Nlc3Npb25TZW1hcGhvcmUp
IHsKKyAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICAgICAgbV9o
YXNTZXNzaW9uU2VtYXBob3JlID0gbmlsOworICAgIH0KKwogICAgIGlmIChtX3BhcnNpbmdTdWNj
ZWVkZWQgJiYgbV9tZWRpYVNvdXJjZSkKICAgICAgICAgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCkt
PnNldExvYWRpbmdQcm9ncmVzc3NlZCh0cnVlKTsKIApAQCAtNzYwLDM5ICs1OTIsMzkgQEAgdm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YWJvcnQoKQogICAgIC8vIFRoZSBwYXJzaW5n
IHF1ZXVlIG1heSBiZSBibG9ja2VkIHdhaXRpbmcgZm9yIHRoZSBtYWluIHRocmVhZCB0byBwcm92
aWRlIGl0IGEgQVZTdHJlYW1TZXNzaW9uLiBXZQogICAgIC8vIHdlcmUgYXNrZWQgdG8gYWJvcnQs
IGFuZCB0aGF0IGNhbmNlbHMgYWxsIG91dHN0YW5kaW5nIGFwcGVuZCBvcGVyYXRpb25zLiBXaXRo
b3V0IGNhbmNlbGxpbmcgdGhpcwogICAgIC8vIHNlbWFwaG9yZSwgdGhlIG1faXNBcHBlbmRpbmdH
cm91cCB3YWl0IG9wZXJhdGlvbiB3aWxsIGRlYWRsb2NrLgotICAgIGlmIChtX2hhc1Nlc3Npb25T
ZW1hcGhvcmUpCisgICAgaWYgKG1faGFzU2Vzc2lvblNlbWFwaG9yZSkgewogICAgICAgICBtX2hh
c1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwotICAgIG1fZGVsZWdhdGUuZ2V0KCkuYWJvcnRT
ZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUgPSBudWxs
cHRyOworICAgIH0KKyAgICBpZiAobV9hYm9ydFNlbWFwaG9yZSkgeworICAgICAgICBtX2Fib3J0
U2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICAgICAgbV9hYm9ydFNlbWFwaG9yZSA9IG51bGxwdHI7
CisgICAgfQogICAgIGRpc3BhdGNoX2dyb3VwX3dhaXQobV9pc0FwcGVuZGluZ0dyb3VwLmdldCgp
LCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOwotICAgIG1fYXBwZW5kV2Vha0ZhY3RvcnkucmV2b2tl
QWxsKCk7Ci0gICAgbV9kZWxlZ2F0ZS5nZXQoKS5wYXJlbnQgPSBtX2FwcGVuZFdlYWtGYWN0b3J5
LmNyZWF0ZVdlYWtQdHIoKnRoaXMpOwotICAgIG1fZGVsZWdhdGUuZ2V0KCkuYWJvcnRTZW1hcGhv
cmUgPSBCb3g8U2VtYXBob3JlPjo6Y3JlYXRlKDApOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpyZXNldFBhcnNlclN0YXRlKCkKIHsKICAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIpOwogCi0gICAgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0ID0gdHJ1ZTsKLSAgICBtX2Rp
c2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50ID0gdHJ1ZTsKKyAgICBt
X3BhcnNlci0+cmVzZXRQYXJzZXJTdGF0ZSgpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpkZXN0cm95UGFyc2VyKCkKIHsKKyAgICBhdXRvIHBhcnNlciA9IHRoaXMtPnBh
cnNlcigpOworICAgIGlmICghcGFyc2VyKQorICAgICAgICByZXR1cm47CiAjaWYgSEFWRShBVlNU
UkVBTVNFU1NJT04pICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIGlmICht
X21lZGlhU291cmNlICYmIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5oYXNTdHJlYW1TZXNzaW9u
KCkpCi0gICAgICAgIFttX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c3RyZWFtU2Vzc2lvbigpIHJl
bW92ZVN0cmVhbURhdGFQYXJzZXI6bV9wYXJzZXIuZ2V0KCldOworICAgICAgICBbbV9tZWRpYVNv
dXJjZS0+cGxheWVyKCktPnN0cmVhbVNlc3Npb24oKSByZW1vdmVTdHJlYW1EYXRhUGFyc2VyOnBh
cnNlcl07CiAjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09O
VEVOVEtFWVNFU1NJT04pCiAgICAgaWYgKG1fY2RtSW5zdGFuY2UpIHsKICAgICAgICAgaWYgKGF1
dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhtX2tl
eUlEcykpCi0gICAgICAgICAgICBbaW5zdGFuY2VTZXNzaW9uLT5jb250ZW50S2V5U2Vzc2lvbigp
IHJlbW92ZUNvbnRlbnRLZXlSZWNpcGllbnQ6bV9wYXJzZXIuZ2V0KCldOworICAgICAgICAgICAg
W2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSByZW1vdmVDb250ZW50S2V5UmVj
aXBpZW50OnBhcnNlcl07CiAgICAgfQogI2VuZGlmCi0KLSAgICBbbV9kZWxlZ2F0ZSBpbnZhbGlk
YXRlXTsKLSAgICBtX2RlbGVnYXRlID0gbnVsbHB0cjsKLSAgICBtX3BhcnNlciA9IG51bGxwdHI7
CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRlc3Ryb3lSZW5kZXJlcnMo
KQpAQCAtODE3LDYgKzY0OSwxNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpk
ZXN0cm95UmVuZGVyZXJzKCkKICAgICBtX2F1ZGlvUmVuZGVyZXJzLmNsZWFyKCk7CiB9CiAKK3Zv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNsZWFyVHJhY2tzKCkKK3sKKyAgICBmb3Ig
KGF1dG8mIHRyYWNrIDogbV92aWRlb1RyYWNrcykKKyAgICAgICAgdHJhY2stPnNldFNlbGVjdGVk
Q2hhbmdlZENhbGxiYWNrKG51bGxwdHIpOworICAgIG1fdmlkZW9UcmFja3MuY2xlYXIoKTsKKwor
ICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX2F1ZGlvVHJhY2tzKQorICAgICAgICB0cmFjay0+c2V0
RW5hYmxlZENoYW5nZWRDYWxsYmFjayhudWxscHRyKTsKKyAgICBtX2F1ZGlvVHJhY2tzLmNsZWFy
KCk7Cit9CisKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnJlbW92ZWRGcm9tTWVk
aWFTb3VyY2UoKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CkBAIC04NTYsMjEg
KzY5OSwyMSBAQCBib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpoYXNBdWRpbygpIGNv
bnN0CiAgICAgcmV0dXJuIG1fY2xpZW50ICYmIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRl
SGFzQXVkaW8oKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tE
aWRDaGFuZ2VFbmFibGVkKFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiB0cmFj
aykKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlU2VsZWN0
ZWQoVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNrLCBib29sIHNlbGVjdGVkKQogewotICAgIGludCB0
cmFja0lEID0gdHJhY2stPnRyYWNrSUQoKTsKKyAgICBpbnQgdHJhY2tJRCA9IHRyYWNrLmlkKCku
dG9JbnQoKTsKIAotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInZpZGVvIHRyYWNrSUQg
PSAiLCB0cmFja0lELCAiLCBzZWxlY3RlZCA9ICIsIHRyYWNrLT5zZWxlY3RlZCgpKTsKKyAgICBB
TFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJ2aWRlbyB0cmFja0lEID0gIiwgdHJhY2tJRCwgIiwg
c2VsZWN0ZWQgPSAiLCBzZWxlY3RlZCk7CiAKLSAgICBpZiAoIXRyYWNrLT5zZWxlY3RlZCgpICYm
IG1fZW5hYmxlZFZpZGVvVHJhY2tJRCA9PSB0cmFja0lEKSB7CisgICAgaWYgKCFzZWxlY3RlZCAm
JiBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgPT0gdHJhY2tJRCkgewogICAgICAgICBtX2VuYWJsZWRW
aWRlb1RyYWNrSUQgPSAtMTsKLSAgICAgICAgW21fcGFyc2VyIHNldFNob3VsZFByb3ZpZGVNZWRp
YURhdGE6Tk8gZm9yVHJhY2tJRDp0cmFja0lEXTsKKyAgICAgICAgbV9wYXJzZXItPnNldFNob3Vs
ZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGZhbHNlLCB0cmFja0lEKTsKIAogICAgICAgICBp
ZiAobV9kZWNvbXByZXNzaW9uU2Vzc2lvbikKICAgICAgICAgICAgIG1fZGVjb21wcmVzc2lvblNl
c3Npb24tPnN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRhKCk7Ci0gICAgfSBlbHNlIGlmICh0cmFjay0+
c2VsZWN0ZWQoKSkgeworICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWQpIHsKICAgICAgICAgbV9lbmFi
bGVkVmlkZW9UcmFja0lEID0gdHJhY2tJRDsKLSAgICAgICAgW21fcGFyc2VyIHNldFNob3VsZFBy
b3ZpZGVNZWRpYURhdGE6WUVTIGZvclRyYWNrSUQ6dHJhY2tJRF07CisgICAgICAgIG1fcGFyc2Vy
LT5zZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCh0cnVlLCB0cmFja0lEKTsKIAog
ICAgICAgICBpZiAobV9kZWNvbXByZXNzaW9uU2Vzc2lvbikgewogICAgICAgICAgICAgbV9kZWNv
bXByZXNzaW9uU2Vzc2lvbi0+cmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeShbdGhpcywgdHJhY2tJ
RF0gewpAQCAtODgyLDIxICs3MjUsMjEgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3UKICAgICBt
X21lZGlhU291cmNlLT5oYXNTZWxlY3RlZFZpZGVvQ2hhbmdlZCgqdGhpcyk7CiB9CiAKLXZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlRW5hYmxlZChBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyogdHJhY2spCit2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQoQXVkaW9UcmFja1ByaXZhdGUmIHRy
YWNrLCBib29sIGVuYWJsZWQpCiB7Ci0gICAgaW50IHRyYWNrSUQgPSB0cmFjay0+dHJhY2tJRCgp
OworICAgIGludCB0cmFja0lEID0gdHJhY2suaWQoKS50b0ludCgpOwogCi0gICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCAiYXVkaW8gdHJhY2tJRCA9ICIsIHRyYWNrSUQsICIsIHNlbGVjdGVk
ID0gIiwgdHJhY2stPmVuYWJsZWQoKSk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAi
YXVkaW8gdHJhY2tJRCA9ICIsIHRyYWNrSUQsICIsIHNlbGVjdGVkID0gIiwgZW5hYmxlZCk7CiAK
LSAgICBpZiAoIXRyYWNrLT5lbmFibGVkKCkpIHsKKyAgICBpZiAoIWVuYWJsZWQpIHsKICAgICAg
ICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgogICAgICAgICBSZXRhaW5QdHI8
QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyPiByZW5kZXJlciA9IG1fYXVkaW9SZW5kZXJlcnMu
Z2V0KHRyYWNrSUQpOwogICAgICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAot
ICAgICAgICBbbV9wYXJzZXIgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YTpOTyBmb3JUcmFja0lE
OnRyYWNrSURdOworICAgICAgICBtX3BhcnNlci0+c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZv
clRyYWNrSUQoZmFsc2UsIHRyYWNrSUQpOwogICAgICAgICBpZiAobV9tZWRpYVNvdXJjZSkKICAg
ICAgICAgICAgIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5yZW1vdmVBdWRpb1JlbmRlcmVyKHJl
bmRlcmVyLmdldCgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBbbV9wYXJzZXIgc2V0U2hvdWxk
UHJvdmlkZU1lZGlhRGF0YTpZRVMgZm9yVHJhY2tJRDp0cmFja0lEXTsKKyAgICAgICAgbV9wYXJz
ZXItPnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKHRydWUsIHRyYWNrSUQpOwog
ICAgICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCiAgICAgICAgIFJldGFp
blB0cjxBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXI+IHJlbmRlcmVyOwogICAgICAgICBBTExP
V19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORApAQCAtOTI2LDYgKzc2OSwxMyBAQCB2b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQoQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdQogICAgIH0KIH0KIAorQVZTdHJlYW1EYXRhUGFyc2VyKiBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6cGFyc2VyKCkgY29uc3QKK3sKKyAgICBpZiAoaXM8U291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQz4obV9wYXJzZXIuZ2V0KCkpKQorICAgICAgICByZXR1cm4gZG93
bmNhc3Q8U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQz4obV9wYXJzZXIuZ2V0KCkpLnBhcnNlcigp
OworICAgIHJldHVybiBuaWw7Cit9CisKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OnNldENETVNlc3Npb24oQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyogc2Vzc2lvbikKIHsK
ICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKQEAgLTk4Nyw3ICs4MzcsOCBAQCB2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphdHRlbXB0VG9EZWNyeXB0KCkKICAgICBp
ZiAoIWluc3RhbmNlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgW2luc3RhbmNlU2Vz
c2lvbi0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50Om1fcGFyc2Vy
LmdldCgpXTsKKyAgICBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5wYXJzZXIoKSkKKyAgICAgICAg
W2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBp
ZW50OnBhcnNlcl07CiAgICAgaWYgKG1faGFzU2Vzc2lvblNlbWFwaG9yZSkgewogICAgICAgICBt
X2hhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwogICAgICAgICBtX2hhc1Nlc3Npb25TZW1h
cGhvcmUgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggYzc4Yjk1M2M3YmFh
OGVjYjI5MjhiZjJjM2RkNTUxYTkwZWQyMzhjYy4uNmIxMWNjYTMyYmRkNDlkMmFkZDYxMGU5YTdh
Nzc2YjU5NWI4YTk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGVBVkYu
aCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
CiAKQEAgLTQyLDE0ICs0MywxMSBAQCBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzsK
IGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIGZpbmFsIDogcHVibGlj
IFZpZGVvVHJhY2tQcml2YXRlQVZGIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShWaWRlb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQykKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFZp
ZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrKiB0
cmFjaywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKKyAgICBzdGF0aWMgUmVm
PFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNr
KiB0cmFjaykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2sp
KTsKICAgICB9CiAKLSAgICBib29sIHNlbGVjdGVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBzZXRTZWxlY3RlZChib29sKSBvdmVycmlkZTsKLQogICAgIHZvaWQgc2V0QXNzZXRUcmFjayhB
VkFzc2V0VHJhY2sqKTsKICAgICBBVkFzc2V0VHJhY2sqIGFzc2V0VHJhY2soKSBjb25zdDsKIApA
QCAtNTgsMTQgKzU2LDEyIEBAIHB1YmxpYzoKICAgICBGbG9hdFNpemUgbmF0dXJhbFNpemUoKSBj
b25zdDsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFy
ZW50KTsKKyAgICBleHBsaWNpdCBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhB
VkFzc2V0VHJhY2sqKTsKICAgICAKICAgICB2b2lkIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygp
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+IG1faW1w
bDsKLSAgICBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogbV9wYXJlbnQ7CiAgICAgaW50IG1f
dHJhY2tJRDsKLSAgICBib29sIG1fc2VsZWN0ZWQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCmluZGV4IDJjNzM5Mjc5NmUwZjUyNWY5NGMyOGFhMjBhYWQxMGUzMGQwZDA1MWMuLmFm
ZDFiN2YzYTkzMzQ5MTcxZDkxMDU4ZjY4NWNmZTgwYmI4ZDczMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tCkBAIC0zNCwxMSArMzQsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVZp
ZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQyogcGFyZW50KQorVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OlZpZGVv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2spCiAgICAg
OiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCi0g
ICAgLCBtX3BhcmVudChwYXJlbnQpCiAgICAgLCBtX3RyYWNrSUQoLTEpCi0gICAgLCBtX3NlbGVj
dGVkKGZhbHNlKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQpAQCAtNjUs
MjEgKzYzLDYgQEAgQVZBc3NldFRyYWNrKiBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6YXNzZXRUcmFjaygpIGNvbnN0CiAgICAgcmV0dXJuIG1faW1wbC0+YXNzZXRUcmFjaygp
OwogfQogCi0KLWJvb2wgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNlbGVj
dGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zZWxlY3RlZDsKLX0KLQotdm9pZCBWaWRlb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0U2VsZWN0ZWQoYm9vbCBzZWxlY3RlZCkK
LXsKLSAgICBpZiAobV9zZWxlY3RlZCA9PSBzZWxlY3RlZCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9zZWxlY3RlZCA9IHNlbGVjdGVkOwotICAgIG1fcGFyZW50LT50cmFja0RpZENoYW5nZUVu
YWJsZWQodGhpcyk7Ci19Ci0KIEZsb2F0U2l6ZSBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6bmF0dXJhbFNpemUoKSBjb25zdAogewogICAgIHJldHVybiBGbG9hdFNpemUoW2Fz
c2V0VHJhY2soKSBuYXR1cmFsU2l6ZV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWYyMGJjZjlkZjEwMWFjYTE4NWIyM2MzMTlmZDIzYmQ3ZWUyYzlkMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1
ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaCIKKwor
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPEF1
ZGlvVHJhY2tQcml2YXRlV2ViTT4gQXVkaW9UcmFja1ByaXZhdGVXZWJNOjpjcmVhdGUod2VibTo6
VHJhY2tFbnRyeSYmIHRyYWNrRW50cnkpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVk
aW9UcmFja1ByaXZhdGVXZWJNKFdURk1vdmUodHJhY2tFbnRyeSkpKTsKK30KKworQXVkaW9UcmFj
a1ByaXZhdGVXZWJNOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk0od2VibTo6VHJhY2tFbnRyeSYmIHRy
YWNrRW50cnkpCisgICAgOiBtX3RyYWNrKFdURk1vdmUodHJhY2tFbnRyeSkpCit7CisgICAgaWYg
KG1fdHJhY2suaXNfZW5hYmxlZC5pc19wcmVzZW50KCkpCisgICAgICAgIHNldEVuYWJsZWQobV90
cmFjay5pc19lbmFibGVkLnZhbHVlKCkpOworfQorCitBdG9tU3RyaW5nIEF1ZGlvVHJhY2tQcml2
YXRlV2ViTTo6aWQoKSBjb25zdAoreworICAgIGlmIChtX3RyYWNrSUQuaXNOdWxsKCkpCisgICAg
ICAgIG1fdHJhY2tJRCA9IG1fdHJhY2sudHJhY2tfdWlkLmlzX3ByZXNlbnQoKSA/IEF0b21TdHJp
bmc6Om51bWJlcihtX3RyYWNrLnRyYWNrX3VpZC52YWx1ZSgpKSA6IGVtcHR5QXRvbSgpOworICAg
IHJldHVybiBtX3RyYWNrSUQ7Cit9CisKK0F0b21TdHJpbmcgQXVkaW9UcmFja1ByaXZhdGVXZWJN
OjpsYWJlbCgpIGNvbnN0Cit7CisgICAgaWYgKG1fbGFiZWwuaXNOdWxsKCkpCisgICAgICAgIG1f
bGFiZWwgPSBtX3RyYWNrLm5hbWUuaXNfcHJlc2VudCgpID8gQXRvbVN0cmluZzo6ZnJvbVVURjgo
bV90cmFjay5uYW1lLnZhbHVlKCkuZGF0YSgpLCBtX3RyYWNrLm5hbWUudmFsdWUoKS5sZW5ndGgo
KSkgOiBlbXB0eUF0b20oKTsKKyAgICByZXR1cm4gbV9sYWJlbDsKK30KKworQXRvbVN0cmluZyBB
dWRpb1RyYWNrUHJpdmF0ZVdlYk06Omxhbmd1YWdlKCkgY29uc3QKK3sKKyAgICBpZiAobV9sYW5n
dWFnZS5pc051bGwoKSkKKyAgICAgICAgbV9sYW5ndWFnZSA9IG1fdHJhY2subGFuZ3VhZ2UuaXNf
cHJlc2VudCgpID8gQXRvbVN0cmluZzo6ZnJvbVVURjgobV90cmFjay5sYW5ndWFnZS52YWx1ZSgp
LmRhdGEoKSwgbV90cmFjay5sYW5ndWFnZS52YWx1ZSgpLmxlbmd0aCgpKSA6IGVtcHR5QXRvbSgp
OworICAgIHJldHVybiBtX2xhbmd1YWdlOworfQorCitpbnQgQXVkaW9UcmFja1ByaXZhdGVXZWJN
Ojp0cmFja0luZGV4KCkgY29uc3QKK3sKKyAgICBpZiAobV90cmFjay50cmFja19udW1iZXIuaXNf
cHJlc2VudCgpKQorICAgICAgICByZXR1cm4gbV90cmFjay50cmFja19udW1iZXIudmFsdWUoKTsK
KyAgICByZXR1cm4gMDsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NPVVJDRSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlv
VHJhY2tQcml2YXRlV2ViTS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE5NzhkZjc4YzNiNTZmYTRl
NzFiOTAxZGY2YWY3YzkyZTE2OTkxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5oCkBAIC0wLDAg
KzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHdlYm0v
ZG9tX3R5cGVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9UcmFja1By
aXZhdGVXZWJNIGZpbmFsIDogcHVibGljIEF1ZGlvVHJhY2tQcml2YXRlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmPEF1ZGlvVHJhY2tQcml2YXRlV2ViTT4gY3JlYXRlKHdlYm06OlRyYWNrRW50
cnkmJik7CisgICAgdmlydHVhbCB+QXVkaW9UcmFja1ByaXZhdGVXZWJNKCkgPSBkZWZhdWx0Owor
CisgICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IGZpbmFsOworICAgIEF0b21TdHJpbmcgbGFiZWwo
KSBjb25zdCBmaW5hbDsKKyAgICBBdG9tU3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgZmluYWw7Cisg
ICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBBdWRpb1Ry
YWNrUHJpdmF0ZVdlYk0od2VibTo6VHJhY2tFbnRyeSYmKTsKKyAgICB3ZWJtOjpUcmFja0VudHJ5
IG1fdHJhY2s7CisgICAgbXV0YWJsZSBBdG9tU3RyaW5nIG1fdHJhY2tJRDsKKyAgICBtdXRhYmxl
IEF0b21TdHJpbmcgbV9sYWJlbDsKKyAgICBtdXRhYmxlIEF0b21TdHJpbmcgbV9sYW5ndWFnZTsK
K307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmEyMjhjODM3Y2U0ZTAwNDIyMDA2ODlmN2Y4Zjk2ZTY0
ODFmNDgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcApAQCAtMCwwICsxLDUyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlci5o
IgorCisjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDLmgiCisjaW5jbHVkZSAiU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oIgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wg
U291cmNlQnVmZmVyUGFyc2VyOjppc0NvbnRlbnRUeXBlU3VwcG9ydGVkKGNvbnN0IENvbnRlbnRU
eXBlJiB0eXBlKQoreworICAgIGlmIChTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppc0NvbnRlbnRU
eXBlU3VwcG9ydGVkKHR5cGUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoU291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCh0eXBlKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitSZWZQdHI8U291cmNlQnVm
ZmVyUGFyc2VyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OmNyZWF0ZShjb25zdCBDb250ZW50VHlwZSYg
Y29udGVudFR5cGUpCit7CisgICAgaWYgKFdURjo6ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb250
ZW50VHlwZS5jb250YWluZXJUeXBlKCksICJhdWRpby93ZWJtIikgfHwgV1RGOjplcXVhbElnbm9y
aW5nQVNDSUlDYXNlKGNvbnRlbnRUeXBlLmNvbnRhaW5lclR5cGUoKSwgInZpZGVvL3dlYm0iKSkK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNKCkpOwor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpKTsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDMxY2MyOWI2Zjk1Y2NhMDA0
ZjJmNDVkZjhlMzUwNzNlNTg2ZjUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKQEAgLTAsMCArMSwx
MDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCisKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmgiCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvVWludDhBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29udGVudFR5cGU7CitjbGFzcyBNZWRp
YVNhbXBsZTsKKworY2xhc3MgU291cmNlQnVmZmVyUGFyc2VyIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFNvdXJjZUJ1ZmZlclBhcnNlcj4geworcHVibGljOgorICAgIHN0YXRpYyBib29s
IGlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29uc3QgQ29udGVudFR5cGUmKTsKKworICAgIHN0YXRp
YyBSZWZQdHI8U291cmNlQnVmZmVyUGFyc2VyPiBjcmVhdGUoY29uc3QgQ29udGVudFR5cGUmKTsK
KyAgICB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQYXJzZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBlbnVt
IGNsYXNzIFR5cGUgOiB1aW50OF90IHsKKyAgICAgICAgQVZGT2JqQywKKyAgICAgICAgV2ViTSwK
KyAgICB9OworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOworICAgIGVudW0gY2xh
c3MgQXBwZW5kRmxhZ3MgOiB1aW50OF90IHsKKyAgICAgICAgTm9uZSwKKyAgICAgICAgRGlzY29u
dGludWl0eSwKKyAgICB9OworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmREYXRhKFZlY3Rvcjx1bnNp
Z25lZCBjaGFyPiYmLCBBcHBlbmRGbGFncyA9IEFwcGVuZEZsYWdzOjpOb25lKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGZsdXNoUGVuZGluZ01lZGlhRGF0YSgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoYm9vbCwgaW50MzJfdCkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQcm92aWRlTWVkaWFkYXRhRm9yVHJhY2tJRChpbnQz
Ml90KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSA9IDA7CisKKyAg
ICAvLyBXaWxsIGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgdXNpbmcgSW5pdGlh
bGl6YXRpb25TZWdtZW50ID0gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRp
b25TZWdtZW50OworICAgIHVzaW5nIERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2sg
PSBXVEY6OkZ1bmN0aW9uPHZvaWQoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYpPjsKKyAgICB2b2lk
IHNldERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soRGlkUGFyc2VJbml0aWFsaXph
dGlvbkRhdGFDYWxsYmFjayYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgbV9kaWRQYXJzZUlu
aXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CisgICAgfQorCisg
ICAgLy8gV2lsbCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgorICAgIHVzaW5nIERpZEVu
Y291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKGlu
dDMyX3QgZXJyb3JDb2RlKT47CisgICAgdm9pZCBzZXREaWRFbmNvdW50ZXJFcnJvckR1cmluZ1Bh
cnNpbmdDYWxsYmFjayhEaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayYmIGNh
bGxiYWNrKQorICAgIHsKKyAgICAgICAgbV9kaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdD
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworICAgIH0KKworICAgIC8vIFdpbGwgYmUgY2Fs
bGVkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICB1c2luZyBEaWRQcm92aWRlTWVkaWFEYXRhQ2Fs
bGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmPE1lZGlhU2FtcGxlPiYmLCBpbnQzMl90IHRy
YWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKT47CisgICAgdm9pZCBzZXREaWRQcm92aWRl
TWVkaWFEYXRhQ2FsbGJhY2soRGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrJiYgY2FsbGJhY2sp
CisgICAgeworICAgICAgICBtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spOworICAgIH0KKworICAgIC8vIFdpbGwgYmUgY2FsbGVkIHN5bmNocm9ub3VzbHkg
b24gdGhlIHBhcnNlciB0aGVhZC4KKyAgICB1c2luZyBXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1
ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2
b2lkKHVpbnQzMl90IHRyYWNrSUQpPjsKKyAgICB2b2lkIHNldFdpbGxQcm92aWRlQ29udGVudEtl
eVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soV2lsbFByb3ZpZGVD
b250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayYmIGNh
bGxiYWNrKQorICAgIHsKKyAgICAgICAgbV93aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5p
dGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7Cisg
ICAgfQorCisgICAgLy8gV2lsbCBiZSBjYWxsZWQgc3luY2hyb25vdXNseSBvbiB0aGUgcGFyc2Vy
IHRoZWFkLgorICAgIHVzaW5nIERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChSZWY8VWludDhB
cnJheT4mJiwgaW50MzJfdCB0cmFja0lEKT47CisgICAgdm9pZCBzZXREaWRQcm92aWRlQ29udGVu
dEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soRGlkUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrJiYg
Y2FsbGJhY2spCisgICAgeworICAgICAgICBtX2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElu
aXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwor
ICAgIH0KKworcHJvdGVjdGVkOgorICAgIFNvdXJjZUJ1ZmZlclBhcnNlcigpID0gZGVmYXVsdDsK
KworICAgIERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2sgbV9kaWRQYXJzZUluaXRp
YWxpemF0aW9uRGF0YUNhbGxiYWNrOworICAgIERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2lu
Z0NhbGxiYWNrIG1fZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2s7CisgICAg
RGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrIG1fZGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNr
OworICAgIFdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JU
cmFja0lEQ2FsbGJhY2sgbV93aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm9yVHJhY2tJRENhbGxiYWNrOworICAgIERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVz
dEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayBtX2RpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjazsKK307CisKK30K
KworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExYjZiYmM0NjQzZDQzZDcxY2YxNzJhYmM4YzcwMWRjN2Vm
NTM0Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtMCwwICsxLDM2MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5jbHVkZSAiQXVkaW9U
cmFja1ByaXZhdGVXZWJNLmgiCisjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgor
I2luY2x1ZGUgIk1lZGlhRGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgorI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaCIKKyNpbmNsdWRlIDx3
ZWJtL3dlYm1fcGFyc2VyLmg+CisjaW5jbHVkZSA8d3RmL0FsZ29yaXRobXMuaD4KKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvZGFyd2luL1dlYWtMaW5raW5n
Lmg+CisKK1dURl9XRUFLX0xJTktfRk9SQ0VfSU1QT1JUKHdlYm06OnN3YXApOworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0YXRpYyBib29sIGlzV2VibVBhcnNlckF2YWlsYWJsZSgpCit7Cisg
ICAgcmV0dXJuICEhd2VibTo6c3dhcCAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLndlYk1QYXJzZXJFbmFibGVkKCk7Cit9CisKK3VzaW5nIG5hbWVzcGFjZSB3ZWJt
OworCitjbGFzcyBWZWN0b3JSZWFkZXIgZmluYWwgOiBwdWJsaWMgd2VibTo6UmVhZGVyIHsKK3B1
YmxpYzoKKyAgICBWZWN0b3JSZWFkZXIoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgZGF0YSkKKyAg
ICAgICAgOiBtX2RhdGEgeyBXVEZNb3ZlKGRhdGEpIH0KKyAgICB7CisgICAgfQorCisgICAgU3Rh
dHVzIFJlYWQoc3RkOjpzaXplX3QgbnVtVG9SZWFkLCB1aW50OF90KiBvdXRwdXRCdWZmZXIsIHVp
bnQ2NF90KiBudW1BY3R1YWxseVJlYWQpIGZpbmFsCisgICAgeworICAgICAgICBBU1NFUlQob3V0
cHV0QnVmZmVyICYmIG51bUFjdHVhbGx5UmVhZCk7CisgICAgICAgIGlmICghb3V0cHV0QnVmZmVy
IHx8ICFudW1BY3R1YWxseVJlYWQpCisgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6
a05vdEVub3VnaE1lbW9yeSk7CisKKyAgICAgICAgaWYgKG1fcG9zaXRpb24gPj0gbV9kYXRhLnNp
emUoKSkgeworICAgICAgICAgICAgKm51bUFjdHVhbGx5UmVhZCA9IDA7CisgICAgICAgICAgICBy
ZXR1cm4gU3RhdHVzKFN0YXR1czo6a0VuZE9mRmlsZSk7CisgICAgICAgIH0KKworICAgICAgICBz
aXplX3QgbnVtQXZhaWxhYmxlID0gbV9kYXRhLnNpemUoKSAtIG1fcG9zaXRpb247CisgICAgICAg
IGlmIChudW1Ub1JlYWQgPCBudW1BdmFpbGFibGUpIHsKKyAgICAgICAgICAgIG1lbWNweShvdXRw
dXRCdWZmZXIsIG1fZGF0YS5kYXRhKCkgKyBtX3Bvc2l0aW9uLCBudW1Ub1JlYWQpOworICAgICAg
ICAgICAgKm51bUFjdHVhbGx5UmVhZCA9IG51bVRvUmVhZDsKKyAgICAgICAgICAgIG1fcG9zaXRp
b24gKz0gbnVtVG9SZWFkOworICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0Nv
bXBsZXRlZCk7CisgICAgICAgIH0KKworICAgICAgICBtZW1jcHkob3V0cHV0QnVmZmVyLCBtX2Rh
dGEuZGF0YSgpICsgbV9wb3NpdGlvbiwgbnVtQXZhaWxhYmxlKTsKKyAgICAgICAgKm51bUFjdHVh
bGx5UmVhZCA9IG51bUF2YWlsYWJsZTsKKyAgICAgICAgbV9wb3NpdGlvbiArPSBudW1BdmFpbGFi
bGU7CisgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tQYXJ0aWFsKTsKKyAgICB9CisK
KyAgICBTdGF0dXMgU2tpcCh1aW50NjRfdCBudW1Ub1NraXAsIHVpbnQ2NF90KiBudW1BY3R1YWxs
eVNraXBwZWQpIGZpbmFsCisgICAgeworICAgICAgICBBU1NFUlQobnVtQWN0dWFsbHlTa2lwcGVk
KTsKKyAgICAgICAgaWYgKCFudW1BY3R1YWxseVNraXBwZWQpCisgICAgICAgICAgICByZXR1cm4g
U3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisKKyAgICAgICAgaWYgKG1fcG9zaXRp
b24gPj0gbV9kYXRhLnNpemUoKSkgeworICAgICAgICAgICAgKm51bUFjdHVhbGx5U2tpcHBlZCA9
IDA7CisgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a1dvdWxkQmxvY2spOworICAg
ICAgICB9CisKKyAgICAgICAgc2l6ZV90IG51bUF2YWlsYWJsZSA9IG1fZGF0YS5zaXplKCkgLSBt
X3Bvc2l0aW9uOworCisgICAgICAgIGlmIChudW1Ub1NraXAgPCBudW1BdmFpbGFibGUpIHsKKyAg
ICAgICAgICAgICpudW1BY3R1YWxseVNraXBwZWQgPSBudW1Ub1NraXA7CisgICAgICAgICAgICBt
X3Bvc2l0aW9uICs9IG51bVRvU2tpcDsKKyAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVz
OjprT2tDb21wbGV0ZWQpOworICAgICAgICB9CisKKyAgICAgICAgKm51bUFjdHVhbGx5U2tpcHBl
ZCA9IG51bUF2YWlsYWJsZTsKKyAgICAgICAgbV9wb3NpdGlvbiArPSBudW1BdmFpbGFibGU7Cisg
ICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tQYXJ0aWFsKTsKKyAgICB9CisKKyAgICB1
aW50NjRfdCBQb3NpdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcG9zaXRpb247IH0KKwor
cHJpdmF0ZToKKyAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gbV9kYXRhOworICAgIHNpemVfdCBt
X3Bvc2l0aW9uIHsgMCB9OworfTsKKworY2xhc3MgTWVkaWFEZXNjcmlwdGlvbldlYk0gZmluYWwg
OiBwdWJsaWMgTWVkaWFEZXNjcmlwdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxNZWRp
YURlc2NyaXB0aW9uV2ViTT4gY3JlYXRlKHdlYm06OlRyYWNrRW50cnkmJiB0cmFjaykKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhRGVzY3JpcHRpb25XZWJNKFdURk1v
dmUodHJhY2spKSk7CisgICAgfQorCisgICAgTWVkaWFEZXNjcmlwdGlvbldlYk0od2VibTo6VHJh
Y2tFbnRyeSYmIHRyYWNrKQorICAgICAgICA6IG1fdHJhY2sgeyBXVEZNb3ZlKHRyYWNrKSB9Cisg
ICAgeworICAgIH0KKworICAgIEF0b21TdHJpbmcgY29kZWMoKSBjb25zdCBmaW5hbAorICAgIHsK
KyAgICAgICAgaWYgKG1fY29kZWMpCisgICAgICAgICAgICByZXR1cm4gKm1fY29kZWM7CisKKyAg
ICAgICAgLy8gRnJvbTogaHR0cHM6Ly93d3cubWF0cm9za2Eub3JnL3RlY2huaWNhbC9jb2RlY19z
cGVjcy5odG1sCisgICAgICAgIC8vICJFYWNoIENvZGVjIElEIE1VU1QgaW5jbHVkZSBhIE1ham9y
IENvZGVjIElEIGltbWVkaWF0ZWx5IGZvbGxvd2luZyB0aGUgQ29kZWMgSUQgUHJlZml4LgorICAg
ICAgICAvLyBBIE1ham9yIENvZGVjIElEIE1BWSBiZSBmb2xsb3dlZCBieSBhbiBPUFRJT05BTCBD
b2RlYyBJRCBTdWZmaXggdG8gY29tbXVuaWNhdGUgYSByZWZpbmVtZW50CisgICAgICAgIC8vIG9m
IHRoZSBNYWpvciBDb2RlYyBJRC4gSWYgYSBDb2RlYyBJRCBTdWZmaXggaXMgdXNlZCwgdGhlbiB0
aGUgQ29kZWMgSUQgTVVTVCBpbmNsdWRlIGEgZm9yd2FyZAorICAgICAgICAvLyBzbGFzaCAo4oCc
L+KAnSkgYXMgYSBzZXBhcmF0b3IgYmV0d2VlbiB0aGUgTWFqb3IgQ29kZWMgSUQgYW5kIHRoZSBD
b2RlYyBJRCBTdWZmaXguIFRoZSBNYWpvciBDb2RlYworICAgICAgICAvLyBJRCBNVVNUIGJlIGNv
bXBvc2VkIG9mIG9ubHkgY2FwaXRhbCBsZXR0ZXJzIChBLVopIGFuZCBudW1iZXJzICgwLTkpLiBU
aGUgQ29kZWMgSUQgU3VmZml4IE1VU1QKKyAgICAgICAgLy8gYmUgY29tcG9zZWQgb2Ygb25seSBj
YXBpdGFsIGxldHRlcnMgKEEtWiksIG51bWJlcnMgKDAtOSksIHVuZGVyc2NvcmUgKOKAnF/igJ0p
LCBhbmQgZm9yd2FyZCBzbGFzaCAo4oCcL+KAnSkuIgorCisgICAgICAgIGlmICghbV90cmFjay5j
b2RlY19pZC5pc19wcmVzZW50KCkpIHsKKyAgICAgICAgICAgIG1fY29kZWMgPSBlbXB0eUF0b20o
KTsKKyAgICAgICAgICAgIHJldHVybiAqbV9jb2RlYzsKKyAgICAgICAgfQorCisgICAgICAgIFN0
cmluZ1ZpZXcgY29kZWNJRCB7IG1fdHJhY2suY29kZWNfaWQudmFsdWUoKS5kYXRhKCksICh1bnNp
Z25lZCltX3RyYWNrLmNvZGVjX2lkLnZhbHVlKCkubGVuZ3RoKCkgfTsKKyAgICAgICAgaWYgKCFj
b2RlY0lELnN0YXJ0c1dpdGgoIlZfIikgJiYgIWNvZGVjSUQuc3RhcnRzV2l0aCgiQV8iKSAmJiAh
Y29kZWNJRC5zdGFydHNXaXRoKCJTXyIpKSB7CisgICAgICAgICAgICBtX2NvZGVjID0gZW1wdHlB
dG9tKCk7CisgICAgICAgICAgICByZXR1cm4gKm1fY29kZWM7CisgICAgICAgIH0KKworICAgICAg
ICBhdXRvIHNsYXNoTG9jYXRpb24gPSBjb2RlY0lELmZpbmQoJy8nKTsKKyAgICAgICAgYXV0byBs
ZW5ndGggPSBzbGFzaExvY2F0aW9uID09IG5vdEZvdW5kID8gY29kZWNJRC5sZW5ndGgoKSAtIDIg
OiBzbGFzaExvY2F0aW9uIC0gMjsKKyAgICAgICAgbV9jb2RlYyA9IEF0b21TdHJpbmcgeyBjb2Rl
Y0lELnN1YnN0cmluZygyLCBsZW5ndGgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgfTsKKyAg
ICAgICAgcmV0dXJuICptX2NvZGVjOworICAgIH0KKyAgICBib29sIGlzVmlkZW8oKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX3RyYWNrLnRyYWNrX3R5cGUuaXNfcHJlc2VudCgpICYmIG1fdHJhY2su
dHJhY2tfdHlwZS52YWx1ZSgpID09IFRyYWNrVHlwZTo6a1ZpZGVvOyB9CisgICAgYm9vbCBpc0F1
ZGlvKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90cmFjay50cmFja190eXBlLmlzX3ByZXNlbnQo
KSAmJiBtX3RyYWNrLnRyYWNrX3R5cGUudmFsdWUoKSA9PSBUcmFja1R5cGU6OmtBdWRpbzsgfQor
ICAgIGJvb2wgaXNUZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90cmFjay50cmFja190eXBl
LmlzX3ByZXNlbnQoKSAmJiBtX3RyYWNrLnRyYWNrX3R5cGUudmFsdWUoKSA9PSBUcmFja1R5cGU6
OmtTdWJ0aXRsZTsgfQorCisgICAgY29uc3Qgd2VibTo6VHJhY2tFbnRyeSYgdHJhY2soKSB7IHJl
dHVybiBtX3RyYWNrOyB9CisKK3ByaXZhdGU6CisgICAgbXV0YWJsZSBPcHRpb25hbDxBdG9tU3Ry
aW5nPiBtX2NvZGVjOworICAgIHdlYm06OlRyYWNrRW50cnkgbV90cmFjazsKK307CisKK3N0YXRp
YyBWZWN0b3I8U3RyaW5nPiBzdXBwb3J0ZWRXZWJNQ29kZWNzKCkKK3sKKyAgICBhdXRvIGNvZGVj
cyA9IG1ha2VOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3RyaW5nPj4oeworICAgICAgICAidnAwOSIs
CisgICAgICAgICJ2b3JiaXMiLAorICAgICAgICAib3B1cyIsCisgICAgfSk7CisgICAgcmV0dXJu
IGNvZGVjczsKK30KKworYm9vbCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppc0NvbnRlbnRUeXBl
U3VwcG9ydGVkKGNvbnN0IENvbnRlbnRUeXBlJiB0eXBlKQoreworICAgIGlmICghaXNXZWJtUGFy
c2VyQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghV1RGOjpl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKHR5cGUuY29udGFpbmVyVHlwZSgpLCAiYXVkaW8vd2VibSIp
CisgICAgICAgICYmICFXVEY6OmVxdWFsSWdub3JpbmdBU0NJSUNhc2UodHlwZS5jb250YWluZXJU
eXBlKCksICJ2aWRlby93ZWJtIikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFN0cmlu
ZyBjb2RlY3NQYXJhbWV0ZXIgPSB0eXBlLnBhcmFtZXRlcihDb250ZW50VHlwZTo6Y29kZWNzUGFy
YW1ldGVyKCkpOworICAgIGlmICghY29kZWNzUGFyYW1ldGVyKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgIGF1dG8gc3BsaXRSZXN1bHRzID0gU3RyaW5nVmlldyhjb2RlY3NQYXJhbWV0ZXIp
LnNwbGl0KCcsJyk7CisgICAgZm9yIChhdXRvIHNwbGl0IDogc3BsaXRSZXN1bHRzKSB7CisgICAg
ICAgIHJldHVybiBXVEY6OmFueU9mKHN1cHBvcnRlZFdlYk1Db2RlY3MoKSwgWyZdKGF1dG8mIGNv
ZGVjKSB7CisgICAgICAgICAgICByZXR1cm4gc3BsaXQuc3RhcnRzV2l0aChjb2RlYyk7CisgICAg
ICAgIH0pOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworU291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpCit7CisgICAgaWYgKGlzV2VibVBhcnNlckF2
YWlsYWJsZSgpKQorICAgICAgICBtX3BhcnNlciA9IFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s8V2VibVBhcnNlcj4oKTsKK30KKworU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
flNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKSA9IGRlZmF1bHQ7CisKK3ZvaWQgU291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6YXBwZW5kRGF0YShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBidWZmZXIsIEFw
cGVuZEZsYWdzIGFwcGVuZEZsYWdzKQoreworICAgIGlmICghbV9wYXJzZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIFZlY3RvclJlYWRlciByZWFkZXIgeyBXVEZNb3ZlKGJ1ZmZlcikgfTsKKyAg
ICBpZiAoYXBwZW5kRmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCisgICAgICAg
IG1fcGFyc2VyLT5EaWRTZWVrKCk7CisgICAgbV9zdGF0dXMgPSBtX3BhcnNlci0+RmVlZCh0aGlz
LCAmcmVhZGVyKTsKKyAgICBpZiAobV9zdGF0dXMub2soKSB8fCBtX3N0YXR1cy5jb2RlID09IFN0
YXR1czo6a0VuZE9mRmlsZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FsbE9uTWFpblRocmVh
ZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb2RlID0gbV9zdGF0dXMu
Y29kZV0geworICAgICAgICBpZiAobV9kaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxs
YmFjaykKKyAgICAgICAgICAgIG1fZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJh
Y2soY29kZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6Zmx1
c2hQZW5kaW5nTWVkaWFEYXRhKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFj
a0lEKGJvb2wsIGludDMyX3QpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpzaG91bGRQcm92aWRlTWVkaWFkYXRhRm9yVHJhY2tJRChp
bnQzMl90KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnJlc2V0UGFyc2VyU3RhdGUoKQoreworICAg
IG1fcGFyc2VyLT5EaWRTZWVrKCk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpOb25lOworfQorCitT
dGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FbGVtZW50QmVnaW4oY29uc3QgRWxlbWVu
dE1ldGFkYXRhJiBtZXRhZGF0YSwgQWN0aW9uKiBhY3Rpb24pCit7CisgICAgVU5VU0VEX1BBUkFN
KG1ldGFkYXRhKTsKKyAgICBBU1NFUlQoYWN0aW9uKTsKKyAgICBpZiAoIWFjdGlvbikKKyAgICAg
ICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworCisgICAgaWYgKCht
X3N0YXRlID09IFN0YXRlOjpOb25lICYmIG1ldGFkYXRhLmlkICE9IElkOjprRWJtbCkKKyAgICAg
ICAgfHwgKG1fc3RhdGUgPT0gU3RhdGU6OlJlYWRFYm1sICYmIG1ldGFkYXRhLmlkICE9IElkOjpr
U2VnbWVudCkKKyAgICAgICAgfHwgKG1fc3RhdGUgPT0gU3RhdGU6OlJlYWRpbmdTZWdtZW50ICYm
IG1ldGFkYXRhLmlkICE9IElkOjprSW5mbykKKyAgICAgICAgfHwgKG1fc3RhdGUgPT0gU3RhdGU6
OlJlYWRJbmZvICYmIG1ldGFkYXRhLmlkICE9IElkOjprVHJhY2tzKQorICAgICAgICB8fCAobV9z
dGF0ZSA9PSBTdGF0ZTo6UmVhZFRyYWNrICYmIG1ldGFkYXRhLmlkICE9IElkOjprVHJhY2tFbnRy
eSAmJiBtZXRhZGF0YS5pZCAhPSBJZDo6a0NsdXN0ZXIpCisgICAgICAgIHx8IChtZXRhZGF0YS5p
ZCA9PSBJZDo6a0N1ZXMgfHwgbWV0YWRhdGEuaWQgPT0gSWQ6OmtDaGFwdGVycykpIHsKKyAgICAg
ICAgKmFjdGlvbiA9IEFjdGlvbjo6a1NraXA7CisgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVz
OjprT2tDb21wbGV0ZWQpOworICAgIH0KKworICAgIGlmIChtZXRhZGF0YS5pZCA9PSBJZDo6a0Vi
bWwpCisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZGluZ0VibWw7CisgICAgZWxzZSBpZiAo
bWV0YWRhdGEuaWQgPT0gSWQ6OmtTZWdtZW50KQorICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlJl
YWRpbmdTZWdtZW50OworICAgIGVsc2UgaWYgKG1ldGFkYXRhLmlkID09IElkOjprSW5mbykKKyAg
ICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkaW5nSW5mbzsKKyAgICBlbHNlIGlmIChtZXRhZGF0
YS5pZCA9PSBJZDo6a1RyYWNrcykKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkaW5nVHJh
Y2tzOworICAgIGVsc2UgaWYgKG1ldGFkYXRhLmlkID09IElkOjprVHJhY2tFbnRyeSkKKyAgICAg
ICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkaW5nVHJhY2s7CisgICAgZWxzZSBpZiAobWV0YWRhdGEu
aWQgPT0gSWQ6OmtDbHVzdGVyKQorICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWRpbmdDbHVz
dGVyOworCisgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7Cit9CisKK1N0
YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkVibWwoY29uc3QgRWxlbWVudE1ldGFkYXRh
JiBtZXRhZGF0YSwgY29uc3QgRWJtbCYgZWJtbCkKK3sKKyAgICBVTlVTRURfUEFSQU0obWV0YWRh
dGEpOworICAgIGlmIChlYm1sLmRvY190eXBlLmlzX3ByZXNlbnQoKSAmJiBlYm1sLmRvY190eXBl
LnZhbHVlKCkuY29tcGFyZSgid2VibSIpKQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6
Q29kZShFcnJvckNvZGU6OkludmFsaWREb2NUeXBlKSk7CisKKyAgICBtX2luaXRpYWxpemF0aW9u
U2VnbWVudEVuY291bnRlcmVkID0gdHJ1ZTsKKyAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudCA9
IFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8SW5pdGlhbGl6YXRpb25TZWdt
ZW50PigpOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZEVibWw7CisKKyAgICByZXR1cm4gU3Rh
dHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKK30KKworU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNl
cldlYk06Ok9uU2VnbWVudEJlZ2luKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIEFj
dGlvbiogYWN0aW9uKQoreworICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CisgICAgaWYgKCFt
X2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkKQorICAgICAgICByZXR1cm4gU3RhdHVz
KFN0YXR1czo6Q29kZShFcnJvckNvZGU6OkludmFsaWRJbml0U2VnbWVudCkpOworCisgICAgQVNT
RVJUKGFjdGlvbik7CisgICAgaWYgKCFhY3Rpb24pCisgICAgICAgIHJldHVybiBTdGF0dXMoU3Rh
dHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKyAgICAqYWN0aW9uID0gQWN0aW9uOjprUmVhZDsKKwor
ICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworfQorCitTdGF0dXMgU291
cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25JbmZvKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRh
dGEsIGNvbnN0IEluZm8mIGluZm8pCit7CisgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKKyAg
ICBpZiAoIW1faW5pdGlhbGl6YXRpb25TZWdtZW50RW5jb3VudGVyZWQgfHwgIW1faW5pdGlhbGl6
YXRpb25TZWdtZW50KQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6Q29kZShFcnJvckNv
ZGU6OkludmFsaWRJbml0U2VnbWVudCkpOworCisgICAgYXV0byB0aW1lY29kZVNjYWxlID0gaW5m
by50aW1lY29kZV9zY2FsZS5pc19wcmVzZW50KCkgPyBpbmZvLnRpbWVjb2RlX3NjYWxlLnZhbHVl
KCkgOiAxMDAwMDAwOworICAgIG1fdGltZXNjYWxlID0gMTAwMDAwMDAwMCAvIHRpbWVjb2RlU2Nh
bGU7CisgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnQtPmR1cmF0aW9uID0gaW5mby5kdXJhdGlv
bi5pc19wcmVzZW50KCkgPyBNZWRpYVRpbWUoaW5mby5kdXJhdGlvbi52YWx1ZSgpLCBtX3RpbWVz
Y2FsZSkgOiBNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCk7CisgICAgbV9zdGF0ZSA9IFN0YXRl
OjpSZWFkSW5mbzsKKworICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOwor
fQorCitTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25DbHVzdGVyQmVnaW4oY29uc3Qg
RWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uc3QgQ2x1c3RlciYgY2x1c3RlciwgQWN0aW9u
KiBhY3Rpb24pCit7CisgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKKyAgICBVTlVTRURfUEFS
QU0oY2x1c3Rlcik7CisgICAgQVNTRVJUKGFjdGlvbik7CisgICAgaWYgKCFhY3Rpb24pCisgICAg
ICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKworICAgIGlmICht
X2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkICYmIG1fZGlkUGFyc2VJbml0aWFsaXph
dGlvbkRhdGFDYWxsYmFjaykgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluaXRpYWxpemF0aW9uU2VnbWVudCA9IFdURk1v
dmUoKm1faW5pdGlhbGl6YXRpb25TZWdtZW50KV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBt
X2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soV1RGTW92ZShpbml0aWFsaXphdGlv
blNlZ21lbnQpKTsKKyAgICAgICAgfSk7CisgICAgfQorICAgIG1faW5pdGlhbGl6YXRpb25TZWdt
ZW50RW5jb3VudGVyZWQgPSBmYWxzZTsKKyAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudCA9IG51
bGxwdHI7CisKKyAgICAqYWN0aW9uID0gQWN0aW9uOjprUmVhZDsKKworICAgIHJldHVybiBTdGF0
dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworfQorCitTdGF0dXMgU291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6T25UcmFja0VudHJ5KGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0
IFRyYWNrRW50cnkmIHRyYWNrRW50cnkpCit7CisgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsK
KyAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWRUcmFjazsKKyAgICBpZiAoIXRyYWNrRW50cnkudHJh
Y2tfdHlwZS5pc19wcmVzZW50KCkpCisgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tD
b21wbGV0ZWQpOworCisgICAgYXV0byB0cmFja1R5cGUgPSB0cmFja0VudHJ5LnRyYWNrX3R5cGUu
dmFsdWUoKTsKKyAgICBpZiAodHJhY2tUeXBlID09IFRyYWNrVHlwZTo6a1ZpZGVvKQorICAgICAg
ICBtX2luaXRpYWxpemF0aW9uU2VnbWVudC0+dmlkZW9UcmFja3MuYXBwZW5kKHsgTWVkaWFEZXNj
cmlwdGlvbldlYk06OmNyZWF0ZShUcmFja0VudHJ5KHRyYWNrRW50cnkpKSwgVmlkZW9UcmFja1By
aXZhdGVXZWJNOjpjcmVhdGUoVHJhY2tFbnRyeSh0cmFja0VudHJ5KSkgfSk7CisgICAgZWxzZSBp
ZiAodHJhY2tUeXBlID09IFRyYWNrVHlwZTo6a0F1ZGlvKQorICAgICAgICBtX2luaXRpYWxpemF0
aW9uU2VnbWVudC0+YXVkaW9UcmFja3MuYXBwZW5kKHsgTWVkaWFEZXNjcmlwdGlvbldlYk06OmNy
ZWF0ZShUcmFja0VudHJ5KHRyYWNrRW50cnkpKSwgQXVkaW9UcmFja1ByaXZhdGVXZWJNOjpjcmVh
dGUoVHJhY2tFbnRyeSh0cmFja0VudHJ5KSkgfSk7CisKKyAgICByZXR1cm4gU3RhdHVzKFN0YXR1
czo6a09rQ29tcGxldGVkKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NPVVJD
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZWI0ODBmMjc4ODg5
OWU4YTNjZjQ3Mzc2ZTUyMDJhNTlhZTg2ZTU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCkBA
IC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQorCisjaW5jbHVkZSAiU291cmNlQnVmZmVyUGFyc2VyLmgiCisjaW5jbHVk
ZSA8d2VibS9jYWxsYmFjay5oPgorI2luY2x1ZGUgPHdlYm0vc3RhdHVzLmg+CisjaW5jbHVkZSA8
d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL01l
ZGlhVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKwordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNN
U2FtcGxlQnVmZmVyUmVmOworCituYW1lc3BhY2Ugd2VibSB7CitjbGFzcyBXZWJtUGFyc2VyOwor
fQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0g
OiBwdWJsaWMgU291cmNlQnVmZmVyUGFyc2VyLCBwcml2YXRlIHdlYm06OkNhbGxiYWNrIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBpc0NvbnRlbnRUeXBlU3VwcG9ydGVkKGNvbnN0IENvbnRl
bnRUeXBlJik7CisKKyAgICBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNKCk7CisgICAgflNvdXJjZUJ1
ZmZlclBhcnNlcldlYk0oKTsKKworICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CisKKyAg
ICBjb25zdCB3ZWJtOjpTdGF0dXMmIHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9
CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBUeXBlOjpXZWJNOyB9CisgICAgdm9p
ZCBhcHBlbmREYXRhKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmLCBBcHBlbmRGbGFncyA9IEFwcGVu
ZEZsYWdzOjpOb25lKSBmaW5hbDsKKyAgICB2b2lkIGZsdXNoUGVuZGluZ01lZGlhRGF0YSgpIGZp
bmFsOworICAgIHZvaWQgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoYm9vbCwg
aW50MzJfdCkgZmluYWw7CisgICAgYm9vbCBzaG91bGRQcm92aWRlTWVkaWFkYXRhRm9yVHJhY2tJ
RChpbnQzMl90KSBmaW5hbDsKKyAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKKwor
ICAgIGVudW0gY2xhc3MgRXJyb3JDb2RlIDogaW50MzJfdCB7CisgICAgICAgIFNvdXJjZUJ1ZmZl
clBhcnNlcldlYk1FcnJvckNvZGVTdGFydCA9IDIwMDAsCisgICAgICAgIEludmFsaWREb2NUeXBl
LAorICAgICAgICBJbnZhbGlkSW5pdFNlZ21lbnQsCisgICAgfTsKKworcHJpdmF0ZToKKyAgICAv
LyB3ZWJtOjpDYWxsYmFjaworICAgIHdlYm06OlN0YXR1cyBPbkVsZW1lbnRCZWdpbihjb25zdCB3
ZWJtOjpFbGVtZW50TWV0YWRhdGEmLCB3ZWJtOjpBY3Rpb24qKSBmaW5hbDsKKyAgICB3ZWJtOjpT
dGF0dXMgT25FYm1sKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYsIGNvbnN0IHdlYm06OkVi
bWwmKSBmaW5hbDsKKyAgICB3ZWJtOjpTdGF0dXMgT25TZWdtZW50QmVnaW4oY29uc3Qgd2VibTo6
RWxlbWVudE1ldGFkYXRhJiwgd2VibTo6QWN0aW9uKikgZmluYWw7CisgICAgd2VibTo6U3RhdHVz
IE9uSW5mbyhjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmLCBjb25zdCB3ZWJtOjpJbmZvJikg
ZmluYWw7CisgICAgd2VibTo6U3RhdHVzIE9uQ2x1c3RlckJlZ2luKGNvbnN0IHdlYm06OkVsZW1l
bnRNZXRhZGF0YSYsIGNvbnN0IHdlYm06OkNsdXN0ZXImLCB3ZWJtOjpBY3Rpb24qKSBmaW5hbDsK
KyAgICB3ZWJtOjpTdGF0dXMgT25UcmFja0VudHJ5KGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0
YSYsIGNvbnN0IHdlYm06OlRyYWNrRW50cnkmKSBmaW5hbDsKKworICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbml0aWFsaXphdGlvblNlZ21lbnQ+IG1faW5pdGlhbGl6YXRpb25TZWdtZW50OworICAgIHdl
Ym06OlN0YXR1cyBtX3N0YXR1czsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VibTo6V2VibVBhcnNl
cj4gbV9wYXJzZXI7CisgICAgYm9vbCBtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVk
IHsgZmFsc2UgfTsKKyAgICB1aW50MzJfdCBtX3RpbWVzY2FsZSB7IDEwMDAgfTsKKworICAgIGVu
dW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsKKyAgICAgICAgTm9uZSwKKyAgICAgICAgUmVhZGlu
Z0VibWwsCisgICAgICAgIFJlYWRFYm1sLAorICAgICAgICBSZWFkaW5nU2VnbWVudCwKKyAgICAg
ICAgUmVhZGluZ0luZm8sCisgICAgICAgIFJlYWRJbmZvLAorICAgICAgICBSZWFkaW5nVHJhY2tz
LAorICAgICAgICBSZWFkaW5nVHJhY2ssCisgICAgICAgIFJlYWRUcmFjaywKKyAgICAgICAgUmVh
ZGluZ0NsdXN0ZXIsCisgICAgfTsKKyAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6Ok5vbmUgfTsK
KworICAgIFZlY3Rvcjx3ZWJtOjpUcmFja0VudHJ5PiBtX3RyYWNrczsKK307CisKK30KKworU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJz
ZXImIHBhcnNlcikgeyByZXR1cm4gcGFyc2VyLnR5cGUoKSA9PSBXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXI6OlR5cGU6OldlYk07IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwor
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tCmluZGV4
IDU2ODU5NTMzZGViNmFlY2M5MGM1N2UxOTUxMmNmZGQ4ZTBlMmU0YjEuLjBjN2VkMmNhOWI3ZWU3
MTlhMTViNTBmMmY1MjI0N2NmN2FlZGViMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tCkBAIC0x
MjIsNyArMTIyLDcgQEAgYm9vbCB2YWxpZGF0ZVZQUGFyYW1ldGVycyhWUENvZGVjQ29uZmlndXJh
dGlvblJlY29yZCYgY29kZWNDb25maWd1cmF0aW9uLCBNZWRpYUMKICAgICAgICAgaW5mby5wb3dl
ckVmZmljaWVudCA9IHRydWU7CiAKICAgICAgICAgLy8gSFcgVlA5IERlY29kZXIgc3VwcG9ydHMg
UHJvZmlsZSAwICYgMjoKLSAgICAgICAgaWYgKCFjb2RlY0NvbmZpZ3VyYXRpb24ucHJvZmlsZSAm
JiBjb2RlY0NvbmZpZ3VyYXRpb24ucHJvZmlsZSAhPSAyKQorICAgICAgICBpZiAoY29kZWNDb25m
aWd1cmF0aW9uLnByb2ZpbGUgJiYgY29kZWNDb25maWd1cmF0aW9uLnByb2ZpbGUgIT0gMikKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAvLyBIVyBWUDkgRGVjb2RlciBzdXBw
b3J0cyB1cCB0byBMZXZlbCA2OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmEzNGYyZTU4M2ZlY2JkYTM0Zjc1N2JiMmIzMTk3ZjNlZmNlODIzMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJh
Y2tQcml2YXRlV2ViTS5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaCIKKworI2lmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFZpZGVvVHJh
Y2tQcml2YXRlV2ViTT4gVmlkZW9UcmFja1ByaXZhdGVXZWJNOjpjcmVhdGUod2VibTo6VHJhY2tF
bnRyeSYmIHRyYWNrRW50cnkpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFj
a1ByaXZhdGVXZWJNKFdURk1vdmUodHJhY2tFbnRyeSkpKTsKK30KKworVmlkZW9UcmFja1ByaXZh
dGVXZWJNOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk0od2VibTo6VHJhY2tFbnRyeSYmIHRyYWNrRW50
cnkpCisgICAgOiBtX3RyYWNrKFdURk1vdmUodHJhY2tFbnRyeSkpCit7CisgICAgaWYgKG1fdHJh
Y2suaXNfZW5hYmxlZC5pc19wcmVzZW50KCkpCisgICAgICAgIHNldFNlbGVjdGVkKG1fdHJhY2su
aXNfZW5hYmxlZC52YWx1ZSgpKTsKK30KKworQXRvbVN0cmluZyBWaWRlb1RyYWNrUHJpdmF0ZVdl
Yk06OmlkKCkgY29uc3QKK3sKKyAgICBpZiAobV90cmFja0lELmlzTnVsbCgpKQorICAgICAgICBt
X3RyYWNrSUQgPSBtX3RyYWNrLnRyYWNrX3VpZC5pc19wcmVzZW50KCkgPyBBdG9tU3RyaW5nOjpu
dW1iZXIobV90cmFjay50cmFja191aWQudmFsdWUoKSkgOiBlbXB0eUF0b20oKTsKKyAgICByZXR1
cm4gbV90cmFja0lEOworfQorCitBdG9tU3RyaW5nIFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6bGFi
ZWwoKSBjb25zdAoreworICAgIGlmIChtX2xhYmVsLmlzTnVsbCgpKQorICAgICAgICBtX2xhYmVs
ID0gbV90cmFjay5uYW1lLmlzX3ByZXNlbnQoKSA/IEF0b21TdHJpbmc6OmZyb21VVEY4KG1fdHJh
Y2submFtZS52YWx1ZSgpLmRhdGEoKSwgbV90cmFjay5uYW1lLnZhbHVlKCkubGVuZ3RoKCkpIDog
ZW1wdHlBdG9tKCk7CisgICAgcmV0dXJuIG1fbGFiZWw7Cit9CisKK0F0b21TdHJpbmcgVmlkZW9U
cmFja1ByaXZhdGVXZWJNOjpsYW5ndWFnZSgpIGNvbnN0Cit7CisgICAgaWYgKG1fbGFuZ3VhZ2Uu
aXNOdWxsKCkpCisgICAgICAgIG1fbGFuZ3VhZ2UgPSBtX3RyYWNrLmxhbmd1YWdlLmlzX3ByZXNl
bnQoKSA/IEF0b21TdHJpbmc6OmZyb21VVEY4KG1fdHJhY2subGFuZ3VhZ2UudmFsdWUoKS5kYXRh
KCksIG1fdHJhY2subGFuZ3VhZ2UudmFsdWUoKS5sZW5ndGgoKSkgOiBlbXB0eUF0b20oKTsKKyAg
ICByZXR1cm4gbV9sYW5ndWFnZTsKK30KKworaW50IFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6dHJh
Y2tJbmRleCgpIGNvbnN0Cit7CisgICAgaWYgKG1fdHJhY2sudHJhY2tfbnVtYmVyLmlzX3ByZXNl
bnQoKSkKKyAgICAgICAgcmV0dXJuIG1fdHJhY2sudHJhY2tfbnVtYmVyLnZhbHVlKCk7CisgICAg
cmV0dXJuIDA7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNr
UHJpdmF0ZVdlYk0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Zp
ZGVvVHJhY2tQcml2YXRlV2ViTS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3NjdiOTFkOTZlZmVhZjQ5ZjNjNzkw
YzcyZDYzYTJmZDgxNTNiODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaApAQCAtMCwwICsxLDU1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNF
KQorCisjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3ZWJtL2RvbV90
eXBlcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZpZGVvVHJhY2tQcml2YXRl
V2ViTSBmaW5hbCA6IHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZSB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZVdlYk0+IGNyZWF0ZSh3ZWJtOjpUcmFja0VudHJ5JiYp
OworICAgIHZpcnR1YWwgflZpZGVvVHJhY2tQcml2YXRlV2ViTSgpID0gZGVmYXVsdDsKKworICAg
IEF0b21TdHJpbmcgaWQoKSBjb25zdCBmaW5hbDsKKyAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29u
c3QgZmluYWw7CisgICAgQXRvbVN0cmluZyBsYW5ndWFnZSgpIGNvbnN0IGZpbmFsOworICAgIGlu
dCB0cmFja0luZGV4KCkgY29uc3QgZmluYWw7CisKK3ByaXZhdGU6CisgICAgVmlkZW9UcmFja1By
aXZhdGVXZWJNKHdlYm06OlRyYWNrRW50cnkmJik7CisgICAgd2VibTo6VHJhY2tFbnRyeSBtX3Ry
YWNrOworICAgIG11dGFibGUgQXRvbVN0cmluZyBtX3RyYWNrSUQ7CisgICAgbXV0YWJsZSBBdG9t
U3RyaW5nIG1fbGFiZWw7CisgICAgbXV0YWJsZSBBdG9tU3RyaW5nIG1fbGFuZ3VhZ2U7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlByZWZlcmVuY2VzLnlhbWwKaW5kZXggZTA0Y2FkY2EyZGM1YThjNDE5YjcyZmExOWVlNzNm
ZTczYTEwYjYwMS4uNDJiMDQ5NzA5YjNmZTA4ZWEzMGZjNWRkOTZmNjgxYmY2YzdjMTYyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCkBAIC02NjgsNiArNjY4LDE1
IEBAIFZQOURlY29kZXJFbmFibGVkOgogICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJFbmFi
bGUgVlA5IGRlY29kZXIiCiAgIGNhdGVnb3J5OiBleHBlcmltZW50YWwKIAorV2ViTVBhcnNlckVu
YWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAgZGVmYXVsdFZhbHVlOiBmYWxzZQorICB3ZWJjb3JlQmlu
ZGluZzogUnVudGltZUVuYWJsZWRGZWF0dXJlcworICBodW1hblJlYWRhYmxlTmFtZTogIldlYk0g
TVNFIHBhcnNlciIKKyAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIFdlYk0gTVNF
IHBhcnNlciIKKyAgY2F0ZWdvcnk6IGV4cGVyaW1lbnRhbAorICBjb25kaXRpb246IEVOQUJMRShN
RURJQV9TT1VSQ0UpCisKIFVzZUxlZ2FjeVRleHRBbGlnblBvc2l0aW9uZWRFbGVtZW50QmVoYXZp
b3I6CiAgIHR5cGU6IGJvb2wKICAgZGVmYXVsdFZhbHVlOiBmYWxzZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404673</attachid>
            <date>2020-07-19 09:09:56 -0700</date>
            <delta_ts>2020-07-19 23:29:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214529-20200719090955.patch</filename>
            <type>text/plain</type>
            <size>139354</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBhY2ZhNzFkMTE0MWY2M2Q0ZWYxMGJkMmY2NjE5YzcxYTNhNWU4ZTQxLi41MGE1
MmNkNTIxZDljMGEzYzQ3N2U5MzhkZTc5MmNiZDdiNjVlYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNy0xOSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBleHBlcmltZW50
YWwgTVNFIFdlYk0gcGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTQ1MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUd28gZHJpdmUtYnkgZml4ZXM6IEFkZCBzb21lIG1pc3NpbmcgZXhwb3J0IHRv
IHRoZSBsaWJ3ZWJydGMuKi5leHAgZmlsZXMsIGFuZCBleHBvcnQgdGhlIHdlYm0gaGVhZGVycwor
ICAgICAgICBhcyBQcml2YXRlLCBub3QgUHVibGljLCBzbyB0aGV5J3JlIHB1dCBpbiB0aGUgY29y
cmVjdCBkaXJlY3RvcnkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9T
LmV4cDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBsaWJ3
ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wNy0xNyAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldml3ZWQgYnVpbGQgZml4IGFm
dGVyIHIyNjU1OTI7IHJhdGhlciB0aGFuIHJlbW92ZSB0aGUgZGVhZCBjb2RlIGNhdXNpbmcgbGlu
ayBlcnJvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMzdjZDRhNGM4YzYwYmM0ZjViOTkxZGQyOGJkMDIxOThj
ZjQzMmE4Li43Mzc4Mjc4MTVlNDIyYzVlNTllMGIxZWE0ZGU2MTA5YmJhNDlhNGEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQ0IEBACisyMDIwLTA3LTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIGV4cGVyaW1lbnRhbCBNU0UgV2ViTSBw
YXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NDUyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgeWV0IHBhcnNlIGFjdHVhbCBtZWRpYSBzYW1wbGVz
OyBhcyBvZiB5ZXQgaXQgb25seSBwYXJzZXMgYXVkaW8gYW5kIHZpZGVvCisgICAgICAgIHRyYWNr
IGluZm9ybWF0aW9uLiBNZWRpYSBzYW1wbGUgcGFyc2luZyBpcyB1cGNvbWluZy4KKworICAgICAg
ICBBZGQgYW4gZXhwZXJpbWVudGFsIE1TRSBXZWJNIHBhcnNlciB0byBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy4gVGhpcyB3aWxsIHJlcXVpcmUgZXh0ZW5zaXZlIHJlZmFjdG9yaW5nCisgICAg
ICAgIG9mIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLCB0byBleHRyYWN0IG91dCB0aGUgcGFy
c2VyIGludG8gYSBuZXcsIHZpcnR1YWxpemVkIGNsYXNzLiBUaGlzIG5ldyBwYXJzZXIgY2FuCisg
ICAgICAgIHRha2UgYWR2YW50YWdlIG9mIG5ldyBDKys+MTEgZmVhdHVyZXMgc3VjaCBhcyBsYW1i
ZGFzIHRvIGNsZWFuIHVwIHNvbWUgcHJvYmxlbWF0aWMgZXhpc3RpbmcgY29kZS4gVGhlIG5ldwor
ICAgICAgICB2aXJ0dWFsaXplZCBTb3VyY2VCdWZmZXJQYXJzZXIgY2xhc3MgdXNlcyBwYXNzZWQt
aW4gRnVuY3Rpb24gb2JqZWN0cywgcmF0aGVyIHRoYW4gcHVyZS12aXJ0dWFsIENsaWVudCBjbGFz
c2VzCisgICAgICAgIHRvIG5vdGlmeSBpdCdzIHBhcmVudCBvYmplY3Qgd2hlbiB0aGUgcGFyc2Vy
IGVuY291bnRlcnMgaW5pdGlhbGl6YXRpb24tIG9yIG1lZGlhLWRhdGEuCisKKyAgICAgICAgQmVj
YXVzZSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyB3aWxsIG5vdyBoYXZlIHRvIGRlYWwgd2l0
aCBBdWRpb1RyYWNrUHJpdmF0ZSBhbmQgVmlkZW9UcmFja1ByaXZhdGUgb2JqZWN0cworICAgICAg
ICB0aGF0IGFyZSBub3QgbmVjZXNzYXJpbHkgQXVkaW8tIGFuZCBWaWRlb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyBzdWJjbGFzc2VzLCBtb3ZlIHRob3NlIGNsYXNzZXMgbm90aWZpY2F0
aW9uCisgICAgICAgIGZlYXR1cmVzIHVwIGludG8gQXVkaW8tIGFuZCBWaWRlb1RyYWNrUHJpdmF0
ZSwgYWdhaW4gdXNpbmcgYSBGdW5jdGlvbiBvYmplY3QgcmF0aGVyIHRoYW4gYSBjbGllbnQgY2xh
c3MuCisKKyAgICAgICAgQWRkIGEgbmV3IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0gYW5kIGFzc29j
aWF0ZWQgQXVkaW9UcmFja1ByaXZhdGVXZWJNIGFuZCBWaWRlb1RyYWNrUHJpdmF0ZVdlYm0gY2xh
c2Vzcywgd2hpY2gKKyAgICAgICAgdXNlIGxpYndlYm0gdmlhIGxpYndlYnJ0YyB0byBwYXJzZSBh
cHBlbmRlZCBidWZmZXJzLgorCisgICAgICAgIFRoaXMgZWFybHkgaW1wbGVtZW50YXRpb24gaXMg
bm90IHlldCBhYmxlIHRvIHBhc3MgdGhlIFdlYk0gV1BUIG1lZGlhLXNvdXJjZS8gdGVzdHMsIGFz
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDCisgICAgICAgIHdpbGwgb25seSBjYXVzZSBhICJy
ZXNpemUiIGV2ZW50IHRvIGJlIGZpcmVkIHdoZW4gYSBNZWRpYVNhbXBsZSBpcyBlbnF1ZXVlZCBv
ciBkZWNvZGluZy4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2V0V2ViTVBhcnNlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6d2ViTVBhcnNlckVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Ry
YWNrUHJpdmF0ZTo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJp
dmF0ZTo6c2V0RW5hYmxlZENoYW5nZWRDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQ
cml2YXRlOjpzZXRTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0
ZTo6c2V0U2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0RW5hYmxlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OnN1cHBvcnRzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5oOiBBZGRlZC4KKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbTogQWRkZWQu
CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIGluaXRXaXRoUGFyc2Vy
OnBhcmVudDpdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgZGVh
bGxvY10pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBpbnZhbGlk
YXRlXSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbURh
dGFQYXJzZXI6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldDpdKToKKyAgICAgICAgKC1bV2ViQVZT
dHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3RyZWFtRGF0YVBhcnNlcjpkaWRQYXJzZVN0cmVhbURh
dGFBc0Fzc2V0OndpdGhEaXNjb250aW51aXR5Ol0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURh
dGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0
YVdpdGhFcnJvcjpdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIg
c3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlTWVkaWFEYXRhOmZvclRyYWNrSUQ6bWVkaWFUeXBl
OmZsYWdzOl0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJl
YW1EYXRhUGFyc2VyV2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0
YTpmb3JUcmFja0lEOl0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5l
ciBzdHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YTpmb3JUcmFja0lEOl0pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakM6OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OnNob3VsZFByb3Zp
ZGVNZWRpYWRhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakM6OnJlc2V0UGFyc2VyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldCk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRGYWlsVG9QYXJzZVN0cmVh
bURhdGFXaXRoRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElu
aXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjp+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRFbmNv
dW50ZXJFcnJvckR1cmluZ1BhcnNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRL
ZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmRDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpyZXNldFBhcnNlclN0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkZXN0cm95UGFyc2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjbGVhclRyYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFu
Z2VTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpwYXJzZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmF0dGVtcHRUb0RlY3J5cHQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGVXZWJNOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
a1ByaXZhdGVXZWJNOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk0pOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9UcmFja1ByaXZhdGVXZWJNOjppZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1RyYWNrUHJpdmF0ZVdlYk06OmxhYmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
VHJhY2tQcml2YXRlV2ViTTo6bGFuZ3VhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGVXZWJNOjp0cmFja0luZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OmlzQ29udGVudFR5cGVTdXBw
b3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0RGlkUGFyc2VJ
bml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXI6OnNldERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0RGlkUHJvdmlkZU1lZGlhRGF0
YUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0V2ls
bFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OnNldERpZFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNXZWJtUGFyc2VyQXZhaWxhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OnN1cHBvcnRlZFdlYk1Db2RlY3MpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmFwcGVuZERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6Zmx1c2hQZW5k
aW5nTWVkaWFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lE
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnJlc2V0UGFyc2Vy
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FbGVt
ZW50QmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25F
Ym1sKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uU2VnbWVu
dEJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uSW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkNsdXN0ZXJC
ZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblRyYWNr
RW50cnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpzdGF0dXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6dHlwZSBjb25zdCk6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
dmFsaWRhdGVWUFBhcmFtZXRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFja1ByaXZhdGVXZWJNOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFj
a1ByaXZhdGVXZWJNOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk0pOgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFja1ByaXZhdGVXZWJNOjppZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b1RyYWNrUHJpdmF0ZVdlYk06OmxhYmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
VHJhY2tQcml2YXRlV2ViTTo6bGFuZ3VhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFja1ByaXZhdGVXZWJNOjp0cmFja0luZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaDogQWRkZWQuCisKIDIwMjAt
MDctMTggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIGZpeCBidWlsZCB3YXJuaW5ncyBpbiB0aGUgV2ViWFIgYmFja2VuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAxM2M1YjFlYmE4MzNmYjdhNmQxNjRjN2NhOTdhNTBkNDUxYTU5NDMwLi40M2I4ODc4
OTFhOWNiYzgyMDI3MzIxMmU5ZDc2NGM2NjFmYTc2NDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDIwLTA3LTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAg
ICAgIFtDb2NvYV0gQWRkIGV4cGVyaW1lbnRhbCBNU0UgV2ViTSBwYXJzZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDUyOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhbiBFeHBlcmltZW50YWwg
c2V0dGluZyB0byBlbmFibGUgdGhlIE1TRSBXZWJNIHBhcnNlciAob2ZmIGJ5IGRlZmF1bHQpLgor
CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisKIDIwMjAtMDQtMzAgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIGRhdGEgY29w
aWVzIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgY3VzdG9tIFVSTCBzY2hlbWUgaGFuZGxlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xp
YndlYnJ0Yy5pT1MuZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRp
b25zL2xpYndlYnJ0Yy5pT1MuZXhwCmluZGV4IGQwNGE5MTk2ODZlOWNjODk2N2E4YWFkMDQ2OWM2
ODU1NDY1NzI3OWIuLmE3YmNjN2I1MTRjM2JlNjNhYWRjYTBiMjEyNzFmODE1ZDkwNTQzMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3
ZWJydGMuaU9TLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJh
dGlvbnMvbGlid2VicnRjLmlPUy5leHAKQEAgLTI4MCwxMyArMjgwLDIwIEBAIF9fWlRWTjR3ZWJt
MTJCdWZmZXJSZWFkZXJFCiBfX1pUVk40d2VibThDYWxsYmFja0UKIF9fWk40d2VibThDYWxsYmFj
azEwT25CbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRQogX19aTjR3
ZWJtOENhbGxiYWNrMTBPbkN1ZVBvaW50RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU184Q3Vl
UG9pbnRFCitfX1pONHdlYm04Q2FsbGJhY2sxMk9uQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1l
dGFkYXRhRVJLTlNfNUJsb2NrRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPbkNs
dXN0ZXJFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzdDbHVzdGVyRQogX19aTjR3ZWJt
OENhbGxiYWNrMTJPblNlZ21lbnRFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUUKIF9fWk40d2Vi
bThDYWxsYmFjazEyT25UcmFja0VudHJ5RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMFRy
YWNrRW50cnlFCitfX1pONHdlYm04Q2FsbGJhY2sxNE9uQ2x1c3RlckJlZ2luRVJLTlNfMTVFbGVt
ZW50TWV0YWRhdGFFUktOU183Q2x1c3RlckVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFj
azE0T25FZGl0aW9uRW50cnlFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEyRWRpdGlvbkVu
dHJ5RQorX19aTjR3ZWJtOENhbGxiYWNrMTRPbkVsZW1lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1l
dGFkYXRhRVBOU182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrMTRPblNlZ21lbnRCZWdpbkVS
S05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTVP
bkJsb2NrR3JvdXBFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEwQmxvY2tHcm91cEUK
IF9fWk40d2VibThDYWxsYmFjazE2T25TaW1wbGVCbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFk
YXRhRVJLTlNfMTFTaW1wbGVCbG9ja0UKIF9fWk40d2VibThDYWxsYmFjazE2T25Vbmtub3duRWxl
bWVudEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182UmVhZGVyRVB5CitfX1pONHdlYm04Q2Fs
bGJhY2sxN09uQmxvY2tHcm91cEJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rp
b25FCitfX1pONHdlYm04Q2FsbGJhY2sxOE9uU2ltcGxlQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVu
dE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVCbG9ja0VQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxs
YmFjazRTa2lwRVBOU182UmVhZGVyRVB5CiBfX1pONHdlYm04Q2FsbGJhY2s1T25UYWdFUktOU18x
NUVsZW1lbnRNZXRhZGF0YUVSS05TXzNUYWdFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25FYm1sRVJL
TlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU180RWJtbEUKIF9fWk40d2VibThDYWxsYmFjazZPbklu
Zm9FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzRJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhw
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5p
T1NzaW0uZXhwCmluZGV4IGQwNGE5MTk2ODZlOWNjODk2N2E4YWFkMDQ2OWM2ODU1NDY1NzI3OWIu
LmE3YmNjN2I1MTRjM2JlNjNhYWRjYTBiMjEyNzFmODE1ZDkwNTQzMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2lt
LmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGli
d2VicnRjLmlPU3NpbS5leHAKQEAgLTI4MCwxMyArMjgwLDIwIEBAIF9fWlRWTjR3ZWJtMTJCdWZm
ZXJSZWFkZXJFCiBfX1pUVk40d2VibThDYWxsYmFja0UKIF9fWk40d2VibThDYWxsYmFjazEwT25C
bG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRQogX19aTjR3ZWJtOENh
bGxiYWNrMTBPbkN1ZVBvaW50RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU184Q3VlUG9pbnRF
CitfX1pONHdlYm04Q2FsbGJhY2sxMk9uQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRh
RVJLTlNfNUJsb2NrRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPbkNsdXN0ZXJF
bmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzdDbHVzdGVyRQogX19aTjR3ZWJtOENhbGxi
YWNrMTJPblNlZ21lbnRFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUUKIF9fWk40d2VibThDYWxs
YmFjazEyT25UcmFja0VudHJ5RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMFRyYWNrRW50
cnlFCitfX1pONHdlYm04Q2FsbGJhY2sxNE9uQ2x1c3RlckJlZ2luRVJLTlNfMTVFbGVtZW50TWV0
YWRhdGFFUktOU183Q2x1c3RlckVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFjazE0T25F
ZGl0aW9uRW50cnlFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEyRWRpdGlvbkVudHJ5RQor
X19aTjR3ZWJtOENhbGxiYWNrMTRPbkVsZW1lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRh
RVBOU182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrMTRPblNlZ21lbnRCZWdpbkVSS05TXzE1
RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTVPbkJsb2Nr
R3JvdXBFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEwQmxvY2tHcm91cEUKIF9fWk40
d2VibThDYWxsYmFjazE2T25TaW1wbGVCbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJL
TlNfMTFTaW1wbGVCbG9ja0UKIF9fWk40d2VibThDYWxsYmFjazE2T25Vbmtub3duRWxlbWVudEVS
S05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182UmVhZGVyRVB5CitfX1pONHdlYm04Q2FsbGJhY2sx
N09uQmxvY2tHcm91cEJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rpb25FCitf
X1pONHdlYm04Q2FsbGJhY2sxOE9uU2ltcGxlQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFk
YXRhRVJLTlNfMTFTaW1wbGVCbG9ja0VQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxsYmFjazRT
a2lwRVBOU182UmVhZGVyRVB5CiBfX1pONHdlYm04Q2FsbGJhY2s1T25UYWdFUktOU18xNUVsZW1l
bnRNZXRhZGF0YUVSS05TXzNUYWdFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25FYm1sRVJLTlNfMTVF
bGVtZW50TWV0YWRhdGFFUktOU180RWJtbEUKIF9fWk40d2VibThDYWxsYmFjazZPbkluZm9FUktO
U18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzRJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCmlu
ZGV4IDhkODViNWI4YjM3NTRhZGRlZmRlN2MyNGYyZjIwYTQ2NTgzNjZhY2QuLmY4Y2M5MTMxNmJj
ZGMwOTYwNTgyYjNmM2NhNDE2NWIyZWFjMjcyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAK
QEAgLTI3OCwxMyArMjc4LDIwIEBAIF9fWlRWTjR3ZWJtMTJCdWZmZXJSZWFkZXJFCiBfX1pUVk40
d2VibThDYWxsYmFja0UKIF9fWk40d2VibThDYWxsYmFjazEwT25CbG9ja0VuZEVSS05TXzE1RWxl
bWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRQogX19aTjR3ZWJtOENhbGxiYWNrMTBPbkN1ZVBvaW50
RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU184Q3VlUG9pbnRFCitfX1pONHdlYm04Q2FsbGJh
Y2sxMk9uQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRVBOU182
QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPbkNsdXN0ZXJFbmRFUktOU18xNUVsZW1lbnRN
ZXRhZGF0YUVSS05TXzdDbHVzdGVyRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPblNlZ21lbnRFbmRF
UktOU18xNUVsZW1lbnRNZXRhZGF0YUUKIF9fWk40d2VibThDYWxsYmFjazEyT25UcmFja0VudHJ5
RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMFRyYWNrRW50cnlFCitfX1pONHdlYm04Q2Fs
bGJhY2sxNE9uQ2x1c3RlckJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU183Q2x1c3Rl
ckVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFjazE0T25FZGl0aW9uRW50cnlFUktOU18x
NUVsZW1lbnRNZXRhZGF0YUVSS05TXzEyRWRpdGlvbkVudHJ5RQorX19aTjR3ZWJtOENhbGxiYWNr
MTRPbkVsZW1lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQorX19a
TjR3ZWJtOENhbGxiYWNrMTRPblNlZ21lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBO
U182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTVPbkJsb2NrR3JvdXBFbmRFUktOU18xNUVs
ZW1lbnRNZXRhZGF0YUVSS05TXzEwQmxvY2tHcm91cEUKIF9fWk40d2VibThDYWxsYmFjazE2T25T
aW1wbGVCbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVCbG9ja0UK
IF9fWk40d2VibThDYWxsYmFjazE2T25Vbmtub3duRWxlbWVudEVSS05TXzE1RWxlbWVudE1ldGFk
YXRhRVBOU182UmVhZGVyRVB5CitfX1pONHdlYm04Q2FsbGJhY2sxN09uQmxvY2tHcm91cEJlZ2lu
RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rpb25FCitfX1pONHdlYm04Q2FsbGJhY2sx
OE9uU2ltcGxlQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVC
bG9ja0VQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxsYmFjazRTa2lwRVBOU182UmVhZGVyRVB5
CiBfX1pONHdlYm04Q2FsbGJhY2s1T25UYWdFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzNU
YWdFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25FYm1sRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktO
U180RWJtbEUKIF9fWk40d2VibThDYWxsYmFjazZPbkluZm9FUktOU18xNUVsZW1lbnRNZXRhZGF0
YUVSS05TXzRJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL2xp
YndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRkYTczYTFi
ZmI0MTAzYTFmN2FhNDE0MzQ5ZmUwYWZhZWJjMGM4YWEuLjIyNjgyYmM1Yzk5NjY2Yjg3ZGE0ZDFk
MWQwZjZmNmI2NmFmZjBiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4
NTMsMTYgKzM4NTMsMTYgQEAKIAkJNUNGRDUzOTIxRTRCRDNBMzAwNDgyOTA4IC8qIHJvd19uZW9u
NjQuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZE
NTM4QTFFNEJEM0EzMDA0ODI5MDggLyogcm93X25lb242NC5jYyAqLzsgfTsKIAkJNUNGRDUzOTMx
RTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb24uY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZENTM4QjFFNEJEM0EzMDA0ODI5MDggLyogc2NhbGVf
bmVvbi5jYyAqLzsgfTsKIAkJNUNGRDUzOTQxRTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb242
NC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRkQ1
MzhDMUU0QkQzQTMwMDQ4MjkwOCAvKiBzY2FsZV9uZW9uNjQuY2MgKi87IH07Ci0JCUNERUJCNEFD
MjRDMDE5OUQwMEFEQkQ0NCAvKiB3ZWJtX3BhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MDgyNEMwMTkxQTAwQURCRDQ0IC8qIHdlYm1f
cGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9Owot
CQlDREVCQjRBRDI0QzAxOTlEMDBBREJENDQgLyogYnVmZmVyX3JlYWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MEQyNEMwMTkxQTAwQURC
RDQ0IC8qIGJ1ZmZlcl9yZWFkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07Ci0JCUNERUJCNEFFMjRDMDE5OUQwMEFEQkQ0NCAvKiBpZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MEEyNEMwMTkxQTAw
QURCRDQ0IC8qIGlkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9
OyB9OwotCQlDREVCQjRBRjI0QzAxOTlEMDBBREJENDQgLyogaXN0cmVhbV9yZWFkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDA5MjRDMDE5
MUEwMEFEQkQ0NCAvKiBpc3RyZWFtX3JlYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjAyNEMwMTk5RDAwQURCRDQ0IC8qIGRvbV90
eXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RF
QkI0MEIyNEMwMTkxQTAwQURCRDQ0IC8qIGRvbV90eXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjEyNEMwMTk5RDAwQURCRDQ0IC8q
IGVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENERUJCNDBDMjRDMDE5MUEwMEFEQkQ0NCAvKiBlbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCMjI0QzAxOTlEMDBBREJENDQg
Lyogc3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREVCQjQwNjI0QzAxOTFBMDBBREJENDQgLyogc3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCMzI0QzAxOTlEMDBBREJENDQg
LyogcmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREVCQjQwNTI0QzAxOTFBMDBBREJENDQgLyogcmVhZGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCNDI0QzAxOTlEMDBBREJENDQg
LyogZmlsZV9yZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENERUJCNDA3MjRDMDE5MUEwMEFEQkQ0NCAvKiBmaWxlX3JlYWRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjUyNEMwMTk5
RDAwQURCRDQ0IC8qIGNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREVCQjQwRTI0QzAxOTFBMDBBREJENDQgLyogY2FsbGJhY2suaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCUNERUJCNEFDMjRD
MDE5OUQwMEFEQkQ0NCAvKiB3ZWJtX3BhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MDgyNEMwMTkxQTAwQURCRDQ0IC8qIHdlYm1fcGFy
c2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
Q0RFQkI0QUQyNEMwMTk5RDAwQURCRDQ0IC8qIGJ1ZmZlcl9yZWFkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDBEMjRDMDE5MUEwMEFEQkQ0
NCAvKiBidWZmZXJfcmVhZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQ0RFQkI0QUUyNEMwMTk5RDAwQURCRDQ0IC8qIGlkLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwQTI0QzAxOTFBMDBB
REJENDQgLyogaWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlDREVCQjRBRjI0QzAxOTlEMDBBREJENDQgLyogaXN0cmVhbV9yZWFkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDA5MjRDMDE5
MUEwMEFEQkQ0NCAvKiBpc3RyZWFtX3JlYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUNERUJCNEIwMjRDMDE5OUQwMEFEQkQ0NCAvKiBkb21f
dHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
RUJCNDBCMjRDMDE5MUEwMEFEQkQ0NCAvKiBkb21fdHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREVCQjRCMTI0QzAxOTlEMDBBREJENDQg
LyogZWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RFQkI0MEMyNEMwMTkxQTAwQURCRDQ0IC8qIGVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREVCQjRCMjI0QzAxOTlEMDBBREJE
NDQgLyogc3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREVCQjQwNjI0QzAxOTFBMDBBREJENDQgLyogc3RhdHVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RFQkI0QjMyNEMwMTk5RDAwQURC
RDQ0IC8qIHJlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RFQkI0MDUyNEMwMTkxQTAwQURCRDQ0IC8qIHJlYWRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNERUJCNEI0MjRDMDE5OUQwMEFE
QkQ0NCAvKiBmaWxlX3JlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RFQkI0MDcyNEMwMTkxQTAwQURCRDQ0IC8qIGZpbGVfcmVhZGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RFQkI0QjUy
NEMwMTk5RDAwQURCRDQ0IC8qIGNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwRTI0QzAxOTFBMDBBREJENDQgLyogY2FsbGJhY2su
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDREVC
QjRCNjI0QzAxOUM0MDBBREJENDQgLyogdW5rbm93bl9wYXJzZXIuY2MgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQ2NDI0QzAxOTFBMDBBREJENDQg
LyogdW5rbm93bl9wYXJzZXIuY2MgKi87IH07CiAJCUNERUJCNEI3MjRDMDE5QzQwMEFEQkQ0NCAv
KiBtYXN0ZXJfcGFyc2VyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RFQkI0NkYyNEMwMTkxQTAwQURCRDQ0IC8qIG1hc3Rlcl9wYXJzZXIuY2MgKi87
IH07CiAJCUNERUJCNEI4MjRDMDE5QzQwMEFEQkQ0NCAvKiBibG9ja19wYXJzZXIuY2MgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQ3NjI0QzAxOTFB
MDBBREJENDQgLyogYmxvY2tfcGFyc2VyLmNjICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggMWQ3ZjIwOTg2N2MxZDRlMGE0Mjc0Njk3NjU1ZjhkMWIxMzZkYWQwZS4uZGMzZmYyNTg0
MWE5MjUzM2JlZThkMDU4MTYxOGFiMjBjNzBjOTlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CkBAIC0yOTEsNiArMjkxLDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIEBuby0KIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbSBAbm8tdW5pZnkK
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBAbm8tdW5pZnkKK3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gQG5vLXVuaWZ5
CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9i
akMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRl
b1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gQG5v
LXVuaWZ5CkBAIC0zMzMsNiArMzM0LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNH
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlv
VHJhY2tQcml2YXRlV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2Eu
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zsb2F0UmVjdENvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTM0OCw2ICszNTAsOCBAQCBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVj
dENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29h
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbQpAQCAtMzU2
LDYgKzM2MCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFz
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24u
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYkdQVUxheWVyLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1Ry
YWNrUHJpdmF0ZVdlYk0uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vz
c2lvblZULm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ODZmY2RlYzA1
ODYwMjIyYmYwMzQwMmE3MTZhZDJmNDZiMDBjNTc4Li44MmZkZWVjZGVkOGJhYjZmYjA5ZWIyZTQy
ZDY2NmVhYTQyMjUyZDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MjY3LDYgKzQyNjcsNyBAQAogCQlDREY2NUNDQTE0NUI0
NDg4MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY2NUNDOTE0NUI0M0E3MDBDNEM3QUEg
LyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RGNzQ4M0YxOEZFQkNFQzAwMDZFQ0MwIC8qIEdyaWRQ
b3NpdGlvbnNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RGNzQ4M0QxOEZFQkNFQzAwMDZFQ0MwIC8qIEdyaWRQb3NpdGlvbnNSZXNvbHZl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNE
Rjc1NkEzMjE1QzI5RTkwMEVGQ0I1MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNzU2QTEyMTVD
MjlFOTAwRUZDQjUwIC8qIEpTTWVkaWFLZXlFbmNyeXB0aW9uU2NoZW1lLmggKi87IH07CisJCUNE
Rjk5NEZEMjRDMTVGRTMwMDJFQTA2MiAvKiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGOTk0RkIyNEMx
MkE2QTAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gKi87IH07CiAJCUNE
RkMzNjA2MThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERkMzNjA0MThDQTYxQzIw
MDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTA1N0ZBNjEyMjA3MzExMDBBNDc2RDUgLyog
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRTA1N0ZBNDEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
MDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKQEAgLTE0MTY2LDYgKzE0MTY3LDgg
QEAKIAkJQ0Q4QzZDMjkyMkZEREE5MTAwQTcyMEFCIC8qIEpTUmVtb3RlUGxheWJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNSZW1vdGVQbGF5YmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDhEMzA2RDIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDRE1Mb2dnaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOEQzMDZF
MjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENE
TUxvZ2dpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDhGNjY3MDI0QzBG
MjA4MDAwQzQyMUMgLyogU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0Q4RjY2NzIyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDkyRjUwRjIyNjBGRkVFMDBGODdCQjMgLyogRG9jdW1lbnRGdWxs
c2NyZWVuLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBEb2N1bWVudEZ1bGxzY3JlZW4uaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDkyRjUxMDIyNjBGRkVFMDBGODdCQjMgLyogRG9jdW1lbnRGdWxsc2Ny
ZWVuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50RnVsbHNjcmVlbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDkyRjUxNjIyNjEwMzgyMDBGODdCQjMgLyogRnVsbHNjcmVlbk1h
bmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVsbHNjcmVlbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MzQ2LDYgKzE0MzQ5LDggQEAKIAkJQ0RFOEI1RUYxQTY5Nzc4
QjAwQjRCNjZBIC8qIExlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTdDODIxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxT
Y3JlZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyRnVsbFNjcmVl
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBN0M4MzEyNzYyMzA0MDBCODQ2
REQgLyogUmVuZGVyRnVsbFNjcmVlbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW5kZXJGdWxsU2NyZWVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RFQjNENzIyNEM0MUE2RTAwMUZCRUVGIC8qIFNvdXJjZUJ1ZmZlclBhcnNlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTb3VyY2VCdWZmZXJQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREVCM0Q3MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFy
c2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZUJ1ZmZlclBhcnNlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDREVDQTg5ODFFREY0NDdEMDBEQ0IwOEIgLyogQVZBc3NldFRyYWNr
VXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVZBc3NldFRyYWNrVXRpbGl0aWVz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVDQTg5OTFFREY0NDdEMDBEQ0Iw
OEIgLyogQVZBc3NldFRyYWNrVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFWQXNzZXRUcmFj
a1V0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVFMzkzNjE3OTc0
MjU5MDAxRDc1ODAgLyogUHVibGljVVJMTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQdWJsaWNVUkxNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE0Mzg0LDYgKzE0Mzg5LDEyIEBACiAJCUNERjc1NjlFMjE1QzI4NUUwMEVG
Q0I1MCAvKiBNZWRpYUtleUVuY3J5cHRpb25TY2hlbWUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhS2V5RW5jcnlw
dGlvblNjaGVtZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERjc1NkEwMjE1
QzI5RTgwMEVGQ0I1MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERjc1NkExMjE1QzI5RTkwMEVGQ0I1
MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREY5OTRGQTI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjk5NEZCMjRDMTJBNkEwMDJFQTA2MiAv
KiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RGOTk0RkUyNEMyODEzNjAwMkVBMDYyIC8qIFZpZGVvVHJhY2tQcml2YXRlV2ViTS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RGOTk0RkYyNEMyODEzNjAwMkVBMDYyIC8qIFZpZGVvVHJhY2tQcml2YXRlV2Vi
TS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY5OTUwMDI0QzI4MTQ5MDAyRUEwNjIgLyogQXVk
aW9UcmFja1ByaXZhdGVXZWJNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRlV2Vi
TS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY5OTUwMTI0QzI4MTQ5MDAyRUEw
NjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlv
VHJhY2tQcml2YXRlV2ViTS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERkMz
NjAxMThDQTYxNjMwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERkMzNjAyMThDQTYxNjMwMDI2RTU2RiAvKiBS
ZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNERkMzNjAzMThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlz
dGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ29t
bWFuZExpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1ODcxLDYg
KzI1ODgyLDggQEAKIAkJQjUzMjBENjgxMjJBMjRFOTAwMkQxNDQwIC8qIGNvY29hICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDREY5OTUwMTI0QzI4MTQ5
MDAyRUEwNjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcCAqLywKKwkJCQlDREY5OTUwMDI0
QzI4MTQ5MDAyRUEwNjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmggKi8sCiAJCQkJRjQ4RDJB
QTMyMTU5NzQwRDAwQzY3NTJCIC8qIENvbG9yQ29jb2EuaCAqLywKIAkJCQlGNDhEMkFBNDIxNTk3
NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5tbSAqLywKIAkJCQlCMjc1MzU0QzBCMDUzODE0MDAy
Q0U2NEYgLyogRmxvYXRSZWN0Q29jb2EubW0gKi8sCkBAIC0yNTg5MiwxMCArMjU5MDUsMTYgQEAK
IAkJCQlBRDlGRjZFMDE5MDgzOTFEMDAzQjYxRTAgLyogSU9TdXJmYWNlUG9vbENvY29hLm1tICov
LAogCQkJCUNEQzQ4QUM4MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuY3BwICovLAogCQkJCUNEQzQ4QUM3MjE0OUNGMkEwMDI0RkQ1OSAvKiBN
ZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuaCAqLywKKwkJCQlDREVCM0Q3MjI0
QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmNwcCAqLywKKwkJCQlDREVCM0Q3
MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmggKi8sCisJCQkJQ0Q4RjY2
NzAyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwICovLAorCQkJ
CUNEOEY2NjcyMjRDMEYyMDgwMDBDNDIxQyAvKiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmggKi8s
CiAJCQkJRTRFOEI0RUQyMTZCNzlGNDAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0LmNwcCAqLywKIAkJCQlFNEU4QjRFQTIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQuaCAqLywKIAkJCQk1MjY3MjRGMjFDQjJGREY2MDA3NTk3NEQgLyogVGV4
dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5oICovLAogCQkJCTUyNjcyNEYxMUNCMkZERjYwMDc1
OTc0RCAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tICovLAorCQkJCUNERjk5NEZG
MjRDMjgxMzYwMDJFQTA2MiAvKiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwICovLAorCQkJCUNE
Rjk5NEZFMjRDMjgxMzYwMDJFQTA2MiAvKiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaCAqLywKIAkJ
CQlDRDZGRTVCNzI0QkNFNjQ1MDA5RkNEQTQgLyogVlA5VXRpbGl0aWVzQ29jb2EuaCAqLywKIAkJ
CQlDRDZGRTVCODI0QkNFNjQ1MDA5RkNEQTQgLyogVlA5VXRpbGl0aWVzQ29jb2EubW0gKi8sCiAJ
CQkJMkQzRUY0NDQxOTE3OTE1QzAwMDM0MTg0IC8qIFdlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJE
ZWxlZ2F0ZS5oICovLApAQCAtMjczODgsNiArMjc0MDcsOCBAQAogCQkJCUNEQzhCNUE1MTgwNDc0
RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmggKi8sCiAJCQkJQ0RDOEI1
QTQxODA0NzRGNzAwMTZFNjg1IC8qIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gKi8sCiAJ
CQkJN0EyOUY1NzExOEM2OTUxNDAwNEQwRjgxIC8qIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuaCAqLywKKwkJCQlDREY5OTRGQTI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5oICovLAorCQkJCUNERjk5NEZCMjRDMTJBNkEwMDJFQTA2MiAvKiBTb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLm1tICovLAogCQkJCUNEQzhCNUE5MTgwNDdGRjEwMDE2RTY4NSAv
KiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oICovLAogCQkJCUNEQzhCNUE4MTgwNDdGRjEw
MDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSAqLywKIAkJCQk1MkQ1QTE4
RTFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmggKi8sCkBAIC0zNDU5
OCw2ICszNDYxOSw3IEBACiAJCQkJMjZBQTBGOUUxOEQyQTE4QjAwNDE5MzgxIC8qIFNlbGVjdG9y
UHNldWRvRWxlbWVudFR5cGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NENThERkQxRjk1
NjVBODAwMTEyNzkxIC8qIFNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxMEE4
MUY5MDIyQTQwMDUxMDJDRSAvKiBTb2Z0TGlua0xpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQ0RGOTk0RkQyNEMxNUZFMzAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDREM4QjVBQTE4MDQ3RkYxMDAxNkU2ODUgLyogU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBODMzQzdDQTBBMkNG
MDZCMDBENTc2NjQgLyogU1ZHTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzE2OTJERDIy
M0QyM0FCRDAwNkU4OEY3IC8qIFN5c3RlbUJhdHRlcnkubW0gaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggMTFjMGE3ZjVk
OGY5YjRiNDJhODcxYjMzMTFlYWM0NDU5NzUzNjQyNy4uZDAxNzg0YzdhYTRiNzZkNmMzY2QyNTk3
OTIzMjRhNjA1MjlhMWY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgKQEAgLTM5MSw2ICszOTEsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaW5jcmVt
ZW50YWxQREZMb2FkaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5jcmVtZW50YWxQREZM
b2FkaW5nRW5hYmxlZDsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAg
IHZvaWQgc2V0V2ViTVBhcnNlckVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV93ZWJNUGFyc2Vy
RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgd2ViTVBhcnNlckVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX3dlYk1QYXJzZXJFbmFibGVkOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAg
ICAvLyBOZXZlciBpbnN0YW50aWF0ZS4KICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCk7CkBA
IC01ODQsNiArNTg5LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2luY3JlbWVudGFsUERGTG9h
ZGluZ0VuYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNF
KQorICAgIGJvb2wgbV93ZWJNUGFyc2VyRW5hYmxlZCB7IGZhbHNlIH07CisjZW5kaWYKKwogICAg
IGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVzdHJveWVkPFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM+
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVk
aW9UcmFja1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlv
VHJhY2tQcml2YXRlLmgKaW5kZXggN2ZhZTIzZWY1ZGM0Mjk5ZThmMDlmYzQxMmZjMTcxMDI2OGJl
YmMyMS4uYTlmODM2YmQxMTczZTIyZTBhZTgxNGExNzU0MmFhMjNhNDYxNWE0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0
ZUJhc2UuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogI2lmIEVOQUJMRShWSURFTykK
IApAQCAtNTUsNiArNTYsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7
CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5lbmFibGVkQ2hh
bmdlZChlbmFibGVkKTsKKyAgICAgICAgaWYgKG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjaykKKyAg
ICAgICAgICAgIG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjaygqdGhpcywgbV9lbmFibGVkKTsKICAg
ICB9CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KQEAg
LTY0LDYgKzY3LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzQmFja2VkQnlNZWRp
YVN0cmVhbVRyYWNrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHVzaW5nIEVuYWJs
ZWRDaGFuZ2VkQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEF1ZGlvVHJhY2tQcml2YXRlJiwgYm9v
bCBlbmFibGVkKT47CisgICAgdm9pZCBzZXRFbmFibGVkQ2hhbmdlZENhbGxiYWNrKEVuYWJsZWRD
aGFuZ2VkQ2FsbGJhY2smJiBjYWxsYmFjaykgeyBtX2VuYWJsZWRDaGFuZ2VkQ2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKTsgfQorCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29u
c3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkF1ZGlvVHJh
Y2tQcml2YXRlIjsgfQogI2VuZGlmCkBAIC03NCw2ICs4MCw3IEBAIHByb3RlY3RlZDoKIHByaXZh
dGU6CiAgICAgQXVkaW9UcmFja1ByaXZhdGVDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9Owog
ICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2UgfTsKKyAgICBFbmFibGVkQ2hhbmdlZENhbGxiYWNr
IG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJp
dmF0ZS5oCmluZGV4IDcxOGQ4MGUzNDUyYzQ3ZmVlZjQyNjhmMjllM2EyZTg3YmI0ZGNhZDMuLjBj
NDEzYzJkZGY1ZDlkYTJhMTViMTEzNWMwOGU1MTA4NTJiODAyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaApAQCAtMjgs
NiArMjgsNyBAQAogI2lmIEVOQUJMRShWSURFTykKIAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZUJh
c2UuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00OCw2ICs0OSw4IEBAIHB1YmxpYzoKICAgICAgICAgbV9zZWxlY3RlZCA9IHNlbGVjdGVk
OwogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+c2VsZWN0ZWRD
aGFuZ2VkKG1fc2VsZWN0ZWQpOworICAgICAgICBpZiAobV9zZWxlY3RlZENoYW5nZWRDYWxsYmFj
aykKKyAgICAgICAgICAgIG1fc2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2soKnRoaXMsIG1fc2VsZWN0
ZWQpOwogICAgIH0KICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCB7IHJldHVybiBt
X3NlbGVjdGVkOyB9CiAKQEAgLTU4LDEyICs2MSwxNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgY2hh
ciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlZpZGVvVHJhY2tQcml2YXRl
IjsgfQogI2VuZGlmCiAKKyAgICB1c2luZyBTZWxlY3RlZENoYW5nZWRDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoVmlkZW9UcmFja1ByaXZhdGUmLCBib29sIHNlbGVjdGVkKT47CisgICAgdm9pZCBz
ZXRTZWxlY3RlZENoYW5nZWRDYWxsYmFjayhTZWxlY3RlZENoYW5nZWRDYWxsYmFjayYmIGNhbGxi
YWNrKSB7IG1fc2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQor
CisKIHByb3RlY3RlZDoKICAgICBWaWRlb1RyYWNrUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAogcHJp
dmF0ZToKICAgICBWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07
CiAgICAgYm9vbCBtX3NlbGVjdGVkIHsgZmFsc2UgfTsKKyAgICBTZWxlY3RlZENoYW5nZWRDYWxs
YmFjayBtX3NlbGVjdGVkQ2hhbmdlZENhbGxiYWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwCmluZGV4IGMxY2IxYTRkMzU2MTI1ZDk0N2Rl
ZmZjMjdmNTlmY2EwYzliNDE4NDEuLmJjMTM5Nzc5N2JhZGE4YTQ3NTliZjUyZjlhNTQ2M2IyZDY0
MWQ3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAKQEAgLTMzLDkgKzMzLDggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFj
aywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKK0F1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhB
VkFzc2V0VHJhY2sqIHRyYWNrKQogICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbD4odHJhY2spKQotICAgICwgbV9wYXJlbnQocGFyZW50KQogewogICAgIHJl
c2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQpAQCAtNjcsNyArNjYsNiBAQCB2b2lkIEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgQXVkaW9UcmFja1ByaXZhdGVBVkY6OnNldEVuYWJsZWQo
ZW5hYmxlZCk7Ci0gICAgbV9wYXJlbnQtPnRyYWNrRGlkQ2hhbmdlRW5hYmxlZCh0aGlzKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggOWJjNGYyNmMwNzM0OWYxNzc2ZjYwYmUw
ZGQxYzJhYmNkN2IzN2Q2Yi4uMTQ1NmMwMTZiYWUwM2I4NzhiNTBiZjU5OTI0ZmI0ZDlmMzUzMDE4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOwogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGVBVkYgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKQogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+
IGNyZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyog
cGFyZW50KQorICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM+IGNyZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2ssIHBh
cmVudCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyh0cmFjaykpOwogICAgIH0KIAogICAgIHZvaWQgc2V0RW5hYmxlZChi
b29sKSBmaW5hbDsKQEAgLTUyLDEyICs1MiwxMSBAQCBwdWJsaWM6CiAgICAgaW50IHRyYWNrSUQo
KSB7IHJldHVybiBtX3RyYWNrSUQ7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqLCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQyogcGFyZW50KTsKKyAgICBleHBsaWNpdCBBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqKTsKICAgICAKICAgICB2b2lkIHJlc2V0UHJv
cGVydGllc0Zyb21UcmFjaygpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFWVHJhY2tQcml2YXRl
QVZGT2JqQ0ltcGw+IG1faW1wbDsKLSAgICBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogbV9w
YXJlbnQ7CiAgICAgaW50IG1fdHJhY2tJRDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5t
bQppbmRleCA2Njg5OTEwMWUxZmM1ODQwNzc3N2I2OWQ2MzkxOTE1ZmQ5YWRkZDIxLi5iZDY4NWQ1
NGMyM2M1N2JhM2ZiNmFiMGFhMjMxNmY2ODkzZWYxODMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCkBAIC0yNTMsMzAgKzI1Myw3IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUoY29uCiAgICAg
aWYgKCFwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIAotICAgIFN0cmluZyBleHRlbmRlZFR5
cGUgPSBwYXJhbWV0ZXJzLnR5cGUucmF3KCk7Ci0gICAgU3RyaW5nIG91dHB1dENvZGVjcyA9IHBh
cmFtZXRlcnMudHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsK
LSAgICBpZiAoIW91dHB1dENvZGVjcy5pc0VtcHR5KCkgJiYgW1BBTDo6Z2V0QVZTdHJlYW1EYXRh
UGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dE1JTUVDb2Rl
Y1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFyYW1ldGVyOildKSB7Ci0gICAgICAgIG91dHB1
dENvZGVjcyA9IFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgb3V0cHV0TUlNRUNv
ZGVjUGFyYW1ldGVyRm9ySW5wdXRNSU1FQ29kZWNQYXJhbWV0ZXI6b3V0cHV0Q29kZWNzXTsKLSAg
ICAgICAgZXh0ZW5kZWRUeXBlID0gbWFrZVN0cmluZyhwYXJhbWV0ZXJzLnR5cGUuY29udGFpbmVy
VHlwZSgpLCAiOyBjb2RlY3M9XCIiLCBvdXRwdXRDb2RlY3MsICJcIiIpOwotICAgIH0KLQotICAg
IGF1dG8gc3VwcG9ydGVkID0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0
ZWQ7Ci0gICAgYXV0byYgc3RyZWFtRGF0YVBhcnNlckNhY2hlID0gQVZTdHJlYW1EYXRhUGFyc2Vy
TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKHN0cmVhbURhdGFQYXJzZXJDYWNo
ZS5pc0F2YWlsYWJsZSgpKQotICAgICAgICBzdXBwb3J0ZWQgPSBzdHJlYW1EYXRhUGFyc2VyQ2Fj
aGUuY2FuRGVjb2RlVHlwZShleHRlbmRlZFR5cGUpOwotICAgIGVsc2UgewotICAgICAgICBhdXRv
JiBhc3NldENhY2hlID0gQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpOwotICAgICAg
ICBpZiAoYXNzZXRDYWNoZS5pc0F2YWlsYWJsZSgpKQotICAgICAgICAgICAgc3VwcG9ydGVkID0g
YXNzZXRDYWNoZS5jYW5EZWNvZGVUeXBlKGV4dGVuZGVkVHlwZSk7Ci0gICAgfQotCi0gICAgaWYg
KHN1cHBvcnRlZCAhPSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZCkKLSAg
ICAgICAgcmV0dXJuIHN1cHBvcnRlZDsKLQotICAgIGlmICghY29udGVudFR5cGVNZWV0c0hhcmR3
YXJlRGVjb2RlUmVxdWlyZW1lbnRzKHBhcmFtZXRlcnMudHlwZSwgcGFyYW1ldGVycy5jb250ZW50
VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQpKQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7Ci0KLSAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQ7CisgICAgcmV0dXJuIFNvdXJjZUJ1ZmZlclBh
cnNlcjo6aXNDb250ZW50VHlwZVN1cHBvcnRlZChwYXJhbWV0ZXJzLnR5cGUpID8gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
OjpJc05vdFN1cHBvcnRlZDsKIH0KIAogI3ByYWdtYSBtYXJrIC0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNl
UHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDgyNzhlMDZh
NTEyMjk3YzdlZDJiMjY5MGZmZTBjYjQyODg4NWZiZjYuLjI5MzIyNzkzOTEwZWE1N2YxODFjOTIw
MTdkM2NmMzY1Nzc1MjEwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCAiTG9n
Z2luZy5oIgogI2ltcG9ydCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgi
CiAjaW1wb3J0ICJNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaCIKKyNpbXBvcnQgIlNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakMuaCIKICNpbXBvcnQgIlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
LmgiCiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9BbGdvcml0aG1zLmg+
CkBAIC04NSw3ICs4NiwxMSBAQCBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBNZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgQwogICAgIGlmIChNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJz
KSA9PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZCkKICAgICAgICAg
cmV0dXJuIE5vdFN1cHBvcnRlZDsKIAotICAgIGF1dG8gbmV3U291cmNlQnVmZmVyID0gU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSh0aGlzKTsKKyAgICBhdXRvIHBhcnNlciA9IFNv
dXJjZUJ1ZmZlclBhcnNlcjo6Y3JlYXRlKGNvbnRlbnRUeXBlKTsKKyAgICBpZiAoIXBhcnNlcikK
KyAgICAgICAgcmV0dXJuIE5vdFN1cHBvcnRlZDsKKworICAgIGF1dG8gbmV3U291cmNlQnVmZmVy
ID0gU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSh0aGlzLCBwYXJzZXIucmVsZWFz
ZU5vbk51bGwoKSk7CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBuZXdTb3VyY2VC
dWZmZXItPnNldENETUluc3RhbmNlKG1fY2RtSW5zdGFuY2UuZ2V0KCkpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMGZkMDViZDNjMWYwYWFmZDk0NjlhMTFkMjk5MjljNmJiOTgyMmZjNgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaApAQCAtMCwwICsxLDc5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5j
bHVkZSAiU291cmNlQnVmZmVyUGFyc2VyLmgiCisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgor
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK09CSkNfQ0xBU1MgQVZBc3NldDsKK09CSkNfQ0xB
U1MgQVZTdHJlYW1EYXRhUGFyc2VyOworT0JKQ19DTEFTUyBOU0RhdGE7CitPQkpDX0NMQVNTIE5T
RXJyb3I7CitPQkpDX0NMQVNTIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyOworCit0eXBl
ZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQyBmaW5h
bCA6IHB1YmxpYyBTb3VyY2VCdWZmZXJQYXJzZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDPiB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgaXNDb250
ZW50VHlwZVN1cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYpOworCisgICAgU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQygpOworICAgIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMo
KTsKKworICAgIEFWU3RyZWFtRGF0YVBhcnNlciogcGFyc2VyKCkgY29uc3QgeyByZXR1cm4gbV9w
YXJzZXIuZ2V0KCk7IH0KKworICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIFR5cGU6OkFW
Rk9iakM7IH0KKyAgICB2b2lkIGFwcGVuZERhdGEoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYsIEFw
cGVuZEZsYWdzID0gQXBwZW5kRmxhZ3M6Ok5vbmUpIGZpbmFsOworICAgIHZvaWQgZmx1c2hQZW5k
aW5nTWVkaWFEYXRhKCkgZmluYWw7CisgICAgdm9pZCBzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRh
Rm9yVHJhY2tJRChib29sLCBpbnQzMl90KSBmaW5hbDsKKyAgICBib29sIHNob3VsZFByb3ZpZGVN
ZWRpYWRhdGFGb3JUcmFja0lEKGludDMyX3QpIGZpbmFsOworICAgIHZvaWQgcmVzZXRQYXJzZXJT
dGF0ZSgpIGZpbmFsOworCisgICAgdm9pZCBkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNz
ZXQqKTsKKyAgICB2b2lkIGRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcihOU0Vycm9y
Kik7CisgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChpbnQzMl90IHRyYWNr
SUQsIENNU2FtcGxlQnVmZmVyUmVmLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgdW5zaWduZWQg
ZmxhZ3MpOworICAgIHZvaWQgd2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YUZvclRyYWNrSUQoaW50MzJfdCB0cmFja0lEKTsKKyAgICB2b2lkIGRpZFByb3ZpZGVD
b250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoTlNEYXRhKiwgaW50
MzJfdCB0cmFja0lEKTsKKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8QVZTdHJlYW1EYXRhUGFy
c2VyPiBtX3BhcnNlcjsKKyAgICBSZXRhaW5QdHI8V2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVu
ZXI+IG1fZGVsZWdhdGU7CisgICAgYm9vbCBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlh
bGl6YXRpb25TZWdtZW50IHsgZmFsc2UgfTsKKyAgICBib29sIG1fcGFyc2VyU3RhdGVXYXNSZXNl
dCB7IGZhbHNlIH07Cit9OworCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2Vi
Q29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQykKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyJiBwYXJzZXIpIHsgcmV0dXJuIHBhcnNl
ci50eXBlKCkgPT0gV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpUeXBlOjpBVkZPYmpDOyB9
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjg1MDU1MDk5Y2ZkZDJmMzIwOWQ5NjFhMmIyNjgwYmZi
ZmY0NmU5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTAs
MCArMSwzMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCIKKworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisK
KyNpbXBvcnQgIkFWQXNzZXRNSU1FVHlwZUNhY2hlLmgiCisjaW1wb3J0ICJBVkFzc2V0VHJhY2tV
dGlsaXRpZXMuaCIKKyNpbXBvcnQgIkFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCIK
KyNpbXBvcnQgIkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgiCisjaW1wb3J0
ICJGb3VyQ0MuaCIKKyNpbXBvcnQgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgiCisj
aW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJNZWRpYURlc2NyaXB0aW9uLmgiCisjaW1wb3J0
ICJNZWRpYVNhbXBsZS5oIgorI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCisjaW1wb3J0
ICJOb3RJbXBsZW1lbnRlZC5oIgorI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCisjaW1wb3J0ICJU
aW1lUmFuZ2VzLmgiCisjaW1wb3J0ICJWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5oIgorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQXNzZXRUcmFjay5oPgorI2ltcG9ydCA8SmF2
YVNjcmlwdENvcmUvVHlwZWRBcnJheUlubGluZXMuaD4KKyNpbXBvcnQgPG9iamMvcnVudGltZS5o
PgorI2ltcG9ydCA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KKyNp
bXBvcnQgPHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmg+CisjaW1wb3J0IDx3dGYvQmxv
Y2tPYmpDRXhjZXB0aW9ucy5oPgorCisjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsu
aD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgorCisjcHJhZ21h
IG1hcmsgLQorI3ByYWdtYSBtYXJrIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyCisKK0Bp
bnRlcmZhY2UgV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgOiBOU09iamVjdDxBVlN0cmVh
bURhdGFQYXJzZXJPdXRwdXRIYW5kbGluZz4geworICAgIFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMqIF9wYXJlbnQ7CisgICAgQVZTdHJlYW1EYXRhUGFyc2VyKiBfcGFyc2VyOwor
fQorQHByb3BlcnR5IChhc3NpZ24pIFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMq
IHBhcmVudDsKKy0gKGlkKWluaXRXaXRoUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIqKXBhcnNl
ciBwYXJlbnQ6KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMqKXBhcmVudDsKK0Bl
bmQKKworQGltcGxlbWVudGF0aW9uIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyCistIChp
ZClpbml0V2l0aFBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyKilwYXJzZXIgcGFyZW50OihXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKilwYXJlbnQKK3sKKyAgICBzZWxmID0gW3N1
cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIEFT
U0VSVChwYXJlbnQpOworICAgIF9wYXJlbnQgPSBwYXJlbnQ7CisgICAgX3BhcnNlciA9IHBhcnNl
cjsKKyAgICBbX3BhcnNlciBzZXREZWxlZ2F0ZTpzZWxmXTsKKyAgICByZXR1cm4gc2VsZjsKK30K
KworQHN5bnRoZXNpemUgcGFyZW50PV9wYXJlbnQ7CisKKy0gKHZvaWQpZGVhbGxvYworeworICAg
IFtfcGFyc2VyIHNldERlbGVnYXRlOm5pbF07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCist
ICh2b2lkKWludmFsaWRhdGUKK3sKKyAgICBbX3BhcnNlciBzZXREZWxlZ2F0ZTpuaWxdOworICAg
IF9wYXJzZXIgPSBudWxscHRyOworfQorCistICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3Ry
ZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3Nl
dDooQVZBc3NldCAqKWFzc2V0Cit7CisgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2Vy
LCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOworICAgIF9wYXJlbnQtPmRpZFBhcnNlU3Ry
ZWFtRGF0YUFzQXNzZXQoYXNzZXQpOworfQorCistICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFW
U3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkUGFyc2VTdHJlYW1EYXRhQXNB
c3NldDooQVZBc3NldCAqKWFzc2V0IHdpdGhEaXNjb250aW51aXR5OihCT09MKWRpc2NvbnRpbnVp
dHkKK3sKKyAgICBVTlVTRURfUEFSQU0oZGlzY29udGludWl0eSk7CisgICAgQVNTRVJUX1VOVVNF
RChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOworICAgIF9w
YXJlbnQtPmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoYXNzZXQpOworfQorCistICh2b2lkKXN0
cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlk
RmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBB
U1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNl
cik7CisgICAgX3BhcmVudC0+ZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yKGVycm9y
KTsKK30KKworLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilz
dHJlYW1EYXRhUGFyc2VyIGRpZFByb3ZpZGVNZWRpYURhdGE6KENNU2FtcGxlQnVmZmVyUmVmKXNh
bXBsZSBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQgbWVkaWFUeXBlOihO
U1N0cmluZyAqKW5zTWVkaWFUeXBlIGZsYWdzOihBVlN0cmVhbURhdGFQYXJzZXJPdXRwdXRNZWRp
YURhdGFGbGFncylmbGFncworeworICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwg
c3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKKyAgICBfcGFyZW50LT5kaWRQcm92aWRlTWVk
aWFEYXRhRm9yVHJhY2tJRCh0cmFja0lELCBzYW1wbGUsIG5zTWVkaWFUeXBlLCBmbGFncyk7Cit9
CisKK0FMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCistICh2b2lkKXN0cmVh
bURhdGFQYXJzZXJXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
OihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGZvclRyYWNrSUQ6KENNUGVy
c2lzdGVudFRyYWNrSUQpdHJhY2tJRAorQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5ECit7CisgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFy
c2VyID09IF9wYXJzZXIpOworICAgIF9wYXJlbnQtPndpbGxQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHRyYWNrSUQpOworfQorCitBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgorLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihB
VlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTooTlNEYXRhICopaW5pdERhdGEgZm9yVHJhY2tJRDoo
Q01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lECitBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURh
dGFQYXJzZXIgPT0gX3BhcnNlcik7CisgICAgX3BhcmVudC0+ZGlkUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChpbml0RGF0YSwgdHJhY2tJRCk7Cit9
CitAZW5kCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI3ByYWdtYSBtYXJrIC0KKyNwcmFnbWEg
bWFyayBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQworCitjbGFzcyBNZWRpYURlc2NyaXB0aW9uQVZG
T2JqQyBmaW5hbCA6IHB1YmxpYyBNZWRpYURlc2NyaXB0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrKiB0cmFj
aykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyh0cmFjaykp
OyB9CisgICAgdmlydHVhbCB+TWVkaWFEZXNjcmlwdGlvbkFWRk9iakMoKSB7IH0KKworICAgIGJv
b2wgaXNWaWRlbygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNWaWRlbzsgfQorICAgIGJv
b2wgaXNBdWRpbygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNBdWRpbzsgfQorICAgIGJv
b2wgaXNUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1RleHQ7IH0KKyAgICBBdG9t
U3RyaW5nIGNvZGVjKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIC8vIEF0b21TdHJp
bmdzIGNhbiBvbmx5IGJlIGRlc3Ryb3llZCBmcm9tIHRoZSBzYW1lIHRocmVhZCB0aGV5J3JlCisg
ICAgICAgIC8vIGNyZWF0ZWQgaW4uIFNpbmNlIHRoaXMgc3RydWN0dXJlIGlzIGNyZWF0ZWQgaW4g
YSBwYXJzZXIgdGhyZWFkCisgICAgICAgIC8vIG9ubHkgY3JlYXRlIHRoZSBBdG9tU3RyaW5nIHRo
ZSBmaXJzdCB0aW1lIHRoaXMgZnVuY3Rpb24gaXMgYWNjZXNzZWQKKyAgICAgICAgLy8gd2hpY2gg
aXMgcHJlc3VtYWJseSBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgICAgIGlmICghbV9jb2RlYykKKyAgICAgICAgICAgIG1fY29kZWMgPSBB
dG9tU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigmbV9vcmlnaW5hbENvZGVj
KSwgNCk7CisgICAgICAgIHJldHVybiAqbV9jb2RlYzsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
TWVkaWFEZXNjcmlwdGlvbkFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaykKKyAgICAgICAgOiBt
X2lzVmlkZW8oW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3Rlcmlz
dGljVmlzdWFsXSkKKyAgICAgICAgLCBtX2lzQXVkaW8oW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVy
aXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJsZV0pCisgICAgICAgICwgbV9pc1RleHQo
W3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJs
ZV0pCisgICAgeworICAgICAgICBOU0FycmF5KiBmb3JtYXREZXNjcmlwdGlvbnMgPSBbdHJhY2sg
Zm9ybWF0RGVzY3JpcHRpb25zXTsKKyAgICAgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNj
cmlwdGlvbiA9IFtmb3JtYXREZXNjcmlwdGlvbnMgY291bnRdID8gKF9fYnJpZGdlIENNRm9ybWF0
RGVzY3JpcHRpb25SZWYpW2Zvcm1hdERlc2NyaXB0aW9ucyBvYmplY3RBdEluZGV4OjBdIDogMDsK
KyAgICAgICAgaWYgKGRlc2NyaXB0aW9uKSB7CisgICAgICAgICAgICBtX29yaWdpbmFsQ29kZWMg
PSBQQUw6OnNvZnRMaW5rX0NvcmVNZWRpYV9DTUZvcm1hdERlc2NyaXB0aW9uR2V0TWVkaWFTdWJU
eXBlKGRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgIENGU3RyaW5nUmVmIG9yaWdpbmFsRm9ybWF0
S2V5ID0gUEFMOjpjYW5Mb2FkX0NvcmVNZWRpYV9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lv
bl9Qcm90ZWN0ZWRDb250ZW50T3JpZ2luYWxGb3JtYXQoKSA/IFBBTDo6Z2V0X0NvcmVNZWRpYV9r
Q01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9Qcm90ZWN0ZWRDb250ZW50T3JpZ2luYWxGb3Jt
YXQoKSA6IENGU1RSKCJDb21tb25FbmNyeXB0aW9uT3JpZ2luYWxGb3JtYXQiKTsKKyAgICAgICAg
ICAgIENGVHlwZVJlZiBvcmlnaW5hbEZvcm1hdCA9IENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRl
bnNpb24oZGVzY3JpcHRpb24sIG9yaWdpbmFsRm9ybWF0S2V5KTsKKyAgICAgICAgICAgIGlmIChv
cmlnaW5hbEZvcm1hdCAmJiBDRkdldFR5cGVJRChvcmlnaW5hbEZvcm1hdCkgPT0gQ0ZOdW1iZXJH
ZXRUeXBlSUQoKSkKKyAgICAgICAgICAgICAgICBDRk51bWJlckdldFZhbHVlKChDRk51bWJlclJl
ZilvcmlnaW5hbEZvcm1hdCwga0NGTnVtYmVyU0ludDMyVHlwZSwgJm1fb3JpZ2luYWxDb2RlYyk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBGb3VyQ2hhckNvZGUgbV9vcmlnaW5hbENvZGVjOwor
ICAgIG11dGFibGUgT3B0aW9uYWw8QXRvbVN0cmluZz4gbV9jb2RlYzsKKyAgICBib29sIG1faXNW
aWRlbzsKKyAgICBib29sIG1faXNBdWRpbzsKKyAgICBib29sIG1faXNUZXh0OworfTsKKworI3By
YWdtYSBtYXJrIC0KKyNwcmFnbWEgbWFyayBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDCisKK2Jv
b2wgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRlZChjb25z
dCBDb250ZW50VHlwZSYgdHlwZSkKK3sKKyAgICBTdHJpbmcgZXh0ZW5kZWRUeXBlID0gdHlwZS5y
YXcoKTsKKyAgICBTdHJpbmcgb3V0cHV0Q29kZWNzID0gdHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5
cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsKKyAgICBpZiAoIW91dHB1dENvZGVjcy5pc0VtcHR5KCkg
JiYgW1BBTDo6Z2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKG91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFyYW1l
dGVyOildKSB7CisgICAgICAgIG91dHB1dENvZGVjcyA9IFtQQUw6OmdldEFWU3RyZWFtRGF0YVBh
cnNlckNsYXNzKCkgb3V0cHV0TUlNRUNvZGVjUGFyYW1ldGVyRm9ySW5wdXRNSU1FQ29kZWNQYXJh
bWV0ZXI6b3V0cHV0Q29kZWNzXTsKKyAgICAgICAgZXh0ZW5kZWRUeXBlID0gbWFrZVN0cmluZyh0
eXBlLmNvbnRhaW5lclR5cGUoKSwgIjsgY29kZWNzPVwiIiwgb3V0cHV0Q29kZWNzLCAiXCIiKTsK
KyAgICB9CisKKyAgICBhdXRvJiBzdHJlYW1EYXRhUGFyc2VyQ2FjaGUgPSBBVlN0cmVhbURhdGFQ
YXJzZXJNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKTsKKyAgICBpZiAoc3RyZWFtRGF0YVBhcnNl
ckNhY2hlLmlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBzdHJlYW1EYXRhUGFyc2VyQ2Fj
aGUuY2FuRGVjb2RlVHlwZShleHRlbmRlZFR5cGUpID09IE1lZGlhUGxheWVyRW51bXM6OlN1cHBv
cnRzVHlwZTo6SXNTdXBwb3J0ZWQ7CisKKyAgICBhdXRvJiBhc3NldENhY2hlID0gQVZBc3NldE1J
TUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpOworICAgIGlmIChhc3NldENhY2hlLmlzQXZhaWxhYmxl
KCkpCisgICAgICAgIHJldHVybiBhc3NldENhY2hlLmNhbkRlY29kZVR5cGUoZXh0ZW5kZWRUeXBl
KSA9PSBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkOworCisgICAg
cmV0dXJuIGZhbHNlOworfQorCitTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDKCkKKyAgICA6IG1fcGFyc2VyKGFkb3B0TlMoW1BBTDo6YWxsb2NBVlN0
cmVhbURhdGFQYXJzZXJJbnN0YW5jZSgpIGluaXRdKSkKKyAgICAsIG1fZGVsZWdhdGUoYWRvcHRO
UyhbW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aFBhcnNlcjpt
X3BhcnNlci5nZXQoKSBwYXJlbnQ6dGhpc10pKQoreworfQorCitTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCit7CisgICAgbV9kZWxlZ2F0ZS5n
ZXQoKS5wYXJlbnQgPSBudWxscHRyOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6OmFwcGVuZERhdGEoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgZGF0YSwgQXBwZW5kRmxhZ3Mg
ZmxhZ3MpCit7CisgICAgYXV0byBzaGFyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShkYXRhKSk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWREYXRhLT5jcmVhdGVOU0RhdGEo
KTsKKyAgICBpZiAobV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHx8IGZsYWdzID09IEFwcGVuZEZsYWdz
OjpEaXNjb250aW51aXR5KQorICAgICAgICBbbV9wYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0Rh
dGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3RyZWFtRGF0YVBhcnNlclN0cmVhbURhdGFEaXNjb250aW51
aXR5XTsKKyAgICBlbHNlCisgICAgICAgIFttX3BhcnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0
YS5nZXQoKV07CisgICAgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0ID0gZmFsc2U7Cit9CisKK3ZvaWQg
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKCkKK3sKKyAg
ICBbbV9wYXJzZXIgcHJvdmlkZVBlbmRpbmdNZWRpYURhdGFdOworfQorCit2b2lkIFNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakM6OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGJv
b2wgc2hvdWxkLCBpbnQzMl90IHRyYWNrSUQpCit7CisgICAgW21fcGFyc2VyIHNldFNob3VsZFBy
b3ZpZGVNZWRpYURhdGE6c2hvdWxkIGZvclRyYWNrSUQ6dHJhY2tJRF07Cit9CisKK2Jvb2wgU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6c2hvdWxkUHJvdmlkZU1lZGlhZGF0YUZvclRyYWNrSUQo
aW50MzJfdCB0cmFja0lEKQoreworICAgIHJldHVybiBbbV9wYXJzZXIgc2hvdWxkUHJvdmlkZU1l
ZGlhRGF0YUZvclRyYWNrSUQ6dHJhY2tJRF07Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQzo6cmVzZXRQYXJzZXJTdGF0ZSgpCit7CisgICAgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0
ID0gdHJ1ZTsKKyAgICBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdt
ZW50ID0gdHJ1ZTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQYXJz
ZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQoreworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYXNzZXQgPSByZXRhaW5QdHIo
YXNzZXQpXSB7CisgICAgICAgIG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlv
blNlZ21lbnQgPSBmYWxzZTsKKworICAgICAgICBpZiAoIW1fZGlkUGFyc2VJbml0aWFsaXphdGlv
bkRhdGFDYWxsYmFjaykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBJbml0aWFsaXph
dGlvblNlZ21lbnQgc2VnbWVudDsKKworICAgICAgICBpZiAoW2Fzc2V0IHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Iob3ZlcmFsbER1cmF0aW9uSGludCldKQorICAgICAgICAgICAgc2VnbWVu
dC5kdXJhdGlvbiA9IFBBTDo6dG9NZWRpYVRpbWUoW2Fzc2V0IG92ZXJhbGxEdXJhdGlvbkhpbnRd
KTsKKworICAgICAgICBpZiAoc2VnbWVudC5kdXJhdGlvbi5pc0ludmFsaWQoKSB8fCBzZWdtZW50
LmR1cmF0aW9uID09IE1lZGlhVGltZTo6emVyb1RpbWUoKSkKKyAgICAgICAgICAgIHNlZ21lbnQu
ZHVyYXRpb24gPSBQQUw6OnRvTWVkaWFUaW1lKFthc3NldCBkdXJhdGlvbl0pOworCisgICAgICAg
IGZvciAoQVZBc3NldFRyYWNrKiB0cmFjayBpbiBbYXNzZXQgdHJhY2tzXSkgeworICAgICAgICAg
ICAgaWYgKFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3Rp
Y0xlZ2libGVdKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUUoMTI1MTYxKTogSGFuZGxlIGlu
LWJhbmQgdGV4dCB0cmFja3MuCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1l
ZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWxdKSB7CisgICAgICAgICAgICAgICAgU291cmNlQnVmZmVy
UHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OjpWaWRlb1RyYWNrSW5mb3JtYXRp
b24gaW5mbzsKKyAgICAgICAgICAgICAgICBhdXRvIHZpZGVvVHJhY2sgPSBWaWRlb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKKyAgICAgICAgICAgICAgICBp
bmZvLnRyYWNrID0gdmlkZW9UcmFjay5jb3B5UmVmKCk7CisgICAgICAgICAgICAgICAgaW5mby5k
ZXNjcmlwdGlvbiA9IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDOjpjcmVhdGUodHJhY2spOworICAg
ICAgICAgICAgICAgIHNlZ21lbnQudmlkZW9UcmFja3MuYXBwZW5kKGluZm8pOworICAgICAgICAg
ICAgfSBlbHNlIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFj
dGVyaXN0aWNBdWRpYmxlXSkgeworICAgICAgICAgICAgICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDo6QXVkaW9UcmFja0luZm9ybWF0aW9uIGluZm87
CisgICAgICAgICAgICAgICAgYXV0byBhdWRpb1RyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjayk7CisgICAgICAgICAgICAgICAgaW5mby50cmFj
ayA9IGF1ZGlvVHJhY2suY29weVJlZigpOworICAgICAgICAgICAgICAgIGluZm8uZGVzY3JpcHRp
b24gPSBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKKyAgICAgICAgICAg
ICAgICBzZWdtZW50LmF1ZGlvVHJhY2tzLmFwcGVuZChpbmZvKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gRklYTUUoMTI1MTYxKSAgICA6IEFkZCBUZXh0VHJhY2sgc3VwcG9ydAor
ICAgICAgICB9CisKKyAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNr
KFdURk1vdmUoc2VnbWVudCkpOworICAgIH0pOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakM6OmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcihOU0Vycm9yKiBlcnJv
cikKK3sKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigq
dGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKV0geworICAgICAgICBpZiAobV9kaWRFbmNv
dW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjaykKKyAgICAgICAgICAgIG1fZGlkRW5jb3Vu
dGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2soZXJyb3IuZ2V0KCkuY29kZSk7CisgICAgfSk7
Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0
YUZvclRyYWNrSUQoaW50MzJfdCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZm
ZXIsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlLCB1bnNpZ25lZCBmbGFncykKK3sKKyAgICBVTlVT
RURfUEFSQU0oZmxhZ3MpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHN0cm9uZ1RoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgc2FtcGxlQnVmZmVyID0gcmV0YWluUHRyKHNhbXBsZUJ1ZmZlciks
IHRyYWNrSUQsIG1lZGlhVHlwZSA9IG1lZGlhVHlwZV0geworICAgICAgICBpZiAoIW1fZGlkUHJv
dmlkZU1lZGlhRGF0YUNhbGxiYWNrKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlm
IChtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50KQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gbWVkaWFTYW1wbGUgPSBNZWRpYVNhbXBsZUFW
Rk9iakM6OmNyZWF0ZShzYW1wbGVCdWZmZXIuZ2V0KCksIHRyYWNrSUQpOworCisgICAgICAgIGlm
IChtZWRpYVNhbXBsZS0+aXNIb21vZ2VuZW91cygpKSB7CisgICAgICAgICAgICBtX2RpZFByb3Zp
ZGVNZWRpYURhdGFDYWxsYmFjayhXVEZNb3ZlKG1lZGlhU2FtcGxlKSwgdHJhY2tJRCwgbWVkaWFU
eXBlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoYXV0
byYgc2FtcGxlIDogbWVkaWFTYW1wbGUtPmRpdmlkZUludG9Ib21vZ2VuZW91c1NhbXBsZXMoKSkK
KyAgICAgICAgICAgIG1fZGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKFdURk1vdmUoc2FtcGxl
KSwgdHJhY2tJRCwgbWVkaWFUeXBlKTsKKyAgICB9KTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25E
YXRhRm9yVHJhY2tJRChpbnQzMl90IHRyYWNrSUQpCit7CisgICAgbV93aWxsUHJvdmlkZUNvbnRl
bnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrKHRyYWNrSUQp
OworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoTlNEYXRhKiBuc0luaXREYXRh
LCBpbnQzMl90IHRyYWNrSUQpCit7CisgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNy
ZWF0ZShuc0luaXREYXRhLmxlbmd0aCk7CisgICAgW25zSW5pdERhdGEgZ2V0Qnl0ZXM6aW5pdERh
dGEtPmRhdGEoKSBsZW5ndGg6aW5pdERhdGEtPmxlbmd0aCgpXTsKKworICAgIG1fZGlkUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrKFdU
Rk1vdmUoaW5pdERhdGEpLCB0cmFja0lEKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQy5oCmluZGV4IGRmYTEzNGI0ZDY4ZmRiNzQ3MzQzNzhkOWY5ZGQzYmQ4NDFm
MzNkNjUuLjZkMTk0YWIxNDBhOGJkMzQ5M2JlYjNhZGRmMzI4M2QzYjhlNzVmZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApA
QCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYgVVNFKEFWRk9V
TkRBVElPTikKIAorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlci5oIgogI2luY2x1ZGUgIlNv
dXJjZUJ1ZmZlclByaXZhdGUuaCIKICNpbmNsdWRlIDxkaXNwYXRjaC9ncm91cC5oPgogI2luY2x1
ZGUgPHd0Zi9Cb3guaD4KQEAgLTM4LDE4ICszOSwxNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
I2luY2x1ZGUgPHd0Zi9XVEZTZW1hcGhvcmUuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9C
aW5hcnlTZW1hcGhvcmUuaD4KIAotT0JKQ19DTEFTUyBBVkFzc2V0OwogT0JKQ19DTEFTUyBBVlN0
cmVhbURhdGFQYXJzZXI7CiBPQkpDX0NMQVNTIEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlcjsK
IE9CSkNfQ0xBU1MgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7CiBPQkpDX0NMQVNTIE5TRGF0
YTsKIE9CSkNfQ0xBU1MgTlNFcnJvcjsKIE9CSkNfQ0xBU1MgTlNPYmplY3Q7Ci1PQkpDX0NMQVNT
IFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyOwogT0JKQ19DTEFTUyBXZWJBVlNhbXBsZUJ1
ZmZlckVycm9yTGlzdGVuZXI7CiAKIHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVy
ICpDTVNhbXBsZUJ1ZmZlclJlZjsKQEAgLTg2LDM0ICs4NiwyNyBAQCBjbGFzcyBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQyBmaW5hbAogI2VuZGlmCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gY3JlYXRlKE1lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMqKTsKKyAgICBzdGF0aWMgUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBjcmVh
dGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyosIFJlZjxTb3VyY2VCdWZmZXJQYXJzZXI+JiYp
OwogICAgIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKCk7CiAKICAgICB2b2lk
IGNsZWFyTWVkaWFTb3VyY2UoKSB7IG1fbWVkaWFTb3VyY2UgPSBudWxscHRyOyB9CiAKLSAgICAv
LyBBVlN0cmVhbURhdGFQYXJzZXIgZGVsZWdhdGUgbWV0aG9kcwotICAgIHZvaWQgZGlkUGFyc2VT
dHJlYW1EYXRhQXNBc3NldChBVkFzc2V0Kik7Ci0gICAgdm9pZCBkaWRGYWlsVG9QYXJzZVN0cmVh
bURhdGFXaXRoRXJyb3IoTlNFcnJvciopOwotICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZv
clRyYWNrSUQoaW50IHRyYWNrSUQsIENNU2FtcGxlQnVmZmVyUmVmLCBjb25zdCBTdHJpbmcmIG1l
ZGlhVHlwZSwgdW5zaWduZWQgZmxhZ3MpOwotICAgIHZvaWQgZGlkUmVhY2hFbmRPZlRyYWNrV2l0
aFRyYWNrSUQoaW50IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKLSAgICB2b2lk
IHdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lE
KGludCB0cmFja0lEKTsKLSAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRp
YWxpemF0aW9uRGF0YUZvclRyYWNrSUQoTlNEYXRhKiwgaW50IHRyYWNrSUQsIEJveDxCaW5hcnlT
ZW1hcGhvcmU+KTsKLQotICAgIGJvb2wgcHJvY2Vzc0NvZGVkRnJhbWUoaW50IHRyYWNrSUQsIENN
U2FtcGxlQnVmZmVyUmVmLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CisgICAgdm9pZCB3aWxs
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChpbnQz
Ml90IHRyYWNrSUQpOworICAgIHZvaWQgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlh
bGl6YXRpb25EYXRhRm9yVHJhY2tJRChSZWY8VWludDhBcnJheT4mJiwgaW50MzJfdCB0cmFja0lE
LCBCb3g8QmluYXJ5U2VtYXBob3JlPik7CiAKICAgICBib29sIGhhc1ZpZGVvKCkgY29uc3Q7CiAg
ICAgYm9vbCBoYXNTZWxlY3RlZFZpZGVvKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNBdWRpbygpIGNv
bnN0OwogCi0gICAgdm9pZCB0cmFja0RpZENoYW5nZUVuYWJsZWQoVmlkZW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMqKTsKLSAgICB2b2lkIHRyYWNrRGlkQ2hhbmdlRW5hYmxlZChBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyopOworICAgIHZvaWQgdHJhY2tEaWRDaGFu
Z2VTZWxlY3RlZChWaWRlb1RyYWNrUHJpdmF0ZSYsIGJvb2wgc2VsZWN0ZWQpOworICAgIHZvaWQg
dHJhY2tEaWRDaGFuZ2VFbmFibGVkKEF1ZGlvVHJhY2tQcml2YXRlJiwgYm9vbCBlbmFibGVkKTsK
IAogICAgIHZvaWQgd2lsbFNlZWsoKTsKICAgICBNZWRpYVRpbWUgZmFzdFNlZWtUaW1lRm9yTWVk
aWFUaW1lKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVUaHJlc2hv
bGQsIGNvbnN0IE1lZGlhVGltZSYgcG9zaXRpdmVUaHJlc2hvbGQpOwogICAgIEZsb2F0U2l6ZSBu
YXR1cmFsU2l6ZSgpOwogCiAgICAgaW50IHByb3RlY3RlZFRyYWNrSUQoKSBjb25zdCB7IHJldHVy
biBtX3Byb3RlY3RlZFRyYWNrSUQ7IH0KLSAgICBBVlN0cmVhbURhdGFQYXJzZXIqIHBhcnNlcigp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyLmdldCgpOyB9CisgICAgQVZTdHJlYW1EYXRhUGFyc2Vy
KiBwYXJzZXIoKSBjb25zdDsKICAgICB2b2lkIHNldENETVNlc3Npb24oQ0RNU2Vzc2lvbk1lZGlh
U291cmNlQVZGT2JqQyopOwogICAgIHZvaWQgc2V0Q0RNSW5zdGFuY2UoQ0RNSW5zdGFuY2UqKTsK
ICAgICB2b2lkIGF0dGVtcHRUb0RlY3J5cHQoKTsKQEAgLTE0OCw3ICsxNDEsMTIgQEAgcHVibGlj
OgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyopOworICAgIGV4cGxpY2l0IFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqLCBSZWY8U291cmNl
QnVmZmVyUGFyc2VyPiYmKTsKKworICAgIHVzaW5nIEluaXRpYWxpemF0aW9uU2VnbWVudCA9IFNv
dXJjZUJ1ZmZlclBhcnNlcjo6SW5pdGlhbGl6YXRpb25TZWdtZW50OworICAgIHZvaWQgZGlkUGFy
c2VJbml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYpOworICAgIHZvaWQg
ZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nKGludDMyX3QpOworICAgIHZvaWQgZGlkUHJv
dmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoUmVmPE1lZGlhU2FtcGxlPiYmLCBpbnQzMl90IHRyYWNr
SUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZh
dGUgb3ZlcnJpZGVzCiAgICAgdm9pZCBzZXRDbGllbnQoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVu
dCopIGZpbmFsOwpAQCAtMTcyLDI4ICsxNzAsMjggQEAgcHJpdmF0ZToKICAgICB2b2lkIGFwcGVu
ZENvbXBsZXRlZCgpOwogICAgIHZvaWQgZGVzdHJveVBhcnNlcigpOwogICAgIHZvaWQgZGVzdHJv
eVJlbmRlcmVycygpOworICAgIHZvaWQgY2xlYXJUcmFja3MoKTsKIAogICAgIHZvaWQgZmx1c2hW
aWRlbygpOwogICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KICAgICB2b2lk
IGZsdXNoKEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlciAqKTsKICAgICBBTExPV19ORVdfQVBJ
X1dJVEhPVVRfR1VBUkRTX0VORAogCi0gICAgVmVjdG9yPFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQz4+IG1fdmlkZW9UcmFja3M7Ci0gICAgVmVjdG9yPFJlZlB0cjxB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4+IG1fYXVkaW9UcmFja3M7CisgICAg
VmVjdG9yPFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4+IG1fdmlkZW9UcmFja3M7CisgICAgVmVj
dG9yPFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4+IG1fYXVkaW9UcmFja3M7CiAgICAgVmVjdG9y
PFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQqPiBtX2Vycm9yQ2xpZW50czsK
IAogICAgIFdlYWtQdHJGYWN0b3J5PFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBtX2FwcGVu
ZFdlYWtGYWN0b3J5OwogCi0gICAgUmV0YWluUHRyPEFWU3RyZWFtRGF0YVBhcnNlcj4gbV9wYXJz
ZXI7Ci0gICAgUmV0YWluUHRyPEFWQXNzZXQ+IG1fYXNzZXQ7CisgICAgUmVmPFNvdXJjZUJ1ZmZl
clBhcnNlcj4gbV9wYXJzZXI7CiAgICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyPiBtX2Rpc3BsYXlMYXllcjsKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JF
R0lOCiAgICAgSGFzaE1hcDxpbnQsIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVy
ZXI+PiBtX2F1ZGlvUmVuZGVyZXJzOwogICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNf
RU5ECi0gICAgUmV0YWluUHRyPFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyPiBtX2RlbGVn
YXRlOwogICAgIFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlckVycm9yTGlzdGVuZXI+IG1fZXJy
b3JMaXN0ZW5lcjsKICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gbV9oZGNwRXJyb3I7CiAgICAgQm94
PEJpbmFyeVNlbWFwaG9yZT4gbV9oYXNTZXNzaW9uU2VtYXBob3JlOworICAgIEJveDxTZW1hcGhv
cmU+IG1fYWJvcnRTZW1hcGhvcmU7CiAgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfZ3JvdXBfdD4g
bV9pc0FwcGVuZGluZ0dyb3VwOwogICAgIFJlZlB0cjxXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Np
b24+IG1fZGVjb21wcmVzc2lvblNlc3Npb247CiAKQEAgLTIxMSw4ICsyMDksNiBAQCBwcml2YXRl
OgogICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gbV9jYWNoZWRTaXplOwogICAgIEZsb2F0U2l6ZSBt
X2N1cnJlbnRTaXplOwogICAgIGJvb2wgbV9wYXJzaW5nU3VjY2VlZGVkIHsgdHJ1ZSB9OwotICAg
IGJvb2wgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHsgZmFsc2UgfTsKLSAgICBib29sIG1fZGlzY2Fy
ZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlvblNlZ21lbnQgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV93YWl0aW5nRm9yS2V5IHsgdHJ1ZSB9OwogICAgIGludCBtX2VuYWJsZWRWaWRlb1RyYWNr
SUQgeyAtMSB9OwogICAgIGludCBtX3Byb3RlY3RlZFRyYWNrSUQgeyAtMSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRl
eCBkNzM1Nzc1Y2M4ZjA0YjhiMDIxYjM1YzcwMTY5NWJkMjRmNmY4ZGE4Li5iOWE0ODljMDgyOTQz
ZTM1OTY0NGE0MzU2NjI5ZWVmYmE5ZDkyOTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtNDQsNiArNDQsNyBAQAog
I2ltcG9ydCAiTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oIgogI2ltcG9ydCAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgorI2ltcG9ydCAiU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5oIgogI2ltcG9ydCAiU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oIgog
I2ltcG9ydCAiVGltZVJhbmdlcy5oIgogI2ltcG9ydCAiVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaCIKQEAgLTgyLDE1MyArODMsNiBAQCAtICh2b2lkKWFkZFN0cmVhbURhdGFQ
YXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXI7CiAtICh2b2lkKXJl
bW92ZVN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJz
ZXI7CiBAZW5kCiAKLSNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1hcmsgV2ViQVZTdHJlYW1EYXRh
UGFyc2VyTGlzdGVuZXIKLQotQGludGVyZmFjZSBXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5l
ciA6IE5TT2JqZWN0PEFWU3RyZWFtRGF0YVBhcnNlck91dHB1dEhhbmRsaW5nPiB7Ci0gICAgV2Vh
a1B0cjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gX3BhcmVudDsKLSAgICBC
b3g8U2VtYXBob3JlPiBfYWJvcnRTZW1hcGhvcmU7Ci0gICAgQVZTdHJlYW1EYXRhUGFyc2VyKiBf
cGFyc2VyOwotfQotQHByb3BlcnR5IChhc3NpZ24pIFdlYWtQdHI8V2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM+IHBhcmVudDsKLUBwcm9wZXJ0eSAoYXNzaWduKSBCb3g8U2VtYXBo
b3JlPiBhYm9ydFNlbWFwaG9yZTsKLS0gKGlkKWluaXRXaXRoUGFyc2VyOihBVlN0cmVhbURhdGFQ
YXJzZXIqKXBhcnNlciBwYXJlbnQ6KFdlYWtQdHI8V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM+KXBhcmVudDsKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYkFWU3RyZWFtRGF0
YVBhcnNlckxpc3RlbmVyCi0tIChpZClpbml0V2l0aFBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2Vy
KilwYXJzZXIgcGFyZW50OihXZWFrUHRyPFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDPilwYXJlbnQKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikK
LSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIEFTU0VSVChwYXJlbnQpOwotICAgIF9wYXJlbnQg
PSBwYXJlbnQ7Ci0gICAgX3BhcnNlciA9IHBhcnNlcjsKLSAgICBbX3BhcnNlciBzZXREZWxlZ2F0
ZTpzZWxmXTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotQHN5bnRoZXNpemUgcGFyZW50PV9wYXJl
bnQ7Ci1Ac3ludGhlc2l6ZSBhYm9ydFNlbWFwaG9yZT1fYWJvcnRTZW1hcGhvcmU7Ci0KLS0gKHZv
aWQpZGVhbGxvYwotewotICAgIFtfcGFyc2VyIHNldERlbGVnYXRlOm5pbF07Ci0gICAgW3N1cGVy
IGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWludmFsaWRhdGUKLXsKLSAgICBbX3BhcnNlciBzZXRE
ZWxlZ2F0ZTpuaWxdOwotICAgIF9wYXJzZXIgPSBudWxscHRyOwotfQotCi0tICh2b2lkKXN0cmVh
bURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkUGFy
c2VTdHJlYW1EYXRhQXNBc3NldDooQVZBc3NldCAqKWFzc2V0Ci17Ci0gICAgQVNTRVJUX1VOVVNF
RChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOwotCi0gICAg
UmV0YWluUHRyPEFWQXNzZXQ+IHByb3RlY3RlZEFzc2V0ID0gYXNzZXQ7Ci0gICAgY2FsbE9uTWFp
blRocmVhZChbcGFyZW50ID0gX3BhcmVudCwgcHJvdGVjdGVkQXNzZXQgPSBXVEZNb3ZlKHByb3Rl
Y3RlZEFzc2V0KV0gewotICAgICAgICBpZiAocGFyZW50KQotICAgICAgICAgICAgcGFyZW50LT5k
aWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KHByb3RlY3RlZEFzc2V0LmdldCgpKTsKLSAgICB9KTsK
LX0KLQotLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJl
YW1EYXRhUGFyc2VyIGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQ6KEFWQXNzZXQgKilhc3NldCB3
aXRoRGlzY29udGludWl0eTooQk9PTClkaXNjb250aW51aXR5Ci17Ci0gICAgVU5VU0VEX1BBUkFN
KGRpc2NvbnRpbnVpdHkpOwotICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3Ry
ZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLQotICAgIFJldGFpblB0cjxBVkFzc2V0PiBwcm90
ZWN0ZWRBc3NldCA9IGFzc2V0OwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3BhcmVudCA9IF9wYXJl
bnQsIHByb3RlY3RlZEFzc2V0ID0gV1RGTW92ZShwcm90ZWN0ZWRBc3NldCldIHsKLSAgICAgICAg
aWYgKHBhcmVudCkKLSAgICAgICAgICAgIHBhcmVudC0+ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3Nl
dChwcm90ZWN0ZWRBc3NldC5nZXQoKSk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpc3RyZWFtRGF0
YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRGYWlsVG9Q
YXJzZVN0cmVhbURhdGFXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgotewotICAgIEFTU0VSVF9V
TlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLQot
ICAgIFJldGFpblB0cjxOU0Vycm9yPiBwcm90ZWN0ZWRFcnJvciA9IGVycm9yOwotICAgIGNhbGxP
bk1haW5UaHJlYWQoW3BhcmVudCA9IF9wYXJlbnQsIHByb3RlY3RlZEVycm9yID0gV1RGTW92ZShw
cm90ZWN0ZWRFcnJvcildIHsKLSAgICAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAgIHBhcmVu
dC0+ZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yKHByb3RlY3RlZEVycm9yLmdldCgp
KTsKLSAgICB9KTsKLX0KLQotLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQ
YXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFByb3ZpZGVNZWRpYURhdGE6KENNU2FtcGxlQnVm
ZmVyUmVmKXNhbXBsZSBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQgbWVk
aWFUeXBlOihOU1N0cmluZyAqKW5zTWVkaWFUeXBlIGZsYWdzOihBVlN0cmVhbURhdGFQYXJzZXJP
dXRwdXRNZWRpYURhdGFGbGFncylmbGFncwotewotICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0
YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLQotICAgIFJldGFpblB0cjxD
TVNhbXBsZUJ1ZmZlclJlZj4gcHJvdGVjdGVkU2FtcGxlID0gc2FtcGxlOwotICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3BhcmVudCA9IF9wYXJlbnQsIHByb3RlY3RlZFNhbXBsZSA9IFdURk1vdmUocHJv
dGVjdGVkU2FtcGxlKSwgdHJhY2tJRCwgbWVkaWFUeXBlID0gU3RyaW5nKG5zTWVkaWFUeXBlKSwg
ZmxhZ3NdIHsKLSAgICAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAgIHBhcmVudC0+ZGlkUHJv
dmlkZU1lZGlhRGF0YUZvclRyYWNrSUQodHJhY2tJRCwgcHJvdGVjdGVkU2FtcGxlLmdldCgpLCBt
ZWRpYVR5cGUsIGZsYWdzKTsKLSAgICB9KTsKLX0KLQotLSAodm9pZClzdHJlYW1EYXRhUGFyc2Vy
OihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFJlYWNoRW5kT2ZUcmFj
a1dpdGhUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQgbWVkaWFUeXBlOihOU1N0
cmluZyAqKW5zTWVkaWFUeXBlCi17Ci0gICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2Vy
LCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOwotCi0gICAgY2FsbE9uTWFpblRocmVhZChb
cGFyZW50ID0gX3BhcmVudCwgdHJhY2tJRCwgbWVkaWFUeXBlID0gU3RyaW5nKG5zTWVkaWFUeXBl
KV0gewotICAgICAgICBpZiAocGFyZW50KQotICAgICAgICAgICAgcGFyZW50LT5kaWRSZWFjaEVu
ZE9mVHJhY2tXaXRoVHJhY2tJRCh0cmFja0lELCBtZWRpYVR5cGUpOwotICAgIH0pOwotfQotCi1B
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgotLSAodm9pZClzdHJlYW1EYXRh
UGFyc2VyV2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTooQVZT
dHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBmb3JUcmFja0lEOihDTVBlcnNpc3Rl
bnRUcmFja0lEKXRyYWNrSUQKLUFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAot
ewotICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9
PSBfcGFyc2VyKTsKLQotICAgIC8vIFdlIG11c3QgY2FsbCBzeW5jaHJvbm91c2x5IHRvIHRoZSBt
YWluIHRocmVhZCwgYXMgdGhlIEFWU3RyZWFtU2Vzc2lvbiBtdXN0IGJlIGFzc29jaWF0ZWQKLSAg
ICAvLyB3aXRoIHRoZSBzdHJlYW1EYXRhUGFyc2VyIGJlZm9yZSB0aGUgZGVsZWdhdGUgbWV0aG9k
IHJldHVybnMuCi0gICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gcmVzcG9uZGVkU2VtYXBob3JlID0g
Qm94PEJpbmFyeVNlbWFwaG9yZT46OmNyZWF0ZSgpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Bh
cmVudCA9IF9wYXJlbnQsIHRyYWNrSUQsIHJlc3BvbmRlZFNlbWFwaG9yZV0oKSB7Ci0gICAgICAg
IGlmIChwYXJlbnQpCi0gICAgICAgICAgICBwYXJlbnQtPndpbGxQcm92aWRlQ29udGVudEtleVJl
cXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHRyYWNrSUQpOwotICAgICAgICByZXNw
b25kZWRTZW1hcGhvcmUtPnNpZ25hbCgpOwotICAgIH0pOwotCi0gICAgd2hpbGUgKHRydWUpIHsK
LSAgICAgICAgaWYgKHJlc3BvbmRlZFNlbWFwaG9yZS0+d2FpdEZvcigxMDBfbXMpKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChfYWJvcnRTZW1hcGhvcmUtPndhaXRGb3IoMTAw
X21zKSkgewotICAgICAgICAgICAgX2Fib3J0U2VtYXBob3JlLT5zaWduYWwoKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLX0KLQotQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfQkVHSU4KLS0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRh
UGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0
aWFsaXphdGlvbkRhdGE6KE5TRGF0YSAqKWluaXREYXRhIGZvclRyYWNrSUQ6KENNUGVyc2lzdGVu
dFRyYWNrSUQpdHJhY2tJRAotQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECi17
Ci0gICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09
IF9wYXJzZXIpOwotCi0gICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gaGFzU2Vzc2lvblNlbWFwaG9y
ZSA9IEJveDxCaW5hcnlTZW1hcGhvcmU+OjpjcmVhdGUoKTsKLSAgICBjYWxsT25NYWluVGhyZWFk
KFtwYXJlbnQgPSBfcGFyZW50LCBwcm90ZWN0ZWRJbml0RGF0YSA9IFJldGFpblB0cjxOU0RhdGE+
KGluaXREYXRhKSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNlbWFwaG9yZV0gewotICAgICAgICBpZiAo
cGFyZW50KQotICAgICAgICAgICAgcGFyZW50LT5kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJ
bml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHByb3RlY3RlZEluaXREYXRhLmdldCgpLCB0cmFj
a0lELCBoYXNTZXNzaW9uU2VtYXBob3JlKTsKLSAgICB9KTsKLQotICAgIHdoaWxlICh0cnVlKSB7
Ci0gICAgICAgIGlmIChoYXNTZXNzaW9uU2VtYXBob3JlLT53YWl0Rm9yKDEwMF9tcykpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKF9hYm9ydFNlbWFwaG9yZS0+d2FpdEZvcigx
MDBfbXMpKSB7Ci0gICAgICAgICAgICBfYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotfQotQGVuZAotCiBAaW50ZXJmYWNlIFdl
YkFWU2FtcGxlQnVmZmVyRXJyb3JMaXN0ZW5lciA6IE5TT2JqZWN0IHsKICAgICBXZWFrUHRyPFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBfcGFyZW50OwogICAgIFZlY3RvcjxS
ZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+PiBfbGF5ZXJzOwpAQCAtMzkxLDQz
ICsyNDUsNiBAQCBAZW5kCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgUEFM
OwogCi0jcHJhZ21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIE1lZGlhRGVzY3JpcHRpb25BVkZPYmpD
Ci0KLWNsYXNzIE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDIGZpbmFsIDogcHVibGljIE1lZGlhRGVz
Y3JpcHRpb24gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVkaWFEZXNjcmlwdGlvbkFWRk9i
akM+IGNyZWF0ZShBVkFzc2V0VHJhY2sqIHRyYWNrKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1l
ZGlhRGVzY3JpcHRpb25BVkZPYmpDKHRyYWNrKSk7IH0KLSAgICB2aXJ0dWFsIH5NZWRpYURlc2Ny
aXB0aW9uQVZGT2JqQygpIHsgfQotCi0gICAgQXRvbVN0cmluZyBjb2RlYygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fY29kZWM7IH0KLSAgICBib29sIGlzVmlkZW8oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2lzVmlkZW87IH0KLSAgICBib29sIGlzQXVkaW8oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2lzQXVkaW87IH0KLSAgICBib29sIGlzVGV4dCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1faXNUZXh0OyB9Ci0gICAgCi1wcml2YXRlOgotICAgIE1lZGlhRGVzY3JpcHRp
b25BVkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2spCi0gICAgICAgIDogbV9pc1ZpZGVvKFt0cmFj
ayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbF0pCi0g
ICAgICAgICwgbV9pc0F1ZGlvKFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFD
aGFyYWN0ZXJpc3RpY0F1ZGlibGVdKQotICAgICAgICAsIG1faXNUZXh0KFt0cmFjayBoYXNNZWRp
YUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGVdKQotICAgIHsKLSAg
ICAgICAgTlNBcnJheSogZm9ybWF0RGVzY3JpcHRpb25zID0gW3RyYWNrIGZvcm1hdERlc2NyaXB0
aW9uc107Ci0gICAgICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzY3JpcHRpb24gPSBbZm9y
bWF0RGVzY3JpcHRpb25zIGNvdW50XSA/IChfX2JyaWRnZSBDTUZvcm1hdERlc2NyaXB0aW9uUmVm
KVtmb3JtYXREZXNjcmlwdGlvbnMgb2JqZWN0QXRJbmRleDowXSA6IDA7Ci0gICAgICAgIGlmIChk
ZXNjcmlwdGlvbikgewotICAgICAgICAgICAgRm91ckNoYXJDb2RlIGNvZGVjID0gQ01Gb3JtYXRE
ZXNjcmlwdGlvbkdldE1lZGlhU3ViVHlwZShkZXNjcmlwdGlvbik7Ci0gICAgICAgICAgICBDRlN0
cmluZ1JlZiBvcmlnaW5hbEZvcm1hdEtleSA9IFBBTDo6Y2FuTG9hZF9Db3JlTWVkaWFfa0NNRm9y
bWF0RGVzY3JpcHRpb25FeHRlbnNpb25fUHJvdGVjdGVkQ29udGVudE9yaWdpbmFsRm9ybWF0KCkg
PyBQQUw6OmdldF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fUHJvdGVj
dGVkQ29udGVudE9yaWdpbmFsRm9ybWF0KCkgOiBDRlNUUigiQ29tbW9uRW5jcnlwdGlvbk9yaWdp
bmFsRm9ybWF0Iik7Ci0gICAgICAgICAgICBDRlR5cGVSZWYgb3JpZ2luYWxGb3JtYXQgPSBDTUZv
cm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9uKGRlc2NyaXB0aW9uLCBvcmlnaW5hbEZvcm1hdEtl
eSk7Ci0gICAgICAgICAgICBpZiAob3JpZ2luYWxGb3JtYXQgJiYgQ0ZHZXRUeXBlSUQob3JpZ2lu
YWxGb3JtYXQpID09IENGTnVtYmVyR2V0VHlwZUlEKCkpCi0gICAgICAgICAgICAgICAgQ0ZOdW1i
ZXJHZXRWYWx1ZSgoQ0ZOdW1iZXJSZWYpb3JpZ2luYWxGb3JtYXQsIGtDRk51bWJlclNJbnQzMlR5
cGUsICZjb2RlYyk7Ci0gICAgICAgICAgICBtX2NvZGVjID0gQXRvbVN0cmluZyhyZWludGVycHJl
dF9jYXN0PExDaGFyKj4oJmNvZGVjKSwgNCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBBdG9t
U3RyaW5nIG1fY29kZWM7Ci0gICAgYm9vbCBtX2lzVmlkZW87Ci0gICAgYm9vbCBtX2lzQXVkaW87
Ci0gICAgYm9vbCBtX2lzVGV4dDsKLX07Ci0KICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMKIApAQCAtNDY1LDE0ICsyODIsMTMgQEAgc3RhdGlj
IHZvaWQgYnVmZmVyV2FzQ29uc3VtZWRDYWxsYmFjayhDTU5vdGlmaWNhdGlvbkNlbnRlclJlZiwg
Y29uc3Qgdm9pZCogbGlzdGUKICAgICAgICAgc291cmNlQnVmZmVyLT5idWZmZXJXYXNDb25zdW1l
ZCgpOwogfQogCi1SZWY8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyogcGFyZW50KQor
UmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6Y3JlYXRlKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqIHBhcmVudCwgUmVmPFNvdXJjZUJ1
ZmZlclBhcnNlcj4mJiBwYXJzZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMocGFyZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMocGFyZW50LCBXVEZNb3ZlKHBhcnNlcikpKTsKIH0K
IAotU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
KE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKLSAgICA6IG1fcGFyc2VyKGFkb3B0
TlMoW1BBTDo6YWxsb2NBVlN0cmVhbURhdGFQYXJzZXJJbnN0YW5jZSgpIGluaXRdKSkKLSAgICAs
IG1fZGVsZWdhdGUoYWRvcHROUyhbW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIGFsbG9j
XSBpbml0V2l0aFBhcnNlcjptX3BhcnNlci5nZXQoKSBwYXJlbnQ6bWFrZVdlYWtQdHIoKnRoaXMp
XSkpCitTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyogcGFyZW50LCBSZWY8U291cmNlQnVmZmVyUGFy
c2VyPiYmIHBhcnNlcikKKyAgICA6IG1fcGFyc2VyKFdURk1vdmUocGFyc2VyKSkKICAgICAsIG1f
ZXJyb3JMaXN0ZW5lcihhZG9wdE5TKFtbV2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyIGFs
bG9jXSBpbml0V2l0aFBhcmVudDptYWtlV2Vha1B0cigqdGhpcyldKSkKICAgICAsIG1faXNBcHBl
bmRpbmdHcm91cChhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX2dyb3VwX2NyZWF0ZSgpKSkKICAgICAs
IG1fbWVkaWFTb3VyY2UocGFyZW50KQpAQCAtNDg2LDEwICszMDIsMjYgQEAgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJp
dmF0ZUFWRk9iakMKIAogICAgIGlmICghW1BBTDo6Z2V0QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJDbGFzcygpIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3RvcihwcmVyb2xsRGVj
b2RlV2l0aENvbXBsZXRpb25IYW5kbGVyOildKQogICAgICAgICBDTU5vdGlmaWNhdGlvbkNlbnRl
ckFkZExpc3RlbmVyKENNTm90aWZpY2F0aW9uQ2VudGVyR2V0RGVmYXVsdExvY2FsQ2VudGVyKCks
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1fbWFwSUQpLCBidWZmZXJXYXNDb25zdW1lZENhbGxi
YWNrLCBrQ01TYW1wbGVCdWZmZXJDb25zdW1lck5vdGlmaWNhdGlvbl9CdWZmZXJDb25zdW1lZCwg
bnVsbHB0ciwgMCk7Ci0gICAgCi0gICAgbV9kZWxlZ2F0ZS5nZXQoKS5hYm9ydFNlbWFwaG9yZSA9
IEJveDxTZW1hcGhvcmU+OjpjcmVhdGUoMCk7CiAKICAgICBzb3VyY2VCdWZmZXJNYXAoKS5hZGQo
bV9tYXBJRCwgbWFrZVdlYWtQdHIoKnRoaXMpKTsKKworICAgIG1fcGFyc2VyLT5zZXREaWRQYXJz
ZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMp
XSAoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYgc2VnbWVudCkgbXV0YWJsZSB7CisgICAgICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAg
IHdlYWtUaGlzLT5kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShXVEZNb3ZlKHNlZ21lbnQpKTsK
KyAgICB9KTsKKworICAgIG1fcGFyc2VyLT5zZXREaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNp
bmdDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKGludDMyX3QgZXJyb3JD
b2RlKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAg
aWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgd2Vha1RoaXMtPmRpZEVuY291bnRlckVycm9yRHVy
aW5nUGFyc2luZyhlcnJvckNvZGUpOworICAgIH0pOworCisgICAgbV9wYXJzZXItPnNldERpZFBy
b3ZpZGVNZWRpYURhdGFDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKFJl
ZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYg
bWVkaWFUeXBlKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgd2Vha1RoaXMtPmRpZFByb3ZpZGVNZWRp
YURhdGFGb3JUcmFja0lEKFdURk1vdmUoc2FtcGxlKSwgdHJhY2tJRCwgbWVkaWFUeXBlKTsKKyAg
ICB9KTsKIH0KIAogU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6On5Tb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQygpCkBAIC01MDAsNiArMzMyLDcgQEAgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6On5Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQygpCiAgICAgc291cmNlQnVmZmVyTWFwKCku
cmVtb3ZlKG1fbWFwSUQpOwogICAgIGRlc3Ryb3lQYXJzZXIoKTsKICAgICBkZXN0cm95UmVuZGVy
ZXJzKCk7CisgICAgY2xlYXJUcmFja3MoKTsKIAogICAgIGlmICghW1BBTDo6Z2V0QVZTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJDbGFzcygpIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxl
Y3RvcihwcmVyb2xsRGVjb2RlV2l0aENvbXBsZXRpb25IYW5kbGVyOildKQogICAgICAgICBDTU5v
dGlmaWNhdGlvbkNlbnRlclJlbW92ZUxpc3RlbmVyKENNTm90aWZpY2F0aW9uQ2VudGVyR2V0RGVm
YXVsdExvY2FsQ2VudGVyKCksIHRoaXMsIGJ1ZmZlcldhc0NvbnN1bWVkQ2FsbGJhY2ssIGtDTVNh
bXBsZUJ1ZmZlckNvbnN1bWVyTm90aWZpY2F0aW9uX0J1ZmZlckNvbnN1bWVkLCBudWxscHRyKTsK
QEAgLTUwOCw3ICszNDEsNyBAQCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6flNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDKCkKICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlLT5zaWdu
YWwoKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VTdHJl
YW1EYXRhQXNBc3NldChBVkFzc2V0KiBhc3NldCkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVudCYm
IHNlZ21lbnQpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIApAQCAtNTE2LDUy
ICszNDksMzMgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VTdHJl
YW1EYXRhQXNBc3NldChBVkFzc2V0KiBhc3NldCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5zaG91bGRDaGVja0hhcmR3YXJlU3VwcG9ydCgpKSB7
Ci0gICAgICAgIGZvciAoQVZBc3NldFRyYWNrICp0cmFjayBpbiBbYXNzZXQgdHJhY2tzXSkgewot
ICAgICAgICAgICAgaWYgKCFhc3NldFRyYWNrTWVldHNIYXJkd2FyZURlY29kZVJlcXVpcmVtZW50
cyh0cmFjaywgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPm1lZGlhQ29udGVudFR5cGVzUmVxdWly
aW5nSGFyZHdhcmVTdXBwb3J0KCkpKSB7CisgICAgICAgIGZvciAoYXV0byYgaW5mbyA6IHNlZ21l
bnQudmlkZW9UcmFja3MpIHsKKyAgICAgICAgICAgIGF1dG8gY29kZWMgPSBGb3VyQ0M6OmZyb21T
dHJpbmcoaW5mby5kZXNjcmlwdGlvbi0+Y29kZWMoKSk7CisgICAgICAgICAgICBpZiAoIWNvZGVj
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKCFjb2RlY3NNZWV0
SGFyZHdhcmVEZWNvZGVSZXF1aXJlbWVudHMoe3sgKmNvZGVjIH19LCBtX21lZGlhU291cmNlLT5w
bGF5ZXIoKS0+bWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSkpIHsK
ICAgICAgICAgICAgICAgICBtX3BhcnNpbmdTdWNjZWVkZWQgPSBmYWxzZTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2Fz
c2V0ID0gYXNzZXQ7Ci0KLSAgICBtX3ZpZGVvVHJhY2tzLmNsZWFyKCk7Ci0gICAgbV9hdWRpb1Ry
YWNrcy5jbGVhcigpOwotCi0gICAgbV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4dEluaXRpYWxpemF0
aW9uU2VnbWVudCA9IGZhbHNlOwotCi0gICAgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5p
dGlhbGl6YXRpb25TZWdtZW50IHNlZ21lbnQ7Ci0KLSAgICBpZiAoW21fYXNzZXQgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihvdmVyYWxsRHVyYXRpb25IaW50KV0pCi0gICAgICAgIHNlZ21l
bnQuZHVyYXRpb24gPSBQQUw6OnRvTWVkaWFUaW1lKFttX2Fzc2V0IG92ZXJhbGxEdXJhdGlvbkhp
bnRdKTsKLQotICAgIGlmIChzZWdtZW50LmR1cmF0aW9uLmlzSW52YWxpZCgpIHx8IHNlZ21lbnQu
ZHVyYXRpb24gPT0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpKQotICAgICAgICBzZWdtZW50LmR1cmF0
aW9uID0gUEFMOjp0b01lZGlhVGltZShbbV9hc3NldCBkdXJhdGlvbl0pOwotCi0gICAgZm9yIChB
VkFzc2V0VHJhY2sqIHRyYWNrIGluIFttX2Fzc2V0IHRyYWNrc10pIHsKLSAgICAgICAgaWYgKFt0
cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGVd
KSB7Ci0gICAgICAgICAgICAvLyBGSVhNRSgxMjUxNjEpOiBIYW5kbGUgaW4tYmFuZCB0ZXh0IHRy
YWNrcy4KLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAgY2xlYXJUcmFja3Mo
KTsKIAotICAgICAgICBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNo
YXJhY3RlcmlzdGljVmlzdWFsXSkgewotICAgICAgICAgICAgU291cmNlQnVmZmVyUHJpdmF0ZUNs
aWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OjpWaWRlb1RyYWNrSW5mb3JtYXRpb24gaW5mbzsK
LSAgICAgICAgICAgIGF1dG8gdmlkZW9UcmFjayA9IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpjcmVhdGUodHJhY2ssIHRoaXMpOwotICAgICAgICAgICAgaW5mby50cmFjayA9
IHZpZGVvVHJhY2suY29weVJlZigpOwotICAgICAgICAgICAgbV92aWRlb1RyYWNrcy5hcHBlbmQo
V1RGTW92ZSh2aWRlb1RyYWNrKSk7Ci0gICAgICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVk
aWFEZXNjcmlwdGlvbkFWRk9iakM6OmNyZWF0ZSh0cmFjayk7Ci0gICAgICAgICAgICBzZWdtZW50
LnZpZGVvVHJhY2tzLmFwcGVuZChpbmZvKTsKLSAgICAgICAgfSBlbHNlIGlmIChbdHJhY2sgaGFz
TWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNBdWRpYmxlXSkgewotICAg
ICAgICAgICAgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50
OjpBdWRpb1RyYWNrSW5mb3JtYXRpb24gaW5mbzsKLSAgICAgICAgICAgIGF1dG8gYXVkaW9UcmFj
ayA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGUodHJhY2ssIHRo
aXMpOwotICAgICAgICAgICAgaW5mby50cmFjayA9IGF1ZGlvVHJhY2suY29weVJlZigpOwotICAg
ICAgICAgICAgbV9hdWRpb1RyYWNrcy5hcHBlbmQoV1RGTW92ZShhdWRpb1RyYWNrKSk7Ci0gICAg
ICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVkaWFEZXNjcmlwdGlvbkFWRk9iakM6OmNyZWF0
ZSh0cmFjayk7Ci0gICAgICAgICAgICBzZWdtZW50LmF1ZGlvVHJhY2tzLmFwcGVuZChpbmZvKTsK
LSAgICAgICAgfQorICAgIGZvciAoYXV0byB2aWRlb1RyYWNrSW5mbyA6IHNlZ21lbnQudmlkZW9U
cmFja3MpIHsKKyAgICAgICAgdmlkZW9UcmFja0luZm8udHJhY2stPnNldFNlbGVjdGVkQ2hhbmdl
ZENhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoVmlkZW9UcmFja1ByaXZh
dGUmIHRyYWNrLCBib29sIHNlbGVjdGVkKSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisg
ICAgICAgICAgICAgICAgd2Vha1RoaXMtPnRyYWNrRGlkQ2hhbmdlU2VsZWN0ZWQodHJhY2ssIHNl
bGVjdGVkKTsKKyAgICAgICAgfSk7CisgICAgICAgIG1fdmlkZW9UcmFja3MuYXBwZW5kKHZpZGVv
VHJhY2tJbmZvLnRyYWNrKTsKKyAgICB9CiAKLSAgICAgICAgLy8gRklYTUUoMTI1MTYxKTogQWRk
IFRleHRUcmFjayBzdXBwb3J0CisgICAgZm9yIChhdXRvIGF1ZGlvVHJhY2tJbmZvIDogc2VnbWVu
dC5hdWRpb1RyYWNrcykgeworICAgICAgICBhdWRpb1RyYWNrSW5mby50cmFjay0+c2V0RW5hYmxl
ZENoYW5nZWRDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKEF1ZGlvVHJh
Y2tQcml2YXRlJiB0cmFjaywgYm9vbCBlbmFibGVkKSB7CisgICAgICAgICAgICBpZiAod2Vha1Ro
aXMpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPnRyYWNrRGlkQ2hhbmdlRW5hYmxlZCh0cmFj
aywgZW5hYmxlZCk7CisgICAgICAgIH0pOworICAgICAgICBtX2F1ZGlvVHJhY2tzLmFwcGVuZChh
dWRpb1RyYWNrSW5mby50cmFjayk7CiAgICAgfQogCiAgICAgaWYgKG1fbWVkaWFTb3VyY2UpCkBA
IC01NzEsNjEgKzM4NSwyOSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQ
YXJzZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQogICAgICAgICBtX2NsaWVudC0+
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoc2VnbWVu
dCk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEZhaWxUb1BhcnNl
U3RyZWFtRGF0YVdpdGhFcnJvcihOU0Vycm9yICplcnJvcikKK3ZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OmRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhpbnQzMl90IGNvZGUp
CiB7CiAjaWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKKyAgICBVTlVT
RURfUEFSQU0oY29kZSk7CiAjZW5kaWYKLSAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgW1tl
cnJvciBkZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10pOworICAgIEVSUk9SX0xPRyhMT0dJREVOVElG
SUVSLCBjb2RlKTsKIAogICAgIG1fcGFyc2luZ1N1Y2NlZWRlZCA9IGZhbHNlOwogfQogCi1zdHJ1
Y3QgUHJvY2Vzc0NvZGVkRnJhbWVJbmZvIHsKLSAgICBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qyogc291cmNlQnVmZmVyOwotICAgIGludCB0cmFja0lEOwotICAgIGNvbnN0IFN0cmluZyYgbWVk
aWFUeXBlOwotfTsKLQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlk
ZU1lZGlhRGF0YUZvclRyYWNrSUQoaW50IHRyYWNrSUQsIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBs
ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkKQordm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoUmVmPE1l
ZGlhU2FtcGxlPiYmIG1lZGlhU2FtcGxlLCBpbnQzMl90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYg
bWVkaWFUeXBlKQogewotICAgIHByb2Nlc3NDb2RlZEZyYW1lKHRyYWNrSUQsIHNhbXBsZUJ1ZmZl
ciwgbWVkaWFUeXBlKTsKLX0KKyAgICBVTlVTRURfUEFSQU0obWVkaWFUeXBlKTsKIAotYm9vbCBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6cHJvY2Vzc0NvZGVkRnJhbWUoaW50IHRyYWNrSUQs
IENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgY29uc3QgU3RyaW5nJikKLXsKICAgICBp
ZiAodHJhY2tJRCAhPSBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgJiYgIW1fYXVkaW9SZW5kZXJlcnMu
Y29udGFpbnModHJhY2tJRCkpIHsKICAgICAgICAgLy8gRklYTUUoMTI1MTYxKTogV2UgZG9uJ3Qg
aGFuZGxlIHRleHQgdHJhY2tzLCBhbmQgcGFzc2luZyB0aGlzIHNhbXBsZSB1cCB0byBTb3VyY2VC
dWZmZXIKICAgICAgICAgLy8gd2lsbCBqdXN0IGNvbmZ1c2UgaXRzIHN0YXRlLiBEcm9wIHRoaXMg
c2FtcGxlIHVudGlsIHdlIGNhbiBoYW5kbGUgdGV4dCB0cmFja3MgcHJvcGVybHkuCi0gICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX2Rpc2Nh
cmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50KQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBpZiAoIW1fY2xpZW50KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
IGF1dG8gbWVkaWFTYW1wbGUgPSBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZShzYW1wbGVCdWZm
ZXIsIHRyYWNrSUQpOwotCi0gICAgaWYgKG1lZGlhU2FtcGxlLT5pc0hvbW9nZW5lb3VzKCkpIHsK
LSAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsIG1lZGlhU2FtcGxlLT50b0pTT05TdHJp
bmcoKSk7CisgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsIG1lZGlhU2FtcGxlLT50b0pTT05T
dHJpbmcoKSk7CisgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+c291cmNlQnVm
ZmVyUHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUobWVkaWFTYW1wbGUpOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0KLSAgICBhdXRvIG1lZGlhU2FtcGxlcyA9IG1lZGlhU2FtcGxlLT5kaXZp
ZGVJbnRvSG9tb2dlbmVvdXNTYW1wbGVzKCk7Ci0gICAgZm9yIChhdXRvJiBzYW1wbGUgOiBtZWRp
YVNhbXBsZXMpIHsKLSAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsIHNhbXBsZS0+dG9K
U09OU3RyaW5nKCkpOwotICAgICAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZURpZFJl
Y2VpdmVTYW1wbGUoc2FtcGxlKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUmVhY2hFbmRPZlRyYWNrV2l0aFRyYWNr
SUQoaW50LCBjb25zdCBTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKIHZv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OndpbGxQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKGludCB0cmFja0lEKQpAQCAtNjMzLDE4ICs0
MTUsMjAgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250
ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUYKICAgICBpZiAoIW1fbWVkaWFTb3VyY2Up
CiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX3BhcnNlcik7Ci0KICNpZiBIQVZFKEFW
U1RSRUFNU0VTU0lPTikgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCAidHJhY2sgPSAiLCB0cmFja0lEKTsKIAogICAgIG1fcHJv
dGVjdGVkVHJhY2tJRCA9IHRyYWNrSUQ7CiAKKyAgICBhdXRvIHBhcnNlciA9IHRoaXMtPnBhcnNl
cigpOworICAgIGlmICghcGFyc2VyKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoQ0RNU2Vz
c2lvbk1lZGlhU291cmNlQVZGT2JqQyogc2Vzc2lvbiA9IG1fbWVkaWFTb3VyY2UtPnBsYXllcigp
LT5jZG1TZXNzaW9uKCkpCi0gICAgICAgIHNlc3Npb24tPmFkZFBhcnNlcihtX3BhcnNlci5nZXQo
KSk7CisgICAgICAgIHNlc3Npb24tPmFkZFBhcnNlcihwYXJzZXIpOwogICAgIGVsc2UgaWYgKCFD
RE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6aXNBdmFpbGFibGUoKSkgewogICAgICAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgW21fbWVkaWFTb3VyY2UtPnBsYXll
cigpLT5zdHJlYW1TZXNzaW9uKCkgYWRkU3RyZWFtRGF0YVBhcnNlcjptX3BhcnNlci5nZXQoKV07
CisgICAgICAgIFttX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c3RyZWFtU2Vzc2lvbigpIGFkZFN0
cmVhbURhdGFQYXJzZXI6cGFyc2VyXTsKICAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwogICAgIH0KICNlbHNlCkBAIC02NTIsNyArNDM2LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0
YUYKICNlbmRpZgogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKE5TRGF0YSog
aW5pdERhdGEsIGludCB0cmFja0lELCBCb3g8QmluYXJ5U2VtYXBob3JlPiBoYXNTZXNzaW9uU2Vt
YXBob3JlKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRl
bnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChSZWY8VWludDhBcnJheT4m
JiBpbml0RGF0YSwgaW50IHRyYWNrSUQsIEJveDxCaW5hcnlTZW1hcGhvcmU+IGhhc1Nlc3Npb25T
ZW1hcGhvcmUpCiB7CiAgICAgaWYgKCFtX21lZGlhU291cmNlKQogICAgICAgICByZXR1cm47CkBA
IC02NjEsMTEgKzQ0NSwxMSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQ
cm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGbwogICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUiwgInRyYWNrID0gIiwgdHJhY2tJRCk7CiAKICAgICBtX3Byb3RlY3Rl
ZFRyYWNrSUQgPSB0cmFja0lEOwotICAgIG1faW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVhdGUo
W2luaXREYXRhIGxlbmd0aF0pOwotICAgIFtpbml0RGF0YSBnZXRCeXRlczptX2luaXREYXRhLT5k
YXRhKCkgbGVuZ3RoOm1faW5pdERhdGEtPmxlbmd0aCgpXTsKKyAgICBtX2luaXREYXRhID0gV1RG
TW92ZShpbml0RGF0YSk7CiAgICAgbV9tZWRpYVNvdXJjZS0+c291cmNlQnVmZmVyS2V5TmVlZGVk
KHRoaXMsIG1faW5pdERhdGEuZ2V0KCkpOwogICAgIGlmIChhdXRvIHNlc3Npb24gPSBtX21lZGlh
U291cmNlLT5wbGF5ZXIoKS0+Y2RtU2Vzc2lvbigpKSB7Ci0gICAgICAgIHNlc3Npb24tPmFkZFBh
cnNlcihtX3BhcnNlci5nZXQoKSk7CisgICAgICAgIGlmIChhdXRvIHBhcnNlciA9IHRoaXMtPnBh
cnNlcigpKQorICAgICAgICAgICAgc2Vzc2lvbi0+YWRkUGFyc2VyKHBhcnNlcik7CiAgICAgICAg
IGhhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtNjc2LDE0ICs0NjAsMTUgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlk
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KICAgICBtX2hhc1Nl
c3Npb25TZW1hcGhvcmUgPSBoYXNTZXNzaW9uU2VtYXBob3JlOwogICAgIAogI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKLSAgICBhdXRvIGlu
aXREYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW5pdERhdGEpOworICAgIGF1dG8g
aW5pdERhdGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS0+ZGF0YSgpLCBp
bml0RGF0YS0+Ynl0ZUxlbmd0aCgpKTsKICAgICBhdXRvIGtleUlEcyA9IENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoaW5pdERhdGFCdWZmZXIpOwogICAgIGlm
ICgha2V5SURzKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9jZG1JbnN0YW5jZSkgewog
ICAgICAgICBpZiAoYXV0byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUluc3RhbmNlLT5zZXNzaW9u
Rm9yS2V5SURzKGtleUlEcy52YWx1ZSgpKSkgewotICAgICAgICAgICAgW2luc3RhbmNlU2Vzc2lv
bi0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50Om1fcGFyc2VyLmdl
dCgpXTsKKyAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlciA9IHRoaXMtPnBhcnNlcigpKQorICAg
ICAgICAgICAgICAgIFtpbnN0YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29u
dGVudEtleVJlY2lwaWVudDpwYXJzZXJdOwogICAgICAgICAgICAgaWYgKG1faGFzU2Vzc2lvblNl
bWFwaG9yZSkgewogICAgICAgICAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFs
KCk7CiAgICAgICAgICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlID0gbnVsbHB0cjsKQEAg
LTcyNCwxNiArNTA5LDU0IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVu
ZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQogewogICAgIERFQlVHX0xPRyhMT0dJREVO
VElGSUVSLCAiZGF0YSBsZW5ndGggPSAiLCBkYXRhLnNpemUoKSk7CiAKKyAgICBBU1NFUlQoIW1f
aGFzU2Vzc2lvblNlbWFwaG9yZSk7CisgICAgQVNTRVJUKCFtX2Fib3J0U2VtYXBob3JlKTsKKwor
ICAgIG1fYWJvcnRTZW1hcGhvcmUgPSBCb3g8U2VtYXBob3JlPjo6Y3JlYXRlKDApOworICAgIG1f
cGFyc2VyLT5zZXRXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRENhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBhYm9ydFNl
bWFwaG9yZSA9IG1fYWJvcnRTZW1hcGhvcmVdICh1aW50MzJfdCB0cmFja0lEKSBtdXRhYmxlIHsK
KyAgICAgICAgLy8gV2UgbXVzdCBjYWxsIHN5bmNocm9ub3VzbHkgdG8gdGhlIG1haW4gdGhyZWFk
LCBhcyB0aGUgQVZTdHJlYW1TZXNzaW9uIG11c3QgYmUgYXNzb2NpYXRlZAorICAgICAgICAvLyB3
aXRoIHRoZSBzdHJlYW1EYXRhUGFyc2VyIGJlZm9yZSB0aGUgZGVsZWdhdGUgbWV0aG9kIHJldHVy
bnMuCisgICAgICAgIEJveDxCaW5hcnlTZW1hcGhvcmU+IHJlc3BvbmRlZFNlbWFwaG9yZSA9IEJv
eDxCaW5hcnlTZW1hcGhvcmU+OjpjcmVhdGUoKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
d2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgdHJhY2tJRCwgcmVzcG9uZGVkU2VtYXBob3Jl
XSgpIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3ZWFrVGhp
cy0+d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNr
SUQodHJhY2tJRCk7CisgICAgICAgICAgICByZXNwb25kZWRTZW1hcGhvcmUtPnNpZ25hbCgpOwor
ICAgICAgICB9KTsKKworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgaWYgKHJl
c3BvbmRlZFNlbWFwaG9yZS0+d2FpdEZvcigxMDBfbXMpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgaWYgKGFib3J0U2VtYXBob3JlLT53YWl0Rm9yKDEwMF9tcykpIHsK
KyAgICAgICAgICAgICAgICBhYm9ydFNlbWFwaG9yZS0+c2lnbmFsKCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSk7CisKKyAgICBtX3Bh
cnNlci0+c2V0RGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9y
VHJhY2tJRENhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBhYm9ydFNlbWFw
aG9yZSA9IG1fYWJvcnRTZW1hcGhvcmVdIChSZWY8VWludDhBcnJheT4mJiBpbml0RGF0YSwgaW50
MzJfdCB0cmFja0lEKSBtdXRhYmxlIHsKKyAgICAgICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gaGFz
U2Vzc2lvblNlbWFwaG9yZSA9IEJveDxCaW5hcnlTZW1hcGhvcmU+OjpjcmVhdGUoKTsKKyAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgaW5pdERh
dGEgPSBXVEZNb3ZlKGluaXREYXRhKSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNlbWFwaG9yZV0gKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgd2Vh
a1RoaXMtPmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRy
YWNrSUQoV1RGTW92ZShpbml0RGF0YSksIHRyYWNrSUQsIGhhc1Nlc3Npb25TZW1hcGhvcmUpOwor
ICAgICAgICB9KTsKKworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgaWYgKGhh
c1Nlc3Npb25TZW1hcGhvcmUtPndhaXRGb3IoMTAwX21zKSkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIGlmIChhYm9ydFNlbWFwaG9yZS0+d2FpdEZvcigxMDBfbXMpKSB7
CisgICAgICAgICAgICAgICAgYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pOworCiAgICAgbV9w
YXJzaW5nU3VjY2VlZGVkID0gdHJ1ZTsKICAgICBkaXNwYXRjaF9ncm91cF9lbnRlcihtX2lzQXBw
ZW5kaW5nR3JvdXAuZ2V0KCkpOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMoZ2xvYmFsRGF0YVBhcnNl
clF1ZXVlKCksIFtkYXRhID0gV1RGTW92ZShkYXRhKSwgd2Vha1RoaXMgPSBtX2FwcGVuZFdlYWtG
YWN0b3J5LmNyZWF0ZVdlYWtQdHIoKnRoaXMpLCBwYXJzZXIgPSBtX3BhcnNlciwgZGVsZWdhdGUg
PSBtX2RlbGVnYXRlLCBpc0FwcGVuZGluZ0dyb3VwID0gbV9pc0FwcGVuZGluZ0dyb3VwLCBwYXJz
ZXJTdGF0ZVdhc1Jlc2V0ID0gbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0XSAoKSBtdXRhYmxlIHsKLSAg
ICAgICAgYXV0byBzaGFyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRh
KSk7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkRGF0YS0+Y3JlYXRlTlNEYXRhKCk7Ci0g
ICAgICAgIGlmIChwYXJzZXJTdGF0ZVdhc1Jlc2V0KQotICAgICAgICAgICAgW3BhcnNlciBhcHBl
bmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2VyU3Ry
ZWFtRGF0YURpc2NvbnRpbnVpdHldOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBbcGFyc2Vy
IGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpXTsKKyAgICBkaXNwYXRjaF9hc3luYyhnbG9i
YWxEYXRhUGFyc2VyUXVldWUoKSwgW2RhdGEgPSBXVEZNb3ZlKGRhdGEpLCB3ZWFrVGhpcyA9IG1f
YXBwZW5kV2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyksIHBhcnNlciA9IG1fcGFyc2Vy
LCBpc0FwcGVuZGluZ0dyb3VwID0gbV9pc0FwcGVuZGluZ0dyb3VwXSAoKSBtdXRhYmxlIHsKKyAg
ICAgICAgcGFyc2VyLT5hcHBlbmREYXRhKFdURk1vdmUoZGF0YSkpOwogCiAgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3dlYWtUaGlzXSB7CiAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCkBAIC03
NDEsMTEgKzU2NCwyMCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQo
VmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgZGF0YSkKICAgICAgICAgfSk7CiAgICAgICAgIGRpc3Bh
dGNoX2dyb3VwX2xlYXZlKGlzQXBwZW5kaW5nR3JvdXAuZ2V0KCkpOwogICAgIH0pOwotICAgIG1f
cGFyc2VyU3RhdGVXYXNSZXNldCA9IGZhbHNlOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjphcHBlbmRDb21wbGV0ZWQoKQogeworICAgIGlmIChtX2Fib3J0U2VtYXBob3Jl
KSB7CisgICAgICAgIG1fYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAgICBtX2Fib3J0
U2VtYXBob3JlID0gbmlsOworICAgIH0KKworICAgIGlmIChtX2hhc1Nlc3Npb25TZW1hcGhvcmUp
IHsKKyAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICAgICAgbV9o
YXNTZXNzaW9uU2VtYXBob3JlID0gbmlsOworICAgIH0KKwogICAgIGlmIChtX3BhcnNpbmdTdWNj
ZWVkZWQgJiYgbV9tZWRpYVNvdXJjZSkKICAgICAgICAgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCkt
PnNldExvYWRpbmdQcm9ncmVzc3NlZCh0cnVlKTsKIApAQCAtNzYwLDM5ICs1OTIsMzkgQEAgdm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YWJvcnQoKQogICAgIC8vIFRoZSBwYXJzaW5n
IHF1ZXVlIG1heSBiZSBibG9ja2VkIHdhaXRpbmcgZm9yIHRoZSBtYWluIHRocmVhZCB0byBwcm92
aWRlIGl0IGEgQVZTdHJlYW1TZXNzaW9uLiBXZQogICAgIC8vIHdlcmUgYXNrZWQgdG8gYWJvcnQs
IGFuZCB0aGF0IGNhbmNlbHMgYWxsIG91dHN0YW5kaW5nIGFwcGVuZCBvcGVyYXRpb25zLiBXaXRo
b3V0IGNhbmNlbGxpbmcgdGhpcwogICAgIC8vIHNlbWFwaG9yZSwgdGhlIG1faXNBcHBlbmRpbmdH
cm91cCB3YWl0IG9wZXJhdGlvbiB3aWxsIGRlYWRsb2NrLgotICAgIGlmIChtX2hhc1Nlc3Npb25T
ZW1hcGhvcmUpCisgICAgaWYgKG1faGFzU2Vzc2lvblNlbWFwaG9yZSkgewogICAgICAgICBtX2hh
c1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwotICAgIG1fZGVsZWdhdGUuZ2V0KCkuYWJvcnRT
ZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUgPSBudWxs
cHRyOworICAgIH0KKyAgICBpZiAobV9hYm9ydFNlbWFwaG9yZSkgeworICAgICAgICBtX2Fib3J0
U2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICAgICAgbV9hYm9ydFNlbWFwaG9yZSA9IG51bGxwdHI7
CisgICAgfQogICAgIGRpc3BhdGNoX2dyb3VwX3dhaXQobV9pc0FwcGVuZGluZ0dyb3VwLmdldCgp
LCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOwotICAgIG1fYXBwZW5kV2Vha0ZhY3RvcnkucmV2b2tl
QWxsKCk7Ci0gICAgbV9kZWxlZ2F0ZS5nZXQoKS5wYXJlbnQgPSBtX2FwcGVuZFdlYWtGYWN0b3J5
LmNyZWF0ZVdlYWtQdHIoKnRoaXMpOwotICAgIG1fZGVsZWdhdGUuZ2V0KCkuYWJvcnRTZW1hcGhv
cmUgPSBCb3g8U2VtYXBob3JlPjo6Y3JlYXRlKDApOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpyZXNldFBhcnNlclN0YXRlKCkKIHsKICAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIpOwogCi0gICAgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0ID0gdHJ1ZTsKLSAgICBtX2Rp
c2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50ID0gdHJ1ZTsKKyAgICBt
X3BhcnNlci0+cmVzZXRQYXJzZXJTdGF0ZSgpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpkZXN0cm95UGFyc2VyKCkKIHsKKyAgICBhdXRvIHBhcnNlciA9IHRoaXMtPnBh
cnNlcigpOworICAgIGlmICghcGFyc2VyKQorICAgICAgICByZXR1cm47CiAjaWYgSEFWRShBVlNU
UkVBTVNFU1NJT04pICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIGlmICht
X21lZGlhU291cmNlICYmIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5oYXNTdHJlYW1TZXNzaW9u
KCkpCi0gICAgICAgIFttX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c3RyZWFtU2Vzc2lvbigpIHJl
bW92ZVN0cmVhbURhdGFQYXJzZXI6bV9wYXJzZXIuZ2V0KCldOworICAgICAgICBbbV9tZWRpYVNv
dXJjZS0+cGxheWVyKCktPnN0cmVhbVNlc3Npb24oKSByZW1vdmVTdHJlYW1EYXRhUGFyc2VyOnBh
cnNlcl07CiAjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09O
VEVOVEtFWVNFU1NJT04pCiAgICAgaWYgKG1fY2RtSW5zdGFuY2UpIHsKICAgICAgICAgaWYgKGF1
dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhtX2tl
eUlEcykpCi0gICAgICAgICAgICBbaW5zdGFuY2VTZXNzaW9uLT5jb250ZW50S2V5U2Vzc2lvbigp
IHJlbW92ZUNvbnRlbnRLZXlSZWNpcGllbnQ6bV9wYXJzZXIuZ2V0KCldOworICAgICAgICAgICAg
W2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSByZW1vdmVDb250ZW50S2V5UmVj
aXBpZW50OnBhcnNlcl07CiAgICAgfQogI2VuZGlmCi0KLSAgICBbbV9kZWxlZ2F0ZSBpbnZhbGlk
YXRlXTsKLSAgICBtX2RlbGVnYXRlID0gbnVsbHB0cjsKLSAgICBtX3BhcnNlciA9IG51bGxwdHI7
CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRlc3Ryb3lSZW5kZXJlcnMo
KQpAQCAtODE3LDYgKzY0OSwxNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpk
ZXN0cm95UmVuZGVyZXJzKCkKICAgICBtX2F1ZGlvUmVuZGVyZXJzLmNsZWFyKCk7CiB9CiAKK3Zv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNsZWFyVHJhY2tzKCkKK3sKKyAgICBmb3Ig
KGF1dG8mIHRyYWNrIDogbV92aWRlb1RyYWNrcykKKyAgICAgICAgdHJhY2stPnNldFNlbGVjdGVk
Q2hhbmdlZENhbGxiYWNrKG51bGxwdHIpOworICAgIG1fdmlkZW9UcmFja3MuY2xlYXIoKTsKKwor
ICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX2F1ZGlvVHJhY2tzKQorICAgICAgICB0cmFjay0+c2V0
RW5hYmxlZENoYW5nZWRDYWxsYmFjayhudWxscHRyKTsKKyAgICBtX2F1ZGlvVHJhY2tzLmNsZWFy
KCk7Cit9CisKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnJlbW92ZWRGcm9tTWVk
aWFTb3VyY2UoKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CkBAIC04NTYsMjEg
KzY5OSwyMSBAQCBib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpoYXNBdWRpbygpIGNv
bnN0CiAgICAgcmV0dXJuIG1fY2xpZW50ICYmIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRl
SGFzQXVkaW8oKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tE
aWRDaGFuZ2VFbmFibGVkKFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiB0cmFj
aykKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlU2VsZWN0
ZWQoVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNrLCBib29sIHNlbGVjdGVkKQogewotICAgIGludCB0
cmFja0lEID0gdHJhY2stPnRyYWNrSUQoKTsKKyAgICBpbnQgdHJhY2tJRCA9IHRyYWNrLmlkKCku
dG9JbnQoKTsKIAotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInZpZGVvIHRyYWNrSUQg
PSAiLCB0cmFja0lELCAiLCBzZWxlY3RlZCA9ICIsIHRyYWNrLT5zZWxlY3RlZCgpKTsKKyAgICBB
TFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJ2aWRlbyB0cmFja0lEID0gIiwgdHJhY2tJRCwgIiwg
c2VsZWN0ZWQgPSAiLCBzZWxlY3RlZCk7CiAKLSAgICBpZiAoIXRyYWNrLT5zZWxlY3RlZCgpICYm
IG1fZW5hYmxlZFZpZGVvVHJhY2tJRCA9PSB0cmFja0lEKSB7CisgICAgaWYgKCFzZWxlY3RlZCAm
JiBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgPT0gdHJhY2tJRCkgewogICAgICAgICBtX2VuYWJsZWRW
aWRlb1RyYWNrSUQgPSAtMTsKLSAgICAgICAgW21fcGFyc2VyIHNldFNob3VsZFByb3ZpZGVNZWRp
YURhdGE6Tk8gZm9yVHJhY2tJRDp0cmFja0lEXTsKKyAgICAgICAgbV9wYXJzZXItPnNldFNob3Vs
ZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGZhbHNlLCB0cmFja0lEKTsKIAogICAgICAgICBp
ZiAobV9kZWNvbXByZXNzaW9uU2Vzc2lvbikKICAgICAgICAgICAgIG1fZGVjb21wcmVzc2lvblNl
c3Npb24tPnN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRhKCk7Ci0gICAgfSBlbHNlIGlmICh0cmFjay0+
c2VsZWN0ZWQoKSkgeworICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWQpIHsKICAgICAgICAgbV9lbmFi
bGVkVmlkZW9UcmFja0lEID0gdHJhY2tJRDsKLSAgICAgICAgW21fcGFyc2VyIHNldFNob3VsZFBy
b3ZpZGVNZWRpYURhdGE6WUVTIGZvclRyYWNrSUQ6dHJhY2tJRF07CisgICAgICAgIG1fcGFyc2Vy
LT5zZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCh0cnVlLCB0cmFja0lEKTsKIAog
ICAgICAgICBpZiAobV9kZWNvbXByZXNzaW9uU2Vzc2lvbikgewogICAgICAgICAgICAgbV9kZWNv
bXByZXNzaW9uU2Vzc2lvbi0+cmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeShbdGhpcywgdHJhY2tJ
RF0gewpAQCAtODgyLDIxICs3MjUsMjEgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3UKICAgICBt
X21lZGlhU291cmNlLT5oYXNTZWxlY3RlZFZpZGVvQ2hhbmdlZCgqdGhpcyk7CiB9CiAKLXZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlRW5hYmxlZChBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyogdHJhY2spCit2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQoQXVkaW9UcmFja1ByaXZhdGUmIHRy
YWNrLCBib29sIGVuYWJsZWQpCiB7Ci0gICAgaW50IHRyYWNrSUQgPSB0cmFjay0+dHJhY2tJRCgp
OworICAgIGludCB0cmFja0lEID0gdHJhY2suaWQoKS50b0ludCgpOwogCi0gICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCAiYXVkaW8gdHJhY2tJRCA9ICIsIHRyYWNrSUQsICIsIHNlbGVjdGVk
ID0gIiwgdHJhY2stPmVuYWJsZWQoKSk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAi
YXVkaW8gdHJhY2tJRCA9ICIsIHRyYWNrSUQsICIsIHNlbGVjdGVkID0gIiwgZW5hYmxlZCk7CiAK
LSAgICBpZiAoIXRyYWNrLT5lbmFibGVkKCkpIHsKKyAgICBpZiAoIWVuYWJsZWQpIHsKICAgICAg
ICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgogICAgICAgICBSZXRhaW5QdHI8
QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyPiByZW5kZXJlciA9IG1fYXVkaW9SZW5kZXJlcnMu
Z2V0KHRyYWNrSUQpOwogICAgICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAot
ICAgICAgICBbbV9wYXJzZXIgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YTpOTyBmb3JUcmFja0lE
OnRyYWNrSURdOworICAgICAgICBtX3BhcnNlci0+c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZv
clRyYWNrSUQoZmFsc2UsIHRyYWNrSUQpOwogICAgICAgICBpZiAobV9tZWRpYVNvdXJjZSkKICAg
ICAgICAgICAgIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5yZW1vdmVBdWRpb1JlbmRlcmVyKHJl
bmRlcmVyLmdldCgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBbbV9wYXJzZXIgc2V0U2hvdWxk
UHJvdmlkZU1lZGlhRGF0YTpZRVMgZm9yVHJhY2tJRDp0cmFja0lEXTsKKyAgICAgICAgbV9wYXJz
ZXItPnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKHRydWUsIHRyYWNrSUQpOwog
ICAgICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCiAgICAgICAgIFJldGFp
blB0cjxBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXI+IHJlbmRlcmVyOwogICAgICAgICBBTExP
V19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORApAQCAtOTI2LDYgKzc2OSwxMyBAQCB2b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQoQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdQogICAgIH0KIH0KIAorQVZTdHJlYW1EYXRhUGFyc2VyKiBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6cGFyc2VyKCkgY29uc3QKK3sKKyAgICBpZiAoaXM8U291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQz4obV9wYXJzZXIuZ2V0KCkpKQorICAgICAgICByZXR1cm4gZG93
bmNhc3Q8U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQz4obV9wYXJzZXIuZ2V0KCkpLnBhcnNlcigp
OworICAgIHJldHVybiBuaWw7Cit9CisKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OnNldENETVNlc3Npb24oQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyogc2Vzc2lvbikKIHsK
ICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKQEAgLTk4Nyw3ICs4MzcsOCBAQCB2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphdHRlbXB0VG9EZWNyeXB0KCkKICAgICBp
ZiAoIWluc3RhbmNlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgW2luc3RhbmNlU2Vz
c2lvbi0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50Om1fcGFyc2Vy
LmdldCgpXTsKKyAgICBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5wYXJzZXIoKSkKKyAgICAgICAg
W2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBp
ZW50OnBhcnNlcl07CiAgICAgaWYgKG1faGFzU2Vzc2lvblNlbWFwaG9yZSkgewogICAgICAgICBt
X2hhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwogICAgICAgICBtX2hhc1Nlc3Npb25TZW1h
cGhvcmUgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggYzc4Yjk1M2M3YmFh
OGVjYjI5MjhiZjJjM2RkNTUxYTkwZWQyMzhjYy4uNmIxMWNjYTMyYmRkNDlkMmFkZDYxMGU5YTdh
Nzc2YjU5NWI4YTk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGVBVkYu
aCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
CiAKQEAgLTQyLDE0ICs0MywxMSBAQCBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzsK
IGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIGZpbmFsIDogcHVibGlj
IFZpZGVvVHJhY2tQcml2YXRlQVZGIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShWaWRlb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQykKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFZp
ZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrKiB0
cmFjaywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKKyAgICBzdGF0aWMgUmVm
PFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNr
KiB0cmFjaykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2sp
KTsKICAgICB9CiAKLSAgICBib29sIHNlbGVjdGVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBzZXRTZWxlY3RlZChib29sKSBvdmVycmlkZTsKLQogICAgIHZvaWQgc2V0QXNzZXRUcmFjayhB
VkFzc2V0VHJhY2sqKTsKICAgICBBVkFzc2V0VHJhY2sqIGFzc2V0VHJhY2soKSBjb25zdDsKIApA
QCAtNTgsMTQgKzU2LDEyIEBAIHB1YmxpYzoKICAgICBGbG9hdFNpemUgbmF0dXJhbFNpemUoKSBj
b25zdDsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFy
ZW50KTsKKyAgICBleHBsaWNpdCBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhB
VkFzc2V0VHJhY2sqKTsKICAgICAKICAgICB2b2lkIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygp
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+IG1faW1w
bDsKLSAgICBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogbV9wYXJlbnQ7CiAgICAgaW50IG1f
dHJhY2tJRDsKLSAgICBib29sIG1fc2VsZWN0ZWQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCmluZGV4IDJjNzM5Mjc5NmUwZjUyNWY5NGMyOGFhMjBhYWQxMGUzMGQwZDA1MWMuLmFm
ZDFiN2YzYTkzMzQ5MTcxZDkxMDU4ZjY4NWNmZTgwYmI4ZDczMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tCkBAIC0zNCwxMSArMzQsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVZp
ZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQyogcGFyZW50KQorVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OlZpZGVv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2spCiAgICAg
OiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCi0g
ICAgLCBtX3BhcmVudChwYXJlbnQpCiAgICAgLCBtX3RyYWNrSUQoLTEpCi0gICAgLCBtX3NlbGVj
dGVkKGZhbHNlKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQpAQCAtNjUs
MjEgKzYzLDYgQEAgQVZBc3NldFRyYWNrKiBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6YXNzZXRUcmFjaygpIGNvbnN0CiAgICAgcmV0dXJuIG1faW1wbC0+YXNzZXRUcmFjaygp
OwogfQogCi0KLWJvb2wgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNlbGVj
dGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zZWxlY3RlZDsKLX0KLQotdm9pZCBWaWRlb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0U2VsZWN0ZWQoYm9vbCBzZWxlY3RlZCkK
LXsKLSAgICBpZiAobV9zZWxlY3RlZCA9PSBzZWxlY3RlZCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9zZWxlY3RlZCA9IHNlbGVjdGVkOwotICAgIG1fcGFyZW50LT50cmFja0RpZENoYW5nZUVu
YWJsZWQodGhpcyk7Ci19Ci0KIEZsb2F0U2l6ZSBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6bmF0dXJhbFNpemUoKSBjb25zdAogewogICAgIHJldHVybiBGbG9hdFNpemUoW2Fz
c2V0VHJhY2soKSBuYXR1cmFsU2l6ZV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWYyMGJjZjlkZjEwMWFjYTE4NWIyM2MzMTlmZDIzYmQ3ZWUyYzlkMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1
ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaCIKKwor
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPEF1
ZGlvVHJhY2tQcml2YXRlV2ViTT4gQXVkaW9UcmFja1ByaXZhdGVXZWJNOjpjcmVhdGUod2VibTo6
VHJhY2tFbnRyeSYmIHRyYWNrRW50cnkpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVk
aW9UcmFja1ByaXZhdGVXZWJNKFdURk1vdmUodHJhY2tFbnRyeSkpKTsKK30KKworQXVkaW9UcmFj
a1ByaXZhdGVXZWJNOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk0od2VibTo6VHJhY2tFbnRyeSYmIHRy
YWNrRW50cnkpCisgICAgOiBtX3RyYWNrKFdURk1vdmUodHJhY2tFbnRyeSkpCit7CisgICAgaWYg
KG1fdHJhY2suaXNfZW5hYmxlZC5pc19wcmVzZW50KCkpCisgICAgICAgIHNldEVuYWJsZWQobV90
cmFjay5pc19lbmFibGVkLnZhbHVlKCkpOworfQorCitBdG9tU3RyaW5nIEF1ZGlvVHJhY2tQcml2
YXRlV2ViTTo6aWQoKSBjb25zdAoreworICAgIGlmIChtX3RyYWNrSUQuaXNOdWxsKCkpCisgICAg
ICAgIG1fdHJhY2tJRCA9IG1fdHJhY2sudHJhY2tfdWlkLmlzX3ByZXNlbnQoKSA/IEF0b21TdHJp
bmc6Om51bWJlcihtX3RyYWNrLnRyYWNrX3VpZC52YWx1ZSgpKSA6IGVtcHR5QXRvbSgpOworICAg
IHJldHVybiBtX3RyYWNrSUQ7Cit9CisKK0F0b21TdHJpbmcgQXVkaW9UcmFja1ByaXZhdGVXZWJN
OjpsYWJlbCgpIGNvbnN0Cit7CisgICAgaWYgKG1fbGFiZWwuaXNOdWxsKCkpCisgICAgICAgIG1f
bGFiZWwgPSBtX3RyYWNrLm5hbWUuaXNfcHJlc2VudCgpID8gQXRvbVN0cmluZzo6ZnJvbVVURjgo
bV90cmFjay5uYW1lLnZhbHVlKCkuZGF0YSgpLCBtX3RyYWNrLm5hbWUudmFsdWUoKS5sZW5ndGgo
KSkgOiBlbXB0eUF0b20oKTsKKyAgICByZXR1cm4gbV9sYWJlbDsKK30KKworQXRvbVN0cmluZyBB
dWRpb1RyYWNrUHJpdmF0ZVdlYk06Omxhbmd1YWdlKCkgY29uc3QKK3sKKyAgICBpZiAobV9sYW5n
dWFnZS5pc051bGwoKSkKKyAgICAgICAgbV9sYW5ndWFnZSA9IG1fdHJhY2subGFuZ3VhZ2UuaXNf
cHJlc2VudCgpID8gQXRvbVN0cmluZzo6ZnJvbVVURjgobV90cmFjay5sYW5ndWFnZS52YWx1ZSgp
LmRhdGEoKSwgbV90cmFjay5sYW5ndWFnZS52YWx1ZSgpLmxlbmd0aCgpKSA6IGVtcHR5QXRvbSgp
OworICAgIHJldHVybiBtX2xhbmd1YWdlOworfQorCitpbnQgQXVkaW9UcmFja1ByaXZhdGVXZWJN
Ojp0cmFja0luZGV4KCkgY29uc3QKK3sKKyAgICBpZiAobV90cmFjay50cmFja19udW1iZXIuaXNf
cHJlc2VudCgpKQorICAgICAgICByZXR1cm4gbV90cmFjay50cmFja19udW1iZXIudmFsdWUoKTsK
KyAgICByZXR1cm4gMDsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NPVVJDRSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlv
VHJhY2tQcml2YXRlV2ViTS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE5NzhkZjc4YzNiNTZmYTRl
NzFiOTAxZGY2YWY3YzkyZTE2OTkxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5oCkBAIC0wLDAg
KzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHdlYm0v
ZG9tX3R5cGVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9UcmFja1By
aXZhdGVXZWJNIGZpbmFsIDogcHVibGljIEF1ZGlvVHJhY2tQcml2YXRlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmPEF1ZGlvVHJhY2tQcml2YXRlV2ViTT4gY3JlYXRlKHdlYm06OlRyYWNrRW50
cnkmJik7CisgICAgdmlydHVhbCB+QXVkaW9UcmFja1ByaXZhdGVXZWJNKCkgPSBkZWZhdWx0Owor
CisgICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IGZpbmFsOworICAgIEF0b21TdHJpbmcgbGFiZWwo
KSBjb25zdCBmaW5hbDsKKyAgICBBdG9tU3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgZmluYWw7Cisg
ICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBBdWRpb1Ry
YWNrUHJpdmF0ZVdlYk0od2VibTo6VHJhY2tFbnRyeSYmKTsKKyAgICB3ZWJtOjpUcmFja0VudHJ5
IG1fdHJhY2s7CisgICAgbXV0YWJsZSBBdG9tU3RyaW5nIG1fdHJhY2tJRDsKKyAgICBtdXRhYmxl
IEF0b21TdHJpbmcgbV9sYWJlbDsKKyAgICBtdXRhYmxlIEF0b21TdHJpbmcgbV9sYW5ndWFnZTsK
K307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODU1NjUwNTFhMzA0ZWZkYmZiZGNhODU2Mjg4ZmE2NDUw
NWYyN2ZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcApAQCAtMCwwICsxLDU2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlci5o
IgorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKworI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgi
CisjaW5jbHVkZSAiU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oIgorI2luY2x1ZGUgIlNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0uaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIFNvdXJjZUJ1ZmZlclBhcnNlcjo6aXNDb250ZW50
VHlwZVN1cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYgdHlwZSkKK3sKKyAgICBpZiAoU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCh0eXBlKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgaWYgKFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmlzQ29udGVu
dFR5cGVTdXBwb3J0ZWQodHlwZSkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBm
YWxzZTsKK30KKworUmVmUHRyPFNvdXJjZUJ1ZmZlclBhcnNlcj4gU291cmNlQnVmZmVyUGFyc2Vy
OjpjcmVhdGUoY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlKQoreworICAgIGlmIChXVEY6
OmVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY29udGVudFR5cGUuY29udGFpbmVyVHlwZSgpLCAiYXVk
aW8vd2VibSIpIHx8IFdURjo6ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb250ZW50VHlwZS5jb250
YWluZXJUeXBlKCksICJ2aWRlby93ZWJtIikpCisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakMoKSk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0MzFjYzI5YjZmOTVj
Y2EwMDRmMmY0NWRmOGUzNTA3M2U1ODZmNTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaApAQCAtMCww
ICsxLDEwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElB
X1NPVVJDRSkKKworI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaCIKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OEFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDb250ZW50VHlwZTsKK2NsYXNz
IE1lZGlhU2FtcGxlOworCitjbGFzcyBTb3VyY2VCdWZmZXJQYXJzZXIgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8U291cmNlQnVmZmVyUGFyc2VyPiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IGJvb2wgaXNDb250ZW50VHlwZVN1cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYpOworCisgICAg
c3RhdGljIFJlZlB0cjxTb3VyY2VCdWZmZXJQYXJzZXI+IGNyZWF0ZShjb25zdCBDb250ZW50VHlw
ZSYpOworICAgIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclBhcnNlcigpID0gZGVmYXVsdDsKKworICAg
IGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeworICAgICAgICBBVkZPYmpDLAorICAgICAgICBX
ZWJNLAorICAgIH07CisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7CisgICAgZW51
bSBjbGFzcyBBcHBlbmRGbGFncyA6IHVpbnQ4X3QgeworICAgICAgICBOb25lLAorICAgICAgICBE
aXNjb250aW51aXR5LAorICAgIH07CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZERhdGEoVmVjdG9y
PHVuc2lnbmVkIGNoYXI+JiYsIEFwcGVuZEZsYWdzID0gQXBwZW5kRmxhZ3M6Ok5vbmUpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZmx1c2hQZW5kaW5nTWVkaWFEYXRhKCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChib29sLCBpbnQzMl90
KSA9IDA7CisgICAgdmlydHVhbCBib29sIHNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lE
KGludDMyX3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpID0gMDsK
KworICAgIC8vIFdpbGwgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICB1c2luZyBJ
bml0aWFsaXphdGlvblNlZ21lbnQgPSBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFs
aXphdGlvblNlZ21lbnQ7CisgICAgdXNpbmcgRGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxs
YmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChJbml0aWFsaXphdGlvblNlZ21lbnQmJik+OworICAg
IHZvaWQgc2V0RGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhEaWRQYXJzZUluaXRp
YWxpemF0aW9uRGF0YUNhbGxiYWNrJiYgY2FsbGJhY2spCisgICAgeworICAgICAgICBtX2RpZFBh
cnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKKyAgICB9
CisKKyAgICAvLyBXaWxsIGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgdXNpbmcg
RGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZv
aWQoaW50MzJfdCBlcnJvckNvZGUpPjsKKyAgICB2b2lkIHNldERpZEVuY291bnRlckVycm9yRHVy
aW5nUGFyc2luZ0NhbGxiYWNrKERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNr
JiYgY2FsbGJhY2spCisgICAgeworICAgICAgICBtX2RpZEVuY291bnRlckVycm9yRHVyaW5nUGFy
c2luZ0NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CisgICAgfQorCisgICAgLy8gV2lsbCBi
ZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgorICAgIHVzaW5nIERpZFByb3ZpZGVNZWRpYURh
dGFDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChSZWY8TWVkaWFTYW1wbGU+JiYsIGludDMy
X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpPjsKKyAgICB2b2lkIHNldERpZFBy
b3ZpZGVNZWRpYURhdGFDYWxsYmFjayhEaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2smJiBjYWxs
YmFjaykKKyAgICB7CisgICAgICAgIG1fZGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayk7CisgICAgfQorCisgICAgLy8gV2lsbCBiZSBjYWxsZWQgc3luY2hyb25v
dXNseSBvbiB0aGUgcGFyc2VyIHRoZWFkLgorICAgIHVzaW5nIFdpbGxQcm92aWRlQ29udGVudEtl
eVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0
aW9uPHZvaWQodWludDMyX3QgdHJhY2tJRCk+OworICAgIHZvaWQgc2V0V2lsbFByb3ZpZGVDb250
ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayhXaWxsUHJv
dmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNr
JiYgY2FsbGJhY2spCisgICAgeworICAgICAgICBtX3dpbGxQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KTsKKyAgICB9CisKKyAgICAvLyBXaWxsIGJlIGNhbGxlZCBzeW5jaHJvbm91c2x5IG9uIHRoZSBw
YXJzZXIgdGhlYWQuCisgICAgdXNpbmcgRGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlh
bGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKFJlZjxV
aW50OEFycmF5PiYmLCBpbnQzMl90IHRyYWNrSUQpPjsKKyAgICB2b2lkIHNldERpZFByb3ZpZGVD
b250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayhEaWRQ
cm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJh
Y2smJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIG1fZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1
ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgU291cmNlQnVmZmVyUGFyc2VyKCkgPSBkZWZh
dWx0OworCisgICAgRGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayBtX2RpZFBhcnNl
SW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2s7CisgICAgRGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQ
YXJzaW5nQ2FsbGJhY2sgbV9kaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjazsK
KyAgICBEaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2sgbV9kaWRQcm92aWRlTWVkaWFEYXRhQ2Fs
bGJhY2s7CisgICAgV2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0
YUZvclRyYWNrSURDYWxsYmFjayBtX3dpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFs
aXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2s7CisgICAgRGlkUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrIG1fZGlkUHJvdmlkZUNv
bnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrOworfTsK
KworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTFiNmJiYzQ2NDNkNDNkNzFjZjE3MmFiYzhjNzAx
ZGM3ZWY1MzRjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0wLDAgKzEsMzYyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uaCIKKworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisKKyNpbmNsdWRlICJB
dWRpb1RyYWNrUHJpdmF0ZVdlYk0uaCIKKyNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRl
LmgiCisjaW5jbHVkZSAiTWVkaWFEZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlV2ViTS5oIgorI2luY2x1
ZGUgPHdlYm0vd2VibV9wYXJzZXIuaD4KKyNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9kYXJ3aW4vV2Vha0xp
bmtpbmcuaD4KKworV1RGX1dFQUtfTElOS19GT1JDRV9JTVBPUlQod2VibTo6c3dhcCk7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGJvb2wgaXNXZWJtUGFyc2VyQXZhaWxhYmxlKCkK
K3sKKyAgICByZXR1cm4gISF3ZWJtOjpzd2FwICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkud2ViTVBhcnNlckVuYWJsZWQoKTsKK30KKwordXNpbmcgbmFtZXNwYWNl
IHdlYm07CisKK2NsYXNzIFZlY3RvclJlYWRlciBmaW5hbCA6IHB1YmxpYyB3ZWJtOjpSZWFkZXIg
eworcHVibGljOgorICAgIFZlY3RvclJlYWRlcihWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRh
KQorICAgICAgICA6IG1fZGF0YSB7IFdURk1vdmUoZGF0YSkgfQorICAgIHsKKyAgICB9CisKKyAg
ICBTdGF0dXMgUmVhZChzdGQ6OnNpemVfdCBudW1Ub1JlYWQsIHVpbnQ4X3QqIG91dHB1dEJ1ZmZl
ciwgdWludDY0X3QqIG51bUFjdHVhbGx5UmVhZCkgZmluYWwKKyAgICB7CisgICAgICAgIEFTU0VS
VChvdXRwdXRCdWZmZXIgJiYgbnVtQWN0dWFsbHlSZWFkKTsKKyAgICAgICAgaWYgKCFvdXRwdXRC
dWZmZXIgfHwgIW51bUFjdHVhbGx5UmVhZCkKKyAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3Rh
dHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKworICAgICAgICBpZiAobV9wb3NpdGlvbiA+PSBtX2Rh
dGEuc2l6ZSgpKSB7CisgICAgICAgICAgICAqbnVtQWN0dWFsbHlSZWFkID0gMDsKKyAgICAgICAg
ICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprRW5kT2ZGaWxlKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHNpemVfdCBudW1BdmFpbGFibGUgPSBtX2RhdGEuc2l6ZSgpIC0gbV9wb3NpdGlvbjsKKyAg
ICAgICAgaWYgKG51bVRvUmVhZCA8IG51bUF2YWlsYWJsZSkgeworICAgICAgICAgICAgbWVtY3B5
KG91dHB1dEJ1ZmZlciwgbV9kYXRhLmRhdGEoKSArIG1fcG9zaXRpb24sIG51bVRvUmVhZCk7Cisg
ICAgICAgICAgICAqbnVtQWN0dWFsbHlSZWFkID0gbnVtVG9SZWFkOworICAgICAgICAgICAgbV9w
b3NpdGlvbiArPSBudW1Ub1JlYWQ7CisgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6
a09rQ29tcGxldGVkKTsKKyAgICAgICAgfQorCisgICAgICAgIG1lbWNweShvdXRwdXRCdWZmZXIs
IG1fZGF0YS5kYXRhKCkgKyBtX3Bvc2l0aW9uLCBudW1BdmFpbGFibGUpOworICAgICAgICAqbnVt
QWN0dWFsbHlSZWFkID0gbnVtQXZhaWxhYmxlOworICAgICAgICBtX3Bvc2l0aW9uICs9IG51bUF2
YWlsYWJsZTsKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa1BhcnRpYWwpOworICAg
IH0KKworICAgIFN0YXR1cyBTa2lwKHVpbnQ2NF90IG51bVRvU2tpcCwgdWludDY0X3QqIG51bUFj
dHVhbGx5U2tpcHBlZCkgZmluYWwKKyAgICB7CisgICAgICAgIEFTU0VSVChudW1BY3R1YWxseVNr
aXBwZWQpOworICAgICAgICBpZiAoIW51bUFjdHVhbGx5U2tpcHBlZCkKKyAgICAgICAgICAgIHJl
dHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKworICAgICAgICBpZiAobV9w
b3NpdGlvbiA+PSBtX2RhdGEuc2l6ZSgpKSB7CisgICAgICAgICAgICAqbnVtQWN0dWFsbHlTa2lw
cGVkID0gMDsKKyAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprV291bGRCbG9jayk7
CisgICAgICAgIH0KKworICAgICAgICBzaXplX3QgbnVtQXZhaWxhYmxlID0gbV9kYXRhLnNpemUo
KSAtIG1fcG9zaXRpb247CisKKyAgICAgICAgaWYgKG51bVRvU2tpcCA8IG51bUF2YWlsYWJsZSkg
eworICAgICAgICAgICAgKm51bUFjdHVhbGx5U2tpcHBlZCA9IG51bVRvU2tpcDsKKyAgICAgICAg
ICAgIG1fcG9zaXRpb24gKz0gbnVtVG9Ta2lwOworICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhT
dGF0dXM6OmtPa0NvbXBsZXRlZCk7CisgICAgICAgIH0KKworICAgICAgICAqbnVtQWN0dWFsbHlT
a2lwcGVkID0gbnVtQXZhaWxhYmxlOworICAgICAgICBtX3Bvc2l0aW9uICs9IG51bUF2YWlsYWJs
ZTsKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa1BhcnRpYWwpOworICAgIH0KKwor
ICAgIHVpbnQ2NF90IFBvc2l0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wb3NpdGlvbjsg
fQorCitwcml2YXRlOgorICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBtX2RhdGE7CisgICAgc2l6
ZV90IG1fcG9zaXRpb24geyAwIH07Cit9OworCitjbGFzcyBNZWRpYURlc2NyaXB0aW9uV2ViTSBm
aW5hbCA6IHB1YmxpYyBNZWRpYURlc2NyaXB0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PE1lZGlhRGVzY3JpcHRpb25XZWJNPiBjcmVhdGUod2VibTo6VHJhY2tFbnRyeSYmIHRyYWNrKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFEZXNjcmlwdGlvbldlYk0o
V1RGTW92ZSh0cmFjaykpKTsKKyAgICB9CisKKyAgICBNZWRpYURlc2NyaXB0aW9uV2ViTSh3ZWJt
OjpUcmFja0VudHJ5JiYgdHJhY2spCisgICAgICAgIDogbV90cmFjayB7IFdURk1vdmUodHJhY2sp
IH0KKyAgICB7CisgICAgfQorCisgICAgQXRvbVN0cmluZyBjb2RlYygpIGNvbnN0IGZpbmFsCisg
ICAgeworICAgICAgICBpZiAobV9jb2RlYykKKyAgICAgICAgICAgIHJldHVybiAqbV9jb2RlYzsK
KworICAgICAgICAvLyBGcm9tOiBodHRwczovL3d3dy5tYXRyb3NrYS5vcmcvdGVjaG5pY2FsL2Nv
ZGVjX3NwZWNzLmh0bWwKKyAgICAgICAgLy8gIkVhY2ggQ29kZWMgSUQgTVVTVCBpbmNsdWRlIGEg
TWFqb3IgQ29kZWMgSUQgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRoZSBDb2RlYyBJRCBQcmVmaXgu
CisgICAgICAgIC8vIEEgTWFqb3IgQ29kZWMgSUQgTUFZIGJlIGZvbGxvd2VkIGJ5IGFuIE9QVElP
TkFMIENvZGVjIElEIFN1ZmZpeCB0byBjb21tdW5pY2F0ZSBhIHJlZmluZW1lbnQKKyAgICAgICAg
Ly8gb2YgdGhlIE1ham9yIENvZGVjIElELiBJZiBhIENvZGVjIElEIFN1ZmZpeCBpcyB1c2VkLCB0
aGVuIHRoZSBDb2RlYyBJRCBNVVNUIGluY2x1ZGUgYSBmb3J3YXJkCisgICAgICAgIC8vIHNsYXNo
ICjigJwv4oCdKSBhcyBhIHNlcGFyYXRvciBiZXR3ZWVuIHRoZSBNYWpvciBDb2RlYyBJRCBhbmQg
dGhlIENvZGVjIElEIFN1ZmZpeC4gVGhlIE1ham9yIENvZGVjCisgICAgICAgIC8vIElEIE1VU1Qg
YmUgY29tcG9zZWQgb2Ygb25seSBjYXBpdGFsIGxldHRlcnMgKEEtWikgYW5kIG51bWJlcnMgKDAt
OSkuIFRoZSBDb2RlYyBJRCBTdWZmaXggTVVTVAorICAgICAgICAvLyBiZSBjb21wb3NlZCBvZiBv
bmx5IGNhcGl0YWwgbGV0dGVycyAoQS1aKSwgbnVtYmVycyAoMC05KSwgdW5kZXJzY29yZSAo4oCc
X+KAnSksIGFuZCBmb3J3YXJkIHNsYXNoICjigJwv4oCdKS4iCisKKyAgICAgICAgaWYgKCFtX3Ry
YWNrLmNvZGVjX2lkLmlzX3ByZXNlbnQoKSkgeworICAgICAgICAgICAgbV9jb2RlYyA9IGVtcHR5
QXRvbSgpOworICAgICAgICAgICAgcmV0dXJuICptX2NvZGVjOworICAgICAgICB9CisKKyAgICAg
ICAgU3RyaW5nVmlldyBjb2RlY0lEIHsgbV90cmFjay5jb2RlY19pZC52YWx1ZSgpLmRhdGEoKSwg
KHVuc2lnbmVkKW1fdHJhY2suY29kZWNfaWQudmFsdWUoKS5sZW5ndGgoKSB9OworICAgICAgICBp
ZiAoIWNvZGVjSUQuc3RhcnRzV2l0aCgiVl8iKSAmJiAhY29kZWNJRC5zdGFydHNXaXRoKCJBXyIp
ICYmICFjb2RlY0lELnN0YXJ0c1dpdGgoIlNfIikpIHsKKyAgICAgICAgICAgIG1fY29kZWMgPSBl
bXB0eUF0b20oKTsKKyAgICAgICAgICAgIHJldHVybiAqbV9jb2RlYzsKKyAgICAgICAgfQorCisg
ICAgICAgIGF1dG8gc2xhc2hMb2NhdGlvbiA9IGNvZGVjSUQuZmluZCgnLycpOworICAgICAgICBh
dXRvIGxlbmd0aCA9IHNsYXNoTG9jYXRpb24gPT0gbm90Rm91bmQgPyBjb2RlY0lELmxlbmd0aCgp
IC0gMiA6IHNsYXNoTG9jYXRpb24gLSAyOworICAgICAgICBtX2NvZGVjID0gQXRvbVN0cmluZyB7
IGNvZGVjSUQuc3Vic3RyaW5nKDIsIGxlbmd0aCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSB9
OworICAgICAgICByZXR1cm4gKm1fY29kZWM7CisgICAgfQorICAgIGJvb2wgaXNWaWRlbygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fdHJhY2sudHJhY2tfdHlwZS5pc19wcmVzZW50KCkgJiYgbV90
cmFjay50cmFja190eXBlLnZhbHVlKCkgPT0gVHJhY2tUeXBlOjprVmlkZW87IH0KKyAgICBib29s
IGlzQXVkaW8oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RyYWNrLnRyYWNrX3R5cGUuaXNfcHJl
c2VudCgpICYmIG1fdHJhY2sudHJhY2tfdHlwZS52YWx1ZSgpID09IFRyYWNrVHlwZTo6a0F1ZGlv
OyB9CisgICAgYm9vbCBpc1RleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RyYWNrLnRyYWNr
X3R5cGUuaXNfcHJlc2VudCgpICYmIG1fdHJhY2sudHJhY2tfdHlwZS52YWx1ZSgpID09IFRyYWNr
VHlwZTo6a1N1YnRpdGxlOyB9CisKKyAgICBjb25zdCB3ZWJtOjpUcmFja0VudHJ5JiB0cmFjaygp
IHsgcmV0dXJuIG1fdHJhY2s7IH0KKworcHJpdmF0ZToKKyAgICBtdXRhYmxlIE9wdGlvbmFsPEF0
b21TdHJpbmc+IG1fY29kZWM7CisgICAgd2VibTo6VHJhY2tFbnRyeSBtX3RyYWNrOworfTsKKwor
c3RhdGljIFZlY3RvcjxTdHJpbmc+IHN1cHBvcnRlZFdlYk1Db2RlY3MoKQoreworICAgIGF1dG8g
Y29kZWNzID0gbWFrZU5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHJpbmc+Pih7CisgICAgICAgICJ2
cDA5IiwKKyAgICAgICAgInZvcmJpcyIsCisgICAgICAgICJvcHVzIiwKKyAgICB9KTsKKyAgICBy
ZXR1cm4gY29kZWNzOworfQorCitib29sIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmlzQ29udGVu
dFR5cGVTdXBwb3J0ZWQoY29uc3QgQ29udGVudFR5cGUmIHR5cGUpCit7CisgICAgaWYgKCFpc1dl
Ym1QYXJzZXJBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFX
VEY6OmVxdWFsSWdub3JpbmdBU0NJSUNhc2UodHlwZS5jb250YWluZXJUeXBlKCksICJhdWRpby93
ZWJtIikKKyAgICAgICAgJiYgIVdURjo6ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLmNvbnRh
aW5lclR5cGUoKSwgInZpZGVvL3dlYm0iKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
U3RyaW5nIGNvZGVjc1BhcmFtZXRlciA9IHR5cGUucGFyYW1ldGVyKENvbnRlbnRUeXBlOjpjb2Rl
Y3NQYXJhbWV0ZXIoKSk7CisgICAgaWYgKCFjb2RlY3NQYXJhbWV0ZXIpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgYXV0byBzcGxpdFJlc3VsdHMgPSBTdHJpbmdWaWV3KGNvZGVjc1BhcmFt
ZXRlcikuc3BsaXQoJywnKTsKKyAgICBmb3IgKGF1dG8gc3BsaXQgOiBzcGxpdFJlc3VsdHMpIHsK
KyAgICAgICAgcmV0dXJuIFdURjo6YW55T2Yoc3VwcG9ydGVkV2ViTUNvZGVjcygpLCBbJl0oYXV0
byYgY29kZWMpIHsKKyAgICAgICAgICAgIHJldHVybiBzcGxpdC5zdGFydHNXaXRoKGNvZGVjKTsK
KyAgICAgICAgfSk7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitTb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNKCkKK3sKKyAgICBpZiAoaXNXZWJtUGFy
c2VyQXZhaWxhYmxlKCkpCisgICAgICAgIG1fcGFyc2VyID0gV1RGOjptYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxXZWJtUGFyc2VyPigpOworfQorCitTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjp+U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpID0gZGVmYXVsdDsKKwordm9pZCBTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjphcHBlbmREYXRhKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGJ1ZmZl
ciwgQXBwZW5kRmxhZ3MgYXBwZW5kRmxhZ3MpCit7CisgICAgaWYgKCFtX3BhcnNlcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgVmVjdG9yUmVhZGVyIHJlYWRlciB7IFdURk1vdmUoYnVmZmVyKSB9
OworICAgIGlmIChhcHBlbmRGbGFncyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGludWl0eSkKKyAg
ICAgICAgbV9wYXJzZXItPkRpZFNlZWsoKTsKKyAgICBtX3N0YXR1cyA9IG1fcGFyc2VyLT5GZWVk
KHRoaXMsICZyZWFkZXIpOworICAgIGlmIChtX3N0YXR1cy5vaygpIHx8IG1fc3RhdHVzLmNvZGUg
PT0gU3RhdHVzOjprRW5kT2ZGaWxlKQorICAgICAgICByZXR1cm47CisKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvZGUgPSBtX3N0
YXR1cy5jb2RlXSB7CisgICAgICAgIGlmIChtX2RpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2lu
Z0NhbGxiYWNrKQorICAgICAgICAgICAgbV9kaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdD
YWxsYmFjayhjb2RlKTsKKyAgICB9KTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
OjpmbHVzaFBlbmRpbmdNZWRpYURhdGEoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZv
clRyYWNrSUQoYm9vbCwgaW50MzJfdCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiti
b29sIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFj
a0lEKGludDMyX3QpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6cmVzZXRQYXJzZXJTdGF0ZSgpCit7
CisgICAgbV9wYXJzZXItPkRpZFNlZWsoKTsKKyAgICBtX3N0YXRlID0gU3RhdGU6Ok5vbmU7Cit9
CisKK1N0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkVsZW1lbnRCZWdpbihjb25zdCBF
bGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBBY3Rpb24qIGFjdGlvbikKK3sKKyAgICBVTlVTRURf
UEFSQU0obWV0YWRhdGEpOworICAgIEFTU0VSVChhY3Rpb24pOworICAgIGlmICghYWN0aW9uKQor
ICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisKKyAgICBp
ZiAoKG1fc3RhdGUgPT0gU3RhdGU6Ok5vbmUgJiYgbWV0YWRhdGEuaWQgIT0gSWQ6OmtFYm1sKQor
ICAgICAgICB8fCAobV9zdGF0ZSA9PSBTdGF0ZTo6UmVhZEVibWwgJiYgbWV0YWRhdGEuaWQgIT0g
SWQ6OmtTZWdtZW50KQorICAgICAgICB8fCAobV9zdGF0ZSA9PSBTdGF0ZTo6UmVhZGluZ1NlZ21l
bnQgJiYgbWV0YWRhdGEuaWQgIT0gSWQ6OmtJbmZvKQorICAgICAgICB8fCAobV9zdGF0ZSA9PSBT
dGF0ZTo6UmVhZEluZm8gJiYgbWV0YWRhdGEuaWQgIT0gSWQ6OmtUcmFja3MpCisgICAgICAgIHx8
IChtX3N0YXRlID09IFN0YXRlOjpSZWFkVHJhY2sgJiYgbWV0YWRhdGEuaWQgIT0gSWQ6OmtUcmFj
a0VudHJ5ICYmIG1ldGFkYXRhLmlkICE9IElkOjprQ2x1c3RlcikKKyAgICAgICAgfHwgKG1ldGFk
YXRhLmlkID09IElkOjprQ3VlcyB8fCBtZXRhZGF0YS5pZCA9PSBJZDo6a0NoYXB0ZXJzKSkgewor
ICAgICAgICAqYWN0aW9uID0gQWN0aW9uOjprU2tpcDsKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhT
dGF0dXM6OmtPa0NvbXBsZXRlZCk7CisgICAgfQorCisgICAgaWYgKG1ldGFkYXRhLmlkID09IElk
OjprRWJtbCkKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkaW5nRWJtbDsKKyAgICBlbHNl
IGlmIChtZXRhZGF0YS5pZCA9PSBJZDo6a1NlZ21lbnQpCisgICAgICAgIG1fc3RhdGUgPSBTdGF0
ZTo6UmVhZGluZ1NlZ21lbnQ7CisgICAgZWxzZSBpZiAobWV0YWRhdGEuaWQgPT0gSWQ6OmtJbmZv
KQorICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWRpbmdJbmZvOworICAgIGVsc2UgaWYgKG1l
dGFkYXRhLmlkID09IElkOjprVHJhY2tzKQorICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWRp
bmdUcmFja3M7CisgICAgZWxzZSBpZiAobWV0YWRhdGEuaWQgPT0gSWQ6OmtUcmFja0VudHJ5KQor
ICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWRpbmdUcmFjazsKKyAgICBlbHNlIGlmIChtZXRh
ZGF0YS5pZCA9PSBJZDo6a0NsdXN0ZXIpCisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZGlu
Z0NsdXN0ZXI7CisKKyAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKK30K
KworU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRWJtbChjb25zdCBFbGVtZW50TWV0
YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBFYm1sJiBlYm1sKQoreworICAgIFVOVVNFRF9QQVJBTSht
ZXRhZGF0YSk7CisgICAgaWYgKGVibWwuZG9jX3R5cGUuaXNfcHJlc2VudCgpICYmIGVibWwuZG9j
X3R5cGUudmFsdWUoKS5jb21wYXJlKCJ3ZWJtIikpCisgICAgICAgIHJldHVybiBTdGF0dXMoU3Rh
dHVzOjpDb2RlKEVycm9yQ29kZTo6SW52YWxpZERvY1R5cGUpKTsKKworICAgIG1faW5pdGlhbGl6
YXRpb25TZWdtZW50RW5jb3VudGVyZWQgPSB0cnVlOworICAgIG1faW5pdGlhbGl6YXRpb25TZWdt
ZW50ID0gV1RGOjptYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxJbml0aWFsaXphdGlv
blNlZ21lbnQ+KCk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkRWJtbDsKKworICAgIHJldHVy
biBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworfQorCitTdGF0dXMgU291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6T25TZWdtZW50QmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0
YSwgQWN0aW9uKiBhY3Rpb24pCit7CisgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKKyAgICBp
ZiAoIW1faW5pdGlhbGl6YXRpb25TZWdtZW50RW5jb3VudGVyZWQpCisgICAgICAgIHJldHVybiBT
dGF0dXMoU3RhdHVzOjpDb2RlKEVycm9yQ29kZTo6SW52YWxpZEluaXRTZWdtZW50KSk7CisKKyAg
ICBBU1NFUlQoYWN0aW9uKTsKKyAgICBpZiAoIWFjdGlvbikKKyAgICAgICAgcmV0dXJuIFN0YXR1
cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworICAgICphY3Rpb24gPSBBY3Rpb246OmtSZWFk
OworCisgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7Cit9CisKK1N0YXR1
cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkluZm8oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBt
ZXRhZGF0YSwgY29uc3QgSW5mbyYgaW5mbykKK3sKKyAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEp
OworICAgIGlmICghbV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCB8fCAhbV9pbml0
aWFsaXphdGlvblNlZ21lbnQpCisgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjpDb2RlKEVy
cm9yQ29kZTo6SW52YWxpZEluaXRTZWdtZW50KSk7CisKKyAgICBhdXRvIHRpbWVjb2RlU2NhbGUg
PSBpbmZvLnRpbWVjb2RlX3NjYWxlLmlzX3ByZXNlbnQoKSA/IGluZm8udGltZWNvZGVfc2NhbGUu
dmFsdWUoKSA6IDEwMDAwMDA7CisgICAgbV90aW1lc2NhbGUgPSAxMDAwMDAwMDAwIC8gdGltZWNv
ZGVTY2FsZTsKKyAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudC0+ZHVyYXRpb24gPSBpbmZvLmR1
cmF0aW9uLmlzX3ByZXNlbnQoKSA/IE1lZGlhVGltZShpbmZvLmR1cmF0aW9uLnZhbHVlKCksIG1f
dGltZXNjYWxlKSA6IE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKTsKKyAgICBtX3N0YXRlID0g
U3RhdGU6OlJlYWRJbmZvOworCisgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRl
ZCk7Cit9CisKK1N0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkNsdXN0ZXJCZWdpbihj
b25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBDbHVzdGVyJiBjbHVzdGVyLCBB
Y3Rpb24qIGFjdGlvbikKK3sKKyAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOworICAgIFVOVVNF
RF9QQVJBTShjbHVzdGVyKTsKKyAgICBBU1NFUlQoYWN0aW9uKTsKKyAgICBpZiAoIWFjdGlvbikK
KyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworCisgICAg
aWYgKG1faW5pdGlhbGl6YXRpb25TZWdtZW50RW5jb3VudGVyZWQgJiYgbV9kaWRQYXJzZUluaXRp
YWxpemF0aW9uRGF0YUNhbGxiYWNrKSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5pdGlhbGl6YXRpb25TZWdtZW50ID0g
V1RGTW92ZSgqbV9pbml0aWFsaXphdGlvblNlZ21lbnQpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhXVEZNb3ZlKGluaXRpYWxp
emF0aW9uU2VnbWVudCkpOworICAgICAgICB9KTsKKyAgICB9CisgICAgbV9pbml0aWFsaXphdGlv
blNlZ21lbnRFbmNvdW50ZXJlZCA9IGZhbHNlOworICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50
ID0gbnVsbHB0cjsKKworICAgICphY3Rpb24gPSBBY3Rpb246OmtSZWFkOworCisgICAgcmV0dXJu
IFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7Cit9CisKK1N0YXR1cyBTb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNOjpPblRyYWNrRW50cnkoY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwg
Y29uc3QgVHJhY2tFbnRyeSYgdHJhY2tFbnRyeSkKK3sKKyAgICBVTlVTRURfUEFSQU0obWV0YWRh
dGEpOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZFRyYWNrOworICAgIGlmICghdHJhY2tFbnRy
eS50cmFja190eXBlLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6
OmtPa0NvbXBsZXRlZCk7CisKKyAgICBhdXRvIHRyYWNrVHlwZSA9IHRyYWNrRW50cnkudHJhY2tf
dHlwZS52YWx1ZSgpOworICAgIGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprVmlkZW8pCisg
ICAgICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50LT52aWRlb1RyYWNrcy5hcHBlbmQoeyBNZWRp
YURlc2NyaXB0aW9uV2ViTTo6Y3JlYXRlKFRyYWNrRW50cnkodHJhY2tFbnRyeSkpLCBWaWRlb1Ry
YWNrUHJpdmF0ZVdlYk06OmNyZWF0ZShUcmFja0VudHJ5KHRyYWNrRW50cnkpKSB9KTsKKyAgICBl
bHNlIGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprQXVkaW8pCisgICAgICAgIG1faW5pdGlh
bGl6YXRpb25TZWdtZW50LT5hdWRpb1RyYWNrcy5hcHBlbmQoeyBNZWRpYURlc2NyaXB0aW9uV2Vi
TTo6Y3JlYXRlKFRyYWNrRW50cnkodHJhY2tFbnRyeSkpLCBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06
OmNyZWF0ZShUcmFja0VudHJ5KHRyYWNrRW50cnkpKSB9KTsKKworICAgIHJldHVybiBTdGF0dXMo
U3RhdHVzOjprT2tDb21wbGV0ZWQpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlYjQ4MGYy
Nzg4ODk5ZThhM2NmNDczNzZlNTIwMmE1OWFlODZlNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmgKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCisKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXIuaCIKKyNp
bmNsdWRlIDx3ZWJtL2NhbGxiYWNrLmg+CisjaW5jbHVkZSA8d2VibS9zdGF0dXMuaD4KKyNpbmNs
dWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3
dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCit0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZl
ciAqQ01TYW1wbGVCdWZmZXJSZWY7CisKK25hbWVzcGFjZSB3ZWJtIHsKK2NsYXNzIFdlYm1QYXJz
ZXI7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU291cmNlQnVmZmVyUGFyc2Vy
V2ViTSA6IHB1YmxpYyBTb3VyY2VCdWZmZXJQYXJzZXIsIHByaXZhdGUgd2VibTo6Q2FsbGJhY2sg
eworcHVibGljOgorICAgIHN0YXRpYyBib29sIGlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29uc3Qg
Q29udGVudFR5cGUmKTsKKworICAgIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKTsKKyAgICB+U291
cmNlQnVmZmVyUGFyc2VyV2ViTSgpOworCisgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsK
KworICAgIGNvbnN0IHdlYm06OlN0YXR1cyYgc3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
dXM7IH0KKworICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIFR5cGU6OldlYk07IH0KKyAg
ICB2b2lkIGFwcGVuZERhdGEoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYsIEFwcGVuZEZsYWdzID0g
QXBwZW5kRmxhZ3M6Ok5vbmUpIGZpbmFsOworICAgIHZvaWQgZmx1c2hQZW5kaW5nTWVkaWFEYXRh
KCkgZmluYWw7CisgICAgdm9pZCBzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChi
b29sLCBpbnQzMl90KSBmaW5hbDsKKyAgICBib29sIHNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JU
cmFja0lEKGludDMyX3QpIGZpbmFsOworICAgIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpIGZpbmFs
OworCisgICAgZW51bSBjbGFzcyBFcnJvckNvZGUgOiBpbnQzMl90IHsKKyAgICAgICAgU291cmNl
QnVmZmVyUGFyc2VyV2ViTUVycm9yQ29kZVN0YXJ0ID0gMjAwMCwKKyAgICAgICAgSW52YWxpZERv
Y1R5cGUsCisgICAgICAgIEludmFsaWRJbml0U2VnbWVudCwKKyAgICB9OworCitwcml2YXRlOgor
ICAgIC8vIHdlYm06OkNhbGxiYWNrCisgICAgd2VibTo6U3RhdHVzIE9uRWxlbWVudEJlZ2luKGNv
bnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYsIHdlYm06OkFjdGlvbiopIGZpbmFsOworICAgIHdl
Ym06OlN0YXR1cyBPbkVibWwoY29uc3Qgd2VibTo6RWxlbWVudE1ldGFkYXRhJiwgY29uc3Qgd2Vi
bTo6RWJtbCYpIGZpbmFsOworICAgIHdlYm06OlN0YXR1cyBPblNlZ21lbnRCZWdpbihjb25zdCB3
ZWJtOjpFbGVtZW50TWV0YWRhdGEmLCB3ZWJtOjpBY3Rpb24qKSBmaW5hbDsKKyAgICB3ZWJtOjpT
dGF0dXMgT25JbmZvKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYsIGNvbnN0IHdlYm06Oklu
Zm8mKSBmaW5hbDsKKyAgICB3ZWJtOjpTdGF0dXMgT25DbHVzdGVyQmVnaW4oY29uc3Qgd2VibTo6
RWxlbWVudE1ldGFkYXRhJiwgY29uc3Qgd2VibTo6Q2x1c3RlciYsIHdlYm06OkFjdGlvbiopIGZp
bmFsOworICAgIHdlYm06OlN0YXR1cyBPblRyYWNrRW50cnkoY29uc3Qgd2VibTo6RWxlbWVudE1l
dGFkYXRhJiwgY29uc3Qgd2VibTo6VHJhY2tFbnRyeSYpIGZpbmFsOworCisgICAgc3RkOjp1bmlx
dWVfcHRyPEluaXRpYWxpemF0aW9uU2VnbWVudD4gbV9pbml0aWFsaXphdGlvblNlZ21lbnQ7Cisg
ICAgd2VibTo6U3RhdHVzIG1fc3RhdHVzOworICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJtOjpXZWJt
UGFyc2VyPiBtX3BhcnNlcjsKKyAgICBib29sIG1faW5pdGlhbGl6YXRpb25TZWdtZW50RW5jb3Vu
dGVyZWQgeyBmYWxzZSB9OworICAgIHVpbnQzMl90IG1fdGltZXNjYWxlIHsgMTAwMCB9OworCisg
ICAgZW51bSBjbGFzcyBTdGF0ZSA6IHVpbnQ4X3QgeworICAgICAgICBOb25lLAorICAgICAgICBS
ZWFkaW5nRWJtbCwKKyAgICAgICAgUmVhZEVibWwsCisgICAgICAgIFJlYWRpbmdTZWdtZW50LAor
ICAgICAgICBSZWFkaW5nSW5mbywKKyAgICAgICAgUmVhZEluZm8sCisgICAgICAgIFJlYWRpbmdU
cmFja3MsCisgICAgICAgIFJlYWRpbmdUcmFjaywKKyAgICAgICAgUmVhZFRyYWNrLAorICAgICAg
ICBSZWFkaW5nQ2x1c3RlciwKKyAgICB9OworICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6Tm9u
ZSB9OworCisgICAgVmVjdG9yPHdlYm06OlRyYWNrRW50cnk+IG1fdHJhY2tzOworfTsKKworfQor
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNl
cldlYk0pCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clBhcnNlciYgcGFyc2VyKSB7IHJldHVybiBwYXJzZXIudHlwZSgpID09IFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlcjo6VHlwZTo6V2ViTTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0K
aW5kZXggNTY4NTk1MzNkZWI2YWVjYzkwYzU3ZTE5NTEyY2ZkZDhlMGUyZTRiMS4uMGM3ZWQyY2E5
YjdlZTcxOWExNWI1MGYyZjUyMjQ3Y2Y3YWVkZWIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0K
QEAgLTEyMiw3ICsxMjIsNyBAQCBib29sIHZhbGlkYXRlVlBQYXJhbWV0ZXJzKFZQQ29kZWNDb25m
aWd1cmF0aW9uUmVjb3JkJiBjb2RlY0NvbmZpZ3VyYXRpb24sIE1lZGlhQwogICAgICAgICBpbmZv
LnBvd2VyRWZmaWNpZW50ID0gdHJ1ZTsKIAogICAgICAgICAvLyBIVyBWUDkgRGVjb2RlciBzdXBw
b3J0cyBQcm9maWxlIDAgJiAyOgotICAgICAgICBpZiAoIWNvZGVjQ29uZmlndXJhdGlvbi5wcm9m
aWxlICYmIGNvZGVjQ29uZmlndXJhdGlvbi5wcm9maWxlICE9IDIpCisgICAgICAgIGlmIChjb2Rl
Y0NvbmZpZ3VyYXRpb24ucHJvZmlsZSAmJiBjb2RlY0NvbmZpZ3VyYXRpb24ucHJvZmlsZSAhPSAy
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIEhXIFZQOSBEZWNvZGVy
IHN1cHBvcnRzIHVwIHRvIExldmVsIDY6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42YTM0ZjJlNTgzZmVjYmRhMzRmNzU3YmIyYjMxOTdmM2VmY2U4MjMwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlk
ZW9UcmFja1ByaXZhdGVXZWJNLmNwcApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlV2ViTS5oIgorCisj
aWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8Vmlk
ZW9UcmFja1ByaXZhdGVXZWJNPiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZSh3ZWJtOjpU
cmFja0VudHJ5JiYgdHJhY2tFbnRyeSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRl
b1RyYWNrUHJpdmF0ZVdlYk0oV1RGTW92ZSh0cmFja0VudHJ5KSkpOworfQorCitWaWRlb1RyYWNr
UHJpdmF0ZVdlYk06OlZpZGVvVHJhY2tQcml2YXRlV2ViTSh3ZWJtOjpUcmFja0VudHJ5JiYgdHJh
Y2tFbnRyeSkKKyAgICA6IG1fdHJhY2soV1RGTW92ZSh0cmFja0VudHJ5KSkKK3sKKyAgICBpZiAo
bV90cmFjay5pc19lbmFibGVkLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgc2V0U2VsZWN0ZWQobV90
cmFjay5pc19lbmFibGVkLnZhbHVlKCkpOworfQorCitBdG9tU3RyaW5nIFZpZGVvVHJhY2tQcml2
YXRlV2ViTTo6aWQoKSBjb25zdAoreworICAgIGlmIChtX3RyYWNrSUQuaXNOdWxsKCkpCisgICAg
ICAgIG1fdHJhY2tJRCA9IG1fdHJhY2sudHJhY2tfdWlkLmlzX3ByZXNlbnQoKSA/IEF0b21TdHJp
bmc6Om51bWJlcihtX3RyYWNrLnRyYWNrX3VpZC52YWx1ZSgpKSA6IGVtcHR5QXRvbSgpOworICAg
IHJldHVybiBtX3RyYWNrSUQ7Cit9CisKK0F0b21TdHJpbmcgVmlkZW9UcmFja1ByaXZhdGVXZWJN
OjpsYWJlbCgpIGNvbnN0Cit7CisgICAgaWYgKG1fbGFiZWwuaXNOdWxsKCkpCisgICAgICAgIG1f
bGFiZWwgPSBtX3RyYWNrLm5hbWUuaXNfcHJlc2VudCgpID8gQXRvbVN0cmluZzo6ZnJvbVVURjgo
bV90cmFjay5uYW1lLnZhbHVlKCkuZGF0YSgpLCBtX3RyYWNrLm5hbWUudmFsdWUoKS5sZW5ndGgo
KSkgOiBlbXB0eUF0b20oKTsKKyAgICByZXR1cm4gbV9sYWJlbDsKK30KKworQXRvbVN0cmluZyBW
aWRlb1RyYWNrUHJpdmF0ZVdlYk06Omxhbmd1YWdlKCkgY29uc3QKK3sKKyAgICBpZiAobV9sYW5n
dWFnZS5pc051bGwoKSkKKyAgICAgICAgbV9sYW5ndWFnZSA9IG1fdHJhY2subGFuZ3VhZ2UuaXNf
cHJlc2VudCgpID8gQXRvbVN0cmluZzo6ZnJvbVVURjgobV90cmFjay5sYW5ndWFnZS52YWx1ZSgp
LmRhdGEoKSwgbV90cmFjay5sYW5ndWFnZS52YWx1ZSgpLmxlbmd0aCgpKSA6IGVtcHR5QXRvbSgp
OworICAgIHJldHVybiBtX2xhbmd1YWdlOworfQorCitpbnQgVmlkZW9UcmFja1ByaXZhdGVXZWJN
Ojp0cmFja0luZGV4KCkgY29uc3QKK3sKKyAgICBpZiAobV90cmFjay50cmFja19udW1iZXIuaXNf
cHJlc2VudCgpKQorICAgICAgICByZXR1cm4gbV90cmFjay50cmFja19udW1iZXIudmFsdWUoKTsK
KyAgICByZXR1cm4gMDsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NPVVJDRSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVv
VHJhY2tQcml2YXRlV2ViTS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTc2N2I5MWQ5NmVmZWFmNDlm
M2M3OTBjNzJkNjNhMmZkODE1M2I4MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5oCkBAIC0wLDAg
KzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCisKKyNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHdlYm0v
ZG9tX3R5cGVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVmlkZW9UcmFja1By
aXZhdGVXZWJNIGZpbmFsIDogcHVibGljIFZpZGVvVHJhY2tQcml2YXRlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmPFZpZGVvVHJhY2tQcml2YXRlV2ViTT4gY3JlYXRlKHdlYm06OlRyYWNrRW50
cnkmJik7CisgICAgdmlydHVhbCB+VmlkZW9UcmFja1ByaXZhdGVXZWJNKCkgPSBkZWZhdWx0Owor
CisgICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IGZpbmFsOworICAgIEF0b21TdHJpbmcgbGFiZWwo
KSBjb25zdCBmaW5hbDsKKyAgICBBdG9tU3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgZmluYWw7Cisg
ICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBWaWRlb1Ry
YWNrUHJpdmF0ZVdlYk0od2VibTo6VHJhY2tFbnRyeSYmKTsKKyAgICB3ZWJtOjpUcmFja0VudHJ5
IG1fdHJhY2s7CisgICAgbXV0YWJsZSBBdG9tU3RyaW5nIG1fdHJhY2tJRDsKKyAgICBtdXRhYmxl
IEF0b21TdHJpbmcgbV9sYWJlbDsKKyAgICBtdXRhYmxlIEF0b21TdHJpbmcgbV9sYW5ndWFnZTsK
K307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCBlMDRjYWRjYTJkYzVhOGM0MTliNzJmYTE5
ZWU3M2ZlNzNhMTBiNjAxLi40MmIwNDk3MDliM2ZlMDhlYTMwZmM1ZGQ5NmY2ODFiZjZjN2MxNjIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKQEAgLTY2OCw2ICs2
NjgsMTUgQEAgVlA5RGVjb2RlckVuYWJsZWQ6CiAgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjog
IkVuYWJsZSBWUDkgZGVjb2RlciIKICAgY2F0ZWdvcnk6IGV4cGVyaW1lbnRhbAogCitXZWJNUGFy
c2VyRW5hYmxlZDoKKyAgdHlwZTogYm9vbAorICBkZWZhdWx0VmFsdWU6IGZhbHNlCisgIHdlYmNv
cmVCaW5kaW5nOiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzCisgIGh1bWFuUmVhZGFibGVOYW1lOiAi
V2ViTSBNU0UgcGFyc2VyIgorICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJFbmFibGUgV2Vi
TSBNU0UgcGFyc2VyIgorICBjYXRlZ29yeTogZXhwZXJpbWVudGFsCisgIGNvbmRpdGlvbjogRU5B
QkxFKE1FRElBX1NPVVJDRSkKKwogVXNlTGVnYWN5VGV4dEFsaWduUG9zaXRpb25lZEVsZW1lbnRC
ZWhhdmlvcjoKICAgdHlwZTogYm9vbAogICBkZWZhdWx0VmFsdWU6IGZhbHNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404699</attachid>
            <date>2020-07-19 23:29:52 -0700</date>
            <delta_ts>2020-07-20 09:03:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214529-20200719232951.patch</filename>
            <type>text/plain</type>
            <size>141079</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBhY2ZhNzFkMTE0MWY2M2Q0ZWYxMGJkMmY2NjE5YzcxYTNhNWU4ZTQxLi41MGE1
MmNkNTIxZDljMGEzYzQ3N2U5MzhkZTc5MmNiZDdiNjVlYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNy0xOSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBleHBlcmltZW50
YWwgTVNFIFdlYk0gcGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTQ1MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUd28gZHJpdmUtYnkgZml4ZXM6IEFkZCBzb21lIG1pc3NpbmcgZXhwb3J0IHRv
IHRoZSBsaWJ3ZWJydGMuKi5leHAgZmlsZXMsIGFuZCBleHBvcnQgdGhlIHdlYm0gaGVhZGVycwor
ICAgICAgICBhcyBQcml2YXRlLCBub3QgUHVibGljLCBzbyB0aGV5J3JlIHB1dCBpbiB0aGUgY29y
cmVjdCBkaXJlY3RvcnkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9T
LmV4cDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBsaWJ3
ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wNy0xNyAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldml3ZWQgYnVpbGQgZml4IGFm
dGVyIHIyNjU1OTI7IHJhdGhlciB0aGFuIHJlbW92ZSB0aGUgZGVhZCBjb2RlIGNhdXNpbmcgbGlu
ayBlcnJvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMzdjZDRhNGM4YzYwYmM0ZjViOTkxZGQyOGJkMDIxOThj
ZjQzMmE4Li43Mzc4Mjc4MTVlNDIyYzVlNTllMGIxZWE0ZGU2MTA5YmJhNDlhNGEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQ0IEBACisyMDIwLTA3LTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIGV4cGVyaW1lbnRhbCBNU0UgV2ViTSBw
YXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NDUyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgeWV0IHBhcnNlIGFjdHVhbCBtZWRpYSBzYW1wbGVz
OyBhcyBvZiB5ZXQgaXQgb25seSBwYXJzZXMgYXVkaW8gYW5kIHZpZGVvCisgICAgICAgIHRyYWNr
IGluZm9ybWF0aW9uLiBNZWRpYSBzYW1wbGUgcGFyc2luZyBpcyB1cGNvbWluZy4KKworICAgICAg
ICBBZGQgYW4gZXhwZXJpbWVudGFsIE1TRSBXZWJNIHBhcnNlciB0byBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy4gVGhpcyB3aWxsIHJlcXVpcmUgZXh0ZW5zaXZlIHJlZmFjdG9yaW5nCisgICAg
ICAgIG9mIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLCB0byBleHRyYWN0IG91dCB0aGUgcGFy
c2VyIGludG8gYSBuZXcsIHZpcnR1YWxpemVkIGNsYXNzLiBUaGlzIG5ldyBwYXJzZXIgY2FuCisg
ICAgICAgIHRha2UgYWR2YW50YWdlIG9mIG5ldyBDKys+MTEgZmVhdHVyZXMgc3VjaCBhcyBsYW1i
ZGFzIHRvIGNsZWFuIHVwIHNvbWUgcHJvYmxlbWF0aWMgZXhpc3RpbmcgY29kZS4gVGhlIG5ldwor
ICAgICAgICB2aXJ0dWFsaXplZCBTb3VyY2VCdWZmZXJQYXJzZXIgY2xhc3MgdXNlcyBwYXNzZWQt
aW4gRnVuY3Rpb24gb2JqZWN0cywgcmF0aGVyIHRoYW4gcHVyZS12aXJ0dWFsIENsaWVudCBjbGFz
c2VzCisgICAgICAgIHRvIG5vdGlmeSBpdCdzIHBhcmVudCBvYmplY3Qgd2hlbiB0aGUgcGFyc2Vy
IGVuY291bnRlcnMgaW5pdGlhbGl6YXRpb24tIG9yIG1lZGlhLWRhdGEuCisKKyAgICAgICAgQmVj
YXVzZSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyB3aWxsIG5vdyBoYXZlIHRvIGRlYWwgd2l0
aCBBdWRpb1RyYWNrUHJpdmF0ZSBhbmQgVmlkZW9UcmFja1ByaXZhdGUgb2JqZWN0cworICAgICAg
ICB0aGF0IGFyZSBub3QgbmVjZXNzYXJpbHkgQXVkaW8tIGFuZCBWaWRlb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyBzdWJjbGFzc2VzLCBtb3ZlIHRob3NlIGNsYXNzZXMgbm90aWZpY2F0
aW9uCisgICAgICAgIGZlYXR1cmVzIHVwIGludG8gQXVkaW8tIGFuZCBWaWRlb1RyYWNrUHJpdmF0
ZSwgYWdhaW4gdXNpbmcgYSBGdW5jdGlvbiBvYmplY3QgcmF0aGVyIHRoYW4gYSBjbGllbnQgY2xh
c3MuCisKKyAgICAgICAgQWRkIGEgbmV3IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0gYW5kIGFzc29j
aWF0ZWQgQXVkaW9UcmFja1ByaXZhdGVXZWJNIGFuZCBWaWRlb1RyYWNrUHJpdmF0ZVdlYm0gY2xh
c2Vzcywgd2hpY2gKKyAgICAgICAgdXNlIGxpYndlYm0gdmlhIGxpYndlYnJ0YyB0byBwYXJzZSBh
cHBlbmRlZCBidWZmZXJzLgorCisgICAgICAgIFRoaXMgZWFybHkgaW1wbGVtZW50YXRpb24gaXMg
bm90IHlldCBhYmxlIHRvIHBhc3MgdGhlIFdlYk0gV1BUIG1lZGlhLXNvdXJjZS8gdGVzdHMsIGFz
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDCisgICAgICAgIHdpbGwgb25seSBjYXVzZSBhICJy
ZXNpemUiIGV2ZW50IHRvIGJlIGZpcmVkIHdoZW4gYSBNZWRpYVNhbXBsZSBpcyBlbnF1ZXVlZCBv
ciBkZWNvZGluZy4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2V0V2ViTVBhcnNlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6d2ViTVBhcnNlckVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Ry
YWNrUHJpdmF0ZTo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJp
dmF0ZTo6c2V0RW5hYmxlZENoYW5nZWRDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQ
cml2YXRlOjpzZXRTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0
ZTo6c2V0U2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0RW5hYmxlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OnN1cHBvcnRzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5oOiBBZGRlZC4KKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbTogQWRkZWQu
CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIGluaXRXaXRoUGFyc2Vy
OnBhcmVudDpdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgZGVh
bGxvY10pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBpbnZhbGlk
YXRlXSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbURh
dGFQYXJzZXI6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldDpdKToKKyAgICAgICAgKC1bV2ViQVZT
dHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3RyZWFtRGF0YVBhcnNlcjpkaWRQYXJzZVN0cmVhbURh
dGFBc0Fzc2V0OndpdGhEaXNjb250aW51aXR5Ol0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURh
dGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0
YVdpdGhFcnJvcjpdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIg
c3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlTWVkaWFEYXRhOmZvclRyYWNrSUQ6bWVkaWFUeXBl
OmZsYWdzOl0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJl
YW1EYXRhUGFyc2VyV2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0
YTpmb3JUcmFja0lEOl0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5l
ciBzdHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YTpmb3JUcmFja0lEOl0pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakM6OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OnNob3VsZFByb3Zp
ZGVNZWRpYWRhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakM6OnJlc2V0UGFyc2VyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldCk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRGYWlsVG9QYXJzZVN0cmVh
bURhdGFXaXRoRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElu
aXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjp+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRFbmNv
dW50ZXJFcnJvckR1cmluZ1BhcnNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRL
ZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmRDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpyZXNldFBhcnNlclN0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkZXN0cm95UGFyc2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjbGVhclRyYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFu
Z2VTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpwYXJzZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmF0dGVtcHRUb0RlY3J5cHQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGVXZWJNOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
a1ByaXZhdGVXZWJNOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk0pOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9UcmFja1ByaXZhdGVXZWJNOjppZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1RyYWNrUHJpdmF0ZVdlYk06OmxhYmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
VHJhY2tQcml2YXRlV2ViTTo6bGFuZ3VhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGVXZWJNOjp0cmFja0luZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OmlzQ29udGVudFR5cGVTdXBw
b3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0RGlkUGFyc2VJ
bml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXI6OnNldERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0RGlkUHJvdmlkZU1lZGlhRGF0
YUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0V2ls
bFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OnNldERpZFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNXZWJtUGFyc2VyQXZhaWxhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OnN1cHBvcnRlZFdlYk1Db2RlY3MpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmFwcGVuZERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6Zmx1c2hQZW5k
aW5nTWVkaWFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lE
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnJlc2V0UGFyc2Vy
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FbGVt
ZW50QmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25F
Ym1sKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uU2VnbWVu
dEJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uSW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkNsdXN0ZXJC
ZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblRyYWNr
RW50cnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpzdGF0dXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6dHlwZSBjb25zdCk6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
dmFsaWRhdGVWUFBhcmFtZXRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFja1ByaXZhdGVXZWJNOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFj
a1ByaXZhdGVXZWJNOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk0pOgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFja1ByaXZhdGVXZWJNOjppZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b1RyYWNrUHJpdmF0ZVdlYk06OmxhYmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
VHJhY2tQcml2YXRlV2ViTTo6bGFuZ3VhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFja1ByaXZhdGVXZWJNOjp0cmFja0luZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaDogQWRkZWQuCisKIDIwMjAt
MDctMTggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIGZpeCBidWlsZCB3YXJuaW5ncyBpbiB0aGUgV2ViWFIgYmFja2VuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAxM2M1YjFlYmE4MzNmYjdhNmQxNjRjN2NhOTdhNTBkNDUxYTU5NDMwLi40M2I4ODc4
OTFhOWNiYzgyMDI3MzIxMmU5ZDc2NGM2NjFmYTc2NDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDIwLTA3LTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAg
ICAgIFtDb2NvYV0gQWRkIGV4cGVyaW1lbnRhbCBNU0UgV2ViTSBwYXJzZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDUyOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhbiBFeHBlcmltZW50YWwg
c2V0dGluZyB0byBlbmFibGUgdGhlIE1TRSBXZWJNIHBhcnNlciAob2ZmIGJ5IGRlZmF1bHQpLgor
CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisKIDIwMjAtMDQtMzAgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIGRhdGEgY29w
aWVzIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgY3VzdG9tIFVSTCBzY2hlbWUgaGFuZGxlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xp
YndlYnJ0Yy5pT1MuZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRp
b25zL2xpYndlYnJ0Yy5pT1MuZXhwCmluZGV4IGQwNGE5MTk2ODZlOWNjODk2N2E4YWFkMDQ2OWM2
ODU1NDY1NzI3OWIuLmE3YmNjN2I1MTRjM2JlNjNhYWRjYTBiMjEyNzFmODE1ZDkwNTQzMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3
ZWJydGMuaU9TLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJh
dGlvbnMvbGlid2VicnRjLmlPUy5leHAKQEAgLTI4MCwxMyArMjgwLDIwIEBAIF9fWlRWTjR3ZWJt
MTJCdWZmZXJSZWFkZXJFCiBfX1pUVk40d2VibThDYWxsYmFja0UKIF9fWk40d2VibThDYWxsYmFj
azEwT25CbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRQogX19aTjR3
ZWJtOENhbGxiYWNrMTBPbkN1ZVBvaW50RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU184Q3Vl
UG9pbnRFCitfX1pONHdlYm04Q2FsbGJhY2sxMk9uQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1l
dGFkYXRhRVJLTlNfNUJsb2NrRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPbkNs
dXN0ZXJFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzdDbHVzdGVyRQogX19aTjR3ZWJt
OENhbGxiYWNrMTJPblNlZ21lbnRFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUUKIF9fWk40d2Vi
bThDYWxsYmFjazEyT25UcmFja0VudHJ5RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMFRy
YWNrRW50cnlFCitfX1pONHdlYm04Q2FsbGJhY2sxNE9uQ2x1c3RlckJlZ2luRVJLTlNfMTVFbGVt
ZW50TWV0YWRhdGFFUktOU183Q2x1c3RlckVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFj
azE0T25FZGl0aW9uRW50cnlFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEyRWRpdGlvbkVu
dHJ5RQorX19aTjR3ZWJtOENhbGxiYWNrMTRPbkVsZW1lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1l
dGFkYXRhRVBOU182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrMTRPblNlZ21lbnRCZWdpbkVS
S05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTVP
bkJsb2NrR3JvdXBFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEwQmxvY2tHcm91cEUK
IF9fWk40d2VibThDYWxsYmFjazE2T25TaW1wbGVCbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFk
YXRhRVJLTlNfMTFTaW1wbGVCbG9ja0UKIF9fWk40d2VibThDYWxsYmFjazE2T25Vbmtub3duRWxl
bWVudEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182UmVhZGVyRVB5CitfX1pONHdlYm04Q2Fs
bGJhY2sxN09uQmxvY2tHcm91cEJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rp
b25FCitfX1pONHdlYm04Q2FsbGJhY2sxOE9uU2ltcGxlQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVu
dE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVCbG9ja0VQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxs
YmFjazRTa2lwRVBOU182UmVhZGVyRVB5CiBfX1pONHdlYm04Q2FsbGJhY2s1T25UYWdFUktOU18x
NUVsZW1lbnRNZXRhZGF0YUVSS05TXzNUYWdFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25FYm1sRVJL
TlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU180RWJtbEUKIF9fWk40d2VibThDYWxsYmFjazZPbklu
Zm9FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzRJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhw
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5p
T1NzaW0uZXhwCmluZGV4IGQwNGE5MTk2ODZlOWNjODk2N2E4YWFkMDQ2OWM2ODU1NDY1NzI3OWIu
LmE3YmNjN2I1MTRjM2JlNjNhYWRjYTBiMjEyNzFmODE1ZDkwNTQzMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2lt
LmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGli
d2VicnRjLmlPU3NpbS5leHAKQEAgLTI4MCwxMyArMjgwLDIwIEBAIF9fWlRWTjR3ZWJtMTJCdWZm
ZXJSZWFkZXJFCiBfX1pUVk40d2VibThDYWxsYmFja0UKIF9fWk40d2VibThDYWxsYmFjazEwT25C
bG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRQogX19aTjR3ZWJtOENh
bGxiYWNrMTBPbkN1ZVBvaW50RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU184Q3VlUG9pbnRF
CitfX1pONHdlYm04Q2FsbGJhY2sxMk9uQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRh
RVJLTlNfNUJsb2NrRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPbkNsdXN0ZXJF
bmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzdDbHVzdGVyRQogX19aTjR3ZWJtOENhbGxi
YWNrMTJPblNlZ21lbnRFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUUKIF9fWk40d2VibThDYWxs
YmFjazEyT25UcmFja0VudHJ5RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMFRyYWNrRW50
cnlFCitfX1pONHdlYm04Q2FsbGJhY2sxNE9uQ2x1c3RlckJlZ2luRVJLTlNfMTVFbGVtZW50TWV0
YWRhdGFFUktOU183Q2x1c3RlckVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFjazE0T25F
ZGl0aW9uRW50cnlFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEyRWRpdGlvbkVudHJ5RQor
X19aTjR3ZWJtOENhbGxiYWNrMTRPbkVsZW1lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRh
RVBOU182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrMTRPblNlZ21lbnRCZWdpbkVSS05TXzE1
RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTVPbkJsb2Nr
R3JvdXBFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEwQmxvY2tHcm91cEUKIF9fWk40
d2VibThDYWxsYmFjazE2T25TaW1wbGVCbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJL
TlNfMTFTaW1wbGVCbG9ja0UKIF9fWk40d2VibThDYWxsYmFjazE2T25Vbmtub3duRWxlbWVudEVS
S05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182UmVhZGVyRVB5CitfX1pONHdlYm04Q2FsbGJhY2sx
N09uQmxvY2tHcm91cEJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rpb25FCitf
X1pONHdlYm04Q2FsbGJhY2sxOE9uU2ltcGxlQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFk
YXRhRVJLTlNfMTFTaW1wbGVCbG9ja0VQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxsYmFjazRT
a2lwRVBOU182UmVhZGVyRVB5CiBfX1pONHdlYm04Q2FsbGJhY2s1T25UYWdFUktOU18xNUVsZW1l
bnRNZXRhZGF0YUVSS05TXzNUYWdFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25FYm1sRVJLTlNfMTVF
bGVtZW50TWV0YWRhdGFFUktOU180RWJtbEUKIF9fWk40d2VibThDYWxsYmFjazZPbkluZm9FUktO
U18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzRJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCmlu
ZGV4IDhkODViNWI4YjM3NTRhZGRlZmRlN2MyNGYyZjIwYTQ2NTgzNjZhY2QuLmY4Y2M5MTMxNmJj
ZGMwOTYwNTgyYjNmM2NhNDE2NWIyZWFjMjcyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAK
QEAgLTI3OCwxMyArMjc4LDIwIEBAIF9fWlRWTjR3ZWJtMTJCdWZmZXJSZWFkZXJFCiBfX1pUVk40
d2VibThDYWxsYmFja0UKIF9fWk40d2VibThDYWxsYmFjazEwT25CbG9ja0VuZEVSS05TXzE1RWxl
bWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRQogX19aTjR3ZWJtOENhbGxiYWNrMTBPbkN1ZVBvaW50
RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU184Q3VlUG9pbnRFCitfX1pONHdlYm04Q2FsbGJh
Y2sxMk9uQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRVBOU182
QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPbkNsdXN0ZXJFbmRFUktOU18xNUVsZW1lbnRN
ZXRhZGF0YUVSS05TXzdDbHVzdGVyRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPblNlZ21lbnRFbmRF
UktOU18xNUVsZW1lbnRNZXRhZGF0YUUKIF9fWk40d2VibThDYWxsYmFjazEyT25UcmFja0VudHJ5
RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMFRyYWNrRW50cnlFCitfX1pONHdlYm04Q2Fs
bGJhY2sxNE9uQ2x1c3RlckJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU183Q2x1c3Rl
ckVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFjazE0T25FZGl0aW9uRW50cnlFUktOU18x
NUVsZW1lbnRNZXRhZGF0YUVSS05TXzEyRWRpdGlvbkVudHJ5RQorX19aTjR3ZWJtOENhbGxiYWNr
MTRPbkVsZW1lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQorX19a
TjR3ZWJtOENhbGxiYWNrMTRPblNlZ21lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBO
U182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTVPbkJsb2NrR3JvdXBFbmRFUktOU18xNUVs
ZW1lbnRNZXRhZGF0YUVSS05TXzEwQmxvY2tHcm91cEUKIF9fWk40d2VibThDYWxsYmFjazE2T25T
aW1wbGVCbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVCbG9ja0UK
IF9fWk40d2VibThDYWxsYmFjazE2T25Vbmtub3duRWxlbWVudEVSS05TXzE1RWxlbWVudE1ldGFk
YXRhRVBOU182UmVhZGVyRVB5CitfX1pONHdlYm04Q2FsbGJhY2sxN09uQmxvY2tHcm91cEJlZ2lu
RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rpb25FCitfX1pONHdlYm04Q2FsbGJhY2sx
OE9uU2ltcGxlQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVC
bG9ja0VQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxsYmFjazRTa2lwRVBOU182UmVhZGVyRVB5
CiBfX1pONHdlYm04Q2FsbGJhY2s1T25UYWdFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzNU
YWdFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25FYm1sRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktO
U180RWJtbEUKIF9fWk40d2VibThDYWxsYmFjazZPbkluZm9FUktOU18xNUVsZW1lbnRNZXRhZGF0
YUVSS05TXzRJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL2xp
YndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRkYTczYTFi
ZmI0MTAzYTFmN2FhNDE0MzQ5ZmUwYWZhZWJjMGM4YWEuLjIyNjgyYmM1Yzk5NjY2Yjg3ZGE0ZDFk
MWQwZjZmNmI2NmFmZjBiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4
NTMsMTYgKzM4NTMsMTYgQEAKIAkJNUNGRDUzOTIxRTRCRDNBMzAwNDgyOTA4IC8qIHJvd19uZW9u
NjQuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZE
NTM4QTFFNEJEM0EzMDA0ODI5MDggLyogcm93X25lb242NC5jYyAqLzsgfTsKIAkJNUNGRDUzOTMx
RTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb24uY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZENTM4QjFFNEJEM0EzMDA0ODI5MDggLyogc2NhbGVf
bmVvbi5jYyAqLzsgfTsKIAkJNUNGRDUzOTQxRTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb242
NC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRkQ1
MzhDMUU0QkQzQTMwMDQ4MjkwOCAvKiBzY2FsZV9uZW9uNjQuY2MgKi87IH07Ci0JCUNERUJCNEFD
MjRDMDE5OUQwMEFEQkQ0NCAvKiB3ZWJtX3BhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MDgyNEMwMTkxQTAwQURCRDQ0IC8qIHdlYm1f
cGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9Owot
CQlDREVCQjRBRDI0QzAxOTlEMDBBREJENDQgLyogYnVmZmVyX3JlYWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MEQyNEMwMTkxQTAwQURC
RDQ0IC8qIGJ1ZmZlcl9yZWFkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07Ci0JCUNERUJCNEFFMjRDMDE5OUQwMEFEQkQ0NCAvKiBpZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MEEyNEMwMTkxQTAw
QURCRDQ0IC8qIGlkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9
OyB9OwotCQlDREVCQjRBRjI0QzAxOTlEMDBBREJENDQgLyogaXN0cmVhbV9yZWFkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDA5MjRDMDE5
MUEwMEFEQkQ0NCAvKiBpc3RyZWFtX3JlYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjAyNEMwMTk5RDAwQURCRDQ0IC8qIGRvbV90
eXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RF
QkI0MEIyNEMwMTkxQTAwQURCRDQ0IC8qIGRvbV90eXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjEyNEMwMTk5RDAwQURCRDQ0IC8q
IGVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENERUJCNDBDMjRDMDE5MUEwMEFEQkQ0NCAvKiBlbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCMjI0QzAxOTlEMDBBREJENDQg
Lyogc3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREVCQjQwNjI0QzAxOTFBMDBBREJENDQgLyogc3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCMzI0QzAxOTlEMDBBREJENDQg
LyogcmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREVCQjQwNTI0QzAxOTFBMDBBREJENDQgLyogcmVhZGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCNDI0QzAxOTlEMDBBREJENDQg
LyogZmlsZV9yZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENERUJCNDA3MjRDMDE5MUEwMEFEQkQ0NCAvKiBmaWxlX3JlYWRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjUyNEMwMTk5
RDAwQURCRDQ0IC8qIGNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREVCQjQwRTI0QzAxOTFBMDBBREJENDQgLyogY2FsbGJhY2suaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCUNERUJCNEFDMjRD
MDE5OUQwMEFEQkQ0NCAvKiB3ZWJtX3BhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MDgyNEMwMTkxQTAwQURCRDQ0IC8qIHdlYm1fcGFy
c2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
Q0RFQkI0QUQyNEMwMTk5RDAwQURCRDQ0IC8qIGJ1ZmZlcl9yZWFkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDBEMjRDMDE5MUEwMEFEQkQ0
NCAvKiBidWZmZXJfcmVhZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQ0RFQkI0QUUyNEMwMTk5RDAwQURCRDQ0IC8qIGlkLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwQTI0QzAxOTFBMDBB
REJENDQgLyogaWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlDREVCQjRBRjI0QzAxOTlEMDBBREJENDQgLyogaXN0cmVhbV9yZWFkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDA5MjRDMDE5
MUEwMEFEQkQ0NCAvKiBpc3RyZWFtX3JlYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUNERUJCNEIwMjRDMDE5OUQwMEFEQkQ0NCAvKiBkb21f
dHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
RUJCNDBCMjRDMDE5MUEwMEFEQkQ0NCAvKiBkb21fdHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREVCQjRCMTI0QzAxOTlEMDBBREJENDQg
LyogZWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RFQkI0MEMyNEMwMTkxQTAwQURCRDQ0IC8qIGVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREVCQjRCMjI0QzAxOTlEMDBBREJE
NDQgLyogc3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREVCQjQwNjI0QzAxOTFBMDBBREJENDQgLyogc3RhdHVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RFQkI0QjMyNEMwMTk5RDAwQURC
RDQ0IC8qIHJlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RFQkI0MDUyNEMwMTkxQTAwQURCRDQ0IC8qIHJlYWRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNERUJCNEI0MjRDMDE5OUQwMEFE
QkQ0NCAvKiBmaWxlX3JlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RFQkI0MDcyNEMwMTkxQTAwQURCRDQ0IC8qIGZpbGVfcmVhZGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RFQkI0QjUy
NEMwMTk5RDAwQURCRDQ0IC8qIGNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwRTI0QzAxOTFBMDBBREJENDQgLyogY2FsbGJhY2su
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDREVC
QjRCNjI0QzAxOUM0MDBBREJENDQgLyogdW5rbm93bl9wYXJzZXIuY2MgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQ2NDI0QzAxOTFBMDBBREJENDQg
LyogdW5rbm93bl9wYXJzZXIuY2MgKi87IH07CiAJCUNERUJCNEI3MjRDMDE5QzQwMEFEQkQ0NCAv
KiBtYXN0ZXJfcGFyc2VyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RFQkI0NkYyNEMwMTkxQTAwQURCRDQ0IC8qIG1hc3Rlcl9wYXJzZXIuY2MgKi87
IH07CiAJCUNERUJCNEI4MjRDMDE5QzQwMEFEQkQ0NCAvKiBibG9ja19wYXJzZXIuY2MgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQ3NjI0QzAxOTFB
MDBBREJENDQgLyogYmxvY2tfcGFyc2VyLmNjICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggMWQ3ZjIwOTg2N2MxZDRlMGE0Mjc0Njk3NjU1ZjhkMWIxMzZkYWQwZS4uZGMzZmYyNTg0
MWE5MjUzM2JlZThkMDU4MTYxOGFiMjBjNzBjOTlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CkBAIC0yOTEsNiArMjkxLDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIEBuby0KIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbSBAbm8tdW5pZnkK
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBAbm8tdW5pZnkKK3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gQG5vLXVuaWZ5
CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9i
akMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRl
b1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gQG5v
LXVuaWZ5CkBAIC0zMzMsNiArMzM0LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNH
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlv
VHJhY2tQcml2YXRlV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2Eu
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zsb2F0UmVjdENvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTM0OCw2ICszNTAsOCBAQCBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVj
dENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29h
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbQpAQCAtMzU2
LDYgKzM2MCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFz
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24u
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYkdQVUxheWVyLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1Ry
YWNrUHJpdmF0ZVdlYk0uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vz
c2lvblZULm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ODZmY2RlYzA1
ODYwMjIyYmYwMzQwMmE3MTZhZDJmNDZiMDBjNTc4Li44MmZkZWVjZGVkOGJhYjZmYjA5ZWIyZTQy
ZDY2NmVhYTQyMjUyZDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MjY3LDYgKzQyNjcsNyBAQAogCQlDREY2NUNDQTE0NUI0
NDg4MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY2NUNDOTE0NUI0M0E3MDBDNEM3QUEg
LyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RGNzQ4M0YxOEZFQkNFQzAwMDZFQ0MwIC8qIEdyaWRQ
b3NpdGlvbnNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RGNzQ4M0QxOEZFQkNFQzAwMDZFQ0MwIC8qIEdyaWRQb3NpdGlvbnNSZXNvbHZl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNE
Rjc1NkEzMjE1QzI5RTkwMEVGQ0I1MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNzU2QTEyMTVD
MjlFOTAwRUZDQjUwIC8qIEpTTWVkaWFLZXlFbmNyeXB0aW9uU2NoZW1lLmggKi87IH07CisJCUNE
Rjk5NEZEMjRDMTVGRTMwMDJFQTA2MiAvKiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGOTk0RkIyNEMx
MkE2QTAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gKi87IH07CiAJCUNE
RkMzNjA2MThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERkMzNjA0MThDQTYxQzIw
MDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTA1N0ZBNjEyMjA3MzExMDBBNDc2RDUgLyog
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRTA1N0ZBNDEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
MDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKQEAgLTE0MTY2LDYgKzE0MTY3LDgg
QEAKIAkJQ0Q4QzZDMjkyMkZEREE5MTAwQTcyMEFCIC8qIEpTUmVtb3RlUGxheWJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNSZW1vdGVQbGF5YmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDhEMzA2RDIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDRE1Mb2dnaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOEQzMDZF
MjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENE
TUxvZ2dpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDhGNjY3MDI0QzBG
MjA4MDAwQzQyMUMgLyogU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0Q4RjY2NzIyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDkyRjUwRjIyNjBGRkVFMDBGODdCQjMgLyogRG9jdW1lbnRGdWxs
c2NyZWVuLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBEb2N1bWVudEZ1bGxzY3JlZW4uaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDkyRjUxMDIyNjBGRkVFMDBGODdCQjMgLyogRG9jdW1lbnRGdWxsc2Ny
ZWVuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50RnVsbHNjcmVlbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDkyRjUxNjIyNjEwMzgyMDBGODdCQjMgLyogRnVsbHNjcmVlbk1h
bmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVsbHNjcmVlbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MzQ2LDYgKzE0MzQ5LDggQEAKIAkJQ0RFOEI1RUYxQTY5Nzc4
QjAwQjRCNjZBIC8qIExlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTdDODIxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxT
Y3JlZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyRnVsbFNjcmVl
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBN0M4MzEyNzYyMzA0MDBCODQ2
REQgLyogUmVuZGVyRnVsbFNjcmVlbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW5kZXJGdWxsU2NyZWVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RFQjNENzIyNEM0MUE2RTAwMUZCRUVGIC8qIFNvdXJjZUJ1ZmZlclBhcnNlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTb3VyY2VCdWZmZXJQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREVCM0Q3MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFy
c2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZUJ1ZmZlclBhcnNlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDREVDQTg5ODFFREY0NDdEMDBEQ0IwOEIgLyogQVZBc3NldFRyYWNr
VXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVZBc3NldFRyYWNrVXRpbGl0aWVz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVDQTg5OTFFREY0NDdEMDBEQ0Iw
OEIgLyogQVZBc3NldFRyYWNrVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFWQXNzZXRUcmFj
a1V0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVFMzkzNjE3OTc0
MjU5MDAxRDc1ODAgLyogUHVibGljVVJMTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQdWJsaWNVUkxNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE0Mzg0LDYgKzE0Mzg5LDEyIEBACiAJCUNERjc1NjlFMjE1QzI4NUUwMEVG
Q0I1MCAvKiBNZWRpYUtleUVuY3J5cHRpb25TY2hlbWUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhS2V5RW5jcnlw
dGlvblNjaGVtZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERjc1NkEwMjE1
QzI5RTgwMEVGQ0I1MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERjc1NkExMjE1QzI5RTkwMEVGQ0I1
MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREY5OTRGQTI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjk5NEZCMjRDMTJBNkEwMDJFQTA2MiAv
KiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RGOTk0RkUyNEMyODEzNjAwMkVBMDYyIC8qIFZpZGVvVHJhY2tQcml2YXRlV2ViTS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RGOTk0RkYyNEMyODEzNjAwMkVBMDYyIC8qIFZpZGVvVHJhY2tQcml2YXRlV2Vi
TS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY5OTUwMDI0QzI4MTQ5MDAyRUEwNjIgLyogQXVk
aW9UcmFja1ByaXZhdGVXZWJNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRlV2Vi
TS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY5OTUwMTI0QzI4MTQ5MDAyRUEw
NjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlv
VHJhY2tQcml2YXRlV2ViTS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERkMz
NjAxMThDQTYxNjMwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERkMzNjAyMThDQTYxNjMwMDI2RTU2RiAvKiBS
ZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNERkMzNjAzMThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlz
dGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ29t
bWFuZExpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1ODcxLDYg
KzI1ODgyLDggQEAKIAkJQjUzMjBENjgxMjJBMjRFOTAwMkQxNDQwIC8qIGNvY29hICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDREY5OTUwMTI0QzI4MTQ5
MDAyRUEwNjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcCAqLywKKwkJCQlDREY5OTUwMDI0
QzI4MTQ5MDAyRUEwNjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmggKi8sCiAJCQkJRjQ4RDJB
QTMyMTU5NzQwRDAwQzY3NTJCIC8qIENvbG9yQ29jb2EuaCAqLywKIAkJCQlGNDhEMkFBNDIxNTk3
NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5tbSAqLywKIAkJCQlCMjc1MzU0QzBCMDUzODE0MDAy
Q0U2NEYgLyogRmxvYXRSZWN0Q29jb2EubW0gKi8sCkBAIC0yNTg5MiwxMCArMjU5MDUsMTYgQEAK
IAkJCQlBRDlGRjZFMDE5MDgzOTFEMDAzQjYxRTAgLyogSU9TdXJmYWNlUG9vbENvY29hLm1tICov
LAogCQkJCUNEQzQ4QUM4MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuY3BwICovLAogCQkJCUNEQzQ4QUM3MjE0OUNGMkEwMDI0RkQ1OSAvKiBN
ZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuaCAqLywKKwkJCQlDREVCM0Q3MjI0
QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmNwcCAqLywKKwkJCQlDREVCM0Q3
MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmggKi8sCisJCQkJQ0Q4RjY2
NzAyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwICovLAorCQkJ
CUNEOEY2NjcyMjRDMEYyMDgwMDBDNDIxQyAvKiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmggKi8s
CiAJCQkJRTRFOEI0RUQyMTZCNzlGNDAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0LmNwcCAqLywKIAkJCQlFNEU4QjRFQTIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQuaCAqLywKIAkJCQk1MjY3MjRGMjFDQjJGREY2MDA3NTk3NEQgLyogVGV4
dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5oICovLAogCQkJCTUyNjcyNEYxMUNCMkZERjYwMDc1
OTc0RCAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tICovLAorCQkJCUNERjk5NEZG
MjRDMjgxMzYwMDJFQTA2MiAvKiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwICovLAorCQkJCUNE
Rjk5NEZFMjRDMjgxMzYwMDJFQTA2MiAvKiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaCAqLywKIAkJ
CQlDRDZGRTVCNzI0QkNFNjQ1MDA5RkNEQTQgLyogVlA5VXRpbGl0aWVzQ29jb2EuaCAqLywKIAkJ
CQlDRDZGRTVCODI0QkNFNjQ1MDA5RkNEQTQgLyogVlA5VXRpbGl0aWVzQ29jb2EubW0gKi8sCiAJ
CQkJMkQzRUY0NDQxOTE3OTE1QzAwMDM0MTg0IC8qIFdlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJE
ZWxlZ2F0ZS5oICovLApAQCAtMjczODgsNiArMjc0MDcsOCBAQAogCQkJCUNEQzhCNUE1MTgwNDc0
RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmggKi8sCiAJCQkJQ0RDOEI1
QTQxODA0NzRGNzAwMTZFNjg1IC8qIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gKi8sCiAJ
CQkJN0EyOUY1NzExOEM2OTUxNDAwNEQwRjgxIC8qIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuaCAqLywKKwkJCQlDREY5OTRGQTI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5oICovLAorCQkJCUNERjk5NEZCMjRDMTJBNkEwMDJFQTA2MiAvKiBTb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLm1tICovLAogCQkJCUNEQzhCNUE5MTgwNDdGRjEwMDE2RTY4NSAv
KiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oICovLAogCQkJCUNEQzhCNUE4MTgwNDdGRjEw
MDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSAqLywKIAkJCQk1MkQ1QTE4
RTFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmggKi8sCkBAIC0zNDU5
OCw2ICszNDYxOSw3IEBACiAJCQkJMjZBQTBGOUUxOEQyQTE4QjAwNDE5MzgxIC8qIFNlbGVjdG9y
UHNldWRvRWxlbWVudFR5cGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NENThERkQxRjk1
NjVBODAwMTEyNzkxIC8qIFNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxMEE4
MUY5MDIyQTQwMDUxMDJDRSAvKiBTb2Z0TGlua0xpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQ0RGOTk0RkQyNEMxNUZFMzAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDREM4QjVBQTE4MDQ3RkYxMDAxNkU2ODUgLyogU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBODMzQzdDQTBBMkNG
MDZCMDBENTc2NjQgLyogU1ZHTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzE2OTJERDIy
M0QyM0FCRDAwNkU4OEY3IC8qIFN5c3RlbUJhdHRlcnkubW0gaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggMTFjMGE3ZjVk
OGY5YjRiNDJhODcxYjMzMTFlYWM0NDU5NzUzNjQyNy4uZDAxNzg0YzdhYTRiNzZkNmMzY2QyNTk3
OTIzMjRhNjA1MjlhMWY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgKQEAgLTM5MSw2ICszOTEsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaW5jcmVt
ZW50YWxQREZMb2FkaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5jcmVtZW50YWxQREZM
b2FkaW5nRW5hYmxlZDsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAg
IHZvaWQgc2V0V2ViTVBhcnNlckVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV93ZWJNUGFyc2Vy
RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgd2ViTVBhcnNlckVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX3dlYk1QYXJzZXJFbmFibGVkOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAg
ICAvLyBOZXZlciBpbnN0YW50aWF0ZS4KICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCk7CkBA
IC01ODQsNiArNTg5LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2luY3JlbWVudGFsUERGTG9h
ZGluZ0VuYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNF
KQorICAgIGJvb2wgbV93ZWJNUGFyc2VyRW5hYmxlZCB7IGZhbHNlIH07CisjZW5kaWYKKwogICAg
IGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVzdHJveWVkPFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM+
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVk
aW9UcmFja1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlv
VHJhY2tQcml2YXRlLmgKaW5kZXggN2ZhZTIzZWY1ZGM0Mjk5ZThmMDlmYzQxMmZjMTcxMDI2OGJl
YmMyMS4uYTlmODM2YmQxMTczZTIyZTBhZTgxNGExNzU0MmFhMjNhNDYxNWE0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0
ZUJhc2UuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogI2lmIEVOQUJMRShWSURFTykK
IApAQCAtNTUsNiArNTYsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7
CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5lbmFibGVkQ2hh
bmdlZChlbmFibGVkKTsKKyAgICAgICAgaWYgKG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjaykKKyAg
ICAgICAgICAgIG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjaygqdGhpcywgbV9lbmFibGVkKTsKICAg
ICB9CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KQEAg
LTY0LDYgKzY3LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzQmFja2VkQnlNZWRp
YVN0cmVhbVRyYWNrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHVzaW5nIEVuYWJs
ZWRDaGFuZ2VkQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEF1ZGlvVHJhY2tQcml2YXRlJiwgYm9v
bCBlbmFibGVkKT47CisgICAgdm9pZCBzZXRFbmFibGVkQ2hhbmdlZENhbGxiYWNrKEVuYWJsZWRD
aGFuZ2VkQ2FsbGJhY2smJiBjYWxsYmFjaykgeyBtX2VuYWJsZWRDaGFuZ2VkQ2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKTsgfQorCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29u
c3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkF1ZGlvVHJh
Y2tQcml2YXRlIjsgfQogI2VuZGlmCkBAIC03NCw2ICs4MCw3IEBAIHByb3RlY3RlZDoKIHByaXZh
dGU6CiAgICAgQXVkaW9UcmFja1ByaXZhdGVDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9Owog
ICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2UgfTsKKyAgICBFbmFibGVkQ2hhbmdlZENhbGxiYWNr
IG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJp
dmF0ZS5oCmluZGV4IDcxOGQ4MGUzNDUyYzQ3ZmVlZjQyNjhmMjllM2EyZTg3YmI0ZGNhZDMuLjBj
NDEzYzJkZGY1ZDlkYTJhMTViMTEzNWMwOGU1MTA4NTJiODAyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaApAQCAtMjgs
NiArMjgsNyBAQAogI2lmIEVOQUJMRShWSURFTykKIAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZUJh
c2UuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00OCw2ICs0OSw4IEBAIHB1YmxpYzoKICAgICAgICAgbV9zZWxlY3RlZCA9IHNlbGVjdGVk
OwogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+c2VsZWN0ZWRD
aGFuZ2VkKG1fc2VsZWN0ZWQpOworICAgICAgICBpZiAobV9zZWxlY3RlZENoYW5nZWRDYWxsYmFj
aykKKyAgICAgICAgICAgIG1fc2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2soKnRoaXMsIG1fc2VsZWN0
ZWQpOwogICAgIH0KICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCB7IHJldHVybiBt
X3NlbGVjdGVkOyB9CiAKQEAgLTU4LDEyICs2MSwxNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgY2hh
ciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlZpZGVvVHJhY2tQcml2YXRl
IjsgfQogI2VuZGlmCiAKKyAgICB1c2luZyBTZWxlY3RlZENoYW5nZWRDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoVmlkZW9UcmFja1ByaXZhdGUmLCBib29sIHNlbGVjdGVkKT47CisgICAgdm9pZCBz
ZXRTZWxlY3RlZENoYW5nZWRDYWxsYmFjayhTZWxlY3RlZENoYW5nZWRDYWxsYmFjayYmIGNhbGxi
YWNrKSB7IG1fc2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQor
CisKIHByb3RlY3RlZDoKICAgICBWaWRlb1RyYWNrUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAogcHJp
dmF0ZToKICAgICBWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07
CiAgICAgYm9vbCBtX3NlbGVjdGVkIHsgZmFsc2UgfTsKKyAgICBTZWxlY3RlZENoYW5nZWRDYWxs
YmFjayBtX3NlbGVjdGVkQ2hhbmdlZENhbGxiYWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwCmluZGV4IGMxY2IxYTRkMzU2MTI1ZDk0N2Rl
ZmZjMjdmNTlmY2EwYzliNDE4NDEuLmJjMTM5Nzc5N2JhZGE4YTQ3NTliZjUyZjlhNTQ2M2IyZDY0
MWQ3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAKQEAgLTMzLDkgKzMzLDggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFj
aywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKK0F1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhB
VkFzc2V0VHJhY2sqIHRyYWNrKQogICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbD4odHJhY2spKQotICAgICwgbV9wYXJlbnQocGFyZW50KQogewogICAgIHJl
c2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQpAQCAtNjcsNyArNjYsNiBAQCB2b2lkIEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgQXVkaW9UcmFja1ByaXZhdGVBVkY6OnNldEVuYWJsZWQo
ZW5hYmxlZCk7Ci0gICAgbV9wYXJlbnQtPnRyYWNrRGlkQ2hhbmdlRW5hYmxlZCh0aGlzKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggOWJjNGYyNmMwNzM0OWYxNzc2ZjYwYmUw
ZGQxYzJhYmNkN2IzN2Q2Yi4uMTQ1NmMwMTZiYWUwM2I4NzhiNTBiZjU5OTI0ZmI0ZDlmMzUzMDE4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOwogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGVBVkYgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKQogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+
IGNyZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyog
cGFyZW50KQorICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM+IGNyZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2ssIHBh
cmVudCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyh0cmFjaykpOwogICAgIH0KIAogICAgIHZvaWQgc2V0RW5hYmxlZChi
b29sKSBmaW5hbDsKQEAgLTUyLDEyICs1MiwxMSBAQCBwdWJsaWM6CiAgICAgaW50IHRyYWNrSUQo
KSB7IHJldHVybiBtX3RyYWNrSUQ7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqLCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQyogcGFyZW50KTsKKyAgICBleHBsaWNpdCBBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqKTsKICAgICAKICAgICB2b2lkIHJlc2V0UHJv
cGVydGllc0Zyb21UcmFjaygpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFWVHJhY2tQcml2YXRl
QVZGT2JqQ0ltcGw+IG1faW1wbDsKLSAgICBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogbV9w
YXJlbnQ7CiAgICAgaW50IG1fdHJhY2tJRDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5t
bQppbmRleCA2Njg5OTEwMWUxZmM1ODQwNzc3N2I2OWQ2MzkxOTE1ZmQ5YWRkZDIxLi44Yjk0MTUw
N2MwMzg4MWMwMjE2YjRlNzkyZTM5ZGIyNmUzNTdmZGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCkBAIC0yNTMsMjIgKzI1Myw3IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUoY29uCiAgICAg
aWYgKCFwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIAotICAgIFN0cmluZyBleHRlbmRlZFR5
cGUgPSBwYXJhbWV0ZXJzLnR5cGUucmF3KCk7Ci0gICAgU3RyaW5nIG91dHB1dENvZGVjcyA9IHBh
cmFtZXRlcnMudHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsK
LSAgICBpZiAoIW91dHB1dENvZGVjcy5pc0VtcHR5KCkgJiYgW1BBTDo6Z2V0QVZTdHJlYW1EYXRh
UGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dE1JTUVDb2Rl
Y1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFyYW1ldGVyOildKSB7Ci0gICAgICAgIG91dHB1
dENvZGVjcyA9IFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgb3V0cHV0TUlNRUNv
ZGVjUGFyYW1ldGVyRm9ySW5wdXRNSU1FQ29kZWNQYXJhbWV0ZXI6b3V0cHV0Q29kZWNzXTsKLSAg
ICAgICAgZXh0ZW5kZWRUeXBlID0gbWFrZVN0cmluZyhwYXJhbWV0ZXJzLnR5cGUuY29udGFpbmVy
VHlwZSgpLCAiOyBjb2RlY3M9XCIiLCBvdXRwdXRDb2RlY3MsICJcIiIpOwotICAgIH0KLQotICAg
IGF1dG8gc3VwcG9ydGVkID0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0
ZWQ7Ci0gICAgYXV0byYgc3RyZWFtRGF0YVBhcnNlckNhY2hlID0gQVZTdHJlYW1EYXRhUGFyc2Vy
TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKHN0cmVhbURhdGFQYXJzZXJDYWNo
ZS5pc0F2YWlsYWJsZSgpKQotICAgICAgICBzdXBwb3J0ZWQgPSBzdHJlYW1EYXRhUGFyc2VyQ2Fj
aGUuY2FuRGVjb2RlVHlwZShleHRlbmRlZFR5cGUpOwotICAgIGVsc2UgewotICAgICAgICBhdXRv
JiBhc3NldENhY2hlID0gQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpOwotICAgICAg
ICBpZiAoYXNzZXRDYWNoZS5pc0F2YWlsYWJsZSgpKQotICAgICAgICAgICAgc3VwcG9ydGVkID0g
YXNzZXRDYWNoZS5jYW5EZWNvZGVUeXBlKGV4dGVuZGVkVHlwZSk7Ci0gICAgfQorICAgIGF1dG8g
c3VwcG9ydGVkID0gU291cmNlQnVmZmVyUGFyc2VyOjppc0NvbnRlbnRUeXBlU3VwcG9ydGVkKHBh
cmFtZXRlcnMudHlwZSk7CiAKICAgICBpZiAoc3VwcG9ydGVkICE9IE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGU6OklzU3VwcG9ydGVkKQogICAgICAgICByZXR1cm4gc3VwcG9ydGVkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KaW5k
ZXggODI3OGUwNmE1MTIyOTdjN2VkMmIyNjkwZmZlMGNiNDI4ODg1ZmJmNi4uMjkzMjI3OTM5MTBl
YTU3ZjE4MWM5MjAxN2QzY2YzNjU3NzUyMTAzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCkBAIC0zNCw2ICszNCw3IEBACiAj
aW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaCIKICNpbXBvcnQgIk1lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oIgorI2ltcG9y
dCAiU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oIgogI2ltcG9ydCAiU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMuaCIKICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogI2ltcG9ydCA8d3RmL0Fs
Z29yaXRobXMuaD4KQEAgLTg1LDcgKzg2LDExIEBAIE1lZGlhU291cmNlUHJpdmF0ZTo6QWRkU3Rh
dHVzIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDCiAg
ICAgaWYgKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBl
KHBhcmFtZXRlcnMpID09IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVk
KQogICAgICAgICByZXR1cm4gTm90U3VwcG9ydGVkOwogCi0gICAgYXV0byBuZXdTb3VyY2VCdWZm
ZXIgPSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKHRoaXMpOworICAgIGF1dG8g
cGFyc2VyID0gU291cmNlQnVmZmVyUGFyc2VyOjpjcmVhdGUoY29udGVudFR5cGUpOworICAgIGlm
ICghcGFyc2VyKQorICAgICAgICByZXR1cm4gTm90U3VwcG9ydGVkOworCisgICAgYXV0byBuZXdT
b3VyY2VCdWZmZXIgPSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKHRoaXMsIHBh
cnNlci5yZWxlYXNlTm9uTnVsbCgpKTsKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAg
IG5ld1NvdXJjZUJ1ZmZlci0+c2V0Q0RNSW5zdGFuY2UobV9jZG1JbnN0YW5jZS5nZXQoKSk7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43NjMzYWYxYzhjNzJhY2QyZjQ4ZWM4NGU3MGEwZmU1OGQ4NmU1
ZjA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oCkBAIC0wLDAgKzEs
NzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCisKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXIuaCIKKyNpbmNsdWRlIDx3dGYvVHlw
ZUNhc3RzLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworT0JKQ19DTEFTUyBBVkFzc2V0
OworT0JKQ19DTEFTUyBBVlN0cmVhbURhdGFQYXJzZXI7CitPQkpDX0NMQVNTIE5TRGF0YTsKK09C
SkNfQ0xBU1MgTlNFcnJvcjsKK09CSkNfQ0xBU1MgV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVu
ZXI7CisKK3R5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZl
clJlZjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDIGZpbmFsIDogcHVibGljIFNvdXJjZUJ1ZmZlclBhcnNlciwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
TWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIGlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29u
c3QgQ29udGVudFR5cGUmKTsKKworICAgIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKTsKKyAg
ICB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCk7CisKKyAgICBBVlN0cmVhbURh
dGFQYXJzZXIqIHBhcnNlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyLmdldCgpOyB9CisKKyAg
ICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBUeXBlOjpBVkZPYmpDOyB9CisgICAgdm9pZCBh
cHBlbmREYXRhKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmLCBBcHBlbmRGbGFncyA9IEFwcGVuZEZs
YWdzOjpOb25lKSBmaW5hbDsKKyAgICB2b2lkIGZsdXNoUGVuZGluZ01lZGlhRGF0YSgpIGZpbmFs
OworICAgIHZvaWQgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoYm9vbCwgaW50
MzJfdCkgZmluYWw7CisgICAgYm9vbCBzaG91bGRQcm92aWRlTWVkaWFkYXRhRm9yVHJhY2tJRChp
bnQzMl90KSBmaW5hbDsKKyAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKKworICAg
IHZvaWQgZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChBVkFzc2V0Kik7CisgICAgdm9pZCBkaWRG
YWlsVG9QYXJzZVN0cmVhbURhdGFXaXRoRXJyb3IoTlNFcnJvciopOworICAgIHZvaWQgZGlkUHJv
dmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoaW50MzJfdCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJl
ZiwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkIGZsYWdzKTsKKyAgICB2b2lkIHdp
bGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKGlu
dDMyX3QgdHJhY2tJRCk7CisgICAgdm9pZCBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0
aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKE5TRGF0YSosIGludDMyX3QgdHJhY2tJRCk7CisKK3By
aXZhdGU6CisgICAgUmV0YWluUHRyPEFWU3RyZWFtRGF0YVBhcnNlcj4gbV9wYXJzZXI7CisgICAg
UmV0YWluUHRyPFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyPiBtX2RlbGVnYXRlOworICAg
IGJvb2wgbV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4dEluaXRpYWxpemF0aW9uU2VnbWVudCB7IGZh
bHNlIH07CisgICAgYm9vbCBtX3BhcnNlclN0YXRlV2FzUmVzZXQgeyBmYWxzZSB9OworfTsKKwor
fQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlciYgcGFyc2VyKSB7IHJldHVybiBwYXJzZXIudHlwZSgpID09IFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclBhcnNlcjo6VHlwZTo6QVZGT2JqQzsgfQorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NPVVJDRSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY4ODMyMjZjNWUzZDYyYzM4MTZiOWI0ZjExNzc2YzBmODk0ZjA3ZDMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0wLDAgKzEsMzM5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJTb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW1wb3J0ICJBVkFzc2V0TUlN
RVR5cGVDYWNoZS5oIgorI2ltcG9ydCAiQVZBc3NldFRyYWNrVXRpbGl0aWVzLmgiCisjaW1wb3J0
ICJBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLmgiCisjaW1wb3J0ICJBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIgorI2ltcG9ydCAiRm91ckNDLmgiCisjaW1wb3J0
ICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgor
I2ltcG9ydCAiTWVkaWFEZXNjcmlwdGlvbi5oIgorI2ltcG9ydCAiTWVkaWFTYW1wbGUuaCIKKyNp
bXBvcnQgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgorI2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIK
KyNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgorI2ltcG9ydCAiVGltZVJhbmdlcy5oIgorI2ltcG9y
dCAiVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCIKKyNpbXBvcnQgPEFWRm91
bmRhdGlvbi9BVkFzc2V0VHJhY2suaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJy
YXlJbmxpbmVzLmg+CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHBhbC9hdmZv
dW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29h
L0FWRm91bmRhdGlvblNQSS5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4K
KworI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW1wb3J0IDxwYWwvY29j
b2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKworI3ByYWdtYSBtYXJrIC0KKyNwcmFnbWEgbWFy
ayBXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcgorCitAaW50ZXJmYWNlIFdlYkFWU3RyZWFt
RGF0YVBhcnNlckxpc3RlbmVyIDogTlNPYmplY3Q8QVZTdHJlYW1EYXRhUGFyc2VyT3V0cHV0SGFu
ZGxpbmc+IHsKKyAgICBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKiBfcGFyZW50
OworICAgIEFWU3RyZWFtRGF0YVBhcnNlciogX3BhcnNlcjsKK30KK0Bwcm9wZXJ0eSAoYXNzaWdu
KSBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKiBwYXJlbnQ7CistIChpZClpbml0
V2l0aFBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyKilwYXJzZXIgcGFyZW50OihXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKilwYXJlbnQ7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcgorLSAoaWQpaW5pdFdpdGhQYXJzZXI6KEFW
U3RyZWFtRGF0YVBhcnNlciopcGFyc2VyIHBhcmVudDooV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQyopcGFyZW50Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAo
IXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBBU1NFUlQocGFyZW50KTsKKyAgICBf
cGFyZW50ID0gcGFyZW50OworICAgIF9wYXJzZXIgPSBwYXJzZXI7CisgICAgW19wYXJzZXIgc2V0
RGVsZWdhdGU6c2VsZl07CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK0BzeW50aGVzaXplIHBhcmVu
dD1fcGFyZW50OworCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbX3BhcnNlciBzZXREZWxlZ2F0
ZTpuaWxdOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZClpbnZhbGlkYXRlCit7
CisgICAgW19wYXJzZXIgc2V0RGVsZWdhdGU6bmlsXTsKKyAgICBfcGFyc2VyID0gbnVsbHB0cjsK
K30KKworLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJl
YW1EYXRhUGFyc2VyIGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQ6KEFWQXNzZXQgKilhc3NldAor
eworICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9
PSBfcGFyc2VyKTsKKyAgICBfcGFyZW50LT5kaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KGFzc2V0
KTsKK30KKworLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilz
dHJlYW1EYXRhUGFyc2VyIGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQ6KEFWQXNzZXQgKilhc3Nl
dCB3aXRoRGlzY29udGludWl0eTooQk9PTClkaXNjb250aW51aXR5Cit7CisgICAgVU5VU0VEX1BB
UkFNKGRpc2NvbnRpbnVpdHkpOworICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwg
c3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKKyAgICBfcGFyZW50LT5kaWRQYXJzZVN0cmVh
bURhdGFBc0Fzc2V0KGFzc2V0KTsKK30KKworLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0
cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0
YVdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCit7CisgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1E
YXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOworICAgIF9wYXJlbnQtPmRp
ZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcihlcnJvcik7Cit9CisKKy0gKHZvaWQpc3Ry
ZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQ
cm92aWRlTWVkaWFEYXRhOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGUgZm9yVHJhY2tJRDooQ01Q
ZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lEIG1lZGlhVHlwZTooTlNTdHJpbmcgKiluc01lZGlhVHlw
ZSBmbGFnczooQVZTdHJlYW1EYXRhUGFyc2VyT3V0cHV0TWVkaWFEYXRhRmxhZ3MpZmxhZ3MKK3sK
KyAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0g
X3BhcnNlcik7CisgICAgX3BhcmVudC0+ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQodHJh
Y2tJRCwgc2FtcGxlLCBuc01lZGlhVHlwZSwgZmxhZ3MpOworfQorCitBTExPV19ERVBSRUNBVEVE
X0lNUExFTUVOVEFUSU9OU19CRUdJTgorLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyV2lsbFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTooQVZTdHJlYW1EYXRhUGFyc2Vy
ICopc3RyZWFtRGF0YVBhcnNlciBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNr
SUQKK0FMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAoreworICAgIEFTU0VSVF9V
TlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKKyAg
ICBfcGFyZW50LT53aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRCh0cmFja0lEKTsKK30KKworQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfQkVHSU4KKy0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICop
c3RyZWFtRGF0YVBhcnNlciBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlv
bkRhdGE6KE5TRGF0YSAqKWluaXREYXRhIGZvclRyYWNrSUQ6KENNUGVyc2lzdGVudFRyYWNrSUQp
dHJhY2tJRAorQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECit7CisgICAgQVNT
RVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIp
OworICAgIF9wYXJlbnQtPmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9u
RGF0YUZvclRyYWNrSUQoaW5pdERhdGEsIHRyYWNrSUQpOworfQorQGVuZAorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKyNwcmFnbWEgbWFyayAtCisjcHJhZ21hIG1hcmsgTWVkaWFEZXNjcmlwdGlv
bkFWRk9iakMKKworY2xhc3MgTWVkaWFEZXNjcmlwdGlvbkFWRk9iakMgZmluYWwgOiBwdWJsaWMg
TWVkaWFEZXNjcmlwdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxNZWRpYURlc2NyaXB0
aW9uQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayogdHJhY2spIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgTWVkaWFEZXNjcmlwdGlvbkFWRk9iakModHJhY2spKTsgfQorICAgIHZpcnR1YWwgfk1l
ZGlhRGVzY3JpcHRpb25BVkZPYmpDKCkgeyB9CisKKyAgICBib29sIGlzVmlkZW8oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2lzVmlkZW87IH0KKyAgICBib29sIGlzQXVkaW8oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2lzQXVkaW87IH0KKyAgICBib29sIGlzVGV4dCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1faXNUZXh0OyB9CisgICAgQXRvbVN0cmluZyBjb2RlYygpIGNvbnN0
IG92ZXJyaWRlCisgICAgeworICAgICAgICAvLyBBdG9tU3RyaW5ncyBjYW4gb25seSBiZSBkZXN0
cm95ZWQgZnJvbSB0aGUgc2FtZSB0aHJlYWQgdGhleSdyZQorICAgICAgICAvLyBjcmVhdGVkIGlu
LiBTaW5jZSB0aGlzIHN0cnVjdHVyZSBpcyBjcmVhdGVkIGluIGEgcGFyc2VyIHRocmVhZAorICAg
ICAgICAvLyBvbmx5IGNyZWF0ZSB0aGUgQXRvbVN0cmluZyB0aGUgZmlyc3QgdGltZSB0aGlzIGZ1
bmN0aW9uIGlzIGFjY2Vzc2VkCisgICAgICAgIC8vIHdoaWNoIGlzIHByZXN1bWFibHkgb24gdGhl
IG1haW4gdGhyZWFkLgorICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBp
ZiAoIW1fY29kZWMpCisgICAgICAgICAgICBtX2NvZGVjID0gQXRvbVN0cmluZyhyZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oJm1fb3JpZ2luYWxDb2RlYyksIDQpOworICAgICAgICByZXR1
cm4gKm1fY29kZWM7CisgICAgfQorCitwcml2YXRlOgorICAgIE1lZGlhRGVzY3JpcHRpb25BVkZP
YmpDKEFWQXNzZXRUcmFjayogdHJhY2spCisgICAgICAgIDogbV9pc1ZpZGVvKFt0cmFjayBoYXNN
ZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbF0pCisgICAgICAg
ICwgbV9pc0F1ZGlvKFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0
ZXJpc3RpY0F1ZGlibGVdKQorICAgICAgICAsIG1faXNUZXh0KFt0cmFjayBoYXNNZWRpYUNoYXJh
Y3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGVdKQorICAgIHsKKyAgICAgICAg
TlNBcnJheSogZm9ybWF0RGVzY3JpcHRpb25zID0gW3RyYWNrIGZvcm1hdERlc2NyaXB0aW9uc107
CisgICAgICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzY3JpcHRpb24gPSBbZm9ybWF0RGVz
Y3JpcHRpb25zIGNvdW50XSA/IChfX2JyaWRnZSBDTUZvcm1hdERlc2NyaXB0aW9uUmVmKVtmb3Jt
YXREZXNjcmlwdGlvbnMgb2JqZWN0QXRJbmRleDowXSA6IDA7CisgICAgICAgIGlmIChkZXNjcmlw
dGlvbikgeworICAgICAgICAgICAgbV9vcmlnaW5hbENvZGVjID0gUEFMOjpzb2Z0TGlua19Db3Jl
TWVkaWFfQ01Gb3JtYXREZXNjcmlwdGlvbkdldE1lZGlhU3ViVHlwZShkZXNjcmlwdGlvbik7Cisg
ICAgICAgICAgICBDRlN0cmluZ1JlZiBvcmlnaW5hbEZvcm1hdEtleSA9IFBBTDo6Y2FuTG9hZF9D
b3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fUHJvdGVjdGVkQ29udGVudE9y
aWdpbmFsRm9ybWF0KCkgPyBQQUw6OmdldF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRpb25F
eHRlbnNpb25fUHJvdGVjdGVkQ29udGVudE9yaWdpbmFsRm9ybWF0KCkgOiBDRlNUUigiQ29tbW9u
RW5jcnlwdGlvbk9yaWdpbmFsRm9ybWF0Iik7CisgICAgICAgICAgICBDRlR5cGVSZWYgb3JpZ2lu
YWxGb3JtYXQgPSBDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9uKGRlc2NyaXB0aW9uLCBv
cmlnaW5hbEZvcm1hdEtleSk7CisgICAgICAgICAgICBpZiAob3JpZ2luYWxGb3JtYXQgJiYgQ0ZH
ZXRUeXBlSUQob3JpZ2luYWxGb3JtYXQpID09IENGTnVtYmVyR2V0VHlwZUlEKCkpCisgICAgICAg
ICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZSgoQ0ZOdW1iZXJSZWYpb3JpZ2luYWxGb3JtYXQsIGtD
Rk51bWJlclNJbnQzMlR5cGUsICZtX29yaWdpbmFsQ29kZWMpOworICAgICAgICB9CisgICAgfQor
CisgICAgRm91ckNoYXJDb2RlIG1fb3JpZ2luYWxDb2RlYzsKKyAgICBtdXRhYmxlIE9wdGlvbmFs
PEF0b21TdHJpbmc+IG1fY29kZWM7CisgICAgYm9vbCBtX2lzVmlkZW87CisgICAgYm9vbCBtX2lz
QXVkaW87CisgICAgYm9vbCBtX2lzVGV4dDsKK307CisKKyNwcmFnbWEgbWFyayAtCisjcHJhZ21h
IG1hcmsgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQworCitNZWRpYVBsYXllckVudW1zOjpTdXBw
b3J0c1R5cGUgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRl
ZChjb25zdCBDb250ZW50VHlwZSYgdHlwZSkKK3sKKyAgICBTdHJpbmcgZXh0ZW5kZWRUeXBlID0g
dHlwZS5yYXcoKTsKKyAgICBTdHJpbmcgb3V0cHV0Q29kZWNzID0gdHlwZS5wYXJhbWV0ZXIoQ29u
dGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsKKyAgICBpZiAoIW91dHB1dENvZGVjcy5pc0Vt
cHR5KCkgJiYgW1BBTDo6Z2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKG91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVj
UGFyYW1ldGVyOildKSB7CisgICAgICAgIG91dHB1dENvZGVjcyA9IFtQQUw6OmdldEFWU3RyZWFt
RGF0YVBhcnNlckNsYXNzKCkgb3V0cHV0TUlNRUNvZGVjUGFyYW1ldGVyRm9ySW5wdXRNSU1FQ29k
ZWNQYXJhbWV0ZXI6b3V0cHV0Q29kZWNzXTsKKyAgICAgICAgZXh0ZW5kZWRUeXBlID0gbWFrZVN0
cmluZyh0eXBlLmNvbnRhaW5lclR5cGUoKSwgIjsgY29kZWNzPVwiIiwgb3V0cHV0Q29kZWNzLCAi
XCIiKTsKKyAgICB9CisKKyAgICBhdXRvJiBzdHJlYW1EYXRhUGFyc2VyQ2FjaGUgPSBBVlN0cmVh
bURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKTsKKyAgICBpZiAoc3RyZWFtRGF0
YVBhcnNlckNhY2hlLmlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBzdHJlYW1EYXRhUGFy
c2VyQ2FjaGUuY2FuRGVjb2RlVHlwZShleHRlbmRlZFR5cGUpOworCisgICAgYXV0byYgYXNzZXRD
YWNoZSA9IEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKTsKKyAgICBpZiAoYXNzZXRD
YWNoZS5pc0F2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm4gYXNzZXRDYWNoZS5jYW5EZWNvZGVU
eXBlKGV4dGVuZGVkVHlwZSk7CisKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9y
dHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKK30KKworU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCisgICAgOiBtX3BhcnNlcihhZG9wdE5TKFtQQUw6
OmFsbG9jQVZTdHJlYW1EYXRhUGFyc2VySW5zdGFuY2UoKSBpbml0XSkpCisgICAgLCBtX2RlbGVn
YXRlKGFkb3B0TlMoW1tXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBhbGxvY10gaW5pdFdp
dGhQYXJzZXI6bV9wYXJzZXIuZ2V0KCkgcGFyZW50OnRoaXNdKSkKK3sKK30KKworU291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKQoreworICAgIG1f
ZGVsZWdhdGUuZ2V0KCkucGFyZW50ID0gbnVsbHB0cjsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRhdGEsIEFw
cGVuZEZsYWdzIGZsYWdzKQoreworICAgIGF1dG8gc2hhcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkRGF0YS0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgaWYgKG1fcGFyc2VyU3RhdGVXYXNSZXNldCB8fCBmbGFncyA9PSBB
cHBlbmRGbGFnczo6RGlzY29udGludWl0eSkKKyAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0cmVh
bURhdGE6bnNEYXRhLmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURhdGFQYXJzZXJTdHJlYW1EYXRh
RGlzY29udGludWl0eV07CisgICAgZWxzZQorICAgICAgICBbbV9wYXJzZXIgYXBwZW5kU3RyZWFt
RGF0YTpuc0RhdGEuZ2V0KCldOworICAgIG1fcGFyc2VyU3RhdGVXYXNSZXNldCA9IGZhbHNlOwor
fQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmZsdXNoUGVuZGluZ01lZGlhRGF0
YSgpCit7CisgICAgW21fcGFyc2VyIHByb3ZpZGVQZW5kaW5nTWVkaWFEYXRhXTsKK30KKwordm9p
ZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9y
VHJhY2tJRChib29sIHNob3VsZCwgaW50MzJfdCB0cmFja0lEKQoreworICAgIFttX3BhcnNlciBz
ZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhOnNob3VsZCBmb3JUcmFja0lEOnRyYWNrSURdOworfQor
Citib29sIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OnNob3VsZFByb3ZpZGVNZWRpYWRhdGFG
b3JUcmFja0lEKGludDMyX3QgdHJhY2tJRCkKK3sKKyAgICByZXR1cm4gW21fcGFyc2VyIHNob3Vs
ZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEOnRyYWNrSURdOworfQorCit2b2lkIFNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakM6OnJlc2V0UGFyc2VyU3RhdGUoKQoreworICAgIG1fcGFyc2VyU3Rh
dGVXYXNSZXNldCA9IHRydWU7CisgICAgbV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4dEluaXRpYWxp
emF0aW9uU2VnbWVudCA9IHRydWU7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChBVkFzc2V0KiBhc3NldCkKK3sKKyAgICBjYWxs
T25NYWluVGhyZWFkKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyksIGFzc2V0ID0g
cmV0YWluUHRyKGFzc2V0KV0geworICAgICAgICBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5p
dGlhbGl6YXRpb25TZWdtZW50ID0gZmFsc2U7CisKKyAgICAgICAgaWYgKCFtX2RpZFBhcnNlSW5p
dGlhbGl6YXRpb25EYXRhQ2FsbGJhY2spCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
SW5pdGlhbGl6YXRpb25TZWdtZW50IHNlZ21lbnQ7CisKKyAgICAgICAgaWYgKFthc3NldCByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG92ZXJhbGxEdXJhdGlvbkhpbnQpXSkKKyAgICAgICAg
ICAgIHNlZ21lbnQuZHVyYXRpb24gPSBQQUw6OnRvTWVkaWFUaW1lKFthc3NldCBvdmVyYWxsRHVy
YXRpb25IaW50XSk7CisKKyAgICAgICAgaWYgKHNlZ21lbnQuZHVyYXRpb24uaXNJbnZhbGlkKCkg
fHwgc2VnbWVudC5kdXJhdGlvbiA9PSBNZWRpYVRpbWU6Onplcm9UaW1lKCkpCisgICAgICAgICAg
ICBzZWdtZW50LmR1cmF0aW9uID0gUEFMOjp0b01lZGlhVGltZShbYXNzZXQgZHVyYXRpb25dKTsK
KworICAgICAgICBmb3IgKEFWQXNzZXRUcmFjayogdHJhY2sgaW4gW2Fzc2V0IHRyYWNrc10pIHsK
KyAgICAgICAgICAgIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hh
cmFjdGVyaXN0aWNMZWdpYmxlXSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FKDEyNTE2MSk6
IEhhbmRsZSBpbi1iYW5kIHRleHQgdHJhY2tzLgorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVy
aXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljVmlzdWFsXSkgeworICAgICAgICAgICAgICAgIFNv
dXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDo6VmlkZW9UcmFj
a0luZm9ybWF0aW9uIGluZm87CisgICAgICAgICAgICAgICAgYXV0byB2aWRlb1RyYWNrID0gVmlk
ZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjayk7CisgICAgICAg
ICAgICAgICAgaW5mby50cmFjayA9IHZpZGVvVHJhY2suY29weVJlZigpOworICAgICAgICAgICAg
ICAgIGluZm8uZGVzY3JpcHRpb24gPSBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQzo6Y3JlYXRlKHRy
YWNrKTsKKyAgICAgICAgICAgICAgICBzZWdtZW50LnZpZGVvVHJhY2tzLmFwcGVuZChpbmZvKTsK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZN
ZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJsZV0pIHsKKyAgICAgICAgICAgICAgICBTb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ6OkF1ZGlvVHJhY2tJbmZvcm1h
dGlvbiBpbmZvOworICAgICAgICAgICAgICAgIGF1dG8gYXVkaW9UcmFjayA9IEF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGUodHJhY2spOworICAgICAgICAgICAgICAg
IGluZm8udHJhY2sgPSBhdWRpb1RyYWNrLmNvcHlSZWYoKTsKKyAgICAgICAgICAgICAgICBpbmZv
LmRlc2NyaXB0aW9uID0gTWVkaWFEZXNjcmlwdGlvbkFWRk9iakM6OmNyZWF0ZSh0cmFjayk7Cisg
ICAgICAgICAgICAgICAgc2VnbWVudC5hdWRpb1RyYWNrcy5hcHBlbmQoaW5mbyk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIEZJWE1FKDEyNTE2MSkgICAgOiBBZGQgVGV4dFRyYWNr
IHN1cHBvcnQKKyAgICAgICAgfQorCisgICAgICAgIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRh
dGFDYWxsYmFjayhXVEZNb3ZlKHNlZ21lbnQpKTsKKyAgICB9KTsKK30KKwordm9pZCBTb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRGYWlsVG9QYXJzZVN0cmVhbURhdGFXaXRoRXJyb3IoTlNF
cnJvciogZXJyb3IpCit7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgc3Ryb25nVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvcildIHsKKyAgICAgICAgaWYg
KG1fZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2spCisgICAgICAgICAgICBt
X2RpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKGVycm9yLmdldCgpLmNvZGUp
OworICAgIH0pOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFByb3Zp
ZGVNZWRpYURhdGFGb3JUcmFja0lEKGludDMyX3QgdHJhY2tJRCwgQ01TYW1wbGVCdWZmZXJSZWYg
c2FtcGxlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgdW5zaWduZWQgZmxhZ3MpCit7
CisgICAgVU5VU0VEX1BBUkFNKGZsYWdzKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBz
dHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyksIHNhbXBsZUJ1ZmZlciA9IHJldGFpblB0cihzYW1w
bGVCdWZmZXIpLCB0cmFja0lELCBtZWRpYVR5cGUgPSBtZWRpYVR5cGVdIHsKKyAgICAgICAgaWYg
KCFtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjaykKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBpZiAobV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4dEluaXRpYWxpemF0aW9uU2VnbWVu
dCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIG1lZGlhU2FtcGxlID0gTWVk
aWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUoc2FtcGxlQnVmZmVyLmdldCgpLCB0cmFja0lEKTsKKwor
ICAgICAgICBpZiAobWVkaWFTYW1wbGUtPmlzSG9tb2dlbmVvdXMoKSkgeworICAgICAgICAgICAg
bV9kaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2soV1RGTW92ZShtZWRpYVNhbXBsZSksIHRyYWNr
SUQsIG1lZGlhVHlwZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBmb3IgKGF1dG8mIHNhbXBsZSA6IG1lZGlhU2FtcGxlLT5kaXZpZGVJbnRvSG9tb2dlbmVvdXNT
YW1wbGVzKCkpCisgICAgICAgICAgICBtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhXVEZN
b3ZlKHNhbXBsZSksIHRyYWNrSUQsIG1lZGlhVHlwZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRp
YWxpemF0aW9uRGF0YUZvclRyYWNrSUQoaW50MzJfdCB0cmFja0lEKQoreworICAgIG1fd2lsbFBy
b3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFj
ayh0cmFja0lEKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKE5TRGF0YSog
bnNJbml0RGF0YSwgaW50MzJfdCB0cmFja0lEKQoreworICAgIGF1dG8gaW5pdERhdGEgPSBVaW50
OEFycmF5OjpjcmVhdGUobnNJbml0RGF0YS5sZW5ndGgpOworICAgIFtuc0luaXREYXRhIGdldEJ5
dGVzOmluaXREYXRhLT5kYXRhKCkgbGVuZ3RoOmluaXREYXRhLT5sZW5ndGgoKV07CisKKyAgICBt
X2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURD
YWxsYmFjayhXVEZNb3ZlKGluaXREYXRhKSwgdHJhY2tJRCk7Cit9CisKK30KKworI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRleCBkZmExMzRiNGQ2OGZkYjc0NzM0Mzc4ZDlm
OWRkM2JkODQxZjMzZDY1Li42ZDE5NGFiMTQwYThiZDM0OTNiZWIzYWRkZjMyODNkM2I4ZTc1ZmQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpICYm
IFVTRShBVkZPVU5EQVRJT04pCiAKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXIuaCIKICNp
bmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlLmgiCiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZ3JvdXAu
aD4KICNpbmNsdWRlIDx3dGYvQm94Lmg+CkBAIC0zOCwxOCArMzksMTcgQEAKICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV1RGU2VtYXBob3JlLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKLU9CSkNfQ0xBU1MgQVZBc3NldDsKIE9CSkNf
Q0xBU1MgQVZTdHJlYW1EYXRhUGFyc2VyOwogT0JKQ19DTEFTUyBBVlNhbXBsZUJ1ZmZlckF1ZGlv
UmVuZGVyZXI7CiBPQkpDX0NMQVNTIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOwogT0JKQ19D
TEFTUyBOU0RhdGE7CiBPQkpDX0NMQVNTIE5TRXJyb3I7CiBPQkpDX0NMQVNTIE5TT2JqZWN0Owot
T0JKQ19DTEFTUyBXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcjsKIE9CSkNfQ0xBU1MgV2Vi
QVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyOwogCiB0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNh
bXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7CkBAIC04NiwzNCArODYsMjcgQEAgY2xhc3Mg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMgZmluYWwKICNlbmRpZgogewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IGNyZWF0ZShNZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDKik7CisgICAgc3RhdGljIFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQz4gY3JlYXRlKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqLCBSZWY8U291cmNlQnVmZmVy
UGFyc2VyPiYmKTsKICAgICB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQygpOwog
CiAgICAgdm9pZCBjbGVhck1lZGlhU291cmNlKCkgeyBtX21lZGlhU291cmNlID0gbnVsbHB0cjsg
fQogCi0gICAgLy8gQVZTdHJlYW1EYXRhUGFyc2VyIGRlbGVnYXRlIG1ldGhvZHMKLSAgICB2b2lk
IGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3NldCopOwotICAgIHZvaWQgZGlkRmFpbFRv
UGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yKE5TRXJyb3IqKTsKLSAgICB2b2lkIGRpZFByb3ZpZGVN
ZWRpYURhdGFGb3JUcmFja0lEKGludCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJlZiwgY29uc3Qg
U3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkIGZsYWdzKTsKLSAgICB2b2lkIGRpZFJlYWNoRW5k
T2ZUcmFja1dpdGhUcmFja0lEKGludCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7
Ci0gICAgdm9pZCB3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRChpbnQgdHJhY2tJRCk7Ci0gICAgdm9pZCBkaWRQcm92aWRlQ29udGVudEtleVJl
cXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKE5TRGF0YSosIGludCB0cmFja0lELCBC
b3g8QmluYXJ5U2VtYXBob3JlPik7Ci0KLSAgICBib29sIHByb2Nlc3NDb2RlZEZyYW1lKGludCB0
cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJlZiwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpOworICAg
IHZvaWQgd2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRy
YWNrSUQoaW50MzJfdCB0cmFja0lEKTsKKyAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoUmVmPFVpbnQ4QXJyYXk+JiYsIGludDMy
X3QgdHJhY2tJRCwgQm94PEJpbmFyeVNlbWFwaG9yZT4pOwogCiAgICAgYm9vbCBoYXNWaWRlbygp
IGNvbnN0OwogICAgIGJvb2wgaGFzU2VsZWN0ZWRWaWRlbygpIGNvbnN0OwogICAgIGJvb2wgaGFz
QXVkaW8oKSBjb25zdDsKIAotICAgIHZvaWQgdHJhY2tEaWRDaGFuZ2VFbmFibGVkKFZpZGVvVHJh
Y2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKik7Ci0gICAgdm9pZCB0cmFja0RpZENoYW5nZUVu
YWJsZWQoQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqKTsKKyAgICB2b2lkIHRy
YWNrRGlkQ2hhbmdlU2VsZWN0ZWQoVmlkZW9UcmFja1ByaXZhdGUmLCBib29sIHNlbGVjdGVkKTsK
KyAgICB2b2lkIHRyYWNrRGlkQ2hhbmdlRW5hYmxlZChBdWRpb1RyYWNrUHJpdmF0ZSYsIGJvb2wg
ZW5hYmxlZCk7CiAKICAgICB2b2lkIHdpbGxTZWVrKCk7CiAgICAgTWVkaWFUaW1lIGZhc3RTZWVr
VGltZUZvck1lZGlhVGltZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmIG5lZ2F0
aXZlVGhyZXNob2xkLCBjb25zdCBNZWRpYVRpbWUmIHBvc2l0aXZlVGhyZXNob2xkKTsKICAgICBG
bG9hdFNpemUgbmF0dXJhbFNpemUoKTsKIAogICAgIGludCBwcm90ZWN0ZWRUcmFja0lEKCkgY29u
c3QgeyByZXR1cm4gbV9wcm90ZWN0ZWRUcmFja0lEOyB9Ci0gICAgQVZTdHJlYW1EYXRhUGFyc2Vy
KiBwYXJzZXIoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlci5nZXQoKTsgfQorICAgIEFWU3RyZWFt
RGF0YVBhcnNlciogcGFyc2VyKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDRE1TZXNzaW9uKENETVNl
c3Npb25NZWRpYVNvdXJjZUFWRk9iakMqKTsKICAgICB2b2lkIHNldENETUluc3RhbmNlKENETUlu
c3RhbmNlKik7CiAgICAgdm9pZCBhdHRlbXB0VG9EZWNyeXB0KCk7CkBAIC0xNDgsNyArMTQxLDEy
IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqKTsKKyAgICBleHBsaWNp
dCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiwg
UmVmPFNvdXJjZUJ1ZmZlclBhcnNlcj4mJik7CisKKyAgICB1c2luZyBJbml0aWFsaXphdGlvblNl
Z21lbnQgPSBTb3VyY2VCdWZmZXJQYXJzZXI6OkluaXRpYWxpemF0aW9uU2VnbWVudDsKKyAgICB2
b2lkIGRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVudCYmKTsK
KyAgICB2b2lkIGRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhpbnQzMl90KTsKKyAgICB2
b2lkIGRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKFJlZjxNZWRpYVNhbXBsZT4mJiwgaW50
MzJfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CiAKICAgICAvLyBTb3VyY2VC
dWZmZXJQcml2YXRlIG92ZXJyaWRlcwogICAgIHZvaWQgc2V0Q2xpZW50KFNvdXJjZUJ1ZmZlclBy
aXZhdGVDbGllbnQqKSBmaW5hbDsKQEAgLTE3MiwyOCArMTcwLDI4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBhcHBlbmRDb21wbGV0ZWQoKTsKICAgICB2b2lkIGRlc3Ryb3lQYXJzZXIoKTsKICAgICB2
b2lkIGRlc3Ryb3lSZW5kZXJlcnMoKTsKKyAgICB2b2lkIGNsZWFyVHJhY2tzKCk7CiAKICAgICB2
b2lkIGZsdXNoVmlkZW8oKTsKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lO
CiAgICAgdm9pZCBmbHVzaChBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIgKik7CiAgICAgQUxM
T1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKIAotICAgIFZlY3RvcjxSZWZQdHI8VmlkZW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+PiBtX3ZpZGVvVHJhY2tzOwotICAgIFZlY3Rv
cjxSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+PiBtX2F1ZGlvVHJh
Y2tzOworICAgIFZlY3RvcjxSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+PiBtX3ZpZGVvVHJhY2tz
OworICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+PiBtX2F1ZGlvVHJhY2tzOwog
ICAgIFZlY3RvcjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQ0Vycm9yQ2xpZW50Kj4gbV9lcnJv
ckNsaWVudHM7CiAKICAgICBXZWFrUHRyRmFjdG9yeTxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qz4gbV9hcHBlbmRXZWFrRmFjdG9yeTsKIAotICAgIFJldGFpblB0cjxBVlN0cmVhbURhdGFQYXJz
ZXI+IG1fcGFyc2VyOwotICAgIFJldGFpblB0cjxBVkFzc2V0PiBtX2Fzc2V0OworICAgIFJlZjxT
b3VyY2VCdWZmZXJQYXJzZXI+IG1fcGFyc2VyOwogICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcj4gbV9kaXNwbGF5TGF5ZXI7CiAgICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VU
X0dVQVJEU19CRUdJTgogICAgIEhhc2hNYXA8aW50LCBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJB
dWRpb1JlbmRlcmVyPj4gbV9hdWRpb1JlbmRlcmVyczsKICAgICBBTExPV19ORVdfQVBJX1dJVEhP
VVRfR1VBUkRTX0VORAotICAgIFJldGFpblB0cjxXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5l
cj4gbV9kZWxlZ2F0ZTsKICAgICBSZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3Rl
bmVyPiBtX2Vycm9yTGlzdGVuZXI7CiAgICAgUmV0YWluUHRyPE5TRXJyb3I+IG1faGRjcEVycm9y
OwogICAgIEJveDxCaW5hcnlTZW1hcGhvcmU+IG1faGFzU2Vzc2lvblNlbWFwaG9yZTsKKyAgICBC
b3g8U2VtYXBob3JlPiBtX2Fib3J0U2VtYXBob3JlOwogICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNo
X2dyb3VwX3Q+IG1faXNBcHBlbmRpbmdHcm91cDsKICAgICBSZWZQdHI8V2ViQ29yZURlY29tcHJl
c3Npb25TZXNzaW9uPiBtX2RlY29tcHJlc3Npb25TZXNzaW9uOwogCkBAIC0yMTEsOCArMjA5LDYg
QEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxGbG9hdFNpemU+IG1fY2FjaGVkU2l6ZTsKICAgICBG
bG9hdFNpemUgbV9jdXJyZW50U2l6ZTsKICAgICBib29sIG1fcGFyc2luZ1N1Y2NlZWRlZCB7IHRy
dWUgfTsKLSAgICBib29sIG1fcGFyc2VyU3RhdGVXYXNSZXNldCB7IGZhbHNlIH07Ci0gICAgYm9v
bCBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50IHsgZmFsc2Ug
fTsKICAgICBib29sIG1fd2FpdGluZ0ZvcktleSB7IHRydWUgfTsKICAgICBpbnQgbV9lbmFibGVk
VmlkZW9UcmFja0lEIHsgLTEgfTsKICAgICBpbnQgbV9wcm90ZWN0ZWRUcmFja0lEIHsgLTEgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMubW0KaW5kZXggZDczNTc3NWNjOGYwNGI4YjAyMWIzNWM3MDE2OTViZDI0ZjZmOGRhOC4uYjlh
NDg5YzA4Mjk0M2UzNTk2NDRhNDM1NjYyOWVlZmJhOWQ5Mjk5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTQ0LDYg
KzQ0LDcgQEAKICNpbXBvcnQgIk1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaCIKICNpbXBvcnQg
Ik5vdEltcGxlbWVudGVkLmgiCiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKKyNpbXBvcnQgIlNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCIKICNpbXBvcnQgIlNvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQuaCIKICNpbXBvcnQgIlRpbWVSYW5nZXMuaCIKICNpbXBvcnQgIlZpZGVvVHJhY2tQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgiCkBAIC04MiwxNTMgKzgzLDYgQEAgLSAodm9pZClhZGRT
dHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyOwog
LSAodm9pZClyZW1vdmVTdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJl
YW1EYXRhUGFyc2VyOwogQGVuZAogCi0jcHJhZ21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIFdlYkFW
U3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyCi0KLUBpbnRlcmZhY2UgV2ViQVZTdHJlYW1EYXRhUGFy
c2VyTGlzdGVuZXIgOiBOU09iamVjdDxBVlN0cmVhbURhdGFQYXJzZXJPdXRwdXRIYW5kbGluZz4g
ewotICAgIFdlYWtQdHI8V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IF9wYXJl
bnQ7Ci0gICAgQm94PFNlbWFwaG9yZT4gX2Fib3J0U2VtYXBob3JlOwotICAgIEFWU3RyZWFtRGF0
YVBhcnNlciogX3BhcnNlcjsKLX0KLUBwcm9wZXJ0eSAoYXNzaWduKSBXZWFrUHRyPFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBwYXJlbnQ7Ci1AcHJvcGVydHkgKGFzc2lnbikg
Qm94PFNlbWFwaG9yZT4gYWJvcnRTZW1hcGhvcmU7Ci0tIChpZClpbml0V2l0aFBhcnNlcjooQVZT
dHJlYW1EYXRhUGFyc2VyKilwYXJzZXIgcGFyZW50OihXZWFrUHRyPFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDPilwYXJlbnQ7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJB
VlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcgotLSAoaWQpaW5pdFdpdGhQYXJzZXI6KEFWU3RyZWFt
RGF0YVBhcnNlciopcGFyc2VyIHBhcmVudDooV2Vha1B0cjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQz4pcGFyZW50Ci17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBp
ZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBBU1NFUlQocGFyZW50KTsKLSAg
ICBfcGFyZW50ID0gcGFyZW50OwotICAgIF9wYXJzZXIgPSBwYXJzZXI7Ci0gICAgW19wYXJzZXIg
c2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLUBzeW50aGVzaXplIHBh
cmVudD1fcGFyZW50OwotQHN5bnRoZXNpemUgYWJvcnRTZW1hcGhvcmU9X2Fib3J0U2VtYXBob3Jl
OwotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbX3BhcnNlciBzZXREZWxlZ2F0ZTpuaWxdOwot
ICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClpbnZhbGlkYXRlCi17Ci0gICAgW19w
YXJzZXIgc2V0RGVsZWdhdGU6bmlsXTsKLSAgICBfcGFyc2VyID0gbnVsbHB0cjsKLX0KLQotLSAo
dm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFy
c2VyIGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQ6KEFWQXNzZXQgKilhc3NldAotewotICAgIEFT
U0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2Vy
KTsKLQotICAgIFJldGFpblB0cjxBVkFzc2V0PiBwcm90ZWN0ZWRBc3NldCA9IGFzc2V0OwotICAg
IGNhbGxPbk1haW5UaHJlYWQoW3BhcmVudCA9IF9wYXJlbnQsIHByb3RlY3RlZEFzc2V0ID0gV1RG
TW92ZShwcm90ZWN0ZWRBc3NldCldIHsKLSAgICAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAg
IHBhcmVudC0+ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChwcm90ZWN0ZWRBc3NldC5nZXQoKSk7
Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFy
c2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0OihBVkFzc2V0
ICopYXNzZXQgd2l0aERpc2NvbnRpbnVpdHk6KEJPT0wpZGlzY29udGludWl0eQotewotICAgIFVO
VVNFRF9QQVJBTShkaXNjb250aW51aXR5KTsKLSAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQ
YXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7Ci0KLSAgICBSZXRhaW5QdHI8QVZB
c3NldD4gcHJvdGVjdGVkQXNzZXQgPSBhc3NldDsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwYXJl
bnQgPSBfcGFyZW50LCBwcm90ZWN0ZWRBc3NldCA9IFdURk1vdmUocHJvdGVjdGVkQXNzZXQpXSB7
Ci0gICAgICAgIGlmIChwYXJlbnQpCi0gICAgICAgICAgICBwYXJlbnQtPmRpZFBhcnNlU3RyZWFt
RGF0YUFzQXNzZXQocHJvdGVjdGVkQXNzZXQuZ2V0KCkpOwotICAgIH0pOwotfQotCi0tICh2b2lk
KXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIg
ZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKLXsKLSAg
ICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3Bh
cnNlcik7Ci0KLSAgICBSZXRhaW5QdHI8TlNFcnJvcj4gcHJvdGVjdGVkRXJyb3IgPSBlcnJvcjsK
LSAgICBjYWxsT25NYWluVGhyZWFkKFtwYXJlbnQgPSBfcGFyZW50LCBwcm90ZWN0ZWRFcnJvciA9
IFdURk1vdmUocHJvdGVjdGVkRXJyb3IpXSB7Ci0gICAgICAgIGlmIChwYXJlbnQpCi0gICAgICAg
ICAgICBwYXJlbnQtPmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcihwcm90ZWN0ZWRF
cnJvci5nZXQoKSk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZT
dHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQcm92aWRlTWVkaWFEYXRhOihD
TVNhbXBsZUJ1ZmZlclJlZilzYW1wbGUgZm9yVHJhY2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0
cmFja0lEIG1lZGlhVHlwZTooTlNTdHJpbmcgKiluc01lZGlhVHlwZSBmbGFnczooQVZTdHJlYW1E
YXRhUGFyc2VyT3V0cHV0TWVkaWFEYXRhRmxhZ3MpZmxhZ3MKLXsKLSAgICBBU1NFUlRfVU5VU0VE
KHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7Ci0KLSAgICBS
ZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHByb3RlY3RlZFNhbXBsZSA9IHNhbXBsZTsKLSAg
ICBjYWxsT25NYWluVGhyZWFkKFtwYXJlbnQgPSBfcGFyZW50LCBwcm90ZWN0ZWRTYW1wbGUgPSBX
VEZNb3ZlKHByb3RlY3RlZFNhbXBsZSksIHRyYWNrSUQsIG1lZGlhVHlwZSA9IFN0cmluZyhuc01l
ZGlhVHlwZSksIGZsYWdzXSB7Ci0gICAgICAgIGlmIChwYXJlbnQpCi0gICAgICAgICAgICBwYXJl
bnQtPmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKHRyYWNrSUQsIHByb3RlY3RlZFNhbXBs
ZS5nZXQoKSwgbWVkaWFUeXBlLCBmbGFncyk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpc3RyZWFt
RGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRSZWFj
aEVuZE9mVHJhY2tXaXRoVHJhY2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lEIG1lZGlh
VHlwZTooTlNTdHJpbmcgKiluc01lZGlhVHlwZQotewotICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFt
RGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLQotICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3BhcmVudCA9IF9wYXJlbnQsIHRyYWNrSUQsIG1lZGlhVHlwZSA9IFN0cmluZyhu
c01lZGlhVHlwZSldIHsKLSAgICAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAgIHBhcmVudC0+
ZGlkUmVhY2hFbmRPZlRyYWNrV2l0aFRyYWNrSUQodHJhY2tJRCwgbWVkaWFUeXBlKTsKLSAgICB9
KTsKLX0KLQotQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfQkVHSU4KLS0gKHZvaWQp
c3RyZWFtRGF0YVBhcnNlcldpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlv
bkRhdGE6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZm9yVHJhY2tJRDoo
Q01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lECi1BTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURh
dGFQYXJzZXIgPT0gX3BhcnNlcik7Ci0KLSAgICAvLyBXZSBtdXN0IGNhbGwgc3luY2hyb25vdXNs
eSB0byB0aGUgbWFpbiB0aHJlYWQsIGFzIHRoZSBBVlN0cmVhbVNlc3Npb24gbXVzdCBiZSBhc3Nv
Y2lhdGVkCi0gICAgLy8gd2l0aCB0aGUgc3RyZWFtRGF0YVBhcnNlciBiZWZvcmUgdGhlIGRlbGVn
YXRlIG1ldGhvZCByZXR1cm5zLgotICAgIEJveDxCaW5hcnlTZW1hcGhvcmU+IHJlc3BvbmRlZFNl
bWFwaG9yZSA9IEJveDxCaW5hcnlTZW1hcGhvcmU+OjpjcmVhdGUoKTsKLSAgICBjYWxsT25NYWlu
VGhyZWFkKFtwYXJlbnQgPSBfcGFyZW50LCB0cmFja0lELCByZXNwb25kZWRTZW1hcGhvcmVdKCkg
ewotICAgICAgICBpZiAocGFyZW50KQotICAgICAgICAgICAgcGFyZW50LT53aWxsUHJvdmlkZUNv
bnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCh0cmFja0lEKTsKLSAg
ICAgICAgcmVzcG9uZGVkU2VtYXBob3JlLT5zaWduYWwoKTsKLSAgICB9KTsKLQotICAgIHdoaWxl
ICh0cnVlKSB7Ci0gICAgICAgIGlmIChyZXNwb25kZWRTZW1hcGhvcmUtPndhaXRGb3IoMTAwX21z
KSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoX2Fib3J0U2VtYXBob3JlLT53
YWl0Rm9yKDEwMF9tcykpIHsKLSAgICAgICAgICAgIF9hYm9ydFNlbWFwaG9yZS0+c2lnbmFsKCk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLUFMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCi0tICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFW
U3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOihOU0RhdGEgKilpbml0RGF0YSBmb3JUcmFja0lEOihD
TVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQKLUFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0VORAotewotICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0
YVBhcnNlciA9PSBfcGFyc2VyKTsKLQotICAgIEJveDxCaW5hcnlTZW1hcGhvcmU+IGhhc1Nlc3Np
b25TZW1hcGhvcmUgPSBCb3g8QmluYXJ5U2VtYXBob3JlPjo6Y3JlYXRlKCk7Ci0gICAgY2FsbE9u
TWFpblRocmVhZChbcGFyZW50ID0gX3BhcmVudCwgcHJvdGVjdGVkSW5pdERhdGEgPSBSZXRhaW5Q
dHI8TlNEYXRhPihpbml0RGF0YSksIHRyYWNrSUQsIGhhc1Nlc3Npb25TZW1hcGhvcmVdIHsKLSAg
ICAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAgIHBhcmVudC0+ZGlkUHJvdmlkZUNvbnRlbnRL
ZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChwcm90ZWN0ZWRJbml0RGF0YS5n
ZXQoKSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNlbWFwaG9yZSk7Ci0gICAgfSk7Ci0KLSAgICB3aGls
ZSAodHJ1ZSkgewotICAgICAgICBpZiAoaGFzU2Vzc2lvblNlbWFwaG9yZS0+d2FpdEZvcigxMDBf
bXMpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChfYWJvcnRTZW1hcGhvcmUt
PndhaXRGb3IoMTAwX21zKSkgewotICAgICAgICAgICAgX2Fib3J0U2VtYXBob3JlLT5zaWduYWwo
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLX0KLUBlbmQKLQogQGlu
dGVyZmFjZSBXZWJBVlNhbXBsZUJ1ZmZlckVycm9yTGlzdGVuZXIgOiBOU09iamVjdCB7CiAgICAg
V2Vha1B0cjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gX3BhcmVudDsKICAg
ICBWZWN0b3I8UmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPj4gX2xheWVyczsK
QEAgLTM5MSw0MyArMjQ1LDYgQEAgQGVuZAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFt
ZXNwYWNlIFBBTDsKIAotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBNZWRpYURlc2NyaXB0
aW9uQVZGT2JqQwotCi1jbGFzcyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyBmaW5hbCA6IHB1Ymxp
YyBNZWRpYURlc2NyaXB0aW9uIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1lZGlhRGVzY3Jp
cHRpb25BVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrKiB0cmFjaykgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyh0cmFjaykpOyB9Ci0gICAgdmlydHVhbCB+
TWVkaWFEZXNjcmlwdGlvbkFWRk9iakMoKSB7IH0KLQotICAgIEF0b21TdHJpbmcgY29kZWMoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvZGVjOyB9Ci0gICAgYm9vbCBpc1ZpZGVvKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1ZpZGVvOyB9Ci0gICAgYm9vbCBpc0F1ZGlvKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0F1ZGlvOyB9Ci0gICAgYm9vbCBpc1RleHQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2lzVGV4dDsgfQotICAgIAotcHJpdmF0ZToKLSAgICBNZWRp
YURlc2NyaXB0aW9uQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrKQotICAgICAgICA6IG1faXNW
aWRlbyhbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNW
aXN1YWxdKQotICAgICAgICAsIG1faXNBdWRpbyhbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3Rp
YzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNBdWRpYmxlXSkKLSAgICAgICAgLCBtX2lzVGV4dChbdHJh
Y2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlXSkK
LSAgICB7Ci0gICAgICAgIE5TQXJyYXkqIGZvcm1hdERlc2NyaXB0aW9ucyA9IFt0cmFjayBmb3Jt
YXREZXNjcmlwdGlvbnNdOwotICAgICAgICBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2NyaXB0
aW9uID0gW2Zvcm1hdERlc2NyaXB0aW9ucyBjb3VudF0gPyAoX19icmlkZ2UgQ01Gb3JtYXREZXNj
cmlwdGlvblJlZilbZm9ybWF0RGVzY3JpcHRpb25zIG9iamVjdEF0SW5kZXg6MF0gOiAwOwotICAg
ICAgICBpZiAoZGVzY3JpcHRpb24pIHsKLSAgICAgICAgICAgIEZvdXJDaGFyQ29kZSBjb2RlYyA9
IENNRm9ybWF0RGVzY3JpcHRpb25HZXRNZWRpYVN1YlR5cGUoZGVzY3JpcHRpb24pOwotICAgICAg
ICAgICAgQ0ZTdHJpbmdSZWYgb3JpZ2luYWxGb3JtYXRLZXkgPSBQQUw6OmNhbkxvYWRfQ29yZU1l
ZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1Byb3RlY3RlZENvbnRlbnRPcmlnaW5h
bEZvcm1hdCgpID8gUEFMOjpnZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5z
aW9uX1Byb3RlY3RlZENvbnRlbnRPcmlnaW5hbEZvcm1hdCgpIDogQ0ZTVFIoIkNvbW1vbkVuY3J5
cHRpb25PcmlnaW5hbEZvcm1hdCIpOwotICAgICAgICAgICAgQ0ZUeXBlUmVmIG9yaWdpbmFsRm9y
bWF0ID0gQ01Gb3JtYXREZXNjcmlwdGlvbkdldEV4dGVuc2lvbihkZXNjcmlwdGlvbiwgb3JpZ2lu
YWxGb3JtYXRLZXkpOwotICAgICAgICAgICAgaWYgKG9yaWdpbmFsRm9ybWF0ICYmIENGR2V0VHlw
ZUlEKG9yaWdpbmFsRm9ybWF0KSA9PSBDRk51bWJlckdldFR5cGVJRCgpKQotICAgICAgICAgICAg
ICAgIENGTnVtYmVyR2V0VmFsdWUoKENGTnVtYmVyUmVmKW9yaWdpbmFsRm9ybWF0LCBrQ0ZOdW1i
ZXJTSW50MzJUeXBlLCAmY29kZWMpOwotICAgICAgICAgICAgbV9jb2RlYyA9IEF0b21TdHJpbmco
cmVpbnRlcnByZXRfY2FzdDxMQ2hhcio+KCZjb2RlYyksIDQpOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgQXRvbVN0cmluZyBtX2NvZGVjOwotICAgIGJvb2wgbV9pc1ZpZGVvOwotICAgIGJvb2wg
bV9pc0F1ZGlvOwotICAgIGJvb2wgbV9pc1RleHQ7Ci19OwotCiAjcHJhZ21hIG1hcmsgLQogI3By
YWdtYSBtYXJrIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDCiAKQEAgLTQ2NSwxNCArMjgyLDEz
IEBAIHN0YXRpYyB2b2lkIGJ1ZmZlcldhc0NvbnN1bWVkQ2FsbGJhY2soQ01Ob3RpZmljYXRpb25D
ZW50ZXJSZWYsIGNvbnN0IHZvaWQqIGxpc3RlCiAgICAgICAgIHNvdXJjZUJ1ZmZlci0+YnVmZmVy
V2FzQ29uc3VtZWQoKTsKIH0KIAotUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMq
IHBhcmVudCkKK1JlZjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OmNyZWF0ZShNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiBwYXJlbnQsIFJl
ZjxTb3VyY2VCdWZmZXJQYXJzZXI+JiYgcGFyc2VyKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKHBhcmVudCkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKHBhcmVudCwgV1RGTW92ZShwYXJz
ZXIpKSk7CiB9CiAKLVNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCi0gICAgOiBtX3Bh
cnNlcihhZG9wdE5TKFtQQUw6OmFsbG9jQVZTdHJlYW1EYXRhUGFyc2VySW5zdGFuY2UoKSBpbml0
XSkpCi0gICAgLCBtX2RlbGVnYXRlKGFkb3B0TlMoW1tXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0
ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJzZXI6bV9wYXJzZXIuZ2V0KCkgcGFyZW50Om1ha2VXZWFr
UHRyKCp0aGlzKV0pKQorU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqIHBhcmVudCwgUmVmPFNvdXJj
ZUJ1ZmZlclBhcnNlcj4mJiBwYXJzZXIpCisgICAgOiBtX3BhcnNlcihXVEZNb3ZlKHBhcnNlcikp
CiAgICAgLCBtX2Vycm9yTGlzdGVuZXIoYWRvcHROUyhbW1dlYkFWU2FtcGxlQnVmZmVyRXJyb3JM
aXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6bWFrZVdlYWtQdHIoKnRoaXMpXSkpCiAgICAg
LCBtX2lzQXBwZW5kaW5nR3JvdXAoYWRvcHRPU09iamVjdChkaXNwYXRjaF9ncm91cF9jcmVhdGUo
KSkpCiAgICAgLCBtX21lZGlhU291cmNlKHBhcmVudCkKQEAgLTQ4NiwxMCArMzAyLDI2IEBAIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDCiAKICAgICBpZiAoIVtQQUw6OmdldEFWU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyQ2xhc3MoKSBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3Io
cHJlcm9sbERlY29kZVdpdGhDb21wbGV0aW9uSGFuZGxlcjopXSkKICAgICAgICAgQ01Ob3RpZmlj
YXRpb25DZW50ZXJBZGRMaXN0ZW5lcihDTU5vdGlmaWNhdGlvbkNlbnRlckdldERlZmF1bHRMb2Nh
bENlbnRlcigpLCByZWludGVycHJldF9jYXN0PHZvaWQqPihtX21hcElEKSwgYnVmZmVyV2FzQ29u
c3VtZWRDYWxsYmFjaywga0NNU2FtcGxlQnVmZmVyQ29uc3VtZXJOb3RpZmljYXRpb25fQnVmZmVy
Q29uc3VtZWQsIG51bGxwdHIsIDApOwotICAgIAotICAgIG1fZGVsZWdhdGUuZ2V0KCkuYWJvcnRT
ZW1hcGhvcmUgPSBCb3g8U2VtYXBob3JlPjo6Y3JlYXRlKDApOwogCiAgICAgc291cmNlQnVmZmVy
TWFwKCkuYWRkKG1fbWFwSUQsIG1ha2VXZWFrUHRyKCp0aGlzKSk7CisKKyAgICBtX3BhcnNlci0+
c2V0RGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cih0aGlzKV0gKEluaXRpYWxpemF0aW9uU2VnbWVudCYmIHNlZ21lbnQpIG11dGFibGUgewor
ICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBpZiAod2Vha1RoaXMpCisg
ICAgICAgICAgICB3ZWFrVGhpcy0+ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoV1RGTW92ZShz
ZWdtZW50KSk7CisgICAgfSk7CisKKyAgICBtX3BhcnNlci0+c2V0RGlkRW5jb3VudGVyRXJyb3JE
dXJpbmdQYXJzaW5nQ2FsbGJhY2soW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChpbnQz
Ml90IGVycm9yQ29kZSkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgIHdlYWtUaGlzLT5kaWRFbmNvdW50
ZXJFcnJvckR1cmluZ1BhcnNpbmcoZXJyb3JDb2RlKTsKKyAgICB9KTsKKworICAgIG1fcGFyc2Vy
LT5zZXREaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2soW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyldIChSZWY8TWVkaWFTYW1wbGU+JiYgc2FtcGxlLCB1aW50NjRfdCB0cmFja0lELCBjb25z
dCBTdHJpbmcmIG1lZGlhVHlwZSkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgIHdlYWtUaGlzLT5kaWRQ
cm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChXVEZNb3ZlKHNhbXBsZSksIHRyYWNrSUQsIG1lZGlh
VHlwZSk7CisgICAgfSk7CiB9CiAKIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp+U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMoKQpAQCAtNTAwLDYgKzMzMiw3IEBAIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjp+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoKQogICAgIHNvdXJjZUJ1
ZmZlck1hcCgpLnJlbW92ZShtX21hcElEKTsKICAgICBkZXN0cm95UGFyc2VyKCk7CiAgICAgZGVz
dHJveVJlbmRlcmVycygpOworICAgIGNsZWFyVHJhY2tzKCk7CiAKICAgICBpZiAoIVtQQUw6Omdl
dEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQ2xhc3MoKSBpbnN0YW5jZXNSZXNwb25kVG9TZWxl
Y3RvcjpAc2VsZWN0b3IocHJlcm9sbERlY29kZVdpdGhDb21wbGV0aW9uSGFuZGxlcjopXSkKICAg
ICAgICAgQ01Ob3RpZmljYXRpb25DZW50ZXJSZW1vdmVMaXN0ZW5lcihDTU5vdGlmaWNhdGlvbkNl
bnRlckdldERlZmF1bHRMb2NhbENlbnRlcigpLCB0aGlzLCBidWZmZXJXYXNDb25zdW1lZENhbGxi
YWNrLCBrQ01TYW1wbGVCdWZmZXJDb25zdW1lck5vdGlmaWNhdGlvbl9CdWZmZXJDb25zdW1lZCwg
bnVsbHB0cik7CkBAIC01MDgsNyArMzQxLDcgQEAgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
On5Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQygpCiAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFw
aG9yZS0+c2lnbmFsKCk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRp
ZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3NldCogYXNzZXQpCit2b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlv
blNlZ21lbnQmJiBzZWdtZW50KQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAK
QEAgLTUxNiw1MiArMzQ5LDMzIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRp
ZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3NldCogYXNzZXQpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c2hvdWxkQ2hlY2tIYXJkd2FyZVN1
cHBvcnQoKSkgewotICAgICAgICBmb3IgKEFWQXNzZXRUcmFjayAqdHJhY2sgaW4gW2Fzc2V0IHRy
YWNrc10pIHsKLSAgICAgICAgICAgIGlmICghYXNzZXRUcmFja01lZXRzSGFyZHdhcmVEZWNvZGVS
ZXF1aXJlbWVudHModHJhY2ssIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5tZWRpYUNvbnRlbnRU
eXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgpKSkgeworICAgICAgICBmb3IgKGF1dG8mIGlu
Zm8gOiBzZWdtZW50LnZpZGVvVHJhY2tzKSB7CisgICAgICAgICAgICBhdXRvIGNvZGVjID0gRm91
ckNDOjpmcm9tU3RyaW5nKGluZm8uZGVzY3JpcHRpb24tPmNvZGVjKCkpOworICAgICAgICAgICAg
aWYgKCFjb2RlYykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmICgh
Y29kZWNzTWVldEhhcmR3YXJlRGVjb2RlUmVxdWlyZW1lbnRzKHt7ICpjb2RlYyB9fSwgbV9tZWRp
YVNvdXJjZS0+cGxheWVyKCktPm1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBw
b3J0KCkpKSB7CiAgICAgICAgICAgICAgICAgbV9wYXJzaW5nU3VjY2VlZGVkID0gZmFsc2U7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgbV9hc3NldCA9IGFzc2V0OwotCi0gICAgbV92aWRlb1RyYWNrcy5jbGVhcigpOwotICAg
IG1fYXVkaW9UcmFja3MuY2xlYXIoKTsKLQotICAgIG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJ
bml0aWFsaXphdGlvblNlZ21lbnQgPSBmYWxzZTsKLQotICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudCBzZWdtZW50OwotCi0gICAgaWYgKFttX2Fzc2V0
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob3ZlcmFsbER1cmF0aW9uSGludCldKQotICAg
ICAgICBzZWdtZW50LmR1cmF0aW9uID0gUEFMOjp0b01lZGlhVGltZShbbV9hc3NldCBvdmVyYWxs
RHVyYXRpb25IaW50XSk7Ci0KLSAgICBpZiAoc2VnbWVudC5kdXJhdGlvbi5pc0ludmFsaWQoKSB8
fCBzZWdtZW50LmR1cmF0aW9uID09IE1lZGlhVGltZTo6emVyb1RpbWUoKSkKLSAgICAgICAgc2Vn
bWVudC5kdXJhdGlvbiA9IFBBTDo6dG9NZWRpYVRpbWUoW21fYXNzZXQgZHVyYXRpb25dKTsKLQot
ICAgIGZvciAoQVZBc3NldFRyYWNrKiB0cmFjayBpbiBbbV9hc3NldCB0cmFja3NdKSB7Ci0gICAg
ICAgIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0
aWNMZWdpYmxlXSkgewotICAgICAgICAgICAgLy8gRklYTUUoMTI1MTYxKTogSGFuZGxlIGluLWJh
bmQgdGV4dCB0cmFja3MuCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAgIGNs
ZWFyVHJhY2tzKCk7CiAKLSAgICAgICAgaWYgKFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGlj
OkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbF0pIHsKLSAgICAgICAgICAgIFNvdXJjZUJ1ZmZl
clByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDo6VmlkZW9UcmFja0luZm9ybWF0
aW9uIGluZm87Ci0gICAgICAgICAgICBhdXRvIHZpZGVvVHJhY2sgPSBWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNrLCB0aGlzKTsKLSAgICAgICAgICAgIGlu
Zm8udHJhY2sgPSB2aWRlb1RyYWNrLmNvcHlSZWYoKTsKLSAgICAgICAgICAgIG1fdmlkZW9UcmFj
a3MuYXBwZW5kKFdURk1vdmUodmlkZW9UcmFjaykpOwotICAgICAgICAgICAgaW5mby5kZXNjcmlw
dGlvbiA9IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDOjpjcmVhdGUodHJhY2spOwotICAgICAgICAg
ICAgc2VnbWVudC52aWRlb1RyYWNrcy5hcHBlbmQoaW5mbyk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
W3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJs
ZV0pIHsKLSAgICAgICAgICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0
aW9uU2VnbWVudDo6QXVkaW9UcmFja0luZm9ybWF0aW9uIGluZm87Ci0gICAgICAgICAgICBhdXRv
IGF1ZGlvVHJhY2sgPSBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRl
KHRyYWNrLCB0aGlzKTsKLSAgICAgICAgICAgIGluZm8udHJhY2sgPSBhdWRpb1RyYWNrLmNvcHlS
ZWYoKTsKLSAgICAgICAgICAgIG1fYXVkaW9UcmFja3MuYXBwZW5kKFdURk1vdmUoYXVkaW9UcmFj
aykpOwotICAgICAgICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IE1lZGlhRGVzY3JpcHRpb25BVkZP
YmpDOjpjcmVhdGUodHJhY2spOwotICAgICAgICAgICAgc2VnbWVudC5hdWRpb1RyYWNrcy5hcHBl
bmQoaW5mbyk7Ci0gICAgICAgIH0KKyAgICBmb3IgKGF1dG8gdmlkZW9UcmFja0luZm8gOiBzZWdt
ZW50LnZpZGVvVHJhY2tzKSB7CisgICAgICAgIHZpZGVvVHJhY2tJbmZvLnRyYWNrLT5zZXRTZWxl
Y3RlZENoYW5nZWRDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKFZpZGVv
VHJhY2tQcml2YXRlJiB0cmFjaywgYm9vbCBzZWxlY3RlZCkgeworICAgICAgICAgICAgaWYgKHdl
YWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT50cmFja0RpZENoYW5nZVNlbGVjdGVk
KHRyYWNrLCBzZWxlY3RlZCk7CisgICAgICAgIH0pOworICAgICAgICBtX3ZpZGVvVHJhY2tzLmFw
cGVuZCh2aWRlb1RyYWNrSW5mby50cmFjayk7CisgICAgfQogCi0gICAgICAgIC8vIEZJWE1FKDEy
NTE2MSk6IEFkZCBUZXh0VHJhY2sgc3VwcG9ydAorICAgIGZvciAoYXV0byBhdWRpb1RyYWNrSW5m
byA6IHNlZ21lbnQuYXVkaW9UcmFja3MpIHsKKyAgICAgICAgYXVkaW9UcmFja0luZm8udHJhY2st
PnNldEVuYWJsZWRDaGFuZ2VkQ2FsbGJhY2soW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyld
IChBdWRpb1RyYWNrUHJpdmF0ZSYgdHJhY2ssIGJvb2wgZW5hYmxlZCkgeworICAgICAgICAgICAg
aWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT50cmFja0RpZENoYW5nZUVu
YWJsZWQodHJhY2ssIGVuYWJsZWQpOworICAgICAgICB9KTsKKyAgICAgICAgbV9hdWRpb1RyYWNr
cy5hcHBlbmQoYXVkaW9UcmFja0luZm8udHJhY2spOwogICAgIH0KIAogICAgIGlmIChtX21lZGlh
U291cmNlKQpAQCAtNTcxLDYxICszODUsMjkgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChBVkFzc2V0KiBhc3NldCkKICAgICAgICAg
bV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdt
ZW50KHNlZ21lbnQpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRG
YWlsVG9QYXJzZVN0cmVhbURhdGFXaXRoRXJyb3IoTlNFcnJvciAqZXJyb3IpCit2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmcoaW50
MzJfdCBjb2RlKQogewogI2lmIExPR19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShlcnJvcik7
CisgICAgVU5VU0VEX1BBUkFNKGNvZGUpOwogI2VuZGlmCi0gICAgRVJST1JfTE9HKExPR0lERU5U
SUZJRVIsIFtbZXJyb3IgZGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKKyAgICBFUlJPUl9MT0co
TE9HSURFTlRJRklFUiwgY29kZSk7CiAKICAgICBtX3BhcnNpbmdTdWNjZWVkZWQgPSBmYWxzZTsK
IH0KIAotc3RydWN0IFByb2Nlc3NDb2RlZEZyYW1lSW5mbyB7Ci0gICAgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMqIHNvdXJjZUJ1ZmZlcjsKLSAgICBpbnQgdHJhY2tJRDsKLSAgICBjb25zdCBT
dHJpbmcmIG1lZGlhVHlwZTsKLX07Ci0KLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGludCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZl
clJlZiBzYW1wbGVCdWZmZXIsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlLCB1bnNpZ25lZCkKK3Zv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFj
a0lEKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNhbXBsZSwgaW50MzJfdCB0cmFja0lELCBjb25z
dCBTdHJpbmcmIG1lZGlhVHlwZSkKIHsKLSAgICBwcm9jZXNzQ29kZWRGcmFtZSh0cmFja0lELCBz
YW1wbGVCdWZmZXIsIG1lZGlhVHlwZSk7Ci19CisgICAgVU5VU0VEX1BBUkFNKG1lZGlhVHlwZSk7
CiAKLWJvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnByb2Nlc3NDb2RlZEZyYW1lKGlu
dCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIsIGNvbnN0IFN0cmluZyYp
Ci17CiAgICAgaWYgKHRyYWNrSUQgIT0gbV9lbmFibGVkVmlkZW9UcmFja0lEICYmICFtX2F1ZGlv
UmVuZGVyZXJzLmNvbnRhaW5zKHRyYWNrSUQpKSB7CiAgICAgICAgIC8vIEZJWE1FKDEyNTE2MSk6
IFdlIGRvbid0IGhhbmRsZSB0ZXh0IHRyYWNrcywgYW5kIHBhc3NpbmcgdGhpcyBzYW1wbGUgdXAg
dG8gU291cmNlQnVmZmVyCiAgICAgICAgIC8vIHdpbGwganVzdCBjb25mdXNlIGl0cyBzdGF0ZS4g
RHJvcCB0aGlzIHNhbXBsZSB1bnRpbCB3ZSBjYW4gaGFuZGxlIHRleHQgdHJhY2tzIHByb3Blcmx5
LgotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBp
ZiAobV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4dEluaXRpYWxpemF0aW9uU2VnbWVudCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFtX2NsaWVudCkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICBhdXRvIG1lZGlhU2FtcGxlID0gTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUo
c2FtcGxlQnVmZmVyLCB0cmFja0lEKTsKLQotICAgIGlmIChtZWRpYVNhbXBsZS0+aXNIb21vZ2Vu
ZW91cygpKSB7Ci0gICAgICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCBtZWRpYVNhbXBsZS0+
dG9KU09OU3RyaW5nKCkpOworICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCBtZWRpYVNhbXBs
ZS0+dG9KU09OU3RyaW5nKCkpOworICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQt
PnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2FtcGxlKG1lZGlhU2FtcGxlKTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgYXV0byBtZWRpYVNhbXBsZXMgPSBtZWRpYVNh
bXBsZS0+ZGl2aWRlSW50b0hvbW9nZW5lb3VzU2FtcGxlcygpOwotICAgIGZvciAoYXV0byYgc2Ft
cGxlIDogbWVkaWFTYW1wbGVzKSB7Ci0gICAgICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCBz
YW1wbGUtPnRvSlNPTlN0cmluZygpKTsKLSAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclBy
aXZhdGVEaWRSZWNlaXZlU2FtcGxlKHNhbXBsZSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFJlYWNoRW5kT2ZUcmFj
a1dpdGhUcmFja0lEKGludCwgY29uc3QgU3RyaW5nJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRl
bnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChpbnQgdHJhY2tJRCkKQEAg
LTYzMywxOCArNDE1LDIwIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OndpbGxQ
cm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGCiAgICAgaWYgKCFtX21l
ZGlhU291cmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQobV9wYXJzZXIpOwotCiAj
aWYgSEFWRShBVlNUUkVBTVNFU1NJT04pICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElB
KQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInRyYWNrID0gIiwgdHJhY2tJRCk7CiAK
ICAgICBtX3Byb3RlY3RlZFRyYWNrSUQgPSB0cmFja0lEOwogCisgICAgYXV0byBwYXJzZXIgPSB0
aGlzLT5wYXJzZXIoKTsKKyAgICBpZiAoIXBhcnNlcikKKyAgICAgICAgcmV0dXJuOworCiAgICAg
aWYgKENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMqIHNlc3Npb24gPSBtX21lZGlhU291cmNl
LT5wbGF5ZXIoKS0+Y2RtU2Vzc2lvbigpKQotICAgICAgICBzZXNzaW9uLT5hZGRQYXJzZXIobV9w
YXJzZXIuZ2V0KCkpOworICAgICAgICBzZXNzaW9uLT5hZGRQYXJzZXIocGFyc2VyKTsKICAgICBl
bHNlIGlmICghQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmlzQXZhaWxhYmxlKCkpIHsK
ICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIFttX21lZGlhU291
cmNlLT5wbGF5ZXIoKS0+c3RyZWFtU2Vzc2lvbigpIGFkZFN0cmVhbURhdGFQYXJzZXI6bV9wYXJz
ZXIuZ2V0KCldOworICAgICAgICBbbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPnN0cmVhbVNlc3Np
b24oKSBhZGRTdHJlYW1EYXRhUGFyc2VyOnBhcnNlcl07CiAgICAgICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKICAgICB9CiAjZWxzZQpAQCAtNjUyLDcgKzQzNiw3IEBAIHZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OndpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFs
aXphdGlvbkRhdGFGCiAjZW5kaWYKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJ
RChOU0RhdGEqIGluaXREYXRhLCBpbnQgdHJhY2tJRCwgQm94PEJpbmFyeVNlbWFwaG9yZT4gaGFz
U2Vzc2lvblNlbWFwaG9yZSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBy
b3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoUmVmPFVp
bnQ4QXJyYXk+JiYgaW5pdERhdGEsIGludCB0cmFja0lELCBCb3g8QmluYXJ5U2VtYXBob3JlPiBo
YXNTZXNzaW9uU2VtYXBob3JlKQogewogICAgIGlmICghbV9tZWRpYVNvdXJjZSkKICAgICAgICAg
cmV0dXJuOwpAQCAtNjYxLDExICs0NDUsMTEgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KICAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJ0cmFjayA9ICIsIHRyYWNrSUQpOwogCiAgICAg
bV9wcm90ZWN0ZWRUcmFja0lEID0gdHJhY2tJRDsKLSAgICBtX2luaXREYXRhID0gVWludDhBcnJh
eTo6Y3JlYXRlKFtpbml0RGF0YSBsZW5ndGhdKTsKLSAgICBbaW5pdERhdGEgZ2V0Qnl0ZXM6bV9p
bml0RGF0YS0+ZGF0YSgpIGxlbmd0aDptX2luaXREYXRhLT5sZW5ndGgoKV07CisgICAgbV9pbml0
RGF0YSA9IFdURk1vdmUoaW5pdERhdGEpOwogICAgIG1fbWVkaWFTb3VyY2UtPnNvdXJjZUJ1ZmZl
cktleU5lZWRlZCh0aGlzLCBtX2luaXREYXRhLmdldCgpKTsKICAgICBpZiAoYXV0byBzZXNzaW9u
ID0gbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPmNkbVNlc3Npb24oKSkgewotICAgICAgICBzZXNz
aW9uLT5hZGRQYXJzZXIobV9wYXJzZXIuZ2V0KCkpOworICAgICAgICBpZiAoYXV0byBwYXJzZXIg
PSB0aGlzLT5wYXJzZXIoKSkKKyAgICAgICAgICAgIHNlc3Npb24tPmFkZFBhcnNlcihwYXJzZXIp
OwogICAgICAgICBoYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTY3NiwxNCArNDYwLDE1IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvCiAg
ICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlID0gaGFzU2Vzc2lvblNlbWFwaG9yZTsKICAgICAKICNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCi0g
ICAgYXV0byBpbml0RGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRhKTsK
KyAgICBhdXRvIGluaXREYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW5pdERhdGEt
PmRhdGEoKSwgaW5pdERhdGEtPmJ5dGVMZW5ndGgoKSk7CiAgICAgYXV0byBrZXlJRHMgPSBDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTaW5mKGluaXREYXRhQnVmZmVy
KTsKICAgICBpZiAoIWtleUlEcykKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fY2RtSW5z
dGFuY2UpIHsKICAgICAgICAgaWYgKGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5j
ZS0+c2Vzc2lvbkZvcktleUlEcyhrZXlJRHMudmFsdWUoKSkpIHsKLSAgICAgICAgICAgIFtpbnN0
YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVudDpt
X3BhcnNlci5nZXQoKV07CisgICAgICAgICAgICBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5wYXJz
ZXIoKSkKKyAgICAgICAgICAgICAgICBbaW5zdGFuY2VTZXNzaW9uLT5jb250ZW50S2V5U2Vzc2lv
bigpIGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6cGFyc2VyXTsKICAgICAgICAgICAgIGlmIChtX2hh
c1Nlc3Npb25TZW1hcGhvcmUpIHsKICAgICAgICAgICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhv
cmUtPnNpZ25hbCgpOwogICAgICAgICAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZSA9IG51
bGxwdHI7CkBAIC03MjQsMTYgKzUwOSw1NCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjphcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgZGF0YSkKIHsKICAgICBERUJVR19M
T0coTE9HSURFTlRJRklFUiwgImRhdGEgbGVuZ3RoID0gIiwgZGF0YS5zaXplKCkpOwogCisgICAg
QVNTRVJUKCFtX2hhc1Nlc3Npb25TZW1hcGhvcmUpOworICAgIEFTU0VSVCghbV9hYm9ydFNlbWFw
aG9yZSk7CisKKyAgICBtX2Fib3J0U2VtYXBob3JlID0gQm94PFNlbWFwaG9yZT46OmNyZWF0ZSgw
KTsKKyAgICBtX3BhcnNlci0+c2V0V2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxp
emF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlz
KSwgYWJvcnRTZW1hcGhvcmUgPSBtX2Fib3J0U2VtYXBob3JlXSAodWludDMyX3QgdHJhY2tJRCkg
bXV0YWJsZSB7CisgICAgICAgIC8vIFdlIG11c3QgY2FsbCBzeW5jaHJvbm91c2x5IHRvIHRoZSBt
YWluIHRocmVhZCwgYXMgdGhlIEFWU3RyZWFtU2Vzc2lvbiBtdXN0IGJlIGFzc29jaWF0ZWQKKyAg
ICAgICAgLy8gd2l0aCB0aGUgc3RyZWFtRGF0YVBhcnNlciBiZWZvcmUgdGhlIGRlbGVnYXRlIG1l
dGhvZCByZXR1cm5zLgorICAgICAgICBCb3g8QmluYXJ5U2VtYXBob3JlPiByZXNwb25kZWRTZW1h
cGhvcmUgPSBCb3g8QmluYXJ5U2VtYXBob3JlPjo6Y3JlYXRlKCk7CisgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHRyYWNrSUQsIHJlc3BvbmRl
ZFNlbWFwaG9yZV0oKSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAg
ICAgd2Vha1RoaXMtPndpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRh
dGFGb3JUcmFja0lEKHRyYWNrSUQpOworICAgICAgICAgICAgcmVzcG9uZGVkU2VtYXBob3JlLT5z
aWduYWwoKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAg
ICAgIGlmIChyZXNwb25kZWRTZW1hcGhvcmUtPndhaXRGb3IoMTAwX21zKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlmIChhYm9ydFNlbWFwaG9yZS0+d2FpdEZvcigx
MDBfbXMpKSB7CisgICAgICAgICAgICAgICAgYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pOwor
CisgICAgbV9wYXJzZXItPnNldERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwg
YWJvcnRTZW1hcGhvcmUgPSBtX2Fib3J0U2VtYXBob3JlXSAoUmVmPFVpbnQ4QXJyYXk+JiYgaW5p
dERhdGEsIGludDMyX3QgdHJhY2tJRCkgbXV0YWJsZSB7CisgICAgICAgIEJveDxCaW5hcnlTZW1h
cGhvcmU+IGhhc1Nlc3Npb25TZW1hcGhvcmUgPSBCb3g8QmluYXJ5U2VtYXBob3JlPjo6Y3JlYXRl
KCk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhp
cyksIGluaXREYXRhID0gV1RGTW92ZShpbml0RGF0YSksIHRyYWNrSUQsIGhhc1Nlc3Npb25TZW1h
cGhvcmVdICgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAg
ICAgICAgIHdlYWtUaGlzLT5kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlv
bkRhdGFGb3JUcmFja0lEKFdURk1vdmUoaW5pdERhdGEpLCB0cmFja0lELCBoYXNTZXNzaW9uU2Vt
YXBob3JlKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAg
ICAgIGlmIChoYXNTZXNzaW9uU2VtYXBob3JlLT53YWl0Rm9yKDEwMF9tcykpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAoYWJvcnRTZW1hcGhvcmUtPndhaXRGb3Io
MTAwX21zKSkgeworICAgICAgICAgICAgICAgIGFib3J0U2VtYXBob3JlLT5zaWduYWwoKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9KTsK
KwogICAgIG1fcGFyc2luZ1N1Y2NlZWRlZCA9IHRydWU7CiAgICAgZGlzcGF0Y2hfZ3JvdXBfZW50
ZXIobV9pc0FwcGVuZGluZ0dyb3VwLmdldCgpKTsKIAotICAgIGRpc3BhdGNoX2FzeW5jKGdsb2Jh
bERhdGFQYXJzZXJRdWV1ZSgpLCBbZGF0YSA9IFdURk1vdmUoZGF0YSksIHdlYWtUaGlzID0gbV9h
cHBlbmRXZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCp0aGlzKSwgcGFyc2VyID0gbV9wYXJzZXIs
IGRlbGVnYXRlID0gbV9kZWxlZ2F0ZSwgaXNBcHBlbmRpbmdHcm91cCA9IG1faXNBcHBlbmRpbmdH
cm91cCwgcGFyc2VyU3RhdGVXYXNSZXNldCA9IG1fcGFyc2VyU3RhdGVXYXNSZXNldF0gKCkgbXV0
YWJsZSB7Ci0gICAgICAgIGF1dG8gc2hhcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoZGF0YSkpOwotICAgICAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZERhdGEtPmNyZWF0ZU5T
RGF0YSgpOwotICAgICAgICBpZiAocGFyc2VyU3RhdGVXYXNSZXNldCkKLSAgICAgICAgICAgIFtw
YXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3RyZWFtRGF0
YVBhcnNlclN0cmVhbURhdGFEaXNjb250aW51aXR5XTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgW3BhcnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKV07CisgICAgZGlzcGF0Y2hf
YXN5bmMoZ2xvYmFsRGF0YVBhcnNlclF1ZXVlKCksIFtkYXRhID0gV1RGTW92ZShkYXRhKSwgd2Vh
a1RoaXMgPSBtX2FwcGVuZFdlYWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKnRoaXMpLCBwYXJzZXIg
PSBtX3BhcnNlciwgaXNBcHBlbmRpbmdHcm91cCA9IG1faXNBcHBlbmRpbmdHcm91cF0gKCkgbXV0
YWJsZSB7CisgICAgICAgIHBhcnNlci0+YXBwZW5kRGF0YShXVEZNb3ZlKGRhdGEpKTsKIAogICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpc10gewogICAgICAgICAgICAgaWYgKHdlYWtU
aGlzKQpAQCAtNzQxLDExICs1NjQsMjAgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRhdGEpCiAgICAgICAgIH0pOwogICAg
ICAgICBkaXNwYXRjaF9ncm91cF9sZWF2ZShpc0FwcGVuZGluZ0dyb3VwLmdldCgpKTsKICAgICB9
KTsKLSAgICBtX3BhcnNlclN0YXRlV2FzUmVzZXQgPSBmYWxzZTsKIH0KIAogdm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kQ29tcGxldGVkKCkKIHsKKyAgICBpZiAobV9hYm9y
dFNlbWFwaG9yZSkgeworICAgICAgICBtX2Fib3J0U2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICAg
ICAgbV9hYm9ydFNlbWFwaG9yZSA9IG5pbDsKKyAgICB9CisKKyAgICBpZiAobV9oYXNTZXNzaW9u
U2VtYXBob3JlKSB7CisgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFsKCk7Cisg
ICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZSA9IG5pbDsKKyAgICB9CisKICAgICBpZiAobV9w
YXJzaW5nU3VjY2VlZGVkICYmIG1fbWVkaWFTb3VyY2UpCiAgICAgICAgIG1fbWVkaWFTb3VyY2Ut
PnBsYXllcigpLT5zZXRMb2FkaW5nUHJvZ3Jlc3NzZWQodHJ1ZSk7CiAKQEAgLTc2MCwzOSArNTky
LDM5IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFib3J0KCkKICAgICAvLyBU
aGUgcGFyc2luZyBxdWV1ZSBtYXkgYmUgYmxvY2tlZCB3YWl0aW5nIGZvciB0aGUgbWFpbiB0aHJl
YWQgdG8gcHJvdmlkZSBpdCBhIEFWU3RyZWFtU2Vzc2lvbi4gV2UKICAgICAvLyB3ZXJlIGFza2Vk
IHRvIGFib3J0LCBhbmQgdGhhdCBjYW5jZWxzIGFsbCBvdXRzdGFuZGluZyBhcHBlbmQgb3BlcmF0
aW9ucy4gV2l0aG91dCBjYW5jZWxsaW5nIHRoaXMKICAgICAvLyBzZW1hcGhvcmUsIHRoZSBtX2lz
QXBwZW5kaW5nR3JvdXAgd2FpdCBvcGVyYXRpb24gd2lsbCBkZWFkbG9jay4KLSAgICBpZiAobV9o
YXNTZXNzaW9uU2VtYXBob3JlKQorICAgIGlmIChtX2hhc1Nlc3Npb25TZW1hcGhvcmUpIHsKICAg
ICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKLSAgICBtX2RlbGVnYXRlLmdl
dCgpLmFib3J0U2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBo
b3JlID0gbnVsbHB0cjsKKyAgICB9CisgICAgaWYgKG1fYWJvcnRTZW1hcGhvcmUpIHsKKyAgICAg
ICAgbV9hYm9ydFNlbWFwaG9yZS0+c2lnbmFsKCk7CisgICAgICAgIG1fYWJvcnRTZW1hcGhvcmUg
PSBudWxscHRyOworICAgIH0KICAgICBkaXNwYXRjaF9ncm91cF93YWl0KG1faXNBcHBlbmRpbmdH
cm91cC5nZXQoKSwgRElTUEFUQ0hfVElNRV9GT1JFVkVSKTsKLSAgICBtX2FwcGVuZFdlYWtGYWN0
b3J5LnJldm9rZUFsbCgpOwotICAgIG1fZGVsZWdhdGUuZ2V0KCkucGFyZW50ID0gbV9hcHBlbmRX
ZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCp0aGlzKTsKLSAgICBtX2RlbGVnYXRlLmdldCgpLmFi
b3J0U2VtYXBob3JlID0gQm94PFNlbWFwaG9yZT46OmNyZWF0ZSgwKTsKIH0KIAogdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6cmVzZXRQYXJzZXJTdGF0ZSgpCiB7CiAgICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSKTsKIAotICAgIG1fcGFyc2VyU3RhdGVXYXNSZXNldCA9IHRydWU7
Ci0gICAgbV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4dEluaXRpYWxpemF0aW9uU2VnbWVudCA9IHRy
dWU7CisgICAgbV9wYXJzZXItPnJlc2V0UGFyc2VyU3RhdGUoKTsKIH0KIAogdm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6ZGVzdHJveVBhcnNlcigpCiB7CisgICAgYXV0byBwYXJzZXIg
PSB0aGlzLT5wYXJzZXIoKTsKKyAgICBpZiAoIXBhcnNlcikKKyAgICAgICAgcmV0dXJuOwogI2lm
IEhBVkUoQVZTVFJFQU1TRVNTSU9OKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkK
ICAgICBpZiAobV9tZWRpYVNvdXJjZSAmJiBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+aGFzU3Ry
ZWFtU2Vzc2lvbigpKQotICAgICAgICBbbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPnN0cmVhbVNl
c3Npb24oKSByZW1vdmVTdHJlYW1EYXRhUGFyc2VyOm1fcGFyc2VyLmdldCgpXTsKKyAgICAgICAg
W21fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5zdHJlYW1TZXNzaW9uKCkgcmVtb3ZlU3RyZWFtRGF0
YVBhcnNlcjpwYXJzZXJdOwogI2VuZGlmCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYg
SEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQogICAgIGlmIChtX2NkbUluc3RhbmNlKSB7CiAgICAg
ICAgIGlmIChhdXRvIGluc3RhbmNlU2Vzc2lvbiA9IG1fY2RtSW5zdGFuY2UtPnNlc3Npb25Gb3JL
ZXlJRHMobV9rZXlJRHMpKQotICAgICAgICAgICAgW2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtl
eVNlc3Npb24oKSByZW1vdmVDb250ZW50S2V5UmVjaXBpZW50Om1fcGFyc2VyLmdldCgpXTsKKyAg
ICAgICAgICAgIFtpbnN0YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNzaW9uKCkgcmVtb3ZlQ29u
dGVudEtleVJlY2lwaWVudDpwYXJzZXJdOwogICAgIH0KICNlbmRpZgotCi0gICAgW21fZGVsZWdh
dGUgaW52YWxpZGF0ZV07Ci0gICAgbV9kZWxlZ2F0ZSA9IG51bGxwdHI7Ci0gICAgbV9wYXJzZXIg
PSBudWxscHRyOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkZXN0cm95
UmVuZGVyZXJzKCkKQEAgLTgxNyw2ICs2NDksMTcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6ZGVzdHJveVJlbmRlcmVycygpCiAgICAgbV9hdWRpb1JlbmRlcmVycy5jbGVhcigp
OwogfQogCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjbGVhclRyYWNrcygpCit7
CisgICAgZm9yIChhdXRvJiB0cmFjayA6IG1fdmlkZW9UcmFja3MpCisgICAgICAgIHRyYWNrLT5z
ZXRTZWxlY3RlZENoYW5nZWRDYWxsYmFjayhudWxscHRyKTsKKyAgICBtX3ZpZGVvVHJhY2tzLmNs
ZWFyKCk7CisKKyAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV9hdWRpb1RyYWNrcykKKyAgICAgICAg
dHJhY2stPnNldEVuYWJsZWRDaGFuZ2VkQ2FsbGJhY2sobnVsbHB0cik7CisgICAgbV9hdWRpb1Ry
YWNrcy5jbGVhcigpOworfQorCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpyZW1v
dmVkRnJvbU1lZGlhU291cmNlKCkKIHsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwpA
QCAtODU2LDIxICs2OTksMjEgQEAgYm9vbCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6aGFz
QXVkaW8oKSBjb25zdAogICAgIHJldHVybiBtX2NsaWVudCAmJiBtX2NsaWVudC0+c291cmNlQnVm
ZmVyUHJpdmF0ZUhhc0F1ZGlvKCk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OnRyYWNrRGlkQ2hhbmdlRW5hYmxlZChWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQyogdHJhY2spCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENo
YW5nZVNlbGVjdGVkKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjaywgYm9vbCBzZWxlY3RlZCkKIHsK
LSAgICBpbnQgdHJhY2tJRCA9IHRyYWNrLT50cmFja0lEKCk7CisgICAgaW50IHRyYWNrSUQgPSB0
cmFjay5pZCgpLnRvSW50KCk7CiAKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJ2aWRl
byB0cmFja0lEID0gIiwgdHJhY2tJRCwgIiwgc2VsZWN0ZWQgPSAiLCB0cmFjay0+c2VsZWN0ZWQo
KSk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAidmlkZW8gdHJhY2tJRCA9ICIsIHRy
YWNrSUQsICIsIHNlbGVjdGVkID0gIiwgc2VsZWN0ZWQpOwogCi0gICAgaWYgKCF0cmFjay0+c2Vs
ZWN0ZWQoKSAmJiBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgPT0gdHJhY2tJRCkgeworICAgIGlmICgh
c2VsZWN0ZWQgJiYgbV9lbmFibGVkVmlkZW9UcmFja0lEID09IHRyYWNrSUQpIHsKICAgICAgICAg
bV9lbmFibGVkVmlkZW9UcmFja0lEID0gLTE7Ci0gICAgICAgIFttX3BhcnNlciBzZXRTaG91bGRQ
cm92aWRlTWVkaWFEYXRhOk5PIGZvclRyYWNrSUQ6dHJhY2tJRF07CisgICAgICAgIG1fcGFyc2Vy
LT5zZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChmYWxzZSwgdHJhY2tJRCk7CiAK
ICAgICAgICAgaWYgKG1fZGVjb21wcmVzc2lvblNlc3Npb24pCiAgICAgICAgICAgICBtX2RlY29t
cHJlc3Npb25TZXNzaW9uLT5zdG9wUmVxdWVzdGluZ01lZGlhRGF0YSgpOwotICAgIH0gZWxzZSBp
ZiAodHJhY2stPnNlbGVjdGVkKCkpIHsKKyAgICB9IGVsc2UgaWYgKHNlbGVjdGVkKSB7CiAgICAg
ICAgIG1fZW5hYmxlZFZpZGVvVHJhY2tJRCA9IHRyYWNrSUQ7Ci0gICAgICAgIFttX3BhcnNlciBz
ZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhOllFUyBmb3JUcmFja0lEOnRyYWNrSURdOworICAgICAg
ICBtX3BhcnNlci0+c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQodHJ1ZSwgdHJh
Y2tJRCk7CiAKICAgICAgICAgaWYgKG1fZGVjb21wcmVzc2lvblNlc3Npb24pIHsKICAgICAgICAg
ICAgIG1fZGVjb21wcmVzc2lvblNlc3Npb24tPnJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHkoW3Ro
aXMsIHRyYWNrSURdIHsKQEAgLTg4MiwyMSArNzI1LDIxIEBAIHZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlRW5hYmxlZChWaWRlb1RyYWNrUHJpdmF0ZU1lZGlh
U291CiAgICAgbV9tZWRpYVNvdXJjZS0+aGFzU2VsZWN0ZWRWaWRlb0NoYW5nZWQoKnRoaXMpOwog
fQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJs
ZWQoQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqIHRyYWNrKQordm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKEF1ZGlvVHJhY2tQ
cml2YXRlJiB0cmFjaywgYm9vbCBlbmFibGVkKQogewotICAgIGludCB0cmFja0lEID0gdHJhY2st
PnRyYWNrSUQoKTsKKyAgICBpbnQgdHJhY2tJRCA9IHRyYWNrLmlkKCkudG9JbnQoKTsKIAotICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImF1ZGlvIHRyYWNrSUQgPSAiLCB0cmFja0lELCAi
LCBzZWxlY3RlZCA9ICIsIHRyYWNrLT5lbmFibGVkKCkpOworICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgImF1ZGlvIHRyYWNrSUQgPSAiLCB0cmFja0lELCAiLCBzZWxlY3RlZCA9ICIsIGVu
YWJsZWQpOwogCi0gICAgaWYgKCF0cmFjay0+ZW5hYmxlZCgpKSB7CisgICAgaWYgKCFlbmFibGVk
KSB7CiAgICAgICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KICAgICAgICAg
UmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlcj4gcmVuZGVyZXIgPSBtX2F1ZGlv
UmVuZGVyZXJzLmdldCh0cmFja0lEKTsKICAgICAgICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dV
QVJEU19FTkQKLSAgICAgICAgW21fcGFyc2VyIHNldFNob3VsZFByb3ZpZGVNZWRpYURhdGE6Tk8g
Zm9yVHJhY2tJRDp0cmFja0lEXTsKKyAgICAgICAgbV9wYXJzZXItPnNldFNob3VsZFByb3ZpZGVN
ZWRpYURhdGFGb3JUcmFja0lEKGZhbHNlLCB0cmFja0lEKTsKICAgICAgICAgaWYgKG1fbWVkaWFT
b3VyY2UpCiAgICAgICAgICAgICBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+cmVtb3ZlQXVkaW9S
ZW5kZXJlcihyZW5kZXJlci5nZXQoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgW21fcGFyc2Vy
IHNldFNob3VsZFByb3ZpZGVNZWRpYURhdGE6WUVTIGZvclRyYWNrSUQ6dHJhY2tJRF07CisgICAg
ICAgIG1fcGFyc2VyLT5zZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCh0cnVlLCB0
cmFja0lEKTsKICAgICAgICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgogICAg
ICAgICBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyPiByZW5kZXJlcjsKICAg
ICAgICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKQEAgLTkyNiw2ICs3NjksMTMg
QEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVk
KEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3UKICAgICB9CiB9CiAKK0FWU3RyZWFtRGF0YVBhcnNl
ciogU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnBhcnNlcigpIGNvbnN0Cit7CisgICAgaWYg
KGlzPFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM+KG1fcGFyc2VyLmdldCgpKSkKKyAgICAgICAg
cmV0dXJuIGRvd25jYXN0PFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM+KG1fcGFyc2VyLmdldCgp
KS5wYXJzZXIoKTsKKyAgICByZXR1cm4gbmlsOworfQorCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpzZXRDRE1TZXNzaW9uKENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMqIHNl
c3Npb24pCiB7CiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCkBAIC05ODcsNyAr
ODM3LDggQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXR0ZW1wdFRvRGVjcnlw
dCgpCiAgICAgaWYgKCFpbnN0YW5jZVNlc3Npb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFtp
bnN0YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVu
dDptX3BhcnNlci5nZXQoKV07CisgICAgaWYgKGF1dG8gcGFyc2VyID0gdGhpcy0+cGFyc2VyKCkp
CisgICAgICAgIFtpbnN0YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVu
dEtleVJlY2lwaWVudDpwYXJzZXJdOwogICAgIGlmIChtX2hhc1Nlc3Npb25TZW1hcGhvcmUpIHsK
ICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKICAgICAgICAgbV9oYXNT
ZXNzaW9uU2VtYXBob3JlID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IGM3
OGI5NTNjN2JhYThlY2IyOTI4YmYyYzNkZDU1MWE5MGVkMjM4Y2MuLjZiMTFjY2EzMmJkZDQ5ZDJh
ZGQ2MTBlOWE3YTc3NmI1OTViOGE5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMjgs
NiArMjgsNyBAQAogCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQ
cml2YXRlQVZGLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAKICNpZiBFTkFCTEUoTUVE
SUFfU09VUkNFKQogCkBAIC00MiwxNCArNDMsMTEgQEAgY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyBmaW5h
bCA6IHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZUFWRiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMpCiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gY3JlYXRlKEFWQXNz
ZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCisgICAg
c3RhdGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gY3JlYXRlKEFW
QXNzZXRUcmFjayogdHJhY2spCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBW
aWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyh0cmFjaywgcGFyZW50KSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDKHRyYWNrKSk7CiAgICAgfQogCi0gICAgYm9vbCBzZWxlY3RlZCgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCkgb3ZlcnJpZGU7Ci0KICAgICB2b2lkIHNldEFz
c2V0VHJhY2soQVZBc3NldFRyYWNrKik7CiAgICAgQVZBc3NldFRyYWNrKiBhc3NldFRyYWNrKCkg
Y29uc3Q7CiAKQEAgLTU4LDE0ICs1NiwxMiBAQCBwdWJsaWM6CiAgICAgRmxvYXRTaXplIG5hdHVy
YWxTaXplKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgVmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiwgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMqIHBhcmVudCk7CisgICAgZXhwbGljaXQgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMoQVZBc3NldFRyYWNrKik7CiAgICAgCiAgICAgdm9pZCByZXNldFByb3BlcnRpZXNG
cm9tVHJhY2soKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJ
bXBsPiBtX2ltcGw7Ci0gICAgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIG1fcGFyZW50Owog
ICAgIGludCBtX3RyYWNrSUQ7Ci0gICAgYm9vbCBtX3NlbGVjdGVkOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbQppbmRleCAyYzczOTI3OTZlMGY1MjVmOTRjMjhhYTIwYWFkMTBlMzBk
MGQwNTFjLi5hZmQxYjdmM2E5MzM0OTE3MWQ5MTA1OGY2ODVjZmU4MGJiOGQ3MzJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9W
aWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMzQsMTEgKzM0LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6VmlkZW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaywgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKK1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRy
YWNrKQogICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4o
dHJhY2spKQotICAgICwgbV9wYXJlbnQocGFyZW50KQogICAgICwgbV90cmFja0lEKC0xKQotICAg
ICwgbV9zZWxlY3RlZChmYWxzZSkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsK
IH0KQEAgLTY1LDIxICs2Myw2IEBAIEFWQXNzZXRUcmFjayogVmlkZW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6OmFzc2V0VHJhY2soKSBjb25zdAogICAgIHJldHVybiBtX2ltcGwtPmFz
c2V0VHJhY2soKTsKIH0KIAotCi1ib29sIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpzZWxlY3RlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2VsZWN0ZWQ7Ci19Ci0KLXZv
aWQgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldFNlbGVjdGVkKGJvb2wg
c2VsZWN0ZWQpCi17Ci0gICAgaWYgKG1fc2VsZWN0ZWQgPT0gc2VsZWN0ZWQpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1fc2VsZWN0ZWQgPSBzZWxlY3RlZDsKLSAgICBtX3BhcmVudC0+dHJhY2tE
aWRDaGFuZ2VFbmFibGVkKHRoaXMpOwotfQotCiBGbG9hdFNpemUgVmlkZW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6Om5hdHVyYWxTaXplKCkgY29uc3QKIHsKICAgICByZXR1cm4gRmxv
YXRTaXplKFthc3NldFRyYWNrKCkgbmF0dXJhbFNpemVdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0
ZVdlYk0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmMjBiY2Y5ZGYxMDFhY2ExODViMjNjMzE5ZmQyM2JkN2Vl
MmM5ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGVX
ZWJNLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1JlZjxBdWRpb1RyYWNrUHJpdmF0ZVdlYk0+IEF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6Y3Jl
YXRlKHdlYm06OlRyYWNrRW50cnkmJiB0cmFja0VudHJ5KQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEF1ZGlvVHJhY2tQcml2YXRlV2ViTShXVEZNb3ZlKHRyYWNrRW50cnkpKSk7Cit9CisK
K0F1ZGlvVHJhY2tQcml2YXRlV2ViTTo6QXVkaW9UcmFja1ByaXZhdGVXZWJNKHdlYm06OlRyYWNr
RW50cnkmJiB0cmFja0VudHJ5KQorICAgIDogbV90cmFjayhXVEZNb3ZlKHRyYWNrRW50cnkpKQor
eworICAgIGlmIChtX3RyYWNrLmlzX2VuYWJsZWQuaXNfcHJlc2VudCgpKQorICAgICAgICBzZXRF
bmFibGVkKG1fdHJhY2suaXNfZW5hYmxlZC52YWx1ZSgpKTsKK30KKworQXRvbVN0cmluZyBBdWRp
b1RyYWNrUHJpdmF0ZVdlYk06OmlkKCkgY29uc3QKK3sKKyAgICBpZiAobV90cmFja0lELmlzTnVs
bCgpKQorICAgICAgICBtX3RyYWNrSUQgPSBtX3RyYWNrLnRyYWNrX3VpZC5pc19wcmVzZW50KCkg
PyBBdG9tU3RyaW5nOjpudW1iZXIobV90cmFjay50cmFja191aWQudmFsdWUoKSkgOiBlbXB0eUF0
b20oKTsKKyAgICByZXR1cm4gbV90cmFja0lEOworfQorCitBdG9tU3RyaW5nIEF1ZGlvVHJhY2tQ
cml2YXRlV2ViTTo6bGFiZWwoKSBjb25zdAoreworICAgIGlmIChtX2xhYmVsLmlzTnVsbCgpKQor
ICAgICAgICBtX2xhYmVsID0gbV90cmFjay5uYW1lLmlzX3ByZXNlbnQoKSA/IEF0b21TdHJpbmc6
OmZyb21VVEY4KG1fdHJhY2submFtZS52YWx1ZSgpLmRhdGEoKSwgbV90cmFjay5uYW1lLnZhbHVl
KCkubGVuZ3RoKCkpIDogZW1wdHlBdG9tKCk7CisgICAgcmV0dXJuIG1fbGFiZWw7Cit9CisKK0F0
b21TdHJpbmcgQXVkaW9UcmFja1ByaXZhdGVXZWJNOjpsYW5ndWFnZSgpIGNvbnN0Cit7CisgICAg
aWYgKG1fbGFuZ3VhZ2UuaXNOdWxsKCkpCisgICAgICAgIG1fbGFuZ3VhZ2UgPSBtX3RyYWNrLmxh
bmd1YWdlLmlzX3ByZXNlbnQoKSA/IEF0b21TdHJpbmc6OmZyb21VVEY4KG1fdHJhY2subGFuZ3Vh
Z2UudmFsdWUoKS5kYXRhKCksIG1fdHJhY2subGFuZ3VhZ2UudmFsdWUoKS5sZW5ndGgoKSkgOiBl
bXB0eUF0b20oKTsKKyAgICByZXR1cm4gbV9sYW5ndWFnZTsKK30KKworaW50IEF1ZGlvVHJhY2tQ
cml2YXRlV2ViTTo6dHJhY2tJbmRleCgpIGNvbnN0Cit7CisgICAgaWYgKG1fdHJhY2sudHJhY2tf
bnVtYmVyLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgcmV0dXJuIG1fdHJhY2sudHJhY2tfbnVtYmVy
LnZhbHVlKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhOTc4ZGY3
OGMzYjU2ZmE0ZTcxYjkwMWRmNmFmN2M5MmUxNjk5MTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0u
aApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoTUVESUFfU09VUkNFKQorCisjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGUuaCIKKyNpbmNs
dWRlIDx3ZWJtL2RvbV90eXBlcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1
ZGlvVHJhY2tQcml2YXRlV2ViTSBmaW5hbCA6IHB1YmxpYyBBdWRpb1RyYWNrUHJpdmF0ZSB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxBdWRpb1RyYWNrUHJpdmF0ZVdlYk0+IGNyZWF0ZSh3ZWJt
OjpUcmFja0VudHJ5JiYpOworICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2tQcml2YXRlV2ViTSgpID0g
ZGVmYXVsdDsKKworICAgIEF0b21TdHJpbmcgaWQoKSBjb25zdCBmaW5hbDsKKyAgICBBdG9tU3Ry
aW5nIGxhYmVsKCkgY29uc3QgZmluYWw7CisgICAgQXRvbVN0cmluZyBsYW5ndWFnZSgpIGNvbnN0
IGZpbmFsOworICAgIGludCB0cmFja0luZGV4KCkgY29uc3QgZmluYWw7CisKK3ByaXZhdGU6Cisg
ICAgQXVkaW9UcmFja1ByaXZhdGVXZWJNKHdlYm06OlRyYWNrRW50cnkmJik7CisgICAgd2VibTo6
VHJhY2tFbnRyeSBtX3RyYWNrOworICAgIG11dGFibGUgQXRvbVN0cmluZyBtX3RyYWNrSUQ7Cisg
ICAgbXV0YWJsZSBBdG9tU3RyaW5nIG1fbGFiZWw7CisgICAgbXV0YWJsZSBBdG9tU3RyaW5nIG1f
bGFuZ3VhZ2U7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODE4ZWRmNmVhNDQ4MDdhMGUwNjFiNDE1
NGFjODllZDNlMThhNTk5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKQEAgLTAsMCArMSw1NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTb3VyY2VCdWZm
ZXJQYXJzZXIuaCIKKworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisKKyNpbmNsdWRlICJDb250
ZW50VHlwZS5oIgorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCIKKyNpbmNs
dWRlICJTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9y
dHNUeXBlIFNvdXJjZUJ1ZmZlclBhcnNlcjo6aXNDb250ZW50VHlwZVN1cHBvcnRlZChjb25zdCBD
b250ZW50VHlwZSYgdHlwZSkKK3sKKyAgICBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUg
c3VwcG9ydHMgPSBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVk
OworICAgIHN1cHBvcnRzID0gc3RkOjptYXgoc3VwcG9ydHMsIFNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk06OmlzQ29udGVudFR5cGVTdXBwb3J0ZWQodHlwZSkpOworICAgIHN1cHBvcnRzID0gc3RkOjpt
YXgoc3VwcG9ydHMsIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmlzQ29udGVudFR5cGVTdXBw
b3J0ZWQodHlwZSkpOworICAgIHJldHVybiBzdXBwb3J0czsKK30KKworUmVmUHRyPFNvdXJjZUJ1
ZmZlclBhcnNlcj4gU291cmNlQnVmZmVyUGFyc2VyOjpjcmVhdGUoY29uc3QgQ29udGVudFR5cGUm
IGNvbnRlbnRUeXBlKQoreworICAgIGlmIChXVEY6OmVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY29u
dGVudFR5cGUuY29udGFpbmVyVHlwZSgpLCAiYXVkaW8vd2VibSIpIHx8IFdURjo6ZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShjb250ZW50VHlwZS5jb250YWluZXJUeXBlKCksICJ2aWRlby93ZWJtIikp
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU291cmNlQnVmZmVyUGFyc2VyV2ViTSgpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKSk7Cit9
CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmNiYmFhY2NlYjJhNjlmMzc4ZTE3MGVjYjNlNTQ2NjRiYjM3M2Y4MDEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXIuaApAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKworI2luY2x1ZGUgIk1lZGlh
UGxheWVyRW51bXMuaCIKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmgiCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWludDhBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29udGVudFR5cGU7Citj
bGFzcyBNZWRpYVNhbXBsZTsKKworY2xhc3MgU291cmNlQnVmZmVyUGFyc2VyIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFNvdXJjZUJ1ZmZlclBhcnNlcj4geworcHVibGljOgorICAgIHN0
YXRpYyBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgaXNDb250ZW50VHlwZVN1cHBvcnRl
ZChjb25zdCBDb250ZW50VHlwZSYpOworCisgICAgc3RhdGljIFJlZlB0cjxTb3VyY2VCdWZmZXJQ
YXJzZXI+IGNyZWF0ZShjb25zdCBDb250ZW50VHlwZSYpOworICAgIHZpcnR1YWwgflNvdXJjZUJ1
ZmZlclBhcnNlcigpID0gZGVmYXVsdDsKKworICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3Qg
eworICAgICAgICBBVkZPYmpDLAorICAgICAgICBXZWJNLAorICAgIH07CisgICAgdmlydHVhbCBU
eXBlIHR5cGUoKSBjb25zdCA9IDA7CisgICAgZW51bSBjbGFzcyBBcHBlbmRGbGFncyA6IHVpbnQ4
X3QgeworICAgICAgICBOb25lLAorICAgICAgICBEaXNjb250aW51aXR5LAorICAgIH07CisgICAg
dmlydHVhbCB2b2lkIGFwcGVuZERhdGEoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYsIEFwcGVuZEZs
YWdzID0gQXBwZW5kRmxhZ3M6Ok5vbmUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmx1c2hQZW5k
aW5nTWVkaWFEYXRhKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRQcm92aWRlTWVk
aWFEYXRhRm9yVHJhY2tJRChib29sLCBpbnQzMl90KSA9IDA7CisgICAgdmlydHVhbCBib29sIHNo
b3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lEKGludDMyX3QpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpID0gMDsKKworICAgIC8vIFdpbGwgYmUgY2FsbGVkIG9u
IHRoZSBtYWluIHRocmVhZC4KKyAgICB1c2luZyBJbml0aWFsaXphdGlvblNlZ21lbnQgPSBTb3Vy
Y2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ7CisgICAgdXNpbmcg
RGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChJ
bml0aWFsaXphdGlvblNlZ21lbnQmJik+OworICAgIHZvaWQgc2V0RGlkUGFyc2VJbml0aWFsaXph
dGlvbkRhdGFDYWxsYmFjayhEaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrJiYgY2Fs
bGJhY2spCisgICAgeworICAgICAgICBtX2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKKyAgICB9CisKKyAgICAvLyBXaWxsIGJlIGNhbGxlZCBv
biB0aGUgbWFpbiB0aHJlYWQuCisgICAgdXNpbmcgRGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJz
aW5nQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoaW50MzJfdCBlcnJvckNvZGUpPjsKKyAg
ICB2b2lkIHNldERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKERpZEVuY291
bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrJiYgY2FsbGJhY2spCisgICAgeworICAgICAg
ICBtX2RpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayk7CisgICAgfQorCisgICAgLy8gV2lsbCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFk
LgorICAgIHVzaW5nIERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248
dm9pZChSZWY8TWVkaWFTYW1wbGU+JiYsIGludDMyX3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJiBt
ZWRpYVR5cGUpPjsKKyAgICB2b2lkIHNldERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhEaWRQ
cm92aWRlTWVkaWFEYXRhQ2FsbGJhY2smJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIG1fZGlk
UHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CisgICAgfQorCisg
ICAgLy8gV2lsbCBiZSBjYWxsZWQgc3luY2hyb25vdXNseSBvbiB0aGUgcGFyc2VyIHRoZWFkLgor
ICAgIHVzaW5nIFdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFG
b3JUcmFja0lEQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQodWludDMyX3QgdHJhY2tJRCk+
OworICAgIHZvaWQgc2V0V2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9u
RGF0YUZvclRyYWNrSURDYWxsYmFjayhXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlh
bGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrJiYgY2FsbGJhY2spCisgICAgeworICAgICAg
ICBtX3dpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFj
a0lEQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKKyAgICB9CisKKyAgICAvLyBXaWxsIGJl
IGNhbGxlZCBzeW5jaHJvbm91c2x5IG9uIHRoZSBwYXJzZXIgdGhlYWQuCisgICAgdXNpbmcgRGlk
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxi
YWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKFJlZjxVaW50OEFycmF5PiYmLCBpbnQzMl90IHRyYWNr
SUQpPjsKKyAgICB2b2lkIHNldERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayhEaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0
aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2smJiBjYWxsYmFjaykKKyAgICB7CisgICAg
ICAgIG1fZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJh
Y2tJRENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CisgICAgfQorCitwcm90ZWN0ZWQ6Cisg
ICAgU291cmNlQnVmZmVyUGFyc2VyKCkgPSBkZWZhdWx0OworCisgICAgRGlkUGFyc2VJbml0aWFs
aXphdGlvbkRhdGFDYWxsYmFjayBtX2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2s7
CisgICAgRGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2sgbV9kaWRFbmNvdW50
ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjazsKKyAgICBEaWRQcm92aWRlTWVkaWFEYXRhQ2Fs
bGJhY2sgbV9kaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2s7CisgICAgV2lsbFByb3ZpZGVDb250
ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayBtX3dpbGxQ
cm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJh
Y2s7CisgICAgRGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9y
VHJhY2tJRENhbGxiYWNrIG1fZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm9yVHJhY2tJRENhbGxiYWNrOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGM2NzQxYjJiY2VhZTg5OTQyZDQ2YjhmNDgxMzQ4YjUzYzE5YTAwNAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwCkBAIC0wLDAgKzEsMzU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaCIKKworI2lmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaCIKKyNp
bmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiTWVkaWFEZXNjcmlw
dGlvbi5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlZQ
OVV0aWxpdGllc0NvY29hLmgiCisjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGVXZWJNLmgiCisj
aW5jbHVkZSA8d2VibS93ZWJtX3BhcnNlci5oPgorI2luY2x1ZGUgPHd0Zi9BbGdvcml0aG1zLmg+
CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL2Rhcndpbi9X
ZWFrTGlua2luZy5oPgorCitXVEZfV0VBS19MSU5LX0ZPUkNFX0lNUE9SVCh3ZWJtOjpzd2FwKTsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgYm9vbCBpc1dlYm1QYXJzZXJBdmFpbGFi
bGUoKQoreworICAgIHJldHVybiAhIXdlYm06OnN3YXAgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS53ZWJNUGFyc2VyRW5hYmxlZCgpOworfQorCit1c2luZyBuYW1l
c3BhY2Ugd2VibTsKKworY2xhc3MgVmVjdG9yUmVhZGVyIGZpbmFsIDogcHVibGljIHdlYm06OlJl
YWRlciB7CitwdWJsaWM6CisgICAgVmVjdG9yUmVhZGVyKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYm
IGRhdGEpCisgICAgICAgIDogbV9kYXRhIHsgV1RGTW92ZShkYXRhKSB9CisgICAgeworICAgIH0K
KworICAgIFN0YXR1cyBSZWFkKHN0ZDo6c2l6ZV90IG51bVRvUmVhZCwgdWludDhfdCogb3V0cHV0
QnVmZmVyLCB1aW50NjRfdCogbnVtQWN0dWFsbHlSZWFkKSBmaW5hbAorICAgIHsKKyAgICAgICAg
QVNTRVJUKG91dHB1dEJ1ZmZlciAmJiBudW1BY3R1YWxseVJlYWQpOworICAgICAgICBpZiAoIW91
dHB1dEJ1ZmZlciB8fCAhbnVtQWN0dWFsbHlSZWFkKQorICAgICAgICAgICAgcmV0dXJuIFN0YXR1
cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworCisgICAgICAgIGlmIChtX3Bvc2l0aW9uID49
IG1fZGF0YS5zaXplKCkpIHsKKyAgICAgICAgICAgICpudW1BY3R1YWxseVJlYWQgPSAwOworICAg
ICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtFbmRPZkZpbGUpOworICAgICAgICB9CisK
KyAgICAgICAgc2l6ZV90IG51bUF2YWlsYWJsZSA9IG1fZGF0YS5zaXplKCkgLSBtX3Bvc2l0aW9u
OworICAgICAgICBpZiAobnVtVG9SZWFkIDwgbnVtQXZhaWxhYmxlKSB7CisgICAgICAgICAgICBt
ZW1jcHkob3V0cHV0QnVmZmVyLCBtX2RhdGEuZGF0YSgpICsgbV9wb3NpdGlvbiwgbnVtVG9SZWFk
KTsKKyAgICAgICAgICAgICpudW1BY3R1YWxseVJlYWQgPSBudW1Ub1JlYWQ7CisgICAgICAgICAg
ICBtX3Bvc2l0aW9uICs9IG51bVRvUmVhZDsKKyAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3Rh
dHVzOjprT2tDb21wbGV0ZWQpOworICAgICAgICB9CisKKyAgICAgICAgbWVtY3B5KG91dHB1dEJ1
ZmZlciwgbV9kYXRhLmRhdGEoKSArIG1fcG9zaXRpb24sIG51bUF2YWlsYWJsZSk7CisgICAgICAg
ICpudW1BY3R1YWxseVJlYWQgPSBudW1BdmFpbGFibGU7CisgICAgICAgIG1fcG9zaXRpb24gKz0g
bnVtQXZhaWxhYmxlOworICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rUGFydGlhbCk7
CisgICAgfQorCisgICAgU3RhdHVzIFNraXAodWludDY0X3QgbnVtVG9Ta2lwLCB1aW50NjRfdCog
bnVtQWN0dWFsbHlTa2lwcGVkKSBmaW5hbAorICAgIHsKKyAgICAgICAgQVNTRVJUKG51bUFjdHVh
bGx5U2tpcHBlZCk7CisgICAgICAgIGlmICghbnVtQWN0dWFsbHlTa2lwcGVkKQorICAgICAgICAg
ICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworCisgICAgICAgIGlm
IChtX3Bvc2l0aW9uID49IG1fZGF0YS5zaXplKCkpIHsKKyAgICAgICAgICAgICpudW1BY3R1YWxs
eVNraXBwZWQgPSAwOworICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtXb3VsZEJs
b2NrKTsKKyAgICAgICAgfQorCisgICAgICAgIHNpemVfdCBudW1BdmFpbGFibGUgPSBtX2RhdGEu
c2l6ZSgpIC0gbV9wb3NpdGlvbjsKKworICAgICAgICBpZiAobnVtVG9Ta2lwIDwgbnVtQXZhaWxh
YmxlKSB7CisgICAgICAgICAgICAqbnVtQWN0dWFsbHlTa2lwcGVkID0gbnVtVG9Ta2lwOworICAg
ICAgICAgICAgbV9wb3NpdGlvbiArPSBudW1Ub1NraXA7CisgICAgICAgICAgICByZXR1cm4gU3Rh
dHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKKyAgICAgICAgfQorCisgICAgICAgICpudW1BY3R1
YWxseVNraXBwZWQgPSBudW1BdmFpbGFibGU7CisgICAgICAgIG1fcG9zaXRpb24gKz0gbnVtQXZh
aWxhYmxlOworICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rUGFydGlhbCk7CisgICAg
fQorCisgICAgdWludDY0X3QgUG9zaXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Bvc2l0
aW9uOyB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IG1fZGF0YTsKKyAg
ICBzaXplX3QgbV9wb3NpdGlvbiB7IDAgfTsKK307CisKK2NsYXNzIE1lZGlhRGVzY3JpcHRpb25X
ZWJNIGZpbmFsIDogcHVibGljIE1lZGlhRGVzY3JpcHRpb24geworcHVibGljOgorICAgIHN0YXRp
YyBSZWY8TWVkaWFEZXNjcmlwdGlvbldlYk0+IGNyZWF0ZSh3ZWJtOjpUcmFja0VudHJ5JiYgdHJh
Y2spCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYURlc2NyaXB0aW9u
V2ViTShXVEZNb3ZlKHRyYWNrKSkpOworICAgIH0KKworICAgIE1lZGlhRGVzY3JpcHRpb25XZWJN
KHdlYm06OlRyYWNrRW50cnkmJiB0cmFjaykKKyAgICAgICAgOiBtX3RyYWNrIHsgV1RGTW92ZSh0
cmFjaykgfQorICAgIHsKKyAgICB9CisKKyAgICBBdG9tU3RyaW5nIGNvZGVjKCkgY29uc3QgZmlu
YWwKKyAgICB7CisgICAgICAgIGlmIChtX2NvZGVjKQorICAgICAgICAgICAgcmV0dXJuICptX2Nv
ZGVjOworCisgICAgICAgIC8vIEZyb206IGh0dHBzOi8vd3d3Lm1hdHJvc2thLm9yZy90ZWNobmlj
YWwvY29kZWNfc3BlY3MuaHRtbAorICAgICAgICAvLyAiRWFjaCBDb2RlYyBJRCBNVVNUIGluY2x1
ZGUgYSBNYWpvciBDb2RlYyBJRCBpbW1lZGlhdGVseSBmb2xsb3dpbmcgdGhlIENvZGVjIElEIFBy
ZWZpeC4KKyAgICAgICAgLy8gQSBNYWpvciBDb2RlYyBJRCBNQVkgYmUgZm9sbG93ZWQgYnkgYW4g
T1BUSU9OQUwgQ29kZWMgSUQgU3VmZml4IHRvIGNvbW11bmljYXRlIGEgcmVmaW5lbWVudAorICAg
ICAgICAvLyBvZiB0aGUgTWFqb3IgQ29kZWMgSUQuIElmIGEgQ29kZWMgSUQgU3VmZml4IGlzIHVz
ZWQsIHRoZW4gdGhlIENvZGVjIElEIE1VU1QgaW5jbHVkZSBhIGZvcndhcmQKKyAgICAgICAgLy8g
c2xhc2ggKOKAnC/igJ0pIGFzIGEgc2VwYXJhdG9yIGJldHdlZW4gdGhlIE1ham9yIENvZGVjIElE
IGFuZCB0aGUgQ29kZWMgSUQgU3VmZml4LiBUaGUgTWFqb3IgQ29kZWMKKyAgICAgICAgLy8gSUQg
TVVTVCBiZSBjb21wb3NlZCBvZiBvbmx5IGNhcGl0YWwgbGV0dGVycyAoQS1aKSBhbmQgbnVtYmVy
cyAoMC05KS4gVGhlIENvZGVjIElEIFN1ZmZpeCBNVVNUCisgICAgICAgIC8vIGJlIGNvbXBvc2Vk
IG9mIG9ubHkgY2FwaXRhbCBsZXR0ZXJzIChBLVopLCBudW1iZXJzICgwLTkpLCB1bmRlcnNjb3Jl
ICjigJxf4oCdKSwgYW5kIGZvcndhcmQgc2xhc2ggKOKAnC/igJ0pLiIKKworICAgICAgICBpZiAo
IW1fdHJhY2suY29kZWNfaWQuaXNfcHJlc2VudCgpKSB7CisgICAgICAgICAgICBtX2NvZGVjID0g
ZW1wdHlBdG9tKCk7CisgICAgICAgICAgICByZXR1cm4gKm1fY29kZWM7CisgICAgICAgIH0KKwor
ICAgICAgICBTdHJpbmdWaWV3IGNvZGVjSUQgeyBtX3RyYWNrLmNvZGVjX2lkLnZhbHVlKCkuZGF0
YSgpLCAodW5zaWduZWQpbV90cmFjay5jb2RlY19pZC52YWx1ZSgpLmxlbmd0aCgpIH07CisgICAg
ICAgIGlmICghY29kZWNJRC5zdGFydHNXaXRoKCJWXyIpICYmICFjb2RlY0lELnN0YXJ0c1dpdGgo
IkFfIikgJiYgIWNvZGVjSUQuc3RhcnRzV2l0aCgiU18iKSkgeworICAgICAgICAgICAgbV9jb2Rl
YyA9IGVtcHR5QXRvbSgpOworICAgICAgICAgICAgcmV0dXJuICptX2NvZGVjOworICAgICAgICB9
CisKKyAgICAgICAgYXV0byBzbGFzaExvY2F0aW9uID0gY29kZWNJRC5maW5kKCcvJyk7CisgICAg
ICAgIGF1dG8gbGVuZ3RoID0gc2xhc2hMb2NhdGlvbiA9PSBub3RGb3VuZCA/IGNvZGVjSUQubGVu
Z3RoKCkgLSAyIDogc2xhc2hMb2NhdGlvbiAtIDI7CisgICAgICAgIG1fY29kZWMgPSBBdG9tU3Ry
aW5nIHsgY29kZWNJRC5zdWJzdHJpbmcoMiwgbGVuZ3RoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2Fz
ZSgpIH07CisgICAgICAgIHJldHVybiAqbV9jb2RlYzsKKyAgICB9CisgICAgYm9vbCBpc1ZpZGVv
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90cmFjay50cmFja190eXBlLmlzX3ByZXNlbnQoKSAm
JiBtX3RyYWNrLnRyYWNrX3R5cGUudmFsdWUoKSA9PSBUcmFja1R5cGU6OmtWaWRlbzsgfQorICAg
IGJvb2wgaXNBdWRpbygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdHJhY2sudHJhY2tfdHlwZS5p
c19wcmVzZW50KCkgJiYgbV90cmFjay50cmFja190eXBlLnZhbHVlKCkgPT0gVHJhY2tUeXBlOjpr
QXVkaW87IH0KKyAgICBib29sIGlzVGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdHJhY2su
dHJhY2tfdHlwZS5pc19wcmVzZW50KCkgJiYgbV90cmFjay50cmFja190eXBlLnZhbHVlKCkgPT0g
VHJhY2tUeXBlOjprU3VidGl0bGU7IH0KKworICAgIGNvbnN0IHdlYm06OlRyYWNrRW50cnkmIHRy
YWNrKCkgeyByZXR1cm4gbV90cmFjazsgfQorCitwcml2YXRlOgorICAgIG11dGFibGUgT3B0aW9u
YWw8QXRvbVN0cmluZz4gbV9jb2RlYzsKKyAgICB3ZWJtOjpUcmFja0VudHJ5IG1fdHJhY2s7Cit9
OworCitNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgU291cmNlQnVmZmVyUGFyc2VyV2Vi
TTo6aXNDb250ZW50VHlwZVN1cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYgdHlwZSkKK3sKKyAg
ICBpZiAoIWlzV2VibVBhcnNlckF2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5
ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKKworICAgIGlmICghV1RGOjpl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKHR5cGUuY29udGFpbmVyVHlwZSgpLCAiYXVkaW8vd2VibSIp
CisgICAgICAgICYmICFXVEY6OmVxdWFsSWdub3JpbmdBU0NJSUNhc2UodHlwZS5jb250YWluZXJU
eXBlKCksICJ2aWRlby93ZWJtIikpCisgICAgICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpT
dXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOworCisgICAgU3RyaW5nIGNvZGVjc1BhcmFtZXRl
ciA9IHR5cGUucGFyYW1ldGVyKENvbnRlbnRUeXBlOjpjb2RlY3NQYXJhbWV0ZXIoKSk7CisgICAg
aWYgKCFjb2RlY3NQYXJhbWV0ZXIpCisgICAgICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpT
dXBwb3J0c1R5cGU6Ok1heUJlU3VwcG9ydGVkOworCisgICAgYXV0byBzcGxpdFJlc3VsdHMgPSBT
dHJpbmdWaWV3KGNvZGVjc1BhcmFtZXRlcikuc3BsaXQoJywnKTsKKyAgICBmb3IgKGF1dG8gc3Bs
aXQgOiBzcGxpdFJlc3VsdHMpIHsKKyAgICAgICAgaWYgKHNwbGl0LnN0YXJ0c1dpdGgoIm9wdXMi
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoc3BsaXQuc3RhcnRzV2l0aCgi
dnAwOSIpKSB7CisgICAgICAgICAgICBpZiAoIWlzVlA5RGVjb2RlckF2YWlsYWJsZSgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGU6OklzTm90
U3VwcG9ydGVkOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgLy8g
RklYTUU6IEFkZCBWb3JiaXMgU3VwcG9ydAorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVt
czo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKKyAgICB9CisgICAgcmV0dXJuIE1lZGlh
UGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQ7Cit9CisKK1NvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKQoreworICAgIGlmIChpc1dlYm1Q
YXJzZXJBdmFpbGFibGUoKSkKKyAgICAgICAgbV9wYXJzZXIgPSBXVEY6Om1ha2VVbmlxdWVXaXRo
b3V0RmFzdE1hbGxvY0NoZWNrPFdlYm1QYXJzZXI+KCk7Cit9CisKK1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk06On5Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNKCkgPSBkZWZhdWx0OworCit2b2lkIFNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06OmFwcGVuZERhdGEoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgYnVm
ZmVyLCBBcHBlbmRGbGFncyBhcHBlbmRGbGFncykKK3sKKyAgICBpZiAoIW1fcGFyc2VyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBWZWN0b3JSZWFkZXIgcmVhZGVyIHsgV1RGTW92ZShidWZmZXIp
IH07CisgICAgaWYgKGFwcGVuZEZsYWdzID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5KQor
ICAgICAgICBtX3BhcnNlci0+RGlkU2VlaygpOworICAgIG1fc3RhdHVzID0gbV9wYXJzZXItPkZl
ZWQodGhpcywgJnJlYWRlcik7CisgICAgaWYgKG1fc3RhdHVzLm9rKCkgfHwgbV9zdGF0dXMuY29k
ZSA9PSBTdGF0dXM6OmtFbmRPZkZpbGUpCisgICAgICAgIHJldHVybjsKKworICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29kZSA9IG1f
c3RhdHVzLmNvZGVdIHsKKyAgICAgICAgaWYgKG1fZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJz
aW5nQ2FsbGJhY2spCisgICAgICAgICAgICBtX2RpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2lu
Z0NhbGxiYWNrKGNvZGUpOworICAgIH0pOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk06OmZsdXNoUGVuZGluZ01lZGlhRGF0YSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRh
Rm9yVHJhY2tJRChib29sLCBpbnQzMl90KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K2Jvb2wgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2hvdWxkUHJvdmlkZU1lZGlhZGF0YUZvclRy
YWNrSUQoaW50MzJfdCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpyZXNldFBhcnNlclN0YXRlKCkK
K3sKKyAgICBtX3BhcnNlci0+RGlkU2VlaygpOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6Tm9uZTsK
K30KKworU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRWxlbWVudEJlZ2luKGNvbnN0
IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIEFjdGlvbiogYWN0aW9uKQoreworICAgIFVOVVNF
RF9QQVJBTShtZXRhZGF0YSk7CisgICAgQVNTRVJUKGFjdGlvbik7CisgICAgaWYgKCFhY3Rpb24p
CisgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKworICAg
IGlmICgobV9zdGF0ZSA9PSBTdGF0ZTo6Tm9uZSAmJiBtZXRhZGF0YS5pZCAhPSBJZDo6a0VibWwp
CisgICAgICAgIHx8IChtX3N0YXRlID09IFN0YXRlOjpSZWFkRWJtbCAmJiBtZXRhZGF0YS5pZCAh
PSBJZDo6a1NlZ21lbnQpCisgICAgICAgIHx8IChtX3N0YXRlID09IFN0YXRlOjpSZWFkaW5nU2Vn
bWVudCAmJiBtZXRhZGF0YS5pZCAhPSBJZDo6a0luZm8pCisgICAgICAgIHx8IChtX3N0YXRlID09
IFN0YXRlOjpSZWFkSW5mbyAmJiBtZXRhZGF0YS5pZCAhPSBJZDo6a1RyYWNrcykKKyAgICAgICAg
fHwgKG1fc3RhdGUgPT0gU3RhdGU6OlJlYWRUcmFjayAmJiBtZXRhZGF0YS5pZCAhPSBJZDo6a1Ry
YWNrRW50cnkgJiYgbWV0YWRhdGEuaWQgIT0gSWQ6OmtDbHVzdGVyKQorICAgICAgICB8fCAobWV0
YWRhdGEuaWQgPT0gSWQ6OmtDdWVzIHx8IG1ldGFkYXRhLmlkID09IElkOjprQ2hhcHRlcnMpKSB7
CisgICAgICAgICphY3Rpb24gPSBBY3Rpb246OmtTa2lwOworICAgICAgICByZXR1cm4gU3RhdHVz
KFN0YXR1czo6a09rQ29tcGxldGVkKTsKKyAgICB9CisKKyAgICBpZiAobWV0YWRhdGEuaWQgPT0g
SWQ6OmtFYm1sKQorICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWRpbmdFYm1sOworICAgIGVs
c2UgaWYgKG1ldGFkYXRhLmlkID09IElkOjprU2VnbWVudCkKKyAgICAgICAgbV9zdGF0ZSA9IFN0
YXRlOjpSZWFkaW5nU2VnbWVudDsKKyAgICBlbHNlIGlmIChtZXRhZGF0YS5pZCA9PSBJZDo6a0lu
Zm8pCisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZGluZ0luZm87CisgICAgZWxzZSBpZiAo
bWV0YWRhdGEuaWQgPT0gSWQ6OmtUcmFja3MpCisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVh
ZGluZ1RyYWNrczsKKyAgICBlbHNlIGlmIChtZXRhZGF0YS5pZCA9PSBJZDo6a1RyYWNrRW50cnkp
CisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZGluZ1RyYWNrOworICAgIGVsc2UgaWYgKG1l
dGFkYXRhLmlkID09IElkOjprQ2x1c3RlcikKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFk
aW5nQ2x1c3RlcjsKKworICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOwor
fQorCitTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FYm1sKGNvbnN0IEVsZW1lbnRN
ZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0IEVibWwmIGVibWwpCit7CisgICAgVU5VU0VEX1BBUkFN
KG1ldGFkYXRhKTsKKyAgICBpZiAoZWJtbC5kb2NfdHlwZS5pc19wcmVzZW50KCkgJiYgZWJtbC5k
b2NfdHlwZS52YWx1ZSgpLmNvbXBhcmUoIndlYm0iKSkKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhT
dGF0dXM6OkNvZGUoRXJyb3JDb2RlOjpJbnZhbGlkRG9jVHlwZSkpOworCisgICAgbV9pbml0aWFs
aXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCA9IHRydWU7CisgICAgbV9pbml0aWFsaXphdGlvblNl
Z21lbnQgPSBXVEY6Om1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEluaXRpYWxpemF0
aW9uU2VnbWVudD4oKTsKKyAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWRFYm1sOworCisgICAgcmV0
dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7Cit9CisKK1N0YXR1cyBTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjpPblNlZ21lbnRCZWdpbihjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFk
YXRhLCBBY3Rpb24qIGFjdGlvbikKK3sKKyAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOworICAg
IGlmICghbV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCkKKyAgICAgICAgcmV0dXJu
IFN0YXR1cyhTdGF0dXM6OkNvZGUoRXJyb3JDb2RlOjpJbnZhbGlkSW5pdFNlZ21lbnQpKTsKKwor
ICAgIEFTU0VSVChhY3Rpb24pOworICAgIGlmICghYWN0aW9uKQorICAgICAgICByZXR1cm4gU3Rh
dHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisgICAgKmFjdGlvbiA9IEFjdGlvbjo6a1Jl
YWQ7CisKKyAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKK30KKworU3Rh
dHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uSW5mbyhjb25zdCBFbGVtZW50TWV0YWRhdGEm
IG1ldGFkYXRhLCBjb25zdCBJbmZvJiBpbmZvKQoreworICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0
YSk7CisgICAgaWYgKCFtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkIHx8ICFtX2lu
aXRpYWxpemF0aW9uU2VnbWVudCkKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OkNvZGUo
RXJyb3JDb2RlOjpJbnZhbGlkSW5pdFNlZ21lbnQpKTsKKworICAgIGF1dG8gdGltZWNvZGVTY2Fs
ZSA9IGluZm8udGltZWNvZGVfc2NhbGUuaXNfcHJlc2VudCgpID8gaW5mby50aW1lY29kZV9zY2Fs
ZS52YWx1ZSgpIDogMTAwMDAwMDsKKyAgICBtX3RpbWVzY2FsZSA9IDEwMDAwMDAwMDAgLyB0aW1l
Y29kZVNjYWxlOworICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50LT5kdXJhdGlvbiA9IGluZm8u
ZHVyYXRpb24uaXNfcHJlc2VudCgpID8gTWVkaWFUaW1lKGluZm8uZHVyYXRpb24udmFsdWUoKSwg
bV90aW1lc2NhbGUpIDogTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpOworICAgIG1fc3RhdGUg
PSBTdGF0ZTo6UmVhZEluZm87CisKKyAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxl
dGVkKTsKK30KKworU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQ2x1c3RlckJlZ2lu
KGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0IENsdXN0ZXImIGNsdXN0ZXIs
IEFjdGlvbiogYWN0aW9uKQoreworICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CisgICAgVU5V
U0VEX1BBUkFNKGNsdXN0ZXIpOworICAgIEFTU0VSVChhY3Rpb24pOworICAgIGlmICghYWN0aW9u
KQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisKKyAg
ICBpZiAobV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCAmJiBtX2RpZFBhcnNlSW5p
dGlhbGl6YXRpb25EYXRhQ2FsbGJhY2spIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpbml0aWFsaXphdGlvblNlZ21lbnQg
PSBXVEZNb3ZlKCptX2luaXRpYWxpemF0aW9uU2VnbWVudCldICgpIG11dGFibGUgeworICAgICAg
ICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFdURk1vdmUoaW5pdGlh
bGl6YXRpb25TZWdtZW50KSk7CisgICAgICAgIH0pOworICAgIH0KKyAgICBtX2luaXRpYWxpemF0
aW9uU2VnbWVudEVuY291bnRlcmVkID0gZmFsc2U7CisgICAgbV9pbml0aWFsaXphdGlvblNlZ21l
bnQgPSBudWxscHRyOworCisgICAgKmFjdGlvbiA9IEFjdGlvbjo6a1JlYWQ7CisKKyAgICByZXR1
cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKK30KKworU3RhdHVzIFNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06Ok9uVHJhY2tFbnRyeShjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRh
LCBjb25zdCBUcmFja0VudHJ5JiB0cmFja0VudHJ5KQoreworICAgIFVOVVNFRF9QQVJBTShtZXRh
ZGF0YSk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkVHJhY2s7CisgICAgaWYgKCF0cmFja0Vu
dHJ5LnRyYWNrX3R5cGUuaXNfcHJlc2VudCgpKQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1
czo6a09rQ29tcGxldGVkKTsKKworICAgIGF1dG8gdHJhY2tUeXBlID0gdHJhY2tFbnRyeS50cmFj
a190eXBlLnZhbHVlKCk7CisgICAgaWYgKHRyYWNrVHlwZSA9PSBUcmFja1R5cGU6OmtWaWRlbykK
KyAgICAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnQtPnZpZGVvVHJhY2tzLmFwcGVuZCh7IE1l
ZGlhRGVzY3JpcHRpb25XZWJNOjpjcmVhdGUoVHJhY2tFbnRyeSh0cmFja0VudHJ5KSksIFZpZGVv
VHJhY2tQcml2YXRlV2ViTTo6Y3JlYXRlKFRyYWNrRW50cnkodHJhY2tFbnRyeSkpIH0pOworICAg
IGVsc2UgaWYgKHRyYWNrVHlwZSA9PSBUcmFja1R5cGU6OmtBdWRpbykKKyAgICAgICAgbV9pbml0
aWFsaXphdGlvblNlZ21lbnQtPmF1ZGlvVHJhY2tzLmFwcGVuZCh7IE1lZGlhRGVzY3JpcHRpb25X
ZWJNOjpjcmVhdGUoVHJhY2tFbnRyeSh0cmFja0VudHJ5KSksIEF1ZGlvVHJhY2tQcml2YXRlV2Vi
TTo6Y3JlYXRlKFRyYWNrRW50cnkodHJhY2tFbnRyeSkpIH0pOworCisgICAgcmV0dXJuIFN0YXR1
cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc1ODg5
N2I0NWI0MmViZGNiODMzODVmNDJiZGUxNDRlZmIxODFlNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uaApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKKworI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlci5oIgor
I2luY2x1ZGUgPHdlYm0vY2FsbGJhY2suaD4KKyNpbmNsdWRlIDx3ZWJtL3N0YXR1cy5oPgorI2lu
Y2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUg
PHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3R5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVm
ZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKKworbmFtZXNwYWNlIHdlYm0geworY2xhc3MgV2VibVBh
cnNlcjsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNIDogcHVibGljIFNvdXJjZUJ1ZmZlclBhcnNlciwgcHJpdmF0ZSB3ZWJtOjpDYWxsYmFj
ayB7CitwdWJsaWM6CisgICAgc3RhdGljIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZSBp
c0NvbnRlbnRUeXBlU3VwcG9ydGVkKGNvbnN0IENvbnRlbnRUeXBlJik7CisKKyAgICBTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNKCk7CisgICAgflNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKTsKKworICAg
IHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CisKKyAgICBjb25zdCB3ZWJtOjpTdGF0dXMmIHN0
YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CisKKyAgICBUeXBlIHR5cGUoKSBjb25z
dCB7IHJldHVybiBUeXBlOjpXZWJNOyB9CisgICAgdm9pZCBhcHBlbmREYXRhKFZlY3Rvcjx1bnNp
Z25lZCBjaGFyPiYmLCBBcHBlbmRGbGFncyA9IEFwcGVuZEZsYWdzOjpOb25lKSBmaW5hbDsKKyAg
ICB2b2lkIGZsdXNoUGVuZGluZ01lZGlhRGF0YSgpIGZpbmFsOworICAgIHZvaWQgc2V0U2hvdWxk
UHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoYm9vbCwgaW50MzJfdCkgZmluYWw7CisgICAgYm9v
bCBzaG91bGRQcm92aWRlTWVkaWFkYXRhRm9yVHJhY2tJRChpbnQzMl90KSBmaW5hbDsKKyAgICB2
b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKKworICAgIGVudW0gY2xhc3MgRXJyb3JDb2Rl
IDogaW50MzJfdCB7CisgICAgICAgIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk1FcnJvckNvZGVTdGFy
dCA9IDIwMDAsCisgICAgICAgIEludmFsaWREb2NUeXBlLAorICAgICAgICBJbnZhbGlkSW5pdFNl
Z21lbnQsCisgICAgfTsKKworcHJpdmF0ZToKKyAgICAvLyB3ZWJtOjpDYWxsYmFjaworICAgIHdl
Ym06OlN0YXR1cyBPbkVsZW1lbnRCZWdpbihjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmLCB3
ZWJtOjpBY3Rpb24qKSBmaW5hbDsKKyAgICB3ZWJtOjpTdGF0dXMgT25FYm1sKGNvbnN0IHdlYm06
OkVsZW1lbnRNZXRhZGF0YSYsIGNvbnN0IHdlYm06OkVibWwmKSBmaW5hbDsKKyAgICB3ZWJtOjpT
dGF0dXMgT25TZWdtZW50QmVnaW4oY29uc3Qgd2VibTo6RWxlbWVudE1ldGFkYXRhJiwgd2VibTo6
QWN0aW9uKikgZmluYWw7CisgICAgd2VibTo6U3RhdHVzIE9uSW5mbyhjb25zdCB3ZWJtOjpFbGVt
ZW50TWV0YWRhdGEmLCBjb25zdCB3ZWJtOjpJbmZvJikgZmluYWw7CisgICAgd2VibTo6U3RhdHVz
IE9uQ2x1c3RlckJlZ2luKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYsIGNvbnN0IHdlYm06
OkNsdXN0ZXImLCB3ZWJtOjpBY3Rpb24qKSBmaW5hbDsKKyAgICB3ZWJtOjpTdGF0dXMgT25UcmFj
a0VudHJ5KGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYsIGNvbnN0IHdlYm06OlRyYWNrRW50
cnkmKSBmaW5hbDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbml0aWFsaXphdGlvblNlZ21lbnQ+
IG1faW5pdGlhbGl6YXRpb25TZWdtZW50OworICAgIHdlYm06OlN0YXR1cyBtX3N0YXR1czsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8d2VibTo6V2VibVBhcnNlcj4gbV9wYXJzZXI7CisgICAgYm9vbCBt
X2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkIHsgZmFsc2UgfTsKKyAgICB1aW50MzJf
dCBtX3RpbWVzY2FsZSB7IDEwMDAgfTsKKworICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90
IHsKKyAgICAgICAgTm9uZSwKKyAgICAgICAgUmVhZGluZ0VibWwsCisgICAgICAgIFJlYWRFYm1s
LAorICAgICAgICBSZWFkaW5nU2VnbWVudCwKKyAgICAgICAgUmVhZGluZ0luZm8sCisgICAgICAg
IFJlYWRJbmZvLAorICAgICAgICBSZWFkaW5nVHJhY2tzLAorICAgICAgICBSZWFkaW5nVHJhY2ss
CisgICAgICAgIFJlYWRUcmFjaywKKyAgICAgICAgUmVhZGluZ0NsdXN0ZXIsCisgICAgfTsKKyAg
ICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6Ok5vbmUgfTsKKworICAgIFZlY3Rvcjx3ZWJtOjpUcmFj
a0VudHJ5PiBtX3RyYWNrczsKK307CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJ
TihXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNKQorICAgIHN0YXRpYyBib29sIGlzVHlw
ZShjb25zdCBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXImIHBhcnNlcikgeyByZXR1cm4gcGFy
c2VyLnR5cGUoKSA9PSBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlR5cGU6OldlYk07IH0K
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
T1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9WUDlVdGlsaXRpZXNDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvVlA5VXRpbGl0aWVzQ29jb2EuaAppbmRleCAwNThkN2Y5NmFjMDFiZDVmZGI0MDNjZjhl
MGFiNWExODhiOTBhNzRjLi43NDA2ODk3NWViNTJhMjI5ODMyM2NiYmNhNDc0YWU0YTIzNDM4NThm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlV
dGlsaXRpZXNDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1ZQOVV0aWxpdGllc0NvY29hLmgKQEAgLTM4LDYgKzM4LDcgQEAgV0VCQ09SRV9FWFBPUlQg
ZXh0ZXJuIHZvaWQgc2V0T3ZlcnJpZGVWUDlIYXJkd2FyZURlY29kZXJEaXNhYmxlZEZvclRlc3Rp
bmcoYm9vbCkKIFdFQkNPUkVfRVhQT1JUIGV4dGVybiB2b2lkIHNldE92ZXJyaWRlVlA5U2NyZWVu
U2l6ZUFuZFNjYWxlRm9yVGVzdGluZyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBz
Y2FsZSk7CiBXRUJDT1JFX0VYUE9SVCBleHRlcm4gdm9pZCByZXNldE92ZXJyaWRlVlA5U2NyZWVu
U2l6ZUFuZFNjYWxlRm9yVGVzdGluZygpOwogCitleHRlcm4gYm9vbCBpc1ZQOURlY29kZXJBdmFp
bGFibGUoKTsKIGV4dGVybiBib29sIHZhbGlkYXRlVlBQYXJhbWV0ZXJzKFZQQ29kZWNDb25maWd1
cmF0aW9uUmVjb3JkJiwgTWVkaWFDYXBhYmlsaXRpZXNJbmZvJiwgY29uc3QgVmlkZW9Db25maWd1
cmF0aW9uJik7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0KaW5kZXggNTY4NTk1MzNkZWI2YWVj
YzkwYzU3ZTE5NTEyY2ZkZDhlMGUyZTRiMS4uMjg4N2E1MmUzYzMyNmY4ZTUxYzBjOGExYWIzYTBi
MmEyNDJhNjdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0KQEAgLTk2LDEwICs5NiwxNCBAQCBz
dGF0aWMgUmVzb2x1dGlvbkNhdGVnb3J5IHJlc29sdXRpb25DYXRlZ29yeShjb25zdCBGbG9hdFNp
emUmIHNpemUpCiAgICAgcmV0dXJuIFJlc29sdXRpb25DYXRlZ29yeTo6Ul80ODBwOwogfQogCiti
b29sIGlzVlA5RGVjb2RlckF2YWlsYWJsZSgpCit7CisgICAgcmV0dXJuIG5vRXJyID09IFZUU2Vs
ZWN0QW5kQ3JlYXRlVmlkZW9EZWNvZGVySW5zdGFuY2Uoa0NNVmlkZW9Db2RlY1R5cGVfVlA5LCBr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCBudWxscHRyKTsKK30KKwogYm9vbCB2YWxpZGF0
ZVZQUGFyYW1ldGVycyhWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYgY29kZWNDb25maWd1cmF0
aW9uLCBNZWRpYUNhcGFiaWxpdGllc0luZm8mIGluZm8sIGNvbnN0IFZpZGVvQ29uZmlndXJhdGlv
biYgdmlkZW9Db25maWd1cmF0aW9uKQogewotICAgIE9TU3RhdHVzIHN0YXR1cyA9IFZUU2VsZWN0
QW5kQ3JlYXRlVmlkZW9EZWNvZGVySW5zdGFuY2Uoa0NNVmlkZW9Db2RlY1R5cGVfVlA5LCBrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCBudWxscHRyKTsKLSAgICBpZiAoc3RhdHVzICE9IG5v
RXJyKQorICAgIGlmICghaXNWUDlEZWNvZGVyQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIC8vIFZpZGVvQ29uZmlndXJhdGlvbiBhbmQgVlBDb2RlY0NvbmZpZ3VyYXRp
b25SZWNvcmQgY2FuIGhhdmUgY29uZmxpY3RpbmcgdmFsdWVzIGZvciBIRFIgcHJvcGVydGllcy4g
SWYgc28sIHJlamVjdC4KQEAgLTEyMiw3ICsxMjYsNyBAQCBib29sIHZhbGlkYXRlVlBQYXJhbWV0
ZXJzKFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkJiBjb2RlY0NvbmZpZ3VyYXRpb24sIE1lZGlh
QwogICAgICAgICBpbmZvLnBvd2VyRWZmaWNpZW50ID0gdHJ1ZTsKIAogICAgICAgICAvLyBIVyBW
UDkgRGVjb2RlciBzdXBwb3J0cyBQcm9maWxlIDAgJiAyOgotICAgICAgICBpZiAoIWNvZGVjQ29u
ZmlndXJhdGlvbi5wcm9maWxlICYmIGNvZGVjQ29uZmlndXJhdGlvbi5wcm9maWxlICE9IDIpCisg
ICAgICAgIGlmIChjb2RlY0NvbmZpZ3VyYXRpb24ucHJvZmlsZSAmJiBjb2RlY0NvbmZpZ3VyYXRp
b24ucHJvZmlsZSAhPSAyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8v
IEhXIFZQOSBEZWNvZGVyIHN1cHBvcnRzIHVwIHRvIExldmVsIDY6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1By
aXZhdGVXZWJNLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTM0ZjJlNTgzZmVjYmRhMzRmNzU3YmIyYjMxOTdm
M2VmY2U4MjMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcApAQCAtMCwwICsxLDc1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2
YXRlV2ViTS5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitSZWY8VmlkZW9UcmFja1ByaXZhdGVXZWJNPiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk06
OmNyZWF0ZSh3ZWJtOjpUcmFja0VudHJ5JiYgdHJhY2tFbnRyeSkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0oV1RGTW92ZSh0cmFja0VudHJ5KSkpOwor
fQorCitWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OlZpZGVvVHJhY2tQcml2YXRlV2ViTSh3ZWJtOjpU
cmFja0VudHJ5JiYgdHJhY2tFbnRyeSkKKyAgICA6IG1fdHJhY2soV1RGTW92ZSh0cmFja0VudHJ5
KSkKK3sKKyAgICBpZiAobV90cmFjay5pc19lbmFibGVkLmlzX3ByZXNlbnQoKSkKKyAgICAgICAg
c2V0U2VsZWN0ZWQobV90cmFjay5pc19lbmFibGVkLnZhbHVlKCkpOworfQorCitBdG9tU3RyaW5n
IFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6aWQoKSBjb25zdAoreworICAgIGlmIChtX3RyYWNrSUQu
aXNOdWxsKCkpCisgICAgICAgIG1fdHJhY2tJRCA9IG1fdHJhY2sudHJhY2tfdWlkLmlzX3ByZXNl
bnQoKSA/IEF0b21TdHJpbmc6Om51bWJlcihtX3RyYWNrLnRyYWNrX3VpZC52YWx1ZSgpKSA6IGVt
cHR5QXRvbSgpOworICAgIHJldHVybiBtX3RyYWNrSUQ7Cit9CisKK0F0b21TdHJpbmcgVmlkZW9U
cmFja1ByaXZhdGVXZWJNOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgaWYgKG1fbGFiZWwuaXNOdWxs
KCkpCisgICAgICAgIG1fbGFiZWwgPSBtX3RyYWNrLm5hbWUuaXNfcHJlc2VudCgpID8gQXRvbVN0
cmluZzo6ZnJvbVVURjgobV90cmFjay5uYW1lLnZhbHVlKCkuZGF0YSgpLCBtX3RyYWNrLm5hbWUu
dmFsdWUoKS5sZW5ndGgoKSkgOiBlbXB0eUF0b20oKTsKKyAgICByZXR1cm4gbV9sYWJlbDsKK30K
KworQXRvbVN0cmluZyBWaWRlb1RyYWNrUHJpdmF0ZVdlYk06Omxhbmd1YWdlKCkgY29uc3QKK3sK
KyAgICBpZiAobV9sYW5ndWFnZS5pc051bGwoKSkKKyAgICAgICAgbV9sYW5ndWFnZSA9IG1fdHJh
Y2subGFuZ3VhZ2UuaXNfcHJlc2VudCgpID8gQXRvbVN0cmluZzo6ZnJvbVVURjgobV90cmFjay5s
YW5ndWFnZS52YWx1ZSgpLmRhdGEoKSwgbV90cmFjay5sYW5ndWFnZS52YWx1ZSgpLmxlbmd0aCgp
KSA6IGVtcHR5QXRvbSgpOworICAgIHJldHVybiBtX2xhbmd1YWdlOworfQorCitpbnQgVmlkZW9U
cmFja1ByaXZhdGVXZWJNOjp0cmFja0luZGV4KCkgY29uc3QKK3sKKyAgICBpZiAobV90cmFjay50
cmFja19udW1iZXIuaXNfcHJlc2VudCgpKQorICAgICAgICByZXR1cm4gbV90cmFjay50cmFja19u
dW1iZXIudmFsdWUoKTsKKyAgICByZXR1cm4gMDsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTc2
N2I5MWQ5NmVmZWFmNDlmM2M3OTBjNzJkNjNhMmZkODE1M2I4MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRl
V2ViTS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShNRURJQV9TT1VSQ0UpCisKKyNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgor
I2luY2x1ZGUgPHdlYm0vZG9tX3R5cGVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgVmlkZW9UcmFja1ByaXZhdGVXZWJNIGZpbmFsIDogcHVibGljIFZpZGVvVHJhY2tQcml2YXRl
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFZpZGVvVHJhY2tQcml2YXRlV2ViTT4gY3JlYXRl
KHdlYm06OlRyYWNrRW50cnkmJik7CisgICAgdmlydHVhbCB+VmlkZW9UcmFja1ByaXZhdGVXZWJN
KCkgPSBkZWZhdWx0OworCisgICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IGZpbmFsOworICAgIEF0
b21TdHJpbmcgbGFiZWwoKSBjb25zdCBmaW5hbDsKKyAgICBBdG9tU3RyaW5nIGxhbmd1YWdlKCkg
Y29uc3QgZmluYWw7CisgICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBmaW5hbDsKKworcHJpdmF0
ZToKKyAgICBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0od2VibTo6VHJhY2tFbnRyeSYmKTsKKyAgICB3
ZWJtOjpUcmFja0VudHJ5IG1fdHJhY2s7CisgICAgbXV0YWJsZSBBdG9tU3RyaW5nIG1fdHJhY2tJ
RDsKKyAgICBtdXRhYmxlIEF0b21TdHJpbmcgbV9sYWJlbDsKKyAgICBtdXRhYmxlIEF0b21TdHJp
bmcgbV9sYW5ndWFnZTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCBlMDRjYWRjYTJk
YzVhOGM0MTliNzJmYTE5ZWU3M2ZlNzNhMTBiNjAxLi40MmIwNDk3MDliM2ZlMDhlYTMwZmM1ZGQ5
NmY2ODFiZjZjN2MxNjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVm
ZXJlbmNlcy55YW1sCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlh
bWwKQEAgLTY2OCw2ICs2NjgsMTUgQEAgVlA5RGVjb2RlckVuYWJsZWQ6CiAgIGh1bWFuUmVhZGFi
bGVEZXNjcmlwdGlvbjogIkVuYWJsZSBWUDkgZGVjb2RlciIKICAgY2F0ZWdvcnk6IGV4cGVyaW1l
bnRhbAogCitXZWJNUGFyc2VyRW5hYmxlZDoKKyAgdHlwZTogYm9vbAorICBkZWZhdWx0VmFsdWU6
IGZhbHNlCisgIHdlYmNvcmVCaW5kaW5nOiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzCisgIGh1bWFu
UmVhZGFibGVOYW1lOiAiV2ViTSBNU0UgcGFyc2VyIgorICBodW1hblJlYWRhYmxlRGVzY3JpcHRp
b246ICJFbmFibGUgV2ViTSBNU0UgcGFyc2VyIgorICBjYXRlZ29yeTogZXhwZXJpbWVudGFsCisg
IGNvbmRpdGlvbjogRU5BQkxFKE1FRElBX1NPVVJDRSkKKwogVXNlTGVnYWN5VGV4dEFsaWduUG9z
aXRpb25lZEVsZW1lbnRCZWhhdmlvcjoKICAgdHlwZTogYm9vbAogICBkZWZhdWx0VmFsdWU6IGZh
bHNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404718</attachid>
            <date>2020-07-20 09:03:31 -0700</date>
            <delta_ts>2020-07-21 00:41:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214529-20200720090330.patch</filename>
            <type>text/plain</type>
            <size>141083</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBhY2ZhNzFkMTE0MWY2M2Q0ZWYxMGJkMmY2NjE5YzcxYTNhNWU4ZTQxLi41MGE1
MmNkNTIxZDljMGEzYzQ3N2U5MzhkZTc5MmNiZDdiNjVlYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNy0xOSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBleHBlcmltZW50
YWwgTVNFIFdlYk0gcGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTQ1MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUd28gZHJpdmUtYnkgZml4ZXM6IEFkZCBzb21lIG1pc3NpbmcgZXhwb3J0IHRv
IHRoZSBsaWJ3ZWJydGMuKi5leHAgZmlsZXMsIGFuZCBleHBvcnQgdGhlIHdlYm0gaGVhZGVycwor
ICAgICAgICBhcyBQcml2YXRlLCBub3QgUHVibGljLCBzbyB0aGV5J3JlIHB1dCBpbiB0aGUgY29y
cmVjdCBkaXJlY3RvcnkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9T
LmV4cDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBsaWJ3
ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wNy0xNyAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldml3ZWQgYnVpbGQgZml4IGFm
dGVyIHIyNjU1OTI7IHJhdGhlciB0aGFuIHJlbW92ZSB0aGUgZGVhZCBjb2RlIGNhdXNpbmcgbGlu
ayBlcnJvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMzdjZDRhNGM4YzYwYmM0ZjViOTkxZGQyOGJkMDIxOThj
ZjQzMmE4Li43Mzc4Mjc4MTVlNDIyYzVlNTllMGIxZWE0ZGU2MTA5YmJhNDlhNGEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQ0IEBACisyMDIwLTA3LTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIGV4cGVyaW1lbnRhbCBNU0UgV2ViTSBw
YXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NDUyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgeWV0IHBhcnNlIGFjdHVhbCBtZWRpYSBzYW1wbGVz
OyBhcyBvZiB5ZXQgaXQgb25seSBwYXJzZXMgYXVkaW8gYW5kIHZpZGVvCisgICAgICAgIHRyYWNr
IGluZm9ybWF0aW9uLiBNZWRpYSBzYW1wbGUgcGFyc2luZyBpcyB1cGNvbWluZy4KKworICAgICAg
ICBBZGQgYW4gZXhwZXJpbWVudGFsIE1TRSBXZWJNIHBhcnNlciB0byBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy4gVGhpcyB3aWxsIHJlcXVpcmUgZXh0ZW5zaXZlIHJlZmFjdG9yaW5nCisgICAg
ICAgIG9mIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLCB0byBleHRyYWN0IG91dCB0aGUgcGFy
c2VyIGludG8gYSBuZXcsIHZpcnR1YWxpemVkIGNsYXNzLiBUaGlzIG5ldyBwYXJzZXIgY2FuCisg
ICAgICAgIHRha2UgYWR2YW50YWdlIG9mIG5ldyBDKys+MTEgZmVhdHVyZXMgc3VjaCBhcyBsYW1i
ZGFzIHRvIGNsZWFuIHVwIHNvbWUgcHJvYmxlbWF0aWMgZXhpc3RpbmcgY29kZS4gVGhlIG5ldwor
ICAgICAgICB2aXJ0dWFsaXplZCBTb3VyY2VCdWZmZXJQYXJzZXIgY2xhc3MgdXNlcyBwYXNzZWQt
aW4gRnVuY3Rpb24gb2JqZWN0cywgcmF0aGVyIHRoYW4gcHVyZS12aXJ0dWFsIENsaWVudCBjbGFz
c2VzCisgICAgICAgIHRvIG5vdGlmeSBpdCdzIHBhcmVudCBvYmplY3Qgd2hlbiB0aGUgcGFyc2Vy
IGVuY291bnRlcnMgaW5pdGlhbGl6YXRpb24tIG9yIG1lZGlhLWRhdGEuCisKKyAgICAgICAgQmVj
YXVzZSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyB3aWxsIG5vdyBoYXZlIHRvIGRlYWwgd2l0
aCBBdWRpb1RyYWNrUHJpdmF0ZSBhbmQgVmlkZW9UcmFja1ByaXZhdGUgb2JqZWN0cworICAgICAg
ICB0aGF0IGFyZSBub3QgbmVjZXNzYXJpbHkgQXVkaW8tIGFuZCBWaWRlb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyBzdWJjbGFzc2VzLCBtb3ZlIHRob3NlIGNsYXNzZXMgbm90aWZpY2F0
aW9uCisgICAgICAgIGZlYXR1cmVzIHVwIGludG8gQXVkaW8tIGFuZCBWaWRlb1RyYWNrUHJpdmF0
ZSwgYWdhaW4gdXNpbmcgYSBGdW5jdGlvbiBvYmplY3QgcmF0aGVyIHRoYW4gYSBjbGllbnQgY2xh
c3MuCisKKyAgICAgICAgQWRkIGEgbmV3IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0gYW5kIGFzc29j
aWF0ZWQgQXVkaW9UcmFja1ByaXZhdGVXZWJNIGFuZCBWaWRlb1RyYWNrUHJpdmF0ZVdlYm0gY2xh
c2Vzcywgd2hpY2gKKyAgICAgICAgdXNlIGxpYndlYm0gdmlhIGxpYndlYnJ0YyB0byBwYXJzZSBh
cHBlbmRlZCBidWZmZXJzLgorCisgICAgICAgIFRoaXMgZWFybHkgaW1wbGVtZW50YXRpb24gaXMg
bm90IHlldCBhYmxlIHRvIHBhc3MgdGhlIFdlYk0gV1BUIG1lZGlhLXNvdXJjZS8gdGVzdHMsIGFz
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDCisgICAgICAgIHdpbGwgb25seSBjYXVzZSBhICJy
ZXNpemUiIGV2ZW50IHRvIGJlIGZpcmVkIHdoZW4gYSBNZWRpYVNhbXBsZSBpcyBlbnF1ZXVlZCBv
ciBkZWNvZGluZy4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2V0V2ViTVBhcnNlckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6d2ViTVBhcnNlckVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Ry
YWNrUHJpdmF0ZTo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJp
dmF0ZTo6c2V0RW5hYmxlZENoYW5nZWRDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQ
cml2YXRlOjpzZXRTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0
ZTo6c2V0U2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0RW5hYmxlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OnN1cHBvcnRzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5oOiBBZGRlZC4KKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbTogQWRkZWQu
CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIGluaXRXaXRoUGFyc2Vy
OnBhcmVudDpdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgZGVh
bGxvY10pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBpbnZhbGlk
YXRlXSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbURh
dGFQYXJzZXI6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldDpdKToKKyAgICAgICAgKC1bV2ViQVZT
dHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3RyZWFtRGF0YVBhcnNlcjpkaWRQYXJzZVN0cmVhbURh
dGFBc0Fzc2V0OndpdGhEaXNjb250aW51aXR5Ol0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURh
dGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0
YVdpdGhFcnJvcjpdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIg
c3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlTWVkaWFEYXRhOmZvclRyYWNrSUQ6bWVkaWFUeXBl
OmZsYWdzOl0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJl
YW1EYXRhUGFyc2VyV2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0
YTpmb3JUcmFja0lEOl0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5l
ciBzdHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YTpmb3JUcmFja0lEOl0pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakM6OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OnNob3VsZFByb3Zp
ZGVNZWRpYWRhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakM6OnJlc2V0UGFyc2VyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldCk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRGYWlsVG9QYXJzZVN0cmVh
bURhdGFXaXRoRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElu
aXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjp+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRFbmNv
dW50ZXJFcnJvckR1cmluZ1BhcnNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRL
ZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmRDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpyZXNldFBhcnNlclN0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkZXN0cm95UGFyc2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjbGVhclRyYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFu
Z2VTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpwYXJzZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmF0dGVtcHRUb0RlY3J5cHQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGVXZWJNOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
a1ByaXZhdGVXZWJNOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk0pOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9UcmFja1ByaXZhdGVXZWJNOjppZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1RyYWNrUHJpdmF0ZVdlYk06OmxhYmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
VHJhY2tQcml2YXRlV2ViTTo6bGFuZ3VhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGVXZWJNOjp0cmFja0luZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OmlzQ29udGVudFR5cGVTdXBw
b3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0RGlkUGFyc2VJ
bml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXI6OnNldERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0RGlkUHJvdmlkZU1lZGlhRGF0
YUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0V2ls
bFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OnNldERpZFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNXZWJtUGFyc2VyQXZhaWxhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OnN1cHBvcnRlZFdlYk1Db2RlY3MpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmFwcGVuZERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6Zmx1c2hQZW5k
aW5nTWVkaWFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lE
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnJlc2V0UGFyc2Vy
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FbGVt
ZW50QmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25F
Ym1sKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uU2VnbWVu
dEJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uSW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkNsdXN0ZXJC
ZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblRyYWNr
RW50cnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpzdGF0dXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6dHlwZSBjb25zdCk6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
dmFsaWRhdGVWUFBhcmFtZXRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFja1ByaXZhdGVXZWJNOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFj
a1ByaXZhdGVXZWJNOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk0pOgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFja1ByaXZhdGVXZWJNOjppZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b1RyYWNrUHJpdmF0ZVdlYk06OmxhYmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
VHJhY2tQcml2YXRlV2ViTTo6bGFuZ3VhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFja1ByaXZhdGVXZWJNOjp0cmFja0luZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaDogQWRkZWQuCisKIDIwMjAt
MDctMTggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIGZpeCBidWlsZCB3YXJuaW5ncyBpbiB0aGUgV2ViWFIgYmFja2VuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAxM2M1YjFlYmE4MzNmYjdhNmQxNjRjN2NhOTdhNTBkNDUxYTU5NDMwLi40M2I4ODc4
OTFhOWNiYzgyMDI3MzIxMmU5ZDc2NGM2NjFmYTc2NDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDIwLTA3LTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAg
ICAgIFtDb2NvYV0gQWRkIGV4cGVyaW1lbnRhbCBNU0UgV2ViTSBwYXJzZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDUyOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhbiBFeHBlcmltZW50YWwg
c2V0dGluZyB0byBlbmFibGUgdGhlIE1TRSBXZWJNIHBhcnNlciAob2ZmIGJ5IGRlZmF1bHQpLgor
CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisKIDIwMjAtMDQtMzAgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIGRhdGEgY29w
aWVzIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgY3VzdG9tIFVSTCBzY2hlbWUgaGFuZGxlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xp
YndlYnJ0Yy5pT1MuZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRp
b25zL2xpYndlYnJ0Yy5pT1MuZXhwCmluZGV4IGQwNGE5MTk2ODZlOWNjODk2N2E4YWFkMDQ2OWM2
ODU1NDY1NzI3OWIuLmE3YmNjN2I1MTRjM2JlNjNhYWRjYTBiMjEyNzFmODE1ZDkwNTQzMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3
ZWJydGMuaU9TLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJh
dGlvbnMvbGlid2VicnRjLmlPUy5leHAKQEAgLTI4MCwxMyArMjgwLDIwIEBAIF9fWlRWTjR3ZWJt
MTJCdWZmZXJSZWFkZXJFCiBfX1pUVk40d2VibThDYWxsYmFja0UKIF9fWk40d2VibThDYWxsYmFj
azEwT25CbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRQogX19aTjR3
ZWJtOENhbGxiYWNrMTBPbkN1ZVBvaW50RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU184Q3Vl
UG9pbnRFCitfX1pONHdlYm04Q2FsbGJhY2sxMk9uQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1l
dGFkYXRhRVJLTlNfNUJsb2NrRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPbkNs
dXN0ZXJFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzdDbHVzdGVyRQogX19aTjR3ZWJt
OENhbGxiYWNrMTJPblNlZ21lbnRFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUUKIF9fWk40d2Vi
bThDYWxsYmFjazEyT25UcmFja0VudHJ5RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMFRy
YWNrRW50cnlFCitfX1pONHdlYm04Q2FsbGJhY2sxNE9uQ2x1c3RlckJlZ2luRVJLTlNfMTVFbGVt
ZW50TWV0YWRhdGFFUktOU183Q2x1c3RlckVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFj
azE0T25FZGl0aW9uRW50cnlFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEyRWRpdGlvbkVu
dHJ5RQorX19aTjR3ZWJtOENhbGxiYWNrMTRPbkVsZW1lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1l
dGFkYXRhRVBOU182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrMTRPblNlZ21lbnRCZWdpbkVS
S05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTVP
bkJsb2NrR3JvdXBFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEwQmxvY2tHcm91cEUK
IF9fWk40d2VibThDYWxsYmFjazE2T25TaW1wbGVCbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFk
YXRhRVJLTlNfMTFTaW1wbGVCbG9ja0UKIF9fWk40d2VibThDYWxsYmFjazE2T25Vbmtub3duRWxl
bWVudEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182UmVhZGVyRVB5CitfX1pONHdlYm04Q2Fs
bGJhY2sxN09uQmxvY2tHcm91cEJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rp
b25FCitfX1pONHdlYm04Q2FsbGJhY2sxOE9uU2ltcGxlQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVu
dE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVCbG9ja0VQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxs
YmFjazRTa2lwRVBOU182UmVhZGVyRVB5CiBfX1pONHdlYm04Q2FsbGJhY2s1T25UYWdFUktOU18x
NUVsZW1lbnRNZXRhZGF0YUVSS05TXzNUYWdFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25FYm1sRVJL
TlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU180RWJtbEUKIF9fWk40d2VibThDYWxsYmFjazZPbklu
Zm9FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzRJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhw
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5p
T1NzaW0uZXhwCmluZGV4IGQwNGE5MTk2ODZlOWNjODk2N2E4YWFkMDQ2OWM2ODU1NDY1NzI3OWIu
LmE3YmNjN2I1MTRjM2JlNjNhYWRjYTBiMjEyNzFmODE1ZDkwNTQzMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2lt
LmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGli
d2VicnRjLmlPU3NpbS5leHAKQEAgLTI4MCwxMyArMjgwLDIwIEBAIF9fWlRWTjR3ZWJtMTJCdWZm
ZXJSZWFkZXJFCiBfX1pUVk40d2VibThDYWxsYmFja0UKIF9fWk40d2VibThDYWxsYmFjazEwT25C
bG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRQogX19aTjR3ZWJtOENh
bGxiYWNrMTBPbkN1ZVBvaW50RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU184Q3VlUG9pbnRF
CitfX1pONHdlYm04Q2FsbGJhY2sxMk9uQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRh
RVJLTlNfNUJsb2NrRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPbkNsdXN0ZXJF
bmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzdDbHVzdGVyRQogX19aTjR3ZWJtOENhbGxi
YWNrMTJPblNlZ21lbnRFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUUKIF9fWk40d2VibThDYWxs
YmFjazEyT25UcmFja0VudHJ5RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMFRyYWNrRW50
cnlFCitfX1pONHdlYm04Q2FsbGJhY2sxNE9uQ2x1c3RlckJlZ2luRVJLTlNfMTVFbGVtZW50TWV0
YWRhdGFFUktOU183Q2x1c3RlckVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFjazE0T25F
ZGl0aW9uRW50cnlFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEyRWRpdGlvbkVudHJ5RQor
X19aTjR3ZWJtOENhbGxiYWNrMTRPbkVsZW1lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRh
RVBOU182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrMTRPblNlZ21lbnRCZWdpbkVSS05TXzE1
RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTVPbkJsb2Nr
R3JvdXBFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEwQmxvY2tHcm91cEUKIF9fWk40
d2VibThDYWxsYmFjazE2T25TaW1wbGVCbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJL
TlNfMTFTaW1wbGVCbG9ja0UKIF9fWk40d2VibThDYWxsYmFjazE2T25Vbmtub3duRWxlbWVudEVS
S05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182UmVhZGVyRVB5CitfX1pONHdlYm04Q2FsbGJhY2sx
N09uQmxvY2tHcm91cEJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rpb25FCitf
X1pONHdlYm04Q2FsbGJhY2sxOE9uU2ltcGxlQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFk
YXRhRVJLTlNfMTFTaW1wbGVCbG9ja0VQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxsYmFjazRT
a2lwRVBOU182UmVhZGVyRVB5CiBfX1pONHdlYm04Q2FsbGJhY2s1T25UYWdFUktOU18xNUVsZW1l
bnRNZXRhZGF0YUVSS05TXzNUYWdFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25FYm1sRVJLTlNfMTVF
bGVtZW50TWV0YWRhdGFFUktOU180RWJtbEUKIF9fWk40d2VibThDYWxsYmFjazZPbkluZm9FUktO
U18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzRJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCmlu
ZGV4IDhkODViNWI4YjM3NTRhZGRlZmRlN2MyNGYyZjIwYTQ2NTgzNjZhY2QuLmY4Y2M5MTMxNmJj
ZGMwOTYwNTgyYjNmM2NhNDE2NWIyZWFjMjcyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAK
QEAgLTI3OCwxMyArMjc4LDIwIEBAIF9fWlRWTjR3ZWJtMTJCdWZmZXJSZWFkZXJFCiBfX1pUVk40
d2VibThDYWxsYmFja0UKIF9fWk40d2VibThDYWxsYmFjazEwT25CbG9ja0VuZEVSS05TXzE1RWxl
bWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRQogX19aTjR3ZWJtOENhbGxiYWNrMTBPbkN1ZVBvaW50
RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU184Q3VlUG9pbnRFCitfX1pONHdlYm04Q2FsbGJh
Y2sxMk9uQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRVBOU182
QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPbkNsdXN0ZXJFbmRFUktOU18xNUVsZW1lbnRN
ZXRhZGF0YUVSS05TXzdDbHVzdGVyRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPblNlZ21lbnRFbmRF
UktOU18xNUVsZW1lbnRNZXRhZGF0YUUKIF9fWk40d2VibThDYWxsYmFjazEyT25UcmFja0VudHJ5
RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMFRyYWNrRW50cnlFCitfX1pONHdlYm04Q2Fs
bGJhY2sxNE9uQ2x1c3RlckJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU183Q2x1c3Rl
ckVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFjazE0T25FZGl0aW9uRW50cnlFUktOU18x
NUVsZW1lbnRNZXRhZGF0YUVSS05TXzEyRWRpdGlvbkVudHJ5RQorX19aTjR3ZWJtOENhbGxiYWNr
MTRPbkVsZW1lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQorX19a
TjR3ZWJtOENhbGxiYWNrMTRPblNlZ21lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBO
U182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTVPbkJsb2NrR3JvdXBFbmRFUktOU18xNUVs
ZW1lbnRNZXRhZGF0YUVSS05TXzEwQmxvY2tHcm91cEUKIF9fWk40d2VibThDYWxsYmFjazE2T25T
aW1wbGVCbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVCbG9ja0UK
IF9fWk40d2VibThDYWxsYmFjazE2T25Vbmtub3duRWxlbWVudEVSS05TXzE1RWxlbWVudE1ldGFk
YXRhRVBOU182UmVhZGVyRVB5CitfX1pONHdlYm04Q2FsbGJhY2sxN09uQmxvY2tHcm91cEJlZ2lu
RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rpb25FCitfX1pONHdlYm04Q2FsbGJhY2sx
OE9uU2ltcGxlQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVC
bG9ja0VQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxsYmFjazRTa2lwRVBOU182UmVhZGVyRVB5
CiBfX1pONHdlYm04Q2FsbGJhY2s1T25UYWdFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzNU
YWdFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25FYm1sRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktO
U180RWJtbEUKIF9fWk40d2VibThDYWxsYmFjazZPbkluZm9FUktOU18xNUVsZW1lbnRNZXRhZGF0
YUVSS05TXzRJbmZvRQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL2xp
YndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRkYTczYTFi
ZmI0MTAzYTFmN2FhNDE0MzQ5ZmUwYWZhZWJjMGM4YWEuLjIyNjgyYmM1Yzk5NjY2Yjg3ZGE0ZDFk
MWQwZjZmNmI2NmFmZjBiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4
NTMsMTYgKzM4NTMsMTYgQEAKIAkJNUNGRDUzOTIxRTRCRDNBMzAwNDgyOTA4IC8qIHJvd19uZW9u
NjQuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZE
NTM4QTFFNEJEM0EzMDA0ODI5MDggLyogcm93X25lb242NC5jYyAqLzsgfTsKIAkJNUNGRDUzOTMx
RTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb24uY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZENTM4QjFFNEJEM0EzMDA0ODI5MDggLyogc2NhbGVf
bmVvbi5jYyAqLzsgfTsKIAkJNUNGRDUzOTQxRTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb242
NC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRkQ1
MzhDMUU0QkQzQTMwMDQ4MjkwOCAvKiBzY2FsZV9uZW9uNjQuY2MgKi87IH07Ci0JCUNERUJCNEFD
MjRDMDE5OUQwMEFEQkQ0NCAvKiB3ZWJtX3BhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MDgyNEMwMTkxQTAwQURCRDQ0IC8qIHdlYm1f
cGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9Owot
CQlDREVCQjRBRDI0QzAxOTlEMDBBREJENDQgLyogYnVmZmVyX3JlYWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MEQyNEMwMTkxQTAwQURC
RDQ0IC8qIGJ1ZmZlcl9yZWFkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07Ci0JCUNERUJCNEFFMjRDMDE5OUQwMEFEQkQ0NCAvKiBpZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MEEyNEMwMTkxQTAw
QURCRDQ0IC8qIGlkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9
OyB9OwotCQlDREVCQjRBRjI0QzAxOTlEMDBBREJENDQgLyogaXN0cmVhbV9yZWFkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDA5MjRDMDE5
MUEwMEFEQkQ0NCAvKiBpc3RyZWFtX3JlYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjAyNEMwMTk5RDAwQURCRDQ0IC8qIGRvbV90
eXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RF
QkI0MEIyNEMwMTkxQTAwQURCRDQ0IC8qIGRvbV90eXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjEyNEMwMTk5RDAwQURCRDQ0IC8q
IGVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENERUJCNDBDMjRDMDE5MUEwMEFEQkQ0NCAvKiBlbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCMjI0QzAxOTlEMDBBREJENDQg
Lyogc3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREVCQjQwNjI0QzAxOTFBMDBBREJENDQgLyogc3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCMzI0QzAxOTlEMDBBREJENDQg
LyogcmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREVCQjQwNTI0QzAxOTFBMDBBREJENDQgLyogcmVhZGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCNDI0QzAxOTlEMDBBREJENDQg
LyogZmlsZV9yZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENERUJCNDA3MjRDMDE5MUEwMEFEQkQ0NCAvKiBmaWxlX3JlYWRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjUyNEMwMTk5
RDAwQURCRDQ0IC8qIGNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREVCQjQwRTI0QzAxOTFBMDBBREJENDQgLyogY2FsbGJhY2suaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCUNERUJCNEFDMjRD
MDE5OUQwMEFEQkQ0NCAvKiB3ZWJtX3BhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MDgyNEMwMTkxQTAwQURCRDQ0IC8qIHdlYm1fcGFy
c2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
Q0RFQkI0QUQyNEMwMTk5RDAwQURCRDQ0IC8qIGJ1ZmZlcl9yZWFkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDBEMjRDMDE5MUEwMEFEQkQ0
NCAvKiBidWZmZXJfcmVhZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQ0RFQkI0QUUyNEMwMTk5RDAwQURCRDQ0IC8qIGlkLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwQTI0QzAxOTFBMDBB
REJENDQgLyogaWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlDREVCQjRBRjI0QzAxOTlEMDBBREJENDQgLyogaXN0cmVhbV9yZWFkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDA5MjRDMDE5
MUEwMEFEQkQ0NCAvKiBpc3RyZWFtX3JlYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUNERUJCNEIwMjRDMDE5OUQwMEFEQkQ0NCAvKiBkb21f
dHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
RUJCNDBCMjRDMDE5MUEwMEFEQkQ0NCAvKiBkb21fdHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREVCQjRCMTI0QzAxOTlEMDBBREJENDQg
LyogZWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RFQkI0MEMyNEMwMTkxQTAwQURCRDQ0IC8qIGVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREVCQjRCMjI0QzAxOTlEMDBBREJE
NDQgLyogc3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREVCQjQwNjI0QzAxOTFBMDBBREJENDQgLyogc3RhdHVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RFQkI0QjMyNEMwMTk5RDAwQURC
RDQ0IC8qIHJlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RFQkI0MDUyNEMwMTkxQTAwQURCRDQ0IC8qIHJlYWRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNERUJCNEI0MjRDMDE5OUQwMEFE
QkQ0NCAvKiBmaWxlX3JlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RFQkI0MDcyNEMwMTkxQTAwQURCRDQ0IC8qIGZpbGVfcmVhZGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RFQkI0QjUy
NEMwMTk5RDAwQURCRDQ0IC8qIGNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwRTI0QzAxOTFBMDBBREJENDQgLyogY2FsbGJhY2su
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDREVC
QjRCNjI0QzAxOUM0MDBBREJENDQgLyogdW5rbm93bl9wYXJzZXIuY2MgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQ2NDI0QzAxOTFBMDBBREJENDQg
LyogdW5rbm93bl9wYXJzZXIuY2MgKi87IH07CiAJCUNERUJCNEI3MjRDMDE5QzQwMEFEQkQ0NCAv
KiBtYXN0ZXJfcGFyc2VyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RFQkI0NkYyNEMwMTkxQTAwQURCRDQ0IC8qIG1hc3Rlcl9wYXJzZXIuY2MgKi87
IH07CiAJCUNERUJCNEI4MjRDMDE5QzQwMEFEQkQ0NCAvKiBibG9ja19wYXJzZXIuY2MgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQ3NjI0QzAxOTFB
MDBBREJENDQgLyogYmxvY2tfcGFyc2VyLmNjICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggMWQ3ZjIwOTg2N2MxZDRlMGE0Mjc0Njk3NjU1ZjhkMWIxMzZkYWQwZS4uZGMzZmYyNTg0
MWE5MjUzM2JlZThkMDU4MTYxOGFiMjBjNzBjOTlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CkBAIC0yOTEsNiArMjkxLDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIEBuby0KIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbSBAbm8tdW5pZnkK
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBAbm8tdW5pZnkKK3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gQG5vLXVuaWZ5
CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9i
akMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRl
b1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gQG5v
LXVuaWZ5CkBAIC0zMzMsNiArMzM0LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNH
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlv
VHJhY2tQcml2YXRlV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2Eu
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zsb2F0UmVjdENvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTM0OCw2ICszNTAsOCBAQCBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVj
dENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29h
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbQpAQCAtMzU2
LDYgKzM2MCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFz
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24u
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYkdQVUxheWVyLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1Ry
YWNrUHJpdmF0ZVdlYk0uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vz
c2lvblZULm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ODZmY2RlYzA1
ODYwMjIyYmYwMzQwMmE3MTZhZDJmNDZiMDBjNTc4Li44MmZkZWVjZGVkOGJhYjZmYjA5ZWIyZTQy
ZDY2NmVhYTQyMjUyZDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MjY3LDYgKzQyNjcsNyBAQAogCQlDREY2NUNDQTE0NUI0
NDg4MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY2NUNDOTE0NUI0M0E3MDBDNEM3QUEg
LyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RGNzQ4M0YxOEZFQkNFQzAwMDZFQ0MwIC8qIEdyaWRQ
b3NpdGlvbnNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RGNzQ4M0QxOEZFQkNFQzAwMDZFQ0MwIC8qIEdyaWRQb3NpdGlvbnNSZXNvbHZl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNE
Rjc1NkEzMjE1QzI5RTkwMEVGQ0I1MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNzU2QTEyMTVD
MjlFOTAwRUZDQjUwIC8qIEpTTWVkaWFLZXlFbmNyeXB0aW9uU2NoZW1lLmggKi87IH07CisJCUNE
Rjk5NEZEMjRDMTVGRTMwMDJFQTA2MiAvKiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGOTk0RkIyNEMx
MkE2QTAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gKi87IH07CiAJCUNE
RkMzNjA2MThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERkMzNjA0MThDQTYxQzIw
MDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTA1N0ZBNjEyMjA3MzExMDBBNDc2RDUgLyog
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRTA1N0ZBNDEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
MDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKQEAgLTE0MTY2LDYgKzE0MTY3LDgg
QEAKIAkJQ0Q4QzZDMjkyMkZEREE5MTAwQTcyMEFCIC8qIEpTUmVtb3RlUGxheWJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNSZW1vdGVQbGF5YmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDhEMzA2RDIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDRE1Mb2dnaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOEQzMDZF
MjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENE
TUxvZ2dpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDhGNjY3MDI0QzBG
MjA4MDAwQzQyMUMgLyogU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0Q4RjY2NzIyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDkyRjUwRjIyNjBGRkVFMDBGODdCQjMgLyogRG9jdW1lbnRGdWxs
c2NyZWVuLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBEb2N1bWVudEZ1bGxzY3JlZW4uaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDkyRjUxMDIyNjBGRkVFMDBGODdCQjMgLyogRG9jdW1lbnRGdWxsc2Ny
ZWVuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50RnVsbHNjcmVlbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDkyRjUxNjIyNjEwMzgyMDBGODdCQjMgLyogRnVsbHNjcmVlbk1h
bmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVsbHNjcmVlbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MzQ2LDYgKzE0MzQ5LDggQEAKIAkJQ0RFOEI1RUYxQTY5Nzc4
QjAwQjRCNjZBIC8qIExlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTdDODIxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxT
Y3JlZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyRnVsbFNjcmVl
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBN0M4MzEyNzYyMzA0MDBCODQ2
REQgLyogUmVuZGVyRnVsbFNjcmVlbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW5kZXJGdWxsU2NyZWVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RFQjNENzIyNEM0MUE2RTAwMUZCRUVGIC8qIFNvdXJjZUJ1ZmZlclBhcnNlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTb3VyY2VCdWZmZXJQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREVCM0Q3MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFy
c2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZUJ1ZmZlclBhcnNlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDREVDQTg5ODFFREY0NDdEMDBEQ0IwOEIgLyogQVZBc3NldFRyYWNr
VXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVZBc3NldFRyYWNrVXRpbGl0aWVz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVDQTg5OTFFREY0NDdEMDBEQ0Iw
OEIgLyogQVZBc3NldFRyYWNrVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFWQXNzZXRUcmFj
a1V0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVFMzkzNjE3OTc0
MjU5MDAxRDc1ODAgLyogUHVibGljVVJMTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQdWJsaWNVUkxNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE0Mzg0LDYgKzE0Mzg5LDEyIEBACiAJCUNERjc1NjlFMjE1QzI4NUUwMEVG
Q0I1MCAvKiBNZWRpYUtleUVuY3J5cHRpb25TY2hlbWUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhS2V5RW5jcnlw
dGlvblNjaGVtZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERjc1NkEwMjE1
QzI5RTgwMEVGQ0I1MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERjc1NkExMjE1QzI5RTkwMEVGQ0I1
MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREY5OTRGQTI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjk5NEZCMjRDMTJBNkEwMDJFQTA2MiAv
KiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RGOTk0RkUyNEMyODEzNjAwMkVBMDYyIC8qIFZpZGVvVHJhY2tQcml2YXRlV2ViTS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RGOTk0RkYyNEMyODEzNjAwMkVBMDYyIC8qIFZpZGVvVHJhY2tQcml2YXRlV2Vi
TS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY5OTUwMDI0QzI4MTQ5MDAyRUEwNjIgLyogQXVk
aW9UcmFja1ByaXZhdGVXZWJNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRlV2Vi
TS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY5OTUwMTI0QzI4MTQ5MDAyRUEw
NjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlv
VHJhY2tQcml2YXRlV2ViTS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERkMz
NjAxMThDQTYxNjMwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERkMzNjAyMThDQTYxNjMwMDI2RTU2RiAvKiBS
ZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNERkMzNjAzMThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlz
dGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ29t
bWFuZExpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1ODcxLDYg
KzI1ODgyLDggQEAKIAkJQjUzMjBENjgxMjJBMjRFOTAwMkQxNDQwIC8qIGNvY29hICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDREY5OTUwMTI0QzI4MTQ5
MDAyRUEwNjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcCAqLywKKwkJCQlDREY5OTUwMDI0
QzI4MTQ5MDAyRUEwNjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmggKi8sCiAJCQkJRjQ4RDJB
QTMyMTU5NzQwRDAwQzY3NTJCIC8qIENvbG9yQ29jb2EuaCAqLywKIAkJCQlGNDhEMkFBNDIxNTk3
NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5tbSAqLywKIAkJCQlCMjc1MzU0QzBCMDUzODE0MDAy
Q0U2NEYgLyogRmxvYXRSZWN0Q29jb2EubW0gKi8sCkBAIC0yNTg5MiwxMCArMjU5MDUsMTYgQEAK
IAkJCQlBRDlGRjZFMDE5MDgzOTFEMDAzQjYxRTAgLyogSU9TdXJmYWNlUG9vbENvY29hLm1tICov
LAogCQkJCUNEQzQ4QUM4MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuY3BwICovLAogCQkJCUNEQzQ4QUM3MjE0OUNGMkEwMDI0RkQ1OSAvKiBN
ZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuaCAqLywKKwkJCQlDREVCM0Q3MjI0
QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmNwcCAqLywKKwkJCQlDREVCM0Q3
MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmggKi8sCisJCQkJQ0Q4RjY2
NzAyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwICovLAorCQkJ
CUNEOEY2NjcyMjRDMEYyMDgwMDBDNDIxQyAvKiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmggKi8s
CiAJCQkJRTRFOEI0RUQyMTZCNzlGNDAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0LmNwcCAqLywKIAkJCQlFNEU4QjRFQTIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQuaCAqLywKIAkJCQk1MjY3MjRGMjFDQjJGREY2MDA3NTk3NEQgLyogVGV4
dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5oICovLAogCQkJCTUyNjcyNEYxMUNCMkZERjYwMDc1
OTc0RCAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tICovLAorCQkJCUNERjk5NEZG
MjRDMjgxMzYwMDJFQTA2MiAvKiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwICovLAorCQkJCUNE
Rjk5NEZFMjRDMjgxMzYwMDJFQTA2MiAvKiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaCAqLywKIAkJ
CQlDRDZGRTVCNzI0QkNFNjQ1MDA5RkNEQTQgLyogVlA5VXRpbGl0aWVzQ29jb2EuaCAqLywKIAkJ
CQlDRDZGRTVCODI0QkNFNjQ1MDA5RkNEQTQgLyogVlA5VXRpbGl0aWVzQ29jb2EubW0gKi8sCiAJ
CQkJMkQzRUY0NDQxOTE3OTE1QzAwMDM0MTg0IC8qIFdlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJE
ZWxlZ2F0ZS5oICovLApAQCAtMjczODgsNiArMjc0MDcsOCBAQAogCQkJCUNEQzhCNUE1MTgwNDc0
RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmggKi8sCiAJCQkJQ0RDOEI1
QTQxODA0NzRGNzAwMTZFNjg1IC8qIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gKi8sCiAJ
CQkJN0EyOUY1NzExOEM2OTUxNDAwNEQwRjgxIC8qIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuaCAqLywKKwkJCQlDREY5OTRGQTI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5oICovLAorCQkJCUNERjk5NEZCMjRDMTJBNkEwMDJFQTA2MiAvKiBTb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLm1tICovLAogCQkJCUNEQzhCNUE5MTgwNDdGRjEwMDE2RTY4NSAv
KiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oICovLAogCQkJCUNEQzhCNUE4MTgwNDdGRjEw
MDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSAqLywKIAkJCQk1MkQ1QTE4
RTFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmggKi8sCkBAIC0zNDU5
OCw2ICszNDYxOSw3IEBACiAJCQkJMjZBQTBGOUUxOEQyQTE4QjAwNDE5MzgxIC8qIFNlbGVjdG9y
UHNldWRvRWxlbWVudFR5cGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NENThERkQxRjk1
NjVBODAwMTEyNzkxIC8qIFNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxMEE4
MUY5MDIyQTQwMDUxMDJDRSAvKiBTb2Z0TGlua0xpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQ0RGOTk0RkQyNEMxNUZFMzAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDREM4QjVBQTE4MDQ3RkYxMDAxNkU2ODUgLyogU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBODMzQzdDQTBBMkNG
MDZCMDBENTc2NjQgLyogU1ZHTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzE2OTJERDIy
M0QyM0FCRDAwNkU4OEY3IC8qIFN5c3RlbUJhdHRlcnkubW0gaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggMTFjMGE3ZjVk
OGY5YjRiNDJhODcxYjMzMTFlYWM0NDU5NzUzNjQyNy4uZDAxNzg0YzdhYTRiNzZkNmMzY2QyNTk3
OTIzMjRhNjA1MjlhMWY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgKQEAgLTM5MSw2ICszOTEsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaW5jcmVt
ZW50YWxQREZMb2FkaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5jcmVtZW50YWxQREZM
b2FkaW5nRW5hYmxlZDsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAg
IHZvaWQgc2V0V2ViTVBhcnNlckVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV93ZWJNUGFyc2Vy
RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgd2ViTVBhcnNlckVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX3dlYk1QYXJzZXJFbmFibGVkOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAg
ICAvLyBOZXZlciBpbnN0YW50aWF0ZS4KICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCk7CkBA
IC01ODQsNiArNTg5LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2luY3JlbWVudGFsUERGTG9h
ZGluZ0VuYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNF
KQorICAgIGJvb2wgbV93ZWJNUGFyc2VyRW5hYmxlZCB7IGZhbHNlIH07CisjZW5kaWYKKwogICAg
IGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVzdHJveWVkPFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM+
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVk
aW9UcmFja1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlv
VHJhY2tQcml2YXRlLmgKaW5kZXggN2ZhZTIzZWY1ZGM0Mjk5ZThmMDlmYzQxMmZjMTcxMDI2OGJl
YmMyMS4uYTlmODM2YmQxMTczZTIyZTBhZTgxNGExNzU0MmFhMjNhNDYxNWE0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0
ZUJhc2UuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogI2lmIEVOQUJMRShWSURFTykK
IApAQCAtNTUsNiArNTYsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7
CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5lbmFibGVkQ2hh
bmdlZChlbmFibGVkKTsKKyAgICAgICAgaWYgKG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjaykKKyAg
ICAgICAgICAgIG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjaygqdGhpcywgbV9lbmFibGVkKTsKICAg
ICB9CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KQEAg
LTY0LDYgKzY3LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzQmFja2VkQnlNZWRp
YVN0cmVhbVRyYWNrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHVzaW5nIEVuYWJs
ZWRDaGFuZ2VkQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEF1ZGlvVHJhY2tQcml2YXRlJiwgYm9v
bCBlbmFibGVkKT47CisgICAgdm9pZCBzZXRFbmFibGVkQ2hhbmdlZENhbGxiYWNrKEVuYWJsZWRD
aGFuZ2VkQ2FsbGJhY2smJiBjYWxsYmFjaykgeyBtX2VuYWJsZWRDaGFuZ2VkQ2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKTsgfQorCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29u
c3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkF1ZGlvVHJh
Y2tQcml2YXRlIjsgfQogI2VuZGlmCkBAIC03NCw2ICs4MCw3IEBAIHByb3RlY3RlZDoKIHByaXZh
dGU6CiAgICAgQXVkaW9UcmFja1ByaXZhdGVDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9Owog
ICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2UgfTsKKyAgICBFbmFibGVkQ2hhbmdlZENhbGxiYWNr
IG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJp
dmF0ZS5oCmluZGV4IDcxOGQ4MGUzNDUyYzQ3ZmVlZjQyNjhmMjllM2EyZTg3YmI0ZGNhZDMuLjBj
NDEzYzJkZGY1ZDlkYTJhMTViMTEzNWMwOGU1MTA4NTJiODAyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaApAQCAtMjgs
NiArMjgsNyBAQAogI2lmIEVOQUJMRShWSURFTykKIAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZUJh
c2UuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00OCw2ICs0OSw4IEBAIHB1YmxpYzoKICAgICAgICAgbV9zZWxlY3RlZCA9IHNlbGVjdGVk
OwogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+c2VsZWN0ZWRD
aGFuZ2VkKG1fc2VsZWN0ZWQpOworICAgICAgICBpZiAobV9zZWxlY3RlZENoYW5nZWRDYWxsYmFj
aykKKyAgICAgICAgICAgIG1fc2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2soKnRoaXMsIG1fc2VsZWN0
ZWQpOwogICAgIH0KICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCB7IHJldHVybiBt
X3NlbGVjdGVkOyB9CiAKQEAgLTU4LDEyICs2MSwxNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgY2hh
ciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlZpZGVvVHJhY2tQcml2YXRl
IjsgfQogI2VuZGlmCiAKKyAgICB1c2luZyBTZWxlY3RlZENoYW5nZWRDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoVmlkZW9UcmFja1ByaXZhdGUmLCBib29sIHNlbGVjdGVkKT47CisgICAgdm9pZCBz
ZXRTZWxlY3RlZENoYW5nZWRDYWxsYmFjayhTZWxlY3RlZENoYW5nZWRDYWxsYmFjayYmIGNhbGxi
YWNrKSB7IG1fc2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQor
CisKIHByb3RlY3RlZDoKICAgICBWaWRlb1RyYWNrUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAogcHJp
dmF0ZToKICAgICBWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07
CiAgICAgYm9vbCBtX3NlbGVjdGVkIHsgZmFsc2UgfTsKKyAgICBTZWxlY3RlZENoYW5nZWRDYWxs
YmFjayBtX3NlbGVjdGVkQ2hhbmdlZENhbGxiYWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwCmluZGV4IGMxY2IxYTRkMzU2MTI1ZDk0N2Rl
ZmZjMjdmNTlmY2EwYzliNDE4NDEuLmJjMTM5Nzc5N2JhZGE4YTQ3NTliZjUyZjlhNTQ2M2IyZDY0
MWQ3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAKQEAgLTMzLDkgKzMzLDggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFj
aywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKK0F1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhB
VkFzc2V0VHJhY2sqIHRyYWNrKQogICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbD4odHJhY2spKQotICAgICwgbV9wYXJlbnQocGFyZW50KQogewogICAgIHJl
c2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQpAQCAtNjcsNyArNjYsNiBAQCB2b2lkIEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgQXVkaW9UcmFja1ByaXZhdGVBVkY6OnNldEVuYWJsZWQo
ZW5hYmxlZCk7Ci0gICAgbV9wYXJlbnQtPnRyYWNrRGlkQ2hhbmdlRW5hYmxlZCh0aGlzKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggOWJjNGYyNmMwNzM0OWYxNzc2ZjYwYmUw
ZGQxYzJhYmNkN2IzN2Q2Yi4uMTQ1NmMwMTZiYWUwM2I4NzhiNTBiZjU5OTI0ZmI0ZDlmMzUzMDE4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOwogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGVBVkYgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKQogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+
IGNyZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyog
cGFyZW50KQorICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM+IGNyZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2ssIHBh
cmVudCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyh0cmFjaykpOwogICAgIH0KIAogICAgIHZvaWQgc2V0RW5hYmxlZChi
b29sKSBmaW5hbDsKQEAgLTUyLDEyICs1MiwxMSBAQCBwdWJsaWM6CiAgICAgaW50IHRyYWNrSUQo
KSB7IHJldHVybiBtX3RyYWNrSUQ7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqLCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQyogcGFyZW50KTsKKyAgICBleHBsaWNpdCBBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqKTsKICAgICAKICAgICB2b2lkIHJlc2V0UHJv
cGVydGllc0Zyb21UcmFjaygpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFWVHJhY2tQcml2YXRl
QVZGT2JqQ0ltcGw+IG1faW1wbDsKLSAgICBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogbV9w
YXJlbnQ7CiAgICAgaW50IG1fdHJhY2tJRDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5t
bQppbmRleCA2Njg5OTEwMWUxZmM1ODQwNzc3N2I2OWQ2MzkxOTE1ZmQ5YWRkZDIxLi44Yjk0MTUw
N2MwMzg4MWMwMjE2YjRlNzkyZTM5ZGIyNmUzNTdmZGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCkBAIC0yNTMsMjIgKzI1Myw3IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUoY29uCiAgICAg
aWYgKCFwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIAotICAgIFN0cmluZyBleHRlbmRlZFR5
cGUgPSBwYXJhbWV0ZXJzLnR5cGUucmF3KCk7Ci0gICAgU3RyaW5nIG91dHB1dENvZGVjcyA9IHBh
cmFtZXRlcnMudHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsK
LSAgICBpZiAoIW91dHB1dENvZGVjcy5pc0VtcHR5KCkgJiYgW1BBTDo6Z2V0QVZTdHJlYW1EYXRh
UGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dE1JTUVDb2Rl
Y1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFyYW1ldGVyOildKSB7Ci0gICAgICAgIG91dHB1
dENvZGVjcyA9IFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgb3V0cHV0TUlNRUNv
ZGVjUGFyYW1ldGVyRm9ySW5wdXRNSU1FQ29kZWNQYXJhbWV0ZXI6b3V0cHV0Q29kZWNzXTsKLSAg
ICAgICAgZXh0ZW5kZWRUeXBlID0gbWFrZVN0cmluZyhwYXJhbWV0ZXJzLnR5cGUuY29udGFpbmVy
VHlwZSgpLCAiOyBjb2RlY3M9XCIiLCBvdXRwdXRDb2RlY3MsICJcIiIpOwotICAgIH0KLQotICAg
IGF1dG8gc3VwcG9ydGVkID0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0
ZWQ7Ci0gICAgYXV0byYgc3RyZWFtRGF0YVBhcnNlckNhY2hlID0gQVZTdHJlYW1EYXRhUGFyc2Vy
TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKHN0cmVhbURhdGFQYXJzZXJDYWNo
ZS5pc0F2YWlsYWJsZSgpKQotICAgICAgICBzdXBwb3J0ZWQgPSBzdHJlYW1EYXRhUGFyc2VyQ2Fj
aGUuY2FuRGVjb2RlVHlwZShleHRlbmRlZFR5cGUpOwotICAgIGVsc2UgewotICAgICAgICBhdXRv
JiBhc3NldENhY2hlID0gQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpOwotICAgICAg
ICBpZiAoYXNzZXRDYWNoZS5pc0F2YWlsYWJsZSgpKQotICAgICAgICAgICAgc3VwcG9ydGVkID0g
YXNzZXRDYWNoZS5jYW5EZWNvZGVUeXBlKGV4dGVuZGVkVHlwZSk7Ci0gICAgfQorICAgIGF1dG8g
c3VwcG9ydGVkID0gU291cmNlQnVmZmVyUGFyc2VyOjppc0NvbnRlbnRUeXBlU3VwcG9ydGVkKHBh
cmFtZXRlcnMudHlwZSk7CiAKICAgICBpZiAoc3VwcG9ydGVkICE9IE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGU6OklzU3VwcG9ydGVkKQogICAgICAgICByZXR1cm4gc3VwcG9ydGVkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KaW5k
ZXggODI3OGUwNmE1MTIyOTdjN2VkMmIyNjkwZmZlMGNiNDI4ODg1ZmJmNi4uMjkzMjI3OTM5MTBl
YTU3ZjE4MWM5MjAxN2QzY2YzNjU3NzUyMTAzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCkBAIC0zNCw2ICszNCw3IEBACiAj
aW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaCIKICNpbXBvcnQgIk1lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oIgorI2ltcG9y
dCAiU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oIgogI2ltcG9ydCAiU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMuaCIKICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogI2ltcG9ydCA8d3RmL0Fs
Z29yaXRobXMuaD4KQEAgLTg1LDcgKzg2LDExIEBAIE1lZGlhU291cmNlUHJpdmF0ZTo6QWRkU3Rh
dHVzIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDCiAg
ICAgaWYgKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBl
KHBhcmFtZXRlcnMpID09IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVk
KQogICAgICAgICByZXR1cm4gTm90U3VwcG9ydGVkOwogCi0gICAgYXV0byBuZXdTb3VyY2VCdWZm
ZXIgPSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKHRoaXMpOworICAgIGF1dG8g
cGFyc2VyID0gU291cmNlQnVmZmVyUGFyc2VyOjpjcmVhdGUoY29udGVudFR5cGUpOworICAgIGlm
ICghcGFyc2VyKQorICAgICAgICByZXR1cm4gTm90U3VwcG9ydGVkOworCisgICAgYXV0byBuZXdT
b3VyY2VCdWZmZXIgPSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKHRoaXMsIHBh
cnNlci5yZWxlYXNlTm9uTnVsbCgpKTsKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAg
IG5ld1NvdXJjZUJ1ZmZlci0+c2V0Q0RNSW5zdGFuY2UobV9jZG1JbnN0YW5jZS5nZXQoKSk7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43NjMzYWYxYzhjNzJhY2QyZjQ4ZWM4NGU3MGEwZmU1OGQ4NmU1
ZjA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oCkBAIC0wLDAgKzEs
NzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCisKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXIuaCIKKyNpbmNsdWRlIDx3dGYvVHlw
ZUNhc3RzLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworT0JKQ19DTEFTUyBBVkFzc2V0
OworT0JKQ19DTEFTUyBBVlN0cmVhbURhdGFQYXJzZXI7CitPQkpDX0NMQVNTIE5TRGF0YTsKK09C
SkNfQ0xBU1MgTlNFcnJvcjsKK09CSkNfQ0xBU1MgV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVu
ZXI7CisKK3R5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZl
clJlZjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDIGZpbmFsIDogcHVibGljIFNvdXJjZUJ1ZmZlclBhcnNlciwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
TWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIGlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29u
c3QgQ29udGVudFR5cGUmKTsKKworICAgIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKTsKKyAg
ICB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCk7CisKKyAgICBBVlN0cmVhbURh
dGFQYXJzZXIqIHBhcnNlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyLmdldCgpOyB9CisKKyAg
ICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBUeXBlOjpBVkZPYmpDOyB9CisgICAgdm9pZCBh
cHBlbmREYXRhKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmLCBBcHBlbmRGbGFncyA9IEFwcGVuZEZs
YWdzOjpOb25lKSBmaW5hbDsKKyAgICB2b2lkIGZsdXNoUGVuZGluZ01lZGlhRGF0YSgpIGZpbmFs
OworICAgIHZvaWQgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoYm9vbCwgaW50
MzJfdCkgZmluYWw7CisgICAgYm9vbCBzaG91bGRQcm92aWRlTWVkaWFkYXRhRm9yVHJhY2tJRChp
bnQzMl90KSBmaW5hbDsKKyAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKKworICAg
IHZvaWQgZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChBVkFzc2V0Kik7CisgICAgdm9pZCBkaWRG
YWlsVG9QYXJzZVN0cmVhbURhdGFXaXRoRXJyb3IoTlNFcnJvciopOworICAgIHZvaWQgZGlkUHJv
dmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoaW50MzJfdCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJl
ZiwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkIGZsYWdzKTsKKyAgICB2b2lkIHdp
bGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKGlu
dDMyX3QgdHJhY2tJRCk7CisgICAgdm9pZCBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0
aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKE5TRGF0YSosIGludDMyX3QgdHJhY2tJRCk7CisKK3By
aXZhdGU6CisgICAgUmV0YWluUHRyPEFWU3RyZWFtRGF0YVBhcnNlcj4gbV9wYXJzZXI7CisgICAg
UmV0YWluUHRyPFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyPiBtX2RlbGVnYXRlOworICAg
IGJvb2wgbV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4dEluaXRpYWxpemF0aW9uU2VnbWVudCB7IGZh
bHNlIH07CisgICAgYm9vbCBtX3BhcnNlclN0YXRlV2FzUmVzZXQgeyBmYWxzZSB9OworfTsKKwor
fQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlciYgcGFyc2VyKSB7IHJldHVybiBwYXJzZXIudHlwZSgpID09IFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclBhcnNlcjo6VHlwZTo6QVZGT2JqQzsgfQorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NPVVJDRSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY4ODMyMjZjNWUzZDYyYzM4MTZiOWI0ZjExNzc2YzBmODk0ZjA3ZDMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0wLDAgKzEsMzM5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJTb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW1wb3J0ICJBVkFzc2V0TUlN
RVR5cGVDYWNoZS5oIgorI2ltcG9ydCAiQVZBc3NldFRyYWNrVXRpbGl0aWVzLmgiCisjaW1wb3J0
ICJBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLmgiCisjaW1wb3J0ICJBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIgorI2ltcG9ydCAiRm91ckNDLmgiCisjaW1wb3J0
ICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgor
I2ltcG9ydCAiTWVkaWFEZXNjcmlwdGlvbi5oIgorI2ltcG9ydCAiTWVkaWFTYW1wbGUuaCIKKyNp
bXBvcnQgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgorI2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIK
KyNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgorI2ltcG9ydCAiVGltZVJhbmdlcy5oIgorI2ltcG9y
dCAiVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCIKKyNpbXBvcnQgPEFWRm91
bmRhdGlvbi9BVkFzc2V0VHJhY2suaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJy
YXlJbmxpbmVzLmg+CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHBhbC9hdmZv
dW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29h
L0FWRm91bmRhdGlvblNQSS5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4K
KworI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW1wb3J0IDxwYWwvY29j
b2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKworI3ByYWdtYSBtYXJrIC0KKyNwcmFnbWEgbWFy
ayBXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcgorCitAaW50ZXJmYWNlIFdlYkFWU3RyZWFt
RGF0YVBhcnNlckxpc3RlbmVyIDogTlNPYmplY3Q8QVZTdHJlYW1EYXRhUGFyc2VyT3V0cHV0SGFu
ZGxpbmc+IHsKKyAgICBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKiBfcGFyZW50
OworICAgIEFWU3RyZWFtRGF0YVBhcnNlciogX3BhcnNlcjsKK30KK0Bwcm9wZXJ0eSAoYXNzaWdu
KSBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKiBwYXJlbnQ7CistIChpZClpbml0
V2l0aFBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyKilwYXJzZXIgcGFyZW50OihXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKilwYXJlbnQ7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcgorLSAoaWQpaW5pdFdpdGhQYXJzZXI6KEFW
U3RyZWFtRGF0YVBhcnNlciopcGFyc2VyIHBhcmVudDooV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQyopcGFyZW50Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAo
IXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBBU1NFUlQocGFyZW50KTsKKyAgICBf
cGFyZW50ID0gcGFyZW50OworICAgIF9wYXJzZXIgPSBwYXJzZXI7CisgICAgW19wYXJzZXIgc2V0
RGVsZWdhdGU6c2VsZl07CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK0BzeW50aGVzaXplIHBhcmVu
dD1fcGFyZW50OworCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbX3BhcnNlciBzZXREZWxlZ2F0
ZTpuaWxdOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZClpbnZhbGlkYXRlCit7
CisgICAgW19wYXJzZXIgc2V0RGVsZWdhdGU6bmlsXTsKKyAgICBfcGFyc2VyID0gbnVsbHB0cjsK
K30KKworLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJl
YW1EYXRhUGFyc2VyIGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQ6KEFWQXNzZXQgKilhc3NldAor
eworICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9
PSBfcGFyc2VyKTsKKyAgICBfcGFyZW50LT5kaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KGFzc2V0
KTsKK30KKworLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilz
dHJlYW1EYXRhUGFyc2VyIGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQ6KEFWQXNzZXQgKilhc3Nl
dCB3aXRoRGlzY29udGludWl0eTooQk9PTClkaXNjb250aW51aXR5Cit7CisgICAgVU5VU0VEX1BB
UkFNKGRpc2NvbnRpbnVpdHkpOworICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwg
c3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKKyAgICBfcGFyZW50LT5kaWRQYXJzZVN0cmVh
bURhdGFBc0Fzc2V0KGFzc2V0KTsKK30KKworLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0
cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0
YVdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCit7CisgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1E
YXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOworICAgIF9wYXJlbnQtPmRp
ZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcihlcnJvcik7Cit9CisKKy0gKHZvaWQpc3Ry
ZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQ
cm92aWRlTWVkaWFEYXRhOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGUgZm9yVHJhY2tJRDooQ01Q
ZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lEIG1lZGlhVHlwZTooTlNTdHJpbmcgKiluc01lZGlhVHlw
ZSBmbGFnczooQVZTdHJlYW1EYXRhUGFyc2VyT3V0cHV0TWVkaWFEYXRhRmxhZ3MpZmxhZ3MKK3sK
KyAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0g
X3BhcnNlcik7CisgICAgX3BhcmVudC0+ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQodHJh
Y2tJRCwgc2FtcGxlLCBuc01lZGlhVHlwZSwgZmxhZ3MpOworfQorCitBTExPV19ERVBSRUNBVEVE
X0lNUExFTUVOVEFUSU9OU19CRUdJTgorLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyV2lsbFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTooQVZTdHJlYW1EYXRhUGFyc2Vy
ICopc3RyZWFtRGF0YVBhcnNlciBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNr
SUQKK0FMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAoreworICAgIEFTU0VSVF9V
TlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKKyAg
ICBfcGFyZW50LT53aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRCh0cmFja0lEKTsKK30KKworQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfQkVHSU4KKy0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICop
c3RyZWFtRGF0YVBhcnNlciBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlv
bkRhdGE6KE5TRGF0YSAqKWluaXREYXRhIGZvclRyYWNrSUQ6KENNUGVyc2lzdGVudFRyYWNrSUQp
dHJhY2tJRAorQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECit7CisgICAgQVNT
RVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIp
OworICAgIF9wYXJlbnQtPmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9u
RGF0YUZvclRyYWNrSUQoaW5pdERhdGEsIHRyYWNrSUQpOworfQorQGVuZAorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKyNwcmFnbWEgbWFyayAtCisjcHJhZ21hIG1hcmsgTWVkaWFEZXNjcmlwdGlv
bkFWRk9iakMKKworY2xhc3MgTWVkaWFEZXNjcmlwdGlvbkFWRk9iakMgZmluYWwgOiBwdWJsaWMg
TWVkaWFEZXNjcmlwdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxNZWRpYURlc2NyaXB0
aW9uQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayogdHJhY2spIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgTWVkaWFEZXNjcmlwdGlvbkFWRk9iakModHJhY2spKTsgfQorICAgIHZpcnR1YWwgfk1l
ZGlhRGVzY3JpcHRpb25BVkZPYmpDKCkgeyB9CisKKyAgICBib29sIGlzVmlkZW8oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2lzVmlkZW87IH0KKyAgICBib29sIGlzQXVkaW8oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2lzQXVkaW87IH0KKyAgICBib29sIGlzVGV4dCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1faXNUZXh0OyB9CisgICAgQXRvbVN0cmluZyBjb2RlYygpIGNvbnN0
IG92ZXJyaWRlCisgICAgeworICAgICAgICAvLyBBdG9tU3RyaW5ncyBjYW4gb25seSBiZSBkZXN0
cm95ZWQgZnJvbSB0aGUgc2FtZSB0aHJlYWQgdGhleSdyZQorICAgICAgICAvLyBjcmVhdGVkIGlu
LiBTaW5jZSB0aGlzIHN0cnVjdHVyZSBpcyBjcmVhdGVkIGluIGEgcGFyc2VyIHRocmVhZAorICAg
ICAgICAvLyBvbmx5IGNyZWF0ZSB0aGUgQXRvbVN0cmluZyB0aGUgZmlyc3QgdGltZSB0aGlzIGZ1
bmN0aW9uIGlzIGFjY2Vzc2VkCisgICAgICAgIC8vIHdoaWNoIGlzIHByZXN1bWFibHkgb24gdGhl
IG1haW4gdGhyZWFkLgorICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBp
ZiAoIW1fY29kZWMpCisgICAgICAgICAgICBtX2NvZGVjID0gQXRvbVN0cmluZyhyZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oJm1fb3JpZ2luYWxDb2RlYyksIDQpOworICAgICAgICByZXR1
cm4gKm1fY29kZWM7CisgICAgfQorCitwcml2YXRlOgorICAgIE1lZGlhRGVzY3JpcHRpb25BVkZP
YmpDKEFWQXNzZXRUcmFjayogdHJhY2spCisgICAgICAgIDogbV9pc1ZpZGVvKFt0cmFjayBoYXNN
ZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbF0pCisgICAgICAg
ICwgbV9pc0F1ZGlvKFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0
ZXJpc3RpY0F1ZGlibGVdKQorICAgICAgICAsIG1faXNUZXh0KFt0cmFjayBoYXNNZWRpYUNoYXJh
Y3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGVdKQorICAgIHsKKyAgICAgICAg
TlNBcnJheSogZm9ybWF0RGVzY3JpcHRpb25zID0gW3RyYWNrIGZvcm1hdERlc2NyaXB0aW9uc107
CisgICAgICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzY3JpcHRpb24gPSBbZm9ybWF0RGVz
Y3JpcHRpb25zIGNvdW50XSA/IChfX2JyaWRnZSBDTUZvcm1hdERlc2NyaXB0aW9uUmVmKVtmb3Jt
YXREZXNjcmlwdGlvbnMgb2JqZWN0QXRJbmRleDowXSA6IDA7CisgICAgICAgIGlmIChkZXNjcmlw
dGlvbikgeworICAgICAgICAgICAgbV9vcmlnaW5hbENvZGVjID0gUEFMOjpzb2Z0TGlua19Db3Jl
TWVkaWFfQ01Gb3JtYXREZXNjcmlwdGlvbkdldE1lZGlhU3ViVHlwZShkZXNjcmlwdGlvbik7Cisg
ICAgICAgICAgICBDRlN0cmluZ1JlZiBvcmlnaW5hbEZvcm1hdEtleSA9IFBBTDo6Y2FuTG9hZF9D
b3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fUHJvdGVjdGVkQ29udGVudE9y
aWdpbmFsRm9ybWF0KCkgPyBQQUw6OmdldF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRpb25F
eHRlbnNpb25fUHJvdGVjdGVkQ29udGVudE9yaWdpbmFsRm9ybWF0KCkgOiBDRlNUUigiQ29tbW9u
RW5jcnlwdGlvbk9yaWdpbmFsRm9ybWF0Iik7CisgICAgICAgICAgICBDRlR5cGVSZWYgb3JpZ2lu
YWxGb3JtYXQgPSBDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9uKGRlc2NyaXB0aW9uLCBv
cmlnaW5hbEZvcm1hdEtleSk7CisgICAgICAgICAgICBpZiAob3JpZ2luYWxGb3JtYXQgJiYgQ0ZH
ZXRUeXBlSUQob3JpZ2luYWxGb3JtYXQpID09IENGTnVtYmVyR2V0VHlwZUlEKCkpCisgICAgICAg
ICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZSgoQ0ZOdW1iZXJSZWYpb3JpZ2luYWxGb3JtYXQsIGtD
Rk51bWJlclNJbnQzMlR5cGUsICZtX29yaWdpbmFsQ29kZWMpOworICAgICAgICB9CisgICAgfQor
CisgICAgRm91ckNoYXJDb2RlIG1fb3JpZ2luYWxDb2RlYzsKKyAgICBtdXRhYmxlIE9wdGlvbmFs
PEF0b21TdHJpbmc+IG1fY29kZWM7CisgICAgYm9vbCBtX2lzVmlkZW87CisgICAgYm9vbCBtX2lz
QXVkaW87CisgICAgYm9vbCBtX2lzVGV4dDsKK307CisKKyNwcmFnbWEgbWFyayAtCisjcHJhZ21h
IG1hcmsgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQworCitNZWRpYVBsYXllckVudW1zOjpTdXBw
b3J0c1R5cGUgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRl
ZChjb25zdCBDb250ZW50VHlwZSYgdHlwZSkKK3sKKyAgICBTdHJpbmcgZXh0ZW5kZWRUeXBlID0g
dHlwZS5yYXcoKTsKKyAgICBTdHJpbmcgb3V0cHV0Q29kZWNzID0gdHlwZS5wYXJhbWV0ZXIoQ29u
dGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsKKyAgICBpZiAoIW91dHB1dENvZGVjcy5pc0Vt
cHR5KCkgJiYgW1BBTDo6Z2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKG91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVj
UGFyYW1ldGVyOildKSB7CisgICAgICAgIG91dHB1dENvZGVjcyA9IFtQQUw6OmdldEFWU3RyZWFt
RGF0YVBhcnNlckNsYXNzKCkgb3V0cHV0TUlNRUNvZGVjUGFyYW1ldGVyRm9ySW5wdXRNSU1FQ29k
ZWNQYXJhbWV0ZXI6b3V0cHV0Q29kZWNzXTsKKyAgICAgICAgZXh0ZW5kZWRUeXBlID0gbWFrZVN0
cmluZyh0eXBlLmNvbnRhaW5lclR5cGUoKSwgIjsgY29kZWNzPVwiIiwgb3V0cHV0Q29kZWNzLCAi
XCIiKTsKKyAgICB9CisKKyAgICBhdXRvJiBzdHJlYW1EYXRhUGFyc2VyQ2FjaGUgPSBBVlN0cmVh
bURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKTsKKyAgICBpZiAoc3RyZWFtRGF0
YVBhcnNlckNhY2hlLmlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBzdHJlYW1EYXRhUGFy
c2VyQ2FjaGUuY2FuRGVjb2RlVHlwZShleHRlbmRlZFR5cGUpOworCisgICAgYXV0byYgYXNzZXRD
YWNoZSA9IEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKTsKKyAgICBpZiAoYXNzZXRD
YWNoZS5pc0F2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm4gYXNzZXRDYWNoZS5jYW5EZWNvZGVU
eXBlKGV4dGVuZGVkVHlwZSk7CisKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9y
dHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKK30KKworU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCisgICAgOiBtX3BhcnNlcihhZG9wdE5TKFtQQUw6
OmFsbG9jQVZTdHJlYW1EYXRhUGFyc2VySW5zdGFuY2UoKSBpbml0XSkpCisgICAgLCBtX2RlbGVn
YXRlKGFkb3B0TlMoW1tXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBhbGxvY10gaW5pdFdp
dGhQYXJzZXI6bV9wYXJzZXIuZ2V0KCkgcGFyZW50OnRoaXNdKSkKK3sKK30KKworU291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKQoreworICAgIG1f
ZGVsZWdhdGUuZ2V0KCkucGFyZW50ID0gbnVsbHB0cjsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRhdGEsIEFw
cGVuZEZsYWdzIGZsYWdzKQoreworICAgIGF1dG8gc2hhcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkRGF0YS0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgaWYgKG1fcGFyc2VyU3RhdGVXYXNSZXNldCB8fCBmbGFncyA9PSBB
cHBlbmRGbGFnczo6RGlzY29udGludWl0eSkKKyAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0cmVh
bURhdGE6bnNEYXRhLmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURhdGFQYXJzZXJTdHJlYW1EYXRh
RGlzY29udGludWl0eV07CisgICAgZWxzZQorICAgICAgICBbbV9wYXJzZXIgYXBwZW5kU3RyZWFt
RGF0YTpuc0RhdGEuZ2V0KCldOworICAgIG1fcGFyc2VyU3RhdGVXYXNSZXNldCA9IGZhbHNlOwor
fQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmZsdXNoUGVuZGluZ01lZGlhRGF0
YSgpCit7CisgICAgW21fcGFyc2VyIHByb3ZpZGVQZW5kaW5nTWVkaWFEYXRhXTsKK30KKwordm9p
ZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9y
VHJhY2tJRChib29sIHNob3VsZCwgaW50MzJfdCB0cmFja0lEKQoreworICAgIFttX3BhcnNlciBz
ZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhOnNob3VsZCBmb3JUcmFja0lEOnRyYWNrSURdOworfQor
Citib29sIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OnNob3VsZFByb3ZpZGVNZWRpYWRhdGFG
b3JUcmFja0lEKGludDMyX3QgdHJhY2tJRCkKK3sKKyAgICByZXR1cm4gW21fcGFyc2VyIHNob3Vs
ZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEOnRyYWNrSURdOworfQorCit2b2lkIFNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakM6OnJlc2V0UGFyc2VyU3RhdGUoKQoreworICAgIG1fcGFyc2VyU3Rh
dGVXYXNSZXNldCA9IHRydWU7CisgICAgbV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4dEluaXRpYWxp
emF0aW9uU2VnbWVudCA9IHRydWU7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChBVkFzc2V0KiBhc3NldCkKK3sKKyAgICBjYWxs
T25NYWluVGhyZWFkKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyksIGFzc2V0ID0g
cmV0YWluUHRyKGFzc2V0KV0geworICAgICAgICBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5p
dGlhbGl6YXRpb25TZWdtZW50ID0gZmFsc2U7CisKKyAgICAgICAgaWYgKCFtX2RpZFBhcnNlSW5p
dGlhbGl6YXRpb25EYXRhQ2FsbGJhY2spCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
SW5pdGlhbGl6YXRpb25TZWdtZW50IHNlZ21lbnQ7CisKKyAgICAgICAgaWYgKFthc3NldCByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG92ZXJhbGxEdXJhdGlvbkhpbnQpXSkKKyAgICAgICAg
ICAgIHNlZ21lbnQuZHVyYXRpb24gPSBQQUw6OnRvTWVkaWFUaW1lKFthc3NldCBvdmVyYWxsRHVy
YXRpb25IaW50XSk7CisKKyAgICAgICAgaWYgKHNlZ21lbnQuZHVyYXRpb24uaXNJbnZhbGlkKCkg
fHwgc2VnbWVudC5kdXJhdGlvbiA9PSBNZWRpYVRpbWU6Onplcm9UaW1lKCkpCisgICAgICAgICAg
ICBzZWdtZW50LmR1cmF0aW9uID0gUEFMOjp0b01lZGlhVGltZShbYXNzZXQgZHVyYXRpb25dKTsK
KworICAgICAgICBmb3IgKEFWQXNzZXRUcmFjayogdHJhY2sgaW4gW2Fzc2V0IHRyYWNrc10pIHsK
KyAgICAgICAgICAgIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hh
cmFjdGVyaXN0aWNMZWdpYmxlXSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FKDEyNTE2MSk6
IEhhbmRsZSBpbi1iYW5kIHRleHQgdHJhY2tzLgorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVy
aXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljVmlzdWFsXSkgeworICAgICAgICAgICAgICAgIFNv
dXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDo6VmlkZW9UcmFj
a0luZm9ybWF0aW9uIGluZm87CisgICAgICAgICAgICAgICAgYXV0byB2aWRlb1RyYWNrID0gVmlk
ZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjayk7CisgICAgICAg
ICAgICAgICAgaW5mby50cmFjayA9IHZpZGVvVHJhY2suY29weVJlZigpOworICAgICAgICAgICAg
ICAgIGluZm8uZGVzY3JpcHRpb24gPSBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQzo6Y3JlYXRlKHRy
YWNrKTsKKyAgICAgICAgICAgICAgICBzZWdtZW50LnZpZGVvVHJhY2tzLmFwcGVuZChpbmZvKTsK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZN
ZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJsZV0pIHsKKyAgICAgICAgICAgICAgICBTb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ6OkF1ZGlvVHJhY2tJbmZvcm1h
dGlvbiBpbmZvOworICAgICAgICAgICAgICAgIGF1dG8gYXVkaW9UcmFjayA9IEF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGUodHJhY2spOworICAgICAgICAgICAgICAg
IGluZm8udHJhY2sgPSBhdWRpb1RyYWNrLmNvcHlSZWYoKTsKKyAgICAgICAgICAgICAgICBpbmZv
LmRlc2NyaXB0aW9uID0gTWVkaWFEZXNjcmlwdGlvbkFWRk9iakM6OmNyZWF0ZSh0cmFjayk7Cisg
ICAgICAgICAgICAgICAgc2VnbWVudC5hdWRpb1RyYWNrcy5hcHBlbmQoaW5mbyk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIEZJWE1FKDEyNTE2MSkgICAgOiBBZGQgVGV4dFRyYWNr
IHN1cHBvcnQKKyAgICAgICAgfQorCisgICAgICAgIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRh
dGFDYWxsYmFjayhXVEZNb3ZlKHNlZ21lbnQpKTsKKyAgICB9KTsKK30KKwordm9pZCBTb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRGYWlsVG9QYXJzZVN0cmVhbURhdGFXaXRoRXJyb3IoTlNF
cnJvciogZXJyb3IpCit7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgc3Ryb25nVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvcildIHsKKyAgICAgICAgaWYg
KG1fZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2spCisgICAgICAgICAgICBt
X2RpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKGVycm9yLmdldCgpLmNvZGUp
OworICAgIH0pOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFByb3Zp
ZGVNZWRpYURhdGFGb3JUcmFja0lEKGludDMyX3QgdHJhY2tJRCwgQ01TYW1wbGVCdWZmZXJSZWYg
c2FtcGxlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgdW5zaWduZWQgZmxhZ3MpCit7
CisgICAgVU5VU0VEX1BBUkFNKGZsYWdzKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBz
dHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyksIHNhbXBsZUJ1ZmZlciA9IHJldGFpblB0cihzYW1w
bGVCdWZmZXIpLCB0cmFja0lELCBtZWRpYVR5cGUgPSBtZWRpYVR5cGVdIHsKKyAgICAgICAgaWYg
KCFtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjaykKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBpZiAobV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4dEluaXRpYWxpemF0aW9uU2VnbWVu
dCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIG1lZGlhU2FtcGxlID0gTWVk
aWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUoc2FtcGxlQnVmZmVyLmdldCgpLCB0cmFja0lEKTsKKwor
ICAgICAgICBpZiAobWVkaWFTYW1wbGUtPmlzSG9tb2dlbmVvdXMoKSkgeworICAgICAgICAgICAg
bV9kaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2soV1RGTW92ZShtZWRpYVNhbXBsZSksIHRyYWNr
SUQsIG1lZGlhVHlwZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBmb3IgKGF1dG8mIHNhbXBsZSA6IG1lZGlhU2FtcGxlLT5kaXZpZGVJbnRvSG9tb2dlbmVvdXNT
YW1wbGVzKCkpCisgICAgICAgICAgICBtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhXVEZN
b3ZlKHNhbXBsZSksIHRyYWNrSUQsIG1lZGlhVHlwZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRp
YWxpemF0aW9uRGF0YUZvclRyYWNrSUQoaW50MzJfdCB0cmFja0lEKQoreworICAgIG1fd2lsbFBy
b3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFj
ayh0cmFja0lEKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKE5TRGF0YSog
bnNJbml0RGF0YSwgaW50MzJfdCB0cmFja0lEKQoreworICAgIGF1dG8gaW5pdERhdGEgPSBVaW50
OEFycmF5OjpjcmVhdGUobnNJbml0RGF0YS5sZW5ndGgpOworICAgIFtuc0luaXREYXRhIGdldEJ5
dGVzOmluaXREYXRhLT5kYXRhKCkgbGVuZ3RoOmluaXREYXRhLT5sZW5ndGgoKV07CisKKyAgICBt
X2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURD
YWxsYmFjayhXVEZNb3ZlKGluaXREYXRhKSwgdHJhY2tJRCk7Cit9CisKK30KKworI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRleCBkZmExMzRiNGQ2OGZkYjc0NzM0Mzc4ZDlm
OWRkM2JkODQxZjMzZDY1Li42ZDE5NGFiMTQwYThiZDM0OTNiZWIzYWRkZjMyODNkM2I4ZTc1ZmQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpICYm
IFVTRShBVkZPVU5EQVRJT04pCiAKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXIuaCIKICNp
bmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlLmgiCiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZ3JvdXAu
aD4KICNpbmNsdWRlIDx3dGYvQm94Lmg+CkBAIC0zOCwxOCArMzksMTcgQEAKICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV1RGU2VtYXBob3JlLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKLU9CSkNfQ0xBU1MgQVZBc3NldDsKIE9CSkNf
Q0xBU1MgQVZTdHJlYW1EYXRhUGFyc2VyOwogT0JKQ19DTEFTUyBBVlNhbXBsZUJ1ZmZlckF1ZGlv
UmVuZGVyZXI7CiBPQkpDX0NMQVNTIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOwogT0JKQ19D
TEFTUyBOU0RhdGE7CiBPQkpDX0NMQVNTIE5TRXJyb3I7CiBPQkpDX0NMQVNTIE5TT2JqZWN0Owot
T0JKQ19DTEFTUyBXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcjsKIE9CSkNfQ0xBU1MgV2Vi
QVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyOwogCiB0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNh
bXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7CkBAIC04NiwzNCArODYsMjcgQEAgY2xhc3Mg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMgZmluYWwKICNlbmRpZgogewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IGNyZWF0ZShNZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDKik7CisgICAgc3RhdGljIFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQz4gY3JlYXRlKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqLCBSZWY8U291cmNlQnVmZmVy
UGFyc2VyPiYmKTsKICAgICB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQygpOwog
CiAgICAgdm9pZCBjbGVhck1lZGlhU291cmNlKCkgeyBtX21lZGlhU291cmNlID0gbnVsbHB0cjsg
fQogCi0gICAgLy8gQVZTdHJlYW1EYXRhUGFyc2VyIGRlbGVnYXRlIG1ldGhvZHMKLSAgICB2b2lk
IGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3NldCopOwotICAgIHZvaWQgZGlkRmFpbFRv
UGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yKE5TRXJyb3IqKTsKLSAgICB2b2lkIGRpZFByb3ZpZGVN
ZWRpYURhdGFGb3JUcmFja0lEKGludCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJlZiwgY29uc3Qg
U3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkIGZsYWdzKTsKLSAgICB2b2lkIGRpZFJlYWNoRW5k
T2ZUcmFja1dpdGhUcmFja0lEKGludCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7
Ci0gICAgdm9pZCB3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRChpbnQgdHJhY2tJRCk7Ci0gICAgdm9pZCBkaWRQcm92aWRlQ29udGVudEtleVJl
cXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKE5TRGF0YSosIGludCB0cmFja0lELCBC
b3g8QmluYXJ5U2VtYXBob3JlPik7Ci0KLSAgICBib29sIHByb2Nlc3NDb2RlZEZyYW1lKGludCB0
cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJlZiwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpOworICAg
IHZvaWQgd2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRy
YWNrSUQoaW50MzJfdCB0cmFja0lEKTsKKyAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoUmVmPFVpbnQ4QXJyYXk+JiYsIGludDMy
X3QgdHJhY2tJRCwgQm94PEJpbmFyeVNlbWFwaG9yZT4pOwogCiAgICAgYm9vbCBoYXNWaWRlbygp
IGNvbnN0OwogICAgIGJvb2wgaGFzU2VsZWN0ZWRWaWRlbygpIGNvbnN0OwogICAgIGJvb2wgaGFz
QXVkaW8oKSBjb25zdDsKIAotICAgIHZvaWQgdHJhY2tEaWRDaGFuZ2VFbmFibGVkKFZpZGVvVHJh
Y2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKik7Ci0gICAgdm9pZCB0cmFja0RpZENoYW5nZUVu
YWJsZWQoQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqKTsKKyAgICB2b2lkIHRy
YWNrRGlkQ2hhbmdlU2VsZWN0ZWQoVmlkZW9UcmFja1ByaXZhdGUmLCBib29sIHNlbGVjdGVkKTsK
KyAgICB2b2lkIHRyYWNrRGlkQ2hhbmdlRW5hYmxlZChBdWRpb1RyYWNrUHJpdmF0ZSYsIGJvb2wg
ZW5hYmxlZCk7CiAKICAgICB2b2lkIHdpbGxTZWVrKCk7CiAgICAgTWVkaWFUaW1lIGZhc3RTZWVr
VGltZUZvck1lZGlhVGltZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmIG5lZ2F0
aXZlVGhyZXNob2xkLCBjb25zdCBNZWRpYVRpbWUmIHBvc2l0aXZlVGhyZXNob2xkKTsKICAgICBG
bG9hdFNpemUgbmF0dXJhbFNpemUoKTsKIAogICAgIGludCBwcm90ZWN0ZWRUcmFja0lEKCkgY29u
c3QgeyByZXR1cm4gbV9wcm90ZWN0ZWRUcmFja0lEOyB9Ci0gICAgQVZTdHJlYW1EYXRhUGFyc2Vy
KiBwYXJzZXIoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlci5nZXQoKTsgfQorICAgIEFWU3RyZWFt
RGF0YVBhcnNlciogcGFyc2VyKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDRE1TZXNzaW9uKENETVNl
c3Npb25NZWRpYVNvdXJjZUFWRk9iakMqKTsKICAgICB2b2lkIHNldENETUluc3RhbmNlKENETUlu
c3RhbmNlKik7CiAgICAgdm9pZCBhdHRlbXB0VG9EZWNyeXB0KCk7CkBAIC0xNDgsNyArMTQxLDEy
IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqKTsKKyAgICBleHBsaWNp
dCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiwg
UmVmPFNvdXJjZUJ1ZmZlclBhcnNlcj4mJik7CisKKyAgICB1c2luZyBJbml0aWFsaXphdGlvblNl
Z21lbnQgPSBTb3VyY2VCdWZmZXJQYXJzZXI6OkluaXRpYWxpemF0aW9uU2VnbWVudDsKKyAgICB2
b2lkIGRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVudCYmKTsK
KyAgICB2b2lkIGRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhpbnQzMl90KTsKKyAgICB2
b2lkIGRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKFJlZjxNZWRpYVNhbXBsZT4mJiwgaW50
MzJfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CiAKICAgICAvLyBTb3VyY2VC
dWZmZXJQcml2YXRlIG92ZXJyaWRlcwogICAgIHZvaWQgc2V0Q2xpZW50KFNvdXJjZUJ1ZmZlclBy
aXZhdGVDbGllbnQqKSBmaW5hbDsKQEAgLTE3MiwyOCArMTcwLDI4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBhcHBlbmRDb21wbGV0ZWQoKTsKICAgICB2b2lkIGRlc3Ryb3lQYXJzZXIoKTsKICAgICB2
b2lkIGRlc3Ryb3lSZW5kZXJlcnMoKTsKKyAgICB2b2lkIGNsZWFyVHJhY2tzKCk7CiAKICAgICB2
b2lkIGZsdXNoVmlkZW8oKTsKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lO
CiAgICAgdm9pZCBmbHVzaChBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIgKik7CiAgICAgQUxM
T1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKIAotICAgIFZlY3RvcjxSZWZQdHI8VmlkZW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+PiBtX3ZpZGVvVHJhY2tzOwotICAgIFZlY3Rv
cjxSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+PiBtX2F1ZGlvVHJh
Y2tzOworICAgIFZlY3RvcjxSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+PiBtX3ZpZGVvVHJhY2tz
OworICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+PiBtX2F1ZGlvVHJhY2tzOwog
ICAgIFZlY3RvcjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQ0Vycm9yQ2xpZW50Kj4gbV9lcnJv
ckNsaWVudHM7CiAKICAgICBXZWFrUHRyRmFjdG9yeTxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qz4gbV9hcHBlbmRXZWFrRmFjdG9yeTsKIAotICAgIFJldGFpblB0cjxBVlN0cmVhbURhdGFQYXJz
ZXI+IG1fcGFyc2VyOwotICAgIFJldGFpblB0cjxBVkFzc2V0PiBtX2Fzc2V0OworICAgIFJlZjxT
b3VyY2VCdWZmZXJQYXJzZXI+IG1fcGFyc2VyOwogICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcj4gbV9kaXNwbGF5TGF5ZXI7CiAgICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VU
X0dVQVJEU19CRUdJTgogICAgIEhhc2hNYXA8aW50LCBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJB
dWRpb1JlbmRlcmVyPj4gbV9hdWRpb1JlbmRlcmVyczsKICAgICBBTExPV19ORVdfQVBJX1dJVEhP
VVRfR1VBUkRTX0VORAotICAgIFJldGFpblB0cjxXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5l
cj4gbV9kZWxlZ2F0ZTsKICAgICBSZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3Rl
bmVyPiBtX2Vycm9yTGlzdGVuZXI7CiAgICAgUmV0YWluUHRyPE5TRXJyb3I+IG1faGRjcEVycm9y
OwogICAgIEJveDxCaW5hcnlTZW1hcGhvcmU+IG1faGFzU2Vzc2lvblNlbWFwaG9yZTsKKyAgICBC
b3g8U2VtYXBob3JlPiBtX2Fib3J0U2VtYXBob3JlOwogICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNo
X2dyb3VwX3Q+IG1faXNBcHBlbmRpbmdHcm91cDsKICAgICBSZWZQdHI8V2ViQ29yZURlY29tcHJl
c3Npb25TZXNzaW9uPiBtX2RlY29tcHJlc3Npb25TZXNzaW9uOwogCkBAIC0yMTEsOCArMjA5LDYg
QEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxGbG9hdFNpemU+IG1fY2FjaGVkU2l6ZTsKICAgICBG
bG9hdFNpemUgbV9jdXJyZW50U2l6ZTsKICAgICBib29sIG1fcGFyc2luZ1N1Y2NlZWRlZCB7IHRy
dWUgfTsKLSAgICBib29sIG1fcGFyc2VyU3RhdGVXYXNSZXNldCB7IGZhbHNlIH07Ci0gICAgYm9v
bCBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50IHsgZmFsc2Ug
fTsKICAgICBib29sIG1fd2FpdGluZ0ZvcktleSB7IHRydWUgfTsKICAgICBpbnQgbV9lbmFibGVk
VmlkZW9UcmFja0lEIHsgLTEgfTsKICAgICBpbnQgbV9wcm90ZWN0ZWRUcmFja0lEIHsgLTEgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMubW0KaW5kZXggZDczNTc3NWNjOGYwNGI4YjAyMWIzNWM3MDE2OTViZDI0ZjZmOGRhOC4uYzIx
MDlhMDcxYTc2MzVmYjIxNTQ2NTllNTQ0M2QwYjA2Y2ViMTJiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTQ0LDYg
KzQ0LDcgQEAKICNpbXBvcnQgIk1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaCIKICNpbXBvcnQg
Ik5vdEltcGxlbWVudGVkLmgiCiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKKyNpbXBvcnQgIlNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCIKICNpbXBvcnQgIlNvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQuaCIKICNpbXBvcnQgIlRpbWVSYW5nZXMuaCIKICNpbXBvcnQgIlZpZGVvVHJhY2tQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgiCkBAIC04MiwxNTMgKzgzLDYgQEAgLSAodm9pZClhZGRT
dHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyOwog
LSAodm9pZClyZW1vdmVTdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJl
YW1EYXRhUGFyc2VyOwogQGVuZAogCi0jcHJhZ21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIFdlYkFW
U3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyCi0KLUBpbnRlcmZhY2UgV2ViQVZTdHJlYW1EYXRhUGFy
c2VyTGlzdGVuZXIgOiBOU09iamVjdDxBVlN0cmVhbURhdGFQYXJzZXJPdXRwdXRIYW5kbGluZz4g
ewotICAgIFdlYWtQdHI8V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IF9wYXJl
bnQ7Ci0gICAgQm94PFNlbWFwaG9yZT4gX2Fib3J0U2VtYXBob3JlOwotICAgIEFWU3RyZWFtRGF0
YVBhcnNlciogX3BhcnNlcjsKLX0KLUBwcm9wZXJ0eSAoYXNzaWduKSBXZWFrUHRyPFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBwYXJlbnQ7Ci1AcHJvcGVydHkgKGFzc2lnbikg
Qm94PFNlbWFwaG9yZT4gYWJvcnRTZW1hcGhvcmU7Ci0tIChpZClpbml0V2l0aFBhcnNlcjooQVZT
dHJlYW1EYXRhUGFyc2VyKilwYXJzZXIgcGFyZW50OihXZWFrUHRyPFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDPilwYXJlbnQ7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJB
VlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcgotLSAoaWQpaW5pdFdpdGhQYXJzZXI6KEFWU3RyZWFt
RGF0YVBhcnNlciopcGFyc2VyIHBhcmVudDooV2Vha1B0cjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQz4pcGFyZW50Ci17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBp
ZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBBU1NFUlQocGFyZW50KTsKLSAg
ICBfcGFyZW50ID0gcGFyZW50OwotICAgIF9wYXJzZXIgPSBwYXJzZXI7Ci0gICAgW19wYXJzZXIg
c2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLUBzeW50aGVzaXplIHBh
cmVudD1fcGFyZW50OwotQHN5bnRoZXNpemUgYWJvcnRTZW1hcGhvcmU9X2Fib3J0U2VtYXBob3Jl
OwotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbX3BhcnNlciBzZXREZWxlZ2F0ZTpuaWxdOwot
ICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClpbnZhbGlkYXRlCi17Ci0gICAgW19w
YXJzZXIgc2V0RGVsZWdhdGU6bmlsXTsKLSAgICBfcGFyc2VyID0gbnVsbHB0cjsKLX0KLQotLSAo
dm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFy
c2VyIGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQ6KEFWQXNzZXQgKilhc3NldAotewotICAgIEFT
U0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2Vy
KTsKLQotICAgIFJldGFpblB0cjxBVkFzc2V0PiBwcm90ZWN0ZWRBc3NldCA9IGFzc2V0OwotICAg
IGNhbGxPbk1haW5UaHJlYWQoW3BhcmVudCA9IF9wYXJlbnQsIHByb3RlY3RlZEFzc2V0ID0gV1RG
TW92ZShwcm90ZWN0ZWRBc3NldCldIHsKLSAgICAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAg
IHBhcmVudC0+ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChwcm90ZWN0ZWRBc3NldC5nZXQoKSk7
Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFy
c2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0OihBVkFzc2V0
ICopYXNzZXQgd2l0aERpc2NvbnRpbnVpdHk6KEJPT0wpZGlzY29udGludWl0eQotewotICAgIFVO
VVNFRF9QQVJBTShkaXNjb250aW51aXR5KTsKLSAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQ
YXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7Ci0KLSAgICBSZXRhaW5QdHI8QVZB
c3NldD4gcHJvdGVjdGVkQXNzZXQgPSBhc3NldDsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwYXJl
bnQgPSBfcGFyZW50LCBwcm90ZWN0ZWRBc3NldCA9IFdURk1vdmUocHJvdGVjdGVkQXNzZXQpXSB7
Ci0gICAgICAgIGlmIChwYXJlbnQpCi0gICAgICAgICAgICBwYXJlbnQtPmRpZFBhcnNlU3RyZWFt
RGF0YUFzQXNzZXQocHJvdGVjdGVkQXNzZXQuZ2V0KCkpOwotICAgIH0pOwotfQotCi0tICh2b2lk
KXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIg
ZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKLXsKLSAg
ICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3Bh
cnNlcik7Ci0KLSAgICBSZXRhaW5QdHI8TlNFcnJvcj4gcHJvdGVjdGVkRXJyb3IgPSBlcnJvcjsK
LSAgICBjYWxsT25NYWluVGhyZWFkKFtwYXJlbnQgPSBfcGFyZW50LCBwcm90ZWN0ZWRFcnJvciA9
IFdURk1vdmUocHJvdGVjdGVkRXJyb3IpXSB7Ci0gICAgICAgIGlmIChwYXJlbnQpCi0gICAgICAg
ICAgICBwYXJlbnQtPmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcihwcm90ZWN0ZWRF
cnJvci5nZXQoKSk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZT
dHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQcm92aWRlTWVkaWFEYXRhOihD
TVNhbXBsZUJ1ZmZlclJlZilzYW1wbGUgZm9yVHJhY2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0
cmFja0lEIG1lZGlhVHlwZTooTlNTdHJpbmcgKiluc01lZGlhVHlwZSBmbGFnczooQVZTdHJlYW1E
YXRhUGFyc2VyT3V0cHV0TWVkaWFEYXRhRmxhZ3MpZmxhZ3MKLXsKLSAgICBBU1NFUlRfVU5VU0VE
KHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7Ci0KLSAgICBS
ZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHByb3RlY3RlZFNhbXBsZSA9IHNhbXBsZTsKLSAg
ICBjYWxsT25NYWluVGhyZWFkKFtwYXJlbnQgPSBfcGFyZW50LCBwcm90ZWN0ZWRTYW1wbGUgPSBX
VEZNb3ZlKHByb3RlY3RlZFNhbXBsZSksIHRyYWNrSUQsIG1lZGlhVHlwZSA9IFN0cmluZyhuc01l
ZGlhVHlwZSksIGZsYWdzXSB7Ci0gICAgICAgIGlmIChwYXJlbnQpCi0gICAgICAgICAgICBwYXJl
bnQtPmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKHRyYWNrSUQsIHByb3RlY3RlZFNhbXBs
ZS5nZXQoKSwgbWVkaWFUeXBlLCBmbGFncyk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpc3RyZWFt
RGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRSZWFj
aEVuZE9mVHJhY2tXaXRoVHJhY2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lEIG1lZGlh
VHlwZTooTlNTdHJpbmcgKiluc01lZGlhVHlwZQotewotICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFt
RGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLQotICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3BhcmVudCA9IF9wYXJlbnQsIHRyYWNrSUQsIG1lZGlhVHlwZSA9IFN0cmluZyhu
c01lZGlhVHlwZSldIHsKLSAgICAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAgIHBhcmVudC0+
ZGlkUmVhY2hFbmRPZlRyYWNrV2l0aFRyYWNrSUQodHJhY2tJRCwgbWVkaWFUeXBlKTsKLSAgICB9
KTsKLX0KLQotQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfQkVHSU4KLS0gKHZvaWQp
c3RyZWFtRGF0YVBhcnNlcldpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlv
bkRhdGE6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZm9yVHJhY2tJRDoo
Q01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lECi1BTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURh
dGFQYXJzZXIgPT0gX3BhcnNlcik7Ci0KLSAgICAvLyBXZSBtdXN0IGNhbGwgc3luY2hyb25vdXNs
eSB0byB0aGUgbWFpbiB0aHJlYWQsIGFzIHRoZSBBVlN0cmVhbVNlc3Npb24gbXVzdCBiZSBhc3Nv
Y2lhdGVkCi0gICAgLy8gd2l0aCB0aGUgc3RyZWFtRGF0YVBhcnNlciBiZWZvcmUgdGhlIGRlbGVn
YXRlIG1ldGhvZCByZXR1cm5zLgotICAgIEJveDxCaW5hcnlTZW1hcGhvcmU+IHJlc3BvbmRlZFNl
bWFwaG9yZSA9IEJveDxCaW5hcnlTZW1hcGhvcmU+OjpjcmVhdGUoKTsKLSAgICBjYWxsT25NYWlu
VGhyZWFkKFtwYXJlbnQgPSBfcGFyZW50LCB0cmFja0lELCByZXNwb25kZWRTZW1hcGhvcmVdKCkg
ewotICAgICAgICBpZiAocGFyZW50KQotICAgICAgICAgICAgcGFyZW50LT53aWxsUHJvdmlkZUNv
bnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCh0cmFja0lEKTsKLSAg
ICAgICAgcmVzcG9uZGVkU2VtYXBob3JlLT5zaWduYWwoKTsKLSAgICB9KTsKLQotICAgIHdoaWxl
ICh0cnVlKSB7Ci0gICAgICAgIGlmIChyZXNwb25kZWRTZW1hcGhvcmUtPndhaXRGb3IoMTAwX21z
KSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoX2Fib3J0U2VtYXBob3JlLT53
YWl0Rm9yKDEwMF9tcykpIHsKLSAgICAgICAgICAgIF9hYm9ydFNlbWFwaG9yZS0+c2lnbmFsKCk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLUFMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCi0tICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFW
U3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOihOU0RhdGEgKilpbml0RGF0YSBmb3JUcmFja0lEOihD
TVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQKLUFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0VORAotewotICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0
YVBhcnNlciA9PSBfcGFyc2VyKTsKLQotICAgIEJveDxCaW5hcnlTZW1hcGhvcmU+IGhhc1Nlc3Np
b25TZW1hcGhvcmUgPSBCb3g8QmluYXJ5U2VtYXBob3JlPjo6Y3JlYXRlKCk7Ci0gICAgY2FsbE9u
TWFpblRocmVhZChbcGFyZW50ID0gX3BhcmVudCwgcHJvdGVjdGVkSW5pdERhdGEgPSBSZXRhaW5Q
dHI8TlNEYXRhPihpbml0RGF0YSksIHRyYWNrSUQsIGhhc1Nlc3Npb25TZW1hcGhvcmVdIHsKLSAg
ICAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAgIHBhcmVudC0+ZGlkUHJvdmlkZUNvbnRlbnRL
ZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChwcm90ZWN0ZWRJbml0RGF0YS5n
ZXQoKSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNlbWFwaG9yZSk7Ci0gICAgfSk7Ci0KLSAgICB3aGls
ZSAodHJ1ZSkgewotICAgICAgICBpZiAoaGFzU2Vzc2lvblNlbWFwaG9yZS0+d2FpdEZvcigxMDBf
bXMpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChfYWJvcnRTZW1hcGhvcmUt
PndhaXRGb3IoMTAwX21zKSkgewotICAgICAgICAgICAgX2Fib3J0U2VtYXBob3JlLT5zaWduYWwo
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLX0KLUBlbmQKLQogQGlu
dGVyZmFjZSBXZWJBVlNhbXBsZUJ1ZmZlckVycm9yTGlzdGVuZXIgOiBOU09iamVjdCB7CiAgICAg
V2Vha1B0cjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gX3BhcmVudDsKICAg
ICBWZWN0b3I8UmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPj4gX2xheWVyczsK
QEAgLTM5MSw0MyArMjQ1LDYgQEAgQGVuZAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFt
ZXNwYWNlIFBBTDsKIAotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBNZWRpYURlc2NyaXB0
aW9uQVZGT2JqQwotCi1jbGFzcyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyBmaW5hbCA6IHB1Ymxp
YyBNZWRpYURlc2NyaXB0aW9uIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1lZGlhRGVzY3Jp
cHRpb25BVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrKiB0cmFjaykgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyh0cmFjaykpOyB9Ci0gICAgdmlydHVhbCB+
TWVkaWFEZXNjcmlwdGlvbkFWRk9iakMoKSB7IH0KLQotICAgIEF0b21TdHJpbmcgY29kZWMoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvZGVjOyB9Ci0gICAgYm9vbCBpc1ZpZGVvKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1ZpZGVvOyB9Ci0gICAgYm9vbCBpc0F1ZGlvKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0F1ZGlvOyB9Ci0gICAgYm9vbCBpc1RleHQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2lzVGV4dDsgfQotICAgIAotcHJpdmF0ZToKLSAgICBNZWRp
YURlc2NyaXB0aW9uQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrKQotICAgICAgICA6IG1faXNW
aWRlbyhbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNW
aXN1YWxdKQotICAgICAgICAsIG1faXNBdWRpbyhbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3Rp
YzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNBdWRpYmxlXSkKLSAgICAgICAgLCBtX2lzVGV4dChbdHJh
Y2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlXSkK
LSAgICB7Ci0gICAgICAgIE5TQXJyYXkqIGZvcm1hdERlc2NyaXB0aW9ucyA9IFt0cmFjayBmb3Jt
YXREZXNjcmlwdGlvbnNdOwotICAgICAgICBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2NyaXB0
aW9uID0gW2Zvcm1hdERlc2NyaXB0aW9ucyBjb3VudF0gPyAoX19icmlkZ2UgQ01Gb3JtYXREZXNj
cmlwdGlvblJlZilbZm9ybWF0RGVzY3JpcHRpb25zIG9iamVjdEF0SW5kZXg6MF0gOiAwOwotICAg
ICAgICBpZiAoZGVzY3JpcHRpb24pIHsKLSAgICAgICAgICAgIEZvdXJDaGFyQ29kZSBjb2RlYyA9
IENNRm9ybWF0RGVzY3JpcHRpb25HZXRNZWRpYVN1YlR5cGUoZGVzY3JpcHRpb24pOwotICAgICAg
ICAgICAgQ0ZTdHJpbmdSZWYgb3JpZ2luYWxGb3JtYXRLZXkgPSBQQUw6OmNhbkxvYWRfQ29yZU1l
ZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1Byb3RlY3RlZENvbnRlbnRPcmlnaW5h
bEZvcm1hdCgpID8gUEFMOjpnZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5z
aW9uX1Byb3RlY3RlZENvbnRlbnRPcmlnaW5hbEZvcm1hdCgpIDogQ0ZTVFIoIkNvbW1vbkVuY3J5
cHRpb25PcmlnaW5hbEZvcm1hdCIpOwotICAgICAgICAgICAgQ0ZUeXBlUmVmIG9yaWdpbmFsRm9y
bWF0ID0gQ01Gb3JtYXREZXNjcmlwdGlvbkdldEV4dGVuc2lvbihkZXNjcmlwdGlvbiwgb3JpZ2lu
YWxGb3JtYXRLZXkpOwotICAgICAgICAgICAgaWYgKG9yaWdpbmFsRm9ybWF0ICYmIENGR2V0VHlw
ZUlEKG9yaWdpbmFsRm9ybWF0KSA9PSBDRk51bWJlckdldFR5cGVJRCgpKQotICAgICAgICAgICAg
ICAgIENGTnVtYmVyR2V0VmFsdWUoKENGTnVtYmVyUmVmKW9yaWdpbmFsRm9ybWF0LCBrQ0ZOdW1i
ZXJTSW50MzJUeXBlLCAmY29kZWMpOwotICAgICAgICAgICAgbV9jb2RlYyA9IEF0b21TdHJpbmco
cmVpbnRlcnByZXRfY2FzdDxMQ2hhcio+KCZjb2RlYyksIDQpOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgQXRvbVN0cmluZyBtX2NvZGVjOwotICAgIGJvb2wgbV9pc1ZpZGVvOwotICAgIGJvb2wg
bV9pc0F1ZGlvOwotICAgIGJvb2wgbV9pc1RleHQ7Ci19OwotCiAjcHJhZ21hIG1hcmsgLQogI3By
YWdtYSBtYXJrIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDCiAKQEAgLTQ2NSwxNCArMjgyLDEz
IEBAIHN0YXRpYyB2b2lkIGJ1ZmZlcldhc0NvbnN1bWVkQ2FsbGJhY2soQ01Ob3RpZmljYXRpb25D
ZW50ZXJSZWYsIGNvbnN0IHZvaWQqIGxpc3RlCiAgICAgICAgIHNvdXJjZUJ1ZmZlci0+YnVmZmVy
V2FzQ29uc3VtZWQoKTsKIH0KIAotUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMq
IHBhcmVudCkKK1JlZjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OmNyZWF0ZShNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiBwYXJlbnQsIFJl
ZjxTb3VyY2VCdWZmZXJQYXJzZXI+JiYgcGFyc2VyKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKHBhcmVudCkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKHBhcmVudCwgV1RGTW92ZShwYXJz
ZXIpKSk7CiB9CiAKLVNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCi0gICAgOiBtX3Bh
cnNlcihhZG9wdE5TKFtQQUw6OmFsbG9jQVZTdHJlYW1EYXRhUGFyc2VySW5zdGFuY2UoKSBpbml0
XSkpCi0gICAgLCBtX2RlbGVnYXRlKGFkb3B0TlMoW1tXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0
ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJzZXI6bV9wYXJzZXIuZ2V0KCkgcGFyZW50Om1ha2VXZWFr
UHRyKCp0aGlzKV0pKQorU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqIHBhcmVudCwgUmVmPFNvdXJj
ZUJ1ZmZlclBhcnNlcj4mJiBwYXJzZXIpCisgICAgOiBtX3BhcnNlcihXVEZNb3ZlKHBhcnNlcikp
CiAgICAgLCBtX2Vycm9yTGlzdGVuZXIoYWRvcHROUyhbW1dlYkFWU2FtcGxlQnVmZmVyRXJyb3JM
aXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6bWFrZVdlYWtQdHIoKnRoaXMpXSkpCiAgICAg
LCBtX2lzQXBwZW5kaW5nR3JvdXAoYWRvcHRPU09iamVjdChkaXNwYXRjaF9ncm91cF9jcmVhdGUo
KSkpCiAgICAgLCBtX21lZGlhU291cmNlKHBhcmVudCkKQEAgLTQ4NiwxMCArMzAyLDI2IEBAIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDCiAKICAgICBpZiAoIVtQQUw6OmdldEFWU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyQ2xhc3MoKSBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3Io
cHJlcm9sbERlY29kZVdpdGhDb21wbGV0aW9uSGFuZGxlcjopXSkKICAgICAgICAgQ01Ob3RpZmlj
YXRpb25DZW50ZXJBZGRMaXN0ZW5lcihDTU5vdGlmaWNhdGlvbkNlbnRlckdldERlZmF1bHRMb2Nh
bENlbnRlcigpLCByZWludGVycHJldF9jYXN0PHZvaWQqPihtX21hcElEKSwgYnVmZmVyV2FzQ29u
c3VtZWRDYWxsYmFjaywga0NNU2FtcGxlQnVmZmVyQ29uc3VtZXJOb3RpZmljYXRpb25fQnVmZmVy
Q29uc3VtZWQsIG51bGxwdHIsIDApOwotICAgIAotICAgIG1fZGVsZWdhdGUuZ2V0KCkuYWJvcnRT
ZW1hcGhvcmUgPSBCb3g8U2VtYXBob3JlPjo6Y3JlYXRlKDApOwogCiAgICAgc291cmNlQnVmZmVy
TWFwKCkuYWRkKG1fbWFwSUQsIG1ha2VXZWFrUHRyKCp0aGlzKSk7CisKKyAgICBtX3BhcnNlci0+
c2V0RGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cih0aGlzKV0gKEluaXRpYWxpemF0aW9uU2VnbWVudCYmIHNlZ21lbnQpIG11dGFibGUgewor
ICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBpZiAod2Vha1RoaXMpCisg
ICAgICAgICAgICB3ZWFrVGhpcy0+ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoV1RGTW92ZShz
ZWdtZW50KSk7CisgICAgfSk7CisKKyAgICBtX3BhcnNlci0+c2V0RGlkRW5jb3VudGVyRXJyb3JE
dXJpbmdQYXJzaW5nQ2FsbGJhY2soW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChpbnQz
Ml90IGVycm9yQ29kZSkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgIHdlYWtUaGlzLT5kaWRFbmNvdW50
ZXJFcnJvckR1cmluZ1BhcnNpbmcoZXJyb3JDb2RlKTsKKyAgICB9KTsKKworICAgIG1fcGFyc2Vy
LT5zZXREaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2soW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyldIChSZWY8TWVkaWFTYW1wbGU+JiYgc2FtcGxlLCB1aW50NjRfdCB0cmFja0lELCBjb25z
dCBTdHJpbmcmIG1lZGlhVHlwZSkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgIHdlYWtUaGlzLT5kaWRQ
cm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChXVEZNb3ZlKHNhbXBsZSksIHRyYWNrSUQsIG1lZGlh
VHlwZSk7CisgICAgfSk7CiB9CiAKIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp+U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMoKQpAQCAtNTAwLDYgKzMzMiw3IEBAIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjp+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoKQogICAgIHNvdXJjZUJ1
ZmZlck1hcCgpLnJlbW92ZShtX21hcElEKTsKICAgICBkZXN0cm95UGFyc2VyKCk7CiAgICAgZGVz
dHJveVJlbmRlcmVycygpOworICAgIGNsZWFyVHJhY2tzKCk7CiAKICAgICBpZiAoIVtQQUw6Omdl
dEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQ2xhc3MoKSBpbnN0YW5jZXNSZXNwb25kVG9TZWxl
Y3RvcjpAc2VsZWN0b3IocHJlcm9sbERlY29kZVdpdGhDb21wbGV0aW9uSGFuZGxlcjopXSkKICAg
ICAgICAgQ01Ob3RpZmljYXRpb25DZW50ZXJSZW1vdmVMaXN0ZW5lcihDTU5vdGlmaWNhdGlvbkNl
bnRlckdldERlZmF1bHRMb2NhbENlbnRlcigpLCB0aGlzLCBidWZmZXJXYXNDb25zdW1lZENhbGxi
YWNrLCBrQ01TYW1wbGVCdWZmZXJDb25zdW1lck5vdGlmaWNhdGlvbl9CdWZmZXJDb25zdW1lZCwg
bnVsbHB0cik7CkBAIC01MDgsNyArMzQxLDcgQEAgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
On5Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQygpCiAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFw
aG9yZS0+c2lnbmFsKCk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRp
ZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3NldCogYXNzZXQpCit2b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlv
blNlZ21lbnQmJiBzZWdtZW50KQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAK
QEAgLTUxNiw1MiArMzQ5LDMzIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRp
ZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3NldCogYXNzZXQpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c2hvdWxkQ2hlY2tIYXJkd2FyZVN1
cHBvcnQoKSkgewotICAgICAgICBmb3IgKEFWQXNzZXRUcmFjayAqdHJhY2sgaW4gW2Fzc2V0IHRy
YWNrc10pIHsKLSAgICAgICAgICAgIGlmICghYXNzZXRUcmFja01lZXRzSGFyZHdhcmVEZWNvZGVS
ZXF1aXJlbWVudHModHJhY2ssIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5tZWRpYUNvbnRlbnRU
eXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgpKSkgeworICAgICAgICBmb3IgKGF1dG8mIGlu
Zm8gOiBzZWdtZW50LnZpZGVvVHJhY2tzKSB7CisgICAgICAgICAgICBhdXRvIGNvZGVjID0gRm91
ckNDOjpmcm9tU3RyaW5nKGluZm8uZGVzY3JpcHRpb24tPmNvZGVjKCkpOworICAgICAgICAgICAg
aWYgKCFjb2RlYykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmICgh
Y29kZWNzTWVldEhhcmR3YXJlRGVjb2RlUmVxdWlyZW1lbnRzKHt7ICpjb2RlYyB9fSwgbV9tZWRp
YVNvdXJjZS0+cGxheWVyKCktPm1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBw
b3J0KCkpKSB7CiAgICAgICAgICAgICAgICAgbV9wYXJzaW5nU3VjY2VlZGVkID0gZmFsc2U7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgbV9hc3NldCA9IGFzc2V0OwotCi0gICAgbV92aWRlb1RyYWNrcy5jbGVhcigpOwotICAg
IG1fYXVkaW9UcmFja3MuY2xlYXIoKTsKLQotICAgIG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJ
bml0aWFsaXphdGlvblNlZ21lbnQgPSBmYWxzZTsKLQotICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudCBzZWdtZW50OwotCi0gICAgaWYgKFttX2Fzc2V0
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob3ZlcmFsbER1cmF0aW9uSGludCldKQotICAg
ICAgICBzZWdtZW50LmR1cmF0aW9uID0gUEFMOjp0b01lZGlhVGltZShbbV9hc3NldCBvdmVyYWxs
RHVyYXRpb25IaW50XSk7Ci0KLSAgICBpZiAoc2VnbWVudC5kdXJhdGlvbi5pc0ludmFsaWQoKSB8
fCBzZWdtZW50LmR1cmF0aW9uID09IE1lZGlhVGltZTo6emVyb1RpbWUoKSkKLSAgICAgICAgc2Vn
bWVudC5kdXJhdGlvbiA9IFBBTDo6dG9NZWRpYVRpbWUoW21fYXNzZXQgZHVyYXRpb25dKTsKLQot
ICAgIGZvciAoQVZBc3NldFRyYWNrKiB0cmFjayBpbiBbbV9hc3NldCB0cmFja3NdKSB7Ci0gICAg
ICAgIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0
aWNMZWdpYmxlXSkgewotICAgICAgICAgICAgLy8gRklYTUUoMTI1MTYxKTogSGFuZGxlIGluLWJh
bmQgdGV4dCB0cmFja3MuCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAgIGNs
ZWFyVHJhY2tzKCk7CiAKLSAgICAgICAgaWYgKFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGlj
OkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbF0pIHsKLSAgICAgICAgICAgIFNvdXJjZUJ1ZmZl
clByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDo6VmlkZW9UcmFja0luZm9ybWF0
aW9uIGluZm87Ci0gICAgICAgICAgICBhdXRvIHZpZGVvVHJhY2sgPSBWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNrLCB0aGlzKTsKLSAgICAgICAgICAgIGlu
Zm8udHJhY2sgPSB2aWRlb1RyYWNrLmNvcHlSZWYoKTsKLSAgICAgICAgICAgIG1fdmlkZW9UcmFj
a3MuYXBwZW5kKFdURk1vdmUodmlkZW9UcmFjaykpOwotICAgICAgICAgICAgaW5mby5kZXNjcmlw
dGlvbiA9IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDOjpjcmVhdGUodHJhY2spOwotICAgICAgICAg
ICAgc2VnbWVudC52aWRlb1RyYWNrcy5hcHBlbmQoaW5mbyk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
W3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJs
ZV0pIHsKLSAgICAgICAgICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0
aW9uU2VnbWVudDo6QXVkaW9UcmFja0luZm9ybWF0aW9uIGluZm87Ci0gICAgICAgICAgICBhdXRv
IGF1ZGlvVHJhY2sgPSBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRl
KHRyYWNrLCB0aGlzKTsKLSAgICAgICAgICAgIGluZm8udHJhY2sgPSBhdWRpb1RyYWNrLmNvcHlS
ZWYoKTsKLSAgICAgICAgICAgIG1fYXVkaW9UcmFja3MuYXBwZW5kKFdURk1vdmUoYXVkaW9UcmFj
aykpOwotICAgICAgICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IE1lZGlhRGVzY3JpcHRpb25BVkZP
YmpDOjpjcmVhdGUodHJhY2spOwotICAgICAgICAgICAgc2VnbWVudC5hdWRpb1RyYWNrcy5hcHBl
bmQoaW5mbyk7Ci0gICAgICAgIH0KKyAgICBmb3IgKGF1dG8gdmlkZW9UcmFja0luZm8gOiBzZWdt
ZW50LnZpZGVvVHJhY2tzKSB7CisgICAgICAgIHZpZGVvVHJhY2tJbmZvLnRyYWNrLT5zZXRTZWxl
Y3RlZENoYW5nZWRDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKFZpZGVv
VHJhY2tQcml2YXRlJiB0cmFjaywgYm9vbCBzZWxlY3RlZCkgeworICAgICAgICAgICAgaWYgKHdl
YWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT50cmFja0RpZENoYW5nZVNlbGVjdGVk
KHRyYWNrLCBzZWxlY3RlZCk7CisgICAgICAgIH0pOworICAgICAgICBtX3ZpZGVvVHJhY2tzLmFw
cGVuZCh2aWRlb1RyYWNrSW5mby50cmFjayk7CisgICAgfQogCi0gICAgICAgIC8vIEZJWE1FKDEy
NTE2MSk6IEFkZCBUZXh0VHJhY2sgc3VwcG9ydAorICAgIGZvciAoYXV0byBhdWRpb1RyYWNrSW5m
byA6IHNlZ21lbnQuYXVkaW9UcmFja3MpIHsKKyAgICAgICAgYXVkaW9UcmFja0luZm8udHJhY2st
PnNldEVuYWJsZWRDaGFuZ2VkQ2FsbGJhY2soW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyld
IChBdWRpb1RyYWNrUHJpdmF0ZSYgdHJhY2ssIGJvb2wgZW5hYmxlZCkgeworICAgICAgICAgICAg
aWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT50cmFja0RpZENoYW5nZUVu
YWJsZWQodHJhY2ssIGVuYWJsZWQpOworICAgICAgICB9KTsKKyAgICAgICAgbV9hdWRpb1RyYWNr
cy5hcHBlbmQoYXVkaW9UcmFja0luZm8udHJhY2spOwogICAgIH0KIAogICAgIGlmIChtX21lZGlh
U291cmNlKQpAQCAtNTcxLDYxICszODUsMjkgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChBVkFzc2V0KiBhc3NldCkKICAgICAgICAg
bV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdt
ZW50KHNlZ21lbnQpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRG
YWlsVG9QYXJzZVN0cmVhbURhdGFXaXRoRXJyb3IoTlNFcnJvciAqZXJyb3IpCit2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmcoaW50
MzJfdCBjb2RlKQogewogI2lmIExPR19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShlcnJvcik7
CisgICAgVU5VU0VEX1BBUkFNKGNvZGUpOwogI2VuZGlmCi0gICAgRVJST1JfTE9HKExPR0lERU5U
SUZJRVIsIFtbZXJyb3IgZGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKKyAgICBFUlJPUl9MT0co
TE9HSURFTlRJRklFUiwgY29kZSk7CiAKICAgICBtX3BhcnNpbmdTdWNjZWVkZWQgPSBmYWxzZTsK
IH0KIAotc3RydWN0IFByb2Nlc3NDb2RlZEZyYW1lSW5mbyB7Ci0gICAgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMqIHNvdXJjZUJ1ZmZlcjsKLSAgICBpbnQgdHJhY2tJRDsKLSAgICBjb25zdCBT
dHJpbmcmIG1lZGlhVHlwZTsKLX07Ci0KLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGludCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZl
clJlZiBzYW1wbGVCdWZmZXIsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlLCB1bnNpZ25lZCkKK3Zv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFj
a0lEKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNhbXBsZSwgaW50MzJfdCB0cmFja0lELCBjb25z
dCBTdHJpbmcmIG1lZGlhVHlwZSkKIHsKLSAgICBwcm9jZXNzQ29kZWRGcmFtZSh0cmFja0lELCBz
YW1wbGVCdWZmZXIsIG1lZGlhVHlwZSk7Ci19CisgICAgVU5VU0VEX1BBUkFNKG1lZGlhVHlwZSk7
CiAKLWJvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnByb2Nlc3NDb2RlZEZyYW1lKGlu
dCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIsIGNvbnN0IFN0cmluZyYp
Ci17CiAgICAgaWYgKHRyYWNrSUQgIT0gbV9lbmFibGVkVmlkZW9UcmFja0lEICYmICFtX2F1ZGlv
UmVuZGVyZXJzLmNvbnRhaW5zKHRyYWNrSUQpKSB7CiAgICAgICAgIC8vIEZJWE1FKDEyNTE2MSk6
IFdlIGRvbid0IGhhbmRsZSB0ZXh0IHRyYWNrcywgYW5kIHBhc3NpbmcgdGhpcyBzYW1wbGUgdXAg
dG8gU291cmNlQnVmZmVyCiAgICAgICAgIC8vIHdpbGwganVzdCBjb25mdXNlIGl0cyBzdGF0ZS4g
RHJvcCB0aGlzIHNhbXBsZSB1bnRpbCB3ZSBjYW4gaGFuZGxlIHRleHQgdHJhY2tzIHByb3Blcmx5
LgotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBp
ZiAobV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4dEluaXRpYWxpemF0aW9uU2VnbWVudCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFtX2NsaWVudCkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICBhdXRvIG1lZGlhU2FtcGxlID0gTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUo
c2FtcGxlQnVmZmVyLCB0cmFja0lEKTsKLQotICAgIGlmIChtZWRpYVNhbXBsZS0+aXNIb21vZ2Vu
ZW91cygpKSB7Ci0gICAgICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCBtZWRpYVNhbXBsZS0+
dG9KU09OU3RyaW5nKCkpOworICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCBtZWRpYVNhbXBs
ZS0+dG9KU09OU3RyaW5nKCkpOworICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQt
PnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2FtcGxlKG1lZGlhU2FtcGxlKTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgYXV0byBtZWRpYVNhbXBsZXMgPSBtZWRpYVNh
bXBsZS0+ZGl2aWRlSW50b0hvbW9nZW5lb3VzU2FtcGxlcygpOwotICAgIGZvciAoYXV0byYgc2Ft
cGxlIDogbWVkaWFTYW1wbGVzKSB7Ci0gICAgICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCBz
YW1wbGUtPnRvSlNPTlN0cmluZygpKTsKLSAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclBy
aXZhdGVEaWRSZWNlaXZlU2FtcGxlKHNhbXBsZSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFJlYWNoRW5kT2ZUcmFj
a1dpdGhUcmFja0lEKGludCwgY29uc3QgU3RyaW5nJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRl
bnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChpbnQgdHJhY2tJRCkKQEAg
LTYzMywxOCArNDE1LDIwIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OndpbGxQ
cm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGCiAgICAgaWYgKCFtX21l
ZGlhU291cmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQobV9wYXJzZXIpOwotCiAj
aWYgSEFWRShBVlNUUkVBTVNFU1NJT04pICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElB
KQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInRyYWNrID0gIiwgdHJhY2tJRCk7CiAK
ICAgICBtX3Byb3RlY3RlZFRyYWNrSUQgPSB0cmFja0lEOwogCisgICAgYXV0byBwYXJzZXIgPSB0
aGlzLT5wYXJzZXIoKTsKKyAgICBpZiAoIXBhcnNlcikKKyAgICAgICAgcmV0dXJuOworCiAgICAg
aWYgKENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMqIHNlc3Npb24gPSBtX21lZGlhU291cmNl
LT5wbGF5ZXIoKS0+Y2RtU2Vzc2lvbigpKQotICAgICAgICBzZXNzaW9uLT5hZGRQYXJzZXIobV9w
YXJzZXIuZ2V0KCkpOworICAgICAgICBzZXNzaW9uLT5hZGRQYXJzZXIocGFyc2VyKTsKICAgICBl
bHNlIGlmICghQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmlzQXZhaWxhYmxlKCkpIHsK
ICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIFttX21lZGlhU291
cmNlLT5wbGF5ZXIoKS0+c3RyZWFtU2Vzc2lvbigpIGFkZFN0cmVhbURhdGFQYXJzZXI6bV9wYXJz
ZXIuZ2V0KCldOworICAgICAgICBbbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPnN0cmVhbVNlc3Np
b24oKSBhZGRTdHJlYW1EYXRhUGFyc2VyOnBhcnNlcl07CiAgICAgICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKICAgICB9CiAjZWxzZQpAQCAtNjUyLDcgKzQzNiw3IEBAIHZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OndpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFs
aXphdGlvbkRhdGFGCiAjZW5kaWYKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJ
RChOU0RhdGEqIGluaXREYXRhLCBpbnQgdHJhY2tJRCwgQm94PEJpbmFyeVNlbWFwaG9yZT4gaGFz
U2Vzc2lvblNlbWFwaG9yZSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBy
b3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoUmVmPFVp
bnQ4QXJyYXk+JiYgaW5pdERhdGEsIGludCB0cmFja0lELCBCb3g8QmluYXJ5U2VtYXBob3JlPiBo
YXNTZXNzaW9uU2VtYXBob3JlKQogewogICAgIGlmICghbV9tZWRpYVNvdXJjZSkKICAgICAgICAg
cmV0dXJuOwpAQCAtNjYxLDExICs0NDUsMTEgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KICAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJ0cmFjayA9ICIsIHRyYWNrSUQpOwogCiAgICAg
bV9wcm90ZWN0ZWRUcmFja0lEID0gdHJhY2tJRDsKLSAgICBtX2luaXREYXRhID0gVWludDhBcnJh
eTo6Y3JlYXRlKFtpbml0RGF0YSBsZW5ndGhdKTsKLSAgICBbaW5pdERhdGEgZ2V0Qnl0ZXM6bV9p
bml0RGF0YS0+ZGF0YSgpIGxlbmd0aDptX2luaXREYXRhLT5sZW5ndGgoKV07CisgICAgbV9pbml0
RGF0YSA9IFdURk1vdmUoaW5pdERhdGEpOwogICAgIG1fbWVkaWFTb3VyY2UtPnNvdXJjZUJ1ZmZl
cktleU5lZWRlZCh0aGlzLCBtX2luaXREYXRhLmdldCgpKTsKICAgICBpZiAoYXV0byBzZXNzaW9u
ID0gbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPmNkbVNlc3Npb24oKSkgewotICAgICAgICBzZXNz
aW9uLT5hZGRQYXJzZXIobV9wYXJzZXIuZ2V0KCkpOworICAgICAgICBpZiAoYXV0byBwYXJzZXIg
PSB0aGlzLT5wYXJzZXIoKSkKKyAgICAgICAgICAgIHNlc3Npb24tPmFkZFBhcnNlcihwYXJzZXIp
OwogICAgICAgICBoYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTY3NiwxNCArNDYwLDE1IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvCiAg
ICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlID0gaGFzU2Vzc2lvblNlbWFwaG9yZTsKICAgICAKICNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCi0g
ICAgYXV0byBpbml0RGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRhKTsK
KyAgICBhdXRvIGluaXREYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9pbml0RGF0
YS0+ZGF0YSgpLCBtX2luaXREYXRhLT5ieXRlTGVuZ3RoKCkpOwogICAgIGF1dG8ga2V5SURzID0g
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2luZihpbml0RGF0YUJ1
ZmZlcik7CiAgICAgaWYgKCFrZXlJRHMpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2Nk
bUluc3RhbmNlKSB7CiAgICAgICAgIGlmIChhdXRvIGluc3RhbmNlU2Vzc2lvbiA9IG1fY2RtSW5z
dGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMoa2V5SURzLnZhbHVlKCkpKSB7Ci0gICAgICAgICAgICBb
aW5zdGFuY2VTZXNzaW9uLT5jb250ZW50S2V5U2Vzc2lvbigpIGFkZENvbnRlbnRLZXlSZWNpcGll
bnQ6bV9wYXJzZXIuZ2V0KCldOworICAgICAgICAgICAgaWYgKGF1dG8gcGFyc2VyID0gdGhpcy0+
cGFyc2VyKCkpCisgICAgICAgICAgICAgICAgW2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNl
c3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50OnBhcnNlcl07CiAgICAgICAgICAgICBpZiAo
bV9oYXNTZXNzaW9uU2VtYXBob3JlKSB7CiAgICAgICAgICAgICAgICAgbV9oYXNTZXNzaW9uU2Vt
YXBob3JlLT5zaWduYWwoKTsKICAgICAgICAgICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUg
PSBudWxscHRyOwpAQCAtNzI0LDE2ICs1MDksNTQgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRhdGEpCiB7CiAgICAgREVC
VUdfTE9HKExPR0lERU5USUZJRVIsICJkYXRhIGxlbmd0aCA9ICIsIGRhdGEuc2l6ZSgpKTsKIAor
ICAgIEFTU0VSVCghbV9oYXNTZXNzaW9uU2VtYXBob3JlKTsKKyAgICBBU1NFUlQoIW1fYWJvcnRT
ZW1hcGhvcmUpOworCisgICAgbV9hYm9ydFNlbWFwaG9yZSA9IEJveDxTZW1hcGhvcmU+OjpjcmVh
dGUoMCk7CisgICAgbV9wYXJzZXItPnNldFdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0
aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyksIGFib3J0U2VtYXBob3JlID0gbV9hYm9ydFNlbWFwaG9yZV0gKHVpbnQzMl90IHRyYWNr
SUQpIG11dGFibGUgeworICAgICAgICAvLyBXZSBtdXN0IGNhbGwgc3luY2hyb25vdXNseSB0byB0
aGUgbWFpbiB0aHJlYWQsIGFzIHRoZSBBVlN0cmVhbVNlc3Npb24gbXVzdCBiZSBhc3NvY2lhdGVk
CisgICAgICAgIC8vIHdpdGggdGhlIHN0cmVhbURhdGFQYXJzZXIgYmVmb3JlIHRoZSBkZWxlZ2F0
ZSBtZXRob2QgcmV0dXJucy4KKyAgICAgICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gcmVzcG9uZGVk
U2VtYXBob3JlID0gQm94PEJpbmFyeVNlbWFwaG9yZT46OmNyZWF0ZSgpOworICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCB0cmFja0lELCByZXNw
b25kZWRTZW1hcGhvcmVdKCkgeworICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAg
ICAgICAgIHdlYWtUaGlzLT53aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm9yVHJhY2tJRCh0cmFja0lEKTsKKyAgICAgICAgICAgIHJlc3BvbmRlZFNlbWFwaG9y
ZS0+c2lnbmFsKCk7CisgICAgICAgIH0pOworCisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAg
ICAgICAgICBpZiAocmVzcG9uZGVkU2VtYXBob3JlLT53YWl0Rm9yKDEwMF9tcykpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAoYWJvcnRTZW1hcGhvcmUtPndhaXRG
b3IoMTAwX21zKSkgeworICAgICAgICAgICAgICAgIGFib3J0U2VtYXBob3JlLT5zaWduYWwoKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
KTsKKworICAgIG1fcGFyc2VyLT5zZXREaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFs
aXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhp
cyksIGFib3J0U2VtYXBob3JlID0gbV9hYm9ydFNlbWFwaG9yZV0gKFJlZjxVaW50OEFycmF5PiYm
IGluaXREYXRhLCBpbnQzMl90IHRyYWNrSUQpIG11dGFibGUgeworICAgICAgICBCb3g8QmluYXJ5
U2VtYXBob3JlPiBoYXNTZXNzaW9uU2VtYXBob3JlID0gQm94PEJpbmFyeVNlbWFwaG9yZT46OmNy
ZWF0ZSgpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vh
a1RoaXMpLCBpbml0RGF0YSA9IFdURk1vdmUoaW5pdERhdGEpLCB0cmFja0lELCBoYXNTZXNzaW9u
U2VtYXBob3JlXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAg
ICAgICAgICAgICB3ZWFrVGhpcy0+ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6
YXRpb25EYXRhRm9yVHJhY2tJRChXVEZNb3ZlKGluaXREYXRhKSwgdHJhY2tJRCwgaGFzU2Vzc2lv
blNlbWFwaG9yZSk7CisgICAgICAgIH0pOworCisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAg
ICAgICAgICBpZiAoaGFzU2Vzc2lvblNlbWFwaG9yZS0+d2FpdEZvcigxMDBfbXMpKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYgKGFib3J0U2VtYXBob3JlLT53YWl0
Rm9yKDEwMF9tcykpIHsKKyAgICAgICAgICAgICAgICBhYm9ydFNlbWFwaG9yZS0+c2lnbmFsKCk7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fSk7CisKICAgICBtX3BhcnNpbmdTdWNjZWVkZWQgPSB0cnVlOwogICAgIGRpc3BhdGNoX2dyb3Vw
X2VudGVyKG1faXNBcHBlbmRpbmdHcm91cC5nZXQoKSk7CiAKLSAgICBkaXNwYXRjaF9hc3luYyhn
bG9iYWxEYXRhUGFyc2VyUXVldWUoKSwgW2RhdGEgPSBXVEZNb3ZlKGRhdGEpLCB3ZWFrVGhpcyA9
IG1fYXBwZW5kV2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyksIHBhcnNlciA9IG1fcGFy
c2VyLCBkZWxlZ2F0ZSA9IG1fZGVsZWdhdGUsIGlzQXBwZW5kaW5nR3JvdXAgPSBtX2lzQXBwZW5k
aW5nR3JvdXAsIHBhcnNlclN0YXRlV2FzUmVzZXQgPSBtX3BhcnNlclN0YXRlV2FzUmVzZXRdICgp
IG11dGFibGUgewotICAgICAgICBhdXRvIHNoYXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKGRhdGEpKTsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBzaGFyZWREYXRhLT5jcmVh
dGVOU0RhdGEoKTsKLSAgICAgICAgaWYgKHBhcnNlclN0YXRlV2FzUmVzZXQpCi0gICAgICAgICAg
ICBbcGFyc2VyIGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdpdGhGbGFnczpBVlN0cmVh
bURhdGFQYXJzZXJTdHJlYW1EYXRhRGlzY29udGludWl0eV07Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIFtwYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCldOworICAgIGRpc3Bh
dGNoX2FzeW5jKGdsb2JhbERhdGFQYXJzZXJRdWV1ZSgpLCBbZGF0YSA9IFdURk1vdmUoZGF0YSks
IHdlYWtUaGlzID0gbV9hcHBlbmRXZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCp0aGlzKSwgcGFy
c2VyID0gbV9wYXJzZXIsIGlzQXBwZW5kaW5nR3JvdXAgPSBtX2lzQXBwZW5kaW5nR3JvdXBdICgp
IG11dGFibGUgeworICAgICAgICBwYXJzZXItPmFwcGVuZERhdGEoV1RGTW92ZShkYXRhKSk7CiAK
ICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXNdIHsKICAgICAgICAgICAgIGlmICh3
ZWFrVGhpcykKQEAgLTc0MSwxMSArNTY0LDIwIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQogICAgICAgICB9KTsK
ICAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfbGVhdmUoaXNBcHBlbmRpbmdHcm91cC5nZXQoKSk7CiAg
ICAgfSk7Ci0gICAgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0ID0gZmFsc2U7CiB9CiAKIHZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZENvbXBsZXRlZCgpCiB7CisgICAgaWYgKG1f
YWJvcnRTZW1hcGhvcmUpIHsKKyAgICAgICAgbV9hYm9ydFNlbWFwaG9yZS0+c2lnbmFsKCk7Cisg
ICAgICAgIG1fYWJvcnRTZW1hcGhvcmUgPSBuaWw7CisgICAgfQorCisgICAgaWYgKG1faGFzU2Vz
c2lvblNlbWFwaG9yZSkgeworICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgp
OworICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUgPSBuaWw7CisgICAgfQorCiAgICAgaWYg
KG1fcGFyc2luZ1N1Y2NlZWRlZCAmJiBtX21lZGlhU291cmNlKQogICAgICAgICBtX21lZGlhU291
cmNlLT5wbGF5ZXIoKS0+c2V0TG9hZGluZ1Byb2dyZXNzc2VkKHRydWUpOwogCkBAIC03NjAsMzkg
KzU5MiwzOSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphYm9ydCgpCiAgICAg
Ly8gVGhlIHBhcnNpbmcgcXVldWUgbWF5IGJlIGJsb2NrZWQgd2FpdGluZyBmb3IgdGhlIG1haW4g
dGhyZWFkIHRvIHByb3ZpZGUgaXQgYSBBVlN0cmVhbVNlc3Npb24uIFdlCiAgICAgLy8gd2VyZSBh
c2tlZCB0byBhYm9ydCwgYW5kIHRoYXQgY2FuY2VscyBhbGwgb3V0c3RhbmRpbmcgYXBwZW5kIG9w
ZXJhdGlvbnMuIFdpdGhvdXQgY2FuY2VsbGluZyB0aGlzCiAgICAgLy8gc2VtYXBob3JlLCB0aGUg
bV9pc0FwcGVuZGluZ0dyb3VwIHdhaXQgb3BlcmF0aW9uIHdpbGwgZGVhZGxvY2suCi0gICAgaWYg
KG1faGFzU2Vzc2lvblNlbWFwaG9yZSkKKyAgICBpZiAobV9oYXNTZXNzaW9uU2VtYXBob3JlKSB7
CiAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFsKCk7Ci0gICAgbV9kZWxlZ2F0
ZS5nZXQoKS5hYm9ydFNlbWFwaG9yZS0+c2lnbmFsKCk7CisgICAgICAgIG1faGFzU2Vzc2lvblNl
bWFwaG9yZSA9IG51bGxwdHI7CisgICAgfQorICAgIGlmIChtX2Fib3J0U2VtYXBob3JlKSB7Cisg
ICAgICAgIG1fYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAgICBtX2Fib3J0U2VtYXBo
b3JlID0gbnVsbHB0cjsKKyAgICB9CiAgICAgZGlzcGF0Y2hfZ3JvdXBfd2FpdChtX2lzQXBwZW5k
aW5nR3JvdXAuZ2V0KCksIERJU1BBVENIX1RJTUVfRk9SRVZFUik7Ci0gICAgbV9hcHBlbmRXZWFr
RmFjdG9yeS5yZXZva2VBbGwoKTsKLSAgICBtX2RlbGVnYXRlLmdldCgpLnBhcmVudCA9IG1fYXBw
ZW5kV2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyk7Ci0gICAgbV9kZWxlZ2F0ZS5nZXQo
KS5hYm9ydFNlbWFwaG9yZSA9IEJveDxTZW1hcGhvcmU+OjpjcmVhdGUoMCk7CiB9CiAKIHZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnJlc2V0UGFyc2VyU3RhdGUoKQogewogICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUik7CiAKLSAgICBtX3BhcnNlclN0YXRlV2FzUmVzZXQgPSB0
cnVlOwotICAgIG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlvblNlZ21lbnQg
PSB0cnVlOworICAgIG1fcGFyc2VyLT5yZXNldFBhcnNlclN0YXRlKCk7CiB9CiAKIHZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRlc3Ryb3lQYXJzZXIoKQogeworICAgIGF1dG8gcGFy
c2VyID0gdGhpcy0+cGFyc2VyKCk7CisgICAgaWYgKCFwYXJzZXIpCisgICAgICAgIHJldHVybjsK
ICNpZiBIQVZFKEFWU1RSRUFNU0VTU0lPTikgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVE
SUEpCiAgICAgaWYgKG1fbWVkaWFTb3VyY2UgJiYgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPmhh
c1N0cmVhbVNlc3Npb24oKSkKLSAgICAgICAgW21fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5zdHJl
YW1TZXNzaW9uKCkgcmVtb3ZlU3RyZWFtRGF0YVBhcnNlcjptX3BhcnNlci5nZXQoKV07CisgICAg
ICAgIFttX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c3RyZWFtU2Vzc2lvbigpIHJlbW92ZVN0cmVh
bURhdGFQYXJzZXI6cGFyc2VyXTsKICNlbmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
ICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKICAgICBpZiAobV9jZG1JbnN0YW5jZSkgewog
ICAgICAgICBpZiAoYXV0byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUluc3RhbmNlLT5zZXNzaW9u
Rm9yS2V5SURzKG1fa2V5SURzKSkKLSAgICAgICAgICAgIFtpbnN0YW5jZVNlc3Npb24tPmNvbnRl
bnRLZXlTZXNzaW9uKCkgcmVtb3ZlQ29udGVudEtleVJlY2lwaWVudDptX3BhcnNlci5nZXQoKV07
CisgICAgICAgICAgICBbaW5zdGFuY2VTZXNzaW9uLT5jb250ZW50S2V5U2Vzc2lvbigpIHJlbW92
ZUNvbnRlbnRLZXlSZWNpcGllbnQ6cGFyc2VyXTsKICAgICB9CiAjZW5kaWYKLQotICAgIFttX2Rl
bGVnYXRlIGludmFsaWRhdGVdOwotICAgIG1fZGVsZWdhdGUgPSBudWxscHRyOwotICAgIG1fcGFy
c2VyID0gbnVsbHB0cjsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGVz
dHJveVJlbmRlcmVycygpCkBAIC04MTcsNiArNjQ5LDE3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OmRlc3Ryb3lSZW5kZXJlcnMoKQogICAgIG1fYXVkaW9SZW5kZXJlcnMuY2xl
YXIoKTsKIH0KIAordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y2xlYXJUcmFja3Mo
KQoreworICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX3ZpZGVvVHJhY2tzKQorICAgICAgICB0cmFj
ay0+c2V0U2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2sobnVsbHB0cik7CisgICAgbV92aWRlb1RyYWNr
cy5jbGVhcigpOworCisgICAgZm9yIChhdXRvJiB0cmFjayA6IG1fYXVkaW9UcmFja3MpCisgICAg
ICAgIHRyYWNrLT5zZXRFbmFibGVkQ2hhbmdlZENhbGxiYWNrKG51bGxwdHIpOworICAgIG1fYXVk
aW9UcmFja3MuY2xlYXIoKTsKK30KKwogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
cmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
KTsKQEAgLTg1NiwyMSArNjk5LDIxIEBAIGJvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
Omhhc0F1ZGlvKCkgY29uc3QKICAgICByZXR1cm4gbV9jbGllbnQgJiYgbV9jbGllbnQtPnNvdXJj
ZUJ1ZmZlclByaXZhdGVIYXNBdWRpbygpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQoVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMqIHRyYWNrKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tE
aWRDaGFuZ2VTZWxlY3RlZChWaWRlb1RyYWNrUHJpdmF0ZSYgdHJhY2ssIGJvb2wgc2VsZWN0ZWQp
CiB7Ci0gICAgaW50IHRyYWNrSUQgPSB0cmFjay0+dHJhY2tJRCgpOworICAgIGludCB0cmFja0lE
ID0gdHJhY2suaWQoKS50b0ludCgpOwogCi0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAi
dmlkZW8gdHJhY2tJRCA9ICIsIHRyYWNrSUQsICIsIHNlbGVjdGVkID0gIiwgdHJhY2stPnNlbGVj
dGVkKCkpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInZpZGVvIHRyYWNrSUQgPSAi
LCB0cmFja0lELCAiLCBzZWxlY3RlZCA9ICIsIHNlbGVjdGVkKTsKIAotICAgIGlmICghdHJhY2st
PnNlbGVjdGVkKCkgJiYgbV9lbmFibGVkVmlkZW9UcmFja0lEID09IHRyYWNrSUQpIHsKKyAgICBp
ZiAoIXNlbGVjdGVkICYmIG1fZW5hYmxlZFZpZGVvVHJhY2tJRCA9PSB0cmFja0lEKSB7CiAgICAg
ICAgIG1fZW5hYmxlZFZpZGVvVHJhY2tJRCA9IC0xOwotICAgICAgICBbbV9wYXJzZXIgc2V0U2hv
dWxkUHJvdmlkZU1lZGlhRGF0YTpOTyBmb3JUcmFja0lEOnRyYWNrSURdOworICAgICAgICBtX3Bh
cnNlci0+c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoZmFsc2UsIHRyYWNrSUQp
OwogCiAgICAgICAgIGlmIChtX2RlY29tcHJlc3Npb25TZXNzaW9uKQogICAgICAgICAgICAgbV9k
ZWNvbXByZXNzaW9uU2Vzc2lvbi0+c3RvcFJlcXVlc3RpbmdNZWRpYURhdGEoKTsKLSAgICB9IGVs
c2UgaWYgKHRyYWNrLT5zZWxlY3RlZCgpKSB7CisgICAgfSBlbHNlIGlmIChzZWxlY3RlZCkgewog
ICAgICAgICBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgPSB0cmFja0lEOwotICAgICAgICBbbV9wYXJz
ZXIgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YTpZRVMgZm9yVHJhY2tJRDp0cmFja0lEXTsKKyAg
ICAgICAgbV9wYXJzZXItPnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKHRydWUs
IHRyYWNrSUQpOwogCiAgICAgICAgIGlmIChtX2RlY29tcHJlc3Npb25TZXNzaW9uKSB7CiAgICAg
ICAgICAgICBtX2RlY29tcHJlc3Npb25TZXNzaW9uLT5yZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5
KFt0aGlzLCB0cmFja0lEXSB7CkBAIC04ODIsMjEgKzcyNSwyMSBAQCB2b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQoVmlkZW9UcmFja1ByaXZhdGVN
ZWRpYVNvdQogICAgIG1fbWVkaWFTb3VyY2UtPmhhc1NlbGVjdGVkVmlkZW9DaGFuZ2VkKCp0aGlz
KTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFuZ2VF
bmFibGVkKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiB0cmFjaykKK3ZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlRW5hYmxlZChBdWRpb1Ry
YWNrUHJpdmF0ZSYgdHJhY2ssIGJvb2wgZW5hYmxlZCkKIHsKLSAgICBpbnQgdHJhY2tJRCA9IHRy
YWNrLT50cmFja0lEKCk7CisgICAgaW50IHRyYWNrSUQgPSB0cmFjay5pZCgpLnRvSW50KCk7CiAK
LSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJhdWRpbyB0cmFja0lEID0gIiwgdHJhY2tJ
RCwgIiwgc2VsZWN0ZWQgPSAiLCB0cmFjay0+ZW5hYmxlZCgpKTsKKyAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIsICJhdWRpbyB0cmFja0lEID0gIiwgdHJhY2tJRCwgIiwgc2VsZWN0ZWQgPSAi
LCBlbmFibGVkKTsKIAotICAgIGlmICghdHJhY2stPmVuYWJsZWQoKSkgeworICAgIGlmICghZW5h
YmxlZCkgewogICAgICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCiAgICAg
ICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXI+IHJlbmRlcmVyID0gbV9h
dWRpb1JlbmRlcmVycy5nZXQodHJhY2tJRCk7CiAgICAgICAgIEFMTE9XX05FV19BUElfV0lUSE9V
VF9HVUFSRFNfRU5ECi0gICAgICAgIFttX3BhcnNlciBzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRh
Ok5PIGZvclRyYWNrSUQ6dHJhY2tJRF07CisgICAgICAgIG1fcGFyc2VyLT5zZXRTaG91bGRQcm92
aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChmYWxzZSwgdHJhY2tJRCk7CiAgICAgICAgIGlmIChtX21l
ZGlhU291cmNlKQogICAgICAgICAgICAgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPnJlbW92ZUF1
ZGlvUmVuZGVyZXIocmVuZGVyZXIuZ2V0KCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFttX3Bh
cnNlciBzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhOllFUyBmb3JUcmFja0lEOnRyYWNrSURdOwor
ICAgICAgICBtX3BhcnNlci0+c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQodHJ1
ZSwgdHJhY2tJRCk7CiAgICAgICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4K
ICAgICAgICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlcj4gcmVuZGVyZXI7
CiAgICAgICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECkBAIC05MjYsNiArNzY5
LDEzIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlRW5h
YmxlZChBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291CiAgICAgfQogfQogCitBVlN0cmVhbURhdGFQ
YXJzZXIqIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpwYXJzZXIoKSBjb25zdAoreworICAg
IGlmIChpczxTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDPihtX3BhcnNlci5nZXQoKSkpCisgICAg
ICAgIHJldHVybiBkb3duY2FzdDxTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDPihtX3BhcnNlci5n
ZXQoKSkucGFyc2VyKCk7CisgICAgcmV0dXJuIG5pbDsKK30KKwogdm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6c2V0Q0RNU2Vzc2lvbihDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpD
KiBzZXNzaW9uKQogewogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQpAQCAtOTg3
LDcgKzgzNyw4IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmF0dGVtcHRUb0Rl
Y3J5cHQoKQogICAgIGlmICghaW5zdGFuY2VTZXNzaW9uKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBbaW5zdGFuY2VTZXNzaW9uLT5jb250ZW50S2V5U2Vzc2lvbigpIGFkZENvbnRlbnRLZXlSZWNp
cGllbnQ6bV9wYXJzZXIuZ2V0KCldOworICAgIGlmIChhdXRvIHBhcnNlciA9IHRoaXMtPnBhcnNl
cigpKQorICAgICAgICBbaW5zdGFuY2VTZXNzaW9uLT5jb250ZW50S2V5U2Vzc2lvbigpIGFkZENv
bnRlbnRLZXlSZWNpcGllbnQ6cGFyc2VyXTsKICAgICBpZiAobV9oYXNTZXNzaW9uU2VtYXBob3Jl
KSB7CiAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFsKCk7CiAgICAgICAgIG1f
aGFzU2Vzc2lvblNlbWFwaG9yZSA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRl
eCBjNzhiOTUzYzdiYWE4ZWNiMjkyOGJmMmMzZGQ1NTFhOTBlZDIzOGNjLi42YjExY2NhMzJiZGQ0
OWQyYWRkNjEwZTlhN2E3NzZiNTk1YjhhOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJWaWRlb1Ry
YWNrUHJpdmF0ZUFWRi5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogCiAjaWYgRU5BQkxF
KE1FRElBX1NPVVJDRSkKIApAQCAtNDIsMTQgKzQzLDExIEBAIGNsYXNzIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOwogY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMg
ZmluYWwgOiBwdWJsaWMgVmlkZW9UcmFja1ByaXZhdGVBVkYgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKQogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShB
VkFzc2V0VHJhY2sqIHRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQor
ICAgIHN0YXRpYyBSZWY8VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0
ZShBVkFzc2V0VHJhY2sqIHRyYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2ssIHBhcmVudCkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQyh0cmFjaykpOwogICAgIH0KIAotICAgIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2b2lkIHNldFNlbGVjdGVkKGJvb2wpIG92ZXJyaWRlOwotCiAgICAgdm9pZCBz
ZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFjayopOwogICAgIEFWQXNzZXRUcmFjayogYXNzZXRUcmFj
aygpIGNvbnN0OwogCkBAIC01OCwxNCArNTYsMTIgQEAgcHVibGljOgogICAgIEZsb2F0U2l6ZSBu
YXR1cmFsU2l6ZSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKEFWQXNzZXRUcmFjayosIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDKiBwYXJlbnQpOworICAgIGV4cGxpY2l0IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDKEFWQXNzZXRUcmFjayopOwogICAgIAogICAgIHZvaWQgcmVzZXRQcm9wZXJ0
aWVzRnJvbVRyYWNrKCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVZUcmFja1ByaXZhdGVBVkZP
YmpDSW1wbD4gbV9pbXBsOwotICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBtX3BhcmVu
dDsKICAgICBpbnQgbV90cmFja0lEOwotICAgIGJvb2wgbV9zZWxlY3RlZDsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggMmM3MzkyNzk2ZTBmNTI1Zjk0YzI4YWEyMGFhZDEw
ZTMwZDBkMDUxYy4uYWZkMWI3ZjNhOTMzNDkxNzFkOTEwNThmNjg1Y2ZlODBiYjhkNzMyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTM0LDExICszNCw5IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OlZpZGVvVHJh
Y2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCitWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNr
KiB0cmFjaykKICAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0lt
cGw+KHRyYWNrKSkKLSAgICAsIG1fcGFyZW50KHBhcmVudCkKICAgICAsIG1fdHJhY2tJRCgtMSkK
LSAgICAsIG1fc2VsZWN0ZWQoZmFsc2UpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNr
KCk7CiB9CkBAIC02NSwyMSArNjMsNiBAQCBBVkFzc2V0VHJhY2sqIFZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjphc3NldFRyYWNrKCkgY29uc3QKICAgICByZXR1cm4gbV9pbXBs
LT5hc3NldFRyYWNrKCk7CiB9CiAKLQotYm9vbCBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6c2VsZWN0ZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3NlbGVjdGVkOwotfQot
Ci12b2lkIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRTZWxlY3RlZChi
b29sIHNlbGVjdGVkKQotewotICAgIGlmIChtX3NlbGVjdGVkID09IHNlbGVjdGVkKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX3NlbGVjdGVkID0gc2VsZWN0ZWQ7Ci0gICAgbV9wYXJlbnQtPnRy
YWNrRGlkQ2hhbmdlRW5hYmxlZCh0aGlzKTsKLX0KLQogRmxvYXRTaXplIFZpZGVvVHJhY2tQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpuYXR1cmFsU2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IEZsb2F0U2l6ZShbYXNzZXRUcmFjaygpIG5hdHVyYWxTaXplXSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1By
aXZhdGVXZWJNLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjIwYmNmOWRmMTAxYWNhMTg1YjIzYzMxOWZkMjNi
ZDdlZTJjOWQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcApAQCAtMCwwICsxLDc1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2
YXRlV2ViTS5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitSZWY8QXVkaW9UcmFja1ByaXZhdGVXZWJNPiBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06
OmNyZWF0ZSh3ZWJtOjpUcmFja0VudHJ5JiYgdHJhY2tFbnRyeSkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJpdmF0ZVdlYk0oV1RGTW92ZSh0cmFja0VudHJ5KSkpOwor
fQorCitBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OkF1ZGlvVHJhY2tQcml2YXRlV2ViTSh3ZWJtOjpU
cmFja0VudHJ5JiYgdHJhY2tFbnRyeSkKKyAgICA6IG1fdHJhY2soV1RGTW92ZSh0cmFja0VudHJ5
KSkKK3sKKyAgICBpZiAobV90cmFjay5pc19lbmFibGVkLmlzX3ByZXNlbnQoKSkKKyAgICAgICAg
c2V0RW5hYmxlZChtX3RyYWNrLmlzX2VuYWJsZWQudmFsdWUoKSk7Cit9CisKK0F0b21TdHJpbmcg
QXVkaW9UcmFja1ByaXZhdGVXZWJNOjppZCgpIGNvbnN0Cit7CisgICAgaWYgKG1fdHJhY2tJRC5p
c051bGwoKSkKKyAgICAgICAgbV90cmFja0lEID0gbV90cmFjay50cmFja191aWQuaXNfcHJlc2Vu
dCgpID8gQXRvbVN0cmluZzo6bnVtYmVyKG1fdHJhY2sudHJhY2tfdWlkLnZhbHVlKCkpIDogZW1w
dHlBdG9tKCk7CisgICAgcmV0dXJuIG1fdHJhY2tJRDsKK30KKworQXRvbVN0cmluZyBBdWRpb1Ry
YWNrUHJpdmF0ZVdlYk06OmxhYmVsKCkgY29uc3QKK3sKKyAgICBpZiAobV9sYWJlbC5pc051bGwo
KSkKKyAgICAgICAgbV9sYWJlbCA9IG1fdHJhY2submFtZS5pc19wcmVzZW50KCkgPyBBdG9tU3Ry
aW5nOjpmcm9tVVRGOChtX3RyYWNrLm5hbWUudmFsdWUoKS5kYXRhKCksIG1fdHJhY2submFtZS52
YWx1ZSgpLmxlbmd0aCgpKSA6IGVtcHR5QXRvbSgpOworICAgIHJldHVybiBtX2xhYmVsOworfQor
CitBdG9tU3RyaW5nIEF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6bGFuZ3VhZ2UoKSBjb25zdAorewor
ICAgIGlmIChtX2xhbmd1YWdlLmlzTnVsbCgpKQorICAgICAgICBtX2xhbmd1YWdlID0gbV90cmFj
ay5sYW5ndWFnZS5pc19wcmVzZW50KCkgPyBBdG9tU3RyaW5nOjpmcm9tVVRGOChtX3RyYWNrLmxh
bmd1YWdlLnZhbHVlKCkuZGF0YSgpLCBtX3RyYWNrLmxhbmd1YWdlLnZhbHVlKCkubGVuZ3RoKCkp
IDogZW1wdHlBdG9tKCk7CisgICAgcmV0dXJuIG1fbGFuZ3VhZ2U7Cit9CisKK2ludCBBdWRpb1Ry
YWNrUHJpdmF0ZVdlYk06OnRyYWNrSW5kZXgoKSBjb25zdAoreworICAgIGlmIChtX3RyYWNrLnRy
YWNrX251bWJlci5pc19wcmVzZW50KCkpCisgICAgICAgIHJldHVybiBtX3RyYWNrLnRyYWNrX251
bWJlci52YWx1ZSgpOworICAgIHJldHVybiAwOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTk3
OGRmNzhjM2I1NmZhNGU3MWI5MDFkZjZhZjdjOTJlMTY5OTEyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVX
ZWJNLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKKworI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlLmgiCisj
aW5jbHVkZSA8d2VibS9kb21fdHlwZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBBdWRpb1RyYWNrUHJpdmF0ZVdlYk0gZmluYWwgOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGUg
eworcHVibGljOgorICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVXZWJNPiBjcmVhdGUo
d2VibTo6VHJhY2tFbnRyeSYmKTsKKyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNrUHJpdmF0ZVdlYk0o
KSA9IGRlZmF1bHQ7CisKKyAgICBBdG9tU3RyaW5nIGlkKCkgY29uc3QgZmluYWw7CisgICAgQXRv
bVN0cmluZyBsYWJlbCgpIGNvbnN0IGZpbmFsOworICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBj
b25zdCBmaW5hbDsKKyAgICBpbnQgdHJhY2tJbmRleCgpIGNvbnN0IGZpbmFsOworCitwcml2YXRl
OgorICAgIEF1ZGlvVHJhY2tQcml2YXRlV2ViTSh3ZWJtOjpUcmFja0VudHJ5JiYpOworICAgIHdl
Ym06OlRyYWNrRW50cnkgbV90cmFjazsKKyAgICBtdXRhYmxlIEF0b21TdHJpbmcgbV90cmFja0lE
OworICAgIG11dGFibGUgQXRvbVN0cmluZyBtX2xhYmVsOworICAgIG11dGFibGUgQXRvbVN0cmlu
ZyBtX2xhbmd1YWdlOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NPVVJDRSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxOGVkZjZlYTQ0ODA3YTBlMDYx
YjQxNTRhYzg5ZWQzZTE4YTU5OTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCkBAIC0wLDAgKzEs
NTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU291cmNl
QnVmZmVyUGFyc2VyLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5jbHVkZSAi
Q29udGVudFR5cGUuaCIKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgiCisj
aW5jbHVkZSAiU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01lZGlhUGxheWVyRW51bXM6OlN1
cHBvcnRzVHlwZSBTb3VyY2VCdWZmZXJQYXJzZXI6OmlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29u
c3QgQ29udGVudFR5cGUmIHR5cGUpCit7CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNU
eXBlIHN1cHBvcnRzID0gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBv
cnRlZDsKKyAgICBzdXBwb3J0cyA9IHN0ZDo6bWF4KHN1cHBvcnRzLCBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjppc0NvbnRlbnRUeXBlU3VwcG9ydGVkKHR5cGUpKTsKKyAgICBzdXBwb3J0cyA9IHN0
ZDo6bWF4KHN1cHBvcnRzLCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjppc0NvbnRlbnRUeXBl
U3VwcG9ydGVkKHR5cGUpKTsKKyAgICByZXR1cm4gc3VwcG9ydHM7Cit9CisKK1JlZlB0cjxTb3Vy
Y2VCdWZmZXJQYXJzZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6Y3JlYXRlKGNvbnN0IENvbnRlbnRU
eXBlJiBjb250ZW50VHlwZSkKK3sKKyAgICBpZiAoV1RGOjplcXVhbElnbm9yaW5nQVNDSUlDYXNl
KGNvbnRlbnRUeXBlLmNvbnRhaW5lclR5cGUoKSwgImF1ZGlvL3dlYm0iKSB8fCBXVEY6OmVxdWFs
SWdub3JpbmdBU0NJSUNhc2UoY29udGVudFR5cGUuY29udGFpbmVyVHlwZSgpLCAidmlkZW8vd2Vi
bSIpKQorICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0o
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkp
OworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jYmJhYWNjZWIyYTY5ZjM3OGUxNzBlY2IzZTU0NjY0YmIzNzNm
ODAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisKKyNpbmNsdWRlICJN
ZWRpYVBsYXllckVudW1zLmgiCisjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5o
IgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbnRlbnRUeXBl
OworY2xhc3MgTWVkaWFTYW1wbGU7CisKK2NsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlciA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTb3VyY2VCdWZmZXJQYXJzZXI+IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIGlzQ29udGVudFR5cGVTdXBw
b3J0ZWQoY29uc3QgQ29udGVudFR5cGUmKTsKKworICAgIHN0YXRpYyBSZWZQdHI8U291cmNlQnVm
ZmVyUGFyc2VyPiBjcmVhdGUoY29uc3QgQ29udGVudFR5cGUmKTsKKyAgICB2aXJ0dWFsIH5Tb3Vy
Y2VCdWZmZXJQYXJzZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50
OF90IHsKKyAgICAgICAgQVZGT2JqQywKKyAgICAgICAgV2ViTSwKKyAgICB9OworICAgIHZpcnR1
YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOworICAgIGVudW0gY2xhc3MgQXBwZW5kRmxhZ3MgOiB1
aW50OF90IHsKKyAgICAgICAgTm9uZSwKKyAgICAgICAgRGlzY29udGludWl0eSwKKyAgICB9Owor
ICAgIHZpcnR1YWwgdm9pZCBhcHBlbmREYXRhKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmLCBBcHBl
bmRGbGFncyA9IEFwcGVuZEZsYWdzOjpOb25lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZsdXNo
UGVuZGluZ01lZGlhRGF0YSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkUHJvdmlk
ZU1lZGlhRGF0YUZvclRyYWNrSUQoYm9vbCwgaW50MzJfdCkgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRQcm92aWRlTWVkaWFkYXRhRm9yVHJhY2tJRChpbnQzMl90KSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSA9IDA7CisKKyAgICAvLyBXaWxsIGJlIGNhbGxl
ZCBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgdXNpbmcgSW5pdGlhbGl6YXRpb25TZWdtZW50ID0g
U291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OworICAgIHVz
aW5nIERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZv
aWQoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYpPjsKKyAgICB2b2lkIHNldERpZFBhcnNlSW5pdGlh
bGl6YXRpb25EYXRhQ2FsbGJhY2soRGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayYm
IGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CisgICAgfQorCisgICAgLy8gV2lsbCBiZSBjYWxs
ZWQgb24gdGhlIG1haW4gdGhyZWFkLgorICAgIHVzaW5nIERpZEVuY291bnRlckVycm9yRHVyaW5n
UGFyc2luZ0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKGludDMyX3QgZXJyb3JDb2RlKT47
CisgICAgdm9pZCBzZXREaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayhEaWRF
bmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayYmIGNhbGxiYWNrKQorICAgIHsKKyAg
ICAgICAgbV9kaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spOworICAgIH0KKworICAgIC8vIFdpbGwgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRo
cmVhZC4KKyAgICB1c2luZyBEaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0
aW9uPHZvaWQoUmVmPE1lZGlhU2FtcGxlPiYmLCBpbnQzMl90IHRyYWNrSUQsIGNvbnN0IFN0cmlu
ZyYgbWVkaWFUeXBlKT47CisgICAgdm9pZCBzZXREaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2so
RGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrJiYgY2FsbGJhY2spCisgICAgeworICAgICAgICBt
X2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworICAgIH0K
KworICAgIC8vIFdpbGwgYmUgY2FsbGVkIHN5bmNocm9ub3VzbHkgb24gdGhlIHBhcnNlciB0aGVh
ZC4KKyAgICB1c2luZyBXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25E
YXRhRm9yVHJhY2tJRENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKHVpbnQzMl90IHRyYWNr
SUQpPjsKKyAgICB2b2lkIHNldFdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXph
dGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soV2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElu
aXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayYmIGNhbGxiYWNrKQorICAgIHsKKyAg
ICAgICAgbV93aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9y
VHJhY2tJRENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CisgICAgfQorCisgICAgLy8gV2ls
bCBiZSBjYWxsZWQgc3luY2hyb25vdXNseSBvbiB0aGUgcGFyc2VyIHRoZWFkLgorICAgIHVzaW5n
IERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURD
YWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChSZWY8VWludDhBcnJheT4mJiwgaW50MzJfdCB0
cmFja0lEKT47CisgICAgdm9pZCBzZXREaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFs
aXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soRGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrJiYgY2FsbGJhY2spCisgICAgewor
ICAgICAgICBtX2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZv
clRyYWNrSURDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworICAgIH0KKworcHJvdGVjdGVk
OgorICAgIFNvdXJjZUJ1ZmZlclBhcnNlcigpID0gZGVmYXVsdDsKKworICAgIERpZFBhcnNlSW5p
dGlhbGl6YXRpb25EYXRhQ2FsbGJhY2sgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxi
YWNrOworICAgIERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrIG1fZGlkRW5j
b3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2s7CisgICAgRGlkUHJvdmlkZU1lZGlhRGF0
YUNhbGxiYWNrIG1fZGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrOworICAgIFdpbGxQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sgbV93
aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENh
bGxiYWNrOworICAgIERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0
YUZvclRyYWNrSURDYWxsYmFjayBtX2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxp
emF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjazsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRjNjc0MWIyYmNlYWU4OTk0MmQ0NmI4ZjQ4MTM0OGI1M2MxOWEwMDQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNLmNwcApAQCAtMCwwICsxLDM1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgiCisKKyNpZiBF
TkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGVXZWJNLmgi
CisjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgIk1lZGlhRGVz
Y3JpcHRpb24uaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRl
ICJWUDlVdGlsaXRpZXNDb2NvYS5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlV2ViTS5o
IgorI2luY2x1ZGUgPHdlYm0vd2VibV9wYXJzZXIuaD4KKyNpbmNsdWRlIDx3dGYvQWxnb3JpdGht
cy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9kYXJ3
aW4vV2Vha0xpbmtpbmcuaD4KKworV1RGX1dFQUtfTElOS19GT1JDRV9JTVBPUlQod2VibTo6c3dh
cCk7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGJvb2wgaXNXZWJtUGFyc2VyQXZh
aWxhYmxlKCkKK3sKKyAgICByZXR1cm4gISF3ZWJtOjpzd2FwICYmIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViTVBhcnNlckVuYWJsZWQoKTsKK30KKwordXNpbmcg
bmFtZXNwYWNlIHdlYm07CisKK2NsYXNzIFZlY3RvclJlYWRlciBmaW5hbCA6IHB1YmxpYyB3ZWJt
OjpSZWFkZXIgeworcHVibGljOgorICAgIFZlY3RvclJlYWRlcihWZWN0b3I8dW5zaWduZWQgY2hh
cj4mJiBkYXRhKQorICAgICAgICA6IG1fZGF0YSB7IFdURk1vdmUoZGF0YSkgfQorICAgIHsKKyAg
ICB9CisKKyAgICBTdGF0dXMgUmVhZChzdGQ6OnNpemVfdCBudW1Ub1JlYWQsIHVpbnQ4X3QqIG91
dHB1dEJ1ZmZlciwgdWludDY0X3QqIG51bUFjdHVhbGx5UmVhZCkgZmluYWwKKyAgICB7CisgICAg
ICAgIEFTU0VSVChvdXRwdXRCdWZmZXIgJiYgbnVtQWN0dWFsbHlSZWFkKTsKKyAgICAgICAgaWYg
KCFvdXRwdXRCdWZmZXIgfHwgIW51bUFjdHVhbGx5UmVhZCkKKyAgICAgICAgICAgIHJldHVybiBT
dGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKworICAgICAgICBpZiAobV9wb3NpdGlv
biA+PSBtX2RhdGEuc2l6ZSgpKSB7CisgICAgICAgICAgICAqbnVtQWN0dWFsbHlSZWFkID0gMDsK
KyAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprRW5kT2ZGaWxlKTsKKyAgICAgICAg
fQorCisgICAgICAgIHNpemVfdCBudW1BdmFpbGFibGUgPSBtX2RhdGEuc2l6ZSgpIC0gbV9wb3Np
dGlvbjsKKyAgICAgICAgaWYgKG51bVRvUmVhZCA8IG51bUF2YWlsYWJsZSkgeworICAgICAgICAg
ICAgbWVtY3B5KG91dHB1dEJ1ZmZlciwgbV9kYXRhLmRhdGEoKSArIG1fcG9zaXRpb24sIG51bVRv
UmVhZCk7CisgICAgICAgICAgICAqbnVtQWN0dWFsbHlSZWFkID0gbnVtVG9SZWFkOworICAgICAg
ICAgICAgbV9wb3NpdGlvbiArPSBudW1Ub1JlYWQ7CisgICAgICAgICAgICByZXR1cm4gU3RhdHVz
KFN0YXR1czo6a09rQ29tcGxldGVkKTsKKyAgICAgICAgfQorCisgICAgICAgIG1lbWNweShvdXRw
dXRCdWZmZXIsIG1fZGF0YS5kYXRhKCkgKyBtX3Bvc2l0aW9uLCBudW1BdmFpbGFibGUpOworICAg
ICAgICAqbnVtQWN0dWFsbHlSZWFkID0gbnVtQXZhaWxhYmxlOworICAgICAgICBtX3Bvc2l0aW9u
ICs9IG51bUF2YWlsYWJsZTsKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa1BhcnRp
YWwpOworICAgIH0KKworICAgIFN0YXR1cyBTa2lwKHVpbnQ2NF90IG51bVRvU2tpcCwgdWludDY0
X3QqIG51bUFjdHVhbGx5U2tpcHBlZCkgZmluYWwKKyAgICB7CisgICAgICAgIEFTU0VSVChudW1B
Y3R1YWxseVNraXBwZWQpOworICAgICAgICBpZiAoIW51bUFjdHVhbGx5U2tpcHBlZCkKKyAgICAg
ICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKworICAgICAg
ICBpZiAobV9wb3NpdGlvbiA+PSBtX2RhdGEuc2l6ZSgpKSB7CisgICAgICAgICAgICAqbnVtQWN0
dWFsbHlTa2lwcGVkID0gMDsKKyAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprV291
bGRCbG9jayk7CisgICAgICAgIH0KKworICAgICAgICBzaXplX3QgbnVtQXZhaWxhYmxlID0gbV9k
YXRhLnNpemUoKSAtIG1fcG9zaXRpb247CisKKyAgICAgICAgaWYgKG51bVRvU2tpcCA8IG51bUF2
YWlsYWJsZSkgeworICAgICAgICAgICAgKm51bUFjdHVhbGx5U2tpcHBlZCA9IG51bVRvU2tpcDsK
KyAgICAgICAgICAgIG1fcG9zaXRpb24gKz0gbnVtVG9Ta2lwOworICAgICAgICAgICAgcmV0dXJu
IFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CisgICAgICAgIH0KKworICAgICAgICAqbnVt
QWN0dWFsbHlTa2lwcGVkID0gbnVtQXZhaWxhYmxlOworICAgICAgICBtX3Bvc2l0aW9uICs9IG51
bUF2YWlsYWJsZTsKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa1BhcnRpYWwpOwor
ICAgIH0KKworICAgIHVpbnQ2NF90IFBvc2l0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9w
b3NpdGlvbjsgfQorCitwcml2YXRlOgorICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBtX2RhdGE7
CisgICAgc2l6ZV90IG1fcG9zaXRpb24geyAwIH07Cit9OworCitjbGFzcyBNZWRpYURlc2NyaXB0
aW9uV2ViTSBmaW5hbCA6IHB1YmxpYyBNZWRpYURlc2NyaXB0aW9uIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPE1lZGlhRGVzY3JpcHRpb25XZWJNPiBjcmVhdGUod2VibTo6VHJhY2tFbnRyeSYm
IHRyYWNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFEZXNjcmlw
dGlvbldlYk0oV1RGTW92ZSh0cmFjaykpKTsKKyAgICB9CisKKyAgICBNZWRpYURlc2NyaXB0aW9u
V2ViTSh3ZWJtOjpUcmFja0VudHJ5JiYgdHJhY2spCisgICAgICAgIDogbV90cmFjayB7IFdURk1v
dmUodHJhY2spIH0KKyAgICB7CisgICAgfQorCisgICAgQXRvbVN0cmluZyBjb2RlYygpIGNvbnN0
IGZpbmFsCisgICAgeworICAgICAgICBpZiAobV9jb2RlYykKKyAgICAgICAgICAgIHJldHVybiAq
bV9jb2RlYzsKKworICAgICAgICAvLyBGcm9tOiBodHRwczovL3d3dy5tYXRyb3NrYS5vcmcvdGVj
aG5pY2FsL2NvZGVjX3NwZWNzLmh0bWwKKyAgICAgICAgLy8gIkVhY2ggQ29kZWMgSUQgTVVTVCBp
bmNsdWRlIGEgTWFqb3IgQ29kZWMgSUQgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRoZSBDb2RlYyBJ
RCBQcmVmaXguCisgICAgICAgIC8vIEEgTWFqb3IgQ29kZWMgSUQgTUFZIGJlIGZvbGxvd2VkIGJ5
IGFuIE9QVElPTkFMIENvZGVjIElEIFN1ZmZpeCB0byBjb21tdW5pY2F0ZSBhIHJlZmluZW1lbnQK
KyAgICAgICAgLy8gb2YgdGhlIE1ham9yIENvZGVjIElELiBJZiBhIENvZGVjIElEIFN1ZmZpeCBp
cyB1c2VkLCB0aGVuIHRoZSBDb2RlYyBJRCBNVVNUIGluY2x1ZGUgYSBmb3J3YXJkCisgICAgICAg
IC8vIHNsYXNoICjigJwv4oCdKSBhcyBhIHNlcGFyYXRvciBiZXR3ZWVuIHRoZSBNYWpvciBDb2Rl
YyBJRCBhbmQgdGhlIENvZGVjIElEIFN1ZmZpeC4gVGhlIE1ham9yIENvZGVjCisgICAgICAgIC8v
IElEIE1VU1QgYmUgY29tcG9zZWQgb2Ygb25seSBjYXBpdGFsIGxldHRlcnMgKEEtWikgYW5kIG51
bWJlcnMgKDAtOSkuIFRoZSBDb2RlYyBJRCBTdWZmaXggTVVTVAorICAgICAgICAvLyBiZSBjb21w
b3NlZCBvZiBvbmx5IGNhcGl0YWwgbGV0dGVycyAoQS1aKSwgbnVtYmVycyAoMC05KSwgdW5kZXJz
Y29yZSAo4oCcX+KAnSksIGFuZCBmb3J3YXJkIHNsYXNoICjigJwv4oCdKS4iCisKKyAgICAgICAg
aWYgKCFtX3RyYWNrLmNvZGVjX2lkLmlzX3ByZXNlbnQoKSkgeworICAgICAgICAgICAgbV9jb2Rl
YyA9IGVtcHR5QXRvbSgpOworICAgICAgICAgICAgcmV0dXJuICptX2NvZGVjOworICAgICAgICB9
CisKKyAgICAgICAgU3RyaW5nVmlldyBjb2RlY0lEIHsgbV90cmFjay5jb2RlY19pZC52YWx1ZSgp
LmRhdGEoKSwgKHVuc2lnbmVkKW1fdHJhY2suY29kZWNfaWQudmFsdWUoKS5sZW5ndGgoKSB9Owor
ICAgICAgICBpZiAoIWNvZGVjSUQuc3RhcnRzV2l0aCgiVl8iKSAmJiAhY29kZWNJRC5zdGFydHNX
aXRoKCJBXyIpICYmICFjb2RlY0lELnN0YXJ0c1dpdGgoIlNfIikpIHsKKyAgICAgICAgICAgIG1f
Y29kZWMgPSBlbXB0eUF0b20oKTsKKyAgICAgICAgICAgIHJldHVybiAqbV9jb2RlYzsKKyAgICAg
ICAgfQorCisgICAgICAgIGF1dG8gc2xhc2hMb2NhdGlvbiA9IGNvZGVjSUQuZmluZCgnLycpOwor
ICAgICAgICBhdXRvIGxlbmd0aCA9IHNsYXNoTG9jYXRpb24gPT0gbm90Rm91bmQgPyBjb2RlY0lE
Lmxlbmd0aCgpIC0gMiA6IHNsYXNoTG9jYXRpb24gLSAyOworICAgICAgICBtX2NvZGVjID0gQXRv
bVN0cmluZyB7IGNvZGVjSUQuc3Vic3RyaW5nKDIsIGxlbmd0aCkuY29udmVydFRvQVNDSUlMb3dl
cmNhc2UoKSB9OworICAgICAgICByZXR1cm4gKm1fY29kZWM7CisgICAgfQorICAgIGJvb2wgaXNW
aWRlbygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdHJhY2sudHJhY2tfdHlwZS5pc19wcmVzZW50
KCkgJiYgbV90cmFjay50cmFja190eXBlLnZhbHVlKCkgPT0gVHJhY2tUeXBlOjprVmlkZW87IH0K
KyAgICBib29sIGlzQXVkaW8oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RyYWNrLnRyYWNrX3R5
cGUuaXNfcHJlc2VudCgpICYmIG1fdHJhY2sudHJhY2tfdHlwZS52YWx1ZSgpID09IFRyYWNrVHlw
ZTo6a0F1ZGlvOyB9CisgICAgYm9vbCBpc1RleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Ry
YWNrLnRyYWNrX3R5cGUuaXNfcHJlc2VudCgpICYmIG1fdHJhY2sudHJhY2tfdHlwZS52YWx1ZSgp
ID09IFRyYWNrVHlwZTo6a1N1YnRpdGxlOyB9CisKKyAgICBjb25zdCB3ZWJtOjpUcmFja0VudHJ5
JiB0cmFjaygpIHsgcmV0dXJuIG1fdHJhY2s7IH0KKworcHJpdmF0ZToKKyAgICBtdXRhYmxlIE9w
dGlvbmFsPEF0b21TdHJpbmc+IG1fY29kZWM7CisgICAgd2VibTo6VHJhY2tFbnRyeSBtX3RyYWNr
OworfTsKKworTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIFNvdXJjZUJ1ZmZlclBhcnNl
cldlYk06OmlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29uc3QgQ29udGVudFR5cGUmIHR5cGUpCit7
CisgICAgaWYgKCFpc1dlYm1QYXJzZXJBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIE1lZGlh
UGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CisKKyAgICBpZiAoIVdU
Rjo6ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLmNvbnRhaW5lclR5cGUoKSwgImF1ZGlvL3dl
Ym0iKQorICAgICAgICAmJiAhV1RGOjplcXVhbElnbm9yaW5nQVNDSUlDYXNlKHR5cGUuY29udGFp
bmVyVHlwZSgpLCAidmlkZW8vd2VibSIpKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVt
czo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKKworICAgIFN0cmluZyBjb2RlY3NQYXJh
bWV0ZXIgPSB0eXBlLnBhcmFtZXRlcihDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVyKCkpOwor
ICAgIGlmICghY29kZWNzUGFyYW1ldGVyKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVt
czo6U3VwcG9ydHNUeXBlOjpNYXlCZVN1cHBvcnRlZDsKKworICAgIGF1dG8gc3BsaXRSZXN1bHRz
ID0gU3RyaW5nVmlldyhjb2RlY3NQYXJhbWV0ZXIpLnNwbGl0KCcsJyk7CisgICAgZm9yIChhdXRv
IHNwbGl0IDogc3BsaXRSZXN1bHRzKSB7CisgICAgICAgIGlmIChzcGxpdC5zdGFydHNXaXRoKCJv
cHVzIikpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKHNwbGl0LnN0YXJ0c1dp
dGgoInZwMDkiKSkgeworICAgICAgICAgICAgaWYgKCFpc1ZQOURlY29kZXJBdmFpbGFibGUoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJ
c05vdFN1cHBvcnRlZDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAg
IC8vIEZJWE1FOiBBZGQgVm9yYmlzIFN1cHBvcnQKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVy
RW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgfQorICAgIHJldHVybiBN
ZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkOworfQorCitTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNKCkKK3sKKyAgICBpZiAoaXNX
ZWJtUGFyc2VyQXZhaWxhYmxlKCkpCisgICAgICAgIG1fcGFyc2VyID0gV1RGOjptYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxXZWJtUGFyc2VyPigpOworfQorCitTb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNOjp+U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpID0gZGVmYXVsdDsKKwordm9pZCBT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjphcHBlbmREYXRhKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYm
IGJ1ZmZlciwgQXBwZW5kRmxhZ3MgYXBwZW5kRmxhZ3MpCit7CisgICAgaWYgKCFtX3BhcnNlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yUmVhZGVyIHJlYWRlciB7IFdURk1vdmUoYnVm
ZmVyKSB9OworICAgIGlmIChhcHBlbmRGbGFncyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGludWl0
eSkKKyAgICAgICAgbV9wYXJzZXItPkRpZFNlZWsoKTsKKyAgICBtX3N0YXR1cyA9IG1fcGFyc2Vy
LT5GZWVkKHRoaXMsICZyZWFkZXIpOworICAgIGlmIChtX3N0YXR1cy5vaygpIHx8IG1fc3RhdHVz
LmNvZGUgPT0gU3RhdHVzOjprRW5kT2ZGaWxlKQorICAgICAgICByZXR1cm47CisKKyAgICBjYWxs
T25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvZGUg
PSBtX3N0YXR1cy5jb2RlXSB7CisgICAgICAgIGlmIChtX2RpZEVuY291bnRlckVycm9yRHVyaW5n
UGFyc2luZ0NhbGxiYWNrKQorICAgICAgICAgICAgbV9kaWRFbmNvdW50ZXJFcnJvckR1cmluZ1Bh
cnNpbmdDYWxsYmFjayhjb2RlKTsKKyAgICB9KTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpmbHVzaFBlbmRpbmdNZWRpYURhdGEoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2V0U2hvdWxkUHJvdmlkZU1lZGlh
RGF0YUZvclRyYWNrSUQoYm9vbCwgaW50MzJfdCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCitib29sIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnNob3VsZFByb3ZpZGVNZWRpYWRhdGFG
b3JUcmFja0lEKGludDMyX3QpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6cmVzZXRQYXJzZXJTdGF0
ZSgpCit7CisgICAgbV9wYXJzZXItPkRpZFNlZWsoKTsKKyAgICBtX3N0YXRlID0gU3RhdGU6Ok5v
bmU7Cit9CisKK1N0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkVsZW1lbnRCZWdpbihj
b25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBBY3Rpb24qIGFjdGlvbikKK3sKKyAgICBV
TlVTRURfUEFSQU0obWV0YWRhdGEpOworICAgIEFTU0VSVChhY3Rpb24pOworICAgIGlmICghYWN0
aW9uKQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisK
KyAgICBpZiAoKG1fc3RhdGUgPT0gU3RhdGU6Ok5vbmUgJiYgbWV0YWRhdGEuaWQgIT0gSWQ6OmtF
Ym1sKQorICAgICAgICB8fCAobV9zdGF0ZSA9PSBTdGF0ZTo6UmVhZEVibWwgJiYgbWV0YWRhdGEu
aWQgIT0gSWQ6OmtTZWdtZW50KQorICAgICAgICB8fCAobV9zdGF0ZSA9PSBTdGF0ZTo6UmVhZGlu
Z1NlZ21lbnQgJiYgbWV0YWRhdGEuaWQgIT0gSWQ6OmtJbmZvKQorICAgICAgICB8fCAobV9zdGF0
ZSA9PSBTdGF0ZTo6UmVhZEluZm8gJiYgbWV0YWRhdGEuaWQgIT0gSWQ6OmtUcmFja3MpCisgICAg
ICAgIHx8IChtX3N0YXRlID09IFN0YXRlOjpSZWFkVHJhY2sgJiYgbWV0YWRhdGEuaWQgIT0gSWQ6
OmtUcmFja0VudHJ5ICYmIG1ldGFkYXRhLmlkICE9IElkOjprQ2x1c3RlcikKKyAgICAgICAgfHwg
KG1ldGFkYXRhLmlkID09IElkOjprQ3VlcyB8fCBtZXRhZGF0YS5pZCA9PSBJZDo6a0NoYXB0ZXJz
KSkgeworICAgICAgICAqYWN0aW9uID0gQWN0aW9uOjprU2tpcDsKKyAgICAgICAgcmV0dXJuIFN0
YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CisgICAgfQorCisgICAgaWYgKG1ldGFkYXRhLmlk
ID09IElkOjprRWJtbCkKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkaW5nRWJtbDsKKyAg
ICBlbHNlIGlmIChtZXRhZGF0YS5pZCA9PSBJZDo6a1NlZ21lbnQpCisgICAgICAgIG1fc3RhdGUg
PSBTdGF0ZTo6UmVhZGluZ1NlZ21lbnQ7CisgICAgZWxzZSBpZiAobWV0YWRhdGEuaWQgPT0gSWQ6
OmtJbmZvKQorICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWRpbmdJbmZvOworICAgIGVsc2Ug
aWYgKG1ldGFkYXRhLmlkID09IElkOjprVHJhY2tzKQorICAgICAgICBtX3N0YXRlID0gU3RhdGU6
OlJlYWRpbmdUcmFja3M7CisgICAgZWxzZSBpZiAobWV0YWRhdGEuaWQgPT0gSWQ6OmtUcmFja0Vu
dHJ5KQorICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWRpbmdUcmFjazsKKyAgICBlbHNlIGlm
IChtZXRhZGF0YS5pZCA9PSBJZDo6a0NsdXN0ZXIpCisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6
UmVhZGluZ0NsdXN0ZXI7CisKKyAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVk
KTsKK30KKworU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRWJtbChjb25zdCBFbGVt
ZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBFYm1sJiBlYm1sKQoreworICAgIFVOVVNFRF9Q
QVJBTShtZXRhZGF0YSk7CisgICAgaWYgKGVibWwuZG9jX3R5cGUuaXNfcHJlc2VudCgpICYmIGVi
bWwuZG9jX3R5cGUudmFsdWUoKS5jb21wYXJlKCJ3ZWJtIikpCisgICAgICAgIHJldHVybiBTdGF0
dXMoU3RhdHVzOjpDb2RlKEVycm9yQ29kZTo6SW52YWxpZERvY1R5cGUpKTsKKworICAgIG1faW5p
dGlhbGl6YXRpb25TZWdtZW50RW5jb3VudGVyZWQgPSB0cnVlOworICAgIG1faW5pdGlhbGl6YXRp
b25TZWdtZW50ID0gV1RGOjptYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxJbml0aWFs
aXphdGlvblNlZ21lbnQ+KCk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkRWJtbDsKKworICAg
IHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworfQorCitTdGF0dXMgU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6T25TZWdtZW50QmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBt
ZXRhZGF0YSwgQWN0aW9uKiBhY3Rpb24pCit7CisgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsK
KyAgICBpZiAoIW1faW5pdGlhbGl6YXRpb25TZWdtZW50RW5jb3VudGVyZWQpCisgICAgICAgIHJl
dHVybiBTdGF0dXMoU3RhdHVzOjpDb2RlKEVycm9yQ29kZTo6SW52YWxpZEluaXRTZWdtZW50KSk7
CisKKyAgICBBU1NFUlQoYWN0aW9uKTsKKyAgICBpZiAoIWFjdGlvbikKKyAgICAgICAgcmV0dXJu
IFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworICAgICphY3Rpb24gPSBBY3Rpb246
OmtSZWFkOworCisgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7Cit9CisK
K1N0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkluZm8oY29uc3QgRWxlbWVudE1ldGFk
YXRhJiBtZXRhZGF0YSwgY29uc3QgSW5mbyYgaW5mbykKK3sKKyAgICBVTlVTRURfUEFSQU0obWV0
YWRhdGEpOworICAgIGlmICghbV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCB8fCAh
bV9pbml0aWFsaXphdGlvblNlZ21lbnQpCisgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjpD
b2RlKEVycm9yQ29kZTo6SW52YWxpZEluaXRTZWdtZW50KSk7CisKKyAgICBhdXRvIHRpbWVjb2Rl
U2NhbGUgPSBpbmZvLnRpbWVjb2RlX3NjYWxlLmlzX3ByZXNlbnQoKSA/IGluZm8udGltZWNvZGVf
c2NhbGUudmFsdWUoKSA6IDEwMDAwMDA7CisgICAgbV90aW1lc2NhbGUgPSAxMDAwMDAwMDAwIC8g
dGltZWNvZGVTY2FsZTsKKyAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudC0+ZHVyYXRpb24gPSBp
bmZvLmR1cmF0aW9uLmlzX3ByZXNlbnQoKSA/IE1lZGlhVGltZShpbmZvLmR1cmF0aW9uLnZhbHVl
KCksIG1fdGltZXNjYWxlKSA6IE1lZGlhVGltZTo6aW5kZWZpbml0ZVRpbWUoKTsKKyAgICBtX3N0
YXRlID0gU3RhdGU6OlJlYWRJbmZvOworCisgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0Nv
bXBsZXRlZCk7Cit9CisKK1N0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkNsdXN0ZXJC
ZWdpbihjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBDbHVzdGVyJiBjbHVz
dGVyLCBBY3Rpb24qIGFjdGlvbikKK3sKKyAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOworICAg
IFVOVVNFRF9QQVJBTShjbHVzdGVyKTsKKyAgICBBU1NFUlQoYWN0aW9uKTsKKyAgICBpZiAoIWFj
dGlvbikKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOwor
CisgICAgaWYgKG1faW5pdGlhbGl6YXRpb25TZWdtZW50RW5jb3VudGVyZWQgJiYgbV9kaWRQYXJz
ZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5pdGlhbGl6YXRpb25TZWdt
ZW50ID0gV1RGTW92ZSgqbV9pbml0aWFsaXphdGlvblNlZ21lbnQpXSAoKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhXVEZNb3ZlKGlu
aXRpYWxpemF0aW9uU2VnbWVudCkpOworICAgICAgICB9KTsKKyAgICB9CisgICAgbV9pbml0aWFs
aXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCA9IGZhbHNlOworICAgIG1faW5pdGlhbGl6YXRpb25T
ZWdtZW50ID0gbnVsbHB0cjsKKworICAgICphY3Rpb24gPSBBY3Rpb246OmtSZWFkOworCisgICAg
cmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7Cit9CisKK1N0YXR1cyBTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpPblRyYWNrRW50cnkoY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRh
ZGF0YSwgY29uc3QgVHJhY2tFbnRyeSYgdHJhY2tFbnRyeSkKK3sKKyAgICBVTlVTRURfUEFSQU0o
bWV0YWRhdGEpOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZFRyYWNrOworICAgIGlmICghdHJh
Y2tFbnRyeS50cmFja190eXBlLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhT
dGF0dXM6OmtPa0NvbXBsZXRlZCk7CisKKyAgICBhdXRvIHRyYWNrVHlwZSA9IHRyYWNrRW50cnku
dHJhY2tfdHlwZS52YWx1ZSgpOworICAgIGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprVmlk
ZW8pCisgICAgICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50LT52aWRlb1RyYWNrcy5hcHBlbmQo
eyBNZWRpYURlc2NyaXB0aW9uV2ViTTo6Y3JlYXRlKFRyYWNrRW50cnkodHJhY2tFbnRyeSkpLCBW
aWRlb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZShUcmFja0VudHJ5KHRyYWNrRW50cnkpKSB9KTsK
KyAgICBlbHNlIGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprQXVkaW8pCisgICAgICAgIG1f
aW5pdGlhbGl6YXRpb25TZWdtZW50LT5hdWRpb1RyYWNrcy5hcHBlbmQoeyBNZWRpYURlc2NyaXB0
aW9uV2ViTTo6Y3JlYXRlKFRyYWNrRW50cnkodHJhY2tFbnRyeSkpLCBBdWRpb1RyYWNrUHJpdmF0
ZVdlYk06OmNyZWF0ZShUcmFja0VudHJ5KHRyYWNrRW50cnkpKSB9KTsKKworICAgIHJldHVybiBT
dGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3
NTg4OTdiNDViNDJlYmRjYjgzMzg1ZjQyYmRlMTQ0ZWZiMTgxZTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmgKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXIu
aCIKKyNpbmNsdWRlIDx3ZWJtL2NhbGxiYWNrLmg+CisjaW5jbHVkZSA8d2VibS9zdGF0dXMuaD4K
KyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNs
dWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCit0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBs
ZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7CisKK25hbWVzcGFjZSB3ZWJtIHsKK2NsYXNzIFdl
Ym1QYXJzZXI7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU291cmNlQnVmZmVy
UGFyc2VyV2ViTSA6IHB1YmxpYyBTb3VyY2VCdWZmZXJQYXJzZXIsIHByaXZhdGUgd2VibTo6Q2Fs
bGJhY2sgeworcHVibGljOgorICAgIHN0YXRpYyBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5
cGUgaXNDb250ZW50VHlwZVN1cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYpOworCisgICAgU291
cmNlQnVmZmVyUGFyc2VyV2ViTSgpOworICAgIH5Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNKCk7CisK
KyAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOworCisgICAgY29uc3Qgd2VibTo6U3RhdHVz
JiBzdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1czsgfQorCisgICAgVHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gVHlwZTo6V2ViTTsgfQorICAgIHZvaWQgYXBwZW5kRGF0YShWZWN0b3I8
dW5zaWduZWQgY2hhcj4mJiwgQXBwZW5kRmxhZ3MgPSBBcHBlbmRGbGFnczo6Tm9uZSkgZmluYWw7
CisgICAgdm9pZCBmbHVzaFBlbmRpbmdNZWRpYURhdGEoKSBmaW5hbDsKKyAgICB2b2lkIHNldFNo
b3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGJvb2wsIGludDMyX3QpIGZpbmFsOworICAg
IGJvb2wgc2hvdWxkUHJvdmlkZU1lZGlhZGF0YUZvclRyYWNrSUQoaW50MzJfdCkgZmluYWw7Cisg
ICAgdm9pZCByZXNldFBhcnNlclN0YXRlKCkgZmluYWw7CisKKyAgICBlbnVtIGNsYXNzIEVycm9y
Q29kZSA6IGludDMyX3QgeworICAgICAgICBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNRXJyb3JDb2Rl
U3RhcnQgPSAyMDAwLAorICAgICAgICBJbnZhbGlkRG9jVHlwZSwKKyAgICAgICAgSW52YWxpZElu
aXRTZWdtZW50LAorICAgIH07CisKK3ByaXZhdGU6CisgICAgLy8gd2VibTo6Q2FsbGJhY2sKKyAg
ICB3ZWJtOjpTdGF0dXMgT25FbGVtZW50QmVnaW4oY29uc3Qgd2VibTo6RWxlbWVudE1ldGFkYXRh
Jiwgd2VibTo6QWN0aW9uKikgZmluYWw7CisgICAgd2VibTo6U3RhdHVzIE9uRWJtbChjb25zdCB3
ZWJtOjpFbGVtZW50TWV0YWRhdGEmLCBjb25zdCB3ZWJtOjpFYm1sJikgZmluYWw7CisgICAgd2Vi
bTo6U3RhdHVzIE9uU2VnbWVudEJlZ2luKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYsIHdl
Ym06OkFjdGlvbiopIGZpbmFsOworICAgIHdlYm06OlN0YXR1cyBPbkluZm8oY29uc3Qgd2VibTo6
RWxlbWVudE1ldGFkYXRhJiwgY29uc3Qgd2VibTo6SW5mbyYpIGZpbmFsOworICAgIHdlYm06OlN0
YXR1cyBPbkNsdXN0ZXJCZWdpbihjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmLCBjb25zdCB3
ZWJtOjpDbHVzdGVyJiwgd2VibTo6QWN0aW9uKikgZmluYWw7CisgICAgd2VibTo6U3RhdHVzIE9u
VHJhY2tFbnRyeShjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmLCBjb25zdCB3ZWJtOjpUcmFj
a0VudHJ5JikgZmluYWw7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5pdGlhbGl6YXRpb25TZWdt
ZW50PiBtX2luaXRpYWxpemF0aW9uU2VnbWVudDsKKyAgICB3ZWJtOjpTdGF0dXMgbV9zdGF0dXM7
CisgICAgc3RkOjp1bmlxdWVfcHRyPHdlYm06OldlYm1QYXJzZXI+IG1fcGFyc2VyOworICAgIGJv
b2wgbV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCB7IGZhbHNlIH07CisgICAgdWlu
dDMyX3QgbV90aW1lc2NhbGUgeyAxMDAwIH07CisKKyAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWlu
dDhfdCB7CisgICAgICAgIE5vbmUsCisgICAgICAgIFJlYWRpbmdFYm1sLAorICAgICAgICBSZWFk
RWJtbCwKKyAgICAgICAgUmVhZGluZ1NlZ21lbnQsCisgICAgICAgIFJlYWRpbmdJbmZvLAorICAg
ICAgICBSZWFkSW5mbywKKyAgICAgICAgUmVhZGluZ1RyYWNrcywKKyAgICAgICAgUmVhZGluZ1Ry
YWNrLAorICAgICAgICBSZWFkVHJhY2ssCisgICAgICAgIFJlYWRpbmdDbHVzdGVyLAorICAgIH07
CisgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpOb25lIH07CisKKyAgICBWZWN0b3I8d2VibTo6
VHJhY2tFbnRyeT4gbV90cmFja3M7Cit9OworCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkVHSU4oV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTSkKKyAgICBzdGF0aWMgYm9vbCBp
c1R5cGUoY29uc3QgV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyJiBwYXJzZXIpIHsgcmV0dXJu
IHBhcnNlci50eXBlKCkgPT0gV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpUeXBlOjpXZWJN
OyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvVlA5VXRpbGl0aWVzQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLmgKaW5kZXggMDU4ZDdmOTZhYzAxYmQ1ZmRiNDAz
Y2Y4ZTBhYjVhMTg4YjkwYTc0Yy4uNzQwNjg5NzVlYjUyYTIyOTgzMjNjYmJjYTQ3NGFlNGEyMzQz
ODU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
VlA5VXRpbGl0aWVzQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5oCkBAIC0zOCw2ICszOCw3IEBAIFdFQkNPUkVfRVhQ
T1JUIGV4dGVybiB2b2lkIHNldE92ZXJyaWRlVlA5SGFyZHdhcmVEZWNvZGVyRGlzYWJsZWRGb3JU
ZXN0aW5nKGJvb2wpCiBXRUJDT1JFX0VYUE9SVCBleHRlcm4gdm9pZCBzZXRPdmVycmlkZVZQOVNj
cmVlblNpemVBbmRTY2FsZUZvclRlc3RpbmcoZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxv
YXQgc2NhbGUpOwogV0VCQ09SRV9FWFBPUlQgZXh0ZXJuIHZvaWQgcmVzZXRPdmVycmlkZVZQOVNj
cmVlblNpemVBbmRTY2FsZUZvclRlc3RpbmcoKTsKIAorZXh0ZXJuIGJvb2wgaXNWUDlEZWNvZGVy
QXZhaWxhYmxlKCk7CiBleHRlcm4gYm9vbCB2YWxpZGF0ZVZQUGFyYW1ldGVycyhWUENvZGVjQ29u
ZmlndXJhdGlvblJlY29yZCYsIE1lZGlhQ2FwYWJpbGl0aWVzSW5mbyYsIGNvbnN0IFZpZGVvQ29u
ZmlndXJhdGlvbiYpOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tCmluZGV4IDU2ODU5NTMzZGVi
NmFlY2M5MGM1N2UxOTUxMmNmZGQ4ZTBlMmU0YjEuLjI4ODdhNTJlM2MzMjZmOGU1MWMwYzhhMWFi
M2EwYjJhMjQyYTY3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tCkBAIC05NiwxMCArOTYsMTQg
QEAgc3RhdGljIFJlc29sdXRpb25DYXRlZ29yeSByZXNvbHV0aW9uQ2F0ZWdvcnkoY29uc3QgRmxv
YXRTaXplJiBzaXplKQogICAgIHJldHVybiBSZXNvbHV0aW9uQ2F0ZWdvcnk6OlJfNDgwcDsKIH0K
IAorYm9vbCBpc1ZQOURlY29kZXJBdmFpbGFibGUoKQoreworICAgIHJldHVybiBub0VyciA9PSBW
VFNlbGVjdEFuZENyZWF0ZVZpZGVvRGVjb2Rlckluc3RhbmNlKGtDTVZpZGVvQ29kZWNUeXBlX1ZQ
OSwga0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgbnVsbHB0cik7Cit9CisKIGJvb2wgdmFs
aWRhdGVWUFBhcmFtZXRlcnMoVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQmIGNvZGVjQ29uZmln
dXJhdGlvbiwgTWVkaWFDYXBhYmlsaXRpZXNJbmZvJiBpbmZvLCBjb25zdCBWaWRlb0NvbmZpZ3Vy
YXRpb24mIHZpZGVvQ29uZmlndXJhdGlvbikKIHsKLSAgICBPU1N0YXR1cyBzdGF0dXMgPSBWVFNl
bGVjdEFuZENyZWF0ZVZpZGVvRGVjb2Rlckluc3RhbmNlKGtDTVZpZGVvQ29kZWNUeXBlX1ZQOSwg
a0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgaWYgKHN0YXR1cyAh
PSBub0VycikKKyAgICBpZiAoIWlzVlA5RGVjb2RlckF2YWlsYWJsZSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAvLyBWaWRlb0NvbmZpZ3VyYXRpb24gYW5kIFZQQ29kZWNDb25maWd1
cmF0aW9uUmVjb3JkIGNhbiBoYXZlIGNvbmZsaWN0aW5nIHZhbHVlcyBmb3IgSERSIHByb3BlcnRp
ZXMuIElmIHNvLCByZWplY3QuCkBAIC0xMjIsNyArMTI2LDcgQEAgYm9vbCB2YWxpZGF0ZVZQUGFy
YW1ldGVycyhWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYgY29kZWNDb25maWd1cmF0aW9uLCBN
ZWRpYUMKICAgICAgICAgaW5mby5wb3dlckVmZmljaWVudCA9IHRydWU7CiAKICAgICAgICAgLy8g
SFcgVlA5IERlY29kZXIgc3VwcG9ydHMgUHJvZmlsZSAwICYgMjoKLSAgICAgICAgaWYgKCFjb2Rl
Y0NvbmZpZ3VyYXRpb24ucHJvZmlsZSAmJiBjb2RlY0NvbmZpZ3VyYXRpb24ucHJvZmlsZSAhPSAy
KQorICAgICAgICBpZiAoY29kZWNDb25maWd1cmF0aW9uLnByb2ZpbGUgJiYgY29kZWNDb25maWd1
cmF0aW9uLnByb2ZpbGUgIT0gMikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAg
ICAvLyBIVyBWUDkgRGVjb2RlciBzdXBwb3J0cyB1cCB0byBMZXZlbCA2OgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVX
ZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJh
Y2tQcml2YXRlV2ViTS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmEzNGYyZTU4M2ZlY2JkYTM0Zjc1N2JiMmIz
MTk3ZjNlZmNlODIzMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKQEAgLTAsMCArMSw3NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNr
UHJpdmF0ZVdlYk0uaCIKKworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworUmVmPFZpZGVvVHJhY2tQcml2YXRlV2ViTT4gVmlkZW9UcmFja1ByaXZhdGVX
ZWJNOjpjcmVhdGUod2VibTo6VHJhY2tFbnRyeSYmIHRyYWNrRW50cnkpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFja1ByaXZhdGVXZWJNKFdURk1vdmUodHJhY2tFbnRyeSkp
KTsKK30KKworVmlkZW9UcmFja1ByaXZhdGVXZWJNOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk0od2Vi
bTo6VHJhY2tFbnRyeSYmIHRyYWNrRW50cnkpCisgICAgOiBtX3RyYWNrKFdURk1vdmUodHJhY2tF
bnRyeSkpCit7CisgICAgaWYgKG1fdHJhY2suaXNfZW5hYmxlZC5pc19wcmVzZW50KCkpCisgICAg
ICAgIHNldFNlbGVjdGVkKG1fdHJhY2suaXNfZW5hYmxlZC52YWx1ZSgpKTsKK30KKworQXRvbVN0
cmluZyBWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OmlkKCkgY29uc3QKK3sKKyAgICBpZiAobV90cmFj
a0lELmlzTnVsbCgpKQorICAgICAgICBtX3RyYWNrSUQgPSBtX3RyYWNrLnRyYWNrX3VpZC5pc19w
cmVzZW50KCkgPyBBdG9tU3RyaW5nOjpudW1iZXIobV90cmFjay50cmFja191aWQudmFsdWUoKSkg
OiBlbXB0eUF0b20oKTsKKyAgICByZXR1cm4gbV90cmFja0lEOworfQorCitBdG9tU3RyaW5nIFZp
ZGVvVHJhY2tQcml2YXRlV2ViTTo6bGFiZWwoKSBjb25zdAoreworICAgIGlmIChtX2xhYmVsLmlz
TnVsbCgpKQorICAgICAgICBtX2xhYmVsID0gbV90cmFjay5uYW1lLmlzX3ByZXNlbnQoKSA/IEF0
b21TdHJpbmc6OmZyb21VVEY4KG1fdHJhY2submFtZS52YWx1ZSgpLmRhdGEoKSwgbV90cmFjay5u
YW1lLnZhbHVlKCkubGVuZ3RoKCkpIDogZW1wdHlBdG9tKCk7CisgICAgcmV0dXJuIG1fbGFiZWw7
Cit9CisKK0F0b21TdHJpbmcgVmlkZW9UcmFja1ByaXZhdGVXZWJNOjpsYW5ndWFnZSgpIGNvbnN0
Cit7CisgICAgaWYgKG1fbGFuZ3VhZ2UuaXNOdWxsKCkpCisgICAgICAgIG1fbGFuZ3VhZ2UgPSBt
X3RyYWNrLmxhbmd1YWdlLmlzX3ByZXNlbnQoKSA/IEF0b21TdHJpbmc6OmZyb21VVEY4KG1fdHJh
Y2subGFuZ3VhZ2UudmFsdWUoKS5kYXRhKCksIG1fdHJhY2subGFuZ3VhZ2UudmFsdWUoKS5sZW5n
dGgoKSkgOiBlbXB0eUF0b20oKTsKKyAgICByZXR1cm4gbV9sYW5ndWFnZTsKK30KKworaW50IFZp
ZGVvVHJhY2tQcml2YXRlV2ViTTo6dHJhY2tJbmRleCgpIGNvbnN0Cit7CisgICAgaWYgKG1fdHJh
Y2sudHJhY2tfbnVtYmVyLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgcmV0dXJuIG1fdHJhY2sudHJh
Y2tfbnVtYmVyLnZhbHVlKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK30KKworI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE3NjdiOTFkOTZlZmVhZjQ5ZjNjNzkwYzcyZDYzYTJmZDgxNTNiODEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJp
dmF0ZVdlYk0uaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGUu
aCIKKyNpbmNsdWRlIDx3ZWJtL2RvbV90eXBlcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFZpZGVvVHJhY2tQcml2YXRlV2ViTSBmaW5hbCA6IHB1YmxpYyBWaWRlb1RyYWNrUHJp
dmF0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZVdlYk0+IGNy
ZWF0ZSh3ZWJtOjpUcmFja0VudHJ5JiYpOworICAgIHZpcnR1YWwgflZpZGVvVHJhY2tQcml2YXRl
V2ViTSgpID0gZGVmYXVsdDsKKworICAgIEF0b21TdHJpbmcgaWQoKSBjb25zdCBmaW5hbDsKKyAg
ICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3QgZmluYWw7CisgICAgQXRvbVN0cmluZyBsYW5ndWFn
ZSgpIGNvbnN0IGZpbmFsOworICAgIGludCB0cmFja0luZGV4KCkgY29uc3QgZmluYWw7CisKK3By
aXZhdGU6CisgICAgVmlkZW9UcmFja1ByaXZhdGVXZWJNKHdlYm06OlRyYWNrRW50cnkmJik7Cisg
ICAgd2VibTo6VHJhY2tFbnRyeSBtX3RyYWNrOworICAgIG11dGFibGUgQXRvbVN0cmluZyBtX3Ry
YWNrSUQ7CisgICAgbXV0YWJsZSBBdG9tU3RyaW5nIG1fbGFiZWw7CisgICAgbXV0YWJsZSBBdG9t
U3RyaW5nIG1fbGFuZ3VhZ2U7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU09V
UkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFt
bCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKaW5kZXggZTA0Y2Fk
Y2EyZGM1YThjNDE5YjcyZmExOWVlNzNmZTczYTEwYjYwMS4uNDJiMDQ5NzA5YjNmZTA4ZWEzMGZj
NWRkOTZmNjgxYmY2YzdjMTYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UHJlZmVyZW5jZXMueWFtbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNl
cy55YW1sCkBAIC02NjgsNiArNjY4LDE1IEBAIFZQOURlY29kZXJFbmFibGVkOgogICBodW1hblJl
YWRhYmxlRGVzY3JpcHRpb246ICJFbmFibGUgVlA5IGRlY29kZXIiCiAgIGNhdGVnb3J5OiBleHBl
cmltZW50YWwKIAorV2ViTVBhcnNlckVuYWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAgZGVmYXVsdFZh
bHVlOiBmYWxzZQorICB3ZWJjb3JlQmluZGluZzogUnVudGltZUVuYWJsZWRGZWF0dXJlcworICBo
dW1hblJlYWRhYmxlTmFtZTogIldlYk0gTVNFIHBhcnNlciIKKyAgaHVtYW5SZWFkYWJsZURlc2Ny
aXB0aW9uOiAiRW5hYmxlIFdlYk0gTVNFIHBhcnNlciIKKyAgY2F0ZWdvcnk6IGV4cGVyaW1lbnRh
bAorICBjb25kaXRpb246IEVOQUJMRShNRURJQV9TT1VSQ0UpCisKIFVzZUxlZ2FjeVRleHRBbGln
blBvc2l0aW9uZWRFbGVtZW50QmVoYXZpb3I6CiAgIHR5cGU6IGJvb2wKICAgZGVmYXVsdFZhbHVl
OiBmYWxzZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404800</attachid>
            <date>2020-07-21 00:41:25 -0700</date>
            <delta_ts>2020-07-21 00:44:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214529-20200721004124.patch</filename>
            <type>text/plain</type>
            <size>15737</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCA3MjZjYTBiNDk3MzYzZGZmNDU0ZGZkMzIzODE2MzI1Y2MyOTBmN2I4Li5iMjE3
ZjBmMjRiODE1MjY3NWIwMjgwZTMwN2U3NGUyZThhZjNhZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMC0wNy0yMSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBleHBlcmltZW50
YWwgTVNFIFdlYk0gcGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTQ1MjkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1NzgyNDY3PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0aGUgdnA5
X2hlYWRlcl9wYXJzZXIgZnJvbSBsaWJ3ZWJydGMgdG8gdGhlIHByb2plY3QsIGFuZCBhZGQgaXRz
CisgICAgICAgIHN5bWJvbHMgdG8gdGhlIGxpc3Qgb2YgZXhwb3J0ZWQgc3ltYm9scy4gQmVjYXVz
ZSB0aGlzIGhlYWRlciB3YW50cyB0bworICAgICAgICBiZSBpbnN0YWxsZWQgdG8gYSAiY29tbW9u
L3ZwOV9oZWFkZXJfcGFyc2VyLmgiIHBhdGgsIHNwbGl0IHVwIHRoZSBkZWZhdWx0CisgICAgICAg
IENvcHlIZWFkZXJzSW5zdGFsbFBoYXNlIGludG8gdHdvIHNlcGFyYXRlIENvcHlGaWxlcyBidWls
ZCBwaGFzZXMgdGhhdAorICAgICAgICBwdXQgaGVhZGVycyBpbnRvIGRpZmZlcmVudCBsb2NhdGlv
bnMuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJtLnhjY29uZmlnOgorICAgICAg
ICAqIENvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwOgorICAgICAgICAqIENvbmZpZ3Vy
YXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwOgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL2xp
YndlYnJ0Yy5tYWMuZXhwOgorICAgICAgICAqIFNvdXJjZS90aGlyZF9wYXJ0eS9saWJ3ZWJtL2Nv
bW1vbi92cDlfaGVhZGVyX3BhcnNlci5oOgorICAgICAgICAodnA5X3BhcnNlcjo6VnA5SGVhZGVy
UGFyc2VyOjpjb2xvcl9yYW5nZSBjb25zdCk6CisgICAgICAgICh2cDlfcGFyc2VyOjpWcDlIZWFk
ZXJQYXJzZXI6OnN1YnNhbXBsaW5nX3ggY29uc3QpOgorICAgICAgICAodnA5X3BhcnNlcjo6VnA5
SGVhZGVyUGFyc2VyOjpzdWJzYW1wbGluZ195IGNvbnN0KToKKyAgICAgICAgKiBsaWJ3ZWJydGMu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wNy0xOSAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEFkZCBleHBlcmltZW50YWwgTVNF
IFdlYk0gcGFyc2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWUyMTkyZmU1YTYzOTAyZDJjNThiYTYyMTE5ODM5
NTI0YzAxNGU5NC4uNTIwMzFmYmFkYzBiMjU3NWJlYmI5MTA4NGUwNmRmMjU1MzRmN2JlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4MyBAQAorMjAyMC0wNy0yMSAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBleHBlcmltZW50YWwgTVNFIFdl
Yk0gcGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTQ1MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0OiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0uaHRtbAorCisgICAg
ICAgIEFkZCBhbiBleHBlcmltZW50YWwgTVNFIFdlYk0gcGFyc2VyIHRvIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLiBUaGlzIHdpbGwgcmVxdWlyZSBleHRlbnNpdmUgcmVmYWN0b3JpbmcKKyAg
ICAgICAgb2YgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMsIHRvIGV4dHJhY3Qgb3V0IHRoZSBw
YXJzZXIgaW50byBhIG5ldywgdmlydHVhbGl6ZWQgY2xhc3MuIFRoaXMgbmV3IHBhcnNlciBjYW4K
KyAgICAgICAgdGFrZSBhZHZhbnRhZ2Ugb2YgbmV3IEMrKz4xMSBmZWF0dXJlcyBzdWNoIGFzIGxh
bWJkYXMgdG8gY2xlYW4gdXAgc29tZSBwcm9ibGVtYXRpYyBleGlzdGluZyBjb2RlLiBUaGUgbmV3
CisgICAgICAgIHZpcnR1YWxpemVkIFNvdXJjZUJ1ZmZlclBhcnNlciBjbGFzcyB1c2VzIHBhc3Nl
ZC1pbiBGdW5jdGlvbiBvYmplY3RzLCByYXRoZXIgdGhhbiBwdXJlLXZpcnR1YWwgQ2xpZW50IGNs
YXNzZXMKKyAgICAgICAgdG8gbm90aWZ5IGl0J3MgcGFyZW50IG9iamVjdCB3aGVuIHRoZSBwYXJz
ZXIgZW5jb3VudGVycyBpbml0aWFsaXphdGlvbi0gb3IgbWVkaWEtZGF0YS4KKyAgICAgICAgCisg
ICAgICAgIEJlY2F1c2UgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMgd2lsbCBub3cgaGF2ZSB0
byBkZWFsIHdpdGggQXVkaW9UcmFja1ByaXZhdGUgYW5kIFZpZGVvVHJhY2tQcml2YXRlIG9iamVj
dHMKKyAgICAgICAgdGhhdCBhcmUgbm90IG5lY2Vzc2FyaWx5IEF1ZGlvLSBhbmQgVmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMgc3ViY2xhc3NlcywgbW92ZSB0aG9zZSBjbGFzc2Vz
IG5vdGlmaWNhdGlvbgorICAgICAgICBmZWF0dXJlcyB1cCBpbnRvIEF1ZGlvLSBhbmQgVmlkZW9U
cmFja1ByaXZhdGUsIGFnYWluIHVzaW5nIGEgRnVuY3Rpb24gb2JqZWN0IHJhdGhlciB0aGFuIGEg
Y2xpZW50IGNsYXNzLgorCisgICAgICAgIEFkZCBhIG5ldyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
IGFuZCBhc3NvY2lhdGVkIEF1ZGlvVHJhY2tQcml2YXRlV2ViTSBhbmQgVmlkZW9UcmFja1ByaXZh
dGVXZWJNIGNsYXNzZXMsIHdoaWNoCisgICAgICAgIHVzZSBsaWJ3ZWJtIHZpYSBsaWJ3ZWJydGMg
dG8gcGFyc2UgYXBwZW5kZWQgYnVmZmVycy4gU291cmNlQnVmZmVyUGFyc2VyV2ViTSBmZWVkcyBw
YXNzZWQtaW4gZGF0YSBpbnRvIGEKKyAgICAgICAgbGlid2VibS1wcm92aWRlZCBwYXJzZXIgb2Yg
aXRzIG93bi4gSXQgdGhlbiBidWlsZHMgdXAgdHJhY2tzIGFuZCBzYW1wbGVzIGJhc2VkIG9uIGNh
bGxiYWNrcyBmcm9tIHRoYXQgc2FtZSBwYXJzZXIsCisgICAgICAgIGNvbnN0cnVjdGluZyBDTVNh
bXBsZUJ1ZmZlcnMgYW5kIFZpZGVvVHJhY2tQcml2YXRlIG9iamVjdHMgb3V0IG9mIHRoZSB1bmRl
cmx5aW5nIGxpYndlYm0gcHJpbWl0aXZlcy4KKworICAgICAgICBCZWNhdXNlIFdlYk0gdXNlcyBh
IFVVSUQgYXMgaXRzIHRyYWNrIGlkZW50aWZpZXIsIHRoZSByZXByZXNlbnRhdGlvbiBvZiBhICJ0
cmFja0lEIiBpbnNpZGUgV2ViQ29yZSBtdXN0IGJlCisgICAgICAgIGluY3JlYXNlZCBmcm9tIGFu
IGludCB0byBhIHVpbnQ2NF90LCBvciB0cmFja0lEcyB3aWxsIGJlIHRydW5jYXRlZCBvciB6ZXJv
ZWQgd2hlbiBwYXNzZWQgYmV0d2VlbiBjbGFzc2VzIGFuZAorICAgICAgICB3aGVuIGNvbnZlcnRl
ZCB0byBhbmQgZnJvbSBBdG9tU3RyaW5ncy4KKworICAgICAgICBUaGlzIGVhcmx5IGltcGxlbWVu
dGF0aW9uIGlzIG5vdCB5ZXQgYWJsZSB0byBwYXNzIHRoZSBXZWJNIFdQVCBtZWRpYS1zb3VyY2Uv
IHRlc3RzLCBhcyB3ZSBvbmx5IGhhdmUgYSBWUDkgZGVjb2RlcgorICAgICAgICBhdmFpbGFibGUs
IGFuZCB0aG9zZSB0ZXN0cyB1c2UgYm90aCBWUDggYW5kIFZvcmJpcy4KKworICAgICAgICAqIFNv
dXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIHBhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAo
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0V2ViTVBhcnNlckVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2ViTVBhcnNlckVuYWJs
ZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZTo6c2V0RW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZTo6c2V0RW5hYmxlZENoYW5nZWRDYWxs
YmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmlzVmFsaWRWUENvbG9yUHJpbWFyaWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OmlzVmFsaWRWUFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKToKKyAgICAgICAgKFdlYkNvcmU6
OmlzVmFsaWRWUE1hdHJpeENvZWZmaWNpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVZQ
Q29kZWNQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRp
ZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGU6OnNldFNlbGVjdGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlOjpzZXRTZWxlY3RlZENoYW5nZWRDYWxsYmFj
ayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpzZXRFbmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VkNvbnRlbnRLZXlTZXNzaW9uLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb246OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OnVwZGF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTYW1wbGVBVkZPYmpDOjpNZWRpYVNhbXBsZUFWRk9iakMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjphZGRTb3VyY2VC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaDogQWRkZWQuCisgICAgICAgIChpc1R5cGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMubW06IEFkZGVkLgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJM
aXN0ZW5lciBpbml0V2l0aFBhcnNlcjpwYXJlbnQ6XSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFt
RGF0YVBhcnNlckxpc3RlbmVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRh
UGFyc2VyTGlzdGVuZXIgaW52YWxpZGF0ZV0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQ
YXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQ6
XSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbURhdGFQ
YXJzZXI6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldDp3aXRoRGlzY29udGludWl0eTpdKToKKyAg
ICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3RyZWFtRGF0YVBhcnNlcjpk
aWRGYWlsVG9QYXJzZVN0cmVhbURhdGFXaXRoRXJyb3I6XSk6CisgICAgICAgICgtW1dlYkFWU3Ry
ZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbURhdGFQYXJzZXI6ZGlkUHJvdmlkZU1lZGlhRGF0
YTpmb3JUcmFja0lEOm1lZGlhVHlwZTpmbGFnczpdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1E
YXRhUGFyc2VyTGlzdGVuZXIgc3RyZWFtRGF0YVBhcnNlcldpbGxQcm92aWRlQ29udGVudEtleVJl
cXVlc3RJbml0aWFsaXphdGlvbkRhdGE6Zm9yVHJhY2tJRDpdKToKKyAgICAgICAgKC1bV2ViQVZT
dHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlQ29udGVu
dEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGE6Zm9yVHJhY2tJRDpdKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmlzQ29udGVudFR5cGVTdXBwb3J0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6U291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmZsdXNoUGVuZGluZ01lZGlhRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpzZXRTaG91bGRQcm92aWRl
TWVkaWFEYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDOjpzaG91bGRQcm92aWRlTWVkaWFkYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpyZXNldFBhcnNlclN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFBhcnNlU3RyZWFt
RGF0YUFzQXNzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qzo6ZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lE
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OndpbGxQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6flNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQ
YXJzZUluaXRpYWxpemF0aW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6ZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlTWVkaWFEYXRh
Rm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNr
SUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBy
b3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kQ29tcGxldGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphYm9ydCk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6cmVzZXRQYXJz
ZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
ZGVzdHJveVBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6Y2xlYXJUcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6Omhhc1NlbGVjdGVkVmlkZW8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlU2VsZWN0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6cGFy
c2VyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjphdHRlbXB0VG9EZWNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpmbHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6ZW5xdWV1ZVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6aXNSZWFkeUZvck1vcmVTYW1wbGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRCZWNvbWVSZWFkeUZvck1vcmVTYW1wbGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpub3RpZnlD
bGllbnRXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6Y2FuU2V0TWluaW11bVVwY29taW5nUHJlc2VudGF0aW9uVGlt
ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0
aWVzQ29jb2EuaC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6QXVkaW9UcmFj
a1ByaXZhdGVXZWJNKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6
aWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVXZWJNOjpsYWJl
bCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk06Omxhbmd1
YWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6dHJh
Y2tJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9U
cmFja1ByaXZhdGVXZWJNLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLmguCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EuaC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OmNyZWF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpzZXREaWRQYXJzZUluaXRpYWxp
emF0aW9uRGF0YUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNl
cjo6c2V0RGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpzZXREaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpzZXRXaWxsUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0RGlkUHJvdmlkZUNvbnRl
bnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjppc1dlYm1QYXJzZXJBdmFpbGFibGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aXNDb250ZW50VHlwZVN1cHBvcnRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlcldlYk06OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnNob3VsZFByb3ZpZGVNZWRpYWRhdGFG
b3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnJl
c2V0UGFyc2VyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2Vi
TTo6dHJhY2tEYXRhRm9yVHJhY2tOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6T25FbGVtZW50QmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6T25FYm1sKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06Ok9uU2VnbWVudEJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06Ok9uSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNOjpPbkNsdXN0ZXJCZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjpPblRyYWNrRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6T25CbG9ja0JlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06Ok9uQmxvY2tFbmQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6T25TaW1wbGVCbG9ja0JlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uU2ltcGxlQmxvY2tFbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25CbG9ja0dyb3VwQmVnaW4pOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25CbG9ja0dyb3VwRW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnZlcnRUb0NvbG9yUHJpbWFyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbnZlcnRUb1RyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKToKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnZlcnRUb01hdHJpeENvZWZmaWNpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0U3Vi
c2FtcGxpbmdYWVRvQ2hyb21hU3Vic2FtcGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Rm9ybWF0RGVzY3JpcHRpb25Gcm9tVlA5SGVhZGVyUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpzdGF0dXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6dHlwZSBjb25zdCk6CisgICAgICAgIChp
c1R5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0Nv
Y29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjppc1ZQOURlY29kZXJBdmFpbGFibGUpOgorICAgICAg
ICAoV2ViQ29yZTo6dmFsaWRhdGVWUFBhcmFtZXRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHA6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLmguCisg
ICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OlZpZGVvVHJhY2tQcml2YXRlV2ViTSk6
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OmlkIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlV2ViTTo6bGFiZWwgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVXZWJNOjpsYW5ndWFnZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OnRyYWNrSW5kZXggY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2Vi
TS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9W
UDlVdGlsaXRpZXNDb2NvYS5oLgorCiAyMDIwLTA3LTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQWRkIGV4cGVyaW1lbnRhbCBNU0UgV2ViTSBw
YXJzZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggOWMzYzM4ZjI3NjRkYzk1NzlmZDIwNWFmZTg0NTVkYTgxODAxZWJk
Ni4uMGZiOGZkY2QyY2Y3MTNmNDdjZjgzOWFkNjIzYzU4ZjIzYTBhMjczNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAyMC0wNy0yMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KKworICAgICAgICBbQ29jb2FdIEFkZCBleHBlcmltZW50YWwgTVNFIFdlYk0gcGFyc2VyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ1MjkKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1NzgyNDY3PgorCisgICAgICAgIEFkZCBhbiBFeHBlcmlt
ZW50YWwgc2V0dGluZyB0byBlbmFibGUgdGhlIE1TRSBXZWJNIHBhcnNlciAob2ZmIGJ5IGRlZmF1
bHQpLgorCisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisKIDIwMjAtMDct
MTkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBB
ZGQgZXhwZXJpbWVudGFsIE1TRSBXZWJNIHBhcnNlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGM2OGEyYzg4MmM2ODMzMWM0
ODNhODM3MWJhYzRmZWQ2YjVjZTE0NjQuLjBmNjM4OTdkN2UwZGZlNjM5NTM4NTgyMjk4OTI5YmI4
ZWU1NTgwODMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wNy0yMSAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBleHBlcmltZW50YWwg
TVNFIFdlYk0gcGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTQ1MjkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1NzgyNDY3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEvbWVkaWEt
c291cmNlL2NvbnRlbnQvdGVzdC12cDktbWFuaWZlc3QuanNvbjogQWRkZWQuCisgICAgICAgICog
bWVkaWEvbWVkaWEtc291cmNlL2NvbnRlbnQvdGVzdC12cDkud2VibTogQWRkZWQuCisgICAgICAg
ICogbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLmh0bWw6
IEFkZGVkLgorCiAyMDIwLTA3LTIwICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlZHVjZSBudW1iZXIgb2YgaXRlcmF0aW9ucyBmb3Igd2Vha3JlZiB0
ZXN0cwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404801</attachid>
            <date>2020-07-21 00:44:47 -0700</date>
            <delta_ts>2020-07-21 00:53:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214529-20200721004446.patch</filename>
            <type>text/plain</type>
            <size>260939</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBhMjY3NTI5M2JiMzdhNGM1YzdmNGUwMGUxNmQyNzFkYTBmNTA2ZWI5Li5iMjE3
ZjBmMjRiODE1MjY3NWIwMjgwZTMwN2U3NGUyZThhZjNhZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAyMC0wNy0yMSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBleHBlcmltZW50
YWwgTVNFIFdlYk0gcGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTQ1MjkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1NzgyNDY3PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0aGUgdnA5
X2hlYWRlcl9wYXJzZXIgZnJvbSBsaWJ3ZWJydGMgdG8gdGhlIHByb2plY3QsIGFuZCBhZGQgaXRz
CisgICAgICAgIHN5bWJvbHMgdG8gdGhlIGxpc3Qgb2YgZXhwb3J0ZWQgc3ltYm9scy4gQmVjYXVz
ZSB0aGlzIGhlYWRlciB3YW50cyB0bworICAgICAgICBiZSBpbnN0YWxsZWQgdG8gYSAiY29tbW9u
L3ZwOV9oZWFkZXJfcGFyc2VyLmgiIHBhdGgsIHNwbGl0IHVwIHRoZSBkZWZhdWx0CisgICAgICAg
IENvcHlIZWFkZXJzSW5zdGFsbFBoYXNlIGludG8gdHdvIHNlcGFyYXRlIENvcHlGaWxlcyBidWls
ZCBwaGFzZXMgdGhhdAorICAgICAgICBwdXQgaGVhZGVycyBpbnRvIGRpZmZlcmVudCBsb2NhdGlv
bnMuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJtLnhjY29uZmlnOgorICAgICAg
ICAqIENvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwOgorICAgICAgICAqIENvbmZpZ3Vy
YXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwOgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL2xp
YndlYnJ0Yy5tYWMuZXhwOgorICAgICAgICAqIFNvdXJjZS90aGlyZF9wYXJ0eS9saWJ3ZWJtL2Nv
bW1vbi92cDlfaGVhZGVyX3BhcnNlci5oOgorICAgICAgICAodnA5X3BhcnNlcjo6VnA5SGVhZGVy
UGFyc2VyOjpjb2xvcl9yYW5nZSBjb25zdCk6CisgICAgICAgICh2cDlfcGFyc2VyOjpWcDlIZWFk
ZXJQYXJzZXI6OnN1YnNhbXBsaW5nX3ggY29uc3QpOgorICAgICAgICAodnA5X3BhcnNlcjo6VnA5
SGVhZGVyUGFyc2VyOjpzdWJzYW1wbGluZ195IGNvbnN0KToKKyAgICAgICAgKiBsaWJ3ZWJydGMu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworMjAyMC0wNy0xOSAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBleHBlcmltZW50YWwgTVNF
IFdlYk0gcGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTQ1MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUd28gZHJpdmUtYnkgZml4ZXM6IEFkZCBzb21lIG1pc3NpbmcgZXhwb3J0IHRvIHRoZSBs
aWJ3ZWJydGMuKi5leHAgZmlsZXMsIGFuZCBleHBvcnQgdGhlIHdlYm0gaGVhZGVycworICAgICAg
ICBhcyBQcml2YXRlLCBub3QgUHVibGljLCBzbyB0aGV5J3JlIHB1dCBpbiB0aGUgY29ycmVjdCBk
aXJlY3RvcnkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cDoK
KyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAgICAgICAg
KiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBsaWJ3ZWJydGMu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wNy0yMCAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJ1Z2d5IGFzc2VydCBpbiBoMjY1X3Zw
c19zcHNfcHBzX3RyYWNrZXIuY2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiYTZjYWExNDkwOWE5OGZlZjY3ODNh
NDY0N2Y2ZTEzODg2MDJkZDViLi41MjAzMWZiYWRjMGIyNTc1YmViYjkxMDg0ZTA2ZGYyNTUzNGY3
YmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzI0IEBACisyMDIwLTA3LTIxICBKZXIgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIGV4cGVyaW1lbnRh
bCBNU0UgV2ViTSBwYXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNDUyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRlc3Q6IG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS5odG1s
CisKKyAgICAgICAgQWRkIGFuIGV4cGVyaW1lbnRhbCBNU0UgV2ViTSBwYXJzZXIgdG8gU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMuIFRoaXMgd2lsbCByZXF1aXJlIGV4dGVuc2l2ZSByZWZhY3Rv
cmluZworICAgICAgICBvZiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQywgdG8gZXh0cmFjdCBv
dXQgdGhlIHBhcnNlciBpbnRvIGEgbmV3LCB2aXJ0dWFsaXplZCBjbGFzcy4gVGhpcyBuZXcgcGFy
c2VyIGNhbgorICAgICAgICB0YWtlIGFkdmFudGFnZSBvZiBuZXcgQysrPjExIGZlYXR1cmVzIHN1
Y2ggYXMgbGFtYmRhcyB0byBjbGVhbiB1cCBzb21lIHByb2JsZW1hdGljIGV4aXN0aW5nIGNvZGUu
IFRoZSBuZXcKKyAgICAgICAgdmlydHVhbGl6ZWQgU291cmNlQnVmZmVyUGFyc2VyIGNsYXNzIHVz
ZXMgcGFzc2VkLWluIEZ1bmN0aW9uIG9iamVjdHMsIHJhdGhlciB0aGFuIHB1cmUtdmlydHVhbCBD
bGllbnQgY2xhc3NlcworICAgICAgICB0byBub3RpZnkgaXQncyBwYXJlbnQgb2JqZWN0IHdoZW4g
dGhlIHBhcnNlciBlbmNvdW50ZXJzIGluaXRpYWxpemF0aW9uLSBvciBtZWRpYS1kYXRhLgorICAg
ICAgICAKKyAgICAgICAgQmVjYXVzZSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyB3aWxsIG5v
dyBoYXZlIHRvIGRlYWwgd2l0aCBBdWRpb1RyYWNrUHJpdmF0ZSBhbmQgVmlkZW9UcmFja1ByaXZh
dGUgb2JqZWN0cworICAgICAgICB0aGF0IGFyZSBub3QgbmVjZXNzYXJpbHkgQXVkaW8tIGFuZCBW
aWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyBzdWJjbGFzc2VzLCBtb3ZlIHRob3Nl
IGNsYXNzZXMgbm90aWZpY2F0aW9uCisgICAgICAgIGZlYXR1cmVzIHVwIGludG8gQXVkaW8tIGFu
ZCBWaWRlb1RyYWNrUHJpdmF0ZSwgYWdhaW4gdXNpbmcgYSBGdW5jdGlvbiBvYmplY3QgcmF0aGVy
IHRoYW4gYSBjbGllbnQgY2xhc3MuCisKKyAgICAgICAgQWRkIGEgbmV3IFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk0gYW5kIGFzc29jaWF0ZWQgQXVkaW9UcmFja1ByaXZhdGVXZWJNIGFuZCBWaWRlb1Ry
YWNrUHJpdmF0ZVdlYk0gY2xhc3Nlcywgd2hpY2gKKyAgICAgICAgdXNlIGxpYndlYm0gdmlhIGxp
YndlYnJ0YyB0byBwYXJzZSBhcHBlbmRlZCBidWZmZXJzLiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
IGZlZWRzIHBhc3NlZC1pbiBkYXRhIGludG8gYQorICAgICAgICBsaWJ3ZWJtLXByb3ZpZGVkIHBh
cnNlciBvZiBpdHMgb3duLiBJdCB0aGVuIGJ1aWxkcyB1cCB0cmFja3MgYW5kIHNhbXBsZXMgYmFz
ZWQgb24gY2FsbGJhY2tzIGZyb20gdGhhdCBzYW1lIHBhcnNlciwKKyAgICAgICAgY29uc3RydWN0
aW5nIENNU2FtcGxlQnVmZmVycyBhbmQgVmlkZW9UcmFja1ByaXZhdGUgb2JqZWN0cyBvdXQgb2Yg
dGhlIHVuZGVybHlpbmcgbGlid2VibSBwcmltaXRpdmVzLgorCisgICAgICAgIEJlY2F1c2UgV2Vi
TSB1c2VzIGEgVVVJRCBhcyBpdHMgdHJhY2sgaWRlbnRpZmllciwgdGhlIHJlcHJlc2VudGF0aW9u
IG9mIGEgInRyYWNrSUQiIGluc2lkZSBXZWJDb3JlIG11c3QgYmUKKyAgICAgICAgaW5jcmVhc2Vk
IGZyb20gYW4gaW50IHRvIGEgdWludDY0X3QsIG9yIHRyYWNrSURzIHdpbGwgYmUgdHJ1bmNhdGVk
IG9yIHplcm9lZCB3aGVuIHBhc3NlZCBiZXR3ZWVuIGNsYXNzZXMgYW5kCisgICAgICAgIHdoZW4g
Y29udmVydGVkIHRvIGFuZCBmcm9tIEF0b21TdHJpbmdzLgorCisgICAgICAgIFRoaXMgZWFybHkg
aW1wbGVtZW50YXRpb24gaXMgbm90IHlldCBhYmxlIHRvIHBhc3MgdGhlIFdlYk0gV1BUIG1lZGlh
LXNvdXJjZS8gdGVzdHMsIGFzIHdlIG9ubHkgaGF2ZSBhIFZQOSBkZWNvZGVyCisgICAgICAgIGF2
YWlsYWJsZSwgYW5kIHRob3NlIHRlc3RzIHVzZSBib3RoIFZQOCBhbmQgVm9yYmlzLgorCisgICAg
ICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRXZWJNUGFyc2VyRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJNUGFy
c2VyRW5hYmxlZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFj
a1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpzZXRFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpzZXRFbmFibGVkQ2hh
bmdlZENhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZFZQQ29sb3JQcmltYXJpZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6aXNWYWxpZFZQVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MpOgorICAgICAgICAo
V2ViQ29yZTo6aXNWYWxpZFZQTWF0cml4Q29lZmZpY2llbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OnBhcnNlVlBDb2RlY1BhcmFtZXRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1ZQ
OVV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2
YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6c2V0U2VsZWN0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGU6OnNldFNlbGVjdGVkQ2hhbmdl
ZENhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6QXVkaW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldEVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
U2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNz
aW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6dXBkYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmg6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6Ok1lZGlhU2FtcGxlQVZGT2JqQyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFk
ZFNvdXJjZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oOiBBZGRlZC4KKyAgICAgICAgKGlzVHlw
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQy5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0
YVBhcnNlckxpc3RlbmVyIGluaXRXaXRoUGFyc2VyOnBhcmVudDpdKToKKyAgICAgICAgKC1bV2Vi
QVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJBVlN0
cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBpbnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dlYkFWU3Ry
ZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbURhdGFQYXJzZXI6ZGlkUGFyc2VTdHJlYW1EYXRh
QXNBc3NldDpdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3Ry
ZWFtRGF0YVBhcnNlcjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0OndpdGhEaXNjb250aW51aXR5
Ol0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRh
UGFyc2VyOmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcjpdKToKKyAgICAgICAgKC1b
V2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRl
TWVkaWFEYXRhOmZvclRyYWNrSUQ6bWVkaWFUeXBlOmZsYWdzOl0pOgorICAgICAgICAoLVtXZWJB
VlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyV2lsbFByb3ZpZGVDb250
ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTpmb3JUcmFja0lEOl0pOgorICAgICAgICAo
LVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTpmb3JUcmFja0lEOl0pOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1
cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OnNldFNob3Vs
ZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakM6OnNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lEKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OnJlc2V0UGFyc2VyU3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUGFy
c2VTdHJlYW1EYXRhQXNBc3NldCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDOjpkaWRGYWlsVG9QYXJzZVN0cmVhbURhdGFXaXRoRXJyb3IpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZv
clRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6
d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp+U291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVN
ZWRpYURhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJ
RCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmRD
b21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpy
ZXNldFBhcnNlclN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjpkZXN0cm95UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpjbGVhclRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6aGFzU2VsZWN0ZWRWaWRlbyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFuZ2VTZWxlY3RlZCk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRD
aGFuZ2VFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpwYXJzZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OmF0dGVtcHRUb0RlY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OmZsdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjplbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjppc1JlYWR5Rm9yTW9yZVNhbXBsZXMpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEJlY29tZVJlYWR5Rm9yTW9y
ZVNhbXBsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
Om5vdGlmeUNsaWVudFdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjYW5TZXRNaW5pbXVtVXBjb21pbmdQcmVzZW50
YXRpb25UaW1lIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0u
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9W
UDlVdGlsaXRpZXNDb2NvYS5oLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVX
ZWJNOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVXZWJNOjpB
dWRpb1RyYWNrUHJpdmF0ZVdlYk0pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZh
dGVXZWJNOjppZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZVdl
Yk06OmxhYmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlV2Vi
TTo6bGFuZ3VhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVX
ZWJNOjp0cmFja0luZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EuaC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5o
LgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjppc0NvbnRlbnRUeXBlU3Vw
cG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OnNldERpZFBhcnNl
SW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUGFyc2VyOjpzZXREaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OnNldERpZFByb3ZpZGVNZWRpYURh
dGFDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OnNldFdp
bGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpzZXREaWRQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzV2VibVBhcnNlckF2YWlsYWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppc0NvbnRlbnRUeXBl
U3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlNv
dXJjZUJ1ZmZlclBhcnNlcldlYk0pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpmbHVzaFBlbmRpbmdNZWRpYURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2hvdWxkUHJvdmlkZU1l
ZGlhZGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6cmVzZXRQYXJzZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNOjp0cmFja0RhdGFGb3JUcmFja051bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkVsZW1lbnRCZWdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkVibWwpOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25TZWdtZW50QmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06Ok9uQ2x1c3RlckJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uVHJhY2tFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJsb2NrQmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25CbG9ja0VuZCk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblNpbXBsZUJsb2NrQmVnaW4pOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25TaW1wbGVCbG9ja0VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJsb2NrR3JvdXBCZWdpbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJsb2NrR3JvdXBFbmQp
OgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvQ29sb3JQcmltYXJpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6Y29udmVydFRvVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MpOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydFRvTWF0cml4Q29lZmZpY2llbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnZlcnRTdWJzYW1wbGluZ1hZVG9DaHJvbWFTdWJzYW1wbGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQYXJzZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25GcmFtZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnN0YXR1cyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjp0eXBlIGNvbnN0KToKKyAg
ICAgICAgKGlzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRp
bGl0aWVzQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGls
aXRpZXNDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzVlA5RGVjb2RlckF2YWlsYWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0ZVZQUGFyYW1ldGVycyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29j
b2EuaC4KKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlV2ViTTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlV2ViTTo6VmlkZW9UcmFja1ByaXZh
dGVXZWJNKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlV2ViTTo6aWQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVXZWJNOjpsYWJlbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk06Omxhbmd1YWdlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlV2ViTTo6dHJhY2tJbmRl
eCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1By
aXZhdGVXZWJNLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLmguCisKKzIwMjAtMDctMTkgIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZGQgZXhwZXJpbWVudGFsIE1T
RSBXZWJNIHBhcnNlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE0NTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCB5ZXQgcGFyc2UgYWN0dWFsIG1lZGlh
IHNhbXBsZXM7IGFzIG9mIHlldCBpdCBvbmx5IHBhcnNlcyBhdWRpbyBhbmQgdmlkZW8KKyAgICAg
ICAgdHJhY2sgaW5mb3JtYXRpb24uIE1lZGlhIHNhbXBsZSBwYXJzaW5nIGlzIHVwY29taW5nLgor
CisgICAgICAgIEFkZCBhbiBleHBlcmltZW50YWwgTVNFIFdlYk0gcGFyc2VyIHRvIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLiBUaGlzIHdpbGwgcmVxdWlyZSBleHRlbnNpdmUgcmVmYWN0b3Jp
bmcKKyAgICAgICAgb2YgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMsIHRvIGV4dHJhY3Qgb3V0
IHRoZSBwYXJzZXIgaW50byBhIG5ldywgdmlydHVhbGl6ZWQgY2xhc3MuIFRoaXMgbmV3IHBhcnNl
ciBjYW4KKyAgICAgICAgdGFrZSBhZHZhbnRhZ2Ugb2YgbmV3IEMrKz4xMSBmZWF0dXJlcyBzdWNo
IGFzIGxhbWJkYXMgdG8gY2xlYW4gdXAgc29tZSBwcm9ibGVtYXRpYyBleGlzdGluZyBjb2RlLiBU
aGUgbmV3CisgICAgICAgIHZpcnR1YWxpemVkIFNvdXJjZUJ1ZmZlclBhcnNlciBjbGFzcyB1c2Vz
IHBhc3NlZC1pbiBGdW5jdGlvbiBvYmplY3RzLCByYXRoZXIgdGhhbiBwdXJlLXZpcnR1YWwgQ2xp
ZW50IGNsYXNzZXMKKyAgICAgICAgdG8gbm90aWZ5IGl0J3MgcGFyZW50IG9iamVjdCB3aGVuIHRo
ZSBwYXJzZXIgZW5jb3VudGVycyBpbml0aWFsaXphdGlvbi0gb3IgbWVkaWEtZGF0YS4KKworICAg
ICAgICBCZWNhdXNlIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDIHdpbGwgbm93IGhhdmUgdG8g
ZGVhbCB3aXRoIEF1ZGlvVHJhY2tQcml2YXRlIGFuZCBWaWRlb1RyYWNrUHJpdmF0ZSBvYmplY3Rz
CisgICAgICAgIHRoYXQgYXJlIG5vdCBuZWNlc3NhcmlseSBBdWRpby0gYW5kIFZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIHN1YmNsYXNzZXMsIG1vdmUgdGhvc2UgY2xhc3NlcyBu
b3RpZmljYXRpb24KKyAgICAgICAgZmVhdHVyZXMgdXAgaW50byBBdWRpby0gYW5kIFZpZGVvVHJh
Y2tQcml2YXRlLCBhZ2FpbiB1c2luZyBhIEZ1bmN0aW9uIG9iamVjdCByYXRoZXIgdGhhbiBhIGNs
aWVudCBjbGFzcy4KKworICAgICAgICBBZGQgYSBuZXcgU291cmNlQnVmZmVyUGFyc2VyV2ViTSBh
bmQgYXNzb2NpYXRlZCBBdWRpb1RyYWNrUHJpdmF0ZVdlYk0gYW5kIFZpZGVvVHJhY2tQcml2YXRl
V2VibSBjbGFzZXNzLCB3aGljaAorICAgICAgICB1c2UgbGlid2VibSB2aWEgbGlid2VicnRjIHRv
IHBhcnNlIGFwcGVuZGVkIGJ1ZmZlcnMuCisKKyAgICAgICAgVGhpcyBlYXJseSBpbXBsZW1lbnRh
dGlvbiBpcyBub3QgeWV0IGFibGUgdG8gcGFzcyB0aGUgV2ViTSBXUFQgbWVkaWEtc291cmNlLyB0
ZXN0cywgYXMgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMKKyAgICAgICAgd2lsbCBvbmx5IGNh
dXNlIGEgInJlc2l6ZSIgZXZlbnQgdG8gYmUgZmlyZWQgd2hlbiBhIE1lZGlhU2FtcGxlIGlzIGVu
cXVldWVkIG9yIGRlY29kaW5nLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9S
dW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzZXRXZWJNUGFyc2VyRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJNUGFyc2VyRW5hYmxlZCBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvVHJhY2tQcml2YXRlOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
VHJhY2tQcml2YXRlOjpzZXRFbmFibGVkQ2hhbmdlZENhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFja1ByaXZhdGU6OnNldFNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2tQcml2YXRlOjpzZXRTZWxlY3RlZENoYW5nZWRDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRFbmFi
bGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6c3VwcG9ydHNUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6YWRkU291cmNlQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDLmg6IEFkZGVkLgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1t
OiBBZGRlZC4KKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgaW5pdFdp
dGhQYXJzZXI6cGFyZW50Ol0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0
ZW5lciBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVy
IGludmFsaWRhdGVdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIg
c3RyZWFtRGF0YVBhcnNlcjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0Ol0pOgorICAgICAgICAo
LVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZFBhcnNl
U3RyZWFtRGF0YUFzQXNzZXQ6d2l0aERpc2NvbnRpbnVpdHk6XSk6CisgICAgICAgICgtW1dlYkFW
U3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbURhdGFQYXJzZXI6ZGlkRmFpbFRvUGFyc2VT
dHJlYW1EYXRhV2l0aEVycm9yOl0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJM
aXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVNZWRpYURhdGE6Zm9yVHJhY2tJRDpt
ZWRpYVR5cGU6ZmxhZ3M6XSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3Rl
bmVyIHN0cmVhbURhdGFQYXJzZXJXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6
YXRpb25EYXRhOmZvclRyYWNrSUQ6XSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNl
ckxpc3RlbmVyIHN0cmVhbURhdGFQYXJzZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5p
dGlhbGl6YXRpb25EYXRhOmZvclRyYWNrSUQ6XSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDOjppc0NvbnRlbnRUeXBlU3VwcG9ydGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQzo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDOjpmbHVzaFBlbmRpbmdNZWRpYURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRy
YWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6c2hv
dWxkUHJvdmlkZU1lZGlhZGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQzo6cmVzZXRQYXJzZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZEZhaWxUb1Bh
cnNlU3RyZWFtRGF0YVdpdGhFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDOjpkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0
aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6On5Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFsaXph
dGlvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OmRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OndpbGxQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtl
eVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZENvbXBsZXRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YWJvcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnJlc2V0UGFyc2VyU3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRlc3Ryb3lQYXJzZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNsZWFyVHJh
Y2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFj
a0RpZENoYW5nZVNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnBhcnNlciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXR0ZW1wdFRvRGVjcnlwdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpWaWRlb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrUHJpdmF0ZVdlYk06OkF1ZGlvVHJhY2tQcml2YXRlV2ViTSk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OmlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6bGFiZWwgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja1ByaXZhdGVXZWJNOjpsYW5ndWFnZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OnRyYWNrSW5kZXggY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5oOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6aXNDb250ZW50
VHlwZVN1cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpzZXRE
aWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclBhcnNlcjo6c2V0RGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpzZXREaWRQcm92aWRl
TWVkaWFEYXRhQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
OjpzZXRXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJh
Y2tJRENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0
RGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENh
bGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjppc1dlYm1QYXJzZXJBdmFp
bGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6c3VwcG9ydGVkV2ViTUNvZGVjcyk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppc0NvbnRlbnRUeXBlU3VwcG9ydGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlNvdXJjZUJ1ZmZl
clBhcnNlcldlYk0pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpm
bHVzaFBlbmRpbmdNZWRpYURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2hvdWxkUHJvdmlkZU1lZGlhZGF0YUZv
clRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6cmVz
ZXRQYXJzZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
OjpPbkVsZW1lbnRCZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpPbkVibWwpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
T25TZWdtZW50QmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2Vi
TTo6T25JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9u
Q2x1c3RlckJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
Ok9uVHJhY2tFbnRyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OnN0YXR1cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjp2YWxpZGF0ZVZQUGFyYW1ldGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb1RyYWNrUHJpdmF0ZVdlYk06OlZpZGVvVHJhY2tQcml2YXRlV2ViTSk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OmlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2tQcml2YXRlV2ViTTo6bGFiZWwgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9UcmFja1ByaXZhdGVXZWJNOjpsYW5ndWFnZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OnRyYWNrSW5kZXggY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5oOiBBZGRlZC4K
KwogMjAyMC0wNy0yMCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbQ29jb2FdIEFkb3B0IFZUUmVnaXN0ZXJTdXBwbGVtZW50YWxWaWRlb0RlY29kZXJJZkF2YWls
YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA2ZTkzN2E0NWNhYTc1MjlhNzBiZjcxZDkzMGQ1MDZjZWY3ZjM0YmQy
Li4wZmI4ZmRjZDJjZjcxM2Y0N2NmODM5YWQ2MjNjNThmMjNhMGEyNzM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI0IEBACisyMDIwLTA3LTIxICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgorCisgICAgICAgIFtDb2NvYV0gQWRkIGV4cGVyaW1lbnRhbCBNU0UgV2ViTSBwYXJzZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDUyOQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNjU3ODI0Njc+CisKKyAgICAgICAgQWRkIGFuIEV4cGVyaW1l
bnRhbCBzZXR0aW5nIHRvIGVuYWJsZSB0aGUgTVNFIFdlYk0gcGFyc2VyIChvZmYgYnkgZGVmYXVs
dCkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbDoKKworMjAyMC0wNy0x
OSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFk
ZCBleHBlcmltZW50YWwgTVNFIFdlYk0gcGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ1MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gRXhwZXJpbWVudGFsIHNldHRpbmcgdG8gZW5h
YmxlIHRoZSBNU0UgV2ViTSBwYXJzZXIgKG9mZiBieSBkZWZhdWx0KS4KKworICAgICAgICAqIFNo
YXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sOgorCiAyMDIwLTA3LTIwICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQWRvcHQgVlRSZWdpc3RlclN1cHBs
ZW1lbnRhbFZpZGVvRGVjb2RlcklmQXZhaWxhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VibS54Y2NvbmZpZyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJtLnhjY29uZmlnCmluZGV4
IDU3YjU0N2VmYjhmY2UzOGZhNGY2ZDBiY2ZlNGE1NGVmYjg5YTQ0MTQuLjE3YzY0ZTAzMDBlNWNi
ZDhjMGI1MDJmMDQ3NGYzMzllNmZiYzY5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJtLnhjY29uZmlnCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJtLnhjY29uZmlnCkBAIC04
LDYgKzgsNiBAQCBHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POwogSEVBREVS
X1NFQVJDSF9QQVRIUyA9IFNvdXJjZS90aGlyZF9wYXJ0eS9saWJ3ZWJtIFNvdXJjZS90aGlyZF9w
YXJ0eS9saWJ3ZWJtL3dlYm1fcGFyc2VyIFNvdXJjZS90aGlyZF9wYXJ0eS9saWJ3ZWJtL3dlYm1f
cGFyc2VyL2luY2x1ZGU7CiAKIElOU1RBTExfUEFUSCA9IC91c3IvbG9jYWwvbGliOwotUFJJVkFU
RV9IRUFERVJTX0ZPTERFUl9QQVRIID0gL3Vzci9sb2NhbC9pbmNsdWRlL3dlYm07CitQUklWQVRF
X0hFQURFUlNfRk9MREVSX1BBVEggPSAvdXNyL2xvY2FsL2luY2x1ZGU7CiBVU0VfSEVBREVSTUFQ
ID0gTk87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1
cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9D
b25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cAppbmRleCBkMDRhOTE5Njg2ZTljYzg5Njdh
OGFhZDA0NjljNjg1NTQ2NTcyNzliLi44MWE2NDRjYzA1MTcxMWVhOTM0YTBmZTI1NDVmZDNiZTNk
Y2E1MGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJh
dGlvbnMvbGlid2VicnRjLmlPUy5leHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCkBAIC0yODAsMTMgKzI4MCwyMCBAQCBf
X1pUVk40d2VibTEyQnVmZmVyUmVhZGVyRQogX19aVFZONHdlYm04Q2FsbGJhY2tFCiBfX1pONHdl
Ym04Q2FsbGJhY2sxME9uQmxvY2tFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzVCbG9j
a0UKIF9fWk40d2VibThDYWxsYmFjazEwT25DdWVQb2ludEVSS05TXzE1RWxlbWVudE1ldGFkYXRh
RVJLTlNfOEN1ZVBvaW50RQorX19aTjR3ZWJtOENhbGxiYWNrMTJPbkJsb2NrQmVnaW5FUktOU18x
NUVsZW1lbnRNZXRhZGF0YUVSS05TXzVCbG9ja0VQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxs
YmFjazEyT25DbHVzdGVyRW5kRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU183Q2x1c3RlckUK
IF9fWk40d2VibThDYWxsYmFjazEyT25TZWdtZW50RW5kRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFF
CiBfX1pONHdlYm04Q2FsbGJhY2sxMk9uVHJhY2tFbnRyeUVSS05TXzE1RWxlbWVudE1ldGFkYXRh
RVJLTlNfMTBUcmFja0VudHJ5RQorX19aTjR3ZWJtOENhbGxiYWNrMTRPbkNsdXN0ZXJCZWdpbkVS
S05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfN0NsdXN0ZXJFUE5TXzZBY3Rpb25FCiBfX1pONHdl
Ym04Q2FsbGJhY2sxNE9uRWRpdGlvbkVudHJ5RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18x
MkVkaXRpb25FbnRyeUUKK19fWk40d2VibThDYWxsYmFjazE0T25FbGVtZW50QmVnaW5FUktOU18x
NUVsZW1lbnRNZXRhZGF0YUVQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxsYmFjazE0T25TZWdt
ZW50QmVnaW5FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThD
YWxsYmFjazE1T25CbG9ja0dyb3VwRW5kRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMEJs
b2NrR3JvdXBFCiBfX1pONHdlYm04Q2FsbGJhY2sxNk9uU2ltcGxlQmxvY2tFbmRFUktOU18xNUVs
ZW1lbnRNZXRhZGF0YUVSS05TXzExU2ltcGxlQmxvY2tFCiBfX1pONHdlYm04Q2FsbGJhY2sxNk9u
VW5rbm93bkVsZW1lbnRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVQTlNfNlJlYWRlckVQeQorX19a
TjR3ZWJtOENhbGxiYWNrMTdPbkJsb2NrR3JvdXBCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRh
RVBOU182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrMThPblNpbXBsZUJsb2NrQmVnaW5FUktO
U18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzExU2ltcGxlQmxvY2tFUE5TXzZBY3Rpb25FCitfX1pO
NHdlYm04Q2FsbGJhY2s0U2tpcEVQTlNfNlJlYWRlckVQeQogX19aTjR3ZWJtOENhbGxiYWNrNU9u
VGFnRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18zVGFnRQogX19aTjR3ZWJtOENhbGxiYWNr
Nk9uRWJtbEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNEVibWxFCiBfX1pONHdlYm04Q2Fs
bGJhY2s2T25JbmZvRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU180SW5mb0UKQEAgLTMxNywz
ICszMjQsNCBAQCBfX1pONHdlYm0xMFdlYm1QYXJzZXJDMkV2CiBfX1pONHdlYm0xMFdlYm1QYXJz
ZXJEMUV2CiBfX1pONHdlYm0xMFdlYm1QYXJzZXJEMkV2CiBfX1pONHdlYm00c3dhcEVSTlNfMTBX
ZWJtUGFyc2VyRVMxXworX19aTjEwdnA5X3BhcnNlcjE1VnA5SGVhZGVyUGFyc2VyMjNQYXJzZVVu
Y29tcHJlc3NlZEhlYWRlckVQS2htCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKaW5kZXgg
ZDA0YTkxOTY4NmU5Y2M4OTY3YThhYWQwNDY5YzY4NTU0NjU3Mjc5Yi4uODFhNjQ0Y2MwNTE3MTFl
YTkzNGEwZmUyNTQ1ZmQzYmUzZGNhNTBhYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4
cApAQCAtMjgwLDEzICsyODAsMjAgQEAgX19aVFZONHdlYm0xMkJ1ZmZlclJlYWRlckUKIF9fWlRW
TjR3ZWJtOENhbGxiYWNrRQogX19aTjR3ZWJtOENhbGxiYWNrMTBPbkJsb2NrRW5kRVJLTlNfMTVF
bGVtZW50TWV0YWRhdGFFUktOU181QmxvY2tFCiBfX1pONHdlYm04Q2FsbGJhY2sxME9uQ3VlUG9p
bnRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzhDdWVQb2ludEUKK19fWk40d2VibThDYWxs
YmFjazEyT25CbG9ja0JlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU181QmxvY2tFUE5T
XzZBY3Rpb25FCiBfX1pONHdlYm04Q2FsbGJhY2sxMk9uQ2x1c3RlckVuZEVSS05TXzE1RWxlbWVu
dE1ldGFkYXRhRVJLTlNfN0NsdXN0ZXJFCiBfX1pONHdlYm04Q2FsbGJhY2sxMk9uU2VnbWVudEVu
ZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPblRyYWNrRW50
cnlFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEwVHJhY2tFbnRyeUUKK19fWk40d2VibThD
YWxsYmFjazE0T25DbHVzdGVyQmVnaW5FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzdDbHVz
dGVyRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTRPbkVkaXRpb25FbnRyeUVSS05T
XzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTJFZGl0aW9uRW50cnlFCitfX1pONHdlYm04Q2FsbGJh
Y2sxNE9uRWxlbWVudEJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rpb25FCitf
X1pONHdlYm04Q2FsbGJhY2sxNE9uU2VnbWVudEJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFF
UE5TXzZBY3Rpb25FCiBfX1pONHdlYm04Q2FsbGJhY2sxNU9uQmxvY2tHcm91cEVuZEVSS05TXzE1
RWxlbWVudE1ldGFkYXRhRVJLTlNfMTBCbG9ja0dyb3VwRQogX19aTjR3ZWJtOENhbGxiYWNrMTZP
blNpbXBsZUJsb2NrRW5kRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMVNpbXBsZUJsb2Nr
RQogX19aTjR3ZWJtOENhbGxiYWNrMTZPblVua25vd25FbGVtZW50RVJLTlNfMTVFbGVtZW50TWV0
YWRhdGFFUE5TXzZSZWFkZXJFUHkKK19fWk40d2VibThDYWxsYmFjazE3T25CbG9ja0dyb3VwQmVn
aW5FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxsYmFj
azE4T25TaW1wbGVCbG9ja0JlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMVNpbXBs
ZUJsb2NrRVBOU182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrNFNraXBFUE5TXzZSZWFkZXJF
UHkKIF9fWk40d2VibThDYWxsYmFjazVPblRhZ0VSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNf
M1RhZ0UKIF9fWk40d2VibThDYWxsYmFjazZPbkVibWxFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVS
S05TXzRFYm1sRQogX19aTjR3ZWJtOENhbGxiYWNrNk9uSW5mb0VSS05TXzE1RWxlbWVudE1ldGFk
YXRhRVJLTlNfNEluZm9FCkBAIC0zMTcsMyArMzI0LDQgQEAgX19aTjR3ZWJtMTBXZWJtUGFyc2Vy
QzJFdgogX19aTjR3ZWJtMTBXZWJtUGFyc2VyRDFFdgogX19aTjR3ZWJtMTBXZWJtUGFyc2VyRDJF
dgogX19aTjR3ZWJtNHN3YXBFUk5TXzEwV2VibVBhcnNlckVTMV8KK19fWk4xMHZwOV9wYXJzZXIx
NVZwOUhlYWRlclBhcnNlcjIzUGFyc2VVbmNvbXByZXNzZWRIZWFkZXJFUEtobQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5t
YWMuZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndl
YnJ0Yy5tYWMuZXhwCmluZGV4IDhkODViNWI4YjM3NTRhZGRlZmRlN2MyNGYyZjIwYTQ2NTgzNjZh
Y2QuLjU1OGY0YjJjMTgyMTcxZWZjNDE1Yzc1NzdmMWQzOTYwMTgwMzJhYjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFj
LmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGli
d2VicnRjLm1hYy5leHAKQEAgLTI3OCwxMyArMjc4LDIwIEBAIF9fWlRWTjR3ZWJtMTJCdWZmZXJS
ZWFkZXJFCiBfX1pUVk40d2VibThDYWxsYmFja0UKIF9fWk40d2VibThDYWxsYmFjazEwT25CbG9j
a0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRQogX19aTjR3ZWJtOENhbGxi
YWNrMTBPbkN1ZVBvaW50RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU184Q3VlUG9pbnRFCitf
X1pONHdlYm04Q2FsbGJhY2sxMk9uQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJL
TlNfNUJsb2NrRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPbkNsdXN0ZXJFbmRF
UktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzdDbHVzdGVyRQogX19aTjR3ZWJtOENhbGxiYWNr
MTJPblNlZ21lbnRFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUUKIF9fWk40d2VibThDYWxsYmFj
azEyT25UcmFja0VudHJ5RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMFRyYWNrRW50cnlF
CitfX1pONHdlYm04Q2FsbGJhY2sxNE9uQ2x1c3RlckJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRh
dGFFUktOU183Q2x1c3RlckVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFjazE0T25FZGl0
aW9uRW50cnlFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEyRWRpdGlvbkVudHJ5RQorX19a
TjR3ZWJtOENhbGxiYWNrMTRPbkVsZW1lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBO
U182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrMTRPblNlZ21lbnRCZWdpbkVSS05TXzE1RWxl
bWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTVPbkJsb2NrR3Jv
dXBFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEwQmxvY2tHcm91cEUKIF9fWk40d2Vi
bThDYWxsYmFjazE2T25TaW1wbGVCbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNf
MTFTaW1wbGVCbG9ja0UKIF9fWk40d2VibThDYWxsYmFjazE2T25Vbmtub3duRWxlbWVudEVSS05T
XzE1RWxlbWVudE1ldGFkYXRhRVBOU182UmVhZGVyRVB5CitfX1pONHdlYm04Q2FsbGJhY2sxN09u
QmxvY2tHcm91cEJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rpb25FCitfX1pO
NHdlYm04Q2FsbGJhY2sxOE9uU2ltcGxlQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRh
RVJLTlNfMTFTaW1wbGVCbG9ja0VQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxsYmFjazRTa2lw
RVBOU182UmVhZGVyRVB5CiBfX1pONHdlYm04Q2FsbGJhY2s1T25UYWdFUktOU18xNUVsZW1lbnRN
ZXRhZGF0YUVSS05TXzNUYWdFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25FYm1sRVJLTlNfMTVFbGVt
ZW50TWV0YWRhdGFFUktOU180RWJtbEUKIF9fWk40d2VibThDYWxsYmFjazZPbkluZm9FUktOU18x
NUVsZW1lbnRNZXRhZGF0YUVSS05TXzRJbmZvRQpAQCAtMzE1LDMgKzMyMiw0IEBAIF9fWk40d2Vi
bTEwV2VibVBhcnNlckMyRXYKIF9fWk40d2VibTEwV2VibVBhcnNlckQxRXYKIF9fWk40d2VibTEw
V2VibVBhcnNlckQyRXYKIF9fWk40d2VibTRzd2FwRVJOU18xMFdlYm1QYXJzZXJFUzFfCitfX1pO
MTB2cDlfcGFyc2VyMTVWcDlIZWFkZXJQYXJzZXIyM1BhcnNlVW5jb21wcmVzc2VkSGVhZGVyRVBL
aG0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2xpYndlYm0vY29tbW9uL3ZwOV9oZWFk
ZXJfcGFyc2VyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2xpYndlYm0vY29tbW9uL3ZwOV9oZWFkZXJfcGFyc2VyLmgKaW5kZXggMDZiZDY1NjllNmY4
MDhmNmZhODRmYTdmNmYxZDRhMGMwN2RmZmYxYS4uNjlkNzEyNjZiYTllZDgwM2FkNWY4MmY0Nzhl
NmEyMmM5NDJhNDgxMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9saWJ3ZWJtL2NvbW1vbi92cDlfaGVhZGVyX3BhcnNlci5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvbGlid2VibS9j
b21tb24vdnA5X2hlYWRlcl9wYXJzZXIuaApAQCAtNjksNiArNjksMTEgQEAgY2xhc3MgVnA5SGVh
ZGVyUGFyc2VyIHsKICAgaW50IGNvbHVtbl90aWxlcygpIGNvbnN0IHsgcmV0dXJuIGNvbHVtbl90
aWxlc187IH0KICAgaW50IGZyYW1lX3BhcmFsbGVsX21vZGUoKSBjb25zdCB7IHJldHVybiBmcmFt
ZV9wYXJhbGxlbF9tb2RlXzsgfQogCisgIC8vIFdlYktpdCBBZGRpdGlvbnM6CisgIGludCBjb2xv
cl9yYW5nZSgpIGNvbnN0IHsgcmV0dXJuIGNvbG9yX3JhbmdlXzsgfQorICBpbnQgc3Vic2FtcGxp
bmdfeCgpIGNvbnN0IHsgcmV0dXJuIHN1YnNhbXBsaW5nX3hfOyB9CisgIGludCBzdWJzYW1wbGlu
Z195KCkgY29uc3QgeyByZXR1cm4gc3Vic2FtcGxpbmdfeV87IH0KKwogIHByaXZhdGU6CiAgIC8v
IFNldCB0aGUgY29tcHJlc3NlZCBWUDkgZnJhbWUuCiAgIGJvb2wgU2V0RnJhbWUoY29uc3QgdWlu
dDhfdCogZnJhbWUsIHNpemVfdCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDRkYTczYTFiZmI0MTAzYTFmN2FhNDE0MzQ5ZmUwYWZhZWJjMGM4YWEuLjdhODk2ZGU3
NGI2ZDgxNGRhNWFhMzFjODAxNjQwODhiZmFkYTQzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTM4NTMsMTYgKzM4NTMsNiBAQAogCQk1Q0ZENTM5MjFFNEJEM0EzMDA0ODI5
MDggLyogcm93X25lb242NC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDRkQ1MzhBMUU0QkQzQTMwMDQ4MjkwOCAvKiByb3dfbmVvbjY0LmNjICovOyB9
OwogCQk1Q0ZENTM5MzFFNEJEM0EzMDA0ODI5MDggLyogc2NhbGVfbmVvbi5jYyBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRkQ1MzhCMUU0QkQzQTMwMDQ4
MjkwOCAvKiBzY2FsZV9uZW9uLmNjICovOyB9OwogCQk1Q0ZENTM5NDFFNEJEM0EzMDA0ODI5MDgg
Lyogc2NhbGVfbmVvbjY0LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUNGRDUzOEMxRTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb242NC5jYyAqLzsg
fTsKLQkJQ0RFQkI0QUMyNEMwMTk5RDAwQURCRDQ0IC8qIHdlYm1fcGFyc2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwODI0QzAxOTFBMDBB
REJENDQgLyogd2VibV9wYXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07Ci0JCUNERUJCNEFEMjRDMDE5OUQwMEFEQkQ0NCAvKiBidWZmZXJfcmVhZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQw
RDI0QzAxOTFBMDBBREJENDQgLyogYnVmZmVyX3JlYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QUUyNEMwMTk5RDAwQURCRDQ0IC8q
IGlkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVC
QjQwQTI0QzAxOTFBMDBBREJENDQgLyogaWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQdWJsaWMsICk7IH07IH07Ci0JCUNERUJCNEFGMjRDMDE5OUQwMEFEQkQ0NCAvKiBpc3RyZWFt
X3JlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RFQkI0MDkyNEMwMTkxQTAwQURCRDQ0IC8qIGlzdHJlYW1fcmVhZGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCMDI0QzAxOTlEMDBB
REJENDQgLyogZG9tX3R5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREVCQjQwQjI0QzAxOTFBMDBBREJENDQgLyogZG9tX3R5cGVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCMTI0QzAx
OTlEMDBBREJENDQgLyogZWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RFQkI0MEMyNEMwMTkxQTAwQURCRDQ0IC8qIGVsZW1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07Ci0JCUNERUJCNEIyMjRD
MDE5OUQwMEFEQkQ0NCAvKiBzdGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENERUJCNDA2MjRDMDE5MUEwMEFEQkQ0NCAvKiBzdGF0dXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07Ci0JCUNERUJCNEIzMjRD
MDE5OUQwMEFEQkQ0NCAvKiByZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENERUJCNDA1MjRDMDE5MUEwMEFEQkQ0NCAvKiByZWFkZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07Ci0JCUNERUJCNEI0MjRD
MDE5OUQwMEFEQkQ0NCAvKiBmaWxlX3JlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MDcyNEMwMTkxQTAwQURCRDQ0IC8qIGZpbGVfcmVh
ZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlD
REVCQjRCNTI0QzAxOTlEMDBBREJENDQgLyogY2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDBFMjRDMDE5MUEwMEFEQkQ0NCAvKiBj
YWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsK
IAkJQ0RFQkI0QjYyNEMwMTlDNDAwQURCRDQ0IC8qIHVua25vd25fcGFyc2VyLmNjIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0NjQyNEMwMTkxQTAw
QURCRDQ0IC8qIHVua25vd25fcGFyc2VyLmNjICovOyB9OwogCQlDREVCQjRCNzI0QzAxOUM0MDBB
REJENDQgLyogbWFzdGVyX3BhcnNlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENERUJCNDZGMjRDMDE5MUEwMEFEQkQ0NCAvKiBtYXN0ZXJfcGFyc2Vy
LmNjICovOyB9OwogCQlDREVCQjRCODI0QzAxOUM0MDBBREJENDQgLyogYmxvY2tfcGFyc2VyLmNj
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0NzYy
NEMwMTkxQTAwQURCRDQ0IC8qIGJsb2NrX3BhcnNlci5jYyAqLzsgfTsKQEAgLTM4ODYsNiArMzg3
NiwxOCBAQAogCQlDREVCQjRDQTI0QzAxQTBEMDBBREJENDQgLyogbGlid2VibS5hIGluIEZyYW1l
d29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkIxMTkyNEMwMTg3
NDAwQURCRDQ0IC8qIGxpYndlYm0uYSAqLzsgfTsKIAkJQ0RFQkI0RDMyNEMwQzhDQTAwQURCRDQ0
IC8qIGJpdF91dGlscy5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENERUJCNDUxMjRDMDE5MUEwMEFEQkQ0NCAvKiBiaXRfdXRpbHMuY2MgKi87IH07CiAJ
CUNERUJCNEQ0MjRDMENCMTAwMEFEQkQ0NCAvKiBjYWxsYmFjay5jYyBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDhFMjRDMDE5MUEwMEFEQkQ0NCAv
KiBjYWxsYmFjay5jYyAqLzsgfTsKKwkJQ0RGRDJGQTgyNEM0QjM0RTAwNDhEQUMzIC8qIHZwOV9o
ZWFkZXJfcGFyc2VyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RGRDJGOUEyNEM0QjJGOTAwNDhEQUMzIC8qIHZwOV9oZWFkZXJfcGFyc2VyLmNjICov
OyB9OworCQlDREZEMkZDNTI0QzREQUY3MDA0OERBQzMgLyogYnVmZmVyX3JlYWRlci5oIGluIENv
cHkgd2VibSBoZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJC
NDBEMjRDMDE5MUEwMEFEQkQ0NCAvKiBidWZmZXJfcmVhZGVyLmggKi87IH07CisJCUNERkQyRkM2
MjRDNERBRjcwMDQ4REFDMyAvKiBjYWxsYmFjay5oIGluIENvcHkgd2VibSBoZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDBFMjRDMDE5MUEwMEFEQkQ0NCAv
KiBjYWxsYmFjay5oICovOyB9OworCQlDREZEMkZDNzI0QzREQUY3MDA0OERBQzMgLyogZG9tX3R5
cGVzLmggaW4gQ29weSB3ZWJtIGhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RFQkI0MEIyNEMwMTkxQTAwQURCRDQ0IC8qIGRvbV90eXBlcy5oICovOyB9OworCQlD
REZEMkZDODI0QzREQUY3MDA0OERBQzMgLyogZWxlbWVudC5oIGluIENvcHkgd2VibSBoZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDBDMjRDMDE5MUEwMEFE
QkQ0NCAvKiBlbGVtZW50LmggKi87IH07CisJCUNERkQyRkM5MjRDNERBRjcwMDQ4REFDMyAvKiBm
aWxlX3JlYWRlci5oIGluIENvcHkgd2VibSBoZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENERUJCNDA3MjRDMDE5MUEwMEFEQkQ0NCAvKiBmaWxlX3JlYWRlci5oICov
OyB9OworCQlDREZEMkZDQTI0QzREQUY3MDA0OERBQzMgLyogaWQuaCBpbiBDb3B5IHdlYm0gaGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwQTI0QzAxOTFB
MDBBREJENDQgLyogaWQuaCAqLzsgfTsKKwkJQ0RGRDJGQ0IyNEM0REFGNzAwNDhEQUMzIC8qIGlz
dHJlYW1fcmVhZGVyLmggaW4gQ29weSB3ZWJtIGhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RFQkI0MDkyNEMwMTkxQTAwQURCRDQ0IC8qIGlzdHJlYW1fcmVhZGVy
LmggKi87IH07CisJCUNERkQyRkNDMjRDNERBRjcwMDQ4REFDMyAvKiByZWFkZXIuaCBpbiBDb3B5
IHdlYm0gaGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQw
NTI0QzAxOTFBMDBBREJENDQgLyogcmVhZGVyLmggKi87IH07CisJCUNERkQyRkNEMjRDNERBRjcw
MDQ4REFDMyAvKiBzdGF0dXMuaCBpbiBDb3B5IHdlYm0gaGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwNjI0QzAxOTFBMDBBREJENDQgLyogc3RhdHVzLmgg
Ki87IH07CisJCUNERkQyRkNFMjRDNERBRjcwMDQ4REFDMyAvKiB3ZWJtX3BhcnNlci5oIGluIENv
cHkgd2VibSBoZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJC
NDA4MjRDMDE5MUEwMEFEQkQ0NCAvKiB3ZWJtX3BhcnNlci5oICovOyB9OworCQlDREZEMkZEMDI0
QzREQjJGMDA0OERBQzMgLyogdnA5X2hlYWRlcl9wYXJzZXIuaCBpbiBDb3B5IGNvbW1vbiBoZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERkQyRjk2MjRDNEIyRjkw
MDQ4REFDMyAvKiB2cDlfaGVhZGVyX3BhcnNlci5oICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmls
ZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEJ1aWxkUnVsZSBzZWN0aW9uICovCkBAIC00MTgw
LDYgKzQxODIsMzcgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMTsKIAkJfTsKKwkJQ0RGRDJGQzQyNEM0RDlEMTAwNDhEQUMzIC8qIENvcHkgd2VibSBo
ZWFkZXJzICovID0geworCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlkc3RQYXRoID0gdXNyL2xvY2FsL2luY2x1ZGUv
d2VibTsKKwkJCWRzdFN1YmZvbGRlclNwZWMgPSAxNjsKKwkJCWZpbGVzID0gKAorCQkJCUNERkQy
RkM1MjRDNERBRjcwMDQ4REFDMyAvKiBidWZmZXJfcmVhZGVyLmggaW4gQ29weSB3ZWJtIGhlYWRl
cnMgKi8sCisJCQkJQ0RGRDJGQzYyNEM0REFGNzAwNDhEQUMzIC8qIGNhbGxiYWNrLmggaW4gQ29w
eSB3ZWJtIGhlYWRlcnMgKi8sCisJCQkJQ0RGRDJGQzcyNEM0REFGNzAwNDhEQUMzIC8qIGRvbV90
eXBlcy5oIGluIENvcHkgd2VibSBoZWFkZXJzICovLAorCQkJCUNERkQyRkM4MjRDNERBRjcwMDQ4
REFDMyAvKiBlbGVtZW50LmggaW4gQ29weSB3ZWJtIGhlYWRlcnMgKi8sCisJCQkJQ0RGRDJGQzky
NEM0REFGNzAwNDhEQUMzIC8qIGZpbGVfcmVhZGVyLmggaW4gQ29weSB3ZWJtIGhlYWRlcnMgKi8s
CisJCQkJQ0RGRDJGQ0EyNEM0REFGNzAwNDhEQUMzIC8qIGlkLmggaW4gQ29weSB3ZWJtIGhlYWRl
cnMgKi8sCisJCQkJQ0RGRDJGQ0IyNEM0REFGNzAwNDhEQUMzIC8qIGlzdHJlYW1fcmVhZGVyLmgg
aW4gQ29weSB3ZWJtIGhlYWRlcnMgKi8sCisJCQkJQ0RGRDJGQ0MyNEM0REFGNzAwNDhEQUMzIC8q
IHJlYWRlci5oIGluIENvcHkgd2VibSBoZWFkZXJzICovLAorCQkJCUNERkQyRkNEMjRDNERBRjcw
MDQ4REFDMyAvKiBzdGF0dXMuaCBpbiBDb3B5IHdlYm0gaGVhZGVycyAqLywKKwkJCQlDREZEMkZD
RTI0QzREQUY3MDA0OERBQzMgLyogd2VibV9wYXJzZXIuaCBpbiBDb3B5IHdlYm0gaGVhZGVycyAq
LywKKwkJCSk7CisJCQluYW1lID0gIkNvcHkgd2VibSBoZWFkZXJzIjsKKwkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworCQlDREZEMkZDRjI0QzREQjBDMDA0
OERBQzMgLyogQ29weSBjb21tb24gaGVhZGVycyAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxl
c0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0
aCA9IHVzci9sb2NhbC9pbmNsdWRlL2NvbW1vbjsKKwkJCWRzdFN1YmZvbGRlclNwZWMgPSAxNjsK
KwkJCWZpbGVzID0gKAorCQkJCUNERkQyRkQwMjRDNERCMkYwMDQ4REFDMyAvKiB2cDlfaGVhZGVy
X3BhcnNlci5oIGluIENvcHkgY29tbW9uIGhlYWRlcnMgKi8sCisJCQkpOworCQkJbmFtZSA9ICJD
b3B5IGNvbW1vbiBoZWFkZXJzIjsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOworCQl9OwogLyogRW5kIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwog
CiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KQEAgLTgzNjYsNiArODM5OSw4
IEBACiAJCUNERUJCNDlCMjRDMDE5MUEwMEFEQkQ0NCAvKiBjb250ZW50X2VuY19hZXNfc2V0dGlu
Z3NfcGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbnRlbnRfZW5jX2Flc19zZXR0aW5nc19wYXJz
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQkI0OUMyNEMwMTkxQTAwQURC
RDQ0IC8qIHZpZGVvX3BhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSB2aWRlb19wYXJzZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQkI0OUQyNEMwMTkxQTAwQURCRDQ0IC8qIG1h
c3Rlcl9wYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbWFzdGVyX3BhcnNlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREZEMkY5NjI0QzRCMkY5MDA0OERBQzMgLyogdnA5X2hlYWRl
cl9wYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gdnA5X2hlYWRlcl9wYXJzZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RGRDJGOUEyNEM0QjJGOTAwNDhEQUMzIC8qIHZwOV9oZWFk
ZXJfcGFyc2VyLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdnA5X2hlYWRlcl9wYXJzZXIuY2M7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCMzlEMEQxMTIwMEYwRTMwMDA4OEU2OSAvKiBs
aWJ3ZWJydGMuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxl
VHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGgg
PSBsaWJ3ZWJydGMuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAv
KiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKQEAgLTE1MjQ3LDYgKzE1MjgyLDcg
QEAKIAkJQ0RFQkIxMUYyNEMwMTkxODAwQURCRDQ0IC8qIGxpYndlYm0gKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNERkQyRjkyMjRDNEIyRjkwMDQ4REFD
MyAvKiBjb21tb24gKi8sCiAJCQkJQ0RFQkIxOTIyNEMwMTkxODAwQURCRDQ0IC8qIHdlYm1fcGFy
c2VyICovLAogCQkJKTsKIAkJCXBhdGggPSBsaWJ3ZWJtOwpAQCAtMTUzNzIsNiArMTU0MDgsMTUg
QEAKIAkJCXBhdGggPSBzcmM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlD
REZEMkY5MjI0QzRCMkY5MDA0OERBQzMgLyogY29tbW9uICovID0geworCQkJaXNhID0gUEJYR3Jv
dXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDREZEMkY5QTI0QzRCMkY5MDA0OERBQzMgLyogdnA5
X2hlYWRlcl9wYXJzZXIuY2MgKi8sCisJCQkJQ0RGRDJGOTYyNEM0QjJGOTAwNDhEQUMzIC8qIHZw
OV9oZWFkZXJfcGFyc2VyLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGNvbW1vbjsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUZCMzlEMDZFMTIwMEVEOTIwMDA4OEU2OSA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xNTc0MSwxNiArMTU3ODYs
NiBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCi0JCQkJQ0RFQkI0QUQyNEMwMTk5RDAwQURCRDQ0
IC8qIGJ1ZmZlcl9yZWFkZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUNERUJCNEI1MjRDMDE5OUQw
MEFEQkQ0NCAvKiBjYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0RFQkI0QjAyNEMwMTk5
RDAwQURCRDQ0IC8qIGRvbV90eXBlcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0RFQkI0QjEyNEMw
MTk5RDAwQURCRDQ0IC8qIGVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUNERUJCNEI0MjRD
MDE5OUQwMEFEQkQ0NCAvKiBmaWxlX3JlYWRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0RFQkI0
QUUyNEMwMTk5RDAwQURCRDQ0IC8qIGlkLmggaW4gSGVhZGVycyAqLywKLQkJCQlDREVCQjRBRjI0
QzAxOTlEMDBBREJENDQgLyogaXN0cmVhbV9yZWFkZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUNE
RUJCNEIzMjRDMDE5OUQwMEFEQkQ0NCAvKiByZWFkZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUNE
RUJCNEIyMjRDMDE5OUQwMEFEQkQ0NCAvKiBzdGF0dXMuaCBpbiBIZWFkZXJzICovLAotCQkJCUNE
RUJCNEFDMjRDMDE5OUQwMEFEQkQ0NCAvKiB3ZWJtX3BhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0xNzM2Niw2ICsxNzQwMSw4IEBACiAJCQkJQ0RFQkIxMTUyNEMwMTg3NDAwQURCRDQ0IC8qIEhl
YWRlcnMgKi8sCiAJCQkJQ0RFQkIxMTYyNEMwMTg3NDAwQURCRDQ0IC8qIFNvdXJjZXMgKi8sCiAJ
CQkJQ0RFQkIxMTcyNEMwMTg3NDAwQURCRDQ0IC8qIEZyYW1ld29ya3MgKi8sCisJCQkJQ0RGRDJG
QzQyNEM0RDlEMTAwNDhEQUMzIC8qIENvcHkgd2VibSBoZWFkZXJzICovLAorCQkJCUNERkQyRkNG
MjRDNERCMEMwMDQ4REFDMyAvKiBDb3B5IGNvbW1vbiBoZWFkZXJzICovLAogCQkJKTsKIAkJCWJ1
aWxkUnVsZXMgPSAoCiAJCQkpOwpAQCAtMTg1MzQsNiArMTg1NzEsNyBAQAogCQkJCUNERUJCNEMz
MjRDMDE5QzQwMEFEQkQ0NCAvKiB2YXJfaW50X3BhcnNlci5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CUNERUJCNEI5MjRDMDE5QzQwMEFEQkQ0NCAvKiB2aXJ0dWFsX2Jsb2NrX3BhcnNlci5jYyBpbiBT
b3VyY2VzICovLAogCQkJCUNERUJCNEM4MjRDMDE5QzQwMEFEQkQ0NCAvKiB2b2lkX3BhcnNlci5j
YyBpbiBTb3VyY2VzICovLAorCQkJCUNERkQyRkE4MjRDNEIzNEUwMDQ4REFDMyAvKiB2cDlfaGVh
ZGVyX3BhcnNlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCUNERUJCNEJBMjRDMDE5QzQwMEFEQkQ0
NCAvKiB3ZWJtX3BhcnNlci5jYyBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXgg
MWQ3ZjIwOTg2N2MxZDRlMGE0Mjc0Njk3NjU1ZjhkMWIxMzZkYWQwZS4uZGMzZmYyNTg0MWE5MjUz
M2JlZThkMDU4MTYxOGFiMjBjNzBjOTlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0y
OTEsNiArMjkxLDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIEBuby0KIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbSBAbm8tdW5pZnkKIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMu
bW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQy5tbSBAbm8tdW5pZnkKK3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMubW0g
QG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNr
UHJpdmF0ZUFWRk9iakMuY3BwIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gQG5vLXVuaWZ5
CkBAIC0zMzMsNiArMzM0LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9VVElSZWdpc3RyeS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQ
cml2YXRlV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2EubW0KIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zsb2F0UmVjdENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTM0OCw2ICszNTAsOCBAQCBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lP
U3VyZmFjZVBvb2xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29h
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0
b3J5Q29jb2EuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIu
Y3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tCiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbQpAQCAtMzU2LDYgKzM2
MCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tCiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdQVUxheWVyLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJp
dmF0ZVdlYk0uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZU
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmZTYwMjYzY2IyODc0MzJj
MjNmMDc3YTM5NWQ3Yzk2OTAxNmRhNWViLi44YTEzYzhkODAzZTg3YTU2MDBiMzk0YWM1NTM0M2Ew
M2E3NWU2OWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC00MjY3LDYgKzQyNjcsNyBAQAogCQlDREY2NUNDQTE0NUI0NDg4MDBD
NEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY2NUNDOTE0NUI0M0E3MDBDNEM3QUEgLyogTWVk
aWFDb250cm9sbGVySW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQ0RGNzQ4M0YxOEZFQkNFQzAwMDZFQ0MwIC8qIEdyaWRQb3NpdGlv
bnNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RGNzQ4M0QxOEZFQkNFQzAwMDZFQ0MwIC8qIEdyaWRQb3NpdGlvbnNSZXNvbHZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNERjc1NkEz
MjE1QzI5RTkwMEVGQ0I1MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNzU2QTEyMTVDMjlFOTAw
RUZDQjUwIC8qIEpTTWVkaWFLZXlFbmNyeXB0aW9uU2NoZW1lLmggKi87IH07CisJCUNERjk5NEZE
MjRDMTVGRTMwMDJFQTA2MiAvKiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGOTk0RkIyNEMxMkE2QTAw
MkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gKi87IH07CiAJCUNERkMzNjA2
MThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERkMzNjA0MThDQTYxQzIwMDI2RTU2
RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTA1N0ZBNjEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRTA1N0ZBNDEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDhDM0Qw
MTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKQEAgLTE0MTY1LDYgKzE0MTY2LDggQEAKIAkJ
Q0Q4QzZDMjkyMkZEREE5MTAwQTcyMEFCIC8qIEpTUmVtb3RlUGxheWJhY2suaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNSZW1vdGVQbGF5YmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
RDhEMzA2RDIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
RE1Mb2dnaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOEQzMDZFMjNBRDRG
QTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENETUxvZ2dp
bmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDhGNjY3MDI0QzBGMjA4MDAw
QzQyMUMgLyogU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0Q4RjY2NzIyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRDkyRjUwRjIyNjBGRkVFMDBGODdCQjMgLyogRG9jdW1lbnRGdWxsc2NyZWVu
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBEb2N1bWVudEZ1bGxzY3JlZW4uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRDkyRjUxMDIyNjBGRkVFMDBGODdCQjMgLyogRG9jdW1lbnRGdWxsc2NyZWVuLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERvY3VtZW50RnVsbHNjcmVlbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRDkyRjUxNjIyNjEwMzgyMDBGODdCQjMgLyogRnVsbHNjcmVlbk1hbmFnZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRnVsbHNjcmVlbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE0MzQ1LDYgKzE0MzQ4LDggQEAKIAkJQ0RFOEI1RUYxQTY5Nzc4QjAwQjRC
NjZBIC8qIExlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBMZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0RFQTdDODIxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyRnVsbFNjcmVlbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBN0M4MzEyNzYyMzA0MDBCODQ2REQgLyog
UmVuZGVyRnVsbFNjcmVlbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW5kZXJGdWxsU2NyZWVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RF
QjNENzIyNEM0MUE2RTAwMUZCRUVGIC8qIFNvdXJjZUJ1ZmZlclBhcnNlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTb3VyY2VCdWZmZXJQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREVCM0Q3MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNvdXJjZUJ1ZmZlclBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDREVDQTg5ODFFREY0NDdEMDBEQ0IwOEIgLyogQVZBc3NldFRyYWNrVXRpbGl0
aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVZBc3NldFRyYWNrVXRpbGl0aWVzLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVDQTg5OTFFREY0NDdEMDBEQ0IwOEIgLyog
QVZBc3NldFRyYWNrVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFWQXNzZXRUcmFja1V0aWxp
dGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVFMzkzNjE3OTc0MjU5MDAx
RDc1ODAgLyogUHVibGljVVJMTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQdWJsaWNVUkxNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE0MzgzLDYgKzE0Mzg4LDEyIEBACiAJCUNERjc1NjlFMjE1QzI4NUUwMEVGQ0I1MCAv
KiBNZWRpYUtleUVuY3J5cHRpb25TY2hlbWUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhS2V5RW5jcnlwdGlvblNj
aGVtZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERjc1NkEwMjE1QzI5RTgw
MEVGQ0I1MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERjc1NkExMjE1QzI5RTkwMEVGQ0I1MCAvKiBK
U01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREY5OTRGQTI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjk5NEZCMjRDMTJBNkEwMDJFQTA2MiAvKiBTb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RGOTk0
RkUyNEMyODEzNjAwMkVBMDYyIC8qIFZpZGVvVHJhY2tQcml2YXRlV2ViTS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RGOTk0RkYyNEMyODEzNjAwMkVBMDYyIC8qIFZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREY5OTUwMDI0QzI4MTQ5MDAyRUEwNjIgLyogQXVkaW9UcmFj
a1ByaXZhdGVXZWJNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRlV2ViTS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY5OTUwMTI0QzI4MTQ5MDAyRUEwNjIgLyog
QXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvVHJhY2tQ
cml2YXRlV2ViTS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERkMzNjAxMThD
QTYxNjMwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERkMzNjAyMThDQTYxNjMwMDI2RTU2RiAvKiBSZW1vdGVD
b21tYW5kTGlzdGVuZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNERkMzNjAzMThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ29tbWFuZExp
c3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1ODY5LDYgKzI1ODgw
LDggQEAKIAkJQjUzMjBENjgxMjJBMjRFOTAwMkQxNDQwIC8qIGNvY29hICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDREY5OTUwMTI0QzI4MTQ5MDAyRUEw
NjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcCAqLywKKwkJCQlDREY5OTUwMDI0QzI4MTQ5
MDAyRUEwNjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmggKi8sCiAJCQkJRjQ4RDJBQTMyMTU5
NzQwRDAwQzY3NTJCIC8qIENvbG9yQ29jb2EuaCAqLywKIAkJCQlGNDhEMkFBNDIxNTk3NDBEMDBD
Njc1MkIgLyogQ29sb3JDb2NvYS5tbSAqLywKIAkJCQlCMjc1MzU0QzBCMDUzODE0MDAyQ0U2NEYg
LyogRmxvYXRSZWN0Q29jb2EubW0gKi8sCkBAIC0yNTg5MCwxMCArMjU5MDMsMTYgQEAKIAkJCQlB
RDlGRjZFMDE5MDgzOTFEMDAzQjYxRTAgLyogSU9TdXJmYWNlUG9vbENvY29hLm1tICovLAogCQkJ
CUNEQzQ4QUM4MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0
b3J5Q29jb2EuY3BwICovLAogCQkJCUNEQzQ4QUM3MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVu
Z2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuaCAqLywKKwkJCQlDREVCM0Q3MjI0QzQxQTZF
MDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmNwcCAqLywKKwkJCQlDREVCM0Q3MzI0QzQx
QTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmggKi8sCisJCQkJQ0Q4RjY2NzAyNEMw
RjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwICovLAorCQkJCUNEOEY2
NjcyMjRDMEYyMDgwMDBDNDIxQyAvKiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmggKi8sCiAJCQkJ
RTRFOEI0RUQyMTZCNzlGNDAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNw
cCAqLywKIAkJCQlFNEU4QjRFQTIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERhdGFiYXNl
Q29yZVRleHQuaCAqLywKIAkJCQk1MjY3MjRGMjFDQjJGREY2MDA3NTk3NEQgLyogVGV4dFRyYWNr
UmVwcmVzZW50YXRpb25Db2NvYS5oICovLAogCQkJCTUyNjcyNEYxMUNCMkZERjYwMDc1OTc0RCAv
KiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tICovLAorCQkJCUNERjk5NEZGMjRDMjgx
MzYwMDJFQTA2MiAvKiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwICovLAorCQkJCUNERjk5NEZF
MjRDMjgxMzYwMDJFQTA2MiAvKiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaCAqLywKIAkJCQlDRDZG
RTVCNzI0QkNFNjQ1MDA5RkNEQTQgLyogVlA5VXRpbGl0aWVzQ29jb2EuaCAqLywKIAkJCQlDRDZG
RTVCODI0QkNFNjQ1MDA5RkNEQTQgLyogVlA5VXRpbGl0aWVzQ29jb2EubW0gKi8sCiAJCQkJMkQz
RUY0NDQxOTE3OTE1QzAwMDM0MTg0IC8qIFdlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0
ZS5oICovLApAQCAtMjczODYsNiArMjc0MDUsOCBAQAogCQkJCUNEQzhCNUE1MTgwNDc0RjcwMDE2
RTY4NSAvKiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmggKi8sCiAJCQkJQ0RDOEI1QTQxODA0
NzRGNzAwMTZFNjg1IC8qIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gKi8sCiAJCQkJN0Ey
OUY1NzExOEM2OTUxNDAwNEQwRjgxIC8qIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCAq
LywKKwkJCQlDREY5OTRGQTI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQy5oICovLAorCQkJCUNERjk5NEZCMjRDMTJBNkEwMDJFQTA2MiAvKiBTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDLm1tICovLAogCQkJCUNEQzhCNUE5MTgwNDdGRjEwMDE2RTY4NSAvKiBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oICovLAogCQkJCUNEQzhCNUE4MTgwNDdGRjEwMDE2RTY4
NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSAqLywKIAkJCQk1MkQ1QTE4RTFDNTQ1
OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmggKi8sCkBAIC0zNDU5Niw2ICsz
NDYxNyw3IEBACiAJCQkJMjZBQTBGOUUxOEQyQTE4QjAwNDE5MzgxIC8qIFNlbGVjdG9yUHNldWRv
RWxlbWVudFR5cGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NENThERkQxRjk1NjVBODAw
MTEyNzkxIC8qIFNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxMEE4MUY5MDIy
QTQwMDUxMDJDRSAvKiBTb2Z0TGlua0xpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RG
OTk0RkQyNEMxNUZFMzAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gaW4g
U291cmNlcyAqLywKIAkJCQlDREM4QjVBQTE4MDQ3RkYxMDAxNkU2ODUgLyogU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBODMzQzdDQTBBMkNGMDZCMDBE
NTc2NjQgLyogU1ZHTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzE2OTJERDIyM0QyM0FC
RDAwNkU4OEY3IC8qIFN5c3RlbUJhdHRlcnkubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggMTFjMGE3ZjVkOGY5YjRi
NDJhODcxYjMzMTFlYWM0NDU5NzUzNjQyNy4uZDAxNzg0YzdhYTRiNzZkNmMzY2QyNTk3OTIzMjRh
NjA1MjlhMWY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmgKQEAgLTM5MSw2ICszOTEsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaW5jcmVtZW50YWxQ
REZMb2FkaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5jcmVtZW50YWxQREZMb2FkaW5n
RW5hYmxlZDsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgIHZvaWQg
c2V0V2ViTVBhcnNlckVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV93ZWJNUGFyc2VyRW5hYmxl
ZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgd2ViTVBhcnNlckVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX3dlYk1QYXJzZXJFbmFibGVkOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICAvLyBO
ZXZlciBpbnN0YW50aWF0ZS4KICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCk7CkBAIC01ODQs
NiArNTg5LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2luY3JlbWVudGFsUERGTG9hZGluZ0Vu
YWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAg
IGJvb2wgbV93ZWJNUGFyc2VyRW5hYmxlZCB7IGZhbHNlIH07CisjZW5kaWYKKwogICAgIGZyaWVu
ZCBjbGFzcyBXVEY6Ok5ldmVyRGVzdHJveWVkPFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM+OwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFj
a1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQ
cml2YXRlLmgKaW5kZXggN2ZhZTIzZWY1ZGM0Mjk5ZThmMDlmYzQxMmZjMTcxMDI2OGJlYmMyMS4u
YTlmODM2YmQxMTczZTIyZTBhZTgxNGExNzU0MmFhMjNhNDYxNWE0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oCkBAIC0y
Niw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZUJhc2Uu
aCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogI2lmIEVOQUJMRShWSURFTykKIApAQCAt
NTUsNiArNTYsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7CiAgICAg
ICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5lbmFibGVkQ2hhbmdlZChl
bmFibGVkKTsKKyAgICAgICAgaWYgKG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjaykKKyAgICAgICAg
ICAgIG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjaygqdGhpcywgbV9lbmFibGVkKTsKICAgICB9CiAK
ICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KQEAgLTY0LDYg
KzY3LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzQmFja2VkQnlNZWRpYVN0cmVh
bVRyYWNrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHVzaW5nIEVuYWJsZWRDaGFu
Z2VkQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEF1ZGlvVHJhY2tQcml2YXRlJiwgYm9vbCBlbmFi
bGVkKT47CisgICAgdm9pZCBzZXRFbmFibGVkQ2hhbmdlZENhbGxiYWNrKEVuYWJsZWRDaGFuZ2Vk
Q2FsbGJhY2smJiBjYWxsYmFjaykgeyBtX2VuYWJsZWRDaGFuZ2VkQ2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKTsgfQorCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgY2hh
ciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkF1ZGlvVHJhY2tQcml2
YXRlIjsgfQogI2VuZGlmCkBAIC03NCw2ICs4MCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAg
ICAgQXVkaW9UcmFja1ByaXZhdGVDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwogICAgIGJv
b2wgbV9lbmFibGVkIHsgZmFsc2UgfTsKKyAgICBFbmFibGVkQ2hhbmdlZENhbGxiYWNrIG1fZW5h
YmxlZENoYW5nZWRDYWxsYmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuY3BwCmluZGV4
IDlhYzM5MTk3M2E0NDA0NDdlMmZiNGRjN2Y4NzgwNzM1NDdkNjQ4ZWIuLmU1MjhjZDM1NjNlN2U1
MjkwZmFhMDIwOTRhZjYxYTJhZjEzN2FlMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNwcApAQCAtNTQsMjYgKzU0LDc0IEBAIHN0YXRp
YyBib29sIGlzVmFsaWRWUExldmVsKHVpbnQ4X3QgbGV2ZWwpCiAgICAgcmV0dXJuIHN0ZDo6Ymlu
YXJ5X3NlYXJjaChzdGQ6OmJlZ2luKHZhbGlkTGV2ZWxzKSwgc3RkOjplbmQodmFsaWRMZXZlbHMp
LCBsZXZlbCk7CiB9CiAKLXN0YXRpYyBib29sIGlzVmFsaWRWUGNvbG9yUHJpbWFyaWVzKHVpbnQ4
X3QgY29sb3JQcmltYXJpZXMpCitzdGF0aWMgYm9vbCBpc1ZhbGlkVlBDb2xvclByaW1hcmllcyh1
aW50OF90IGNvbG9yUHJpbWFyaWVzKQogewogICAgIGNvbnN0ZXhwciB1aW50OF90IHZhbGlkQ29s
b3JQcmltYXJpZXNbXSA9IHsKLSAgICAgICAgMSwKLSAgICAgICAgNCwKLSAgICAgICAgNSwKLSAg
ICAgICAgNiwKLSAgICAgICAgNywKLSAgICAgICAgOCwKLSAgICAgICAgOSwKLSAgICAgICAgMTAs
Ci0gICAgICAgIDExLAotICAgICAgICAxMiwKLSAgICAgICAgMjIsCisgICAgICAgIFZQQ29uZmln
dXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpCVF83MDlfNiwKKyAgICAgICAgVlBDb25maWd1cmF0aW9u
Q29sb3JQcmltYXJpZXM6OlVuc3BlY2lmaWVkLAorICAgICAgICBWUENvbmZpZ3VyYXRpb25Db2xv
clByaW1hcmllczo6QlRfNDcwXzZfTSwKKyAgICAgICAgVlBDb25maWd1cmF0aW9uQ29sb3JQcmlt
YXJpZXM6OkJUXzQ3MF83X0JHLAorICAgICAgICBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmll
czo6QlRfNjAxXzcsCisgICAgICAgIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpTTVBU
RV9TVF8yNDAsCisgICAgICAgIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpGaWxtLAor
ICAgICAgICBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6QlRfMjAyMF9Ob25jb25zdGFu
dF9MdW1pbmFuY2UsCisgICAgICAgIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpTTVBU
RV9TVF80MjhfMSwKKyAgICAgICAgVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OlNNUFRF
X1JQXzQzMV8yLAorICAgICAgICBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6U01QVEVf
RUdfNDMyXzEsCisgICAgICAgIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpFQlVfVGVj
aF8zMjEzX0UsCiAgICAgfTsKIAogICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2lu
KHZhbGlkQ29sb3JQcmltYXJpZXMpLCBzdGQ6OmVuZCh2YWxpZENvbG9yUHJpbWFyaWVzKSkpOwog
ICAgIHJldHVybiBzdGQ6OmJpbmFyeV9zZWFyY2goc3RkOjpiZWdpbih2YWxpZENvbG9yUHJpbWFy
aWVzKSwgc3RkOjplbmQodmFsaWRDb2xvclByaW1hcmllcyksIGNvbG9yUHJpbWFyaWVzKTsKIH0K
IAorc3RhdGljIGJvb2wgaXNWYWxpZFZQVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3ModWludDhfdCB0
cmFuc2ZlckNoYXJhY3RlcmlzdGljcykKK3sKKyAgICBjb25zdGV4cHIgdWludDhfdCB2YWxpZFRy
YW5zZmVyQ2hhcmFjdGVyaXN0aWNzW10gPSB7CisgICAgICAgIFZQQ29uZmlndXJhdGlvblRyYW5z
ZmVyQ2hhcmFjdGVyaXN0aWNzOjpCVF83MDlfNiwKKyAgICAgICAgVlBDb25maWd1cmF0aW9uVHJh
bnNmZXJDaGFyYWN0ZXJpc3RpY3M6OlVuc3BlY2lmaWVkLAorICAgICAgICBWUENvbmZpZ3VyYXRp
b25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6QlRfNDcwXzZfTSwKKyAgICAgICAgVlBDb25maWd1
cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzQ3MF83X0JHLAorICAgICAgICBWUENv
bmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6QlRfNjAxXzcsCisgICAgICAgIFZQ
Q29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpTTVBURV9TVF8yNDAsCisgICAg
ICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpMaW5lYXIsCisgICAg
ICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpMb2dyaXRobWljLAor
ICAgICAgICBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6TG9ncml0aG1p
Y19TcXJ0LAorICAgICAgICBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6
SUVDXzYxOTY2XzJfNCwKKyAgICAgICAgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJp
c3RpY3M6OkJUXzEzNjFfMCwKKyAgICAgICAgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0
ZXJpc3RpY3M6OklFQ182MTk2Nl8yXzEsCisgICAgICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVy
Q2hhcmFjdGVyaXN0aWNzOjpCVF8yMDIwXzEwYml0LAorICAgICAgICBWUENvbmZpZ3VyYXRpb25U
cmFuc2ZlckNoYXJhY3RlcmlzdGljczo6QlRfMjAyMF8xMmJpdCwKKyAgICAgICAgVlBDb25maWd1
cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OlNNUFRFX1NUXzIwODQsCisgICAgICAgIFZQ
Q29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpTTVBURV9TVF80MjhfMSwKKyAg
ICAgICAgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzIxMDBfSExH
LAorICAgIH07CisgICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVkKHN0ZDo6YmVnaW4odmFsaWRUcmFu
c2ZlckNoYXJhY3RlcmlzdGljcyksIHN0ZDo6ZW5kKHZhbGlkVHJhbnNmZXJDaGFyYWN0ZXJpc3Rp
Y3MpKSk7CisgICAgcmV0dXJuIHN0ZDo6YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2luKHZhbGlkVHJh
bnNmZXJDaGFyYWN0ZXJpc3RpY3MpLCBzdGQ6OmVuZCh2YWxpZFRyYW5zZmVyQ2hhcmFjdGVyaXN0
aWNzKSwgdHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MpOworfQorCitzdGF0aWMgYm9vbCBpc1ZhbGlk
VlBNYXRyaXhDb2VmZmljaWVudHModWludDhfdCBtYXRyaXhDb2VmZmljaWVudHMpCit7CisgICAg
Y29uc3RleHByIHVpbnQ4X3QgdmFsaWRNYXRyaXhDb2VmZmljaWVudHNbXSA9IHsKKyAgICAgICAg
VlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpJZGVudGl0eSwKKyAgICAgICAgVlBD
b25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpCVF83MDlfNiwKKyAgICAgICAgVlBDb25m
aWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpVbnNwZWNpZmllZCwKKyAgICAgICAgVlBDb25m
aWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpGQ0MsCisgICAgICAgIFZQQ29uZmlndXJhdGlv
bk1hdHJpeENvZWZmaWNpZW50czo6QlRfNDcwXzdfQkcsCisgICAgICAgIFZQQ29uZmlndXJhdGlv
bk1hdHJpeENvZWZmaWNpZW50czo6QlRfNjAxXzcsCisgICAgICAgIFZQQ29uZmlndXJhdGlvbk1h
dHJpeENvZWZmaWNpZW50czo6U01QVEVfU1RfMjQwLAorICAgICAgICBWUENvbmZpZ3VyYXRpb25N
YXRyaXhDb2VmZmljaWVudHM6OllDZ0NvLAorICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhD
b2VmZmljaWVudHM6OkJUXzIwMjBfTm9uY29uc3RhbnRfTHVtaW5hbmNlLAorICAgICAgICBWUENv
bmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OkJUXzIwMjBfQ29uc3RhbnRfTHVtaW5hbmNl
LAorICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OlNNUFRFX1NUXzIw
ODUsCisgICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6Q2hyb21hY2l0
eV9Db25zdGFudF9MdW1pbmFuY2UsCisgICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZm
aWNpZW50czo6Q2hyb21hY2l0eV9Ob25jb25zdGFudF9MdW1pbmFuY2UsCisgICAgICAgIFZQQ29u
ZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6QlRfMjEwMF9JQ0MsCisgICAgfTsKKyAgICBB
U1NFUlQoc3RkOjppc19zb3J0ZWQoc3RkOjpiZWdpbih2YWxpZE1hdHJpeENvZWZmaWNpZW50cyks
IHN0ZDo6ZW5kKHZhbGlkTWF0cml4Q29lZmZpY2llbnRzKSkpOworICAgIHJldHVybiBzdGQ6OmJp
bmFyeV9zZWFyY2goc3RkOjpiZWdpbih2YWxpZE1hdHJpeENvZWZmaWNpZW50cyksIHN0ZDo6ZW5k
KHZhbGlkTWF0cml4Q29lZmZpY2llbnRzKSwgbWF0cml4Q29lZmZpY2llbnRzKTsKK30KKwogT3B0
aW9uYWw8VlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQ+IHBhcnNlVlBDb2RlY1BhcmFtZXRlcnMo
U3RyaW5nVmlldyBjb2RlY1ZpZXcpCiB7CiAgICAgLy8gVGhlIGZvcm1hdCBvZiB0aGUgJ3ZwMDkn
IGNvZGVjIHN0cmluZyBpcyBzcGVjaWZpZWQgaW4gdGhlIHdlYm0gR2l0SHViIHJlcG86CkBAIC0x
NDAsNyArMTg4LDcgQEAgT3B0aW9uYWw8VlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQ+IHBhcnNl
VlBDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBjb2RlY1ZpZXcKICAgICAvLyBGaWZ0aCBlbGVt
ZW50OiBjb2xvclByaW1hcmllcy4gTGVnYWwgdmFsdWVzIGFyZSBkZWZpbmVkIGJ5ICBJU08vSUVD
IDIzMDAxLTg6MjAxNiwgc3VwZXJjZWRlZAogICAgIC8vIGJ5IElTTy9JRUMgMjMwOTEtMjoyMDE5
LgogICAgIGF1dG8gY29sb3JQcmltYXJpZXMgPSB0b0ludGVncmFsVHlwZTx1aW50OF90PigqbmV4
dEVsZW1lbnQpOwotICAgIGlmICghY29sb3JQcmltYXJpZXMgfHwgIWlzVmFsaWRWUGNvbG9yUHJp
bWFyaWVzKCpjb2xvclByaW1hcmllcykpCisgICAgaWYgKCFjb2xvclByaW1hcmllcyB8fCAhaXNW
YWxpZFZQQ29sb3JQcmltYXJpZXMoKmNvbG9yUHJpbWFyaWVzKSkKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKICAgICBjb25maWd1cmF0aW9uLmNvbG9yUHJpbWFyaWVzID0gKmNvbG9yUHJp
bWFyaWVzOwogCkBAIC0xNTAsNyArMTk4LDcgQEAgT3B0aW9uYWw8VlBDb2RlY0NvbmZpZ3VyYXRp
b25SZWNvcmQ+IHBhcnNlVlBDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBjb2RlY1ZpZXcKICAg
ICAvLyBTaXh0aCBlbGVtZW50OiB0cmFuc2ZlckNoYXJhY3RlcmlzdGljcy4gTGVnYWwgdmFsdWVz
IGFyZSBkZWZpbmVkIGJ5ICBJU08vSUVDIDIzMDAxLTg6MjAxNiwgc3VwZXJjZWRlZAogICAgIC8v
IGJ5IElTTy9JRUMgMjMwOTEtMjoyMDE5LgogICAgIGF1dG8gdHJhbnNmZXJDaGFyYWN0ZXJpc3Rp
Y3MgPSB0b0ludGVncmFsVHlwZTx1aW50OF90PigqbmV4dEVsZW1lbnQpOwotICAgIGlmICghdHJh
bnNmZXJDaGFyYWN0ZXJpc3RpY3MgfHwgKCEqdHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MgfHwgKnRy
YW5zZmVyQ2hhcmFjdGVyaXN0aWNzID09IDIgfHwgKnRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzID09
IDMgfHwgKnRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzID4gMTgpKQorICAgIGlmICghdHJhbnNmZXJD
aGFyYWN0ZXJpc3RpY3MgfHwgIWlzVmFsaWRWUFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKCp0cmFu
c2ZlckNoYXJhY3RlcmlzdGljcykpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAg
Y29uZmlndXJhdGlvbi50cmFuc2ZlckNoYXJhY3RlcmlzdGljcyA9ICp0cmFuc2ZlckNoYXJhY3Rl
cmlzdGljczsKIApAQCAtMTYwLDcgKzIwOCw3IEBAIE9wdGlvbmFsPFZQQ29kZWNDb25maWd1cmF0
aW9uUmVjb3JkPiBwYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNWaWV3CiAg
ICAgLy8gU2V2ZW50aCBlbGVtZW50OiBtYXRyaXhDb2VmZmljaWVudHMuIExlZ2FsIHZhbHVlcyBh
cmUgZGVmaW5lZCBieSAgSVNPL0lFQyAyMzAwMS04OjIwMTYsIHN1cGVyY2VkZWQKICAgICAvLyBi
eSBJU08vSUVDIDIzMDkxLTI6MjAxOS4KICAgICBhdXRvIG1hdHJpeENvZWZmaWNpZW50cyA9IHRv
SW50ZWdyYWxUeXBlPHVpbnQ4X3Q+KCpuZXh0RWxlbWVudCk7Ci0gICAgaWYgKCFtYXRyaXhDb2Vm
ZmljaWVudHMgfHwgKCptYXRyaXhDb2VmZmljaWVudHMgPT0gMiB8fCAqbWF0cml4Q29lZmZpY2ll
bnRzID09IDMgfHwgKm1hdHJpeENvZWZmaWNpZW50cyA+IDE0KSkKKyAgICBpZiAoIW1hdHJpeENv
ZWZmaWNpZW50cyB8fCBpc1ZhbGlkVlBNYXRyaXhDb2VmZmljaWVudHMoKm1hdHJpeENvZWZmaWNp
ZW50cykpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgY29uZmlndXJhdGlvbi5t
YXRyaXhDb2VmZmljaWVudHMgPSAqbWF0cml4Q29lZmZpY2llbnRzOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5oCmluZGV4IDNhZjU4NTBlNTQ0
MGQyYWZjZjllYWNkZTJjODVlMGIzZDMxMThmZTAuLjg4NzY5ODM4ZDUwODE5ODJkMjJhMDdiMDU5
ZDQwYmQzMTVjMmNiZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1ZQOVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1ZQOVV0aWxpdGllcy5oCkBAIC01OSw2ICs1OSw2MCBAQCBjb25zdGV4cHIgdWludDhfdCBWaWRl
b1JhbmdlID0gMDsKIGNvbnN0ZXhwciB1aW50OF90IEZ1bGxSYW5nZSA9IDE7CiB9CiAKKy8vIFJl
ZjogSVNPL0lFQyAyMzA5MS0yOjIwMTkKK25hbWVzcGFjZSBWUENvbmZpZ3VyYXRpb25Db2xvclBy
aW1hcmllcyB7Citjb25zdGV4cHIgdWludDhfdCBCVF83MDlfNiA9IDE7Citjb25zdGV4cHIgdWlu
dDhfdCBVbnNwZWNpZmllZCA9IDI7Citjb25zdGV4cHIgdWludDhfdCBCVF80NzBfNl9NID0gNDsK
K2NvbnN0ZXhwciB1aW50OF90IEJUXzQ3MF83X0JHID0gNTsKK2NvbnN0ZXhwciB1aW50OF90IEJU
XzYwMV83ID0gNjsKK2NvbnN0ZXhwciB1aW50OF90IFNNUFRFX1NUXzI0MCA9IDc7Citjb25zdGV4
cHIgdWludDhfdCBGaWxtID0gODsKK2NvbnN0ZXhwciB1aW50OF90IEJUXzIwMjBfTm9uY29uc3Rh
bnRfTHVtaW5hbmNlID0gOTsKK2NvbnN0ZXhwciB1aW50OF90IFNNUFRFX1NUXzQyOF8xID0gMTA7
Citjb25zdGV4cHIgdWludDhfdCBTTVBURV9SUF80MzFfMiA9IDExOworY29uc3RleHByIHVpbnQ4
X3QgU01QVEVfRUdfNDMyXzEgPSAxMjsKK2NvbnN0ZXhwciB1aW50OF90IEVCVV9UZWNoXzMyMTNf
RSA9IDIyOworfQorCisvLyBSZWY6IElTTy9JRUMgMjMwOTEtMjoyMDE5CituYW1lc3BhY2UgVlBD
b25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MgeworY29uc3RleHByIHVpbnQ4X3Qg
QlRfNzA5XzYgPSAxOworY29uc3RleHByIHVpbnQ4X3QgVW5zcGVjaWZpZWQgPSAyOworY29uc3Rl
eHByIHVpbnQ4X3QgQlRfNDcwXzZfTSA9IDQ7Citjb25zdGV4cHIgdWludDhfdCBCVF80NzBfN19C
RyA9IDU7Citjb25zdGV4cHIgdWludDhfdCBCVF82MDFfNyA9IDY7Citjb25zdGV4cHIgdWludDhf
dCBTTVBURV9TVF8yNDAgPSA3OworY29uc3RleHByIHVpbnQ4X3QgTGluZWFyID0gODsKK2NvbnN0
ZXhwciB1aW50OF90IExvZ3JpdGhtaWMgPSA5OworY29uc3RleHByIHVpbnQ4X3QgTG9ncml0aG1p
Y19TcXJ0ID0gMTA7Citjb25zdGV4cHIgdWludDhfdCBJRUNfNjE5NjZfMl80ID0gMTE7Citjb25z
dGV4cHIgdWludDhfdCBCVF8xMzYxXzAgPSAxMjsKK2NvbnN0ZXhwciB1aW50OF90IElFQ182MTk2
Nl8yXzEgPSAxMzsKK2NvbnN0ZXhwciB1aW50OF90IEJUXzIwMjBfMTBiaXQgPSAxNDsKK2NvbnN0
ZXhwciB1aW50OF90IEJUXzIwMjBfMTJiaXQgPSAxNTsKK2NvbnN0ZXhwciB1aW50OF90IFNNUFRF
X1NUXzIwODQgPSAxNjsKK2NvbnN0ZXhwciB1aW50OF90IFNNUFRFX1NUXzQyOF8xID0gMTc7Citj
b25zdGV4cHIgdWludDhfdCBCVF8yMTAwX0hMRyA9IDE4OworfQorCituYW1lc3BhY2UgVlBDb25m
aWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzIHsKK2NvbnN0ZXhwciB1aW50OF90IElkZW50aXR5
ID0gMDsKK2NvbnN0ZXhwciB1aW50OF90IEJUXzcwOV82ID0gMTsKK2NvbnN0ZXhwciB1aW50OF90
IFVuc3BlY2lmaWVkID0gMjsKK2NvbnN0ZXhwciB1aW50OF90IEZDQyA9IDQ7Citjb25zdGV4cHIg
dWludDhfdCBCVF80NzBfN19CRyA9IDU7Citjb25zdGV4cHIgdWludDhfdCBCVF82MDFfNyA9IDY7
Citjb25zdGV4cHIgdWludDhfdCBTTVBURV9TVF8yNDAgPSA3OworY29uc3RleHByIHVpbnQ4X3Qg
WUNnQ28gPSA4OworY29uc3RleHByIHVpbnQ4X3QgQlRfMjAyMF9Ob25jb25zdGFudF9MdW1pbmFu
Y2UgPSA5OworY29uc3RleHByIHVpbnQ4X3QgQlRfMjAyMF9Db25zdGFudF9MdW1pbmFuY2UgPSAx
MDsKK2NvbnN0ZXhwciB1aW50OF90IFNNUFRFX1NUXzIwODUgPSAxMTsKK2NvbnN0ZXhwciB1aW50
OF90IENocm9tYWNpdHlfQ29uc3RhbnRfTHVtaW5hbmNlID0gMTI7Citjb25zdGV4cHIgdWludDhf
dCBDaHJvbWFjaXR5X05vbmNvbnN0YW50X0x1bWluYW5jZSA9IDEzOworY29uc3RleHByIHVpbnQ4
X3QgQlRfMjEwMF9JQ0MgPSAxNDsKK30KKwogc3RydWN0IFZQQ29kZWNDb25maWd1cmF0aW9uUmVj
b3JkIHsKICAgICBTdHJpbmcgY29kZWNOYW1lOwogICAgIHVpbnQ4X3QgcHJvZmlsZSB7IDAgfTsK
QEAgLTY2LDkgKzEyMCw5IEBAIHN0cnVjdCBWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCB7CiAg
ICAgdWludDhfdCBiaXREZXB0aCB7IDggfTsKICAgICB1aW50OF90IGNocm9tYVN1YnNhbXBsaW5n
IHsgVlBDb25maWd1cmF0aW9uQ2hyb21hU3Vic2FtcGxpbmc6OlN1YnNhbXBsaW5nXzQyMF9Db2xv
Y2F0ZWQgfTsKICAgICB1aW50OF90IHZpZGVvRnVsbFJhbmdlRmxhZyB7IFZQQ29uZmlndXJhdGlv
blJhbmdlOjpWaWRlb1JhbmdlIH07Ci0gICAgdWludDhfdCBjb2xvclByaW1hcmllcyB7IDEgfTsK
LSAgICB1aW50OF90IHRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzIHsgMSB9OwotICAgIHVpbnQ4X3Qg
bWF0cml4Q29lZmZpY2llbnRzIHsgMSB9OworICAgIHVpbnQ4X3QgY29sb3JQcmltYXJpZXMgeyBW
UENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6QlRfNzA5XzYgfTsKKyAgICB1aW50OF90IHRy
YW5zZmVyQ2hhcmFjdGVyaXN0aWNzIHsgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJp
c3RpY3M6OkJUXzcwOV82IH07CisgICAgdWludDhfdCBtYXRyaXhDb2VmZmljaWVudHMgeyBWUENv
bmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OkJUXzcwOV82IH07CiB9OwogCiBXRUJDT1JF
X0VYUE9SVCBPcHRpb25hbDxWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZD4gcGFyc2VWUENvZGVj
UGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oCmluZGV4IDcxOGQ4MGUz
NDUyYzQ3ZmVlZjQyNjhmMjllM2EyZTg3YmI0ZGNhZDMuLjBjNDEzYzJkZGY1ZDlkYTJhMTViMTEz
NWMwOGU1MTA4NTJiODAyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJM
RShWSURFTykKIAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZUJhc2UuaCIKKyNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00OCw2ICs0OSw4IEBAIHB1
YmxpYzoKICAgICAgICAgbV9zZWxlY3RlZCA9IHNlbGVjdGVkOwogICAgICAgICBpZiAobV9jbGll
bnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+c2VsZWN0ZWRDaGFuZ2VkKG1fc2VsZWN0ZWQpOwor
ICAgICAgICBpZiAobV9zZWxlY3RlZENoYW5nZWRDYWxsYmFjaykKKyAgICAgICAgICAgIG1fc2Vs
ZWN0ZWRDaGFuZ2VkQ2FsbGJhY2soKnRoaXMsIG1fc2VsZWN0ZWQpOwogICAgIH0KICAgICB2aXJ0
dWFsIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGVkOyB9CiAKQEAgLTU4
LDEyICs2MSwxNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gIlZpZGVvVHJhY2tQcml2YXRlIjsgfQogI2VuZGlmCiAKKyAgICB1
c2luZyBTZWxlY3RlZENoYW5nZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoVmlkZW9UcmFja1By
aXZhdGUmLCBib29sIHNlbGVjdGVkKT47CisgICAgdm9pZCBzZXRTZWxlY3RlZENoYW5nZWRDYWxs
YmFjayhTZWxlY3RlZENoYW5nZWRDYWxsYmFjayYmIGNhbGxiYWNrKSB7IG1fc2VsZWN0ZWRDaGFu
Z2VkQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQorCisKIHByb3RlY3RlZDoKICAgICBW
aWRlb1RyYWNrUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAogcHJpdmF0ZToKICAgICBWaWRlb1RyYWNr
UHJpdmF0ZUNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07CiAgICAgYm9vbCBtX3NlbGVjdGVk
IHsgZmFsc2UgfTsKKyAgICBTZWxlY3RlZENoYW5nZWRDYWxsYmFjayBtX3NlbGVjdGVkQ2hhbmdl
ZENhbGxiYWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMuY3BwCmluZGV4IGMxY2IxYTRkMzU2MTI1ZDk0N2RlZmZjMjdmNTlmY2EwYzliNDE4NDEu
LmJjMTM5Nzc5N2JhZGE4YTQ3NTliZjUyZjlhNTQ2M2IyZDY0MWQ3NzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5jcHAKQEAgLTMzLDkgKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6QXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaywgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMqIHBhcmVudCkKK0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrKQog
ICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2sp
KQotICAgICwgbV9wYXJlbnQocGFyZW50KQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFj
aygpOwogfQpAQCAtNjcsNyArNjYsNiBAQCB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgQXVkaW9UcmFja1ByaXZhdGVBVkY6OnNldEVuYWJsZWQoZW5hYmxlZCk7Ci0gICAgbV9wYXJl
bnQtPnRyYWNrRGlkQ2hhbmdlRW5hYmxlZCh0aGlzKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLmgKaW5kZXggOWJjNGYyNmMwNzM0OWYxNzc2ZjYwYmUwZGQxYzJhYmNkN2IzN2Q2Yi4uMTQ1
NmMwMTZiYWUwM2I4NzhiNTBiZjU5OTI0ZmI0ZDlmMzUzMDE4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OwogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMgZmluYWwgOiBwdWJs
aWMgQXVkaW9UcmFja1ByaXZhdGVBVkYgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKQogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sg
KnRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQorICAgIHN0YXRpYyBS
ZWY8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJh
Y2sgKnRyYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2ssIHBhcmVudCkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyh0cmFj
aykpOwogICAgIH0KIAogICAgIHZvaWQgc2V0RW5hYmxlZChib29sKSBmaW5hbDsKQEAgLTUyLDEy
ICs1MiwxMSBAQCBwdWJsaWM6CiAgICAgaW50IHRyYWNrSUQoKSB7IHJldHVybiBtX3RyYWNrSUQ7
IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQyhBVkFzc2V0VHJhY2sqLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50
KTsKKyAgICBleHBsaWNpdCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFz
c2V0VHJhY2sqKTsKICAgICAKICAgICB2b2lkIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+IG1faW1wbDsK
LSAgICBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogbV9wYXJlbnQ7CiAgICAgaW50IG1fdHJh
Y2tJRDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWQ29udGVudEtleVNlc3Npb24ubW0KaW5kZXggMjY0Yzc2NGRjNDQ2Zjg1OGVlNzUyYWNhYzlh
OTRkMjRlNTQ5ZThkMC4uZWI3ODNmOGE2NWU2NWY4MDUzYTQ5Mjk2MzUyZmIzMGNlZjg2NTg3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVu
dEtleVNlc3Npb24ubW0KQEAgLTI1NCw3ICsyNTQsNyBAQCBib29sIENETVNlc3Npb25BVkNvbnRl
bnRLZXlTZXNzaW9uOjp1cGRhdGUoVWludDhBcnJheSoga2V5LCBSZWZQdHI8VWludDhBcnJheT4m
CiAgICAgICAgIC8vIGRhdGEuCiAgICAgICAgIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQz4gcHJvdGVjdGVkU291cmNlQnVmZmVyOwogICAgICAgICBmb3IgKGF1dG8mIHNvdXJjZUJ1
ZmZlciA6IG1fc291cmNlQnVmZmVycykgewotICAgICAgICAgICAgaWYgKHNvdXJjZUJ1ZmZlci0+
cHJvdGVjdGVkVHJhY2tJRCgpICE9IC0xKSB7CisgICAgICAgICAgICBpZiAoc291cmNlQnVmZmVy
LT5wcm90ZWN0ZWRUcmFja0lEKCkgIT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgICAgICBwcm90
ZWN0ZWRTb3VyY2VCdWZmZXIgPSBzb3VyY2VCdWZmZXI7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWU3RyZWFtU2Vzc2lvbi5tbQppbmRleCA4OTZhMjQ1MjJiOGM2MmZjMzUyNGMzNDM3ODhlNDMz
NmQwYmRlZmZhLi4yNDQ2MTJhNWMxZTM2OGNiZWRjYmY3MDA0ODUzYWQwZjM1MGNiN2Q3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24u
bW0KQEAgLTIwOCw3ICsyMDgsNyBAQCBib29sIENETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OnVw
ZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dAogCiAgICAgUmVm
UHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBwcm90ZWN0ZWRTb3VyY2VCdWZmZXI7CiAg
ICAgZm9yIChhdXRvJiBzb3VyY2VCdWZmZXIgOiBtX3NvdXJjZUJ1ZmZlcnMpIHsKLSAgICAgICAg
aWYgKHNvdXJjZUJ1ZmZlci0+cHJvdGVjdGVkVHJhY2tJRCgpICE9IC0xKSB7CisgICAgICAgIGlm
IChzb3VyY2VCdWZmZXItPnByb3RlY3RlZFRyYWNrSUQoKSAhPSBub3RGb3VuZCkgewogICAgICAg
ICAgICAgcHJvdGVjdGVkU291cmNlQnVmZmVyID0gc291cmNlQnVmZmVyOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCA2Njg5OTEw
MWUxZmM1ODQwNzc3N2I2OWQ2MzkxOTE1ZmQ5YWRkZDIxLi44Yjk0MTUwN2MwMzg4MWMwMjE2YjRl
NzkyZTM5ZGIyNmUzNTdmZGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0yNTMs
MjIgKzI1Myw3IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUoY29uCiAgICAgaWYgKCFwYXJhbWV0ZXJz
LmlzTWVkaWFTb3VyY2UpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
OjpJc05vdFN1cHBvcnRlZDsKIAotICAgIFN0cmluZyBleHRlbmRlZFR5cGUgPSBwYXJhbWV0ZXJz
LnR5cGUucmF3KCk7Ci0gICAgU3RyaW5nIG91dHB1dENvZGVjcyA9IHBhcmFtZXRlcnMudHlwZS5w
YXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsKLSAgICBpZiAoIW91dHB1
dENvZGVjcy5pc0VtcHR5KCkgJiYgW1BBTDo6Z2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklu
cHV0TUlNRUNvZGVjUGFyYW1ldGVyOildKSB7Ci0gICAgICAgIG91dHB1dENvZGVjcyA9IFtQQUw6
OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgb3V0cHV0TUlNRUNvZGVjUGFyYW1ldGVyRm9y
SW5wdXRNSU1FQ29kZWNQYXJhbWV0ZXI6b3V0cHV0Q29kZWNzXTsKLSAgICAgICAgZXh0ZW5kZWRU
eXBlID0gbWFrZVN0cmluZyhwYXJhbWV0ZXJzLnR5cGUuY29udGFpbmVyVHlwZSgpLCAiOyBjb2Rl
Y3M9XCIiLCBvdXRwdXRDb2RlY3MsICJcIiIpOwotICAgIH0KLQotICAgIGF1dG8gc3VwcG9ydGVk
ID0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7Ci0gICAgYXV0byYg
c3RyZWFtRGF0YVBhcnNlckNhY2hlID0gQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6
c2luZ2xldG9uKCk7Ci0gICAgaWYgKHN0cmVhbURhdGFQYXJzZXJDYWNoZS5pc0F2YWlsYWJsZSgp
KQotICAgICAgICBzdXBwb3J0ZWQgPSBzdHJlYW1EYXRhUGFyc2VyQ2FjaGUuY2FuRGVjb2RlVHlw
ZShleHRlbmRlZFR5cGUpOwotICAgIGVsc2UgewotICAgICAgICBhdXRvJiBhc3NldENhY2hlID0g
QVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpOwotICAgICAgICBpZiAoYXNzZXRDYWNo
ZS5pc0F2YWlsYWJsZSgpKQotICAgICAgICAgICAgc3VwcG9ydGVkID0gYXNzZXRDYWNoZS5jYW5E
ZWNvZGVUeXBlKGV4dGVuZGVkVHlwZSk7Ci0gICAgfQorICAgIGF1dG8gc3VwcG9ydGVkID0gU291
cmNlQnVmZmVyUGFyc2VyOjppc0NvbnRlbnRUeXBlU3VwcG9ydGVkKHBhcmFtZXRlcnMudHlwZSk7
CiAKICAgICBpZiAoc3VwcG9ydGVkICE9IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzU3Vw
cG9ydGVkKQogICAgICAgICByZXR1cm4gc3VwcG9ydGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZP
YmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVNhbXBsZUFWRk9iakMuaAppbmRleCAzMzRjMDYxN2E1ZmEyMDZlNjhmYWYwZmUwYzli
NjkwMmQ3MjhiYzJjLi5kOWZiMWY5MWJmOWRjZWIyMWFjYmQ1M2VjMzE1ZTM1ODJiMDYzYzJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaApAQCAtMzQsNyAr
MzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhU2FtcGxlQVZGT2JqQyA6
IHB1YmxpYyBNZWRpYVNhbXBsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNZWRpYVNhbXBs
ZUFWRk9iakM+IGNyZWF0ZShDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIGludCB0cmFja0lEKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2FtcGxlQVZGT2JqQyhzYW1wbGUsIHRyYWNrSUQp
KTsgfQorICAgIHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGUoQ01TYW1wbGVC
dWZmZXJSZWYgc2FtcGxlLCB1aW50NjRfdCB0cmFja0lEKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IE1lZGlhU2FtcGxlQVZGT2JqQyhzYW1wbGUsIHRyYWNrSUQpKTsgfQogICAgIHN0YXRpYyBSZWY8
TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGUoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCBBdG9t
U3RyaW5nIHRyYWNrSUQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTYW1wbGVBVkZPYmpD
KHNhbXBsZSwgdHJhY2tJRCkpOyB9CiAgICAgc3RhdGljIFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+
IGNyZWF0ZShDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIFZpZGVvUm90YXRpb24gcm90YXRpb24g
PSBWaWRlb1JvdGF0aW9uOjpOb25lLCBib29sIG1pcnJvcmVkID0gZmFsc2UpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgTWVkaWFTYW1wbGVBVkZPYmpDKHNhbXBsZSwgcm90YXRpb24sIG1pcnJvcmVk
KSk7IH0KICAgICBzdGF0aWMgUmVmUHRyPE1lZGlhU2FtcGxlQVZGT2JqQz4gY3JlYXRlSW1hZ2VT
YW1wbGUoVmVjdG9yPHVpbnQ4X3Q+JiYsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQp
OwpAQCAtODYsNyArODYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICwgbV9pZCh0cmFja0lEKQog
ICAgIHsKICAgICB9Ci0gICAgTWVkaWFTYW1wbGVBVkZPYmpDKENNU2FtcGxlQnVmZmVyUmVmIHNh
bXBsZSwgaW50IHRyYWNrSUQpCisgICAgTWVkaWFTYW1wbGVBVkZPYmpDKENNU2FtcGxlQnVmZmVy
UmVmIHNhbXBsZSwgdWludDY0X3QgdHJhY2tJRCkKICAgICAgICAgOiBtX3NhbXBsZShzYW1wbGUp
CiAgICAgICAgICwgbV9pZChBdG9tU3RyaW5nOjpudW1iZXIodHJhY2tJRCkpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0K
aW5kZXggODI3OGUwNmE1MTIyOTdjN2VkMmIyNjkwZmZlMGNiNDI4ODg1ZmJmNi4uMjkzMjI3OTM5
MTBlYTU3ZjE4MWM5MjAxN2QzY2YzNjU3NzUyMTAzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRl
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaCIKICNpbXBvcnQgIk1lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oIgorI2lt
cG9ydCAiU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oIgogI2ltcG9ydCAiU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMuaCIKICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogI2ltcG9ydCA8d3Rm
L0FsZ29yaXRobXMuaD4KQEAgLTg1LDcgKzg2LDExIEBAIE1lZGlhU291cmNlUHJpdmF0ZTo6QWRk
U3RhdHVzIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBD
CiAgICAgaWYgKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNU
eXBlKHBhcmFtZXRlcnMpID09IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9y
dGVkKQogICAgICAgICByZXR1cm4gTm90U3VwcG9ydGVkOwogCi0gICAgYXV0byBuZXdTb3VyY2VC
dWZmZXIgPSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKHRoaXMpOworICAgIGF1
dG8gcGFyc2VyID0gU291cmNlQnVmZmVyUGFyc2VyOjpjcmVhdGUoY29udGVudFR5cGUpOworICAg
IGlmICghcGFyc2VyKQorICAgICAgICByZXR1cm4gTm90U3VwcG9ydGVkOworCisgICAgYXV0byBu
ZXdTb3VyY2VCdWZmZXIgPSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKHRoaXMs
IHBhcnNlci5yZWxlYXNlTm9uTnVsbCgpKTsKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQog
ICAgIG5ld1NvdXJjZUJ1ZmZlci0+c2V0Q0RNSW5zdGFuY2UobV9jZG1JbnN0YW5jZS5nZXQoKSk7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZjhhZGJmZGM4MDMzNjRkNjM1Y2YzYmM5OTgzNGY1MGM3
MzJlNjY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oCkBAIC0wLDAg
KzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCisKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXIuaCIKKyNpbmNsdWRlIDx3dGYv
VHlwZUNhc3RzLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworT0JKQ19DTEFTUyBBVkFz
c2V0OworT0JKQ19DTEFTUyBBVlN0cmVhbURhdGFQYXJzZXI7CitPQkpDX0NMQVNTIE5TRGF0YTsK
K09CSkNfQ0xBU1MgTlNFcnJvcjsKK09CSkNfQ0xBU1MgV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlz
dGVuZXI7CisKK3R5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1
ZmZlclJlZjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDIGZpbmFsIDogcHVibGljIFNvdXJjZUJ1ZmZlclBhcnNlciwgcHVibGljIENhbk1h
a2VXZWFrUHRyPFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM+IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIGlzQ29udGVudFR5cGVTdXBwb3J0ZWQo
Y29uc3QgQ29udGVudFR5cGUmKTsKKworICAgIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKTsK
KyAgICB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCk7CisKKyAgICBBVlN0cmVh
bURhdGFQYXJzZXIqIHBhcnNlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyLmdldCgpOyB9CisK
KyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBUeXBlOjpBVkZPYmpDOyB9CisgICAgdm9p
ZCBhcHBlbmREYXRhKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmLCBBcHBlbmRGbGFncyA9IEFwcGVu
ZEZsYWdzOjpOb25lKSBmaW5hbDsKKyAgICB2b2lkIGZsdXNoUGVuZGluZ01lZGlhRGF0YSgpIGZp
bmFsOworICAgIHZvaWQgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoYm9vbCwg
dWludDY0X3QpIGZpbmFsOworICAgIGJvb2wgc2hvdWxkUHJvdmlkZU1lZGlhZGF0YUZvclRyYWNr
SUQodWludDY0X3QpIGZpbmFsOworICAgIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpIGZpbmFsOwor
CisgICAgdm9pZCBkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQqKTsKKyAgICB2b2lk
IGRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcihOU0Vycm9yKik7CisgICAgdm9pZCBk
aWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCh1aW50NjRfdCB0cmFja0lELCBDTVNhbXBsZUJ1
ZmZlclJlZiwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkIGZsYWdzKTsKKyAgICB2
b2lkIHdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFj
a0lEKHVpbnQ2NF90IHRyYWNrSUQpOworICAgIHZvaWQgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1
ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChOU0RhdGEqLCB1aW50NjRfdCB0cmFja0lE
KTsKKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8QVZTdHJlYW1EYXRhUGFyc2VyPiBtX3BhcnNl
cjsKKyAgICBSZXRhaW5QdHI8V2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXI+IG1fZGVsZWdh
dGU7CisgICAgYm9vbCBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdt
ZW50IHsgZmFsc2UgfTsKKyAgICBib29sIG1fcGFyc2VyU3RhdGVXYXNSZXNldCB7IGZhbHNlIH07
Cit9OworCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQykKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyJiBwYXJzZXIpIHsgcmV0dXJuIHBhcnNlci50eXBlKCkgPT0g
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpUeXBlOjpBVkZPYmpDOyB9CitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0VORCgpCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTkwNWNmZWE1MWI3NDVjNzhjNjllNTQyYTA2ZjIyM2I3ZjhkOTgzMAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTAsMCArMSwzMzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMuaCIKKworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisKKyNpbXBvcnQgIkFW
QXNzZXRNSU1FVHlwZUNhY2hlLmgiCisjaW1wb3J0ICJBVkFzc2V0VHJhY2tVdGlsaXRpZXMuaCIK
KyNpbXBvcnQgIkFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCIKKyNpbXBvcnQgIkF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgiCisjaW1wb3J0ICJGb3VyQ0MuaCIK
KyNpbXBvcnQgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgiCisjaW1wb3J0ICJMb2dn
aW5nLmgiCisjaW1wb3J0ICJNZWRpYURlc2NyaXB0aW9uLmgiCisjaW1wb3J0ICJNZWRpYVNhbXBs
ZS5oIgorI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCisjaW1wb3J0ICJOb3RJbXBsZW1l
bnRlZC5oIgorI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCisjaW1wb3J0ICJUaW1lUmFuZ2VzLmgi
CisjaW1wb3J0ICJWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIgorI2ltcG9y
dCA8QVZGb3VuZGF0aW9uL0FWQXNzZXRUcmFjay5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUv
VHlwZWRBcnJheUlubGluZXMuaD4KKyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8
cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPHBhbC9z
cGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0
aW9ucy5oPgorCisjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNpbXBvcnQg
PHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgorCisjcHJhZ21hIG1hcmsgLQorI3By
YWdtYSBtYXJrIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyCisKK0BpbnRlcmZhY2UgV2Vi
QVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgOiBOU09iamVjdDxBVlN0cmVhbURhdGFQYXJzZXJP
dXRwdXRIYW5kbGluZz4geworICAgIFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMq
IF9wYXJlbnQ7CisgICAgQVZTdHJlYW1EYXRhUGFyc2VyKiBfcGFyc2VyOworfQorQHByb3BlcnR5
IChhc3NpZ24pIFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMqIHBhcmVudDsKKy0g
KGlkKWluaXRXaXRoUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIqKXBhcnNlciBwYXJlbnQ6KFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMqKXBhcmVudDsKK0BlbmQKKworQGltcGxl
bWVudGF0aW9uIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyCistIChpZClpbml0V2l0aFBh
cnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyKilwYXJzZXIgcGFyZW50OihXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDKilwYXJlbnQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOwor
ICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIEFTU0VSVChwYXJlbnQp
OworICAgIF9wYXJlbnQgPSBwYXJlbnQ7CisgICAgX3BhcnNlciA9IHBhcnNlcjsKKyAgICBbX3Bh
cnNlciBzZXREZWxlZ2F0ZTpzZWxmXTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworQHN5bnRoZXNp
emUgcGFyZW50PV9wYXJlbnQ7CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIFtfcGFyc2VyIHNl
dERlbGVnYXRlOm5pbF07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKWludmFs
aWRhdGUKK3sKKyAgICBbX3BhcnNlciBzZXREZWxlZ2F0ZTpuaWxdOworICAgIF9wYXJzZXIgPSBu
dWxscHRyOworfQorCistICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNl
ciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldDooQVZBc3NldCAq
KWFzc2V0Cit7CisgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRh
UGFyc2VyID09IF9wYXJzZXIpOworICAgIF9wYXJlbnQtPmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNz
ZXQoYXNzZXQpOworfQorCistICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBh
cnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldDooQVZBc3Nl
dCAqKWFzc2V0IHdpdGhEaXNjb250aW51aXR5OihCT09MKWRpc2NvbnRpbnVpdHkKK3sKKyAgICBV
TlVTRURfUEFSQU0oZGlzY29udGludWl0eSk7CisgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRh
UGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOworICAgIF9wYXJlbnQtPmRpZFBh
cnNlU3RyZWFtRGF0YUFzQXNzZXQoYXNzZXQpOworfQorCistICh2b2lkKXN0cmVhbURhdGFQYXJz
ZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkRmFpbFRvUGFyc2VT
dHJlYW1EYXRhV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBBU1NFUlRfVU5VU0VE
KHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7CisgICAgX3Bh
cmVudC0+ZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yKGVycm9yKTsKK30KKworLSAo
dm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFy
c2VyIGRpZFByb3ZpZGVNZWRpYURhdGE6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZSBmb3JUcmFj
a0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQgbWVkaWFUeXBlOihOU1N0cmluZyAqKW5z
TWVkaWFUeXBlIGZsYWdzOihBVlN0cmVhbURhdGFQYXJzZXJPdXRwdXRNZWRpYURhdGFGbGFncylm
bGFncworeworICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBh
cnNlciA9PSBfcGFyc2VyKTsKKyAgICBfcGFyZW50LT5kaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJh
Y2tJRCh0cmFja0lELCBzYW1wbGUsIG5zTWVkaWFUeXBlLCBmbGFncyk7Cit9CisKK0FMTE9XX0RF
UFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCistICh2b2lkKXN0cmVhbURhdGFQYXJzZXJX
aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOihBVlN0cmVhbURh
dGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGZvclRyYWNrSUQ6KENNUGVyc2lzdGVudFRyYWNr
SUQpdHJhY2tJRAorQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECit7CisgICAg
QVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJz
ZXIpOworICAgIF9wYXJlbnQtPndpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXph
dGlvbkRhdGFGb3JUcmFja0lEKHRyYWNrSUQpOworfQorCitBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19CRUdJTgorLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQ
YXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRp
YWxpemF0aW9uRGF0YTooTlNEYXRhICopaW5pdERhdGEgZm9yVHJhY2tJRDooQ01QZXJzaXN0ZW50
VHJhY2tJRCl0cmFja0lECitBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKK3sK
KyAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0g
X3BhcnNlcik7CisgICAgX3BhcmVudC0+ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlh
bGl6YXRpb25EYXRhRm9yVHJhY2tJRChpbml0RGF0YSwgdHJhY2tJRCk7Cit9CitAZW5kCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworI3ByYWdtYSBtYXJrIC0KKyNwcmFnbWEgbWFyayBNZWRpYURl
c2NyaXB0aW9uQVZGT2JqQworCitjbGFzcyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyBmaW5hbCA6
IHB1YmxpYyBNZWRpYURlc2NyaXB0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPE1lZGlh
RGVzY3JpcHRpb25BVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrKiB0cmFjaykgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyh0cmFjaykpOyB9CisgICAgdmly
dHVhbCB+TWVkaWFEZXNjcmlwdGlvbkFWRk9iakMoKSB7IH0KKworICAgIGJvb2wgaXNWaWRlbygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNWaWRlbzsgfQorICAgIGJvb2wgaXNBdWRpbygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNBdWRpbzsgfQorICAgIGJvb2wgaXNUZXh0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1RleHQ7IH0KKyAgICBBdG9tU3RyaW5nIGNvZGVj
KCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIC8vIEF0b21TdHJpbmdzIGNhbiBvbmx5
IGJlIGRlc3Ryb3llZCBmcm9tIHRoZSBzYW1lIHRocmVhZCB0aGV5J3JlCisgICAgICAgIC8vIGNy
ZWF0ZWQgaW4uIFNpbmNlIHRoaXMgc3RydWN0dXJlIGlzIGNyZWF0ZWQgaW4gYSBwYXJzZXIgdGhy
ZWFkCisgICAgICAgIC8vIG9ubHkgY3JlYXRlIHRoZSBBdG9tU3RyaW5nIHRoZSBmaXJzdCB0aW1l
IHRoaXMgZnVuY3Rpb24gaXMgYWNjZXNzZWQKKyAgICAgICAgLy8gd2hpY2ggaXMgcHJlc3VtYWJs
eSBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgICAgIGlmICghbV9jb2RlYykKKyAgICAgICAgICAgIG1fY29kZWMgPSBBdG9tU3RyaW5nKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigmbV9vcmlnaW5hbENvZGVjKSwgNCk7CisgICAg
ICAgIHJldHVybiAqbV9jb2RlYzsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTWVkaWFEZXNjcmlw
dGlvbkFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaykKKyAgICAgICAgOiBtX2lzVmlkZW8oW3Ry
YWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljVmlzdWFsXSkK
KyAgICAgICAgLCBtX2lzQXVkaW8oW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRp
YUNoYXJhY3RlcmlzdGljQXVkaWJsZV0pCisgICAgICAgICwgbV9pc1RleHQoW3RyYWNrIGhhc01l
ZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJsZV0pCisgICAgewor
ICAgICAgICBOU0FycmF5KiBmb3JtYXREZXNjcmlwdGlvbnMgPSBbdHJhY2sgZm9ybWF0RGVzY3Jp
cHRpb25zXTsKKyAgICAgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjcmlwdGlvbiA9IFtm
b3JtYXREZXNjcmlwdGlvbnMgY291bnRdID8gKF9fYnJpZGdlIENNRm9ybWF0RGVzY3JpcHRpb25S
ZWYpW2Zvcm1hdERlc2NyaXB0aW9ucyBvYmplY3RBdEluZGV4OjBdIDogMDsKKyAgICAgICAgaWYg
KGRlc2NyaXB0aW9uKSB7CisgICAgICAgICAgICBtX29yaWdpbmFsQ29kZWMgPSBQQUw6OnNvZnRM
aW5rX0NvcmVNZWRpYV9DTUZvcm1hdERlc2NyaXB0aW9uR2V0TWVkaWFTdWJUeXBlKGRlc2NyaXB0
aW9uKTsKKyAgICAgICAgICAgIENGU3RyaW5nUmVmIG9yaWdpbmFsRm9ybWF0S2V5ID0gUEFMOjpj
YW5Mb2FkX0NvcmVNZWRpYV9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9Qcm90ZWN0ZWRD
b250ZW50T3JpZ2luYWxGb3JtYXQoKSA/IFBBTDo6Z2V0X0NvcmVNZWRpYV9rQ01Gb3JtYXREZXNj
cmlwdGlvbkV4dGVuc2lvbl9Qcm90ZWN0ZWRDb250ZW50T3JpZ2luYWxGb3JtYXQoKSA6IENGU1RS
KCJDb21tb25FbmNyeXB0aW9uT3JpZ2luYWxGb3JtYXQiKTsKKyAgICAgICAgICAgIENGVHlwZVJl
ZiBvcmlnaW5hbEZvcm1hdCA9IENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb24oZGVzY3Jp
cHRpb24sIG9yaWdpbmFsRm9ybWF0S2V5KTsKKyAgICAgICAgICAgIGlmIChvcmlnaW5hbEZvcm1h
dCAmJiBDRkdldFR5cGVJRChvcmlnaW5hbEZvcm1hdCkgPT0gQ0ZOdW1iZXJHZXRUeXBlSUQoKSkK
KyAgICAgICAgICAgICAgICBDRk51bWJlckdldFZhbHVlKChDRk51bWJlclJlZilvcmlnaW5hbEZv
cm1hdCwga0NGTnVtYmVyU0ludDMyVHlwZSwgJm1fb3JpZ2luYWxDb2RlYyk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBGb3VyQ2hhckNvZGUgbV9vcmlnaW5hbENvZGVjOworICAgIG11dGFibGUg
T3B0aW9uYWw8QXRvbVN0cmluZz4gbV9jb2RlYzsKKyAgICBib29sIG1faXNWaWRlbzsKKyAgICBi
b29sIG1faXNBdWRpbzsKKyAgICBib29sIG1faXNUZXh0OworfTsKKworI3ByYWdtYSBtYXJrIC0K
KyNwcmFnbWEgbWFyayBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDCisKK01lZGlhUGxheWVyRW51
bXM6OlN1cHBvcnRzVHlwZSBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjppc0NvbnRlbnRUeXBl
U3VwcG9ydGVkKGNvbnN0IENvbnRlbnRUeXBlJiB0eXBlKQoreworICAgIFN0cmluZyBleHRlbmRl
ZFR5cGUgPSB0eXBlLnJhdygpOworICAgIFN0cmluZyBvdXRwdXRDb2RlY3MgPSB0eXBlLnBhcmFt
ZXRlcihDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVyKCkpOworICAgIGlmICghb3V0cHV0Q29k
ZWNzLmlzRW1wdHkoKSAmJiBbUEFMOjpnZXRBVlN0cmVhbURhdGFQYXJzZXJDbGFzcygpIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob3V0cHV0TUlNRUNvZGVjUGFyYW1ldGVyRm9ySW5wdXRN
SU1FQ29kZWNQYXJhbWV0ZXI6KV0pIHsKKyAgICAgICAgb3V0cHV0Q29kZWNzID0gW1BBTDo6Z2V0
QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSBvdXRwdXRNSU1FQ29kZWNQYXJhbWV0ZXJGb3JJbnB1
dE1JTUVDb2RlY1BhcmFtZXRlcjpvdXRwdXRDb2RlY3NdOworICAgICAgICBleHRlbmRlZFR5cGUg
PSBtYWtlU3RyaW5nKHR5cGUuY29udGFpbmVyVHlwZSgpLCAiOyBjb2RlY3M9XCIiLCBvdXRwdXRD
b2RlY3MsICJcIiIpOworICAgIH0KKworICAgIGF1dG8mIHN0cmVhbURhdGFQYXJzZXJDYWNoZSA9
IEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpOworICAgIGlmIChz
dHJlYW1EYXRhUGFyc2VyQ2FjaGUuaXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIHN0cmVh
bURhdGFQYXJzZXJDYWNoZS5jYW5EZWNvZGVUeXBlKGV4dGVuZGVkVHlwZSk7CisKKyAgICBhdXRv
JiBhc3NldENhY2hlID0gQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpOworICAgIGlm
IChhc3NldENhY2hlLmlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBhc3NldENhY2hlLmNh
bkRlY29kZVR5cGUoZXh0ZW5kZWRUeXBlKTsKKworICAgIHJldHVybiBNZWRpYVBsYXllckVudW1z
OjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOworfQorCitTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKKyAgICA6IG1fcGFyc2VyKGFkb3B0
TlMoW1BBTDo6YWxsb2NBVlN0cmVhbURhdGFQYXJzZXJJbnN0YW5jZSgpIGluaXRdKSkKKyAgICAs
IG1fZGVsZWdhdGUoYWRvcHROUyhbW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIGFsbG9j
XSBpbml0V2l0aFBhcnNlcjptX3BhcnNlci5nZXQoKSBwYXJlbnQ6dGhpc10pKQoreworfQorCitT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCit7
CisgICAgbV9kZWxlZ2F0ZS5nZXQoKS5wYXJlbnQgPSBudWxscHRyOworfQorCit2b2lkIFNvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYg
ZGF0YSwgQXBwZW5kRmxhZ3MgZmxhZ3MpCit7CisgICAgYXV0byBzaGFyZWREYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRE
YXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBpZiAobV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHx8IGZs
YWdzID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5KQorICAgICAgICBbbV9wYXJzZXIgYXBw
ZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3RyZWFtRGF0YVBhcnNlclN0
cmVhbURhdGFEaXNjb250aW51aXR5XTsKKyAgICBlbHNlCisgICAgICAgIFttX3BhcnNlciBhcHBl
bmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKV07CisgICAgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0ID0g
ZmFsc2U7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6Zmx1c2hQZW5kaW5n
TWVkaWFEYXRhKCkKK3sKKyAgICBbbV9wYXJzZXIgcHJvdmlkZVBlbmRpbmdNZWRpYURhdGFdOwor
fQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OnNldFNob3VsZFByb3ZpZGVNZWRp
YURhdGFGb3JUcmFja0lEKGJvb2wgc2hvdWxkLCB1aW50NjRfdCB0cmFja0lEKQoreworICAgIFtt
X3BhcnNlciBzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhOnNob3VsZCBmb3JUcmFja0lEOnRyYWNr
SURdOworfQorCitib29sIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OnNob3VsZFByb3ZpZGVN
ZWRpYWRhdGFGb3JUcmFja0lEKHVpbnQ2NF90IHRyYWNrSUQpCit7CisgICAgcmV0dXJuIFttX3Bh
cnNlciBzaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRDp0cmFja0lEXTsKK30KKwordm9p
ZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpyZXNldFBhcnNlclN0YXRlKCkKK3sKKyAgICBt
X3BhcnNlclN0YXRlV2FzUmVzZXQgPSB0cnVlOworICAgIG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5l
eHRJbml0aWFsaXphdGlvblNlZ21lbnQgPSB0cnVlOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3NldCogYXNzZXQpCit7
CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgc3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBhc3NldCA9IHJldGFpblB0cihhc3NldCldIHsKKyAgICAgICAgbV9kaXNjYXJkU2FtcGxlc1Vu
dGlsTmV4dEluaXRpYWxpemF0aW9uU2VnbWVudCA9IGZhbHNlOworCisgICAgICAgIGlmICghbV9k
aWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIEluaXRpYWxpemF0aW9uU2VnbWVudCBzZWdtZW50OworCisgICAgICAgIGlmIChb
YXNzZXQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdmVyYWxsRHVyYXRpb25IaW50KV0p
CisgICAgICAgICAgICBzZWdtZW50LmR1cmF0aW9uID0gUEFMOjp0b01lZGlhVGltZShbYXNzZXQg
b3ZlcmFsbER1cmF0aW9uSGludF0pOworCisgICAgICAgIGlmIChzZWdtZW50LmR1cmF0aW9uLmlz
SW52YWxpZCgpIHx8IHNlZ21lbnQuZHVyYXRpb24gPT0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpKQor
ICAgICAgICAgICAgc2VnbWVudC5kdXJhdGlvbiA9IFBBTDo6dG9NZWRpYVRpbWUoW2Fzc2V0IGR1
cmF0aW9uXSk7CisKKyAgICAgICAgZm9yIChBVkFzc2V0VHJhY2sqIHRyYWNrIGluIFthc3NldCB0
cmFja3NdKSB7CisgICAgICAgICAgICBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6
QVZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJsZV0pIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhN
RSgxMjUxNjEpOiBIYW5kbGUgaW4tYmFuZCB0ZXh0IHRyYWNrcy4KKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKFt0cmFjayBoYXNNZWRp
YUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbF0pIHsKKyAgICAgICAg
ICAgICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ6
OlZpZGVvVHJhY2tJbmZvcm1hdGlvbiBpbmZvOworICAgICAgICAgICAgICAgIGF1dG8gdmlkZW9U
cmFjayA9IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGUodHJhY2sp
OworICAgICAgICAgICAgICAgIGluZm8udHJhY2sgPSB2aWRlb1RyYWNrLmNvcHlSZWYoKTsKKyAg
ICAgICAgICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVkaWFEZXNjcmlwdGlvbkFWRk9iakM6
OmNyZWF0ZSh0cmFjayk7CisgICAgICAgICAgICAgICAgc2VnbWVudC52aWRlb1RyYWNrcy5hcHBl
bmQoaW5mbyk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKFt0cmFjayBoYXNNZWRpYUNoYXJhY3Rl
cmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGVdKSB7CisgICAgICAgICAgICAgICAg
U291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OjpBdWRpb1Ry
YWNrSW5mb3JtYXRpb24gaW5mbzsKKyAgICAgICAgICAgICAgICBhdXRvIGF1ZGlvVHJhY2sgPSBB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKKyAgICAg
ICAgICAgICAgICBpbmZvLnRyYWNrID0gYXVkaW9UcmFjay5jb3B5UmVmKCk7CisgICAgICAgICAg
ICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDOjpjcmVhdGUo
dHJhY2spOworICAgICAgICAgICAgICAgIHNlZ21lbnQuYXVkaW9UcmFja3MuYXBwZW5kKGluZm8p
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBGSVhNRSgxMjUxNjEpICAgIDogQWRk
IFRleHRUcmFjayBzdXBwb3J0CisgICAgICAgIH0KKworICAgICAgICBtX2RpZFBhcnNlSW5pdGlh
bGl6YXRpb25EYXRhQ2FsbGJhY2soV1RGTW92ZShzZWdtZW50KSk7CisgICAgfSk7Cit9CisKK3Zv
aWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0
aEVycm9yKE5TRXJyb3IqIGVycm9yKQoreworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHN0
cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpXSB7Cisg
ICAgICAgIGlmIChtX2RpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKQorICAg
ICAgICAgICAgbV9kaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayhlcnJvci5n
ZXQoKS5jb2RlKTsKKyAgICB9KTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
OjpkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCh1aW50NjRfdCB0cmFja0lELCBDTVNhbXBs
ZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlLCB1bnNpZ25l
ZCBmbGFncykKK3sKKyAgICBVTlVTRURfUEFSQU0oZmxhZ3MpOworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2FtcGxlQnVmZmVyID0gcmV0
YWluUHRyKHNhbXBsZUJ1ZmZlciksIHRyYWNrSUQsIG1lZGlhVHlwZSA9IG1lZGlhVHlwZV0gewor
ICAgICAgICBpZiAoIW1fZGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGlmIChtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6
YXRpb25TZWdtZW50KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gbWVkaWFT
YW1wbGUgPSBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZShzYW1wbGVCdWZmZXIuZ2V0KCksIHRy
YWNrSUQpOworCisgICAgICAgIGlmIChtZWRpYVNhbXBsZS0+aXNIb21vZ2VuZW91cygpKSB7Cisg
ICAgICAgICAgICBtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhXVEZNb3ZlKG1lZGlhU2Ft
cGxlKSwgdHJhY2tJRCwgbWVkaWFUeXBlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGZvciAoYXV0byYgc2FtcGxlIDogbWVkaWFTYW1wbGUtPmRpdmlkZUludG9I
b21vZ2VuZW91c1NhbXBsZXMoKSkKKyAgICAgICAgICAgIG1fZGlkUHJvdmlkZU1lZGlhRGF0YUNh
bGxiYWNrKFdURk1vdmUoc2FtcGxlKSwgdHJhY2tJRCwgbWVkaWFUeXBlKTsKKyAgICB9KTsKK30K
Kwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCh1aW50NjRfdCB0cmFja0lEKQorewor
ICAgIG1fd2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRy
YWNrSURDYWxsYmFjayh0cmFja0lEKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFj
a0lEKE5TRGF0YSogbnNJbml0RGF0YSwgdWludDY0X3QgdHJhY2tJRCkKK3sKKyAgICBhdXRvIGlu
aXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRlKG5zSW5pdERhdGEubGVuZ3RoKTsKKyAgICBbbnNJ
bml0RGF0YSBnZXRCeXRlczppbml0RGF0YS0+ZGF0YSgpIGxlbmd0aDppbml0RGF0YS0+bGVuZ3Ro
KCldOworCisgICAgbV9kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRh
dGFGb3JUcmFja0lEQ2FsbGJhY2soV1RGTW92ZShpbml0RGF0YSksIHRyYWNrSUQpOworfQorCit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKaW5kZXggZGZhMTM0YjRkNjhm
ZGI3NDczNDM3OGQ5ZjlkZDNiZDg0MWYzM2Q2NS4uYWYxMzFlZDFmYTAyMTkwYjk4ODZjZTk1MGQz
ZTk4NjgwYzQzMWM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoTUVE
SUFfU09VUkNFKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCisjaW5jbHVkZSAiU291cmNlQnVmZmVy
UGFyc2VyLmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgPGRp
c3BhdGNoL2dyb3VwLmg+CiAjaW5jbHVkZSA8d3RmL0JveC5oPgpAQCAtMzgsMTggKzM5LDE3IEBA
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1dURlNlbWFwaG9yZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgog
I2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCi1PQkpDX0NMQVNTIEFW
QXNzZXQ7CiBPQkpDX0NMQVNTIEFWU3RyZWFtRGF0YVBhcnNlcjsKIE9CSkNfQ0xBU1MgQVZTYW1w
bGVCdWZmZXJBdWRpb1JlbmRlcmVyOwogT0JKQ19DTEFTUyBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjsKIE9CSkNfQ0xBU1MgTlNEYXRhOwogT0JKQ19DTEFTUyBOU0Vycm9yOwogT0JKQ19DTEFT
UyBOU09iamVjdDsKLU9CSkNfQ0xBU1MgV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXI7CiBP
QkpDX0NMQVNTIFdlYkFWU2FtcGxlQnVmZmVyRXJyb3JMaXN0ZW5lcjsKIAogdHlwZWRlZiBzdHJ1
Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOwpAQCAtODYsMzQgKzg2
LDI3IEBAIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDIGZpbmFsCiAjZW5kaWYKIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBjcmVh
dGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyopOworICAgIHN0YXRpYyBSZWY8U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM+IGNyZWF0ZShNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiwgUmVm
PFNvdXJjZUJ1ZmZlclBhcnNlcj4mJik7CiAgICAgdmlydHVhbCB+U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMoKTsKIAogICAgIHZvaWQgY2xlYXJNZWRpYVNvdXJjZSgpIHsgbV9tZWRpYVNvdXJj
ZSA9IG51bGxwdHI7IH0KIAotICAgIC8vIEFWU3RyZWFtRGF0YVBhcnNlciBkZWxlZ2F0ZSBtZXRo
b2RzCi0gICAgdm9pZCBkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQqKTsKLSAgICB2
b2lkIGRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcihOU0Vycm9yKik7Ci0gICAgdm9p
ZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChpbnQgdHJhY2tJRCwgQ01TYW1wbGVCdWZm
ZXJSZWYsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlLCB1bnNpZ25lZCBmbGFncyk7Ci0gICAgdm9p
ZCBkaWRSZWFjaEVuZE9mVHJhY2tXaXRoVHJhY2tJRChpbnQgdHJhY2tJRCwgY29uc3QgU3RyaW5n
JiBtZWRpYVR5cGUpOwotICAgIHZvaWQgd2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRp
YWxpemF0aW9uRGF0YUZvclRyYWNrSUQoaW50IHRyYWNrSUQpOwotICAgIHZvaWQgZGlkUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChOU0RhdGEqLCBp
bnQgdHJhY2tJRCwgQm94PEJpbmFyeVNlbWFwaG9yZT4pOwotCi0gICAgYm9vbCBwcm9jZXNzQ29k
ZWRGcmFtZShpbnQgdHJhY2tJRCwgQ01TYW1wbGVCdWZmZXJSZWYsIGNvbnN0IFN0cmluZyYgbWVk
aWFUeXBlKTsKKyAgICB2b2lkIHdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXph
dGlvbkRhdGFGb3JUcmFja0lEKHVpbnQ2NF90IHRyYWNrSUQpOworICAgIHZvaWQgZGlkUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChSZWY8VWludDhB
cnJheT4mJiwgdWludDY0X3QgdHJhY2tJRCwgQm94PEJpbmFyeVNlbWFwaG9yZT4pOwogCiAgICAg
Ym9vbCBoYXNWaWRlbygpIGNvbnN0OwogICAgIGJvb2wgaGFzU2VsZWN0ZWRWaWRlbygpIGNvbnN0
OwogICAgIGJvb2wgaGFzQXVkaW8oKSBjb25zdDsKIAotICAgIHZvaWQgdHJhY2tEaWRDaGFuZ2VF
bmFibGVkKFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKik7Ci0gICAgdm9pZCB0
cmFja0RpZENoYW5nZUVuYWJsZWQoQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMq
KTsKKyAgICB2b2lkIHRyYWNrRGlkQ2hhbmdlU2VsZWN0ZWQoVmlkZW9UcmFja1ByaXZhdGUmLCBi
b29sIHNlbGVjdGVkKTsKKyAgICB2b2lkIHRyYWNrRGlkQ2hhbmdlRW5hYmxlZChBdWRpb1RyYWNr
UHJpdmF0ZSYsIGJvb2wgZW5hYmxlZCk7CiAKICAgICB2b2lkIHdpbGxTZWVrKCk7CiAgICAgTWVk
aWFUaW1lIGZhc3RTZWVrVGltZUZvck1lZGlhVGltZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBN
ZWRpYVRpbWUmIG5lZ2F0aXZlVGhyZXNob2xkLCBjb25zdCBNZWRpYVRpbWUmIHBvc2l0aXZlVGhy
ZXNob2xkKTsKICAgICBGbG9hdFNpemUgbmF0dXJhbFNpemUoKTsKIAotICAgIGludCBwcm90ZWN0
ZWRUcmFja0lEKCkgY29uc3QgeyByZXR1cm4gbV9wcm90ZWN0ZWRUcmFja0lEOyB9Ci0gICAgQVZT
dHJlYW1EYXRhUGFyc2VyKiBwYXJzZXIoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlci5nZXQoKTsg
fQorICAgIHVpbnQ2NF90IHByb3RlY3RlZFRyYWNrSUQoKSBjb25zdCB7IHJldHVybiBtX3Byb3Rl
Y3RlZFRyYWNrSUQ7IH0KKyAgICBBVlN0cmVhbURhdGFQYXJzZXIqIHBhcnNlcigpIGNvbnN0Owog
ICAgIHZvaWQgc2V0Q0RNU2Vzc2lvbihDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDKik7CiAg
ICAgdm9pZCBzZXRDRE1JbnN0YW5jZShDRE1JbnN0YW5jZSopOwogICAgIHZvaWQgYXR0ZW1wdFRv
RGVjcnlwdCgpOwpAQCAtMTQ4LDcgKzE0MSwxMiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0
ZToKLSAgICBleHBsaWNpdCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVBy
aXZhdGVBVkZPYmpDKik7CisgICAgZXhwbGljaXQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMo
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyosIFJlZjxTb3VyY2VCdWZmZXJQYXJzZXI+JiYpOwor
CisgICAgdXNpbmcgSW5pdGlhbGl6YXRpb25TZWdtZW50ID0gU291cmNlQnVmZmVyUGFyc2VyOjpJ
bml0aWFsaXphdGlvblNlZ21lbnQ7CisgICAgdm9pZCBkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0
YShJbml0aWFsaXphdGlvblNlZ21lbnQmJik7CisgICAgdm9pZCBkaWRFbmNvdW50ZXJFcnJvckR1
cmluZ1BhcnNpbmcoaW50MzJfdCk7CisgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJh
Y2tJRChSZWY8TWVkaWFTYW1wbGU+JiYsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYg
bWVkaWFUeXBlKTsKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCiAgICAg
dm9pZCBzZXRDbGllbnQoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCopIGZpbmFsOwpAQCAtMTY4
LDMyICsxNjYsMzIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyTWluaW11bVVwY29taW5nUHJl
c2VudGF0aW9uVGltZShjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5T
d2l0Y2hUb1R5cGUoY29uc3QgQ29udGVudFR5cGUmKSBmaW5hbDsKIAotICAgIHZvaWQgZGlkQmVj
b21lUmVhZHlGb3JNb3JlU2FtcGxlcyhpbnQgdHJhY2tJRCk7CisgICAgdm9pZCBkaWRCZWNvbWVS
ZWFkeUZvck1vcmVTYW1wbGVzKHVpbnQ2NF90IHRyYWNrSUQpOwogICAgIHZvaWQgYXBwZW5kQ29t
cGxldGVkKCk7CiAgICAgdm9pZCBkZXN0cm95UGFyc2VyKCk7CiAgICAgdm9pZCBkZXN0cm95UmVu
ZGVyZXJzKCk7CisgICAgdm9pZCBjbGVhclRyYWNrcygpOwogCiAgICAgdm9pZCBmbHVzaFZpZGVv
KCk7CiAgICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgogICAgIHZvaWQgZmx1
c2goQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyICopOwogICAgIEFMTE9XX05FV19BUElfV0lU
SE9VVF9HVUFSRFNfRU5ECiAKLSAgICBWZWN0b3I8UmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDPj4gbV92aWRlb1RyYWNrczsKLSAgICBWZWN0b3I8UmVmUHRyPEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPj4gbV9hdWRpb1RyYWNrczsKKyAgICBWZWN0
b3I8UmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPj4gbV92aWRlb1RyYWNrczsKKyAgICBWZWN0b3I8
UmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPj4gbV9hdWRpb1RyYWNrczsKICAgICBWZWN0b3I8U291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakNFcnJvckNsaWVudCo+IG1fZXJyb3JDbGllbnRzOwogCiAg
ICAgV2Vha1B0ckZhY3Rvcnk8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IG1fYXBwZW5kV2Vh
a0ZhY3Rvcnk7CiAKLSAgICBSZXRhaW5QdHI8QVZTdHJlYW1EYXRhUGFyc2VyPiBtX3BhcnNlcjsK
LSAgICBSZXRhaW5QdHI8QVZBc3NldD4gbV9hc3NldDsKKyAgICBSZWY8U291cmNlQnVmZmVyUGFy
c2VyPiBtX3BhcnNlcjsKICAgICBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+
IG1fZGlzcGxheUxheWVyOwogICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4K
LSAgICBIYXNoTWFwPGludCwgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlcj4+
IG1fYXVkaW9SZW5kZXJlcnM7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmV0YWluUHRyPEFWU2Ft
cGxlQnVmZmVyQXVkaW9SZW5kZXJlcj4sIERlZmF1bHRIYXNoPHVpbnQ2NF90PiwgV1RGOjpVbnNp
Z25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+IG1fYXVkaW9SZW5kZXJlcnM7CiAg
ICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKLSAgICBSZXRhaW5QdHI8V2ViQVZT
dHJlYW1EYXRhUGFyc2VyTGlzdGVuZXI+IG1fZGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPFdlYkFW
U2FtcGxlQnVmZmVyRXJyb3JMaXN0ZW5lcj4gbV9lcnJvckxpc3RlbmVyOwogICAgIFJldGFpblB0
cjxOU0Vycm9yPiBtX2hkY3BFcnJvcjsKICAgICBCb3g8QmluYXJ5U2VtYXBob3JlPiBtX2hhc1Nl
c3Npb25TZW1hcGhvcmU7CisgICAgQm94PFNlbWFwaG9yZT4gbV9hYm9ydFNlbWFwaG9yZTsKICAg
ICBPU09iamVjdFB0cjxkaXNwYXRjaF9ncm91cF90PiBtX2lzQXBwZW5kaW5nR3JvdXA7CiAgICAg
UmVmUHRyPFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbj4gbV9kZWNvbXByZXNzaW9uU2Vzc2lv
bjsKIApAQCAtMjExLDExICsyMDksOSBAQCBwcml2YXRlOgogICAgIE9wdGlvbmFsPEZsb2F0U2l6
ZT4gbV9jYWNoZWRTaXplOwogICAgIEZsb2F0U2l6ZSBtX2N1cnJlbnRTaXplOwogICAgIGJvb2wg
bV9wYXJzaW5nU3VjY2VlZGVkIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9wYXJzZXJTdGF0ZVdhc1Jl
c2V0IHsgZmFsc2UgfTsKLSAgICBib29sIG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFs
aXphdGlvblNlZ21lbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93YWl0aW5nRm9yS2V5IHsgdHJ1
ZSB9OwotICAgIGludCBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgeyAtMSB9OwotICAgIGludCBtX3By
b3RlY3RlZFRyYWNrSUQgeyAtMSB9OworICAgIHVpbnQ2NF90IG1fZW5hYmxlZFZpZGVvVHJhY2tJ
RCB7IG5vdEZvdW5kIH07CisgICAgdWludDY0X3QgbV9wcm90ZWN0ZWRUcmFja0lEIHsgbm90Rm91
bmQgfTsKICAgICB1aW50NjRfdCBtX21hcElEOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLm1tCmluZGV4IGQ3MzU3NzVjYzhmMDRiOGIwMjFiMzVjNzAxNjk1YmQyNGY2ZjhkYTguLjIw
MGM4NGI4NjA4Y2VlZTNlMzVmN2YzY2M0M2VjY2UzMDQwNzdhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC00NCw2
ICs0NCw3IEBACiAjaW1wb3J0ICJNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgiCiAjaW1wb3J0
ICJOb3RJbXBsZW1lbnRlZC5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCisjaW1wb3J0ICJT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgiCiAjaW1wb3J0ICJTb3VyY2VCdWZmZXJQcml2YXRl
Q2xpZW50LmgiCiAjaW1wb3J0ICJUaW1lUmFuZ2VzLmgiCiAjaW1wb3J0ICJWaWRlb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIgpAQCAtODIsMTUzICs4Myw2IEBAIC0gKHZvaWQpYWRk
U3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlcjsK
IC0gKHZvaWQpcmVtb3ZlU3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3Ry
ZWFtRGF0YVBhcnNlcjsKIEBlbmQKIAotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBXZWJB
VlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcgotCi1AaW50ZXJmYWNlIFdlYkFWU3RyZWFtRGF0YVBh
cnNlckxpc3RlbmVyIDogTlNPYmplY3Q8QVZTdHJlYW1EYXRhUGFyc2VyT3V0cHV0SGFuZGxpbmc+
IHsKLSAgICBXZWFrUHRyPFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBfcGFy
ZW50OwotICAgIEJveDxTZW1hcGhvcmU+IF9hYm9ydFNlbWFwaG9yZTsKLSAgICBBVlN0cmVhbURh
dGFQYXJzZXIqIF9wYXJzZXI7Ci19Ci1AcHJvcGVydHkgKGFzc2lnbikgV2Vha1B0cjxXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gcGFyZW50OwotQHByb3BlcnR5IChhc3NpZ24p
IEJveDxTZW1hcGhvcmU+IGFib3J0U2VtYXBob3JlOwotLSAoaWQpaW5pdFdpdGhQYXJzZXI6KEFW
U3RyZWFtRGF0YVBhcnNlciopcGFyc2VyIHBhcmVudDooV2Vha1B0cjxXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQz4pcGFyZW50OwotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV2Vi
QVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIKLS0gKGlkKWluaXRXaXRoUGFyc2VyOihBVlN0cmVh
bURhdGFQYXJzZXIqKXBhcnNlciBwYXJlbnQ6KFdlYWtQdHI8V2ViQ29yZTo6U291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM+KXBhcmVudAotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAg
aWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgQVNTRVJUKHBhcmVudCk7Ci0g
ICAgX3BhcmVudCA9IHBhcmVudDsKLSAgICBfcGFyc2VyID0gcGFyc2VyOwotICAgIFtfcGFyc2Vy
IHNldERlbGVnYXRlOnNlbGZdOwotICAgIHJldHVybiBzZWxmOwotfQotCi1Ac3ludGhlc2l6ZSBw
YXJlbnQ9X3BhcmVudDsKLUBzeW50aGVzaXplIGFib3J0U2VtYXBob3JlPV9hYm9ydFNlbWFwaG9y
ZTsKLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW19wYXJzZXIgc2V0RGVsZWdhdGU6bmlsXTsK
LSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpaW52YWxpZGF0ZQotewotICAgIFtf
cGFyc2VyIHNldERlbGVnYXRlOm5pbF07Ci0gICAgX3BhcnNlciA9IG51bGxwdHI7Ci19Ci0KLS0g
KHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBh
cnNlciBkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0OihBVkFzc2V0ICopYXNzZXQKLXsKLSAgICBB
U1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNl
cik7Ci0KLSAgICBSZXRhaW5QdHI8QVZBc3NldD4gcHJvdGVjdGVkQXNzZXQgPSBhc3NldDsKLSAg
ICBjYWxsT25NYWluVGhyZWFkKFtwYXJlbnQgPSBfcGFyZW50LCBwcm90ZWN0ZWRBc3NldCA9IFdU
Rk1vdmUocHJvdGVjdGVkQXNzZXQpXSB7Ci0gICAgICAgIGlmIChwYXJlbnQpCi0gICAgICAgICAg
ICBwYXJlbnQtPmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQocHJvdGVjdGVkQXNzZXQuZ2V0KCkp
OwotICAgIH0pOwotfQotCi0tICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBh
cnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldDooQVZBc3Nl
dCAqKWFzc2V0IHdpdGhEaXNjb250aW51aXR5OihCT09MKWRpc2NvbnRpbnVpdHkKLXsKLSAgICBV
TlVTRURfUEFSQU0oZGlzY29udGludWl0eSk7Ci0gICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRh
UGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOwotCi0gICAgUmV0YWluUHRyPEFW
QXNzZXQ+IHByb3RlY3RlZEFzc2V0ID0gYXNzZXQ7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcGFy
ZW50ID0gX3BhcmVudCwgcHJvdGVjdGVkQXNzZXQgPSBXVEZNb3ZlKHByb3RlY3RlZEFzc2V0KV0g
ewotICAgICAgICBpZiAocGFyZW50KQotICAgICAgICAgICAgcGFyZW50LT5kaWRQYXJzZVN0cmVh
bURhdGFBc0Fzc2V0KHByb3RlY3RlZEFzc2V0LmdldCgpKTsKLSAgICB9KTsKLX0KLQotLSAodm9p
ZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2Vy
IGRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCi17Ci0g
ICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9w
YXJzZXIpOwotCi0gICAgUmV0YWluUHRyPE5TRXJyb3I+IHByb3RlY3RlZEVycm9yID0gZXJyb3I7
Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcGFyZW50ID0gX3BhcmVudCwgcHJvdGVjdGVkRXJyb3Ig
PSBXVEZNb3ZlKHByb3RlY3RlZEVycm9yKV0gewotICAgICAgICBpZiAocGFyZW50KQotICAgICAg
ICAgICAgcGFyZW50LT5kaWRGYWlsVG9QYXJzZVN0cmVhbURhdGFXaXRoRXJyb3IocHJvdGVjdGVk
RXJyb3IuZ2V0KCkpOwotICAgIH0pOwotfQotCi0tICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFW
U3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkUHJvdmlkZU1lZGlhRGF0YToo
Q01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlIGZvclRyYWNrSUQ6KENNUGVyc2lzdGVudFRyYWNrSUQp
dHJhY2tJRCBtZWRpYVR5cGU6KE5TU3RyaW5nICopbnNNZWRpYVR5cGUgZmxhZ3M6KEFWU3RyZWFt
RGF0YVBhcnNlck91dHB1dE1lZGlhRGF0YUZsYWdzKWZsYWdzCi17Ci0gICAgQVNTRVJUX1VOVVNF
RChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOwotCi0gICAg
UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBwcm90ZWN0ZWRTYW1wbGUgPSBzYW1wbGU7Ci0g
ICAgY2FsbE9uTWFpblRocmVhZChbcGFyZW50ID0gX3BhcmVudCwgcHJvdGVjdGVkU2FtcGxlID0g
V1RGTW92ZShwcm90ZWN0ZWRTYW1wbGUpLCB0cmFja0lELCBtZWRpYVR5cGUgPSBTdHJpbmcobnNN
ZWRpYVR5cGUpLCBmbGFnc10gewotICAgICAgICBpZiAocGFyZW50KQotICAgICAgICAgICAgcGFy
ZW50LT5kaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCh0cmFja0lELCBwcm90ZWN0ZWRTYW1w
bGUuZ2V0KCksIG1lZGlhVHlwZSwgZmxhZ3MpOwotICAgIH0pOwotfQotCi0tICh2b2lkKXN0cmVh
bURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkUmVh
Y2hFbmRPZlRyYWNrV2l0aFRyYWNrSUQ6KENNUGVyc2lzdGVudFRyYWNrSUQpdHJhY2tJRCBtZWRp
YVR5cGU6KE5TU3RyaW5nICopbnNNZWRpYVR5cGUKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHN0cmVh
bURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7Ci0KLSAgICBjYWxsT25N
YWluVGhyZWFkKFtwYXJlbnQgPSBfcGFyZW50LCB0cmFja0lELCBtZWRpYVR5cGUgPSBTdHJpbmco
bnNNZWRpYVR5cGUpXSB7Ci0gICAgICAgIGlmIChwYXJlbnQpCi0gICAgICAgICAgICBwYXJlbnQt
PmRpZFJlYWNoRW5kT2ZUcmFja1dpdGhUcmFja0lEKHRyYWNrSUQsIG1lZGlhVHlwZSk7Ci0gICAg
fSk7Ci19Ci0KLUFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCi0tICh2b2lk
KXN0cmVhbURhdGFQYXJzZXJXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGZvclRyYWNrSUQ6
KENNUGVyc2lzdGVudFRyYWNrSUQpdHJhY2tJRAotQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5ECi17Ci0gICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1E
YXRhUGFyc2VyID09IF9wYXJzZXIpOwotCi0gICAgLy8gV2UgbXVzdCBjYWxsIHN5bmNocm9ub3Vz
bHkgdG8gdGhlIG1haW4gdGhyZWFkLCBhcyB0aGUgQVZTdHJlYW1TZXNzaW9uIG11c3QgYmUgYXNz
b2NpYXRlZAotICAgIC8vIHdpdGggdGhlIHN0cmVhbURhdGFQYXJzZXIgYmVmb3JlIHRoZSBkZWxl
Z2F0ZSBtZXRob2QgcmV0dXJucy4KLSAgICBCb3g8QmluYXJ5U2VtYXBob3JlPiByZXNwb25kZWRT
ZW1hcGhvcmUgPSBCb3g8QmluYXJ5U2VtYXBob3JlPjo6Y3JlYXRlKCk7Ci0gICAgY2FsbE9uTWFp
blRocmVhZChbcGFyZW50ID0gX3BhcmVudCwgdHJhY2tJRCwgcmVzcG9uZGVkU2VtYXBob3JlXSgp
IHsKLSAgICAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAgIHBhcmVudC0+d2lsbFByb3ZpZGVD
b250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQodHJhY2tJRCk7Ci0g
ICAgICAgIHJlc3BvbmRlZFNlbWFwaG9yZS0+c2lnbmFsKCk7Ci0gICAgfSk7Ci0KLSAgICB3aGls
ZSAodHJ1ZSkgewotICAgICAgICBpZiAocmVzcG9uZGVkU2VtYXBob3JlLT53YWl0Rm9yKDEwMF9t
cykpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKF9hYm9ydFNlbWFwaG9yZS0+
d2FpdEZvcigxMDBfbXMpKSB7Ci0gICAgICAgICAgICBfYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotfQotCi1BTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgotLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihB
VlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTooTlNEYXRhICopaW5pdERhdGEgZm9yVHJhY2tJRDoo
Q01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lECi1BTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURh
dGFQYXJzZXIgPT0gX3BhcnNlcik7Ci0KLSAgICBCb3g8QmluYXJ5U2VtYXBob3JlPiBoYXNTZXNz
aW9uU2VtYXBob3JlID0gQm94PEJpbmFyeVNlbWFwaG9yZT46OmNyZWF0ZSgpOwotICAgIGNhbGxP
bk1haW5UaHJlYWQoW3BhcmVudCA9IF9wYXJlbnQsIHByb3RlY3RlZEluaXREYXRhID0gUmV0YWlu
UHRyPE5TRGF0YT4oaW5pdERhdGEpLCB0cmFja0lELCBoYXNTZXNzaW9uU2VtYXBob3JlXSB7Ci0g
ICAgICAgIGlmIChwYXJlbnQpCi0gICAgICAgICAgICBwYXJlbnQtPmRpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQocHJvdGVjdGVkSW5pdERhdGEu
Z2V0KCksIHRyYWNrSUQsIGhhc1Nlc3Npb25TZW1hcGhvcmUpOwotICAgIH0pOwotCi0gICAgd2hp
bGUgKHRydWUpIHsKLSAgICAgICAgaWYgKGhhc1Nlc3Npb25TZW1hcGhvcmUtPndhaXRGb3IoMTAw
X21zKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoX2Fib3J0U2VtYXBob3Jl
LT53YWl0Rm9yKDEwMF9tcykpIHsKLSAgICAgICAgICAgIF9hYm9ydFNlbWFwaG9yZS0+c2lnbmFs
KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci19Ci1AZW5kCi0KIEBp
bnRlcmZhY2UgV2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyIDogTlNPYmplY3QgewogICAg
IFdlYWtQdHI8V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IF9wYXJlbnQ7CiAg
ICAgVmVjdG9yPFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4+IF9sYXllcnM7
CkBAIC0zOTEsNDMgKzI0NSw2IEBAIEBlbmQKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5h
bWVzcGFjZSBQQUw7CiAKLSNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1hcmsgTWVkaWFEZXNjcmlw
dGlvbkFWRk9iakMKLQotY2xhc3MgTWVkaWFEZXNjcmlwdGlvbkFWRk9iakMgZmluYWwgOiBwdWJs
aWMgTWVkaWFEZXNjcmlwdGlvbiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNZWRpYURlc2Ny
aXB0aW9uQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayogdHJhY2spIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTWVkaWFEZXNjcmlwdGlvbkFWRk9iakModHJhY2spKTsgfQotICAgIHZpcnR1YWwg
fk1lZGlhRGVzY3JpcHRpb25BVkZPYmpDKCkgeyB9Ci0KLSAgICBBdG9tU3RyaW5nIGNvZGVjKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb2RlYzsgfQotICAgIGJvb2wgaXNWaWRlbygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNWaWRlbzsgfQotICAgIGJvb2wgaXNBdWRpbygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNBdWRpbzsgfQotICAgIGJvb2wgaXNUZXh0KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1RleHQ7IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgTWVk
aWFEZXNjcmlwdGlvbkFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaykKLSAgICAgICAgOiBtX2lz
VmlkZW8oW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGlj
VmlzdWFsXSkKLSAgICAgICAgLCBtX2lzQXVkaW8oW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0
aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJsZV0pCi0gICAgICAgICwgbV9pc1RleHQoW3Ry
YWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJsZV0p
Ci0gICAgewotICAgICAgICBOU0FycmF5KiBmb3JtYXREZXNjcmlwdGlvbnMgPSBbdHJhY2sgZm9y
bWF0RGVzY3JpcHRpb25zXTsKLSAgICAgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjcmlw
dGlvbiA9IFtmb3JtYXREZXNjcmlwdGlvbnMgY291bnRdID8gKF9fYnJpZGdlIENNRm9ybWF0RGVz
Y3JpcHRpb25SZWYpW2Zvcm1hdERlc2NyaXB0aW9ucyBvYmplY3RBdEluZGV4OjBdIDogMDsKLSAg
ICAgICAgaWYgKGRlc2NyaXB0aW9uKSB7Ci0gICAgICAgICAgICBGb3VyQ2hhckNvZGUgY29kZWMg
PSBDTUZvcm1hdERlc2NyaXB0aW9uR2V0TWVkaWFTdWJUeXBlKGRlc2NyaXB0aW9uKTsKLSAgICAg
ICAgICAgIENGU3RyaW5nUmVmIG9yaWdpbmFsRm9ybWF0S2V5ID0gUEFMOjpjYW5Mb2FkX0NvcmVN
ZWRpYV9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9Qcm90ZWN0ZWRDb250ZW50T3JpZ2lu
YWxGb3JtYXQoKSA/IFBBTDo6Z2V0X0NvcmVNZWRpYV9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVu
c2lvbl9Qcm90ZWN0ZWRDb250ZW50T3JpZ2luYWxGb3JtYXQoKSA6IENGU1RSKCJDb21tb25FbmNy
eXB0aW9uT3JpZ2luYWxGb3JtYXQiKTsKLSAgICAgICAgICAgIENGVHlwZVJlZiBvcmlnaW5hbEZv
cm1hdCA9IENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb24oZGVzY3JpcHRpb24sIG9yaWdp
bmFsRm9ybWF0S2V5KTsKLSAgICAgICAgICAgIGlmIChvcmlnaW5hbEZvcm1hdCAmJiBDRkdldFR5
cGVJRChvcmlnaW5hbEZvcm1hdCkgPT0gQ0ZOdW1iZXJHZXRUeXBlSUQoKSkKLSAgICAgICAgICAg
ICAgICBDRk51bWJlckdldFZhbHVlKChDRk51bWJlclJlZilvcmlnaW5hbEZvcm1hdCwga0NGTnVt
YmVyU0ludDMyVHlwZSwgJmNvZGVjKTsKLSAgICAgICAgICAgIG1fY29kZWMgPSBBdG9tU3RyaW5n
KHJlaW50ZXJwcmV0X2Nhc3Q8TENoYXIqPigmY29kZWMpLCA0KTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIEF0b21TdHJpbmcgbV9jb2RlYzsKLSAgICBib29sIG1faXNWaWRlbzsKLSAgICBib29s
IG1faXNBdWRpbzsKLSAgICBib29sIG1faXNUZXh0OwotfTsKLQogI3ByYWdtYSBtYXJrIC0KICNw
cmFnbWEgbWFyayBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQwogCkBAIC00NjUsMTQgKzI4Miwx
MyBAQCBzdGF0aWMgdm9pZCBidWZmZXJXYXNDb25zdW1lZENhbGxiYWNrKENNTm90aWZpY2F0aW9u
Q2VudGVyUmVmLCBjb25zdCB2b2lkKiBsaXN0ZQogICAgICAgICBzb3VyY2VCdWZmZXItPmJ1ZmZl
cldhc0NvbnN1bWVkKCk7CiB9CiAKLVJlZjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZShNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpD
KiBwYXJlbnQpCitSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyogcGFyZW50LCBS
ZWY8U291cmNlQnVmZmVyUGFyc2VyPiYmIHBhcnNlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhwYXJlbnQpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhwYXJlbnQsIFdURk1vdmUocGFy
c2VyKSkpOwogfQogCi1Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyogcGFyZW50KQotICAgIDogbV9w
YXJzZXIoYWRvcHROUyhbUEFMOjphbGxvY0FWU3RyZWFtRGF0YVBhcnNlckluc3RhbmNlKCkgaW5p
dF0pKQotICAgICwgbV9kZWxlZ2F0ZShhZG9wdE5TKFtbV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlz
dGVuZXIgYWxsb2NdIGluaXRXaXRoUGFyc2VyOm1fcGFyc2VyLmdldCgpIHBhcmVudDptYWtlV2Vh
a1B0cigqdGhpcyldKSkKK1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiBwYXJlbnQsIFJlZjxTb3Vy
Y2VCdWZmZXJQYXJzZXI+JiYgcGFyc2VyKQorICAgIDogbV9wYXJzZXIoV1RGTW92ZShwYXJzZXIp
KQogICAgICwgbV9lcnJvckxpc3RlbmVyKGFkb3B0TlMoW1tXZWJBVlNhbXBsZUJ1ZmZlckVycm9y
TGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoUGFyZW50Om1ha2VXZWFrUHRyKCp0aGlzKV0pKQogICAg
ICwgbV9pc0FwcGVuZGluZ0dyb3VwKGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfZ3JvdXBfY3JlYXRl
KCkpKQogICAgICwgbV9tZWRpYVNvdXJjZShwYXJlbnQpCkBAIC00ODYsMTAgKzMwMiwyNiBAQCBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoTWVk
aWFTb3VyY2VQcml2YXRlQVZGT2JqQwogCiAgICAgaWYgKCFbUEFMOjpnZXRBVlNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllckNsYXNzKCkgaW5zdGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9y
KHByZXJvbGxEZWNvZGVXaXRoQ29tcGxldGlvbkhhbmRsZXI6KV0pCiAgICAgICAgIENNTm90aWZp
Y2F0aW9uQ2VudGVyQWRkTGlzdGVuZXIoQ01Ob3RpZmljYXRpb25DZW50ZXJHZXREZWZhdWx0TG9j
YWxDZW50ZXIoKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obV9tYXBJRCksIGJ1ZmZlcldhc0Nv
bnN1bWVkQ2FsbGJhY2ssIGtDTVNhbXBsZUJ1ZmZlckNvbnN1bWVyTm90aWZpY2F0aW9uX0J1ZmZl
ckNvbnN1bWVkLCBudWxscHRyLCAwKTsKLSAgICAKLSAgICBtX2RlbGVnYXRlLmdldCgpLmFib3J0
U2VtYXBob3JlID0gQm94PFNlbWFwaG9yZT46OmNyZWF0ZSgwKTsKIAogICAgIHNvdXJjZUJ1ZmZl
ck1hcCgpLmFkZChtX21hcElELCBtYWtlV2Vha1B0cigqdGhpcykpOworCisgICAgbV9wYXJzZXIt
PnNldERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soW3dlYWtUaGlzID0gbWFrZVdl
YWtQdHIodGhpcyldIChJbml0aWFsaXphdGlvblNlZ21lbnQmJiBzZWdtZW50KSBtdXRhYmxlIHsK
KyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgaWYgKHdlYWtUaGlzKQor
ICAgICAgICAgICAgd2Vha1RoaXMtPmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKFdURk1vdmUo
c2VnbWVudCkpOworICAgIH0pOworCisgICAgbV9wYXJzZXItPnNldERpZEVuY291bnRlckVycm9y
RHVyaW5nUGFyc2luZ0NhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoaW50
MzJfdCBlcnJvckNvZGUpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICB3ZWFrVGhpcy0+ZGlkRW5jb3Vu
dGVyRXJyb3JEdXJpbmdQYXJzaW5nKGVycm9yQ29kZSk7CisgICAgfSk7CisKKyAgICBtX3BhcnNl
ci0+c2V0RGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KHRoaXMpXSAoUmVmPE1lZGlhU2FtcGxlPiYmIHNhbXBsZSwgdWludDY0X3QgdHJhY2tJRCwgY29u
c3QgU3RyaW5nJiBtZWRpYVR5cGUpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICB3ZWFrVGhpcy0+ZGlk
UHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoV1RGTW92ZShzYW1wbGUpLCB0cmFja0lELCBtZWRp
YVR5cGUpOworICAgIH0pOwogfQogCiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6flNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDKCkKQEAgLTUwMCw2ICszMzIsNyBAQCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6flNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKCkKICAgICBzb3VyY2VC
dWZmZXJNYXAoKS5yZW1vdmUobV9tYXBJRCk7CiAgICAgZGVzdHJveVBhcnNlcigpOwogICAgIGRl
c3Ryb3lSZW5kZXJlcnMoKTsKKyAgICBjbGVhclRyYWNrcygpOwogCiAgICAgaWYgKCFbUEFMOjpn
ZXRBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckNsYXNzKCkgaW5zdGFuY2VzUmVzcG9uZFRvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHByZXJvbGxEZWNvZGVXaXRoQ29tcGxldGlvbkhhbmRsZXI6KV0pCiAg
ICAgICAgIENNTm90aWZpY2F0aW9uQ2VudGVyUmVtb3ZlTGlzdGVuZXIoQ01Ob3RpZmljYXRpb25D
ZW50ZXJHZXREZWZhdWx0TG9jYWxDZW50ZXIoKSwgdGhpcywgYnVmZmVyV2FzQ29uc3VtZWRDYWxs
YmFjaywga0NNU2FtcGxlQnVmZmVyQ29uc3VtZXJOb3RpZmljYXRpb25fQnVmZmVyQ29uc3VtZWQs
IG51bGxwdHIpOwpAQCAtNTA4LDcgKzM0MSw3IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
Ojp+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoKQogICAgICAgICBtX2hhc1Nlc3Npb25TZW1h
cGhvcmUtPnNpZ25hbCgpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpk
aWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQordm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRp
b25TZWdtZW50JiYgc2VnbWVudCkKIHsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwog
CkBAIC01MTYsNTIgKzM0OSwzMyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpk
aWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAobV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPnNob3VsZENoZWNrSGFyZHdhcmVT
dXBwb3J0KCkpIHsKLSAgICAgICAgZm9yIChBVkFzc2V0VHJhY2sgKnRyYWNrIGluIFthc3NldCB0
cmFja3NdKSB7Ci0gICAgICAgICAgICBpZiAoIWFzc2V0VHJhY2tNZWV0c0hhcmR3YXJlRGVjb2Rl
UmVxdWlyZW1lbnRzKHRyYWNrLCBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+bWVkaWFDb250ZW50
VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBp
bmZvIDogc2VnbWVudC52aWRlb1RyYWNrcykgeworICAgICAgICAgICAgYXV0byBjb2RlYyA9IEZv
dXJDQzo6ZnJvbVN0cmluZyhpbmZvLmRlc2NyaXB0aW9uLT5jb2RlYygpKTsKKyAgICAgICAgICAg
IGlmICghY29kZWMpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAo
IWNvZGVjc01lZXRIYXJkd2FyZURlY29kZVJlcXVpcmVtZW50cyh7eyAqY29kZWMgfX0sIG1fbWVk
aWFTb3VyY2UtPnBsYXllcigpLT5tZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3Vw
cG9ydCgpKSkgewogICAgICAgICAgICAgICAgIG1fcGFyc2luZ1N1Y2NlZWRlZCA9IGZhbHNlOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
IAotICAgIG1fYXNzZXQgPSBhc3NldDsKLQotICAgIG1fdmlkZW9UcmFja3MuY2xlYXIoKTsKLSAg
ICBtX2F1ZGlvVHJhY2tzLmNsZWFyKCk7Ci0KLSAgICBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0
SW5pdGlhbGl6YXRpb25TZWdtZW50ID0gZmFsc2U7Ci0KLSAgICBTb3VyY2VCdWZmZXJQcml2YXRl
Q2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQgc2VnbWVudDsKLQotICAgIGlmIChbbV9hc3Nl
dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG92ZXJhbGxEdXJhdGlvbkhpbnQpXSkKLSAg
ICAgICAgc2VnbWVudC5kdXJhdGlvbiA9IFBBTDo6dG9NZWRpYVRpbWUoW21fYXNzZXQgb3ZlcmFs
bER1cmF0aW9uSGludF0pOwotCi0gICAgaWYgKHNlZ21lbnQuZHVyYXRpb24uaXNJbnZhbGlkKCkg
fHwgc2VnbWVudC5kdXJhdGlvbiA9PSBNZWRpYVRpbWU6Onplcm9UaW1lKCkpCi0gICAgICAgIHNl
Z21lbnQuZHVyYXRpb24gPSBQQUw6OnRvTWVkaWFUaW1lKFttX2Fzc2V0IGR1cmF0aW9uXSk7Ci0K
LSAgICBmb3IgKEFWQXNzZXRUcmFjayogdHJhY2sgaW4gW21fYXNzZXQgdHJhY2tzXSkgewotICAg
ICAgICBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3Rlcmlz
dGljTGVnaWJsZV0pIHsKLSAgICAgICAgICAgIC8vIEZJWE1FKDEyNTE2MSk6IEhhbmRsZSBpbi1i
YW5kIHRleHQgdHJhY2tzLgotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KKyAgICBj
bGVhclRyYWNrcygpOwogCi0gICAgICAgIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3Rp
YzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWxdKSB7Ci0gICAgICAgICAgICBTb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ6OlZpZGVvVHJhY2tJbmZvcm1h
dGlvbiBpbmZvOwotICAgICAgICAgICAgYXV0byB2aWRlb1RyYWNrID0gVmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7Ci0gICAgICAgICAgICBp
bmZvLnRyYWNrID0gdmlkZW9UcmFjay5jb3B5UmVmKCk7Ci0gICAgICAgICAgICBtX3ZpZGVvVHJh
Y2tzLmFwcGVuZChXVEZNb3ZlKHZpZGVvVHJhY2spKTsKLSAgICAgICAgICAgIGluZm8uZGVzY3Jp
cHRpb24gPSBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKLSAgICAgICAg
ICAgIHNlZ21lbnQudmlkZW9UcmFja3MuYXBwZW5kKGluZm8pOwotICAgICAgICB9IGVsc2UgaWYg
KFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGli
bGVdKSB7Ci0gICAgICAgICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXph
dGlvblNlZ21lbnQ6OkF1ZGlvVHJhY2tJbmZvcm1hdGlvbiBpbmZvOwotICAgICAgICAgICAgYXV0
byBhdWRpb1RyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0
ZSh0cmFjaywgdGhpcyk7Ci0gICAgICAgICAgICBpbmZvLnRyYWNrID0gYXVkaW9UcmFjay5jb3B5
UmVmKCk7Ci0gICAgICAgICAgICBtX2F1ZGlvVHJhY2tzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvVHJh
Y2spKTsKLSAgICAgICAgICAgIGluZm8uZGVzY3JpcHRpb24gPSBNZWRpYURlc2NyaXB0aW9uQVZG
T2JqQzo6Y3JlYXRlKHRyYWNrKTsKLSAgICAgICAgICAgIHNlZ21lbnQuYXVkaW9UcmFja3MuYXBw
ZW5kKGluZm8pOwotICAgICAgICB9CisgICAgZm9yIChhdXRvIHZpZGVvVHJhY2tJbmZvIDogc2Vn
bWVudC52aWRlb1RyYWNrcykgeworICAgICAgICB2aWRlb1RyYWNrSW5mby50cmFjay0+c2V0U2Vs
ZWN0ZWRDaGFuZ2VkQ2FsbGJhY2soW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChWaWRl
b1RyYWNrUHJpdmF0ZSYgdHJhY2ssIGJvb2wgc2VsZWN0ZWQpIHsKKyAgICAgICAgICAgIGlmICh3
ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+dHJhY2tEaWRDaGFuZ2VTZWxlY3Rl
ZCh0cmFjaywgc2VsZWN0ZWQpOworICAgICAgICB9KTsKKyAgICAgICAgbV92aWRlb1RyYWNrcy5h
cHBlbmQodmlkZW9UcmFja0luZm8udHJhY2spOworICAgIH0KIAotICAgICAgICAvLyBGSVhNRSgx
MjUxNjEpOiBBZGQgVGV4dFRyYWNrIHN1cHBvcnQKKyAgICBmb3IgKGF1dG8gYXVkaW9UcmFja0lu
Zm8gOiBzZWdtZW50LmF1ZGlvVHJhY2tzKSB7CisgICAgICAgIGF1ZGlvVHJhY2tJbmZvLnRyYWNr
LT5zZXRFbmFibGVkQ2hhbmdlZENhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMp
XSAoQXVkaW9UcmFja1ByaXZhdGUmIHRyYWNrLCBib29sIGVuYWJsZWQpIHsKKyAgICAgICAgICAg
IGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+dHJhY2tEaWRDaGFuZ2VF
bmFibGVkKHRyYWNrLCBlbmFibGVkKTsKKyAgICAgICAgfSk7CisgICAgICAgIG1fYXVkaW9UcmFj
a3MuYXBwZW5kKGF1ZGlvVHJhY2tJbmZvLnRyYWNrKTsKICAgICB9CiAKICAgICBpZiAobV9tZWRp
YVNvdXJjZSkKQEAgLTU3MSw4MCArMzg1LDUwIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3NldCogYXNzZXQpCiAgICAgICAg
IG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2Vn
bWVudChzZWdtZW50KTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlk
RmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yKE5TRXJyb3IgKmVycm9yKQordm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nKGlu
dDMyX3QgY29kZSkKIHsKICNpZiBMT0dfRElTQUJMRUQKLSAgICBVTlVTRURfUEFSQU0oZXJyb3Ip
OworICAgIFVOVVNFRF9QQVJBTShjb2RlKTsKICNlbmRpZgotICAgIEVSUk9SX0xPRyhMT0dJREVO
VElGSUVSLCBbW2Vycm9yIGRlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSk7CisgICAgRVJST1JfTE9H
KExPR0lERU5USUZJRVIsIGNvZGUpOwogCiAgICAgbV9wYXJzaW5nU3VjY2VlZGVkID0gZmFsc2U7
CiB9CiAKLXN0cnVjdCBQcm9jZXNzQ29kZWRGcmFtZUluZm8gewotICAgIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDKiBzb3VyY2VCdWZmZXI7Ci0gICAgaW50IHRyYWNrSUQ7Ci0gICAgY29uc3Qg
U3RyaW5nJiBtZWRpYVR5cGU7Ci19OwotCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChpbnQgdHJhY2tJRCwgQ01TYW1wbGVCdWZm
ZXJSZWYgc2FtcGxlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgdW5zaWduZWQpCit2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJh
Y2tJRChSZWY8TWVkaWFTYW1wbGU+JiYgbWVkaWFTYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNv
bnN0IFN0cmluZyYgbWVkaWFUeXBlKQogewotICAgIHByb2Nlc3NDb2RlZEZyYW1lKHRyYWNrSUQs
IHNhbXBsZUJ1ZmZlciwgbWVkaWFUeXBlKTsKLX0KKyAgICBVTlVTRURfUEFSQU0obWVkaWFUeXBl
KTsKIAotYm9vbCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6cHJvY2Vzc0NvZGVkRnJhbWUo
aW50IHRyYWNrSUQsIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgY29uc3QgU3RyaW5n
JikKLXsKICAgICBpZiAodHJhY2tJRCAhPSBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgJiYgIW1fYXVk
aW9SZW5kZXJlcnMuY29udGFpbnModHJhY2tJRCkpIHsKICAgICAgICAgLy8gRklYTUUoMTI1MTYx
KTogV2UgZG9uJ3QgaGFuZGxlIHRleHQgdHJhY2tzLCBhbmQgcGFzc2luZyB0aGlzIHNhbXBsZSB1
cCB0byBTb3VyY2VCdWZmZXIKICAgICAgICAgLy8gd2lsbCBqdXN0IGNvbmZ1c2UgaXRzIHN0YXRl
LiBEcm9wIHRoaXMgc2FtcGxlIHVudGlsIHdlIGNhbiBoYW5kbGUgdGV4dCB0cmFja3MgcHJvcGVy
bHkuCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGlmIChtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50KQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIW1fY2xpZW50KQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIGF1dG8gbWVkaWFTYW1wbGUgPSBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0
ZShzYW1wbGVCdWZmZXIsIHRyYWNrSUQpOwotCi0gICAgaWYgKG1lZGlhU2FtcGxlLT5pc0hvbW9n
ZW5lb3VzKCkpIHsKLSAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsIG1lZGlhU2FtcGxl
LT50b0pTT05TdHJpbmcoKSk7CisgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsIG1lZGlhU2Ft
cGxlLT50b0pTT05TdHJpbmcoKSk7CisgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVu
dC0+c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUobWVkaWFTYW1wbGUpOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBhdXRvIG1lZGlhU2FtcGxlcyA9IG1lZGlh
U2FtcGxlLT5kaXZpZGVJbnRvSG9tb2dlbmVvdXNTYW1wbGVzKCk7Ci0gICAgZm9yIChhdXRvJiBz
YW1wbGUgOiBtZWRpYVNhbXBsZXMpIHsKLSAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIs
IHNhbXBsZS0+dG9KU09OU3RyaW5nKCkpOwotICAgICAgICBtX2NsaWVudC0+c291cmNlQnVmZmVy
UHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUoc2FtcGxlKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUmVhY2hFbmRPZlRy
YWNrV2l0aFRyYWNrSUQoaW50LCBjb25zdCBTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OndpbGxQcm92aWRlQ29u
dGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKGludCB0cmFja0lEKQor
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQodWludDY0X3QgdHJhY2tJRCkKIHsKICAg
ICBpZiAoIW1fbWVkaWFTb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX3Bh
cnNlcik7Ci0KICNpZiBIQVZFKEFWU1RSRUFNU0VTU0lPTikgJiYgRU5BQkxFKExFR0FDWV9FTkNS
WVBURURfTUVESUEpCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAidHJhY2sgPSAiLCB0
cmFja0lEKTsKIAogICAgIG1fcHJvdGVjdGVkVHJhY2tJRCA9IHRyYWNrSUQ7CiAKKyAgICBhdXRv
IHBhcnNlciA9IHRoaXMtPnBhcnNlcigpOworICAgIGlmICghcGFyc2VyKQorICAgICAgICByZXR1
cm47CisKICAgICBpZiAoQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyogc2Vzc2lvbiA9IG1f
bWVkaWFTb3VyY2UtPnBsYXllcigpLT5jZG1TZXNzaW9uKCkpCi0gICAgICAgIHNlc3Npb24tPmFk
ZFBhcnNlcihtX3BhcnNlci5nZXQoKSk7CisgICAgICAgIHNlc3Npb24tPmFkZFBhcnNlcihwYXJz
ZXIpOwogICAgIGVsc2UgaWYgKCFDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6aXNBdmFp
bGFibGUoKSkgewogICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAg
W21fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5zdHJlYW1TZXNzaW9uKCkgYWRkU3RyZWFtRGF0YVBh
cnNlcjptX3BhcnNlci5nZXQoKV07CisgICAgICAgIFttX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+
c3RyZWFtU2Vzc2lvbigpIGFkZFN0cmVhbURhdGFQYXJzZXI6cGFyc2VyXTsKICAgICAgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgIH0KICNlbHNlCkBAIC02NTIsNyArNDM2LDcgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUYKICNlbmRpZgogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRh
dGFGb3JUcmFja0lEKE5TRGF0YSogaW5pdERhdGEsIGludCB0cmFja0lELCBCb3g8QmluYXJ5U2Vt
YXBob3JlPiBoYXNTZXNzaW9uU2VtYXBob3JlKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJh
Y2tJRChSZWY8VWludDhBcnJheT4mJiBpbml0RGF0YSwgdWludDY0X3QgdHJhY2tJRCwgQm94PEJp
bmFyeVNlbWFwaG9yZT4gaGFzU2Vzc2lvblNlbWFwaG9yZSkKIHsKICAgICBpZiAoIW1fbWVkaWFT
b3VyY2UpCiAgICAgICAgIHJldHVybjsKQEAgLTY2MSwxMSArNDQ1LDExIEBAIHZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxp
emF0aW9uRGF0YUZvCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAidHJhY2sgPSAiLCB0
cmFja0lEKTsKIAogICAgIG1fcHJvdGVjdGVkVHJhY2tJRCA9IHRyYWNrSUQ7Ci0gICAgbV9pbml0
RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShbaW5pdERhdGEgbGVuZ3RoXSk7Ci0gICAgW2luaXRE
YXRhIGdldEJ5dGVzOm1faW5pdERhdGEtPmRhdGEoKSBsZW5ndGg6bV9pbml0RGF0YS0+bGVuZ3Ro
KCldOworICAgIG1faW5pdERhdGEgPSBXVEZNb3ZlKGluaXREYXRhKTsKICAgICBtX21lZGlhU291
cmNlLT5zb3VyY2VCdWZmZXJLZXlOZWVkZWQodGhpcywgbV9pbml0RGF0YS5nZXQoKSk7CiAgICAg
aWYgKGF1dG8gc2Vzc2lvbiA9IG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5jZG1TZXNzaW9uKCkp
IHsKLSAgICAgICAgc2Vzc2lvbi0+YWRkUGFyc2VyKG1fcGFyc2VyLmdldCgpKTsKKyAgICAgICAg
aWYgKGF1dG8gcGFyc2VyID0gdGhpcy0+cGFyc2VyKCkpCisgICAgICAgICAgICBzZXNzaW9uLT5h
ZGRQYXJzZXIocGFyc2VyKTsKICAgICAgICAgaGFzU2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFsKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02NzYsMTQgKzQ2MCwxNSBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFs
aXphdGlvbkRhdGFGbwogICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZSA9IGhhc1Nlc3Npb25TZW1h
cGhvcmU7CiAgICAgCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRF
TlRLRVlTRVNTSU9OKQotICAgIGF1dG8gaW5pdERhdGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShpbml0RGF0YSk7CisgICAgYXV0byBpbml0RGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG1faW5pdERhdGEtPmRhdGEoKSwgbV9pbml0RGF0YS0+Ynl0ZUxlbmd0aCgpKTsKICAg
ICBhdXRvIGtleUlEcyA9IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlE
c1NpbmYoaW5pdERhdGFCdWZmZXIpOwogICAgIGlmICgha2V5SURzKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAobV9jZG1JbnN0YW5jZSkgewogICAgICAgICBpZiAoYXV0byBpbnN0YW5jZVNl
c3Npb24gPSBtX2NkbUluc3RhbmNlLT5zZXNzaW9uRm9yS2V5SURzKGtleUlEcy52YWx1ZSgpKSkg
ewotICAgICAgICAgICAgW2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSBhZGRD
b250ZW50S2V5UmVjaXBpZW50Om1fcGFyc2VyLmdldCgpXTsKKyAgICAgICAgICAgIGlmIChhdXRv
IHBhcnNlciA9IHRoaXMtPnBhcnNlcigpKQorICAgICAgICAgICAgICAgIFtpbnN0YW5jZVNlc3Np
b24tPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVudDpwYXJzZXJdOwog
ICAgICAgICAgICAgaWYgKG1faGFzU2Vzc2lvblNlbWFwaG9yZSkgewogICAgICAgICAgICAgICAg
IG1faGFzU2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFsKCk7CiAgICAgICAgICAgICAgICAgbV9oYXNT
ZXNzaW9uU2VtYXBob3JlID0gbnVsbHB0cjsKQEAgLTcyNCwxNiArNTA5LDU0IEBAIHZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBk
YXRhKQogewogICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiZGF0YSBsZW5ndGggPSAiLCBk
YXRhLnNpemUoKSk7CiAKKyAgICBBU1NFUlQoIW1faGFzU2Vzc2lvblNlbWFwaG9yZSk7CisgICAg
QVNTRVJUKCFtX2Fib3J0U2VtYXBob3JlKTsKKworICAgIG1fYWJvcnRTZW1hcGhvcmUgPSBCb3g8
U2VtYXBob3JlPjo6Y3JlYXRlKDApOworICAgIG1fcGFyc2VyLT5zZXRXaWxsUHJvdmlkZUNvbnRl
bnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrKFt3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBhYm9ydFNlbWFwaG9yZSA9IG1fYWJvcnRTZW1hcGhvcmVd
ICh1aW50NjRfdCB0cmFja0lEKSBtdXRhYmxlIHsKKyAgICAgICAgLy8gV2UgbXVzdCBjYWxsIHN5
bmNocm9ub3VzbHkgdG8gdGhlIG1haW4gdGhyZWFkLCBhcyB0aGUgQVZTdHJlYW1TZXNzaW9uIG11
c3QgYmUgYXNzb2NpYXRlZAorICAgICAgICAvLyB3aXRoIHRoZSBzdHJlYW1EYXRhUGFyc2VyIGJl
Zm9yZSB0aGUgZGVsZWdhdGUgbWV0aG9kIHJldHVybnMuCisgICAgICAgIEJveDxCaW5hcnlTZW1h
cGhvcmU+IHJlc3BvbmRlZFNlbWFwaG9yZSA9IEJveDxCaW5hcnlTZW1hcGhvcmU+OjpjcmVhdGUo
KTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlz
KSwgdHJhY2tJRCwgcmVzcG9uZGVkU2VtYXBob3JlXSgpIHsKKyAgICAgICAgICAgIGlmICh3ZWFr
VGhpcykKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+d2lsbFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQodHJhY2tJRCk7CisgICAgICAgICAgICBy
ZXNwb25kZWRTZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAgICB9KTsKKworICAgICAgICB3aGls
ZSAodHJ1ZSkgeworICAgICAgICAgICAgaWYgKHJlc3BvbmRlZFNlbWFwaG9yZS0+d2FpdEZvcigx
MDBfbXMpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYgKGFib3J0
U2VtYXBob3JlLT53YWl0Rm9yKDEwMF9tcykpIHsKKyAgICAgICAgICAgICAgICBhYm9ydFNlbWFw
aG9yZS0+c2lnbmFsKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfSk7CisKKyAgICBtX3BhcnNlci0+c2V0RGlkUHJvdmlkZUNvbnRlbnRL
ZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrKFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKHRoaXMpLCBhYm9ydFNlbWFwaG9yZSA9IG1fYWJvcnRTZW1hcGhvcmVdIChS
ZWY8VWludDhBcnJheT4mJiBpbml0RGF0YSwgdWludDY0X3QgdHJhY2tJRCkgbXV0YWJsZSB7Cisg
ICAgICAgIEJveDxCaW5hcnlTZW1hcGhvcmU+IGhhc1Nlc3Npb25TZW1hcGhvcmUgPSBCb3g8Qmlu
YXJ5U2VtYXBob3JlPjo6Y3JlYXRlKCk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtU
aGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGluaXREYXRhID0gV1RGTW92ZShpbml0RGF0YSksIHRy
YWNrSUQsIGhhc1Nlc3Npb25TZW1hcGhvcmVdICgpIG11dGFibGUgeworICAgICAgICAgICAgaWYg
KHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5kaWRQcm92aWRlQ29udGVudEtl
eVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKFdURk1vdmUoaW5pdERhdGEpLCB0
cmFja0lELCBoYXNTZXNzaW9uU2VtYXBob3JlKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgd2hp
bGUgKHRydWUpIHsKKyAgICAgICAgICAgIGlmIChoYXNTZXNzaW9uU2VtYXBob3JlLT53YWl0Rm9y
KDEwMF9tcykpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAoYWJv
cnRTZW1hcGhvcmUtPndhaXRGb3IoMTAwX21zKSkgeworICAgICAgICAgICAgICAgIGFib3J0U2Vt
YXBob3JlLT5zaWduYWwoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9KTsKKwogICAgIG1fcGFyc2luZ1N1Y2NlZWRlZCA9IHRydWU7CiAg
ICAgZGlzcGF0Y2hfZ3JvdXBfZW50ZXIobV9pc0FwcGVuZGluZ0dyb3VwLmdldCgpKTsKIAotICAg
IGRpc3BhdGNoX2FzeW5jKGdsb2JhbERhdGFQYXJzZXJRdWV1ZSgpLCBbZGF0YSA9IFdURk1vdmUo
ZGF0YSksIHdlYWtUaGlzID0gbV9hcHBlbmRXZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCp0aGlz
KSwgcGFyc2VyID0gbV9wYXJzZXIsIGRlbGVnYXRlID0gbV9kZWxlZ2F0ZSwgaXNBcHBlbmRpbmdH
cm91cCA9IG1faXNBcHBlbmRpbmdHcm91cCwgcGFyc2VyU3RhdGVXYXNSZXNldCA9IG1fcGFyc2Vy
U3RhdGVXYXNSZXNldF0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gc2hhcmVkRGF0YSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwotICAgICAgICBhdXRvIG5zRGF0YSA9
IHNoYXJlZERhdGEtPmNyZWF0ZU5TRGF0YSgpOwotICAgICAgICBpZiAocGFyc2VyU3RhdGVXYXNS
ZXNldCkKLSAgICAgICAgICAgIFtwYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkg
d2l0aEZsYWdzOkFWU3RyZWFtRGF0YVBhcnNlclN0cmVhbURhdGFEaXNjb250aW51aXR5XTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgW3BhcnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5n
ZXQoKV07CisgICAgZGlzcGF0Y2hfYXN5bmMoZ2xvYmFsRGF0YVBhcnNlclF1ZXVlKCksIFtkYXRh
ID0gV1RGTW92ZShkYXRhKSwgd2Vha1RoaXMgPSBtX2FwcGVuZFdlYWtGYWN0b3J5LmNyZWF0ZVdl
YWtQdHIoKnRoaXMpLCBwYXJzZXIgPSBtX3BhcnNlciwgaXNBcHBlbmRpbmdHcm91cCA9IG1faXNB
cHBlbmRpbmdHcm91cF0gKCkgbXV0YWJsZSB7CisgICAgICAgIHBhcnNlci0+YXBwZW5kRGF0YShX
VEZNb3ZlKGRhdGEpKTsKIAogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpc10gewog
ICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQpAQCAtNzQxLDExICs1NjQsMjAgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRh
dGEpCiAgICAgICAgIH0pOwogICAgICAgICBkaXNwYXRjaF9ncm91cF9sZWF2ZShpc0FwcGVuZGlu
Z0dyb3VwLmdldCgpKTsKICAgICB9KTsKLSAgICBtX3BhcnNlclN0YXRlV2FzUmVzZXQgPSBmYWxz
ZTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kQ29tcGxldGVk
KCkKIHsKKyAgICBpZiAobV9hYm9ydFNlbWFwaG9yZSkgeworICAgICAgICBtX2Fib3J0U2VtYXBo
b3JlLT5zaWduYWwoKTsKKyAgICAgICAgbV9hYm9ydFNlbWFwaG9yZSA9IG5pbDsKKyAgICB9CisK
KyAgICBpZiAobV9oYXNTZXNzaW9uU2VtYXBob3JlKSB7CisgICAgICAgIG1faGFzU2Vzc2lvblNl
bWFwaG9yZS0+c2lnbmFsKCk7CisgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZSA9IG5pbDsK
KyAgICB9CisKICAgICBpZiAobV9wYXJzaW5nU3VjY2VlZGVkICYmIG1fbWVkaWFTb3VyY2UpCiAg
ICAgICAgIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5zZXRMb2FkaW5nUHJvZ3Jlc3NzZWQodHJ1
ZSk7CiAKQEAgLTc2MCwzOSArNTkyLDM5IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmFib3J0KCkKICAgICAvLyBUaGUgcGFyc2luZyBxdWV1ZSBtYXkgYmUgYmxvY2tlZCB3YWl0
aW5nIGZvciB0aGUgbWFpbiB0aHJlYWQgdG8gcHJvdmlkZSBpdCBhIEFWU3RyZWFtU2Vzc2lvbi4g
V2UKICAgICAvLyB3ZXJlIGFza2VkIHRvIGFib3J0LCBhbmQgdGhhdCBjYW5jZWxzIGFsbCBvdXRz
dGFuZGluZyBhcHBlbmQgb3BlcmF0aW9ucy4gV2l0aG91dCBjYW5jZWxsaW5nIHRoaXMKICAgICAv
LyBzZW1hcGhvcmUsIHRoZSBtX2lzQXBwZW5kaW5nR3JvdXAgd2FpdCBvcGVyYXRpb24gd2lsbCBk
ZWFkbG9jay4KLSAgICBpZiAobV9oYXNTZXNzaW9uU2VtYXBob3JlKQorICAgIGlmIChtX2hhc1Nl
c3Npb25TZW1hcGhvcmUpIHsKICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwo
KTsKLSAgICBtX2RlbGVnYXRlLmdldCgpLmFib3J0U2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICAg
ICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlID0gbnVsbHB0cjsKKyAgICB9CisgICAgaWYgKG1fYWJv
cnRTZW1hcGhvcmUpIHsKKyAgICAgICAgbV9hYm9ydFNlbWFwaG9yZS0+c2lnbmFsKCk7CisgICAg
ICAgIG1fYWJvcnRTZW1hcGhvcmUgPSBudWxscHRyOworICAgIH0KICAgICBkaXNwYXRjaF9ncm91
cF93YWl0KG1faXNBcHBlbmRpbmdHcm91cC5nZXQoKSwgRElTUEFUQ0hfVElNRV9GT1JFVkVSKTsK
LSAgICBtX2FwcGVuZFdlYWtGYWN0b3J5LnJldm9rZUFsbCgpOwotICAgIG1fZGVsZWdhdGUuZ2V0
KCkucGFyZW50ID0gbV9hcHBlbmRXZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCp0aGlzKTsKLSAg
ICBtX2RlbGVnYXRlLmdldCgpLmFib3J0U2VtYXBob3JlID0gQm94PFNlbWFwaG9yZT46OmNyZWF0
ZSgwKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6cmVzZXRQYXJzZXJT
dGF0ZSgpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIAotICAgIG1fcGFyc2Vy
U3RhdGVXYXNSZXNldCA9IHRydWU7Ci0gICAgbV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4dEluaXRp
YWxpemF0aW9uU2VnbWVudCA9IHRydWU7CisgICAgbV9wYXJzZXItPnJlc2V0UGFyc2VyU3RhdGUo
KTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGVzdHJveVBhcnNlcigp
CiB7CisgICAgYXV0byBwYXJzZXIgPSB0aGlzLT5wYXJzZXIoKTsKKyAgICBpZiAoIXBhcnNlcikK
KyAgICAgICAgcmV0dXJuOwogI2lmIEhBVkUoQVZTVFJFQU1TRVNTSU9OKSAmJiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBpZiAobV9tZWRpYVNvdXJjZSAmJiBtX21lZGlhU291
cmNlLT5wbGF5ZXIoKS0+aGFzU3RyZWFtU2Vzc2lvbigpKQotICAgICAgICBbbV9tZWRpYVNvdXJj
ZS0+cGxheWVyKCktPnN0cmVhbVNlc3Npb24oKSByZW1vdmVTdHJlYW1EYXRhUGFyc2VyOm1fcGFy
c2VyLmdldCgpXTsKKyAgICAgICAgW21fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5zdHJlYW1TZXNz
aW9uKCkgcmVtb3ZlU3RyZWFtRGF0YVBhcnNlcjpwYXJzZXJdOwogI2VuZGlmCiAjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQogICAgIGlmICht
X2NkbUluc3RhbmNlKSB7CiAgICAgICAgIGlmIChhdXRvIGluc3RhbmNlU2Vzc2lvbiA9IG1fY2Rt
SW5zdGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMobV9rZXlJRHMpKQotICAgICAgICAgICAgW2luc3Rh
bmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSByZW1vdmVDb250ZW50S2V5UmVjaXBpZW50
Om1fcGFyc2VyLmdldCgpXTsKKyAgICAgICAgICAgIFtpbnN0YW5jZVNlc3Npb24tPmNvbnRlbnRL
ZXlTZXNzaW9uKCkgcmVtb3ZlQ29udGVudEtleVJlY2lwaWVudDpwYXJzZXJdOwogICAgIH0KICNl
bmRpZgotCi0gICAgW21fZGVsZWdhdGUgaW52YWxpZGF0ZV07Ci0gICAgbV9kZWxlZ2F0ZSA9IG51
bGxwdHI7Ci0gICAgbV9wYXJzZXIgPSBudWxscHRyOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpkZXN0cm95UmVuZGVyZXJzKCkKQEAgLTgxNyw2ICs2NDksMTcgQEAgdm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGVzdHJveVJlbmRlcmVycygpCiAgICAgbV9h
dWRpb1JlbmRlcmVycy5jbGVhcigpOwogfQogCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpjbGVhclRyYWNrcygpCit7CisgICAgZm9yIChhdXRvJiB0cmFjayA6IG1fdmlkZW9UcmFj
a3MpCisgICAgICAgIHRyYWNrLT5zZXRTZWxlY3RlZENoYW5nZWRDYWxsYmFjayhudWxscHRyKTsK
KyAgICBtX3ZpZGVvVHJhY2tzLmNsZWFyKCk7CisKKyAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV9h
dWRpb1RyYWNrcykKKyAgICAgICAgdHJhY2stPnNldEVuYWJsZWRDaGFuZ2VkQ2FsbGJhY2sobnVs
bHB0cik7CisgICAgbV9hdWRpb1RyYWNrcy5jbGVhcigpOworfQorCiB2b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpyZW1vdmVkRnJvbU1lZGlhU291cmNlKCkKIHsKICAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIpOwpAQCAtODQ4LDcgKzY5MSw3IEBAIGJvb2wgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6Omhhc1ZpZGVvKCkgY29uc3QKIAogYm9vbCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6aGFzU2VsZWN0ZWRWaWRlbygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZW5h
YmxlZFZpZGVvVHJhY2tJRCAhPSAtMTsKKyAgICByZXR1cm4gbV9lbmFibGVkVmlkZW9UcmFja0lE
ICE9IG5vdEZvdW5kOwogfQogCiBib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpoYXNB
dWRpbygpIGNvbnN0CkBAIC04NTYsMjEgKzY5OSwyMSBAQCBib29sIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpoYXNBdWRpbygpIGNvbnN0CiAgICAgcmV0dXJuIG1fY2xpZW50ICYmIG1fY2xp
ZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlSGFzQXVkaW8oKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVkKFZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDKiB0cmFjaykKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OnRyYWNrRGlkQ2hhbmdlU2VsZWN0ZWQoVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNrLCBib29s
IHNlbGVjdGVkKQogewotICAgIGludCB0cmFja0lEID0gdHJhY2stPnRyYWNrSUQoKTsKKyAgICBh
dXRvIHRyYWNrSUQgPSB0cmFjay5pZCgpLnN0cmluZygpLnRvVUludDY0KCk7CiAKLSAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIsICJ2aWRlbyB0cmFja0lEID0gIiwgdHJhY2tJRCwgIiwgc2Vs
ZWN0ZWQgPSAiLCB0cmFjay0+c2VsZWN0ZWQoKSk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSLCAidmlkZW8gdHJhY2tJRCA9ICIsIHRyYWNrSUQsICIsIHNlbGVjdGVkID0gIiwgc2VsZWN0
ZWQpOwogCi0gICAgaWYgKCF0cmFjay0+c2VsZWN0ZWQoKSAmJiBtX2VuYWJsZWRWaWRlb1RyYWNr
SUQgPT0gdHJhY2tJRCkgeworICAgIGlmICghc2VsZWN0ZWQgJiYgbV9lbmFibGVkVmlkZW9UcmFj
a0lEID09IHRyYWNrSUQpIHsKICAgICAgICAgbV9lbmFibGVkVmlkZW9UcmFja0lEID0gLTE7Ci0g
ICAgICAgIFttX3BhcnNlciBzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhOk5PIGZvclRyYWNrSUQ6
dHJhY2tJRF07CisgICAgICAgIG1fcGFyc2VyLT5zZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9y
VHJhY2tJRChmYWxzZSwgdHJhY2tJRCk7CiAKICAgICAgICAgaWYgKG1fZGVjb21wcmVzc2lvblNl
c3Npb24pCiAgICAgICAgICAgICBtX2RlY29tcHJlc3Npb25TZXNzaW9uLT5zdG9wUmVxdWVzdGlu
Z01lZGlhRGF0YSgpOwotICAgIH0gZWxzZSBpZiAodHJhY2stPnNlbGVjdGVkKCkpIHsKKyAgICB9
IGVsc2UgaWYgKHNlbGVjdGVkKSB7CiAgICAgICAgIG1fZW5hYmxlZFZpZGVvVHJhY2tJRCA9IHRy
YWNrSUQ7Ci0gICAgICAgIFttX3BhcnNlciBzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhOllFUyBm
b3JUcmFja0lEOnRyYWNrSURdOworICAgICAgICBtX3BhcnNlci0+c2V0U2hvdWxkUHJvdmlkZU1l
ZGlhRGF0YUZvclRyYWNrSUQodHJ1ZSwgdHJhY2tJRCk7CiAKICAgICAgICAgaWYgKG1fZGVjb21w
cmVzc2lvblNlc3Npb24pIHsKICAgICAgICAgICAgIG1fZGVjb21wcmVzc2lvblNlc3Npb24tPnJl
cXVlc3RNZWRpYURhdGFXaGVuUmVhZHkoW3RoaXMsIHRyYWNrSURdIHsKQEAgLTg4MiwyMSArNzI1
LDIxIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlRW5h
YmxlZChWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291CiAgICAgbV9tZWRpYVNvdXJjZS0+aGFzU2Vs
ZWN0ZWRWaWRlb0NoYW5nZWQoKnRoaXMpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQoQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMqIHRyYWNrKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tE
aWRDaGFuZ2VFbmFibGVkKEF1ZGlvVHJhY2tQcml2YXRlJiB0cmFjaywgYm9vbCBlbmFibGVkKQog
ewotICAgIGludCB0cmFja0lEID0gdHJhY2stPnRyYWNrSUQoKTsKKyAgICBhdXRvIHRyYWNrSUQg
PSB0cmFjay5pZCgpLnN0cmluZygpLnRvVUludDY0KCk7CiAKLSAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIsICJhdWRpbyB0cmFja0lEID0gIiwgdHJhY2tJRCwgIiwgc2VsZWN0ZWQgPSAiLCB0
cmFjay0+ZW5hYmxlZCgpKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJhdWRpbyB0
cmFja0lEID0gIiwgdHJhY2tJRCwgIiwgc2VsZWN0ZWQgPSAiLCBlbmFibGVkKTsKIAotICAgIGlm
ICghdHJhY2stPmVuYWJsZWQoKSkgeworICAgIGlmICghZW5hYmxlZCkgewogICAgICAgICBBTExP
V19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCiAgICAgICAgIFJldGFpblB0cjxBVlNhbXBs
ZUJ1ZmZlckF1ZGlvUmVuZGVyZXI+IHJlbmRlcmVyID0gbV9hdWRpb1JlbmRlcmVycy5nZXQodHJh
Y2tJRCk7CiAgICAgICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECi0gICAgICAg
IFttX3BhcnNlciBzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhOk5PIGZvclRyYWNrSUQ6dHJhY2tJ
RF07CisgICAgICAgIG1fcGFyc2VyLT5zZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJ
RChmYWxzZSwgdHJhY2tJRCk7CiAgICAgICAgIGlmIChtX21lZGlhU291cmNlKQogICAgICAgICAg
ICAgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPnJlbW92ZUF1ZGlvUmVuZGVyZXIocmVuZGVyZXIu
Z2V0KCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFttX3BhcnNlciBzZXRTaG91bGRQcm92aWRl
TWVkaWFEYXRhOllFUyBmb3JUcmFja0lEOnRyYWNrSURdOworICAgICAgICBtX3BhcnNlci0+c2V0
U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQodHJ1ZSwgdHJhY2tJRCk7CiAgICAgICAg
IEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KICAgICAgICAgUmV0YWluUHRyPEFW
U2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlcj4gcmVuZGVyZXI7CiAgICAgICAgIEFMTE9XX05FV19B
UElfV0lUSE9VVF9HVUFSRFNfRU5ECkBAIC05MjYsNiArNzY5LDEzIEBAIHZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlRW5hYmxlZChBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU291CiAgICAgfQogfQogCitBVlN0cmVhbURhdGFQYXJzZXIqIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpwYXJzZXIoKSBjb25zdAoreworICAgIGlmIChpczxTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDPihtX3BhcnNlci5nZXQoKSkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDPihtX3BhcnNlci5nZXQoKSkucGFyc2VyKCk7CisgICAg
cmV0dXJuIG5pbDsKK30KKwogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6c2V0Q0RN
U2Vzc2lvbihDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDKiBzZXNzaW9uKQogewogI2lmIEVO
QUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQpAQCAtOTg3LDcgKzgzNyw4IEBAIHZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmF0dGVtcHRUb0RlY3J5cHQoKQogICAgIGlmICghaW5z
dGFuY2VTZXNzaW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBbaW5zdGFuY2VTZXNzaW9uLT5j
b250ZW50S2V5U2Vzc2lvbigpIGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6bV9wYXJzZXIuZ2V0KCld
OworICAgIGlmIChhdXRvIHBhcnNlciA9IHRoaXMtPnBhcnNlcigpKQorICAgICAgICBbaW5zdGFu
Y2VTZXNzaW9uLT5jb250ZW50S2V5U2Vzc2lvbigpIGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6cGFy
c2VyXTsKICAgICBpZiAobV9oYXNTZXNzaW9uU2VtYXBob3JlKSB7CiAgICAgICAgIG1faGFzU2Vz
c2lvblNlbWFwaG9yZS0+c2lnbmFsKCk7CiAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZSA9
IG51bGxwdHI7CkBAIC0xMDc1LDcgKzkyNiw3IEBAIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFS
RFNfRU5ECiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmZsdXNoKGNvbnN0IEF0
b21TdHJpbmcmIHRyYWNrSURTdHJpbmcpCiB7Ci0gICAgaW50IHRyYWNrSUQgPSB0cmFja0lEU3Ry
aW5nLnRvSW50KCk7CisgICAgYXV0byB0cmFja0lEID0gdHJhY2tJRFN0cmluZy5zdHJpbmcoKS50
b1VJbnQ2NCgpOwogICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCB0cmFja0lEKTsKIAogICAg
IGlmICh0cmFja0lEID09IG1fZW5hYmxlZFZpZGVvVHJhY2tJRCkgewpAQCAtMTExNyw3ICs5Njgs
NyBAQCBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAogCiB2b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjplbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUs
IGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSURTdHJpbmcpCiB7Ci0gICAgaW50IHRyYWNrSUQgPSB0
cmFja0lEU3RyaW5nLnRvSW50KCk7CisgICAgYXV0byB0cmFja0lEID0gdHJhY2tJRFN0cmluZy5z
dHJpbmcoKS50b1VJbnQ2NCgpOwogICAgIGlmICh0cmFja0lEICE9IG1fZW5hYmxlZFZpZGVvVHJh
Y2tJRCAmJiAhbV9hdWRpb1JlbmRlcmVycy5jb250YWlucyh0cmFja0lEKSkKICAgICAgICAgcmV0
dXJuOwogCkBAIC0xMjI5LDcgKzEwODAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpidWZmZXJXYXNDb25zdW1lZCgpCiAKIGJvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmlzUmVhZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEU3RyaW5n
KQogewotICAgIGludCB0cmFja0lEID0gdHJhY2tJRFN0cmluZy50b0ludCgpOworICAgIGF1dG8g
dHJhY2tJRCA9IHRyYWNrSURTdHJpbmcuc3RyaW5nKCkudG9VSW50NjQoKTsKICAgICBpZiAodHJh
Y2tJRCA9PSBtX2VuYWJsZWRWaWRlb1RyYWNrSUQpIHsKICAgICAgICAgaWYgKG1fZGVjb21wcmVz
c2lvblNlc3Npb24pCiAgICAgICAgICAgICByZXR1cm4gbV9kZWNvbXByZXNzaW9uU2Vzc2lvbi0+
aXNSZWFkeUZvck1vcmVNZWRpYURhdGEoKTsKQEAgLTEyNjgsNyArMTExOSw3IEBAIEZsb2F0U2l6
ZSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6bmF0dXJhbFNpemUoKQogICAgIHJldHVybiBt
X2NhY2hlZFNpemUudmFsdWVPcihGbG9hdFNpemUoKSk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmRpZEJlY29tZVJlYWR5Rm9yTW9yZVNhbXBsZXMoaW50IHRyYWNrSUQp
Cit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRCZWNvbWVSZWFkeUZvck1vcmVT
YW1wbGVzKHVpbnQ2NF90IHRyYWNrSUQpCiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwg
dHJhY2tJRCk7CiAKQEAgLTEyODcsNyArMTEzOCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OmRpZEJlY29tZVJlYWR5Rm9yTW9yZVNhbXBsZXMoaW50IHRyYWNrSUQpCiAKIHZv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Om5vdGlmeUNsaWVudFdoZW5SZWFkeUZvck1v
cmVTYW1wbGVzKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSURTdHJpbmcpCiB7Ci0gICAgaW50IHRy
YWNrSUQgPSB0cmFja0lEU3RyaW5nLnRvSW50KCk7CisgICAgYXV0byB0cmFja0lEID0gdHJhY2tJ
RFN0cmluZy5zdHJpbmcoKS50b1VJbnQ2NCgpOwogICAgIGlmICh0cmFja0lEID09IG1fZW5hYmxl
ZFZpZGVvVHJhY2tJRCkgewogICAgICAgICBpZiAobV9kZWNvbXByZXNzaW9uU2Vzc2lvbikgewog
ICAgICAgICAgICAgbV9kZWNvbXByZXNzaW9uU2Vzc2lvbi0+cmVxdWVzdE1lZGlhRGF0YVdoZW5S
ZWFkeShbdGhpcywgdHJhY2tJRF0gewpAQCAtMTMxMiw3ICsxMTYzLDcgQEAgdm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6bm90aWZ5Q2xpZW50V2hlblJlYWR5Rm9yTW9yZVNhbXBsZXMo
Y29uc3QgQXRvbVMKIAogYm9vbCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y2FuU2V0TWlu
aW11bVVwY29taW5nUHJlc2VudGF0aW9uVGltZShjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEU3Ry
aW5nKSBjb25zdAogewotICAgIGludCB0cmFja0lEID0gdHJhY2tJRFN0cmluZy50b0ludCgpOwor
ICAgIGF1dG8gdHJhY2tJRCA9IHRyYWNrSURTdHJpbmcuc3RyaW5nKCkudG9VSW50NjQoKTsKICAg
ICBpZiAodHJhY2tJRCA9PSBtX2VuYWJsZWRWaWRlb1RyYWNrSUQpCiAgICAgICAgIHJldHVybiBb
Z2V0QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJDbGFzcygpIGluc3RhbmNlc1Jlc3BvbmRUb1Nl
bGVjdG9yOkBzZWxlY3RvcihleHBlY3RNaW5pbXVtVXBjb21pbmdTYW1wbGVCdWZmZXJQcmVzZW50
YXRpb25UaW1lOildOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmlu
ZGV4IGM3OGI5NTNjN2JhYThlY2IyOTI4YmYyYzNkZDU1MWE5MGVkMjM4Y2MuLjZiMTFjY2EzMmJk
ZDQ5ZDJhZGQ2MTBlOWE3YTc3NmI1OTViOGE5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApA
QCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlZpZGVv
VHJhY2tQcml2YXRlQVZGLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAKICNpZiBFTkFC
TEUoTUVESUFfU09VUkNFKQogCkBAIC00MiwxNCArNDMsMTEgQEAgY2xhc3MgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
QyBmaW5hbCA6IHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZUFWRiB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMpCiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gY3JlYXRl
KEFWQXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQp
CisgICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gY3Jl
YXRlKEFWQXNzZXRUcmFjayogdHJhY2spCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyh0cmFjaywgcGFyZW50KSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDKHRyYWNrKSk7CiAgICAgfQogCi0gICAgYm9vbCBzZWxlY3RlZCgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCkgb3ZlcnJpZGU7Ci0KICAgICB2b2lk
IHNldEFzc2V0VHJhY2soQVZBc3NldFRyYWNrKik7CiAgICAgQVZBc3NldFRyYWNrKiBhc3NldFRy
YWNrKCkgY29uc3Q7CiAKQEAgLTU4LDE0ICs1NiwxMiBAQCBwdWJsaWM6CiAgICAgRmxvYXRTaXpl
IG5hdHVyYWxTaXplKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgVmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiwgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMqIHBhcmVudCk7CisgICAgZXhwbGljaXQgVmlkZW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKik7CiAgICAgCiAgICAgdm9pZCByZXNldFByb3Bl
cnRpZXNGcm9tVHJhY2soKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBVlRyYWNrUHJpdmF0ZUFW
Rk9iakNJbXBsPiBtX2ltcGw7Ci0gICAgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIG1fcGFy
ZW50OwogICAgIGludCBtX3RyYWNrSUQ7Ci0gICAgYm9vbCBtX3NlbGVjdGVkOwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCAyYzczOTI3OTZlMGY1MjVmOTRjMjhhYTIwYWFk
MTBlMzBkMGQwNTFjLi5hZmQxYjdmM2E5MzM0OTE3MWQ5MTA1OGY2ODVjZmU4MGJiOGQ3MzJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMzQsMTEgKzM0LDkgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6VmlkZW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaywgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKK1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJh
Y2sqIHRyYWNrKQogICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpD
SW1wbD4odHJhY2spKQotICAgICwgbV9wYXJlbnQocGFyZW50KQogICAgICwgbV90cmFja0lEKC0x
KQotICAgICwgbV9zZWxlY3RlZChmYWxzZSkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJh
Y2soKTsKIH0KQEAgLTY1LDIxICs2Myw2IEBAIEFWQXNzZXRUcmFjayogVmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OmFzc2V0VHJhY2soKSBjb25zdAogICAgIHJldHVybiBtX2lt
cGwtPmFzc2V0VHJhY2soKTsKIH0KIAotCi1ib29sIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpzZWxlY3RlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2VsZWN0ZWQ7Ci19
Ci0KLXZvaWQgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldFNlbGVjdGVk
KGJvb2wgc2VsZWN0ZWQpCi17Ci0gICAgaWYgKG1fc2VsZWN0ZWQgPT0gc2VsZWN0ZWQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIG1fc2VsZWN0ZWQgPSBzZWxlY3RlZDsKLSAgICBtX3BhcmVudC0+
dHJhY2tEaWRDaGFuZ2VFbmFibGVkKHRoaXMpOwotfQotCiBGbG9hdFNpemUgVmlkZW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Om5hdHVyYWxTaXplKCkgY29uc3QKIHsKICAgICByZXR1
cm4gRmxvYXRTaXplKFthc3NldFRyYWNrKCkgbmF0dXJhbFNpemVdKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2Vi
TS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNr
UHJpdmF0ZVdlYk0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmMjBiY2Y5ZGYxMDFhY2ExODViMjNjMzE5ZmQy
M2JkN2VlMmM5ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCkBAIC0wLDAgKzEsNzUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9UcmFja1By
aXZhdGVXZWJNLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1JlZjxBdWRpb1RyYWNrUHJpdmF0ZVdlYk0+IEF1ZGlvVHJhY2tQcml2YXRlV2Vi
TTo6Y3JlYXRlKHdlYm06OlRyYWNrRW50cnkmJiB0cmFja0VudHJ5KQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEF1ZGlvVHJhY2tQcml2YXRlV2ViTShXVEZNb3ZlKHRyYWNrRW50cnkpKSk7
Cit9CisKK0F1ZGlvVHJhY2tQcml2YXRlV2ViTTo6QXVkaW9UcmFja1ByaXZhdGVXZWJNKHdlYm06
OlRyYWNrRW50cnkmJiB0cmFja0VudHJ5KQorICAgIDogbV90cmFjayhXVEZNb3ZlKHRyYWNrRW50
cnkpKQoreworICAgIGlmIChtX3RyYWNrLmlzX2VuYWJsZWQuaXNfcHJlc2VudCgpKQorICAgICAg
ICBzZXRFbmFibGVkKG1fdHJhY2suaXNfZW5hYmxlZC52YWx1ZSgpKTsKK30KKworQXRvbVN0cmlu
ZyBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OmlkKCkgY29uc3QKK3sKKyAgICBpZiAobV90cmFja0lE
LmlzTnVsbCgpKQorICAgICAgICBtX3RyYWNrSUQgPSBtX3RyYWNrLnRyYWNrX3VpZC5pc19wcmVz
ZW50KCkgPyBBdG9tU3RyaW5nOjpudW1iZXIobV90cmFjay50cmFja191aWQudmFsdWUoKSkgOiBl
bXB0eUF0b20oKTsKKyAgICByZXR1cm4gbV90cmFja0lEOworfQorCitBdG9tU3RyaW5nIEF1ZGlv
VHJhY2tQcml2YXRlV2ViTTo6bGFiZWwoKSBjb25zdAoreworICAgIGlmIChtX2xhYmVsLmlzTnVs
bCgpKQorICAgICAgICBtX2xhYmVsID0gbV90cmFjay5uYW1lLmlzX3ByZXNlbnQoKSA/IEF0b21T
dHJpbmc6OmZyb21VVEY4KG1fdHJhY2submFtZS52YWx1ZSgpLmRhdGEoKSwgbV90cmFjay5uYW1l
LnZhbHVlKCkubGVuZ3RoKCkpIDogZW1wdHlBdG9tKCk7CisgICAgcmV0dXJuIG1fbGFiZWw7Cit9
CisKK0F0b21TdHJpbmcgQXVkaW9UcmFja1ByaXZhdGVXZWJNOjpsYW5ndWFnZSgpIGNvbnN0Cit7
CisgICAgaWYgKG1fbGFuZ3VhZ2UuaXNOdWxsKCkpCisgICAgICAgIG1fbGFuZ3VhZ2UgPSBtX3Ry
YWNrLmxhbmd1YWdlLmlzX3ByZXNlbnQoKSA/IEF0b21TdHJpbmc6OmZyb21VVEY4KG1fdHJhY2su
bGFuZ3VhZ2UudmFsdWUoKS5kYXRhKCksIG1fdHJhY2subGFuZ3VhZ2UudmFsdWUoKS5sZW5ndGgo
KSkgOiBlbXB0eUF0b20oKTsKKyAgICByZXR1cm4gbV9sYW5ndWFnZTsKK30KKworaW50IEF1ZGlv
VHJhY2tQcml2YXRlV2ViTTo6dHJhY2tJbmRleCgpIGNvbnN0Cit7CisgICAgaWYgKG1fdHJhY2su
dHJhY2tfbnVtYmVyLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgcmV0dXJuIG1fdHJhY2sudHJhY2tf
bnVtYmVyLnZhbHVlKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlh
OTc4ZGY3OGMzYjU2ZmE0ZTcxYjkwMWRmNmFmN2M5MmUxNjk5MTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0
ZVdlYk0uaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGUuaCIK
KyNpbmNsdWRlIDx3ZWJtL2RvbV90eXBlcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEF1ZGlvVHJhY2tQcml2YXRlV2ViTSBmaW5hbCA6IHB1YmxpYyBBdWRpb1RyYWNrUHJpdmF0
ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxBdWRpb1RyYWNrUHJpdmF0ZVdlYk0+IGNyZWF0
ZSh3ZWJtOjpUcmFja0VudHJ5JiYpOworICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2tQcml2YXRlV2Vi
TSgpID0gZGVmYXVsdDsKKworICAgIEF0b21TdHJpbmcgaWQoKSBjb25zdCBmaW5hbDsKKyAgICBB
dG9tU3RyaW5nIGxhYmVsKCkgY29uc3QgZmluYWw7CisgICAgQXRvbVN0cmluZyBsYW5ndWFnZSgp
IGNvbnN0IGZpbmFsOworICAgIGludCB0cmFja0luZGV4KCkgY29uc3QgZmluYWw7CisKK3ByaXZh
dGU6CisgICAgQXVkaW9UcmFja1ByaXZhdGVXZWJNKHdlYm06OlRyYWNrRW50cnkmJik7CisgICAg
d2VibTo6VHJhY2tFbnRyeSBtX3RyYWNrOworICAgIG11dGFibGUgQXRvbVN0cmluZyBtX3RyYWNr
SUQ7CisgICAgbXV0YWJsZSBBdG9tU3RyaW5nIG1fbGFiZWw7CisgICAgbXV0YWJsZSBBdG9tU3Ry
aW5nIG1fbGFuZ3VhZ2U7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU09VUkNF
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODE4ZWRmNmVhNDQ4MDdhMGUw
NjFiNDE1NGFjODllZDNlMThhNTk5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKQEAgLTAsMCAr
MSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTb3Vy
Y2VCdWZmZXJQYXJzZXIuaCIKKworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisKKyNpbmNsdWRl
ICJDb250ZW50VHlwZS5oIgorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCIK
KyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWVkaWFQbGF5ZXJFbnVtczo6
U3VwcG9ydHNUeXBlIFNvdXJjZUJ1ZmZlclBhcnNlcjo6aXNDb250ZW50VHlwZVN1cHBvcnRlZChj
b25zdCBDb250ZW50VHlwZSYgdHlwZSkKK3sKKyAgICBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0
c1R5cGUgc3VwcG9ydHMgPSBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGU6OklzTm90U3Vw
cG9ydGVkOworICAgIHN1cHBvcnRzID0gc3RkOjptYXgoc3VwcG9ydHMsIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk06OmlzQ29udGVudFR5cGVTdXBwb3J0ZWQodHlwZSkpOworICAgIHN1cHBvcnRzID0g
c3RkOjptYXgoc3VwcG9ydHMsIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmlzQ29udGVudFR5
cGVTdXBwb3J0ZWQodHlwZSkpOworICAgIHJldHVybiBzdXBwb3J0czsKK30KKworUmVmUHRyPFNv
dXJjZUJ1ZmZlclBhcnNlcj4gU291cmNlQnVmZmVyUGFyc2VyOjpjcmVhdGUoY29uc3QgQ29udGVu
dFR5cGUmIGNvbnRlbnRUeXBlKQoreworICAgIGlmIChXVEY6OmVxdWFsSWdub3JpbmdBU0NJSUNh
c2UoY29udGVudFR5cGUuY29udGFpbmVyVHlwZSgpLCAiYXVkaW8vd2VibSIpIHx8IFdURjo6ZXF1
YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb250ZW50VHlwZS5jb250YWluZXJUeXBlKCksICJ2aWRlby93
ZWJtIikpCisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU291cmNlQnVmZmVyUGFyc2VyV2Vi
TSgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMo
KSk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3YmY2ODhjM2U2NDk4YmY3ZmQ2ZDg3NzA4M2FkNWUwYzM3
NzA5N2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaApAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKworI2luY2x1ZGUg
Ik1lZGlhUGxheWVyRW51bXMuaCIKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50
LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWludDhBcnJheS5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29udGVudFR5
cGU7CitjbGFzcyBNZWRpYVNhbXBsZTsKKworY2xhc3MgU291cmNlQnVmZmVyUGFyc2VyIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNvdXJjZUJ1ZmZlclBhcnNlcj4geworcHVibGljOgor
ICAgIHN0YXRpYyBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgaXNDb250ZW50VHlwZVN1
cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYpOworCisgICAgc3RhdGljIFJlZlB0cjxTb3VyY2VC
dWZmZXJQYXJzZXI+IGNyZWF0ZShjb25zdCBDb250ZW50VHlwZSYpOworICAgIHZpcnR1YWwgflNv
dXJjZUJ1ZmZlclBhcnNlcigpID0gZGVmYXVsdDsKKworICAgIGVudW0gY2xhc3MgVHlwZSA6IHVp
bnQ4X3QgeworICAgICAgICBBVkZPYmpDLAorICAgICAgICBXZWJNLAorICAgIH07CisgICAgdmly
dHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7CisgICAgZW51bSBjbGFzcyBBcHBlbmRGbGFncyA6
IHVpbnQ4X3QgeworICAgICAgICBOb25lLAorICAgICAgICBEaXNjb250aW51aXR5LAorICAgIH07
CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZERhdGEoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYsIEFw
cGVuZEZsYWdzID0gQXBwZW5kRmxhZ3M6Ok5vbmUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmx1
c2hQZW5kaW5nTWVkaWFEYXRhKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRQcm92
aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChib29sLCB1aW50NjRfdCkgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRQcm92aWRlTWVkaWFkYXRhRm9yVHJhY2tJRCh1aW50NjRfdCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCByZXNldFBhcnNlclN0YXRlKCkgPSAwOworCisgICAgLy8gV2lsbCBiZSBj
YWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgorICAgIHVzaW5nIEluaXRpYWxpemF0aW9uU2VnbWVu
dCA9IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDsKKyAg
ICB1c2luZyBEaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrID0gV1RGOjpGdW5jdGlv
bjx2b2lkKEluaXRpYWxpemF0aW9uU2VnbWVudCYmKT47CisgICAgdm9pZCBzZXREaWRQYXJzZUlu
aXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJh
Y2smJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRh
dGFDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworICAgIH0KKworICAgIC8vIFdpbGwgYmUg
Y2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICB1c2luZyBEaWRFbmNvdW50ZXJFcnJvckR1
cmluZ1BhcnNpbmdDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZCh1aW50NjRfdCBlcnJvckNv
ZGUpPjsKKyAgICB2b2lkIHNldERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNr
KERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrJiYgY2FsbGJhY2spCisgICAg
eworICAgICAgICBtX2RpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayk7CisgICAgfQorCisgICAgLy8gV2lsbCBiZSBjYWxsZWQgb24gdGhlIG1h
aW4gdGhyZWFkLgorICAgIHVzaW5nIERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayA9IFdURjo6
RnVuY3Rpb248dm9pZChSZWY8TWVkaWFTYW1wbGU+JiYsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0
IFN0cmluZyYgbWVkaWFUeXBlKT47CisgICAgdm9pZCBzZXREaWRQcm92aWRlTWVkaWFEYXRhQ2Fs
bGJhY2soRGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrJiYgY2FsbGJhY2spCisgICAgeworICAg
ICAgICBtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwor
ICAgIH0KKworICAgIC8vIFdpbGwgYmUgY2FsbGVkIHN5bmNocm9ub3VzbHkgb24gdGhlIHBhcnNl
ciB0aGVhZC4KKyAgICB1c2luZyBXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6
YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKHVpbnQ2NF90
IHRyYWNrSUQpPjsKKyAgICB2b2lkIHNldFdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0
aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soV2lsbFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayYmIGNhbGxiYWNrKQorICAg
IHsKKyAgICAgICAgbV93aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25E
YXRhRm9yVHJhY2tJRENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CisgICAgfQorCisgICAg
Ly8gV2lsbCBiZSBjYWxsZWQgc3luY2hyb25vdXNseSBvbiB0aGUgcGFyc2VyIHRoZWFkLgorICAg
IHVzaW5nIERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRy
YWNrSURDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChSZWY8VWludDhBcnJheT4mJiwgdWlu
dDY0X3QgdHJhY2tJRCk+OworICAgIHZvaWQgc2V0RGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrKERpZFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayYmIGNhbGxiYWNrKQor
ICAgIHsKKyAgICAgICAgbV9kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlv
bkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKKyAgICB9CisKK3By
b3RlY3RlZDoKKyAgICBTb3VyY2VCdWZmZXJQYXJzZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBEaWRQ
YXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRh
dGFDYWxsYmFjazsKKyAgICBEaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayBt
X2RpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrOworICAgIERpZFByb3ZpZGVN
ZWRpYURhdGFDYWxsYmFjayBtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjazsKKyAgICBXaWxs
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxi
YWNrIG1fd2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRy
YWNrSURDYWxsYmFjazsKKyAgICBEaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXph
dGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sgbV9kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJ
bml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2s7Cit9OworCit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hZTBiNTFjOTZjYjNlMzE3YTA1YzY0Y2E3NDUyNzRhMzA0NzUyZDIzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTAsMCArMSw3OTYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oIgor
CisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKworI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRl
V2ViTS5oIgorI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlICJN
ZWRpYURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCisjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiVlA5VXRpbGl0aWVzQ29j
b2EuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaCIKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9EYXRhVmlldy5oPgorI2luY2x1ZGUgPHdlYm0vd2VibV9wYXJzZXIuaD4KKyNp
bmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9kYXJ3aW4vV2Vha0xpbmtp
bmcuaD4KKworV1RGX1dFQUtfTElOS19GT1JDRV9JTVBPUlQod2VibTo6c3dhcCk7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGJvb2wgaXNXZWJtUGFyc2VyQXZhaWxhYmxlKCkKK3sK
KyAgICByZXR1cm4gISF3ZWJtOjpzd2FwICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkud2ViTVBhcnNlckVuYWJsZWQoKTsKK30KKwordXNpbmcgbmFtZXNwYWNlIHdl
Ym07CisKK2NsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlN0cmVhbWluZ1ZlY3RvclJlYWRl
ciBmaW5hbCA6IHB1YmxpYyB3ZWJtOjpSZWFkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIHVzaW5nIFNlZ21lbnQgPSBWZWN0b3I8dW5zaWduZWQgY2hhcj47
CisgICAgdm9pZCBhcHBlbmRTZWdtZW50KFNlZ21lbnQmJiBzZWdtZW50KQorICAgIHsKKyAgICAg
ICAgbV9kYXRhLmFwcGVuZChXVEZNb3ZlKHNlZ21lbnQpKTsKKyAgICB9CisKKyAgICBTdGF0dXMg
UmVhZChzdGQ6OnNpemVfdCBudW1Ub1JlYWQsIHVpbnQ4X3QqIG91dHB1dEJ1ZmZlciwgdWludDY0
X3QqIG51bUFjdHVhbGx5UmVhZCkgZmluYWwKKyAgICB7CisgICAgICAgIEFTU0VSVChvdXRwdXRC
dWZmZXIgJiYgbnVtQWN0dWFsbHlSZWFkKTsKKyAgICAgICAgaWYgKCFvdXRwdXRCdWZmZXIgfHwg
IW51bUFjdHVhbGx5UmVhZCkKKyAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90
RW5vdWdoTWVtb3J5KTsKKworICAgICAgICAqbnVtQWN0dWFsbHlSZWFkID0gMDsKKyAgICAgICAg
d2hpbGUgKCFtX2RhdGEuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBhdXRvJiBjdXJyZW50U2Vn
bWVudCA9IG1fZGF0YS5maXJzdCgpOworCisgICAgICAgICAgICBpZiAobV9wb3NpdGlvbldpdGhp
blNlZ21lbnQgPj0gY3VycmVudFNlZ21lbnQuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgYWR2
YW5jZVRvTmV4dFNlZ21lbnQoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgc2l6ZV90IG51bUF2YWlsYWJsZSA9IGN1cnJlbnRTZWdtZW50
LnNpemUoKSAtIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OworICAgICAgICAgICAgaWYgKG51bVRv
UmVhZCA8IG51bUF2YWlsYWJsZSkgeworICAgICAgICAgICAgICAgIG1lbWNweShvdXRwdXRCdWZm
ZXIsIGN1cnJlbnRTZWdtZW50LmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50LCBudW1U
b1JlYWQpOworICAgICAgICAgICAgICAgICpudW1BY3R1YWxseVJlYWQgKz0gbnVtVG9SZWFkOwor
ICAgICAgICAgICAgICAgIG1fcG9zaXRpb24gKz0gbnVtVG9SZWFkOworICAgICAgICAgICAgICAg
IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50ICs9IG51bVRvUmVhZDsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgbWVtY3B5KG91dHB1dEJ1ZmZlciwgY3VycmVudFNlZ21lbnQuZGF0YSgpICsgbV9w
b3NpdGlvbldpdGhpblNlZ21lbnQsIG51bUF2YWlsYWJsZSk7CisgICAgICAgICAgICAqbnVtQWN0
dWFsbHlSZWFkICs9IG51bUF2YWlsYWJsZTsKKyAgICAgICAgICAgIG1fcG9zaXRpb24gKz0gbnVt
QXZhaWxhYmxlOworICAgICAgICAgICAgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQgKz0gbnVtQXZh
aWxhYmxlOworICAgICAgICAgICAgbnVtVG9SZWFkIC09IG51bUF2YWlsYWJsZTsKKyAgICAgICAg
ICAgIGFkdmFuY2VUb05leHRTZWdtZW50KCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoIW51bVRvUmVhZCkKKyAgICAgICAgICAgIHJldHVybiBTdGF0dXMo
U3RhdHVzOjprT2tDb21wbGV0ZWQpOworICAgICAgICBpZiAoKm51bUFjdHVhbGx5UmVhZCkKKyAg
ICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tQYXJ0aWFsKTsKKyAgICAgICAgcmV0
dXJuIFN0YXR1cyhTdGF0dXM6OmtXb3VsZEJsb2NrKTsKKyAgICB9CisKKyAgICBTdGF0dXMgU2tp
cCh1aW50NjRfdCBudW1Ub1NraXAsIHVpbnQ2NF90KiBudW1BY3R1YWxseVNraXBwZWQpIGZpbmFs
CisgICAgeworICAgICAgICBBU1NFUlQobnVtQWN0dWFsbHlTa2lwcGVkKTsKKyAgICAgICAgaWYg
KCFudW1BY3R1YWxseVNraXBwZWQpCisgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6
a05vdEVub3VnaE1lbW9yeSk7CisKKyAgICAgICAgKm51bUFjdHVhbGx5U2tpcHBlZCA9IDA7Cisg
ICAgICAgIHdoaWxlICghbV9kYXRhLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgYXV0byYgY3Vy
cmVudFNlZ21lbnQgPSBtX2RhdGEuZmlyc3QoKTsKKworICAgICAgICAgICAgaWYgKG1fcG9zaXRp
b25XaXRoaW5TZWdtZW50ID49IGN1cnJlbnRTZWdtZW50LnNpemUoKSkgeworICAgICAgICAgICAg
ICAgIGFkdmFuY2VUb05leHRTZWdtZW50KCk7CisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNpemVfdCBudW1BdmFpbGFibGUgPSBjdXJyZW50
U2VnbWVudC5zaXplKCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKKworICAgICAgICAgICAg
aWYgKG51bVRvU2tpcCA8IG51bUF2YWlsYWJsZSkgeworICAgICAgICAgICAgICAgICpudW1BY3R1
YWxseVNraXBwZWQgKz0gbnVtVG9Ta2lwOworICAgICAgICAgICAgICAgIG1fcG9zaXRpb24gKz0g
bnVtVG9Ta2lwOworICAgICAgICAgICAgICAgIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50ICs9IG51
bVRvU2tpcDsKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxl
dGVkKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgKm51bUFjdHVhbGx5U2tpcHBlZCAr
PSBudW1BdmFpbGFibGU7CisgICAgICAgICAgICBtX3Bvc2l0aW9uICs9IG51bUF2YWlsYWJsZTsK
KyAgICAgICAgICAgIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50ICs9IG51bUF2YWlsYWJsZTsKKyAg
ICAgICAgICAgIG51bVRvU2tpcCAtPSBudW1BdmFpbGFibGU7CisgICAgICAgICAgICBhZHZhbmNl
VG9OZXh0U2VnbWVudCgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKCFudW1Ub1NraXApCisgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09r
Q29tcGxldGVkKTsKKyAgICAgICAgaWYgKCpudW1BY3R1YWxseVNraXBwZWQpCisgICAgICAgICAg
ICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rUGFydGlhbCk7CisgICAgICAgIHJldHVybiBTdGF0
dXMoU3RhdHVzOjprV291bGRCbG9jayk7CisgICAgfQorCisgICAgdWludDY0X3QgUG9zaXRpb24o
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CisKKyAgICB2b2lkIHJlc2V0KCkK
KyAgICB7CisgICAgICAgIG1fcG9zaXRpb24gPSAwOworICAgICAgICBtX2RhdGEuY2xlYXIoKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBhZHZhbmNlVG9OZXh0U2VnbWVudCgpCisgICAg
eworICAgICAgICBBU1NFUlQoIW1fZGF0YS5pc0VtcHR5KCkpOworICAgICAgICBpZiAobV9kYXRh
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBBU1NFUlQobV9wb3Np
dGlvbldpdGhpblNlZ21lbnQgPT0gbV9kYXRhLmZpcnN0KCkuc2l6ZSgpKTsKKworICAgICAgICBt
X2RhdGEucmVtb3ZlRmlyc3QoKTsKKyAgICAgICAgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQgPSAw
OworICAgIH0KKworICAgIERlcXVlPFNlZ21lbnQ+IG1fZGF0YTsKKyAgICBzaXplX3QgbV9wb3Np
dGlvbiB7IDAgfTsKKyAgICBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQgeyAwIH07Cit9
OworCitjbGFzcyBNZWRpYURlc2NyaXB0aW9uV2ViTSBmaW5hbCA6IHB1YmxpYyBNZWRpYURlc2Ny
aXB0aW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPE1lZGlhRGVzY3JpcHRpb25XZWJNPiBjcmVhdGUod2VibTo6VHJhY2tFbnRyeSYmIHRy
YWNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFEZXNjcmlwdGlv
bldlYk0oV1RGTW92ZSh0cmFjaykpKTsKKyAgICB9CisKKyAgICBNZWRpYURlc2NyaXB0aW9uV2Vi
TSh3ZWJtOjpUcmFja0VudHJ5JiYgdHJhY2spCisgICAgICAgIDogbV90cmFjayB7IFdURk1vdmUo
dHJhY2spIH0KKyAgICB7CisgICAgfQorCisgICAgQXRvbVN0cmluZyBjb2RlYygpIGNvbnN0IGZp
bmFsCisgICAgeworICAgICAgICBpZiAobV9jb2RlYykKKyAgICAgICAgICAgIHJldHVybiAqbV9j
b2RlYzsKKworICAgICAgICAvLyBGcm9tOiBodHRwczovL3d3dy5tYXRyb3NrYS5vcmcvdGVjaG5p
Y2FsL2NvZGVjX3NwZWNzLmh0bWwKKyAgICAgICAgLy8gIkVhY2ggQ29kZWMgSUQgTVVTVCBpbmNs
dWRlIGEgTWFqb3IgQ29kZWMgSUQgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRoZSBDb2RlYyBJRCBQ
cmVmaXguCisgICAgICAgIC8vIEEgTWFqb3IgQ29kZWMgSUQgTUFZIGJlIGZvbGxvd2VkIGJ5IGFu
IE9QVElPTkFMIENvZGVjIElEIFN1ZmZpeCB0byBjb21tdW5pY2F0ZSBhIHJlZmluZW1lbnQKKyAg
ICAgICAgLy8gb2YgdGhlIE1ham9yIENvZGVjIElELiBJZiBhIENvZGVjIElEIFN1ZmZpeCBpcyB1
c2VkLCB0aGVuIHRoZSBDb2RlYyBJRCBNVVNUIGluY2x1ZGUgYSBmb3J3YXJkCisgICAgICAgIC8v
IHNsYXNoICjigJwv4oCdKSBhcyBhIHNlcGFyYXRvciBiZXR3ZWVuIHRoZSBNYWpvciBDb2RlYyBJ
RCBhbmQgdGhlIENvZGVjIElEIFN1ZmZpeC4gVGhlIE1ham9yIENvZGVjCisgICAgICAgIC8vIElE
IE1VU1QgYmUgY29tcG9zZWQgb2Ygb25seSBjYXBpdGFsIGxldHRlcnMgKEEtWikgYW5kIG51bWJl
cnMgKDAtOSkuIFRoZSBDb2RlYyBJRCBTdWZmaXggTVVTVAorICAgICAgICAvLyBiZSBjb21wb3Nl
ZCBvZiBvbmx5IGNhcGl0YWwgbGV0dGVycyAoQS1aKSwgbnVtYmVycyAoMC05KSwgdW5kZXJzY29y
ZSAo4oCcX+KAnSksIGFuZCBmb3J3YXJkIHNsYXNoICjigJwv4oCdKS4iCisKKyAgICAgICAgaWYg
KCFtX3RyYWNrLmNvZGVjX2lkLmlzX3ByZXNlbnQoKSkgeworICAgICAgICAgICAgbV9jb2RlYyA9
IGVtcHR5QXRvbSgpOworICAgICAgICAgICAgcmV0dXJuICptX2NvZGVjOworICAgICAgICB9CisK
KyAgICAgICAgU3RyaW5nVmlldyBjb2RlY0lEIHsgbV90cmFjay5jb2RlY19pZC52YWx1ZSgpLmRh
dGEoKSwgKHVuc2lnbmVkKW1fdHJhY2suY29kZWNfaWQudmFsdWUoKS5sZW5ndGgoKSB9OworICAg
ICAgICBpZiAoIWNvZGVjSUQuc3RhcnRzV2l0aCgiVl8iKSAmJiAhY29kZWNJRC5zdGFydHNXaXRo
KCJBXyIpICYmICFjb2RlY0lELnN0YXJ0c1dpdGgoIlNfIikpIHsKKyAgICAgICAgICAgIG1fY29k
ZWMgPSBlbXB0eUF0b20oKTsKKyAgICAgICAgICAgIHJldHVybiAqbV9jb2RlYzsKKyAgICAgICAg
fQorCisgICAgICAgIGF1dG8gc2xhc2hMb2NhdGlvbiA9IGNvZGVjSUQuZmluZCgnLycpOworICAg
ICAgICBhdXRvIGxlbmd0aCA9IHNsYXNoTG9jYXRpb24gPT0gbm90Rm91bmQgPyBjb2RlY0lELmxl
bmd0aCgpIC0gMiA6IHNsYXNoTG9jYXRpb24gLSAyOworICAgICAgICBtX2NvZGVjID0gQXRvbVN0
cmluZyB7IGNvZGVjSUQuc3Vic3RyaW5nKDIsIGxlbmd0aCkuY29udmVydFRvQVNDSUlMb3dlcmNh
c2UoKSB9OworICAgICAgICByZXR1cm4gKm1fY29kZWM7CisgICAgfQorICAgIGJvb2wgaXNWaWRl
bygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdHJhY2sudHJhY2tfdHlwZS5pc19wcmVzZW50KCkg
JiYgbV90cmFjay50cmFja190eXBlLnZhbHVlKCkgPT0gVHJhY2tUeXBlOjprVmlkZW87IH0KKyAg
ICBib29sIGlzQXVkaW8oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RyYWNrLnRyYWNrX3R5cGUu
aXNfcHJlc2VudCgpICYmIG1fdHJhY2sudHJhY2tfdHlwZS52YWx1ZSgpID09IFRyYWNrVHlwZTo6
a0F1ZGlvOyB9CisgICAgYm9vbCBpc1RleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RyYWNr
LnRyYWNrX3R5cGUuaXNfcHJlc2VudCgpICYmIG1fdHJhY2sudHJhY2tfdHlwZS52YWx1ZSgpID09
IFRyYWNrVHlwZTo6a1N1YnRpdGxlOyB9CisKKyAgICBjb25zdCB3ZWJtOjpUcmFja0VudHJ5JiB0
cmFjaygpIHsgcmV0dXJuIG1fdHJhY2s7IH0KKworcHJpdmF0ZToKKyAgICBtdXRhYmxlIE9wdGlv
bmFsPEF0b21TdHJpbmc+IG1fY29kZWM7CisgICAgd2VibTo6VHJhY2tFbnRyeSBtX3RyYWNrOwor
fTsKKworTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIFNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk06OmlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29uc3QgQ29udGVudFR5cGUmIHR5cGUpCit7Cisg
ICAgaWYgKCFpc1dlYm1QYXJzZXJBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxh
eWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CisKKyAgICBpZiAoIVdURjo6
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLmNvbnRhaW5lclR5cGUoKSwgImF1ZGlvL3dlYm0i
KQorICAgICAgICAmJiAhV1RGOjplcXVhbElnbm9yaW5nQVNDSUlDYXNlKHR5cGUuY29udGFpbmVy
VHlwZSgpLCAidmlkZW8vd2VibSIpKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6
U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKKworICAgIFN0cmluZyBjb2RlY3NQYXJhbWV0
ZXIgPSB0eXBlLnBhcmFtZXRlcihDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVyKCkpOworICAg
IGlmICghY29kZWNzUGFyYW1ldGVyKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6
U3VwcG9ydHNUeXBlOjpNYXlCZVN1cHBvcnRlZDsKKworICAgIGF1dG8gc3BsaXRSZXN1bHRzID0g
U3RyaW5nVmlldyhjb2RlY3NQYXJhbWV0ZXIpLnNwbGl0KCcsJyk7CisgICAgZm9yIChhdXRvIHNw
bGl0IDogc3BsaXRSZXN1bHRzKSB7CisgICAgICAgIGlmIChzcGxpdC5zdGFydHNXaXRoKCJ2cDA5
IikpIHsKKyAgICAgICAgICAgIGlmICghaXNWUDlEZWNvZGVyQXZhaWxhYmxlKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBw
b3J0ZWQ7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhN
RTogQWRkIE9wdXMgU3VwcG9ydAorICAgICAgICAvLyBGSVhNRTogQWRkIFZvcmJpcyBTdXBwb3J0
CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGU6OklzTm90U3Vw
cG9ydGVkOworICAgIH0KKyAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBl
OjpJc1N1cHBvcnRlZDsKK30KKworU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6U291cmNlQnVmZmVy
UGFyc2VyV2ViTSgpCisgICAgOiBtX3JlYWRlcihXVEY6Om1ha2VVbmlxdWVSZWY8U3RyZWFtaW5n
VmVjdG9yUmVhZGVyPigpKQoreworICAgIGlmIChpc1dlYm1QYXJzZXJBdmFpbGFibGUoKSkKKyAg
ICAgICAgbV9wYXJzZXIgPSBXVEY6Om1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFdl
Ym1QYXJzZXI+KCk7Cit9CisKK1NvdXJjZUJ1ZmZlclBhcnNlcldlYk06On5Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNKCkgPSBkZWZhdWx0OworCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmFw
cGVuZERhdGEoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgYnVmZmVyLCBBcHBlbmRGbGFncyBhcHBl
bmRGbGFncykKK3sKKyAgICBpZiAoIW1fcGFyc2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoYXBwZW5kRmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpIHsKKyAgICAgICAg
bV9yZWFkZXItPnJlc2V0KCk7CisgICAgICAgIG1fcGFyc2VyLT5EaWRTZWVrKCk7CisgICAgfQor
ICAgIG1fcmVhZGVyLT5hcHBlbmRTZWdtZW50KFdURk1vdmUoYnVmZmVyKSk7CisgICAgbV9zdGF0
dXMgPSBtX3BhcnNlci0+RmVlZCh0aGlzLCAmbV9yZWFkZXIpOworICAgIGlmIChtX3N0YXR1cy5v
aygpIHx8IG1fc3RhdHVzLmNvZGUgPT0gU3RhdHVzOjprRW5kT2ZGaWxlIHx8IG1fc3RhdHVzLmNv
ZGUgPT0gU3RhdHVzOjprV291bGRCbG9jaykKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb2RlID0g
bV9zdGF0dXMuY29kZV0geworICAgICAgICBpZiAobV9kaWRFbmNvdW50ZXJFcnJvckR1cmluZ1Bh
cnNpbmdDYWxsYmFjaykKKyAgICAgICAgICAgIG1fZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJz
aW5nQ2FsbGJhY2soY29kZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnNldFNob3VsZFByb3ZpZGVNZWRpYURh
dGFGb3JUcmFja0lEKGJvb2wsIHVpbnQ2NF90KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK2Jvb2wgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2hvdWxkUHJvdmlkZU1lZGlhZGF0YUZv
clRyYWNrSUQodWludDY0X3QpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6cmVzZXRQYXJzZXJTdGF0
ZSgpCit7CisgICAgbV9wYXJzZXItPkRpZFNlZWsoKTsKKyAgICBtX3N0YXRlID0gU3RhdGU6Ok5v
bmU7Cit9CisKK2F1dG8gU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6dHJhY2tEYXRhRm9yVHJhY2tO
dW1iZXIodWludDY0X3QgdHJhY2tOdW1iZXIpIC0+IFRyYWNrRGF0YSoKK3sKKyAgICBmb3IgKGF1
dG8mIHRyYWNrIDogbV90cmFja3MpIHsKKyAgICAgICAgaWYgKHRyYWNrLnRyYWNrLnRyYWNrX251
bWJlci5pc19wcmVzZW50KCkgJiYgdHJhY2sudHJhY2sudHJhY2tfbnVtYmVyLnZhbHVlKCkgPT0g
dHJhY2tOdW1iZXIpCisgICAgICAgICAgICByZXR1cm4gJnRyYWNrOworICAgIH0KKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKworCitTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FbGVt
ZW50QmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgQWN0aW9uKiBhY3Rpb24p
Cit7CisgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKKyAgICBBU1NFUlQoYWN0aW9uKTsKKyAg
ICBpZiAoIWFjdGlvbikKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hN
ZW1vcnkpOworCisgICAgaWYgKChtX3N0YXRlID09IFN0YXRlOjpOb25lICYmIG1ldGFkYXRhLmlk
ICE9IElkOjprRWJtbCkKKyAgICAgICAgfHwgKG1fc3RhdGUgPT0gU3RhdGU6OlJlYWRFYm1sICYm
IG1ldGFkYXRhLmlkICE9IElkOjprU2VnbWVudCkKKyAgICAgICAgfHwgKG1fc3RhdGUgPT0gU3Rh
dGU6OlJlYWRpbmdTZWdtZW50ICYmIG1ldGFkYXRhLmlkICE9IElkOjprSW5mbykKKyAgICAgICAg
fHwgKG1fc3RhdGUgPT0gU3RhdGU6OlJlYWRJbmZvICYmIG1ldGFkYXRhLmlkICE9IElkOjprVHJh
Y2tzKQorICAgICAgICB8fCAobV9zdGF0ZSA9PSBTdGF0ZTo6UmVhZFRyYWNrICYmIG1ldGFkYXRh
LmlkICE9IElkOjprVHJhY2tFbnRyeSAmJiBtZXRhZGF0YS5pZCAhPSBJZDo6a0NsdXN0ZXIpCisg
ICAgICAgIHx8IChtZXRhZGF0YS5pZCA9PSBJZDo6a0N1ZXMgfHwgbWV0YWRhdGEuaWQgPT0gSWQ6
OmtDaGFwdGVycykpIHsKKyAgICAgICAgKmFjdGlvbiA9IEFjdGlvbjo6a1NraXA7CisgICAgICAg
IHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworICAgIH0KKworICAgIGlmICht
ZXRhZGF0YS5pZCA9PSBJZDo6a0VibWwpCisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZGlu
Z0VibWw7CisgICAgZWxzZSBpZiAobWV0YWRhdGEuaWQgPT0gSWQ6OmtTZWdtZW50KQorICAgICAg
ICBtX3N0YXRlID0gU3RhdGU6OlJlYWRpbmdTZWdtZW50OworICAgIGVsc2UgaWYgKG1ldGFkYXRh
LmlkID09IElkOjprSW5mbykKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkaW5nSW5mbzsK
KyAgICBlbHNlIGlmIChtZXRhZGF0YS5pZCA9PSBJZDo6a1RyYWNrcykKKyAgICAgICAgbV9zdGF0
ZSA9IFN0YXRlOjpSZWFkaW5nVHJhY2tzOworICAgIGVsc2UgaWYgKG1ldGFkYXRhLmlkID09IElk
OjprVHJhY2tFbnRyeSkKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkaW5nVHJhY2s7Cisg
ICAgZWxzZSBpZiAobWV0YWRhdGEuaWQgPT0gSWQ6OmtDbHVzdGVyKQorICAgICAgICBtX3N0YXRl
ID0gU3RhdGU6OlJlYWRpbmdDbHVzdGVyOworCisgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtP
a0NvbXBsZXRlZCk7Cit9CisKK1N0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkVibWwo
Y29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uc3QgRWJtbCYgZWJtbCkKK3sKKyAg
ICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOworICAgIGlmIChlYm1sLmRvY190eXBlLmlzX3ByZXNl
bnQoKSAmJiBlYm1sLmRvY190eXBlLnZhbHVlKCkuY29tcGFyZSgid2VibSIpKQorICAgICAgICBy
ZXR1cm4gU3RhdHVzKFN0YXR1czo6Q29kZShFcnJvckNvZGU6OkludmFsaWREb2NUeXBlKSk7CisK
KyAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkID0gdHJ1ZTsKKyAgICBtX2lu
aXRpYWxpemF0aW9uU2VnbWVudCA9IFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2s8SW5pdGlhbGl6YXRpb25TZWdtZW50PigpOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZEVi
bWw7CisKKyAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKK30KKworU3Rh
dHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uU2VnbWVudEJlZ2luKGNvbnN0IEVsZW1lbnRN
ZXRhZGF0YSYgbWV0YWRhdGEsIEFjdGlvbiogYWN0aW9uKQoreworICAgIFVOVVNFRF9QQVJBTSht
ZXRhZGF0YSk7CisgICAgaWYgKCFtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkKQor
ICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6Q29kZShFcnJvckNvZGU6OkludmFsaWRJbml0
U2VnbWVudCkpOworCisgICAgQVNTRVJUKGFjdGlvbik7CisgICAgaWYgKCFhY3Rpb24pCisgICAg
ICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKyAgICAqYWN0aW9u
ID0gQWN0aW9uOjprUmVhZDsKKworICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0
ZWQpOworfQorCitTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25JbmZvKGNvbnN0IEVs
ZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0IEluZm8mIGluZm8pCit7CisgICAgVU5VU0VE
X1BBUkFNKG1ldGFkYXRhKTsKKyAgICBpZiAoIW1faW5pdGlhbGl6YXRpb25TZWdtZW50RW5jb3Vu
dGVyZWQgfHwgIW1faW5pdGlhbGl6YXRpb25TZWdtZW50KQorICAgICAgICByZXR1cm4gU3RhdHVz
KFN0YXR1czo6Q29kZShFcnJvckNvZGU6OkludmFsaWRJbml0U2VnbWVudCkpOworCisgICAgYXV0
byB0aW1lY29kZVNjYWxlID0gaW5mby50aW1lY29kZV9zY2FsZS5pc19wcmVzZW50KCkgPyBpbmZv
LnRpbWVjb2RlX3NjYWxlLnZhbHVlKCkgOiAxMDAwMDAwOworICAgIG1fdGltZXNjYWxlID0gMTAw
MDAwMDAwMCAvIHRpbWVjb2RlU2NhbGU7CisgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnQtPmR1
cmF0aW9uID0gaW5mby5kdXJhdGlvbi5pc19wcmVzZW50KCkgPyBNZWRpYVRpbWUoaW5mby5kdXJh
dGlvbi52YWx1ZSgpLCBtX3RpbWVzY2FsZSkgOiBNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCk7
CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkSW5mbzsKKworICAgIHJldHVybiBTdGF0dXMoU3Rh
dHVzOjprT2tDb21wbGV0ZWQpOworfQorCitTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
T25DbHVzdGVyQmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uc3QgQ2x1
c3RlciYgY2x1c3RlciwgQWN0aW9uKiBhY3Rpb24pCit7CisgICAgVU5VU0VEX1BBUkFNKG1ldGFk
YXRhKTsKKyAgICBVTlVTRURfUEFSQU0oY2x1c3Rlcik7CisgICAgQVNTRVJUKGFjdGlvbik7Cisg
ICAgaWYgKCFhY3Rpb24pCisgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdo
TWVtb3J5KTsKKworICAgIGlmIChtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkICYm
IG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjaykgeworICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluaXRpYWxp
emF0aW9uU2VnbWVudCA9IFdURk1vdmUoKm1faW5pdGlhbGl6YXRpb25TZWdtZW50KV0gKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBtX2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2so
V1RGTW92ZShpbml0aWFsaXphdGlvblNlZ21lbnQpKTsKKyAgICAgICAgfSk7CisgICAgfQorICAg
IG1faW5pdGlhbGl6YXRpb25TZWdtZW50RW5jb3VudGVyZWQgPSBmYWxzZTsKKyAgICBtX2luaXRp
YWxpemF0aW9uU2VnbWVudCA9IG51bGxwdHI7CisKKyAgICBpZiAoY2x1c3Rlci50aW1lY29kZS5p
c19wcmVzZW50KCkpCisgICAgICAgIG1fY3VycmVudFRpbWVjb2RlID0gY2x1c3Rlci50aW1lY29k
ZS52YWx1ZSgpOworCisgICAgKmFjdGlvbiA9IEFjdGlvbjo6a1JlYWQ7CisKKyAgICByZXR1cm4g
U3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKK30KKworU3RhdHVzIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk06Ok9uVHJhY2tFbnRyeShjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBj
b25zdCBUcmFja0VudHJ5JiB0cmFja0VudHJ5KQoreworICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0
YSk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkVHJhY2s7CisgICAgaWYgKCF0cmFja0VudHJ5
LnRyYWNrX3R5cGUuaXNfcHJlc2VudCgpKQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6
a09rQ29tcGxldGVkKTsKKworICAgIGF1dG8gdHJhY2tUeXBlID0gdHJhY2tFbnRyeS50cmFja190
eXBlLnZhbHVlKCk7CisgICAgaWYgKHRyYWNrVHlwZSA9PSBUcmFja1R5cGU6OmtWaWRlbykKKyAg
ICAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnQtPnZpZGVvVHJhY2tzLmFwcGVuZCh7IE1lZGlh
RGVzY3JpcHRpb25XZWJNOjpjcmVhdGUoVHJhY2tFbnRyeSh0cmFja0VudHJ5KSksIFZpZGVvVHJh
Y2tQcml2YXRlV2ViTTo6Y3JlYXRlKFRyYWNrRW50cnkodHJhY2tFbnRyeSkpIH0pOworICAgIGVs
c2UgaWYgKHRyYWNrVHlwZSA9PSBUcmFja1R5cGU6OmtBdWRpbykKKyAgICAgICAgbV9pbml0aWFs
aXphdGlvblNlZ21lbnQtPmF1ZGlvVHJhY2tzLmFwcGVuZCh7IE1lZGlhRGVzY3JpcHRpb25XZWJN
OjpjcmVhdGUoVHJhY2tFbnRyeSh0cmFja0VudHJ5KSksIEF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6
Y3JlYXRlKFRyYWNrRW50cnkodHJhY2tFbnRyeSkpIH0pOworICAgIG1fdHJhY2tzLmFwcGVuZCh7
IFRyYWNrRW50cnkodHJhY2tFbnRyeSksIHsgfSwgbnVsbHB0ciwgbnVsbHB0ciwgMCB9KTsKKwor
ICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworfQorCit3ZWJtOjpTdGF0
dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25CbG9ja0JlZ2luKGNvbnN0IEVsZW1lbnRNZXRh
ZGF0YSYgbWV0YWRhdGEsIGNvbnN0IEJsb2NrJiBibG9jaywgQWN0aW9uKiBhY3Rpb24pCit7Cisg
ICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKKyAgICBBU1NFUlQoYWN0aW9uKTsKKyAgICBpZiAo
IWFjdGlvbikKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkp
OworCisgICAgKmFjdGlvbiA9IEFjdGlvbjo6a1JlYWQ7CisKKyAgICBtX2N1cnJlbnRCbG9jayA9
IG1ha2VPcHRpb25hbDxCbG9ja1ZhcmlhbnQ+KEJsb2NrKGJsb2NrKSk7CisKKyAgICByZXR1cm4g
U3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKK30KKword2VibTo6U3RhdHVzIFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06Ok9uQmxvY2tFbmQoY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0
YSwgY29uc3QgQmxvY2smIGJsb2NrKQoreworICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7Cisg
ICAgVU5VU0VEX1BBUkFNKGJsb2NrKTsKKworICAgIG1fY3VycmVudEJsb2NrID0gV1RGOjpudWxs
b3B0OworCisgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7Cit9CisKK3dl
Ym06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblNpbXBsZUJsb2NrQmVnaW4oY29u
c3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uc3QgU2ltcGxlQmxvY2smIGJsb2NrLCBB
Y3Rpb24qIGFjdGlvbikKK3sKKyAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOworICAgIEFTU0VS
VChhY3Rpb24pOworICAgIGlmICghYWN0aW9uKQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1
czo6a05vdEVub3VnaE1lbW9yeSk7CisKKyAgICAqYWN0aW9uID0gQWN0aW9uOjprUmVhZDsKKwor
ICAgIG1fY3VycmVudEJsb2NrID0gbWFrZU9wdGlvbmFsPEJsb2NrVmFyaWFudD4oU2ltcGxlQmxv
Y2soYmxvY2spKTsKKworICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOwor
fQorCit3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25TaW1wbGVCbG9ja0Vu
ZChjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBTaW1wbGVCbG9jayYgYmxv
Y2spCit7CisgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oYmxv
Y2spOworCisgICAgbV9jdXJyZW50QmxvY2sgPSBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4g
U3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKK30KKword2VibTo6U3RhdHVzIFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06Ok9uQmxvY2tHcm91cEJlZ2luKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRh
ZGF0YSYgbWV0YWRhdGEsIHdlYm06OkFjdGlvbiogYWN0aW9uKQoreworICAgIFVOVVNFRF9QQVJB
TShtZXRhZGF0YSk7CisgICAgQVNTRVJUKGFjdGlvbik7CisgICAgaWYgKCFhY3Rpb24pCisgICAg
ICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKworICAgICphY3Rp
b24gPSBBY3Rpb246OmtSZWFkOworICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0
ZWQpOworfQorCit3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25CbG9ja0dy
b3VwRW5kKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0IHdlYm06
OkJsb2NrR3JvdXAmIGJsb2NrR3JvdXApCit7CisgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsK
KyAgICBVTlVTRURfUEFSQU0oYmxvY2tHcm91cCk7CisgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6
OmtPa0NvbXBsZXRlZCk7Cit9CisKK3N0YXRpYyB1aW50OF90IGNvbnZlcnRUb0NvbG9yUHJpbWFy
aWVzKGNvbnN0IFByaW1hcmllcyYgY29lZmZpY2llbnRzKQoreworICAgIHN3aXRjaCAoY29lZmZp
Y2llbnRzKSB7CisgICAgY2FzZSBQcmltYXJpZXM6OmtCdDcwOToKKyAgICAgICAgcmV0dXJuIFZQ
Q29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpCVF83MDlfNjsKKyAgICBjYXNlIFByaW1hcmll
czo6a1Vuc3BlY2lmaWVkOgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uQ29sb3JQcmlt
YXJpZXM6OlVuc3BlY2lmaWVkOworICAgIGNhc2UgUHJpbWFyaWVzOjprQnQ0NzBNOgorICAgICAg
ICByZXR1cm4gVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OkJUXzQ3MF82X007CisgICAg
Y2FzZSBQcmltYXJpZXM6OmtCdDQ3MEJnOgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9u
Q29sb3JQcmltYXJpZXM6OkJUXzQ3MF83X0JHOworICAgIGNhc2UgUHJpbWFyaWVzOjprU21wdGUx
NzBNOgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OkJUXzYw
MV83OworICAgIGNhc2UgUHJpbWFyaWVzOjprU21wdGUyNDBNOgorICAgICAgICByZXR1cm4gVlBD
b25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OlNNUFRFX1NUXzI0MDsKKyAgICBjYXNlIFByaW1h
cmllczo6a0ZpbG06CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmll
czo6RmlsbTsKKyAgICBjYXNlIFByaW1hcmllczo6a0J0MjAyMDoKKyAgICAgICAgcmV0dXJuIFZQ
Q29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpCVF8yMDIwX05vbmNvbnN0YW50X0x1bWluYW5j
ZTsKKyAgICBjYXNlIFByaW1hcmllczo6a1NtcHRlU3Q0MjgxOgorICAgICAgICByZXR1cm4gVlBD
b25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OlNNUFRFX1NUXzQyOF8xOworICAgIGNhc2UgUHJp
bWFyaWVzOjprU21wdGVScDQzMToKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvbkNvbG9y
UHJpbWFyaWVzOjpTTVBURV9SUF80MzFfMjsKKyAgICBjYXNlIFByaW1hcmllczo6a1NtcHRlRWc0
MzI6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6U01QVEVf
RUdfNDMyXzE7CisgICAgY2FzZSBQcmltYXJpZXM6OmtKZWRlY1AyMlBob3NwaG9yczoKKyAgICAg
ICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpFQlVfVGVjaF8zMjEzX0U7
CisgICAgfQorfQorCitzdGF0aWMgdWludDhfdCBjb252ZXJ0VG9UcmFuc2ZlckNoYXJhY3Rlcmlz
dGljcyhjb25zdCBUcmFuc2ZlckNoYXJhY3RlcmlzdGljcyYgY2hhcmFjdGVyaXN0aWNzKQorewor
ICAgIHN3aXRjaCAoY2hhcmFjdGVyaXN0aWNzKSB7CisgICAgY2FzZSBUcmFuc2ZlckNoYXJhY3Rl
cmlzdGljczo6a0J0NzA5OgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uVHJhbnNmZXJD
aGFyYWN0ZXJpc3RpY3M6OkJUXzcwOV82OworICAgIGNhc2UgVHJhbnNmZXJDaGFyYWN0ZXJpc3Rp
Y3M6OmtVbnNwZWNpZmllZDoKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvblRyYW5zZmVy
Q2hhcmFjdGVyaXN0aWNzOjpVbnNwZWNpZmllZDsKKyAgICBjYXNlIFRyYW5zZmVyQ2hhcmFjdGVy
aXN0aWNzOjprR2FtbWEyMmN1cnZlOgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uVHJh
bnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzQ3MF82X007CisgICAgY2FzZSBUcmFuc2ZlckNoYXJh
Y3RlcmlzdGljczo6a0dhbW1hMjhjdXJ2ZToKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlv
blRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpCVF80NzBfN19CRzsKKyAgICBjYXNlIFRyYW5zZmVy
Q2hhcmFjdGVyaXN0aWNzOjprU21wdGUxNzBNOgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0
aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzYwMV83OworICAgIGNhc2UgVHJhbnNmZXJD
aGFyYWN0ZXJpc3RpY3M6OmtTbXB0ZTI0ME06CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRp
b25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6U01QVEVfU1RfMjQwOworICAgIGNhc2UgVHJhbnNm
ZXJDaGFyYWN0ZXJpc3RpY3M6OmtMaW5lYXI6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRp
b25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6TGluZWFyOworICAgIGNhc2UgVHJhbnNmZXJDaGFy
YWN0ZXJpc3RpY3M6OmtMb2c6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25UcmFuc2Zl
ckNoYXJhY3RlcmlzdGljczo6TG9ncml0aG1pYzsKKyAgICBjYXNlIFRyYW5zZmVyQ2hhcmFjdGVy
aXN0aWNzOjprTG9nU3FydDoKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvblRyYW5zZmVy
Q2hhcmFjdGVyaXN0aWNzOjpMb2dyaXRobWljX1NxcnQ7CisgICAgY2FzZSBUcmFuc2ZlckNoYXJh
Y3RlcmlzdGljczo6a0llYzYxOTY2MjQ6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25U
cmFuc2ZlckNoYXJhY3RlcmlzdGljczo6SUVDXzYxOTY2XzJfNDsKKyAgICBjYXNlIFRyYW5zZmVy
Q2hhcmFjdGVyaXN0aWNzOjprQnQxMzYxRXh0ZW5kZWRDb2xvdXJHYW11dDoKKyAgICAgICAgcmV0
dXJuIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpCVF8xMzYxXzA7Cisg
ICAgY2FzZSBUcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6a0llYzYxOTY2MjE6CisgICAgICAgIHJl
dHVybiBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6SUVDXzYxOTY2XzJf
MTsKKyAgICBjYXNlIFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjprMTBCaXRCdDIwMjA6CisgICAg
ICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6QlRfMjAy
MF8xMGJpdDsKKyAgICBjYXNlIFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjprMTJCaXRCdDIwMjA6
CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6
QlRfMjAyMF8xMmJpdDsKKyAgICBjYXNlIFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjprU21wdGVT
dDIwODQ6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3Rlcmlz
dGljczo6U01QVEVfU1RfMjA4NDsKKyAgICBjYXNlIFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpr
U21wdGVTdDQyODE6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJh
Y3RlcmlzdGljczo6U01QVEVfU1RfNDI4XzE7CisgICAgY2FzZSBUcmFuc2ZlckNoYXJhY3Rlcmlz
dGljczo6a0FyaWJTdGRCNjdIbGc6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25UcmFu
c2ZlckNoYXJhY3RlcmlzdGljczo6QlRfMjEwMF9ITEc7CisgICAgfQorfQorCitzdGF0aWMgdWlu
dDhfdCBjb252ZXJ0VG9NYXRyaXhDb2VmZmljaWVudHMoY29uc3QgTWF0cml4Q29lZmZpY2llbnRz
JiBjb2VmZmljaWVudHMpCit7CisgICAgc3dpdGNoIChjb2VmZmljaWVudHMpIHsKKyAgICBjYXNl
IE1hdHJpeENvZWZmaWNpZW50czo6a1JnYjoKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlv
bk1hdHJpeENvZWZmaWNpZW50czo6SWRlbnRpdHk7CisgICAgY2FzZSBNYXRyaXhDb2VmZmljaWVu
dHM6OmtCdDcwOToKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNp
ZW50czo6QlRfNzA5XzY7CisgICAgY2FzZSBNYXRyaXhDb2VmZmljaWVudHM6OmtVbnNwZWNpZmll
ZDoKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6VW5z
cGVjaWZpZWQ7CisgICAgY2FzZSBNYXRyaXhDb2VmZmljaWVudHM6OmtGY2M6CisgICAgICAgIHJl
dHVybiBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OkZDQzsKKyAgICBjYXNlIE1h
dHJpeENvZWZmaWNpZW50czo6a0J0NDcwQmc6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRp
b25NYXRyaXhDb2VmZmljaWVudHM6OkJUXzQ3MF83X0JHOworICAgIGNhc2UgTWF0cml4Q29lZmZp
Y2llbnRzOjprU21wdGUxNzBNOgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uTWF0cml4
Q29lZmZpY2llbnRzOjpCVF82MDFfNzsKKyAgICBjYXNlIE1hdHJpeENvZWZmaWNpZW50czo6a1Nt
cHRlMjQwTToKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50
czo6U01QVEVfU1RfMjQwOworICAgIGNhc2UgTWF0cml4Q29lZmZpY2llbnRzOjprWUNnQ286Cisg
ICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OllDZ0NvOwor
ICAgIGNhc2UgTWF0cml4Q29lZmZpY2llbnRzOjprQnQyMDIwTm9uY29uc3RhbnRMdW1pbmFuY2U6
CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OkJUXzIw
MjBfTm9uY29uc3RhbnRfTHVtaW5hbmNlOworICAgIGNhc2UgTWF0cml4Q29lZmZpY2llbnRzOjpr
QnQyMDIwQ29uc3RhbnRMdW1pbmFuY2U6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25N
YXRyaXhDb2VmZmljaWVudHM6OkJUXzIwMjBfQ29uc3RhbnRfTHVtaW5hbmNlOworICAgIH0KK30K
Kworc3RhdGljIHVpbnQ4X3QgY29udmVydFN1YnNhbXBsaW5nWFlUb0Nocm9tYVN1YnNhbXBsaW5n
KHVpbnQ2NF90IHgsIHVpbnQ2NF90IHkpCit7CisgICAgaWYgKHggJiB5KQorICAgICAgICByZXR1
cm4gVlBDb25maWd1cmF0aW9uQ2hyb21hU3Vic2FtcGxpbmc6OlN1YnNhbXBsaW5nXzQyMF9Db2xv
Y2F0ZWQ7CisgICAgaWYgKHggJiAheSkKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvbkNo
cm9tYVN1YnNhbXBsaW5nOjpTdWJzYW1wbGluZ180MjI7CisgICAgaWYgKCF4ICYgIXkpCisgICAg
ICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25DaHJvbWFTdWJzYW1wbGluZzo6U3Vic2FtcGxpbmdf
NDQ0OworICAgIC8vIFRoaXMgaW5kaWNhdGVzIDQ6NDowIHN1YnNhbXBsaW5nLCB3aGljaCBpcyBu
b3QgZXhwcmVzc2FibGUgaW4gdGhlICd2cGNDJyBib3guIERlZmF1bHQgdG8gNDoyOjAuCisgICAg
cmV0dXJuIFZQQ29uZmlndXJhdGlvbkNocm9tYVN1YnNhbXBsaW5nOjpTdWJzYW1wbGluZ180MjBf
Q29sb2NhdGVkOworfQorCitzdGF0aWMgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+
IGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOUhlYWRlclBhcnNlcihjb25zdCB2cDlfcGFy
c2VyOjpWcDlIZWFkZXJQYXJzZXImIHBhcnNlciwgY29uc3Qgd2VibTo6RWxlbWVudDxDb2xvdXI+
JiBjb2xvcikKK3sKKyAgICAvLyBSZWY6ICJWUCBDb2RlYyBJU08gTWVkaWEgRmlsZSBGb3JtYXQg
QmluZGluZywgdjEuMCwgMjAxNy0wMy0zMSIKKyAgICAvLyA8aHR0cHM6Ly93d3cud2VibXByb2pl
Y3Qub3JnL3ZwOS9tcDQvPgorICAgIC8vCisgICAgLy8gY2xhc3MgVlBDb2RlY0NvbmZpZ3VyYXRp
b25Cb3ggZXh0ZW5kcyBGdWxsQm94KCd2cGNDJywgdmVyc2lvbiA9IDEsIDApCisgICAgLy8gewor
ICAgIC8vICAgICBWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCgpIHZwY0NvbmZpZzsKKyAgICAv
LyB9CisgICAgLy8KKyAgICAvLyBhbGlnbmVkICg4KSBjbGFzcyBWUENvZGVjQ29uZmlndXJhdGlv
blJlY29yZCB7CisgICAgLy8gICAgIHVuc2lnbmVkIGludCAoOCkgICAgIHByb2ZpbGU7CisgICAg
Ly8gICAgIHVuc2lnbmVkIGludCAoOCkgICAgIGxldmVsOworICAgIC8vICAgICB1bnNpZ25lZCBp
bnQgKDQpICAgICBiaXREZXB0aDsKKyAgICAvLyAgICAgdW5zaWduZWQgaW50ICgzKSAgICAgY2hy
b21hU3Vic2FtcGxpbmc7CisgICAgLy8gICAgIHVuc2lnbmVkIGludCAoMSkgICAgIHZpZGVvRnVs
bFJhbmdlRmxhZzsKKyAgICAvLyAgICAgdW5zaWduZWQgaW50ICg4KSAgICAgY29sb3VyUHJpbWFy
aWVzOworICAgIC8vICAgICB1bnNpZ25lZCBpbnQgKDgpICAgICB0cmFuc2ZlckNoYXJhY3Rlcmlz
dGljczsKKyAgICAvLyAgICAgdW5zaWduZWQgaW50ICg4KSAgICAgbWF0cml4Q29lZmZpY2llbnRz
OworICAgIC8vICAgICB1bnNpZ25lZCBpbnQgKDE2KSAgICBjb2RlY0ludGlhbGl6YXRpb25EYXRh
U2l6ZTsKKyAgICAvLyAgICAgdW5zaWduZWQgaW50ICg4KVtdICAgY29kZWNJbnRpYWxpemF0aW9u
RGF0YTsKKyAgICAvLyB9CisgICAgLy8KKyAgICAvLyBjb2RlY0ludGlhbGl6YXRpb25EYXRhU2l6
ZeKAi0ZvciBWUDggYW5kIFZQOSB0aGlzIGZpZWxkIG11c3QgYmUgMC4KKyAgICAvLyBjb2RlY0lu
dGlhbGl6YXRpb25EYXRh4oCLYmluYXJ5IGNvZGVjIGluaXRpYWxpemF0aW9uIGRhdGEuIE5vdCB1
c2VkIGZvciBWUDggYW5kIFZQOS4KKyAgICAvLworICAgIC8vIEZJWE1FOiBDb252ZXJ0IGV4aXN0
aW5nIHN0cnVjdCB0byBhbiBJU09Cb3ggYW5kIHJlcGxhY2UgdGhlIHdyaXRpbmcgY29kZSBiZWxv
dworICAgIC8vIHdpdGggYSBzdWJjbGFzcyBvZiBJU09GdWxsQm94LgorCisgICAgVlBDb2RlY0Nv
bmZpZ3VyYXRpb25SZWNvcmQgcmVjb3JkOworCisgICAgcmVjb3JkLnByb2ZpbGUgPSBwYXJzZXIu
cHJvZmlsZSgpOworICAgIC8vIENvcmVNZWRpYSBkb2VzIG5hdCBjYXJlIGFib3V0IHRoZSBWUDkg
Y29kZWMgbGV2ZWw7IGhhcmQtY29kZSB0byBMZXZlbCAxLjAgaGVyZToKKyAgICByZWNvcmQubGV2
ZWwgPSAxMDsKKyAgICByZWNvcmQuYml0RGVwdGggPSBwYXJzZXIuYml0X2RlcHRoKCk7CisgICAg
cmVjb3JkLnZpZGVvRnVsbFJhbmdlRmxhZyA9IHBhcnNlci5jb2xvcl9yYW5nZSgpID8gVlBDb25m
aWd1cmF0aW9uUmFuZ2U6OkZ1bGxSYW5nZSA6IFZQQ29uZmlndXJhdGlvblJhbmdlOjpWaWRlb1Jh
bmdlOworICAgIHJlY29yZC5jaHJvbWFTdWJzYW1wbGluZyA9IGNvbnZlcnRTdWJzYW1wbGluZ1hZ
VG9DaHJvbWFTdWJzYW1wbGluZyhwYXJzZXIuc3Vic2FtcGxpbmdfeCgpLCBwYXJzZXIuc3Vic2Ft
cGxpbmdfeSgpKTsKKyAgICByZWNvcmQuY29sb3JQcmltYXJpZXMgPSBWUENvbmZpZ3VyYXRpb25D
b2xvclByaW1hcmllczo6VW5zcGVjaWZpZWQ7CisgICAgcmVjb3JkLnRyYW5zZmVyQ2hhcmFjdGVy
aXN0aWNzID0gVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OlVuc3BlY2lm
aWVkOworICAgIHJlY29yZC5tYXRyaXhDb2VmZmljaWVudHMgPSBWUENvbmZpZ3VyYXRpb25NYXRy
aXhDb2VmZmljaWVudHM6OlVuc3BlY2lmaWVkOworCisgICAgLy8gQ29udGFpbmVyIGNvbG9yIHZh
bHVlcyBjYW4gb3ZlcnJpZGUgcGVyLXNhbXBsZSBvbmVzOgorICAgIGlmIChjb2xvci5pc19wcmVz
ZW50KCkpIHsKKyAgICAgICAgYXV0byYgY29sb3JWYWx1ZSA9IGNvbG9yLnZhbHVlKCk7CisgICAg
ICAgIGlmIChjb2xvclZhbHVlLmNocm9tYV9zdWJzYW1wbGluZ194LmlzX3ByZXNlbnQoKSAmJiBj
b2xvclZhbHVlLmNocm9tYV9zdWJzYW1wbGluZ195LmlzX3ByZXNlbnQoKSkKKyAgICAgICAgICAg
IHJlY29yZC5jaHJvbWFTdWJzYW1wbGluZyA9IGNvbnZlcnRTdWJzYW1wbGluZ1hZVG9DaHJvbWFT
dWJzYW1wbGluZyhjb2xvclZhbHVlLmNocm9tYV9zdWJzYW1wbGluZ194LnZhbHVlKCksIGNvbG9y
VmFsdWUuY2hyb21hX3N1YnNhbXBsaW5nX3kudmFsdWUoKSk7CisgICAgICAgIGlmIChjb2xvclZh
bHVlLnJhbmdlLmlzX3ByZXNlbnQoKSAmJiBjb2xvclZhbHVlLnJhbmdlLnZhbHVlKCkgIT0gUmFu
Z2U6OmtVbnNwZWNpZmllZCkKKyAgICAgICAgICAgIHJlY29yZC52aWRlb0Z1bGxSYW5nZUZsYWcg
PSBjb2xvclZhbHVlLnJhbmdlLnZhbHVlKCkgPT0gUmFuZ2U6OmtGdWxsID8gVlBDb25maWd1cmF0
aW9uUmFuZ2U6OkZ1bGxSYW5nZSA6IFZQQ29uZmlndXJhdGlvblJhbmdlOjpWaWRlb1JhbmdlOwor
ICAgICAgICBpZiAoY29sb3JWYWx1ZS5iaXRzX3Blcl9jaGFubmVsLmlzX3ByZXNlbnQoKSkKKyAg
ICAgICAgICAgIHJlY29yZC5iaXREZXB0aCA9IGNvbG9yVmFsdWUuYml0c19wZXJfY2hhbm5lbC52
YWx1ZSgpOworICAgICAgICBpZiAoY29sb3JWYWx1ZS50cmFuc2Zlcl9jaGFyYWN0ZXJpc3RpY3Mu
aXNfcHJlc2VudCgpKQorICAgICAgICAgICAgcmVjb3JkLnRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNz
ID0gY29udmVydFRvVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MoY29sb3JWYWx1ZS50cmFuc2Zlcl9j
aGFyYWN0ZXJpc3RpY3MudmFsdWUoKSk7CisgICAgICAgIGlmIChjb2xvclZhbHVlLm1hdHJpeF9j
b2VmZmljaWVudHMuaXNfcHJlc2VudCgpKQorICAgICAgICAgICAgcmVjb3JkLm1hdHJpeENvZWZm
aWNpZW50cyA9IGNvbnZlcnRUb01hdHJpeENvZWZmaWNpZW50cyhjb2xvclZhbHVlLm1hdHJpeF9j
b2VmZmljaWVudHMudmFsdWUoKSk7CisgICAgICAgIGlmIChjb2xvclZhbHVlLnByaW1hcmllcy5p
c19wcmVzZW50KCkpCisgICAgICAgICAgICByZWNvcmQuY29sb3JQcmltYXJpZXMgPSBjb252ZXJ0
VG9Db2xvclByaW1hcmllcyhjb2xvclZhbHVlLnByaW1hcmllcy52YWx1ZSgpKTsKKyAgICB9CisK
KyAgICBjb25zdGV4cHIgc2l6ZV90IFZQQ29kZWNDb25maWd1cmF0aW9uQ29udGVudHNTaXplID0g
MTI7CisKKyAgICB1aW50MzJfdCB2ZXJzaW9uQW5kRmxhZ3MgPSAxIDw8IDI0OworICAgIHVpbnQ4
X3QgYml0RGVwdGhDaHJvbWFBbmRSYW5nZSA9ICgweEYgJiByZWNvcmQuYml0RGVwdGgpIDw8IDQg
fCAoMHg3ICYgcmVjb3JkLmNocm9tYVN1YnNhbXBsaW5nKSA8PCAxIHwgKDB4MSAmIHJlY29yZC52
aWRlb0Z1bGxSYW5nZUZsYWcpOworICAgIHVpbnQxNl90IGNvZGVjSW50aWFsaXphdGlvbkRhdGFT
aXplID0gMDsKKworICAgIGF1dG8gdmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShBcnJheUJ1
ZmZlcjo6Y3JlYXRlKFZQQ29kZWNDb25maWd1cmF0aW9uQ29udGVudHNTaXplLCAxKSwgMCwgVlBD
b2RlY0NvbmZpZ3VyYXRpb25Db250ZW50c1NpemUpOworICAgIHZpZXctPnNldCgwLCB2ZXJzaW9u
QW5kRmxhZ3MsIGZhbHNlKTsKKyAgICB2aWV3LT5zZXQoNCwgcmVjb3JkLnByb2ZpbGUsIGZhbHNl
KTsKKyAgICB2aWV3LT5zZXQoNSwgcmVjb3JkLmxldmVsLCBmYWxzZSk7CisgICAgdmlldy0+c2V0
KDYsIGJpdERlcHRoQ2hyb21hQW5kUmFuZ2UsIGZhbHNlKTsKKyAgICB2aWV3LT5zZXQoNywgcmVj
b3JkLmNvbG9yUHJpbWFyaWVzLCBmYWxzZSk7CisgICAgdmlldy0+c2V0KDgsIHJlY29yZC50cmFu
c2ZlckNoYXJhY3RlcmlzdGljcywgZmFsc2UpOworICAgIHZpZXctPnNldCg5LCByZWNvcmQubWF0
cml4Q29lZmZpY2llbnRzLCBmYWxzZSk7CisgICAgdmlldy0+c2V0KDEwLCBjb2RlY0ludGlhbGl6
YXRpb25EYXRhU2l6ZSwgZmFsc2UpOworCisgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4ICopdmlldy0+ZGF0YSgpLCB2
aWV3LT5ieXRlTGVuZ3RoKCkpKTsKKworICAgIENGVHlwZVJlZiBjb25maWd1cmF0aW9uS2V5c1td
ID0geyBDRlNUUigidnBjQyIpIH07CisgICAgQ0ZUeXBlUmVmIGNvbmZpZ3VyYXRpb25WYWx1ZXNb
XSA9IHsgZGF0YS5nZXQoKSB9OworICAgIGF1dG8gY29uZmlndXJhdGlvbkRpY3QgPSBhZG9wdENG
KENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjb25maWd1cmF0aW9uS2V5
cywgY29uZmlndXJhdGlvblZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSChjb25maWd1cmF0aW9uS2V5
cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFs
dWVDYWxsQmFja3MpKTsKKworICAgIFZlY3RvcjxDRlR5cGVSZWY+IGF0b21zS2V5cyB7IGtDTUZv
cm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1NhbXBsZURlc2NyaXB0aW9uRXh0ZW5zaW9uQXRvbXMg
fTsKKyAgICBWZWN0b3I8Q0ZUeXBlUmVmPiBhdG9tc1ZhbHVlcyA9IHsgY29uZmlndXJhdGlvbkRp
Y3QuZ2V0KCkgfTsKKyAgICBhdXRvIGF0b21zID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgYXRvbXNLZXlzLmRhdGEoKSwgYXRvbXNWYWx1ZXMuZGF0YSgp
LCBhdG9tc0tleXMuc2l6ZSgpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZU
eXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisKKyAgICBDTVZpZGVvRm9ybWF0RGVzY3Jp
cHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24gPSBudWxscHRyOworICAgIGlmIChub0VyciAhPSBD
TVZpZGVvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NNVmlk
ZW9Db2RlY1R5cGVfVlA5LCBwYXJzZXIud2lkdGgoKSwgcGFyc2VyLmhlaWdodCgpLCBhdG9tcy5n
ZXQoKSwgJmZvcm1hdERlc2NyaXB0aW9uKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuIGFkb3B0Q0YoZm9ybWF0RGVzY3JpcHRpb24pOworfQorCit3ZWJtOjpTdGF0dXMgU291
cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25GcmFtZShjb25zdCBGcmFtZU1ldGFkYXRhJiBtZXRhZGF0
YSwgUmVhZGVyKiByZWFkZXIsIHVpbnQ2NF90KiBieXRlc1JlbWFpbmluZykKK3sKKyAgICBVTlVT
RURfUEFSQU0obWV0YWRhdGEpOworICAgIFVOVVNFRF9QQVJBTShieXRlc1JlbWFpbmluZyk7CisK
KyAgICBBU1NFUlQocmVhZGVyKTsKKyAgICBpZiAoIXJlYWRlcikKKyAgICAgICAgcmV0dXJuIFN0
YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworCisgICAgaWYgKCFtX2N1cnJlbnRCbG9j
aykKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtJbnZhbGlkRWxlbWVudElkKTsKKwor
ICAgIGF1dG8qIGJsb2NrID0gV1RGOjpzd2l0Y2hPbigqbV9jdXJyZW50QmxvY2ssIFtdKEJsb2Nr
JiBibG9jaykgeworICAgICAgICByZXR1cm4gJmJsb2NrOworICAgIH0sIFtdKFNpbXBsZUJsb2Nr
JiBibG9jaykgLT4gQmxvY2sqIHsKKyAgICAgICAgcmV0dXJuICZibG9jazsKKyAgICB9KTsKKyAg
ICBpZiAoIWJsb2NrKQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a0ludmFsaWRFbGVt
ZW50SWQpOworCisgICAgYXV0byBpc1N5bmMgPSBXVEY6OnN3aXRjaE9uKCptX2N1cnJlbnRCbG9j
aywgW10oQmxvY2smKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9LCBbXShTaW1wbGVC
bG9jayYgYmxvY2spIHsKKyAgICAgICAgcmV0dXJuIGJsb2NrLmlzX2tleV9mcmFtZTsKKyAgICB9
KTsKKworICAgIGF1dG8gdHJhY2tOdW1iZXIgPSBibG9jay0+dHJhY2tfbnVtYmVyOworCisgICAg
YXV0byogdHJhY2tEYXRhID0gdHJhY2tEYXRhRm9yVHJhY2tOdW1iZXIodHJhY2tOdW1iZXIpOwor
ICAgIGlmICghdHJhY2tEYXRhKQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a0ludmFs
aWRFbGVtZW50SWQpOworICAgIGF1dG8mIHRyYWNrID0gdHJhY2tEYXRhLT50cmFjazsKKyAgICBh
dXRvJiBoZWFkZXJQYXJzZXIgPSB0cmFja0RhdGEtPmhlYWRlclBhcnNlcjsKKworICAgIHVpbnQ2
NF90IGR1cmF0aW9uID0gMDsKKyAgICBpZiAodHJhY2suZGVmYXVsdF9kdXJhdGlvbi5pc19wcmVz
ZW50KCkpCisgICAgICAgIGR1cmF0aW9uID0gdHJhY2suZGVmYXVsdF9kdXJhdGlvbi52YWx1ZSgp
ICogbV90aW1lc2NhbGUgLyAxMDAwMDAwMDAwOworCisgICAgaWYgKHRyYWNrLmNvZGVjX2lkLmlz
X3ByZXNlbnQoKSAmJiB0cmFjay5jb2RlY19pZC52YWx1ZSgpID09ICJWX1ZQOSIpIHsKKyAgICAg
ICAgaWYgKCF0cmFja0RhdGEtPmN1cnJlbnRCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgQ01C
bG9ja0J1ZmZlclJlZiByYXdCbG9ja0J1ZmZlciA9IG51bGxwdHI7CisgICAgICAgICAgICBpZiAo
bm9FcnIgIT0gQ01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBudWxscHRyLCBtZXRhZGF0YS5zaXplLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxs
cHRyLCAwLCBtZXRhZGF0YS5zaXplLCAwLCAmcmF3QmxvY2tCdWZmZXIpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBTa2lwKHJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOworICAgICAgICAgICAgdHJh
Y2tEYXRhLT5jdXJyZW50QmxvY2tCdWZmZXIgPSBhZG9wdENGKHJhd0Jsb2NrQnVmZmVyKTsKKyAg
ICAgICAgICAgIHRyYWNrRGF0YS0+Y3VycmVudEJsb2NrQnVmZmVyUG9zaXRpb24gPSAwOworCisg
ICAgICAgICAgICBpZiAobm9FcnIgIT0gQ01CbG9ja0J1ZmZlckFzc3VyZUJsb2NrTWVtb3J5KHRy
YWNrRGF0YS0+Y3VycmVudEJsb2NrQnVmZmVyLmdldCgpKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gU2tpcChyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKKyAgICAgICAgfQorCisgICAgICAgIHVp
bnQ4X3QqIGJsb2NrQnVmZmVyRGF0YSA9IG51bGxwdHI7CisgICAgICAgIGlmIChub0VyciAhPSBD
TUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIodHJhY2tEYXRhLT5jdXJyZW50QmxvY2tCdWZmZXIu
Z2V0KCksIDAsIG51bGxwdHIsIG51bGxwdHIsIChjaGFyKiopJmJsb2NrQnVmZmVyRGF0YSkpCisg
ICAgICAgICAgICByZXR1cm4gU2tpcChyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKKworICAgICAg
ICBzaXplX3QgbnVtVG9SZWFkID0gbWV0YWRhdGEuc2l6ZSAtIHRyYWNrRGF0YS0+Y3VycmVudEJs
b2NrQnVmZmVyUG9zaXRpb247CisgICAgICAgIHVpbnQ2NF90IG51bUFjdHVhbGx5UmVhZDsKKyAg
ICAgICAgYXV0byBzdGF0dXMgPSBtX3JlYWRlci0+UmVhZChudW1Ub1JlYWQsICh1aW50OF90Kili
bG9ja0J1ZmZlckRhdGEsICZudW1BY3R1YWxseVJlYWQpOworICAgICAgICAqYnl0ZXNSZW1haW5p
bmcgLT0gbnVtQWN0dWFsbHlSZWFkOworICAgICAgICB0cmFja0RhdGEtPmN1cnJlbnRCbG9ja0J1
ZmZlclBvc2l0aW9uICs9IG51bUFjdHVhbGx5UmVhZDsKKworICAgICAgICAvLyBGSVhNRTogV2Ug
Y2FuJ3QgeWV0IGhhbmRsZSBwYXJzaW5nIGEgRnJhbWUgdGhhdCBkb2Vzbid0IGhhdmUgYWxsIGl0
cyBtZW1vcnkgYXZhaWxhYmxlLgorICAgICAgICBpZiAoc3RhdHVzLmNvZGUgPT0gd2VibTo6U3Rh
dHVzOjprT2tQYXJ0aWFsIHx8IHN0YXR1cy5jb2RlID09IHdlYm06OlN0YXR1czo6a1dvdWxkQmxv
Y2spCisgICAgICAgICAgICByZXR1cm4gc3RhdHVzOworCisgICAgICAgIGlmICghaGVhZGVyUGFy
c2VyLlBhcnNlVW5jb21wcmVzc2VkSGVhZGVyKGJsb2NrQnVmZmVyRGF0YSwgbWV0YWRhdGEuc2l6
ZSkpCisgICAgICAgICAgICByZXR1cm4gU2tpcChyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKKwor
ICAgICAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgZm9ybWF0IGRlc2NyaXB0aW9uIHdoZW4gdGhlIGhl
YWRlciBpbmRpY2F0ZXMgdGhhdCB0aGUgc2FtcGxlIGlzCisgICAgICAgIC8vIGEga2V5LWZyYW1l
LCBvdGhlcndpc2UgY29sb3IgaW5mb3JtYXRpb24gd2lsbCBub3QgYmUgcGFyc2VkLgorICAgICAg
ICBpZiAoaGVhZGVyUGFyc2VyLmtleSgpKQorICAgICAgICAgICAgdHJhY2tEYXRhLT5mb3JtYXRE
ZXNjcmlwdGlvbiA9IGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOUhlYWRlclBhcnNlciho
ZWFkZXJQYXJzZXIsIHRyYWNrLnZpZGVvLnZhbHVlKCkuY29sb3VyKTsKKyAgICAgICAgaWYgKCF0
cmFja0RhdGEtPmZvcm1hdERlc2NyaXB0aW9uKQorICAgICAgICAgICAgcmV0dXJuIFNraXAocmVh
ZGVyLCBieXRlc1JlbWFpbmluZyk7CisKKyAgICAgICAgYXV0byBwdHMgPSBDTVRpbWVNYWtlKGJs
b2NrLT50aW1lY29kZSArIG1fY3VycmVudFRpbWVjb2RlLCBtX3RpbWVzY2FsZSk7CisgICAgICAg
IENNU2FtcGxlVGltaW5nSW5mbyB0aW1pbmcgPSB7IENNVGltZU1ha2UoZHVyYXRpb24sIG1fdGlt
ZXNjYWxlKSwgcHRzLCBwdHMgfTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBtZXRhZGF0YS5zaXpl
OworCisgICAgICAgIGF1dG8gc2FtcGxlQ291bnQgPSBibG9jay0+bnVtX2ZyYW1lczsKKyAgICAg
ICAgQ01TYW1wbGVCdWZmZXJSZWYgcmF3U2FtcGxlQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAg
aWYgKG5vRXJyICE9IENNU2FtcGxlQnVmZmVyQ3JlYXRlUmVhZHkoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgdHJhY2tEYXRhLT5jdXJyZW50QmxvY2tCdWZmZXIuZ2V0KCksIHRyYWNrRGF0YS0+Zm9ybWF0
RGVzY3JpcHRpb24uZ2V0KCksIHNhbXBsZUNvdW50LCAxLCAmdGltaW5nLCAxLCAmc2l6ZSwgJnJh
d1NhbXBsZUJ1ZmZlcikpCisgICAgICAgICAgICByZXR1cm4gU2tpcChyZWFkZXIsIGJ5dGVzUmVt
YWluaW5nKTsKKyAgICAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBhZG9wdENGKHJhd1NhbXBsZUJ1
ZmZlcik7CisKKyAgICAgICAgdHJhY2tEYXRhLT5jdXJyZW50QmxvY2tCdWZmZXIgPSBudWxscHRy
OworICAgICAgICB0cmFja0RhdGEtPmN1cnJlbnRCbG9ja0J1ZmZlclBvc2l0aW9uID0gMDsKKwor
ICAgICAgICBpZiAoIWlzU3luYykKKyAgICAgICAgICAgIENNU2V0QXR0YWNobWVudChzYW1wbGVC
dWZmZXIuZ2V0KCksIGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfTm90U3luYywga0NGQm9vbGVhblRy
dWUsIGtDTUF0dGFjaG1lbnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7CisKKyAgICAgICAgYXV0byB0
cmFja0lEID0gdHJhY2sudHJhY2tfdWlkLnZhbHVlKCk7CisKKyAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzYW1wbGVCdWZmZXIg
PSBXVEZNb3ZlKHNhbXBsZUJ1ZmZlciksIHRyYWNrSURdICgpIG11dGFibGUgeworICAgICAgICAg
ICAgaWYgKCFtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjaykKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICBhdXRvIG1lZGlhU2FtcGxlID0gTWVkaWFTYW1wbGVBVkZPYmpD
OjpjcmVhdGUoc2FtcGxlQnVmZmVyLmdldCgpLCB0cmFja0lEKTsKKyAgICAgICAgICAgIG1fZGlk
UHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKFdURk1vdmUobWVkaWFTYW1wbGUpLCB0cmFja0lELCBl
bXB0eVN0cmluZygpKTsKKyAgICAgICAgfSk7CisKKyAgICB9CisKKyAgICByZXR1cm4gU2tpcChy
ZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTkxZGQz
NWRkMGNjYjI5MTA5MmUyYWRlODM0MWYzOWU3ZThhMzliCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5oCkBAIC0wLDAgKzEsMTM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5jbHVkZSAiU291cmNlQnVmZmVyUGFyc2VyLmgiCisj
aW5jbHVkZSA8Y29tbW9uL3ZwOV9oZWFkZXJfcGFyc2VyLmg+CisjaW5jbHVkZSA8d2VibS9jYWxs
YmFjay5oPgorI2luY2x1ZGUgPHdlYm0vc3RhdHVzLmg+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+
CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgor
I2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKwordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVy
UmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3Qgb3BhcXVlQ01Gb3JtYXREZXNjcmlwdGlvbiogQ01G
b3JtYXREZXNjcmlwdGlvblJlZjsKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZUNNQmxvY2tCdWZmZXIg
KkNNQmxvY2tCdWZmZXJSZWY7CisKK25hbWVzcGFjZSB3ZWJtIHsKK2NsYXNzIFdlYm1QYXJzZXI7
Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU291cmNlQnVmZmVyUGFyc2VyV2Vi
TSA6IHB1YmxpYyBTb3VyY2VCdWZmZXJQYXJzZXIsIHByaXZhdGUgd2VibTo6Q2FsbGJhY2sgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBNZWRpYVBs
YXllckVudW1zOjpTdXBwb3J0c1R5cGUgaXNDb250ZW50VHlwZVN1cHBvcnRlZChjb25zdCBDb250
ZW50VHlwZSYpOworCisgICAgU291cmNlQnVmZmVyUGFyc2VyV2ViTSgpOworICAgIH5Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNKCk7CisKKyAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOworCisg
ICAgY29uc3Qgd2VibTo6U3RhdHVzJiBzdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1czsg
fQorCisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gVHlwZTo6V2ViTTsgfQorICAgIHZv
aWQgYXBwZW5kRGF0YShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgQXBwZW5kRmxhZ3MgPSBBcHBl
bmRGbGFnczo6Tm9uZSkgZmluYWw7CisgICAgdm9pZCBmbHVzaFBlbmRpbmdNZWRpYURhdGEoKSBm
aW5hbDsKKyAgICB2b2lkIHNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGJvb2ws
IHVpbnQ2NF90KSBmaW5hbDsKKyAgICBib29sIHNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFj
a0lEKHVpbnQ2NF90KSBmaW5hbDsKKyAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsK
KworICAgIGVudW0gY2xhc3MgRXJyb3JDb2RlIDogaW50MzJfdCB7CisgICAgICAgIFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk1FcnJvckNvZGVTdGFydCA9IDIwMDAsCisgICAgICAgIEludmFsaWREb2NU
eXBlLAorICAgICAgICBJbnZhbGlkSW5pdFNlZ21lbnQsCisgICAgfTsKKworcHJpdmF0ZToKKyAg
ICBzdHJ1Y3QgVHJhY2tEYXRhIHsKKyAgICAgICAgd2VibTo6VHJhY2tFbnRyeSB0cmFjazsKKyAg
ICAgICAgdnA5X3BhcnNlcjo6VnA5SGVhZGVyUGFyc2VyIGhlYWRlclBhcnNlcjsKKyAgICAgICAg
UmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGZvcm1hdERlc2NyaXB0aW9uOworICAg
ICAgICBSZXRhaW5QdHI8Q01CbG9ja0J1ZmZlclJlZj4gY3VycmVudEJsb2NrQnVmZmVyOworICAg
ICAgICB1aW50NjRfdCBjdXJyZW50QmxvY2tCdWZmZXJQb3NpdGlvbiB7IDAgfTsKKyAgICB9Owor
ICAgIFRyYWNrRGF0YSogdHJhY2tEYXRhRm9yVHJhY2tOdW1iZXIodWludDY0X3QpOworCisgICAg
Ly8gd2VibTo6Q2FsbGJhY2sKKyAgICB3ZWJtOjpTdGF0dXMgT25FbGVtZW50QmVnaW4oY29uc3Qg
d2VibTo6RWxlbWVudE1ldGFkYXRhJiwgd2VibTo6QWN0aW9uKikgZmluYWw7CisgICAgd2VibTo6
U3RhdHVzIE9uRWJtbChjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmLCBjb25zdCB3ZWJtOjpF
Ym1sJikgZmluYWw7CisgICAgd2VibTo6U3RhdHVzIE9uU2VnbWVudEJlZ2luKGNvbnN0IHdlYm06
OkVsZW1lbnRNZXRhZGF0YSYsIHdlYm06OkFjdGlvbiopIGZpbmFsOworICAgIHdlYm06OlN0YXR1
cyBPbkluZm8oY29uc3Qgd2VibTo6RWxlbWVudE1ldGFkYXRhJiwgY29uc3Qgd2VibTo6SW5mbyYp
IGZpbmFsOworICAgIHdlYm06OlN0YXR1cyBPbkNsdXN0ZXJCZWdpbihjb25zdCB3ZWJtOjpFbGVt
ZW50TWV0YWRhdGEmLCBjb25zdCB3ZWJtOjpDbHVzdGVyJiwgd2VibTo6QWN0aW9uKikgZmluYWw7
CisgICAgd2VibTo6U3RhdHVzIE9uVHJhY2tFbnRyeShjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRh
dGEmLCBjb25zdCB3ZWJtOjpUcmFja0VudHJ5JikgZmluYWw7CisgICAgd2VibTo6U3RhdHVzIE9u
QmxvY2tCZWdpbihjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmLCBjb25zdCB3ZWJtOjpCbG9j
ayYsIHdlYm06OkFjdGlvbiopIGZpbmFsOworICAgIHdlYm06OlN0YXR1cyBPbkJsb2NrRW5kKGNv
bnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYsIGNvbnN0IHdlYm06OkJsb2NrJikgZmluYWw7Cisg
ICAgd2VibTo6U3RhdHVzIE9uU2ltcGxlQmxvY2tCZWdpbihjb25zdCB3ZWJtOjpFbGVtZW50TWV0
YWRhdGEmLCBjb25zdCB3ZWJtOjpTaW1wbGVCbG9jayYsIHdlYm06OkFjdGlvbiopIGZpbmFsOwor
ICAgIHdlYm06OlN0YXR1cyBPblNpbXBsZUJsb2NrRW5kKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRh
ZGF0YSYsIGNvbnN0IHdlYm06OlNpbXBsZUJsb2NrJikgZmluYWw7CisgICAgd2VibTo6U3RhdHVz
IE9uQmxvY2tHcm91cEJlZ2luKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYgLCB3ZWJtOjpB
Y3Rpb24qKTsKKyAgICB3ZWJtOjpTdGF0dXMgT25CbG9ja0dyb3VwRW5kKGNvbnN0IHdlYm06OkVs
ZW1lbnRNZXRhZGF0YSYsIGNvbnN0IHdlYm06OkJsb2NrR3JvdXAmKTsKKyAgICB3ZWJtOjpTdGF0
dXMgT25GcmFtZShjb25zdCB3ZWJtOjpGcmFtZU1ldGFkYXRhJiwgd2VibTo6UmVhZGVyKiwgdWlu
dDY0X3QqIGJ5dGVzUmVtYWluaW5nKSBmaW5hbDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbml0
aWFsaXphdGlvblNlZ21lbnQ+IG1faW5pdGlhbGl6YXRpb25TZWdtZW50OworICAgIHdlYm06OlN0
YXR1cyBtX3N0YXR1czsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VibTo6V2VibVBhcnNlcj4gbV9w
YXJzZXI7CisgICAgYm9vbCBtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkIHsgZmFs
c2UgfTsKKyAgICB1aW50MzJfdCBtX3RpbWVzY2FsZSB7IDEwMDAgfTsKKyAgICB1aW50NjRfdCBt
X2N1cnJlbnRUaW1lY29kZSB7IDAgfTsKKworICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90
IHsKKyAgICAgICAgTm9uZSwKKyAgICAgICAgUmVhZGluZ0VibWwsCisgICAgICAgIFJlYWRFYm1s
LAorICAgICAgICBSZWFkaW5nU2VnbWVudCwKKyAgICAgICAgUmVhZGluZ0luZm8sCisgICAgICAg
IFJlYWRJbmZvLAorICAgICAgICBSZWFkaW5nVHJhY2tzLAorICAgICAgICBSZWFkaW5nVHJhY2ss
CisgICAgICAgIFJlYWRUcmFjaywKKyAgICAgICAgUmVhZGluZ0NsdXN0ZXIsCisgICAgfTsKKyAg
ICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6Ok5vbmUgfTsKKworICAgIGNsYXNzIFN0cmVhbWluZ1Zl
Y3RvclJlYWRlcjsKKyAgICBVbmlxdWVSZWY8U3RyZWFtaW5nVmVjdG9yUmVhZGVyPiBtX3JlYWRl
cjsKKworICAgIFZlY3RvcjxUcmFja0RhdGE+IG1fdHJhY2tzOworICAgIHVzaW5nIEJsb2NrVmFy
aWFudCA9IFZhcmlhbnQ8d2VibTo6QmxvY2ssIHdlYm06OlNpbXBsZUJsb2NrPjsKKyAgICBPcHRp
b25hbDxCbG9ja1ZhcmlhbnQ+IG1fY3VycmVudEJsb2NrOworfTsKKworfQorCitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk0pCisgICAg
c3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlciYgcGFy
c2VyKSB7IHJldHVybiBwYXJzZXIudHlwZSgpID09IFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNl
cjo6VHlwZTo6V2ViTTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCisjZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5oCmluZGV4IDhjMjQ1NTNj
YjE2NWZjYTc5YTI5NThiNmRiZWQ4MjdmNzI3ODExMjcuLmUzZTM1YmVmZTRhZTA0OGQxYmM1OWY4
MzA0MzNlMWFiYjRhMWEzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EuaApAQCAtMzksNiArMzksNyBA
QCBXRUJDT1JFX0VYUE9SVCBleHRlcm4gdm9pZCBzZXRPdmVycmlkZVZQOVNjcmVlblNpemVBbmRT
Y2FsZUZvclRlc3RpbmcoZmxvYXQgd2lkdAogV0VCQ09SRV9FWFBPUlQgZXh0ZXJuIHZvaWQgcmVz
ZXRPdmVycmlkZVZQOVNjcmVlblNpemVBbmRTY2FsZUZvclRlc3RpbmcoKTsKIAogV0VCQ09SRV9F
WFBPUlQgZXh0ZXJuIHZvaWQgcmVnaXN0ZXJTdXBwbGVtZW50YWxWUDlEZWNvZGVyKCk7CitleHRl
cm4gYm9vbCBpc1ZQOURlY29kZXJBdmFpbGFibGUoKTsKIGV4dGVybiBib29sIHZhbGlkYXRlVlBQ
YXJhbWV0ZXJzKFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkJiwgTWVkaWFDYXBhYmlsaXRpZXNJ
bmZvJiwgY29uc3QgVmlkZW9Db25maWd1cmF0aW9uJik7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2Eu
bW0KaW5kZXggZTQ0MzUzYjgwMzRlZjcyYWY4Y2M3ZGM5NDgxYTQ5YTM4OWRlOWE2ZS4uZjc5NjU2
M2IzZmY2N2VlYmE5MDAyYmIyM2E2NGNiN2Q4ODYxYzA1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2Eu
bW0KQEAgLTEwMiwxMCArMTAyLDE0IEBAIHZvaWQgcmVnaXN0ZXJTdXBwbGVtZW50YWxWUDlEZWNv
ZGVyKCkKICAgICAgICAgc29mdExpbmtfVmlkZW9Ub29sYm94X1ZUUmVnaXN0ZXJTdXBwbGVtZW50
YWxWaWRlb0RlY29kZXJJZkF2YWlsYWJsZShrQ01WaWRlb0NvZGVjVHlwZV9WUDkpOwogfQogCiti
b29sIGlzVlA5RGVjb2RlckF2YWlsYWJsZSgpCit7CisgICAgcmV0dXJuIG5vRXJyID09IFZUU2Vs
ZWN0QW5kQ3JlYXRlVmlkZW9EZWNvZGVySW5zdGFuY2Uoa0NNVmlkZW9Db2RlY1R5cGVfVlA5LCBr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCBudWxscHRyKTsKK30KKwogYm9vbCB2YWxpZGF0
ZVZQUGFyYW1ldGVycyhWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYgY29kZWNDb25maWd1cmF0
aW9uLCBNZWRpYUNhcGFiaWxpdGllc0luZm8mIGluZm8sIGNvbnN0IFZpZGVvQ29uZmlndXJhdGlv
biYgdmlkZW9Db25maWd1cmF0aW9uKQogewotICAgIE9TU3RhdHVzIHN0YXR1cyA9IFZUU2VsZWN0
QW5kQ3JlYXRlVmlkZW9EZWNvZGVySW5zdGFuY2Uoa0NNVmlkZW9Db2RlY1R5cGVfVlA5LCBrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCBudWxscHRyKTsKLSAgICBpZiAoc3RhdHVzICE9IG5v
RXJyKQorICAgIGlmICghaXNWUDlEZWNvZGVyQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIC8vIFZpZGVvQ29uZmlndXJhdGlvbiBhbmQgVlBDb2RlY0NvbmZpZ3VyYXRp
b25SZWNvcmQgY2FuIGhhdmUgY29uZmxpY3RpbmcgdmFsdWVzIGZvciBIRFIgcHJvcGVydGllcy4g
SWYgc28sIHJlamVjdC4KQEAgLTEyOCw3ICsxMzIsNyBAQCBib29sIHZhbGlkYXRlVlBQYXJhbWV0
ZXJzKFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkJiBjb2RlY0NvbmZpZ3VyYXRpb24sIE1lZGlh
QwogICAgICAgICBpbmZvLnBvd2VyRWZmaWNpZW50ID0gdHJ1ZTsKIAogICAgICAgICAvLyBIVyBW
UDkgRGVjb2RlciBzdXBwb3J0cyBQcm9maWxlIDAgJiAyOgotICAgICAgICBpZiAoIWNvZGVjQ29u
ZmlndXJhdGlvbi5wcm9maWxlICYmIGNvZGVjQ29uZmlndXJhdGlvbi5wcm9maWxlICE9IDIpCisg
ICAgICAgIGlmIChjb2RlY0NvbmZpZ3VyYXRpb24ucHJvZmlsZSAmJiBjb2RlY0NvbmZpZ3VyYXRp
b24ucHJvZmlsZSAhPSAyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8v
IEhXIFZQOSBEZWNvZGVyIHN1cHBvcnRzIHVwIHRvIExldmVsIDY6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1By
aXZhdGVXZWJNLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTM0ZjJlNTgzZmVjYmRhMzRmNzU3YmIyYjMxOTdm
M2VmY2U4MjMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcApAQCAtMCwwICsxLDc1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2
YXRlV2ViTS5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitSZWY8VmlkZW9UcmFja1ByaXZhdGVXZWJNPiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk06
OmNyZWF0ZSh3ZWJtOjpUcmFja0VudHJ5JiYgdHJhY2tFbnRyeSkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0oV1RGTW92ZSh0cmFja0VudHJ5KSkpOwor
fQorCitWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OlZpZGVvVHJhY2tQcml2YXRlV2ViTSh3ZWJtOjpU
cmFja0VudHJ5JiYgdHJhY2tFbnRyeSkKKyAgICA6IG1fdHJhY2soV1RGTW92ZSh0cmFja0VudHJ5
KSkKK3sKKyAgICBpZiAobV90cmFjay5pc19lbmFibGVkLmlzX3ByZXNlbnQoKSkKKyAgICAgICAg
c2V0U2VsZWN0ZWQobV90cmFjay5pc19lbmFibGVkLnZhbHVlKCkpOworfQorCitBdG9tU3RyaW5n
IFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6aWQoKSBjb25zdAoreworICAgIGlmIChtX3RyYWNrSUQu
aXNOdWxsKCkpCisgICAgICAgIG1fdHJhY2tJRCA9IG1fdHJhY2sudHJhY2tfdWlkLmlzX3ByZXNl
bnQoKSA/IEF0b21TdHJpbmc6Om51bWJlcihtX3RyYWNrLnRyYWNrX3VpZC52YWx1ZSgpKSA6IGVt
cHR5QXRvbSgpOworICAgIHJldHVybiBtX3RyYWNrSUQ7Cit9CisKK0F0b21TdHJpbmcgVmlkZW9U
cmFja1ByaXZhdGVXZWJNOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgaWYgKG1fbGFiZWwuaXNOdWxs
KCkpCisgICAgICAgIG1fbGFiZWwgPSBtX3RyYWNrLm5hbWUuaXNfcHJlc2VudCgpID8gQXRvbVN0
cmluZzo6ZnJvbVVURjgobV90cmFjay5uYW1lLnZhbHVlKCkuZGF0YSgpLCBtX3RyYWNrLm5hbWUu
dmFsdWUoKS5sZW5ndGgoKSkgOiBlbXB0eUF0b20oKTsKKyAgICByZXR1cm4gbV9sYWJlbDsKK30K
KworQXRvbVN0cmluZyBWaWRlb1RyYWNrUHJpdmF0ZVdlYk06Omxhbmd1YWdlKCkgY29uc3QKK3sK
KyAgICBpZiAobV9sYW5ndWFnZS5pc051bGwoKSkKKyAgICAgICAgbV9sYW5ndWFnZSA9IG1fdHJh
Y2subGFuZ3VhZ2UuaXNfcHJlc2VudCgpID8gQXRvbVN0cmluZzo6ZnJvbVVURjgobV90cmFjay5s
YW5ndWFnZS52YWx1ZSgpLmRhdGEoKSwgbV90cmFjay5sYW5ndWFnZS52YWx1ZSgpLmxlbmd0aCgp
KSA6IGVtcHR5QXRvbSgpOworICAgIHJldHVybiBtX2xhbmd1YWdlOworfQorCitpbnQgVmlkZW9U
cmFja1ByaXZhdGVXZWJNOjp0cmFja0luZGV4KCkgY29uc3QKK3sKKyAgICBpZiAobV90cmFjay50
cmFja19udW1iZXIuaXNfcHJlc2VudCgpKQorICAgICAgICByZXR1cm4gbV90cmFjay50cmFja19u
dW1iZXIudmFsdWUoKTsKKyAgICByZXR1cm4gMDsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTc2
N2I5MWQ5NmVmZWFmNDlmM2M3OTBjNzJkNjNhMmZkODE1M2I4MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRl
V2ViTS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShNRURJQV9TT1VSQ0UpCisKKyNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgor
I2luY2x1ZGUgPHdlYm0vZG9tX3R5cGVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgVmlkZW9UcmFja1ByaXZhdGVXZWJNIGZpbmFsIDogcHVibGljIFZpZGVvVHJhY2tQcml2YXRl
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFZpZGVvVHJhY2tQcml2YXRlV2ViTT4gY3JlYXRl
KHdlYm06OlRyYWNrRW50cnkmJik7CisgICAgdmlydHVhbCB+VmlkZW9UcmFja1ByaXZhdGVXZWJN
KCkgPSBkZWZhdWx0OworCisgICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IGZpbmFsOworICAgIEF0
b21TdHJpbmcgbGFiZWwoKSBjb25zdCBmaW5hbDsKKyAgICBBdG9tU3RyaW5nIGxhbmd1YWdlKCkg
Y29uc3QgZmluYWw7CisgICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBmaW5hbDsKKworcHJpdmF0
ZToKKyAgICBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0od2VibTo6VHJhY2tFbnRyeSYmKTsKKyAgICB3
ZWJtOjpUcmFja0VudHJ5IG1fdHJhY2s7CisgICAgbXV0YWJsZSBBdG9tU3RyaW5nIG1fdHJhY2tJ
RDsKKyAgICBtdXRhYmxlIEF0b21TdHJpbmcgbV9sYWJlbDsKKyAgICBtdXRhYmxlIEF0b21TdHJp
bmcgbV9sYW5ndWFnZTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCBlMDRjYWRjYTJk
YzVhOGM0MTliNzJmYTE5ZWU3M2ZlNzNhMTBiNjAxLi40MmIwNDk3MDliM2ZlMDhlYTMwZmM1ZGQ5
NmY2ODFiZjZjN2MxNjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVm
ZXJlbmNlcy55YW1sCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlh
bWwKQEAgLTY2OCw2ICs2NjgsMTUgQEAgVlA5RGVjb2RlckVuYWJsZWQ6CiAgIGh1bWFuUmVhZGFi
bGVEZXNjcmlwdGlvbjogIkVuYWJsZSBWUDkgZGVjb2RlciIKICAgY2F0ZWdvcnk6IGV4cGVyaW1l
bnRhbAogCitXZWJNUGFyc2VyRW5hYmxlZDoKKyAgdHlwZTogYm9vbAorICBkZWZhdWx0VmFsdWU6
IGZhbHNlCisgIHdlYmNvcmVCaW5kaW5nOiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzCisgIGh1bWFu
UmVhZGFibGVOYW1lOiAiV2ViTSBNU0UgcGFyc2VyIgorICBodW1hblJlYWRhYmxlRGVzY3JpcHRp
b246ICJFbmFibGUgV2ViTSBNU0UgcGFyc2VyIgorICBjYXRlZ29yeTogZXhwZXJpbWVudGFsCisg
IGNvbmRpdGlvbjogRU5BQkxFKE1FRElBX1NPVVJDRSkKKwogVXNlTGVnYWN5VGV4dEFsaWduUG9z
aXRpb25lZEVsZW1lbnRCZWhhdmlvcjoKICAgdHlwZTogYm9vbAogICBkZWZhdWx0VmFsdWU6IGZh
bHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggYzY4YTJjODgyYzY4MzMxYzQ4M2E4MzcxYmFjNGZlZDZiNWNlMTQ2NC4uMGY2
Mzg5N2Q3ZTBkZmU2Mzk1Mzg1ODIyOTg5MjliYjhlZTU1ODA4MyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDIwLTA3LTIxICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAg
ICAgIFtDb2NvYV0gQWRkIGV4cGVyaW1lbnRhbCBNU0UgV2ViTSBwYXJzZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDUyOQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjU3ODI0Njc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBtZWRpYS9tZWRpYS1zb3VyY2UvY29udGVudC90ZXN0LXZwOS1tYW5p
ZmVzdC5qc29uOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1zb3VyY2UvY29udGVudC90
ZXN0LXZwOS53ZWJtOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEt
c291cmNlLXdlYm0tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1z
b3VyY2UvbWVkaWEtc291cmNlLXdlYm0uaHRtbDogQWRkZWQuCisKIDIwMjAtMDctMjAgIEtlaXRo
IE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIG51bWJl
ciBvZiBpdGVyYXRpb25zIGZvciB3ZWFrcmVmIHRlc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9tZWRpYS9tZWRpYS1zb3VyY2UvY29udGVudC90ZXN0LXZwOS1tYW5pZmVzdC5qc29uIGIvTGF5
b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL2NvbnRlbnQvdGVzdC12cDktbWFuaWZlc3QuanNv
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hNDdkOTc3YTM3YmIzYjRjN2E1NjU0NTQzNjk0YTI0MGZmODA0MjcyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL2NvbnRlbnQv
dGVzdC12cDktbWFuaWZlc3QuanNvbgpAQCAtMCwwICsxLDkgQEAKK3sKKwkidXJsIjogImNvbnRl
bnQvdGVzdC12cDkud2VibSIsCisJInR5cGUiOiAidmlkZW8vd2VibTsgY29kZWNzPVwidnAwOS4w
MC4xMC4wOC4wMVwiIiwKKwkiaW5pdCI6IHsgIm9mZnNldCI6IDAsICJzaXplIjogNjI5IH0sCisJ
ImR1cmF0aW9uIjogMiwKKwkibWVkaWEiOiBbIAorCQl7ICJvZmZzZXQiOiA2MjksICJzaXplIjog
NDM3MjQsICJ0aW1lc3RhbXAiOiAwLCAiZHVyYXRpb24iOiAyfQorCV0KK30KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3Vy
Y2UvY29udGVudC90ZXN0LXZwOS53ZWJtIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNl
L2NvbnRlbnQvdGVzdC12cDkud2VibQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjNkZmRhYWM3MTEyMmViNWEzOTJh
OWNhMjU1ZTZjMTk2YzM4ZTk4CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA0NDM1Mwp6Y21kNDJR
OztyQSg+OGghKjRWYWYrcVB9bndyJCY8SE1WV3J2aiVIeVRtU1FaJiUzfGF8R19AcjY8cjtmLUli
WncKem02PzR8NW5XaUt5VHczJnt+N29+VlN6d0dGYU9OQEt2MUVGS25TNnI1Ty00fVRjUGtrVjQ9
YEpVPH5CfF5NOUF0CnpLcTFPenk5algwYzEwXiFnYGk0U25raVFZOT81cGF7Ryp8JSlMSlc3MkxU
Y1B0MEppa25nMiglYCZZJEw/KXVOJAp6Plp7QkQyRj9DQV9XdipNe35gOFltYHFlXzRaLWsyMDxy
PElHS093dXRuNzNnJXlmKGw0QztkYXc9TlBIQSZAV2QKektXelMhaTJxdmkqWng7dlRNR25vOXRp
fT4yP1ArZTxPSTlnblNfT14+OG1NbDFfdUhXOXxWVTBkeWlZfntkWC0/CnplR3JnOVhXKHNDQW48
PlpffXswKSZkJmRwPSMyYVNEKj8+TXwwYGpNN0tlKzwzQ29MIUR2NTt1LV5sKmdqXy1mJQp6SyNs
KV9eMXJyWnw4THZPZV4/cy0hOytFVkthK3ZMIz9ye20hR3FTI2YlQVg7YVElUHlBcmRXKTVLJmJV
UkZSYUkKejZBNGRZVkJxQEMjWUQmT3t8bz5DVSUxdXZVJk96UVBYWW5PaiZnd2pLdFBhV3VuKytH
N1ZhNV5nOUhhZDFwdmsxCnp6bW9zKmFuPVhGaVIqLXl7QDJld14hc0x1NUI8KU1lKFlPKD16RGtL
amM/fk83eUlreHI0Syojbi0yMXxfazw3cwp6T15iYTBKQVVOI2hrVk5+QyNofnVeeW1DSlUtVD5X
aXFDKWFMTFglNyF7NzN7N3JmI3twUzt7I3pHclZ8PzJuSlYKel90ajQrWitZN257ZkY/QG8yPUtC
Pn11YXxjTjsoZG5tMW5WckJDSilSJmNnKz4wYFh7UWplP3EldDQ3KW5uYnRjCnpsYGpXU1k1PjZo
ZnlCY1JIITVuX1BzV1pkenIjUWdZS3FGMlQ2OVU9ZWVkUGp4WHU8a2AxLW5eYlZDR0teP1JURgp6
KD14XzUqdF5geU0+N25QeTV5T1NIKWxAKXYkMip6TGJoUGExQHUhQD1gcX1ucXN8fT1LPjNReUI8
ZFU9NWo0NTUKelRJOFc8cXQlU0QkQ3tsPz5ffkNEUX5QcTgwOHtIWjczY04hRjZJcSNxS3c7ZjxN
ZksraTYzXy0jbWFCb0ZXK2cjCnoqezAjNEs5cXckJGVhdV5abGU4PmFMPUVTRys9TnQ/SkA0QUhE
ZDQ5czsrYDh3IzA9JGlxdCh6dCE8PUMkdWZ8OAp6dCF6YSs3cShaVTFwaUQ3XmxGZGluMXVMJmJ2
ZnlPVCliaD1SNHM+XzFgZXtIbW9mVEdOVygtYHl3QGg1UWtfVWQKemBXRz4jbm0mV1BZeUhaem9l
JlQhP3dkV3lNQmBYZktOZ303cmZ6R3JRYSMjRjheI3BmbVlpdmo4T2xjUlZDPSlBCnpYaDNvVUYr
fWhJTGlyPlotczlKcGpfJkF4b25JPm9CfmI+ND1ASnc2VHsrYXNoaz9JNCZSNjgkRnIrTyNSPno/
Mwp6ZnVrQHV0fjdzc1JZI3RxJkh3T1d7eUZ9TEMrT248SCNSLWAxcSVZcTQ1Mk5gZjk/MnFiWTYj
OTJgVWpuMmdrMnkKenhiZE0lOEdoRDVUOXBfdzZwYXI+KlAoRCp5MSE3Sj5tJk9+Vmx9Vl9wLTwm
TzIqbnVeK3A4RmItTzBmWSQjRWc3CnowdVBINzBqJUl8aUtmQndKV1JHX2B0ak5BKFBAbVQ1Pms4
NFIrPz0yaEx0QGArJmJ4NmZZUSE3Sl9DbV91PVN6bAp6Y0x7bzU1djcxfkshVVlPU01AXn1uTkIm
KHFLV0xNcVYjdDVzKiR0TCs5RVorTjNJWWt3MDNDY1I3cE1FXnlVcHsKemNQIU1pK1VnZnM2RkZx
cEZ0aEU0WDhqODM/S05xbHQkQUZtP3o/TzRSdSlARz9fQTw8VztiWndEdVpIPVp2SCp6CnozUXc+
U1EldEhuQkNAQEMkWWt+QHZ5WH1pKkwwSDh6Sm94V0lfTzFSO0ZBJGZzOWRYdFlodnZHRm1XUGJN
ck4mRQp6Xk52NWZJbEBhaWt+cX5tPVpXUX5zRXNrKGE+TiVJOT1kOWwwO2kyRV5WTWkrQXJvZXZE
Si19bUM7QDY2VFEkJXIKejIpfFNOSmxZck1EdEFBOTxjbzhhR29JUFMrN1RDMmIhcH43REBKMkZ6
S1Ayc0tFdk5kUkNOZFBJWWA8SnZ3TTR7Cnpuc1lFR2orPTExQFhwSEk1ZjE5cG4+OE8lZEZzNlFT
OE1YPkU1OStQPD8xO2BeZnYrZ15DQHVMIUNBPnR5Xk99Mgp6OWheUj11fn4xeE8/dEZMRXktZ1VX
cys4PDEkcC1HQlBsVDZ1cmA9SCkwcCp9Rz55OVJDNT1AaExtPG97WF90bkAKem5YKl96cihoZyhJ
RXJue3dJaGZxKCFoV2lvI1Y/JWtfLW1kX15YRzk9Kz5kTU9TfGEtI2lJe3p7aClBTiY4TFUtCnop
fkdPbHhtWFU2IWU9ZSUkYystKHMlKipmIVY2aXY0TilkZEZDUW14YHM3U3tWWHRfLXZKfmgmI3FH
TC1mJXslTgp6QzQ/Nm1EX0E8VSpPcClnOSpaLSVJRTRhIz5nT3N8Q1RxJnVuMmBhXnY5N0xIWVc7
QzdkakF9ZktLSiZOIzZ9Z18Kel51NXNKSHl5Zk0mfEpJVSpscSY2UzlRaDh7dDhHMmNOSW9ZKCtP
SERuQjlxYGQ8d1BqdmFecnF6NCsrQ090YjZTCnohKE4yYHY5UzdRJkExUCErfk1gKVFaNkZsakp9
alBMJlAwaiUpOS1CVnkybzBmO0h4JSk5NjslPXtBUnIjYm1uewp6SkJFWUpUNDtFbjE4fVckWkc0
fU0jUCkoeDl3WVNwK1BAT28wV3RDdkR6bjUtZkAzJShgYU5BSC02QExNIyNIRTIKekhCVlU/U2FB
Wko9RC18KGI8SjJQXjVxNDtmXkVxOHNGJGh8akRRX2FtRGFuRzdYJSZJPTNVOHROZFolJmx9SF9U
CnpoWUNmTD8/T3BrWH5YdTYtS3xER2ZEbXM4WWY5RkklIyZ5Y2BKZ2Y8VikySzVVK2AxVTxWQzZ3
UGo3KiF2WV5MaAp6OHo0QDJzYFQjamNDTjYoc19wKmg3ZXl3STJ3YD5eY0Q5UGgmK31YXlhEblhm
MSFWPHN4R35eWj49JWpzTzc8T18KenRrcDR3JHk/PUtEVjRAY0k2fkpAMCE/WFk+aXFyaSpzZkps
Wi1VaUluZ35BaVBuNSNiZj1fNHFUVF4xM0tVRjIrCnomeTZXWFYtfG0mYEVBc35END5GOyVje2ok
Knl9ZXJMYWRqNSojYE40X1IlVz5oUVkwfjtVIWokI29qakJfJmNMPwp6cFRlan1tWG9OekBfKWY7
OEFOVjxTRisjanEwSnF3M2JEc0E5JmpQWVZvd1oobjVecW03QThwdTt0fTNkX2NeQXAKem1FVEht
UyspT3NvcnhZWlVvWj8pSkw9YSp2OCMoT0NfTGs8OTtkTVBnX1pkPFFIRmglODRyQyVpPko1PmlE
KXFQCno9ZXZpbExXeCErOHR+PCgrcjR+OWBLTUIhb2gqa0o9Sng4Ml5ePSNaPiooPU0zJUxhRjZY
JjApVTZeS1Z4RVglLQp6MVlyQmJkZ1k4VDY9TXJNVXpMPnB1SWd2Y2loWFNIN248KCRjdkl1KWw3
I1duaGQ7Y01sY05jeFV1RzZre2koMVQKekFRcSNra2BkbitANDZCS21OO2xxSHglUk5zalA4UjNR
LSsoZDVZe24yUH5NTlU4Q2spRSVUNE4+bEkyKHw3dkltCnptbz5oRW58X0t6TUlRUFI0NV5zcER7
Q0QrSURSYXtmP357dGFJfkxGU2JIZyhNb2EoeGBtKzU0UjYzUk88aF5qfQp6TDZHbFVtdmtMUDJN
SiNwYUgrakRYfl5HVW09ezF2aCZlVkxrc1YlSlhlN3w0dW5JK2E2RCVNbnF7OzdORGYtYjgKeklM
RVdDVyFYOWJNSypDUnJIVVJXSkUhOTBNcnlwYzNsSSREPE1PcyVIS1FtS3ROI1FgY3xIQ1JyPmtX
Y0VuRDRNCnpOaW14SWhLYFYwQCk/YExqZVlBNjRubiExMkNKeFkxOXs1Y2khQEl+T2dFKWt6Kmt+
OUU1Yj0oMmkzOG08WjdHWgp6O31wemRFOCQ2MFA/ZUxjZUFkJXxtSEBnc1AlbHdMZTUhTHMzR3h4
U09WKyhARWo+VypwfiRFc3BnKEpDXzloeX0KenNFUkpTbUo1JGgtNHtBSnNUfWc2ezhoNSFzWjsl
Pzsrdz5MayROKDdgYXFOJWhqZSF5aEtJblh5VG9MYXE4Pnc1CnpMc0Q2OFRtdG50MVR5aiMkY1kq
JmVkWj9mPXYxNVRLV3FBPGF8TG00Pzc0YXJYTyghcEY4RE9jXj9JZjJHbT08Ygp6QDljaj80Pj5p
MiZ+SnFfWU8rLU8jS3RSSC13fHQ4Nll9azJkQXVFP0MlbyUjVDVWbTBAdyU8LSlSKUs7X0R3NXAK
enNubitCPT9GenY3e2RyVyZVeTBkSEZkMCVHVENmcVcxeEo/V3ZKQU5lNkxRN3Byem4kYWpiRms2
fVNENWJ0RDExCnolczFvTWVQZWE5V0MwTGlQejtkVko2KUM/OXFxSCo7SFN3fjQwZjBJZnlIcE5R
KTROMnZLUjJZIzNseWBKJVBATgp6RHBEfWlocTdVSWJHdyRwSCQ2RyppKSMlTSlranJPdypqOzdj
eHZ2ezUyMkU3TCZaQmY/Jj9QSW8zNUVXaGktO1AKel48bndHZyRvbGZre2s/UCp+I3xxVjNLTkAx
PmImeXlxPWE+RiFmQ3JmN1p1dE15MSljJXRtPU5CYFZwQk5EYiUrCnpGUnB0UkZ2e305UVJuPUo0
VSpIMFo8OyYzMHhUfldeKVROT3p6cXI3MGZpUEs0cFZSSl8+PFI+VX4pQVFueUYmTwp6SXw7cjFj
cWdHcE96TVdiUnIpaTJBPDR2O016fHNuZ202fCFeZHIpelc9LSViRVFFKVZebWswaHJGajtRQ3Nt
b0AKelhZeVM2c2ltfUEqTn5mQ090OS03OzB6eDNrJUFUTDQje1JsP3U/WTBDUGhMPU5IOXR3Q3pR
RGFZUEteYXJWMUh1CnpKOVdLKXZUQiFabHMocFoyTDZMKUhWSEE0JjQmJio4fiU2M2xfNX5RJWtO
cXFkJlhiMzw9bnh+REtPMm0+QVdWSQp6Q0l3VH12a2xiI2EkK1EoYTBRcHRmYW1KNU1wTmxZaGFn
ZVM0cj9IKVlkKGpWU3xlLTNVLUNlPkpNbzI2RjhVVzAKemlDPiM+WEMhQm5iMmU/amheayhNQXJo
eHkmI2ZCPj5adU1HOGBFTFhHQ2tVRSVDd3VIYntkK0d3I2ojP09jU2s+CnpLcFBIY1cqPG5rVDV5
bStrOFJUOWxDU0RebHw9O1VDUkNzVWtlUDZ7Ul5LY1FNcjVvR19FJUpxTjlFVXxWKE1zWgp6XzF0
TEFIUiVNJCNAb3VwYnY+blJneVpiREJVKlFfcXp7WERecklzaiNyRXVmN2U9fCVqMnhMZnRYPz5V
STJ8d3gKendXR0lwNypJXil7NHU1fjlJQkR+TXpzaF4yd2NZeD5hYnZEUExXeEswfiVHY1JnKn1a
MkU3Q0xSMkgrMVEqXk1PCnpARzQ8NiFGMVpBMUt1fHBLU1FBeD5ydWxLNEhLUEdSWU1oJnB8TXBX
UUxyZjkzUE48OW9Ma2A7JDV9ZVVZVDFPZQp6WUU5bX1PaVlvPlBTNDJwZEApPHBFK3EofGk8QVIz
YHBtRk1hUytxMk9KbjIlYil0THo2am1ePD0jNSRtM2p6NWgKekY2fEhlM1QoP15wcTFrJCpvMFZI
eTc7TGRHe0lLJkYoV35DbWxeU3w0ZVR5I1lGTXYmdmRpcSQ+aG9aZXwzTVI1CnpaPlhxOHR3RmtB
NzNDWW5RRjdOJjNzemV4LUEpYXtwTH03Q1ZpYk5BU0tPQkNIVkMyN1V7WHFfRzhBSjdrJXJ8aQp6
dWxmLUN3OUIyM0wkM2pAPFc0aUVPKTE0Pj9SayZFNkAxfTgpbnVSVzJUSjI9MWFDMUZOV2pDJXg7
enRudnhfaTcKejdLNGV5S3ZDbE9RdGN+R2BeKVRDRVUtVigwNVIjeCtoTy1+RzhpJmRyfF4jZCU/
WlFeNk81RUc1VFZFaVNLLVd3CnpVIXRKe0s/VF5VZ1Y5TUFoMV5BYWRybHpXQkNGJmMlVEZjPDUk
ZXFfb2AtSVJ5ZStwaV9FbDclVCRXPzczR019Qgp6SlpaaFN4emI/cVhzN1RNWFE0UXEwSkwyNmZi
cSlfQ0F1I3kzZytQUUV2fmZabl9aX0YwaU1rX1otaUpOcEUtMyYKekc0UWswbiZZcmZabkBtWUA8
cXRqIV96UGlVKT0/UHNIQnBxQzM+Q3xiNVhPV2k5NTxBUSNGMTNrcXkkTyY5anN9Cnp6OEZ9PTQj
N3N4Xilua1BrPjx+X3c3Q1VvNkFSJipOZzskJXY+aTM/cG8odW5FYEhyYjYoRilWTHxXcj8mRklf
VQp6MzNGR0g1JGFvPVM/M09AVlVPakBWTzNeZTN4d1k5JUAoaGxuQzA/PmxXTEshOSNAKzBVSUly
Y3lSTFVxRilrX1oKem1sbl9DJGVuVn5zUmchaW9EOVkhV1VRYHFhYj1kYkhtYztldkR1MU9Hckp5
flR2anRQZz9DX3o3djMjTVRzWU1iCnpERSNTal9GWTEoRHlmRChhTWVeVG4lJjxAUDgwSGgoKldg
bHM2fEZrdWplcXdAUD02fVoze3s3YD8rO297eVIzTgp6TngtY2pFb1M/REdJaDZzaGxFMX5vRloq
Skt1OVJ1KC08MkcjPCh0fWdeSW4pRTJMaUNtMV9BeS1HbE59SXB3Z14KelliPTdzSVJ8VHRfJWdH
c1gyOE5TaCZXPFdBZDQjUTE+OFVsZ05YPTluOG8yaU51QXUrPn5DenN2VXZwK1VrJUFkCnppe1dp
WFJydFB9WGd8bGhiT1N6XzdDdnQkeDhke3drdSlmdHZ7JHkhdCpJaVc7M2h0RV5sN0skSH1IKDd2
QD53MQp6e0Z+UGkmVHsqU1RSVE1XYytke1lYUVVJQz5XbV9lTmNVPmNEZy1vK3RLJnN3YTJBVHgo
e2s5I0ZTXlhKWGp6P0sKek5UViY3T1c9PFY4WGUkKGQtUzYyQHQ5MyVkQkNLTHlIMmMyPy1AWjlo
fHAhI25NMV5jcWJ5UjBoVjZYRTFkdGF8Cnp0dGA2Xzk0NTE7NFprY0ZXVV88IXU5eyk2dHtDRTA2
dD9XJithZUYqbE05Z3d1QG1OZlZhSV8wQyhRYVlqdTR2RAp6QkpeQE42P1NLJEJRQkRMbHo1dUYw
JTs5Tj5xKzB0T3pPX0F0UEEpQ0heaGtrI09mYGkoNFgjeEgoNEw5TyM1Pm0Kekt0bk1jPERaZzFB
XlI2WDZCWHlUQShPKmI5KjlWLT44fk5SZEVJZyZ2TFZCTSlFeHZlKkNne0ZtPSVISUdjT2FHCnoy
RiFDMiM3UnVXNkdZPH5Bckg1Q0dlKVdLTnR7YDc5bExHZjlXKHBqJS0oXlZ1ISEyQ2soPS1mY3xJ
WW4jTjt1Xgp6aFc1Vy0wXnpKbzNLKnF5WFlGVSMyY3ZaSHEhcGBBNipKTmZLVlhwSjVPSX05cCs7
UTZCVmFNVGo3bVVlTT0qLW0KelgrWTg1KyNTS3pWU1lvI2B6VGc7TkdtekBuaDIhRWd8fWl1JVNg
Yzh4Z157Nm5sVSRpV1ZlMlp7dUJQR0pJOytrCnp1PHl6PUtTJHx1TVBKY292WUhPUFAyKkI/IWkm
P1VMLUlvIz1FZzltRWcyOVhpPEBKYkdtbmdCT1FNME9nUnJlNwp6UGdeJmBXVjVva09PVD9EYmxm
d31IKTJsUCM0PUJFY3hvPWlHTGg0Rk9aczk3bn08SSFFOzZTIWclI3sxZG1CSyEKelA9cT89enRu
dXE3elV5PlhtcUpQeFZlbT1fdUx8OzZKUSl1KXtPNGkqN2srYU8pMUBDbGdJQCtUWDEtJEoxUmBj
CnpzNWIzRilkKzFZcHE8OTwob3JfVm5CQEhIaiMyc1JgMj4+JispKXwyM0M7VkgkWitwSHlEWm4r
UXkkWTV1Y1ohbQp6SG4pQ2RaUkI/Q0RjUSlJSVpiVXdFe1MofkJXdCZmMGMyRUZNZD1nY0pyT05m
cHgkK2N6TncrPTlpakY4KEhHQjcKenRtQmElRz5kVnY1JWRtXntJajw9YzEoPWREPVB5Rz9YbD51
WDlYPUBHJG9wYHI+T2BJeUtxej9mO2QzMGN3ZChyCnp6Kll7e1JWQXAwdWVQR3FJJHxnO0Y0I3Zn
IXwrPXVSRiRZK2hEZiQyPzFpSmtwWEtCeVBEZ1MldUlfTihjI1ZVcAp6b2s2OHduKykoUT1iNFRK
MWIhJTJMNiVwcTc/dDJ7NGE/YS07WXtGPSU8MGNLQ3dTN15IdHAwMnYzU0M4P2F8NHQKenliRzBB
cXhNTXhtOypzdm9eZSNxNn1eZWRtZ3lBRzNhOHpUbUdhdE1jcSlQWWYtZjtjSjt7NktZJGEofHJz
ODE0CnpNZytnRi13cXwwSk4mZU5NI2RxI19PaHRuY05TVjxBa3IrI0BqWWBJcSFhNXhtK0c7OzNa
cCF0IztIeThKc3x6Vwp6MXx4bCQ7ZW1xdUM5SXQzTThNYTU0JXR5JWFJRW85I1RvRnNQPGNgZWZM
WCNVZSlQRihzMnRhbmduP1M5RmlhTVUKenYwPnBiNDdtRCFAbnR4bWsrVnwmO1ZJZTxDJjZgdWBD
JTUjTVcwMlJfaCRmPylJMzghRlh4SmQjMHI3bmkocioxCnplbFJ3bntWU01fO0FDd2t6OEtVez19
US1FKC1Ce2s5Zz5FRnFQWmM1JXNPRTZsfEA4cDx8JV9adUtqTSZFTE5Pawp6RTQ1XnhLZUVJeTFv
Z2ZnNjRuPiRMfHsqPTZibjY4QDkoeXJjNGB3NT0rcTJhKyRgRkg3Xjs4KndpWE9LQjNWZyYKekRZ
Z0s2al5QJndsdmpPemZtVFFiTGspO0hfWWRzKGglPztjZW4qek1MfCg9d1lwIWRgZFlpaTxRVGJK
PUxiVDhYCnpxfHtlUU5CZHxOQVcja2U+dCl1TiRpIVdJUHU/cnhjPkE3RDN3eXhNYUJsYl9vVEl4
fXIzOEtDMW5QbChYS0QmJQp6MEk4ZF4hWSpCPWBzM2JZSGQ1JUt6MGUkWlRHWVlWVCVISjVeNlko
I3FKQVRJME07JVBRPXowV3Q/UFJUPzA1fCkKemJ7RkJZPiU4LWxUI2w7I3RUSXY5KVZkQkpNMHgj
bU8maG1WKkRnViZ4TSl7N0RRTWskUkhVPFI/PHxEUGJqPEN2CnpMLW5HZCZ3eiZ4TjtNR3FGPF9W
cE8way19Xnp9K2NyS3tEQio2UDlBYWRAdHwhNV97JEcpbyV6YmV5OV50fSFDJQp6Nil5aHRFX0g+
UWFLWE5jWSs2SmhMKXFXdUp3TWQ2Uz1lUFpDdXhwV2RQUV8pZ0syUHUrSSFSUWlsanZgS0gwdmgK
emYxdTRnK3RxPU9lM2M+Q2FycjR4Z2ZaaHRJUWRlSHdmfFpBT1QocG8+ZnRYcndDfHxHdEdiT1k0
SFNDcHh0cDc7CnpJWEZsamlWNEJob0RTaCE+Wj9GKzx1OTkyWnF2fDIoc1Beb1hac1lBK3d0eDNn
RCY+VnM0OV5tMSlqa1lOYFNAUwp6eF9SWGo1fFo8SChWdUhsXyFXOSp3dk1xekp5KUl6cjt3Nz9Q
LStpWGg0O2FkTW1oZ2BycCsjOTlvUmlPMUkrcWIKelNzSjwobTU2ITFtS3A2NS1BajV0SkxWUWEw
Zn0+Nyl9WFNzaGtrU04yNXFHRnYxNyMtfE5UUWg/aCVVUlohSiVvCnp3WCpHQ0omeWRNN1ojQDV2
SDx1Mio5VzIqY0UpPCg0WWUxUHJBJiUpeGttTUFoVHVMYVRXZkx7O1NqZStrfDJzOQp6Q2NwZng1
TitCKmcremEyNGkoWTQyZFMhOzsqdipTQ3dNaColUmUjO0Y+K2lId0diR3g3VEUycVlKKTheVjFR
eH4Kek44cS0/VkU+bz9uP0ctNE1uTl5KRSFyTnspfEtRN2o1OV5UTX1OMWVCWTd+Kk0mQHtPcEQx
KkglTFlYQFZYNlZBCnprNkZXfFJ+dGt6KTdaRHh6fExOaDB9PypOLTNOWGJTUWxkcVpUUDh9bzRY
fFg8dmB3JE9NSGEzMEhlRkhKNGEkKwp6RClVR3JCcGJ7UXltVnV7PGZnemMtUDU1RTR3TW4laGUt
STNNWkI7aSEjQFhte2R+SW9UI0ZzJDZoODZ4YzIpSl4KelFhYE1sOVk5b05OSD5SOVFnSjtwKzk7
SEA7USN2VFJCdyt5Qm5wWE1JSGJfTz1fSWM7Y0ZDSDxiYEM/RmxEYVh4CnpvS1o/eUdzR24qa1du
dDE+YTM5UDhrKWFrWmxzclFyOzNQSE1KcVFQZV4xKnx3OEUoI2ZQaWRVWWpZWVBDKikoMQp6bVQ7
TGtMaTkyR2Y/MSolbiEzZiVkYE0xZlN9M3xzJSZnQWx0Wkx5eCg1Mm5AOUB9TDUqTmR5eTNLUDZW
MVB3VXQKejQ/WVhBM0IzUVhJUmBeSz02WiFCM2YtPmhnVSU9WVVwSE9aSFVOaSR7YDtmU3V1KS14
b1Q7fndaNUUtVyRrZHhtCno3fiNgbEF9aUVkKmMxJndVbHZfdDBTXyUyYz9lM05pJjBySmZAbFdA
cDVBVGZYTzBJTlVFXnF9VkpORCFSR2lOdgp6bmwobF8lWGlHJSsrI2E1TEZ7KTtMd3U9R1VURkRi
KCZubG5uT1ZLWlhCJmpPZSFSI1RWQHU3UCpMM2hfZ0lGS1oKemZUdS0oNXYwZkZ3MkJXOGxPamEt
LU8pN1BFdV9kSThWeVdybzRqZ35VeVAhajw2O1orKmN0bWVSdjx6Sk53XmteCnpZMX1QSjFFdk92
WUdCfHZtbktYVyU1c28jeWBWcFZFcUpOLUozZFdVUGxkZEVjI0ckJlohVW8jYm50QE82KH5hVQp6
UDt5PFRaZjFFZ1dtbHhZd1E2PTxzVSM2UzUqLW43X0xCPCQxaG5RMnR1d3JFYkN0SSthK3t2SiFU
OHBTZUhacmYKekhePEl1LU0wZEZ7TGFZMkxIJEAxMmpVYms8TyleRmo/e2lnO3RSfD9eUGM3UENL
Wll2KzJYbjtmV3RYKStBdk5iCnpLSztxJHk/dXpUQW8rfmMqPWUmbz8tclJ5K30lIXE4b3VFZEp+
TEJQT3NeTko+eUJOKyoqK2t5bTQ3cjVyflhyeAp6bWYzRTVOJC0jJjtgdzkrZ1h5bVQtfTh4ITg4
aHY8QC1pWUtNK1l3OGBeZHQkI2otbm5QSHdfb3dWUVllRUtyQEYKejFDY0FBOC1VQlFOTTJmRXls
PkJpP0JVXlJOaVF0NDsmRUl4M2R3UXVoR3FvO204K05QK0l4NmlYQnBQZGd0RWh5Cnp1KkJXYTBY
SERpRjxhK1RUfnwlNGkoSkpWdnwhOCU5PXFNNkV8WjE4bm05VSYyVl82MCo3TUhKckZqdWZXfD1L
fgp6MWxuZkZ1a0FkU0o7clpIckYrNWpYTSZyQ3hUK3BJQEVDOWFKbCt7akFFI2BlZjg3angoZ19V
cmYjQiMwZTNoIVcKemVjVEY8PHJIVHwxfXdSfGtPZV9aNj8lI0xmeUtafGFgfms2cTc5TlR7TiZH
T1YhUEZBd3ZYanA8IVRXaG1QYmJiCnojJHBkOFp6WUA9LVUtPlY/emAkSygwOGIhQkcjI04hRm94
SlVtWDw1N0NnIWlse04jUzYjI3w/a3k1PmZqfiR3Kwp6eiNgMDE2P2EhRHhRIVdDeWxvWn1rIUIh
Kk0lKHkxKnE9SWluSCF9ISRoaktnVDEyUyZ4dXVTaEYjTmxKcjBGLWcKenRieHtQNUU4MEZQNnF7
YnVFPGQhbSFJalpGJXlNdEpYOUx0UkF4TkFeTjVFX0F1fllFOH5oP1ZWcEI5Y0Q3JW4rCno1RXFK
UXYrdmtAJGtiODU+LXArOVhCSVBmeEhRR1JFdlZ+fWt0QSR2bUNMbDdOQkdSXntIZz04TnNAKHxR
Q0VAaAp6UU9NU2JPUHAxYXU2MnFTYjsxc01ldXk0UEopVjkhQDgoQjBoWHlhJXhCTEZYWCFNK3lm
OT1HfHYzfnhRNFVuI0QKej1QWmA5O2F3QGo1Kz0oSU8lRDxlWSYxUFVFUiRMMDZAbFledGBkbGZ7
Vi0pT0pmdjVBNEF+eWQwVVlxXk5AKjsjCnojNWRkdnlRXll4SSQ+Rj40dzlUMXomeD1SS1Ffczte
NmszfTtiRTFLUFZlYzJgO0ppRUN7U0crS3d2SUNqd3lMbgp6RjdDdzlabFJTa3VmMz1MX2FHI00y
WWlGMylBSyMxT3E0UWR7X2RWblduPTB5cj9iTVM7Klg9ZyV1M1o3YTN+QXcKej5FU08hV2x4Yytm
WVMxcSUlU2BTUjR1MTNeZ2R2KHltOVEybmIyQTZfbio/RW0qbW0rOSVXKG55KypQMV58KSgyCnp1
Wnohe19uc3c/d2BpdyhVcExTUnYxRnMmPlNOR25PTCg1YGtlNHNiUCVfJTxVKEJRcWNUKHtxe3lg
IVFSX2w0Nwp6YDl3Yz8yYiVhTHdXKTwjb2NlRW1fTmw4c2BzfEQpXl9pYnRmZjBfWlhXZ3EkNT9B
bno9QHA+LT5oanp+IzNATFQKekAzeDNpN2RrZCQwKnplNmM5PiN9cj5rJSg7VTAhMXtzcyFeNWFa
aE9WYml1UC0zIXIjTiY2JCNNZ297Tzt1TS1oCno5emFTOWhHVUYmJX4oYSlLNk9LXklUOUFjTjMk
Tk5kWFd7bVApQjg2PSt1QHsqPThyYnA9K21BWThyN0Y5V0N+RQp6T3dFdX57R1V1WW8zJDQ/S1V+
b2k3MCQ+S0RzZH5RJi1gbV5hdyVgaVdXI29TTER5a3EzIzUmOShedSo4X0UrbWcKekEhQVF9e2o2
fVc5JUlJOEQreStod0B4KDlqfTNyfmZVLWR3TiluUWFzPTc/SyM4WEEwNDBwbittYXhuPHRVRUxJ
Cnp0eDhRfHB2RTMpbzRYaFB0ZFZpODR2QXl+bzFFUFJ5dGFPQ2tCe0A4VUtSI1AqWlk3fHRCVzgl
YlFYT1o5aUQkPgp6OWBVeExSelU+PndXZERQJDUtekVyTVBORnlvNmp+dTdedF8oTTN8SnRnczY5
Uil4SWIxM2BNYSY9SU4xKzNTb2wKekJoMWJoWFk2Mi05NHNPQjxRaSNORHE1VnFeV3paQyt0UiFn
d0M9TzY7PVFMcVV1UEpobGB3T1Z7Y2hwVHhgUDstCnpxPmUyT3xBaXNXU3RWZE5gUXtJcnheUkt1
QThZSV48IyFEKXUwQWZPeVdzI2kqIzUwPlEmVHhYNDEyT0ZRNUlUJQp6ZGY5YDgrPzwjQW1zMlA8
LVdPbn42TCghQWFrIU5OfDhxQ3FRY1heRXcqal9HcXN6RUIxfmspe3g+UHk+eUM+JjkKej14bCZA
RmdSbHdOKzYkQmV9X3h6X01MYD9USDRHOU1GYzV6IypLR3xoX2wmWlV7YD8ydjhuMn4qe0BuO2dp
JDckCnpgSElMI0lQIX53a341eipuP1g7bXlgR3xAYW9vX2ArOyEhfVFrIXBKZEkrSk5qcS1mbzc+
Uk0/bzB2SDVQSGMzWQp6eCVNRiVBWEw7aUpWYCNeTj9pUzYpYzNkKkklQm1QVld4JTxtLUp3P2JO
UzsjIThTcCtKPFlXcjV6Z0Y0VGg3Vy0KemN7NHJkM3V5dndAPyNpQj55YGgpOH44b1FnVWFRPjhi
bGhncVh+MGtKS0BlMSpDbFI9V3d5dlhsRCNsK2QxViNiCno0X0FSIXZ+dUFGQ1M/cjFzLSgjRnFg
WFEjYWJkT2M8YVZmJUUlYnVHRi19P3Zvb2J9d2htdmkqYFBiLWhsdylSLQp6aEpZQzdIbDAmMSly
UD1FaTF1ZDg8XmQwcndIK0NpQURHXk1ObFhQY3dYbXImJSoteWRUWCh0VUJGMnUpbiEqcioKemdv
VCpDYSghOWRHaGI7UzFHdXA1WHgjT0plIy1oYHEmU3IySE4hTzIpT2dQT1k2dU1hKi1Hd09kcmcl
fEd7cE9fCnp5cnhXSXpucyUkdjdsYmRDeGBfKTBafldiPWRJQX5zdzlPYFg3P1YzWHA+ei1hbUYz
dzF2Q0VVYjIrJGhZQ1ZYSAp6YU9YMG1hR3QkeEB8ent1aWx8QFN1fng7cDgwNlNxMm57TCtafXFD
IShOI0E8aUJXKHRrO0ZXZmdYMnx+MGs/XzUKencpfmFXe3NOV3IlfVQ0ckpvdlFfNXg+UkxQOSN3
PTVTbXViVDxGJGY+VUZ3cTRgOW13M2p+ZGY2ZnRgTnt6VnQ9Cnp5WHJEQGJLaX54NXcyYTRDY3tv
fDt1NUghZVRYOTRlZTxZSVJ4cytJbG0mc0w4JlMrNlJjV3B0UXlIbFdsNml2OAp6Mm5AJE9qTzMw
eTAhejE/K3xgMl9PUkxfeGw2R2VnTlotJVJXNitfaWdfWT1COTFBbGFlTGojKVdXdlZ8WXJncGUK
empJJGA/aSF0a3ZMY3w8dUVVPEM9RVh1Nm5kQkZUckdYN2NfOHxCZzJJaV5ZQU1+OXJjS0IyNSNK
eWV2JlMqc2FyCnpEbnsqakEzcGhHSzxoRXxYUWBoS0h0SCZ9YG1WfENTPjVUaz1AQllveHF2aFNJ
bEJzPFIodlQxKFJ2SkVASn07YQp6YkFuMUhaQWhWeU1sYEljKEdQeV5sfiNAaztTRWdGdmdMM3d1
b3tVckQ+JjMyQjVvZmFKYiV8O2wpPGlDZXtMU1kKenheY19FVD9QP3cjaDkxbEVtfjNfPGBrLVRY
dytUVCVpaiolU0tHS0tlT3dEMzw9WFMmKl4mPEVIXkh5TDNQXitgCnoyJGhzQmRpRTtVbkNmVnJ1
Tj1XVWQ9eFNCSkJSYzhjSFhKaVU8dUgqUTNHZD4jX0E7dzhNUHpVb3tkbyEzMX42Ugp6SiNMUy1S
UjJgLURvTnZsVHJaa2o7MXw5QHI7OzRQJWZwMnJTISpoa0FHT1c0eUQtQF8xaj99WGshYz9QcChm
TXQKek1OUmNYQCtnJm84ezdAVXkkLTUxOVcxIXJOajBkVkE2b0V8IVZMKVEqOWhIbEFqNmZfPEc1
ZzBPMjJYQiR3SHdRCnoremZBKDk+WTZnJWdodHo/fVlhOE9NPElRIVRNbktSP3ZTJElKR1NuXndJ
S00tV1QyeklFbU5UWkp2aiNwWk9pLQp6KVlCaFF1MnNITWl2KXAxX0tQNmRtfDVNaF9Rcmo7MnVe
cWIrY250XmwyaiE/cyhhTyk9Tnw0WEtsV3F3bX1LKnoKemBtVFM3Jk0kTUJFYjBPXmZOU2s8dkZu
bSNSNlcqZCVlUHxEV3g1UzZCeVBobWx7ZiZBNkM8OCVMOFdxfEdkXjF6CnopOTNkfjtHQiY7eGQp
bWhxMEhVY3VmRyF+UW1zM0NiaihaJXBmb2NeU01wc2A5P3t4MkZxP1dBSW9kJSlKa29DMQp6RDYw
SW8xbigqRjVlfEA+dTNPZ0VBTX5sK2xDUSMlVFd1Tl9veyVhYGpQcG43PW9OMkFoJHBuIXozUWMh
QzdBe0kKelZZZG53Sj09JDRKPmJkbVl1O3ZLPUlYIVhgQyEkVmttYnhRRnVoUjY7JTBsTjUlUTB0
XjNoajJ6PjxAYjxpSW0qCnp1UkcjJTVRTkckJlVVSz1DS2p1PGN7KmwzI01oenI5T3M+RlprfWBa
czNqJG09WUIqM2pkVUd1eVpkOW51RjVqUwp6JjFCcXBRRTVYeU19a2xxV1pKPDlePVcwO2VybChD
YnclV2N1OGdVYGwzMEB7X29fez96bV5HWWlkJXVIdFpEQWAKemR8c0pAbEpjeWU7U3UxIWMtJXRG
X0s8JDY/YmVKPHB6dkFzcTcxZnJMTyl5MmR1b2xKQHdwNjNvNUdISGQkcklrCnp6PExXcVUwR0Ff
TCpoM2o+JUExMTl1ZnMzKnJAQn5MdHRpOVVuayFmbj51OUpWPlc7NkRgTjV1ZiEyWncoSGM9NAp6
SCY2c0tteUtOeEotNC00WUZudWEyYTF3NVUkazhqVzx4R0lBYzUmYGJrZDs5PjY1YnYtWmRkWilI
bG13YVFlVVUKejFKMlB5YEJYPXNDPUg4I2dBcCVta2I2cEhVVGBNQ2RVSz9kcDtiVT8qTlNiKXcj
bFgjZWtrUU1UKnMmcU5CJnljCnpIJTY+dipodyR4Pz8+RVJ2Skt4b1daJighRzVeZjJXPldYNkA3
WVpPa2MpZkEpfSVPbSZRIU1nQVMjJXhRa1MrYQp6JWs1Pz5kR2FxRVB4KXBnP35UOUImMjR9Vk1T
P2BOJFZqPyVyX3JGQyYlKD0wQ1FXPCQjVz1sbm5UcnM7WFlIej0Kem45ZTJ+cHBWQFRwTyZNfUpw
WX5eIUNifCtiWjF9TENLI045JXdfdTleTyhVKDNEZEVKMks1P285IV53S0FtSUB6Cno0TzUxNWF2
PGg4cFNzOXU2d1NQWTVrKyhIMzlLXk02fXhYJDBOXnVvPGNpVChhb3VhKHlhSGl7cSZ1VnRSeytJ
dQp6SSFUe21KfF4yMyVTUm94eHs9YSNRYmRKbGIwYHhrOWJYbXx2cCt2ZjRvJDZldGIhTlAqYm1Z
RTBXVWgtR2g7PmgKemVKe3YoKXUqejNtO3tIM0N7eXk1OSkqe28wR0JAJGF7PUx6UFVwUGZfVTtq
bWRJWWhxSEJMY05fbkApQTs7dUF9Cno2O2FzWVRZZHRaKyN2fHVZYUVXOFMwLTM4KCUreU9Mdmco
QS1uZ3JnRWVaODdGdUFPbXdudlFlSVhGclNvelE2Mgp6ailpY3JoKWgrfkEob2dVXk95aGxAMVBh
fUw0KFVtWXBIbEEpSGVVUCp0KHJsM287ZFk0U3pSPlBpentPOCEycD0KekB0ZkJJYj1ueVRRaCVL
fCFyV0Y+Uj42MFkxbjNkYSZnK0JYTnFPWGpKcCZ1YmNVfFR0Xz5LfCQ8LWt9V2pjY2ImCnopMyN6
Jj1oZy16R1BycWE0VFhFZkowfUl7bDlMby1rbHktNmRRNkBrP2ZUZUBxbGFfIUotR2g1amY0SSNr
fGdgagp6byNHYyQmSkVmez4xeXtgdHUwTzYreXxKYVB3R2I7RVp6WG1ALXdodylkM1NPUX1qbz53
RU51OWsrP1ZIeUdmKkkKek5QU3MpWk5xK2g2TGtIWXg0JHMyb3M8TWBUa2NnP2N8MzJfJnBLSWkl
PHBpdTw3SiVORHVkWX1iQC0hKE1OPioqCnomZk8xIVNWP3lsQWBpZV5sOEhrUTg4d2ZkU09WVXdT
NzJgbHNMcnc8STBIPEpuOCR7K2AmaXQ8WC1JLXpRc0stfgp6emxaP3IzY0xSNkhsSEFpbUFLJGwk
U2JYPExjU2lPZT99LX0mVGlkezJgcWA5citGaDxST2UxUGdKbUlSISU2QEcKelI1NjU2PEZgeEpC
UTlvemMzQXQqbyYpZSVmMWdDe2RgVUgybVRyUClVe2JGV2p7bEd3d1ArNG0pJXk8WjZTTChkCnpX
VHFnKCQ8fWNPR3FPbzteOCh9NjxfcTNSKDE8cTZHNURmZ2pYe2x3bkJDOzYqJFpael92XiRgUnA4
Izc+TiVxYAp6Knp3cCg3Q1gzc3U8S0ZMMDl+dVp8TSg0PXNhNT1xdVZYOEU0bEtELVJ9cmdxMTMl
c1dkdXpCR3spdnJROWgycz8KeklybE5DPnAkJXxjOGlEOzgoTnhXMj5+emtYPnlpU1ZDPmhwYHxV
Ml9uMEEyME5sb05QdDAjWGRaSlR2Kzw3akZPCnpeYFBtJUBVZVR1I1pEfD5xVC1FLU4tR1gzIUBG
JkJ6fmtjUSV+MCM0T2RVTj9vcl5oRl8kaV9MYF8hUzxKMVkpOAp6JGhTMUdGbGVBcVBSSVYwK2Io
e0x6QChrQ0RRdnVHKko7OTg7NE1XYkM8JCZVQSsqdlRDMGYwZlFoeD52czQlN1UKenZ4RHJYcmQy
ck5rKDlFIz5eKU1GbUhIWjI5bEZjOCpvb31qOF5mbW1JKk5oQWdUa2w5WHVCUiM5JDIrQ1l+ZUIh
Cno2SnVHPXFgKTw1aWJ+X2dlbGp0I1JMRWBHZmdeOGZKPmpNKjFebXdCdnB7a2teMDhPPXJ5eFVZ
ZTFQWnpCPEZoXgp6IU9iTDlVMihCfjN3Wng3WkwoJU0/PEcpVGF1WGVRVjg0amFfRGQ+WmVafEpN
N2pMPUYyKlVsYiZ6Sm0wTDU+c2EKemNOSVRsPzslcD9mUnNlTS1YRWVXMFBeSEEtSyhgcjJkem1E
ZHxuOUdWWmtZKnJHSmpsdyNURzBXbkFRQUwhYmxICno/THFnTWVzaHhoKl8tNUNibDIoaHRAfEY+
PGl1czJYd0czVWQ/ZFdWO31OR2NuPUc3JDttM2R3d21weGVWcWBIZQp6WXtFZz40Qy1oXjtoSXZm
SClBeHgmNGIoMl9SPi1YXn0/aSpTYGk9Zj9APjNhe2RaMUFmaU1PRmtMQHhQJFVtdyUKejxZd0FI
RUVATD4xc0A3dT1vd1U3PmFsdSNkMVpMVk5hTTtJe2FfQWwtdz5xc2d7ejdxZlJ7V0VWUm4rMyhj
WEpoCnptLWZ4ZUBWJnxXJV9+e05wI140PS19K1FgQWZHaVcjQyNzUW1DJUBwZjFZcjdNeG5eXmY8
alpfPUtBNT9HQ3FGdwp6VHlAVntwPVBWLXlfKkp+UT0pXzRqfipQWDhjPjFUenl4TWMjJkFodjxv
JEdHNnI1ZEdofWM4cyojUGdUNWRCJiUKekhlc09zRi10eUZqcm97YiMtZzF4U2Bqc1FHM19qT080
RkJQSzg9PT9GN013UVZRcmx1KXJxNmIpKm44RitoWU5ACnpmNGluQGtlWlg0V0hSczBffGBlaEgx
fiUlNDw5bSo4OWcycGMjeSRaUWtnQ202ZjhmcyMpOH10O1RxO35Wc0JaUgp6X3wyUUAhIVVkeUpy
VUZVcWtIVVVoWFZPTlV2Uz88eHZeSm9hT2h+U0E2KnZmVj5uQiZ6ZGVkazM4V1k1cjVIUmAKekx4
fGBsalMhTyhwa2VxMlMqaD1kUjNZfSooJSN4MFZQdFBAX144SmUrNmUzUSVucD1pOW0jem00VlM3
MDIxP2tRCnpUXmU5OXU5TmFrTUIqcz1mYkR+RU1mKjMqam1se0JJK3FpNyhXMTskXmc7RjRKX2I8
fXN9O2l4IXpXQUc5IWQ3Iwp6ZSQwZXF1ZWAhWVpNaVZhcFM8Zi0oV3IoZWI2JUomMiRwUU9XZWol
Szw3Qj5MZilMbGo2QDBjNitwK25rN28kP2MKejVlLV4kJWlRJFdhP2ZrfTFUIV9HVTRjUnZrdXh8
XkBBMCRnaVpMSl5TR3RfR0wja1VhNGJBY1VhMikkKChYeUV7CnpZdU1Jc1puUnhLfEtXXnxnfSY2
fGVGPC1kWHY0Rzt7akxOZllUVzQxeiVrZW9BMXIjNXBsN0gqWjA7bFY/YTxKawp6VyRxK04zITtM
Q2NHViEoXi1IP0NiP09sKVBgZmlgKmM8SD1vQSRgTCFjJWpFK2Z8e3ZzKXg8WEJTemxhJEtxVlIK
ejJpKWFIX2J0N0szemJTcDNOPk0lZnhXakdWTD5jViMlTXYkb3N3T3JWekU4YDM8K1d8IU9aK3ln
fGNeckdFbEFOCnp0UHl6SVVhSDhKdDspMSo2KUNWdz8hR0YhNUt2WnpFIzc3SHF3eko/I0YjWGxP
XmpgPSlPbldWcHIoQ31zUXAkZwp6VSs+RUNvSjFfY2JNYCZjI2gqeCFDcGJDVXRuSSMmclMtbkFK
ZyNwI1pGbChhK1Fpcnphe2g0RmF6JChLX2JBfjIKenhDd0ZPcyZgSlIkT3N0K29FbHZ5cGNzIz81
blpTbyZiNXVMRndOOTBuOyUoYSQpREFPJkZuRG5vRmJCQnlnNXBCCnprMEoycGlOMTVrPXB7fk5C
N1BrKlE5JGsqN2s2QzdkZH5HKXZqRzk9QmskbHthXi0xM1pEOzVGRDBpLVhSKD16cAp6WnRCPStB
fGgpezxORi0zMitlQG4xNFhxdCNSblRgb3lIRkI+PUc1bWhzcTUpa1FLIT8jMU9STERwPyE8VD13
QCQKeiVBPkRRUzZzSWVRNlRyJmskNWtTNHlEN2ROcDQtKVZheCl3TXRYXnc2cy1LamU5NTc8eHt+
WT5RVUxgbyU0eDZvCnpgU1RsTDNRRWlnOW8+YjxgQnZSRntEbSpibFRAZmVRUiYlQUgxaFRaSElY
e0w7SURVPWVZME1TJEpDMSooQzwoJQp6ODYkcURXKFkzJDtSUWY3PU9+WjwmR2FBIVUlb285LU5C
YHVLek83QCZwbnVCWkIhTXYhbGV2JE8rM1EpWXtzIXgKemZkXntiandfdEM2JC1tQCl7UjAtZV81
K2BYVHFUczB6MWx3Oysmak1QRmF0KE9Se3BvSnckPz1FRmorSGx0aDllCnpuekB2alRlPEApMWU2
bTdMUCtQWmRDK2loPUEtSkpBKWxtMWxlZDBhJiY7bj5DWkpGPXNkaEtGSFQxcmskXykzPAp6Wmk/
cHZCOTFHP2VyVEpuQkMhSChqO2NJWENSeERJdEVGfk5xKnNAY2tZekB6YFkpUGlsPVEtRSlBNDU1
YDZhSFUKej8oS0tKUExrc21HUk9DeiF1WCY9KG1TODxQbXIza0QwdD8oJE1XQVkmfFdeVyVYJEsw
LUE8X31UYTtYYSpFP349CnpiTSFvVT0tWkFfPTFxZGtlbWlXJEstZ0t9WWpwbz9DKnVqRkREbk49
PU98fjhuakR0Uz9kQjsqTWRLdTg+S0N+dwp6ciV9fTIydn1Nb2tRSmhDUEZ7SCh7Mk1zbk8lPWlC
Q1B9TTsqRkY4MD9wNyU4MWBjVHNDeVB2ZC1DdGh6eDYrUCoKejZDUmUhdyhyZGJCUTxpQ0JkWn1C
WHF3VVRsQXRBVXtoKiVGdXtgcH4/SWBpZ1NaMXMtTENiTno5Q0l8cXF8emYjCnpVKF5gMXtGek85
QG9YfkF6JHcjMSZ7QFBaZmlKXlppKlA5NSoySjxOVHh2OWgyOX00WD9LOHZjbClMZEdOdTFKLQp6
XjJiVUdlb3lMUVRnQFVpNG9lJnpjUiEhWikjI3FOTzAqdW9IKkZoPlkxN1h9cT9VJTV6citrNGR1
OVVQJmhmMX4Kej9rT1ZgYUZPeFcqdE5PRyQzU2tYdzNldlhDK1U+TyNUeHl5YHp1OS1aUWZ0MUVQ
d153WFFmcGVyMWhqa2JnRUVvCnpxNDU5cTN6PiRwNzNhdERobDw7SSQ3P2E1Tjh9USMhKyp7VTgr
WUlqNCg8MDNqN3ZtbylYI3JMVXZKNEdoNmhUZQp6bmh7JEFPI3FPWl5GfUJqJnJkMUQ8JkhsZ0Zq
fUF+QjxweiZLPShsIyNrSEtSIT5WaUdnS0FiTndZNzZke19YJXYKelklaTxAXz9MSSpLMVJBQVNi
OyljPXN9a2w1UXlFMiFhXnN8PEY1fldPNjQyQ2hTXlQkQVlkQ1hmMWMrRER6THh5CnozZVduTFd5
Rm05MVp1eTleKzdPalVhd3RDXy1TMip6Xjx0PSlRejRiTn00KTlnNyY3MXVhaiVGWDM7SlFwQWh7
dgp6bUdwNWZkemYySWEpUT85VnQ7I3M0QipvMmh0Zk54ci1ReiYqeXptUlRQZjFtT3xHJURYUjJr
Xjc5Xl9UaVhgfWsKem1sIy1AKUl5OHxJeEsmRVc9NjtDJk87OWNYTzJQd2ojb2ohKXhDaGtNRzBS
KzcpaTtPdkE+TXVGfG97dVgxQHlvCnpDMHlnJmNUZ34kI3NQUXl0aEVrV1A8aSEkRXdDYjclRGdK
bGF7aiZFQjwqfVFjWSVyNUluVUp2MX5MMUooTkBDSgp6MUIrQ1o7WHtzTj8wUntJYGJvdUlUV3JJ
OC1QUm5NNlU4dTVHY0Blb15QMUlPNCYxYzdVbSFWeE8oe0lVMn5+UF8KejV2WFErVn1PfHVZK2B0
YXRFb1QoZ05WZ2dUNElqfTJQaFV3NEZwZ0QhVDx0RV9sOHNlZlAhMXYlO3J2PUVCSVJ5Cnp0Xl5i
Xk8oNUl7MEFNbFp5UjI/eUxZdjZVZzB6MF8kUFZGX3o7eDYoODMxMlB1SyQlSCN5d3FjWjk4RGBZ
YzRPegp6MENkZWo1LSU9JFhjKU5+bEg9T2olMDNIX3Bucj9Ia19FSDA3OHMjWWdgcytEbEFvQVdf
Pmd1c3s7blNKTVRwUmAKejNPY2xXMjxpYUhqaShEY1QxflF4YDRXNShDJmgzfUBDfTQwUjI5aXll
JTkyQFU7Ry1xWSV+dTBVWjxoUG1zaV5pCno2fTtSajRgY0dyYHp1e19RY0B5dT9oRURtNUVBXj1y
VnB3N2xQT3d0Z2d3OzAydWJqaDVYWFkwJWRHUT8qQ2wrOQp6VEZ2KG9qWTtTfipec082N3x9eilK
c3tHNiZuQ2lwSmA7QlhhLW96TGRkb3dhUXd2JWZEZn4yWVFpZX0pJjRDWF8Kenp0Xj1nKXVXJFdq
VDJtSSMrWDA9NlJ8Tko/PWh+c3UyP1RLV1krIWpiQ1JVYkkoVVRjWUVCZD5ybXppaiMmelIoCnol
OHswPGc0elA5a2JAJHllRH4oZHRUb3lYaT1iKCE4PzRqZUtpe0ZZO1d0bjkjNUFKfWo3SjA+RnJg
PyVHIS0mWAp6XkApQm5VcVZvYl82I1dCUyhvYHhWTF9tcjdmPD1AUTx+Z3pTTXdgTzlCSjJ2YFV9
Jig3TGooVnp0e1hvJk94amgKelJNNj16OHY4P3RldGRrKTZtYTRuJWBgc0lGRS1uPGlJSUU/VmBq
S24tRGRvZUhzUzBsOT5+Xm45eUV+S3BjQSUmCnpiX3kwQyU9YDhBQnd5NXVAb1A3M0p8O0hOZDF3
bGFzLUc/PSFMZENYUXFVMGQjODt2LUIwMUR6ZXFKaHN7a3N3aAp6Pj8oODdnVTt4Zj43M0s8ZWx9
NTc8RlFEe3Y8R2UpVE1aSntUdyolcXtYSFBVTXFxIUA9Y2Vuezdicn17STQke2kKejZ8U2dTZEBW
fXpaRFU5YzM7Tzx2O01jVVE7MlglM0tkfWlxdTt2eTUyaWIyK2tWfn0mX3ZnYnlzK1ZrPXt3Q1Ro
Cnp7QU9gO1NPVDB+NWI0KXJnPF5zM0shRWM5XmtxKTlZQ2l6UDBSWFc0eWNxVHoybDNfYm1JLUw4
Kkk5djZ7IURvQgp6azhZPG5CJHJ0KHs4QnYtTUZ8dj1PZ0BmWjBqbGgxIyglUS1JfVFhNFAkeTM/
KSp5dXR2JDdFfXU3Yk49OzJUfHcKejQ+MD1NbyE4LWNEWHJ0fEVqREJuQEYjI19NRjM5ZylFPCla
YSE2UjExMTZkfkMzPl81RC1xM3lTOFhqSiQha1ktCnpFMFFaYD9MJWdGITlqKExQdnY5V3IyPUJQ
RitVQVUtWFQtcl5WM3dQX3heNnU8VjV9d2JRUHw1S2NIQTNBYHN5Rgp6Rlo+K1VmZDdHUzEkNylr
P1laMlBQfnN2cXVBOVE+PT9tWjJ0KFQ/SShvNGJ+XiEtYkk3RURqYXtGTD91JUckUTkKek4rRW15
OHwwb3JjJn5nZHpmM3NEO09yT3prRHB+K1hAJiY8MV4yMTdRZnllPiFyTl9CbihPem10bilPeTE+
aihTCnpZVCRKUHY1TzB3U0NJYVZmfWxsbTUzSFdxcGp4MDxwZXFuaXtfaHVGQzw2ZSV7RjZ4dzwq
Q3YxcysjVz94dU9xegp6b1NaI2x1T3ljb1ZNRkp5IXteQHxSZD5rPyF2I19KPFV5THwyKmtmUi1D
QXdkY35kZUxfV00tTXkqV08pIXZQZ0UKekM1OXlVSS1DXyphOVFwPzx1P0t7b348XnN2MUVGOz4o
JWA5KWVHY1BAYF82NilEfDYoMyNkU1o0Zl5wYGV+THRaCnpIdj1pPkZQd3E9NHNRMGpfMjVKTFZg
eTw/NH5qTStIdjNDRTsmO29GI0o1S3ZAMEQtUDx7aDRAYDU/MjhafHA4YQp6OEs3OFRJfWtBY1p6
QWd6MHwwUkQ/ak5sXkJJMWZ9WSVvUnR3OFJtM01HUTxVQD03NXJIams/UHdfVDVxcDhgMSQKei10
S1hpJURXTTV3SzA3ODF+XilyUX1MflQwX3tAKmJVRWhra0pvTkJnJUBTKGBqfGwyd3sreXNMP3Rp
RFUqNjdaCnpIcWloc2dPSVVAVCk5Q2t5Kk9FSG1uIW1heWpeRHlUNUF+OGtoK21aVDJ5Wm44VHxB
dXlZaEdEU2dJWk1eNUhHXgp6JDBSdkR2d0xhNDghMS1DSCsoWkxMQXNZRz9TV0ZiJWNmWGk2N184
NEV9QWVkdXNYVSR4cGFOfD5edHRAdk1+MG0KejhXQV5OUmxyflc2b3ZZRGgybnFNejVpUkFLKjR+
MllyfXMpWVE5fVg7QWBzYD9HaSoqdERvVCFyTWZ4amVPS3UyCno7QjczSVBqOFFUISZKbUVBNDxs
c0lRNSN7OXFKST40O3Jlfl5TMzdISDd7bGNWJkU9TUZjc3pWbTdvQW5FTzs2Uwp6TURqb0c/LURy
eTAwd18hVXczWWFYPG5zJmp2WlBFJFZISUUhP15WY0UtSF4jSj9mXyEqMFQoVkxWUTBlVnRSbUUK
ejF5RkhIK34oI1IhfD49c1Q8VCNkPVVmJU9VfEJ4I3lKJSFPNWpiT3ZnPiFgb0JFVTZEO0FXTytu
eX09RkBrQHpHCnp6Sj1ZPiUtSjhpUnZ6ZDVWUFo2ISh2M3VFI0lvV0hAdFFiVnUpamJ+PUQ1bUxl
UU5tLXNAZ2Z9XkFrKH5oN0N2bgp6cyo8cWVaJmBzfUFCMURBaExSUX5HV205LXZ4YDBGUWtVV3Yt
Zlc2MFRaOX0he0VaI3M/bytLI0NeSFRmfDFIVDcKejlveEd4bjFJNkBhOF8rZTcoYmU3WFNnTj56
ejt0UEdXck0/SCVxV0pSJU1sU0lvR15yO3h6O1M5TiRFWFB+REMoCnpsd35GczleZEFHYj94YEch
QEd0eElLMG1fQXVtQEwoRDFaOSokbCZ2e3x1emtFOGNvYHZLNzV6aUROQHVSR0BzMgp6JCVxRTJX
LTZYUW5AQ1dBOHN9JihNfXpHOGM5RWRFYiRjRH5yMlhvayR6Smt4LUwkNkxwTCtkKnNPQ1Q2cXox
WVcKekZqeVpOWUF8aWFXMHdpYFFwcDVDODxYZi0jd1oxeTxuRzxwc0EoTWYzZk1GaUF3QGhEWSU4
LUpTYFFCWjF2UXp3CnpOendrcD9oZERMMj12Vn43aVpuIU8mampUWmNrUkliU3VvQWp0IX1lWE5j
bWgqU2JlRC14KUFLe01hNGUrYWg7Swp6NF42aXUwNlZ+T2FzTiM4OTM4eX5De347WjFkeyE/KUJf
dj16fV4wMV9mUFM2QEFBPWFVLUQmLXtATUhnb1FadCoKelhUU2M7cihYRSgzLTlLcWUpZyV9YFJU
MUkrdypSKy1gWHp3dlI7M1pTNn0/PDFBRiE1e15PIT0tMUV8Pl9+Wn0mCnokSHstPHJNR1U9NzJp
SUE4P1ctQmNXS1luLSFpMnFTV355VV9TdnFveDdvZGE0PzVVR2d5VDs0KEZAMWswPGx4fgp6YyZ9
VlhDOXJaO0J8dz9aPFlwKEBNRE5WPnktJksmP3U3REZmOSRQS3tPJHw/KS1WM2dDbSE+ZGtObV9O
ME5gSWIKejU/WTFUSElrZW5RSH1nRitTdlg7bVJ3VillNnppNnFROyF0ckFmVD8pOWdtZm9Kajsr
PHxWUVV5ZWBoX3BAQ1l0Cnoze0k8ZWRjN1AqYzdnfEVaciQlJjlrMUh8OUJDVClucHBnejgldSpC
a0pNVV9LdWJ+az9tMG4zajZ6P3RYSmlBQQp6biolcXghNipXaVphI2U4QDhEU05RYnl3eVU/dmJX
eC1eTWB1enluKlkjTXJqc0J3dGZUPUJoX0dgT1ZeLSFNX3YKent+WlNqeXhzSjJlMlNDbygqMVBi
VkRhNVRZRChFNGxkT25sITQ9dGBXWTdlWjImIVRgUVpvLTx0anp7eGBJY3pvCnpGWSQkKiRYN35q
O356dWZAUzdnX25FX2FsXkshMCtEflByQ2ZVJElRVStaVyM1PVFrR1hFTXU0PSQwZi0xenwmcAp6
UkNsSG11IUQ4YDhsbzN5KV9nUjZET1cjQjJMfDU1MjcrWkdWamBLMUhBQnpeNmlhXjdNaUNxODRX
TyRVM3krPj4KelRQOTx2LS0qWEshRDUweTRhMW4leTApfTApSElUYVoxS0NgXz5+eHFPbV8ze0Mr
dE1qMz0lWCVIUClKSEUtekxrCno9RjRaR1FlZDFLWmgqdmlnTnpLNHdqRz8/SGp7VmpXVyUtSGNI
PUlIdE4ycCQ/XjFPN080SjMrP0hmTXg7N2t2Jgp6IzVDV0RXI0xWWG9yZGFUKiRQbjJpRGFieF5P
VmR3R2ctbERsM19TaHRCNzhWYFRLT1g0R3dUeVVpIS18dj5ldCsKemE+P0Q2empwUj8pdmd1TWxi
eXImQlB2VztjZzM+ZjtTMDRzJGFYUn5tfjtEd1R5eUs3MmQmLSQtMisjbmtrZnVnCnpeYDkjQ1gp
c3wpaztQMWtsPXJwTyh6cU8oezB1Z3tgZj0wYntQJXZEey0+MjtPNU1wSTctSTY9fE5NWEEkfVEm
Swp6Rmh+T0l2fGZXcCtzejNoJEJxNF5HU3Y+Y2k5Vz1oZD5QdWgpR0JtaEZzcFIjb3AoQzlIZ1Rf
b2I5SVpwJkAwTyQKekluKXI4a3RZXityOTZoend9K2o/O2FuamdtXkl9SDdVcnUwc2djVW9BKEBa
KE0pVlhZbmt1TDgkZWNmSlZHM2M8Cno1MGo7Xk4zOyh6Qzk7SWBzIUU/UFpmPXRPITZycjtIeXRO
VDMrVks4dyUlP0kmajRmLWlyI2NLO1RtS0dJSkc/fAp6aGgkNmB7Tmx9OWMmcEw2bnAwMFhyRldk
WT87Uj9MdHkyRE1YU1QyJms9RnBKdkVIIXAqQ25SK3craUwwO2t8dCoKek1MblQqSGBWSEVASGRI
TEdWcXZyIXo4RTQ0NTVGeDBVNSlWa2JMbXItanB1eClwcShqJXdCWkdGOUhMRkkjNWJKCnpldEc1
TEkye3UyQVRhZnd4YnNnVjFJWiN6Tn1KeFdoSX45TVBjTX1DUTZvT2RZRmtPJj5eIThgPURqb15R
MjtIOwp6ZGIzP35GWSp7bnB1fj5EJlBkVFZ2YG1CWWxtdnhtZTkxYlYlfisjfGxEIzJRdFZuYTMh
bXo7enJ3ZntESXtSRlQKejZadzFZUH1AazJfd2xnRTRJWXt+KS1VPkcqbGprUXExc1M+UmFfVmR0
XjQxYU0yKmhfWilhNFNGUnpwRjNqcng3CnokSl47dGxHcXJGVl42ezkqaEszYkE4WW9+OEV0STdk
PnAkMFlfJVh1dnw9MVdgOF8mSiFKenRNd3YxRUczdmk7fgp6JCl0RjZvbH5jXlJpS3dCTEt9eDV2
KHhyOVBJT3N5KnJ+Tmoka1B3PmpybUR+ITBkXiZCOGgoZSopfDB3TGsxUlYKelZMRHExeT98MX1w
PyhSPks7OU1OYWpgdzYhQz8qbCkxVjNaVjZeOGs9X1dkVVpTN043bWJnRCtwSWEyJlhyNzNDCnoq
NGZxb3doPUhncHpKKTBHKStKPVJuYSlTK3k1SjYpUj9SfCRYMX5ASS07U05ONi0zNGIrMFhWKWVu
UyN4P0tCRQp6ZFVBSCNEWF5VJHlGO2ZuPGNye2gmeUpGfWBUX3hyKypDdEQ/KXFkKEp1N2QkM2RC
PGpUdnhyKUspSHUmbWFKKmEKenxOTjM/PUV6NnBsOTFwPERVU3IzM0x3YkItO2JWczwoMH5IdDRn
UTs9UClHO1FtWVpDYD9SbjE4PlE5PSM9QHFWCnptfEctT1FkKFc7VCNQdlF7YjdSTFNDVFh1OWc5
UDx0SEo3MWBySX1tSV5rbCM0VE1aQkozLThFOHB+dnIrbSNsPwp6YD0wOW11eWhXSmYkJmZrdTVI
YDRaUUhncndRYndCWkVNPDJaUUhpWj9lNCNDa2xmckdvUmZTWmJedkdkb1BIeVAKekVLT2RVQ1ZB
NlI3TShpZiYyRUdlRS01WkhzOUlHVV5YeHlFPTN3RlYkKi07WVd7KiEre1NLWXxfIW1yNkVzRl5a
Cno8TEJSK25vX1E3UlRQT21lLVgtLWJpKGdWYDhQd0l3TjhZVVZOIUkyMmRJZHhxRGchYWE8SCVD
MnkxJDt1OThmUwp6R1ByQElxNzdQMkxiezFLUWZeRF85OGZscFBBa3sqMW5+MXhzXktBUzwwUGZL
ZzNIfWNvK1ApdU5peEdgamshJX0KekB0fiE4ZHRecUxOZERZcS0yPnJjP3pCNitmZjB2I3QpbSs3
K0BwVnRibGYyNm9NdiZQXlArTXk9STc/alNgSlc5CnorR14pOFpILVNnKV8kQnMpUzxVVDt2dTZ5
ZVJMIzlWYDlRQUhjSURoQDhkZGtLVElEaEUmfGJKUTxLJj1tenNMfQp6RDEjczBrO0EkM3ZqYVJw
VjdAPHtVa2h3RFM4MGhXP15eak1wMzZIfHMhRUBIK1o7PVZzTU5XcihhOSpeMiVNJiQKeiZATFhl
Q0hUblEzQU5vWCRaKWVFXjxAQ18tcVpxdTd6Kl5aek9HRDBRRj9YUnVYTyoyZiFWfkVmKVFnZ0F2
dkt0CnorbU1SR3c5cUQ1c2l0K2ckaGcmdFU4O15YTDBkUExKcDQwbnFzWU5yZFpuRzB0QFc0eSNt
a2N7M3ZXNDU/JV8xXwp6bF5HTiExYyh1RiEwJXg9T1dxYyM+XiotPTJ1bjxsTGpud3xWZX1EbkN9
Y2ZueGEwejNKR2kmPHA7MyFFRDlTYlAKejBhb2spVVdaTUJLcllNNXIpPmpJdUxmQWJEOV5VeHVP
KHB0KEloaUIkSDNuKGZRRjxnXzlxYTkwbWxTKDNLWHokCnpiNWBIJjd1dko+PE9wJlRWe0goNTNG
VEI2JGRnO0RXVyQzcDZTaEN5VFojV1ZlaEEqcTsjKTt3aiNHREoofE9WdQp6U2I0JF9ZI3BFSzFP
aFBZUWNeMWU3TU8mdiMrVWFYWWwoV3heNkhBdThYKEFVaGtzUU5Za3Y5TFU9VSVSMTYzP0IKeiV6
WGhGcnhmZVEmWlpDOD9GKmZRaV8jUiEwK29qfDx2WGp2KjUjI3cqWSplVnQmKUJUSHBeV3AhZCFG
P0otfkBiCnpFb2FkfT1HTWtuJkV2Jjsrbjc1V0s+WF8wKUpsTj5EVlJFQ3pwSTZ3TjZodmNnb3FZ
KHs7dXQoR1daJkU7Yzs2fAp6NGpuS0gzb2UtQHI2Uz8jcUgramAjfHZ2Zj1AX01JPzVoRypUSmJB
SiF1c21sb3khVDdDcWM2c01VdEJgOXNyakYKemdfQHR5VTs9cUQmM2MhI2tidGspQENCREpxUHNK
JF82eSZFTCVRPz1ANFRWfXBVWn00PHt6fEY5I148ZlFXYG4qCnp6QXNYOG1fO3xpJWM1bkJPc0ok
eW0oUGp1eHM2dWk+SE5ZdUpFPU5qYmtxQklTYlVHNStqJEIwUk9tKj57Sj5Dawp6a0k5Ql9FbH1i
NWcpcngkbzdaa0doODdtNjReMmdqSmdBWF57K2EzSkJZP3lfcVZBIXRAPHcxanVQVX5vNFlUKT4K
em4oJVFgdyE1dX4jYUkjSHsyakJHKzM/VntSeDZLJCQ/ZlB+JVRKfUFpRVJiUj1BNWBhcUBuemQy
bkJpVSFqdVM+CnpnVnUjMyh+eksjSG95b2Y/Q0gke0JtS3pHPCtCSGgpQjs1fCthdlZrU3IlJSNX
WEJxZ1d1eEtmZStsWH5uazlUTAp6aCZBWUx2QTlKI2FKV1pvYyFzKUcxdHw0clRKXzAzUCUqPkFC
SGxuSmowJFBDOVdoa0tHTUswbGdgT1FnWGpCMTYKeio7bkQjeFd0fH43NUlsY201fEAhJm5jP2Ml
aHwxbzI0QHFzRzZ7UG9iOTJjdG9iczw9ZU11cVR2aipPV3R6dXtoCnp1bmA9RG16I2cxYE1vQCVQ
UjRlal5ibGFEe1k/TTlELTdhTyQ3T0I9c01XTGVodE5aJktkJHUje3gjR2hHK1M/ZAp6KHdGI0k9
OylnWE1wVD1nPDEpbEBUfTJ8IU16byZtMTI/dkE+eEdUQXN9c1RgQHpKP050Mn14PXh2dVM7cGNu
Q20KejZXdSMlZzhIfWs5QUk4KTAqUkB9ODV5PjdOZk1BenhsPTg+UnpaYSpzaCpQa0gzcjttQG9Y
c0Bhd09TRipKVy1TCnp7SEdUTityOUhASDBBSyZ3SmBgRnh6QDltMW44MGtNd0lFaDJQUWtRc2VH
X3Y2T3d3a0w+I3ZQTVIobUMoMig0Xwp6Nko5YHVsR0ZqczN2djklNGFvMHxCTk0xVyRzcWliKXEl
ZW5SeCV4QU1gcnhDKj9jLW8oTV5JUlolb3h8cUJrPCoKeipwcSQ3S1M2Tk1RM0ZMdGs2UjVMbGAh
dEw/U2pvcz55R1dDT0FAIThhMCtpWSZORjFjSEtmSVk+QF50bVIzamg4Cnp5VUkqeWM8ajhKb0pJ
JWFyfjh8JUdTSillRk8mYSUzaXY9Qm9tV25se245SkZzbEliRWBwdmkqU15pO1g+QGxBUwp6STs+
YCFOPz5oMSVFJWNKQk5SMXl1KlJHZHA2Pjl9dCh9MDRNNk1BJnA2d35aS15ab2olTWs8Q0l7fT5z
NDtreTgKenl7YFE1JChKRHVRaV9pN2FfeEFRNXhXVnVYeFYyX3N1YW9OUV9GZG09fiZoZzVZc0Bx
Xn1fe0ByWnBsRHd7MSNhCnpyNVBVJkE/dD1Lbj52KW9zaj1taDVYaHUpO1ZITj5xej4/VHl0YUJP
K3BUMHlTYTQ0OXchQDF5JjdNYSlRM3Q4Wgp6bl5mK2pnT1pUdTxTRzhkaUImbnhJY2tzfipOfkVZ
e1RlSjJoTHpiO3NCVXl8Mn5MVFkhKmBTTzM3fkAjcE5TYDcKelg+bTEpSG1ARF80Xj9JWlcyaHdB
KG9PRDYhbytifmZyR3J9VjdDa0IlMUN+azZjdk4/OXo3Wjl3X0VmaDBHZ1QqCnpDVitiWjF4cm15
KChUZGY9Z2M7fnAzN3IhQkk9KEJrfCQwdEApezw8NCoxfV9lWW9LUmtZZjFAXnp3fH1YPTFlKAp6
XkVLWE1YLVRwaDh4ank/ak1AZUM2VjN9bE5qeFdPODE9KjRfR2R0QERvPG9YPTYtWmA2d2lAckRO
eVRQaCZgVnYKekh4MTJUVH1iUzZjaUdrcEhifSNyPWoqP1opdmZyTkVWYz9yWnFpcnMrNEg8a203
N31qZVQrcjMwU2E8Kz0zVmV0CnpRYD8mKFNASkt1UT00YHk+KGx+OXNqRkJAPVNafUVRK0xnblZv
KTVLWF5Obmh6OTh3Zk9iNGdRYWU4U1Q/dyohYAp6OSl+YC1MMTVjbiRBZjhDRylqKXZqNDJRUDND
UVZrMHowRUAxJSN8MXhpaE9EKSgoNHdzd35mZWpJVFVBQVNwbG4KelVOQ0B8QH1lNWM+Sm0pM2R9
QHdCOFp7cGMkV1RJbGBHcmx+RiR2SilvOHBFQTxIc3toaVMhMyRRcn02Uk8+X09zCnpTSl95QHEk
SUM/dn5+XnNZNmZQOTRAI3FTN0dqfWJIeWMhPzx8UX0jODRzV1EzSCZGYCsjV29SeFp5OG01KFZt
Zwp6Jmx+I0JmRVVyM1FfTHQjeiQkKmtOZDMkfXJaO0FgKnEoPVg4amZIZj1fNTRqb35sfHpzI08l
WlRRO2paT3tJXyYKejc4PnUtJU1UPXFaO2Z9QlVGNnd1ZysmS19nP3x4clJMV29vPSlpTm1JQjk4
XjBWYW5QXjBkZ1QoSj4qZV9qd3R+CnpVaGtqOzMtSU0oUypgK3oxRkU3QDx+anQ9RjU0XzBVTkND
e3teNnVjKEslIW1eZGMray1PRVhHYUQpRXxRQnFpPwp6O2ZoT2MlJWZ9Vm5FTUFFbyh8NHs4bj5m
YDkxWU4oZmp5I1BPTnVxRUYhRlVUMmheRkJIZF5ZISY1Y0lAVFFtZ2oKeld8LXZhRj0wKXluOWVw
P0Y2aVRFSGl8ZjswPTN4PDVCTy05M05LSjx7KFdKRD1qIVRxOX1Qc1Iwd3c9JVBTTmY1Cno8MEFf
VW02SGRhN2dYbSZuNHBYWGJLYD0/aF94clc+XzdgJXlUVmd6Xl8pI3c+VGVWOzcmZyV+Y1FfUG9B
eHNyXwp6cXlpWVBmcHQwSyNwNmRMcW5nWkFldXJ4cjtXT1o4ZDByd1NOdkIzc3U+X3ElTkdeWm15
SGshaWNBJSFkQiRMSE0KenFrayhka0ZtVUVGIVZvc3xGQE4mRmUwNEpZfnxgMTtlPVp9aEVhKCtt
OG1fKWstX3hQc2trNiFuJHlUKEJeJiZSCnpXbmpvQilkPWs9Pn5OUjIrYmg/Y15WfnFqSjVadXFa
XyppUTNTQSlSJnd7K0QrRlN4bXtqK3NxKiZGaUFYQGIxPQp6M1ZUZUhrVDR1aV4wX3sxIzR7RiFq
eW1NZ0NGelEjRVMhO0EoI3dIMytoaX5oNGM4LVZOfG5kbmwjUnJvbns2bTcKemtVfFJzMVk7Y0Bk
Sz9nSE9xOXc9Pm8qIStVVyp9NjdSOVgmTUR3ailKNCR7VUh6U1VZSDQ/T2RTYF4kPlp8cCN5Cnoh
UH4kbGVlWCM7MEB1JDhDZCYmO2tWdVgwdEd9NWVAKHkrU3R7TFBnQnxSRUhnWGc/WTB5UiEwOG5h
PGY1THxkegp6aG5fLVlYfnpHUylsZnlAelBQYj03Wl8qcWkwfXtCMT5hUmFARyRraGJ0aWBxKGlq
IUd1NEVqbWJUOTZ0KFdfQDAKejlAcnklN3lAMXltWEVPQTtXaFRkcEtKSVV1eH09dSEpN25CSU1P
alNucyZGKCt4XlMwdVN1dFE1PDB8X2J7ITkzCno7dyM3cl8tRkNgVTM0T3clRCtKJmtGdFpmazlO
QmA3aVJoZnw2TUAwIXdOUkloQzJqJjd6T2tAO2xsUn05bnFfOAp6T0lPUTg2Xl81UE93XjMjIVhL
TDBAMXl+OzlAbU9tRCV7O2o5UlI8NWJvX2l6dWl0djB8RTA0ckFxantUX0I+a3sKekJudkUkbzVw
fUhyJWB7JFRnbFJqTkZCe0lMI0Y7Q1A9T2ZrQUxGbTJlVm9ucntFU2N9a1FlfnlfTWV0PlhXJFJP
Cno7M204YVlEYXhaJXJYb0JmYTU0Jko2ZVlgKEV+dzw5JlNrNW1UI2dqPFA+Q0xycGdoZi1fJTMr
NWJsSFlEOHhXQAp6SiUhYlljLSl4XyZ7ekUrQWJDS217PXQ+dSskR3NzKmNXdUBOS0cmYXNTZHlu
PmlMfXN1cDFaNlc8diZKe1o/fDYKem5BaWNGV3hDZDBQYD1yfmM1ZDlUTkhSWU5VJmJUenZ2M2hm
UCRaWmQwOWYkYnNKX0h8S15fMUEzZkdYNCZSM3EhCnolNklAJl43ZUNNKmxQZ0RGTkF1ZiliaXA4
UmV6MkJ6YVZPMyRuaE1Cejgxe3lpMCNma2hAPyhzTD5RfXxucUo8Xwp6ckFqYWMwRTM8MjB9Ulh0
Pn19MTRqRCZSUTMlc0FzdHoxcGJnJXpYZ0B1Si1HJkBVNU1XZk9LNisjOEUyQmlAOHgKemlPeyZe
d0Q2XnRNblheWVhzRk0kKnJPdSZ1K3MxdllndDlwYmxKUncjKGN7KVRFcmN3KytORzw5WH43N18+
a05gCno4fSklJFZmPXg1NjZlNSZMYH5JPGhTTmlTd21NKHo4cDhLcVpiYiR0XyVsTkJCKFIkNzc0
c3o0Q3RTeVdoLXtEcAp6UHkmT1hxYUYyVEU1O3otN0B3cnxPJTshWnFxcERgaV8yO0YoKzdHZj1K
QW4qNkJzY1MhbGU3YiY5UExHOEg/UjcKek1zZjJkciF3OUchMHNnMyUjQ1ptamoxbyt7SUNsNFlY
JFFeZmBvKytOVVRsSFZVK1BDZzckUEg1R1FGZXFhMmliCnpvalg9TTRxSiNmVlIqeGZFMUoxblly
cT1WQTBWI2VJdzJvSzZmaDd2U180RnJ0RUI5eUk/VioqQXpnQzhJVW1hTgp6UVh4VVZsMFVgM2V+
JGQre09uWWB5aF5aKD5XYypHMHN6UFZGSXlaTU9hSzVkKyZGSDM8ejJCYG83ZEokYmtDI18KeklT
e1orajg7RChmaU56fWdeWjFHa3laZ1ExQzFHYHFkI0xnWUMtMT1rRiMkUipoM15UWSQ8YWkrUzIm
c1J3YEo1CnpzUz89PlE2OHpiN2diQih7aTZ6PTZrRFJ8QkN8aVJJZG97eUh3d1JKWUNAVV5XeERT
PSlodG1rKCFCWD9RWEphNQp6OGNNem87UFZTODBQSnJlUXpFPzE/Qi1DQGd8c0duc1NBNyFvIzdh
SGdqVzw5QngwKzlVcm9PKTBQeWt1XklJMUgKemZXJUZ7JXtoTVJ4NiRHVk0/MUswbnopeWtZZH4m
KGdhdX0ySzRpY3tTJj98RU1wNGJyZSh3PjVBNmJPQCZqPldLCnpBelY2N3h8K19NWX4mJGdFUHw1
P3VZYVJRa14oM1k+eWopb2Jtezh8NGNOMDNkIW5FZnYwUTk1ekZSMDVqZkRhPwp6RW52bS1HOHRt
UFM7Z21ZJkl6SEBvcGBUb3h3e0kmIU1RMGh3UWtINjtfcmxvNzh1KVk0I3ooQF9ESWBPTVhGNWYK
enRmMSt0Nz9STXRAZDQlMFJlbylxZ2E5REN8Ny1hQHFTfTlZejFUeWgjfF91JS1uWTxONTNGY3NJ
RGFkZVJFTT5LCnpKPih6KVI7SFFMQCZ1QVI7a1cta2UjYiM7Ymplekg3UERGNVlxQE16OHBDd2lL
UHkwYGdeQmZUWUotVH5OeTdIWAp6ZTRLeyE/PHlUfmFsbX5IO0RIaF5CWD4mdm9FZX1OYUU4OHZh
VDtqRTRObihLa21rSUtJQ1lBV09Fe3lCK0RWWG8KenphbD9IMEZkfjkoVlVhQDJmKG5PbihfcXpA
RGZVNztEVyppYUVITHoxdl95dzJyYiZ3R25CRD1zeVBvOER6NlU3CnolNlZtUnBiV3Y0KWJTbmY5
JG1vc0hZfTFAVVpWP2FWJHRBNm84Um9BI2NpcT9YVz1WWXNtNWZpQ1AjQFRLdElUPAp6OChVMlJY
d1NLSig3bmgmZXFJXio3bVQkTUsrfkhiQF4zRXQ4QSZobFVYciVxcTN4RHY8X0khcTZ3fCVnWTIq
el8Kem5+I3wrWmNQfnYzRUwxJU84KEBISj0pP185PThOVjM+VjVgPzghfU0teGcyNUdgZXN5KXAt
Z0IldjlCS2c/NUxrCnp7RXFhMk5PblA0JCpIM2RubUYqSCUxMHZ6RmxZcDVFUWo3JlhnJThVcnBr
fXhfZDJGKVgpfUYzPzxiTWZ3UStsMAp6TVU1UTR3dl90TDsyRVpNT0FqSzg3bDNiQ0hDWFZQLS1g
TSt0KlRHcXc3ZmdRdWkzMkAwT2F1QkBCI2k+VkhSI0UKelRFUjRSSj5EflM7cDwtZigkUURVX3k7
SkR2OVNPRXpEc3tzKTkmWHxrUDBFMkV7ZUs4cUJEa0R0UW4lcz5wcG1ZCnpzS1hZYHghR24lY3Z0
b1NaT3FQcExmaFp8RHFKfHdRZSUmSF5RPlk8dX5OXjhVPmBES0FaRExCYT47WDsyKHIwNAp6ZD54
V1ZTNHJJXiVwejdnPjtYfERrYEgze3tEal9wTDBBUWJ3REt6dVgxNl9uJUVRclkoTDNmZ2I2Y31T
SWwjJVMKej9ufWAlKUchQyNgRmAzR3BYKmo3dXNKZW5JZmRxOWoobD0/Q0lzRnIjSURBPGFjbCRh
YD0xbnpOPT5SblNfdEIjCnpDMTFCR09ecD99JTtnSHx5V3M0aylgbVByKjhrenlrcTc9RVh1b0B9
d3dXNis/cWpLXkBuRkYwJklmZzZ5UVptbwp6PlJ5aTZuJm5GWC19VCpZITZfNkU/aTR3PnspZVEy
IWxXTkJrd1lUOWlsQj1CbUZXbiZPOVZJUHswNntoMFZzcWEKejBDblBHe3FuczthVEsyU3VpYm5z
byM2RnAkTzcoSTl8TWxNZ1FGb2FWJEN4RTJ1ZH49ODleUkE1OWNtWD9eb1BHCnpCeHorQTROX0RN
RkM4ZytuY1NpPGIjcyhmPkBhJExgR3tlIyh5THJ2IVExayhZZlJkP25WWUtNYyRKdihJbUVBRQp6
e1BeK0BHTGFFKWZIN00+Qz9ZZUNvbmo/P2FnQitxNFR9X0xeOWJyYVJuQEM9ZzkrNDJmN1JLOStF
MHxSZzl+NCkKemEwKkE3PHZ3VF8la0c2TUpGK34/eT5UcU1wKkdhRHQod1kpSSpEJnlfZURlNVM3
QTxoWUZRT1heUm1vUHUlKX1JCnpxd1RUd2VELWRjMGdXOzVRITQ5PmshTDw5PGExaWFyWjlvSChp
K3Y5UD1DSWAxaF4xTHtOJFl8M2J9T2Y4al5fWAp6XjlIU2xSMnZfUDxOQj9ePF5aNnF8N3gofCpJ
Zkh3a0NsVj1WLXg1dGRXIXx2PnRFRXpKakdzeWJTTFpGPE9hUSYKeiF8cm4jQF5gdyNAdnRHazhO
VVRGVmo2Z0hleD5+Kj1rT3BocCNVPFdDU0BwdVE5Mj8pV0xHblZLPlVPXmpqSUQ+CnpMdEJ7YU50
ZzN6Rzc9cGRvNSZTSE9DbFQ1NndxRkZ5KnUkMW87SDZ2SSEqfVlpVEkhMVQyaHZfS3MlN3hWfXdB
dAp6SlFzIUJoYHgkMzhAT3J6bnI7UyZmTVFnbVhYeHV3SVV1fGtmajM+NTMyMDdVMExfPjFAYjh0
UEJJZ1QqdGxOYVIKelBlNm9NMmBlSCpgVjlXMzRMc1d8PmlgPXMwOFU1cksmPk9OWTQ+VEo1Zm1x
QlVaPkZ4SV5YY3Y0VGNAPCRWNVcxCnpVZz5kM042VUs/YytrNDFtK1RAKipmbitVcnRNWEBAYTJz
NldrdmFnYXJaV2FNb2gkSXdGSV9ATVVhVW9re3YzMgp6QFg+N29WNnZqZHo/aihyRVFwaTd6VSQl
aWVMYiV6MGxKMWhxN3tkRV8mV2AtakMwXnIhbyQpc01PSCFfb15LPHgKekx4UkZ3ZWdpMGZiQlN+
T21JZDxzaVJmRXhJPE5XcXVJRzFGNSReTlBoKSlpdEJLdUV0X254dzIwNS1velh1LTZ7CnpXb1Vr
UiVASHMpc0BgU3B7cmpgaG5+Zyg9aEJeaVNjXlhpK1V1Km0lMEJHPzRyKm9ENmhSeVNia2pZVnlj
NGAoPAp6IzlrYGgwaSh5Zk4tVTVPclU3PU82YnBeOHdJRz02PlZPISVOJi1oMWFvd3dCXjZha3tF
dF9CWjVQVHB0RXpFKW4KeiNmTjYkPWwyb1FBez5RSHR7TEhPZ1dQbHJmRyZvdGBBbCMkUGN5eGlT
Iz1jNWF9eVBTYnJNQkY2JEplYThYU3NuCnpmOCg0XnteQnd1ZVQqVT8+KWVwIW9hZSYpUU5hQHBf
SSk7UnZaX0tOQWBgfjBzPDtiYyVSZSZwZHBfYX1SJmY9YAp6SypvKWZTQTFteHd2MVpON3xhMWJL
eGw+Z2lqSSlkMWxNWmYxSz1hXz16bTlGJVE8NSg/OXZuQFhBLXBwTUZLK3MKekstZDJ6WG9BOWpK
eWlfeko8JmJgdXxQN0FeJEVET0F4dVVFUDstJjJwT0YqeThvO2NYVWJRKShQRl9RNElhQW9kCnph
fE1SLVFhWlhnWDdScClCfHlvJmwpaHl3RndGZmZEXihkUGx7aEtYNEpTUkc8X2k7QkNDOTlrJkcx
Yz1fN31xVgp6PkU3ZShIWihJdD9QbXNnQS1TcWVENnJ4ZGpMT35ZPyM4bTRQcCs3MWd6UmVzJXZU
PWRscllBd24mIX1NRkxnazQKejYzVnI5VH56cChoODJidkpnRXFyQ1poSExFYUJgYTchd3g5IVpy
aDg3eD14djh2dTspfEFpKj96bCZXeVMyT15DCnpxTiYxP0ZyPSZVaDVsYEJPfUg3UlBnbHlMOFIj
RzNAcn0meUpoeW13cWQhUXVkTklfLVFPUUdTMVM+ISFlJjZTMwp6b3hfPmZkbG4kWG5IRyN9OWJs
Wm01cTlSRWQzaT1kdnNUdzRTMShpU1c8UE54XmlfZnpxdE9HM0A7dCE2VS1PfCgKelBPUFF+d1BI
VTlWXnBKWSpFMXRXclpyQkpXQUdpQWUoQFFeJT9RU1c9PjhEdkRZPkYhQHJXJFN7aEtDTl9vKUQ8
CnpUcjkrSXtYNlA2QVhAb1E1QCUxJHh2M1ImZClBWSRAZk5ZJThjUkxhaipMYCg7eU85X0VOdWhB
dEF+NGFqMUFxWgp6b3ltciYpJn08JSFoLW4oMEh8a30mI2Z8MG4pKXA/IUNDQzFrPUNnNEA5JGs5
KiU0WnFwclopLUJgRyZ9UGVeel4KeklHeHpvcjwpYlVEK1Q8RzI/eXB6Xz0wUSlTRDNpcjhJdDlE
X28jcF91ZXNgVGlUeiNZMVZzdUkwbDxSNEczLW1jCnp5fjY8akI9RlJHLSZETT9aTkdCQUlCPnFu
OF8rZFpHMXVqR1c4VjUkIWxHMXtlI2JsS0JyaVdicFojYm5PaHk7KQp6ZV5kezdmOSFCSmBneTt0
VGp9bWRCeEM0dkB5X2BANjhLZE8kfFR4Yyt4aXBpUEwtfk0yRT9Tb0Emc1d5K1Q/Q20KeldBZUY/
YyQwMl5qNlRrVnZzeyhoSVBWSjxlJn50ZzgoeU82XyY4Rn5aTEFMRTwlQ281LTc7WUt4TUE3ZExV
YjZuCnpNMlQqRTFKREU9aDJjRWErJWRNeUMoUT9kNGhpKVhAR1lPI01xflNRP3BjKT16NTEzOTVq
N3pHK1p2eTxvMWRkZAp6YDRsP35VODlIfHk0Pjx8T0dkMm1vZklNRiFgQ0YqSmxKbkpOMnBxQkRZ
d0V+U2FTZXRNRCZPLUFhMFFNQGljSGsKekAydTdJV2dZKG10e2RMYFduOVZWZmduPT1kKU0mflJI
MTdQeWooWGNwQz1AbGdJNnpnUzsxJSN8NWNoPyhrQEFzCnoqPXo/KiYhMUghKS0tTUVUbyRgS2JL
X0p2WU4raVU/SD0rbVpkSFRRanlVTkZ2PlVxPU5sJCs0PFVOanhUdD1NTQp6YndkQWsheGkoOFBp
Jkd7cyF9JSMtTSomTTQ3MmhReUlgcFVoZ2M1LWJGbHlMWXVGY1hDMFNacz1oV0RnQWFIVjIKem5A
ckkyOS1hSkJVWFhoP0xwPCRQMzx4ZmlFYyRzfmJidCZaVUpTUSl3TEpmXyZjcGM3UldPb31Bb19r
clo8VTVKCnpvIW1NZj9eRU5WKkhFbEs/Pll4WHFlalMlQD9aP2wkail+U1lWLXpmXklMT3I/fmhz
XkNoT1U3MUp8LTchZHFsRAp6bDFEQFZtZ0g7Jmg+S0s1IzlNfC1nNkY3UGg/bTE7Y2VhaXRvI2FE
UlpoXnhpWWkpfCYmNj9lUGI9eiM+cEJ+UGwKenV8bE57bXRvaEZ1RFRuZTgzQ088OzhIIXlmKlFQ
fDUtQ0skJWdofWE8UmIkeyhBdDgodjM5b1VQR3RLIShOKUsrCnojdjkwVVp+MUF8P18jUF9ncHZ3
Pip1ZnR7SVBxfTJ1ZU15XjhNVVFQQ1ErcmZtQSomfEVxTCMzSXxvJmI4SThCUgp6MEdYbnJMXn4+
Jk5SPnUoWVkyY3QxdzdoVUBLKypAa0Rke0ZJfG4jX0wyK0JYSHd1d0hRTEQ2emQtQkg4ZVhIJnEK
ekhvaElAeWdwPzRSKX49flclfDB9Y1ZYUDt6d1hQPnZnPXNWWlcrPnE5UVQxfClyYj51JCtxXzRZ
bnBwQihNNWhuCnpnRy1mcGA7K1JUKntNb2UtQ1hENzFKOFopOD80K0BeSEJWfGdHU3hHX0Q1NipF
dl9HSkBHYndKNl5kcXtCaDFlWgp6eUFHfGduIUw1ZHRyYjUqNTRVUmFMJTNtYFBfYjZQPGBSdEZO
fW94fXlsNkJqVVQ1JENKVVkyPXVCNzBpYEotSSUKemkpaG5tcnt2TFB7Z05ONzZDNGE9dDYhNCFP
NEZmc2BmK2BaPjlkPkhkclNsRSE9a00kaWdoSj4mNzxLKW1gP3FSCnpLZF84aDE7NklnaC10RHJ2
aDRaRCNoJUJzUTVOUmFGeEskNT9Qc01rclRiaHpAPFQtLTUxOUphUXN0bm16TyFIRQp6bnNVbWNO
JmZfIysmeENVQU5SUThKZzF2WVV9QC1rNXUqRlJaVUBaemN1WHptQGhfWDQ2PCRlbGYlJTd2XzZh
UHsKekZFYkNDTCNBNDI8JnlhQ2RfTnppZ1Vid083bn0jQ3ZUfDE7PDV7dW53YXNLfnd9ekw0Q3Io
IVV0O0x+VSFkQGU3CnpWd3MqMVVtSiZMMmY8MV9GNno7LVZqX1Q2JWhGekA8QGcrYncxKEBmQHBj
JCtpaHpNa3shZil0ODxmdWNAfWh3WAp6ZFl8OE4paD4pITV7QENDMnR+Jk94d2RXSCslUnIlQSMm
TldLJjwmMXdCU2lzX1BGWjRvZz5DdXRxKUp+IXNgcn4KekB7eThxckZDLT90a2RDT1hAY1RrYUlv
MSZnVjZpLTxjfCNqNSp5cCYhaGhATUJ9UklrNnw4XzxKUzhlYzg/MH0mCno0e3xRTDN9bWhwNlR4
PSE/MVF4P3ZmbiVIU2ZBRTh1aV9XWSZMe2dtPWFjWGkqbXlkRlB7LTZpRlBlTTdgKkc3agp6cyVo
O09RM1NEMkI+MUF1eVB4NzgpY0ZwPDI9UmgwTm5vTnAwR2EwaTBDPHRYRk9YUUckUWxXKmhheEJx
ZEZQM1QKemRNUTlNanJPe1QzPX59NTU3R1VTXiVDUU1NZH17RFkmY0ZlUklUKGY1Zj97STZnS2Bh
Iy1BQ3MweklSVWpBYCsrCnpqJl8zS3ZSKk5QYCRaZk5sQVpBaFB1O1NEUFhwbkRvKFNpKEx0aGJx
YEduMkVIeUdRJjFrQzg4cDgrcCFYfDghZgp6LWBafTdWcStXbU50bXQwJk4pc1Zpa3JycjhDJTFk
RXJCNTVWdWtoUWxUYWg0LV5qfGFrSkNOfEZ5NWsyQjQrQloKek94fHdpMihPZjZiRjxBb2UpdkdE
LTNtPTJSYit9JmNIS1QzWnxtWSFtdW4ma0hLSUF0RWtjVlc9WCQxbHU2XipwCnpBN3RDWmA0USsj
eCtDMVVrKn5gdXI9ezA7ZTEhWl9kfH0+dVY/XmZ2JE01dU1jTlpYaU1WUzJ5NiVNZnE+KF43PQp6
bGpvIVl3Vmp5T2o+fmFrWXdrPlA5bHE3LXQqM1JIU1AzcXFycmRxPjFiWUYqLUZTN0hoNEViak07
Xmo0eHVSJG0KeklUOVBTX1p6QjBfZTFlZW5nJUVhYCpGO1E8QnEzJHJnJXhhYSE8X3gtZGVRN0I/
NlYkYmVeXjxJSUJxZTt2MXl9Cno4Ty05KGptJkdXTEZtaTA8OyV6V2NMcHMjPj5AWWFKdmc7JUh6
MDhIbEtWcnZIeGN0RihOYShqMjZ4LXdWUCVIRAp6PTwtaD9BJEorYihFdyE5elA1WG9nVzduWWEo
R2RjV3FSYnVaTS19P0A0KH5vYzsmQiZzYSVzUyNBREorJVBhUS0KeiR8SWxoNnRBVVR1TSRAPGtF
cCowKCRGQE9kNlBLNFpfS2pXWjF7MmxOSzBmKDBWU2oyVnIwdSNETjUhTEFgaFR6CnpVaFVzOUVv
cTw7REIkd2IpKGtnUz8xbENpTEY3ajFFTzBEKVhTVT16dFV4OyljTWhZZWZ5eH1ycjVeQiZ6d0RS
Swp6V1AyWDxzeyVTJW9yaW5vPGQ7WHMzfmRVbl94KWRvdXk+Y1B0aUZjO1o9NSVMSU1Ke1U4YGhr
Qzs8Nz0wUGtgeCkKenM7eCFjelB6Oz8kazxiWjhrRT01U0RLISlFIWlmbmVIMCF6TUghM181QHBR
KTZ0cUIpUFN0MUUjcjl8QWQtRiNQCnp4KDkkPns8UUl6c190eyRfOUpTUkFTdU9ldzVDNC12THFi
JCkxcSNqOC1xVjlRJjdPZGtfY0h+KGNsdHI+LVY5Swp6bVkpWEtyejhtdG9TfnBEa3M5LXYxR3h1
cFBxNFN2dlltUGlOWn5ZR1RTNE93THJ3YGNhdVBrKXF5NXQqallLWCsKemw9JitEQmx5NjlANn1i
fF88bzl0WWQyaklnfGJGVDsyP29NcUAqdXo0d2hkKncqWnAmYEF8cTdCSlAzSFQ1fVo8CnojMmk+
NURATE4jeWRlX0BYQEk0fUNkUDRNSSFGbl81c2NeZUM5Xk1DUl9pXzVaX18+fnIkV3VoOzRDP3JV
PWFtRAp6eGdxIzlXSzY8eW54V0VnaGxIanxeJTlgWWdicndxUShOdm9ybHBrbERpfWdFYWp1Qjg3
aTl0cHhsMC0/b30jfGAKemhOJSVXPkReSUQwcDdoNVYpcTkydW08PkhWKClfeTRrZkVMPV9pVzdn
IWdQZCp+MEtqY2M/IWc2czVGT2dDOTEpCnpIYUI4YVJIQ2A+dVdqZkJjQERTK0tTYyU5TFR8ISpx
WG9zK3RkZVJzRzQjVkE8Rn1SNXsheX1GWj96XjZmPERzMAp6SjVndUklPU1CZEI5ckJRUjNsM3Zw
JSt4Z1JROCVreyklaE0rZD0zaj9HU3M0V3VKZ3hpWDJGaUJAMT57TjFAaH0KemJ4ckY4IyptVjck
K3NZTkhQX0JhITdGVTBGTHVGX3ZSamhfVHV5NG9VJVVyeyRuaTFQY1BzTjN3djxAYUd9b2hgCnp0
N0R7JXZLdGtiUlUtYll4VF98fWxAU14pIT47RCNKQ3M9ITglKGRmbzFfeytgdFR3QTdIQ3VgPFck
M3h1ZXBKXgp6eylvdEopSTUhPXAmbVcoU3t0PUBBe2dHazNISHtqSVN5N3RaS1MzcmNodyVGNDQk
VDgwKkBISDVNRGdxKiNtbHAKelkhb2hmX1dVT2VzJllpRGgoM1M8eXxFTD5kSXs5RUY0c3s2K2pa
diUoYEdxZWhoNH0yODNHeFBpPjdDX2krMk82Cnp4TC1HX0BjRGkrTz9rMD5NWGdLXm9iamhHVDZw
eDUjNlpXMDZ0KX1NRU4ydEViOVJRN1hwdHtwMH1Ce29OZklCOAp6OCpDK0ZLJC1JK2p0ViVwUypP
Q3c7VWFVcWc9fWYwSVcxc2VXUG1gUmJPUU5JaVVofnB8THBtWndIfjlsJVEhbzAKek11JHF+bFhW
eFZ8S2ZnX1o2bGwxXm1vP1dFfmJnKDxnTG87TUNoe04wNVZ0TWw9YzwxdFpNYm00PzFYX0Q1Kn1P
CnowUTAyKkF4LW82bk8tVkxDSzxWMGl4TCgjTSUpRXdFXk43cHZRSSpUQjVIJGBmNWFpand2NzUl
dldtNmkhOEwwZgp6QURrMV4wV0EqT2soZkhYUjhTSWJmPCQre2dsJHBZSC09O1VfdmF6eU5VI19n
LUZ+Q3YhTUkqPThCJnUrdVBONn0KelU3djdUJTFYM0t1TyFzbDwhYS1VLXMhbnNFUm9ac0N5fCNA
IUt4fihtbjEmU3ZlZXNRWGkhTF9hNGptejlBRlNTCnowJnp1VillfD1lZztpRFErY0gmVkplUFg3
X2xrfXBsQnI/NCp+IXoxUTglb2hgJCYqZDApTH5zSyshPXhmdHBiaAp6U3ZMdHpufDJjMjQzVk4t
NFlIdkZhUUVZVGUjQCVJXj1naFc3Mi1tRnImaVA1OyglRzl1ZSFqKFVtaTZDbFZYfFcKemxDbGIh
I0BsMU0ye3oqMmVkMzNWKTQ2bztMfkw/JkBDKl9mMENBcHBDSGpoYzs5IXRpNVVzOSo9UWJyOURn
RXo4Cnp2eGhHJUVPYyVGPGRoMj5QJjMwVF4odkBwTjQ9MUJkeSslSXpjXkBwI19jcH52JTQwcXkl
WigybFoqZ2F0QFNRNgp6I3MhZTQqZShWSmJ5ajl4KE1lN09fTnZrR2Z2QUlGVk5UcU9rS2oyN3BX
OFdjQEkoLUstc3lveGcjWmVUdz9tPzIKenpSIzU7ajZwcXtGRThROSNJVExLVk84I19xRDtXLVVQ
X1BDJk0+dXNxRlcpIWZ3Ty1RJD1TJGQ5dntJS1R8UmdZCnpmOGM/bigyYEswLUR1S1FQTGh+aCM2
WU5GPDdAWSYrTEg0Iyh6cytpZD9ScVZQTHRjUTFhdih4X29DdUd6WlZ6RQp6Z35CaDxWY2ZHbHUx
fC15cUxBNitrIz5YfGcyKGZFSG03RWh2fFV6STwmPTdhb3pBcUpyc1VfZjhoY0ZENVdPYlQKekBV
UTxVTVUwLUk/Ni1MVCVPOXNXWEZeTSRHe3plSSNNRC1PaWRVKzU5JSVsO2xrKk13RmE+JGhxdTdF
NFVadTBZCnp4YUlKb3tuZlA/ZEJGZClYcGpTUl4wY1VDbVYtN01yeX1MNiQtVShEPVNSK1ooOEhB
eUNYPWlUQUhLJClNNmF8RQp6eUQ8OzgxYWA4TmBMckE/Y1VOT0hUZn1De1VHcHUxdFF4d2BOaDNo
N0EtND15Py0wY2RCUkV1MCNqZDF8fExgJXMKenNTVjVweitjMFJNXnsyfnopeHpWLSRzMUowWXhF
aVo8bShVaTUkZF5IZFB8YlFjVDVsPFZ+eSNoVlJMdzVDT1IxCnpCVylXMHpJPVY9R0lxSWh4cl81
fndafCN5SExJKWVTbVREViowSW17K2sqT2NaPFhFPSRpISZDTno/fGVUYCZ2QQp6R1RBX3okbnJJ
Qm5scCptcjQ+d0s0X19EOS1CbDBJNDRnbEJpKVV7Mz9fMXVLM35fT2laMnFOd3VuQ3Qzb0crMFYK
enZkJjlRMmtBaGY/SXBXXnolUkpYNjU1R2BZbko+RTVNdFkqUSspVTJ3JFV4LXBCRUN9VHV3UGR6
Mkt+KElXUEdECnopPERzdTB1aU07RC0oSmR7eGEmIXhpTmRwT15wIT5BJF5LeF4lalYwa351U1gj
b0M9fWJBaUQ7dlImem5zcz81dAp6ajxmaWlOKjc9aEtGUmtzYDBadVJNVEVtcXlkTCNRMHN9TlVR
bkFHZ3FJbj0/JTNHJH1uV3Yke2FQRV5vLUYxSnMKem5XNmByM2wjQWI9WnE+PGw2bE8qNjdYdkly
eHwpaW10ND85XkEhbSQ4Qzt7PjtufTtLWmYoay1VbSRITmZ4Yip+Cno3PDlpMDtlQ0VFP3gjWCQq
Nmpzb2hGfks0SSo2RVV3V3VQM1Y+OWxmcTU5V25gT3ZYSmx7RHJpPTtCMVpheW8tYgp6OGMkUWk4
MUdeWnRzT1pGTlBYJDNVKSklRXBLMHBwcnRRUUxKTVFOdHJnSTI1UWlqNHpzWV5yfl9LRUV3X0go
ZXQKeiohaGQ4d3lBRzZROUUjVF5CQEApMXEheW8xRGNSVXR1ZDVlVVhRNkI/WS1DcnV8anYySyZV
WHNrOXZzMlRDb09RCnokelN1NT1mMGlGdGlvQjBHKDh4bDhJP19gKmU/IVJzRG5eYmAhZllUZTU8
V2pYO0Zeaj81V3opVWg4PStadSU+Owp6Km9RRlE/eUpaKDR7TClDUChye3NobUpBVkN1QEhGajtS
M1BLbVctc2Nhcn1yd35RNT01JilRai1vJTwzanBiNCsKelZCTkhuZGJWQWIrbylrPlU/Ni1lU2FJ
STIlalc4JkwjLTFwMUNIUSVZYEI5OXdZN3ArcFN9PnIlKE1hazNkdjkhCnooTXlkMDUqV29iPUVX
TGIjOD1GdjVVQ2pZWWg7WkppSERCTnc9TmRhaDU3dChmTkwtWDd5TzM1QHVUP0VuRzgrPwp6eTZj
IWY9O314YzQhWU9fI0I7O1J3Rk89QGh+Um9HX3l3SyUoU3VGKDNmIy1GZEZjR0pBanRjSEwrbVZm
cyRlVWQKem95IyZHeTd0Q09VeHhGT3s7TERhRXRsSX5CIzAzSm9ickdEeGtuV0YmJVpHUm48X0M+
WHNScUl5SFBkZGV6TzJgCnpEVT9AVSo5ejFsNVg1N1F7UnxrOGh5cENWayNXRWhXdHlsWU43PU5S
QV85dm41SEh+c1dBXn4qX3pRVHglcmx4UQp6R2xKT0NUclo8bzNhdHRMdVcwJHFOK2pQWGA3LXl5
bmR2MUpFbFpjISZLcTZXczA8VHZXUEhRO3NGNmZfOyMjVV8KekdwKUY4PEgmLWQrMHpUQygyK1o8
QUklWmghP1VseipnJVpYT1dEWkVqT2xWPzdWfERHUyNrKEsoTT16JUk4OEwhCnpqUWpHPktHYGNA
YGk4b2s4NVA/WHhISlJfO14hWi1RekliWiVpVFJPPDlia1NpYm9zUmFtMSs9PUZFeVolKTshNAp6
SkJ6UVp6KHlleERIa3s2d1olQ1dAWXxsU3h6RXd6R15EJlEpNyorPXNPSWtxKzU5NDUtVD5nPHxB
dS1fMm1ydkAKejRGK2hCM195Ynd0VTd1cXNxWDBtJXxASi1RVWJuRzEyZkdaITFwTHMmWSNtUVJu
MCpeS1k1KlZJXyhqRks7ZHZ+Cnp1QGxzUUFyM0tTWDc7dWphY3VaOCU1JEZiazhKQGRvKCVAKzZu
O1lvIXNyR0FTUjZ6PUczckhqKFh0cGZsYWJsTwp6ZCtrP24qRUdXYmd0ZGdVUTFIU083MlI3c2R6
aWsoX3smbSlsOV5NWjIrQUg5NG9BVXh1VWYoUGVTfG1EUzA4MEwKekhtNSEpKTFtfFpeQXgrJWZJ
KkpKJlFffGgoYjU8empHWVRBPHEwfGoxXihNYFI+cGNDbnJEY35zNypOcCF2Ul5hCno9dD9TT3cx
M25LX1FQVTRufjU5fTVQIVhkKm1aLTErbFgkKlJJY2VVYT8ocjt6UXQrUWZ1aHVvXnFXdzxoYk9C
JQp6WThgSTwraUN2aGdibj0tYksybldXaHVuKmVWIWpCeUF9KT1pfFYzRzk7QH17TWAtMXVFP3FA
eHBlayR7cChXcmkKeiM3WjVuaXdOaXUjbkJRUnl8d1F6JFB6YWteX1BZUTNRVykmPSo+X2duPiko
N0pLfXA7PXtJJlg9bG8zXlhkVFJxCno1bCpWbXE7TFY8cnZWU1NVdmNtSVBsWUNiNUlQQWs9cWc3
UXYzSDR8K2pIKSZYV1dtWCYxNkRoK3VXK185WSVlVwp6ckVtcU1SKzA/MGRnUHl7ZX5BPnkwO2E1
cjFZNz5TeyghfTNTOFozQi0zWUZWb1Ita1dvTFNqPzNmSEE3UE12ODMKekpqLTVmIXs/TFVCRnt9
MyFQNmAzTCNxYjZ6MF95SDM8KjZfZCNmSytAYzsqaFFDM0lkeUtHSVlyaFRYaCRmdnIqCnpzTTd3
c3YkT1ElPkRAVi1veihyLWJ8ZzNYJj5LWUFtb0xhfWE8d0o3N2oqPzQma1RJUG94RWh7Kjg5amd4
d1RtTwp6PzI3fngyelFedHVEa156K1NJNV8/PWl4Nj42LW5SI1h0ZzFvWFYldDhGaHNXcEJqOG1k
WFB3TFFJUTUwVnhZKEsKenVmOFZJYnxienw8YUt8a0BWI3J8VU5xe0hEbTt8TGlAfmV0KXlTcE47
clJ5cGp9WH0hYkR5aWk9UWlGWTk/KmxxCnpMdHRHc3JXS14pemt8WHA0RTBrVFc5JnMjYHFHbzwk
Q24qfFJ4O3BxeyhqTzlsSUtJeDEpQEU1JWtFfGg3Z2JkOwp6VlJzUzxBIWQoLTxQZX11MVJJIUch
TypqcDFJenBDczA/Wn0hc1p8T15vYD1xe2IxUCk3bEVqT0VCPldGcUVjKzEKekk3dHw/a1F1TVEy
eGdSfGJrWVBqRE8lP0pCTlZkKlZ4dXAmUihta14lPnteNEIhbTxJZUVNSmdedm5QNlJCMGFqCnpF
M35ea3U0fF54WUo8a2t7UDtnMVozUHU5NTs7YFRqRkEhTXJ5YGMxaXJXU2o3KG5QX2w8X2NncFZE
Q2RZRV9uPgp6KGJ+PGVmfD84eWdmMClnZkJ7U31tJmVBRnJ4eUpATF9+aXxrIUZxIXB7WWIkQ1p5
IXhhMSF2IUN+WVpfbVNnKk4KeksrUHI8dmN4fHYtUiRVZnFDWF9PUklaa1VfPyNLaGNFTlZ7dDlN
UiQ2NmBBUCY7MXpUX0E+fXNmPGRVTW8yVGQhCnpEazh4VHttT2VHP1FSKU85cUpybzIjVzdNOCEl
VyZoKFRQeVFwdSNmYTx5flFLQFVjXktrRDErb3o5dV5SaUZ6Ywp6ekJea0xmUUxARXpoI3xVU1Mm
JHIwblIxKHtNaloqY3chYCE+b3Q7OV5aSzV+YUEpMk9YMX1MQXFZWF5AIXgkUFkKekIyYjZ0Wk0x
N25vMFM7ezApQ1IpTEtoNnlVPDMjTmdRTVJyS1dRdXk3anhBZkFZOG9TfDZCJGN1enF6dTE2MD5C
Cnozak56QDZtSXk/OXdmdX08VilEekFuVHZ9TG84USFaPShYVXRIRk1COGE0OHxBTyo0OUZAb2kz
Q2JMRmxJRmhpMwp6SjNVPC08UnRLRGE0KG5hKGNBbVRKK0dvc0hMRzc+fDZIUWQlU35YRW1ad3co
O2ZgOTYxbWsxUUVmeEM2Qm9AMTcKei0mNUB+aFpkeDgpYlRSWWtLWFUme0V9ZVNNYU9ibDI7S2xC
M1UldHM7KCghU0o1T1lzYlk4JlptdGd3fj1QSUMwCnpQTz4yeT9kSkJ3YmZEfX05MFc4V0BfQTFD
cipYbClHOEN4QHEyMlJLQy1wWmwyKEl5czVHNnNgRWZSUE4wNzNkTQp6RGZYMkFUV3tQLWEjTjZe
UiZjOGJKSHlodFA9LW0weXZwand1UFdnfVojRF96MCt4cllBVlNoSVViUWJ0S04zJX0Kekk8RilR
OENYSjFidkx2Z2EpYz9Db1pWT2Y5clFKOWkhfHJuMGEldyo/IyEhem9NQiM2PkglRWxeUnoya256
aDIyCnpKRlQoeEIxbW47P18yKkMwXlYrVnl1JjQ7QSo2alhuSCVYR0VtaEdtPk1OSkBXNTYzPz12
QTMwbX5gTXo/N25rbQp6bDMqcSRRKkBxKnhNNkhFPFh0MSZgUTE+ZGEmPGNhVGY2PUdpNlliRmJS
TWJZTVRRS3o2RFZARip9RGo2KVY9MHUKejBwRT9oQmA0TUxzMXZIVTxnKXZ6Z0M3fnNUV1lSWlRM
OGNSVG0qbnt8Rl9OcEQpPEFTKmxXRTQwQkFUQ1IqfUZzCnpaIXxqT0c1ZlYoRUN+fmphaHd5Qlhm
WE8zeW9wIyVqeUJGTyF3UlZZS2s2eFJyNSh8b2RYRT5EeCg+eyNLNzBsegp6TFRMUj1RUnlBPypw
I3lQdD1uUjFAV1o9e0lKeUc3JUsrdD5qXjJRVHhtfGlVR35qTVFAaHQ/c3hMTSlzJE0razcKenFz
Jll0QV5qWiY/eD01K3duUkQtRmsmNTxwWH5Sd2w/OGs2QXkxSTFHdW0tKHFTIXJjS31GTVhgWUZr
KWVOZCUrCnpKeilPQUsocUViKFh2TkhtU1hCeU5aeEpuYUhrYkN3TGAjOSgzaGcwRVY5KXBaeU9V
I2Q+ajRzZH0jdGVPI2k+Jgp6VyZYRjFuKGhEcVlTMF97R21IMGlSOzJERD5gY3tYeSROPUhANypO
OGBpMX51YD0wUU16QG9iWGstfEA+az5LMjYKekphczlBcmtJfilVen1GIW4tK3psbWlFVnVheCVV
fU9tbVREYjRHNU1yTkVpdlhJckZHOFdkc1RWeWV6SHYxXjVxCnp7WUxEZGF7RlIpOHxRTGcyZWkh
Vz8mJGttJHR8fEkxVEpDTnVnZT5Eb3BAemtWO1chMUtCeHl6NzBxajFjblJXaQp6OEtrQWUzOXxR
c1R1cnxLV24hcHNTSGZfZzVTNiZFenI4ZjE7OWd2N0hUKysjeWBFNGApU1U2Xm5gOEo5TCprMDwK
eiZ2aG9POUlYK3E+TT1GYGNOSnZOVFY4TkJ4TX05V0BIKXRxQXNWd0gkKDl3WU8rRiQhKkJrO0pP
eWp6dT9xUShiCnomdjFBWHUmd2xFcWVuK1EmQVBYJnlVbWpoV0A1JWIye0c/YTIxU0FiMFUmWXpn
e3dqT0tMXnN8ZHk/UHN6fCkpXgp6KFdAWkVpJVpEVU5xY0c0dz11RWwwPD4rUCREdXRTN250fCZh
ODxyTjNrSDIySzdFbzUhRHclPmxeUW52aUApNVEKemlxb19DMGhldGgybU8jYjEpc2BSUStFNXlX
bypMaUNGeXppb0FWMzlvMVgtM2t5SjxqNl8wKk9HZXM5OTBzRz1wCnpQKXRue01OT1BKQktNRztJ
Tzl9RlQzdkxBMVpGV1JsYDR7YTtOI145ITl9UjxmRDg1ITd6Wm1BWDckbz4tbyN7Ugp6eWdNKkxk
ej81RUE4QVRZPWpzdXtkPntxUitNcWQ7MnJ1VnpVVVBfPENOYXpGJXUjeWpuaC19SVhadUt5ez5M
QmkKelRGYlM9UCglQkw/LSVMQDxlWDB7UCU3UVRuYmpLMUQ+TWAqODApZ0h5fGB3cHNwZ0IzeFRG
VHxGUngpVGo3OTIrCno/SiY/OWNvUVVBOTNgdi04b1ReKjx6QysqeTljRXp1dCNWbUxiK0koLSQm
KHdzc1NNRnxEU1BFfEFrTnVDYUBzZgp6IWM1ZnRreytuJUV4U2NGQkFMcUpYTV9obG1WbGM9WT5T
dXs/N2A9bHo8V1p7I1d3JCNJP3VXcHBWMXcxaHBNIX4Kend6aE1fMHtkfGEzPG1VSFBPPW8+b3ct
d01jeWBVYCNOVzJMS0NSeSQzIz5ncDxNP1E4Y2tVTEM+RzlAO0JUQGwwCnpYJV8jYiZ6M0wwRUol
WlNYVnNAa0c9dnVxJXZMKz5aSm1SKXlnOTwhcUNfOEtNS1hnNUxWeWZyM00/MmhPeUhpUgp6WClG
ciU1MlVgZko9KD9tZnQtOHJgfEM7RU9WKWVpdGhwcUVrZzglKlczdCZ2dyh2ZCl0cCMmNiZ5UD0y
e1F4aFoKelo9KD5wJHM9Nyh5cFkqVlVEeiFMVE17LSpwKjVMcT4+X0F0diNtWkp2aGlkRF42bktY
TkZqfnohPW1HdERjdnNHCnp3YkJlc0RhWT0jeyM1UEtYektwJCVeUjdQbyNmSzJWYVU/aUtGMVRN
b09wdS1PMEVWdFk3TF9qYyUkKjFOYmc3dgp6QmQ3d2xNeFg2cEItdEFQdml9PmB6UW5yI1k9M31l
em5TI3tUNTVacyomaVc4eGZMc2w2Wk5mZT9UTkN3UD1KancKeiVgcDNjN2FYdzEmI3ArVjNeXld1
MDYhJHM2XnpxUUZedllySVdvJT5lNEQhdGxgVW5TNU5DJnwyKks9T0pkT212Cno8OzFybXNDb0V7
Sz8/d1FBJkByRV8mcXVwaV4oN1NPbzIwdWpgOWNuOXRgNDstc2UxbzB8WklQJUtxTE0tWCV6cQp6
bFdVTEklOz1RO0dhKEx8Sis3I0lWQEFmaGZxZT94Tk0zdyhiPnUrc3NnKElYJXNscyNqIXx6QVhe
bHcjZl4hPVUKekUmfCp8SGY8Zig0M2FhKE1eWSshUmkpRnNHZVZ0Jl9IPUUlP3Vzancke2BFdnEp
SDk8PGNQJG4pbD0rSWNNKlcoCnoxSzkkM05TKXdFUDZjRUhvfEtHUCZxJG5KLXZfQDhMfl54dkJa
RXtsZCtRYSRvfnM/WW44TUBsenk1QVcqRTh3ZQp6NmlIaWdrM2A4PUVPTlpAcEdNbmlCPllWNjUx
V2hMXnYxOHlkdlh9TWUzaFVXJFB3M1djM1gybD8pR1BsZmJfKEkKenE4JCY2dWtMT3E1NUxEI284
RkVreUQmUiFwX3hBIUBiZ2Q9e0BCPmxOK0ZRc1JaJEBESSoxLXkkTyMyV2EqbntBCnppNmRiZjlG
e3ZBMV5fe3Z4YjJ0d21NWG58Zj5wRV5XUmdfT09BcTt4cj5lWDB2TEBqZ0h6TW07LUR6X19wTm0l
MQp6KDJ2RyVtdiNNQHI4YWg1N3t5ZThJTUB1U1ZLejZyMzRZJl9XVG9RQVhpJml3OWEtLXc5fD9E
cCZaRnJ1LXxoXjQKelE3Qj5aYzN7RHdOcGE4Xno4MSRxT0J5KSVfQX16aU5ne3BASnYqWFF2UHFC
NDxYNVl2Z1gxSlBldU52ai1UPkNtCnpuSF9yWVJSZDRxMSZjQ302OXYta0RBMT1QPV5BSHNFPEw9
SCpZMTd+YjEtZlM4TjNNdnc8QWRPXyZ+Uj5Camk5Kwp6Yjt9YiZgfiVObzdMQE5LekFvYD84MV4t
Q2cociV6eDYjfjtUQ15ZVTYrMU5HZ345aDUlNWh9YmQmLWhQPEVoKD4KenVNZWB4M1g4YzxmNERE
NSY2YSg3VXBzflA2aVhzKGR6c1ktN2BoczZvJjRRUUs+VUZARVY3OVp5djZuUWd8a1EoCnpyfnVE
JSFWdjRCaXFXPEdvdWZlXjA8YEg9SWM8bHYlTkthZHRwTisxR2dDRX1MNTwhUTM8eFZpVntka35p
T31CPQp6RH5nMmtBQm94MClqPEhKQHxkZyFUM3FuUVdmcntjJkRyRSh5JEZVRGd4dytFKmFwUjRk
UV9CeSM+IyNDUHRue0sKemJnTm1hQkNkeWpPN3BvbzJBS0AqYnpsZCFwKnVFZXU9fTd2bUZwPmVO
Yj5fe1pWSHFrPnlDWiV2c3AmSDNaX3clCno3PyQjKSh9ZkRIPG8tPlUwSWB2TnpDbSpsPG9GJH5w
MD82RFRlM0t3I0h4LWxiRVYtY2tZLVRVdj5oc3pWKkFjfAp6JURRWkx2UT4meDY4YyVVX0l3NUUj
al9BOWpCb31xeUc5TnNqRFcyKnQ8MldzZmwjLT5QRXpeTkgyUW9XeVUlJnsKem0yVUp9dDViP1kr
M2hSMjAxVyU/UVorJG11a3BGZTk2R1c+ZFV0c1h3YiVyanlGYG4/YTQ7M19YMkNZeW1jOWt1Cnp6
PX5PdEY1TFp6dCk7MW1TIVBkVlBEYD5IRUZLU0tIVFdsbGtHKXdrTEcqXnlIdiVnMGF8b21pdDJZ
YWxubVAkSAp6MUBFYGg9VX42K1EtWmgpNVomOFZPcFVPRHFzTX5GKl9TdEFjbTlmfkpJRzd3bFZ7
O0tVJmpycmpeRlkyMWNONGkKenRWIUIrPHAqTjcrPmV1S3lTb1V3MEE4TUs+XlNuMCpNcC0zWllB
JER5X3MtOXA7em8hLTx0QztLRiVsMlVLVlUqCnpDVyYtM2h+SWcwe2hmTH5OUlgxNkt+NTQpd0Zx
S2M4N15zUGZqcTA7JldrMVVYYkVDP0ApKVQ2VGJMdDA/MUBZNgp6PygkJEtDMCozO2duRGw8VSEp
RSpSZUYod0kocE5MMERnMXJCI1pobnVrM0x6UDYleVM+OUwyMW1ITiRvTVY4MCoKemteY0RwK2g9
QjJUY0Jxak1tVH1DJH5YMT1NIzJQMSZPNDc4N18pPUUzcm5ybikmdFoqYHZqS15Abnh4TU4qZUpP
CnpPUW00bjR2KFJjdVlzOzJraX0oOHpzN0pDcUAtYH14JGcxI3tQJm1Id0QwNDw+ZU85V28lVVRU
RlY2RjVCeWp+QAp6dlR6MGtuSWJxUG4xQW0pMzt5JFZpWTFyZnVrTyV+VSsoIVJqMFE/YXgrPmNk
e0JYWFhGUnZoTSM+PWFRRUpzOVIKel8wS0c7K3w4S3Y0JjF4QmJlKFA1TW9UeVN7XipBM2wqPm42
WCQyYXo/b0ZmdEFteXRIdX4tcDsmUmhNQ1hwSFRTCno4MUh9PDFmM2A2JkFGe0xiP2ZyVE1tcnU7
RHxxZ34+UlNhZ0ZMPDQmMnZ7S31nZmszanQ9byRecyMhPVglTjIlbwp6Kn48MSFvR0crSnxLMjRq
eiRrNHNmVyZ2aE57fDZ1NUIlUmJKc1FAejdqTz1pKVd4Rk0qSi1uZEFtbFdrT0s3QHsKejFJUG5n
XyU9WUJoIW1UTllAcDlOOXt3KlkleGxLIWpKQGxBVGBlR0lSQEpsdz9HQmIyNitCKEgkK29tKVhz
azdgCnpweXJySHMkYWJMXkJKZldjbW88fXFob0lzUz52UEowQlVYZmxLaGE4OCNGRWZBbzRqP1c2
QGlCVzx2OXJic1UyNAp6VHw3WHZOaXx5SjNZV3c3SGRFKj9oa0UpMUhzVWRFbmF9c2I9IUt+TGMz
ZGVhQT88QkVLKiZRPipPcjE2bTVaMk0KenhocElSe2V1YCg8TThGVVZSPitrQnBrbWpPVHxFVCV1
bHtxKi0xY2J0TUZWREpZVFczKGh1ZD1tb2d3Z3o1X3hSCnpkS1lfTSZPOSszcUkmRXxJQlpqZ24+
JXpJSnh6KUZxd3U/bGpfM1lgRmd4ays4bCV1dzZWfT4rKF4tbzZASjxuSQp6SlRIVS0hek9xUjZ3
UDMpeUY+OVYrYElmd2VVfHIyK0k7PiY9biN3NmooRS1rI0lQa01tYGFhTzU8WCFVIVIoUFYKekYk
PlZ5QnQtfGc+JDFXeXM4LSFUKmJqc3pfMFpFT2UxODh4aFI/MUtlK0hTanVJRUg1dGlMezY3PWxs
VmdMeCp7Cnp0P1k7N0NJfURPOFJ5MjB0RGUoeyU2Xjh2UlJvRD4yOzR8eGd6cmlHeEdhJSN3cFg9
MkMxRCMmNkptN2N5aVlfaAp6JWgjYm11azwteFo9dTFJVEp6aW0/WU0+bV5SRlIoeCZiJUBRTklG
fnJXMmk3ZEgqUHw3M3h8WDFGfTFDdmpUKEoKejdGLSg4U1UhRipeaSZlUSk2fTNIVG1lWiZ5MzB7
dCZsc0I+e19pJV5SbytUUT58PGRNWUB8QHp2eiVEIXVOMEYzCnpZd198RDB0MXtpczVqU3Y9Pnxu
ZEV3UHtXQS1IJGgxTUlvYz9EVyVQVj4lY2JTYH5HSTtoQm0zTV9zK2A4Pz5iUwp6IVNBbVhWTnE9
MjJPX3x3c0ZDT0dUb0R7eE1faTU7QDUtKE5WcF5USWtUV1NYVFhGS2t1JkpuR3VVK2FyM1N9Kj8K
emAxKHVuVktAO3J2a1lVYTdJfHRxK3NsPTFpK0EzNW80SVAxZio9KTNgNjgxR1l5XnNpek4zSzhW
UDA8Sl9Yfkp7CnotQnVMOzlGQEY2Zm9nZz09MjtxIzVXaj1jKHBpVitWeFU0bV9AOWc+XmpJPDJx
MlRLNGREQ1Z8ejYyT2dZZUo9Ngp6ekVKISFSPCVXYSlfV21tREVKR2cqbz9VcSpaTVFnVlR0WmVU
P3srZG59JEZRYDR0UFpXQi0mc0AtcShiWiZIQj8KekQjc1oxQElFSHA8U2RLbSgkIyUmeFhtMHlh
bWQjPEJ4XnFrbHx5Q25BVyNnM1p6QzREVTBBZnc3ZilRYGN8TXlwCnpfQj92ZWIqRU08RzVLfXdw
NGY3YjRDI2pIXzc3RFdKY2hBRSZSa0stWCZjM2c2clY4JHdHcy1VJktrS18jZGIwaAp6N35vcmxU
WUJKJWBXRmRsMWMxVyktXlRiSkBtSHFTYWRXQnpSI2lzZzE1ZWBXKDAhd2xVV0t9Q1l5WjhWMkxG
LVQKekFvPGhRNDRTY2gkJS1SRDw5dnppen07U1E3c2szeE5QSXVOOyNqakQtUGJZWWNrKzZXaFBj
OGprSlY3I0spXkhPCno/cz9ISlZ9Y0dBYHl2YkMwWTdVQz8oRkRDQUQjJndTZlAlNXwzRmBmez1Q
ZXFeSmh4cjZXSiYoTSlLUEdEPFcoKgp6Umt1JTBGT28xQUQ5PDhzYzM+djdoaiM2bih5OXU4Rms7
VSVFIXwhKlJyfFRmb2pvNSt5TEhDJVhMdkZhdTkpRGgKejBZbD5HRjI4PWdPZ0tfI2BRT2Y7M0tm
e3FxMWtJY2ooVk0qXzdqIUtVRm81cGhZIUxYXzB2VGR8Nyh3dDBPfFkyCnpWb1hOR29+Qik4Qz9+
aU1OX3ZSTnlIXyQ0OGErQkJSTjBAZ19EaWlOYiQoJilyaiN7YCZNNSN4UmZYO3leWkg9MAp6R3sz
aXBJN2tTSWt7JXlWJDVWY3p3UCpkJFFTQGRnK3E9dlA7TzAhO2YmczBlYTYjLUVLUTtSfGNWMz87
JUU4P1IKekpwIXxyV31HPUNYYWFOa05DWVBEYWorbH4/enhDRXFyVHs3YkgqRF89aCp7Y1JZe3wq
ezlVVmpTaW9TOVNoRzcmCnp0PW85JExePmh9emVINj1QQkVHUzdaamg5OWNBSj43dyVxIWl6dFh5
MVBQMmpfdHBCXmFBO2FPU3VQclZwI21XNAp6S3lAMmlaY1Awc1U8aT41M1A5UkFrUDZIZGxkZ3pH
QzNyfGNSTGJVTkxtYnp4WVF7Ryt5K3ZiKllScjJYdzVeUC0KelB8Ky0jT1dDO3BZM1VyP0dWUSol
cEtWWEpvMHslP1hXTz1HdmFMSCFjOVVJYC1ES09nSFE5RD0tezEzSWY1RT1hCno8SnxpPV9TKTtT
JlJVPjlJUnNhKT80cj8hVz5UcV9lblBMXyE/dW59XiMtU345K0pJbXY9KiNlTEE1RGg9VmBUPwp6
UUBvTUpsUktRazZKYzJncUQ/Nn4leWdNMERGSmlWYm95NTJRQDhXTE8tNFY5eDVAWl9jZGk4eEgy
WiZkdUlzT1EKejk7STdCSkgqZkZGTD1QeU9pTypLTmhUITM3S2N6dUVSOHtTTSNrPUowR3JtfHNx
YEJxLXpnbXlySXQyXiZjfiZPCnokODF2MHNtdChNIUk1XkxyWExUK3M5XnsjX1difmJ0I2VIb2Ra
SmFweD1MbSRKTipfUz44X0FvP1koKCtDQUBIPgp6X0RtdVBxNXN+NHQqPHwjV3QhdS01eC1afntx
KWdqVTVNfCRkaDx1Q3YrdnE4U3tVWX1FRnxuYntpPnp8c3VgalAKektsfWAwSSFgaT9yVWBLUXh6
NTNCR0ZfK2M4U3xQNXBudihfeCM2KnhjO318PUg2NipPITJfTzRFJG5xX3k4Xm9QCnpUS2ptfC1f
fHB1QnV6PiFzcmcrfCRsU2tNT3RlNVEtd3ElT09fWXV9IU4jLSZMUnI9KT5XREAwNlRxQSVfdmAo
Kgp6I3l2Nih0S309Tm5LNmNMTTh0JWstPz9ubWBpdncoMWhSalZGN2NfazFePlhncDY5R0xEVWVf
UHRQM05fN151SHMKenN8JmF6P2RpJlE1YVdyPURmRipqM0QoMTVHKjZjRClNUyFqaEk7TWxwdGBl
Uzk0YkZgaTcrTy1FYFRkblF8ckBRCnp1IytJPUdjTlp6bkxEeFlYLUA9KXokU1d1KkdKMiE+SnFr
UU89Zz8hNXJzQ3ZyKSl3ez8/Q1crZW14UjlXTkRBYAp6KXA2dFNWYDZ+Zj5qPWQhTXM7WXlpblM3
PjUqUUl0P2hzZE9yWmVYSHJjTFdCZ3JmWSU+I0lWdzApalU5QDV1T30Kens5azQ2RTZJI21MNSE9
TndFdTZ3VD1vPlBIPGVhKDxoeis+YH07KkJWJk42PEljP0t9Ul5VZz85U25weVMrIyo+Cnp2aGpm
dEUqQy12YXgoUTtYMFZVMkN9NmVWXzNvNU5kVygtU1JXdy1CdEd8JHVLITFANHtoWjlfbll+MTgl
UWJ5OAp6WnwoY28tLWtSRytRQ1MxUXRhNXBYTjlFX3g/ekVmMTYjY3EhQUF9Xy16YXJubz48elpB
NnsxPSRRNmFBQWU3dzgKenhZa2RLcVYwaHFDS3J8UlEyUC18TUkrT2hYJCFKfnNSITNIb2txN3Fu
azJEJkxDcj5odzYlWlBOQXVVZTMyfWcrCnohfmdUX2o2QiNeV29wOWtpKWhJfFhOWDl+P0lhelk/
ZXRjbjApPj1jO2ZZRj1KZEh6ezUrTzhrPUd7fENrb2RFVAp6YD0wRnJBJHd5RnM+KEV4NC03KUly
UTtaKlc3JjxndVMoTCFyNy03X3FeX1NQREBtIVRgI1BYSlQmcEpkRERBS28KeiRmPklmPW9jOWtv
ZCpCUFNYVU1aK09RUWpSUkxfejhqRjlCT2JNe0pPNFowezc9Pz0pbz1eWElmS0g5I2V9WDhnCnp4
XjBSaks3XjxBdGJYelVMZWkzN2ljen5hTXplaTwybHckSit9NjQ1ckZsaVIhWjNYdnhKSVMlKmQo
cnwyKiMhWAp6O1ZDY0YrXlckbVIjKkE8S2ZrPDRhaHpSYWBfXkVGRUFxN3lpR1hqVCZVcm5JZm9E
WjN5ZDVMfjxpSllQcmFjNmIKenpFMkMwbDFuJjg2fDI7K3tCbyY4IT5pbGpyZjh7UztKNUVWZXRC
a1lfT15NaEBRbXhkTlE3bm81ez9LMlVINn1HCnpkSCt8Xm4/d1R4R3Ricnd2TT50YVdEYU9gYStt
SF5SdzYkOFhRbj0wTi0ja1Q3K3M7JFclZXgrdzJ2TGhYI0I4Ygp6KClqQ08kbl5KMmY0RSt4UzI4
eX1UfSZDQXJ2ejR5NVZMQDlxcSgwMm5AfSp9VzRQZC1jRGg2Zzl+NiVudmhgciYKejNEam1UdjNU
ZFZCLWJjfUM0VVhecjN5KGtkd0M8NEUobUttanB1aHklWjh9Qi1vS3hLa0w0ZnxHM1pNS20pRjNX
CnpUPmB5SW1TclN3JCNDbjFpeXVNRWxQdDQpYmNAeEVgWDxtTChIUjlFZXR8ZyZlMEFPYiMmPV95
d3VKO3FUJD9wOQp6U3kheVFgTHR3KSZCaSs/emp5NiV0MFE8fiVCdVhARyl5Ry0+eW9mKUhWT0Aw
cVBZbj8qcVBEYWNEJkdyPlZ5ZVkKejJ1MkB8Y1pMRDdgT1FvKVB5UD16IXZJMEF8RUpIK1NOSHdA
RmM8VWV6MFl4KTZjTz4qYUEhTG9yUXpjVEBoTS11CnpZRDIqP1FuSnZXPCVnMj1uVWl3KiM9SEo4
Kmo1NXtsJnpBejxvaEdVQndoWktJbUhlUy1+RHRUPTl9RlhgKVQwZQp6dm5OcjVmK1ZkSDAzJDdI
IUFDSGtJMVY5MnZvKG5ONnxLP3o9ZCtNIVRFNWBldXR5cmVfT09ZbVRsWXNBVmJ0WEYKekdCZFAo
aTE3ZlkpKVRASXNORiY/aC1eayFBezE/YCF+QGIrcWM9NEVPcEVZTjxAfV8ya3YoMiZrcChEcFFM
MGI2CnpCT15vUFNULVY5eDlgUXNmV0RkdmNiTGdnN2c4QjkqJkZ+X2FqfGR1K3Q7fDtEc2NJP25P
Wm0wWHstQ2pVamhTKwp6QDQ7PnU5WUVaXzJxWl5MSTF1UW50UWwydlZ7bilKLWQ7fXlMY3x+I25F
eWxwTiZiJiFiVChpRTB9T3ZqbFImJmcKeiVYVDdoRCh1dzEqbkN5Vi1ndjV7S1RWWio1M3E9VFE+
Q0lLIzd3KkJVTHVYWCR4JWYxcFBFMHAyeUM1SXQ7UGlKCnoyVTRveU5UNkFsZVlCTVkjLSZCWDBG
WTlzPGIwT0FpKCpuKCtjfT85TXk/UitNKm1UOTh+O0VMcEchTHxueTt4Qwp6VlhZcmRIOXwmNW5z
Q0phPjkqOUwjOUs7d0BSRTd6TVRTcEpOdjFQenlWWnAham9pbVJScXlENkY2bnNSVXc2dyYKemYj
K3NDYXg5VmBWcU5qPmtsfnshSEspKGVKJFQ/elc0QkJ5XkRxRXprQXFeIzU4PT0+ankmamB7PmZD
YlllTGRNCnoocWdKc0RqLSlrN3l6LWtsWmxtbio0OWdOb3t8VXtoRGo4PUxBRSpIckAydSQmWVBl
aipLPnhoM3l3TmxWKSk3Kwp6MClrK2V7fVpUSXtRdFdxMFlgKEktQDdGRD9seihUTihAOHJKTjAw
dkhsQUphKSg8eElxNiFRVnZWKkpod1c8I00KekxyY1hRJkN3PjFZUGFHe3M+OSY2WGVVYzFuSFdQ
eShseWpAOHpoYGFfbE5CezMlIS1RY3h8YS1lbk5OP1EoUDcmCnojdlU9RmdibDZUejBQdE9hdCt7
YVdBblVhUkA5IVNNWEJ6NWdUd3tDWm1LcERvSDsqQzMzZHpNdTRub2M4dW1vPwp6M1VsTXc2amRG
UzMzZX5YTjd6YjxJOytKeV5mVypDSEMmKmMjKV5eMUJaRWBpK19oND9UX1NRc1VFa1dkbitBeTcK
enswOUszMW1tQHZ3P3tEZyp2T01Fckg9PTkyaiZ1SCF1KHh6Y2ZaJiZQSHlDJGFgZ0xGQH1LTTVU
Z05xdig3MW92CnpgckVlSEI5ODJrcnk/VnQ1VytPdD9rRzQrYHhzMkY9KytKZEhNS05XRVl+aFRD
RWEzeV4kJCY5UnZOOXBVKDh9Ugp6MnVBRHcpVm8wITNqbXthU0QxYlVKRSpiJjE5Uj1RUGZXYE4k
QXtiMz9aSj1yZyNLPjQre2xKPFFTKVAlP0NqRS0KeiY5Pkp9MmxjbSRoSDMkdDc9IXJmV2V2U2Yq
WTQwcXhKVW11ekt+VHQ3PjUxKXc2TUVNRFAqKSM0Qyk4UFBEIUd8CnpSd3U7YFo+djVPIVp1TzlH
Ny18S3dEZW1iMWpOJGYrMnhYRSojSTBWTTx8a3syeGc8SEZLMUFENCViUVIyOyo2Kwp6dCNmVkVT
ZStDfkxZSGVGWHxMYWpWQiF7KXI1aldgNmB1UiRDJF9KczREO1NUWiteNTU7dFY/U3NsUzg7Xm5G
QGsKek1tbT8waFJrTnZtQmchTlJ2aElkd3ZnJmApLVI2X1kjN0t6OHsmJEtTKHZrSCk+OzEoTXwk
bGk1ZChURz9qTFgqCnpueWVEV25ueFNzV2RyYzk+eHxzUkZGPVYqbXh5MDQ4O0tKUj5NNjFMSWYz
UkpvNCpQJWBQfUUkb1FRT0k8WX5SbQp6WFR2QnwpRCppVTU5UjxpdjMyNmlgPEYzeCRsZilvZEMk
emBeODMzbXZlOFp9RVdUbURKejBjTlJvYzkjSW9zYXsKekRmI0ozZiFSSlV4SFZwdmdFNDElWmV9
cCstO3VROzw2UUhQJFokNWV5KSUqSHMzJUA7aTxDTFMhJl9wKWV8NmdqCno+VFJBU3Z8SU54Ym02
QXRWWTVYJW1tQSspd0dwemZMWmd2Mko1dnBPQyYoXl5nKThvKzU8KHBCVXJlUSVtfHZ+bQp6RlFN
Z0RYXyp2YDZQJW9uazRORjM3M1UyVyk0ZyMwVHtxQFgkdlclNzw3ZyFpWCk4UXtgWEN6JW0/R0ow
I0B0JngKeiV5cGpVQGszRCZPKXZnbyt1VHN7OE9EdiFKOEdpYW9mejR5ZWhsQHU+OWFEY0dTblFK
eH54UX5XV3woNTliVzZGCnpEcGRRelhlPShPMmpINyR3d1RoUDBCYExsUF4qfl8pdyFUN2Q/RU5M
YSNBMjNAc3QhM2A4USQ/aGt4V35zOzkjUAp6b35YVjlYKz5JfjJ+aWNsZTNWd3s7Vk88OSslfU4l
Xn5Lb2JAS2sjKEgpMGtwRGBUUF9kQ0w5dT8wbHRJNilxKlUKelJvaUV0Xk87dyg3Qzkqaks5NyZC
Ri13TFdaZiNHK3J6NDwxalI2RGBea3Z+TTtBclB0MEM9aWpgMHNoY1lEckQhCno0KUB3cXtjMSVH
Oz5hYVM/Ylo3JnpeWnxNekEpbTkmKGhLclUzdXBGN1E+VCgjT3FlWntsfj02dm1lUnZ5RCE3dAp6
JUxlKSNyeFMwcV5pd2c/b0JpMCVCYUp3YHk0Y0N5NkQkOyUkZyViOWp6YnE+ZDVNbDduRSVWNkd9
SUU0Sz0jTGAKeiVJcCsyQilCPmtNNmtiRHYjPTZoYVF1VkNeN0BqKl5xNlhsUj8kaHU2SmE5LSot
bjJDIzRhRXt6SztWSWx6dTVDCnowa3I5ZFRWeS1OYGtje20jNSNGYUowRWpXWjFjRTYzYlVUSyY+
ajkqMXFwM2oyQ3FERlRxfThidllRN08yRDUmewp6QyktbU0/fCpsdz1pKWNKd3Z2REV6cShwfUsh
ZGJWOVMpezVKeVloYyU3VFUlOHtlVUo7QWRndVRtPkg1PCRyUkYKek9JITxsPlUtNkNfNmNpOFhe
O0F2QTxmNEI+R0NoUihVSj9Wb3ZPM01hTEZ3dmYqP2h9VkNvbygrKT1YNV5kNWVQCnpXI0lJZnAo
PFFGKWlAZDckeVkkWjtEYHxAR1dkKCFvVD9KWGRkJDFacH5FT1N6bSZrSGJqSl8taFo0eGVmSnRB
LQp6I3xLUmpqbSUhfFBlUn1gdSFMfXhtQGk/Q3hRSndPTz9TeFhAVVMxNmhIRmpQOVN3YyltJnhN
PUU2N0M/WC1GQUwKenElZiFsMENMYmpoVEdjWCFzY1YkJkUxSTtqQk47VXchZitDOzJvU0NIbm1z
c0JJUnBeNmV0Xz96cDVGPnhqeHYmCno8Yn5BS3VkKiVUMGFMP3RwNlBHfWhQTD98T0wxdWJ7VnMt
R0QjaDl1XzM9WE1JSlJWYCljJnlCQnwjZk5KVkJ3dwp6cyMqbWhPY2c+cTNXK3NpXmh2Qk4jU2Fa
KVZvI3spTkZSbU1BZjVXUis2TzFHN0RiV3wkJHpaZVRrZmtlWF9xbEgKeiRRe3JTMn5MeEtWK0tt
JSFmXnhnVzVfUEJRQ2BnflJ6P2Q7O3s8dCVnZDhzUEQ/P0g3cWU5KmFwIXBrYTlfR3NRCnpKSnhz
MmpwQnhRTnxMTzEtJExWNEVecGxqI2tiaWF6Xn5SUSQ9Sz0zSWE7Z04tZHp7PSFFZGFmdlFZKjQt
YDFGZgp6RTFZWjYzbTs9ZzRkbkRDU0V6YytJWXxWK0ZiWDhKbUBEYkV3TDVueHgrJn1tWmdiO0Zf
aFF1SiREfF52WH0/WSYKekkwcCZ2SF5TdXwmPXJHREhTMGAye1ptXkpjPDl0Y2slKDdpe3BfWnFE
aV4hUHcjVnhQUGh7anNIYHx0U1RqTWh0CnpJd2lHWUtnP3hNWWVNd3pAWVNIZWNBe0U1KT5FY01e
SnxLPjNPNWMrWWBwc3RJLUBBeisjWGlWeXhfI1JzRnBRPAp6b0h9Qz57a29ga1RSdFVjIWErYERJ
Q0R1dldqQE9PbmJHeDhCSE54bVVLU0Z3VGl6TVhxQHdkUWwkOyUpXyZ+KUoKenhuRGVCeUJSJlRZ
SkM2aUFOKjBeKl9lfjghOEFSKFdldz4tZ0w2b0ktM3Mmb0pQUUdEem00dGcrY3A4ckZiTX5PCnpX
YkVsR3coTlRyVDg2bzRHeVVwUGoyPSFjS2I3TmRnZUtoaTdRTU1LempaLTkjR2AxVTBEdF5hTCgl
ODk+VlVzcgp6QipQaVBFUSpZT0E5YjUzR0dKP0hEMipBWkZ3dTlgKDRFITFZMFRIOHNBb00jPkda
U2d5JHBUO2plZn5JYGtuNXsKelBuJTg/YnNnJShrYzlpV2I2OSh3eighU1EjTHZuPnVsTn5yP1M7
cV5zVF9ITGclPUEyTDVeIUsmVUFHWCNNUz8hCnorS0s1ekRkIU1De1dgPkIkI0FsRHNGWm4qeyEx
eEdZfWpycWYhQnxUbSFyZXw2KHZWRGIkPDxzOz0qMWNOPV9XYgp6OHZefn0hRFkjXmxrKlB8SFJq
en1Zc2pDaHRXfTYkJXtSQWNgQjdQYClWSXBZYlZEUndEaWhxPFl6dVB4eWpoU3kKekNwK01BK35t
JChRfGZuKG4mbSlkO3NkQFppU1h1JFRsXjJUeWVHZiNJcylrcjxKZU9lXm4xMT48d3dQKjVpa2Qw
CnpHbTBxYDt7aXJhcWg3TT1LOS0/VyZ8KXIoUCZMRjVKdkVFUTNEbH11RUx4ITl4Rz5wOEAhND0x
bzN4XzIlOGYpMwp6KH0zRF82JGgoZHVEVVZHTHhBcmlwXjZfRFMrXjMqRlVlRmBgSHpVI2UrRVBC
JThkKHR1PldpLW94dGkoN2JuSjgKemF2NGl+UyNMa25DSnJLQkF4a1BVYWpYTzxOVW8hSWhxWGZe
eXs3cT4qRCNGfnhyJCtLMj1rajcyYlVYbiZ1cktqCnomel99JFZCMCZjeDU/QzgrRXpuKmN8TlI1
PCEleEdmKT5hMSRzX2ZKVFNqQEw1VTFXTHFxWWRCaihrXypMPTV4Sgp6Wk01cmBOM2lQaEJ8NEds
TWdFK2V1KHAjTDt+d21jKDJITHBUOTh0MURTKXBaSCZkME9UV0UwSGR3Y3VlWiRjK3IKejExU2lC
O1FNdjBJWHkrbEckMllJbGc9X1RIdyRMZG5IdVdLS3JTcEAlLVU5SlZVKzxkR0drUn4kKXxSemVM
RSQoCnpFRn17YHdtZTEtPjMje1ZHUih+MSVSK2h5UVVnYHhiRjMhQjdhdiMqJHNvfFBAdjx6fTYq
KD5+VnR8e314OCt4VAp6JVRRJCgyIWpLeF43YGswak90KSFxKU8qP25GaGBieFMtTUpASiZ3ZmdJ
WEBDVTkpJClCe31iSGctdlN4S1ZDVmoKelFYPE11bWMqQSomYCh5OG5yYW9uKXpGdDc3Q3dZTWAz
M0xva1Q9UDBtYFhgQWo0VylsNkd3QFJpQmErZnVXOClMCnpBazJ7ZnRtdWU+MXZjXyticl4tYi0q
Yyo0YzRHRzdWakIjKkZGWThKTUxmaUtJdF9iLWFTI2I4VlFifjA9WDxpdQp6KDdvPjlnfThyU2JI
OSV8OWU8I3khNzhvUm5vIV5fIShWU1hQN2tlOCRxcXduRjBlS14kJW1rcTJpSGNvPT57RWAKeit8
d3RBOHM1TjMmO1VnOEk5R0F5bmhlNSZAcT1ldCYtYGBDZCg9YU9zZCZ1fXcxM241Zks0ZFpHUD53
N24kQWNLCnozSSYoYW4wUXJYLWgpN287NlY0TTN9TFN3Z0xidzBiI1Q2JEhlSzJMQ1BwNFJDRkBH
djVTbE0+cUh0UE83WWtUWQp6aHVBPW87JFlNUUBVVk93P3p1fWNwTD4yeC1BR1c5VXRrYXVqemJx
TiVISkV0MWlOVHp4R0RLUmYxeXJ6JG1gcGgKekwhantOdm1OTF9EWlhNb1VVd2w3K2l5IStfMHkr
SkN2MyhDRDUjMSpfdkc+NzckUTdBSiErfns2YFBKKmExOVJ+CnpCTWtKOWJqSD1+Sit3dDwhdX1y
fjRBcnRyWkxhanQqOUtffW5geylVMn5pfEw0UCl4fUNDOHx+PkBCYVBJPCMkKgp6QiY2SjI4a2RD
T0Y0LUlwM29WRTY4I3NQQm9LNExNTUY4JnJPVERDdWdqMCtIZ2c7YD9taGY5fkhfTTU5OHRDNkUK
emszMUlTTFpLUEkhOzxPdD92a1RTaFdtI0MrSUo3fkYoQEcmUSkxMFk8YXUxU2lTSiozSG9eZ2lv
Z1FqSC1aSHVGCnohcSFQUShTejc8I0o1OCEwISQ4fGglMUwhYWEwUUQ8TkxUcG1oKyRnO0w3fDFW
dyRLSDt8KzE0KVN+bjNeIUtKdwp6KVNmPHghMHBVZnRPYlUtXmpLM1E1WTFiS0p1OVhPdSV0aCM7
akNTZFhVfEE3dFN3JERPUlhlKTt2LTBwSXxTKkcKekNtK0F0VygkWnk7QldiUWEtVWpte1c3cHhW
eVFNfDUpYkopaW1vNXpnSmpMRW0hb1U5I2QlMHdGPWMlJlk3JjtZCnpBSXtIbnM5VHx8bnAwM2s9
clZqb2dlXzF4RGZnNTRmSXpOa053N1khRkkmO08qX0h9YCYoN2tlKlUjYXxOKHxSRAp6WChaYzFS
bSVnSEpVPUorMTM4XmtvS3BldUc5R0ZzXmdLfFgzVz9VeXQzNFBYUk5+VXopSSg5RyU0Kjs7UzF8
NUIKelQwdTMtUlR0VThQKH5La2NJenV4Q1BOOSQzVyh9bUVGfSpESjZoKUAkYUpPRU8lTSRTMUFZ
SWs/NER4fio5R3Q/CnpJTklPUF50UnxTc1VCOT16YSFieSs8UGBnN2xqcUU/QClOMFhCQ3ckeUJn
U1Y3QCh7M080Q1NXeTxkIWZnbG88JQp6MjhHQU1JXlZndWp0Nk5TRVFtandDbkVCJTtJSWJEITFf
JmVDbjgqMkhreD00KFYwc3pPWFRfXk5aLUZwMmpkZzQKenRlTUtUTSM5Y21Naj5TMmtFUiZOdTxu
I21HdlM0VWMlZSo1aykrWDJxVTJBcDF4Y3QrKE94N3xGVEN9JE9BWDdMCnp4OXwhQnl3YHQwS2s2
OThoUTAjNUppLSFuUG0+fSh1SGw1YnZMS2hiKX1aWlRLUjdlJT5FUDlzcEwyTnZfdld6Rwp6eFJJ
VFNta2ZwI2hgKWxje3kweEVBUyRNZkJFYERzTDhkfEl0bHA/PUdHVSVNUTgzVzlgfG9PSjgmP0Z7
d0A4UD8KemYhPDdfRVlKVkkoLT5FTmFfWEwySW1kJTctNXZJNSR8VV9tYFIyYnZXUTN2PD5oXjV1
K1pTPGBzPXMoYWA9fSVKCnpgO0R0ej1nQUlqQVZUPX15ZTFSQiFIaWU/PDlZYVZsSDgrXmZzR2t8
LTZNY0NNXlRNX0BgRV4/ciNeYmFfXnVqOwp6ZCllWEBiNztAdGhGdXVhVk1PNlZ2Oz0hQ0J2SnBz
ei1HM2JyZGgqVGRPM2w+M34xQV5xWHdPYiUkJDBkVGQqNmwKejMxRkwyRXVoLVR0SUY4ZiZhc1Ax
ZSE2SXFldmtXfGZZeWV5XzBpe1hqbV8zaUklZllRVW9HZ0E8MzZkJWIlIUJuCnpWKyVMaFdkSVAm
IUVDazE/OVZjJnEjdnlEdTFQckB1UEBUeT5uSztMP2ckRX40aFd7bShgMCFoZ1NVYSo2Sl9NVAp6
JEQtMGkqNSlqSiheeGFDZ3c8QjwhUVVGUy1wMCEjQnR8ZFlMJEQtVWZjQEx3QkdhZnRRYmNSPSE3
KSk3VWclakQKejtaO35PcUN2d0JHMjY5LTY1OSF7dU5tKk9lQVQ7ektOZ2QheVFuSF9MJWJVS0hE
bHIqQ0VvenVsSVVFd3cpa2g8CnpxV0BJVnNZPUVTcXgyPWBqM3Y9bkNpVj56LVd6RXF1VFhpZVd4
aS0kMng1dCgoLSR+T1VfMnV7NjRPQTxibX4xUAp6cSFAZ0ZeUnp6XzZ5M2orR2NIMiFNNSowNWpN
Z3cjYmJtY3Y3MTZTOFBVUn5LQ0AqWFNpNjt4PDMjOUJOQmZmMnYKelJxUGQxV0U9cW9QUzRzRjN7
WmI/JlFJT2FWRUNeMV5maGsxbyFeT3E0bG8xbkBMKE4pdSUoUVJzTiE3cnBHa1c9CnptQComRDFC
OT8+O3I9T2cldWVsY0heUG5DSH0/RUFKZ083ISM1cGlZMX1tJDltSSE7Ul9rMTNNYlcmTHtFQipm
agp6RDFlTjAjQkV9KHJ3XjR1cm9lY3ZXdlB+ZW9oWmgzNSlIclpWOHBUQiFDSHJCaj9pQUpFVFQ0
QkF6MllNU2hNIzUKekdEUGh7SDUyayh3dHBpJGVZeWluKExVNW0zNCoxMElaT1JfJGZweUtYJiVm
eipORngyLXRIZnxkPCZ3MEExeU8wCnopQCtkKnNOWlhUbXVGZiNkOGM7aEs2P00tWHlMUXhkfDll
PDN6OXVvZnNHNitSRDZiTmtHbnpJekhJaXpqKVZwIwp6OzIrX1FxMCpldTF3TTtSeXMzT3JUYiQ2
P0tTMCQyc3JCPXx5JmQtPXglaUpSM0gpQE5XOytkb3V4PWJsUjhZWn4KejxnIyR9cXpKPEI2ZVN6
b25iUUJFJWZFNSsra3BVYykkQzVLYkZKS3B3TGl9P2pQdigrRk9NKzJ2KnEmeFkrNVU+CnpIfXJH
I1hsY0x4anJafSgjZyZvbyl7X0BVaT1AcH54KHl6JFJkb3tBSVg5bE1eWnxNZmI4M2JtcFFsXlFg
cD54JAp6X2JxMGxMWHB5O2QyKl9SNiVYeF55b19KeXg3JmJpMnZJdjBPTV82V29tdXl6Kj8je0Ez
ayR5MXs7MGkkQUFAUk0Kek9mZlJUPS1PMGMjTHxyQ2RNLSZuYGYyTVhqYnF4Uz5gc3xLe2ZnVUIk
czYxNTVYPUVtOXcmZT57VndHazA5ITBBCnp7MEoxalJRKWRzTFoxP2oxMXJobDZ5Zk1gciV3QzNY
T14jLWhEPCQqbkA4K3g1bnlGPUohMTV3emczNz96OVl4Owp6UE1Sb29DX0RxKV8qOGRjQW91Tz9N
Wilgc3hNcGkoUXFIJTM/VUNCVGY1VipuMVd3UGBJTmZIbDZoZUhBenYyMGQKemhXdCtUOWMhMk8o
I2xGYGM8U2drMzJ8K0E4KFVMZDhKVXdCb0o1NVZUSnVSY3M1UVB6N0xHbkwkQkshY01lY3FtCnpi
e2pFaUZYfHskLStfPVUhRUBAU3Z5RUpkQXleS0JLeEIyQkVqeWhUbzF4N21KVj12X285ZSZmR0Z0
cjZ7NEUhRgp6ST45cEN6TFp8Ui1ZWVhgPmIwdCN5TmxCSGUlRXR7WjFOWCE9Uj9IZ3hrSiZYKHcp
VlJrNkp1M2xxa3h1SzIoaEAKenQwbXg4eWFHU0NaYzJHSjxFZnN7SjBvJllSMXROKHpReSliPFJ+
TD1KMnZtYyR0JFJDckVhKjAkSil1TlJ+JXZBCnpebCNkJSFyLSRIWUNreGZAd08qWUhKMFYkWHtk
aXpGKV9iJFZeJUkpUWFDdGF1P0RtYGwjdlZrMTRCMFdPSXhmaAp6PiVtNSRVTDImd24mPj9QPkto
K2djWG8hK05XNj5yZ1QhZGhgeVh5ZW4wXkYqc0U/cjM8Yyh9TXlja2NhMkFhOW8KejkwQkZMMTJf
Sn4+bElrVUc/MU5HWFU1UDFgNCNZbTJ+U29gUm1UR2dIQi1MS29TOEQwN0Z1TUcqRWdWbVlMfGFy
CnpxOTB+ZUxfbW53T2kjUyg3RGUpNE9mPz5sdjZVdCljeG0hP2hiNSRyXzllQGAhUGNBWVBVZXp3
Vzw1T0hUJFNPMwp6QEszejVKVGFtTFhaNXYoOz5TbG9Hc0smbj0rQCgoM0dxYXNsS1VJUEU1LW40
YVF6aD8wPjR+QlpaandwaX14djIKeiZneVU9STRIMy0zODBIWEoxNDVlSWJATl5YQn1aPWA1MHxX
KnswbFJYMiM7UzJ2eDVVTXp+Png3aH47SF83azRhCnozYXFmekgpS0I5dkJCO1JEMm5KOWhuO2F6
MTZmRjdvJU82IV9gfiZwYWNYJlM/RyklfldtIS0hTHZiUEp1K19JVAp6QjwpanA7c1cqcDQ9c0om
OGIrekx1b0FFYWhhY0VfNzxNPShZMEpPXlImKXAoYE5RRHZXOXNXdiZSNXplQ3BGcCoKel40fVNR
dXREYUJhREo3X2NIQTx6bUdyYFc8MytJSV5pclNBPj5pNyp0JnRCWUI3RldqSmdFN1lHbnFDWExl
P2FzCnpYa18wVXNzN2hOa3FfTkQ3KWQ9WCp5JDB+Z01sI3REQllxN1d8LSRuKCRXWVBDYlRocFdR
Wm8rR3M7a1U2U2M+KQp6KSh3UjtXPUZwTDQpZnwpT1dsUS1OM18pQnooelVramoxVGJHLVJRJm1s
QkhFTThuS1ojVU1xM042OUxhVjF6QkIKeks1PXxRMWM5bjZKSnAxeHFNSmIhZm1fS3U2eWliUCs5
T3QhbTFLX0t0Y0U/JFo0RWNrT0I7OEI3a0J7SD4qcV9+CnomTWIxTlh2IztZJT45SzR1MT1BRmR0
JSp6KD18RChNYEw3aDEmKDwxZ1N1a1chWjgpZFlAKHc8dFJjdDRjYilCSgp6dkghXjdLMmE/Tigo
MmdvKSM1cX0mdWM2VmgjIT9nLSlZUXUtN08xYVFzMSp7QSNZWHo7XmhsY2RPeD9EIX02R1cKei0j
KDgrbjNkT3NueUl9djVyKTQyKUhjbUNhezZVYWdiX0J+JFFgK0hJanp4Zlh9UTEkKH1MV25fdVFT
YSl1YnBiCnp5WH4mKygzfFlDKWtfIT88JiQkPmNAby1PemBDR1d4P1U2RTJlTWVBQyZMPW9aSlle
dT5JWF5NUVlFejVDfX18Uwp6Nlg3fmJNdjFRXyQ8VE93KXhFMnxEOSRfSTFmSClsZW8xbVU+OUkh
Zms8cmI9LWdtWlFQfTxGRldxIXMhKmRBakQKenhtXjFyO0B8N1kqZnRtOWJ9eCo2U35VdytLRGVM
dGpjaCZ6SSZBLW44NThNc09yPT0zdiQ1TnlHTllIdFVNRTdzCnorO2h4SDxrZFo/QmklSF5UfjN2
blV1IVduIzVtbTY3SklYX3F2SmtgOEM1TU9BcnkrI3s5TCM7ODxPSFRqcUsoOQp6YUg4Wm9NN1lT
ez9LQm48JSlxfnFtMHowWU94MjN3S3BMVlBlZXk4PzslQD19WTklR18zRWc5WXlWcmVUaG8ybjUK
eiM9RmdhdF5GVjdIUjt3ZCtWbkEmXlFPK35JLWhJey0pRiNkclFtVnEmIUwzYFlmZitWa2c+d29s
Kyl7cVI/cU1LCnomTjhgR1M4JGh5OFF3R2tJWShXQ1hidD1pNnpFMztIJkRibXV3ZFNvUVg0c0NY
KTsyZ3N9SGZgJXMkX2FNVVEoMgp6KDUoKihUQS1tbSorZlNEVWkxNFI9Mmw7NDxlU25PeD8/ZEQ+
ZkBmOUdsVCZgNHZ7P3gkcWIpeGVLeDlkc01aaSoKeikwRXxfVnV7QkpRQz0tdGpfaTJOaWswbi1H
S2BiNG5kdHg8eFB9dH51alh9TTJgS3psTHcxMnZ6ZVRoc1JKLWU8CnpQVWRKTl5teEkwT35HTy1y
cCtELTBjMkxrTHxmbU9ieztrRyhVeTBuTlZaSnkxSjlwOT90KnlvSS1LPV5wRXJsJQp6YWYxYGZU
fXRsKD9KcURCcDNJUm85dCFUI3hEaGFVbUl3WUUjKyFkOVhAdGU1UFJfSFp6WTZ7VTVLUDU/Jm19
dm0KenxKVGdJVFNnOHNgYnBzSGl5fEBzOSRpPldfPWZ3MTsya35xdkRkRTI9ZiRESjFERFl7bHJT
VEh7fWVjZSsxO3YmCnpGKDg7Xk4rQ0hnc08rKSVSamd3Q2lCbGkpPVZzbDs2RkY1WXIoMXdVSj5n
JFlvTGxOfkBkJnhkWUhuWFJgUHRiPgp6Jm53c3kmKVhKV2AzK3xBSUdMIX1uOH41TTc+O3tVaCNT
NyMxXjw9JGNAeCM9PzNoYngwUyN3WD5iSz5mRmQhMWMKem1nbUFvQ3ZYMT9EOytReHhoaUBsQigo
e3xRJSo2OXBmZTFJZXR8UUQlWG5EYGMoVXxsKEtxeHgzemk3IWdEZFE7Cnppaj5QS2dnJiR4QzQt
fXZHcTRVMDh8b09gVVk/S0BCeU1fUG9lYF9GS2ZWPjRgYms2PUoxIS1Zai1eY2RuPileaAp6TH40
MTU5cko8SUFvbEV7VCNfSHQ1UlRHNzEqMXg4WTtieyR1Zz5zJjFkT0tvZzk7T30xUyg+MHJeWjJA
PnUwUUYKelYxYn58NT5vcDArOFVWR0cwaUMzckA8UnZpbzspIXUmOURWPXVYNHY9RHRDdSYleVZY
NElfMFVJalAoOUkzUFg+CnpuQ0NvO3pfbDt+d0dUYlppUm16LSlSR0llNTt7PHgjeHJvVElwXkQ7
ZXQkNF5RRWBrIzBBTG52WCF9UEk/SElBVgp6Z3A9WWcoIXhCYG0jWD9ld01GKElDens5cFZTYkhW
WU5NZG1eQn1VdDNmWTFyJFp1UlkoZE1rSntZRmhARXIlUV8KendFZ04tXiNFJUZ0KXRVPjxMN3wy
PSRXQiMpP01nMHF2KTRkR1dxZn5Te0xnc0J0YF8md0tReS05OGBmKFd0O0ZwCnoyWk1SJllrUloy
ajM/RiYoeXNMSzV0SGlRRnF6VkBWfVRgTUt+ST9sZjxZamQjczcwbld8RF5Ce3tfeWVOekVaaQp6
U25FWkllVCFVT2w9Wkt0P0FZZVZyfDBZSSsmVDE3U1NyLTs8VUhvIVBCWE9+NSFWeHB7cy1BXmUl
eG1vV3dfZnkKejl7O2FMWjVRWD1NJTExWCFDfWJUTVdoa1YqYCt1PGBkdzh2OXFyblFSK2hLNHR9
WFhQKW5JfSEjeHZ5e3RtRUdpCno1RT0wSl4/PT81Zig4Mzs1aVYtfkV5Q3s8Y0M/M3AjcUcoVkRa
YUpiK283TkdrOGo1K3Z8ZTNRKmMjZXdlJFJydwp6Tk5Cfkt6cUUqPSQ/QksraDMtTUhicE0ldTxf
cGxKYnc/Xnh1fjcrYDNJTmx6PVcxemZMWnJBaDx6d3UqVF9jK00KekJnWHZtQSRBSVVyU1JwbElE
WU5aSUFRfWJWbVcjdy05RENaPT1uNDZIJDwjYUluWnZNN35BKzJEVTA/V3MjJURrCno5YjN8P2op
eVI2fER4TlZwXihQUzBjP3FhRVRPRU5jYnl1ZDFGPUpyVH1RVm83dCtkZTdaSyNycDI9fkJZUH07
egp6UW5LZHM+e3xQfDAtRDZ0Wi17JDVkI2NXcChEcDh1K1U5XiMmen5NZFcjPHFkelA8RiVPbzJQ
LU5LK3xYWE9ARW0KeiY/NkZLJnhNZEJ4bXVRd1kwcF9tVTlPYTIjI1pxQy17fX1HPmlHaCs7QUxU
Z3VGfip0a2hPIXoqXkR3M3l4STdlCno5dXk4cHFyKSRHNml4fEcyVklEaEE0LUFtVTRNJng2bXdh
QXNiP197Ukw+QmlVezVLaDFZe1J0JHJKVj4tWVNJZQp6KzU8eVRTKTA7VzYlZXZrSmJOan1qfiMo
ajVUcCE+RHJRVmtQN00jcWRAa305UyVOOFUkMCtUZVNfZWx2JHYoSnoKengwYDlhTyVKczUjNVRH
bGpeamNtNzRoMG91N2JKYTQqP0ZVdUNrQEFLOTw8YDJ5OHVzaFkjYXghUF4+T3ZydnVRCnoxTEpA
dDYwUEpAM1BpXk9ZTTspMyZNJnk0XklmbnVmN05QNEc7V3V0MVVmMypZN31nIVNtSn1OTipSViVJ
PSklVgp6R1gjJnZQRS1+R1pGR1Veayh1VjZaZnZ+SV48c0MjPjByPjdJQEtsO1dLPG1jY2RrOSRV
dTM8MGYjNEdlX1BAQnQKej4rQW9Jd3h9fTg7alpFbjBMfXZiUTl3UCkkbDJYOzY3KyNKN3prcDw8
S3dIU0Z6PiFJYHduMzxQNzw/LU5jQklnCnphdEskfnp6e2RFYX5+eEd2RyNLZV9ka2Y7RF5COz5p
I3NUN2JWIXd8an5WSEpXRUVFez9hWlhWNUFgJD1OfTlAcgp6V2olKTs8PEE2VUR5cmBLOCs/Zk8l
Yjt6VlZfPURkPEdlNkRMVzdfTE5gI2BpZW53djNIKHI4d0YzbDJvI2hROzUKek1gd1RKe2ZsRCUr
KVlBXi1kOEw8Qld0Kz1Mb25Gc3hzeXpHX1NQYlg+MnJ5eEpYM0sySlhGQFNVfmpsNWc0Y2B8CnpD
bSp1UFo5UCh6QCZaTlV6KmwlLXdgYjUtNEpqYGdFYHo9LXpYeVctRkRkZm9odmZlLXZIPnRLRmpj
aTRzVW4lTAp6NVNrYmxMP1J2ODY5KmAtJUBvZyNuPHpMUmo/IX1RYCQqKE1DfHpLeyVIIzFAelh+
P2ppP3FQck9nVGMlMDMrck0KentAUH1he3RhYjZTSzUzSHU9ZVR8cDBJWlh0VSR5SjFwRFh6Pzw7
YC1GaUNkO2E0M2ZSeGk7fWlUMTxSX1JSfFVeCnp8TWIwcyUrXj1TP0tTdV9QSlMkQShjWGUwZnJk
VWJOIUtpRVQhPXJKVDNKQHkkQXRGQDE9KzAlaCRWRjxtVHsjJgp6dWNGJWpVOCM7UEt5Tj9nQFFB
ak5nPXFyTD97QHl0Mn5KV2F2aFQ4WWF5aVh6OUI3XjZaeX1iSWRTZW9CdTlkZl4KejhrV0JINGtx
cGdgN1BFUi1PI1A4R0wrRGotKUU3QzhIUkZ2UX13c1lNPGE0NGVIMiRzREt+RW52UVIrd2Q0cmh9
CnpKTzx9KDBDXlJDVCt6RDQkdylfRVUjfCVzXyYrbyUkeFVVeVZ8QHF6bH59PWt2cEkhM09uTiNv
LUZrY1lWJnUqKQp6a3dxRkFONXslUV9pRmV0UXNqTlRVND1YP1I7Pnk9eUNSU1dBNXpFV2wmSDNO
byp0e2AyPSQrVUloWDZYSkNfdTgKekFsa1BzKiM5ZlpLO004USRVKikkVEdkNWNhWlV0VGV8dkcz
VmYxQzBoej5HaCNqP3RzQXVLSVdDPj8pN1lacX5GCnoodEV+enI7PntgRWxeVyokeXF9RCthVDNe
RjFMMiMzUHIpSGlJaTBzaSt8ckxmLX5KP19WQUQ4SGpaeWR7RFolSwp6ODghTUNRZFo/NGd+Zn1L
e0RIaz4mPE9tRCNrRTVLe0Frb3ZxdkQ9I1cmWkY3ZGtJMV5YenQwYWhZXypEPkk2LTQKekhSfHFG
UEtuWH5nYVJOJEV9czJxcnVzfTIxZFpPb2ExI2g7ITlOc1UyWDRBNnNSd3w1cXZISldRUkN5cS1n
bGN5CnpeRX4+KTJ7aFU0dUp6TD1gQDw8NHNMViVieik4V1lGYG92OThfMVRGdis3TmtiN3F1aypg
TVFwbXo/X2glRVQ7UQp6SyZVSzQ7SXl2UDBMQ097RGooMzdzSHE3SWVicU8xRylQXks7bkN6cD4+
NWh4eHhZK0duPU8/Vl91aUJeVEpofkYKej9LUmFhczEmQ0gmJWZzQWY3JW9gXnBFaV8+ayU+QXZ0
fCg7cCRGa1FyUTU0JnYxWHFpZWh0TUM2ZEBpQ1lBWXg7CnowQCFwcXtiVXMtSS1YeDZLcz54SEJl
UitRc1RWIUhhTGImPnNlWFlAYHA5flJMSWhHJUJzZVQqXjZnZlZLcG0zagp6cDN6Qz5sMGBATzhe
e1leUy17MXBXQztFPz97Nig+I29jWElIOE97TmxoK1hwSUlIc1ApS0preFRWb3cpJEtxNEgKemAh
a1dIYSppMmRKYEBgNU1rbEQ4SzYtNWtoa3Q2Wm8pcWdkSUlESDMrSG0qZW40JDYyN1N5dnY+X2lk
Zj1XSz5qCnp6S3t1TXBNSF9GUShWRj4xPCM8fFF+UnpOUyslUjJVI2w5KFc9NjdgWTYkUG5yTD9S
fSNNOG1SNHlpfWhraSN5RQpuPEpTO0p2YDB5KChxO3wqd1NUYHBedFJZfjVMaT5oQk1BSUQ1UTZg
IW8kdm52aWJuKSkKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0tZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY5YWNjZmFiZTY2MmNlNGQ3ODFiMmZmZjkyODI5NDcxN2JlYjU2MGMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEt
c291cmNlLXdlYm0tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1RoaXMgdGVzdHMgdGhl
IGFiaWxpdHkgb2YgdGhlIFNvdXJjZUJ1ZmZlciB0byByZXNldCB0aGUgcGFyc2VyIGFmdGVyIGFu
IGFib3J0KCkuIEEgU291cmNlQnVmZmVyIGluIHRoaXMgc3RhdGUgc2hvdWxkIGJlIGFibGUgdG8g
YWNjZXB0IGEgbmV3IGluaXRpYWxpemF0aW9uIHNlZ21lbnQgb3IgYSBuZXcgbWVkaWEgc2VnbWVu
dC4KKworUlVOKHZpZGVvLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoc291cmNlKSkKK0VWRU5U
KHNvdXJjZW9wZW4pCitSVU4oc291cmNlLmR1cmF0aW9uID0gbG9hZGVyLmR1cmF0aW9uKCkpCitS
VU4oc291cmNlQnVmZmVyID0gc291cmNlLmFkZFNvdXJjZUJ1ZmZlcihsb2FkZXIudHlwZSgpKSkK
K1JVTihzb3VyY2VCdWZmZXIuYXBwZW5kQnVmZmVyKGxvYWRlci5pbml0U2VnbWVudCgpKSkKK0VW
RU5UKHVwZGF0ZSkKK0FwcGVuZCBhIG1lZGlhIHNlZ21lbnQuCitSVU4oc291cmNlQnVmZmVyLmFw
cGVuZEJ1ZmZlcihsb2FkZXIubWVkaWFTZWdtZW50KDApKSkKK0VWRU5UKHJlc2l6ZSkKK0VYUEVD
VEVEICh2aWRlby52aWRlb1dpZHRoID09ICczMjAnKSBPSworRVhQRUNURUQgKHZpZGVvLnZpZGVv
SGVpZ2h0ID09ICcyNDAnKSBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLmh0bWwgYi9MYXlvdXRUZXN0
cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0uaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
OTQwY2JjYzEzYzM1MmY3ZTFkNTE3ODI3ZTAyZjc4Y2E0Yzk4NWIyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLmh0bWwK
QEAgLTAsMCArMSw2MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0
aXRsZT5tZWRpYS1zb3VyY2Utd2VibTwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Im1lZGlhLXNv
dXJjZS1sb2FkZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIHZhciBsb2FkZXI7CisgICAgdmFyIHNv
dXJjZTsKKyAgICB2YXIgc291cmNlQnVmZmVyOworCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsK
KyAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworCisgICAgICAgIGxvYWRlciA9IG5ldyBNZWRp
YVNvdXJjZUxvYWRlcignY29udGVudC90ZXN0LXZwOS1tYW5pZmVzdC5qc29uJyk7CisgICAgICAg
IGxvYWRlci5vbmxvYWQgPSBtZWRpYURhdGFMb2FkZWQ7CisgICAgICAgIGxvYWRlci5vbmVycm9y
ID0gbWVkaWFEYXRhTG9hZGluZ0ZhaWxlZDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBtZWRpYURh
dGFMb2FkaW5nRmFpbGVkKCkgeworICAgICAgICBmYWlsVGVzdCgnTWVkaWEgZGF0YSBsb2FkaW5n
IGZhaWxlZCcpOworICAgIH0KKworICAgIGZ1bmN0aW9uIG1lZGlhRGF0YUxvYWRlZCgpIHsKKyAg
ICAgICAgc291cmNlID0gbmV3IE1lZGlhU291cmNlKCk7CisgICAgICAgIHdhaXRGb3JFdmVudCgn
c291cmNlb3BlbicsIHNvdXJjZU9wZW4sIGZhbHNlLCBmYWxzZSwgc291cmNlKTsKKyAgICAgICAg
d2FpdEZvckV2ZW50QW5kRmFpbCgnZXJyb3InKTsKKyAgICAgICAgcnVuKCd2aWRlby5zcmMgPSBV
UkwuY3JlYXRlT2JqZWN0VVJMKHNvdXJjZSknKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzb3Vy
Y2VPcGVuKCkgeworICAgICAgICBydW4oJ3NvdXJjZS5kdXJhdGlvbiA9IGxvYWRlci5kdXJhdGlv
bigpJyk7CisgICAgICAgIHJ1bignc291cmNlQnVmZmVyID0gc291cmNlLmFkZFNvdXJjZUJ1ZmZl
cihsb2FkZXIudHlwZSgpKScpOworICAgICAgICB3YWl0Rm9yRXZlbnRPbihzb3VyY2VCdWZmZXIs
ICd1cGRhdGUnLCBzb3VyY2VJbml0aWFsaXplZCwgZmFsc2UsIHRydWUpOworICAgICAgICB3YWl0
Rm9yRXZlbnRPbmNlKCdyZXNpemUnLCByZXNpemUpOworICAgICAgICBydW4oJ3NvdXJjZUJ1ZmZl
ci5hcHBlbmRCdWZmZXIobG9hZGVyLmluaXRTZWdtZW50KCkpJyk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gc291cmNlSW5pdGlhbGl6ZWQoKSB7CisgICAgICAgIHdhaXRGb3JFdmVudE9uY2UoJ3Jl
c2l6ZScsIHJlc2l6ZSk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnQXBwZW5kIGEgbWVkaWEgc2Vn
bWVudC4nKQorICAgICAgICBydW4oJ3NvdXJjZUJ1ZmZlci5hcHBlbmRCdWZmZXIobG9hZGVyLm1l
ZGlhU2VnbWVudCgwKSknKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiByZXNpemUoKSB7CisgICAg
ICAgIC8vIEZpcnN0IHJlc2l6ZSBjYW4gYmUgMHgwIChNYWMpIG9yIDY0MHg0ODAgKEdUSyspCisg
ICAgICAgIGlmICh2aWRlby52aWRlb1dpZHRoID4gMCAmJiB2aWRlby52aWRlb0hlaWdodCA+IDAp
IHsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8udmlkZW9XaWR0aCcsIDMyMCk7Cisg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnZpZGVvSGVpZ2h0JywgMjQwKTsKKyAgICAg
ICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8ZGl2PgorICAgICAgICBUaGlzIHRl
c3RzIHRoZSBhYmlsaXR5IG9mIHRoZSBTb3VyY2VCdWZmZXIgdG8gcmVzZXQgdGhlIHBhcnNlciBh
ZnRlciBhbiBhYm9ydCgpLiBBIFNvdXJjZUJ1ZmZlciBpbiB0aGlzIHN0YXRlIHNob3VsZCBiZSBh
YmxlIHRvIGFjY2VwdAorICAgICAgICBhIG5ldyBpbml0aWFsaXphdGlvbiBzZWdtZW50IG9yIGEg
bmV3IG1lZGlhIHNlZ21lbnQuCisgICAgPC9kaXY+CisgICAgPHZpZGVvIGNvbnRyb2xzPjwvdmlk
ZW8+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404802</attachid>
            <date>2020-07-21 00:53:17 -0700</date>
            <delta_ts>2020-07-21 00:56:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214529-20200721005316.patch</filename>
            <type>text/plain</type>
            <size>260998</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBhMjY3NTI5M2JiMzdhNGM1YzdmNGUwMGUxNmQyNzFkYTBmNTA2ZWI5Li5iMjE3
ZjBmMjRiODE1MjY3NWIwMjgwZTMwN2U3NGUyZThhZjNhZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAyMC0wNy0yMSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBleHBlcmltZW50
YWwgTVNFIFdlYk0gcGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTQ1MjkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1NzgyNDY3PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0aGUgdnA5
X2hlYWRlcl9wYXJzZXIgZnJvbSBsaWJ3ZWJydGMgdG8gdGhlIHByb2plY3QsIGFuZCBhZGQgaXRz
CisgICAgICAgIHN5bWJvbHMgdG8gdGhlIGxpc3Qgb2YgZXhwb3J0ZWQgc3ltYm9scy4gQmVjYXVz
ZSB0aGlzIGhlYWRlciB3YW50cyB0bworICAgICAgICBiZSBpbnN0YWxsZWQgdG8gYSAiY29tbW9u
L3ZwOV9oZWFkZXJfcGFyc2VyLmgiIHBhdGgsIHNwbGl0IHVwIHRoZSBkZWZhdWx0CisgICAgICAg
IENvcHlIZWFkZXJzSW5zdGFsbFBoYXNlIGludG8gdHdvIHNlcGFyYXRlIENvcHlGaWxlcyBidWls
ZCBwaGFzZXMgdGhhdAorICAgICAgICBwdXQgaGVhZGVycyBpbnRvIGRpZmZlcmVudCBsb2NhdGlv
bnMuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJtLnhjY29uZmlnOgorICAgICAg
ICAqIENvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwOgorICAgICAgICAqIENvbmZpZ3Vy
YXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwOgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL2xp
YndlYnJ0Yy5tYWMuZXhwOgorICAgICAgICAqIFNvdXJjZS90aGlyZF9wYXJ0eS9saWJ3ZWJtL2Nv
bW1vbi92cDlfaGVhZGVyX3BhcnNlci5oOgorICAgICAgICAodnA5X3BhcnNlcjo6VnA5SGVhZGVy
UGFyc2VyOjpjb2xvcl9yYW5nZSBjb25zdCk6CisgICAgICAgICh2cDlfcGFyc2VyOjpWcDlIZWFk
ZXJQYXJzZXI6OnN1YnNhbXBsaW5nX3ggY29uc3QpOgorICAgICAgICAodnA5X3BhcnNlcjo6VnA5
SGVhZGVyUGFyc2VyOjpzdWJzYW1wbGluZ195IGNvbnN0KToKKyAgICAgICAgKiBsaWJ3ZWJydGMu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworMjAyMC0wNy0xOSAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBleHBlcmltZW50YWwgTVNF
IFdlYk0gcGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTQ1MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUd28gZHJpdmUtYnkgZml4ZXM6IEFkZCBzb21lIG1pc3NpbmcgZXhwb3J0IHRvIHRoZSBs
aWJ3ZWJydGMuKi5leHAgZmlsZXMsIGFuZCBleHBvcnQgdGhlIHdlYm0gaGVhZGVycworICAgICAg
ICBhcyBQcml2YXRlLCBub3QgUHVibGljLCBzbyB0aGV5J3JlIHB1dCBpbiB0aGUgY29ycmVjdCBk
aXJlY3RvcnkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cDoK
KyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAgICAgICAg
KiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBsaWJ3ZWJydGMu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wNy0yMCAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJ1Z2d5IGFzc2VydCBpbiBoMjY1X3Zw
c19zcHNfcHBzX3RyYWNrZXIuY2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiMDQ1YmI1ZDUzODNjM2IzZjEyYzYw
MGM1ZTYzYjQ2NDQ2YTA3MDk5Li43NWEwYjU5MTYwODZlYzAwY2YxZmJmNmRjYjcyMzYyMWZmYTA2
MjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzI0IEBACisyMDIwLTA3LTIxICBKZXIgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIGV4cGVyaW1lbnRh
bCBNU0UgV2ViTSBwYXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNDUyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRlc3Q6IG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS5odG1s
CisKKyAgICAgICAgQWRkIGFuIGV4cGVyaW1lbnRhbCBNU0UgV2ViTSBwYXJzZXIgdG8gU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMuIFRoaXMgd2lsbCByZXF1aXJlIGV4dGVuc2l2ZSByZWZhY3Rv
cmluZworICAgICAgICBvZiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQywgdG8gZXh0cmFjdCBv
dXQgdGhlIHBhcnNlciBpbnRvIGEgbmV3LCB2aXJ0dWFsaXplZCBjbGFzcy4gVGhpcyBuZXcgcGFy
c2VyIGNhbgorICAgICAgICB0YWtlIGFkdmFudGFnZSBvZiBuZXcgQysrPjExIGZlYXR1cmVzIHN1
Y2ggYXMgbGFtYmRhcyB0byBjbGVhbiB1cCBzb21lIHByb2JsZW1hdGljIGV4aXN0aW5nIGNvZGUu
IFRoZSBuZXcKKyAgICAgICAgdmlydHVhbGl6ZWQgU291cmNlQnVmZmVyUGFyc2VyIGNsYXNzIHVz
ZXMgcGFzc2VkLWluIEZ1bmN0aW9uIG9iamVjdHMsIHJhdGhlciB0aGFuIHB1cmUtdmlydHVhbCBD
bGllbnQgY2xhc3NlcworICAgICAgICB0byBub3RpZnkgaXQncyBwYXJlbnQgb2JqZWN0IHdoZW4g
dGhlIHBhcnNlciBlbmNvdW50ZXJzIGluaXRpYWxpemF0aW9uLSBvciBtZWRpYS1kYXRhLgorICAg
ICAgICAKKyAgICAgICAgQmVjYXVzZSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyB3aWxsIG5v
dyBoYXZlIHRvIGRlYWwgd2l0aCBBdWRpb1RyYWNrUHJpdmF0ZSBhbmQgVmlkZW9UcmFja1ByaXZh
dGUgb2JqZWN0cworICAgICAgICB0aGF0IGFyZSBub3QgbmVjZXNzYXJpbHkgQXVkaW8tIGFuZCBW
aWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyBzdWJjbGFzc2VzLCBtb3ZlIHRob3Nl
IGNsYXNzZXMgbm90aWZpY2F0aW9uCisgICAgICAgIGZlYXR1cmVzIHVwIGludG8gQXVkaW8tIGFu
ZCBWaWRlb1RyYWNrUHJpdmF0ZSwgYWdhaW4gdXNpbmcgYSBGdW5jdGlvbiBvYmplY3QgcmF0aGVy
IHRoYW4gYSBjbGllbnQgY2xhc3MuCisKKyAgICAgICAgQWRkIGEgbmV3IFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk0gYW5kIGFzc29jaWF0ZWQgQXVkaW9UcmFja1ByaXZhdGVXZWJNIGFuZCBWaWRlb1Ry
YWNrUHJpdmF0ZVdlYk0gY2xhc3Nlcywgd2hpY2gKKyAgICAgICAgdXNlIGxpYndlYm0gdmlhIGxp
YndlYnJ0YyB0byBwYXJzZSBhcHBlbmRlZCBidWZmZXJzLiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
IGZlZWRzIHBhc3NlZC1pbiBkYXRhIGludG8gYQorICAgICAgICBsaWJ3ZWJtLXByb3ZpZGVkIHBh
cnNlciBvZiBpdHMgb3duLiBJdCB0aGVuIGJ1aWxkcyB1cCB0cmFja3MgYW5kIHNhbXBsZXMgYmFz
ZWQgb24gY2FsbGJhY2tzIGZyb20gdGhhdCBzYW1lIHBhcnNlciwKKyAgICAgICAgY29uc3RydWN0
aW5nIENNU2FtcGxlQnVmZmVycyBhbmQgVmlkZW9UcmFja1ByaXZhdGUgb2JqZWN0cyBvdXQgb2Yg
dGhlIHVuZGVybHlpbmcgbGlid2VibSBwcmltaXRpdmVzLgorCisgICAgICAgIEJlY2F1c2UgV2Vi
TSB1c2VzIGEgVVVJRCBhcyBpdHMgdHJhY2sgaWRlbnRpZmllciwgdGhlIHJlcHJlc2VudGF0aW9u
IG9mIGEgInRyYWNrSUQiIGluc2lkZSBXZWJDb3JlIG11c3QgYmUKKyAgICAgICAgaW5jcmVhc2Vk
IGZyb20gYW4gaW50IHRvIGEgdWludDY0X3QsIG9yIHRyYWNrSURzIHdpbGwgYmUgdHJ1bmNhdGVk
IG9yIHplcm9lZCB3aGVuIHBhc3NlZCBiZXR3ZWVuIGNsYXNzZXMgYW5kCisgICAgICAgIHdoZW4g
Y29udmVydGVkIHRvIGFuZCBmcm9tIEF0b21TdHJpbmdzLgorCisgICAgICAgIFRoaXMgZWFybHkg
aW1wbGVtZW50YXRpb24gaXMgbm90IHlldCBhYmxlIHRvIHBhc3MgdGhlIFdlYk0gV1BUIG1lZGlh
LXNvdXJjZS8gdGVzdHMsIGFzIHdlIG9ubHkgaGF2ZSBhIFZQOSBkZWNvZGVyCisgICAgICAgIGF2
YWlsYWJsZSwgYW5kIHRob3NlIHRlc3RzIHVzZSBib3RoIFZQOCBhbmQgVm9yYmlzLgorCisgICAg
ICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRXZWJNUGFyc2VyRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJNUGFy
c2VyRW5hYmxlZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFj
a1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpzZXRFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpzZXRFbmFibGVkQ2hh
bmdlZENhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZFZQQ29sb3JQcmltYXJpZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6aXNWYWxpZFZQVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MpOgorICAgICAgICAo
V2ViQ29yZTo6aXNWYWxpZFZQTWF0cml4Q29lZmZpY2llbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OnBhcnNlVlBDb2RlY1BhcmFtZXRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1ZQ
OVV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2
YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6c2V0U2VsZWN0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGU6OnNldFNlbGVjdGVkQ2hhbmdl
ZENhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6QXVkaW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldEVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
U2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNz
aW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6dXBkYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmg6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6Ok1lZGlhU2FtcGxlQVZGT2JqQyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFk
ZFNvdXJjZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oOiBBZGRlZC4KKyAgICAgICAgKGlzVHlw
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQy5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0
YVBhcnNlckxpc3RlbmVyIGluaXRXaXRoUGFyc2VyOnBhcmVudDpdKToKKyAgICAgICAgKC1bV2Vi
QVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJBVlN0
cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBpbnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dlYkFWU3Ry
ZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbURhdGFQYXJzZXI6ZGlkUGFyc2VTdHJlYW1EYXRh
QXNBc3NldDpdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3Ry
ZWFtRGF0YVBhcnNlcjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0OndpdGhEaXNjb250aW51aXR5
Ol0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRh
UGFyc2VyOmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcjpdKToKKyAgICAgICAgKC1b
V2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRl
TWVkaWFEYXRhOmZvclRyYWNrSUQ6bWVkaWFUeXBlOmZsYWdzOl0pOgorICAgICAgICAoLVtXZWJB
VlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyV2lsbFByb3ZpZGVDb250
ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTpmb3JUcmFja0lEOl0pOgorICAgICAgICAo
LVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTpmb3JUcmFja0lEOl0pOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1
cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OnNldFNob3Vs
ZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakM6OnNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lEKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OnJlc2V0UGFyc2VyU3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUGFy
c2VTdHJlYW1EYXRhQXNBc3NldCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDOjpkaWRGYWlsVG9QYXJzZVN0cmVhbURhdGFXaXRoRXJyb3IpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZv
clRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6
d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp+U291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVN
ZWRpYURhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJ
RCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmRD
b21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpy
ZXNldFBhcnNlclN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjpkZXN0cm95UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpjbGVhclRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6aGFzU2VsZWN0ZWRWaWRlbyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFuZ2VTZWxlY3RlZCk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRD
aGFuZ2VFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpwYXJzZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OmF0dGVtcHRUb0RlY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OmZsdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjplbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjppc1JlYWR5Rm9yTW9yZVNhbXBsZXMpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEJlY29tZVJlYWR5Rm9yTW9y
ZVNhbXBsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
Om5vdGlmeUNsaWVudFdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjYW5TZXRNaW5pbXVtVXBjb21pbmdQcmVzZW50
YXRpb25UaW1lIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0u
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9W
UDlVdGlsaXRpZXNDb2NvYS5oLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVX
ZWJNOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVXZWJNOjpB
dWRpb1RyYWNrUHJpdmF0ZVdlYk0pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZh
dGVXZWJNOjppZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZVdl
Yk06OmxhYmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlV2Vi
TTo6bGFuZ3VhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVX
ZWJNOjp0cmFja0luZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EuaC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5o
LgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjppc0NvbnRlbnRUeXBlU3Vw
cG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OnNldERpZFBhcnNl
SW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUGFyc2VyOjpzZXREaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OnNldERpZFByb3ZpZGVNZWRpYURh
dGFDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OnNldFdp
bGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpzZXREaWRQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzV2VibVBhcnNlckF2YWlsYWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppc0NvbnRlbnRUeXBl
U3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlNv
dXJjZUJ1ZmZlclBhcnNlcldlYk0pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpmbHVzaFBlbmRpbmdNZWRpYURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2hvdWxkUHJvdmlkZU1l
ZGlhZGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6cmVzZXRQYXJzZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNOjp0cmFja0RhdGFGb3JUcmFja051bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkVsZW1lbnRCZWdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkVibWwpOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25TZWdtZW50QmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06Ok9uQ2x1c3RlckJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uVHJhY2tFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJsb2NrQmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25CbG9ja0VuZCk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblNpbXBsZUJsb2NrQmVnaW4pOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25TaW1wbGVCbG9ja0VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJsb2NrR3JvdXBCZWdpbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJsb2NrR3JvdXBFbmQp
OgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvQ29sb3JQcmltYXJpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6Y29udmVydFRvVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MpOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydFRvTWF0cml4Q29lZmZpY2llbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnZlcnRTdWJzYW1wbGluZ1hZVG9DaHJvbWFTdWJzYW1wbGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQYXJzZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25GcmFtZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnN0YXR1cyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjp0eXBlIGNvbnN0KToKKyAg
ICAgICAgKGlzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRp
bGl0aWVzQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGls
aXRpZXNDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzVlA5RGVjb2RlckF2YWlsYWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0ZVZQUGFyYW1ldGVycyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29j
b2EuaC4KKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlV2ViTTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlV2ViTTo6VmlkZW9UcmFja1ByaXZh
dGVXZWJNKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlV2ViTTo6aWQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVXZWJNOjpsYWJlbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk06Omxhbmd1YWdlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlV2ViTTo6dHJhY2tJbmRl
eCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1By
aXZhdGVXZWJNLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLmguCisKKzIwMjAtMDctMTkgIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZGQgZXhwZXJpbWVudGFsIE1T
RSBXZWJNIHBhcnNlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE0NTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCB5ZXQgcGFyc2UgYWN0dWFsIG1lZGlh
IHNhbXBsZXM7IGFzIG9mIHlldCBpdCBvbmx5IHBhcnNlcyBhdWRpbyBhbmQgdmlkZW8KKyAgICAg
ICAgdHJhY2sgaW5mb3JtYXRpb24uIE1lZGlhIHNhbXBsZSBwYXJzaW5nIGlzIHVwY29taW5nLgor
CisgICAgICAgIEFkZCBhbiBleHBlcmltZW50YWwgTVNFIFdlYk0gcGFyc2VyIHRvIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLiBUaGlzIHdpbGwgcmVxdWlyZSBleHRlbnNpdmUgcmVmYWN0b3Jp
bmcKKyAgICAgICAgb2YgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMsIHRvIGV4dHJhY3Qgb3V0
IHRoZSBwYXJzZXIgaW50byBhIG5ldywgdmlydHVhbGl6ZWQgY2xhc3MuIFRoaXMgbmV3IHBhcnNl
ciBjYW4KKyAgICAgICAgdGFrZSBhZHZhbnRhZ2Ugb2YgbmV3IEMrKz4xMSBmZWF0dXJlcyBzdWNo
IGFzIGxhbWJkYXMgdG8gY2xlYW4gdXAgc29tZSBwcm9ibGVtYXRpYyBleGlzdGluZyBjb2RlLiBU
aGUgbmV3CisgICAgICAgIHZpcnR1YWxpemVkIFNvdXJjZUJ1ZmZlclBhcnNlciBjbGFzcyB1c2Vz
IHBhc3NlZC1pbiBGdW5jdGlvbiBvYmplY3RzLCByYXRoZXIgdGhhbiBwdXJlLXZpcnR1YWwgQ2xp
ZW50IGNsYXNzZXMKKyAgICAgICAgdG8gbm90aWZ5IGl0J3MgcGFyZW50IG9iamVjdCB3aGVuIHRo
ZSBwYXJzZXIgZW5jb3VudGVycyBpbml0aWFsaXphdGlvbi0gb3IgbWVkaWEtZGF0YS4KKworICAg
ICAgICBCZWNhdXNlIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDIHdpbGwgbm93IGhhdmUgdG8g
ZGVhbCB3aXRoIEF1ZGlvVHJhY2tQcml2YXRlIGFuZCBWaWRlb1RyYWNrUHJpdmF0ZSBvYmplY3Rz
CisgICAgICAgIHRoYXQgYXJlIG5vdCBuZWNlc3NhcmlseSBBdWRpby0gYW5kIFZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIHN1YmNsYXNzZXMsIG1vdmUgdGhvc2UgY2xhc3NlcyBu
b3RpZmljYXRpb24KKyAgICAgICAgZmVhdHVyZXMgdXAgaW50byBBdWRpby0gYW5kIFZpZGVvVHJh
Y2tQcml2YXRlLCBhZ2FpbiB1c2luZyBhIEZ1bmN0aW9uIG9iamVjdCByYXRoZXIgdGhhbiBhIGNs
aWVudCBjbGFzcy4KKworICAgICAgICBBZGQgYSBuZXcgU291cmNlQnVmZmVyUGFyc2VyV2ViTSBh
bmQgYXNzb2NpYXRlZCBBdWRpb1RyYWNrUHJpdmF0ZVdlYk0gYW5kIFZpZGVvVHJhY2tQcml2YXRl
V2VibSBjbGFzZXNzLCB3aGljaAorICAgICAgICB1c2UgbGlid2VibSB2aWEgbGlid2VicnRjIHRv
IHBhcnNlIGFwcGVuZGVkIGJ1ZmZlcnMuCisKKyAgICAgICAgVGhpcyBlYXJseSBpbXBsZW1lbnRh
dGlvbiBpcyBub3QgeWV0IGFibGUgdG8gcGFzcyB0aGUgV2ViTSBXUFQgbWVkaWEtc291cmNlLyB0
ZXN0cywgYXMgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMKKyAgICAgICAgd2lsbCBvbmx5IGNh
dXNlIGEgInJlc2l6ZSIgZXZlbnQgdG8gYmUgZmlyZWQgd2hlbiBhIE1lZGlhU2FtcGxlIGlzIGVu
cXVldWVkIG9yIGRlY29kaW5nLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9S
dW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzZXRXZWJNUGFyc2VyRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJNUGFyc2VyRW5hYmxlZCBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvVHJhY2tQcml2YXRlOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
VHJhY2tQcml2YXRlOjpzZXRFbmFibGVkQ2hhbmdlZENhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFja1ByaXZhdGU6OnNldFNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2tQcml2YXRlOjpzZXRTZWxlY3RlZENoYW5nZWRDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRFbmFi
bGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6c3VwcG9ydHNUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6YWRkU291cmNlQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDLmg6IEFkZGVkLgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1t
OiBBZGRlZC4KKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgaW5pdFdp
dGhQYXJzZXI6cGFyZW50Ol0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0
ZW5lciBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVy
IGludmFsaWRhdGVdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIg
c3RyZWFtRGF0YVBhcnNlcjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0Ol0pOgorICAgICAgICAo
LVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZFBhcnNl
U3RyZWFtRGF0YUFzQXNzZXQ6d2l0aERpc2NvbnRpbnVpdHk6XSk6CisgICAgICAgICgtW1dlYkFW
U3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbURhdGFQYXJzZXI6ZGlkRmFpbFRvUGFyc2VT
dHJlYW1EYXRhV2l0aEVycm9yOl0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJM
aXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVNZWRpYURhdGE6Zm9yVHJhY2tJRDpt
ZWRpYVR5cGU6ZmxhZ3M6XSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3Rl
bmVyIHN0cmVhbURhdGFQYXJzZXJXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6
YXRpb25EYXRhOmZvclRyYWNrSUQ6XSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNl
ckxpc3RlbmVyIHN0cmVhbURhdGFQYXJzZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5p
dGlhbGl6YXRpb25EYXRhOmZvclRyYWNrSUQ6XSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDOjppc0NvbnRlbnRUeXBlU3VwcG9ydGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQzo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDOjpmbHVzaFBlbmRpbmdNZWRpYURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRy
YWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6c2hv
dWxkUHJvdmlkZU1lZGlhZGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQzo6cmVzZXRQYXJzZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZEZhaWxUb1Bh
cnNlU3RyZWFtRGF0YVdpdGhFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDOjpkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0
aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6On5Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFsaXph
dGlvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OmRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OndpbGxQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtl
eVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZENvbXBsZXRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YWJvcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnJlc2V0UGFyc2VyU3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRlc3Ryb3lQYXJzZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNsZWFyVHJh
Y2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFj
a0RpZENoYW5nZVNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnBhcnNlciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXR0ZW1wdFRvRGVjcnlwdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpWaWRlb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrUHJpdmF0ZVdlYk06OkF1ZGlvVHJhY2tQcml2YXRlV2ViTSk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OmlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6bGFiZWwgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja1ByaXZhdGVXZWJNOjpsYW5ndWFnZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OnRyYWNrSW5kZXggY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5oOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6aXNDb250ZW50
VHlwZVN1cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpzZXRE
aWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclBhcnNlcjo6c2V0RGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpzZXREaWRQcm92aWRl
TWVkaWFEYXRhQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
OjpzZXRXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJh
Y2tJRENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0
RGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENh
bGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjppc1dlYm1QYXJzZXJBdmFp
bGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6c3VwcG9ydGVkV2ViTUNvZGVjcyk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppc0NvbnRlbnRUeXBlU3VwcG9ydGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlNvdXJjZUJ1ZmZl
clBhcnNlcldlYk0pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpm
bHVzaFBlbmRpbmdNZWRpYURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2hvdWxkUHJvdmlkZU1lZGlhZGF0YUZv
clRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6cmVz
ZXRQYXJzZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
OjpPbkVsZW1lbnRCZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpPbkVibWwpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
T25TZWdtZW50QmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2Vi
TTo6T25JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9u
Q2x1c3RlckJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
Ok9uVHJhY2tFbnRyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OnN0YXR1cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjp2YWxpZGF0ZVZQUGFyYW1ldGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb1RyYWNrUHJpdmF0ZVdlYk06OlZpZGVvVHJhY2tQcml2YXRlV2ViTSk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OmlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2tQcml2YXRlV2ViTTo6bGFiZWwgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9UcmFja1ByaXZhdGVXZWJNOjpsYW5ndWFnZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OnRyYWNrSW5kZXggY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5oOiBBZGRlZC4K
KwogMjAyMC0wNy0yMCAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBPSyBidXR0b24gdG8gRGF0ZS9UaW1lIGZvcm0gY29udHJvbHMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDJjNzNiMjkzMTRjNDZjMDM2YzdhNzZiNTdkZDIyYTdlOTMyY2VmNmUuLjM4NzhiNjY1
MWI1ZmI2ODE4ZmM0MWVmZWJkOWEzMGI3ZGRjYzMwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMjAtMDctMjEgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0NvY29hXSBBZGQgZXhwZXJpbWVudGFsIE1TRSBXZWJNIHBhcnNlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NTI5CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS82NTc4MjQ2Nz4KKworICAgICAgICBBZGQgYW4gRXhwZXJpbWVudGFsIHNldHRp
bmcgdG8gZW5hYmxlIHRoZSBNU0UgV2ViTSBwYXJzZXIgKG9mZiBieSBkZWZhdWx0KS4KKworICAg
ICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sOgorCisyMDIwLTA3LTE5ICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIGV4cGVyaW1l
bnRhbCBNU0UgV2ViTSBwYXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNDUyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBhbiBFeHBlcmltZW50YWwgc2V0dGluZyB0byBlbmFibGUgdGhlIE1T
RSBXZWJNIHBhcnNlciAob2ZmIGJ5IGRlZmF1bHQpLgorCisgICAgICAgICogU2hhcmVkL1dlYlBy
ZWZlcmVuY2VzLnlhbWw6CisKIDIwMjAtMDctMjAgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJk
bmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgT0sgYnV0dG9uIHRvIERhdGUvVGltZSBmb3Jt
IGNvbnRyb2xzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZp
Z3VyYXRpb25zL2xpYndlYm0ueGNjb25maWcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VibS54Y2NvbmZpZwppbmRleCA1N2I1NDdlZmI4ZmNlMzhmYTRm
NmQwYmNmZTRhNTRlZmI4OWE0NDE0Li4xN2M2NGUwMzAwZTVjYmQ4YzBiNTAyZjA0NzRmMzM5ZTZm
YmM2OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJh
dGlvbnMvbGlid2VibS54Y2NvbmZpZworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VibS54Y2NvbmZpZwpAQCAtOCw2ICs4LDYgQEAgR0NDX1dBUk5f
NjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKIEhFQURFUl9TRUFSQ0hfUEFUSFMgPSBTb3Vy
Y2UvdGhpcmRfcGFydHkvbGlid2VibSBTb3VyY2UvdGhpcmRfcGFydHkvbGlid2VibS93ZWJtX3Bh
cnNlciBTb3VyY2UvdGhpcmRfcGFydHkvbGlid2VibS93ZWJtX3BhcnNlci9pbmNsdWRlOwogCiBJ
TlNUQUxMX1BBVEggPSAvdXNyL2xvY2FsL2xpYjsKLVBSSVZBVEVfSEVBREVSU19GT0xERVJfUEFU
SCA9IC91c3IvbG9jYWwvaW5jbHVkZS93ZWJtOworUFJJVkFURV9IRUFERVJTX0ZPTERFUl9QQVRI
ID0gL3Vzci9sb2NhbC9pbmNsdWRlOwogVVNFX0hFQURFUk1BUCA9IE5POwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlP
Uy5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2Vi
cnRjLmlPUy5leHAKaW5kZXggZDA0YTkxOTY4NmU5Y2M4OTY3YThhYWQwNDY5YzY4NTU0NjU3Mjc5
Yi4uODFhNjQ0Y2MwNTE3MTFlYTkzNGEwZmUyNTQ1ZmQzYmUzZGNhNTBhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1Mu
ZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3
ZWJydGMuaU9TLmV4cApAQCAtMjgwLDEzICsyODAsMjAgQEAgX19aVFZONHdlYm0xMkJ1ZmZlclJl
YWRlckUKIF9fWlRWTjR3ZWJtOENhbGxiYWNrRQogX19aTjR3ZWJtOENhbGxiYWNrMTBPbkJsb2Nr
RW5kRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU181QmxvY2tFCiBfX1pONHdlYm04Q2FsbGJh
Y2sxME9uQ3VlUG9pbnRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzhDdWVQb2ludEUKK19f
Wk40d2VibThDYWxsYmFjazEyT25CbG9ja0JlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktO
U181QmxvY2tFUE5TXzZBY3Rpb25FCiBfX1pONHdlYm04Q2FsbGJhY2sxMk9uQ2x1c3RlckVuZEVS
S05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfN0NsdXN0ZXJFCiBfX1pONHdlYm04Q2FsbGJhY2sx
Mk9uU2VnbWVudEVuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRQogX19aTjR3ZWJtOENhbGxiYWNr
MTJPblRyYWNrRW50cnlFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEwVHJhY2tFbnRyeUUK
K19fWk40d2VibThDYWxsYmFjazE0T25DbHVzdGVyQmVnaW5FUktOU18xNUVsZW1lbnRNZXRhZGF0
YUVSS05TXzdDbHVzdGVyRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTRPbkVkaXRp
b25FbnRyeUVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTJFZGl0aW9uRW50cnlFCitfX1pO
NHdlYm04Q2FsbGJhY2sxNE9uRWxlbWVudEJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5T
XzZBY3Rpb25FCitfX1pONHdlYm04Q2FsbGJhY2sxNE9uU2VnbWVudEJlZ2luRVJLTlNfMTVFbGVt
ZW50TWV0YWRhdGFFUE5TXzZBY3Rpb25FCiBfX1pONHdlYm04Q2FsbGJhY2sxNU9uQmxvY2tHcm91
cEVuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTBCbG9ja0dyb3VwRQogX19aTjR3ZWJt
OENhbGxiYWNrMTZPblNpbXBsZUJsb2NrRW5kRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18x
MVNpbXBsZUJsb2NrRQogX19aTjR3ZWJtOENhbGxiYWNrMTZPblVua25vd25FbGVtZW50RVJLTlNf
MTVFbGVtZW50TWV0YWRhdGFFUE5TXzZSZWFkZXJFUHkKK19fWk40d2VibThDYWxsYmFjazE3T25C
bG9ja0dyb3VwQmVnaW5FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVQTlNfNkFjdGlvbkUKK19fWk40
d2VibThDYWxsYmFjazE4T25TaW1wbGVCbG9ja0JlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFF
UktOU18xMVNpbXBsZUJsb2NrRVBOU182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrNFNraXBF
UE5TXzZSZWFkZXJFUHkKIF9fWk40d2VibThDYWxsYmFjazVPblRhZ0VSS05TXzE1RWxlbWVudE1l
dGFkYXRhRVJLTlNfM1RhZ0UKIF9fWk40d2VibThDYWxsYmFjazZPbkVibWxFUktOU18xNUVsZW1l
bnRNZXRhZGF0YUVSS05TXzRFYm1sRQogX19aTjR3ZWJtOENhbGxiYWNrNk9uSW5mb0VSS05TXzE1
RWxlbWVudE1ldGFkYXRhRVJLTlNfNEluZm9FCkBAIC0zMTcsMyArMzI0LDQgQEAgX19aTjR3ZWJt
MTBXZWJtUGFyc2VyQzJFdgogX19aTjR3ZWJtMTBXZWJtUGFyc2VyRDFFdgogX19aTjR3ZWJtMTBX
ZWJtUGFyc2VyRDJFdgogX19aTjR3ZWJtNHN3YXBFUk5TXzEwV2VibVBhcnNlckVTMV8KK19fWk4x
MHZwOV9wYXJzZXIxNVZwOUhlYWRlclBhcnNlcjIzUGFyc2VVbmNvbXByZXNzZWRIZWFkZXJFUEto
bQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25z
L2xpYndlYnJ0Yy5pT1NzaW0uZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZp
Z3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCmluZGV4IGQwNGE5MTk2ODZlOWNjODk2N2E4
YWFkMDQ2OWM2ODU1NDY1NzI3OWIuLjgxYTY0NGNjMDUxNzExZWE5MzRhMGZlMjU0NWZkM2JlM2Rj
YTUwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0
aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKQEAgLTI4MCwxMyArMjgwLDIw
IEBAIF9fWlRWTjR3ZWJtMTJCdWZmZXJSZWFkZXJFCiBfX1pUVk40d2VibThDYWxsYmFja0UKIF9f
Wk40d2VibThDYWxsYmFjazEwT25CbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNf
NUJsb2NrRQogX19aTjR3ZWJtOENhbGxiYWNrMTBPbkN1ZVBvaW50RVJLTlNfMTVFbGVtZW50TWV0
YWRhdGFFUktOU184Q3VlUG9pbnRFCitfX1pONHdlYm04Q2FsbGJhY2sxMk9uQmxvY2tCZWdpbkVS
S05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRVBOU182QWN0aW9uRQogX19aTjR3ZWJt
OENhbGxiYWNrMTJPbkNsdXN0ZXJFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzdDbHVz
dGVyRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPblNlZ21lbnRFbmRFUktOU18xNUVsZW1lbnRNZXRh
ZGF0YUUKIF9fWk40d2VibThDYWxsYmFjazEyT25UcmFja0VudHJ5RVJLTlNfMTVFbGVtZW50TWV0
YWRhdGFFUktOU18xMFRyYWNrRW50cnlFCitfX1pONHdlYm04Q2FsbGJhY2sxNE9uQ2x1c3RlckJl
Z2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU183Q2x1c3RlckVQTlNfNkFjdGlvbkUKIF9f
Wk40d2VibThDYWxsYmFjazE0T25FZGl0aW9uRW50cnlFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVS
S05TXzEyRWRpdGlvbkVudHJ5RQorX19aTjR3ZWJtOENhbGxiYWNrMTRPbkVsZW1lbnRCZWdpbkVS
S05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrMTRP
blNlZ21lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQogX19aTjR3
ZWJtOENhbGxiYWNrMTVPbkJsb2NrR3JvdXBFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05T
XzEwQmxvY2tHcm91cEUKIF9fWk40d2VibThDYWxsYmFjazE2T25TaW1wbGVCbG9ja0VuZEVSS05T
XzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVCbG9ja0UKIF9fWk40d2VibThDYWxsYmFj
azE2T25Vbmtub3duRWxlbWVudEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182UmVhZGVyRVB5
CitfX1pONHdlYm04Q2FsbGJhY2sxN09uQmxvY2tHcm91cEJlZ2luRVJLTlNfMTVFbGVtZW50TWV0
YWRhdGFFUE5TXzZBY3Rpb25FCitfX1pONHdlYm04Q2FsbGJhY2sxOE9uU2ltcGxlQmxvY2tCZWdp
bkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVCbG9ja0VQTlNfNkFjdGlvbkUK
K19fWk40d2VibThDYWxsYmFjazRTa2lwRVBOU182UmVhZGVyRVB5CiBfX1pONHdlYm04Q2FsbGJh
Y2s1T25UYWdFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzNUYWdFCiBfX1pONHdlYm04Q2Fs
bGJhY2s2T25FYm1sRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU180RWJtbEUKIF9fWk40d2Vi
bThDYWxsYmFjazZPbkluZm9FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzRJbmZvRQpAQCAt
MzE3LDMgKzMyNCw0IEBAIF9fWk40d2VibTEwV2VibVBhcnNlckMyRXYKIF9fWk40d2VibTEwV2Vi
bVBhcnNlckQxRXYKIF9fWk40d2VibTEwV2VibVBhcnNlckQyRXYKIF9fWk40d2VibTRzd2FwRVJO
U18xMFdlYm1QYXJzZXJFUzFfCitfX1pOMTB2cDlfcGFyc2VyMTVWcDlIZWFkZXJQYXJzZXIyM1Bh
cnNlVW5jb21wcmVzc2VkSGVhZGVyRVBLaG0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cAppbmRleCA4
ZDg1YjViOGIzNzU0YWRkZWZkZTdjMjRmMmYyMGE0NjU4MzY2YWNkLi41NThmNGIyYzE4MjE3MWVm
YzQxNWM3NTc3ZjFkMzk2MDE4MDMyYWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCkBAIC0y
NzgsMTMgKzI3OCwyMCBAQCBfX1pUVk40d2VibTEyQnVmZmVyUmVhZGVyRQogX19aVFZONHdlYm04
Q2FsbGJhY2tFCiBfX1pONHdlYm04Q2FsbGJhY2sxME9uQmxvY2tFbmRFUktOU18xNUVsZW1lbnRN
ZXRhZGF0YUVSS05TXzVCbG9ja0UKIF9fWk40d2VibThDYWxsYmFjazEwT25DdWVQb2ludEVSS05T
XzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfOEN1ZVBvaW50RQorX19aTjR3ZWJtOENhbGxiYWNrMTJP
bkJsb2NrQmVnaW5FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzVCbG9ja0VQTlNfNkFjdGlv
bkUKIF9fWk40d2VibThDYWxsYmFjazEyT25DbHVzdGVyRW5kRVJLTlNfMTVFbGVtZW50TWV0YWRh
dGFFUktOU183Q2x1c3RlckUKIF9fWk40d2VibThDYWxsYmFjazEyT25TZWdtZW50RW5kRVJLTlNf
MTVFbGVtZW50TWV0YWRhdGFFCiBfX1pONHdlYm04Q2FsbGJhY2sxMk9uVHJhY2tFbnRyeUVSS05T
XzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTBUcmFja0VudHJ5RQorX19aTjR3ZWJtOENhbGxiYWNr
MTRPbkNsdXN0ZXJCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfN0NsdXN0ZXJFUE5T
XzZBY3Rpb25FCiBfX1pONHdlYm04Q2FsbGJhY2sxNE9uRWRpdGlvbkVudHJ5RVJLTlNfMTVFbGVt
ZW50TWV0YWRhdGFFUktOU18xMkVkaXRpb25FbnRyeUUKK19fWk40d2VibThDYWxsYmFjazE0T25F
bGVtZW50QmVnaW5FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVQTlNfNkFjdGlvbkUKK19fWk40d2Vi
bThDYWxsYmFjazE0T25TZWdtZW50QmVnaW5FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVQTlNfNkFj
dGlvbkUKIF9fWk40d2VibThDYWxsYmFjazE1T25CbG9ja0dyb3VwRW5kRVJLTlNfMTVFbGVtZW50
TWV0YWRhdGFFUktOU18xMEJsb2NrR3JvdXBFCiBfX1pONHdlYm04Q2FsbGJhY2sxNk9uU2ltcGxl
QmxvY2tFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzExU2ltcGxlQmxvY2tFCiBfX1pO
NHdlYm04Q2FsbGJhY2sxNk9uVW5rbm93bkVsZW1lbnRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVQ
TlNfNlJlYWRlckVQeQorX19aTjR3ZWJtOENhbGxiYWNrMTdPbkJsb2NrR3JvdXBCZWdpbkVSS05T
XzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrMThPblNp
bXBsZUJsb2NrQmVnaW5FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzExU2ltcGxlQmxvY2tF
UE5TXzZBY3Rpb25FCitfX1pONHdlYm04Q2FsbGJhY2s0U2tpcEVQTlNfNlJlYWRlckVQeQogX19a
TjR3ZWJtOENhbGxiYWNrNU9uVGFnRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18zVGFnRQog
X19aTjR3ZWJtOENhbGxiYWNrNk9uRWJtbEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNEVi
bWxFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25JbmZvRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktO
U180SW5mb0UKQEAgLTMxNSwzICszMjIsNCBAQCBfX1pONHdlYm0xMFdlYm1QYXJzZXJDMkV2CiBf
X1pONHdlYm0xMFdlYm1QYXJzZXJEMUV2CiBfX1pONHdlYm0xMFdlYm1QYXJzZXJEMkV2CiBfX1pO
NHdlYm00c3dhcEVSTlNfMTBXZWJtUGFyc2VyRVMxXworX19aTjEwdnA5X3BhcnNlcjE1VnA5SGVh
ZGVyUGFyc2VyMjNQYXJzZVVuY29tcHJlc3NlZEhlYWRlckVQS2htClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9saWJ3ZWJtL2NvbW1vbi92cDlfaGVhZGVyX3BhcnNlci5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9saWJ3ZWJtL2NvbW1vbi92
cDlfaGVhZGVyX3BhcnNlci5oCmluZGV4IDA2YmQ2NTY5ZTZmODA4ZjZmYTg0ZmE3ZjZmMWQ0YTBj
MDdkZmZmMWEuLjY5ZDcxMjY2YmE5ZWQ4MDNhZDVmODJmNDc4ZTZhMjJjOTQyYTQ4MTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvbGli
d2VibS9jb21tb24vdnA5X2hlYWRlcl9wYXJzZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2xpYndlYm0vY29tbW9uL3ZwOV9oZWFkZXJfcGFy
c2VyLmgKQEAgLTY5LDYgKzY5LDExIEBAIGNsYXNzIFZwOUhlYWRlclBhcnNlciB7CiAgIGludCBj
b2x1bW5fdGlsZXMoKSBjb25zdCB7IHJldHVybiBjb2x1bW5fdGlsZXNfOyB9CiAgIGludCBmcmFt
ZV9wYXJhbGxlbF9tb2RlKCkgY29uc3QgeyByZXR1cm4gZnJhbWVfcGFyYWxsZWxfbW9kZV87IH0K
IAorICAvLyBXZWJLaXQgQWRkaXRpb25zOgorICBpbnQgY29sb3JfcmFuZ2UoKSBjb25zdCB7IHJl
dHVybiBjb2xvcl9yYW5nZV87IH0KKyAgaW50IHN1YnNhbXBsaW5nX3goKSBjb25zdCB7IHJldHVy
biBzdWJzYW1wbGluZ194XzsgfQorICBpbnQgc3Vic2FtcGxpbmdfeSgpIGNvbnN0IHsgcmV0dXJu
IHN1YnNhbXBsaW5nX3lfOyB9CisKICBwcml2YXRlOgogICAvLyBTZXQgdGhlIGNvbXByZXNzZWQg
VlA5IGZyYW1lLgogICBib29sIFNldEZyYW1lKGNvbnN0IHVpbnQ4X3QqIGZyYW1lLCBzaXplX3Qg
bGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9saWJ3ZWJy
dGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0ZGE3M2ExYmZiNDEw
M2ExZjdhYTQxNDM0OWZlMGFmYWViYzBjOGFhLi43YTg5NmRlNzRiNmQ4MTRkYTVhYTMxYzgwMTY0
MDg4YmZhZGE0MzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGli
d2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zODUzLDE2
ICszODUzLDYgQEAKIAkJNUNGRDUzOTIxRTRCRDNBMzAwNDgyOTA4IC8qIHJvd19uZW9uNjQuY2Mg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZENTM4QTFF
NEJEM0EzMDA0ODI5MDggLyogcm93X25lb242NC5jYyAqLzsgfTsKIAkJNUNGRDUzOTMxRTRCRDNB
MzAwNDgyOTA4IC8qIHNjYWxlX25lb24uY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1Q0ZENTM4QjFFNEJEM0EzMDA0ODI5MDggLyogc2NhbGVfbmVvbi5j
YyAqLzsgfTsKIAkJNUNGRDUzOTQxRTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb242NC5jYyBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRkQ1MzhDMUU0
QkQzQTMwMDQ4MjkwOCAvKiBzY2FsZV9uZW9uNjQuY2MgKi87IH07Ci0JCUNERUJCNEFDMjRDMDE5
OUQwMEFEQkQ0NCAvKiB3ZWJtX3BhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MDgyNEMwMTkxQTAwQURCRDQ0IC8qIHdlYm1fcGFyc2Vy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVC
QjRBRDI0QzAxOTlEMDBBREJENDQgLyogYnVmZmVyX3JlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MEQyNEMwMTkxQTAwQURCRDQ0IC8q
IGJ1ZmZlcl9yZWFkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7
IH07IH07Ci0JCUNERUJCNEFFMjRDMDE5OUQwMEFEQkQ0NCAvKiBpZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MEEyNEMwMTkxQTAwQURCRDQ0
IC8qIGlkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9Owot
CQlDREVCQjRBRjI0QzAxOTlEMDBBREJENDQgLyogaXN0cmVhbV9yZWFkZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDA5MjRDMDE5MUEwMEFE
QkQ0NCAvKiBpc3RyZWFtX3JlYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1
YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjAyNEMwMTk5RDAwQURCRDQ0IC8qIGRvbV90eXBlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MEIy
NEMwMTkxQTAwQURCRDQ0IC8qIGRvbV90eXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjEyNEMwMTk5RDAwQURCRDQ0IC8qIGVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJC
NDBDMjRDMDE5MUEwMEFEQkQ0NCAvKiBlbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCMjI0QzAxOTlEMDBBREJENDQgLyogc3Rh
dHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVC
QjQwNjI0QzAxOTFBMDBBREJENDQgLyogc3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCMzI0QzAxOTlEMDBBREJENDQgLyogcmVh
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVC
QjQwNTI0QzAxOTFBMDBBREJENDQgLyogcmVhZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCNDI0QzAxOTlEMDBBREJENDQgLyogZmls
ZV9yZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENERUJCNDA3MjRDMDE5MUEwMEFEQkQ0NCAvKiBmaWxlX3JlYWRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjUyNEMwMTk5RDAwQURC
RDQ0IC8qIGNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREVCQjQwRTI0QzAxOTFBMDBBREJENDQgLyogY2FsbGJhY2suaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUNERUJCNEI2MjRDMDE5QzQw
MEFEQkQ0NCAvKiB1bmtub3duX3BhcnNlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDY0MjRDMDE5MUEwMEFEQkQ0NCAvKiB1bmtub3duX3Bh
cnNlci5jYyAqLzsgfTsKIAkJQ0RFQkI0QjcyNEMwMTlDNDAwQURCRDQ0IC8qIG1hc3Rlcl9wYXJz
ZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVC
QjQ2RjI0QzAxOTFBMDBBREJENDQgLyogbWFzdGVyX3BhcnNlci5jYyAqLzsgfTsKIAkJQ0RFQkI0
QjgyNEMwMTlDNDAwQURCRDQ0IC8qIGJsb2NrX3BhcnNlci5jYyBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDc2MjRDMDE5MUEwMEFEQkQ0NCAvKiBi
bG9ja19wYXJzZXIuY2MgKi87IH07CkBAIC0zODg2LDYgKzM4NzYsMTggQEAKIAkJQ0RFQkI0Q0Ey
NEMwMUEwRDAwQURCRDQ0IC8qIGxpYndlYm0uYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCMTE5MjRDMDE4NzQwMEFEQkQ0NCAvKiBsaWJ3ZWJt
LmEgKi87IH07CiAJCUNERUJCNEQzMjRDMEM4Q0EwMEFEQkQ0NCAvKiBiaXRfdXRpbHMuY2MgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQ1MTI0QzAx
OTFBMDBBREJENDQgLyogYml0X3V0aWxzLmNjICovOyB9OwogCQlDREVCQjRENDI0QzBDQjEwMDBB
REJENDQgLyogY2FsbGJhY2suY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREVCQjQ4RTI0QzAxOTFBMDBBREJENDQgLyogY2FsbGJhY2suY2MgKi87IH07
CisJCUNERkQyRkE4MjRDNEIzNEUwMDQ4REFDMyAvKiB2cDlfaGVhZGVyX3BhcnNlci5jYyBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERkQyRjlBMjRDNEIy
RjkwMDQ4REFDMyAvKiB2cDlfaGVhZGVyX3BhcnNlci5jYyAqLzsgfTsKKwkJQ0RGRDJGQzUyNEM0
REFGNzAwNDhEQUMzIC8qIGJ1ZmZlcl9yZWFkZXIuaCBpbiBDb3B5IHdlYm0gaGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwRDI0QzAxOTFBMDBBREJENDQg
LyogYnVmZmVyX3JlYWRlci5oICovOyB9OworCQlDREZEMkZDNjI0QzREQUY3MDA0OERBQzMgLyog
Y2FsbGJhY2suaCBpbiBDb3B5IHdlYm0gaGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREVCQjQwRTI0QzAxOTFBMDBBREJENDQgLyogY2FsbGJhY2suaCAqLzsgfTsK
KwkJQ0RGRDJGQzcyNEM0REFGNzAwNDhEQUMzIC8qIGRvbV90eXBlcy5oIGluIENvcHkgd2VibSBo
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDBCMjRDMDE5
MUEwMEFEQkQ0NCAvKiBkb21fdHlwZXMuaCAqLzsgfTsKKwkJQ0RGRDJGQzgyNEM0REFGNzAwNDhE
QUMzIC8qIGVsZW1lbnQuaCBpbiBDb3B5IHdlYm0gaGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwQzI0QzAxOTFBMDBBREJENDQgLyogZWxlbWVudC5oICov
OyB9OworCQlDREZEMkZDOTI0QzREQUY3MDA0OERBQzMgLyogZmlsZV9yZWFkZXIuaCBpbiBDb3B5
IHdlYm0gaGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQw
NzI0QzAxOTFBMDBBREJENDQgLyogZmlsZV9yZWFkZXIuaCAqLzsgfTsKKwkJQ0RGRDJGQ0EyNEM0
REFGNzAwNDhEQUMzIC8qIGlkLmggaW4gQ29weSB3ZWJtIGhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MEEyNEMwMTkxQTAwQURCRDQ0IC8qIGlkLmggKi87
IH07CisJCUNERkQyRkNCMjRDNERBRjcwMDQ4REFDMyAvKiBpc3RyZWFtX3JlYWRlci5oIGluIENv
cHkgd2VibSBoZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJC
NDA5MjRDMDE5MUEwMEFEQkQ0NCAvKiBpc3RyZWFtX3JlYWRlci5oICovOyB9OworCQlDREZEMkZD
QzI0QzREQUY3MDA0OERBQzMgLyogcmVhZGVyLmggaW4gQ29weSB3ZWJtIGhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MDUyNEMwMTkxQTAwQURCRDQ0IC8q
IHJlYWRlci5oICovOyB9OworCQlDREZEMkZDRDI0QzREQUY3MDA0OERBQzMgLyogc3RhdHVzLmgg
aW4gQ29weSB3ZWJtIGhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RFQkI0MDYyNEMwMTkxQTAwQURCRDQ0IC8qIHN0YXR1cy5oICovOyB9OworCQlDREZEMkZDRTI0
QzREQUY3MDA0OERBQzMgLyogd2VibV9wYXJzZXIuaCBpbiBDb3B5IHdlYm0gaGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwODI0QzAxOTFBMDBBREJENDQg
Lyogd2VibV9wYXJzZXIuaCAqLzsgfTsKKwkJQ0RGRDJGRDAyNEM0REIyRjAwNDhEQUMzIC8qIHZw
OV9oZWFkZXJfcGFyc2VyLmggaW4gQ29weSBjb21tb24gaGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREZEMkY5NjI0QzRCMkY5MDA0OERBQzMgLyogdnA5X2hlYWRl
cl9wYXJzZXIuaCAqLzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhCdWlsZFJ1bGUgc2VjdGlvbiAqLwpAQCAtNDE4MCw2ICs0MTgyLDM3IEBACiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7CiAJCX07CisJCUNE
RkQyRkM0MjRDNEQ5RDEwMDQ4REFDMyAvKiBDb3B5IHdlYm0gaGVhZGVycyAqLyA9IHsKKwkJCWlz
YSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OworCQkJZHN0UGF0aCA9IHVzci9sb2NhbC9pbmNsdWRlL3dlYm07CisJCQlkc3RTdWJmb2xk
ZXJTcGVjID0gMTY7CisJCQlmaWxlcyA9ICgKKwkJCQlDREZEMkZDNTI0QzREQUY3MDA0OERBQzMg
LyogYnVmZmVyX3JlYWRlci5oIGluIENvcHkgd2VibSBoZWFkZXJzICovLAorCQkJCUNERkQyRkM2
MjRDNERBRjcwMDQ4REFDMyAvKiBjYWxsYmFjay5oIGluIENvcHkgd2VibSBoZWFkZXJzICovLAor
CQkJCUNERkQyRkM3MjRDNERBRjcwMDQ4REFDMyAvKiBkb21fdHlwZXMuaCBpbiBDb3B5IHdlYm0g
aGVhZGVycyAqLywKKwkJCQlDREZEMkZDODI0QzREQUY3MDA0OERBQzMgLyogZWxlbWVudC5oIGlu
IENvcHkgd2VibSBoZWFkZXJzICovLAorCQkJCUNERkQyRkM5MjRDNERBRjcwMDQ4REFDMyAvKiBm
aWxlX3JlYWRlci5oIGluIENvcHkgd2VibSBoZWFkZXJzICovLAorCQkJCUNERkQyRkNBMjRDNERB
RjcwMDQ4REFDMyAvKiBpZC5oIGluIENvcHkgd2VibSBoZWFkZXJzICovLAorCQkJCUNERkQyRkNC
MjRDNERBRjcwMDQ4REFDMyAvKiBpc3RyZWFtX3JlYWRlci5oIGluIENvcHkgd2VibSBoZWFkZXJz
ICovLAorCQkJCUNERkQyRkNDMjRDNERBRjcwMDQ4REFDMyAvKiByZWFkZXIuaCBpbiBDb3B5IHdl
Ym0gaGVhZGVycyAqLywKKwkJCQlDREZEMkZDRDI0QzREQUY3MDA0OERBQzMgLyogc3RhdHVzLmgg
aW4gQ29weSB3ZWJtIGhlYWRlcnMgKi8sCisJCQkJQ0RGRDJGQ0UyNEM0REFGNzAwNDhEQUMzIC8q
IHdlYm1fcGFyc2VyLmggaW4gQ29weSB3ZWJtIGhlYWRlcnMgKi8sCisJCQkpOworCQkJbmFtZSA9
ICJDb3B5IHdlYm0gaGVhZGVycyI7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKKwkJfTsKKwkJQ0RGRDJGQ0YyNEM0REIwQzAwNDhEQUMzIC8qIENvcHkgY29tbW9u
IGhlYWRlcnMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOworCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWRzdFBhdGggPSB1c3IvbG9jYWwvaW5jbHVk
ZS9jb21tb247CisJCQlkc3RTdWJmb2xkZXJTcGVjID0gMTY7CisJCQlmaWxlcyA9ICgKKwkJCQlD
REZEMkZEMDI0QzREQjJGMDA0OERBQzMgLyogdnA5X2hlYWRlcl9wYXJzZXIuaCBpbiBDb3B5IGNv
bW1vbiBoZWFkZXJzICovLAorCQkJKTsKKwkJCW5hbWUgPSAiQ29weSBjb21tb24gaGVhZGVycyI7
CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIC8qIEVu
ZCBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRmlsZVJl
ZmVyZW5jZSBzZWN0aW9uICovCkBAIC04MzY2LDYgKzgzOTksOCBAQAogCQlDREVCQjQ5QjI0QzAx
OTFBMDBBREJENDQgLyogY29udGVudF9lbmNfYWVzX3NldHRpbmdzX3BhcnNlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBjb250ZW50X2VuY19hZXNfc2V0dGluZ3NfcGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNERUJCNDlDMjRDMDE5MUEwMEFEQkQ0NCAvKiB2aWRlb19wYXJzZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gdmlkZW9fcGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNERUJCNDlEMjRDMDE5MUEwMEFEQkQ0NCAvKiBtYXN0ZXJfcGFyc2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IG1hc3Rlcl9wYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RGRDJGOTYyNEM0QjJGOTAwNDhEQUMzIC8qIHZwOV9oZWFkZXJfcGFyc2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IHZwOV9oZWFkZXJfcGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNERkQyRjlBMjRDNEIyRjkwMDQ4REFDMyAvKiB2cDlfaGVhZGVyX3BhcnNlci5jYyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IHZwOV9oZWFkZXJfcGFyc2VyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGQjM5RDBEMTEyMDBGMEUzMDAwODhFNjkgLyogbGlid2VicnRjLmR5bGliICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFj
aC1vLmR5bGliIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGlid2VicnRjLmR5bGliOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVu
Y2Ugc2VjdGlvbiAqLwogCkBAIC0xNTI0Nyw2ICsxNTI4Miw3IEBACiAJCUNERUJCMTFGMjRDMDE5
MTgwMEFEQkQ0NCAvKiBsaWJ3ZWJtICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQlDREZEMkY5MjI0QzRCMkY5MDA0OERBQzMgLyogY29tbW9uICovLAogCQkJ
CUNERUJCMTkyMjRDMDE5MTgwMEFEQkQ0NCAvKiB3ZWJtX3BhcnNlciAqLywKIAkJCSk7CiAJCQlw
YXRoID0gbGlid2VibTsKQEAgLTE1MzcyLDYgKzE1NDA4LDE1IEBACiAJCQlwYXRoID0gc3JjOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQ0RGRDJGOTIyNEM0QjJGOTAwNDhE
QUMzIC8qIGNvbW1vbiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJQ0RGRDJGOUEyNEM0QjJGOTAwNDhEQUMzIC8qIHZwOV9oZWFkZXJfcGFyc2VyLmNjICov
LAorCQkJCUNERkQyRjk2MjRDNEIyRjkwMDQ4REFDMyAvKiB2cDlfaGVhZGVyX3BhcnNlci5oICov
LAorCQkJKTsKKwkJCXBhdGggPSBjb21tb247CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwor
CQl9OwogCQlGQjM5RDA2RTEyMDBFRDkyMDAwODhFNjkgPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKApAQCAtMTU3NDEsMTYgKzE1Nzg2LDYgQEAKIAkJCWlzYSA9IFBCWEhl
YWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZp
bGVzID0gKAotCQkJCUNERUJCNEFEMjRDMDE5OUQwMEFEQkQ0NCAvKiBidWZmZXJfcmVhZGVyLmgg
aW4gSGVhZGVycyAqLywKLQkJCQlDREVCQjRCNTI0QzAxOTlEMDBBREJENDQgLyogY2FsbGJhY2su
aCBpbiBIZWFkZXJzICovLAotCQkJCUNERUJCNEIwMjRDMDE5OUQwMEFEQkQ0NCAvKiBkb21fdHlw
ZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCUNERUJCNEIxMjRDMDE5OUQwMEFEQkQ0NCAvKiBlbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlDREVCQjRCNDI0QzAxOTlEMDBBREJENDQgLyogZmls
ZV9yZWFkZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUNERUJCNEFFMjRDMDE5OUQwMEFEQkQ0NCAv
KiBpZC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0RFQkI0QUYyNEMwMTk5RDAwQURCRDQ0IC8qIGlz
dHJlYW1fcmVhZGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlDREVCQjRCMzI0QzAxOTlEMDBBREJE
NDQgLyogcmVhZGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlDREVCQjRCMjI0QzAxOTlEMDBBREJE
NDQgLyogc3RhdHVzLmggaW4gSGVhZGVycyAqLywKLQkJCQlDREVCQjRBQzI0QzAxOTlEMDBBREJE
NDQgLyogd2VibV9wYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTczNjYsNiArMTc0MDEsOCBA
QAogCQkJCUNERUJCMTE1MjRDMDE4NzQwMEFEQkQ0NCAvKiBIZWFkZXJzICovLAogCQkJCUNERUJC
MTE2MjRDMDE4NzQwMEFEQkQ0NCAvKiBTb3VyY2VzICovLAogCQkJCUNERUJCMTE3MjRDMDE4NzQw
MEFEQkQ0NCAvKiBGcmFtZXdvcmtzICovLAorCQkJCUNERkQyRkM0MjRDNEQ5RDEwMDQ4REFDMyAv
KiBDb3B5IHdlYm0gaGVhZGVycyAqLywKKwkJCQlDREZEMkZDRjI0QzREQjBDMDA0OERBQzMgLyog
Q29weSBjb21tb24gaGVhZGVycyAqLywKIAkJCSk7CiAJCQlidWlsZFJ1bGVzID0gKAogCQkJKTsK
QEAgLTE4NTM0LDYgKzE4NTcxLDcgQEAKIAkJCQlDREVCQjRDMzI0QzAxOUM0MDBBREJENDQgLyog
dmFyX2ludF9wYXJzZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQlDREVCQjRCOTI0QzAxOUM0MDBB
REJENDQgLyogdmlydHVhbF9ibG9ja19wYXJzZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQlDREVC
QjRDODI0QzAxOUM0MDBBREJENDQgLyogdm9pZF9wYXJzZXIuY2MgaW4gU291cmNlcyAqLywKKwkJ
CQlDREZEMkZBODI0QzRCMzRFMDA0OERBQzMgLyogdnA5X2hlYWRlcl9wYXJzZXIuY2MgaW4gU291
cmNlcyAqLywKIAkJCQlDREVCQjRCQTI0QzAxOUM0MDBBREJENDQgLyogd2VibV9wYXJzZXIuY2Mg
aW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDFkN2YyMDk4NjdjMWQ0ZTBhNDI3
NDY5NzY1NWY4ZDFiMTM2ZGFkMGUuLmRjM2ZmMjU4NDFhOTI1MzNiZWU4ZDA1ODE2MThhYjIwYzcw
Yzk5ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMjkxLDYgKzI5MSw3IEBAIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQy5tbSBAbm8tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNhbXBsZUFWRk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tIEBuby11bmlmeQogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
bW0gQG5vLXVuaWZ5CitwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tIEBuby11bmlmeQogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCBA
bm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIEBuby11bmlmeQpAQCAtMzMzLDYgKzMzNCw3IEBA
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9UcmFuc2Zv
cm1hdGlvbk1hdHJpeENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3Bw
CitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Db2xvckNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9GbG9hdFJlY3RDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29y
ZVRleHQuY3BwCkBAIC0zNDgsNiArMzUwLDggQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9T
dXJmYWNlLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2VQb29sQ29jb2EubW0K
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcAorcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcAorcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvVlA5VXRpbGl0aWVzQ29jb2EubW0KQEAgLTM1Niw2ICszNjAsNyBAQCBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJHTExheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHUFVMYXllci5tbQor
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQogcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1Rl
eHR1cmVDYWNoZUNWLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggN2Q5NDM5YTFlZThmNWE3MjFmZjA5M2ZiZGMxM2JjODRkNTg1
ZjUyYS4uMDk1OGU0Yzc4MGFhNzUwYWVhNmM3YjI5YmFiZjllYzIxZmY5YjU2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDI2
Niw2ICs0MjY2LDcgQEAKIAkJQ0RGNjVDQ0ExNDVCNDQ4ODAwQzRDN0FBIC8qIE1lZGlhQ29udHJv
bGxlckludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RGNjVDQzkxNDVCNDNBNzAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFj
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNE
Rjc0ODNGMThGRUJDRUMwMDA2RUNDMCAvKiBHcmlkUG9zaXRpb25zUmVzb2x2ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjc0ODNEMThGRUJDRUMw
MDA2RUNDMCAvKiBHcmlkUG9zaXRpb25zUmVzb2x2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDREY3NTZBMzIxNUMyOUU5MDBFRkNCNTAgLyog
SlNNZWRpYUtleUVuY3J5cHRpb25TY2hlbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENERjc1NkExMjE1QzI5RTkwMEVGQ0I1MCAvKiBKU01lZGlhS2V5
RW5jcnlwdGlvblNjaGVtZS5oICovOyB9OworCQlDREY5OTRGRDI0QzE1RkUzMDAyRUEwNjIgLyog
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENERjk5NEZCMjRDMTJBNkEwMDJFQTA2MiAvKiBTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDLm1tICovOyB9OwogCQlDREZDMzYwNjE4Q0E2MUMyMDAyNkU1NkYgLyog
UmVtb3RlQ29tbWFuZExpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREZDMzYwNDE4Q0E2MUMyMDAyNkU1NkYgLyogUmVtb3RlQ29tbWFuZExp
c3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQ0UwNTdGQTYxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwNTdGQTQx
MjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMDhDM0QyMTUyQjU5OUEw
MDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA4QzNEMDE1MkI1OTlBMDAyMUI4QzIgLyog
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KCk7IH07IH07CkBAIC0xNDE2NCw2ICsxNDE2NSw4IEBACiAJCUNEOEM2QzI5MjJGRERBOTEwMEE3
MjBBQiAvKiBKU1JlbW90ZVBsYXliYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVtb3RlUGxheWJh
Y2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4RDMwNkQyM0FENEZBODAwNkMz
OTc1IC8qIENETUxvZ2dpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0RNTG9nZ2luZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRDhEMzA2RTIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9n
Z2luZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDRE1Mb2dnaW5nLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q4RjY2NzAyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEOEY2NjcyMjRDMEYyMDgwMDBD
NDIxQyAvKiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5MkY1MEYy
MjYwRkZFRTAwRjg3QkIzIC8qIERvY3VtZW50RnVsbHNjcmVlbi5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRG9jdW1lbnRG
dWxsc2NyZWVuLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5MkY1MTAyMjYw
RkZFRTAwRjg3QkIzIC8qIERvY3VtZW50RnVsbHNjcmVlbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1
bWVudEZ1bGxzY3JlZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5MkY1MTYy
MjYxMDM4MjAwRjg3QkIzIC8qIEZ1bGxzY3JlZW5NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1
bGxzY3JlZW5NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDM0NCw2
ICsxNDM0Nyw4IEBACiAJCUNERThCNUVGMUE2OTc3OEIwMEI0QjY2QSAvKiBMZWdhY3lDRE1TZXNz
aW9uQ2xlYXJLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGVnYWN5Q0RN
U2Vzc2lvbkNsZWFyS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUE3Qzgy
MTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVuLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbmRlckZ1bGxTY3JlZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0RFQTdDODMxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyRnVsbFNjcmVlbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERUIzRDcyMjRDNDFBNkUwMDFGQkVF
RiAvKiBTb3VyY2VCdWZmZXJQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlQnVm
ZmVyUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFQjNENzMyNEM0
MUE2RTAwMUZCRUVGIC8qIFNvdXJjZUJ1ZmZlclBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3Vy
Y2VCdWZmZXJQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQ0E4OTgx
RURGNDQ3RDAwRENCMDhCIC8qIEFWQXNzZXRUcmFja1V0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEFWQXNzZXRUcmFja1V0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0RFQ0E4OTkxRURGNDQ3RDAwRENCMDhCIC8qIEFWQXNzZXRUcmFja1V0aWxpdGll
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBVkFzc2V0VHJhY2tVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFRTM5MzYxNzk3NDI1OTAwMUQ3NTgwIC8qIFB1YmxpY1VSTE1h
bmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHVibGljVVJM
TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDM4Miw2ICsxNDM4
NywxMiBAQAogCQlDREY3NTY5RTIxNUMyODVFMDBFRkNCNTAgLyogTWVkaWFLZXlFbmNyeXB0aW9u
U2NoZW1lLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBNZWRpYUtleUVuY3J5cHRpb25TY2hlbWUuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDREY3NTZBMDIxNUMyOUU4MDBFRkNCNTAgLyogSlNNZWRpYUtl
eUVuY3J5cHRpb25TY2hlbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNNZWRpYUtleUVuY3J5cHRpb25TY2hlbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDREY3NTZBMTIxNUMyOUU5MDBFRkNCNTAgLyogSlNNZWRpYUtleUVuY3J5cHRpb25T
Y2hlbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUtleUVuY3J5
cHRpb25TY2hlbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RGOTk0RkEyNEMx
MkE2QTAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREY5OTRGQjI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjk5NEZFMjRDMjgxMzYwMDJFQTA2MiAv
KiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9UcmFja1ByaXZh
dGVXZWJNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjk5NEZGMjRDMjgxMzYw
MDJFQTA2MiAvKiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RGOTk1MDAyNEMyODE0OTAwMkVBMDYyIC8qIEF1ZGlvVHJhY2tQcml2YXRlV2ViTS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RGOTk1MDEyNEMyODE0OTAwMkVBMDYyIC8qIEF1ZGlvVHJhY2tQcml2YXRlV2Vi
TS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREZDMzYwMTE4Q0E2MTYzMDAyNkU1NkYgLyogUmVt
b3RlQ29tbWFuZExpc3RlbmVySU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDREZDMzYwMjE4Q0E2MTYzMDAyNkU1NkYgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlQ29tbWFuZExp
c3RlbmVySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREZDMzYwMzE4Q0E2
MUMyMDAyNkU1NkYgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTg2OCw2ICsyNTg3OSw4IEBACiAJCUI1MzIwRDY4MTIy
QTI0RTkwMDJEMTQ0MCAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJQ0RGOTk1MDEyNEMyODE0OTAwMkVBMDYyIC8qIEF1ZGlvVHJhY2tQcml2
YXRlV2ViTS5jcHAgKi8sCisJCQkJQ0RGOTk1MDAyNEMyODE0OTAwMkVBMDYyIC8qIEF1ZGlvVHJh
Y2tQcml2YXRlV2ViTS5oICovLAogCQkJCUY0OEQyQUEzMjE1OTc0MEQwMEM2NzUyQiAvKiBDb2xv
ckNvY29hLmggKi8sCiAJCQkJRjQ4RDJBQTQyMTU5NzQwRDAwQzY3NTJCIC8qIENvbG9yQ29jb2Eu
bW0gKi8sCiAJCQkJQjI3NTM1NEMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdENvY29hLm1t
ICovLApAQCAtMjU4ODksMTAgKzI1OTAyLDE2IEBACiAJCQkJQUQ5RkY2RTAxOTA4MzkxRDAwM0I2
MUUwIC8qIElPU3VyZmFjZVBvb2xDb2NvYS5tbSAqLywKIAkJCQlDREM0OEFDODIxNDlDRjJBMDAy
NEZENTkgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcCAqLywKIAkJ
CQlDREM0OEFDNzIxNDlDRjJBMDAyNEZENTkgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFj
dG9yeUNvY29hLmggKi8sCisJCQkJQ0RFQjNENzIyNEM0MUE2RTAwMUZCRUVGIC8qIFNvdXJjZUJ1
ZmZlclBhcnNlci5jcHAgKi8sCisJCQkJQ0RFQjNENzMyNEM0MUE2RTAwMUZCRUVGIC8qIFNvdXJj
ZUJ1ZmZlclBhcnNlci5oICovLAorCQkJCUNEOEY2NjcwMjRDMEYyMDgwMDBDNDIxQyAvKiBTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcCAqLywKKwkJCQlDRDhGNjY3MjI0QzBGMjA4MDAwQzQyMUMg
LyogU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oICovLAogCQkJCUU0RThCNEVEMjE2Qjc5RjQwMEI4
ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAgKi8sCiAJCQkJRTRFOEI0RUEy
MTZCNzlFNTAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmggKi8sCiAJCQkJ
NTI2NzI0RjIxQ0IyRkRGNjAwNzU5NzREIC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2Eu
aCAqLywKIAkJCQk1MjY3MjRGMTFDQjJGREY2MDA3NTk3NEQgLyogVGV4dFRyYWNrUmVwcmVzZW50
YXRpb25Db2NvYS5tbSAqLywKKwkJCQlDREY5OTRGRjI0QzI4MTM2MDAyRUEwNjIgLyogVmlkZW9U
cmFja1ByaXZhdGVXZWJNLmNwcCAqLywKKwkJCQlDREY5OTRGRTI0QzI4MTM2MDAyRUEwNjIgLyog
VmlkZW9UcmFja1ByaXZhdGVXZWJNLmggKi8sCiAJCQkJQ0Q2RkU1QjcyNEJDRTY0NTAwOUZDREE0
IC8qIFZQOVV0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJQ0Q2RkU1QjgyNEJDRTY0NTAwOUZDREE0
IC8qIFZQOVV0aWxpdGllc0NvY29hLm1tICovLAogCQkJCTJEM0VGNDQ0MTkxNzkxNUMwMDAzNDE4
NCAvKiBXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUuaCAqLywKQEAgLTI3Mzg1LDYg
KzI3NDA0LDggQEAKIAkJCQlDREM4QjVBNTE4MDQ3NEY3MDAxNkU2ODUgLyogTWVkaWFTb3VyY2VQ
cml2YXRlQVZGT2JqQy5oICovLAogCQkJCUNEQzhCNUE0MTgwNDc0RjcwMDE2RTY4NSAvKiBNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tICovLAogCQkJCTdBMjlGNTcxMThDNjk1MTQwMDREMEY4
MSAvKiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggKi8sCisJCQkJQ0RGOTk0RkEyNEMx
MkE2QTAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCAqLywKKwkJCQlDREY5
OTRGQjI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSAqLywK
IAkJCQlDREM4QjVBOTE4MDQ3RkYxMDAxNkU2ODUgLyogU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMuaCAqLywKIAkJCQlDREM4QjVBODE4MDQ3RkYxMDAxNkU2ODUgLyogU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMubW0gKi8sCiAJCQkJNTJENUExOEUxQzU0NTkwMzAwREUzNEEzIC8qIFZpZGVv
TGF5ZXJNYW5hZ2VyT2JqQy5oICovLApAQCAtMzQ1OTQsNiArMzQ2MTUsNyBAQAogCQkJCTI2QUEw
RjlFMThEMkExOEIwMDQxOTM4MSAvKiBTZWxlY3RvclBzZXVkb0VsZW1lbnRUeXBlTWFwLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTdDRDU4REZEMUY5NTY1QTgwMDExMjc5MSAvKiBTZXR0aW5ncy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTBBODFGOTAyMkE0MDA1MTAyQ0UgLyogU29mdExp
bmtMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNERjk5NEZEMjRDMTVGRTMwMDJFQTA2
MiAvKiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RD
OEI1QUExODA0N0ZGMTAwMTZFNjg1IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M3Q0EwQTJDRjA2QjAwRDU3NjY0IC8qIFNWR05hbWVzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUMxNjkyREQyMjNEMjNBQkQwMDZFODhGNyAvKiBTeXN0ZW1C
YXR0ZXJ5Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oCmluZGV4IDExYzBhN2Y1ZDhmOWI0YjQyYTg3MWIzMzExZWFjNDQ1OTc1
MzY0MjcuLmQwMTc4NGM3YWE0Yjc2ZDZjM2NkMjU5NzkyMzI0YTYwNTI5YTFmNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCkBAIC0zOTEsNiArMzkx
LDExIEBAIHB1YmxpYzoKICAgICBib29sIGluY3JlbWVudGFsUERGTG9hZGluZ0VuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX2luY3JlbWVudGFsUERGTG9hZGluZ0VuYWJsZWQ7IH0KICNlbmRpZgog
CisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICB2b2lkIHNldFdlYk1QYXJzZXJFbmFibGVk
KGJvb2wgaXNFbmFibGVkKSB7IG1fd2ViTVBhcnNlckVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAg
ICBib29sIHdlYk1QYXJzZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV93ZWJNUGFyc2VyRW5h
YmxlZDsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgLy8gTmV2ZXIgaW5zdGFudGlhdGUuCiAg
ICAgUnVudGltZUVuYWJsZWRGZWF0dXJlcygpOwpAQCAtNTg0LDYgKzU4OSwxMCBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9pbmNyZW1lbnRhbFBERkxvYWRpbmdFbmFibGVkIHsgZmFsc2UgfTsKICNl
bmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICBib29sIG1fd2ViTVBhcnNlckVu
YWJsZWQgeyBmYWxzZSB9OworI2VuZGlmCisKICAgICBmcmllbmQgY2xhc3MgV1RGOjpOZXZlckRl
c3Ryb3llZDxSdW50aW1lRW5hYmxlZEZlYXR1cmVzPjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oCmluZGV4IDdmYWUy
M2VmNWRjNDI5OWU4ZjA5ZmM0MTJmYzE3MTAyNjhiZWJjMjEuLmE5ZjgzNmJkMTE3M2UyMmUwYWU4
MTRhMTc1NDJhYTIzYTQ2MTVhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJUcmFja1ByaXZhdGVCYXNlLmgiCisjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+CiAKICNpZiBFTkFCTEUoVklERU8pCiAKQEAgLTU1LDYgKzU2LDggQEAgcHVibGlj
OgogICAgICAgICBtX2VuYWJsZWQgPSBlbmFibGVkOwogICAgICAgICBpZiAobV9jbGllbnQpCiAg
ICAgICAgICAgICBtX2NsaWVudC0+ZW5hYmxlZENoYW5nZWQoZW5hYmxlZCk7CisgICAgICAgIGlm
IChtX2VuYWJsZWRDaGFuZ2VkQ2FsbGJhY2spCisgICAgICAgICAgICBtX2VuYWJsZWRDaGFuZ2Vk
Q2FsbGJhY2soKnRoaXMsIG1fZW5hYmxlZCk7CiAgICAgfQogCiAgICAgYm9vbCBlbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CkBAIC02NCw2ICs2Nyw5IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgYm9vbCBpc0JhY2tlZEJ5TWVkaWFTdHJlYW1UcmFjaygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAKKyAgICB1c2luZyBFbmFibGVkQ2hhbmdlZENhbGxiYWNrID0gRnVuY3Rp
b248dm9pZChBdWRpb1RyYWNrUHJpdmF0ZSYsIGJvb2wgZW5hYmxlZCk+OworICAgIHZvaWQgc2V0
RW5hYmxlZENoYW5nZWRDYWxsYmFjayhFbmFibGVkQ2hhbmdlZENhbGxiYWNrJiYgY2FsbGJhY2sp
IHsgbV9lbmFibGVkQ2hhbmdlZENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7IH0KKwogI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJBdWRpb1RyYWNrUHJpdmF0ZSI7IH0KICNlbmRpZgpAQCAt
NzQsNiArODAsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIEF1ZGlvVHJhY2tQcml2YXRl
Q2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKICAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNl
IH07CisgICAgRW5hYmxlZENoYW5nZWRDYWxsYmFjayBtX2VuYWJsZWRDaGFuZ2VkQ2FsbGJhY2s7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNwcAppbmRleCA5YWMzOTE5NzNhNDQwNDQ3ZTJm
YjRkYzdmODc4MDczNTQ3ZDY0OGViLi5lNTI4Y2QzNTYzZTdlNTI5MGZhYTAyMDk0YWY2MWEyYWYx
MzdhZTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlV
dGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0
aWxpdGllcy5jcHAKQEAgLTU0LDI2ICs1NCw3NCBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkVlBMZXZl
bCh1aW50OF90IGxldmVsKQogICAgIHJldHVybiBzdGQ6OmJpbmFyeV9zZWFyY2goc3RkOjpiZWdp
bih2YWxpZExldmVscyksIHN0ZDo6ZW5kKHZhbGlkTGV2ZWxzKSwgbGV2ZWwpOwogfQogCi1zdGF0
aWMgYm9vbCBpc1ZhbGlkVlBjb2xvclByaW1hcmllcyh1aW50OF90IGNvbG9yUHJpbWFyaWVzKQor
c3RhdGljIGJvb2wgaXNWYWxpZFZQQ29sb3JQcmltYXJpZXModWludDhfdCBjb2xvclByaW1hcmll
cykKIHsKICAgICBjb25zdGV4cHIgdWludDhfdCB2YWxpZENvbG9yUHJpbWFyaWVzW10gPSB7Ci0g
ICAgICAgIDEsCi0gICAgICAgIDQsCi0gICAgICAgIDUsCi0gICAgICAgIDYsCi0gICAgICAgIDcs
Ci0gICAgICAgIDgsCi0gICAgICAgIDksCi0gICAgICAgIDEwLAotICAgICAgICAxMSwKLSAgICAg
ICAgMTIsCi0gICAgICAgIDIyLAorICAgICAgICBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmll
czo6QlRfNzA5XzYsCisgICAgICAgIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpVbnNw
ZWNpZmllZCwKKyAgICAgICAgVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OkJUXzQ3MF82
X00sCisgICAgICAgIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpCVF80NzBfN19CRywK
KyAgICAgICAgVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OkJUXzYwMV83LAorICAgICAg
ICBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6U01QVEVfU1RfMjQwLAorICAgICAgICBW
UENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6RmlsbSwKKyAgICAgICAgVlBDb25maWd1cmF0
aW9uQ29sb3JQcmltYXJpZXM6OkJUXzIwMjBfTm9uY29uc3RhbnRfTHVtaW5hbmNlLAorICAgICAg
ICBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6U01QVEVfU1RfNDI4XzEsCisgICAgICAg
IFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpTTVBURV9SUF80MzFfMiwKKyAgICAgICAg
VlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OlNNUFRFX0VHXzQzMl8xLAorICAgICAgICBW
UENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6RUJVX1RlY2hfMzIxM19FLAogICAgIH07CiAK
ICAgICBBU1NFUlQoc3RkOjppc19zb3J0ZWQoc3RkOjpiZWdpbih2YWxpZENvbG9yUHJpbWFyaWVz
KSwgc3RkOjplbmQodmFsaWRDb2xvclByaW1hcmllcykpKTsKICAgICByZXR1cm4gc3RkOjpiaW5h
cnlfc2VhcmNoKHN0ZDo6YmVnaW4odmFsaWRDb2xvclByaW1hcmllcyksIHN0ZDo6ZW5kKHZhbGlk
Q29sb3JQcmltYXJpZXMpLCBjb2xvclByaW1hcmllcyk7CiB9CiAKK3N0YXRpYyBib29sIGlzVmFs
aWRWUFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKHVpbnQ4X3QgdHJhbnNmZXJDaGFyYWN0ZXJpc3Rp
Y3MpCit7CisgICAgY29uc3RleHByIHVpbnQ4X3QgdmFsaWRUcmFuc2ZlckNoYXJhY3RlcmlzdGlj
c1tdID0geworICAgICAgICBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6
QlRfNzA5XzYsCisgICAgICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNz
OjpVbnNwZWNpZmllZCwKKyAgICAgICAgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJp
c3RpY3M6OkJUXzQ3MF82X00sCisgICAgICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFj
dGVyaXN0aWNzOjpCVF80NzBfN19CRywKKyAgICAgICAgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJD
aGFyYWN0ZXJpc3RpY3M6OkJUXzYwMV83LAorICAgICAgICBWUENvbmZpZ3VyYXRpb25UcmFuc2Zl
ckNoYXJhY3RlcmlzdGljczo6U01QVEVfU1RfMjQwLAorICAgICAgICBWUENvbmZpZ3VyYXRpb25U
cmFuc2ZlckNoYXJhY3RlcmlzdGljczo6TGluZWFyLAorICAgICAgICBWUENvbmZpZ3VyYXRpb25U
cmFuc2ZlckNoYXJhY3RlcmlzdGljczo6TG9ncml0aG1pYywKKyAgICAgICAgVlBDb25maWd1cmF0
aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkxvZ3JpdGhtaWNfU3FydCwKKyAgICAgICAgVlBD
b25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OklFQ182MTk2Nl8yXzQsCisgICAg
ICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpCVF8xMzYxXzAsCisg
ICAgICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpJRUNfNjE5NjZf
Ml8xLAorICAgICAgICBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6QlRf
MjAyMF8xMGJpdCwKKyAgICAgICAgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3Rp
Y3M6OkJUXzIwMjBfMTJiaXQsCisgICAgICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFj
dGVyaXN0aWNzOjpTTVBURV9TVF8yMDg0LAorICAgICAgICBWUENvbmZpZ3VyYXRpb25UcmFuc2Zl
ckNoYXJhY3RlcmlzdGljczo6U01QVEVfU1RfNDI4XzEsCisgICAgICAgIFZQQ29uZmlndXJhdGlv
blRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpCVF8yMTAwX0hMRywKKyAgICB9OworICAgIEFTU0VS
VChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKHZhbGlkVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3Mp
LCBzdGQ6OmVuZCh2YWxpZFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKSkpOworICAgIHJldHVybiBz
dGQ6OmJpbmFyeV9zZWFyY2goc3RkOjpiZWdpbih2YWxpZFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNz
KSwgc3RkOjplbmQodmFsaWRUcmFuc2ZlckNoYXJhY3RlcmlzdGljcyksIHRyYW5zZmVyQ2hhcmFj
dGVyaXN0aWNzKTsKK30KKworc3RhdGljIGJvb2wgaXNWYWxpZFZQTWF0cml4Q29lZmZpY2llbnRz
KHVpbnQ4X3QgbWF0cml4Q29lZmZpY2llbnRzKQoreworICAgIGNvbnN0ZXhwciB1aW50OF90IHZh
bGlkTWF0cml4Q29lZmZpY2llbnRzW10gPSB7CisgICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJp
eENvZWZmaWNpZW50czo6SWRlbnRpdHksCisgICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJpeENv
ZWZmaWNpZW50czo6QlRfNzA5XzYsCisgICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZm
aWNpZW50czo6VW5zcGVjaWZpZWQsCisgICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZm
aWNpZW50czo6RkNDLAorICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6
OkJUXzQ3MF83X0JHLAorICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6
OkJUXzYwMV83LAorICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OlNN
UFRFX1NUXzI0MCwKKyAgICAgICAgVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpZ
Q2dDbywKKyAgICAgICAgVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpCVF8yMDIw
X05vbmNvbnN0YW50X0x1bWluYW5jZSwKKyAgICAgICAgVlBDb25maWd1cmF0aW9uTWF0cml4Q29l
ZmZpY2llbnRzOjpCVF8yMDIwX0NvbnN0YW50X0x1bWluYW5jZSwKKyAgICAgICAgVlBDb25maWd1
cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpTTVBURV9TVF8yMDg1LAorICAgICAgICBWUENvbmZp
Z3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OkNocm9tYWNpdHlfQ29uc3RhbnRfTHVtaW5hbmNl
LAorICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OkNocm9tYWNpdHlf
Tm9uY29uc3RhbnRfTHVtaW5hbmNlLAorICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2Vm
ZmljaWVudHM6OkJUXzIxMDBfSUNDLAorICAgIH07CisgICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVk
KHN0ZDo6YmVnaW4odmFsaWRNYXRyaXhDb2VmZmljaWVudHMpLCBzdGQ6OmVuZCh2YWxpZE1hdHJp
eENvZWZmaWNpZW50cykpKTsKKyAgICByZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKHN0ZDo6YmVn
aW4odmFsaWRNYXRyaXhDb2VmZmljaWVudHMpLCBzdGQ6OmVuZCh2YWxpZE1hdHJpeENvZWZmaWNp
ZW50cyksIG1hdHJpeENvZWZmaWNpZW50cyk7Cit9CisKIE9wdGlvbmFsPFZQQ29kZWNDb25maWd1
cmF0aW9uUmVjb3JkPiBwYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNWaWV3
KQogewogICAgIC8vIFRoZSBmb3JtYXQgb2YgdGhlICd2cDA5JyBjb2RlYyBzdHJpbmcgaXMgc3Bl
Y2lmaWVkIGluIHRoZSB3ZWJtIEdpdEh1YiByZXBvOgpAQCAtMTQwLDcgKzE4OCw3IEBAIE9wdGlv
bmFsPFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkPiBwYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0
cmluZ1ZpZXcgY29kZWNWaWV3CiAgICAgLy8gRmlmdGggZWxlbWVudDogY29sb3JQcmltYXJpZXMu
IExlZ2FsIHZhbHVlcyBhcmUgZGVmaW5lZCBieSAgSVNPL0lFQyAyMzAwMS04OjIwMTYsIHN1cGVy
Y2VkZWQKICAgICAvLyBieSBJU08vSUVDIDIzMDkxLTI6MjAxOS4KICAgICBhdXRvIGNvbG9yUHJp
bWFyaWVzID0gdG9JbnRlZ3JhbFR5cGU8dWludDhfdD4oKm5leHRFbGVtZW50KTsKLSAgICBpZiAo
IWNvbG9yUHJpbWFyaWVzIHx8ICFpc1ZhbGlkVlBjb2xvclByaW1hcmllcygqY29sb3JQcmltYXJp
ZXMpKQorICAgIGlmICghY29sb3JQcmltYXJpZXMgfHwgIWlzVmFsaWRWUENvbG9yUHJpbWFyaWVz
KCpjb2xvclByaW1hcmllcykpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgY29u
ZmlndXJhdGlvbi5jb2xvclByaW1hcmllcyA9ICpjb2xvclByaW1hcmllczsKIApAQCAtMTUwLDcg
KzE5OCw3IEBAIE9wdGlvbmFsPFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkPiBwYXJzZVZQQ29k
ZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNWaWV3CiAgICAgLy8gU2l4dGggZWxlbWVudDog
dHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MuIExlZ2FsIHZhbHVlcyBhcmUgZGVmaW5lZCBieSAgSVNP
L0lFQyAyMzAwMS04OjIwMTYsIHN1cGVyY2VkZWQKICAgICAvLyBieSBJU08vSUVDIDIzMDkxLTI6
MjAxOS4KICAgICBhdXRvIHRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzID0gdG9JbnRlZ3JhbFR5cGU8
dWludDhfdD4oKm5leHRFbGVtZW50KTsKLSAgICBpZiAoIXRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNz
IHx8ICghKnRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzIHx8ICp0cmFuc2ZlckNoYXJhY3RlcmlzdGlj
cyA9PSAyIHx8ICp0cmFuc2ZlckNoYXJhY3RlcmlzdGljcyA9PSAzIHx8ICp0cmFuc2ZlckNoYXJh
Y3RlcmlzdGljcyA+IDE4KSkKKyAgICBpZiAoIXRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzIHx8ICFp
c1ZhbGlkVlBUcmFuc2ZlckNoYXJhY3RlcmlzdGljcygqdHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3Mp
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGNvbmZpZ3VyYXRpb24udHJhbnNm
ZXJDaGFyYWN0ZXJpc3RpY3MgPSAqdHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M7CiAKQEAgLTE2MCw3
ICsyMDgsNyBAQCBPcHRpb25hbDxWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZD4gcGFyc2VWUENv
ZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjVmlldwogICAgIC8vIFNldmVudGggZWxlbWVu
dDogbWF0cml4Q29lZmZpY2llbnRzLiBMZWdhbCB2YWx1ZXMgYXJlIGRlZmluZWQgYnkgIElTTy9J
RUMgMjMwMDEtODoyMDE2LCBzdXBlcmNlZGVkCiAgICAgLy8gYnkgSVNPL0lFQyAyMzA5MS0yOjIw
MTkuCiAgICAgYXV0byBtYXRyaXhDb2VmZmljaWVudHMgPSB0b0ludGVncmFsVHlwZTx1aW50OF90
PigqbmV4dEVsZW1lbnQpOwotICAgIGlmICghbWF0cml4Q29lZmZpY2llbnRzIHx8ICgqbWF0cml4
Q29lZmZpY2llbnRzID09IDIgfHwgKm1hdHJpeENvZWZmaWNpZW50cyA9PSAzIHx8ICptYXRyaXhD
b2VmZmljaWVudHMgPiAxNCkpCisgICAgaWYgKCFtYXRyaXhDb2VmZmljaWVudHMgfHwgaXNWYWxp
ZFZQTWF0cml4Q29lZmZpY2llbnRzKCptYXRyaXhDb2VmZmljaWVudHMpKQogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogICAgIGNvbmZpZ3VyYXRpb24ubWF0cml4Q29lZmZpY2llbnRzID0g
Km1hdHJpeENvZWZmaWNpZW50czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9WUDlVdGlsaXRpZXMuaAppbmRleCAzYWY1ODUwZTU0NDBkMmFmY2Y5ZWFjZGUyYzg1ZTBi
M2QzMTE4ZmUwLi44ODc2OTgzOGQ1MDgxOTgyZDIyYTA3YjA1OWQ0MGJkMzE1YzJjYmU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuaApAQCAt
NTksNiArNTksNjAgQEAgY29uc3RleHByIHVpbnQ4X3QgVmlkZW9SYW5nZSA9IDA7CiBjb25zdGV4
cHIgdWludDhfdCBGdWxsUmFuZ2UgPSAxOwogfQogCisvLyBSZWY6IElTTy9JRUMgMjMwOTEtMjoy
MDE5CituYW1lc3BhY2UgVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXMgeworY29uc3RleHBy
IHVpbnQ4X3QgQlRfNzA5XzYgPSAxOworY29uc3RleHByIHVpbnQ4X3QgVW5zcGVjaWZpZWQgPSAy
OworY29uc3RleHByIHVpbnQ4X3QgQlRfNDcwXzZfTSA9IDQ7Citjb25zdGV4cHIgdWludDhfdCBC
VF80NzBfN19CRyA9IDU7Citjb25zdGV4cHIgdWludDhfdCBCVF82MDFfNyA9IDY7Citjb25zdGV4
cHIgdWludDhfdCBTTVBURV9TVF8yNDAgPSA3OworY29uc3RleHByIHVpbnQ4X3QgRmlsbSA9IDg7
Citjb25zdGV4cHIgdWludDhfdCBCVF8yMDIwX05vbmNvbnN0YW50X0x1bWluYW5jZSA9IDk7Citj
b25zdGV4cHIgdWludDhfdCBTTVBURV9TVF80MjhfMSA9IDEwOworY29uc3RleHByIHVpbnQ4X3Qg
U01QVEVfUlBfNDMxXzIgPSAxMTsKK2NvbnN0ZXhwciB1aW50OF90IFNNUFRFX0VHXzQzMl8xID0g
MTI7Citjb25zdGV4cHIgdWludDhfdCBFQlVfVGVjaF8zMjEzX0UgPSAyMjsKK30KKworLy8gUmVm
OiBJU08vSUVDIDIzMDkxLTI6MjAxOQorbmFtZXNwYWNlIFZQQ29uZmlndXJhdGlvblRyYW5zZmVy
Q2hhcmFjdGVyaXN0aWNzIHsKK2NvbnN0ZXhwciB1aW50OF90IEJUXzcwOV82ID0gMTsKK2NvbnN0
ZXhwciB1aW50OF90IFVuc3BlY2lmaWVkID0gMjsKK2NvbnN0ZXhwciB1aW50OF90IEJUXzQ3MF82
X00gPSA0OworY29uc3RleHByIHVpbnQ4X3QgQlRfNDcwXzdfQkcgPSA1OworY29uc3RleHByIHVp
bnQ4X3QgQlRfNjAxXzcgPSA2OworY29uc3RleHByIHVpbnQ4X3QgU01QVEVfU1RfMjQwID0gNzsK
K2NvbnN0ZXhwciB1aW50OF90IExpbmVhciA9IDg7Citjb25zdGV4cHIgdWludDhfdCBMb2dyaXRo
bWljID0gOTsKK2NvbnN0ZXhwciB1aW50OF90IExvZ3JpdGhtaWNfU3FydCA9IDEwOworY29uc3Rl
eHByIHVpbnQ4X3QgSUVDXzYxOTY2XzJfNCA9IDExOworY29uc3RleHByIHVpbnQ4X3QgQlRfMTM2
MV8wID0gMTI7Citjb25zdGV4cHIgdWludDhfdCBJRUNfNjE5NjZfMl8xID0gMTM7Citjb25zdGV4
cHIgdWludDhfdCBCVF8yMDIwXzEwYml0ID0gMTQ7Citjb25zdGV4cHIgdWludDhfdCBCVF8yMDIw
XzEyYml0ID0gMTU7Citjb25zdGV4cHIgdWludDhfdCBTTVBURV9TVF8yMDg0ID0gMTY7Citjb25z
dGV4cHIgdWludDhfdCBTTVBURV9TVF80MjhfMSA9IDE3OworY29uc3RleHByIHVpbnQ4X3QgQlRf
MjEwMF9ITEcgPSAxODsKK30KKworbmFtZXNwYWNlIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZm
aWNpZW50cyB7Citjb25zdGV4cHIgdWludDhfdCBJZGVudGl0eSA9IDA7Citjb25zdGV4cHIgdWlu
dDhfdCBCVF83MDlfNiA9IDE7Citjb25zdGV4cHIgdWludDhfdCBVbnNwZWNpZmllZCA9IDI7Citj
b25zdGV4cHIgdWludDhfdCBGQ0MgPSA0OworY29uc3RleHByIHVpbnQ4X3QgQlRfNDcwXzdfQkcg
PSA1OworY29uc3RleHByIHVpbnQ4X3QgQlRfNjAxXzcgPSA2OworY29uc3RleHByIHVpbnQ4X3Qg
U01QVEVfU1RfMjQwID0gNzsKK2NvbnN0ZXhwciB1aW50OF90IFlDZ0NvID0gODsKK2NvbnN0ZXhw
ciB1aW50OF90IEJUXzIwMjBfTm9uY29uc3RhbnRfTHVtaW5hbmNlID0gOTsKK2NvbnN0ZXhwciB1
aW50OF90IEJUXzIwMjBfQ29uc3RhbnRfTHVtaW5hbmNlID0gMTA7Citjb25zdGV4cHIgdWludDhf
dCBTTVBURV9TVF8yMDg1ID0gMTE7Citjb25zdGV4cHIgdWludDhfdCBDaHJvbWFjaXR5X0NvbnN0
YW50X0x1bWluYW5jZSA9IDEyOworY29uc3RleHByIHVpbnQ4X3QgQ2hyb21hY2l0eV9Ob25jb25z
dGFudF9MdW1pbmFuY2UgPSAxMzsKK2NvbnN0ZXhwciB1aW50OF90IEJUXzIxMDBfSUNDID0gMTQ7
Cit9CisKIHN0cnVjdCBWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCB7CiAgICAgU3RyaW5nIGNv
ZGVjTmFtZTsKICAgICB1aW50OF90IHByb2ZpbGUgeyAwIH07CkBAIC02Niw5ICsxMjAsOSBAQCBz
dHJ1Y3QgVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQgewogICAgIHVpbnQ4X3QgYml0RGVwdGgg
eyA4IH07CiAgICAgdWludDhfdCBjaHJvbWFTdWJzYW1wbGluZyB7IFZQQ29uZmlndXJhdGlvbkNo
cm9tYVN1YnNhbXBsaW5nOjpTdWJzYW1wbGluZ180MjBfQ29sb2NhdGVkIH07CiAgICAgdWludDhf
dCB2aWRlb0Z1bGxSYW5nZUZsYWcgeyBWUENvbmZpZ3VyYXRpb25SYW5nZTo6VmlkZW9SYW5nZSB9
OwotICAgIHVpbnQ4X3QgY29sb3JQcmltYXJpZXMgeyAxIH07Ci0gICAgdWludDhfdCB0cmFuc2Zl
ckNoYXJhY3RlcmlzdGljcyB7IDEgfTsKLSAgICB1aW50OF90IG1hdHJpeENvZWZmaWNpZW50cyB7
IDEgfTsKKyAgICB1aW50OF90IGNvbG9yUHJpbWFyaWVzIHsgVlBDb25maWd1cmF0aW9uQ29sb3JQ
cmltYXJpZXM6OkJUXzcwOV82IH07CisgICAgdWludDhfdCB0cmFuc2ZlckNoYXJhY3RlcmlzdGlj
cyB7IFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpCVF83MDlfNiB9Owor
ICAgIHVpbnQ4X3QgbWF0cml4Q29lZmZpY2llbnRzIHsgVlBDb25maWd1cmF0aW9uTWF0cml4Q29l
ZmZpY2llbnRzOjpCVF83MDlfNiB9OwogfTsKIAogV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8VlBD
b2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQ+IHBhcnNlVlBDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmll
dyBjb2RlY1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvVmlkZW9UcmFja1ByaXZhdGUuaAppbmRleCA3MThkODBlMzQ1MmM0N2ZlZWY0MjY4ZjI5ZTNh
MmU4N2JiNGRjYWQzLi4wYzQxM2MyZGRmNWQ5ZGEyYTE1YjExMzVjMDhlNTEwODUyYjgwMmM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQ
cml2YXRlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoVklERU8pCiAKICNpbmNsdWRl
ICJUcmFja1ByaXZhdGVCYXNlLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNDgsNiArNDksOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fc2Vs
ZWN0ZWQgPSBzZWxlY3RlZDsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9j
bGllbnQtPnNlbGVjdGVkQ2hhbmdlZChtX3NlbGVjdGVkKTsKKyAgICAgICAgaWYgKG1fc2VsZWN0
ZWRDaGFuZ2VkQ2FsbGJhY2spCisgICAgICAgICAgICBtX3NlbGVjdGVkQ2hhbmdlZENhbGxiYWNr
KCp0aGlzLCBtX3NlbGVjdGVkKTsKICAgICB9CiAgICAgdmlydHVhbCBib29sIHNlbGVjdGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9zZWxlY3RlZDsgfQogCkBAIC01OCwxMiArNjEsMTcgQEAgcHVibGlj
OgogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJW
aWRlb1RyYWNrUHJpdmF0ZSI7IH0KICNlbmRpZgogCisgICAgdXNpbmcgU2VsZWN0ZWRDaGFuZ2Vk
Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFZpZGVvVHJhY2tQcml2YXRlJiwgYm9vbCBzZWxlY3Rl
ZCk+OworICAgIHZvaWQgc2V0U2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2soU2VsZWN0ZWRDaGFuZ2Vk
Q2FsbGJhY2smJiBjYWxsYmFjaykgeyBtX3NlbGVjdGVkQ2hhbmdlZENhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayk7IH0KKworCiBwcm90ZWN0ZWQ6CiAgICAgVmlkZW9UcmFja1ByaXZhdGUoKSA9
IGRlZmF1bHQ7CiAKIHByaXZhdGU6CiAgICAgVmlkZW9UcmFja1ByaXZhdGVDbGllbnQqIG1fY2xp
ZW50IHsgbnVsbHB0ciB9OwogICAgIGJvb2wgbV9zZWxlY3RlZCB7IGZhbHNlIH07CisgICAgU2Vs
ZWN0ZWRDaGFuZ2VkQ2FsbGJhY2sgbV9zZWxlY3RlZENoYW5nZWRDYWxsYmFjazsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcAppbmRleCBjMWNi
MWE0ZDM1NjEyNWQ5NDdkZWZmYzI3ZjU5ZmNhMGM5YjQxODQxLi5iYzEzOTc3OTdiYWRhOGE0NzU5
YmY1MmY5YTU0NjNiMmQ2NDFkNzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwCkBAIC0z
Myw5ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKEFW
QXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCitB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6QXVkaW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaykKICAgICA6IG1faW1wbChtYWtlVW5p
cXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKLSAgICAsIG1fcGFyZW50KHBh
cmVudCkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KQEAgLTY3LDcgKzY2
LDYgQEAgdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0RW5hYmxl
ZChib29sIGVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIEF1ZGlvVHJhY2tQcml2YXRl
QVZGOjpzZXRFbmFibGVkKGVuYWJsZWQpOwotICAgIG1fcGFyZW50LT50cmFja0RpZENoYW5nZUVu
YWJsZWQodGhpcyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IDliYzRmMjZj
MDczNDlmMTc3NmY2MGJlMGRkMWMyYWJjZDdiMzdkNmIuLjE0NTZjMDE2YmFlMDNiODc4YjUwYmY1
OTkyNGZiNGQ5ZjM1MzAxOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMzksOSArMzks
OSBAQCBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzsKIGNsYXNzIEF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIGZpbmFsIDogcHVibGljIEF1ZGlvVHJhY2tQcml2YXRl
QVZGIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQykKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrICp0cmFjaywgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKKyAgICBzdGF0aWMgUmVmPEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrICp0cmFjaykKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2spKTsKICAgICB9CiAKICAgICB2
b2lkIHNldEVuYWJsZWQoYm9vbCkgZmluYWw7CkBAIC01MiwxMiArNTIsMTEgQEAgcHVibGljOgog
ICAgIGludCB0cmFja0lEKCkgeyByZXR1cm4gbV90cmFja0lEOyB9CiAKIHByaXZhdGU6Ci0gICAg
ZXhwbGljaXQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNr
KiwgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCk7CisgICAgZXhwbGljaXQgQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKik7CiAgICAgCiAg
ICAgdm9pZCByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPiBtX2ltcGw7Ci0gICAgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMqIG1fcGFyZW50OwogICAgIGludCBtX3RyYWNrSUQ7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
Lm1tCmluZGV4IDI2NGM3NjRkYzQ0NmY4NThlZTc1MmFjYWM5YTk0ZDI0ZTU0OWU4ZDAuLmViNzgz
ZjhhNjVlNjVmODA1M2E0OTI5NjM1MmZiMzBjZWY4NjU4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNv
bnRlbnRLZXlTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCkBAIC0y
NTQsNyArMjU0LDcgQEAgYm9vbCBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6dXBkYXRl
KFVpbnQ4QXJyYXkqIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JgogICAgICAgICAvLyBkYXRhLgog
ICAgICAgICBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IHByb3RlY3RlZFNvdXJj
ZUJ1ZmZlcjsKICAgICAgICAgZm9yIChhdXRvJiBzb3VyY2VCdWZmZXIgOiBtX3NvdXJjZUJ1ZmZl
cnMpIHsKLSAgICAgICAgICAgIGlmIChzb3VyY2VCdWZmZXItPnByb3RlY3RlZFRyYWNrSUQoKSAh
PSAtMSkgeworICAgICAgICAgICAgaWYgKHNvdXJjZUJ1ZmZlci0+cHJvdGVjdGVkVHJhY2tJRCgp
ICE9IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAgICAgcHJvdGVjdGVkU291cmNlQnVmZmVyID0g
c291cmNlQnVmZmVyOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0K
aW5kZXggODk2YTI0NTIyYjhjNjJmYzM1MjRjMzQzNzg4ZTQzMzZkMGJkZWZmYS4uMjQ0NjEyYTVj
MWUzNjhjYmVkY2JmNzAwNDg1M2FkMGYzNTBjYjdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFt
U2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCkBAIC0yMDgsNyArMjA4LDcg
QEAgYm9vbCBDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjp1cGRhdGUoVWludDhBcnJheSoga2V5
LCBSZWZQdHI8VWludDhBcnJheT4mIG5leHQKIAogICAgIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQz4gcHJvdGVjdGVkU291cmNlQnVmZmVyOwogICAgIGZvciAoYXV0byYgc291cmNl
QnVmZmVyIDogbV9zb3VyY2VCdWZmZXJzKSB7Ci0gICAgICAgIGlmIChzb3VyY2VCdWZmZXItPnBy
b3RlY3RlZFRyYWNrSUQoKSAhPSAtMSkgeworICAgICAgICBpZiAoc291cmNlQnVmZmVyLT5wcm90
ZWN0ZWRUcmFja0lEKCkgIT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIHByb3RlY3RlZFNvdXJj
ZUJ1ZmZlciA9IHNvdXJjZUJ1ZmZlcjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggNjY4OTkxMDFlMWZjNTg0MDc3NzdiNjlkNjM5
MTkxNWZkOWFkZGQyMS4uOGI5NDE1MDdjMDM4ODFjMDIxNmI0ZTc5MmUzOWRiMjZlMzU3ZmRiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMjUzLDIyICsyNTMsNyBAQCBNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
c3VwcG9ydHNUeXBlKGNvbgogICAgIGlmICghcGFyYW1ldGVycy5pc01lZGlhU291cmNlKQogICAg
ICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAK
LSAgICBTdHJpbmcgZXh0ZW5kZWRUeXBlID0gcGFyYW1ldGVycy50eXBlLnJhdygpOwotICAgIFN0
cmluZyBvdXRwdXRDb2RlY3MgPSBwYXJhbWV0ZXJzLnR5cGUucGFyYW1ldGVyKENvbnRlbnRUeXBl
Ojpjb2RlY3NQYXJhbWV0ZXIoKSk7Ci0gICAgaWYgKCFvdXRwdXRDb2RlY3MuaXNFbXB0eSgpICYm
IFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihvdXRwdXRNSU1FQ29kZWNQYXJhbWV0ZXJGb3JJbnB1dE1JTUVDb2RlY1BhcmFtZXRl
cjopXSkgewotICAgICAgICBvdXRwdXRDb2RlY3MgPSBbUEFMOjpnZXRBVlN0cmVhbURhdGFQYXJz
ZXJDbGFzcygpIG91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFyYW1l
dGVyOm91dHB1dENvZGVjc107Ci0gICAgICAgIGV4dGVuZGVkVHlwZSA9IG1ha2VTdHJpbmcocGFy
YW1ldGVycy50eXBlLmNvbnRhaW5lclR5cGUoKSwgIjsgY29kZWNzPVwiIiwgb3V0cHV0Q29kZWNz
LCAiXCIiKTsKLSAgICB9Ci0KLSAgICBhdXRvIHN1cHBvcnRlZCA9IE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwotICAgIGF1dG8mIHN0cmVhbURhdGFQYXJzZXJDYWNo
ZSA9IEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpOwotICAgIGlm
IChzdHJlYW1EYXRhUGFyc2VyQ2FjaGUuaXNBdmFpbGFibGUoKSkKLSAgICAgICAgc3VwcG9ydGVk
ID0gc3RyZWFtRGF0YVBhcnNlckNhY2hlLmNhbkRlY29kZVR5cGUoZXh0ZW5kZWRUeXBlKTsKLSAg
ICBlbHNlIHsKLSAgICAgICAgYXV0byYgYXNzZXRDYWNoZSA9IEFWQXNzZXRNSU1FVHlwZUNhY2hl
OjpzaW5nbGV0b24oKTsKLSAgICAgICAgaWYgKGFzc2V0Q2FjaGUuaXNBdmFpbGFibGUoKSkKLSAg
ICAgICAgICAgIHN1cHBvcnRlZCA9IGFzc2V0Q2FjaGUuY2FuRGVjb2RlVHlwZShleHRlbmRlZFR5
cGUpOwotICAgIH0KKyAgICBhdXRvIHN1cHBvcnRlZCA9IFNvdXJjZUJ1ZmZlclBhcnNlcjo6aXND
b250ZW50VHlwZVN1cHBvcnRlZChwYXJhbWV0ZXJzLnR5cGUpOwogCiAgICAgaWYgKHN1cHBvcnRl
ZCAhPSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZCkKICAgICAgICAgcmV0
dXJuIHN1cHBvcnRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpD
LmgKaW5kZXggMzM0YzA2MTdhNWZhMjA2ZTY4ZmFmMGZlMGM5YjY5MDJkNzI4YmMyYy4uZDlmYjFm
OTFiZjlkY2ViMjFhY2JkNTNlYzMxNWUzNTgyYjA2M2MyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZP
YmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBNZWRpYVNhbXBsZUFWRk9iakMgOiBwdWJsaWMgTWVkaWFTYW1wbGUg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGUoQ01T
YW1wbGVCdWZmZXJSZWYgc2FtcGxlLCBpbnQgdHJhY2tJRCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBNZWRpYVNhbXBsZUFWRk9iakMoc2FtcGxlLCB0cmFja0lEKSk7IH0KKyAgICBzdGF0aWMgUmVm
PE1lZGlhU2FtcGxlQVZGT2JqQz4gY3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwgdWlu
dDY0X3QgdHJhY2tJRCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNhbXBsZUFWRk9iakMo
c2FtcGxlLCB0cmFja0lEKSk7IH0KICAgICBzdGF0aWMgUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4g
Y3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwgQXRvbVN0cmluZyB0cmFja0lEKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2FtcGxlQVZGT2JqQyhzYW1wbGUsIHRyYWNrSUQpKTsg
fQogICAgIHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGUoQ01TYW1wbGVCdWZm
ZXJSZWYgc2FtcGxlLCBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uID0gVmlkZW9Sb3RhdGlvbjo6Tm9u
ZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2Ft
cGxlQVZGT2JqQyhzYW1wbGUsIHJvdGF0aW9uLCBtaXJyb3JlZCkpOyB9CiAgICAgc3RhdGljIFJl
ZlB0cjxNZWRpYVNhbXBsZUFWRk9iakM+IGNyZWF0ZUltYWdlU2FtcGxlKFZlY3Rvcjx1aW50OF90
PiYmLCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KTsKQEAgLTg2LDcgKzg2LDcgQEAg
cHJvdGVjdGVkOgogICAgICAgICAsIG1faWQodHJhY2tJRCkKICAgICB7CiAgICAgfQotICAgIE1l
ZGlhU2FtcGxlQVZGT2JqQyhDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIGludCB0cmFja0lEKQor
ICAgIE1lZGlhU2FtcGxlQVZGT2JqQyhDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIHVpbnQ2NF90
IHRyYWNrSUQpCiAgICAgICAgIDogbV9zYW1wbGUoc2FtcGxlKQogICAgICAgICAsIG1faWQoQXRv
bVN0cmluZzo6bnVtYmVyKHRyYWNrSUQpKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDgyNzhlMDZhNTEyMjk3
YzdlZDJiMjY5MGZmZTBjYjQyODg4NWZiZjYuLjI5MzIyNzkzOTEwZWE1N2YxODFjOTIwMTdkM2Nm
MzY1Nzc1MjEwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQy5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCAiTG9nZ2luZy5o
IgogI2ltcG9ydCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgiCiAjaW1w
b3J0ICJNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaCIKKyNpbXBvcnQgIlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMuaCIKICNpbXBvcnQgIlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgiCiAj
aW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9BbGdvcml0aG1zLmg+CkBAIC04
NSw3ICs4NiwxMSBAQCBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBNZWRpYVNvdXJjZVBy
aXZhdGVBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgQwogICAgIGlmIChNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKSA9PSBN
ZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZCkKICAgICAgICAgcmV0dXJu
IE5vdFN1cHBvcnRlZDsKIAotICAgIGF1dG8gbmV3U291cmNlQnVmZmVyID0gU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSh0aGlzKTsKKyAgICBhdXRvIHBhcnNlciA9IFNvdXJjZUJ1
ZmZlclBhcnNlcjo6Y3JlYXRlKGNvbnRlbnRUeXBlKTsKKyAgICBpZiAoIXBhcnNlcikKKyAgICAg
ICAgcmV0dXJuIE5vdFN1cHBvcnRlZDsKKworICAgIGF1dG8gbmV3U291cmNlQnVmZmVyID0gU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSh0aGlzLCBwYXJzZXIucmVsZWFzZU5vbk51
bGwoKSk7CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBuZXdTb3VyY2VCdWZmZXIt
PnNldENETUluc3RhbmNlKG1fY2RtSW5zdGFuY2UuZ2V0KCkpOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGY4YWRiZmRjODAzMzY0ZDYzNWNmM2JjOTk4MzRmNTBjNzMyZTY2OQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5jbHVkZSAi
U291cmNlQnVmZmVyUGFyc2VyLmgiCisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgorI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK09CSkNfQ0xBU1MgQVZBc3NldDsKK09CSkNfQ0xBU1MgQVZT
dHJlYW1EYXRhUGFyc2VyOworT0JKQ19DTEFTUyBOU0RhdGE7CitPQkpDX0NMQVNTIE5TRXJyb3I7
CitPQkpDX0NMQVNTIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyOworCit0eXBlZGVmIHN0
cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQyBmaW5hbCA6IHB1
YmxpYyBTb3VyY2VCdWZmZXJQYXJzZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDPiB7CitwdWJsaWM6CisgICAgc3RhdGljIE1lZGlhUGxheWVyRW51bXM6
OlN1cHBvcnRzVHlwZSBpc0NvbnRlbnRUeXBlU3VwcG9ydGVkKGNvbnN0IENvbnRlbnRUeXBlJik7
CisKKyAgICBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCk7CisgICAgdmlydHVhbCB+U291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQygpOworCisgICAgQVZTdHJlYW1EYXRhUGFyc2VyKiBwYXJzZXIo
KSBjb25zdCB7IHJldHVybiBtX3BhcnNlci5nZXQoKTsgfQorCisgICAgVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gVHlwZTo6QVZGT2JqQzsgfQorICAgIHZvaWQgYXBwZW5kRGF0YShWZWN0b3I8
dW5zaWduZWQgY2hhcj4mJiwgQXBwZW5kRmxhZ3MgPSBBcHBlbmRGbGFnczo6Tm9uZSkgZmluYWw7
CisgICAgdm9pZCBmbHVzaFBlbmRpbmdNZWRpYURhdGEoKSBmaW5hbDsKKyAgICB2b2lkIHNldFNo
b3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGJvb2wsIHVpbnQ2NF90KSBmaW5hbDsKKyAg
ICBib29sIHNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lEKHVpbnQ2NF90KSBmaW5hbDsK
KyAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKKworICAgIHZvaWQgZGlkUGFyc2VT
dHJlYW1EYXRhQXNBc3NldChBVkFzc2V0Kik7CisgICAgdm9pZCBkaWRGYWlsVG9QYXJzZVN0cmVh
bURhdGFXaXRoRXJyb3IoTlNFcnJvciopOworICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZv
clRyYWNrSUQodWludDY0X3QgdHJhY2tJRCwgQ01TYW1wbGVCdWZmZXJSZWYsIGNvbnN0IFN0cmlu
ZyYgbWVkaWFUeXBlLCB1bnNpZ25lZCBmbGFncyk7CisgICAgdm9pZCB3aWxsUHJvdmlkZUNvbnRl
bnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCh1aW50NjRfdCB0cmFja0lE
KTsKKyAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0
YUZvclRyYWNrSUQoTlNEYXRhKiwgdWludDY0X3QgdHJhY2tJRCk7CisKK3ByaXZhdGU6CisgICAg
UmV0YWluUHRyPEFWU3RyZWFtRGF0YVBhcnNlcj4gbV9wYXJzZXI7CisgICAgUmV0YWluUHRyPFdl
YkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyPiBtX2RlbGVnYXRlOworICAgIGJvb2wgbV9kaXNj
YXJkU2FtcGxlc1VudGlsTmV4dEluaXRpYWxpemF0aW9uU2VnbWVudCB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX3BhcnNlclN0YXRlV2FzUmVzZXQgeyBmYWxzZSB9OworfTsKKworfQorCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMp
CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNl
ciYgcGFyc2VyKSB7IHJldHVybiBwYXJzZXIudHlwZSgpID09IFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clBhcnNlcjo6VHlwZTo6QVZGT2JqQzsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQor
CisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5MDVjZmVh
NTFiNzQ1Yzc4YzY5ZTU0MmEwNmYyMjNiN2Y4ZDk4MzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0wLDAgKzEsMzM5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgiCisKKyNp
ZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW1wb3J0ICJBVkFzc2V0TUlNRVR5cGVDYWNoZS5o
IgorI2ltcG9ydCAiQVZBc3NldFRyYWNrVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJBVlN0cmVhbURh
dGFQYXJzZXJNSU1FVHlwZUNhY2hlLmgiCisjaW1wb3J0ICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oIgorI2ltcG9ydCAiRm91ckNDLmgiCisjaW1wb3J0ICJJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGT2JqQy5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiTWVk
aWFEZXNjcmlwdGlvbi5oIgorI2ltcG9ydCAiTWVkaWFTYW1wbGUuaCIKKyNpbXBvcnQgIk1lZGlh
U2FtcGxlQVZGT2JqQy5oIgorI2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbXBvcnQgIlNo
YXJlZEJ1ZmZlci5oIgorI2ltcG9ydCAiVGltZVJhbmdlcy5oIgorI2ltcG9ydCAiVmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCIKKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkFz
c2V0VHJhY2suaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJyYXlJbmxpbmVzLmg+
CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHBhbC9hdmZvdW5kYXRpb24vTWVk
aWFUaW1lQVZGb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWRm91bmRhdGlv
blNQSS5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKworI2ltcG9ydCA8
cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0
aW9uU29mdExpbmsuaD4KKworI3ByYWdtYSBtYXJrIC0KKyNwcmFnbWEgbWFyayBXZWJBVlN0cmVh
bURhdGFQYXJzZXJMaXN0ZW5lcgorCitAaW50ZXJmYWNlIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxp
c3RlbmVyIDogTlNPYmplY3Q8QVZTdHJlYW1EYXRhUGFyc2VyT3V0cHV0SGFuZGxpbmc+IHsKKyAg
ICBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKiBfcGFyZW50OworICAgIEFWU3Ry
ZWFtRGF0YVBhcnNlciogX3BhcnNlcjsKK30KK0Bwcm9wZXJ0eSAoYXNzaWduKSBXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKiBwYXJlbnQ7CistIChpZClpbml0V2l0aFBhcnNlcjoo
QVZTdHJlYW1EYXRhUGFyc2VyKilwYXJzZXIgcGFyZW50OihXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDKilwYXJlbnQ7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJBVlN0cmVh
bURhdGFQYXJzZXJMaXN0ZW5lcgorLSAoaWQpaW5pdFdpdGhQYXJzZXI6KEFWU3RyZWFtRGF0YVBh
cnNlciopcGFyc2VyIHBhcmVudDooV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQyop
cGFyZW50Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAg
ICAgIHJldHVybiBuaWw7CisKKyAgICBBU1NFUlQocGFyZW50KTsKKyAgICBfcGFyZW50ID0gcGFy
ZW50OworICAgIF9wYXJzZXIgPSBwYXJzZXI7CisgICAgW19wYXJzZXIgc2V0RGVsZWdhdGU6c2Vs
Zl07CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK0BzeW50aGVzaXplIHBhcmVudD1fcGFyZW50Owor
CistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbX3BhcnNlciBzZXREZWxlZ2F0ZTpuaWxdOworICAg
IFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZClpbnZhbGlkYXRlCit7CisgICAgW19wYXJz
ZXIgc2V0RGVsZWdhdGU6bmlsXTsKKyAgICBfcGFyc2VyID0gbnVsbHB0cjsKK30KKworLSAodm9p
ZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2Vy
IGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQ6KEFWQXNzZXQgKilhc3NldAoreworICAgIEFTU0VS
VF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsK
KyAgICBfcGFyZW50LT5kaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KGFzc2V0KTsKK30KKworLSAo
dm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFy
c2VyIGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQ6KEFWQXNzZXQgKilhc3NldCB3aXRoRGlzY29u
dGludWl0eTooQk9PTClkaXNjb250aW51aXR5Cit7CisgICAgVU5VU0VEX1BBUkFNKGRpc2NvbnRp
bnVpdHkpOworICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBh
cnNlciA9PSBfcGFyc2VyKTsKKyAgICBfcGFyZW50LT5kaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0
KGFzc2V0KTsKK30KKworLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJz
ZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcjoo
TlNFcnJvciAqKWVycm9yCit7CisgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBz
dHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOworICAgIF9wYXJlbnQtPmRpZEZhaWxUb1BhcnNl
U3RyZWFtRGF0YVdpdGhFcnJvcihlcnJvcik7Cit9CisKKy0gKHZvaWQpc3RyZWFtRGF0YVBhcnNl
cjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQcm92aWRlTWVkaWFE
YXRhOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGUgZm9yVHJhY2tJRDooQ01QZXJzaXN0ZW50VHJh
Y2tJRCl0cmFja0lEIG1lZGlhVHlwZTooTlNTdHJpbmcgKiluc01lZGlhVHlwZSBmbGFnczooQVZT
dHJlYW1EYXRhUGFyc2VyT3V0cHV0TWVkaWFEYXRhRmxhZ3MpZmxhZ3MKK3sKKyAgICBBU1NFUlRf
VU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7Cisg
ICAgX3BhcmVudC0+ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQodHJhY2tJRCwgc2FtcGxl
LCBuc01lZGlhVHlwZSwgZmxhZ3MpOworfQorCitBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19CRUdJTgorLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyV2lsbFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0
YVBhcnNlciBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQKK0FMTE9XX0RF
UFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAoreworICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFt
RGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKKyAgICBfcGFyZW50LT53
aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCh0
cmFja0lEKTsKK30KKworQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfQkVHSU4KKy0g
KHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBh
cnNlciBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGE6KE5TRGF0
YSAqKWluaXREYXRhIGZvclRyYWNrSUQ6KENNUGVyc2lzdGVudFRyYWNrSUQpdHJhY2tJRAorQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECit7CisgICAgQVNTRVJUX1VOVVNFRChz
dHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOworICAgIF9wYXJl
bnQtPmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNr
SUQoaW5pdERhdGEsIHRyYWNrSUQpOworfQorQGVuZAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
KyNwcmFnbWEgbWFyayAtCisjcHJhZ21hIG1hcmsgTWVkaWFEZXNjcmlwdGlvbkFWRk9iakMKKwor
Y2xhc3MgTWVkaWFEZXNjcmlwdGlvbkFWRk9iakMgZmluYWwgOiBwdWJsaWMgTWVkaWFEZXNjcmlw
dGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxNZWRpYURlc2NyaXB0aW9uQVZGT2JqQz4g
Y3JlYXRlKEFWQXNzZXRUcmFjayogdHJhY2spIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFE
ZXNjcmlwdGlvbkFWRk9iakModHJhY2spKTsgfQorICAgIHZpcnR1YWwgfk1lZGlhRGVzY3JpcHRp
b25BVkZPYmpDKCkgeyB9CisKKyAgICBib29sIGlzVmlkZW8oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2lzVmlkZW87IH0KKyAgICBib29sIGlzQXVkaW8oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2lzQXVkaW87IH0KKyAgICBib29sIGlzVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1faXNUZXh0OyB9CisgICAgQXRvbVN0cmluZyBjb2RlYygpIGNvbnN0IG92ZXJyaWRlCisg
ICAgeworICAgICAgICAvLyBBdG9tU3RyaW5ncyBjYW4gb25seSBiZSBkZXN0cm95ZWQgZnJvbSB0
aGUgc2FtZSB0aHJlYWQgdGhleSdyZQorICAgICAgICAvLyBjcmVhdGVkIGluLiBTaW5jZSB0aGlz
IHN0cnVjdHVyZSBpcyBjcmVhdGVkIGluIGEgcGFyc2VyIHRocmVhZAorICAgICAgICAvLyBvbmx5
IGNyZWF0ZSB0aGUgQXRvbVN0cmluZyB0aGUgZmlyc3QgdGltZSB0aGlzIGZ1bmN0aW9uIGlzIGFj
Y2Vzc2VkCisgICAgICAgIC8vIHdoaWNoIGlzIHByZXN1bWFibHkgb24gdGhlIG1haW4gdGhyZWFk
LgorICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBpZiAoIW1fY29kZWMp
CisgICAgICAgICAgICBtX2NvZGVjID0gQXRvbVN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oJm1fb3JpZ2luYWxDb2RlYyksIDQpOworICAgICAgICByZXR1cm4gKm1fY29kZWM7
CisgICAgfQorCitwcml2YXRlOgorICAgIE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDKEFWQXNzZXRU
cmFjayogdHJhY2spCisgICAgICAgIDogbV9pc1ZpZGVvKFt0cmFjayBoYXNNZWRpYUNoYXJhY3Rl
cmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbF0pCisgICAgICAgICwgbV9pc0F1ZGlv
KFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGli
bGVdKQorICAgICAgICAsIG1faXNUZXh0KFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFW
TWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGVdKQorICAgIHsKKyAgICAgICAgTlNBcnJheSogZm9y
bWF0RGVzY3JpcHRpb25zID0gW3RyYWNrIGZvcm1hdERlc2NyaXB0aW9uc107CisgICAgICAgIENN
Rm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzY3JpcHRpb24gPSBbZm9ybWF0RGVzY3JpcHRpb25zIGNv
dW50XSA/IChfX2JyaWRnZSBDTUZvcm1hdERlc2NyaXB0aW9uUmVmKVtmb3JtYXREZXNjcmlwdGlv
bnMgb2JqZWN0QXRJbmRleDowXSA6IDA7CisgICAgICAgIGlmIChkZXNjcmlwdGlvbikgeworICAg
ICAgICAgICAgbV9vcmlnaW5hbENvZGVjID0gUEFMOjpzb2Z0TGlua19Db3JlTWVkaWFfQ01Gb3Jt
YXREZXNjcmlwdGlvbkdldE1lZGlhU3ViVHlwZShkZXNjcmlwdGlvbik7CisgICAgICAgICAgICBD
RlN0cmluZ1JlZiBvcmlnaW5hbEZvcm1hdEtleSA9IFBBTDo6Y2FuTG9hZF9Db3JlTWVkaWFfa0NN
Rm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fUHJvdGVjdGVkQ29udGVudE9yaWdpbmFsRm9ybWF0
KCkgPyBQQUw6OmdldF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fUHJv
dGVjdGVkQ29udGVudE9yaWdpbmFsRm9ybWF0KCkgOiBDRlNUUigiQ29tbW9uRW5jcnlwdGlvbk9y
aWdpbmFsRm9ybWF0Iik7CisgICAgICAgICAgICBDRlR5cGVSZWYgb3JpZ2luYWxGb3JtYXQgPSBD
TUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9uKGRlc2NyaXB0aW9uLCBvcmlnaW5hbEZvcm1h
dEtleSk7CisgICAgICAgICAgICBpZiAob3JpZ2luYWxGb3JtYXQgJiYgQ0ZHZXRUeXBlSUQob3Jp
Z2luYWxGb3JtYXQpID09IENGTnVtYmVyR2V0VHlwZUlEKCkpCisgICAgICAgICAgICAgICAgQ0ZO
dW1iZXJHZXRWYWx1ZSgoQ0ZOdW1iZXJSZWYpb3JpZ2luYWxGb3JtYXQsIGtDRk51bWJlclNJbnQz
MlR5cGUsICZtX29yaWdpbmFsQ29kZWMpOworICAgICAgICB9CisgICAgfQorCisgICAgRm91ckNo
YXJDb2RlIG1fb3JpZ2luYWxDb2RlYzsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPEF0b21TdHJpbmc+
IG1fY29kZWM7CisgICAgYm9vbCBtX2lzVmlkZW87CisgICAgYm9vbCBtX2lzQXVkaW87CisgICAg
Ym9vbCBtX2lzVGV4dDsKK307CisKKyNwcmFnbWEgbWFyayAtCisjcHJhZ21hIG1hcmsgU291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQworCitNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRlZChjb25zdCBDb250
ZW50VHlwZSYgdHlwZSkKK3sKKyAgICBTdHJpbmcgZXh0ZW5kZWRUeXBlID0gdHlwZS5yYXcoKTsK
KyAgICBTdHJpbmcgb3V0cHV0Q29kZWNzID0gdHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNv
ZGVjc1BhcmFtZXRlcigpKTsKKyAgICBpZiAoIW91dHB1dENvZGVjcy5pc0VtcHR5KCkgJiYgW1BB
TDo6Z2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKG91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFyYW1ldGVyOild
KSB7CisgICAgICAgIG91dHB1dENvZGVjcyA9IFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNs
YXNzKCkgb3V0cHV0TUlNRUNvZGVjUGFyYW1ldGVyRm9ySW5wdXRNSU1FQ29kZWNQYXJhbWV0ZXI6
b3V0cHV0Q29kZWNzXTsKKyAgICAgICAgZXh0ZW5kZWRUeXBlID0gbWFrZVN0cmluZyh0eXBlLmNv
bnRhaW5lclR5cGUoKSwgIjsgY29kZWNzPVwiIiwgb3V0cHV0Q29kZWNzLCAiXCIiKTsKKyAgICB9
CisKKyAgICBhdXRvJiBzdHJlYW1EYXRhUGFyc2VyQ2FjaGUgPSBBVlN0cmVhbURhdGFQYXJzZXJN
SU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKTsKKyAgICBpZiAoc3RyZWFtRGF0YVBhcnNlckNhY2hl
LmlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBzdHJlYW1EYXRhUGFyc2VyQ2FjaGUuY2Fu
RGVjb2RlVHlwZShleHRlbmRlZFR5cGUpOworCisgICAgYXV0byYgYXNzZXRDYWNoZSA9IEFWQXNz
ZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKTsKKyAgICBpZiAoYXNzZXRDYWNoZS5pc0F2YWls
YWJsZSgpKQorICAgICAgICByZXR1cm4gYXNzZXRDYWNoZS5jYW5EZWNvZGVUeXBlKGV4dGVuZGVk
VHlwZSk7CisKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc05v
dFN1cHBvcnRlZDsKK30KKworU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6U291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQygpCisgICAgOiBtX3BhcnNlcihhZG9wdE5TKFtQQUw6OmFsbG9jQVZTdHJl
YW1EYXRhUGFyc2VySW5zdGFuY2UoKSBpbml0XSkpCisgICAgLCBtX2RlbGVnYXRlKGFkb3B0TlMo
W1tXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJzZXI6bV9w
YXJzZXIuZ2V0KCkgcGFyZW50OnRoaXNdKSkKK3sKK30KKworU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6flNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKQoreworICAgIG1fZGVsZWdhdGUuZ2V0
KCkucGFyZW50ID0gbnVsbHB0cjsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
OjphcHBlbmREYXRhKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRhdGEsIEFwcGVuZEZsYWdzIGZs
YWdzKQoreworICAgIGF1dG8gc2hhcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpOworICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkRGF0YS0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgaWYgKG1fcGFyc2VyU3RhdGVXYXNSZXNldCB8fCBmbGFncyA9PSBBcHBlbmRGbGFnczo6
RGlzY29udGludWl0eSkKKyAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0cmVhbURhdGE6bnNEYXRh
LmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURhdGFQYXJzZXJTdHJlYW1EYXRhRGlzY29udGludWl0
eV07CisgICAgZWxzZQorICAgICAgICBbbV9wYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEu
Z2V0KCldOworICAgIG1fcGFyc2VyU3RhdGVXYXNSZXNldCA9IGZhbHNlOworfQorCit2b2lkIFNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmZsdXNoUGVuZGluZ01lZGlhRGF0YSgpCit7CisgICAg
W21fcGFyc2VyIHByb3ZpZGVQZW5kaW5nTWVkaWFEYXRhXTsKK30KKwordm9pZCBTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDOjpzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChib29s
IHNob3VsZCwgdWludDY0X3QgdHJhY2tJRCkKK3sKKyAgICBbbV9wYXJzZXIgc2V0U2hvdWxkUHJv
dmlkZU1lZGlhRGF0YTpzaG91bGQgZm9yVHJhY2tJRDp0cmFja0lEXTsKK30KKworYm9vbCBTb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpzaG91bGRQcm92aWRlTWVkaWFkYXRhRm9yVHJhY2tJRCh1
aW50NjRfdCB0cmFja0lEKQoreworICAgIHJldHVybiBbbV9wYXJzZXIgc2hvdWxkUHJvdmlkZU1l
ZGlhRGF0YUZvclRyYWNrSUQ6dHJhY2tJRF07Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQzo6cmVzZXRQYXJzZXJTdGF0ZSgpCit7CisgICAgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0
ID0gdHJ1ZTsKKyAgICBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdt
ZW50ID0gdHJ1ZTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQYXJz
ZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQoreworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYXNzZXQgPSByZXRhaW5QdHIo
YXNzZXQpXSB7CisgICAgICAgIG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlv
blNlZ21lbnQgPSBmYWxzZTsKKworICAgICAgICBpZiAoIW1fZGlkUGFyc2VJbml0aWFsaXphdGlv
bkRhdGFDYWxsYmFjaykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBJbml0aWFsaXph
dGlvblNlZ21lbnQgc2VnbWVudDsKKworICAgICAgICBpZiAoW2Fzc2V0IHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Iob3ZlcmFsbER1cmF0aW9uSGludCldKQorICAgICAgICAgICAgc2VnbWVu
dC5kdXJhdGlvbiA9IFBBTDo6dG9NZWRpYVRpbWUoW2Fzc2V0IG92ZXJhbGxEdXJhdGlvbkhpbnRd
KTsKKworICAgICAgICBpZiAoc2VnbWVudC5kdXJhdGlvbi5pc0ludmFsaWQoKSB8fCBzZWdtZW50
LmR1cmF0aW9uID09IE1lZGlhVGltZTo6emVyb1RpbWUoKSkKKyAgICAgICAgICAgIHNlZ21lbnQu
ZHVyYXRpb24gPSBQQUw6OnRvTWVkaWFUaW1lKFthc3NldCBkdXJhdGlvbl0pOworCisgICAgICAg
IGZvciAoQVZBc3NldFRyYWNrKiB0cmFjayBpbiBbYXNzZXQgdHJhY2tzXSkgeworICAgICAgICAg
ICAgaWYgKFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3Rp
Y0xlZ2libGVdKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUUoMTI1MTYxKTogSGFuZGxlIGlu
LWJhbmQgdGV4dCB0cmFja3MuCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1l
ZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWxdKSB7CisgICAgICAgICAgICAgICAgU291cmNlQnVmZmVy
UHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OjpWaWRlb1RyYWNrSW5mb3JtYXRp
b24gaW5mbzsKKyAgICAgICAgICAgICAgICBhdXRvIHZpZGVvVHJhY2sgPSBWaWRlb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKKyAgICAgICAgICAgICAgICBp
bmZvLnRyYWNrID0gdmlkZW9UcmFjay5jb3B5UmVmKCk7CisgICAgICAgICAgICAgICAgaW5mby5k
ZXNjcmlwdGlvbiA9IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDOjpjcmVhdGUodHJhY2spOworICAg
ICAgICAgICAgICAgIHNlZ21lbnQudmlkZW9UcmFja3MuYXBwZW5kKGluZm8pOworICAgICAgICAg
ICAgfSBlbHNlIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFj
dGVyaXN0aWNBdWRpYmxlXSkgeworICAgICAgICAgICAgICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDo6QXVkaW9UcmFja0luZm9ybWF0aW9uIGluZm87
CisgICAgICAgICAgICAgICAgYXV0byBhdWRpb1RyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjayk7CisgICAgICAgICAgICAgICAgaW5mby50cmFj
ayA9IGF1ZGlvVHJhY2suY29weVJlZigpOworICAgICAgICAgICAgICAgIGluZm8uZGVzY3JpcHRp
b24gPSBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKKyAgICAgICAgICAg
ICAgICBzZWdtZW50LmF1ZGlvVHJhY2tzLmFwcGVuZChpbmZvKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gRklYTUUoMTI1MTYxKSAgICA6IEFkZCBUZXh0VHJhY2sgc3VwcG9ydAor
ICAgICAgICB9CisKKyAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNr
KFdURk1vdmUoc2VnbWVudCkpOworICAgIH0pOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakM6OmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcihOU0Vycm9yKiBlcnJv
cikKK3sKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigq
dGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKV0geworICAgICAgICBpZiAobV9kaWRFbmNv
dW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjaykKKyAgICAgICAgICAgIG1fZGlkRW5jb3Vu
dGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2soZXJyb3IuZ2V0KCkuY29kZSk7CisgICAgfSk7
Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0
YUZvclRyYWNrSUQodWludDY0X3QgdHJhY2tJRCwgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVm
ZmVyLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgdW5zaWduZWQgZmxhZ3MpCit7CisgICAgVU5V
U0VEX1BBUkFNKGZsYWdzKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBzdHJvbmdUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHNhbXBsZUJ1ZmZlciA9IHJldGFpblB0cihzYW1wbGVCdWZmZXIp
LCB0cmFja0lELCBtZWRpYVR5cGUgPSBtZWRpYVR5cGVdIHsKKyAgICAgICAgaWYgKCFtX2RpZFBy
b3ZpZGVNZWRpYURhdGFDYWxsYmFjaykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBp
ZiAobV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4dEluaXRpYWxpemF0aW9uU2VnbWVudCkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIG1lZGlhU2FtcGxlID0gTWVkaWFTYW1wbGVB
VkZPYmpDOjpjcmVhdGUoc2FtcGxlQnVmZmVyLmdldCgpLCB0cmFja0lEKTsKKworICAgICAgICBp
ZiAobWVkaWFTYW1wbGUtPmlzSG9tb2dlbmVvdXMoKSkgeworICAgICAgICAgICAgbV9kaWRQcm92
aWRlTWVkaWFEYXRhQ2FsbGJhY2soV1RGTW92ZShtZWRpYVNhbXBsZSksIHRyYWNrSUQsIG1lZGlh
VHlwZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGF1
dG8mIHNhbXBsZSA6IG1lZGlhU2FtcGxlLT5kaXZpZGVJbnRvSG9tb2dlbmVvdXNTYW1wbGVzKCkp
CisgICAgICAgICAgICBtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhXVEZNb3ZlKHNhbXBs
ZSksIHRyYWNrSUQsIG1lZGlhVHlwZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9u
RGF0YUZvclRyYWNrSUQodWludDY0X3QgdHJhY2tJRCkKK3sKKyAgICBtX3dpbGxQcm92aWRlQ29u
dGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sodHJhY2tJ
RCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRl
bnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChOU0RhdGEqIG5zSW5pdERh
dGEsIHVpbnQ2NF90IHRyYWNrSUQpCit7CisgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6
OmNyZWF0ZShuc0luaXREYXRhLmxlbmd0aCk7CisgICAgW25zSW5pdERhdGEgZ2V0Qnl0ZXM6aW5p
dERhdGEtPmRhdGEoKSBsZW5ndGg6aW5pdERhdGEtPmxlbmd0aCgpXTsKKworICAgIG1fZGlkUHJv
dmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNr
KFdURk1vdmUoaW5pdERhdGEpLCB0cmFja0lEKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IGRmYTEzNGI0ZDY4ZmRiNzQ3MzQzNzhkOWY5ZGQzYmQ4
NDFmMzNkNjUuLmFmMTMxZWQxZmEwMjE5MGI5ODg2Y2U5NTBkM2U5ODY4MGM0MzFjNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
aApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYgVVNFKEFW
Rk9VTkRBVElPTikKIAorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlci5oIgogI2luY2x1ZGUg
IlNvdXJjZUJ1ZmZlclByaXZhdGUuaCIKICNpbmNsdWRlIDxkaXNwYXRjaC9ncm91cC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Cb3guaD4KQEAgLTM4LDE4ICszOSwxNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi9XVEZTZW1hcGhvcmUuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFk
cy9CaW5hcnlTZW1hcGhvcmUuaD4KIAotT0JKQ19DTEFTUyBBVkFzc2V0OwogT0JKQ19DTEFTUyBB
VlN0cmVhbURhdGFQYXJzZXI7CiBPQkpDX0NMQVNTIEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJl
cjsKIE9CSkNfQ0xBU1MgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7CiBPQkpDX0NMQVNTIE5T
RGF0YTsKIE9CSkNfQ0xBU1MgTlNFcnJvcjsKIE9CSkNfQ0xBU1MgTlNPYmplY3Q7Ci1PQkpDX0NM
QVNTIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyOwogT0JKQ19DTEFTUyBXZWJBVlNhbXBs
ZUJ1ZmZlckVycm9yTGlzdGVuZXI7CiAKIHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVm
ZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKQEAgLTg2LDM0ICs4NiwyNyBAQCBjbGFzcyBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQyBmaW5hbAogI2VuZGlmCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gY3JlYXRlKE1lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakMqKTsKKyAgICBzdGF0aWMgUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBj
cmVhdGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyosIFJlZjxTb3VyY2VCdWZmZXJQYXJzZXI+
JiYpOwogICAgIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKCk7CiAKICAgICB2
b2lkIGNsZWFyTWVkaWFTb3VyY2UoKSB7IG1fbWVkaWFTb3VyY2UgPSBudWxscHRyOyB9CiAKLSAg
ICAvLyBBVlN0cmVhbURhdGFQYXJzZXIgZGVsZWdhdGUgbWV0aG9kcwotICAgIHZvaWQgZGlkUGFy
c2VTdHJlYW1EYXRhQXNBc3NldChBVkFzc2V0Kik7Ci0gICAgdm9pZCBkaWRGYWlsVG9QYXJzZVN0
cmVhbURhdGFXaXRoRXJyb3IoTlNFcnJvciopOwotICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0
YUZvclRyYWNrSUQoaW50IHRyYWNrSUQsIENNU2FtcGxlQnVmZmVyUmVmLCBjb25zdCBTdHJpbmcm
IG1lZGlhVHlwZSwgdW5zaWduZWQgZmxhZ3MpOwotICAgIHZvaWQgZGlkUmVhY2hFbmRPZlRyYWNr
V2l0aFRyYWNrSUQoaW50IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKLSAgICB2
b2lkIHdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFj
a0lEKGludCB0cmFja0lEKTsKLSAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElu
aXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoTlNEYXRhKiwgaW50IHRyYWNrSUQsIEJveDxCaW5h
cnlTZW1hcGhvcmU+KTsKLQotICAgIGJvb2wgcHJvY2Vzc0NvZGVkRnJhbWUoaW50IHRyYWNrSUQs
IENNU2FtcGxlQnVmZmVyUmVmLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CisgICAgdm9pZCB3
aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCh1
aW50NjRfdCB0cmFja0lEKTsKKyAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElu
aXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoUmVmPFVpbnQ4QXJyYXk+JiYsIHVpbnQ2NF90IHRy
YWNrSUQsIEJveDxCaW5hcnlTZW1hcGhvcmU+KTsKIAogICAgIGJvb2wgaGFzVmlkZW8oKSBjb25z
dDsKICAgICBib29sIGhhc1NlbGVjdGVkVmlkZW8oKSBjb25zdDsKICAgICBib29sIGhhc0F1ZGlv
KCkgY29uc3Q7CiAKLSAgICB2b2lkIHRyYWNrRGlkQ2hhbmdlRW5hYmxlZChWaWRlb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQyopOwotICAgIHZvaWQgdHJhY2tEaWRDaGFuZ2VFbmFibGVk
KEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKik7CisgICAgdm9pZCB0cmFja0Rp
ZENoYW5nZVNlbGVjdGVkKFZpZGVvVHJhY2tQcml2YXRlJiwgYm9vbCBzZWxlY3RlZCk7CisgICAg
dm9pZCB0cmFja0RpZENoYW5nZUVuYWJsZWQoQXVkaW9UcmFja1ByaXZhdGUmLCBib29sIGVuYWJs
ZWQpOwogCiAgICAgdm9pZCB3aWxsU2VlaygpOwogICAgIE1lZGlhVGltZSBmYXN0U2Vla1RpbWVG
b3JNZWRpYVRpbWUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZVRo
cmVzaG9sZCwgY29uc3QgTWVkaWFUaW1lJiBwb3NpdGl2ZVRocmVzaG9sZCk7CiAgICAgRmxvYXRT
aXplIG5hdHVyYWxTaXplKCk7CiAKLSAgICBpbnQgcHJvdGVjdGVkVHJhY2tJRCgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJvdGVjdGVkVHJhY2tJRDsgfQotICAgIEFWU3RyZWFtRGF0YVBhcnNlciogcGFy
c2VyKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZXIuZ2V0KCk7IH0KKyAgICB1aW50NjRfdCBwcm90
ZWN0ZWRUcmFja0lEKCkgY29uc3QgeyByZXR1cm4gbV9wcm90ZWN0ZWRUcmFja0lEOyB9CisgICAg
QVZTdHJlYW1EYXRhUGFyc2VyKiBwYXJzZXIoKSBjb25zdDsKICAgICB2b2lkIHNldENETVNlc3Np
b24oQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyopOwogICAgIHZvaWQgc2V0Q0RNSW5zdGFu
Y2UoQ0RNSW5zdGFuY2UqKTsKICAgICB2b2lkIGF0dGVtcHRUb0RlY3J5cHQoKTsKQEAgLTE0OCw3
ICsxNDEsMTIgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyopOworICAg
IGV4cGxpY2l0IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMqLCBSZWY8U291cmNlQnVmZmVyUGFyc2VyPiYmKTsKKworICAgIHVzaW5nIEluaXRpYWxp
emF0aW9uU2VnbWVudCA9IFNvdXJjZUJ1ZmZlclBhcnNlcjo6SW5pdGlhbGl6YXRpb25TZWdtZW50
OworICAgIHZvaWQgZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdt
ZW50JiYpOworICAgIHZvaWQgZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nKGludDMyX3Qp
OworICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoUmVmPE1lZGlhU2FtcGxl
PiYmLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CiAKICAgICAv
LyBTb3VyY2VCdWZmZXJQcml2YXRlIG92ZXJyaWRlcwogICAgIHZvaWQgc2V0Q2xpZW50KFNvdXJj
ZUJ1ZmZlclByaXZhdGVDbGllbnQqKSBmaW5hbDsKQEAgLTE2OCwzMiArMTY2LDMyIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjbGVhck1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWUoY29uc3Qg
QXRvbVN0cmluZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgY2FuU3dpdGNoVG9UeXBlKGNvbnN0IENv
bnRlbnRUeXBlJikgZmluYWw7CiAKLSAgICB2b2lkIGRpZEJlY29tZVJlYWR5Rm9yTW9yZVNhbXBs
ZXMoaW50IHRyYWNrSUQpOworICAgIHZvaWQgZGlkQmVjb21lUmVhZHlGb3JNb3JlU2FtcGxlcyh1
aW50NjRfdCB0cmFja0lEKTsKICAgICB2b2lkIGFwcGVuZENvbXBsZXRlZCgpOwogICAgIHZvaWQg
ZGVzdHJveVBhcnNlcigpOwogICAgIHZvaWQgZGVzdHJveVJlbmRlcmVycygpOworICAgIHZvaWQg
Y2xlYXJUcmFja3MoKTsKIAogICAgIHZvaWQgZmx1c2hWaWRlbygpOwogICAgIEFMTE9XX05FV19B
UElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KICAgICB2b2lkIGZsdXNoKEFWU2FtcGxlQnVmZmVyQXVk
aW9SZW5kZXJlciAqKTsKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAogCi0g
ICAgVmVjdG9yPFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4+IG1f
dmlkZW9UcmFja3M7Ci0gICAgVmVjdG9yPFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQz4+IG1fYXVkaW9UcmFja3M7CisgICAgVmVjdG9yPFJlZlB0cjxWaWRlb1RyYWNr
UHJpdmF0ZT4+IG1fdmlkZW9UcmFja3M7CisgICAgVmVjdG9yPFJlZlB0cjxBdWRpb1RyYWNrUHJp
dmF0ZT4+IG1fYXVkaW9UcmFja3M7CiAgICAgVmVjdG9yPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDRXJyb3JDbGllbnQqPiBtX2Vycm9yQ2xpZW50czsKIAogICAgIFdlYWtQdHJGYWN0b3J5PFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBtX2FwcGVuZFdlYWtGYWN0b3J5OwogCi0gICAgUmV0
YWluUHRyPEFWU3RyZWFtRGF0YVBhcnNlcj4gbV9wYXJzZXI7Ci0gICAgUmV0YWluUHRyPEFWQXNz
ZXQ+IG1fYXNzZXQ7CisgICAgUmVmPFNvdXJjZUJ1ZmZlclBhcnNlcj4gbV9wYXJzZXI7CiAgICAg
UmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBtX2Rpc3BsYXlMYXllcjsKICAg
ICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCi0gICAgSGFzaE1hcDxpbnQsIFJl
dGFpblB0cjxBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXI+PiBtX2F1ZGlvUmVuZGVyZXJzOwor
ICAgIEhhc2hNYXA8dWludDY0X3QsIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVy
ZXI+LCBEZWZhdWx0SGFzaDx1aW50NjRfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hU
cmFpdHM8dWludDY0X3Q+PiBtX2F1ZGlvUmVuZGVyZXJzOwogICAgIEFMTE9XX05FV19BUElfV0lU
SE9VVF9HVUFSRFNfRU5ECi0gICAgUmV0YWluUHRyPFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3Rl
bmVyPiBtX2RlbGVnYXRlOwogICAgIFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlckVycm9yTGlz
dGVuZXI+IG1fZXJyb3JMaXN0ZW5lcjsKICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gbV9oZGNwRXJy
b3I7CiAgICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gbV9oYXNTZXNzaW9uU2VtYXBob3JlOworICAg
IEJveDxTZW1hcGhvcmU+IG1fYWJvcnRTZW1hcGhvcmU7CiAgICAgT1NPYmplY3RQdHI8ZGlzcGF0
Y2hfZ3JvdXBfdD4gbV9pc0FwcGVuZGluZ0dyb3VwOwogICAgIFJlZlB0cjxXZWJDb3JlRGVjb21w
cmVzc2lvblNlc3Npb24+IG1fZGVjb21wcmVzc2lvblNlc3Npb247CiAKQEAgLTIxMSwxMSArMjA5
LDkgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxGbG9hdFNpemU+IG1fY2FjaGVkU2l6ZTsKICAg
ICBGbG9hdFNpemUgbV9jdXJyZW50U2l6ZTsKICAgICBib29sIG1fcGFyc2luZ1N1Y2NlZWRlZCB7
IHRydWUgfTsKLSAgICBib29sIG1fcGFyc2VyU3RhdGVXYXNSZXNldCB7IGZhbHNlIH07Ci0gICAg
Ym9vbCBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50IHsgZmFs
c2UgfTsKICAgICBib29sIG1fd2FpdGluZ0ZvcktleSB7IHRydWUgfTsKLSAgICBpbnQgbV9lbmFi
bGVkVmlkZW9UcmFja0lEIHsgLTEgfTsKLSAgICBpbnQgbV9wcm90ZWN0ZWRUcmFja0lEIHsgLTEg
fTsKKyAgICB1aW50NjRfdCBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgeyBub3RGb3VuZCB9OworICAg
IHVpbnQ2NF90IG1fcHJvdGVjdGVkVHJhY2tJRCB7IG5vdEZvdW5kIH07CiAgICAgdWludDY0X3Qg
bV9tYXBJRDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCBkNzM1Nzc1
Y2M4ZjA0YjhiMDIxYjM1YzcwMTY5NWJkMjRmNmY4ZGE4Li4yMDBjODRiODYwOGNlZWUzZTM1Zjdm
M2NjNDNlY2NlMzA0MDc3YTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtNDQsNiArNDQsNyBAQAogI2ltcG9ydCAi
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oIgogI2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIK
ICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgorI2ltcG9ydCAiU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQy5oIgogI2ltcG9ydCAiU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oIgogI2ltcG9ydCAi
VGltZVJhbmdlcy5oIgogI2ltcG9ydCAiVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMuaCIKQEAgLTgyLDE1MyArODMsNiBAQCAtICh2b2lkKWFkZFN0cmVhbURhdGFQYXJzZXI6KEFW
U3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXI7CiAtICh2b2lkKXJlbW92ZVN0cmVh
bURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXI7CiBAZW5k
CiAKLSNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1hcmsgV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlz
dGVuZXIKLQotQGludGVyZmFjZSBXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciA6IE5TT2Jq
ZWN0PEFWU3RyZWFtRGF0YVBhcnNlck91dHB1dEhhbmRsaW5nPiB7Ci0gICAgV2Vha1B0cjxXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gX3BhcmVudDsKLSAgICBCb3g8U2VtYXBo
b3JlPiBfYWJvcnRTZW1hcGhvcmU7Ci0gICAgQVZTdHJlYW1EYXRhUGFyc2VyKiBfcGFyc2VyOwot
fQotQHByb3BlcnR5IChhc3NpZ24pIFdlYWtQdHI8V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM+IHBhcmVudDsKLUBwcm9wZXJ0eSAoYXNzaWduKSBCb3g8U2VtYXBob3JlPiBhYm9y
dFNlbWFwaG9yZTsKLS0gKGlkKWluaXRXaXRoUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIqKXBh
cnNlciBwYXJlbnQ6KFdlYWtQdHI8V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+
KXBhcmVudDsKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxp
c3RlbmVyCi0tIChpZClpbml0V2l0aFBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyKilwYXJzZXIg
cGFyZW50OihXZWFrUHRyPFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPilwYXJl
bnQKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAg
cmV0dXJuIG5pbDsKLQotICAgIEFTU0VSVChwYXJlbnQpOwotICAgIF9wYXJlbnQgPSBwYXJlbnQ7
Ci0gICAgX3BhcnNlciA9IHBhcnNlcjsKLSAgICBbX3BhcnNlciBzZXREZWxlZ2F0ZTpzZWxmXTsK
LSAgICByZXR1cm4gc2VsZjsKLX0KLQotQHN5bnRoZXNpemUgcGFyZW50PV9wYXJlbnQ7Ci1Ac3lu
dGhlc2l6ZSBhYm9ydFNlbWFwaG9yZT1fYWJvcnRTZW1hcGhvcmU7Ci0KLS0gKHZvaWQpZGVhbGxv
YwotewotICAgIFtfcGFyc2VyIHNldERlbGVnYXRlOm5pbF07Ci0gICAgW3N1cGVyIGRlYWxsb2Nd
OwotfQotCi0tICh2b2lkKWludmFsaWRhdGUKLXsKLSAgICBbX3BhcnNlciBzZXREZWxlZ2F0ZTpu
aWxdOwotICAgIF9wYXJzZXIgPSBudWxscHRyOwotfQotCi0tICh2b2lkKXN0cmVhbURhdGFQYXJz
ZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkUGFyc2VTdHJlYW1E
YXRhQXNBc3NldDooQVZBc3NldCAqKWFzc2V0Ci17Ci0gICAgQVNTRVJUX1VOVVNFRChzdHJlYW1E
YXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOwotCi0gICAgUmV0YWluUHRy
PEFWQXNzZXQ+IHByb3RlY3RlZEFzc2V0ID0gYXNzZXQ7Ci0gICAgY2FsbE9uTWFpblRocmVhZChb
cGFyZW50ID0gX3BhcmVudCwgcHJvdGVjdGVkQXNzZXQgPSBXVEZNb3ZlKHByb3RlY3RlZEFzc2V0
KV0gewotICAgICAgICBpZiAocGFyZW50KQotICAgICAgICAgICAgcGFyZW50LT5kaWRQYXJzZVN0
cmVhbURhdGFBc0Fzc2V0KHByb3RlY3RlZEFzc2V0LmdldCgpKTsKLSAgICB9KTsKLX0KLQotLSAo
dm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFy
c2VyIGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQ6KEFWQXNzZXQgKilhc3NldCB3aXRoRGlzY29u
dGludWl0eTooQk9PTClkaXNjb250aW51aXR5Ci17Ci0gICAgVU5VU0VEX1BBUkFNKGRpc2NvbnRp
bnVpdHkpOwotICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBh
cnNlciA9PSBfcGFyc2VyKTsKLQotICAgIFJldGFpblB0cjxBVkFzc2V0PiBwcm90ZWN0ZWRBc3Nl
dCA9IGFzc2V0OwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3BhcmVudCA9IF9wYXJlbnQsIHByb3Rl
Y3RlZEFzc2V0ID0gV1RGTW92ZShwcm90ZWN0ZWRBc3NldCldIHsKLSAgICAgICAgaWYgKHBhcmVu
dCkKLSAgICAgICAgICAgIHBhcmVudC0+ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChwcm90ZWN0
ZWRBc3NldC5nZXQoKSk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjoo
QVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRGYWlsVG9QYXJzZVN0cmVh
bURhdGFXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgotewotICAgIEFTU0VSVF9VTlVTRUQoc3Ry
ZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLQotICAgIFJldGFp
blB0cjxOU0Vycm9yPiBwcm90ZWN0ZWRFcnJvciA9IGVycm9yOwotICAgIGNhbGxPbk1haW5UaHJl
YWQoW3BhcmVudCA9IF9wYXJlbnQsIHByb3RlY3RlZEVycm9yID0gV1RGTW92ZShwcm90ZWN0ZWRF
cnJvcildIHsKLSAgICAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAgIHBhcmVudC0+ZGlkRmFp
bFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yKHByb3RlY3RlZEVycm9yLmdldCgpKTsKLSAgICB9
KTsKLX0KLQotLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilz
dHJlYW1EYXRhUGFyc2VyIGRpZFByb3ZpZGVNZWRpYURhdGE6KENNU2FtcGxlQnVmZmVyUmVmKXNh
bXBsZSBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQgbWVkaWFUeXBlOihO
U1N0cmluZyAqKW5zTWVkaWFUeXBlIGZsYWdzOihBVlN0cmVhbURhdGFQYXJzZXJPdXRwdXRNZWRp
YURhdGFGbGFncylmbGFncwotewotICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwg
c3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLQotICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1
ZmZlclJlZj4gcHJvdGVjdGVkU2FtcGxlID0gc2FtcGxlOwotICAgIGNhbGxPbk1haW5UaHJlYWQo
W3BhcmVudCA9IF9wYXJlbnQsIHByb3RlY3RlZFNhbXBsZSA9IFdURk1vdmUocHJvdGVjdGVkU2Ft
cGxlKSwgdHJhY2tJRCwgbWVkaWFUeXBlID0gU3RyaW5nKG5zTWVkaWFUeXBlKSwgZmxhZ3NdIHsK
LSAgICAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAgIHBhcmVudC0+ZGlkUHJvdmlkZU1lZGlh
RGF0YUZvclRyYWNrSUQodHJhY2tJRCwgcHJvdGVjdGVkU2FtcGxlLmdldCgpLCBtZWRpYVR5cGUs
IGZsYWdzKTsKLSAgICB9KTsKLX0KLQotLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVh
bURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFJlYWNoRW5kT2ZUcmFja1dpdGhUcmFj
a0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQgbWVkaWFUeXBlOihOU1N0cmluZyAqKW5z
TWVkaWFUeXBlCi17Ci0gICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1E
YXRhUGFyc2VyID09IF9wYXJzZXIpOwotCi0gICAgY2FsbE9uTWFpblRocmVhZChbcGFyZW50ID0g
X3BhcmVudCwgdHJhY2tJRCwgbWVkaWFUeXBlID0gU3RyaW5nKG5zTWVkaWFUeXBlKV0gewotICAg
ICAgICBpZiAocGFyZW50KQotICAgICAgICAgICAgcGFyZW50LT5kaWRSZWFjaEVuZE9mVHJhY2tX
aXRoVHJhY2tJRCh0cmFja0lELCBtZWRpYVR5cGUpOwotICAgIH0pOwotfQotCi1BTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgotLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyV2ls
bFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTooQVZTdHJlYW1EYXRh
UGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lE
KXRyYWNrSUQKLUFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAotewotICAgIEFT
U0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2Vy
KTsKLQotICAgIC8vIFdlIG11c3QgY2FsbCBzeW5jaHJvbm91c2x5IHRvIHRoZSBtYWluIHRocmVh
ZCwgYXMgdGhlIEFWU3RyZWFtU2Vzc2lvbiBtdXN0IGJlIGFzc29jaWF0ZWQKLSAgICAvLyB3aXRo
IHRoZSBzdHJlYW1EYXRhUGFyc2VyIGJlZm9yZSB0aGUgZGVsZWdhdGUgbWV0aG9kIHJldHVybnMu
Ci0gICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gcmVzcG9uZGVkU2VtYXBob3JlID0gQm94PEJpbmFy
eVNlbWFwaG9yZT46OmNyZWF0ZSgpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3BhcmVudCA9IF9w
YXJlbnQsIHRyYWNrSUQsIHJlc3BvbmRlZFNlbWFwaG9yZV0oKSB7Ci0gICAgICAgIGlmIChwYXJl
bnQpCi0gICAgICAgICAgICBwYXJlbnQtPndpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0
aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHRyYWNrSUQpOwotICAgICAgICByZXNwb25kZWRTZW1h
cGhvcmUtPnNpZ25hbCgpOwotICAgIH0pOwotCi0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAg
aWYgKHJlc3BvbmRlZFNlbWFwaG9yZS0+d2FpdEZvcigxMDBfbXMpKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIGlmIChfYWJvcnRTZW1hcGhvcmUtPndhaXRGb3IoMTAwX21zKSkgewot
ICAgICAgICAgICAgX2Fib3J0U2VtYXBob3JlLT5zaWduYWwoKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgIH0KLX0KLQotQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfQkVHSU4KLS0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICop
c3RyZWFtRGF0YVBhcnNlciBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlv
bkRhdGE6KE5TRGF0YSAqKWluaXREYXRhIGZvclRyYWNrSUQ6KENNUGVyc2lzdGVudFRyYWNrSUQp
dHJhY2tJRAotQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECi17Ci0gICAgQVNT
RVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIp
OwotCi0gICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gaGFzU2Vzc2lvblNlbWFwaG9yZSA9IEJveDxC
aW5hcnlTZW1hcGhvcmU+OjpjcmVhdGUoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwYXJlbnQg
PSBfcGFyZW50LCBwcm90ZWN0ZWRJbml0RGF0YSA9IFJldGFpblB0cjxOU0RhdGE+KGluaXREYXRh
KSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNlbWFwaG9yZV0gewotICAgICAgICBpZiAocGFyZW50KQot
ICAgICAgICAgICAgcGFyZW50LT5kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXph
dGlvbkRhdGFGb3JUcmFja0lEKHByb3RlY3RlZEluaXREYXRhLmdldCgpLCB0cmFja0lELCBoYXNT
ZXNzaW9uU2VtYXBob3JlKTsKLSAgICB9KTsKLQotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAg
IGlmIChoYXNTZXNzaW9uU2VtYXBob3JlLT53YWl0Rm9yKDEwMF9tcykpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgaWYgKF9hYm9ydFNlbWFwaG9yZS0+d2FpdEZvcigxMDBfbXMpKSB7
Ci0gICAgICAgICAgICBfYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgfQotfQotQGVuZAotCiBAaW50ZXJmYWNlIFdlYkFWU2FtcGxl
QnVmZmVyRXJyb3JMaXN0ZW5lciA6IE5TT2JqZWN0IHsKICAgICBXZWFrUHRyPFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBfcGFyZW50OwogICAgIFZlY3RvcjxSZXRhaW5QdHI8
QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+PiBfbGF5ZXJzOwpAQCAtMzkxLDQzICsyNDUsNiBA
QCBAZW5kCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgUEFMOwogCi0jcHJh
Z21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDCi0KLWNsYXNz
IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDIGZpbmFsIDogcHVibGljIE1lZGlhRGVzY3JpcHRpb24g
ewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVkaWFEZXNjcmlwdGlvbkFWRk9iakM+IGNyZWF0
ZShBVkFzc2V0VHJhY2sqIHRyYWNrKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhRGVzY3Jp
cHRpb25BVkZPYmpDKHRyYWNrKSk7IH0KLSAgICB2aXJ0dWFsIH5NZWRpYURlc2NyaXB0aW9uQVZG
T2JqQygpIHsgfQotCi0gICAgQXRvbVN0cmluZyBjb2RlYygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fY29kZWM7IH0KLSAgICBib29sIGlzVmlkZW8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2lzVmlkZW87IH0KLSAgICBib29sIGlzQXVkaW8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2lzQXVkaW87IH0KLSAgICBib29sIGlzVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1faXNUZXh0OyB9Ci0gICAgCi1wcml2YXRlOgotICAgIE1lZGlhRGVzY3JpcHRpb25BVkZPYmpD
KEFWQXNzZXRUcmFjayogdHJhY2spCi0gICAgICAgIDogbV9pc1ZpZGVvKFt0cmFjayBoYXNNZWRp
YUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbF0pCi0gICAgICAgICwg
bV9pc0F1ZGlvKFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJp
c3RpY0F1ZGlibGVdKQotICAgICAgICAsIG1faXNUZXh0KFt0cmFjayBoYXNNZWRpYUNoYXJhY3Rl
cmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGVdKQotICAgIHsKLSAgICAgICAgTlNB
cnJheSogZm9ybWF0RGVzY3JpcHRpb25zID0gW3RyYWNrIGZvcm1hdERlc2NyaXB0aW9uc107Ci0g
ICAgICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzY3JpcHRpb24gPSBbZm9ybWF0RGVzY3Jp
cHRpb25zIGNvdW50XSA/IChfX2JyaWRnZSBDTUZvcm1hdERlc2NyaXB0aW9uUmVmKVtmb3JtYXRE
ZXNjcmlwdGlvbnMgb2JqZWN0QXRJbmRleDowXSA6IDA7Ci0gICAgICAgIGlmIChkZXNjcmlwdGlv
bikgewotICAgICAgICAgICAgRm91ckNoYXJDb2RlIGNvZGVjID0gQ01Gb3JtYXREZXNjcmlwdGlv
bkdldE1lZGlhU3ViVHlwZShkZXNjcmlwdGlvbik7Ci0gICAgICAgICAgICBDRlN0cmluZ1JlZiBv
cmlnaW5hbEZvcm1hdEtleSA9IFBBTDo6Y2FuTG9hZF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3Jp
cHRpb25FeHRlbnNpb25fUHJvdGVjdGVkQ29udGVudE9yaWdpbmFsRm9ybWF0KCkgPyBQQUw6Omdl
dF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fUHJvdGVjdGVkQ29udGVu
dE9yaWdpbmFsRm9ybWF0KCkgOiBDRlNUUigiQ29tbW9uRW5jcnlwdGlvbk9yaWdpbmFsRm9ybWF0
Iik7Ci0gICAgICAgICAgICBDRlR5cGVSZWYgb3JpZ2luYWxGb3JtYXQgPSBDTUZvcm1hdERlc2Ny
aXB0aW9uR2V0RXh0ZW5zaW9uKGRlc2NyaXB0aW9uLCBvcmlnaW5hbEZvcm1hdEtleSk7Ci0gICAg
ICAgICAgICBpZiAob3JpZ2luYWxGb3JtYXQgJiYgQ0ZHZXRUeXBlSUQob3JpZ2luYWxGb3JtYXQp
ID09IENGTnVtYmVyR2V0VHlwZUlEKCkpCi0gICAgICAgICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1
ZSgoQ0ZOdW1iZXJSZWYpb3JpZ2luYWxGb3JtYXQsIGtDRk51bWJlclNJbnQzMlR5cGUsICZjb2Rl
Yyk7Ci0gICAgICAgICAgICBtX2NvZGVjID0gQXRvbVN0cmluZyhyZWludGVycHJldF9jYXN0PExD
aGFyKj4oJmNvZGVjKSwgNCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBBdG9tU3RyaW5nIG1f
Y29kZWM7Ci0gICAgYm9vbCBtX2lzVmlkZW87Ci0gICAgYm9vbCBtX2lzQXVkaW87Ci0gICAgYm9v
bCBtX2lzVGV4dDsKLX07Ci0KICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMKIApAQCAtNDY1LDE0ICsyODIsMTMgQEAgc3RhdGljIHZvaWQgYnVm
ZmVyV2FzQ29uc3VtZWRDYWxsYmFjayhDTU5vdGlmaWNhdGlvbkNlbnRlclJlZiwgY29uc3Qgdm9p
ZCogbGlzdGUKICAgICAgICAgc291cmNlQnVmZmVyLT5idWZmZXJXYXNDb25zdW1lZCgpOwogfQog
Ci1SZWY8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpjcmVhdGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyogcGFyZW50KQorUmVmPFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y3JlYXRl
KE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqIHBhcmVudCwgUmVmPFNvdXJjZUJ1ZmZlclBhcnNl
cj4mJiBwYXJzZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMocGFyZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMocGFyZW50LCBXVEZNb3ZlKHBhcnNlcikpKTsKIH0KIAotU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291
cmNlUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKLSAgICA6IG1fcGFyc2VyKGFkb3B0TlMoW1BBTDo6
YWxsb2NBVlN0cmVhbURhdGFQYXJzZXJJbnN0YW5jZSgpIGluaXRdKSkKLSAgICAsIG1fZGVsZWdh
dGUoYWRvcHROUyhbW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIGFsbG9jXSBpbml0V2l0
aFBhcnNlcjptX3BhcnNlci5nZXQoKSBwYXJlbnQ6bWFrZVdlYWtQdHIoKnRoaXMpXSkpCitTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoTWVkaWFT
b3VyY2VQcml2YXRlQVZGT2JqQyogcGFyZW50LCBSZWY8U291cmNlQnVmZmVyUGFyc2VyPiYmIHBh
cnNlcikKKyAgICA6IG1fcGFyc2VyKFdURk1vdmUocGFyc2VyKSkKICAgICAsIG1fZXJyb3JMaXN0
ZW5lcihhZG9wdE5TKFtbV2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyIGFsbG9jXSBpbml0
V2l0aFBhcmVudDptYWtlV2Vha1B0cigqdGhpcyldKSkKICAgICAsIG1faXNBcHBlbmRpbmdHcm91
cChhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX2dyb3VwX2NyZWF0ZSgpKSkKICAgICAsIG1fbWVkaWFT
b3VyY2UocGFyZW50KQpAQCAtNDg2LDEwICszMDIsMjYgQEAgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMKIAogICAgIGlmICghW1BBTDo6Z2V0QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJDbGFzcygp
IGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3RvcihwcmVyb2xsRGVjb2RlV2l0aENv
bXBsZXRpb25IYW5kbGVyOildKQogICAgICAgICBDTU5vdGlmaWNhdGlvbkNlbnRlckFkZExpc3Rl
bmVyKENNTm90aWZpY2F0aW9uQ2VudGVyR2V0RGVmYXVsdExvY2FsQ2VudGVyKCksIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KG1fbWFwSUQpLCBidWZmZXJXYXNDb25zdW1lZENhbGxiYWNrLCBrQ01T
YW1wbGVCdWZmZXJDb25zdW1lck5vdGlmaWNhdGlvbl9CdWZmZXJDb25zdW1lZCwgbnVsbHB0ciwg
MCk7Ci0gICAgCi0gICAgbV9kZWxlZ2F0ZS5nZXQoKS5hYm9ydFNlbWFwaG9yZSA9IEJveDxTZW1h
cGhvcmU+OjpjcmVhdGUoMCk7CiAKICAgICBzb3VyY2VCdWZmZXJNYXAoKS5hZGQobV9tYXBJRCwg
bWFrZVdlYWtQdHIoKnRoaXMpKTsKKworICAgIG1fcGFyc2VyLT5zZXREaWRQYXJzZUluaXRpYWxp
emF0aW9uRGF0YUNhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoSW5pdGlh
bGl6YXRpb25TZWdtZW50JiYgc2VnbWVudCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgIHdlYWtUaGlz
LT5kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShXVEZNb3ZlKHNlZ21lbnQpKTsKKyAgICB9KTsK
KworICAgIG1fcGFyc2VyLT5zZXREaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFj
ayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKGludDMyX3QgZXJyb3JDb2RlKSBtdXRh
YmxlIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgaWYgKHdlYWtU
aGlzKQorICAgICAgICAgICAgd2Vha1RoaXMtPmRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2lu
ZyhlcnJvckNvZGUpOworICAgIH0pOworCisgICAgbV9wYXJzZXItPnNldERpZFByb3ZpZGVNZWRp
YURhdGFDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKFJlZjxNZWRpYVNh
bXBsZT4mJiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBl
KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgaWYg
KHdlYWtUaGlzKQorICAgICAgICAgICAgd2Vha1RoaXMtPmRpZFByb3ZpZGVNZWRpYURhdGFGb3JU
cmFja0lEKFdURk1vdmUoc2FtcGxlKSwgdHJhY2tJRCwgbWVkaWFUeXBlKTsKKyAgICB9KTsKIH0K
IAogU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6On5Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
QygpCkBAIC01MDAsNiArMzMyLDcgQEAgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6On5Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQygpCiAgICAgc291cmNlQnVmZmVyTWFwKCkucmVtb3ZlKG1f
bWFwSUQpOwogICAgIGRlc3Ryb3lQYXJzZXIoKTsKICAgICBkZXN0cm95UmVuZGVyZXJzKCk7Cisg
ICAgY2xlYXJUcmFja3MoKTsKIAogICAgIGlmICghW1BBTDo6Z2V0QVZTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJDbGFzcygpIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3RvcihwcmVy
b2xsRGVjb2RlV2l0aENvbXBsZXRpb25IYW5kbGVyOildKQogICAgICAgICBDTU5vdGlmaWNhdGlv
bkNlbnRlclJlbW92ZUxpc3RlbmVyKENNTm90aWZpY2F0aW9uQ2VudGVyR2V0RGVmYXVsdExvY2Fs
Q2VudGVyKCksIHRoaXMsIGJ1ZmZlcldhc0NvbnN1bWVkQ2FsbGJhY2ssIGtDTVNhbXBsZUJ1ZmZl
ckNvbnN1bWVyTm90aWZpY2F0aW9uX0J1ZmZlckNvbnN1bWVkLCBudWxscHRyKTsKQEAgLTUwOCw3
ICszNDEsNyBAQCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6flNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDKCkKICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKIH0K
IAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNB
c3NldChBVkFzc2V0KiBhc3NldCkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRp
ZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVudCYmIHNlZ21lbnQp
CiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIApAQCAtNTE2LDUyICszNDksMzMg
QEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNB
c3NldChBVkFzc2V0KiBhc3NldCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fbWVkaWFT
b3VyY2UtPnBsYXllcigpLT5zaG91bGRDaGVja0hhcmR3YXJlU3VwcG9ydCgpKSB7Ci0gICAgICAg
IGZvciAoQVZBc3NldFRyYWNrICp0cmFjayBpbiBbYXNzZXQgdHJhY2tzXSkgewotICAgICAgICAg
ICAgaWYgKCFhc3NldFRyYWNrTWVldHNIYXJkd2FyZURlY29kZVJlcXVpcmVtZW50cyh0cmFjaywg
bV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPm1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdh
cmVTdXBwb3J0KCkpKSB7CisgICAgICAgIGZvciAoYXV0byYgaW5mbyA6IHNlZ21lbnQudmlkZW9U
cmFja3MpIHsKKyAgICAgICAgICAgIGF1dG8gY29kZWMgPSBGb3VyQ0M6OmZyb21TdHJpbmcoaW5m
by5kZXNjcmlwdGlvbi0+Y29kZWMoKSk7CisgICAgICAgICAgICBpZiAoIWNvZGVjKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKCFjb2RlY3NNZWV0SGFyZHdhcmVE
ZWNvZGVSZXF1aXJlbWVudHMoe3sgKmNvZGVjIH19LCBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+
bWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSkpIHsKICAgICAgICAg
ICAgICAgICBtX3BhcnNpbmdTdWNjZWVkZWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2Fzc2V0ID0gYXNz
ZXQ7Ci0KLSAgICBtX3ZpZGVvVHJhY2tzLmNsZWFyKCk7Ci0gICAgbV9hdWRpb1RyYWNrcy5jbGVh
cigpOwotCi0gICAgbV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4dEluaXRpYWxpemF0aW9uU2VnbWVu
dCA9IGZhbHNlOwotCi0gICAgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRp
b25TZWdtZW50IHNlZ21lbnQ7Ci0KLSAgICBpZiAoW21fYXNzZXQgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihvdmVyYWxsRHVyYXRpb25IaW50KV0pCi0gICAgICAgIHNlZ21lbnQuZHVyYXRp
b24gPSBQQUw6OnRvTWVkaWFUaW1lKFttX2Fzc2V0IG92ZXJhbGxEdXJhdGlvbkhpbnRdKTsKLQot
ICAgIGlmIChzZWdtZW50LmR1cmF0aW9uLmlzSW52YWxpZCgpIHx8IHNlZ21lbnQuZHVyYXRpb24g
PT0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpKQotICAgICAgICBzZWdtZW50LmR1cmF0aW9uID0gUEFM
Ojp0b01lZGlhVGltZShbbV9hc3NldCBkdXJhdGlvbl0pOwotCi0gICAgZm9yIChBVkFzc2V0VHJh
Y2sqIHRyYWNrIGluIFttX2Fzc2V0IHRyYWNrc10pIHsKLSAgICAgICAgaWYgKFt0cmFjayBoYXNN
ZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGVdKSB7Ci0gICAg
ICAgICAgICAvLyBGSVhNRSgxMjUxNjEpOiBIYW5kbGUgaW4tYmFuZCB0ZXh0IHRyYWNrcy4KLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAgY2xlYXJUcmFja3MoKTsKIAotICAg
ICAgICBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3Rlcmlz
dGljVmlzdWFsXSkgewotICAgICAgICAgICAgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5p
dGlhbGl6YXRpb25TZWdtZW50OjpWaWRlb1RyYWNrSW5mb3JtYXRpb24gaW5mbzsKLSAgICAgICAg
ICAgIGF1dG8gdmlkZW9UcmFjayA9IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
OjpjcmVhdGUodHJhY2ssIHRoaXMpOwotICAgICAgICAgICAgaW5mby50cmFjayA9IHZpZGVvVHJh
Y2suY29weVJlZigpOwotICAgICAgICAgICAgbV92aWRlb1RyYWNrcy5hcHBlbmQoV1RGTW92ZSh2
aWRlb1RyYWNrKSk7Ci0gICAgICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVkaWFEZXNjcmlw
dGlvbkFWRk9iakM6OmNyZWF0ZSh0cmFjayk7Ci0gICAgICAgICAgICBzZWdtZW50LnZpZGVvVHJh
Y2tzLmFwcGVuZChpbmZvKTsKLSAgICAgICAgfSBlbHNlIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFy
YWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNBdWRpYmxlXSkgewotICAgICAgICAgICAg
U291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OjpBdWRpb1Ry
YWNrSW5mb3JtYXRpb24gaW5mbzsKLSAgICAgICAgICAgIGF1dG8gYXVkaW9UcmFjayA9IEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGUodHJhY2ssIHRoaXMpOwotICAg
ICAgICAgICAgaW5mby50cmFjayA9IGF1ZGlvVHJhY2suY29weVJlZigpOwotICAgICAgICAgICAg
bV9hdWRpb1RyYWNrcy5hcHBlbmQoV1RGTW92ZShhdWRpb1RyYWNrKSk7Ci0gICAgICAgICAgICBp
bmZvLmRlc2NyaXB0aW9uID0gTWVkaWFEZXNjcmlwdGlvbkFWRk9iakM6OmNyZWF0ZSh0cmFjayk7
Ci0gICAgICAgICAgICBzZWdtZW50LmF1ZGlvVHJhY2tzLmFwcGVuZChpbmZvKTsKLSAgICAgICAg
fQorICAgIGZvciAoYXV0byB2aWRlb1RyYWNrSW5mbyA6IHNlZ21lbnQudmlkZW9UcmFja3MpIHsK
KyAgICAgICAgdmlkZW9UcmFja0luZm8udHJhY2stPnNldFNlbGVjdGVkQ2hhbmdlZENhbGxiYWNr
KFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNr
LCBib29sIHNlbGVjdGVkKSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAg
ICAgICAgd2Vha1RoaXMtPnRyYWNrRGlkQ2hhbmdlU2VsZWN0ZWQodHJhY2ssIHNlbGVjdGVkKTsK
KyAgICAgICAgfSk7CisgICAgICAgIG1fdmlkZW9UcmFja3MuYXBwZW5kKHZpZGVvVHJhY2tJbmZv
LnRyYWNrKTsKKyAgICB9CiAKLSAgICAgICAgLy8gRklYTUUoMTI1MTYxKTogQWRkIFRleHRUcmFj
ayBzdXBwb3J0CisgICAgZm9yIChhdXRvIGF1ZGlvVHJhY2tJbmZvIDogc2VnbWVudC5hdWRpb1Ry
YWNrcykgeworICAgICAgICBhdWRpb1RyYWNrSW5mby50cmFjay0+c2V0RW5hYmxlZENoYW5nZWRD
YWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKEF1ZGlvVHJhY2tQcml2YXRl
JiB0cmFjaywgYm9vbCBlbmFibGVkKSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAg
ICAgICAgICAgICAgd2Vha1RoaXMtPnRyYWNrRGlkQ2hhbmdlRW5hYmxlZCh0cmFjaywgZW5hYmxl
ZCk7CisgICAgICAgIH0pOworICAgICAgICBtX2F1ZGlvVHJhY2tzLmFwcGVuZChhdWRpb1RyYWNr
SW5mby50cmFjayk7CiAgICAgfQogCiAgICAgaWYgKG1fbWVkaWFTb3VyY2UpCkBAIC01NzEsODAg
KzM4NSw1MCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZVN0cmVh
bURhdGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQogICAgICAgICBtX2NsaWVudC0+c291cmNlQnVm
ZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoc2VnbWVudCk7CiB9CiAK
LXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0
YVdpdGhFcnJvcihOU0Vycm9yICplcnJvcikKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhpbnQzMl90IGNvZGUpCiB7CiAjaWYg
TE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKKyAgICBVTlVTRURfUEFSQU0o
Y29kZSk7CiAjZW5kaWYKLSAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgW1tlcnJvciBkZXNj
cmlwdGlvbl0gVVRGOFN0cmluZ10pOworICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCBjb2Rl
KTsKIAogICAgIG1fcGFyc2luZ1N1Y2NlZWRlZCA9IGZhbHNlOwogfQogCi1zdHJ1Y3QgUHJvY2Vz
c0NvZGVkRnJhbWVJbmZvIHsKLSAgICBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogc291cmNl
QnVmZmVyOwotICAgIGludCB0cmFja0lEOwotICAgIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlOwot
fTsKLQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0
YUZvclRyYWNrSUQoaW50IHRyYWNrSUQsIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkKQordm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoUmVmPE1lZGlhU2FtcGxl
PiYmIG1lZGlhU2FtcGxlLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlw
ZSkKIHsKLSAgICBwcm9jZXNzQ29kZWRGcmFtZSh0cmFja0lELCBzYW1wbGVCdWZmZXIsIG1lZGlh
VHlwZSk7Ci19CisgICAgVU5VU0VEX1BBUkFNKG1lZGlhVHlwZSk7CiAKLWJvb2wgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OnByb2Nlc3NDb2RlZEZyYW1lKGludCB0cmFja0lELCBDTVNhbXBs
ZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIsIGNvbnN0IFN0cmluZyYpCi17CiAgICAgaWYgKHRyYWNr
SUQgIT0gbV9lbmFibGVkVmlkZW9UcmFja0lEICYmICFtX2F1ZGlvUmVuZGVyZXJzLmNvbnRhaW5z
KHRyYWNrSUQpKSB7CiAgICAgICAgIC8vIEZJWE1FKDEyNTE2MSk6IFdlIGRvbid0IGhhbmRsZSB0
ZXh0IHRyYWNrcywgYW5kIHBhc3NpbmcgdGhpcyBzYW1wbGUgdXAgdG8gU291cmNlQnVmZmVyCiAg
ICAgICAgIC8vIHdpbGwganVzdCBjb25mdXNlIGl0cyBzdGF0ZS4gRHJvcCB0aGlzIHNhbXBsZSB1
bnRpbCB3ZSBjYW4gaGFuZGxlIHRleHQgdHJhY2tzIHByb3Blcmx5LgotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9kaXNjYXJkU2FtcGxl
c1VudGlsTmV4dEluaXRpYWxpemF0aW9uU2VnbWVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgaWYgKCFtX2NsaWVudCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBhdXRvIG1l
ZGlhU2FtcGxlID0gTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUoc2FtcGxlQnVmZmVyLCB0cmFj
a0lEKTsKLQotICAgIGlmIChtZWRpYVNhbXBsZS0+aXNIb21vZ2VuZW91cygpKSB7Ci0gICAgICAg
IERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCBtZWRpYVNhbXBsZS0+dG9KU09OU3RyaW5nKCkpOwor
ICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCBtZWRpYVNhbXBsZS0+dG9KU09OU3RyaW5nKCkp
OworICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZh
dGVEaWRSZWNlaXZlU2FtcGxlKG1lZGlhU2FtcGxlKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfQotCi0gICAgYXV0byBtZWRpYVNhbXBsZXMgPSBtZWRpYVNhbXBsZS0+ZGl2aWRlSW50b0hv
bW9nZW5lb3VzU2FtcGxlcygpOwotICAgIGZvciAoYXV0byYgc2FtcGxlIDogbWVkaWFTYW1wbGVz
KSB7Ci0gICAgICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCBzYW1wbGUtPnRvSlNPTlN0cmlu
ZygpKTsKLSAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2Ft
cGxlKHNhbXBsZSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFJlYWNoRW5kT2ZUcmFja1dpdGhUcmFja0lEKGludCwg
Y29uc3QgU3RyaW5nJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlh
bGl6YXRpb25EYXRhRm9yVHJhY2tJRChpbnQgdHJhY2tJRCkKK3ZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OndpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRh
dGFGb3JUcmFja0lEKHVpbnQ2NF90IHRyYWNrSUQpCiB7CiAgICAgaWYgKCFtX21lZGlhU291cmNl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQobV9wYXJzZXIpOwotCiAjaWYgSEFWRShB
VlNUUkVBTVNFU1NJT04pICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgInRyYWNrID0gIiwgdHJhY2tJRCk7CiAKICAgICBtX3By
b3RlY3RlZFRyYWNrSUQgPSB0cmFja0lEOwogCisgICAgYXV0byBwYXJzZXIgPSB0aGlzLT5wYXJz
ZXIoKTsKKyAgICBpZiAoIXBhcnNlcikKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKENETVNl
c3Npb25NZWRpYVNvdXJjZUFWRk9iakMqIHNlc3Npb24gPSBtX21lZGlhU291cmNlLT5wbGF5ZXIo
KS0+Y2RtU2Vzc2lvbigpKQotICAgICAgICBzZXNzaW9uLT5hZGRQYXJzZXIobV9wYXJzZXIuZ2V0
KCkpOworICAgICAgICBzZXNzaW9uLT5hZGRQYXJzZXIocGFyc2VyKTsKICAgICBlbHNlIGlmICgh
Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmlzQXZhaWxhYmxlKCkpIHsKICAgICAgICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIFttX21lZGlhU291cmNlLT5wbGF5
ZXIoKS0+c3RyZWFtU2Vzc2lvbigpIGFkZFN0cmVhbURhdGFQYXJzZXI6bV9wYXJzZXIuZ2V0KCld
OworICAgICAgICBbbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPnN0cmVhbVNlc3Npb24oKSBhZGRT
dHJlYW1EYXRhUGFyc2VyOnBhcnNlcl07CiAgICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKICAgICB9CiAjZWxzZQpAQCAtNjUyLDcgKzQzNiw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OndpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRh
dGFGCiAjZW5kaWYKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJv
dmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChOU0RhdGEq
IGluaXREYXRhLCBpbnQgdHJhY2tJRCwgQm94PEJpbmFyeVNlbWFwaG9yZT4gaGFzU2Vzc2lvblNl
bWFwaG9yZSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250
ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoUmVmPFVpbnQ4QXJyYXk+
JiYgaW5pdERhdGEsIHVpbnQ2NF90IHRyYWNrSUQsIEJveDxCaW5hcnlTZW1hcGhvcmU+IGhhc1Nl
c3Npb25TZW1hcGhvcmUpCiB7CiAgICAgaWYgKCFtX21lZGlhU291cmNlKQogICAgICAgICByZXR1
cm47CkBAIC02NjEsMTEgKzQ0NSwxMSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGbwogICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgInRyYWNrID0gIiwgdHJhY2tJRCk7CiAKICAgICBtX3By
b3RlY3RlZFRyYWNrSUQgPSB0cmFja0lEOwotICAgIG1faW5pdERhdGEgPSBVaW50OEFycmF5Ojpj
cmVhdGUoW2luaXREYXRhIGxlbmd0aF0pOwotICAgIFtpbml0RGF0YSBnZXRCeXRlczptX2luaXRE
YXRhLT5kYXRhKCkgbGVuZ3RoOm1faW5pdERhdGEtPmxlbmd0aCgpXTsKKyAgICBtX2luaXREYXRh
ID0gV1RGTW92ZShpbml0RGF0YSk7CiAgICAgbV9tZWRpYVNvdXJjZS0+c291cmNlQnVmZmVyS2V5
TmVlZGVkKHRoaXMsIG1faW5pdERhdGEuZ2V0KCkpOwogICAgIGlmIChhdXRvIHNlc3Npb24gPSBt
X21lZGlhU291cmNlLT5wbGF5ZXIoKS0+Y2RtU2Vzc2lvbigpKSB7Ci0gICAgICAgIHNlc3Npb24t
PmFkZFBhcnNlcihtX3BhcnNlci5nZXQoKSk7CisgICAgICAgIGlmIChhdXRvIHBhcnNlciA9IHRo
aXMtPnBhcnNlcigpKQorICAgICAgICAgICAgc2Vzc2lvbi0+YWRkUGFyc2VyKHBhcnNlcik7CiAg
ICAgICAgIGhhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtNjc2LDE0ICs0NjAsMTUgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KICAgICBt
X2hhc1Nlc3Npb25TZW1hcGhvcmUgPSBoYXNTZXNzaW9uU2VtYXBob3JlOwogICAgIAogI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKLSAgICBh
dXRvIGluaXREYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW5pdERhdGEpOworICAg
IGF1dG8gaW5pdERhdGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2luaXREYXRhLT5k
YXRhKCksIG1faW5pdERhdGEtPmJ5dGVMZW5ndGgoKSk7CiAgICAgYXV0byBrZXlJRHMgPSBDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTaW5mKGluaXREYXRhQnVmZmVy
KTsKICAgICBpZiAoIWtleUlEcykKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fY2RtSW5z
dGFuY2UpIHsKICAgICAgICAgaWYgKGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5j
ZS0+c2Vzc2lvbkZvcktleUlEcyhrZXlJRHMudmFsdWUoKSkpIHsKLSAgICAgICAgICAgIFtpbnN0
YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVudDpt
X3BhcnNlci5nZXQoKV07CisgICAgICAgICAgICBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5wYXJz
ZXIoKSkKKyAgICAgICAgICAgICAgICBbaW5zdGFuY2VTZXNzaW9uLT5jb250ZW50S2V5U2Vzc2lv
bigpIGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6cGFyc2VyXTsKICAgICAgICAgICAgIGlmIChtX2hh
c1Nlc3Npb25TZW1hcGhvcmUpIHsKICAgICAgICAgICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhv
cmUtPnNpZ25hbCgpOwogICAgICAgICAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZSA9IG51
bGxwdHI7CkBAIC03MjQsMTYgKzUwOSw1NCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjphcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgZGF0YSkKIHsKICAgICBERUJVR19M
T0coTE9HSURFTlRJRklFUiwgImRhdGEgbGVuZ3RoID0gIiwgZGF0YS5zaXplKCkpOwogCisgICAg
QVNTRVJUKCFtX2hhc1Nlc3Npb25TZW1hcGhvcmUpOworICAgIEFTU0VSVCghbV9hYm9ydFNlbWFw
aG9yZSk7CisKKyAgICBtX2Fib3J0U2VtYXBob3JlID0gQm94PFNlbWFwaG9yZT46OmNyZWF0ZSgw
KTsKKyAgICBtX3BhcnNlci0+c2V0V2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxp
emF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlz
KSwgYWJvcnRTZW1hcGhvcmUgPSBtX2Fib3J0U2VtYXBob3JlXSAodWludDY0X3QgdHJhY2tJRCkg
bXV0YWJsZSB7CisgICAgICAgIC8vIFdlIG11c3QgY2FsbCBzeW5jaHJvbm91c2x5IHRvIHRoZSBt
YWluIHRocmVhZCwgYXMgdGhlIEFWU3RyZWFtU2Vzc2lvbiBtdXN0IGJlIGFzc29jaWF0ZWQKKyAg
ICAgICAgLy8gd2l0aCB0aGUgc3RyZWFtRGF0YVBhcnNlciBiZWZvcmUgdGhlIGRlbGVnYXRlIG1l
dGhvZCByZXR1cm5zLgorICAgICAgICBCb3g8QmluYXJ5U2VtYXBob3JlPiByZXNwb25kZWRTZW1h
cGhvcmUgPSBCb3g8QmluYXJ5U2VtYXBob3JlPjo6Y3JlYXRlKCk7CisgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHRyYWNrSUQsIHJlc3BvbmRl
ZFNlbWFwaG9yZV0oKSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAg
ICAgd2Vha1RoaXMtPndpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRh
dGFGb3JUcmFja0lEKHRyYWNrSUQpOworICAgICAgICAgICAgcmVzcG9uZGVkU2VtYXBob3JlLT5z
aWduYWwoKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAg
ICAgIGlmIChyZXNwb25kZWRTZW1hcGhvcmUtPndhaXRGb3IoMTAwX21zKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlmIChhYm9ydFNlbWFwaG9yZS0+d2FpdEZvcigx
MDBfbXMpKSB7CisgICAgICAgICAgICAgICAgYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pOwor
CisgICAgbV9wYXJzZXItPnNldERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwg
YWJvcnRTZW1hcGhvcmUgPSBtX2Fib3J0U2VtYXBob3JlXSAoUmVmPFVpbnQ4QXJyYXk+JiYgaW5p
dERhdGEsIHVpbnQ2NF90IHRyYWNrSUQpIG11dGFibGUgeworICAgICAgICBCb3g8QmluYXJ5U2Vt
YXBob3JlPiBoYXNTZXNzaW9uU2VtYXBob3JlID0gQm94PEJpbmFyeVNlbWFwaG9yZT46OmNyZWF0
ZSgpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1Ro
aXMpLCBpbml0RGF0YSA9IFdURk1vdmUoaW5pdERhdGEpLCB0cmFja0lELCBoYXNTZXNzaW9uU2Vt
YXBob3JlXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAg
ICAgICAgICB3ZWFrVGhpcy0+ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm9yVHJhY2tJRChXVEZNb3ZlKGluaXREYXRhKSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNl
bWFwaG9yZSk7CisgICAgICAgIH0pOworCisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAg
ICAgICBpZiAoaGFzU2Vzc2lvblNlbWFwaG9yZS0+d2FpdEZvcigxMDBfbXMpKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYgKGFib3J0U2VtYXBob3JlLT53YWl0Rm9y
KDEwMF9tcykpIHsKKyAgICAgICAgICAgICAgICBhYm9ydFNlbWFwaG9yZS0+c2lnbmFsKCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSk7
CisKICAgICBtX3BhcnNpbmdTdWNjZWVkZWQgPSB0cnVlOwogICAgIGRpc3BhdGNoX2dyb3VwX2Vu
dGVyKG1faXNBcHBlbmRpbmdHcm91cC5nZXQoKSk7CiAKLSAgICBkaXNwYXRjaF9hc3luYyhnbG9i
YWxEYXRhUGFyc2VyUXVldWUoKSwgW2RhdGEgPSBXVEZNb3ZlKGRhdGEpLCB3ZWFrVGhpcyA9IG1f
YXBwZW5kV2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyksIHBhcnNlciA9IG1fcGFyc2Vy
LCBkZWxlZ2F0ZSA9IG1fZGVsZWdhdGUsIGlzQXBwZW5kaW5nR3JvdXAgPSBtX2lzQXBwZW5kaW5n
R3JvdXAsIHBhcnNlclN0YXRlV2FzUmVzZXQgPSBtX3BhcnNlclN0YXRlV2FzUmVzZXRdICgpIG11
dGFibGUgewotICAgICAgICBhdXRvIHNoYXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGRhdGEpKTsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBzaGFyZWREYXRhLT5jcmVhdGVO
U0RhdGEoKTsKLSAgICAgICAgaWYgKHBhcnNlclN0YXRlV2FzUmVzZXQpCi0gICAgICAgICAgICBb
cGFyc2VyIGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURh
dGFQYXJzZXJTdHJlYW1EYXRhRGlzY29udGludWl0eV07Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIFtwYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCldOworICAgIGRpc3BhdGNo
X2FzeW5jKGdsb2JhbERhdGFQYXJzZXJRdWV1ZSgpLCBbZGF0YSA9IFdURk1vdmUoZGF0YSksIHdl
YWtUaGlzID0gbV9hcHBlbmRXZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCp0aGlzKSwgcGFyc2Vy
ID0gbV9wYXJzZXIsIGlzQXBwZW5kaW5nR3JvdXAgPSBtX2lzQXBwZW5kaW5nR3JvdXBdICgpIG11
dGFibGUgeworICAgICAgICBwYXJzZXItPmFwcGVuZERhdGEoV1RGTW92ZShkYXRhKSk7CiAKICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXNdIHsKICAgICAgICAgICAgIGlmICh3ZWFr
VGhpcykKQEAgLTc0MSwxMSArNTY0LDIwIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQogICAgICAgICB9KTsKICAg
ICAgICAgZGlzcGF0Y2hfZ3JvdXBfbGVhdmUoaXNBcHBlbmRpbmdHcm91cC5nZXQoKSk7CiAgICAg
fSk7Ci0gICAgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0ID0gZmFsc2U7CiB9CiAKIHZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZENvbXBsZXRlZCgpCiB7CisgICAgaWYgKG1fYWJv
cnRTZW1hcGhvcmUpIHsKKyAgICAgICAgbV9hYm9ydFNlbWFwaG9yZS0+c2lnbmFsKCk7CisgICAg
ICAgIG1fYWJvcnRTZW1hcGhvcmUgPSBuaWw7CisgICAgfQorCisgICAgaWYgKG1faGFzU2Vzc2lv
blNlbWFwaG9yZSkgeworICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwor
ICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUgPSBuaWw7CisgICAgfQorCiAgICAgaWYgKG1f
cGFyc2luZ1N1Y2NlZWRlZCAmJiBtX21lZGlhU291cmNlKQogICAgICAgICBtX21lZGlhU291cmNl
LT5wbGF5ZXIoKS0+c2V0TG9hZGluZ1Byb2dyZXNzc2VkKHRydWUpOwogCkBAIC03NjAsMzkgKzU5
MiwzOSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphYm9ydCgpCiAgICAgLy8g
VGhlIHBhcnNpbmcgcXVldWUgbWF5IGJlIGJsb2NrZWQgd2FpdGluZyBmb3IgdGhlIG1haW4gdGhy
ZWFkIHRvIHByb3ZpZGUgaXQgYSBBVlN0cmVhbVNlc3Npb24uIFdlCiAgICAgLy8gd2VyZSBhc2tl
ZCB0byBhYm9ydCwgYW5kIHRoYXQgY2FuY2VscyBhbGwgb3V0c3RhbmRpbmcgYXBwZW5kIG9wZXJh
dGlvbnMuIFdpdGhvdXQgY2FuY2VsbGluZyB0aGlzCiAgICAgLy8gc2VtYXBob3JlLCB0aGUgbV9p
c0FwcGVuZGluZ0dyb3VwIHdhaXQgb3BlcmF0aW9uIHdpbGwgZGVhZGxvY2suCi0gICAgaWYgKG1f
aGFzU2Vzc2lvblNlbWFwaG9yZSkKKyAgICBpZiAobV9oYXNTZXNzaW9uU2VtYXBob3JlKSB7CiAg
ICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFsKCk7Ci0gICAgbV9kZWxlZ2F0ZS5n
ZXQoKS5hYm9ydFNlbWFwaG9yZS0+c2lnbmFsKCk7CisgICAgICAgIG1faGFzU2Vzc2lvblNlbWFw
aG9yZSA9IG51bGxwdHI7CisgICAgfQorICAgIGlmIChtX2Fib3J0U2VtYXBob3JlKSB7CisgICAg
ICAgIG1fYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAgICBtX2Fib3J0U2VtYXBob3Jl
ID0gbnVsbHB0cjsKKyAgICB9CiAgICAgZGlzcGF0Y2hfZ3JvdXBfd2FpdChtX2lzQXBwZW5kaW5n
R3JvdXAuZ2V0KCksIERJU1BBVENIX1RJTUVfRk9SRVZFUik7Ci0gICAgbV9hcHBlbmRXZWFrRmFj
dG9yeS5yZXZva2VBbGwoKTsKLSAgICBtX2RlbGVnYXRlLmdldCgpLnBhcmVudCA9IG1fYXBwZW5k
V2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyk7Ci0gICAgbV9kZWxlZ2F0ZS5nZXQoKS5h
Ym9ydFNlbWFwaG9yZSA9IEJveDxTZW1hcGhvcmU+OjpjcmVhdGUoMCk7CiB9CiAKIHZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnJlc2V0UGFyc2VyU3RhdGUoKQogewogICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUik7CiAKLSAgICBtX3BhcnNlclN0YXRlV2FzUmVzZXQgPSB0cnVl
OwotICAgIG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlvblNlZ21lbnQgPSB0
cnVlOworICAgIG1fcGFyc2VyLT5yZXNldFBhcnNlclN0YXRlKCk7CiB9CiAKIHZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRlc3Ryb3lQYXJzZXIoKQogeworICAgIGF1dG8gcGFyc2Vy
ID0gdGhpcy0+cGFyc2VyKCk7CisgICAgaWYgKCFwYXJzZXIpCisgICAgICAgIHJldHVybjsKICNp
ZiBIQVZFKEFWU1RSRUFNU0VTU0lPTikgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEp
CiAgICAgaWYgKG1fbWVkaWFTb3VyY2UgJiYgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPmhhc1N0
cmVhbVNlc3Npb24oKSkKLSAgICAgICAgW21fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5zdHJlYW1T
ZXNzaW9uKCkgcmVtb3ZlU3RyZWFtRGF0YVBhcnNlcjptX3BhcnNlci5nZXQoKV07CisgICAgICAg
IFttX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c3RyZWFtU2Vzc2lvbigpIHJlbW92ZVN0cmVhbURh
dGFQYXJzZXI6cGFyc2VyXTsKICNlbmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYm
IEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKICAgICBpZiAobV9jZG1JbnN0YW5jZSkgewogICAg
ICAgICBpZiAoYXV0byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUluc3RhbmNlLT5zZXNzaW9uRm9y
S2V5SURzKG1fa2V5SURzKSkKLSAgICAgICAgICAgIFtpbnN0YW5jZVNlc3Npb24tPmNvbnRlbnRL
ZXlTZXNzaW9uKCkgcmVtb3ZlQ29udGVudEtleVJlY2lwaWVudDptX3BhcnNlci5nZXQoKV07Cisg
ICAgICAgICAgICBbaW5zdGFuY2VTZXNzaW9uLT5jb250ZW50S2V5U2Vzc2lvbigpIHJlbW92ZUNv
bnRlbnRLZXlSZWNpcGllbnQ6cGFyc2VyXTsKICAgICB9CiAjZW5kaWYKLQotICAgIFttX2RlbGVn
YXRlIGludmFsaWRhdGVdOwotICAgIG1fZGVsZWdhdGUgPSBudWxscHRyOwotICAgIG1fcGFyc2Vy
ID0gbnVsbHB0cjsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGVzdHJv
eVJlbmRlcmVycygpCkBAIC04MTcsNiArNjQ5LDE3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OmRlc3Ryb3lSZW5kZXJlcnMoKQogICAgIG1fYXVkaW9SZW5kZXJlcnMuY2xlYXIo
KTsKIH0KIAordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y2xlYXJUcmFja3MoKQor
eworICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX3ZpZGVvVHJhY2tzKQorICAgICAgICB0cmFjay0+
c2V0U2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2sobnVsbHB0cik7CisgICAgbV92aWRlb1RyYWNrcy5j
bGVhcigpOworCisgICAgZm9yIChhdXRvJiB0cmFjayA6IG1fYXVkaW9UcmFja3MpCisgICAgICAg
IHRyYWNrLT5zZXRFbmFibGVkQ2hhbmdlZENhbGxiYWNrKG51bGxwdHIpOworICAgIG1fYXVkaW9U
cmFja3MuY2xlYXIoKTsKK30KKwogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6cmVt
b3ZlZEZyb21NZWRpYVNvdXJjZSgpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsK
QEAgLTg0OCw3ICs2OTEsNyBAQCBib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpoYXNW
aWRlbygpIGNvbnN0CiAKIGJvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Omhhc1NlbGVj
dGVkVmlkZW8oKSBjb25zdAogewotICAgIHJldHVybiBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgIT0g
LTE7CisgICAgcmV0dXJuIG1fZW5hYmxlZFZpZGVvVHJhY2tJRCAhPSBub3RGb3VuZDsKIH0KIAog
Ym9vbCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6aGFzQXVkaW8oKSBjb25zdApAQCAtODU2
LDIxICs2OTksMjEgQEAgYm9vbCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6aGFzQXVkaW8o
KSBjb25zdAogICAgIHJldHVybiBtX2NsaWVudCAmJiBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJp
dmF0ZUhhc0F1ZGlvKCk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRy
YWNrRGlkQ2hhbmdlRW5hYmxlZChWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyog
dHJhY2spCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZVNl
bGVjdGVkKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjaywgYm9vbCBzZWxlY3RlZCkKIHsKLSAgICBp
bnQgdHJhY2tJRCA9IHRyYWNrLT50cmFja0lEKCk7CisgICAgYXV0byB0cmFja0lEID0gdHJhY2su
aWQoKS5zdHJpbmcoKS50b1VJbnQ2NCgpOwogCi0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
LCAidmlkZW8gdHJhY2tJRCA9ICIsIHRyYWNrSUQsICIsIHNlbGVjdGVkID0gIiwgdHJhY2stPnNl
bGVjdGVkKCkpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInZpZGVvIHRyYWNrSUQg
PSAiLCB0cmFja0lELCAiLCBzZWxlY3RlZCA9ICIsIHNlbGVjdGVkKTsKIAotICAgIGlmICghdHJh
Y2stPnNlbGVjdGVkKCkgJiYgbV9lbmFibGVkVmlkZW9UcmFja0lEID09IHRyYWNrSUQpIHsKKyAg
ICBpZiAoIXNlbGVjdGVkICYmIG1fZW5hYmxlZFZpZGVvVHJhY2tJRCA9PSB0cmFja0lEKSB7CiAg
ICAgICAgIG1fZW5hYmxlZFZpZGVvVHJhY2tJRCA9IC0xOwotICAgICAgICBbbV9wYXJzZXIgc2V0
U2hvdWxkUHJvdmlkZU1lZGlhRGF0YTpOTyBmb3JUcmFja0lEOnRyYWNrSURdOworICAgICAgICBt
X3BhcnNlci0+c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoZmFsc2UsIHRyYWNr
SUQpOwogCiAgICAgICAgIGlmIChtX2RlY29tcHJlc3Npb25TZXNzaW9uKQogICAgICAgICAgICAg
bV9kZWNvbXByZXNzaW9uU2Vzc2lvbi0+c3RvcFJlcXVlc3RpbmdNZWRpYURhdGEoKTsKLSAgICB9
IGVsc2UgaWYgKHRyYWNrLT5zZWxlY3RlZCgpKSB7CisgICAgfSBlbHNlIGlmIChzZWxlY3RlZCkg
ewogICAgICAgICBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgPSB0cmFja0lEOwotICAgICAgICBbbV9w
YXJzZXIgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YTpZRVMgZm9yVHJhY2tJRDp0cmFja0lEXTsK
KyAgICAgICAgbV9wYXJzZXItPnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKHRy
dWUsIHRyYWNrSUQpOwogCiAgICAgICAgIGlmIChtX2RlY29tcHJlc3Npb25TZXNzaW9uKSB7CiAg
ICAgICAgICAgICBtX2RlY29tcHJlc3Npb25TZXNzaW9uLT5yZXF1ZXN0TWVkaWFEYXRhV2hlblJl
YWR5KFt0aGlzLCB0cmFja0lEXSB7CkBAIC04ODIsMjEgKzcyNSwyMSBAQCB2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQoVmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdQogICAgIG1fbWVkaWFTb3VyY2UtPmhhc1NlbGVjdGVkVmlkZW9DaGFuZ2VkKCp0
aGlzKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFu
Z2VFbmFibGVkKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiB0cmFjaykKK3Zv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlRW5hYmxlZChBdWRp
b1RyYWNrUHJpdmF0ZSYgdHJhY2ssIGJvb2wgZW5hYmxlZCkKIHsKLSAgICBpbnQgdHJhY2tJRCA9
IHRyYWNrLT50cmFja0lEKCk7CisgICAgYXV0byB0cmFja0lEID0gdHJhY2suaWQoKS5zdHJpbmco
KS50b1VJbnQ2NCgpOwogCi0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiYXVkaW8gdHJh
Y2tJRCA9ICIsIHRyYWNrSUQsICIsIHNlbGVjdGVkID0gIiwgdHJhY2stPmVuYWJsZWQoKSk7Cisg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiYXVkaW8gdHJhY2tJRCA9ICIsIHRyYWNrSUQs
ICIsIHNlbGVjdGVkID0gIiwgZW5hYmxlZCk7CiAKLSAgICBpZiAoIXRyYWNrLT5lbmFibGVkKCkp
IHsKKyAgICBpZiAoIWVuYWJsZWQpIHsKICAgICAgICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dV
QVJEU19CRUdJTgogICAgICAgICBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVy
PiByZW5kZXJlciA9IG1fYXVkaW9SZW5kZXJlcnMuZ2V0KHRyYWNrSUQpOwogICAgICAgICBBTExP
V19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAotICAgICAgICBbbV9wYXJzZXIgc2V0U2hvdWxk
UHJvdmlkZU1lZGlhRGF0YTpOTyBmb3JUcmFja0lEOnRyYWNrSURdOworICAgICAgICBtX3BhcnNl
ci0+c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoZmFsc2UsIHRyYWNrSUQpOwog
ICAgICAgICBpZiAobV9tZWRpYVNvdXJjZSkKICAgICAgICAgICAgIG1fbWVkaWFTb3VyY2UtPnBs
YXllcigpLT5yZW1vdmVBdWRpb1JlbmRlcmVyKHJlbmRlcmVyLmdldCgpKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBbbV9wYXJzZXIgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YTpZRVMgZm9yVHJh
Y2tJRDp0cmFja0lEXTsKKyAgICAgICAgbV9wYXJzZXItPnNldFNob3VsZFByb3ZpZGVNZWRpYURh
dGFGb3JUcmFja0lEKHRydWUsIHRyYWNrSUQpOwogICAgICAgICBBTExPV19ORVdfQVBJX1dJVEhP
VVRfR1VBUkRTX0JFR0lOCiAgICAgICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVu
ZGVyZXI+IHJlbmRlcmVyOwogICAgICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VO
RApAQCAtOTI2LDYgKzc2OSwxMyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0
cmFja0RpZENoYW5nZUVuYWJsZWQoQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdQogICAgIH0KIH0K
IAorQVZTdHJlYW1EYXRhUGFyc2VyKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6cGFyc2Vy
KCkgY29uc3QKK3sKKyAgICBpZiAoaXM8U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQz4obV9wYXJz
ZXIuZ2V0KCkpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8U291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQz4obV9wYXJzZXIuZ2V0KCkpLnBhcnNlcigpOworICAgIHJldHVybiBuaWw7Cit9CisKIHZv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNldENETVNlc3Npb24oQ0RNU2Vzc2lvbk1l
ZGlhU291cmNlQVZGT2JqQyogc2Vzc2lvbikKIHsKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKQEAgLTk4Nyw3ICs4MzcsOCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjphdHRlbXB0VG9EZWNyeXB0KCkKICAgICBpZiAoIWluc3RhbmNlU2Vzc2lvbikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgW2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSBh
ZGRDb250ZW50S2V5UmVjaXBpZW50Om1fcGFyc2VyLmdldCgpXTsKKyAgICBpZiAoYXV0byBwYXJz
ZXIgPSB0aGlzLT5wYXJzZXIoKSkKKyAgICAgICAgW2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtl
eVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50OnBhcnNlcl07CiAgICAgaWYgKG1faGFz
U2Vzc2lvblNlbWFwaG9yZSkgewogICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25h
bCgpOwogICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUgPSBudWxscHRyOwpAQCAtMTA3NSw3
ICs5MjYsNyBAQCBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAogCiB2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpmbHVzaChjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEU3Ry
aW5nKQogewotICAgIGludCB0cmFja0lEID0gdHJhY2tJRFN0cmluZy50b0ludCgpOworICAgIGF1
dG8gdHJhY2tJRCA9IHRyYWNrSURTdHJpbmcuc3RyaW5nKCkudG9VSW50NjQoKTsKICAgICBERUJV
R19MT0coTE9HSURFTlRJRklFUiwgdHJhY2tJRCk7CiAKICAgICBpZiAodHJhY2tJRCA9PSBtX2Vu
YWJsZWRWaWRlb1RyYWNrSUQpIHsKQEAgLTExMTcsNyArOTY4LDcgQEAgQUxMT1dfTkVXX0FQSV9X
SVRIT1VUX0dVQVJEU19FTkQKIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZW5x
dWV1ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGU+JiYgc2FtcGxlLCBjb25zdCBBdG9tU3RyaW5nJiB0
cmFja0lEU3RyaW5nKQogewotICAgIGludCB0cmFja0lEID0gdHJhY2tJRFN0cmluZy50b0ludCgp
OworICAgIGF1dG8gdHJhY2tJRCA9IHRyYWNrSURTdHJpbmcuc3RyaW5nKCkudG9VSW50NjQoKTsK
ICAgICBpZiAodHJhY2tJRCAhPSBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgJiYgIW1fYXVkaW9SZW5k
ZXJlcnMuY29udGFpbnModHJhY2tJRCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTIyOSw3ICsx
MDgwLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YnVmZmVyV2FzQ29uc3Vt
ZWQoKQogCiBib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjppc1JlYWR5Rm9yTW9yZVNh
bXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRFN0cmluZykKIHsKLSAgICBpbnQgdHJhY2tJ
RCA9IHRyYWNrSURTdHJpbmcudG9JbnQoKTsKKyAgICBhdXRvIHRyYWNrSUQgPSB0cmFja0lEU3Ry
aW5nLnN0cmluZygpLnRvVUludDY0KCk7CiAgICAgaWYgKHRyYWNrSUQgPT0gbV9lbmFibGVkVmlk
ZW9UcmFja0lEKSB7CiAgICAgICAgIGlmIChtX2RlY29tcHJlc3Npb25TZXNzaW9uKQogICAgICAg
ICAgICAgcmV0dXJuIG1fZGVjb21wcmVzc2lvblNlc3Npb24tPmlzUmVhZHlGb3JNb3JlTWVkaWFE
YXRhKCk7CkBAIC0xMjY4LDcgKzExMTksNyBAQCBGbG9hdFNpemUgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6Om5hdHVyYWxTaXplKCkKICAgICByZXR1cm4gbV9jYWNoZWRTaXplLnZhbHVlT3Io
RmxvYXRTaXplKCkpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRC
ZWNvbWVSZWFkeUZvck1vcmVTYW1wbGVzKGludCB0cmFja0lEKQordm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6ZGlkQmVjb21lUmVhZHlGb3JNb3JlU2FtcGxlcyh1aW50NjRfdCB0cmFj
a0lEKQogewogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsIHRyYWNrSUQpOwogCkBAIC0xMjg3
LDcgKzExMzgsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRCZWNvbWVS
ZWFkeUZvck1vcmVTYW1wbGVzKGludCB0cmFja0lEKQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpub3RpZnlDbGllbnRXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBBdG9t
U3RyaW5nJiB0cmFja0lEU3RyaW5nKQogewotICAgIGludCB0cmFja0lEID0gdHJhY2tJRFN0cmlu
Zy50b0ludCgpOworICAgIGF1dG8gdHJhY2tJRCA9IHRyYWNrSURTdHJpbmcuc3RyaW5nKCkudG9V
SW50NjQoKTsKICAgICBpZiAodHJhY2tJRCA9PSBtX2VuYWJsZWRWaWRlb1RyYWNrSUQpIHsKICAg
ICAgICAgaWYgKG1fZGVjb21wcmVzc2lvblNlc3Npb24pIHsKICAgICAgICAgICAgIG1fZGVjb21w
cmVzc2lvblNlc3Npb24tPnJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHkoW3RoaXMsIHRyYWNrSURd
IHsKQEAgLTEzMTIsNyArMTE2Myw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
Om5vdGlmeUNsaWVudFdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0b21TCiAKIGJvb2wg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNhblNldE1pbmltdW1VcGNvbWluZ1ByZXNlbnRh
dGlvblRpbWUoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRFN0cmluZykgY29uc3QKIHsKLSAgICBp
bnQgdHJhY2tJRCA9IHRyYWNrSURTdHJpbmcudG9JbnQoKTsKKyAgICBhdXRvIHRyYWNrSUQgPSB0
cmFja0lEU3RyaW5nLnN0cmluZygpLnRvVUludDY0KCk7CiAgICAgaWYgKHRyYWNrSUQgPT0gbV9l
bmFibGVkVmlkZW9UcmFja0lEKQogICAgICAgICByZXR1cm4gW2dldEFWU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyQ2xhc3MoKSBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3IoZXhw
ZWN0TWluaW11bVVwY29taW5nU2FtcGxlQnVmZmVyUHJlc2VudGF0aW9uVGltZTopXTsKICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlk
ZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCBjNzhiOTUzYzdiYWE4ZWNi
MjkyOGJmMmMzZGQ1NTFhOTBlZDIzOGNjLi42YjExY2NhMzJiZGQ0OWQyYWRkNjEwZTlhN2E3NzZi
NTk1YjhhOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Zp
ZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZUFWRi5oIgor
I2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIApA
QCAtNDIsMTQgKzQzLDExIEBAIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOwogY2xh
c3MgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgVmlk
ZW9UcmFja1ByaXZhdGVBVkYgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKQogcHVibGljOgotICAgIHN0YXRpYyBSZWY8VmlkZW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sqIHRyYWNr
LCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQorICAgIHN0YXRpYyBSZWY8Vmlk
ZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sqIHRy
YWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2ssIHBhcmVudCkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyh0cmFjaykpOwog
ICAgIH0KIAotICAgIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIHNl
dFNlbGVjdGVkKGJvb2wpIG92ZXJyaWRlOwotCiAgICAgdm9pZCBzZXRBc3NldFRyYWNrKEFWQXNz
ZXRUcmFjayopOwogICAgIEFWQXNzZXRUcmFjayogYXNzZXRUcmFjaygpIGNvbnN0OwogCkBAIC01
OCwxNCArNTYsMTIgQEAgcHVibGljOgogICAgIEZsb2F0U2l6ZSBuYXR1cmFsU2l6ZSgpIGNvbnN0
OwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDKEFWQXNzZXRUcmFjayosIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQp
OworICAgIGV4cGxpY2l0IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKEFWQXNz
ZXRUcmFjayopOwogICAgIAogICAgIHZvaWQgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4gbV9pbXBsOwot
ICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBtX3BhcmVudDsKICAgICBpbnQgbV90cmFj
a0lEOwotICAgIGJvb2wgbV9zZWxlY3RlZDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
bW0KaW5kZXggMmM3MzkyNzk2ZTBmNTI1Zjk0YzI4YWEyMGFhZDEwZTMwZDBkMDUxYy4uYWZkMWI3
ZjNhOTMzNDkxNzFkOTEwNThmNjg1Y2ZlODBiYjhkNzMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMubW0KQEAgLTM0LDExICszNCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVmlkZW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
KiBwYXJlbnQpCitWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6VmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaykKICAgICA6IG1f
aW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKLSAgICAs
IG1fcGFyZW50KHBhcmVudCkKICAgICAsIG1fdHJhY2tJRCgtMSkKLSAgICAsIG1fc2VsZWN0ZWQo
ZmFsc2UpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CkBAIC02NSwyMSAr
NjMsNiBAQCBBVkFzc2V0VHJhY2sqIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Ojphc3NldFRyYWNrKCkgY29uc3QKICAgICByZXR1cm4gbV9pbXBsLT5hc3NldFRyYWNrKCk7CiB9
CiAKLQotYm9vbCBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2VsZWN0ZWQo
KSBjb25zdAotewotICAgIHJldHVybiBtX3NlbGVjdGVkOwotfQotCi12b2lkIFZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRTZWxlY3RlZChib29sIHNlbGVjdGVkKQotewot
ICAgIGlmIChtX3NlbGVjdGVkID09IHNlbGVjdGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X3NlbGVjdGVkID0gc2VsZWN0ZWQ7Ci0gICAgbV9wYXJlbnQtPnRyYWNrRGlkQ2hhbmdlRW5hYmxl
ZCh0aGlzKTsKLX0KLQogRmxvYXRTaXplIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpuYXR1cmFsU2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEZsb2F0U2l6ZShbYXNzZXRU
cmFjaygpIG5hdHVyYWxTaXplXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41ZjIwYmNmOWRmMTAxYWNhMTg1YjIzYzMxOWZkMjNiZDdlZTJjOWQyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9U
cmFja1ByaXZhdGVXZWJNLmNwcApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlV2ViTS5oIgorCisjaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8QXVkaW9U
cmFja1ByaXZhdGVXZWJNPiBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZSh3ZWJtOjpUcmFj
a0VudHJ5JiYgdHJhY2tFbnRyeSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1Ry
YWNrUHJpdmF0ZVdlYk0oV1RGTW92ZSh0cmFja0VudHJ5KSkpOworfQorCitBdWRpb1RyYWNrUHJp
dmF0ZVdlYk06OkF1ZGlvVHJhY2tQcml2YXRlV2ViTSh3ZWJtOjpUcmFja0VudHJ5JiYgdHJhY2tF
bnRyeSkKKyAgICA6IG1fdHJhY2soV1RGTW92ZSh0cmFja0VudHJ5KSkKK3sKKyAgICBpZiAobV90
cmFjay5pc19lbmFibGVkLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgc2V0RW5hYmxlZChtX3RyYWNr
LmlzX2VuYWJsZWQudmFsdWUoKSk7Cit9CisKK0F0b21TdHJpbmcgQXVkaW9UcmFja1ByaXZhdGVX
ZWJNOjppZCgpIGNvbnN0Cit7CisgICAgaWYgKG1fdHJhY2tJRC5pc051bGwoKSkKKyAgICAgICAg
bV90cmFja0lEID0gbV90cmFjay50cmFja191aWQuaXNfcHJlc2VudCgpID8gQXRvbVN0cmluZzo6
bnVtYmVyKG1fdHJhY2sudHJhY2tfdWlkLnZhbHVlKCkpIDogZW1wdHlBdG9tKCk7CisgICAgcmV0
dXJuIG1fdHJhY2tJRDsKK30KKworQXRvbVN0cmluZyBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06Omxh
YmVsKCkgY29uc3QKK3sKKyAgICBpZiAobV9sYWJlbC5pc051bGwoKSkKKyAgICAgICAgbV9sYWJl
bCA9IG1fdHJhY2submFtZS5pc19wcmVzZW50KCkgPyBBdG9tU3RyaW5nOjpmcm9tVVRGOChtX3Ry
YWNrLm5hbWUudmFsdWUoKS5kYXRhKCksIG1fdHJhY2submFtZS52YWx1ZSgpLmxlbmd0aCgpKSA6
IGVtcHR5QXRvbSgpOworICAgIHJldHVybiBtX2xhYmVsOworfQorCitBdG9tU3RyaW5nIEF1ZGlv
VHJhY2tQcml2YXRlV2ViTTo6bGFuZ3VhZ2UoKSBjb25zdAoreworICAgIGlmIChtX2xhbmd1YWdl
LmlzTnVsbCgpKQorICAgICAgICBtX2xhbmd1YWdlID0gbV90cmFjay5sYW5ndWFnZS5pc19wcmVz
ZW50KCkgPyBBdG9tU3RyaW5nOjpmcm9tVVRGOChtX3RyYWNrLmxhbmd1YWdlLnZhbHVlKCkuZGF0
YSgpLCBtX3RyYWNrLmxhbmd1YWdlLnZhbHVlKCkubGVuZ3RoKCkpIDogZW1wdHlBdG9tKCk7Cisg
ICAgcmV0dXJuIG1fbGFuZ3VhZ2U7Cit9CisKK2ludCBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OnRy
YWNrSW5kZXgoKSBjb25zdAoreworICAgIGlmIChtX3RyYWNrLnRyYWNrX251bWJlci5pc19wcmVz
ZW50KCkpCisgICAgICAgIHJldHVybiBtX3RyYWNrLnRyYWNrX251bWJlci52YWx1ZSgpOworICAg
IHJldHVybiAwOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFj
a1ByaXZhdGVXZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9B
dWRpb1RyYWNrUHJpdmF0ZVdlYk0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTk3OGRmNzhjM2I1NmZhNGU3MWI5
MDFkZjZhZjdjOTJlMTY5OTEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmgKQEAgLTAsMCArMSw1
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJD
RSkKKworI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSA8d2VibS9kb21f
dHlwZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1RyYWNrUHJpdmF0
ZVdlYk0gZmluYWwgOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGUgeworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVXZWJNPiBjcmVhdGUod2VibTo6VHJhY2tFbnRyeSYm
KTsKKyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNrUHJpdmF0ZVdlYk0oKSA9IGRlZmF1bHQ7CisKKyAg
ICBBdG9tU3RyaW5nIGlkKCkgY29uc3QgZmluYWw7CisgICAgQXRvbVN0cmluZyBsYWJlbCgpIGNv
bnN0IGZpbmFsOworICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBmaW5hbDsKKyAgICBp
bnQgdHJhY2tJbmRleCgpIGNvbnN0IGZpbmFsOworCitwcml2YXRlOgorICAgIEF1ZGlvVHJhY2tQ
cml2YXRlV2ViTSh3ZWJtOjpUcmFja0VudHJ5JiYpOworICAgIHdlYm06OlRyYWNrRW50cnkgbV90
cmFjazsKKyAgICBtdXRhYmxlIEF0b21TdHJpbmcgbV90cmFja0lEOworICAgIG11dGFibGUgQXRv
bVN0cmluZyBtX2xhYmVsOworICAgIG11dGFibGUgQXRvbVN0cmluZyBtX2xhbmd1YWdlOworfTsK
KworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjgxOGVkZjZlYTQ0ODA3YTBlMDYxYjQxNTRhYzg5ZWQzZTE4YTU5
OTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU291cmNlQnVmZmVyUGFyc2VyLmgiCisK
KyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKKyNp
bmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgiCisjaW5jbHVkZSAiU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK01lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZSBTb3VyY2VC
dWZmZXJQYXJzZXI6OmlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29uc3QgQ29udGVudFR5cGUmIHR5
cGUpCit7CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzID0gTWVk
aWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKKyAgICBzdXBwb3J0
cyA9IHN0ZDo6bWF4KHN1cHBvcnRzLCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppc0NvbnRlbnRU
eXBlU3VwcG9ydGVkKHR5cGUpKTsKKyAgICBzdXBwb3J0cyA9IHN0ZDo6bWF4KHN1cHBvcnRzLCBT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjppc0NvbnRlbnRUeXBlU3VwcG9ydGVkKHR5cGUpKTsK
KyAgICByZXR1cm4gc3VwcG9ydHM7Cit9CisKK1JlZlB0cjxTb3VyY2VCdWZmZXJQYXJzZXI+IFNv
dXJjZUJ1ZmZlclBhcnNlcjo6Y3JlYXRlKGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSkK
K3sKKyAgICBpZiAoV1RGOjplcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnRlbnRUeXBlLmNvbnRh
aW5lclR5cGUoKSwgImF1ZGlvL3dlYm0iKSB8fCBXVEY6OmVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
Y29udGVudFR5cGUuY29udGFpbmVyVHlwZSgpLCAidmlkZW8vd2VibSIpKQorICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkpOworfQorCit9CisKKyNlbmRp
ZiAvLyBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40N2JmNjg4YzNlNjQ5OGJmN2ZkNmQ4NzcwODNhZDVlMGMzNzcwOTdhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyLmgKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisKKyNpbmNsdWRlICJNZWRpYVBsYXllckVudW1zLmgi
CisjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oIgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbnRlbnRUeXBlOworY2xhc3MgTWVkaWFTYW1w
bGU7CisKK2NsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxTb3VyY2VCdWZmZXJQYXJzZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgTWVkaWFQbGF5
ZXJFbnVtczo6U3VwcG9ydHNUeXBlIGlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29uc3QgQ29udGVu
dFR5cGUmKTsKKworICAgIHN0YXRpYyBSZWZQdHI8U291cmNlQnVmZmVyUGFyc2VyPiBjcmVhdGUo
Y29uc3QgQ29udGVudFR5cGUmKTsKKyAgICB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQYXJzZXIoKSA9
IGRlZmF1bHQ7CisKKyAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsKKyAgICAgICAgQVZG
T2JqQywKKyAgICAgICAgV2ViTSwKKyAgICB9OworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29u
c3QgPSAwOworICAgIGVudW0gY2xhc3MgQXBwZW5kRmxhZ3MgOiB1aW50OF90IHsKKyAgICAgICAg
Tm9uZSwKKyAgICAgICAgRGlzY29udGludWl0eSwKKyAgICB9OworICAgIHZpcnR1YWwgdm9pZCBh
cHBlbmREYXRhKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmLCBBcHBlbmRGbGFncyA9IEFwcGVuZEZs
YWdzOjpOb25lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZsdXNoUGVuZGluZ01lZGlhRGF0YSgp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNr
SUQoYm9vbCwgdWludDY0X3QpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUHJvdmlkZU1l
ZGlhZGF0YUZvclRyYWNrSUQodWludDY0X3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXRQ
YXJzZXJTdGF0ZSgpID0gMDsKKworICAgIC8vIFdpbGwgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRo
cmVhZC4KKyAgICB1c2luZyBJbml0aWFsaXphdGlvblNlZ21lbnQgPSBTb3VyY2VCdWZmZXJQcml2
YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ7CisgICAgdXNpbmcgRGlkUGFyc2VJbml0
aWFsaXphdGlvbkRhdGFDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChJbml0aWFsaXphdGlv
blNlZ21lbnQmJik+OworICAgIHZvaWQgc2V0RGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxs
YmFjayhEaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrJiYgY2FsbGJhY2spCisgICAg
eworICAgICAgICBtX2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKTsKKyAgICB9CisKKyAgICAvLyBXaWxsIGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0
aHJlYWQuCisgICAgdXNpbmcgRGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2sg
PSBXVEY6OkZ1bmN0aW9uPHZvaWQodWludDY0X3QgZXJyb3JDb2RlKT47CisgICAgdm9pZCBzZXRE
aWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayhEaWRFbmNvdW50ZXJFcnJvckR1
cmluZ1BhcnNpbmdDYWxsYmFjayYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgbV9kaWRFbmNv
dW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworICAg
IH0KKworICAgIC8vIFdpbGwgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICB1c2lu
ZyBEaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmPE1l
ZGlhU2FtcGxlPiYmLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk+
OworICAgIHZvaWQgc2V0RGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKERpZFByb3ZpZGVNZWRp
YURhdGFDYWxsYmFjayYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgbV9kaWRQcm92aWRlTWVk
aWFEYXRhQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKKyAgICB9CisKKyAgICAvLyBXaWxs
IGJlIGNhbGxlZCBzeW5jaHJvbm91c2x5IG9uIHRoZSBwYXJzZXIgdGhlYWQuCisgICAgdXNpbmcg
V2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURD
YWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZCh1aW50NjRfdCB0cmFja0lEKT47CisgICAgdm9p
ZCBzZXRXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJh
Y2tJRENhbGxiYWNrKFdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRh
dGFGb3JUcmFja0lEQ2FsbGJhY2smJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIG1fd2lsbFBy
b3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spOworICAgIH0KKworICAgIC8vIFdpbGwgYmUgY2FsbGVkIHN5
bmNocm9ub3VzbHkgb24gdGhlIHBhcnNlciB0aGVhZC4KKyAgICB1c2luZyBEaWRQcm92aWRlQ29u
dGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sgPSBXVEY6
OkZ1bmN0aW9uPHZvaWQoUmVmPFVpbnQ4QXJyYXk+JiYsIHVpbnQ2NF90IHRyYWNrSUQpPjsKKyAg
ICB2b2lkIHNldERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZv
clRyYWNrSURDYWxsYmFjayhEaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlv
bkRhdGFGb3JUcmFja0lEQ2FsbGJhY2smJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIG1fZGlk
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgU291cmNl
QnVmZmVyUGFyc2VyKCkgPSBkZWZhdWx0OworCisgICAgRGlkUGFyc2VJbml0aWFsaXphdGlvbkRh
dGFDYWxsYmFjayBtX2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2s7CisgICAgRGlk
RW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2sgbV9kaWRFbmNvdW50ZXJFcnJvckR1
cmluZ1BhcnNpbmdDYWxsYmFjazsKKyAgICBEaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2sgbV9k
aWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2s7CisgICAgV2lsbFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayBtX3dpbGxQcm92aWRlQ29u
dGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2s7CisgICAg
RGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENh
bGxiYWNrIG1fZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9y
VHJhY2tJRENhbGxiYWNrOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NPVVJD
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWUwYjUxYzk2
Y2IzZTMxN2EwNWM2NGNhNzQ1Mjc0YTMwNDc1MmQyMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwCkBAIC0wLDAgKzEsNzk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaCIKKworI2lmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaCIKKyNpbmNsdWRlICJJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiTWVkaWFEZXNjcmlwdGlvbi5oIgor
I2luY2x1ZGUgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlZQOVV0aWxpdGllc0NvY29hLmgiCisjaW5jbHVkZSAiVmlk
ZW9UcmFja1ByaXZhdGVXZWJNLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGF0YVZpZXcu
aD4KKyNpbmNsdWRlIDx3ZWJtL3dlYm1fcGFyc2VyLmg+CisjaW5jbHVkZSA8d3RmL0FsZ29yaXRo
bXMuaD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvZGFyd2luL1dlYWtMaW5raW5nLmg+CisKK1dURl9XRUFLX0xJ
TktfRk9SQ0VfSU1QT1JUKHdlYm06OnN3YXApOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
YXRpYyBib29sIGlzV2VibVBhcnNlckF2YWlsYWJsZSgpCit7CisgICAgcmV0dXJuICEhd2VibTo6
c3dhcCAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYk1QYXJz
ZXJFbmFibGVkKCk7Cit9CisKK3VzaW5nIG5hbWVzcGFjZSB3ZWJtOworCitjbGFzcyBTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpTdHJlYW1pbmdWZWN0b3JSZWFkZXIgZmluYWwgOiBwdWJsaWMgd2Vi
bTo6UmVhZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB1
c2luZyBTZWdtZW50ID0gVmVjdG9yPHVuc2lnbmVkIGNoYXI+OworICAgIHZvaWQgYXBwZW5kU2Vn
bWVudChTZWdtZW50JiYgc2VnbWVudCkKKyAgICB7CisgICAgICAgIG1fZGF0YS5hcHBlbmQoV1RG
TW92ZShzZWdtZW50KSk7CisgICAgfQorCisgICAgU3RhdHVzIFJlYWQoc3RkOjpzaXplX3QgbnVt
VG9SZWFkLCB1aW50OF90KiBvdXRwdXRCdWZmZXIsIHVpbnQ2NF90KiBudW1BY3R1YWxseVJlYWQp
IGZpbmFsCisgICAgeworICAgICAgICBBU1NFUlQob3V0cHV0QnVmZmVyICYmIG51bUFjdHVhbGx5
UmVhZCk7CisgICAgICAgIGlmICghb3V0cHV0QnVmZmVyIHx8ICFudW1BY3R1YWxseVJlYWQpCisg
ICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisKKyAg
ICAgICAgKm51bUFjdHVhbGx5UmVhZCA9IDA7CisgICAgICAgIHdoaWxlICghbV9kYXRhLmlzRW1w
dHkoKSkgeworICAgICAgICAgICAgYXV0byYgY3VycmVudFNlZ21lbnQgPSBtX2RhdGEuZmlyc3Qo
KTsKKworICAgICAgICAgICAgaWYgKG1fcG9zaXRpb25XaXRoaW5TZWdtZW50ID49IGN1cnJlbnRT
ZWdtZW50LnNpemUoKSkgeworICAgICAgICAgICAgICAgIGFkdmFuY2VUb05leHRTZWdtZW50KCk7
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHNpemVfdCBudW1BdmFpbGFibGUgPSBjdXJyZW50U2VnbWVudC5zaXplKCkgLSBtX3Bvc2l0aW9u
V2l0aGluU2VnbWVudDsKKyAgICAgICAgICAgIGlmIChudW1Ub1JlYWQgPCBudW1BdmFpbGFibGUp
IHsKKyAgICAgICAgICAgICAgICBtZW1jcHkob3V0cHV0QnVmZmVyLCBjdXJyZW50U2VnbWVudC5k
YXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCwgbnVtVG9SZWFkKTsKKyAgICAgICAgICAg
ICAgICAqbnVtQWN0dWFsbHlSZWFkICs9IG51bVRvUmVhZDsKKyAgICAgICAgICAgICAgICBtX3Bv
c2l0aW9uICs9IG51bVRvUmVhZDsKKyAgICAgICAgICAgICAgICBtX3Bvc2l0aW9uV2l0aGluU2Vn
bWVudCArPSBudW1Ub1JlYWQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6
OmtPa0NvbXBsZXRlZCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1lbWNweShvdXRw
dXRCdWZmZXIsIGN1cnJlbnRTZWdtZW50LmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50
LCBudW1BdmFpbGFibGUpOworICAgICAgICAgICAgKm51bUFjdHVhbGx5UmVhZCArPSBudW1BdmFp
bGFibGU7CisgICAgICAgICAgICBtX3Bvc2l0aW9uICs9IG51bUF2YWlsYWJsZTsKKyAgICAgICAg
ICAgIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50ICs9IG51bUF2YWlsYWJsZTsKKyAgICAgICAgICAg
IG51bVRvUmVhZCAtPSBudW1BdmFpbGFibGU7CisgICAgICAgICAgICBhZHZhbmNlVG9OZXh0U2Vn
bWVudCgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFu
dW1Ub1JlYWQpCisgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVk
KTsKKyAgICAgICAgaWYgKCpudW1BY3R1YWxseVJlYWQpCisgICAgICAgICAgICByZXR1cm4gU3Rh
dHVzKFN0YXR1czo6a09rUGFydGlhbCk7CisgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjpr
V291bGRCbG9jayk7CisgICAgfQorCisgICAgU3RhdHVzIFNraXAodWludDY0X3QgbnVtVG9Ta2lw
LCB1aW50NjRfdCogbnVtQWN0dWFsbHlTa2lwcGVkKSBmaW5hbAorICAgIHsKKyAgICAgICAgQVNT
RVJUKG51bUFjdHVhbGx5U2tpcHBlZCk7CisgICAgICAgIGlmICghbnVtQWN0dWFsbHlTa2lwcGVk
KQorICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOwor
CisgICAgICAgICpudW1BY3R1YWxseVNraXBwZWQgPSAwOworICAgICAgICB3aGlsZSAoIW1fZGF0
YS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGF1dG8mIGN1cnJlbnRTZWdtZW50ID0gbV9kYXRh
LmZpcnN0KCk7CisKKyAgICAgICAgICAgIGlmIChtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCA+PSBj
dXJyZW50U2VnbWVudC5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICBhZHZhbmNlVG9OZXh0U2Vn
bWVudCgpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBzaXplX3QgbnVtQXZhaWxhYmxlID0gY3VycmVudFNlZ21lbnQuc2l6ZSgpIC0gbV9w
b3NpdGlvbldpdGhpblNlZ21lbnQ7CisKKyAgICAgICAgICAgIGlmIChudW1Ub1NraXAgPCBudW1B
dmFpbGFibGUpIHsKKyAgICAgICAgICAgICAgICAqbnVtQWN0dWFsbHlTa2lwcGVkICs9IG51bVRv
U2tpcDsKKyAgICAgICAgICAgICAgICBtX3Bvc2l0aW9uICs9IG51bVRvU2tpcDsKKyAgICAgICAg
ICAgICAgICBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCArPSBudW1Ub1NraXA7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICpudW1BY3R1YWxseVNraXBwZWQgKz0gbnVtQXZhaWxhYmxlOworICAg
ICAgICAgICAgbV9wb3NpdGlvbiArPSBudW1BdmFpbGFibGU7CisgICAgICAgICAgICBtX3Bvc2l0
aW9uV2l0aGluU2VnbWVudCArPSBudW1BdmFpbGFibGU7CisgICAgICAgICAgICBudW1Ub1NraXAg
LT0gbnVtQXZhaWxhYmxlOworICAgICAgICAgICAgYWR2YW5jZVRvTmV4dFNlZ21lbnQoKTsKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICghbnVtVG9Ta2lwKQor
ICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CisgICAgICAg
IGlmICgqbnVtQWN0dWFsbHlTa2lwcGVkKQorICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0
dXM6OmtPa1BhcnRpYWwpOworICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a1dvdWxkQmxv
Y2spOworICAgIH0KKworICAgIHVpbnQ2NF90IFBvc2l0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9wb3NpdGlvbjsgfQorCisgICAgdm9pZCByZXNldCgpCisgICAgeworICAgICAgICBtX3Bv
c2l0aW9uID0gMDsKKyAgICAgICAgbV9kYXRhLmNsZWFyKCk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIHZvaWQgYWR2YW5jZVRvTmV4dFNlZ21lbnQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFt
X2RhdGEuaXNFbXB0eSgpKTsKKyAgICAgICAgaWYgKG1fZGF0YS5pc0VtcHR5KCkpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgQVNTRVJUKG1fcG9zaXRpb25XaXRoaW5TZWdtZW50ID09
IG1fZGF0YS5maXJzdCgpLnNpemUoKSk7CisKKyAgICAgICAgbV9kYXRhLnJlbW92ZUZpcnN0KCk7
CisgICAgICAgIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50ID0gMDsKKyAgICB9CisKKyAgICBEZXF1
ZTxTZWdtZW50PiBtX2RhdGE7CisgICAgc2l6ZV90IG1fcG9zaXRpb24geyAwIH07CisgICAgc2l6
ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50IHsgMCB9OworfTsKKworY2xhc3MgTWVkaWFEZXNj
cmlwdGlvbldlYk0gZmluYWwgOiBwdWJsaWMgTWVkaWFEZXNjcmlwdGlvbiB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxNZWRpYURlc2NyaXB0
aW9uV2ViTT4gY3JlYXRlKHdlYm06OlRyYWNrRW50cnkmJiB0cmFjaykKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhRGVzY3JpcHRpb25XZWJNKFdURk1vdmUodHJhY2sp
KSk7CisgICAgfQorCisgICAgTWVkaWFEZXNjcmlwdGlvbldlYk0od2VibTo6VHJhY2tFbnRyeSYm
IHRyYWNrKQorICAgICAgICA6IG1fdHJhY2sgeyBXVEZNb3ZlKHRyYWNrKSB9CisgICAgeworICAg
IH0KKworICAgIEF0b21TdHJpbmcgY29kZWMoKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAg
aWYgKG1fY29kZWMpCisgICAgICAgICAgICByZXR1cm4gKm1fY29kZWM7CisKKyAgICAgICAgLy8g
RnJvbTogaHR0cHM6Ly93d3cubWF0cm9za2Eub3JnL3RlY2huaWNhbC9jb2RlY19zcGVjcy5odG1s
CisgICAgICAgIC8vICJFYWNoIENvZGVjIElEIE1VU1QgaW5jbHVkZSBhIE1ham9yIENvZGVjIElE
IGltbWVkaWF0ZWx5IGZvbGxvd2luZyB0aGUgQ29kZWMgSUQgUHJlZml4LgorICAgICAgICAvLyBB
IE1ham9yIENvZGVjIElEIE1BWSBiZSBmb2xsb3dlZCBieSBhbiBPUFRJT05BTCBDb2RlYyBJRCBT
dWZmaXggdG8gY29tbXVuaWNhdGUgYSByZWZpbmVtZW50CisgICAgICAgIC8vIG9mIHRoZSBNYWpv
ciBDb2RlYyBJRC4gSWYgYSBDb2RlYyBJRCBTdWZmaXggaXMgdXNlZCwgdGhlbiB0aGUgQ29kZWMg
SUQgTVVTVCBpbmNsdWRlIGEgZm9yd2FyZAorICAgICAgICAvLyBzbGFzaCAo4oCcL+KAnSkgYXMg
YSBzZXBhcmF0b3IgYmV0d2VlbiB0aGUgTWFqb3IgQ29kZWMgSUQgYW5kIHRoZSBDb2RlYyBJRCBT
dWZmaXguIFRoZSBNYWpvciBDb2RlYworICAgICAgICAvLyBJRCBNVVNUIGJlIGNvbXBvc2VkIG9m
IG9ubHkgY2FwaXRhbCBsZXR0ZXJzIChBLVopIGFuZCBudW1iZXJzICgwLTkpLiBUaGUgQ29kZWMg
SUQgU3VmZml4IE1VU1QKKyAgICAgICAgLy8gYmUgY29tcG9zZWQgb2Ygb25seSBjYXBpdGFsIGxl
dHRlcnMgKEEtWiksIG51bWJlcnMgKDAtOSksIHVuZGVyc2NvcmUgKOKAnF/igJ0pLCBhbmQgZm9y
d2FyZCBzbGFzaCAo4oCcL+KAnSkuIgorCisgICAgICAgIGlmICghbV90cmFjay5jb2RlY19pZC5p
c19wcmVzZW50KCkpIHsKKyAgICAgICAgICAgIG1fY29kZWMgPSBlbXB0eUF0b20oKTsKKyAgICAg
ICAgICAgIHJldHVybiAqbV9jb2RlYzsKKyAgICAgICAgfQorCisgICAgICAgIFN0cmluZ1ZpZXcg
Y29kZWNJRCB7IG1fdHJhY2suY29kZWNfaWQudmFsdWUoKS5kYXRhKCksICh1bnNpZ25lZCltX3Ry
YWNrLmNvZGVjX2lkLnZhbHVlKCkubGVuZ3RoKCkgfTsKKyAgICAgICAgaWYgKCFjb2RlY0lELnN0
YXJ0c1dpdGgoIlZfIikgJiYgIWNvZGVjSUQuc3RhcnRzV2l0aCgiQV8iKSAmJiAhY29kZWNJRC5z
dGFydHNXaXRoKCJTXyIpKSB7CisgICAgICAgICAgICBtX2NvZGVjID0gZW1wdHlBdG9tKCk7Cisg
ICAgICAgICAgICByZXR1cm4gKm1fY29kZWM7CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHNs
YXNoTG9jYXRpb24gPSBjb2RlY0lELmZpbmQoJy8nKTsKKyAgICAgICAgYXV0byBsZW5ndGggPSBz
bGFzaExvY2F0aW9uID09IG5vdEZvdW5kID8gY29kZWNJRC5sZW5ndGgoKSAtIDIgOiBzbGFzaExv
Y2F0aW9uIC0gMjsKKyAgICAgICAgbV9jb2RlYyA9IEF0b21TdHJpbmcgeyBjb2RlY0lELnN1YnN0
cmluZygyLCBsZW5ndGgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgfTsKKyAgICAgICAgcmV0
dXJuICptX2NvZGVjOworICAgIH0KKyAgICBib29sIGlzVmlkZW8oKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3RyYWNrLnRyYWNrX3R5cGUuaXNfcHJlc2VudCgpICYmIG1fdHJhY2sudHJhY2tfdHlw
ZS52YWx1ZSgpID09IFRyYWNrVHlwZTo6a1ZpZGVvOyB9CisgICAgYm9vbCBpc0F1ZGlvKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV90cmFjay50cmFja190eXBlLmlzX3ByZXNlbnQoKSAmJiBtX3Ry
YWNrLnRyYWNrX3R5cGUudmFsdWUoKSA9PSBUcmFja1R5cGU6OmtBdWRpbzsgfQorICAgIGJvb2wg
aXNUZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90cmFjay50cmFja190eXBlLmlzX3ByZXNl
bnQoKSAmJiBtX3RyYWNrLnRyYWNrX3R5cGUudmFsdWUoKSA9PSBUcmFja1R5cGU6OmtTdWJ0aXRs
ZTsgfQorCisgICAgY29uc3Qgd2VibTo6VHJhY2tFbnRyeSYgdHJhY2soKSB7IHJldHVybiBtX3Ry
YWNrOyB9CisKK3ByaXZhdGU6CisgICAgbXV0YWJsZSBPcHRpb25hbDxBdG9tU3RyaW5nPiBtX2Nv
ZGVjOworICAgIHdlYm06OlRyYWNrRW50cnkgbV90cmFjazsKK307CisKK01lZGlhUGxheWVyRW51
bXM6OlN1cHBvcnRzVHlwZSBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppc0NvbnRlbnRUeXBlU3Vw
cG9ydGVkKGNvbnN0IENvbnRlbnRUeXBlJiB0eXBlKQoreworICAgIGlmICghaXNXZWJtUGFyc2Vy
QXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5
cGU6OklzTm90U3VwcG9ydGVkOworCisgICAgaWYgKCFXVEY6OmVxdWFsSWdub3JpbmdBU0NJSUNh
c2UodHlwZS5jb250YWluZXJUeXBlKCksICJhdWRpby93ZWJtIikKKyAgICAgICAgJiYgIVdURjo6
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLmNvbnRhaW5lclR5cGUoKSwgInZpZGVvL3dlYm0i
KSkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RT
dXBwb3J0ZWQ7CisKKyAgICBTdHJpbmcgY29kZWNzUGFyYW1ldGVyID0gdHlwZS5wYXJhbWV0ZXIo
Q29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsKKyAgICBpZiAoIWNvZGVjc1BhcmFtZXRl
cikKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6TWF5QmVT
dXBwb3J0ZWQ7CisKKyAgICBhdXRvIHNwbGl0UmVzdWx0cyA9IFN0cmluZ1ZpZXcoY29kZWNzUGFy
YW1ldGVyKS5zcGxpdCgnLCcpOworICAgIGZvciAoYXV0byBzcGxpdCA6IHNwbGl0UmVzdWx0cykg
eworICAgICAgICBpZiAoc3BsaXQuc3RhcnRzV2l0aCgidnAwOSIpKSB7CisgICAgICAgICAgICBp
ZiAoIWlzVlA5RGVjb2RlckF2YWlsYWJsZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBNZWRp
YVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOworICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IEFkZCBPcHVzIFN1cHBvcnQK
KyAgICAgICAgLy8gRklYTUU6IEFkZCBWb3JiaXMgU3VwcG9ydAorICAgICAgICByZXR1cm4gTWVk
aWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKKyAgICB9CisgICAg
cmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQ7Cit9CisK
K1NvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKQorICAgIDog
bV9yZWFkZXIoV1RGOjptYWtlVW5pcXVlUmVmPFN0cmVhbWluZ1ZlY3RvclJlYWRlcj4oKSkKK3sK
KyAgICBpZiAoaXNXZWJtUGFyc2VyQXZhaWxhYmxlKCkpCisgICAgICAgIG1fcGFyc2VyID0gV1RG
OjptYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxXZWJtUGFyc2VyPigpOworfQorCitT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjp+U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpID0gZGVmYXVs
dDsKKwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjphcHBlbmREYXRhKFZlY3Rvcjx1bnNp
Z25lZCBjaGFyPiYmIGJ1ZmZlciwgQXBwZW5kRmxhZ3MgYXBwZW5kRmxhZ3MpCit7CisgICAgaWYg
KCFtX3BhcnNlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGFwcGVuZEZsYWdzID09IEFw
cGVuZEZsYWdzOjpEaXNjb250aW51aXR5KSB7CisgICAgICAgIG1fcmVhZGVyLT5yZXNldCgpOwor
ICAgICAgICBtX3BhcnNlci0+RGlkU2VlaygpOworICAgIH0KKyAgICBtX3JlYWRlci0+YXBwZW5k
U2VnbWVudChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fc3RhdHVzID0gbV9wYXJzZXItPkZlZWQo
dGhpcywgJm1fcmVhZGVyKTsKKyAgICBpZiAobV9zdGF0dXMub2soKSB8fCBtX3N0YXR1cy5jb2Rl
ID09IFN0YXR1czo6a0VuZE9mRmlsZSB8fCBtX3N0YXR1cy5jb2RlID09IFN0YXR1czo6a1dvdWxk
QmxvY2spCisgICAgICAgIHJldHVybjsKKworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29kZSA9IG1fc3RhdHVzLmNvZGVdIHsKKyAg
ICAgICAgaWYgKG1fZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2spCisgICAg
ICAgICAgICBtX2RpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKGNvZGUpOwor
ICAgIH0pOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmZsdXNoUGVuZGluZ01l
ZGlhRGF0YSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjpzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChib29sLCB1
aW50NjRfdCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIFNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OnNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lEKHVpbnQ2NF90KQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06OnJlc2V0UGFyc2VyU3RhdGUoKQoreworICAgIG1fcGFyc2Vy
LT5EaWRTZWVrKCk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpOb25lOworfQorCithdXRvIFNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06OnRyYWNrRGF0YUZvclRyYWNrTnVtYmVyKHVpbnQ2NF90IHRyYWNr
TnVtYmVyKSAtPiBUcmFja0RhdGEqCit7CisgICAgZm9yIChhdXRvJiB0cmFjayA6IG1fdHJhY2tz
KSB7CisgICAgICAgIGlmICh0cmFjay50cmFjay50cmFja19udW1iZXIuaXNfcHJlc2VudCgpICYm
IHRyYWNrLnRyYWNrLnRyYWNrX251bWJlci52YWx1ZSgpID09IHRyYWNrTnVtYmVyKQorICAgICAg
ICAgICAgcmV0dXJuICZ0cmFjazsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKKwor
U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRWxlbWVudEJlZ2luKGNvbnN0IEVsZW1l
bnRNZXRhZGF0YSYgbWV0YWRhdGEsIEFjdGlvbiogYWN0aW9uKQoreworICAgIFVOVVNFRF9QQVJB
TShtZXRhZGF0YSk7CisgICAgQVNTRVJUKGFjdGlvbik7CisgICAgaWYgKCFhY3Rpb24pCisgICAg
ICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKworICAgIGlmICgo
bV9zdGF0ZSA9PSBTdGF0ZTo6Tm9uZSAmJiBtZXRhZGF0YS5pZCAhPSBJZDo6a0VibWwpCisgICAg
ICAgIHx8IChtX3N0YXRlID09IFN0YXRlOjpSZWFkRWJtbCAmJiBtZXRhZGF0YS5pZCAhPSBJZDo6
a1NlZ21lbnQpCisgICAgICAgIHx8IChtX3N0YXRlID09IFN0YXRlOjpSZWFkaW5nU2VnbWVudCAm
JiBtZXRhZGF0YS5pZCAhPSBJZDo6a0luZm8pCisgICAgICAgIHx8IChtX3N0YXRlID09IFN0YXRl
OjpSZWFkSW5mbyAmJiBtZXRhZGF0YS5pZCAhPSBJZDo6a1RyYWNrcykKKyAgICAgICAgfHwgKG1f
c3RhdGUgPT0gU3RhdGU6OlJlYWRUcmFjayAmJiBtZXRhZGF0YS5pZCAhPSBJZDo6a1RyYWNrRW50
cnkgJiYgbWV0YWRhdGEuaWQgIT0gSWQ6OmtDbHVzdGVyKQorICAgICAgICB8fCAobWV0YWRhdGEu
aWQgPT0gSWQ6OmtDdWVzIHx8IG1ldGFkYXRhLmlkID09IElkOjprQ2hhcHRlcnMpKSB7CisgICAg
ICAgICphY3Rpb24gPSBBY3Rpb246OmtTa2lwOworICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1
czo6a09rQ29tcGxldGVkKTsKKyAgICB9CisKKyAgICBpZiAobWV0YWRhdGEuaWQgPT0gSWQ6OmtF
Ym1sKQorICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWRpbmdFYm1sOworICAgIGVsc2UgaWYg
KG1ldGFkYXRhLmlkID09IElkOjprU2VnbWVudCkKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpS
ZWFkaW5nU2VnbWVudDsKKyAgICBlbHNlIGlmIChtZXRhZGF0YS5pZCA9PSBJZDo6a0luZm8pCisg
ICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZGluZ0luZm87CisgICAgZWxzZSBpZiAobWV0YWRh
dGEuaWQgPT0gSWQ6OmtUcmFja3MpCisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZGluZ1Ry
YWNrczsKKyAgICBlbHNlIGlmIChtZXRhZGF0YS5pZCA9PSBJZDo6a1RyYWNrRW50cnkpCisgICAg
ICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZGluZ1RyYWNrOworICAgIGVsc2UgaWYgKG1ldGFkYXRh
LmlkID09IElkOjprQ2x1c3RlcikKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkaW5nQ2x1
c3RlcjsKKworICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworfQorCitT
dGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FYm1sKGNvbnN0IEVsZW1lbnRNZXRhZGF0
YSYgbWV0YWRhdGEsIGNvbnN0IEVibWwmIGVibWwpCit7CisgICAgVU5VU0VEX1BBUkFNKG1ldGFk
YXRhKTsKKyAgICBpZiAoZWJtbC5kb2NfdHlwZS5pc19wcmVzZW50KCkgJiYgZWJtbC5kb2NfdHlw
ZS52YWx1ZSgpLmNvbXBhcmUoIndlYm0iKSkKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6
OkNvZGUoRXJyb3JDb2RlOjpJbnZhbGlkRG9jVHlwZSkpOworCisgICAgbV9pbml0aWFsaXphdGlv
blNlZ21lbnRFbmNvdW50ZXJlZCA9IHRydWU7CisgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnQg
PSBXVEY6Om1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEluaXRpYWxpemF0aW9uU2Vn
bWVudD4oKTsKKyAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWRFYm1sOworCisgICAgcmV0dXJuIFN0
YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7Cit9CisKK1N0YXR1cyBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpPblNlZ21lbnRCZWdpbihjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBB
Y3Rpb24qIGFjdGlvbikKK3sKKyAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOworICAgIGlmICgh
bV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCkKKyAgICAgICAgcmV0dXJuIFN0YXR1
cyhTdGF0dXM6OkNvZGUoRXJyb3JDb2RlOjpJbnZhbGlkSW5pdFNlZ21lbnQpKTsKKworICAgIEFT
U0VSVChhY3Rpb24pOworICAgIGlmICghYWN0aW9uKQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0
YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisgICAgKmFjdGlvbiA9IEFjdGlvbjo6a1JlYWQ7CisK
KyAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKK30KKworU3RhdHVzIFNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uSW5mbyhjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFk
YXRhLCBjb25zdCBJbmZvJiBpbmZvKQoreworICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7Cisg
ICAgaWYgKCFtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkIHx8ICFtX2luaXRpYWxp
emF0aW9uU2VnbWVudCkKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OkNvZGUoRXJyb3JD
b2RlOjpJbnZhbGlkSW5pdFNlZ21lbnQpKTsKKworICAgIGF1dG8gdGltZWNvZGVTY2FsZSA9IGlu
Zm8udGltZWNvZGVfc2NhbGUuaXNfcHJlc2VudCgpID8gaW5mby50aW1lY29kZV9zY2FsZS52YWx1
ZSgpIDogMTAwMDAwMDsKKyAgICBtX3RpbWVzY2FsZSA9IDEwMDAwMDAwMDAgLyB0aW1lY29kZVNj
YWxlOworICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50LT5kdXJhdGlvbiA9IGluZm8uZHVyYXRp
b24uaXNfcHJlc2VudCgpID8gTWVkaWFUaW1lKGluZm8uZHVyYXRpb24udmFsdWUoKSwgbV90aW1l
c2NhbGUpIDogTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpOworICAgIG1fc3RhdGUgPSBTdGF0
ZTo6UmVhZEluZm87CisKKyAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsK
K30KKworU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQ2x1c3RlckJlZ2luKGNvbnN0
IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0IENsdXN0ZXImIGNsdXN0ZXIsIEFjdGlv
biogYWN0aW9uKQoreworICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CisgICAgVU5VU0VEX1BB
UkFNKGNsdXN0ZXIpOworICAgIEFTU0VSVChhY3Rpb24pOworICAgIGlmICghYWN0aW9uKQorICAg
ICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisKKyAgICBpZiAo
bV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCAmJiBtX2RpZFBhcnNlSW5pdGlhbGl6
YXRpb25EYXRhQ2FsbGJhY2spIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpbml0aWFsaXphdGlvblNlZ21lbnQgPSBXVEZN
b3ZlKCptX2luaXRpYWxpemF0aW9uU2VnbWVudCldICgpIG11dGFibGUgeworICAgICAgICAgICAg
bV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFdURk1vdmUoaW5pdGlhbGl6YXRp
b25TZWdtZW50KSk7CisgICAgICAgIH0pOworICAgIH0KKyAgICBtX2luaXRpYWxpemF0aW9uU2Vn
bWVudEVuY291bnRlcmVkID0gZmFsc2U7CisgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnQgPSBu
dWxscHRyOworCisgICAgaWYgKGNsdXN0ZXIudGltZWNvZGUuaXNfcHJlc2VudCgpKQorICAgICAg
ICBtX2N1cnJlbnRUaW1lY29kZSA9IGNsdXN0ZXIudGltZWNvZGUudmFsdWUoKTsKKworICAgICph
Y3Rpb24gPSBBY3Rpb246OmtSZWFkOworCisgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0Nv
bXBsZXRlZCk7Cit9CisKK1N0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblRyYWNrRW50
cnkoY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uc3QgVHJhY2tFbnRyeSYgdHJh
Y2tFbnRyeSkKK3sKKyAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOworICAgIG1fc3RhdGUgPSBT
dGF0ZTo6UmVhZFRyYWNrOworICAgIGlmICghdHJhY2tFbnRyeS50cmFja190eXBlLmlzX3ByZXNl
bnQoKSkKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CisKKyAg
ICBhdXRvIHRyYWNrVHlwZSA9IHRyYWNrRW50cnkudHJhY2tfdHlwZS52YWx1ZSgpOworICAgIGlm
ICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprVmlkZW8pCisgICAgICAgIG1faW5pdGlhbGl6YXRp
b25TZWdtZW50LT52aWRlb1RyYWNrcy5hcHBlbmQoeyBNZWRpYURlc2NyaXB0aW9uV2ViTTo6Y3Jl
YXRlKFRyYWNrRW50cnkodHJhY2tFbnRyeSkpLCBWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0
ZShUcmFja0VudHJ5KHRyYWNrRW50cnkpKSB9KTsKKyAgICBlbHNlIGlmICh0cmFja1R5cGUgPT0g
VHJhY2tUeXBlOjprQXVkaW8pCisgICAgICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50LT5hdWRp
b1RyYWNrcy5hcHBlbmQoeyBNZWRpYURlc2NyaXB0aW9uV2ViTTo6Y3JlYXRlKFRyYWNrRW50cnko
dHJhY2tFbnRyeSkpLCBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZShUcmFja0VudHJ5KHRy
YWNrRW50cnkpKSB9KTsKKyAgICBtX3RyYWNrcy5hcHBlbmQoeyBUcmFja0VudHJ5KHRyYWNrRW50
cnkpLCB7IH0sIG51bGxwdHIsIG51bGxwdHIsIDAgfSk7CisKKyAgICByZXR1cm4gU3RhdHVzKFN0
YXR1czo6a09rQ29tcGxldGVkKTsKK30KKword2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNl
cldlYk06Ok9uQmxvY2tCZWdpbihjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25z
dCBCbG9jayYgYmxvY2ssIEFjdGlvbiogYWN0aW9uKQoreworICAgIFVOVVNFRF9QQVJBTShtZXRh
ZGF0YSk7CisgICAgQVNTRVJUKGFjdGlvbik7CisgICAgaWYgKCFhY3Rpb24pCisgICAgICAgIHJl
dHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKworICAgICphY3Rpb24gPSBB
Y3Rpb246OmtSZWFkOworCisgICAgbV9jdXJyZW50QmxvY2sgPSBtYWtlT3B0aW9uYWw8QmxvY2tW
YXJpYW50PihCbG9jayhibG9jaykpOworCisgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0Nv
bXBsZXRlZCk7Cit9CisKK3dlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJs
b2NrRW5kKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0IEJsb2NrJiBibG9j
aykKK3sKKyAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOworICAgIFVOVVNFRF9QQVJBTShibG9j
ayk7CisKKyAgICBtX2N1cnJlbnRCbG9jayA9IFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBT
dGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworfQorCit3ZWJtOjpTdGF0dXMgU291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6T25TaW1wbGVCbG9ja0JlZ2luKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYg
bWV0YWRhdGEsIGNvbnN0IFNpbXBsZUJsb2NrJiBibG9jaywgQWN0aW9uKiBhY3Rpb24pCit7Cisg
ICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKKyAgICBBU1NFUlQoYWN0aW9uKTsKKyAgICBpZiAo
IWFjdGlvbikKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkp
OworCisgICAgKmFjdGlvbiA9IEFjdGlvbjo6a1JlYWQ7CisKKyAgICBtX2N1cnJlbnRCbG9jayA9
IG1ha2VPcHRpb25hbDxCbG9ja1ZhcmlhbnQ+KFNpbXBsZUJsb2NrKGJsb2NrKSk7CisKKyAgICBy
ZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKK30KKword2VibTo6U3RhdHVzIFNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uU2ltcGxlQmxvY2tFbmQoY29uc3QgRWxlbWVudE1ldGFk
YXRhJiBtZXRhZGF0YSwgY29uc3QgU2ltcGxlQmxvY2smIGJsb2NrKQoreworICAgIFVOVVNFRF9Q
QVJBTShtZXRhZGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKGJsb2NrKTsKKworICAgIG1fY3VycmVu
dEJsb2NrID0gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0Nv
bXBsZXRlZCk7Cit9CisKK3dlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJs
b2NrR3JvdXBCZWdpbihjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCB3ZWJt
OjpBY3Rpb24qIGFjdGlvbikKK3sKKyAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOworICAgIEFT
U0VSVChhY3Rpb24pOworICAgIGlmICghYWN0aW9uKQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0
YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisKKyAgICAqYWN0aW9uID0gQWN0aW9uOjprUmVhZDsK
KyAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKK30KKword2VibTo6U3Rh
dHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQmxvY2tHcm91cEVuZChjb25zdCB3ZWJtOjpF
bGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCB3ZWJtOjpCbG9ja0dyb3VwJiBibG9ja0dy
b3VwKQoreworICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKGJs
b2NrR3JvdXApOworICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworfQor
CitzdGF0aWMgdWludDhfdCBjb252ZXJ0VG9Db2xvclByaW1hcmllcyhjb25zdCBQcmltYXJpZXMm
IGNvZWZmaWNpZW50cykKK3sKKyAgICBzd2l0Y2ggKGNvZWZmaWNpZW50cykgeworICAgIGNhc2Ug
UHJpbWFyaWVzOjprQnQ3MDk6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25Db2xvclBy
aW1hcmllczo6QlRfNzA5XzY7CisgICAgY2FzZSBQcmltYXJpZXM6OmtVbnNwZWNpZmllZDoKKyAg
ICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpVbnNwZWNpZmllZDsK
KyAgICBjYXNlIFByaW1hcmllczo6a0J0NDcwTToKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJh
dGlvbkNvbG9yUHJpbWFyaWVzOjpCVF80NzBfNl9NOworICAgIGNhc2UgUHJpbWFyaWVzOjprQnQ0
NzBCZzoKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpCVF80
NzBfN19CRzsKKyAgICBjYXNlIFByaW1hcmllczo6a1NtcHRlMTcwTToKKyAgICAgICAgcmV0dXJu
IFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpCVF82MDFfNzsKKyAgICBjYXNlIFByaW1h
cmllczo6a1NtcHRlMjQwTToKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJp
bWFyaWVzOjpTTVBURV9TVF8yNDA7CisgICAgY2FzZSBQcmltYXJpZXM6OmtGaWxtOgorICAgICAg
ICByZXR1cm4gVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OkZpbG07CisgICAgY2FzZSBQ
cmltYXJpZXM6OmtCdDIwMjA6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25Db2xvclBy
aW1hcmllczo6QlRfMjAyMF9Ob25jb25zdGFudF9MdW1pbmFuY2U7CisgICAgY2FzZSBQcmltYXJp
ZXM6OmtTbXB0ZVN0NDI4MToKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJp
bWFyaWVzOjpTTVBURV9TVF80MjhfMTsKKyAgICBjYXNlIFByaW1hcmllczo6a1NtcHRlUnA0MzE6
CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6U01QVEVfUlBf
NDMxXzI7CisgICAgY2FzZSBQcmltYXJpZXM6OmtTbXB0ZUVnNDMyOgorICAgICAgICByZXR1cm4g
VlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OlNNUFRFX0VHXzQzMl8xOworICAgIGNhc2Ug
UHJpbWFyaWVzOjprSmVkZWNQMjJQaG9zcGhvcnM6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3Vy
YXRpb25Db2xvclByaW1hcmllczo6RUJVX1RlY2hfMzIxM19FOworICAgIH0KK30KKworc3RhdGlj
IHVpbnQ4X3QgY29udmVydFRvVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MoY29uc3QgVHJhbnNmZXJD
aGFyYWN0ZXJpc3RpY3MmIGNoYXJhY3RlcmlzdGljcykKK3sKKyAgICBzd2l0Y2ggKGNoYXJhY3Rl
cmlzdGljcykgeworICAgIGNhc2UgVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OmtCdDcwOToKKyAg
ICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpCVF83
MDlfNjsKKyAgICBjYXNlIFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjprVW5zcGVjaWZpZWQ6Cisg
ICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6VW5z
cGVjaWZpZWQ7CisgICAgY2FzZSBUcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6a0dhbW1hMjJjdXJ2
ZToKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNz
OjpCVF80NzBfNl9NOworICAgIGNhc2UgVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OmtHYW1tYTI4
Y3VydmU6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3Rlcmlz
dGljczo6QlRfNDcwXzdfQkc7CisgICAgY2FzZSBUcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6a1Nt
cHRlMTcwTToKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVy
aXN0aWNzOjpCVF82MDFfNzsKKyAgICBjYXNlIFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjprU21w
dGUyNDBNOgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJp
c3RpY3M6OlNNUFRFX1NUXzI0MDsKKyAgICBjYXNlIFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpr
TGluZWFyOgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJp
c3RpY3M6OkxpbmVhcjsKKyAgICBjYXNlIFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjprTG9nOgor
ICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6Okxv
Z3JpdGhtaWM7CisgICAgY2FzZSBUcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6a0xvZ1NxcnQ6Cisg
ICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6TG9n
cml0aG1pY19TcXJ0OworICAgIGNhc2UgVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OmtJZWM2MTk2
NjI0OgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3Rp
Y3M6OklFQ182MTk2Nl8yXzQ7CisgICAgY2FzZSBUcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6a0J0
MTM2MUV4dGVuZGVkQ29sb3VyR2FtdXQ6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25U
cmFuc2ZlckNoYXJhY3RlcmlzdGljczo6QlRfMTM2MV8wOworICAgIGNhc2UgVHJhbnNmZXJDaGFy
YWN0ZXJpc3RpY3M6OmtJZWM2MTk2NjIxOgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9u
VHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OklFQ182MTk2Nl8yXzE7CisgICAgY2FzZSBUcmFuc2Zl
ckNoYXJhY3RlcmlzdGljczo6azEwQml0QnQyMDIwOgorICAgICAgICByZXR1cm4gVlBDb25maWd1
cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzIwMjBfMTBiaXQ7CisgICAgY2FzZSBU
cmFuc2ZlckNoYXJhY3RlcmlzdGljczo6azEyQml0QnQyMDIwOgorICAgICAgICByZXR1cm4gVlBD
b25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzIwMjBfMTJiaXQ7CisgICAg
Y2FzZSBUcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6a1NtcHRlU3QyMDg0OgorICAgICAgICByZXR1
cm4gVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OlNNUFRFX1NUXzIwODQ7
CisgICAgY2FzZSBUcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6a1NtcHRlU3Q0MjgxOgorICAgICAg
ICByZXR1cm4gVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OlNNUFRFX1NU
XzQyOF8xOworICAgIGNhc2UgVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OmtBcmliU3RkQjY3SGxn
OgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6
OkJUXzIxMDBfSExHOworICAgIH0KK30KKworc3RhdGljIHVpbnQ4X3QgY29udmVydFRvTWF0cml4
Q29lZmZpY2llbnRzKGNvbnN0IE1hdHJpeENvZWZmaWNpZW50cyYgY29lZmZpY2llbnRzKQorewor
ICAgIHN3aXRjaCAoY29lZmZpY2llbnRzKSB7CisgICAgY2FzZSBNYXRyaXhDb2VmZmljaWVudHM6
OmtSZ2I6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6
OklkZW50aXR5OworICAgIGNhc2UgTWF0cml4Q29lZmZpY2llbnRzOjprQnQ3MDk6CisgICAgICAg
IHJldHVybiBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OkJUXzcwOV82OworICAg
IGNhc2UgTWF0cml4Q29lZmZpY2llbnRzOjprVW5zcGVjaWZpZWQ6CisgICAgICAgIHJldHVybiBW
UENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OlVuc3BlY2lmaWVkOworICAgIGNhc2Ug
TWF0cml4Q29lZmZpY2llbnRzOjprRmNjOgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9u
TWF0cml4Q29lZmZpY2llbnRzOjpGQ0M7CisgICAgY2FzZSBNYXRyaXhDb2VmZmljaWVudHM6OmtC
dDQ3MEJnOgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRz
OjpCVF80NzBfN19CRzsKKyAgICBjYXNlIE1hdHJpeENvZWZmaWNpZW50czo6a1NtcHRlMTcwTToK
KyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6QlRfNjAx
Xzc7CisgICAgY2FzZSBNYXRyaXhDb2VmZmljaWVudHM6OmtTbXB0ZTI0ME06CisgICAgICAgIHJl
dHVybiBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OlNNUFRFX1NUXzI0MDsKKyAg
ICBjYXNlIE1hdHJpeENvZWZmaWNpZW50czo6a1lDZ0NvOgorICAgICAgICByZXR1cm4gVlBDb25m
aWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpZQ2dDbzsKKyAgICBjYXNlIE1hdHJpeENvZWZm
aWNpZW50czo6a0J0MjAyME5vbmNvbnN0YW50THVtaW5hbmNlOgorICAgICAgICByZXR1cm4gVlBD
b25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpCVF8yMDIwX05vbmNvbnN0YW50X0x1bWlu
YW5jZTsKKyAgICBjYXNlIE1hdHJpeENvZWZmaWNpZW50czo6a0J0MjAyMENvbnN0YW50THVtaW5h
bmNlOgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpC
VF8yMDIwX0NvbnN0YW50X0x1bWluYW5jZTsKKyAgICB9Cit9CisKK3N0YXRpYyB1aW50OF90IGNv
bnZlcnRTdWJzYW1wbGluZ1hZVG9DaHJvbWFTdWJzYW1wbGluZyh1aW50NjRfdCB4LCB1aW50NjRf
dCB5KQoreworICAgIGlmICh4ICYgeSkKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvbkNo
cm9tYVN1YnNhbXBsaW5nOjpTdWJzYW1wbGluZ180MjBfQ29sb2NhdGVkOworICAgIGlmICh4ICYg
IXkpCisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25DaHJvbWFTdWJzYW1wbGluZzo6U3Vi
c2FtcGxpbmdfNDIyOworICAgIGlmICgheCAmICF5KQorICAgICAgICByZXR1cm4gVlBDb25maWd1
cmF0aW9uQ2hyb21hU3Vic2FtcGxpbmc6OlN1YnNhbXBsaW5nXzQ0NDsKKyAgICAvLyBUaGlzIGlu
ZGljYXRlcyA0OjQ6MCBzdWJzYW1wbGluZywgd2hpY2ggaXMgbm90IGV4cHJlc3NhYmxlIGluIHRo
ZSAndnBjQycgYm94LiBEZWZhdWx0IHRvIDQ6MjowLgorICAgIHJldHVybiBWUENvbmZpZ3VyYXRp
b25DaHJvbWFTdWJzYW1wbGluZzo6U3Vic2FtcGxpbmdfNDIwX0NvbG9jYXRlZDsKK30KKworc3Rh
dGljIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVGb3JtYXREZXNjcmlw
dGlvbkZyb21WUDlIZWFkZXJQYXJzZXIoY29uc3QgdnA5X3BhcnNlcjo6VnA5SGVhZGVyUGFyc2Vy
JiBwYXJzZXIsIGNvbnN0IHdlYm06OkVsZW1lbnQ8Q29sb3VyPiYgY29sb3IpCit7CisgICAgLy8g
UmVmOiAiVlAgQ29kZWMgSVNPIE1lZGlhIEZpbGUgRm9ybWF0IEJpbmRpbmcsIHYxLjAsIDIwMTct
MDMtMzEiCisgICAgLy8gPGh0dHBzOi8vd3d3LndlYm1wcm9qZWN0Lm9yZy92cDkvbXA0Lz4KKyAg
ICAvLworICAgIC8vIGNsYXNzIFZQQ29kZWNDb25maWd1cmF0aW9uQm94IGV4dGVuZHMgRnVsbEJv
eCgndnBjQycsIHZlcnNpb24gPSAxLCAwKQorICAgIC8vIHsKKyAgICAvLyAgICAgVlBDb2RlY0Nv
bmZpZ3VyYXRpb25SZWNvcmQoKSB2cGNDb25maWc7CisgICAgLy8gfQorICAgIC8vCisgICAgLy8g
YWxpZ25lZCAoOCkgY2xhc3MgVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQgeworICAgIC8vICAg
ICB1bnNpZ25lZCBpbnQgKDgpICAgICBwcm9maWxlOworICAgIC8vICAgICB1bnNpZ25lZCBpbnQg
KDgpICAgICBsZXZlbDsKKyAgICAvLyAgICAgdW5zaWduZWQgaW50ICg0KSAgICAgYml0RGVwdGg7
CisgICAgLy8gICAgIHVuc2lnbmVkIGludCAoMykgICAgIGNocm9tYVN1YnNhbXBsaW5nOworICAg
IC8vICAgICB1bnNpZ25lZCBpbnQgKDEpICAgICB2aWRlb0Z1bGxSYW5nZUZsYWc7CisgICAgLy8g
ICAgIHVuc2lnbmVkIGludCAoOCkgICAgIGNvbG91clByaW1hcmllczsKKyAgICAvLyAgICAgdW5z
aWduZWQgaW50ICg4KSAgICAgdHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M7CisgICAgLy8gICAgIHVu
c2lnbmVkIGludCAoOCkgICAgIG1hdHJpeENvZWZmaWNpZW50czsKKyAgICAvLyAgICAgdW5zaWdu
ZWQgaW50ICgxNikgICAgY29kZWNJbnRpYWxpemF0aW9uRGF0YVNpemU7CisgICAgLy8gICAgIHVu
c2lnbmVkIGludCAoOClbXSAgIGNvZGVjSW50aWFsaXphdGlvbkRhdGE7CisgICAgLy8gfQorICAg
IC8vCisgICAgLy8gY29kZWNJbnRpYWxpemF0aW9uRGF0YVNpemXigItGb3IgVlA4IGFuZCBWUDkg
dGhpcyBmaWVsZCBtdXN0IGJlIDAuCisgICAgLy8gY29kZWNJbnRpYWxpemF0aW9uRGF0YeKAi2Jp
bmFyeSBjb2RlYyBpbml0aWFsaXphdGlvbiBkYXRhLiBOb3QgdXNlZCBmb3IgVlA4IGFuZCBWUDku
CisgICAgLy8KKyAgICAvLyBGSVhNRTogQ29udmVydCBleGlzdGluZyBzdHJ1Y3QgdG8gYW4gSVNP
Qm94IGFuZCByZXBsYWNlIHRoZSB3cml0aW5nIGNvZGUgYmVsb3cKKyAgICAvLyB3aXRoIGEgc3Vi
Y2xhc3Mgb2YgSVNPRnVsbEJveC4KKworICAgIFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkIHJl
Y29yZDsKKworICAgIHJlY29yZC5wcm9maWxlID0gcGFyc2VyLnByb2ZpbGUoKTsKKyAgICAvLyBD
b3JlTWVkaWEgZG9lcyBuYXQgY2FyZSBhYm91dCB0aGUgVlA5IGNvZGVjIGxldmVsOyBoYXJkLWNv
ZGUgdG8gTGV2ZWwgMS4wIGhlcmU6CisgICAgcmVjb3JkLmxldmVsID0gMTA7CisgICAgcmVjb3Jk
LmJpdERlcHRoID0gcGFyc2VyLmJpdF9kZXB0aCgpOworICAgIHJlY29yZC52aWRlb0Z1bGxSYW5n
ZUZsYWcgPSBwYXJzZXIuY29sb3JfcmFuZ2UoKSA/IFZQQ29uZmlndXJhdGlvblJhbmdlOjpGdWxs
UmFuZ2UgOiBWUENvbmZpZ3VyYXRpb25SYW5nZTo6VmlkZW9SYW5nZTsKKyAgICByZWNvcmQuY2hy
b21hU3Vic2FtcGxpbmcgPSBjb252ZXJ0U3Vic2FtcGxpbmdYWVRvQ2hyb21hU3Vic2FtcGxpbmco
cGFyc2VyLnN1YnNhbXBsaW5nX3goKSwgcGFyc2VyLnN1YnNhbXBsaW5nX3koKSk7CisgICAgcmVj
b3JkLmNvbG9yUHJpbWFyaWVzID0gVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OlVuc3Bl
Y2lmaWVkOworICAgIHJlY29yZC50cmFuc2ZlckNoYXJhY3RlcmlzdGljcyA9IFZQQ29uZmlndXJh
dGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpVbnNwZWNpZmllZDsKKyAgICByZWNvcmQubWF0
cml4Q29lZmZpY2llbnRzID0gVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpVbnNw
ZWNpZmllZDsKKworICAgIC8vIENvbnRhaW5lciBjb2xvciB2YWx1ZXMgY2FuIG92ZXJyaWRlIHBl
ci1zYW1wbGUgb25lczoKKyAgICBpZiAoY29sb3IuaXNfcHJlc2VudCgpKSB7CisgICAgICAgIGF1
dG8mIGNvbG9yVmFsdWUgPSBjb2xvci52YWx1ZSgpOworICAgICAgICBpZiAoY29sb3JWYWx1ZS5j
aHJvbWFfc3Vic2FtcGxpbmdfeC5pc19wcmVzZW50KCkgJiYgY29sb3JWYWx1ZS5jaHJvbWFfc3Vi
c2FtcGxpbmdfeS5pc19wcmVzZW50KCkpCisgICAgICAgICAgICByZWNvcmQuY2hyb21hU3Vic2Ft
cGxpbmcgPSBjb252ZXJ0U3Vic2FtcGxpbmdYWVRvQ2hyb21hU3Vic2FtcGxpbmcoY29sb3JWYWx1
ZS5jaHJvbWFfc3Vic2FtcGxpbmdfeC52YWx1ZSgpLCBjb2xvclZhbHVlLmNocm9tYV9zdWJzYW1w
bGluZ195LnZhbHVlKCkpOworICAgICAgICBpZiAoY29sb3JWYWx1ZS5yYW5nZS5pc19wcmVzZW50
KCkgJiYgY29sb3JWYWx1ZS5yYW5nZS52YWx1ZSgpICE9IFJhbmdlOjprVW5zcGVjaWZpZWQpCisg
ICAgICAgICAgICByZWNvcmQudmlkZW9GdWxsUmFuZ2VGbGFnID0gY29sb3JWYWx1ZS5yYW5nZS52
YWx1ZSgpID09IFJhbmdlOjprRnVsbCA/IFZQQ29uZmlndXJhdGlvblJhbmdlOjpGdWxsUmFuZ2Ug
OiBWUENvbmZpZ3VyYXRpb25SYW5nZTo6VmlkZW9SYW5nZTsKKyAgICAgICAgaWYgKGNvbG9yVmFs
dWUuYml0c19wZXJfY2hhbm5lbC5pc19wcmVzZW50KCkpCisgICAgICAgICAgICByZWNvcmQuYml0
RGVwdGggPSBjb2xvclZhbHVlLmJpdHNfcGVyX2NoYW5uZWwudmFsdWUoKTsKKyAgICAgICAgaWYg
KGNvbG9yVmFsdWUudHJhbnNmZXJfY2hhcmFjdGVyaXN0aWNzLmlzX3ByZXNlbnQoKSkKKyAgICAg
ICAgICAgIHJlY29yZC50cmFuc2ZlckNoYXJhY3RlcmlzdGljcyA9IGNvbnZlcnRUb1RyYW5zZmVy
Q2hhcmFjdGVyaXN0aWNzKGNvbG9yVmFsdWUudHJhbnNmZXJfY2hhcmFjdGVyaXN0aWNzLnZhbHVl
KCkpOworICAgICAgICBpZiAoY29sb3JWYWx1ZS5tYXRyaXhfY29lZmZpY2llbnRzLmlzX3ByZXNl
bnQoKSkKKyAgICAgICAgICAgIHJlY29yZC5tYXRyaXhDb2VmZmljaWVudHMgPSBjb252ZXJ0VG9N
YXRyaXhDb2VmZmljaWVudHMoY29sb3JWYWx1ZS5tYXRyaXhfY29lZmZpY2llbnRzLnZhbHVlKCkp
OworICAgICAgICBpZiAoY29sb3JWYWx1ZS5wcmltYXJpZXMuaXNfcHJlc2VudCgpKQorICAgICAg
ICAgICAgcmVjb3JkLmNvbG9yUHJpbWFyaWVzID0gY29udmVydFRvQ29sb3JQcmltYXJpZXMoY29s
b3JWYWx1ZS5wcmltYXJpZXMudmFsdWUoKSk7CisgICAgfQorCisgICAgY29uc3RleHByIHNpemVf
dCBWUENvZGVjQ29uZmlndXJhdGlvbkNvbnRlbnRzU2l6ZSA9IDEyOworCisgICAgdWludDMyX3Qg
dmVyc2lvbkFuZEZsYWdzID0gMSA8PCAyNDsKKyAgICB1aW50OF90IGJpdERlcHRoQ2hyb21hQW5k
UmFuZ2UgPSAoMHhGICYgcmVjb3JkLmJpdERlcHRoKSA8PCA0IHwgKDB4NyAmIHJlY29yZC5jaHJv
bWFTdWJzYW1wbGluZykgPDwgMSB8ICgweDEgJiByZWNvcmQudmlkZW9GdWxsUmFuZ2VGbGFnKTsK
KyAgICB1aW50MTZfdCBjb2RlY0ludGlhbGl6YXRpb25EYXRhU2l6ZSA9IDA7CisKKyAgICBhdXRv
IHZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoQXJyYXlCdWZmZXI6OmNyZWF0ZShWUENvZGVj
Q29uZmlndXJhdGlvbkNvbnRlbnRzU2l6ZSwgMSksIDAsIFZQQ29kZWNDb25maWd1cmF0aW9uQ29u
dGVudHNTaXplKTsKKyAgICB2aWV3LT5zZXQoMCwgdmVyc2lvbkFuZEZsYWdzLCBmYWxzZSk7Cisg
ICAgdmlldy0+c2V0KDQsIHJlY29yZC5wcm9maWxlLCBmYWxzZSk7CisgICAgdmlldy0+c2V0KDUs
IHJlY29yZC5sZXZlbCwgZmFsc2UpOworICAgIHZpZXctPnNldCg2LCBiaXREZXB0aENocm9tYUFu
ZFJhbmdlLCBmYWxzZSk7CisgICAgdmlldy0+c2V0KDcsIHJlY29yZC5jb2xvclByaW1hcmllcywg
ZmFsc2UpOworICAgIHZpZXctPnNldCg4LCByZWNvcmQudHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3Ms
IGZhbHNlKTsKKyAgICB2aWV3LT5zZXQoOSwgcmVjb3JkLm1hdHJpeENvZWZmaWNpZW50cywgZmFs
c2UpOworICAgIHZpZXctPnNldCgxMCwgY29kZWNJbnRpYWxpemF0aW9uRGF0YVNpemUsIGZhbHNl
KTsKKworICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIChjb25zdCBVSW50OCAqKXZpZXctPmRhdGEoKSwgdmlldy0+Ynl0ZUxlbmd0aCgpKSk7
CisKKyAgICBDRlR5cGVSZWYgY29uZmlndXJhdGlvbktleXNbXSA9IHsgQ0ZTVFIoInZwY0MiKSB9
OworICAgIENGVHlwZVJlZiBjb25maWd1cmF0aW9uVmFsdWVzW10gPSB7IGRhdGEuZ2V0KCkgfTsK
KyAgICBhdXRvIGNvbmZpZ3VyYXRpb25EaWN0ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgY29uZmlndXJhdGlvbktleXMsIGNvbmZpZ3VyYXRpb25WYWx1
ZXMsIFdURl9BUlJBWV9MRU5HVEgoY29uZmlndXJhdGlvbktleXMpLCAma0NGVHlwZURpY3Rpb25h
cnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisKKyAg
ICBWZWN0b3I8Q0ZUeXBlUmVmPiBhdG9tc0tleXMgeyBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVu
c2lvbl9TYW1wbGVEZXNjcmlwdGlvbkV4dGVuc2lvbkF0b21zIH07CisgICAgVmVjdG9yPENGVHlw
ZVJlZj4gYXRvbXNWYWx1ZXMgPSB7IGNvbmZpZ3VyYXRpb25EaWN0LmdldCgpIH07CisgICAgYXV0
byBhdG9tcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGF0b21zS2V5cy5kYXRhKCksIGF0b21zVmFsdWVzLmRhdGEoKSwgYXRvbXNLZXlzLnNpemUoKSwg
JmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNh
bGxCYWNrcykpOworCisgICAgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2Ny
aXB0aW9uID0gbnVsbHB0cjsKKyAgICBpZiAobm9FcnIgIT0gQ01WaWRlb0Zvcm1hdERlc2NyaXB0
aW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDTVZpZGVvQ29kZWNUeXBlX1ZQOSwgcGFy
c2VyLndpZHRoKCksIHBhcnNlci5oZWlnaHQoKSwgYXRvbXMuZ2V0KCksICZmb3JtYXREZXNjcmlw
dGlvbikpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBhZG9wdENGKGZvcm1h
dERlc2NyaXB0aW9uKTsKK30KKword2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
Ok9uRnJhbWUoY29uc3QgRnJhbWVNZXRhZGF0YSYgbWV0YWRhdGEsIFJlYWRlciogcmVhZGVyLCB1
aW50NjRfdCogYnl0ZXNSZW1haW5pbmcpCit7CisgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsK
KyAgICBVTlVTRURfUEFSQU0oYnl0ZXNSZW1haW5pbmcpOworCisgICAgQVNTRVJUKHJlYWRlcik7
CisgICAgaWYgKCFyZWFkZXIpCisgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5v
dWdoTWVtb3J5KTsKKworICAgIGlmICghbV9jdXJyZW50QmxvY2spCisgICAgICAgIHJldHVybiBT
dGF0dXMoU3RhdHVzOjprSW52YWxpZEVsZW1lbnRJZCk7CisKKyAgICBhdXRvKiBibG9jayA9IFdU
Rjo6c3dpdGNoT24oKm1fY3VycmVudEJsb2NrLCBbXShCbG9jayYgYmxvY2spIHsKKyAgICAgICAg
cmV0dXJuICZibG9jazsKKyAgICB9LCBbXShTaW1wbGVCbG9jayYgYmxvY2spIC0+IEJsb2NrKiB7
CisgICAgICAgIHJldHVybiAmYmxvY2s7CisgICAgfSk7CisgICAgaWYgKCFibG9jaykKKyAgICAg
ICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtJbnZhbGlkRWxlbWVudElkKTsKKworICAgIGF1dG8g
aXNTeW5jID0gV1RGOjpzd2l0Y2hPbigqbV9jdXJyZW50QmxvY2ssIFtdKEJsb2NrJikgeworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfSwgW10oU2ltcGxlQmxvY2smIGJsb2NrKSB7CisgICAg
ICAgIHJldHVybiBibG9jay5pc19rZXlfZnJhbWU7CisgICAgfSk7CisKKyAgICBhdXRvIHRyYWNr
TnVtYmVyID0gYmxvY2stPnRyYWNrX251bWJlcjsKKworICAgIGF1dG8qIHRyYWNrRGF0YSA9IHRy
YWNrRGF0YUZvclRyYWNrTnVtYmVyKHRyYWNrTnVtYmVyKTsKKyAgICBpZiAoIXRyYWNrRGF0YSkK
KyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtJbnZhbGlkRWxlbWVudElkKTsKKyAgICBh
dXRvJiB0cmFjayA9IHRyYWNrRGF0YS0+dHJhY2s7CisgICAgYXV0byYgaGVhZGVyUGFyc2VyID0g
dHJhY2tEYXRhLT5oZWFkZXJQYXJzZXI7CisKKyAgICB1aW50NjRfdCBkdXJhdGlvbiA9IDA7Cisg
ICAgaWYgKHRyYWNrLmRlZmF1bHRfZHVyYXRpb24uaXNfcHJlc2VudCgpKQorICAgICAgICBkdXJh
dGlvbiA9IHRyYWNrLmRlZmF1bHRfZHVyYXRpb24udmFsdWUoKSAqIG1fdGltZXNjYWxlIC8gMTAw
MDAwMDAwMDsKKworICAgIGlmICh0cmFjay5jb2RlY19pZC5pc19wcmVzZW50KCkgJiYgdHJhY2su
Y29kZWNfaWQudmFsdWUoKSA9PSAiVl9WUDkiKSB7CisgICAgICAgIGlmICghdHJhY2tEYXRhLT5j
dXJyZW50QmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3Qmxv
Y2tCdWZmZXIgPSBudWxscHRyOworICAgICAgICAgICAgaWYgKG5vRXJyICE9IENNQmxvY2tCdWZm
ZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2soa0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgbWV0
YWRhdGEuc2l6ZSwga0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgMCwgbWV0YWRhdGEuc2l6
ZSwgMCwgJnJhd0Jsb2NrQnVmZmVyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gU2tpcChyZWFk
ZXIsIGJ5dGVzUmVtYWluaW5nKTsKKyAgICAgICAgICAgIHRyYWNrRGF0YS0+Y3VycmVudEJsb2Nr
QnVmZmVyID0gYWRvcHRDRihyYXdCbG9ja0J1ZmZlcik7CisgICAgICAgICAgICB0cmFja0RhdGEt
PmN1cnJlbnRCbG9ja0J1ZmZlclBvc2l0aW9uID0gMDsKKworICAgICAgICAgICAgaWYgKG5vRXJy
ICE9IENNQmxvY2tCdWZmZXJBc3N1cmVCbG9ja01lbW9yeSh0cmFja0RhdGEtPmN1cnJlbnRCbG9j
a0J1ZmZlci5nZXQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNraXAocmVhZGVyLCBieXRl
c1JlbWFpbmluZyk7CisgICAgICAgIH0KKworICAgICAgICB1aW50OF90KiBibG9ja0J1ZmZlckRh
dGEgPSBudWxscHRyOworICAgICAgICBpZiAobm9FcnIgIT0gQ01CbG9ja0J1ZmZlckdldERhdGFQ
b2ludGVyKHRyYWNrRGF0YS0+Y3VycmVudEJsb2NrQnVmZmVyLmdldCgpLCAwLCBudWxscHRyLCBu
dWxscHRyLCAoY2hhcioqKSZibG9ja0J1ZmZlckRhdGEpKQorICAgICAgICAgICAgcmV0dXJuIFNr
aXAocmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CisKKyAgICAgICAgc2l6ZV90IG51bVRvUmVhZCA9
IG1ldGFkYXRhLnNpemUgLSB0cmFja0RhdGEtPmN1cnJlbnRCbG9ja0J1ZmZlclBvc2l0aW9uOwor
ICAgICAgICB1aW50NjRfdCBudW1BY3R1YWxseVJlYWQ7CisgICAgICAgIGF1dG8gc3RhdHVzID0g
bV9yZWFkZXItPlJlYWQobnVtVG9SZWFkLCAodWludDhfdCopYmxvY2tCdWZmZXJEYXRhLCAmbnVt
QWN0dWFsbHlSZWFkKTsKKyAgICAgICAgKmJ5dGVzUmVtYWluaW5nIC09IG51bUFjdHVhbGx5UmVh
ZDsKKyAgICAgICAgdHJhY2tEYXRhLT5jdXJyZW50QmxvY2tCdWZmZXJQb3NpdGlvbiArPSBudW1B
Y3R1YWxseVJlYWQ7CisKKyAgICAgICAgLy8gRklYTUU6IFdlIGNhbid0IHlldCBoYW5kbGUgcGFy
c2luZyBhIEZyYW1lIHRoYXQgZG9lc24ndCBoYXZlIGFsbCBpdHMgbWVtb3J5IGF2YWlsYWJsZS4K
KyAgICAgICAgaWYgKHN0YXR1cy5jb2RlID09IHdlYm06OlN0YXR1czo6a09rUGFydGlhbCB8fCBz
dGF0dXMuY29kZSA9PSB3ZWJtOjpTdGF0dXM6OmtXb3VsZEJsb2NrKQorICAgICAgICAgICAgcmV0
dXJuIHN0YXR1czsKKworICAgICAgICBpZiAoIWhlYWRlclBhcnNlci5QYXJzZVVuY29tcHJlc3Nl
ZEhlYWRlcihibG9ja0J1ZmZlckRhdGEsIG1ldGFkYXRhLnNpemUpKQorICAgICAgICAgICAgcmV0
dXJuIFNraXAocmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CisKKyAgICAgICAgLy8gT25seSB1cGRh
dGUgdGhlIGZvcm1hdCBkZXNjcmlwdGlvbiB3aGVuIHRoZSBoZWFkZXIgaW5kaWNhdGVzIHRoYXQg
dGhlIHNhbXBsZSBpcworICAgICAgICAvLyBhIGtleS1mcmFtZSwgb3RoZXJ3aXNlIGNvbG9yIGlu
Zm9ybWF0aW9uIHdpbGwgbm90IGJlIHBhcnNlZC4KKyAgICAgICAgaWYgKGhlYWRlclBhcnNlci5r
ZXkoKSkKKyAgICAgICAgICAgIHRyYWNrRGF0YS0+Zm9ybWF0RGVzY3JpcHRpb24gPSBjcmVhdGVG
b3JtYXREZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQYXJzZXIoaGVhZGVyUGFyc2VyLCB0cmFjay52
aWRlby52YWx1ZSgpLmNvbG91cik7CisgICAgICAgIGlmICghdHJhY2tEYXRhLT5mb3JtYXREZXNj
cmlwdGlvbikKKyAgICAgICAgICAgIHJldHVybiBTa2lwKHJlYWRlciwgYnl0ZXNSZW1haW5pbmcp
OworCisgICAgICAgIGF1dG8gcHRzID0gQ01UaW1lTWFrZShibG9jay0+dGltZWNvZGUgKyBtX2N1
cnJlbnRUaW1lY29kZSwgbV90aW1lc2NhbGUpOworICAgICAgICBDTVNhbXBsZVRpbWluZ0luZm8g
dGltaW5nID0geyBDTVRpbWVNYWtlKGR1cmF0aW9uLCBtX3RpbWVzY2FsZSksIHB0cywgcHRzIH07
CisgICAgICAgIHNpemVfdCBzaXplID0gbWV0YWRhdGEuc2l6ZTsKKworICAgICAgICBhdXRvIHNh
bXBsZUNvdW50ID0gYmxvY2stPm51bV9mcmFtZXM7CisgICAgICAgIENNU2FtcGxlQnVmZmVyUmVm
IHJhd1NhbXBsZUJ1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIGlmIChub0VyciAhPSBDTVNhbXBs
ZUJ1ZmZlckNyZWF0ZVJlYWR5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHRyYWNrRGF0YS0+Y3VycmVu
dEJsb2NrQnVmZmVyLmdldCgpLCB0cmFja0RhdGEtPmZvcm1hdERlc2NyaXB0aW9uLmdldCgpLCBz
YW1wbGVDb3VudCwgMSwgJnRpbWluZywgMSwgJnNpemUsICZyYXdTYW1wbGVCdWZmZXIpKQorICAg
ICAgICAgICAgcmV0dXJuIFNraXAocmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CisgICAgICAgIGF1
dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRihyYXdTYW1wbGVCdWZmZXIpOworCisgICAgICAgIHRy
YWNrRGF0YS0+Y3VycmVudEJsb2NrQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgdHJhY2tEYXRh
LT5jdXJyZW50QmxvY2tCdWZmZXJQb3NpdGlvbiA9IDA7CisKKyAgICAgICAgaWYgKCFpc1N5bmMp
CisgICAgICAgICAgICBDTVNldEF0dGFjaG1lbnQoc2FtcGxlQnVmZmVyLmdldCgpLCBrQ01TYW1w
bGVBdHRhY2htZW50S2V5X05vdFN5bmMsIGtDRkJvb2xlYW5UcnVlLCBrQ01BdHRhY2htZW50TW9k
ZV9TaG91bGRQcm9wYWdhdGUpOworCisgICAgICAgIGF1dG8gdHJhY2tJRCA9IHRyYWNrLnRyYWNr
X3VpZC52YWx1ZSgpOworCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2FtcGxlQnVmZmVyID0gV1RGTW92ZShzYW1wbGVCdWZm
ZXIpLCB0cmFja0lEXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghbV9kaWRQcm92aWRl
TWVkaWFEYXRhQ2FsbGJhY2spCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
YXV0byBtZWRpYVNhbXBsZSA9IE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKHNhbXBsZUJ1ZmZl
ci5nZXQoKSwgdHJhY2tJRCk7CisgICAgICAgICAgICBtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxs
YmFjayhXVEZNb3ZlKG1lZGlhU2FtcGxlKSwgdHJhY2tJRCwgZW1wdHlTdHJpbmcoKSk7CisgICAg
ICAgIH0pOworCisgICAgfQorCisgICAgcmV0dXJuIFNraXAocmVhZGVyLCBieXRlc1JlbWFpbmlu
Zyk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTE5MWRkMzVkZDBjY2IyOTEwOTJlMmFkZTgz
NDFmMzllN2U4YTM5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaApAQCAtMCwwICsxLDEzNyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkK
KworI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlci5oIgorI2luY2x1ZGUgPGNvbW1vbi92cDlf
aGVhZGVyX3BhcnNlci5oPgorI2luY2x1ZGUgPHdlYm0vY2FsbGJhY2suaD4KKyNpbmNsdWRlIDx3
ZWJtL3N0YXR1cy5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFu
dC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3Ry
aW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3R5cGVkZWYgc3RydWN0
IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKK3R5cGVkZWYgY29uc3Qg
c3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24qIENNRm9ybWF0RGVzY3JpcHRpb25SZWY7
Cit0eXBlZGVmIHN0cnVjdCBPcGFxdWVDTUJsb2NrQnVmZmVyICpDTUJsb2NrQnVmZmVyUmVmOwor
CituYW1lc3BhY2Ugd2VibSB7CitjbGFzcyBXZWJtUGFyc2VyOworfQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0gOiBwdWJsaWMgU291cmNlQnVm
ZmVyUGFyc2VyLCBwcml2YXRlIHdlYm06OkNhbGxiYWNrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNU
eXBlIGlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29uc3QgQ29udGVudFR5cGUmKTsKKworICAgIFNv
dXJjZUJ1ZmZlclBhcnNlcldlYk0oKTsKKyAgICB+U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpOwor
CisgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKKworICAgIGNvbnN0IHdlYm06OlN0YXR1
cyYgc3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0KKworICAgIFR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIFR5cGU6OldlYk07IH0KKyAgICB2b2lkIGFwcGVuZERhdGEoVmVjdG9y
PHVuc2lnbmVkIGNoYXI+JiYsIEFwcGVuZEZsYWdzID0gQXBwZW5kRmxhZ3M6Ok5vbmUpIGZpbmFs
OworICAgIHZvaWQgZmx1c2hQZW5kaW5nTWVkaWFEYXRhKCkgZmluYWw7CisgICAgdm9pZCBzZXRT
aG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChib29sLCB1aW50NjRfdCkgZmluYWw7Cisg
ICAgYm9vbCBzaG91bGRQcm92aWRlTWVkaWFkYXRhRm9yVHJhY2tJRCh1aW50NjRfdCkgZmluYWw7
CisgICAgdm9pZCByZXNldFBhcnNlclN0YXRlKCkgZmluYWw7CisKKyAgICBlbnVtIGNsYXNzIEVy
cm9yQ29kZSA6IGludDMyX3QgeworICAgICAgICBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNRXJyb3JD
b2RlU3RhcnQgPSAyMDAwLAorICAgICAgICBJbnZhbGlkRG9jVHlwZSwKKyAgICAgICAgSW52YWxp
ZEluaXRTZWdtZW50LAorICAgIH07CisKK3ByaXZhdGU6CisgICAgc3RydWN0IFRyYWNrRGF0YSB7
CisgICAgICAgIHdlYm06OlRyYWNrRW50cnkgdHJhY2s7CisgICAgICAgIHZwOV9wYXJzZXI6OlZw
OUhlYWRlclBhcnNlciBoZWFkZXJQYXJzZXI7CisgICAgICAgIFJldGFpblB0cjxDTUZvcm1hdERl
c2NyaXB0aW9uUmVmPiBmb3JtYXREZXNjcmlwdGlvbjsKKyAgICAgICAgUmV0YWluUHRyPENNQmxv
Y2tCdWZmZXJSZWY+IGN1cnJlbnRCbG9ja0J1ZmZlcjsKKyAgICAgICAgdWludDY0X3QgY3VycmVu
dEJsb2NrQnVmZmVyUG9zaXRpb24geyAwIH07CisgICAgfTsKKyAgICBUcmFja0RhdGEqIHRyYWNr
RGF0YUZvclRyYWNrTnVtYmVyKHVpbnQ2NF90KTsKKworICAgIC8vIHdlYm06OkNhbGxiYWNrCisg
ICAgd2VibTo6U3RhdHVzIE9uRWxlbWVudEJlZ2luKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0
YSYsIHdlYm06OkFjdGlvbiopIGZpbmFsOworICAgIHdlYm06OlN0YXR1cyBPbkVibWwoY29uc3Qg
d2VibTo6RWxlbWVudE1ldGFkYXRhJiwgY29uc3Qgd2VibTo6RWJtbCYpIGZpbmFsOworICAgIHdl
Ym06OlN0YXR1cyBPblNlZ21lbnRCZWdpbihjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmLCB3
ZWJtOjpBY3Rpb24qKSBmaW5hbDsKKyAgICB3ZWJtOjpTdGF0dXMgT25JbmZvKGNvbnN0IHdlYm06
OkVsZW1lbnRNZXRhZGF0YSYsIGNvbnN0IHdlYm06OkluZm8mKSBmaW5hbDsKKyAgICB3ZWJtOjpT
dGF0dXMgT25DbHVzdGVyQmVnaW4oY29uc3Qgd2VibTo6RWxlbWVudE1ldGFkYXRhJiwgY29uc3Qg
d2VibTo6Q2x1c3RlciYsIHdlYm06OkFjdGlvbiopIGZpbmFsOworICAgIHdlYm06OlN0YXR1cyBP
blRyYWNrRW50cnkoY29uc3Qgd2VibTo6RWxlbWVudE1ldGFkYXRhJiwgY29uc3Qgd2VibTo6VHJh
Y2tFbnRyeSYpIGZpbmFsOworICAgIHdlYm06OlN0YXR1cyBPbkJsb2NrQmVnaW4oY29uc3Qgd2Vi
bTo6RWxlbWVudE1ldGFkYXRhJiwgY29uc3Qgd2VibTo6QmxvY2smLCB3ZWJtOjpBY3Rpb24qKSBm
aW5hbDsKKyAgICB3ZWJtOjpTdGF0dXMgT25CbG9ja0VuZChjb25zdCB3ZWJtOjpFbGVtZW50TWV0
YWRhdGEmLCBjb25zdCB3ZWJtOjpCbG9jayYpIGZpbmFsOworICAgIHdlYm06OlN0YXR1cyBPblNp
bXBsZUJsb2NrQmVnaW4oY29uc3Qgd2VibTo6RWxlbWVudE1ldGFkYXRhJiwgY29uc3Qgd2VibTo6
U2ltcGxlQmxvY2smLCB3ZWJtOjpBY3Rpb24qKSBmaW5hbDsKKyAgICB3ZWJtOjpTdGF0dXMgT25T
aW1wbGVCbG9ja0VuZChjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmLCBjb25zdCB3ZWJtOjpT
aW1wbGVCbG9jayYpIGZpbmFsOworICAgIHdlYm06OlN0YXR1cyBPbkJsb2NrR3JvdXBCZWdpbihj
b25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmICwgd2VibTo6QWN0aW9uKik7CisgICAgd2VibTo6
U3RhdHVzIE9uQmxvY2tHcm91cEVuZChjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmLCBjb25z
dCB3ZWJtOjpCbG9ja0dyb3VwJik7CisgICAgd2VibTo6U3RhdHVzIE9uRnJhbWUoY29uc3Qgd2Vi
bTo6RnJhbWVNZXRhZGF0YSYsIHdlYm06OlJlYWRlciosIHVpbnQ2NF90KiBieXRlc1JlbWFpbmlu
ZykgZmluYWw7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5pdGlhbGl6YXRpb25TZWdtZW50PiBt
X2luaXRpYWxpemF0aW9uU2VnbWVudDsKKyAgICB3ZWJtOjpTdGF0dXMgbV9zdGF0dXM7CisgICAg
c3RkOjp1bmlxdWVfcHRyPHdlYm06OldlYm1QYXJzZXI+IG1fcGFyc2VyOworICAgIGJvb2wgbV9p
bml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCB7IGZhbHNlIH07CisgICAgdWludDMyX3Qg
bV90aW1lc2NhbGUgeyAxMDAwIH07CisgICAgdWludDY0X3QgbV9jdXJyZW50VGltZWNvZGUgeyAw
IH07CisKKyAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWludDhfdCB7CisgICAgICAgIE5vbmUsCisg
ICAgICAgIFJlYWRpbmdFYm1sLAorICAgICAgICBSZWFkRWJtbCwKKyAgICAgICAgUmVhZGluZ1Nl
Z21lbnQsCisgICAgICAgIFJlYWRpbmdJbmZvLAorICAgICAgICBSZWFkSW5mbywKKyAgICAgICAg
UmVhZGluZ1RyYWNrcywKKyAgICAgICAgUmVhZGluZ1RyYWNrLAorICAgICAgICBSZWFkVHJhY2ss
CisgICAgICAgIFJlYWRpbmdDbHVzdGVyLAorICAgIH07CisgICAgU3RhdGUgbV9zdGF0ZSB7IFN0
YXRlOjpOb25lIH07CisKKyAgICBjbGFzcyBTdHJlYW1pbmdWZWN0b3JSZWFkZXI7CisgICAgVW5p
cXVlUmVmPFN0cmVhbWluZ1ZlY3RvclJlYWRlcj4gbV9yZWFkZXI7CisKKyAgICBWZWN0b3I8VHJh
Y2tEYXRhPiBtX3RyYWNrczsKKyAgICB1c2luZyBCbG9ja1ZhcmlhbnQgPSBWYXJpYW50PHdlYm06
OkJsb2NrLCB3ZWJtOjpTaW1wbGVCbG9jaz47CisgICAgT3B0aW9uYWw8QmxvY2tWYXJpYW50PiBt
X2N1cnJlbnRCbG9jazsKK307CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShj
b25zdCBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXImIHBhcnNlcikgeyByZXR1cm4gcGFyc2Vy
LnR5cGUoKSA9PSBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlR5cGU6OldlYk07IH0KK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VS
Q0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9W
UDlVdGlsaXRpZXNDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvVlA5VXRpbGl0aWVzQ29jb2EuaAppbmRleCAwNThkN2Y5NmFjMDFiZDVmZGI0MDNjZjhlMGFi
NWExODhiOTBhNzRjLi5lM2UzNWJlZmU0YWUwNDhkMWJjNTlmODMwNDMzZTFhYmI0YTFhMzQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGls
aXRpZXNDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1ZQOVV0aWxpdGllc0NvY29hLmgKQEAgLTM4LDYgKzM4LDggQEAgV0VCQ09SRV9FWFBPUlQgZXh0
ZXJuIHZvaWQgc2V0T3ZlcnJpZGVWUDlIYXJkd2FyZURlY29kZXJEaXNhYmxlZEZvclRlc3Rpbmco
Ym9vbCkKIFdFQkNPUkVfRVhQT1JUIGV4dGVybiB2b2lkIHNldE92ZXJyaWRlVlA5U2NyZWVuU2l6
ZUFuZFNjYWxlRm9yVGVzdGluZyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBzY2Fs
ZSk7CiBXRUJDT1JFX0VYUE9SVCBleHRlcm4gdm9pZCByZXNldE92ZXJyaWRlVlA5U2NyZWVuU2l6
ZUFuZFNjYWxlRm9yVGVzdGluZygpOwogCitXRUJDT1JFX0VYUE9SVCBleHRlcm4gdm9pZCByZWdp
c3RlclN1cHBsZW1lbnRhbFZQOURlY29kZXIoKTsKK2V4dGVybiBib29sIGlzVlA5RGVjb2RlckF2
YWlsYWJsZSgpOwogZXh0ZXJuIGJvb2wgdmFsaWRhdGVWUFBhcmFtZXRlcnMoVlBDb2RlY0NvbmZp
Z3VyYXRpb25SZWNvcmQmLCBNZWRpYUNhcGFiaWxpdGllc0luZm8mLCBjb25zdCBWaWRlb0NvbmZp
Z3VyYXRpb24mKTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbQppbmRleCA1Njg1OTUzM2RlYjZh
ZWNjOTBjNTdlMTk1MTJjZmRkOGUwZTJlNGIxLi4yODg3YTUyZTNjMzI2ZjhlNTFjMGM4YTFhYjNh
MGIyYTI0MmE2N2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbQpAQCAtOTYsMTAgKzk2LDE0IEBA
IHN0YXRpYyBSZXNvbHV0aW9uQ2F0ZWdvcnkgcmVzb2x1dGlvbkNhdGVnb3J5KGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSkKICAgICByZXR1cm4gUmVzb2x1dGlvbkNhdGVnb3J5OjpSXzQ4MHA7CiB9CiAK
K2Jvb2wgaXNWUDlEZWNvZGVyQXZhaWxhYmxlKCkKK3sKKyAgICByZXR1cm4gbm9FcnIgPT0gVlRT
ZWxlY3RBbmRDcmVhdGVWaWRlb0RlY29kZXJJbnN0YW5jZShrQ01WaWRlb0NvZGVjVHlwZV9WUDks
IGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIG51bGxwdHIpOworfQorCiBib29sIHZhbGlk
YXRlVlBQYXJhbWV0ZXJzKFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkJiBjb2RlY0NvbmZpZ3Vy
YXRpb24sIE1lZGlhQ2FwYWJpbGl0aWVzSW5mbyYgaW5mbywgY29uc3QgVmlkZW9Db25maWd1cmF0
aW9uJiB2aWRlb0NvbmZpZ3VyYXRpb24pCiB7Ci0gICAgT1NTdGF0dXMgc3RhdHVzID0gVlRTZWxl
Y3RBbmRDcmVhdGVWaWRlb0RlY29kZXJJbnN0YW5jZShrQ01WaWRlb0NvZGVjVHlwZV9WUDksIGtD
RkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIG51bGxwdHIpOwotICAgIGlmIChzdGF0dXMgIT0g
bm9FcnIpCisgICAgaWYgKCFpc1ZQOURlY29kZXJBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgLy8gVmlkZW9Db25maWd1cmF0aW9uIGFuZCBWUENvZGVjQ29uZmlndXJh
dGlvblJlY29yZCBjYW4gaGF2ZSBjb25mbGljdGluZyB2YWx1ZXMgZm9yIEhEUiBwcm9wZXJ0aWVz
LiBJZiBzbywgcmVqZWN0LgpAQCAtMTIyLDcgKzEyNiw3IEBAIGJvb2wgdmFsaWRhdGVWUFBhcmFt
ZXRlcnMoVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQmIGNvZGVjQ29uZmlndXJhdGlvbiwgTWVk
aWFDCiAgICAgICAgIGluZm8ucG93ZXJFZmZpY2llbnQgPSB0cnVlOwogCiAgICAgICAgIC8vIEhX
IFZQOSBEZWNvZGVyIHN1cHBvcnRzIFByb2ZpbGUgMCAmIDI6Ci0gICAgICAgIGlmICghY29kZWND
b25maWd1cmF0aW9uLnByb2ZpbGUgJiYgY29kZWNDb25maWd1cmF0aW9uLnByb2ZpbGUgIT0gMikK
KyAgICAgICAgaWYgKGNvZGVjQ29uZmlndXJhdGlvbi5wcm9maWxlICYmIGNvZGVjQ29uZmlndXJh
dGlvbi5wcm9maWxlICE9IDIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAg
Ly8gSFcgVlA5IERlY29kZXIgc3VwcG9ydHMgdXAgdG8gTGV2ZWwgNjoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2Vi
TS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNr
UHJpdmF0ZVdlYk0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhMzRmMmU1ODNmZWNiZGEzNGY3NTdiYjJiMzE5
N2YzZWZjZTgyMzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCkBAIC0wLDAgKzEsNzUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmlkZW9UcmFja1By
aXZhdGVXZWJNLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1JlZjxWaWRlb1RyYWNrUHJpdmF0ZVdlYk0+IFZpZGVvVHJhY2tQcml2YXRlV2Vi
TTo6Y3JlYXRlKHdlYm06OlRyYWNrRW50cnkmJiB0cmFja0VudHJ5KQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFZpZGVvVHJhY2tQcml2YXRlV2ViTShXVEZNb3ZlKHRyYWNrRW50cnkpKSk7
Cit9CisKK1ZpZGVvVHJhY2tQcml2YXRlV2ViTTo6VmlkZW9UcmFja1ByaXZhdGVXZWJNKHdlYm06
OlRyYWNrRW50cnkmJiB0cmFja0VudHJ5KQorICAgIDogbV90cmFjayhXVEZNb3ZlKHRyYWNrRW50
cnkpKQoreworICAgIGlmIChtX3RyYWNrLmlzX2VuYWJsZWQuaXNfcHJlc2VudCgpKQorICAgICAg
ICBzZXRTZWxlY3RlZChtX3RyYWNrLmlzX2VuYWJsZWQudmFsdWUoKSk7Cit9CisKK0F0b21TdHJp
bmcgVmlkZW9UcmFja1ByaXZhdGVXZWJNOjppZCgpIGNvbnN0Cit7CisgICAgaWYgKG1fdHJhY2tJ
RC5pc051bGwoKSkKKyAgICAgICAgbV90cmFja0lEID0gbV90cmFjay50cmFja191aWQuaXNfcHJl
c2VudCgpID8gQXRvbVN0cmluZzo6bnVtYmVyKG1fdHJhY2sudHJhY2tfdWlkLnZhbHVlKCkpIDog
ZW1wdHlBdG9tKCk7CisgICAgcmV0dXJuIG1fdHJhY2tJRDsKK30KKworQXRvbVN0cmluZyBWaWRl
b1RyYWNrUHJpdmF0ZVdlYk06OmxhYmVsKCkgY29uc3QKK3sKKyAgICBpZiAobV9sYWJlbC5pc051
bGwoKSkKKyAgICAgICAgbV9sYWJlbCA9IG1fdHJhY2submFtZS5pc19wcmVzZW50KCkgPyBBdG9t
U3RyaW5nOjpmcm9tVVRGOChtX3RyYWNrLm5hbWUudmFsdWUoKS5kYXRhKCksIG1fdHJhY2submFt
ZS52YWx1ZSgpLmxlbmd0aCgpKSA6IGVtcHR5QXRvbSgpOworICAgIHJldHVybiBtX2xhYmVsOwor
fQorCitBdG9tU3RyaW5nIFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6bGFuZ3VhZ2UoKSBjb25zdAor
eworICAgIGlmIChtX2xhbmd1YWdlLmlzTnVsbCgpKQorICAgICAgICBtX2xhbmd1YWdlID0gbV90
cmFjay5sYW5ndWFnZS5pc19wcmVzZW50KCkgPyBBdG9tU3RyaW5nOjpmcm9tVVRGOChtX3RyYWNr
Lmxhbmd1YWdlLnZhbHVlKCkuZGF0YSgpLCBtX3RyYWNrLmxhbmd1YWdlLnZhbHVlKCkubGVuZ3Ro
KCkpIDogZW1wdHlBdG9tKCk7CisgICAgcmV0dXJuIG1fbGFuZ3VhZ2U7Cit9CisKK2ludCBWaWRl
b1RyYWNrUHJpdmF0ZVdlYk06OnRyYWNrSW5kZXgoKSBjb25zdAoreworICAgIGlmIChtX3RyYWNr
LnRyYWNrX251bWJlci5pc19wcmVzZW50KCkpCisgICAgICAgIHJldHVybiBtX3RyYWNrLnRyYWNr
X251bWJlci52YWx1ZSgpOworICAgIHJldHVybiAwOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
NzY3YjkxZDk2ZWZlYWY0OWYzYzc5MGM3MmQ2M2EyZmQ4MTUzYjgxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZh
dGVXZWJNLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKworI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlLmgi
CisjaW5jbHVkZSA8d2VibS9kb21fdHlwZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0gZmluYWwgOiBwdWJsaWMgVmlkZW9UcmFja1ByaXZh
dGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8VmlkZW9UcmFja1ByaXZhdGVXZWJNPiBjcmVh
dGUod2VibTo6VHJhY2tFbnRyeSYmKTsKKyAgICB2aXJ0dWFsIH5WaWRlb1RyYWNrUHJpdmF0ZVdl
Yk0oKSA9IGRlZmF1bHQ7CisKKyAgICBBdG9tU3RyaW5nIGlkKCkgY29uc3QgZmluYWw7CisgICAg
QXRvbVN0cmluZyBsYWJlbCgpIGNvbnN0IGZpbmFsOworICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2Uo
KSBjb25zdCBmaW5hbDsKKyAgICBpbnQgdHJhY2tJbmRleCgpIGNvbnN0IGZpbmFsOworCitwcml2
YXRlOgorICAgIFZpZGVvVHJhY2tQcml2YXRlV2ViTSh3ZWJtOjpUcmFja0VudHJ5JiYpOworICAg
IHdlYm06OlRyYWNrRW50cnkgbV90cmFjazsKKyAgICBtdXRhYmxlIEF0b21TdHJpbmcgbV90cmFj
a0lEOworICAgIG11dGFibGUgQXRvbVN0cmluZyBtX2xhYmVsOworICAgIG11dGFibGUgQXRvbVN0
cmluZyBtX2xhbmd1YWdlOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NPVVJD
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmluZGV4IGUwNGNhZGNh
MmRjNWE4YzQxOWI3MmZhMTllZTczZmU3M2ExMGI2MDEuLjQyYjA0OTcwOWIzZmUwOGVhMzBmYzVk
ZDk2ZjY4MWJmNmM3YzE2MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBy
ZWZlcmVuY2VzLnlhbWwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMu
eWFtbApAQCAtNjY4LDYgKzY2OCwxNSBAQCBWUDlEZWNvZGVyRW5hYmxlZDoKICAgaHVtYW5SZWFk
YWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIFZQOSBkZWNvZGVyIgogICBjYXRlZ29yeTogZXhwZXJp
bWVudGFsCiAKK1dlYk1QYXJzZXJFbmFibGVkOgorICB0eXBlOiBib29sCisgIGRlZmF1bHRWYWx1
ZTogZmFsc2UKKyAgd2ViY29yZUJpbmRpbmc6IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMKKyAgaHVt
YW5SZWFkYWJsZU5hbWU6ICJXZWJNIE1TRSBwYXJzZXIiCisgIGh1bWFuUmVhZGFibGVEZXNjcmlw
dGlvbjogIkVuYWJsZSBXZWJNIE1TRSBwYXJzZXIiCisgIGNhdGVnb3J5OiBleHBlcmltZW50YWwK
KyAgY29uZGl0aW9uOiBFTkFCTEUoTUVESUFfU09VUkNFKQorCiBVc2VMZWdhY3lUZXh0QWxpZ25Q
b3NpdGlvbmVkRWxlbWVudEJlaGF2aW9yOgogICB0eXBlOiBib29sCiAgIGRlZmF1bHRWYWx1ZTog
ZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBjNjhhMmM4ODJjNjgzMzFjNDgzYTgzNzFiYWM0ZmVkNmI1Y2UxNDY0Li4w
ZjYzODk3ZDdlMGRmZTYzOTUzODU4MjI5ODkyOWJiOGVlNTU4MDgzIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMjAtMDctMjEgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0NvY29hXSBBZGQgZXhwZXJpbWVudGFsIE1TRSBXZWJNIHBhcnNlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NTI5CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82NTc4MjQ2Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9jb250ZW50L3Rlc3QtdnA5LW1h
bmlmZXN0Lmpzb246IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9jb250ZW50
L3Rlc3QtdnA5LndlYm06IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRp
YS1zb3VyY2Utd2VibS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlh
LXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS5odG1sOiBBZGRlZC4KKwogMjAyMC0wNy0yMCAgS2Vp
dGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWR1Y2UgbnVt
YmVyIG9mIGl0ZXJhdGlvbnMgZm9yIHdlYWtyZWYgdGVzdHMKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL21lZGlhL21lZGlhLXNvdXJjZS9jb250ZW50L3Rlc3QtdnA5LW1hbmlmZXN0Lmpzb24gYi9M
YXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvY29udGVudC90ZXN0LXZwOS1tYW5pZmVzdC5q
c29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmE0N2Q5NzdhMzdiYjNiNGM3YTU2NTQ1NDM2OTRhMjQwZmY4MDQyNzIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvY29udGVu
dC90ZXN0LXZwOS1tYW5pZmVzdC5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworCSJ1cmwiOiAiY29u
dGVudC90ZXN0LXZwOS53ZWJtIiwKKwkidHlwZSI6ICJ2aWRlby93ZWJtOyBjb2RlY3M9XCJ2cDA5
LjAwLjEwLjA4LjAxXCIiLAorCSJpbml0IjogeyAib2Zmc2V0IjogMCwgInNpemUiOiA2MjkgfSwK
KwkiZHVyYXRpb24iOiAyLAorCSJtZWRpYSI6IFsgCisJCXsgIm9mZnNldCI6IDYyOSwgInNpemUi
OiA0MzcyNCwgInRpbWVzdGFtcCI6IDAsICJkdXJhdGlvbiI6IDJ9CisJXQorfQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNv
dXJjZS9jb250ZW50L3Rlc3QtdnA5LndlYm0gYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3Vy
Y2UvY29udGVudC90ZXN0LXZwOS53ZWJtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2M2RmZGFhYzcxMTIyZWI1YTM5
MmE5Y2EyNTVlNmMxOTZjMzhlOTgKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDQ0MzUzCnpjbWQ0
MlE7O3JBKD44aCEqNFZhZitxUH1ud3IkJjxITVZXcnZqJUh5VG1TUVomJTN8YXxHX0ByNjxyO2Yt
SWJadwp6bTY/NHw1bldpS3lUdzMme343b35WU3p3R0ZhT05AS3YxRUZLblM2cjVPLTR9VGNQa2tW
ND1gSlU8fkJ8Xk05QXQKektxMU96eTlqWDBjMTBeIWdgaTRTbmtpUVk5PzVwYXtHKnwlKUxKVzcy
TFRjUHQwSmlrbmcyKCVgJlkkTD8pdU4kCno+WntCRDJGP0NBX1d2Kk17fmA4WW1gcWVfNFotazIw
PHI8SUdLT3d1dG43M2cleWYobDRDO2Rhdz1OUEhBJkBXZAp6S1d6UyFpMnF2aSpaeDt2VE1Hbm85
dGl9PjI/UCtlPE9JOWduU19PXj44bU1sMV91SFc5fFZVMGR5aVl+e2RYLT8KemVHcmc5WFcoc0NB
bjw+Wl99ezApJmQmZHA9IzJhU0QqPz5NfDBgak03S2UrPDNDb0whRHY1O3UtXmwqZ2pfLWYlCnpL
I2wpX14xcnJafDhMdk9lXj9zLSE7K0VWS2ErdkwjP3J7bSFHcVMjZiVBWDthUSVQeUFyZFcpNUsm
YlVSRlJhSQp6NkE0ZFlWQnFAQyNZRCZPe3xvPkNVJTF1dlUmT3pRUFhZbk9qJmd3akt0UGFXdW4r
K0c3VmE1Xmc5SGFkMXB2azEKenptb3MqYW49WEZpUioteXtAMmV3XiFzTHU1QjwpTWUoWU8oPXpE
a0tqYz9+Tzd5SWt4cjRLKiNuLTIxfF9rPDdzCnpPXmJhMEpBVU4jaGtWTn5DI2h+dV55bUNKVS1U
PldpcUMpYUxMWCU3IXs3M3s3cmYje3BTO3sjekdyVnw/Mm5KVgp6X3RqNCtaK1k3bntmRj9AbzI9
S0I+fXVhfGNOOyhkbm0xblZyQkNKKVImY2crPjBgWHtRamU/cSV0NDcpbm5idGMKemxgaldTWTU+
NmhmeUJjUkghNW5fUHNXWmR6ciNRZ1lLcUYyVDY5VT1lZWRQanhYdTxrYDEtbl5iVkNHS14/UlRG
CnooPXhfNSp0XmB5TT43blB5NXlPU0gpbEApdiQyKnpMYmhQYTFAdSFAPWBxfW5xc3x9PUs+M1F5
QjxkVT01ajQ1NQp6VEk4VzxxdCVTRCRDe2w/Pl9+Q0RRflBxODA4e0haNzNjTiFGNklxI3FLdztm
PE1mSytpNjNfLSNtYUJvRlcrZyMKeip7MCM0SzlxdyQkZWF1XlpsZTg+YUw9RVNHKz1OdD9KQDRB
SERkNDlzOytgOHcjMD0kaXF0KHp0ITw9QyR1Znw4Cnp0IXphKzdxKFpVMXBpRDdebEZkaW4xdUwm
YnZmeU9UKWJoPVI0cz5fMWBle0htb2ZUR05XKC1geXdAaDVRa19VZAp6YFdHPiNubSZXUFl5SFp6
b2UmVCE/d2RXeU1CYFhmS05nfTdyZnpHclFhIyNGOF4jcGZtWWl2ajhPbGNSVkM9KUEKelhoM29V
Rit9aElMaXI+Wi1zOUpwal8mQXhvbkk+b0J+Yj40PUBKdzZUeythc2hrP0k0JlI2OCRGcitPI1I+
ej8zCnpmdWtAdXR+N3NzUlkjdHEmSHdPV3t5Rn1MQytPbjxII1ItYDFxJVlxNDUyTmBmOT8ycWJZ
NiM5MmBVam4yZ2syeQp6eGJkTSU4R2hENVQ5cF93NnBhcj4qUChEKnkxITdKPm0mT35WbH1WX3At
PCZPMipudV4rcDhGYi1PMGZZJCNFZzcKejB1UEg3MGolSXxpS2ZCd0pXUkdfYHRqTkEoUEBtVDU+
azg0Uis/PTJoTHRAYCsmYng2ZllRITdKX0NtX3U9U3psCnpjTHtvNTV2NzF+SyFVWU9TTUBefW5O
QiYocUtXTE1xViN0NXMqJHRMKzlFWitOM0lZa3cwM0NjUjdwTUVeeVVwewp6Y1AhTWkrVWdmczZG
RnFwRnRoRTRYOGo4Mz9LTnFsdCRBRm0/ej9PNFJ1KUBHP19BPDxXO2Jad0R1Wkg9WnZIKnoKejNR
dz5TUSV0SG5CQ0BAQyRZa35AdnlYfWkqTDBIOHpKb3hXSV9PMVI7RkEkZnM5ZFh0WWh2dkdGbVdQ
Yk1yTiZFCnpeTnY1ZklsQGFpa35xfm09WldRfnNFc2soYT5OJUk5PWQ5bDA7aTJFXlZNaStBcm9l
dkRKLX1tQztANjZUUSQlcgp6Mil8U05KbFlyTUR0QUE5PGNvOGFHb0lQUys3VEMyYiFwfjdEQEoy
RnpLUDJzS0V2TmRSQ05kUElZYDxKdndNNHsKem5zWUVHais9MTFAWHBISTVmMTlwbj44TyVkRnM2
UVM4TVg+RTU5K1A8PzE7YF5mditnXkNAdUwhQ0E+dHleT30yCno5aF5SPXV+fjF4Tz90RkxFeS1n
VVdzKzg8MSRwLUdCUGxUNnVyYD1IKTBwKn1HPnk5UkM1PUBoTG08b3tYX3RuQAp6blgqX3pyKGhn
KElFcm57d0loZnEoIWhXaW8jVj8la18tbWRfXlhHOT0rPmRNT1N8YS0jaUl7entoKUFOJjhMVS0K
eil+R09seG1YVTYhZT1lJSRjKy0ocyUqKmYhVjZpdjROKWRkRkNRbXhgczdTe1ZYdF8tdkp+aCYj
cUdMLWYleyVOCnpDND82bURfQTxVKk9wKWc5KlotJUlFNGEjPmdPc3xDVHEmdW4yYGFedjk3TEhZ
VztDN2RqQX1mS0tKJk4jNn1nXwp6XnU1c0pIeXlmTSZ8SklVKmxxJjZTOVFoOHt0OEcyY05Jb1ko
K09IRG5COXFgZDx3UGp2YV5ycXo0KytDT3RiNlMKeiEoTjJgdjlTN1EmQTFQISt+TWApUVo2Rmxq
Sn1qUEwmUDBqJSk5LUJWeTJvMGY7SHglKTk2OyU9e0FSciNibW57CnpKQkVZSlQ0O0VuMTh9VyRa
RzR9TSNQKSh4OXdZU3ArUEBPbzBXdEN2RHpuNS1mQDMlKGBhTkFILTZATE0jI0hFMgp6SEJWVT9T
YUFaSj1ELXwoYjxKMlBeNXE0O2ZeRXE4c0YkaHxqRFFfYW1EYW5HN1glJkk9M1U4dE5kWiUmbH1I
X1QKemhZQ2ZMPz9PcGtYflh1Ni1LfERHZkRtczhZZjlGSSUjJnljYEpnZjxWKTJLNVUrYDFVPFZD
NndQajcqIXZZXkxoCno4ejRAMnNgVCNqY0NONihzX3AqaDdleXdJMndgPl5jRDlQaCYrfVheWERu
WGYxIVY8c3hHfl5aPj0lanNPNzxPXwp6dGtwNHckeT89S0RWNEBjSTZ+SkAwIT9YWT5pcXJpKnNm
SmxaLVVpSW5nfkFpUG41I2JmPV80cVRUXjEzS1VGMisKeiZ5NldYVi18bSZgRUFzfkQ0PkY7JWN7
aiQqeX1lckxhZGo1KiNgTjRfUiVXPmhRWTB+O1UhaiQjb2pqQl8mY0w/CnpwVGVqfW1Yb056QF8p
Zjs4QU5WPFNGKyNqcTBKcXczYkRzQTkmalBZVm93WihuNV5xbTdBOHB1O3R9M2RfY15BcAp6bUVU
SG1TKylPc29yeFlaVW9aPylKTD1hKnY4IyhPQ19Mazw5O2RNUGdfWmQ8UUhGaCU4NHJDJWk+SjU+
aUQpcVAKej1ldmlsTFd4ISs4dH48KCtyNH45YEtNQiFvaCprSj1KeDgyXl49I1o+Kig9TTMlTGFG
NlgmMClVNl5LVnhFWCUtCnoxWXJCYmRnWThUNj1Nck1Vekw+cHVJZ3ZjaWhYU0g3bjwoJGN2SXUp
bDcjV25oZDtjTWxjTmN4VXVHNmt7aSgxVAp6QVFxI2trYGRuK0A0NkJLbU47bHFIeCVSTnNqUDhS
M1EtKyhkNVl7bjJQfk1OVThDaylFJVQ0Tj5sSTIofDd2SW0Kem1vPmhFbnxfS3pNSVFQUjQ1XnNw
RHtDRCtJRFJhe2Y/fnt0YUl+TEZTYkhnKE1vYSh4YG0rNTRSNjNSTzxoXmp9CnpMNkdsVW12a0xQ
Mk1KI3BhSCtqRFh+XkdVbT17MXZoJmVWTGtzViVKWGU3fDR1bkkrYTZEJU1ucXs7N05EZi1iOAp6
SUxFV0NXIVg5Yk1LKkNSckhVUldKRSE5ME1yeXBjM2xJJEQ8TU9zJUhLUW1LdE4jUWBjfEhDUnI+
a1djRW5ENE0Kek5pbXhJaEtgVjBAKT9gTGplWUE2NG5uITEyQ0p4WTE5ezVjaSFASX5PZ0Upa3oq
a345RTViPSgyaTM4bTxaN0daCno7fXB6ZEU4JDYwUD9lTGNlQWQlfG1IQGdzUCVsd0xlNSFMczNH
eHhTT1YrKEBFaj5XKnB+JEVzcGcoSkNfOWh5fQp6c0VSSlNtSjUkaC00e0FKc1R9ZzZ7OGg1IXNa
OyU/Oyt3PkxrJE4oN2BhcU4laGplIXloS0luWHlUb0xhcTg+dzUKekxzRDY4VG10bnQxVHlqIyRj
WSomZWRaP2Y9djE1VEtXcUE8YXxMbTQ/NzRhclhPKCFwRjhET2NeP0lmMkdtPTxiCnpAOWNqPzQ+
PmkyJn5KcV9ZTystTyNLdFJILXd8dDg2WX1rMmRBdUU/QyVvJSNUNVZtMEB3JTwtKVIpSztfRHc1
cAp6c25uK0I9P0Z6djd7ZHJXJlV5MGRIRmQwJUdUQ2ZxVzF4Sj9XdkpBTmU2TFE3cHJ6biRhamJG
azZ9U0Q1YnREMTEKeiVzMW9NZVBlYTlXQzBMaVB6O2RWSjYpQz85cXFIKjtIU3d+NDBmMElmeUhw
TlEpNE4ydktSMlkjM2x5YEolUEBOCnpEcER9aWhxN1VJYkd3JHBIJDZHKmkpIyVNKWtqck93Kmo7
N2N4dnZ7NTIyRTdMJlpCZj8mP1BJbzM1RVdoaS07UAp6Xjxud0dnJG9sZmt7az9QKn4jfHFWM0tO
QDE+YiZ5eXE9YT5GIWZDcmY3WnV0TXkxKWMldG09TkJgVnBCTkRiJSsKekZScHRSRnZ7fTlRUm49
SjRVKkgwWjw7JjMweFR+V14pVE5PenpxcjcwZmlQSzRwVlJKXz48Uj5VfilBUW55RiZPCnpJfDty
MWNxZ0dwT3pNV2JScilpMkE8NHY7TXp8c25nbTZ8IV5kcil6Vz0tJWJFUUUpVl5tazBockZqO1FD
c21vQAp6WFl5UzZzaW19QSpOfmZDT3Q5LTc7MHp4M2slQVRMNCN7Umw/dT9ZMENQaEw9Tkg5dHdD
elFEYVlQS15hclYxSHUKeko5V0spdlRCIVpscyhwWjJMNkwpSFZIQTQmNCYmKjh+JTYzbF81flEl
a05xcWQmWGIzPD1ueH5ES08ybT5BV1ZJCnpDSXdUfXZrbGIjYSQrUShhMFFwdGZhbUo1TXBObFlo
YWdlUzRyP0gpWWQoalZTfGUtM1UtQ2U+Sk1vMjZGOFVXMAp6aUM+Iz5YQyFCbmIyZT9qaF5rKE1B
cmh4eSYjZkI+Plp1TUc4YEVMWEdDa1VFJUN3dUhie2QrR3cjaiM/T2NTaz4KektwUEhjVyo8bmtU
NXltK2s4UlQ5bENTRF5sfD07VUNSQ3NVa2VQNntSXktjUU1yNW9HX0UlSnFOOUVVfFYoTXNaCnpf
MXRMQUhSJU0kI0BvdXBidj5uUmd5WmJEQlUqUV9xentYRF5ySXNqI3JFdWY3ZT18JWoyeExmdFg/
PlVJMnx3eAp6d1dHSXA3KkleKXs0dTV+OUlCRH5NenNoXjJ3Y1l4PmFidkRQTFd4SzB+JUdjUmcq
fVoyRTdDTFIySCsxUSpeTU8KekBHNDw2IUYxWkExS3V8cEtTUUF4PnJ1bEs0SEtQR1JZTWgmcHxN
cFdRTHJmOTNQTjw5b0xrYDskNX1lVVlUMU9lCnpZRTltfU9pWW8+UFM0MnBkQCk8cEUrcSh8aTxB
UjNgcG1GTWFTK3EyT0puMiViKXRMejZqbV48PSM1JG0zano1aAp6RjZ8SGUzVCg/XnBxMWskKm8w
Vkh5NztMZEd7SUsmRihXfkNtbF5TfDRlVHkjWUZNdiZ2ZGlxJD5ob1plfDNNUjUKelo+WHE4dHdG
a0E3M0NZblFGN04mM3N6ZXgtQSlhe3BMfTdDVmliTkFTS09CQ0hWQzI3VXtYcV9HOEFKN2slcnxp
Cnp1bGYtQ3c5QjIzTCQzakA8VzRpRU8pMTQ+P1JrJkU2QDF9OCludVJXMlRKMj0xYUMxRk5XakMl
eDt6dG52eF9pNwp6N0s0ZXlLdkNsT1F0Y35HYF4pVENFVS1WKDA1UiN4K2hPLX5HOGkmZHJ8XiNk
JT9aUV42TzVFRzVUVkVpU0stV3cKelUhdEp7Sz9UXlVnVjlNQWgxXkFhZHJseldCQ0YmYyVURmM8
NSRlcV9vYC1JUnllK3BpX0VsNyVUJFc/NzNHTX1CCnpKWlpoU3h6Yj9xWHM3VE1YUTRRcTBKTDI2
ZmJxKV9DQXUjeTNnK1BRRXZ+ZlpuX1pfRjBpTWtfWi1pSk5wRS0zJgp6RzRRazBuJllyZlpuQG1Z
QDxxdGohX3pQaVUpPT9Qc0hCcHFDMz5DfGI1WE9XaTk1PEFRI0YxM2txeSRPJjlqc30Keno4Rn09
NCM3c3heKW5rUGs+PH5fdzdDVW82QVImKk5nOyQldj5pMz9wbyh1bkVgSHJiNihGKVZMfFdyPyZG
SV9VCnozM0ZHSDUkYW89Uz8zT0BWVU9qQFZPM15lM3h3WTklQChobG5DMD8+bFdMSyE5I0ArMFVJ
SXJjeVJMVXFGKWtfWgp6bWxuX0MkZW5WfnNSZyFpb0Q5WSFXVVFgcWFiPWRiSG1jO2V2RHUxT0dy
Snl+VHZqdFBnP0Nfejd2MyNNVHNZTWIKekRFI1NqX0ZZMShEeWZEKGFNZV5UbiUmPEBQODBIaCgq
V2BsczZ8Rmt1amVxd0BQPTZ9WjN7ezdgPys7b3t5UjNOCnpOeC1jakVvUz9ER0loNnNobEUxfm9G
WipKS3U5UnUoLTwyRyM8KHR9Z15JbilFMkxpQ20xX0F5LUdsTn1JcHdnXgp6WWI9N3NJUnxUdF8l
Z0dzWDI4TlNoJlc8V0FkNCNRMT44VWxnTlg9OW44bzJpTnVBdSs+fkN6c3ZVdnArVWslQWQKeml7
V2lYUnJ0UH1YZ3xsaGJPU3pfN0N2dCR4OGR7d2t1KWZ0dnskeSF0KklpVzszaHRFXmw3SyRIfUgo
N3ZAPncxCnp7Rn5QaSZUeypTVFJUTVdjK2R7WVhRVUlDPldtX2VOY1U+Y0RnLW8rdEsmc3dhMkFU
eCh7azkjRlNeWEpYano/Swp6TlRWJjdPVz08VjhYZSQoZC1TNjJAdDkzJWRCQ0tMeUgyYzI/LUBa
OWh8cCEjbk0xXmNxYnlSMGhWNlhFMWR0YXwKenR0YDZfOTQ1MTs0WmtjRldVXzwhdTl7KTZ0e0NF
MDZ0P1cmK2FlRipsTTlnd3VAbU5mVmFJXzBDKFFhWWp1NHZECnpCSl5ATjY/U0skQlFCRExsejV1
RjAlOzlOPnErMHRPek9fQXRQQSlDSF5oa2sjT2ZgaSg0WCN4SCg0TDlPIzU+bQp6S3RuTWM8RFpn
MUFeUjZYNkJYeVRBKE8qYjkqOVYtPjh+TlJkRUlnJnZMVkJNKUV4dmUqQ2d7Rm09JUhJR2NPYUcK
ejJGIUMyIzdSdVc2R1k8fkFySDVDR2UpV0tOdHtgNzlsTEdmOVcocGolLSheVnUhITJDayg9LWZj
fElZbiNOO3VeCnpoVzVXLTBeekpvM0sqcXlYWUZVIzJjdlpIcSFwYEE2KkpOZktWWHBKNU9JfTlw
KztRNkJWYU1UajdtVWVNPSotbQp6WCtZODUrI1NLelZTWW8jYHpUZztOR216QG5oMiFFZ3x9aXUl
U2BjOHhnXns2bmxVJGlXVmUyWnt1QlBHSkk7K2sKenU8eXo9S1MkfHVNUEpjb3ZZSE9QUDIqQj8h
aSY/VUwtSW8jPUVnOW1FZzI5WGk8QEpiR21uZ0JPUU0wT2dScmU3CnpQZ14mYFdWNW9rT09UP0Ri
bGZ3fUgpMmxQIzQ9QkVjeG89aUdMaDRGT1pzOTdufTxJIUU7NlMhZyUjezFkbUJLIQp6UD1xPz16
dG51cTd6VXk+WG1xSlB4VmVtPV91THw7NkpRKXUpe080aSo3aythTykxQENsZ0lAK1RYMS0kSjFS
YGMKenM1YjNGKWQrMVlwcTw5PChvcl9WbkJASEhqIzJzUmAyPj4mKykpfDIzQztWSCRaK3BIeURa
bitReSRZNXVjWiFtCnpIbilDZFpSQj9DRGNRKUlJWmJVd0V7Uyh+Qld0JmYwYzJFRk1kPWdjSnJP
TmZweCQrY3pOdys9OWlqRjgoSEdCNwp6dG1CYSVHPmRWdjUlZG1ee0lqPD1jMSg9ZEQ9UHlHP1hs
PnVYOVg9QEckb3Bgcj5PYEl5S3F6P2Y7ZDMwY3dkKHIKenoqWXt7UlZBcDB1ZVBHcUkkfGc7RjQj
dmchfCs9dVJGJFkraERmJDI/MWlKa3BYS0J5UERnUyV1SV9OKGMjVlVwCnpvazY4d24rKShRPWI0
VEoxYiElMkw2JXBxNz90Mns0YT9hLTtZe0Y9JTwwY0tDd1M3Xkh0cDAydjNTQzg/YXw0dAp6eWJH
MEFxeE1NeG07KnN2b15lI3E2fV5lZG1neUFHM2E4elRtR2F0TWNxKVBZZi1mO2NKO3s2S1kkYSh8
cnM4MTQKek1nK2dGLXdxfDBKTiZlTk0jZHEjX09odG5jTlNWPEFrcisjQGpZYElxIWE1eG0rRzs7
M1pwIXQjO0h5OEpzfHpXCnoxfHhsJDtlbXF1QzlJdDNNOE1hNTQldHklYUlFbzkjVG9Gc1A8Y2Bl
ZkxYI1VlKVBGKHMydGFuZ24/UzlGaWFNVQp6djA+cGI0N21EIUBudHhtaytWfCY7VkllPEMmNmB1
YEMlNSNNVzAyUl9oJGY/KUkzOCFGWHhKZCMwcjduaShyKjEKemVsUndue1ZTTV87QUN3a3o4S1V7
PX1RLUUoLUJ7azlnPkVGcVBaYzUlc09FNmx8QDhwPHwlX1p1S2pNJkVMTk9rCnpFNDVeeEtlRUl5
MW9nZmc2NG4+JEx8eyo9NmJuNjhAOSh5cmM0YHc1PStxMmErJGBGSDdeOzgqd2lYT0tCM1ZnJgp6
RFlnSzZqXlAmd2x2ak96Zm1UUWJMayk7SF9ZZHMoaCU/O2Nlbip6TUx8KD13WXAhZGBkWWlpPFFU
Yko9TGJUOFgKenF8e2VRTkJkfE5BVyNrZT50KXVOJGkhV0lQdT9yeGM+QTdEM3d5eE1hQmxiX29U
SXh9cjM4S0MxblBsKFhLRCYlCnowSThkXiFZKkI9YHMzYllIZDUlS3owZSRaVEdZWVZUJUhKNV42
WSgjcUpBVEkwTTslUFE9ejBXdD9QUlQ/MDV8KQp6YntGQlk+JTgtbFQjbDsjdFRJdjkpVmRCSk0w
eCNtTyZobVYqRGdWJnhNKXs3RFFNayRSSFU8Uj88fERQYmo8Q3YKekwtbkdkJnd6JnhOO01HcUY8
X1ZwTzBrLX1een0rY3JLe0RCKjZQOUFhZEB0fCE1X3skRylvJXpiZXk5XnR9IUMlCno2KXlodEVf
SD5RYUtYTmNZKzZKaEwpcVd1SndNZDZTPWVQWkN1eHBXZFBRXylnSzJQdStJIVJRaWxqdmBLSDB2
aAp6ZjF1NGcrdHE9T2UzYz5DYXJyNHhnZlpodElRZGVId2Z8WkFPVChwbz5mdFhyd0N8fEd0R2JP
WTRIU0NweHRwNzsKeklYRmxqaVY0QmhvRFNoIT5aP0YrPHU5OTJacXZ8MihzUF5vWFpzWUErd3R4
M2dEJj5WczQ5Xm0xKWprWU5gU0BTCnp4X1JYajV8WjxIKFZ1SGxfIVc5Knd2TXF6SnkpSXpyO3c3
P1AtK2lYaDQ7YWRNbWhnYHJwKyM5OW9SaU8xSStxYgp6U3NKPChtNTYhMW1LcDY1LUFqNXRKTFZR
YTBmfT43KX1YU3Noa2tTTjI1cUdGdjE3Iy18TlRRaD9oJVVSWiFKJW8KendYKkdDSiZ5ZE03WiNA
NXZIPHUyKjlXMipjRSk8KDRZZTFQckEmJSl4a21NQWhUdUxhVFdmTHs7U2plK2t8MnM5CnpDY3Bm
eDVOK0IqZyt6YTI0aShZNDJkUyE7Oyp2KlNDd01oKiVSZSM7Rj4raUh3R2JHeDdURTJxWUopOF5W
MVF4fgp6TjhxLT9WRT5vP24/Ry00TW5OXkpFIXJOeyl8S1E3ajU5XlRNfU4xZUJZN34qTSZAe09w
RDEqSCVMWVhAVlg2VkEKems2Rld8Un50a3opN1pEeHp8TE5oMH0/Kk4tM05YYlNRbGRxWlRQOH1v
NFh8WDx2YHckT01IYTMwSGVGSEo0YSQrCnpEKVVHckJwYntReW1WdXs8Zmd6Yy1QNTVFNHdNbiVo
ZS1JM01aQjtpISNAWG17ZH5Jb1QjRnMkNmg4NnhjMilKXgp6UWFgTWw5WTlvTk5IPlI5UWdKO3Ar
OTtIQDtRI3ZUUkJ3K3lCbnBYTUlIYl9PPV9JYztjRkNIPGJgQz9GbERhWHgKem9LWj95R3NHbipr
V250MT5hMzlQOGspYWtabHNyUXI7M1BITUpxUVBlXjEqfHc4RSgjZlBpZFVZallZUEMqKSgxCnpt
VDtMa0xpOTJHZj8xKiVuITNmJWRgTTFmU30zfHMlJmdBbHRaTHl4KDUybkA5QH1MNSpOZHl5M0tQ
NlYxUHdVdAp6ND9ZWEEzQjNRWElSYF5LPTZaIUIzZi0+aGdVJT1ZVXBIT1pIVU5pJHtgO2ZTdXUp
LXhvVDt+d1o1RS1XJGtkeG0Kejd+I2BsQX1pRWQqYzEmd1Vsdl90MFNfJTJjP2UzTmkmMHJKZkBs
V0BwNUFUZlhPMElOVUVecX1WSk5EIVJHaU52CnpubChsXyVYaUclKysjYTVMRnspO0x3dT1HVVRG
RGIoJm5sbm5PVktaWEImak9lIVIjVFZAdTdQKkwzaF9nSUZLWgp6ZlR1LSg1djBmRncyQlc4bE9q
YS0tTyk3UEV1X2RJOFZ5V3JvNGpnflV5UCFqPDY7WisqY3RtZVJ2PHpKTndea14KelkxfVBKMUV2
T3ZZR0J8dm1uS1hXJTVzbyN5YFZwVkVxSk4tSjNkV1VQbGRkRWMjRyQmWiFVbyNibnRATzYofmFV
CnpQO3k8VFpmMUVnV21seFl3UTY9PHNVIzZTNSotbjdfTEI8JDFoblEydHV3ckViQ3RJK2Ere3ZK
IVQ4cFNlSFpyZgp6SF48SXUtTTBkRntMYVkyTEgkQDEyalViazxPKV5Gaj97aWc7dFJ8P15QYzdQ
Q0taWXYrMlhuO2ZXdFgpK0F2TmIKektLO3EkeT91elRBbyt+Yyo9ZSZvPy1yUnkrfSUhcThvdUVk
Sn5MQlBPc15OSj55Qk4rKiora3ltNDdyNXJ+WHJ4CnptZjNFNU4kLSMmO2B3OStnWHltVC19OHgh
ODhodjxALWlZS00rWXc4YF5kdCQjai1ublBId19vd1ZRWWVFS3JARgp6MUNjQUE4LVVCUU5NMmZF
eWw+Qmk/QlVeUk5pUXQ0OyZFSXgzZHdRdWhHcW87bTgrTlArSXg2aVhCcFBkZ3RFaHkKenUqQldh
MFhIRGlGPGErVFR+fCU0aShKSlZ2fCE4JTk9cU02RXxaMThubTlVJjJWXzYwKjdNSEpyRmp1Zld8
PUt+CnoxbG5mRnVrQWRTSjtyWkhyRis1alhNJnJDeFQrcElARUM5YUpsK3tqQUUjYGVmODdqeChn
X1VyZiNCIzBlM2ghVwp6ZWNURjw8ckhUfDF9d1J8a09lX1o2PyUjTGZ5S1p8YWB+azZxNzlOVHtO
JkdPViFQRkF3dlhqcDwhVFdobVBiYmIKeiMkcGQ4WnpZQD0tVS0+Vj96YCRLKDA4YiFCRyMjTiFG
b3hKVW1YPDU3Q2chaWx7TiNTNiMjfD9reTU+Zmp+JHcrCnp6I2AwMTY/YSFEeFEhV0N5bG9afWsh
QiEqTSUoeTEqcT1JaW5IIX0hJGhqS2dUMTJTJnh1dVNoRiNObEpyMEYtZwp6dGJ4e1A1RTgwRlA2
cXtidUU8ZCFtIUlqWkYleU10Slg5THRSQXhOQV5ONUVfQXV+WUU4fmg/VlZwQjljRDclbisKejVF
cUpRdit2a0Aka2I4NT4tcCs5WEJJUGZ4SFFHUkV2Vn59a3RBJHZtQ0xsN05CR1Jee0hnPThOc0Ao
fFFDRUBoCnpRT01TYk9QcDFhdTYycVNiOzFzTWV1eTRQSilWOSFAOChCMGhYeWEleEJMRlhYIU0r
eWY5PUd8djN+eFE0VW4jRAp6PVBaYDk7YXdAajUrPShJTyVEPGVZJjFQVUVSJEwwNkBsWV50YGRs
ZntWLSlPSmZ2NUE0QX55ZDBVWXFeTkAqOyMKeiM1ZGR2eVFeWXhJJD5GPjR3OVQxeiZ4PVJLUV9z
O142azN9O2JFMUtQVmVjMmA7SmlFQ3tTRytLd3ZJQ2p3eUxuCnpGN0N3OVpsUlNrdWYzPUxfYUcj
TTJZaUYzKUFLIzFPcTRRZHtfZFZuV249MHlyP2JNUzsqWD1nJXUzWjdhM35Bdwp6PkVTTyFXbHhj
K2ZZUzFxJSVTYFNSNHUxM15nZHYoeW05UTJuYjJBNl9uKj9FbSptbSs5JVcobnkrKlAxXnwpKDIK
enVaeiF7X25zdz93YGl3KFVwTFNSdjFGcyY+U05Hbk9MKDVga2U0c2JQJV8lPFUoQlFxY1Qoe3F7
eWAhUVJfbDQ3CnpgOXdjPzJiJWFMd1cpPCNvY2VFbV9ObDhzYHN8RCleX2lidGZmMF9aWFdncSQ1
P0Fuej1AcD4tPmhqen4jM0BMVAp6QDN4M2k3ZGtkJDAqemU2Yzk+I31yPmslKDtVMCExe3NzIV41
YVpoT1ZiaXVQLTMhciNOJjYkI01nb3tPO3VNLWgKejl6YVM5aEdVRiYlfihhKUs2T0teSVQ5QWNO
MyROTmRYV3ttUClCODY9K3VAeyo9OHJicD0rbUFZOHI3RjlXQ35FCnpPd0V1fntHVXVZbzMkND9L
VX5vaTcwJD5LRHNkflEmLWBtXmF3JWBpV1cjb1NMRHlrcTMjNSY5KF51KjhfRSttZwp6QSFBUX17
ajZ9VzklSUk4RCt5K2h3QHgoOWp9M3J+ZlUtZHdOKW5RYXM9Nz9LIzhYQTA0MHBuK21heG48dFVF
TEkKenR4OFF8cHZFMylvNFhoUHRkVmk4NHZBeX5vMUVQUnl0YU9Da0J7QDhVS1IjUCpaWTd8dEJX
OCViUVhPWjlpRCQ+Cno5YFV4TFJ6VT4+d1dkRFAkNS16RXJNUE5GeW82an51N150XyhNM3xKdGdz
NjlSKXhJYjEzYE1hJj1JTjErM1NvbAp6QmgxYmhYWTYyLTk0c09CPFFpI05EcTVWcV5XelpDK3RS
IWd3Qz1PNjs9UUxxVXVQSmhsYHdPVntjaHBUeGBQOy0KenE+ZTJPfEFpc1dTdFZkTmBRe0lyeF5S
S3VBOFlJXjwjIUQpdTBBZk95V3MjaSojNTA+USZUeFg0MTJPRlE1SVQlCnpkZjlgOCs/PCNBbXMy
UDwtV09ufjZMKCFBYWshTk58OHFDcVFjWF5FdypqX0dxc3pFQjF+ayl7eD5QeT55Qz4mOQp6PXhs
JkBGZ1Jsd04rNiRCZX1feHpfTUxgP1RINEc5TUZjNXojKktHfGhfbCZaVXtgPzJ2OG4yfip7QG47
Z2kkNyQKemBISUwjSVAhfndrfjV6Km4/WDtteWBHfEBhb29fYCs7ISF9UWshcEpkSStKTmpxLWZv
Nz5STT9vMHZINVBIYzNZCnp4JU1GJUFYTDtpSlZgI15OP2lTNiljM2QqSSVCbVBWV3glPG0tSnc/
Yk5TOyMhOFNwK0o8WVdyNXpnRjRUaDdXLQp6Y3s0cmQzdXl2d0A/I2lCPnlgaCk4fjhvUWdVYVE+
OGJsaGdxWH4wa0pLQGUxKkNsUj1Xd3l2WGxEI2wrZDFWI2IKejRfQVIhdn51QUZDUz9yMXMtKCNG
cWBYUSNhYmRPYzxhVmYlRSVidUdGLX0/dm9vYn13aG12aSpgUGItaGx3KVItCnpoSllDN0hsMCYx
KXJQPUVpMXVkODxeZDByd0grQ2lBREdeTU5sWFBjd1htciYlKi15ZFRYKHRVQkYydSluISpyKgp6
Z29UKkNhKCE5ZEdoYjtTMUd1cDVYeCNPSmUjLWhgcSZTcjJITiFPMilPZ1BPWTZ1TWEqLUd3T2Ry
ZyV8R3twT18KenlyeFdJem5zJSR2N2xiZEN4YF8pMFp+V2I9ZElBfnN3OU9gWDc/VjNYcD56LWFt
RjN3MXZDRVViMiskaFlDVlhICnphT1gwbWFHdCR4QHx6e3VpbHxAU3V+eDtwODA2U3EybntMK1p9
cUMhKE4jQTxpQlcodGs7RldmZ1gyfH4waz9fNQp6dyl+YVd7c05XciV9VDRySm92UV81eD5STFA5
I3c9NVNtdWJUPEYkZj5VRndxNGA5bXczan5kZjZmdGBOe3pWdD0KenlYckRAYktpfng1dzJhNENj
e298O3U1SCFlVFg5NGVlPFlJUnhzK0lsbSZzTDgmUys2UmNXcHRReUhsV2w2aXY4CnoybkAkT2pP
MzB5MCF6MT8rfGAyX09STF94bDZHZWdOWi0lUlc2K19pZ19ZPUI5MUFsYWVMaiMpV1d2VnxZcmdw
ZQp6akkkYD9pIXRrdkxjfDx1RVU8Qz1FWHU2bmRCRlRyR1g3Y184fEJnMklpXllBTX45cmNLQjI1
I0p5ZXYmUypzYXIKekRueypqQTNwaEdLPGhFfFhRYGhLSHRIJn1gbVZ8Q1M+NVRrPUBCWW94cXZo
U0lsQnM8Uih2VDEoUnZKRUBKfTthCnpiQW4xSFpBaFZ5TWxgSWMoR1B5Xmx+I0BrO1NFZ0Z2Z0wz
d3Vve1VyRD4mMzJCNW9mYUpiJXw7bCk8aUNle0xTWQp6eF5jX0VUP1A/dyNoOTFsRW1+M188YGst
VFh3K1RUJWlqKiVTS0dLS2VPd0QzPD1YUyYqXiY8RUheSHlMM1BeK2AKejIkaHNCZGlFO1VuQ2ZW
cnVOPVdVZD14U0JKQlJjOGNIWEppVTx1SCpRM0dkPiNfQTt3OE1QelVve2RvITMxfjZSCnpKI0xT
LVJSMmAtRG9OdmxUclprajsxfDlAcjs7NFAlZnAyclMhKmhrQUdPVzR5RC1AXzFqP31YayFjP1Bw
KGZNdAp6TU5SY1hAK2cmbzh7N0BVeSQtNTE5VzEhck5qMGRWQTZvRXwhVkwpUSo5aEhsQWo2Zl88
RzVnME8yMlhCJHdId1EKeit6ZkEoOT5ZNmclZ2h0ej99WWE4T008SVEhVE1uS1I/dlMkSUpHU25e
d0lLTS1XVDJ6SUVtTlRaSnZqI3BaT2ktCnopWUJoUXUyc0hNaXYpcDFfS1A2ZG18NU1oX1Fyajsy
dV5xYitjbnRebDJqIT9zKGFPKT1OfDRYS2xXcXdtfUsqegp6YG1UUzcmTSRNQkViME9eZk5Tazx2
Rm5tI1I2VypkJWVQfERXeDVTNkJ5UGhtbHtmJkE2Qzw4JUw4V3F8R2ReMXoKeik5M2R+O0dCJjt4
ZCltaHEwSFVjdWZHIX5RbXMzQ2JqKFolcGZvY15TTXBzYDk/e3gyRnE/V0FJb2QlKUprb0MxCnpE
NjBJbzFuKCpGNWV8QD51M09nRUFNfmwrbENRIyVUV3VOX297JWFgalBwbjc9b04yQWgkcG4hejNR
YyFDN0F7SQp6VllkbndKPT0kNEo+YmRtWXU7dks9SVghWGBDISRWa21ieFFGdWhSNjslMGxONSVR
MHReM2hqMno+PEBiPGlJbSoKenVSRyMlNVFORyQmVVVLPUNLanU8Y3sqbDMjTWh6cjlPcz5GWmt9
YFpzM2okbT1ZQiozamRVR3V5WmQ5bnVGNWpTCnomMUJxcFFFNVh5TX1rbHFXWko8OV49VzA7ZXJs
KENidyVXY3U4Z1VgbDMwQHtfb197P3ptXkdZaWQldUh0WkRBYAp6ZHxzSkBsSmN5ZTtTdTEhYy0l
dEZfSzwkNj9iZUo8cHp2QXNxNzFmckxPKXkyZHVvbEpAd3A2M281R0hIZCRySWsKeno8TFdxVTBH
QV9MKmgzaj4lQTExOXVmczMqckBCfkx0dGk5VW5rIWZuPnU5SlY+Vzs2RGBONXVmITJadyhIYz00
CnpIJjZzS215S054Si00LTRZRm51YTJhMXc1VSRrOGpXPHhHSUFjNSZgYmtkOzk+NjVidi1aZGRa
KUhsbXdhUWVVVQp6MUoyUHlgQlg9c0M9SDgjZ0FwJW1rYjZwSFVUYE1DZFVLP2RwO2JVPypOU2Ip
dyNsWCNla2tRTVQqcyZxTkImeWMKekglNj52Kmh3JHg/Pz5FUnZKS3hvV1omKCFHNV5mMlc+V1g2
QDdZWk9rYylmQSl9JU9tJlEhTWdBUyMleFFrUythCnolazU/PmRHYXFFUHgpcGc/flQ5QiYyNH1W
TVM/YE4kVmo/JXJfckZDJiUoPTBDUVc8JCNXPWxublRycztYWUh6PQp6bjllMn5wcFZAVHBPJk19
SnBZfl4hQ2J8K2JaMX1MQ0sjTjkld191OV5PKFUoM0RkRUoySzU/bzkhXndLQW1JQHoKejRPNTE1
YXY8aDhwU3M5dTZ3U1BZNWsrKEgzOUteTTZ9eFgkME5edW88Y2lUKGFvdWEoeWFIaXtxJnVWdFJ7
K0l1CnpJIVR7bUp8XjIzJVNSb3h4ez1hI1FiZEpsYjBgeGs5YlhtfHZwK3ZmNG8kNmV0YiFOUCpi
bVlFMFdVaC1HaDs+aAp6ZUp7digpdSp6M207e0gzQ3t5eTU5KSp7bzBHQkAkYXs9THpQVXBQZl9V
O2ptZElZaHFIQkxjTl9uQClBOzt1QX0KejY7YXNZVFlkdForI3Z8dVlhRVc4UzAtMzgoJSt5T0x2
ZyhBLW5ncmdFZVo4N0Z1QU9td252UWVJWEZyU296UTYyCnpqKWljcmgpaCt+QShvZ1VeT3lobEAx
UGF9TDQoVW1ZcEhsQSlIZVVQKnQocmwzbztkWTRTelI+UGl6e084ITJwPQp6QHRmQkliPW55VFFo
JUt8IXJXRj5SPjYwWTFuM2RhJmcrQlhOcU9YakpwJnViY1V8VHRfPkt8JDwta31XamNjYiYKeikz
I3omPWhnLXpHUHJxYTRUWEVmSjB9SXtsOUxvLWtseS02ZFE2QGs/ZlRlQHFsYV8hSi1HaDVqZjRJ
I2t8Z2BqCnpvI0djJCZKRWZ7PjF5e2B0dTBPNit5fEphUHdHYjtFWnpYbUAtd2h3KWQzU09RfWpv
PndFTnU5ays/Vkh5R2YqSQp6TlBTcylaTnEraDZMa0hZeDQkczJvczxNYFRrY2c/Y3wzMl8mcEtJ
aSU8cGl1PDdKJU5EdWRZfWJALSEoTU4+KioKeiZmTzEhU1Y/eWxBYGllXmw4SGtRODh3ZmRTT1ZV
d1M3MmBsc0xydzxJMEg8Sm44JHsrYCZpdDxYLUktelFzSy1+Cnp6bFo/cjNjTFI2SGxIQWltQUsk
bCRTYlg8TGNTaU9lP30tfSZUaWR7MmBxYDlyK0ZoPFJPZTFQZ0ptSVIhJTZARwp6UjU2NTY8RmB4
SkJROW96YzNBdCpvJillJWYxZ0N7ZGBVSDJtVHJQKVV7YkZXantsR3d3UCs0bSkleTxaNlNMKGQK
eldUcWcoJDx9Y09HcU9vO144KH02PF9xM1IoMTxxNkc1RGZnalh7bHduQkM7NiokWlp6X3ZeJGBS
cDgjNz5OJXFgCnoqendwKDdDWDNzdTxLRkwwOX51WnxNKDQ9c2E1PXF1Vlg4RTRsS0QtUn1yZ3Ex
MyVzV2R1ekJHeyl2clE5aDJzPwp6SXJsTkM+cCQlfGM4aUQ7OChOeFcyPn56a1g+eWlTVkM+aHBg
fFUyX24wQTIwTmxvTlB0MCNYZFpKVHYrPDdqRk8Kel5gUG0lQFVlVHUjWkR8PnFULUUtTi1HWDMh
QEYmQnp+a2NRJX4wIzRPZFVOP29yXmhGXyRpX0xgXyFTPEoxWSk4CnokaFMxR0ZsZUFxUFJJVjAr
Yih7THpAKGtDRFF2dUcqSjs5ODs0TVdiQzwkJlVBKyp2VEMwZjBmUWh4PnZzNCU3VQp6dnhEclhy
ZDJyTmsoOUUjPl4pTUZtSEhaMjlsRmM4Km9vfWo4XmZtbUkqTmhBZ1RrbDlYdUJSIzkkMitDWX5l
QiEKejZKdUc9cWApPDVpYn5fZ2VsanQjUkxFYEdmZ144Zko+ak0qMV5td0J2cHtra14wOE89cnl4
VVllMVBaekI8RmheCnohT2JMOVUyKEJ+M3daeDdaTCglTT88RylUYXVYZVFWODRqYV9EZD5aZVp8
Sk03akw9RjIqVWxiJnpKbTBMNT5zYQp6Y05JVGw/OyVwP2ZSc2VNLVhFZVcwUF5IQS1LKGByMmR6
bURkfG45R1Zaa1kqckdKamx3I1RHMFduQVFBTCFibEgKej9McWdNZXNoeGgqXy01Q2JsMihodEB8
Rj48aXVzMlh3RzNVZD9kV1Y7fU5HY249RzckO20zZHd3bXB4ZVZxYEhlCnpZe0VnPjRDLWheO2hJ
dmZIKUF4eCY0YigyX1I+LVhefT9pKlNgaT1mP0A+M2F7ZFoxQWZpTU9Ga0xAeFAkVW13JQp6PFl3
QUhFRUBMPjFzQDd1PW93VTc+YWx1I2QxWkxWTmFNO0l7YV9BbC13PnFzZ3t6N3FmUntXRVZSbisz
KGNYSmgKem0tZnhlQFYmfFclX357TnAjXjQ9LX0rUWBBZkdpVyNDI3NRbUMlQHBmMVlyN014bl5e
ZjxqWl89S0E1P0dDcUZ3CnpUeUBWe3A9UFYteV8qSn5RPSlfNGp+KlBYOGM+MVR6eXhNYyMmQWh2
PG8kR0c2cjVkR2h9YzhzKiNQZ1Q1ZEImJQp6SGVzT3NGLXR5Rmpyb3tiIy1nMXhTYGpzUUczX2pP
TzRGQlBLOD09P0Y3TXdRVlFybHUpcnE2YikqbjhGK2hZTkAKemY0aW5Aa2VaWDRXSFJzMF98YGVo
SDF+JSU0PDltKjg5ZzJwYyN5JFpRa2dDbTZmOGZzIyk4fXQ7VHE7flZzQlpSCnpffDJRQCEhVWR5
SnJVRlVxa0hVVWhYVk9OVXZTPzx4dl5Kb2FPaH5TQTYqdmZWPm5CJnpkZWRrMzhXWTVyNUhSYAp6
THh8YGxqUyFPKHBrZXEyUypoPWRSM1l9KiglI3gwVlB0UEBfXjhKZSs2ZTNRJW5wPWk5bSN6bTRW
UzcwMjE/a1EKelReZTk5dTlOYWtNQipzPWZiRH5FTWYqMypqbWx7QkkrcWk3KFcxOyReZztGNEpf
Yjx9c307aXgheldBRzkhZDcjCnplJDBlcXVlYCFZWk1pVmFwUzxmLShXcihlYjYlSiYyJHBRT1dl
aiVLPDdCPkxmKUxsajZAMGM2K3Arbms3byQ/Ywp6NWUtXiQlaVEkV2E/Zmt9MVQhX0dVNGNSdmt1
eHxeQEEwJGdpWkxKXlNHdF9HTCNrVWE0YkFjVWEyKSQoKFh5RXsKell1TUlzWm5SeEt8S1defGd9
JjZ8ZUY8LWRYdjRHO3tqTE5mWVRXNDF6JWtlb0ExciM1cGw3SCpaMDtsVj9hPEprCnpXJHErTjMh
O0xDY0dWISheLUg/Q2I/T2wpUGBmaWAqYzxIPW9BJGBMIWMlakUrZnx7dnMpeDxYQlN6bGEkS3FW
Ugp6MmkpYUhfYnQ3SzN6YlNwM04+TSVmeFdqR1ZMPmNWIyVNdiRvc3dPclZ6RThgMzwrV3whT1or
eWd8Y15yR0VsQU4KenRQeXpJVWFIOEp0OykxKjYpQ1Z3PyFHRiE1S3ZaekUjNzdIcXd6Sj8jRiNY
bE9eamA9KU9uV1ZwcihDfXNRcCRnCnpVKz5FQ29KMV9jYk1gJmMjaCp4IUNwYkNVdG5JIyZyUy1u
QUpnI3AjWkZsKGErUWlyemF7aDRGYXokKEtfYkF+Mgp6eEN3Rk9zJmBKUiRPc3Qrb0VsdnlwY3Mj
PzVuWlNvJmI1dUxGd045MG47JShhJClEQU8mRm5Ebm9GYkJCeWc1cEIKemswSjJwaU4xNWs9cHt+
TkI3UGsqUTkkayo3azZDN2RkfkcpdmpHOT1CayRse2FeLTEzWkQ7NUZEMGktWFIoPXpwCnpadEI9
K0F8aCl7PE5GLTMyK2VAbjE0WHF0I1JuVGBveUhGQj49RzVtaHNxNSlrUUshPyMxT1JMRHA/ITxU
PXdAJAp6JUE+RFFTNnNJZVE2VHImayQ1a1M0eUQ3ZE5wNC0pVmF4KXdNdFhedzZzLUtqZTk1Nzx4
e35ZPlFVTGBvJTR4Nm8KemBTVGxMM1FFaWc5bz5iPGBCdlJGe0RtKmJsVEBmZVFSJiVBSDFoVFpI
SVh7TDtJRFU9ZVkwTVMkSkMxKihDPCglCno4NiRxRFcoWTMkO1JRZjc9T35aPCZHYUEhVSVvbzkt
TkJgdUt6TzdAJnBudUJaQiFNdiFsZXYkTyszUSlZe3MheAp6ZmRee2Jqd190QzYkLW1AKXtSMC1l
XzUrYFhUcVRzMHoxbHc7KyZqTVBGYXQoT1J7cG9KdyQ/PUVGaitIbHRoOWUKem56QHZqVGU8QCkx
ZTZtN0xQK1BaZEMraWg9QS1KSkEpbG0xbGVkMGEmJjtuPkNaSkY9c2RoS0ZIVDFyayRfKTM8Cnpa
aT9wdkI5MUc/ZXJUSm5CQyFIKGo7Y0lYQ1J4REl0RUZ+TnEqc0Bja1l6QHpgWSlQaWw9US1FKUE0
NTVgNmFIVQp6PyhLS0pQTGtzbUdST0N6IXVYJj0obVM4PFBtcjNrRDB0PygkTVdBWSZ8V15XJVgk
SzAtQTxffVRhO1hhKkU/fj0KemJNIW9VPS1aQV89MXFka2VtaVckSy1nS31ZanBvP0MqdWpGRERu
Tj09T3x+OG5qRHRTP2RCOypNZEt1OD5LQ353CnpyJX19MjJ2fU1va1FKaENQRntIKHsyTXNuTyU9
aUJDUH1NOypGRjgwP3A3JTgxYGNUc0N5UHZkLUN0aHp4NitQKgp6NkNSZSF3KHJkYkJRPGlDQmRa
fUJYcXdVVGxBdEFVe2gqJUZ1e2Bwfj9JYGlnU1oxcy1MQ2JOejlDSXxxcXx6ZiMKelUoXmAxe0Z6
TzlAb1h+QXokdyMxJntAUFpmaUpeWmkqUDk1KjJKPE5UeHY5aDI5fTRYP0s4dmNsKUxkR051MUot
CnpeMmJVR2VveUxRVGdAVWk0b2UmemNSISFaKSMjcU5PMCp1b0gqRmg+WTE3WH1xP1UlNXpyK2s0
ZHU5VVAmaGYxfgp6P2tPVmBhRk94Vyp0Tk9HJDNTa1h3M2V2WEMrVT5PI1R4eXlgenU5LVpRZnQx
RVB3XndYUWZwZXIxaGprYmdFRW8KenE0NTlxM3o+JHA3M2F0RGhsPDtJJDc/YTVOOH1RIyErKntV
OCtZSWo0KDwwM2o3dm1vKVgjckxVdko0R2g2aFRlCnpuaHskQU8jcU9aXkZ9QmomcmQxRDwmSGxn
Rmp9QX5CPHB6Jks9KGwjI2tIS1IhPlZpR2dLQWJOd1k3NmR7X1gldgp6WSVpPEBfP0xJKksxUkFB
U2I7KWM9c31rbDVReUUyIWFec3w8RjV+V082NDJDaFNeVCRBWWRDWGYxYytERHpMeHkKejNlV25M
V3lGbTkxWnV5OV4rN09qVWF3dENfLVMyKnpePHQ9KVF6NGJOfTQpOWc3JjcxdWFqJUZYMztKUXBB
aHt2CnptR3A1ZmR6ZjJJYSlRPzlWdDsjczRCKm8yaHRmTnhyLVF6Jip5em1SVFBmMW1PfEclRFhS
MmteNzleX1RpWGB9awp6bWwjLUApSXk4fEl4SyZFVz02O0MmTzs5Y1hPMlB3aiNvaiEpeENoa01H
MFIrNylpO092QT5NdUZ8b3t1WDFAeW8KekMweWcmY1RnfiQjc1BReXRoRWtXUDxpISRFd0NiNyVE
Z0psYXtqJkVCPCp9UWNZJXI1SW5VSnYxfkwxSihOQENKCnoxQitDWjtYe3NOPzBSe0lgYm91SVRX
ckk4LVBSbk02VTh1NUdjQGVvXlAxSU80JjFjN1VtIVZ4Tyh7SVUyfn5QXwp6NXZYUStWfU98dVkr
YHRhdEVvVChnTlZnZ1Q0SWp9MlBoVXc0RnBnRCFUPHRFX2w4c2VmUCExdiU7cnY9RUJJUnkKenRe
XmJeTyg1SXswQU1sWnlSMj95TFl2NlVnMHowXyRQVkZfejt4Nig4MzEyUHVLJCVII3l3cWNaOThE
YFljNE96CnowQ2RlajUtJT0kWGMpTn5sSD1PaiUwM0hfcG5yP0hrX0VIMDc4cyNZZ2BzK0RsQW9B
V18+Z3VzeztuU0pNVHBSYAp6M09jbFcyPGlhSGppKERjVDF+UXhgNFc1KEMmaDN9QEN9NDBSMjlp
eWUlOTJAVTtHLXFZJX51MFVaPGhQbXNpXmkKejZ9O1JqNGBjR3JgenV7X1FjQHl1P2hFRG01RUFe
PXJWcHc3bFBPd3RnZ3c7MDJ1YmpoNVhYWTAlZEdRPypDbCs5CnpURnYob2pZO1N+Kl5zTzY3fH16
KUpze0c2Jm5DaXBKYDtCWGEtb3pMZGRvd2FRd3YlZkRmfjJZUWllfSkmNENYXwp6enRePWcpdVck
V2pUMm1JIytYMD02UnxOSj89aH5zdTI/VEtXWSshamJDUlViSShVVGNZRUJkPnJtemlqIyZ6UigK
eiU4ezA8ZzR6UDlrYkAkeWVEfihkdFRveVhpPWIoITg/NGplS2l7Rlk7V3RuOSM1QUp9ajdKMD5G
cmA/JUchLSZYCnpeQClCblVxVm9iXzYjV0JTKG9geFZMX21yN2Y8PUBRPH5nelNNd2BPOUJKMnZg
VX0mKDdMaihWenR7WG8mT3hqaAp6Uk02PXo4djg/dGV0ZGspNm1hNG4lYGBzSUZFLW48aUlJRT9W
YGpLbi1EZG9lSHNTMGw5Pn5ebjl5RX5LcGNBJSYKemJfeTBDJT1gOEFCd3k1dUBvUDczSnw7SE5k
MXdsYXMtRz89IUxkQ1hRcVUwZCM4O3YtQjAxRHplcUpoc3trc3doCno+Pyg4N2dVO3hmPjczSzxl
bH01NzxGUUR7djxHZSlUTVpKe1R3KiVxe1hIUFVNcXEhQD1jZW57N2JyfXtJNCR7aQp6NnxTZ1Nk
QFZ9elpEVTljMztPPHY7TWNVUTsyWCUzS2R9aXF1O3Z5NTJpYjIra1Z+fSZfdmdieXMrVms9e3dD
VGgKentBT2A7U09UMH41YjQpcmc8XnMzSyFFYzlea3EpOVlDaXpQMFJYVzR5Y3FUejJsM19ibUkt
TDgqSTl2NnshRG9CCnprOFk8bkIkcnQoezhCdi1NRnx2PU9nQGZaMGpsaDEjKCVRLUl9UWE0UCR5
Mz8pKnl1dHYkN0V9dTdiTj07MlR8dwp6ND4wPU1vITgtY0RYcnR8RWpEQm5ARiMjX01GMzlnKUU8
KVphITZSMTExNmR+QzM+XzVELXEzeVM4WGpKJCFrWS0KekUwUVpgP0wlZ0YhOWooTFB2djlXcjI9
QlBGK1VBVS1YVC1yXlYzd1BfeF42dTxWNX13YlFQfDVLY0hBM0Fgc3lGCnpGWj4rVWZkN0dTMSQ3
KWs/WVoyUFB+c3ZxdUE5UT49P21aMnQoVD9JKG80Yn5eIS1iSTdFRGphe0ZMP3UlRyRROQp6TitF
bXk4fDBvcmMmfmdkemYzc0Q7T3JPemtEcH4rWEAmJjwxXjIxN1FmeWU+IXJOX0JuKE96bXRuKU95
MT5qKFMKellUJEpQdjVPMHdTQ0lhVmZ9bGxtNTNIV3FwangwPHBlcW5pe19odUZDPDZlJXtGNnh3
PCpDdjFzKyNXP3h1T3F6CnpvU1ojbHVPeWNvVk1GSnkhe15AfFJkPms/IXYjX0o8VXlMfDIqa2ZS
LUNBd2RjfmRlTF9XTS1NeSpXTykhdlBnRQp6QzU5eVVJLUNfKmE5UXA/PHU/S3tvfjxec3YxRUY7
PiglYDkpZUdjUEBgXzY2KUR8NigzI2RTWjRmXnBgZX5MdFoKekh2PWk+RlB3cT00c1Ewal8yNUpM
VmB5PD80fmpNK0h2M0NFOyY7b0YjSjVLdkAwRC1QPHtoNEBgNT8yOFp8cDhhCno4Szc4VEl9a0Fj
WnpBZ3owfDBSRD9qTmxeQkkxZn1ZJW9SdHc4Um0zTUdRPFVAPTc1ckhqaz9Qd19UNXFwOGAxJAp6
LXRLWGklRFdNNXdLMDc4MX5eKXJRfUx+VDBfe0AqYlVFaGtrSm9OQmclQFMoYGp8bDJ3eyt5c0w/
dGlEVSo2N1oKekhxaWhzZ09JVUBUKTlDa3kqT0VIbW4hbWF5al5EeVQ1QX44a2grbVpUMnlabjhU
fEF1eVloR0RTZ0laTV41SEdeCnokMFJ2RHZ3TGE0OCExLUNIKyhaTExBc1lHP1NXRmIlY2ZYaTY3
Xzg0RX1BZWR1c1hVJHhwYU58Pl50dEB2TX4wbQp6OFdBXk5SbHJ+VzZvdllEaDJucU16NWlSQUsq
NH4yWXJ9cylZUTl9WDtBYHNgP0dpKip0RG9UIXJNZnhqZU9LdTIKejtCNzNJUGo4UVQhJkptRUE0
PGxzSVE1I3s5cUpJPjQ7cmV+XlMzN0hIN3tsY1YmRT1NRmNzelZtN29BbkVPOzZTCnpNRGpvRz8t
RHJ5MDB3XyFVdzNZYVg8bnMmanZaUEUkVkhJRSE/XlZjRS1IXiNKP2ZfISowVChWTFZRMGVWdFJt
RQp6MXlGSEgrfigjUiF8Pj1zVDxUI2Q9VWYlT1V8QngjeUolIU81amJPdmc+IWBvQkVVNkQ7QVdP
K255fT1GQGtAekcKenpKPVk+JS1KOGlSdnpkNVZQWjYhKHYzdUUjSW9XSEB0UWJWdSlqYn49RDVt
TGVRTm0tc0BnZn1eQWsofmg3Q3ZuCnpzKjxxZVomYHN9QUIxREFoTFJRfkdXbTktdnhgMEZRa1VX
di1mVzYwVFo5fSF7RVojcz9vK0sjQ15IVGZ8MUhUNwp6OW94R3huMUk2QGE4XytlNyhiZTdYU2dO
Pnp6O3RQR1dyTT9IJXFXSlIlTWxTSW9HXnI7eHo7UzlOJEVYUH5EQygKemx3fkZzOV5kQUdiP3hg
RyFAR3R4SUswbV9BdW1ATChEMVo5KiRsJnZ7fHV6a0U4Y29gdks3NXppRE5AdVJHQHMyCnokJXFF
MlctNlhRbkBDV0E4c30mKE19ekc4YzlFZEViJGNEfnIyWG9rJHpKa3gtTCQ2THBMK2Qqc09DVDZx
ejFZVwp6Rmp5Wk5ZQXxpYVcwd2lgUXBwNUM4PFhmLSN3WjF5PG5HPHBzQShNZjNmTUZpQXdAaERZ
JTgtSlNgUUJaMXZRencKek56d2twP2hkREwyPXZWfjdpWm4hTyZqalRaY2tSSWJTdW9BanQhfWVY
TmNtaCpTYmVELXgpQUt7TWE0ZSthaDtLCno0XjZpdTA2Vn5PYXNOIzg5Mzh5fkN7fjtaMWR7IT8p
Ql92PXp9XjAxX2ZQUzZAQUE9YVUtRCYte0BNSGdvUVp0Kgp6WFRTYztyKFhFKDMtOUtxZSlnJX1g
UlQxSSt3KlIrLWBYend2UjszWlM2fT88MUFGITV7Xk8hPS0xRXw+X35afSYKeiRIey08ck1HVT03
MmlJQTg/Vy1CY1dLWW4tIWkycVNXfnlVX1N2cW94N29kYTQ/NVVHZ3lUOzQoRkAxazA8bHh+Cnpj
Jn1WWEM5clo7Qnx3P1o8WXAoQE1ETlY+eS0mSyY/dTdERmY5JFBLe08kfD8pLVYzZ0NtIT5ka05t
X04wTmBJYgp6NT9ZMVRISWtlblFIfWdGK1N2WDttUndWKWU2emk2cVE7IXRyQWZUPyk5Z21mb0pq
Oys8fFZRVXllYGhfcEBDWXQKejN7STxlZGM3UCpjN2d8RVpyJCUmOWsxSHw5QkNUKW5wcGd6OCV1
KkJrSk1VX0t1Yn5rP20wbjNqNno/dFhKaUFBCnpuKiVxeCE2KldpWmEjZThAOERTTlFieXd5VT92
Yld4LV5NYHV6eW4qWSNNcmpzQnd0ZlQ9QmhfR2BPVl4tIU1fdgp6e35aU2p5eHNKMmUyU0NvKCox
UGJWRGE1VFlEKEU0bGRPbmwhND10YFdZN2VaMiYhVGBRWm8tPHRqent4YEljem8KekZZJCQqJFg3
fmo7fnp1ZkBTN2dfbkVfYWxeSyEwK0R+UHJDZlUkSVFVK1pXIzU9UWtHWEVNdTQ9JDBmLTF6fCZw
CnpSQ2xIbXUhRDhgOGxvM3kpX2dSNkRPVyNCMkx8NTUyNytaR1ZqYEsxSEFCel42aWFeN01pQ3E4
NFdPJFUzeSs+Pgp6VFA5PHYtLSpYSyFENTB5NGExbiV5MCl9MClISVRhWjFLQ2BfPn54cU9tXzN7
Qyt0TWozPSVYJUhQKUpIRS16TGsKej1GNFpHUWVkMUtaaCp2aWdOeks0d2pHPz9IantWaldXJS1I
Y0g9SUh0TjJwJD9eMU83TzRKMys/SGZNeDs3a3YmCnojNUNXRFcjTFZYb3JkYVQqJFBuMmlEYWJ4
Xk9WZHdHZy1sRGwzX1NodEI3OFZgVEtPWDRHd1R5VWkhLXx2PmV0Kwp6YT4/RDZ6anBSPyl2Z3VN
bGJ5ciZCUHZXO2NnMz5mO1MwNHMkYVhSfm1+O0R3VHl5SzcyZCYtJC0yKyNua2tmdWcKel5gOSND
WClzfClrO1Axa2w9cnBPKHpxTyh7MHVne2BmPTBie1AldkR7LT4yO081TXBJNy1JNj18Tk1YQSR9
USZLCnpGaH5PSXZ8ZldwK3N6M2gkQnE0XkdTdj5jaTlXPWhkPlB1aClHQm1oRnNwUiNvcChDOUhn
VF9vYjlJWnAmQDBPJAp6SW4pcjhrdFleK3I5Nmh6d30raj87YW5qZ21eSX1IN1VydTBzZ2NVb0Eo
QFooTSlWWFlua3VMOCRlY2ZKVkczYzwKejUwajteTjM7KHpDOTtJYHMhRT9QWmY9dE8hNnJyO0h5
dE5UMytWSzh3JSU/SSZqNGYtaXIjY0s7VG1LR0lKRz98CnpoaCQ2YHtObH05YyZwTDZucDAwWHJG
V2RZPztSP0x0eTJETVhTVDImaz1GcEp2RUghcCpDblIrdytpTDA7a3x0Kgp6TUxuVCpIYFZIRUBI
ZEhMR1ZxdnIhejhFNDQ1NUZ4MFU1KVZrYkxtci1qcHV4KXBxKGold0JaR0Y5SExGSSM1YkoKemV0
RzVMSTJ7dTJBVGFmd3hic2dWMUlaI3pOfUp4V2hJfjlNUGNNfUNRNm9PZFlGa08mPl4hOGA9RGpv
XlEyO0g7CnpkYjM/fkZZKntucHV+PkQmUGRUVnZgbUJZbG12eG1lOTFiViV+KyN8bEQjMlF0Vm5h
MyFtejt6cndme0RJe1JGVAp6Nlp3MVlQfUBrMl93bGdFNElZe34pLVU+RypsamtRcTFzUz5SYV9W
ZHReNDFhTTIqaF9aKWE0U0ZSenBGM2pyeDcKeiRKXjt0bEdxckZWXjZ7OSpoSzNiQThZb344RXRJ
N2Q+cCQwWV8lWHV2fD0xV2A4XyZKIUp6dE13djFFRzN2aTt+CnokKXRGNm9sfmNeUmlLd0JMS314
NXYoeHI5UElPc3kqcn5OaiRrUHc+anJtRH4hMGReJkI4aChlKil8MHdMazFSVgp6VkxEcTF5P3wx
fXA/KFI+Szs5TU5hamB3NiFDPypsKTFWM1pWNl44az1fV2RVWlM3TjdtYmdEK3BJYTImWHI3M0MK
eio0ZnFvd2g9SGdwekopMEcpK0o9Um5hKVMreTVKNilSP1J8JFgxfkBJLTtTTk42LTM0YiswWFYp
ZW5TI3g/S0JFCnpkVUFII0RYXlUkeUY7Zm48Y3J7aCZ5SkZ9YFRfeHIrKkN0RD8pcWQoSnU3ZCQz
ZEI8alR2eHIpSylIdSZtYUoqYQp6fE5OMz89RXo2cGw5MXA8RFVTcjMzTHdiQi07YlZzPCgwfkh0
NGdROz1QKUc7UW1ZWkNgP1JuMTg+UTk9Iz1AcVYKem18Ry1PUWQoVztUI1B2UXtiN1JMU0NUWHU5
ZzlQPHRISjcxYHJJfW1JXmtsIzRUTVpCSjMtOEU4cH52cittI2w/CnpgPTA5bXV5aFdKZiQmZmt1
NUhgNFpRSGdyd1Fid0JaRU08MlpRSGlaP2U0I0NrbGZyR29SZlNaYl52R2RvUEh5UAp6RUtPZFVD
VkE2UjdNKGlmJjJFR2VFLTVaSHM5SUdVXlh4eUU9M3dGViQqLTtZV3sqISt7U0tZfF8hbXI2RXNG
XloKejxMQlIrbm9fUTdSVFBPbWUtWC0tYmkoZ1ZgOFB3SXdOOFlVVk4hSTIyZElkeHFEZyFhYTxI
JUMyeTEkO3U5OGZTCnpHUHJASXE3N1AyTGJ7MUtRZl5EXzk4ZmxwUEFreyoxbn4xeHNeS0FTPDBQ
ZktnM0h9Y28rUCl1Tml4R2BqayElfQp6QHR+IThkdF5xTE5kRFlxLTI+cmM/ekI2K2ZmMHYjdClt
KzcrQHBWdGJsZjI2b012JlBeUCtNeT1JNz9qU2BKVzkKeitHXik4WkgtU2cpXyRCcylTPFVUO3Z1
NnllUkwjOVZgOVFBSGNJRGhAOGRka0tUSURoRSZ8YkpRPEsmPW16c0x9CnpEMSNzMGs7QSQzdmph
UnBWN0A8e1VraHdEUzgwaFc/Xl5qTXAzNkh8cyFFQEgrWjs9VnNNTldyKGE5Kl4yJU0mJAp6JkBM
WGVDSFRuUTNBTm9YJFopZUVePEBDXy1xWnF1N3oqXlp6T0dEMFFGP1hSdVhPKjJmIVZ+RWYpUWdn
QXZ2S3QKeittTVJHdzlxRDVzaXQrZyRoZyZ0VTg7XlhMMGRQTEpwNDBucXNZTnJkWm5HMHRAVzR5
I21rY3szdlc0NT8lXzFfCnpsXkdOITFjKHVGITAleD1PV3FjIz5eKi09MnVuPGxMam53fFZlfURu
Q31jZm54YTB6M0pHaSY8cDszIUVEOVNiUAp6MGFvaylVV1pNQktyWU01cik+akl1TGZBYkQ5XlV4
dU8ocHQoSWhpQiRIM24oZlFGPGdfOXFhOTBtbFMoM0tYeiQKemI1YEgmN3V2Sj48T3AmVFZ7SCg1
M0ZUQjYkZGc7RFdXJDNwNlNoQ3lUWiNXVmVoQSpxOyMpO3dqI0dESih8T1Z1CnpTYjQkX1kjcEVL
MU9oUFlRY14xZTdNTyZ2IytVYVhZbChXeF42SEF1OFgoQVVoa3NRTllrdjlMVT1VJVIxNjM/Qgp6
JXpYaEZyeGZlUSZaWkM4P0YqZlFpXyNSITArb2p8PHZYanYqNSMjdypZKmVWdCYpQlRIcF5XcCFk
IUY/Si1+QGIKekVvYWR9PUdNa24mRXYmOytuNzVXSz5YXzApSmxOPkRWUkVDenBJNndONmh2Y2dv
cVkoezt1dChHV1omRTtjOzZ8Cno0am5LSDNvZS1AcjZTPyNxSCtqYCN8dnZmPUBfTUk/NWhHKlRK
YkFKIXVzbWxveSFUN0NxYzZzTVV0QmA5c3JqRgp6Z19AdHlVOz1xRCYzYyEja2J0aylAQ0JESnFQ
c0okXzZ5JkVMJVE/PUA0VFZ9cFVafTQ8e3p8RjkjXjxmUVdgbioKenpBc1g4bV87fGklYzVuQk9z
SiR5bShQanV4czZ1aT5ITll1SkU9Tmpia3FCSVNiVUc1K2okQjBST20qPntKPkNrCnprSTlCX0Vs
fWI1ZylyeCRvN1prR2g4N202NF4yZ2pKZ0FYXnsrYTNKQlk/eV9xVkEhdEA8dzFqdVBVfm80WVQp
Pgp6biglUWB3ITV1fiNhSSNIezJqQkcrMz9We1J4NkskJD9mUH4lVEp9QWlFUmJSPUE1YGFxQG56
ZDJuQmlVIWp1Uz4KemdWdSMzKH56SyNIb3lvZj9DSCR7Qm1Lekc8K0JIaClCOzV8K2F2VmtTciUl
I1dYQnFnV3V4S2ZlK2xYfm5rOVRMCnpoJkFZTHZBOUojYUpXWm9jIXMpRzF0fDRyVEpfMDNQJSo+
QUJIbG5KajAkUEM5V2hrS0dNSzBsZ2BPUWdYakIxNgp6KjtuRCN4V3R8fjc1SWxjbTV8QCEmbmM/
YyVofDFvMjRAcXNHNntQb2I5MmN0b2JzPD1lTXVxVHZqKk9XdHp1e2gKenVuYD1EbXojZzFgTW9A
JVBSNGVqXmJsYUR7WT9NOUQtN2FPJDdPQj1zTVdMZWh0TlomS2QkdSN7eCNHaEcrUz9kCnood0Yj
ST07KWdYTXBUPWc8MSlsQFR9MnwhTXpvJm0xMj92QT54R1RBc31zVGBAeko/TnQyfXg9eHZ1Uztw
Y25DbQp6Nld1IyVnOEh9azlBSTgpMCpSQH04NXk+N05mTUF6eGw9OD5SelphKnNoKlBrSDNyO21A
b1hzQGF3T1NGKkpXLVMKentIR1ROK3I5SEBIMEFLJndKYGBGeHpAOW0xbjgwa013SUVoMlBRa1Fz
ZUdfdjZPd3drTD4jdlBNUihtQygyKDRfCno2SjlgdWxHRmpzM3Z2OSU0YW8wfEJOTTFXJHNxaWIp
cSVlblJ4JXhBTWByeEMqP2MtbyhNXklSWiVveHxxQms8Kgp6KnBxJDdLUzZOTVEzRkx0azZSNUxs
YCF0TD9Tam9zPnlHV0NPQUAhOGEwK2lZJk5GMWNIS2ZJWT5AXnRtUjNqaDgKenlVSSp5YzxqOEpv
SkklYXJ+OHwlR1NKKWVGTyZhJTNpdj1Cb21Xbmx7bjlKRnNsSWJFYHB2aSpTXmk7WD5AbEFTCnpJ
Oz5gIU4/PmgxJUUlY0pCTlIxeXUqUkdkcDY+OX10KH0wNE02TUEmcDZ3flpLXlpvaiVNazxDSXt9
PnM0O2t5OAp6eXtgUTUkKEpEdVFpX2k3YV94QVE1eFdWdVh4VjJfc3Vhb05RX0ZkbT1+JmhnNVlz
QHFefV97QHJacGxEd3sxI2EKenI1UFUmQT90PUtuPnYpb3NqPW1oNVhodSk7VkhOPnF6Pj9UeXRh
Qk8rcFQweVNhNDQ5dyFAMXkmN01hKVEzdDhaCnpuXmYramdPWlR1PFNHOGRpQiZueElja3N+Kk5+
RVl7VGVKMmhMemI7c0JVeXwyfkxUWSEqYFNPMzd+QCNwTlNgNwp6WD5tMSlIbUBEXzReP0laVzJo
d0Eob09ENiFvK2J+ZnJHcn1WN0NrQiUxQ35rNmN2Tj85ejdaOXdfRWZoMEdnVCoKekNWK2JaMXhy
bXkoKFRkZj1nYzt+cDM3ciFCST0oQmt8JDB0QCl7PDw0KjF9X2VZb0tSa1lmMUBeend8fVg9MWUo
CnpeRUtYTVgtVHBoOHhqeT9qTUBlQzZWM31sTmp4V084MT0qNF9HZHRARG88b1g9Ni1aYDZ3aUBy
RE55VFBoJmBWdgp6SHgxMlRUfWJTNmNpR2twSGJ9I3I9aio/Wil2ZnJORVZjP3JacWlycys0SDxr
bTc3fWplVCtyMzBTYTwrPTNWZXQKelFgPyYoU0BKS3VRPTRgeT4obH45c2pGQkA9U1p9RVErTGdu
Vm8pNUtYXk5uaHo5OHdmT2I0Z1FhZThTVD93KiFgCno5KX5gLUwxNWNuJEFmOENHKWopdmo0MlFQ
M0NRVmswejBFQDElI3wxeGloT0QpKCg0d3N3fmZlaklUVUFBU3Bsbgp6VU5DQHxAfWU1Yz5KbSkz
ZH1Ad0I4WntwYyRXVElsYEdybH5GJHZKKW84cEVBPEhze2hpUyEzJFFyfTZSTz5fT3MKelNKX3lA
cSRJQz92fn5ec1k2ZlA5NEAjcVM3R2p9Ykh5YyE/PHxRfSM4NHNXUTNIJkZgKyNXb1J4Wnk4bTUo
Vm1nCnombH4jQmZFVXIzUV9MdCN6JCQqa05kMyR9clo7QWAqcSg9WDhqZkhmPV81NGpvfmx8enMj
TyVaVFE7alpPe0lfJgp6Nzg+dS0lTVQ9cVo7Zn1CVUY2d3VnKyZLX2c/fHhyUkxXb289KWlObUlC
OTheMFZhblBeMGRnVChKPiplX2p3dH4KelVoa2o7My1JTShTKmArejFGRTdAPH5qdD1GNTRfMFVO
Q0N7e142dWMoSyUhbV5kYytrLU9FWEdhRClFfFFCcWk/Cno7ZmhPYyUlZn1WbkVNQUVvKHw0ezhu
PmZgOTFZTihmankjUE9OdXFFRiFGVVQyaF5GQkhkXlkhJjVjSUBUUW1nagp6V3wtdmFGPTApeW45
ZXA/RjZpVEVIaXxmOzA9M3g8NUJPLTkzTktKPHsoV0pEPWohVHE5fVBzUjB3dz0lUFNOZjUKejww
QV9VbTZIZGE3Z1htJm40cFhYYktgPT9oX3hyVz5fN2AleVRWZ3peXykjdz5UZVY7NyZnJX5jUV9Q
b0F4c3JfCnpxeWlZUGZwdDBLI3A2ZExxbmdaQWV1cnhyO1dPWjhkMHJ3U052QjNzdT5fcSVOR15a
bXlIayFpY0ElIWRCJExITQp6cWtrKGRrRm1VRUYhVm9zfEZATiZGZTA0Sll+fGAxO2U9Wn1oRWEo
K204bV8pay1feFBza2s2IW4keVQoQl4mJlIKelduam9CKWQ9az0+fk5SMitiaD9jXlZ+cWpKNVp1
cVpfKmlRM1NBKVImd3srRCtGU3hte2orc3EqJkZpQVhAYjE9CnozVlRlSGtUNHVpXjBfezEjNHtG
IWp5bU1nQ0Z6USNFUyE7QSgjd0gzK2hpfmg0YzgtVk58bmRubCNScm9uezZtNwp6a1V8UnMxWTtj
QGRLP2dIT3E5dz0+byohK1VXKn02N1I5WCZNRHdqKUo0JHtVSHpTVVlIND9PZFNgXiQ+WnxwI3kK
eiFQfiRsZWVYIzswQHUkOENkJiY7a1Z1WDB0R301ZUAoeStTdHtMUGdCfFJFSGdYZz9ZMHlSITA4
bmE8ZjVMfGR6Cnpobl8tWVh+ekdTKWxmeUB6UFBiPTdaXypxaTB9e0IxPmFSYUBHJGtoYnRpYHEo
aWohR3U0RWptYlQ5NnQoV19AMAp6OUByeSU3eUAxeW1YRU9BO1doVGRwS0pJVXV4fT11ISk3bkJJ
TU9qU25zJkYoK3heUzB1U3V0UTU8MHxfYnshOTMKejt3IzdyXy1GQ2BVMzRPdyVEK0oma0Z0WmZr
OU5CYDdpUmhmfDZNQDAhd05SSWhDMmomN3pPa0A7bGxSfTlucV84CnpPSU9RODZeXzVQT3deMyMh
WEtMMEAxeX47OUBtT21EJXs7ajlSUjw1Ym9faXp1aXR2MHxFMDRyQXFqe1RfQj5rewp6Qm52RSRv
NXB9SHIlYHskVGdsUmpORkJ7SUwjRjtDUD1PZmtBTEZtMmVWb25ye0VTY31rUWV+eV9NZXQ+WFck
Uk8KejszbThhWURheFolclhvQmZhNTQmSjZlWWAoRX53PDkmU2s1bVQjZ2o8UD5DTHJwZ2hmLV8l
Mys1YmxIWUQ4eFdACnpKJSFiWWMtKXhfJnt6RStBYkNLbXs9dD51KyRHc3MqY1d1QE5LRyZhc1Nk
eW4+aUx9c3VwMVo2Vzx2Jkp7Wj98Ngp6bkFpY0ZXeENkMFBgPXJ+YzVkOVROSFJZTlUmYlR6dnYz
aGZQJFpaZDA5ZiRic0pfSHxLXl8xQTNmR1g0JlIzcSEKeiU2SUAmXjdlQ00qbFBnREZOQXVmKWJp
cDhSZXoyQnphVk8zJG5oTUJ6ODF7eWkwI2ZraEA/KHNMPlF9fG5xSjxfCnpyQWphYzBFMzwyMH1S
WHQ+fX0xNGpEJlJRMyVzQXN0ejFwYmclelhnQHVKLUcmQFU1TVdmT0s2KyM4RTJCaUA4eAp6aU97
Jl53RDZedE1uWF5ZWHNGTSQqck91JnUrczF2WWd0OXBibEpSdyMoY3spVEVyY3crK05HPDlYfjc3
Xz5rTmAKejh9KSUkVmY9eDU2NmU1Jkxgfkk8aFNOaVN3bU0oejhwOEtxWmJiJHRfJWxOQkIoUiQ3
NzRzejRDdFN5V2gte0RwCnpQeSZPWHFhRjJURTU7ei03QHdyfE8lOyFacXFwRGBpXzI7RigrN0dm
PUpBbio2QnNjUyFsZTdiJjlQTEc4SD9SNwp6TXNmMmRyIXc5RyEwc2czJSNDWm1qajFvK3tJQ2w0
WVgkUV5mYG8rK05VVGxIVlUrUENnNyRQSDVHUUZlcWEyaWIKem9qWD1NNHFKI2ZWUip4ZkUxSjFu
WXJxPVZBMFYjZUl3Mm9LNmZoN3ZTXzRGcnRFQjl5ST9WKipBemdDOElVbWFOCnpRWHhVVmwwVWAz
ZX4kZCt7T25ZYHloXlooPldjKkcwc3pQVkZJeVpNT2FLNWQrJkZIMzx6MkJgbzdkSiRia0MjXwp6
SVN7WitqODtEKGZpTnp9Z15aMUdreVpnUTFDMUdgcWQjTGdZQy0xPWtGIyRSKmgzXlRZJDxhaStT
MiZzUndgSjUKenNTPz0+UTY4emI3Z2JCKHtpNno9NmtEUnxCQ3xpUklkb3t5SHd3UkpZQ0BVXld4
RFM9KWh0bWsoIUJYP1FYSmE1Cno4Y016bztQVlM4MFBKcmVRekU/MT9CLUNAZ3xzR25zU0E3IW8j
N2FIZ2pXPDlCeDArOVVyb08pMFB5a3VeSUkxSAp6ZlclRnsle2hNUng2JEdWTT8xSzBueil5a1lk
fiYoZ2F1fTJLNGlje1MmP3xFTXA0YnJlKHc+NUE2Yk9AJmo+V0sKekF6VjY3eHwrX01ZfiYkZ0VQ
fDU/dVlhUlFrXigzWT55ailvYm17OHw0Y04wM2QhbkVmdjBROTV6RlIwNWpmRGE/CnpFbnZtLUc4
dG1QUztnbVkmSXpIQG9wYFRveHd7SSYhTVEwaHdRa0g2O19ybG83OHUpWTQjeihAX0RJYE9NWEY1
Zgp6dGYxK3Q3P1JNdEBkNCUwUmVvKXFnYTlEQ3w3LWFAcVN9OVl6MVR5aCN8X3UlLW5ZPE41M0Zj
c0lEYWRlUkVNPksKeko+KHopUjtIUUxAJnVBUjtrVy1rZSNiIztiamV6SDdQREY1WXFATXo4cEN3
aUtQeTBgZ15CZlRZSi1Ufk55N0hYCnplNEt7IT88eVR+YWxtfkg7REhoXkJYPiZ2b0VlfU5hRTg4
dmFUO2pFNE5uKEtrbWtJS0lDWUFXT0V7eUIrRFZYbwp6emFsP0gwRmR+OShWVWFAMmYobk9uKF9x
ekBEZlU3O0RXKmlhRUhMejF2X3l3MnJiJndHbkJEPXN5UG84RHo2VTcKeiU2Vm1ScGJXdjQpYlNu
ZjkkbW9zSFl9MUBVWlY/YVYkdEE2bzhSb0EjY2lxP1hXPVZZc201ZmlDUCNAVEt0SVQ8Cno4KFUy
Ulh3U0tKKDduaCZlcUleKjdtVCRNSyt+SGJAXjNFdDhBJmhsVVhyJXFxM3hEdjxfSSFxNnd8JWdZ
Mip6Xwp6bn4jfCtaY1B+djNFTDElTzgoQEhKPSk/Xzk9OE5WMz5WNWA/OCF9TS14ZzI1R2Blc3kp
cC1nQiV2OUJLZz81TGsKentFcWEyTk9uUDQkKkgzZG5tRipIJTEwdnpGbFlwNUVRajcmWGclOFVy
cGt9eF9kMkYpWCl9RjM/PGJNZndRK2wwCnpNVTVRNHd2X3RMOzJFWk1PQWpLODdsM2JDSENYVlAt
LWBNK3QqVEdxdzdmZ1F1aTMyQDBPYXVCQEIjaT5WSFIjRQp6VEVSNFJKPkR+UztwPC1mKCRRRFVf
eTtKRHY5U09FekRze3MpOSZYfGtQMEUyRXtlSzhxQkRrRHRRbiVzPnBwbVkKenNLWFlgeCFHbiVj
dnRvU1pPcVBwTGZoWnxEcUp8d1FlJSZIXlE+WTx1fk5eOFU+YERLQVpETEJhPjtYOzIocjA0Cnpk
PnhXVlM0ckleJXB6N2c+O1h8RGtgSDN7e0RqX3BMMEFRYndES3p1WDE2X24lRVFyWShMM2ZnYjZj
fVNJbCMlUwp6P259YCUpRyFDI2BGYDNHcFgqajd1c0plbklmZHE5aihsPT9DSXNGciNJREE8YWNs
JGFgPTFuek49PlJuU190QiMKekMxMUJHT15wP30lO2dIfHlXczRrKWBtUHIqOGt6eWtxNz1FWHVv
QH13d1c2Kz9xakteQG5GRjAmSWZnNnlRWm1vCno+UnlpNm4mbkZYLX1UKlkhNl82RT9pNHc+eyll
UTIhbFdOQmt3WVQ5aWxCPUJtRlduJk85VklQezA2e2gwVnNxYQp6MENuUEd7cW5zO2FUSzJTdWli
bnNvIzZGcCRPNyhJOXxNbE1nUUZvYVYkQ3hFMnVkfj04OV5SQTU5Y21YP15vUEcKekJ4eitBNE5f
RE1GQzhnK25jU2k8YiNzKGY+QGEkTGBHe2UjKHlMcnYhUTFrKFlmUmQ/blZZS01jJEp2KEltRUFF
Cnp7UF4rQEdMYUUpZkg3TT5DP1llQ29uaj8/YWdCK3E0VH1fTF45YnJhUm5AQz1nOSs0MmY3Uks5
K0UwfFJnOX40KQp6YTAqQTc8dndUXyVrRzZNSkYrfj95PlRxTXAqR2FEdCh3WSlJKkQmeV9lRGU1
UzdBPGhZRlFPWF5SbW9QdSUpfUkKenF3VFR3ZUQtZGMwZ1c7NVEhNDk+ayFMPDk8YTFpYXJaOW9I
KGkrdjlQPUNJYDFoXjFMe04kWXwzYn1PZjhqXl9YCnpeOUhTbFIydl9QPE5CP148Xlo2cXw3eCh8
KklmSHdrQ2xWPVYteDV0ZFchfHY+dEVFekpqR3N5YlNMWkY8T2FRJgp6IXxybiNAXmB3I0B2dEdr
OE5VVEZWajZnSGV4Pn4qPWtPcGhwI1U8V0NTQHB1UTkyPylXTEduVks+VU9eampJRD4Kekx0Qnth
TnRnM3pHNz1wZG81JlNIT0NsVDU2d3FGRnkqdSQxbztINnZJISp9WWlUSSExVDJodl9LcyU3eFZ9
d0F0CnpKUXMhQmhgeCQzOEBPcnpucjtTJmZNUWdtWFh4dXdJVXV8a2ZqMz41MzIwN1UwTF8+MUBi
OHRQQklnVCp0bE5hUgp6UGU2b00yYGVIKmBWOVczNExzV3w+aWA9czA4VTVySyY+T05ZND5USjVm
bXFCVVo+RnhJXlhjdjRUY0A8JFY1VzEKelVnPmQzTjZVSz9jK2s0MW0rVEAqKmZuK1VydE1YQEBh
MnM2V2t2YWdhclpXYU1vaCRJd0ZJX0BNVWFVb2t7djMyCnpAWD43b1Y2dmpkej9qKHJFUXBpN3pV
JCVpZUxiJXowbEoxaHE3e2RFXyZXYC1qQzBeciFvJClzTU9IIV9vXks8eAp6THhSRndlZ2kwZmJC
U35PbUlkPHNpUmZFeEk8TldxdUlHMUY1JF5OUGgpKWl0Qkt1RXRfbnh3MjA1LW96WHUtNnsKeldv
VWtSJUBIcylzQGBTcHtyamBobn5nKD1oQl5pU2NeWGkrVXUqbSUwQkc/NHIqb0Q2aFJ5U2JrallW
eWM0YCg8CnojOWtgaDBpKHlmTi1VNU9yVTc9TzZicF44d0lHPTY+Vk8hJU4mLWgxYW93d0JeNmFr
e0V0X0JaNVBUcHRFekUpbgp6I2ZONiQ9bDJvUUF7PlFIdHtMSE9nV1BscmZHJm90YEFsIyRQY3l4
aVMjPWM1YX15UFNick1CRjYkSmVhOFhTc24KemY4KDRee15Cd3VlVCpVPz4pZXAhb2FlJilRTmFA
cF9JKTtSdlpfS05BYGB+MHM8O2JjJVJlJnBkcF9hfVImZj1gCnpLKm8pZlNBMW14d3YxWk43fGEx
Ykt4bD5naWpJKWQxbE1aZjFLPWFfPXptOUYlUTw1KD85dm5AWEEtcHBNRksrcwp6Sy1kMnpYb0E5
akp5aV96SjwmYmB1fFA3QV4kRURPQXh1VUVQOy0mMnBPRip5OG87Y1hVYlEpKFBGX1E0SWFBb2QK
emF8TVItUWFaWGdYN1JwKUJ8eW8mbCloeXdGd0ZmZkReKGRQbHtoS1g0SlNSRzxfaTtCQ0M5OWsm
RzFjPV83fXFWCno+RTdlKEhaKEl0P1Btc2dBLVNxZUQ2cnhkakxPflk/IzhtNFBwKzcxZ3pSZXMl
dlQ9ZGxyWUF3biYhfU1GTGdrNAp6NjNWcjlUfnpwKGg4MmJ2SmdFcXJDWmhITEVhQmBhNyF3eDkh
WnJoODd4PXh2OHZ1Oyl8QWkqP3psJld5UzJPXkMKenFOJjE/RnI9JlVoNWxgQk99SDdSUGdseUw4
UiNHM0ByfSZ5Smh5bXdxZCFRdWROSV8tUU9RR1MxUz4hIWUmNlMzCnpveF8+ZmRsbiRYbkhHI305
YmxabTVxOVJFZDNpPWR2c1R3NFMxKGlTVzxQTnheaV9menF0T0czQDt0ITZVLU98KAp6UE9QUX53
UEhVOVZecEpZKkUxdFdyWnJCSldBR2lBZShAUV4lP1FTVz0+OER2RFk+RiFAclckU3toS0NOX28p
RDwKelRyOStJe1g2UDZBWEBvUTVAJTEkeHYzUiZkKUFZJEBmTlklOGNSTGFqKkxgKDt5TzlfRU51
aEF0QX40YWoxQXFaCnpveW1yJikmfTwlIWgtbigwSHxrfSYjZnwwbikpcD8hQ0NDMWs9Q2c0QDkk
azkqJTRacXByWiktQmBHJn1QZV56Xgp6SUd4em9yPCliVUQrVDxHMj95cHpfPTBRKVNEM2lyOEl0
OURfbyNwX3Vlc2BUaVR6I1kxVnN1STBsPFI0RzMtbWMKenl+NjxqQj1GUkctJkRNP1pOR0JBSUI+
cW44XytkWkcxdWpHVzhWNSQhbEcxe2UjYmxLQnJpV2JwWiNibk9oeTspCnplXmR7N2Y5IUJKYGd5
O3RUan1tZEJ4QzR2QHlfYEA2OEtkTyR8VHhjK3hpcGlQTC1+TTJFP1NvQSZzV3krVD9DbQp6V0Fl
Rj9jJDAyXmo2VGtWdnN7KGhJUFZKPGUmfnRnOCh5TzZfJjhGflpMQUxFPCVDbzUtNztZS3hNQTdk
TFViNm4Kek0yVCpFMUpERT1oMmNFYSslZE15QyhRP2Q0aGkpWEBHWU8jTXF+U1E/cGMpPXo1MTM5
NWo3ekcrWnZ5PG8xZGRkCnpgNGw/flU4OUh8eTQ+PHxPR2QybW9mSU1GIWBDRipKbEpuSk4ycHFC
RFl3RX5TYVNldE1EJk8tQWEwUU1AaWNIawp6QDJ1N0lXZ1kobXR7ZExgV245VlZmZ249PWQpTSZ+
UkgxN1B5aihYY3BDPUBsZ0k2emdTOzElI3w1Y2g/KGtAQXMKeio9ej8qJiExSCEpLS1NRVRvJGBL
YktfSnZZTitpVT9IPSttWmRIVFFqeVVORnY+VXE9TmwkKzQ8VU5qeFR0PU1NCnpid2RBayF4aSg4
UGkmR3tzIX0lIy1NKiZNNDcyaFF5SWBwVWhnYzUtYkZseUxZdUZjWEMwU1pzPWhXRGdBYUhWMgp6
bkBySTI5LWFKQlVYWGg/THA8JFAzPHhmaUVjJHN+YmJ0JlpVSlNRKXdMSmZfJmNwYzdSV09vfUFv
X2tyWjxVNUoKem8hbU1mP15FTlYqSEVsSz8+WXhYcWVqUyVAP1o/bCRqKX5TWVYtemZeSUxPcj9+
aHNeQ2hPVTcxSnwtNyFkcWxECnpsMURAVm1nSDsmaD5LSzUjOU18LWc2RjdQaD9tMTtjZWFpdG8j
YURSWmheeGlZaSl8JiY2P2VQYj16Iz5wQn5QbAp6dXxsTnttdG9oRnVEVG5lODNDTzw7OEgheWYq
UVB8NS1DSyQlZ2h9YTxSYiR7KEF0OCh2MzlvVVBHdEshKE4pSysKeiN2OTBVWn4xQXw/XyNQX2dw
dnc+KnVmdHtJUHF9MnVlTXleOE1VUVBDUStyZm1BKiZ8RXFMIzNJfG8mYjhJOEJSCnowR1huckxe
fj4mTlI+dShZWTJjdDF3N2hVQEsrKkBrRGR7Rkl8biNfTDIrQlhId3V3SFFMRDZ6ZC1CSDhlWEgm
cQp6SG9oSUB5Z3A/NFIpfj1+VyV8MH1jVlhQO3p3WFA+dmc9c1ZaVys+cTlRVDF8KXJiPnUkK3Ff
NFlucHBCKE01aG4KemdHLWZwYDsrUlQqe01vZS1DWEQ3MUo4Wik4PzQrQF5IQlZ8Z0dTeEdfRDU2
KkV2X0dKQEdid0o2XmRxe0JoMWVaCnp5QUd8Z24hTDVkdHJiNSo1NFVSYUwlM21gUF9iNlA8YFJ0
Rk59b3h9eWw2QmpVVDUkQ0pVWTI9dUI3MGlgSi1JJQp6aSlobm1ye3ZMUHtnTk43NkM0YT10NiE0
IU80RmZzYGYrYFo+OWQ+SGRyU2xFIT1rTSRpZ2hKPiY3PEspbWA/cVIKektkXzhoMTs2SWdoLXRE
cnZoNFpEI2glQnNRNU5SYUZ4SyQ1P1BzTWtyVGJoekA8VC0tNTE5SmFRc3RubXpPIUhFCnpuc1Vt
Y04mZl8jKyZ4Q1VBTlJROEpnMXZZVX1ALWs1dSpGUlpVQFp6Y3VYem1AaF9YNDY8JGVsZiUlN3Zf
NmFQewp6RkViQ0NMI0E0MjwmeWFDZF9OemlnVWJ3TzdufSNDdlR8MTs8NXt1bndhc0t+d316TDRD
cighVXQ7TH5VIWRAZTcKelZ3cyoxVW1KJkwyZjwxX0Y2ejstVmpfVDYlaEZ6QDxAZytidzEoQGZA
cGMkK2loek1reyFmKXQ4PGZ1Y0B9aHdYCnpkWXw4TiloPikhNXtAQ0MydH4mT3h3ZFdIKyVSciVB
IyZOV0smPCYxd0JTaXNfUEZaNG9nPkN1dHEpSn4hc2Byfgp6QHt5OHFyRkMtP3RrZENPWEBjVGth
SW8xJmdWNmktPGN8I2o1KnlwJiFoaEBNQn1SSWs2fDhfPEpTOGVjOD8wfSYKejR7fFFMM31taHA2
VHg9IT8xUXg/dmZuJUhTZkFFOHVpX1dZJkx7Z209YWNYaSpteWRGUHstNmlGUGVNN2AqRzdqCnpz
JWg7T1EzU0QyQj4xQXV5UHg3OCljRnA8Mj1SaDBObm9OcDBHYTBpMEM8dFhGT1hRRyRRbFcqaGF4
QnFkRlAzVAp6ZE1ROU1qck97VDM9fn01NTdHVVNeJUNRTU1kfXtEWSZjRmVSSVQoZjVmP3tJNmdL
YGEjLUFDczB6SVJVakFgKysKemomXzNLdlIqTlBgJFpmTmxBWkFoUHU7U0RQWHBuRG8oU2koTHRo
YnFgR24yRUh5R1EmMWtDODhwOCtwIVh8OCFmCnotYFp9N1ZxK1dtTnRtdDAmTilzVmlrcnJyOEMl
MWRFckI1NVZ1a2hRbFRhaDQtXmp8YWtKQ058Rnk1azJCNCtCWgp6T3h8d2kyKE9mNmJGPEFvZSl2
R0QtM209MlJiK30mY0hLVDNafG1ZIW11biZrSEtJQXRFa2NWVz1YJDFsdTZeKnAKekE3dENaYDRR
KyN4K0MxVWsqfmB1cj17MDtlMSFaX2R8fT51Vj9eZnYkTTV1TWNOWlhpTVZTMnk2JU1mcT4oXjc9
Cnpsam8hWXdWanlPaj5+YWtZd2s+UDlscTctdCozUkhTUDNxcXJyZHE+MWJZRiotRlM3SGg0RWJq
TTteajR4dVIkbQp6SVQ5UFNfWnpCMF9lMWVlbmclRWFgKkY7UTxCcTMkcmcleGFhITxfeC1kZVE3
Qj82ViRiZV5ePElJQnFlO3YxeX0KejhPLTkoam0mR1dMRm1pMDw7JXpXY0xwcyM+PkBZYUp2Zzsl
SHowOEhsS1Zydkh4Y3RGKE5hKGoyNngtd1ZQJUhECno9PC1oP0EkSitiKEV3ITl6UDVYb2dXN25Z
YShHZGNXcVJidVpNLX0/QDQofm9jOyZCJnNhJXNTI0FESislUGFRLQp6JHxJbGg2dEFVVHVNJEA8
a0VwKjAoJEZAT2Q2UEs0Wl9LaldaMXsybE5LMGYoMFZTajJWcjB1I0RONSFMQWBoVHoKelVoVXM5
RW9xPDtEQiR3Yikoa2dTPzFsQ2lMRjdqMUVPMEQpWFNVPXp0VXg7KWNNaFllZnl4fXJyNV5CJnp3
RFJLCnpXUDJYPHN7JVMlb3Jpbm88ZDtYczN+ZFVuX3gpZG91eT5jUHRpRmM7Wj01JUxJTUp7VThg
aGtDOzw3PTBQa2B4KQp6czt4IWN6UHo7PyRrPGJaOGtFPTVTREshKUUhaWZuZUgwIXpNSCEzXzVA
cFEpNnRxQilQU3QxRSNyOXxBZC1GI1AKengoOSQ+ezxRSXpzX3R7JF85SlNSQVN1T2V3NUM0LXZM
cWIkKTFxI2o4LXFWOVEmN09ka19jSH4oY2x0cj4tVjlLCnptWSlYS3J6OG10b1N+cERrczktdjFH
eHVwUHE0U3Z2WW1QaU5afllHVFM0T3dMcndgY2F1UGspcXk1dCpqWUtYKwp6bD0mK0RCbHk2OUA2
fWJ8XzxvOXRZZDJqSWd8YkZUOzI/b01xQCp1ejR3aGQqdypacCZgQXxxN0JKUDNIVDV9WjwKeiMy
aT41REBMTiN5ZGVfQFhASTR9Q2RQNE1JIUZuXzVzY15lQzleTUNSX2lfNVpfXz5+ciRXdWg7NEM/
clU9YW1ECnp4Z3EjOVdLNjx5bnhXRWdobEhqfF4lOWBZZ2Jyd3FRKE52b3JscGtsRGl9Z0VhanVC
ODdpOXRweGwwLT9vfSN8YAp6aE4lJVc+RF5JRDBwN2g1VilxOTJ1bTw+SFYoKV95NGtmRUw9X2lX
N2chZ1BkKn4wS2pjYz8hZzZzNUZPZ0M5MSkKekhhQjhhUkhDYD51V2pmQmNARFMrS1NjJTlMVHwh
KnFYb3MrdGRlUnNHNCNWQTxGfVI1eyF5fUZaP3peNmY8RHMwCnpKNWd1SSU9TUJkQjlyQlFSM2wz
dnAlK3hnUlE4JWt7KSVoTStkPTNqP0dTczRXdUpneGlYMkZpQkAxPntOMUBofQp6YnhyRjgjKm1W
NyQrc1lOSFBfQmEhN0ZVMEZMdUZfdlJqaF9UdXk0b1UlVXJ7JG5pMVBjUHNOM3d2PEBhR31vaGAK
enQ3RHsldkt0a2JSVS1iWXhUX3x9bEBTXikhPjtEI0pDcz0hOCUoZGZvMV97K2B0VHdBN0hDdWA8
VyQzeHVlcEpeCnp7KW90SilJNSE9cCZtVyhTe3Q9QEF7Z0drM0hIe2pJU3k3dFpLUzNyY2h3JUY0
NCRUODAqQEhINU1EZ3EqI21scAp6WSFvaGZfV1VPZXMmWWlEaCgzUzx5fEVMPmRJezlFRjRzezYr
alp2JShgR3FlaGg0fTI4M0d4UGk+N0NfaSsyTzYKenhMLUdfQGNEaStPP2swPk1YZ0teb2JqaEdU
NnB4NSM2WlcwNnQpfU1FTjJ0RWI5UlE3WHB0e3AwfUJ7b05mSUI4Cno4KkMrRkskLUkranRWJXBT
Kk9DdztVYVVxZz19ZjBJVzFzZVdQbWBSYk9RTklpVWh+cHxMcG1ad0h+OWwlUSFvMAp6TXUkcX5s
WFZ4VnxLZmdfWjZsbDFebW8/V0V+YmcoPGdMbztNQ2h7TjA1VnRNbD1jPDF0Wk1ibTQ/MVhfRDUq
fU8KejBRMDIqQXgtbzZuTy1WTENLPFYwaXhMKCNNJSlFd0VeTjdwdlFJKlRCNUgkYGY1YWlqd3Y3
NSV2V202aSE4TDBmCnpBRGsxXjBXQSpPayhmSFhSOFNJYmY8JCt7Z2wkcFlILT07VV92YXp5TlUj
X2ctRn5DdiFNSSo9OEImdSt1UE42fQp6VTd2N1QlMVgzS3VPIXNsPCFhLVUtcyFuc0VSb1pzQ3l8
I0AhS3h+KG1uMSZTdmVlc1FYaSFMX2E0am16OUFGU1MKejAmenVWKWV8PWVnO2lEUStjSCZWSmVQ
WDdfbGt9cGxCcj80Kn4hejFROCVvaGAkJipkMClMfnNLKyE9eGZ0cGJoCnpTdkx0em58MmMyNDNW
Ti00WUh2RmFRRVlUZSNAJUlePWdoVzcyLW1GciZpUDU7KCVHOXVlIWooVW1pNkNsVlh8Vwp6bENs
YiEjQGwxTTJ7eioyZWQzM1YpNDZvO0x+TD8mQEMqX2YwQ0FwcENIamhjOzkhdGk1VXM5Kj1RYnI5
RGdFejgKenZ4aEclRU9jJUY8ZGgyPlAmMzBUXih2QHBOND0xQmR5KyVJemNeQHAjX2NwfnYlNDBx
eSVaKDJsWipnYXRAU1E2CnojcyFlNCplKFZKYnlqOXgoTWU3T19OdmtHZnZBSUZWTlRxT2tLajI3
cFc4V2NASSgtSy1zeW94ZyNaZVR3P20/Mgp6elIjNTtqNnBxe0ZFOFE5I0lUTEtWTzgjX3FEO1ct
VVBfUEMmTT51c3FGVykhZndPLVEkPVMkZDl2e0lLVHxSZ1kKemY4Yz9uKDJgSzAtRHVLUVBMaH5o
IzZZTkY8N0BZJitMSDQjKHpzK2lkP1JxVlBMdGNRMWF2KHhfb0N1R3paVnpFCnpnfkJoPFZjZkds
dTF8LXlxTEE2K2sjPlh8ZzIoZkVIbTdFaHZ8VXpJPCY9N2FvekFxSnJzVV9mOGhjRkQ1V09iVAp6
QFVRPFVNVTAtST82LUxUJU85c1dYRl5NJEd7emVJI01ELU9pZFUrNTklJWw7bGsqTXdGYT4kaHF1
N0U0VVp1MFkKenhhSUpve25mUD9kQkZkKVhwalNSXjBjVUNtVi03TXJ5fUw2JC1VKEQ9U1IrWig4
SEF5Q1g9aVRBSEskKU02YXxFCnp5RDw7ODFhYDhOYExyQT9jVU5PSFRmfUN7VUdwdTF0UXh3YE5o
M2g3QS00PXk/LTBjZEJSRXUwI2pkMXx8TGAlcwp6c1NWNXB6K2MwUk1eezJ+eil4elYtJHMxSjBZ
eEVpWjxtKFVpNSRkXkhkUHxiUWNUNWw8Vn55I2hWUkx3NUNPUjEKekJXKVcwekk9Vj1HSXFJaHhy
XzV+d1p8I3lITEkpZVNtVERWKjBJbXsraypPY1o8WEU9JGkhJkNOej98ZVRgJnZBCnpHVEFfeiRu
cklCbmxwKm1yND53SzRfX0Q5LUJsMEk0NGdsQmkpVXszP18xdUszfl9PaVoycU53dW5DdDNvRysw
Vgp6dmQmOVEya0FoZj9JcFdeeiVSSlg2NTVHYFluSj5FNU10WSpRKylVMnckVXgtcEJFQ31UdXdQ
ZHoyS34oSVdQR0QKeik8RHN1MHVpTTtELShKZHt4YSYheGlOZHBPXnAhPkEkXkt4XiVqVjBrfnVT
WCNvQz19YkFpRDt2UiZ6bnNzPzV0CnpqPGZpaU4qNz1oS0ZSa3NgMFp1Uk1URW1xeWRMI1Ewc31O
VVFuQUdncUluPT8lM0ckfW5XdiR7YVBFXm8tRjFKcwp6blc2YHIzbCNBYj1acT48bDZsTyo2N1h2
SXJ4fClpbXQ0PzleQSFtJDhDO3s+O259O0taZihrLVVtJEhOZnhiKn4Kejc8OWkwO2VDRUU/eCNY
JCo2anNvaEZ+SzRJKjZFVXdXdVAzVj45bGZxNTlXbmBPdlhKbHtEcmk9O0IxWmF5by1iCno4YyRR
aTgxR15adHNPWkZOUFgkM1UpKSVFcEswcHBydFFRTEpNUU50cmdJMjVRaWo0enNZXnJ+X0tFRXdf
SChldAp6KiFoZDh3eUFHNlE5RSNUXkJAQCkxcSF5bzFEY1JVdHVkNWVVWFE2Qj9ZLUNydXxqdjJL
JlVYc2s5dnMyVENvT1EKeiR6U3U1PWYwaUZ0aW9CMEcoOHhsOEk/X2AqZT8hUnNEbl5iYCFmWVRl
NTxXalg7Rl5qPzVXeilVaDg9K1p1JT47Cnoqb1FGUT95SlooNHtMKUNQKHJ7c2htSkFWQ3VASEZq
O1IzUEttVy1zY2FyfXJ3flE1PTUmKVFqLW8lPDNqcGI0Kwp6VkJOSG5kYlZBYitvKWs+VT82LWVT
YUlJMiVqVzgmTCMtMXAxQ0hRJVlgQjk5d1k3cCtwU30+ciUoTWFrM2R2OSEKeihNeWQwNSpXb2I9
RVdMYiM4PUZ2NVVDallZaDtaSmlIREJOdz1OZGFoNTd0KGZOTC1YN3lPMzVAdVQ/RW5HOCs/Cnp5
NmMhZj07fXhjNCFZT18jQjs7UndGTz1AaH5Sb0dfeXdLJShTdUYoM2YjLUZkRmNHSkFqdGNITCtt
VmZzJGVVZAp6b3kjJkd5N3RDT1V4eEZPeztMRGFFdGxJfkIjMDNKb2JyR0R4a25XRiYlWkdSbjxf
Qz5Yc1JxSXlIUGRkZXpPMmAKekRVP0BVKjl6MWw1WDU3UXtSfGs4aHlwQ1ZrI1dFaFd0eWxZTjc9
TlJBXzl2bjVISH5zV0FefipfelFUeCVybHhRCnpHbEpPQ1RyWjxvM2F0dEx1VzAkcU4ralBYYDct
eXluZHYxSkVsWmMhJktxNldzMDxUdldQSFE7c0Y2Zl87IyNVXwp6R3ApRjg8SCYtZCswelRDKDIr
WjxBSSVaaCE/VWx6KmclWlhPV0RaRWpPbFY/N1Z8REdTI2soSyhNPXolSTg4TCEKempRakc+S0dg
Y0BgaThvazg1UD9YeEhKUl87XiFaLVF6SWJaJWlUUk88OWJrU2lib3NSYW0xKz09RkV5WiUpOyE0
CnpKQnpRWnooeWV4REhrezZ3WiVDV0BZfGxTeHpFd3pHXkQmUSk3Kis9c09Ja3ErNTk0NS1UPmc8
fEF1LV8ybXJ2QAp6NEYraEIzX3lid3RVN3Vxc3FYMG0lfEBKLVFVYm5HMTJmR1ohMXBMcyZZI21R
Um4wKl5LWTUqVklfKGpGSztkdn4KenVAbHNRQXIzS1NYNzt1amFjdVo4JTUkRmJrOEpAZG8oJUAr
Nm47WW8hc3JHQVNSNno9RzNySGooWHRwZmxhYmxPCnpkK2s/bipFR1diZ3RkZ1VRMUhTTzcyUjdz
ZHppayhfeyZtKWw5Xk1aMitBSDk0b0FVeHVVZihQZVN8bURTMDgwTAp6SG01ISkpMW18Wl5BeCsl
ZkkqSkomUV98aChiNTx6akdZVEE8cTB8ajFeKE1gUj5wY0NuckRjfnM3Kk5wIXZSXmEKej10P1NP
dzEzbktfUVBVNG5+NTl9NVAhWGQqbVotMStsWCQqUkljZVVhPyhyO3pRdCtRZnVodW9ecVd3PGhi
T0IlCnpZOGBJPCtpQ3ZoZ2JuPS1iSzJuV1dodW4qZVYhakJ5QX0pPWl8VjNHOTtAfXtNYC0xdUU/
cUB4cGVrJHtwKFdyaQp6IzdaNW5pd05pdSNuQlFSeXx3UXokUHpha15fUFlRM1FXKSY9Kj5fZ24+
KSg3Skt9cDs9e0kmWD1sbzNeWGRUUnEKejVsKlZtcTtMVjxydlZTU1V2Y21JUGxZQ2I1SVBBaz1x
ZzdRdjNINHwrakgpJlhXV21YJjE2RGgrdVcrXzlZJWVXCnpyRW1xTVIrMD8wZGdQeXtlfkE+eTA7
YTVyMVk3PlN7KCF9M1M4WjNCLTNZRlZvUi1rV29MU2o/M2ZIQTdQTXY4Mwp6SmotNWYhez9MVUJG
e30zIVA2YDNMI3FiNnowX3lIMzwqNl9kI2ZLK0BjOypoUUMzSWR5S0dJWXJoVFhoJGZ2cioKenNN
N3dzdiRPUSU+REBWLW96KHItYnxnM1gmPktZQW1vTGF9YTx3Sjc3aio/NCZrVElQb3hFaHsqODlq
Z3h3VG1PCno/Mjd+eDJ6UV50dURrXnorU0k1Xz89aXg2PjYtblIjWHRnMW9YViV0OEZoc1dwQmo4
bWRYUHdMUUlRNTBWeFkoSwp6dWY4VklifGJ6fDxhS3xrQFYjcnxVTnF7SERtO3xMaUB+ZXQpeVNw
TjtyUnlwan1YfSFiRHlpaT1RaUZZOT8qbHEKekx0dEdzcldLXil6a3xYcDRFMGtUVzkmcyNgcUdv
PCRDbip8Ung7cHF7KGpPOWxJS0l4MSlARTUla0V8aDdnYmQ7CnpWUnNTPEEhZCgtPFBlfXUxUkkh
RyFPKmpwMUl6cENzMD9afSFzWnxPXm9gPXF7YjFQKTdsRWpPRUI+V0ZxRWMrMQp6STd0fD9rUXVN
UTJ4Z1J8YmtZUGpETyU/SkJOVmQqVnh1cCZSKG1rXiU+e140QiFtPEllRU1KZ152blA2UkIwYWoK
ekUzfl5rdTR8XnhZSjxra3tQO2cxWjNQdTk1OztgVGpGQSFNcnlgYzFpcldTajcoblBfbDxfY2dw
VkRDZFlFX24+CnooYn48ZWZ8Pzh5Z2YwKWdmQntTfW0mZUFGcnh5SkBMX35pfGshRnEhcHtZYiRD
WnkheGExIXYhQ35ZWl9tU2cqTgp6SytQcjx2Y3h8di1SJFVmcUNYX09SSVprVV8/I0toY0VOVnt0
OU1SJDY2YEFQJjsxelRfQT59c2Y8ZFVNbzJUZCEKekRrOHhUe21PZUc/UVIpTzlxSnJvMiNXN004
ISVXJmgoVFB5UXB1I2ZhPHl+UUtAVWNeS2tEMStvejl1XlJpRnpjCnp6Ql5rTGZRTEBFemgjfFVT
UyYkcjBuUjEoe01qWipjdyFgIT5vdDs5XlpLNX5hQSkyT1gxfUxBcVlYXkAheCRQWQp6QjJiNnRa
TTE3bm8wUzt7MClDUilMS2g2eVU8MyNOZ1FNUnJLV1F1eTdqeEFmQVk4b1N8NkIkY3V6cXp1MTYw
PkIKejNqTnpANm1JeT85d2Z1fTxWKUR6QW5Udn1MbzhRIVo9KFhVdEhGTUI4YTQ4fEFPKjQ5RkBv
aTNDYkxGbElGaGkzCnpKM1U8LTxSdEtEYTQobmEoY0FtVEorR29zSExHNz58NkhRZCVTflhFbVp3
dyg7ZmA5NjFtazFRRWZ4QzZCb0AxNwp6LSY1QH5oWmR4OCliVFJZa0tYVSZ7RX1lU01hT2JsMjtL
bEIzVSV0czsoKCFTSjVPWXNiWTgmWm10Z3d+PVBJQzAKelBPPjJ5P2RKQndiZkR9fTkwVzhXQF9B
MUNyKlhsKUc4Q3hAcTIyUktDLXBabDIoSXlzNUc2c2BFZlJQTjA3M2RNCnpEZlgyQVRXe1AtYSNO
Nl5SJmM4YkpIeWh0UD0tbTB5dnBqd3VQV2d9WiNEX3owK3hyWUFWU2hJVWJRYnRLTjMlfQp6STxG
KVE4Q1hKMWJ2THZnYSljP0NvWlZPZjlyUUo5aSF8cm4wYSV3Kj8jISF6b01CIzY+SCVFbF5SejJr
bnpoMjIKekpGVCh4QjFtbjs/XzIqQzBeVitWeXUmNDtBKjZqWG5IJVhHRW1oR20+TU5KQFc1NjM/
PXZBMzBtfmBNej83bmttCnpsMypxJFEqQHEqeE02SEU8WHQxJmBRMT5kYSY8Y2FUZjY9R2k2WWJG
YlJNYllNVFFLejZEVkBGKn1EajYpVj0wdQp6MHBFP2hCYDRNTHMxdkhVPGcpdnpnQzd+c1RXWVJa
VEw4Y1JUbSpue3xGX05wRCk8QVMqbFdFNDBCQVRDUip9RnMKelohfGpPRzVmVihFQ35+amFod3lC
WGZYTzN5b3AjJWp5QkZPIXdSVllLazZ4UnI1KHxvZFhFPkR4KD57I0s3MGx6CnpMVExSPVFSeUE/
KnAjeVB0PW5SMUBXWj17SUp5RzclSyt0PmpeMlFUeG18aVVHfmpNUUBodD9zeExNKXMkTStrNwp6
cXMmWXRBXmpaJj94PTUrd25SRC1GayY1PHBYflJ3bD84azZBeTFJMUd1bS0ocVMhcmNLfUZNWGBZ
RmspZU5kJSsKekp6KU9BSyhxRWIoWHZOSG1TWEJ5Tlp4Sm5hSGtiQ3dMYCM5KDNoZzBFVjkpcFp5
T1UjZD5qNHNkfSN0ZU8jaT4mCnpXJlhGMW4oaERxWVMwX3tHbUgwaVI7MkREPmBje1h5JE49SEA3
Kk44YGkxfnVgPTBRTXpAb2JYay18QD5rPksyNgp6SmFzOUFya0l+KVV6fUYhbi0remxtaUVWdWF4
JVV9T21tVERiNEc1TXJORWl2WElyRkc4V2RzVFZ5ZXpIdjFeNXEKentZTERkYXtGUik4fFFMZzJl
aSFXPyYka20kdHx8STFUSkNOdWdlPkRvcEB6a1Y7VyExS0J4eXo3MHFqMWNuUldpCno4S2tBZTM5
fFFzVHVyfEtXbiFwc1NIZl9nNVM2JkV6cjhmMTs5Z3Y3SFQrKyN5YEU0YClTVTZebmA4SjlMKmsw
PAp6JnZob085SVgrcT5NPUZgY05Kdk5UVjhOQnhNfTlXQEgpdHFBc1Z3SCQoOXdZTytGJCEqQms7
Sk95anp1P3FRKGIKeiZ2MUFYdSZ3bEVxZW4rUSZBUFgmeVVtamhXQDUlYjJ7Rz9hMjFTQWIwVSZZ
emd7d2pPS0xec3xkeT9Qc3p8KSleCnooV0BaRWklWkRVTnFjRzR3PXVFbDA8PitQJER1dFM3bnR8
JmE4PHJOM2tIMjJLN0VvNSFEdyU+bF5RbnZpQCk1UQp6aXFvX0MwaGV0aDJtTyNiMSlzYFJRK0U1
eVdvKkxpQ0Z5emlvQVYzOW8xWC0za3lKPGo2XzAqT0dlczk5MHNHPXAKelApdG57TU5PUEpCS01H
O0lPOX1GVDN2TEExWkZXUmxgNHthO04jXjkhOX1SPGZEODUhN3pabUFYNyRvPi1vI3tSCnp5Z00q
TGR6PzVFQThBVFk9anN1e2Q+e3FSK01xZDsycnVWelVVUF88Q05hekYldSN5am5oLX1JWFp1S3l7
PkxCaQp6VEZiUz1QKCVCTD8tJUxAPGVYMHtQJTdRVG5iaksxRD5NYCo4MClnSHl8YHdwc3BnQjN4
VEZUfEZSeClUajc5MisKej9KJj85Y29RVUE5M2B2LThvVF4qPHpDKyp5OWNFenV0I1ZtTGIrSSgt
JCYod3NzU01GfERTUEV8QWtOdUNhQHNmCnohYzVmdGt7K24lRXhTY0ZCQUxxSlhNX2hsbVZsYz1Z
PlN1ez83YD1sejxXWnsjV3ckI0k/dVdwcFYxdzFocE0hfgp6d3poTV8we2R8YTM8bVVIUE89bz5v
dy13TWN5YFVgI05XMkxLQ1J5JDMjPmdwPE0/UThja1VMQz5HOUA7QlRAbDAKelglXyNiJnozTDBF
SiVaU1hWc0BrRz12dXEldkwrPlpKbVIpeWc5PCFxQ184S01LWGc1TFZ5ZnIzTT8yaE95SGlSCnpY
KUZyJTUyVWBmSj0oP21mdC04cmB8QztFT1YpZWl0aHBxRWtnOCUqVzN0JnZ3KHZkKXRwIyY2JnlQ
PTJ7UXhoWgp6Wj0oPnAkcz03KHlwWSpWVUR6IUxUTXstKnAqNUxxPj5fQXR2I21aSnZoaWREXjZu
S1hORmp+eiE9bUd0RGN2c0cKendiQmVzRGFZPSN7IzVQS1h6S3AkJV5SN1BvI2ZLMlZhVT9pS0Yx
VE1vT3B1LU8wRVZ0WTdMX2pjJSQqMU5iZzd2CnpCZDd3bE14WDZwQi10QVB2aX0+YHpRbnIjWT0z
fWV6blMje1Q1NVpzKiZpVzh4ZkxzbDZaTmZlP1ROQ3dQPUpqdwp6JWBwM2M3YVh3MSYjcCtWM15e
V3UwNiEkczZeenFRRl52WXJJV28lPmU0RCF0bGBVblM1TkMmfDIqSz1PSmRPbXYKejw7MXJtc0Nv
RXtLPz93UUEmQHJFXyZxdXBpXig3U09vMjB1amA5Y245dGA0Oy1zZTFvMHxaSVAlS3FMTS1YJXpx
CnpsV1VMSSU7PVE7R2EoTHxKKzcjSVZAQWZoZnFlP3hOTTN3KGI+dStzc2coSVglc2xzI2ohfHpB
WF5sdyNmXiE9VQp6RSZ8KnxIZjxmKDQzYWEoTV5ZKyFSaSlGc0dlVnQmX0g9RSU/dXNqdyR7YEV2
cSlIOTw8Y1AkbilsPStJY00qVygKejFLOSQzTlMpd0VQNmNFSG98S0dQJnEkbkotdl9AOEx+Xnh2
QlpFe2xkK1FhJG9+cz9ZbjhNQGx6eTVBVypFOHdlCno2aUhpZ2szYDg9RU9OWkBwR01uaUI+WVY2
NTFXaExedjE4eWR2WH1NZTNoVVckUHczV2MzWDJsPylHUGxmYl8oSQp6cTgkJjZ1a0xPcTU1TEQj
bzhGRWt5RCZSIXBfeEEhQGJnZD17QEI+bE4rRlFzUlokQERJKjEteSRPIzJXYSpue0EKemk2ZGJm
OUZ7dkExXl97dnhiMnR3bU1YbnxmPnBFXldSZ19PT0FxO3hyPmVYMHZMQGpnSHpNbTstRHpfX3BO
bSUxCnooMnZHJW12I01AcjhhaDU3e3llOElNQHVTVkt6NnIzNFkmX1dUb1FBWGkmaXc5YS0tdzl8
P0RwJlpGcnUtfGheNAp6UTdCPlpjM3tEd05wYTheejgxJHFPQnkpJV9BfXppTmd7cEBKdipYUXZQ
cUI0PFg1WXZnWDFKUGV1TnZqLVQ+Q20Kem5IX3JZUlJkNHExJmNDfTY5di1rREExPVA9XkFIc0U8
TD1IKlkxN35iMS1mUzhOM012dzxBZE9fJn5SPkJqaTkrCnpiO31iJmB+JU5vN0xATkt6QW9gPzgx
Xi1DZyhyJXp4NiN+O1RDXllVNisxTkdnfjloNSU1aH1iZCYtaFA8RWgoPgp6dU1lYHgzWDhjPGY0
REQ1JjZhKDdVcHN+UDZpWHMoZHpzWS03YGhzNm8mNFFRSz5VRkBFVjc5Wnl2Nm5RZ3xrUSgKenJ+
dUQlIVZ2NEJpcVc8R291ZmVeMDxgSD1JYzxsdiVOS2FkdHBOKzFHZ0NFfUw1PCFRMzx4VmlWe2Rr
fmlPfUI9CnpEfmcya0FCb3gwKWo8SEpAfGRnIVQzcW5RV2Zye2MmRHJFKHkkRlVEZ3h3K0UqYXBS
NGRRX0J5Iz4jI0NQdG57Swp6YmdObWFCQ2R5ak83cG9vMkFLQCpiemxkIXAqdUVldT19N3ZtRnA+
ZU5iPl97WlZIcWs+eUNaJXZzcCZIM1pfdyUKejc/JCMpKH1mREg8by0+VTBJYHZOekNtKmw8b0Yk
fnAwPzZEVGUzS3cjSHgtbGJFVi1ja1ktVFV2PmhzelYqQWN8CnolRFFaTHZRPiZ4NjhjJVVfSXc1
RSNqX0E5akJvfXF5RzlOc2pEVzIqdDwyV3NmbCMtPlBFel5OSDJRb1d5VSUmewp6bTJVSn10NWI/
WSszaFIyMDFXJT9RWiskbXVrcEZlOTZHVz5kVXRzWHdiJXJqeUZgbj9hNDszX1gyQ1l5bWM5a3UK
eno9fk90RjVMWnp0KTsxbVMhUGRWUERgPkhFRktTS0hUV2xsa0cpd2tMRypeeUh2JWcwYXxvbWl0
MllhbG5tUCRICnoxQEVgaD1VfjYrUS1aaCk1WiY4Vk9wVU9EcXNNfkYqX1N0QWNtOWZ+SklHN3ds
Vns7S1UmanJyal5GWTIxY040aQp6dFYhQis8cCpONys+ZXVLeVNvVXcwQThNSz5eU24wKk1wLTNa
WUEkRHlfcy05cDt6byEtPHRDO0tGJWwyVUtWVSoKekNXJi0zaH5JZzB7aGZMfk5SWDE2S341NCl3
RnFLYzg3XnNQZmpxMDsmV2sxVVhiRUM/QCkpVDZUYkx0MD8xQFk2Cno/KCQkS0MwKjM7Z25EbDxV
ISlFKlJlRih3SShwTkwwRGcxckIjWmhudWszTHpQNiV5Uz45TDIxbUhOJG9NVjgwKgp6a15jRHAr
aD1CMlRjQnFqTW1UfUMkflgxPU0jMlAxJk80Nzg3Xyk9RTNybnJuKSZ0WipgdmpLXkBueHhNTipl
Sk8Kek9RbTRuNHYoUmN1WXM7MmtpfSg4enM3SkNxQC1gfXgkZzEje1AmbUh3RDA0PD5lTzlXbyVV
VFRGVjZGNUJ5an5ACnp2VHowa25JYnFQbjFBbSkzO3kkVmlZMXJmdWtPJX5VKyghUmowUT9heCs+
Y2R7QlhYWEZSdmhNIz49YVFFSnM5Ugp6XzBLRzsrfDhLdjQmMXhCYmUoUDVNb1R5U3teKkEzbCo+
bjZYJDJhej9vRmZ0QW15dEh1fi1wOyZSaE1DWHBIVFMKejgxSH08MWYzYDYmQUZ7TGI/ZnJUTW1y
dTtEfHFnfj5SU2FnRkw8NCYydntLfWdmazNqdD1vJF5zIyE9WCVOMiVvCnoqfjwxIW9HRytKfEsy
NGp6JGs0c2ZXJnZoTnt8NnU1QiVSYkpzUUB6N2pPPWkpV3hGTSpKLW5kQW1sV2tPSzdAewp6MUlQ
bmdfJT1ZQmghbVROWUBwOU45e3cqWSV4bEshakpAbEFUYGVHSVJASmx3P0dCYjI2K0IoSCQrb20p
WHNrN2AKenB5cnJIcyRhYkxeQkpmV2Ntbzx9cWhvSXNTPnZQSjBCVVhmbEtoYTg4I0ZFZkFvNGo/
VzZAaUJXPHY5cmJzVTI0CnpUfDdYdk5pfHlKM1lXdzdIZEUqP2hrRSkxSHNVZEVuYX1zYj0hS35M
YzNkZWFBPzxCRUsqJlE+Kk9yMTZtNVoyTQp6eGhwSVJ7ZXVgKDxNOEZVVlI+K2tCcGttak9UfEVU
JXVse3EqLTFjYnRNRlZESllUVzMoaHVkPW1vZ3dnejVfeFIKemRLWV9NJk85KzNxSSZFfElCWmpn
bj4leklKeHopRnF3dT9sal8zWWBGZ3hrKzhsJXV3NlZ9PisoXi1vNkBKPG5JCnpKVEhVLSF6T3FS
NndQMyl5Rj45VitgSWZ3ZVV8cjIrSTs+Jj1uI3c2aihFLWsjSVBrTW1gYWFPNTxYIVUhUihQVgp6
RiQ+VnlCdC18Zz4kMVd5czgtIVQqYmpzel8wWkVPZTE4OHhoUj8xS2UrSFNqdUlFSDV0aUx7Njc9
bGxWZ0x4KnsKenQ/WTs3Q0l9RE84UnkyMHREZSh7JTZeOHZSUm9EPjI7NHx4Z3pyaUd4R2ElI3dw
WD0yQzFEIyY2Sm03Y3lpWV9oCnolaCNibXVrPC14Wj11MUlUSnppbT9ZTT5tXlJGUih4JmIlQFFO
SUZ+clcyaTdkSCpQfDczeHxYMUZ9MUN2alQoSgp6N0YtKDhTVSFGKl5pJmVRKTZ9M0hUbWVaJnkz
MHt0JmxzQj57X2klXlJvK1RRPnw8ZE1ZQHxAenZ6JUQhdU4wRjMKell3X3xEMHQxe2lzNWpTdj0+
fG5kRXdQe1dBLUgkaDFNSW9jP0RXJVBWPiVjYlNgfkdJO2hCbTNNX3MrYDg/PmJTCnohU0FtWFZO
cT0yMk9ffHdzRkNPR1RvRHt4TV9pNTtANS0oTlZwXlRJa1RXU1hUWEZLa3UmSm5HdVUrYXIzU30q
Pwp6YDEodW5WS0A7cnZrWVVhN0l8dHErc2w9MWkrQTM1bzRJUDFmKj0pM2A2ODFHWXlec2l6TjNL
OFZQMDxKX1h+SnsKei1CdUw7OUZARjZmb2dnPT0yO3EjNVdqPWMocGlWK1Z4VTRtX0A5Zz5eakk8
MnEyVEs0ZERDVnx6NjJPZ1llSj02Cnp6RUohIVI8JVdhKV9XbW1ERUpHZypvP1VxKlpNUWdWVHRa
ZVQ/eytkbn0kRlFgNHRQWldCLSZzQC1xKGJaJkhCPwp6RCNzWjFASUVIcDxTZEttKCQjJSZ4WG0w
eWFtZCM8QnhecWtsfHlDbkFXI2czWnpDNERVMEFmdzdmKVFgY3xNeXAKel9CP3ZlYipFTTxHNUt9
d3A0ZjdiNEMjakhfNzdEV0pjaEFFJlJrSy1YJmMzZzZyVjgkd0dzLVUmS2tLXyNkYjBoCno3fm9y
bFRZQkolYFdGZGwxYzFXKS1eVGJKQG1IcVNhZFdCelIjaXNnMTVlYFcoMCF3bFVXS31DWXlaOFYy
TEYtVAp6QW88aFE0NFNjaCQlLVJEPDl2eml6fTtTUTdzazN4TlBJdU47I2pqRC1QYllZY2srNldo
UGM4amtKVjcjSyleSE8Kej9zP0hKVn1jR0FgeXZiQzBZN1VDPyhGRENBRCMmd1NmUCU1fDNGYGZ7
PVBlcV5KaHhyNldKJihNKUtQR0Q8VygqCnpSa3UlMEZPbzFBRDk8OHNjMz52N2hqIzZuKHk5dThG
aztVJUUhfCEqUnJ8VGZvam81K3lMSEMlWEx2RmF1OSlEaAp6MFlsPkdGMjg9Z09nS18jYFFPZjsz
S2Z7cXExa0ljaihWTSpfN2ohS1VGbzVwaFkhTFhfMHZUZHw3KHd0ME98WTIKelZvWE5Hb35CKThD
P35pTU5fdlJOeUhfJDQ4YStCQlJOMEBnX0RpaU5iJCgmKXJqI3tgJk01I3hSZlg7eV5aSD0wCnpH
ezNpcEk3a1NJa3sleVYkNVZjendQKmQkUVNAZGcrcT12UDtPMCE7ZiZzMGVhNiMtRUtRO1J8Y1Yz
PzslRTg/Ugp6SnAhfHJXfUc9Q1hhYU5rTkNZUERhaitsfj96eENFcXJUezdiSCpEXz1oKntjUll7
fCp7OVVWalNpb1M5U2hHNyYKenQ9bzkkTF4+aH16ZUg2PVBCRUdTN1pqaDk5Y0FKPjd3JXEhaXp0
WHkxUFAyal90cEJeYUE7YU9TdVByVnAjbVc0CnpLeUAyaVpjUDBzVTxpPjUzUDlSQWtQNkhkbGRn
ekdDM3J8Y1JMYlVOTG1ienhZUXtHK3krdmIqWVJyMlh3NV5QLQp6UHwrLSNPV0M7cFkzVXI/R1ZR
KiVwS1ZYSm8weyU/WFdPPUd2YUxIIWM5VUlgLURLT2dIUTlEPS17MTNJZjVFPWEKejxKfGk9X1Mp
O1MmUlU+OUlSc2EpPzRyPyFXPlRxX2VuUExfIT91bn1eIy1TfjkrSkltdj0qI2VMQTVEaD1WYFQ/
CnpRQG9NSmxSS1FrNkpjMmdxRD82fiV5Z00wREZKaVZib3k1MlFAOFdMTy00Vjl4NUBaX2NkaTh4
SDJaJmR1SXNPUQp6OTtJN0JKSCpmRkZMPVB5T2lPKktOaFQhMzdLY3p1RVI4e1NNI2s9SjBHcm18
c3FgQnEtemdteXJJdDJeJmN+Jk8KeiQ4MXYwc210KE0hSTVeTHJYTFQrczleeyNfV2J+YnQjZUhv
ZFpKYXB4PUxtJEpOKl9TPjhfQW8/WSgoK0NBQEg+CnpfRG11UHE1c340dCo8fCNXdCF1LTV4LVp+
e3EpZ2pVNU18JGRoPHVDdit2cThTe1VZfUVGfG5ie2k+enxzdWBqUAp6S2x9YDBJIWBpP3JVYEtR
eHo1M0JHRl8rYzhTfFA1cG52KF94IzYqeGM7fXw9SDY2Kk8hMl9PNEUkbnFfeTheb1AKelRLam18
LV98cHVCdXo+IXNyZyt8JGxTa01PdGU1US13cSVPT19ZdX0hTiMtJkxScj0pPldEQDA2VHFBJV92
YCgqCnojeXY2KHRLfT1Obks2Y0xNOHQlay0/P25tYGl2dygxaFJqVkY3Y19rMV4+WGdwNjlHTERV
ZV9QdFAzTl83XnVIcwp6c3wmYXo/ZGkmUTVhV3I9RGZGKmozRCgxNUcqNmNEKU1TIWpoSTtNbHB0
YGVTOTRiRmBpNytPLUVgVGRuUXxyQFEKenUjK0k9R2NOWnpuTER4WVgtQD0peiRTV3UqR0oyIT5K
cWtRTz1nPyE1cnNDdnIpKXd7Pz9DVytlbXhSOVdOREFgCnopcDZ0U1ZgNn5mPmo9ZCFNcztZeWlu
Uzc+NSpRSXQ/aHNkT3JaZVhIcmNMV0JncmZZJT4jSVZ3MClqVTlANXVPfQp6ezlrNDZFNkkjbUw1
IT1Od0V1NndUPW8+UEg8ZWEoPGh6Kz5gfTsqQlYmTjY8SWM/S31SXlVnPzlTbnB5UysjKj4KenZo
amZ0RSpDLXZheChRO1gwVlUyQ302ZVZfM281TmRXKC1TUld3LUJ0R3wkdUshMUA0e2haOV9uWX4x
OCVRYnk4CnpafChjby0ta1JHK1FDUzFRdGE1cFhOOUVfeD96RWYxNiNjcSFBQX1fLXphcm5vPjx6
WkE2ezE9JFE2YUFBZTd3OAp6eFlrZEtxVjBocUNLcnxSUTJQLXxNSStPaFgkIUp+c1IhM0hva3E3
cW5rMkQmTENyPmh3NiVaUE5BdVVlMzJ9ZysKeiF+Z1RfajZCI15Xb3A5a2kpaEl8WE5YOX4/SWF6
WT9ldGNuMCk+PWM7ZllGPUpkSHp7NStPOGs9R3t8Q2tvZEVUCnpgPTBGckEkd3lGcz4oRXg0LTcp
SXJRO1oqVzcmPGd1UyhMIXI3LTdfcV5fU1BEQG0hVGAjUFhKVCZwSmREREFLbwp6JGY+SWY9b2M5
a29kKkJQU1hVTVorT1FRalJSTF96OGpGOUJPYk17Sk80WjB7Nz0/PSlvPV5YSWZLSDkjZX1YOGcK
enheMFJqSzdePEF0Ylh6VUxlaTM3aWN6fmFNemVpPDJsdyRKK302NDVyRmxpUiFaM1h2eEpJUyUq
ZChyfDIqIyFYCno7VkNjRiteVyRtUiMqQTxLZms8NGFoelJhYF9eRUZFQXE3eWlHWGpUJlVybklm
b0RaM3lkNUx+PGlKWVByYWM2Ygp6ekUyQzBsMW4mODZ8Mjsre0JvJjghPmlsanJmOHtTO0o1RVZl
dEJrWV9PXk1oQFFteGROUTdubzV7P0syVUg2fUcKemRIK3xebj93VHhHdGJyd3ZNPnRhV0RhT2Bh
K21IXlJ3NiQ4WFFuPTBOLSNrVDcrczskVyVleCt3MnZMaFgjQjhiCnooKWpDTyRuXkoyZjRFK3hT
Mjh5fVR9JkNBcnZ6NHk1VkxAOXFxKDAybkB9Kn1XNFBkLWNEaDZnOX42JW52aGByJgp6M0RqbVR2
M1RkVkItYmN9QzRVWF5yM3koa2R3Qzw0RShtS21qcHVoeSVaOH1CLW9LeEtrTDRmfEczWk1LbSlG
M1cKelQ+YHlJbVNyU3ckI0NuMWl5dU1FbFB0NCliY0B4RWBYPG1MKEhSOUVldHxnJmUwQU9iIyY9
X3l3dUo7cVQkP3A5CnpTeSF5UWBMdHcpJkJpKz96ank2JXQwUTx+JUJ1WEBHKXlHLT55b2YpSFZP
QDBxUFluPypxUERhY0QmR3I+VnllWQp6MnUyQHxjWkxEN2BPUW8pUHlQPXohdkkwQXxFSkgrU05I
d0BGYzxVZXowWXgpNmNPPiphQSFMb3JRemNUQGhNLXUKellEMio/UW5Kdlc8JWcyPW5VaXcqIz1I
SjgqajU1e2wmekF6PG9oR1VCd2haS0ltSGVTLX5EdFQ9OX1GWGApVDBlCnp2bk5yNWYrVmRIMDMk
N0ghQUNIa0kxVjkydm8obk42fEs/ej1kK00hVEU1YGV1dHlyZV9PT1ltVGxZc0FWYnRYRgp6R0Jk
UChpMTdmWSkpVEBJc05GJj9oLV5rIUF7MT9gIX5AYitxYz00RU9wRVlOPEB9XzJrdigyJmtwKERw
UUwwYjYKekJPXm9QU1QtVjl4OWBRc2ZXRGR2Y2JMZ2c3ZzhCOSomRn5fYWp8ZHUrdDt8O0RzY0k/
bk9abTBYey1DalVqaFMrCnpANDs+dTlZRVpfMnFaXkxJMXVRbnRRbDJ2VntuKUotZDt9eUxjfH4j
bkV5bHBOJmImIWJUKGlFMH1PdmpsUiYmZwp6JVhUN2hEKHV3MSpuQ3lWLWd2NXtLVFZaKjUzcT1U
UT5DSUsjN3cqQlVMdVhYJHglZjFwUEUwcDJ5QzVJdDtQaUoKejJVNG95TlQ2QWxlWUJNWSMtJkJY
MEZZOXM8YjBPQWkoKm4oK2N9PzlNeT9SK00qbVQ5OH47RUxwRyFMfG55O3hDCnpWWFlyZEg5fCY1
bnNDSmE+OSo5TCM5Szt3QFJFN3pNVFNwSk52MVB6eVZacCFqb2ltUlJxeUQ2RjZuc1JVdzZ3Jgp6
ZiMrc0NheDlWYFZxTmo+a2x+eyFISykoZUokVD96VzRCQnleRHFFemtBcV4jNTg9PT5qeSZqYHs+
ZkNiWWVMZE0KeihxZ0pzRGotKWs3eXota2xabG1uKjQ5Z05ve3xVe2hEajg9TEFFKkhyQDJ1JCZZ
UGVqKks+eGgzeXdObFYpKTcrCnowKWsrZXt9WlRJe1F0V3EwWWAoSS1AN0ZEP2x6KFROKEA4ckpO
MDB2SGxBSmEpKDx4SXE2IVFWdlYqSmh3VzwjTQp6THJjWFEmQ3c+MVlQYUd7cz45JjZYZVVjMW5I
V1B5KGx5akA4emhgYV9sTkJ7MyUhLVFjeHxhLWVuTk4/UShQNyYKeiN2VT1GZ2JsNlR6MFB0T2F0
K3thV0FuVWFSQDkhU01YQno1Z1R3e0NabUtwRG9IOypDMzNkek11NG5vYzh1bW8/CnozVWxNdzZq
ZEZTMzNlflhON3piPEk7K0p5XmZXKkNIQyYqYyMpXl4xQlpFYGkrX2g0P1RfU1FzVUVrV2RuK0F5
Nwp6ezA5SzMxbW1Adnc/e0RnKnZPTUVySD09OTJqJnVIIXUoeHpjZlomJlBIeUMkYWBnTEZAfUtN
NVRnTnF2KDcxb3YKemByRWVIQjk4MmtyeT9WdDVXK090P2tHNCtgeHMyRj0rK0pkSE1LTldFWX5o
VENFYTN5XiQkJjlSdk45cFUoOH1SCnoydUFEdylWbzAhM2pte2FTRDFiVUpFKmImMTlSPVFQZldg
TiRBe2IzP1pKPXJnI0s+NCt7bEo8UVMpUCU/Q2pFLQp6Jjk+Sn0ybGNtJGhIMyR0Nz0hcmZXZXZT
ZipZNDBxeEpVbXV6S35UdDc+NTEpdzZNRU1EUCopIzRDKThQUEQhR3wKelJ3dTtgWj52NU8hWnVP
OUc3LXxLd0RlbWIxak4kZisyeFhFKiNJMFZNPHxrezJ4ZzxIRksxQUQ0JWJRUjI7KjYrCnp0I2ZW
RVNlK0N+TFlIZUZYfExhalZCIXspcjVqV2A2YHVSJEMkX0pzNEQ7U1RaK141NTt0Vj9Tc2xTODte
bkZAawp6TW1tPzBoUmtOdm1CZyFOUnZoSWR3dmcmYCktUjZfWSM3S3o4eyYkS1ModmtIKT47MShN
fCRsaTVkKFRHP2pMWCoKem55ZURXbm54U3NXZHJjOT54fHNSRkY9VipteHkwNDg7S0pSPk02MUxJ
ZjNSSm80KlAlYFB9RSRvUVFPSTxZflJtCnpYVHZCfClEKmlVNTlSPGl2MzI2aWA8RjN4JGxmKW9k
QyR6YF44MzNtdmU4Wn1FV1RtREp6MGNOUm9jOSNJb3Nhewp6RGYjSjNmIVJKVXhIVnB2Z0U0MSVa
ZX1wKy07dVE7PDZRSFAkWiQ1ZXkpJSpIczMlQDtpPENMUyEmX3ApZXw2Z2oKej5UUkFTdnxJTnhi
bTZBdFZZNVglbW1BKyl3R3B6ZkxaZ3YySjV2cE9DJiheXmcpOG8rNTwocEJVcmVRJW18dn5tCnpG
UU1nRFhfKnZgNlAlb25rNE5GMzczVTJXKTRnIzBUe3FAWCR2VyU3PDdnIWlYKThRe2BYQ3olbT9H
SjAjQHQmeAp6JXlwalVAazNEJk8pdmdvK3VUc3s4T0R2IUo4R2lhb2Z6NHllaGxAdT45YURjR1Nu
UUp4fnhRfldXfCg1OWJXNkYKekRwZFF6WGU9KE8yakg3JHd3VGhQMEJgTGxQXip+Xyl3IVQ3ZD9F
TkxhI0EyM0BzdCEzYDhRJD9oa3hXfnM7OSNQCnpvflhWOVgrPkl+Mn5pY2xlM1Z3eztWTzw5KyV9
TiVefktvYkBLayMoSCkwa3BEYFRQX2RDTDl1PzBsdEk2KXEqVQp6Um9pRXReTzt3KDdDOSpqSzk3
JkJGLXdMV1pmI0crcno0PDFqUjZEYF5rdn5NO0FyUHQwQz1pamAwc2hjWURyRCEKejQpQHdxe2Mx
JUc7PmFhUz9iWjcmel5afE16QSltOSYoaEtyVTN1cEY3UT5UKCNPcWVae2x+PTZ2bWVSdnlEITd0
CnolTGUpI3J4UzBxXml3Zz9vQmkwJUJhSndgeTRjQ3k2RCQ7JSRnJWI5anpicT5kNU1sN25FJVY2
R31JRTRLPSNMYAp6JUlwKzJCKUI+a002a2JEdiM9NmhhUXVWQ143QGoqXnE2WGxSPyRodTZKYTkt
Ki1uMkMjNGFFe3pLO1ZJbHp1NUMKejBrcjlkVFZ5LU5ga2N7bSM1I0ZhSjBFaldaMWNFNjNiVVRL
Jj5qOSoxcXAzajJDcURGVHF9OGJ2WVE3TzJENSZ7CnpDKS1tTT98Kmx3PWkpY0p3dnZERXpxKHB9
SyFkYlY5Uyl7NUp5WWhjJTdUVSU4e2VVSjtBZGd1VG0+SDU8JHJSRgp6T0khPGw+VS02Q182Y2k4
WF47QXZBPGY0Qj5HQ2hSKFVKP1Zvdk8zTWFMRnd2Zio/aH1WQ29vKCspPVg1XmQ1ZVAKelcjSUlm
cCg8UUYpaUBkNyR5WSRaO0RgfEBHV2QoIW9UP0pYZGQkMVpwfkVPU3ptJmtIYmpKXy1oWjR4ZWZK
dEEtCnojfEtSamptJSF8UGVSfWB1IUx9eG1AaT9DeFFKd09PP1N4WEBVUzE2aEhGalA5U3djKW0m
eE09RTY3Qz9YLUZBTAp6cSVmIWwwQ0xiamhUR2NYIXNjViQmRTFJO2pCTjtVdyFmK0M7Mm9TQ0hu
bXNzQklScF42ZXRfP3pwNUY+eGp4diYKejxifkFLdWQqJVQwYUw/dHA2UEd9aFBMP3xPTDF1YntW
cy1HRCNoOXVfMz1YTUlKUlZgKWMmeUJCfCNmTkpWQnd3CnpzIyptaE9jZz5xM1crc2leaHZCTiNT
YVopVm8jeylORlJtTUFmNVdSKzZPMUc3RGJXfCQkelplVGtma2VYX3FsSAp6JFF7clMyfkx4S1Yr
S20lIWZeeGdXNV9QQlFDYGd+Uno/ZDs7ezx0JWdkOHNQRD8/SDdxZTkqYXAhcGthOV9Hc1EKekpK
eHMyanBCeFFOfExPMS0kTFY0RV5wbGoja2JpYXpeflJRJD1LPTNJYTtnTi1kens9IUVkYWZ2UVkq
NC1gMUZmCnpFMVlaNjNtOz1nNGRuRENTRXpjK0lZfFYrRmJYOEptQERiRXdMNW54eCsmfW1aZ2I7
Rl9oUXVKJER8XnZYfT9ZJgp6STBwJnZIXlN1fCY9ckdESFMwYDJ7Wm1eSmM8OXRjayUoN2l7cF9a
cURpXiFQdyNWeFBQaHtqc0hgfHRTVGpNaHQKekl3aUdZS2c/eE1ZZU13ekBZU0hlY0F7RTUpPkVj
TV5KfEs+M081YytZYHBzdEktQEF6KyNYaVZ5eF8jUnNGcFE8CnpvSH1DPntrb2BrVFJ0VWMhYStg
RElDRHV2V2pAT09uYkd4OEJITnhtVUtTRndUaXpNWHFAd2RRbCQ7JSlfJn4pSgp6eG5EZUJ5QlIm
VFlKQzZpQU4qMF4qX2V+OCE4QVIoV2V3Pi1nTDZvSS0zcyZvSlBRR0R6bTR0ZytjcDhyRmJNfk8K
eldiRWxHdyhOVHJUODZvNEd5VXBQajI9IWNLYjdOZGdlS2hpN1FNTUt6alotOSNHYDFVMER0XmFM
KCU4OT5WVXNyCnpCKlBpUEVRKllPQTliNTNHR0o/SEQyKkFaRnd1OWAoNEUhMVkwVEg4c0FvTSM+
R1pTZ3kkcFQ7amVmfklga241ewp6UG4lOD9ic2clKGtjOWlXYjY5KHd6KCFTUSNMdm4+dWxOfnI/
UztxXnNUX0hMZyU9QTJMNV4hSyZVQUdYI01TPyEKeitLSzV6RGQhTUN7V2A+QiQjQWxEc0Zabip7
ITF4R1l9anJxZiFCfFRtIXJlfDYodlZEYiQ8PHM7PSoxY049X1diCno4dl5+fSFEWSNebGsqUHxI
Ump6fVlzakNodFd9NiQle1JBY2BCN1BgKVZJcFliVkRSd0RpaHE8WXp1UHh5amhTeQp6Q3ArTUEr
fm0kKFF8Zm4obiZtKWQ7c2RAWmlTWHUkVGxeMlR5ZUdmI0lzKWtyPEplT2VebjExPjx3d1AqNWlr
ZDAKekdtMHFgO3tpcmFxaDdNPUs5LT9XJnwpcihQJkxGNUp2RUVRM0RsfXVFTHghOXhHPnA4QCE0
PTFvM3hfMiU4ZikzCnoofTNEXzYkaChkdURVVkdMeEFyaXBeNl9EUyteMypGVWVGYGBIelUjZStF
UEIlOGQodHU+V2ktb3h0aSg3Ym5KOAp6YXY0aX5TI0xrbkNKcktCQXhrUFVhalhPPE5VbyFJaHFY
Zl55ezdxPipEI0Z+eHIkK0syPWtqNzJiVVhuJnVyS2oKeiZ6X30kVkIwJmN4NT9DOCtFem4qY3xO
UjU8ISV4R2YpPmExJHNfZkpUU2pATDVVMVdMcXFZZEJqKGtfKkw9NXhKCnpaTTVyYE4zaVBoQnw0
R2xNZ0UrZXUocCNMO353bWMoMkhMcFQ5OHQxRFMpcFpIJmQwT1RXRTBIZHdjdWVaJGMrcgp6MTFT
aUI7UU12MElYeStsRyQyWUlsZz1fVEh3JExkbkh1V0tLclNwQCUtVTlKVlUrPGRHR2tSfiQpfFJ6
ZUxFJCgKekVGfXtgd21lMS0+MyN7VkdSKH4xJVIraHlRVWdgeGJGMyFCN2F2Iyokc298UEB2PHp9
NiooPn5WdHx7fXg4K3hUCnolVFEkKDIhakt4XjdgazBqT3QpIXEpTyo/bkZoYGJ4Uy1NSkBKJndm
Z0lYQENVOSkkKUJ7fWJIZy12U3hLVkNWagp6UVg8TXVtYypBKiZgKHk4bnJhb24pekZ0NzdDd1lN
YDMzTG9rVD1QMG1gWGBBajRXKWw2R3dAUmlCYStmdVc4KUwKekFrMntmdG11ZT4xdmNfK2JyXi1i
LSpjKjRjNEdHN1ZqQiMqRkZZOEpNTGZpS0l0X2ItYVMjYjhWUWJ+MD1YPGl1CnooN28+OWd9OHJT
Ykg5JXw5ZTwjeSE3OG9Sbm8hXl8hKFZTWFA3a2U4JHFxd25GMGVLXiQlbWtxMmlIY289PntFYAp6
K3x3dEE4czVOMyY7VWc4STlHQXluaGU1JkBxPWV0Ji1gYENkKD1hT3NkJnV9dzEzbjVmSzRkWkdQ
Pnc3biRBY0sKejNJJihhbjBRclgtaCk3bzs2VjRNM31MU3dnTGJ3MGIjVDYkSGVLMkxDUHA0UkNG
QEd2NVNsTT5xSHRQTzdZa1RZCnpodUE9bzskWU1RQFVWT3c/enV9Y3BMPjJ4LUFHVzlVdGthdWp6
YnFOJUhKRXQxaU5UenhHREtSZjF5cnokbWBwaAp6TCFqe052bU5MX0RaWE1vVVV3bDcraXkhK18w
eStKQ3YzKENENSMxKl92Rz43NyRRN0FKISt+ezZgUEoqYTE5Un4KekJNa0o5YmpIPX5KK3d0PCF1
fXJ+NEFydHJaTGFqdCo5S199bmB7KVUyfml8TDRQKXh9Q0M4fH4+QEJhUEk8IyQqCnpCJjZKMjhr
ZENPRjQtSXAzb1ZFNjgjc1BCb0s0TE1NRjgmck9UREN1Z2owK0hnZztgP21oZjl+SF9NNTk4dEM2
RQp6azMxSVNMWktQSSE7PE90P3ZrVFNoV20jQytJSjd+RihARyZRKTEwWTxhdTFTaVNKKjNIb15n
aW9nUWpILVpIdUYKeiFxIVBRKFN6NzwjSjU4ITAhJDh8aCUxTCFhYTBRRDxOTFRwbWgrJGc7TDd8
MVZ3JEtIO3wrMTQpU35uM14hS0p3CnopU2Y8eCEwcFVmdE9iVS1eakszUTVZMWJLSnU5WE91JXRo
IztqQ1NkWFV8QTd0U3ckRE9SWGUpO3YtMHBJfFMqRwp6Q20rQXRXKCRaeTtCV2JRYS1Vam17Vzdw
eFZ5UU18NSliSilpbW81emdKakxFbSFvVTkjZCUwd0Y9YyUmWTcmO1kKekFJe0huczlUfHxucDAz
az1yVmpvZ2VfMXhEZmc1NGZJek5rTnc3WSFGSSY7TypfSH1gJig3a2UqVSNhfE4ofFJECnpYKFpj
MVJtJWdISlU9SisxMzhea29LcGV1RzlHRnNeZ0t8WDNXP1V5dDM0UFhSTn5VeilJKDlHJTQqOztT
MXw1Qgp6VDB1My1SVHRVOFAofktrY0l6dXhDUE45JDNXKH1tRUZ9KkRKNmgpQCRhSk9FTyVNJFMx
QVlJaz80RHh+KjlHdD8KeklOSU9QXnRSfFNzVUI5PXphIWJ5KzxQYGc3bGpxRT9AKU4wWEJDdyR5
QmdTVjdAKHszTzRDU1d5PGQhZmdsbzwlCnoyOEdBTUleVmd1anQ2TlNFUW1qd0NuRUIlO0lJYkQh
MV8mZUNuOCoySGt4PTQoVjBzek9YVF9eTlotRnAyamRnNAp6dGVNS1RNIzljbU1qPlMya0VSJk51
PG4jbUd2UzRVYyVlKjVrKStYMnFVMkFwMXhjdCsoT3g3fEZUQ30kT0FYN0wKeng5fCFCeXdgdDBL
azY5OGhRMCM1SmktIW5QbT59KHVIbDVidkxLaGIpfVpaVEtSN2UlPkVQOXNwTDJOdl92V3pHCnp4
UklUU21rZnAjaGApbGN7eTB4RUFTJE1mQkVgRHNMOGR8SXRscD89R0dVJU1RODNXOWB8b09KOCY/
Rnt3QDhQPwp6ZiE8N19FWUpWSSgtPkVOYV9YTDJJbWQlNy01dkk1JHxVX21gUjJidldRM3Y8Pmhe
NXUrWlM8YHM9cyhhYD19JUoKemA7RHR6PWdBSWpBVlQ9fXllMVJCIUhpZT88OVlhVmxIOCteZnNH
a3wtNk1jQ01eVE1fQGBFXj9yI15iYV9edWo7CnpkKWVYQGI3O0B0aEZ1dWFWTU82VnY7PSFDQnZK
cHN6LUczYnJkaCpUZE8zbD4zfjFBXnFYd09iJSQkMGRUZCo2bAp6MzFGTDJFdWgtVHRJRjhmJmFz
UDFlITZJcWV2a1d8Zll5ZXlfMGl7WGptXzNpSSVmWVFVb0dnQTwzNmQlYiUhQm4KelYrJUxoV2RJ
UCYhRUNrMT85VmMmcSN2eUR1MVByQHVQQFR5Pm5LO0w/ZyRFfjRoV3ttKGAwIWhnU1VhKjZKX01U
CnokRC0waSo1KWpKKF54YUNndzxCPCFRVUZTLXAwISNCdHxkWUwkRC1VZmNATHdCR2FmdFFiY1I9
ITcpKTdVZyVqRAp6O1o7fk9xQ3Z3QkcyNjktNjU5IXt1Tm0qT2VBVDt6S05nZCF5UW5IX0wlYlVL
SERscipDRW96dWxJVUV3dylraDwKenFXQElWc1k9RVNxeDI9YGozdj1uQ2lWPnotV3pFcXVUWGll
V3hpLSQyeDV0KCgtJH5PVV8ydXs2NE9BPGJtfjFQCnpxIUBnRl5SenpfNnkzaitHY0gyIU01KjA1
ak1ndyNiYm1jdjcxNlM4UFVSfktDQCpYU2k2O3g8MyM5Qk5CZmYydgp6UnFQZDFXRT1xb1BTNHNG
M3taYj8mUUlPYVZFQ14xXmZoazFvIV5PcTRsbzFuQEwoTil1JShRUnNOITdycEdrVz0Kem1AKiZE
MUI5Pz47cj1PZyV1ZWxjSF5QbkNIfT9FQUpnTzchIzVwaVkxfW0kOW1JITtSX2sxM01iVyZMe0VC
KmZqCnpEMWVOMCNCRX0ocndeNHVyb2Vjdld2UH5lb2haaDM1KUhyWlY4cFRCIUNIckJqP2lBSkVU
VDRCQXoyWU1TaE0jNQp6R0RQaHtINTJrKHd0cGkkZVl5aW4oTFU1bTM0KjEwSVpPUl8kZnB5S1gm
JWZ6Kk5GeDItdEhmfGQ8JncwQTF5TzAKeilAK2Qqc05aWFRtdUZmI2Q4YztoSzY/TS1YeUxReGR8
OWU8M3o5dW9mc0c2K1JENmJOa0duekl6SElpemopVnAjCno7MitfUXEwKmV1MXdNO1J5czNPclRi
JDY/S1MwJDJzckI9fHkmZC09eCVpSlIzSClATlc7K2RvdXg9YmxSOFlafgp6PGcjJH1xeko8QjZl
U3pvbmJRQkUlZkU1KytrcFVjKSRDNUtiRkpLcHdMaX0/alB2KCtGT00rMnYqcSZ4WSs1VT4Kekh9
ckcjWGxjTHhqclp9KCNnJm9vKXtfQFVpPUBwfngoeXokUmRve0FJWDlsTV5afE1mYjgzYm1wUWxe
UWBwPngkCnpfYnEwbExYcHk7ZDIqX1I2JVh4XnlvX0p5eDcmYmkydkl2ME9NXzZXb211eXoqPyN7
QTNrJHkxezswaSRBQUBSTQp6T2ZmUlQ9LU8wYyNMfHJDZE0tJm5gZjJNWGpicXhTPmBzfEt7ZmdV
QiRzNjE1NVg9RW05dyZlPntWd0drMDkhMEEKenswSjFqUlEpZHNMWjE/ajExcmhsNnlmTWByJXdD
M1hPXiMtaEQ8JCpuQDgreDVueUY9SiExNXd6ZzM3P3o5WXg7CnpQTVJvb0NfRHEpXyo4ZGNBb3VP
P01aKWBzeE1waShRcUglMz9VQ0JUZjVWKm4xV3dQYElOZkhsNmhlSEF6djIwZAp6aFd0K1Q5YyEy
TygjbEZgYzxTZ2szMnwrQTgoVUxkOEpVd0JvSjU1VlRKdVJjczVRUHo3TEduTCRCSyFjTWVjcW0K
emJ7akVpRlh8eyQtK189VSFFQEBTdnlFSmRBeV5LQkt4QjJCRWp5aFRvMXg3bUpWPXZfbzllJmZH
RnRyNns0RSFGCnpJPjlwQ3pMWnxSLVlZWGA+YjB0I3lObEJIZSVFdHtaMU5YIT1SP0hneGtKJlgo
dylWUms2SnUzbHFreHVLMihoQAp6dDBteDh5YUdTQ1pjMkdKPEVmc3tKMG8mWVIxdE4oelF5KWI8
Un5MPUoydm1jJHQkUkNyRWEqMCRKKXVOUn4ldkEKel5sI2QlIXItJEhZQ2t4ZkB3TypZSEowViRY
e2RpekYpX2IkVl4lSSlRYUN0YXU/RG1gbCN2VmsxNEIwV09JeGZoCno+JW01JFVMMiZ3biY+P1A+
S2grZ2NYbyErTlc2PnJnVCFkaGB5WHllbjBeRipzRT9yMzxjKH1NeWNrY2EyQWE5bwp6OTBCRkwx
Ml9Kfj5sSWtVRz8xTkdYVTVQMWA0I1ltMn5Tb2BSbVRHZ0hCLUxLb1M4RDA3RnVNRypFZ1ZtWUx8
YXIKenE5MH5lTF9tbndPaSNTKDdEZSk0T2Y/Pmx2NlV0KWN4bSE/aGI1JHJfOWVAYCFQY0FZUFVl
endXPDVPSFQkU08zCnpASzN6NUpUYW1MWFo1dig7PlNsb0dzSyZuPStAKCgzR3Fhc2xLVUlQRTUt
bjRhUXpoPzA+NH5CWlpqd3BpfXh2Mgp6Jmd5VT1JNEgzLTM4MEhYSjE0NWVJYkBOXlhCfVo9YDUw
fFcqezBsUlgyIztTMnZ4NVVNen4+eDdofjtIXzdrNGEKejNhcWZ6SClLQjl2QkI7UkQybko5aG47
YXoxNmZGN28lTzYhX2B+JnBhY1gmUz9HKSV+V20hLSFMdmJQSnUrX0lUCnpCPClqcDtzVypwND1z
SiY4Yit6THVvQUVhaGFjRV83PE09KFkwSk9eUiYpcChgTlFEdlc5c1d2JlI1emVDcEZwKgp6XjR9
U1F1dERhQmFESjdfY0hBPHptR3JgVzwzK0lJXmlyU0E+Pmk3KnQmdEJZQjdGV2pKZ0U3WUducUNY
TGU/YXMKelhrXzBVc3M3aE5rcV9ORDcpZD1YKnkkMH5nTWwjdERCWXE3V3wtJG4oJFdZUENiVGhw
V1FabytHcztrVTZTYz4pCnopKHdSO1c9RnBMNClmfClPV2xRLU4zXylCeih6VWtqajFUYkctUlEm
bWxCSEVNOG5LWiNVTXEzTjY5TGFWMXpCQgp6SzU9fFExYzluNkpKcDF4cU1KYiFmbV9LdTZ5aWJQ
KzlPdCFtMUtfS3RjRT8kWjRFY2tPQjs4QjdrQntIPipxX34KeiZNYjFOWHYjO1klPjlLNHUxPUFG
ZHQlKnooPXxEKE1gTDdoMSYoPDFnU3VrVyFaOClkWUAodzx0UmN0NGNiKUJKCnp2SCFeN0syYT9O
KCgyZ28pIzVxfSZ1YzZWaCMhP2ctKVlRdS03TzFhUXMxKntBI1lYejteaGxjZE94P0QhfTZHVwp6
LSMoOCtuM2RPc255SX12NXIpNDIpSGNtQ2F7NlVhZ2JfQn4kUWArSElqenhmWH1RMSQofUxXbl91
UVNhKXVicGIKenlYfiYrKDN8WUMpa18hPzwmJCQ+Y0BvLU96YENHV3g/VTZFMmVNZUFDJkw9b1pK
WV51PklYXk1RWUV6NUN9fXxTCno2WDd+Yk12MVFfJDxUT3cpeEUyfEQ5JF9JMWZIKWxlbzFtVT45
SSFmazxyYj0tZ21aUVB9PEZGV3EhcyEqZEFqRAp6eG1eMXI7QHw3WSpmdG05Yn14KjZTflV3K0tE
ZUx0amNoJnpJJkEtbjg1OE1zT3I9PTN2JDVOeUdOWUh0VU1FN3MKeis7aHhIPGtkWj9CaSVIXlR+
M3ZuVXUhV24jNW1tNjdKSVhfcXZKa2A4QzVNT0FyeSsjezlMIzs4PE9IVGpxSyg5CnphSDhab003
WVN7P0tCbjwlKXF+cW0wejBZT3gyM3dLcExWUGVleTg/OyVAPX1ZOSVHXzNFZzlZeVZyZVRobzJu
NQp6Iz1GZ2F0XkZWN0hSO3dkK1ZuQSZeUU8rfkktaEl7LSlGI2RyUW1WcSYhTDNgWWZmK1ZrZz53
b2wrKXtxUj9xTUsKeiZOOGBHUzgkaHk4UXdHa0lZKFdDWGJ0PWk2ekUzO0gmRGJtdXdkU29RWDRz
Q1gpOzJnc31IZmAlcyRfYU1VUSgyCnooNSgqKFRBLW1tKitmU0RVaTE0Uj0ybDs0PGVTbk94Pz9k
RD5mQGY5R2xUJmA0dns/eCRxYil4ZUt4OWRzTVppKgp6KTBFfF9WdXtCSlFDPS10al9pMk5pazBu
LUdLYGI0bmR0eDx4UH10fnVqWH1NMmBLemxMdzEydnplVGhzUkotZTwKelBVZEpOXm14STBPfkdP
LXJwK0QtMGMyTGtMfGZtT2J7O2tHKFV5MG5OVlpKeTFKOXA5P3QqeW9JLUs9XnBFcmwlCnphZjFg
ZlR9dGwoP0pxREJwM0lSbzl0IVQjeERoYVVtSXdZRSMrIWQ5WEB0ZTVQUl9IWnpZNntVNUtQNT8m
bX12bQp6fEpUZ0lUU2c4c2BicHNIaXl8QHM5JGk+V189ZncxOzJrfnF2RGRFMj1mJERKMUREWXts
clNUSHt9ZWNlKzE7diYKekYoODteTitDSGdzTyspJVJqZ3dDaUJsaSk9VnNsOzZGRjVZcigxd1VK
PmckWW9MbE5+QGQmeGRZSG5YUmBQdGI+CnombndzeSYpWEpXYDMrfEFJR0whfW44fjVNNz47e1Vo
I1M3IzFePD0kY0B4Iz0/M2hieDBTI3dYPmJLPmZGZCExYwp6bWdtQW9DdlgxP0Q7K1F4eGhpQGxC
KCh7fFElKjY5cGZlMUlldHxRRCVYbkRgYyhVfGwoS3F4eDN6aTchZ0RkUTsKemlqPlBLZ2cmJHhD
NC19dkdxNFUwOHxvT2BVWT9LQEJ5TV9Qb2VgX0ZLZlY+NGBiazY9SjEhLVlqLV5jZG4+KV5oCnpM
fjQxNTlySjxJQW9sRXtUI19IdDVSVEc3MSoxeDhZO2J7JHVnPnMmMWRPS29nOTtPfTFTKD4wcl5a
MkA+dTBRRgp6VjFifnw1Pm9wMCs4VVZHRzBpQzNyQDxSdmlvOykhdSY5RFY9dVg0dj1EdEN1JiV5
Vlg0SV8wVUlqUCg5STNQWD4Kem5DQ287el9sO353R1RiWmlSbXotKVJHSWU1O3s8eCN4cm9USXBe
RDtldCQ0XlFFYGsjMEFMbnZYIX1QST9ISUFWCnpncD1ZZygheEJgbSNYP2V3TUYoSUN6ezlwVlNi
SFZZTk1kbV5CfVV0M2ZZMXIkWnVSWShkTWtKe1lGaEBFciVRXwp6d0VnTi1eI0UlRnQpdFU+PEw3
fDI9JFdCIyk/TWcwcXYpNGRHV3FmflN7TGdzQnRgXyZ3S1F5LTk4YGYoV3Q7RnAKejJaTVImWWtS
WjJqMz9GJih5c0xLNXRIaVFGcXpWQFZ9VGBNS35JP2xmPFlqZCNzNzBuV3xEXkJ7e195ZU56RVpp
CnpTbkVaSWVUIVVPbD1aS3Q/QVllVnJ8MFlJKyZUMTdTU3ItOzxVSG8hUEJYT341IVZ4cHtzLUFe
ZSV4bW9Xd19meQp6OXs7YUxaNVFYPU0lMTFYIUN9YlRNV2hrVipgK3U8YGR3OHY5cXJuUVIraEs0
dH1YWFApbkl9ISN4dnl7dG1FR2kKejVFPTBKXj89PzVmKDgzOzVpVi1+RXlDezxjQz8zcCNxRyhW
RFphSmIrbzdOR2s4ajUrdnxlM1EqYyNld2UkUnJ3CnpOTkJ+S3pxRSo9JD9CSytoMy1NSGJwTSV1
PF9wbEpidz9eeHV+NytgM0lObHo9VzF6ZkxackFoPHp3dSpUX2MrTQp6QmdYdm1BJEFJVXJTUnBs
SURZTlpJQVF9YlZtVyN3LTlEQ1o9PW40NkgkPCNhSW5adk03fkErMkRVMD9XcyMlRGsKejliM3w/
ail5UjZ8RHhOVnBeKFBTMGM/cWFFVE9FTmNieXVkMUY9SnJUfVFWbzd0K2RlN1pLI3JwMj1+QllQ
fTt6CnpRbktkcz57fFB8MC1ENnRaLXskNWQjY1dwKERwOHUrVTleIyZ6fk1kVyM8cWR6UDxGJU9v
MlAtTksrfFhYT0BFbQp6Jj82RksmeE1kQnhtdVF3WTBwX21VOU9hMiMjWnFDLXt9fUc+aUdoKztB
TFRndUZ+KnRraE8heipeRHczeXhJN2UKejl1eThwcXIpJEc2aXh8RzJWSURoQTQtQW1VNE0meDZt
d2FBc2I/X3tSTD5CaVV7NUtoMVl7UnQkckpWPi1ZU0llCnorNTx5VFMpMDtXNiVldmtKYk5qfWp+
IyhqNVRwIT5EclFWa1A3TSNxZEBrfTlTJU44VSQwK1RlU19lbHYkdihKegp6eDBgOWFPJUpzNSM1
VEdsal5qY203NGgwb3U3YkphNCo/RlV1Q2tAQUs5PDxgMnk4dXNoWSNheCFQXj5PdnJ2dVEKejFM
SkB0NjBQSkAzUGleT1lNOykzJk0meTReSWZudWY3TlA0RztXdXQxVWYzKlk3fWchU21KfU5OKlJW
JUk9KSVWCnpHWCMmdlBFLX5HWkZHVV5rKHVWNlpmdn5JXjxzQyM+MHI+N0lAS2w7V0s8bWNjZGs5
JFV1MzwwZiM0R2VfUEBCdAp6PitBb0l3eH19ODtqWkVuMEx9dmJROXdQKSRsMlg7NjcrI0o3emtw
PDxLd0hTRno+IUlgd24zPFA3PD8tTmNCSWcKemF0SyR+enp7ZEVhfn54R3ZHI0tlX2RrZjtEXkI7
Pmkjc1Q3YlYhd3xqflZISldFRUV7P2FaWFY1QWAkPU59OUByCnpXaiUpOzw8QTZVRHlyYEs4Kz9m
TyViO3pWVl89RGQ8R2U2RExXN19MTmAjYGllbnd2M0gocjh3RjNsMm8jaFE7NQp6TWB3VEp7ZmxE
JSspWUFeLWQ4TDxCV3QrPUxvbkZzeHN5ekdfU1BiWD4ycnl4SlgzSzJKWEZAU1V+amw1ZzRjYHwK
ekNtKnVQWjlQKHpAJlpOVXoqbCUtd2BiNS00SmpgZ0Vgej0telh5Vy1GRGRmb2h2ZmUtdkg+dEtG
amNpNHNVbiVMCno1U2tibEw/UnY4NjkqYC0lQG9nI248ekxSaj8hfVFgJCooTUN8ekt7JUgjMUB6
WH4/amk/cVByT2dUYyUwMytyTQp6e0BQfWF7dGFiNlNLNTNIdT1lVHxwMElaWHRVJHlKMXBEWHo/
PDtgLUZpQ2Q7YTQzZlJ4aTt9aVQxPFJfUlJ8VV4KenxNYjBzJStePVM/S1N1X1BKUyRBKGNYZTBm
cmRVYk4hS2lFVCE9ckpUM0pAeSRBdEZAMT0rMCVoJFZGPG1UeyMmCnp1Y0YlalU4IztQS3lOP2dA
UUFqTmc9cXJMP3tAeXQyfkpXYXZoVDhZYXlpWHo5QjdeNlp5fWJJZFNlb0J1OWRmXgp6OGtXQkg0
a3FwZ2A3UEVSLU8jUDhHTCtEai0pRTdDOEhSRnZRfXdzWU08YTQ0ZUgyJHNES35FbnZRUit3ZDRy
aH0KekpPPH0oMENeUkNUK3pENCR3KV9FVSN8JXNfJitvJSR4VVV5VnxAcXpsfn09a3ZwSSEzT25O
I28tRmtjWVYmdSopCnprd3FGQU41eyVRX2lGZXRRc2pOVFU0PVg/Ujs+eT15Q1JTV0E1ekVXbCZI
M05vKnR7YDI9JCtVSWhYNlhKQ191OAp6QWxrUHMqIzlmWks7TThRJFUqKSRUR2Q1Y2FaVXRUZXx2
RzNWZjFDMGh6PkdoI2o/dHNBdUtJV0M+Pyk3WVpxfkYKeih0RX56cjs+e2BFbF5XKiR5cX1EK2FU
M15GMUwyIzNQcilIaUlpMHNpK3xyTGYtfko/X1ZBRDhIalp5ZHtEWiVLCno4OCFNQ1FkWj80Z35m
fUt7REhrPiY8T21EI2tFNUt7QWtvdnF2RD0jVyZaRjdka0kxXlh6dDBhaFlfKkQ+STYtNAp6SFJ8
cUZQS25YfmdhUk4kRX1zMnFydXN9MjFkWk9vYTEjaDshOU5zVTJYNEE2c1J3fDVxdkhKV1FSQ3lx
LWdsY3kKel5Ffj4pMntoVTR1SnpMPWBAPDw0c0xWJWJ6KThXWUZgb3Y5OF8xVEZ2KzdOa2I3cXVr
KmBNUXBtej9faCVFVDtRCnpLJlVLNDtJeXZQMExDT3tEaigzN3NIcTdJZWJxTzFHKVBeSztuQ3pw
Pj41aHh4eFkrR249Tz9WX3VpQl5USmh+Rgp6P0tSYWFzMSZDSCYlZnNBZjclb2BecEVpXz5rJT5B
dnR8KDtwJEZrUXJRNTQmdjFYcWllaHRNQzZkQGlDWUFZeDsKejBAIXBxe2JVcy1JLVh4NktzPnhI
QmVSK1FzVFYhSGFMYiY+c2VYWUBgcDl+UkxJaEclQnNlVCpeNmdmVktwbTNqCnpwM3pDPmwwYEBP
OF57WV5TLXsxcFdDO0U/P3s2KD4jb2NYSUg4T3tObGgrWHBJSUhzUClLSmt4VFZvdykkS3E0SAp6
YCFrV0hhKmkyZEpgQGA1TWtsRDhLNi01a2hrdDZabylxZ2RJSURIMytIbSplbjQkNjI3U3l2dj5f
aWRmPVdLPmoKenpLe3VNcE1IX0ZRKFZGPjE8Izx8UX5Sek5TKyVSMlUjbDkoVz02N2BZNiRQbnJM
P1J9I004bVI0eWl9aGtpI3lFCm48SlM7SnZgMHkoKHE7fCp3U1RgcF50Ull+NUxpPmhCTUFJRDVR
NmAhbyR2bnZpYm4pKQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjlhY2NmYWJlNjYyY2U0ZDc4MWIyZmZmOTI4Mjk0NzE3YmViNTYw
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRp
YS1zb3VyY2Utd2VibS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGhpcyB0ZXN0cyB0
aGUgYWJpbGl0eSBvZiB0aGUgU291cmNlQnVmZmVyIHRvIHJlc2V0IHRoZSBwYXJzZXIgYWZ0ZXIg
YW4gYWJvcnQoKS4gQSBTb3VyY2VCdWZmZXIgaW4gdGhpcyBzdGF0ZSBzaG91bGQgYmUgYWJsZSB0
byBhY2NlcHQgYSBuZXcgaW5pdGlhbGl6YXRpb24gc2VnbWVudCBvciBhIG5ldyBtZWRpYSBzZWdt
ZW50LgorCitSVU4odmlkZW8uc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChzb3VyY2UpKQorRVZF
TlQoc291cmNlb3BlbikKK1JVTihzb3VyY2UuZHVyYXRpb24gPSBsb2FkZXIuZHVyYXRpb24oKSkK
K1JVTihzb3VyY2VCdWZmZXIgPSBzb3VyY2UuYWRkU291cmNlQnVmZmVyKGxvYWRlci50eXBlKCkp
KQorUlVOKHNvdXJjZUJ1ZmZlci5hcHBlbmRCdWZmZXIobG9hZGVyLmluaXRTZWdtZW50KCkpKQor
RVZFTlQodXBkYXRlKQorQXBwZW5kIGEgbWVkaWEgc2VnbWVudC4KK1JVTihzb3VyY2VCdWZmZXIu
YXBwZW5kQnVmZmVyKGxvYWRlci5tZWRpYVNlZ21lbnQoMCkpKQorRVZFTlQocmVzaXplKQorRVhQ
RUNURUQgKHZpZGVvLnZpZGVvV2lkdGggPT0gJzMyMCcpIE9LCitFWFBFQ1RFRCAodmlkZW8udmlk
ZW9IZWlnaHQgPT0gJzI0MCcpIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0uaHRtbCBiL0xheW91dFRl
c3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM5NDBjYmNjMTNjMzUyZjdlMWQ1MTc4MjdlMDJmNzhjYTRjOTg1YjIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0uaHRt
bApAQCAtMCwwICsxLDYyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAg
PHRpdGxlPm1lZGlhLXNvdXJjZS13ZWJtPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0ibWVkaWEt
c291cmNlLWxvYWRlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgdmFyIGxvYWRlcjsKKyAgICB2YXIg
c291cmNlOworICAgIHZhciBzb3VyY2VCdWZmZXI7CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkg
eworICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisKKyAgICAgICAgbG9hZGVyID0gbmV3IE1l
ZGlhU291cmNlTG9hZGVyKCdjb250ZW50L3Rlc3QtdnA5LW1hbmlmZXN0Lmpzb24nKTsKKyAgICAg
ICAgbG9hZGVyLm9ubG9hZCA9IG1lZGlhRGF0YUxvYWRlZDsKKyAgICAgICAgbG9hZGVyLm9uZXJy
b3IgPSBtZWRpYURhdGFMb2FkaW5nRmFpbGVkOworICAgIH0KKworICAgIGZ1bmN0aW9uIG1lZGlh
RGF0YUxvYWRpbmdGYWlsZWQoKSB7CisgICAgICAgIGZhaWxUZXN0KCdNZWRpYSBkYXRhIGxvYWRp
bmcgZmFpbGVkJyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gbWVkaWFEYXRhTG9hZGVkKCkgewor
ICAgICAgICBzb3VyY2UgPSBuZXcgTWVkaWFTb3VyY2UoKTsKKyAgICAgICAgd2FpdEZvckV2ZW50
KCdzb3VyY2VvcGVuJywgc291cmNlT3BlbiwgZmFsc2UsIGZhbHNlLCBzb3VyY2UpOworICAgICAg
ICB3YWl0Rm9yRXZlbnRBbmRGYWlsKCdlcnJvcicpOworICAgICAgICBydW4oJ3ZpZGVvLnNyYyA9
IFVSTC5jcmVhdGVPYmplY3RVUkwoc291cmNlKScpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNv
dXJjZU9wZW4oKSB7CisgICAgICAgIHJ1bignc291cmNlLmR1cmF0aW9uID0gbG9hZGVyLmR1cmF0
aW9uKCknKTsKKyAgICAgICAgcnVuKCdzb3VyY2VCdWZmZXIgPSBzb3VyY2UuYWRkU291cmNlQnVm
ZmVyKGxvYWRlci50eXBlKCkpJyk7CisgICAgICAgIHdhaXRGb3JFdmVudE9uKHNvdXJjZUJ1ZmZl
ciwgJ3VwZGF0ZScsIHNvdXJjZUluaXRpYWxpemVkLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIHdh
aXRGb3JFdmVudE9uY2UoJ3Jlc2l6ZScsIHJlc2l6ZSk7CisgICAgICAgIHJ1bignc291cmNlQnVm
ZmVyLmFwcGVuZEJ1ZmZlcihsb2FkZXIuaW5pdFNlZ21lbnQoKSknKTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBzb3VyY2VJbml0aWFsaXplZCgpIHsKKyAgICAgICAgd2FpdEZvckV2ZW50T25jZSgn
cmVzaXplJywgcmVzaXplKTsKKyAgICAgICAgY29uc29sZVdyaXRlKCdBcHBlbmQgYSBtZWRpYSBz
ZWdtZW50LicpCisgICAgICAgIHJ1bignc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihsb2FkZXIu
bWVkaWFTZWdtZW50KDApKScpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJlc2l6ZSgpIHsKKyAg
ICAgICAgLy8gRmlyc3QgcmVzaXplIGNhbiBiZSAweDAgKE1hYykgb3IgNjQweDQ4MCAoR1RLKykK
KyAgICAgICAgaWYgKHZpZGVvLnZpZGVvV2lkdGggPiAwICYmIHZpZGVvLnZpZGVvSGVpZ2h0ID4g
MCkgeworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby52aWRlb1dpZHRoJywgMzIwKTsK
KyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8udmlkZW9IZWlnaHQnLCAyNDApOworICAg
ICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICB9CisgICAgfQorICAgIDwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxkaXY+CisgICAgICAgIFRoaXMg
dGVzdHMgdGhlIGFiaWxpdHkgb2YgdGhlIFNvdXJjZUJ1ZmZlciB0byByZXNldCB0aGUgcGFyc2Vy
IGFmdGVyIGFuIGFib3J0KCkuIEEgU291cmNlQnVmZmVyIGluIHRoaXMgc3RhdGUgc2hvdWxkIGJl
IGFibGUgdG8gYWNjZXB0CisgICAgICAgIGEgbmV3IGluaXRpYWxpemF0aW9uIHNlZ21lbnQgb3Ig
YSBuZXcgbWVkaWEgc2VnbWVudC4KKyAgICA8L2Rpdj4KKyAgICA8dmlkZW8gY29udHJvbHM+PC92
aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404803</attachid>
            <date>2020-07-21 00:56:35 -0700</date>
            <delta_ts>2020-07-21 12:51:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214529-20200721005634.patch</filename>
            <type>text/plain</type>
            <size>260936</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBhMjY3NTI5M2JiMzdhNGM1YzdmNGUwMGUxNmQyNzFkYTBmNTA2ZWI5Li5iMjE3
ZjBmMjRiODE1MjY3NWIwMjgwZTMwN2U3NGUyZThhZjNhZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAyMC0wNy0yMSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBleHBlcmltZW50
YWwgTVNFIFdlYk0gcGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTQ1MjkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1NzgyNDY3PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0aGUgdnA5
X2hlYWRlcl9wYXJzZXIgZnJvbSBsaWJ3ZWJydGMgdG8gdGhlIHByb2plY3QsIGFuZCBhZGQgaXRz
CisgICAgICAgIHN5bWJvbHMgdG8gdGhlIGxpc3Qgb2YgZXhwb3J0ZWQgc3ltYm9scy4gQmVjYXVz
ZSB0aGlzIGhlYWRlciB3YW50cyB0bworICAgICAgICBiZSBpbnN0YWxsZWQgdG8gYSAiY29tbW9u
L3ZwOV9oZWFkZXJfcGFyc2VyLmgiIHBhdGgsIHNwbGl0IHVwIHRoZSBkZWZhdWx0CisgICAgICAg
IENvcHlIZWFkZXJzSW5zdGFsbFBoYXNlIGludG8gdHdvIHNlcGFyYXRlIENvcHlGaWxlcyBidWls
ZCBwaGFzZXMgdGhhdAorICAgICAgICBwdXQgaGVhZGVycyBpbnRvIGRpZmZlcmVudCBsb2NhdGlv
bnMuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJtLnhjY29uZmlnOgorICAgICAg
ICAqIENvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwOgorICAgICAgICAqIENvbmZpZ3Vy
YXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwOgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL2xp
YndlYnJ0Yy5tYWMuZXhwOgorICAgICAgICAqIFNvdXJjZS90aGlyZF9wYXJ0eS9saWJ3ZWJtL2Nv
bW1vbi92cDlfaGVhZGVyX3BhcnNlci5oOgorICAgICAgICAodnA5X3BhcnNlcjo6VnA5SGVhZGVy
UGFyc2VyOjpjb2xvcl9yYW5nZSBjb25zdCk6CisgICAgICAgICh2cDlfcGFyc2VyOjpWcDlIZWFk
ZXJQYXJzZXI6OnN1YnNhbXBsaW5nX3ggY29uc3QpOgorICAgICAgICAodnA5X3BhcnNlcjo6VnA5
SGVhZGVyUGFyc2VyOjpzdWJzYW1wbGluZ195IGNvbnN0KToKKyAgICAgICAgKiBsaWJ3ZWJydGMu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworMjAyMC0wNy0xOSAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBleHBlcmltZW50YWwgTVNF
IFdlYk0gcGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTQ1MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUd28gZHJpdmUtYnkgZml4ZXM6IEFkZCBzb21lIG1pc3NpbmcgZXhwb3J0IHRvIHRoZSBs
aWJ3ZWJydGMuKi5leHAgZmlsZXMsIGFuZCBleHBvcnQgdGhlIHdlYm0gaGVhZGVycworICAgICAg
ICBhcyBQcml2YXRlLCBub3QgUHVibGljLCBzbyB0aGV5J3JlIHB1dCBpbiB0aGUgY29ycmVjdCBk
aXJlY3RvcnkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cDoK
KyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAgICAgICAg
KiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBsaWJ3ZWJydGMu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wNy0yMCAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJ1Z2d5IGFzc2VydCBpbiBoMjY1X3Zw
c19zcHNfcHBzX3RyYWNrZXIuY2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiMDQ1YmI1ZDUzODNjM2IzZjEyYzYw
MGM1ZTYzYjQ2NDQ2YTA3MDk5Li43NWEwYjU5MTYwODZlYzAwY2YxZmJmNmRjYjcyMzYyMWZmYTA2
MjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzI0IEBACisyMDIwLTA3LTIxICBKZXIgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIGV4cGVyaW1lbnRh
bCBNU0UgV2ViTSBwYXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNDUyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRlc3Q6IG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS5odG1s
CisKKyAgICAgICAgQWRkIGFuIGV4cGVyaW1lbnRhbCBNU0UgV2ViTSBwYXJzZXIgdG8gU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMuIFRoaXMgd2lsbCByZXF1aXJlIGV4dGVuc2l2ZSByZWZhY3Rv
cmluZworICAgICAgICBvZiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQywgdG8gZXh0cmFjdCBv
dXQgdGhlIHBhcnNlciBpbnRvIGEgbmV3LCB2aXJ0dWFsaXplZCBjbGFzcy4gVGhpcyBuZXcgcGFy
c2VyIGNhbgorICAgICAgICB0YWtlIGFkdmFudGFnZSBvZiBuZXcgQysrPjExIGZlYXR1cmVzIHN1
Y2ggYXMgbGFtYmRhcyB0byBjbGVhbiB1cCBzb21lIHByb2JsZW1hdGljIGV4aXN0aW5nIGNvZGUu
IFRoZSBuZXcKKyAgICAgICAgdmlydHVhbGl6ZWQgU291cmNlQnVmZmVyUGFyc2VyIGNsYXNzIHVz
ZXMgcGFzc2VkLWluIEZ1bmN0aW9uIG9iamVjdHMsIHJhdGhlciB0aGFuIHB1cmUtdmlydHVhbCBD
bGllbnQgY2xhc3NlcworICAgICAgICB0byBub3RpZnkgaXQncyBwYXJlbnQgb2JqZWN0IHdoZW4g
dGhlIHBhcnNlciBlbmNvdW50ZXJzIGluaXRpYWxpemF0aW9uLSBvciBtZWRpYS1kYXRhLgorICAg
ICAgICAKKyAgICAgICAgQmVjYXVzZSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyB3aWxsIG5v
dyBoYXZlIHRvIGRlYWwgd2l0aCBBdWRpb1RyYWNrUHJpdmF0ZSBhbmQgVmlkZW9UcmFja1ByaXZh
dGUgb2JqZWN0cworICAgICAgICB0aGF0IGFyZSBub3QgbmVjZXNzYXJpbHkgQXVkaW8tIGFuZCBW
aWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyBzdWJjbGFzc2VzLCBtb3ZlIHRob3Nl
IGNsYXNzZXMgbm90aWZpY2F0aW9uCisgICAgICAgIGZlYXR1cmVzIHVwIGludG8gQXVkaW8tIGFu
ZCBWaWRlb1RyYWNrUHJpdmF0ZSwgYWdhaW4gdXNpbmcgYSBGdW5jdGlvbiBvYmplY3QgcmF0aGVy
IHRoYW4gYSBjbGllbnQgY2xhc3MuCisKKyAgICAgICAgQWRkIGEgbmV3IFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk0gYW5kIGFzc29jaWF0ZWQgQXVkaW9UcmFja1ByaXZhdGVXZWJNIGFuZCBWaWRlb1Ry
YWNrUHJpdmF0ZVdlYk0gY2xhc3Nlcywgd2hpY2gKKyAgICAgICAgdXNlIGxpYndlYm0gdmlhIGxp
YndlYnJ0YyB0byBwYXJzZSBhcHBlbmRlZCBidWZmZXJzLiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
IGZlZWRzIHBhc3NlZC1pbiBkYXRhIGludG8gYQorICAgICAgICBsaWJ3ZWJtLXByb3ZpZGVkIHBh
cnNlciBvZiBpdHMgb3duLiBJdCB0aGVuIGJ1aWxkcyB1cCB0cmFja3MgYW5kIHNhbXBsZXMgYmFz
ZWQgb24gY2FsbGJhY2tzIGZyb20gdGhhdCBzYW1lIHBhcnNlciwKKyAgICAgICAgY29uc3RydWN0
aW5nIENNU2FtcGxlQnVmZmVycyBhbmQgVmlkZW9UcmFja1ByaXZhdGUgb2JqZWN0cyBvdXQgb2Yg
dGhlIHVuZGVybHlpbmcgbGlid2VibSBwcmltaXRpdmVzLgorCisgICAgICAgIEJlY2F1c2UgV2Vi
TSB1c2VzIGEgVVVJRCBhcyBpdHMgdHJhY2sgaWRlbnRpZmllciwgdGhlIHJlcHJlc2VudGF0aW9u
IG9mIGEgInRyYWNrSUQiIGluc2lkZSBXZWJDb3JlIG11c3QgYmUKKyAgICAgICAgaW5jcmVhc2Vk
IGZyb20gYW4gaW50IHRvIGEgdWludDY0X3QsIG9yIHRyYWNrSURzIHdpbGwgYmUgdHJ1bmNhdGVk
IG9yIHplcm9lZCB3aGVuIHBhc3NlZCBiZXR3ZWVuIGNsYXNzZXMgYW5kCisgICAgICAgIHdoZW4g
Y29udmVydGVkIHRvIGFuZCBmcm9tIEF0b21TdHJpbmdzLgorCisgICAgICAgIFRoaXMgZWFybHkg
aW1wbGVtZW50YXRpb24gaXMgbm90IHlldCBhYmxlIHRvIHBhc3MgdGhlIFdlYk0gV1BUIG1lZGlh
LXNvdXJjZS8gdGVzdHMsIGFzIHdlIG9ubHkgaGF2ZSBhIFZQOSBkZWNvZGVyCisgICAgICAgIGF2
YWlsYWJsZSwgYW5kIHRob3NlIHRlc3RzIHVzZSBib3RoIFZQOCBhbmQgVm9yYmlzLgorCisgICAg
ICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRXZWJNUGFyc2VyRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJNUGFy
c2VyRW5hYmxlZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFj
a1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpzZXRFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpzZXRFbmFibGVkQ2hh
bmdlZENhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZFZQQ29sb3JQcmltYXJpZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6aXNWYWxpZFZQVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MpOgorICAgICAgICAo
V2ViQ29yZTo6aXNWYWxpZFZQTWF0cml4Q29lZmZpY2llbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OnBhcnNlVlBDb2RlY1BhcmFtZXRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1ZQ
OVV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2
YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6c2V0U2VsZWN0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGU6OnNldFNlbGVjdGVkQ2hhbmdl
ZENhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6QXVkaW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldEVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
U2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNz
aW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6dXBkYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmg6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6Ok1lZGlhU2FtcGxlQVZGT2JqQyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFk
ZFNvdXJjZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oOiBBZGRlZC4KKyAgICAgICAgKGlzVHlw
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQy5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0
YVBhcnNlckxpc3RlbmVyIGluaXRXaXRoUGFyc2VyOnBhcmVudDpdKToKKyAgICAgICAgKC1bV2Vi
QVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJBVlN0
cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBpbnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dlYkFWU3Ry
ZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbURhdGFQYXJzZXI6ZGlkUGFyc2VTdHJlYW1EYXRh
QXNBc3NldDpdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3Ry
ZWFtRGF0YVBhcnNlcjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0OndpdGhEaXNjb250aW51aXR5
Ol0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRh
UGFyc2VyOmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcjpdKToKKyAgICAgICAgKC1b
V2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRl
TWVkaWFEYXRhOmZvclRyYWNrSUQ6bWVkaWFUeXBlOmZsYWdzOl0pOgorICAgICAgICAoLVtXZWJB
VlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyV2lsbFByb3ZpZGVDb250
ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTpmb3JUcmFja0lEOl0pOgorICAgICAgICAo
LVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTpmb3JUcmFja0lEOl0pOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1
cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OnNldFNob3Vs
ZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakM6OnNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lEKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OnJlc2V0UGFyc2VyU3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUGFy
c2VTdHJlYW1EYXRhQXNBc3NldCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDOjpkaWRGYWlsVG9QYXJzZVN0cmVhbURhdGFXaXRoRXJyb3IpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZv
clRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6
d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp+U291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVN
ZWRpYURhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJ
RCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmRD
b21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpy
ZXNldFBhcnNlclN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjpkZXN0cm95UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpjbGVhclRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6aGFzU2VsZWN0ZWRWaWRlbyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFuZ2VTZWxlY3RlZCk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRD
aGFuZ2VFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpwYXJzZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OmF0dGVtcHRUb0RlY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OmZsdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjplbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjppc1JlYWR5Rm9yTW9yZVNhbXBsZXMpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEJlY29tZVJlYWR5Rm9yTW9y
ZVNhbXBsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
Om5vdGlmeUNsaWVudFdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjYW5TZXRNaW5pbXVtVXBjb21pbmdQcmVzZW50
YXRpb25UaW1lIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0u
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9W
UDlVdGlsaXRpZXNDb2NvYS5oLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVX
ZWJNOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVXZWJNOjpB
dWRpb1RyYWNrUHJpdmF0ZVdlYk0pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZh
dGVXZWJNOjppZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZVdl
Yk06OmxhYmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlV2Vi
TTo6bGFuZ3VhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVX
ZWJNOjp0cmFja0luZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EuaC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5o
LgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjppc0NvbnRlbnRUeXBlU3Vw
cG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OnNldERpZFBhcnNl
SW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUGFyc2VyOjpzZXREaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OnNldERpZFByb3ZpZGVNZWRpYURh
dGFDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OnNldFdp
bGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpzZXREaWRQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzV2VibVBhcnNlckF2YWlsYWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppc0NvbnRlbnRUeXBl
U3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlNv
dXJjZUJ1ZmZlclBhcnNlcldlYk0pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpmbHVzaFBlbmRpbmdNZWRpYURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2hvdWxkUHJvdmlkZU1l
ZGlhZGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6cmVzZXRQYXJzZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNOjp0cmFja0RhdGFGb3JUcmFja051bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkVsZW1lbnRCZWdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkVibWwpOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25TZWdtZW50QmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06Ok9uQ2x1c3RlckJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uVHJhY2tFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJsb2NrQmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25CbG9ja0VuZCk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblNpbXBsZUJsb2NrQmVnaW4pOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25TaW1wbGVCbG9ja0VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJsb2NrR3JvdXBCZWdpbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJsb2NrR3JvdXBFbmQp
OgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvQ29sb3JQcmltYXJpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6Y29udmVydFRvVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MpOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydFRvTWF0cml4Q29lZmZpY2llbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnZlcnRTdWJzYW1wbGluZ1hZVG9DaHJvbWFTdWJzYW1wbGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQYXJzZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25GcmFtZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnN0YXR1cyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjp0eXBlIGNvbnN0KToKKyAg
ICAgICAgKGlzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRp
bGl0aWVzQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGls
aXRpZXNDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzVlA5RGVjb2RlckF2YWlsYWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0ZVZQUGFyYW1ldGVycyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29j
b2EuaC4KKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlV2ViTTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlV2ViTTo6VmlkZW9UcmFja1ByaXZh
dGVXZWJNKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlV2ViTTo6aWQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVXZWJNOjpsYWJlbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk06Omxhbmd1YWdlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlV2ViTTo6dHJhY2tJbmRl
eCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1By
aXZhdGVXZWJNLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLmguCisKKzIwMjAtMDctMTkgIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZGQgZXhwZXJpbWVudGFsIE1T
RSBXZWJNIHBhcnNlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE0NTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCB5ZXQgcGFyc2UgYWN0dWFsIG1lZGlh
IHNhbXBsZXM7IGFzIG9mIHlldCBpdCBvbmx5IHBhcnNlcyBhdWRpbyBhbmQgdmlkZW8KKyAgICAg
ICAgdHJhY2sgaW5mb3JtYXRpb24uIE1lZGlhIHNhbXBsZSBwYXJzaW5nIGlzIHVwY29taW5nLgor
CisgICAgICAgIEFkZCBhbiBleHBlcmltZW50YWwgTVNFIFdlYk0gcGFyc2VyIHRvIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLiBUaGlzIHdpbGwgcmVxdWlyZSBleHRlbnNpdmUgcmVmYWN0b3Jp
bmcKKyAgICAgICAgb2YgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMsIHRvIGV4dHJhY3Qgb3V0
IHRoZSBwYXJzZXIgaW50byBhIG5ldywgdmlydHVhbGl6ZWQgY2xhc3MuIFRoaXMgbmV3IHBhcnNl
ciBjYW4KKyAgICAgICAgdGFrZSBhZHZhbnRhZ2Ugb2YgbmV3IEMrKz4xMSBmZWF0dXJlcyBzdWNo
IGFzIGxhbWJkYXMgdG8gY2xlYW4gdXAgc29tZSBwcm9ibGVtYXRpYyBleGlzdGluZyBjb2RlLiBU
aGUgbmV3CisgICAgICAgIHZpcnR1YWxpemVkIFNvdXJjZUJ1ZmZlclBhcnNlciBjbGFzcyB1c2Vz
IHBhc3NlZC1pbiBGdW5jdGlvbiBvYmplY3RzLCByYXRoZXIgdGhhbiBwdXJlLXZpcnR1YWwgQ2xp
ZW50IGNsYXNzZXMKKyAgICAgICAgdG8gbm90aWZ5IGl0J3MgcGFyZW50IG9iamVjdCB3aGVuIHRo
ZSBwYXJzZXIgZW5jb3VudGVycyBpbml0aWFsaXphdGlvbi0gb3IgbWVkaWEtZGF0YS4KKworICAg
ICAgICBCZWNhdXNlIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDIHdpbGwgbm93IGhhdmUgdG8g
ZGVhbCB3aXRoIEF1ZGlvVHJhY2tQcml2YXRlIGFuZCBWaWRlb1RyYWNrUHJpdmF0ZSBvYmplY3Rz
CisgICAgICAgIHRoYXQgYXJlIG5vdCBuZWNlc3NhcmlseSBBdWRpby0gYW5kIFZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIHN1YmNsYXNzZXMsIG1vdmUgdGhvc2UgY2xhc3NlcyBu
b3RpZmljYXRpb24KKyAgICAgICAgZmVhdHVyZXMgdXAgaW50byBBdWRpby0gYW5kIFZpZGVvVHJh
Y2tQcml2YXRlLCBhZ2FpbiB1c2luZyBhIEZ1bmN0aW9uIG9iamVjdCByYXRoZXIgdGhhbiBhIGNs
aWVudCBjbGFzcy4KKworICAgICAgICBBZGQgYSBuZXcgU291cmNlQnVmZmVyUGFyc2VyV2ViTSBh
bmQgYXNzb2NpYXRlZCBBdWRpb1RyYWNrUHJpdmF0ZVdlYk0gYW5kIFZpZGVvVHJhY2tQcml2YXRl
V2VibSBjbGFzZXNzLCB3aGljaAorICAgICAgICB1c2UgbGlid2VibSB2aWEgbGlid2VicnRjIHRv
IHBhcnNlIGFwcGVuZGVkIGJ1ZmZlcnMuCisKKyAgICAgICAgVGhpcyBlYXJseSBpbXBsZW1lbnRh
dGlvbiBpcyBub3QgeWV0IGFibGUgdG8gcGFzcyB0aGUgV2ViTSBXUFQgbWVkaWEtc291cmNlLyB0
ZXN0cywgYXMgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMKKyAgICAgICAgd2lsbCBvbmx5IGNh
dXNlIGEgInJlc2l6ZSIgZXZlbnQgdG8gYmUgZmlyZWQgd2hlbiBhIE1lZGlhU2FtcGxlIGlzIGVu
cXVldWVkIG9yIGRlY29kaW5nLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9S
dW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzZXRXZWJNUGFyc2VyRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJNUGFyc2VyRW5hYmxlZCBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvVHJhY2tQcml2YXRlOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
VHJhY2tQcml2YXRlOjpzZXRFbmFibGVkQ2hhbmdlZENhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFja1ByaXZhdGU6OnNldFNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2tQcml2YXRlOjpzZXRTZWxlY3RlZENoYW5nZWRDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRFbmFi
bGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6c3VwcG9ydHNUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6YWRkU291cmNlQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDLmg6IEFkZGVkLgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1t
OiBBZGRlZC4KKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgaW5pdFdp
dGhQYXJzZXI6cGFyZW50Ol0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0
ZW5lciBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVy
IGludmFsaWRhdGVdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIg
c3RyZWFtRGF0YVBhcnNlcjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0Ol0pOgorICAgICAgICAo
LVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZFBhcnNl
U3RyZWFtRGF0YUFzQXNzZXQ6d2l0aERpc2NvbnRpbnVpdHk6XSk6CisgICAgICAgICgtW1dlYkFW
U3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbURhdGFQYXJzZXI6ZGlkRmFpbFRvUGFyc2VT
dHJlYW1EYXRhV2l0aEVycm9yOl0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJM
aXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVNZWRpYURhdGE6Zm9yVHJhY2tJRDpt
ZWRpYVR5cGU6ZmxhZ3M6XSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3Rl
bmVyIHN0cmVhbURhdGFQYXJzZXJXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6
YXRpb25EYXRhOmZvclRyYWNrSUQ6XSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNl
ckxpc3RlbmVyIHN0cmVhbURhdGFQYXJzZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5p
dGlhbGl6YXRpb25EYXRhOmZvclRyYWNrSUQ6XSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDOjppc0NvbnRlbnRUeXBlU3VwcG9ydGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQzo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDOjpmbHVzaFBlbmRpbmdNZWRpYURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRy
YWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6c2hv
dWxkUHJvdmlkZU1lZGlhZGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQzo6cmVzZXRQYXJzZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZEZhaWxUb1Bh
cnNlU3RyZWFtRGF0YVdpdGhFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDOjpkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0
aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6On5Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFsaXph
dGlvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OmRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OndpbGxQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtl
eVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZENvbXBsZXRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YWJvcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnJlc2V0UGFyc2VyU3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRlc3Ryb3lQYXJzZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNsZWFyVHJh
Y2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFj
a0RpZENoYW5nZVNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnBhcnNlciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXR0ZW1wdFRvRGVjcnlwdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpWaWRlb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrUHJpdmF0ZVdlYk06OkF1ZGlvVHJhY2tQcml2YXRlV2ViTSk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OmlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6bGFiZWwgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja1ByaXZhdGVXZWJNOjpsYW5ndWFnZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OnRyYWNrSW5kZXggY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5oOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6aXNDb250ZW50
VHlwZVN1cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpzZXRE
aWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclBhcnNlcjo6c2V0RGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpzZXREaWRQcm92aWRl
TWVkaWFEYXRhQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
OjpzZXRXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJh
Y2tJRENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0
RGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENh
bGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjppc1dlYm1QYXJzZXJBdmFp
bGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6c3VwcG9ydGVkV2ViTUNvZGVjcyk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppc0NvbnRlbnRUeXBlU3VwcG9ydGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlNvdXJjZUJ1ZmZl
clBhcnNlcldlYk0pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpm
bHVzaFBlbmRpbmdNZWRpYURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2hvdWxkUHJvdmlkZU1lZGlhZGF0YUZv
clRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6cmVz
ZXRQYXJzZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
OjpPbkVsZW1lbnRCZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpPbkVibWwpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
T25TZWdtZW50QmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2Vi
TTo6T25JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9u
Q2x1c3RlckJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
Ok9uVHJhY2tFbnRyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OnN0YXR1cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjp2YWxpZGF0ZVZQUGFyYW1ldGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb1RyYWNrUHJpdmF0ZVdlYk06OlZpZGVvVHJhY2tQcml2YXRlV2ViTSk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OmlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2tQcml2YXRlV2ViTTo6bGFiZWwgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9UcmFja1ByaXZhdGVXZWJNOjpsYW5ndWFnZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OnRyYWNrSW5kZXggY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5oOiBBZGRlZC4K
KwogMjAyMC0wNy0yMCAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBPSyBidXR0b24gdG8gRGF0ZS9UaW1lIGZvcm0gY29udHJvbHMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDJjNzNiMjkzMTRjNDZjMDM2YzdhNzZiNTdkZDIyYTdlOTMyY2VmNmUuLjM4NzhiNjY1
MWI1ZmI2ODE4ZmM0MWVmZWJkOWEzMGI3ZGRjYzMwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMjAtMDctMjEgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0NvY29hXSBBZGQgZXhwZXJpbWVudGFsIE1TRSBXZWJNIHBhcnNlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NTI5CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS82NTc4MjQ2Nz4KKworICAgICAgICBBZGQgYW4gRXhwZXJpbWVudGFsIHNldHRp
bmcgdG8gZW5hYmxlIHRoZSBNU0UgV2ViTSBwYXJzZXIgKG9mZiBieSBkZWZhdWx0KS4KKworICAg
ICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sOgorCisyMDIwLTA3LTE5ICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIGV4cGVyaW1l
bnRhbCBNU0UgV2ViTSBwYXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNDUyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBhbiBFeHBlcmltZW50YWwgc2V0dGluZyB0byBlbmFibGUgdGhlIE1T
RSBXZWJNIHBhcnNlciAob2ZmIGJ5IGRlZmF1bHQpLgorCisgICAgICAgICogU2hhcmVkL1dlYlBy
ZWZlcmVuY2VzLnlhbWw6CisKIDIwMjAtMDctMjAgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJk
bmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgT0sgYnV0dG9uIHRvIERhdGUvVGltZSBmb3Jt
IGNvbnRyb2xzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZp
Z3VyYXRpb25zL2xpYndlYm0ueGNjb25maWcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VibS54Y2NvbmZpZwppbmRleCA1N2I1NDdlZmI4ZmNlMzhmYTRm
NmQwYmNmZTRhNTRlZmI4OWE0NDE0Li4xN2M2NGUwMzAwZTVjYmQ4YzBiNTAyZjA0NzRmMzM5ZTZm
YmM2OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJh
dGlvbnMvbGlid2VibS54Y2NvbmZpZworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VibS54Y2NvbmZpZwpAQCAtOCw2ICs4LDYgQEAgR0NDX1dBUk5f
NjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKIEhFQURFUl9TRUFSQ0hfUEFUSFMgPSBTb3Vy
Y2UvdGhpcmRfcGFydHkvbGlid2VibSBTb3VyY2UvdGhpcmRfcGFydHkvbGlid2VibS93ZWJtX3Bh
cnNlciBTb3VyY2UvdGhpcmRfcGFydHkvbGlid2VibS93ZWJtX3BhcnNlci9pbmNsdWRlOwogCiBJ
TlNUQUxMX1BBVEggPSAvdXNyL2xvY2FsL2xpYjsKLVBSSVZBVEVfSEVBREVSU19GT0xERVJfUEFU
SCA9IC91c3IvbG9jYWwvaW5jbHVkZS93ZWJtOworUFJJVkFURV9IRUFERVJTX0ZPTERFUl9QQVRI
ID0gL3Vzci9sb2NhbC9pbmNsdWRlOwogVVNFX0hFQURFUk1BUCA9IE5POwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlP
Uy5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2Vi
cnRjLmlPUy5leHAKaW5kZXggZDA0YTkxOTY4NmU5Y2M4OTY3YThhYWQwNDY5YzY4NTU0NjU3Mjc5
Yi4uODFhNjQ0Y2MwNTE3MTFlYTkzNGEwZmUyNTQ1ZmQzYmUzZGNhNTBhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1Mu
ZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3
ZWJydGMuaU9TLmV4cApAQCAtMjgwLDEzICsyODAsMjAgQEAgX19aVFZONHdlYm0xMkJ1ZmZlclJl
YWRlckUKIF9fWlRWTjR3ZWJtOENhbGxiYWNrRQogX19aTjR3ZWJtOENhbGxiYWNrMTBPbkJsb2Nr
RW5kRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU181QmxvY2tFCiBfX1pONHdlYm04Q2FsbGJh
Y2sxME9uQ3VlUG9pbnRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzhDdWVQb2ludEUKK19f
Wk40d2VibThDYWxsYmFjazEyT25CbG9ja0JlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktO
U181QmxvY2tFUE5TXzZBY3Rpb25FCiBfX1pONHdlYm04Q2FsbGJhY2sxMk9uQ2x1c3RlckVuZEVS
S05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfN0NsdXN0ZXJFCiBfX1pONHdlYm04Q2FsbGJhY2sx
Mk9uU2VnbWVudEVuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRQogX19aTjR3ZWJtOENhbGxiYWNr
MTJPblRyYWNrRW50cnlFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEwVHJhY2tFbnRyeUUK
K19fWk40d2VibThDYWxsYmFjazE0T25DbHVzdGVyQmVnaW5FUktOU18xNUVsZW1lbnRNZXRhZGF0
YUVSS05TXzdDbHVzdGVyRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTRPbkVkaXRp
b25FbnRyeUVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTJFZGl0aW9uRW50cnlFCitfX1pO
NHdlYm04Q2FsbGJhY2sxNE9uRWxlbWVudEJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5T
XzZBY3Rpb25FCitfX1pONHdlYm04Q2FsbGJhY2sxNE9uU2VnbWVudEJlZ2luRVJLTlNfMTVFbGVt
ZW50TWV0YWRhdGFFUE5TXzZBY3Rpb25FCiBfX1pONHdlYm04Q2FsbGJhY2sxNU9uQmxvY2tHcm91
cEVuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTBCbG9ja0dyb3VwRQogX19aTjR3ZWJt
OENhbGxiYWNrMTZPblNpbXBsZUJsb2NrRW5kRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18x
MVNpbXBsZUJsb2NrRQogX19aTjR3ZWJtOENhbGxiYWNrMTZPblVua25vd25FbGVtZW50RVJLTlNf
MTVFbGVtZW50TWV0YWRhdGFFUE5TXzZSZWFkZXJFUHkKK19fWk40d2VibThDYWxsYmFjazE3T25C
bG9ja0dyb3VwQmVnaW5FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVQTlNfNkFjdGlvbkUKK19fWk40
d2VibThDYWxsYmFjazE4T25TaW1wbGVCbG9ja0JlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFF
UktOU18xMVNpbXBsZUJsb2NrRVBOU182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrNFNraXBF
UE5TXzZSZWFkZXJFUHkKIF9fWk40d2VibThDYWxsYmFjazVPblRhZ0VSS05TXzE1RWxlbWVudE1l
dGFkYXRhRVJLTlNfM1RhZ0UKIF9fWk40d2VibThDYWxsYmFjazZPbkVibWxFUktOU18xNUVsZW1l
bnRNZXRhZGF0YUVSS05TXzRFYm1sRQogX19aTjR3ZWJtOENhbGxiYWNrNk9uSW5mb0VSS05TXzE1
RWxlbWVudE1ldGFkYXRhRVJLTlNfNEluZm9FCkBAIC0zMTcsMyArMzI0LDQgQEAgX19aTjR3ZWJt
MTBXZWJtUGFyc2VyQzJFdgogX19aTjR3ZWJtMTBXZWJtUGFyc2VyRDFFdgogX19aTjR3ZWJtMTBX
ZWJtUGFyc2VyRDJFdgogX19aTjR3ZWJtNHN3YXBFUk5TXzEwV2VibVBhcnNlckVTMV8KK19fWk4x
MHZwOV9wYXJzZXIxNVZwOUhlYWRlclBhcnNlcjIzUGFyc2VVbmNvbXByZXNzZWRIZWFkZXJFUEto
bQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25z
L2xpYndlYnJ0Yy5pT1NzaW0uZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZp
Z3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCmluZGV4IGQwNGE5MTk2ODZlOWNjODk2N2E4
YWFkMDQ2OWM2ODU1NDY1NzI3OWIuLjgxYTY0NGNjMDUxNzExZWE5MzRhMGZlMjU0NWZkM2JlM2Rj
YTUwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0
aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKQEAgLTI4MCwxMyArMjgwLDIw
IEBAIF9fWlRWTjR3ZWJtMTJCdWZmZXJSZWFkZXJFCiBfX1pUVk40d2VibThDYWxsYmFja0UKIF9f
Wk40d2VibThDYWxsYmFjazEwT25CbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNf
NUJsb2NrRQogX19aTjR3ZWJtOENhbGxiYWNrMTBPbkN1ZVBvaW50RVJLTlNfMTVFbGVtZW50TWV0
YWRhdGFFUktOU184Q3VlUG9pbnRFCitfX1pONHdlYm04Q2FsbGJhY2sxMk9uQmxvY2tCZWdpbkVS
S05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRVBOU182QWN0aW9uRQogX19aTjR3ZWJt
OENhbGxiYWNrMTJPbkNsdXN0ZXJFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzdDbHVz
dGVyRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPblNlZ21lbnRFbmRFUktOU18xNUVsZW1lbnRNZXRh
ZGF0YUUKIF9fWk40d2VibThDYWxsYmFjazEyT25UcmFja0VudHJ5RVJLTlNfMTVFbGVtZW50TWV0
YWRhdGFFUktOU18xMFRyYWNrRW50cnlFCitfX1pONHdlYm04Q2FsbGJhY2sxNE9uQ2x1c3RlckJl
Z2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU183Q2x1c3RlckVQTlNfNkFjdGlvbkUKIF9f
Wk40d2VibThDYWxsYmFjazE0T25FZGl0aW9uRW50cnlFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVS
S05TXzEyRWRpdGlvbkVudHJ5RQorX19aTjR3ZWJtOENhbGxiYWNrMTRPbkVsZW1lbnRCZWdpbkVS
S05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrMTRP
blNlZ21lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQogX19aTjR3
ZWJtOENhbGxiYWNrMTVPbkJsb2NrR3JvdXBFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05T
XzEwQmxvY2tHcm91cEUKIF9fWk40d2VibThDYWxsYmFjazE2T25TaW1wbGVCbG9ja0VuZEVSS05T
XzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVCbG9ja0UKIF9fWk40d2VibThDYWxsYmFj
azE2T25Vbmtub3duRWxlbWVudEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182UmVhZGVyRVB5
CitfX1pONHdlYm04Q2FsbGJhY2sxN09uQmxvY2tHcm91cEJlZ2luRVJLTlNfMTVFbGVtZW50TWV0
YWRhdGFFUE5TXzZBY3Rpb25FCitfX1pONHdlYm04Q2FsbGJhY2sxOE9uU2ltcGxlQmxvY2tCZWdp
bkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVCbG9ja0VQTlNfNkFjdGlvbkUK
K19fWk40d2VibThDYWxsYmFjazRTa2lwRVBOU182UmVhZGVyRVB5CiBfX1pONHdlYm04Q2FsbGJh
Y2s1T25UYWdFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzNUYWdFCiBfX1pONHdlYm04Q2Fs
bGJhY2s2T25FYm1sRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU180RWJtbEUKIF9fWk40d2Vi
bThDYWxsYmFjazZPbkluZm9FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzRJbmZvRQpAQCAt
MzE3LDMgKzMyNCw0IEBAIF9fWk40d2VibTEwV2VibVBhcnNlckMyRXYKIF9fWk40d2VibTEwV2Vi
bVBhcnNlckQxRXYKIF9fWk40d2VibTEwV2VibVBhcnNlckQyRXYKIF9fWk40d2VibTRzd2FwRVJO
U18xMFdlYm1QYXJzZXJFUzFfCitfX1pOMTB2cDlfcGFyc2VyMTVWcDlIZWFkZXJQYXJzZXIyM1Bh
cnNlVW5jb21wcmVzc2VkSGVhZGVyRVBLaG0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cAppbmRleCA4
ZDg1YjViOGIzNzU0YWRkZWZkZTdjMjRmMmYyMGE0NjU4MzY2YWNkLi41NThmNGIyYzE4MjE3MWVm
YzQxNWM3NTc3ZjFkMzk2MDE4MDMyYWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCkBAIC0y
NzgsMTMgKzI3OCwyMCBAQCBfX1pUVk40d2VibTEyQnVmZmVyUmVhZGVyRQogX19aVFZONHdlYm04
Q2FsbGJhY2tFCiBfX1pONHdlYm04Q2FsbGJhY2sxME9uQmxvY2tFbmRFUktOU18xNUVsZW1lbnRN
ZXRhZGF0YUVSS05TXzVCbG9ja0UKIF9fWk40d2VibThDYWxsYmFjazEwT25DdWVQb2ludEVSS05T
XzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfOEN1ZVBvaW50RQorX19aTjR3ZWJtOENhbGxiYWNrMTJP
bkJsb2NrQmVnaW5FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzVCbG9ja0VQTlNfNkFjdGlv
bkUKIF9fWk40d2VibThDYWxsYmFjazEyT25DbHVzdGVyRW5kRVJLTlNfMTVFbGVtZW50TWV0YWRh
dGFFUktOU183Q2x1c3RlckUKIF9fWk40d2VibThDYWxsYmFjazEyT25TZWdtZW50RW5kRVJLTlNf
MTVFbGVtZW50TWV0YWRhdGFFCiBfX1pONHdlYm04Q2FsbGJhY2sxMk9uVHJhY2tFbnRyeUVSS05T
XzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTBUcmFja0VudHJ5RQorX19aTjR3ZWJtOENhbGxiYWNr
MTRPbkNsdXN0ZXJCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfN0NsdXN0ZXJFUE5T
XzZBY3Rpb25FCiBfX1pONHdlYm04Q2FsbGJhY2sxNE9uRWRpdGlvbkVudHJ5RVJLTlNfMTVFbGVt
ZW50TWV0YWRhdGFFUktOU18xMkVkaXRpb25FbnRyeUUKK19fWk40d2VibThDYWxsYmFjazE0T25F
bGVtZW50QmVnaW5FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVQTlNfNkFjdGlvbkUKK19fWk40d2Vi
bThDYWxsYmFjazE0T25TZWdtZW50QmVnaW5FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVQTlNfNkFj
dGlvbkUKIF9fWk40d2VibThDYWxsYmFjazE1T25CbG9ja0dyb3VwRW5kRVJLTlNfMTVFbGVtZW50
TWV0YWRhdGFFUktOU18xMEJsb2NrR3JvdXBFCiBfX1pONHdlYm04Q2FsbGJhY2sxNk9uU2ltcGxl
QmxvY2tFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzExU2ltcGxlQmxvY2tFCiBfX1pO
NHdlYm04Q2FsbGJhY2sxNk9uVW5rbm93bkVsZW1lbnRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVQ
TlNfNlJlYWRlckVQeQorX19aTjR3ZWJtOENhbGxiYWNrMTdPbkJsb2NrR3JvdXBCZWdpbkVSS05T
XzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrMThPblNp
bXBsZUJsb2NrQmVnaW5FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzExU2ltcGxlQmxvY2tF
UE5TXzZBY3Rpb25FCitfX1pONHdlYm04Q2FsbGJhY2s0U2tpcEVQTlNfNlJlYWRlckVQeQogX19a
TjR3ZWJtOENhbGxiYWNrNU9uVGFnRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18zVGFnRQog
X19aTjR3ZWJtOENhbGxiYWNrNk9uRWJtbEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNEVi
bWxFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25JbmZvRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktO
U180SW5mb0UKQEAgLTMxNSwzICszMjIsNCBAQCBfX1pONHdlYm0xMFdlYm1QYXJzZXJDMkV2CiBf
X1pONHdlYm0xMFdlYm1QYXJzZXJEMUV2CiBfX1pONHdlYm0xMFdlYm1QYXJzZXJEMkV2CiBfX1pO
NHdlYm00c3dhcEVSTlNfMTBXZWJtUGFyc2VyRVMxXworX19aTjEwdnA5X3BhcnNlcjE1VnA5SGVh
ZGVyUGFyc2VyMjNQYXJzZVVuY29tcHJlc3NlZEhlYWRlckVQS2htClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9saWJ3ZWJtL2NvbW1vbi92cDlfaGVhZGVyX3BhcnNlci5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9saWJ3ZWJtL2NvbW1vbi92
cDlfaGVhZGVyX3BhcnNlci5oCmluZGV4IDA2YmQ2NTY5ZTZmODA4ZjZmYTg0ZmE3ZjZmMWQ0YTBj
MDdkZmZmMWEuLjY5ZDcxMjY2YmE5ZWQ4MDNhZDVmODJmNDc4ZTZhMjJjOTQyYTQ4MTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvbGli
d2VibS9jb21tb24vdnA5X2hlYWRlcl9wYXJzZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2xpYndlYm0vY29tbW9uL3ZwOV9oZWFkZXJfcGFy
c2VyLmgKQEAgLTY5LDYgKzY5LDExIEBAIGNsYXNzIFZwOUhlYWRlclBhcnNlciB7CiAgIGludCBj
b2x1bW5fdGlsZXMoKSBjb25zdCB7IHJldHVybiBjb2x1bW5fdGlsZXNfOyB9CiAgIGludCBmcmFt
ZV9wYXJhbGxlbF9tb2RlKCkgY29uc3QgeyByZXR1cm4gZnJhbWVfcGFyYWxsZWxfbW9kZV87IH0K
IAorICAvLyBXZWJLaXQgQWRkaXRpb25zOgorICBpbnQgY29sb3JfcmFuZ2UoKSBjb25zdCB7IHJl
dHVybiBjb2xvcl9yYW5nZV87IH0KKyAgaW50IHN1YnNhbXBsaW5nX3goKSBjb25zdCB7IHJldHVy
biBzdWJzYW1wbGluZ194XzsgfQorICBpbnQgc3Vic2FtcGxpbmdfeSgpIGNvbnN0IHsgcmV0dXJu
IHN1YnNhbXBsaW5nX3lfOyB9CisKICBwcml2YXRlOgogICAvLyBTZXQgdGhlIGNvbXByZXNzZWQg
VlA5IGZyYW1lLgogICBib29sIFNldEZyYW1lKGNvbnN0IHVpbnQ4X3QqIGZyYW1lLCBzaXplX3Qg
bGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9saWJ3ZWJy
dGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0ZGE3M2ExYmZiNDEw
M2ExZjdhYTQxNDM0OWZlMGFmYWViYzBjOGFhLi43YTg5NmRlNzRiNmQ4MTRkYTVhYTMxYzgwMTY0
MDg4YmZhZGE0MzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGli
d2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zODUzLDE2
ICszODUzLDYgQEAKIAkJNUNGRDUzOTIxRTRCRDNBMzAwNDgyOTA4IC8qIHJvd19uZW9uNjQuY2Mg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZENTM4QTFF
NEJEM0EzMDA0ODI5MDggLyogcm93X25lb242NC5jYyAqLzsgfTsKIAkJNUNGRDUzOTMxRTRCRDNB
MzAwNDgyOTA4IC8qIHNjYWxlX25lb24uY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1Q0ZENTM4QjFFNEJEM0EzMDA0ODI5MDggLyogc2NhbGVfbmVvbi5j
YyAqLzsgfTsKIAkJNUNGRDUzOTQxRTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb242NC5jYyBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRkQ1MzhDMUU0
QkQzQTMwMDQ4MjkwOCAvKiBzY2FsZV9uZW9uNjQuY2MgKi87IH07Ci0JCUNERUJCNEFDMjRDMDE5
OUQwMEFEQkQ0NCAvKiB3ZWJtX3BhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MDgyNEMwMTkxQTAwQURCRDQ0IC8qIHdlYm1fcGFyc2Vy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVC
QjRBRDI0QzAxOTlEMDBBREJENDQgLyogYnVmZmVyX3JlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MEQyNEMwMTkxQTAwQURCRDQ0IC8q
IGJ1ZmZlcl9yZWFkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7
IH07IH07Ci0JCUNERUJCNEFFMjRDMDE5OUQwMEFEQkQ0NCAvKiBpZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MEEyNEMwMTkxQTAwQURCRDQ0
IC8qIGlkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9Owot
CQlDREVCQjRBRjI0QzAxOTlEMDBBREJENDQgLyogaXN0cmVhbV9yZWFkZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDA5MjRDMDE5MUEwMEFE
QkQ0NCAvKiBpc3RyZWFtX3JlYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1
YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjAyNEMwMTk5RDAwQURCRDQ0IC8qIGRvbV90eXBlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MEIy
NEMwMTkxQTAwQURCRDQ0IC8qIGRvbV90eXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjEyNEMwMTk5RDAwQURCRDQ0IC8qIGVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJC
NDBDMjRDMDE5MUEwMEFEQkQ0NCAvKiBlbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCMjI0QzAxOTlEMDBBREJENDQgLyogc3Rh
dHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVC
QjQwNjI0QzAxOTFBMDBBREJENDQgLyogc3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCMzI0QzAxOTlEMDBBREJENDQgLyogcmVh
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVC
QjQwNTI0QzAxOTFBMDBBREJENDQgLyogcmVhZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCNDI0QzAxOTlEMDBBREJENDQgLyogZmls
ZV9yZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENERUJCNDA3MjRDMDE5MUEwMEFEQkQ0NCAvKiBmaWxlX3JlYWRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QjUyNEMwMTk5RDAwQURC
RDQ0IC8qIGNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREVCQjQwRTI0QzAxOTFBMDBBREJENDQgLyogY2FsbGJhY2suaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUNERUJCNEI2MjRDMDE5QzQw
MEFEQkQ0NCAvKiB1bmtub3duX3BhcnNlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDY0MjRDMDE5MUEwMEFEQkQ0NCAvKiB1bmtub3duX3Bh
cnNlci5jYyAqLzsgfTsKIAkJQ0RFQkI0QjcyNEMwMTlDNDAwQURCRDQ0IC8qIG1hc3Rlcl9wYXJz
ZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVC
QjQ2RjI0QzAxOTFBMDBBREJENDQgLyogbWFzdGVyX3BhcnNlci5jYyAqLzsgfTsKIAkJQ0RFQkI0
QjgyNEMwMTlDNDAwQURCRDQ0IC8qIGJsb2NrX3BhcnNlci5jYyBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDc2MjRDMDE5MUEwMEFEQkQ0NCAvKiBi
bG9ja19wYXJzZXIuY2MgKi87IH07CkBAIC0zODg2LDYgKzM4NzYsMTggQEAKIAkJQ0RFQkI0Q0Ey
NEMwMUEwRDAwQURCRDQ0IC8qIGxpYndlYm0uYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCMTE5MjRDMDE4NzQwMEFEQkQ0NCAvKiBsaWJ3ZWJt
LmEgKi87IH07CiAJCUNERUJCNEQzMjRDMEM4Q0EwMEFEQkQ0NCAvKiBiaXRfdXRpbHMuY2MgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQ1MTI0QzAx
OTFBMDBBREJENDQgLyogYml0X3V0aWxzLmNjICovOyB9OwogCQlDREVCQjRENDI0QzBDQjEwMDBB
REJENDQgLyogY2FsbGJhY2suY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREVCQjQ4RTI0QzAxOTFBMDBBREJENDQgLyogY2FsbGJhY2suY2MgKi87IH07
CisJCUNERkQyRkE4MjRDNEIzNEUwMDQ4REFDMyAvKiB2cDlfaGVhZGVyX3BhcnNlci5jYyBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERkQyRjlBMjRDNEIy
RjkwMDQ4REFDMyAvKiB2cDlfaGVhZGVyX3BhcnNlci5jYyAqLzsgfTsKKwkJQ0RGRDJGQzUyNEM0
REFGNzAwNDhEQUMzIC8qIGJ1ZmZlcl9yZWFkZXIuaCBpbiBDb3B5IHdlYm0gaGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwRDI0QzAxOTFBMDBBREJENDQg
LyogYnVmZmVyX3JlYWRlci5oICovOyB9OworCQlDREZEMkZDNjI0QzREQUY3MDA0OERBQzMgLyog
Y2FsbGJhY2suaCBpbiBDb3B5IHdlYm0gaGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREVCQjQwRTI0QzAxOTFBMDBBREJENDQgLyogY2FsbGJhY2suaCAqLzsgfTsK
KwkJQ0RGRDJGQzcyNEM0REFGNzAwNDhEQUMzIC8qIGRvbV90eXBlcy5oIGluIENvcHkgd2VibSBo
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDBCMjRDMDE5
MUEwMEFEQkQ0NCAvKiBkb21fdHlwZXMuaCAqLzsgfTsKKwkJQ0RGRDJGQzgyNEM0REFGNzAwNDhE
QUMzIC8qIGVsZW1lbnQuaCBpbiBDb3B5IHdlYm0gaGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwQzI0QzAxOTFBMDBBREJENDQgLyogZWxlbWVudC5oICov
OyB9OworCQlDREZEMkZDOTI0QzREQUY3MDA0OERBQzMgLyogZmlsZV9yZWFkZXIuaCBpbiBDb3B5
IHdlYm0gaGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQw
NzI0QzAxOTFBMDBBREJENDQgLyogZmlsZV9yZWFkZXIuaCAqLzsgfTsKKwkJQ0RGRDJGQ0EyNEM0
REFGNzAwNDhEQUMzIC8qIGlkLmggaW4gQ29weSB3ZWJtIGhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MEEyNEMwMTkxQTAwQURCRDQ0IC8qIGlkLmggKi87
IH07CisJCUNERkQyRkNCMjRDNERBRjcwMDQ4REFDMyAvKiBpc3RyZWFtX3JlYWRlci5oIGluIENv
cHkgd2VibSBoZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJC
NDA5MjRDMDE5MUEwMEFEQkQ0NCAvKiBpc3RyZWFtX3JlYWRlci5oICovOyB9OworCQlDREZEMkZD
QzI0QzREQUY3MDA0OERBQzMgLyogcmVhZGVyLmggaW4gQ29weSB3ZWJtIGhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MDUyNEMwMTkxQTAwQURCRDQ0IC8q
IHJlYWRlci5oICovOyB9OworCQlDREZEMkZDRDI0QzREQUY3MDA0OERBQzMgLyogc3RhdHVzLmgg
aW4gQ29weSB3ZWJtIGhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RFQkI0MDYyNEMwMTkxQTAwQURCRDQ0IC8qIHN0YXR1cy5oICovOyB9OworCQlDREZEMkZDRTI0
QzREQUY3MDA0OERBQzMgLyogd2VibV9wYXJzZXIuaCBpbiBDb3B5IHdlYm0gaGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwODI0QzAxOTFBMDBBREJENDQg
Lyogd2VibV9wYXJzZXIuaCAqLzsgfTsKKwkJQ0RGRDJGRDAyNEM0REIyRjAwNDhEQUMzIC8qIHZw
OV9oZWFkZXJfcGFyc2VyLmggaW4gQ29weSBjb21tb24gaGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREZEMkY5NjI0QzRCMkY5MDA0OERBQzMgLyogdnA5X2hlYWRl
cl9wYXJzZXIuaCAqLzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhCdWlsZFJ1bGUgc2VjdGlvbiAqLwpAQCAtNDE4MCw2ICs0MTgyLDM3IEBACiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7CiAJCX07CisJCUNE
RkQyRkM0MjRDNEQ5RDEwMDQ4REFDMyAvKiBDb3B5IHdlYm0gaGVhZGVycyAqLyA9IHsKKwkJCWlz
YSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OworCQkJZHN0UGF0aCA9IHVzci9sb2NhbC9pbmNsdWRlL3dlYm07CisJCQlkc3RTdWJmb2xk
ZXJTcGVjID0gMTY7CisJCQlmaWxlcyA9ICgKKwkJCQlDREZEMkZDNTI0QzREQUY3MDA0OERBQzMg
LyogYnVmZmVyX3JlYWRlci5oIGluIENvcHkgd2VibSBoZWFkZXJzICovLAorCQkJCUNERkQyRkM2
MjRDNERBRjcwMDQ4REFDMyAvKiBjYWxsYmFjay5oIGluIENvcHkgd2VibSBoZWFkZXJzICovLAor
CQkJCUNERkQyRkM3MjRDNERBRjcwMDQ4REFDMyAvKiBkb21fdHlwZXMuaCBpbiBDb3B5IHdlYm0g
aGVhZGVycyAqLywKKwkJCQlDREZEMkZDODI0QzREQUY3MDA0OERBQzMgLyogZWxlbWVudC5oIGlu
IENvcHkgd2VibSBoZWFkZXJzICovLAorCQkJCUNERkQyRkM5MjRDNERBRjcwMDQ4REFDMyAvKiBm
aWxlX3JlYWRlci5oIGluIENvcHkgd2VibSBoZWFkZXJzICovLAorCQkJCUNERkQyRkNBMjRDNERB
RjcwMDQ4REFDMyAvKiBpZC5oIGluIENvcHkgd2VibSBoZWFkZXJzICovLAorCQkJCUNERkQyRkNC
MjRDNERBRjcwMDQ4REFDMyAvKiBpc3RyZWFtX3JlYWRlci5oIGluIENvcHkgd2VibSBoZWFkZXJz
ICovLAorCQkJCUNERkQyRkNDMjRDNERBRjcwMDQ4REFDMyAvKiByZWFkZXIuaCBpbiBDb3B5IHdl
Ym0gaGVhZGVycyAqLywKKwkJCQlDREZEMkZDRDI0QzREQUY3MDA0OERBQzMgLyogc3RhdHVzLmgg
aW4gQ29weSB3ZWJtIGhlYWRlcnMgKi8sCisJCQkJQ0RGRDJGQ0UyNEM0REFGNzAwNDhEQUMzIC8q
IHdlYm1fcGFyc2VyLmggaW4gQ29weSB3ZWJtIGhlYWRlcnMgKi8sCisJCQkpOworCQkJbmFtZSA9
ICJDb3B5IHdlYm0gaGVhZGVycyI7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKKwkJfTsKKwkJQ0RGRDJGQ0YyNEM0REIwQzAwNDhEQUMzIC8qIENvcHkgY29tbW9u
IGhlYWRlcnMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOworCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWRzdFBhdGggPSB1c3IvbG9jYWwvaW5jbHVk
ZS9jb21tb247CisJCQlkc3RTdWJmb2xkZXJTcGVjID0gMTY7CisJCQlmaWxlcyA9ICgKKwkJCQlD
REZEMkZEMDI0QzREQjJGMDA0OERBQzMgLyogdnA5X2hlYWRlcl9wYXJzZXIuaCBpbiBDb3B5IGNv
bW1vbiBoZWFkZXJzICovLAorCQkJKTsKKwkJCW5hbWUgPSAiQ29weSBjb21tb24gaGVhZGVycyI7
CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIC8qIEVu
ZCBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRmlsZVJl
ZmVyZW5jZSBzZWN0aW9uICovCkBAIC04MzY2LDYgKzgzOTksOCBAQAogCQlDREVCQjQ5QjI0QzAx
OTFBMDBBREJENDQgLyogY29udGVudF9lbmNfYWVzX3NldHRpbmdzX3BhcnNlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBjb250ZW50X2VuY19hZXNfc2V0dGluZ3NfcGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNERUJCNDlDMjRDMDE5MUEwMEFEQkQ0NCAvKiB2aWRlb19wYXJzZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gdmlkZW9fcGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNERUJCNDlEMjRDMDE5MUEwMEFEQkQ0NCAvKiBtYXN0ZXJfcGFyc2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IG1hc3Rlcl9wYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RGRDJGOTYyNEM0QjJGOTAwNDhEQUMzIC8qIHZwOV9oZWFkZXJfcGFyc2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IHZwOV9oZWFkZXJfcGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNERkQyRjlBMjRDNEIyRjkwMDQ4REFDMyAvKiB2cDlfaGVhZGVyX3BhcnNlci5jYyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IHZwOV9oZWFkZXJfcGFyc2VyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGQjM5RDBEMTEyMDBGMEUzMDAwODhFNjkgLyogbGlid2VicnRjLmR5bGliICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFj
aC1vLmR5bGliIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGlid2VicnRjLmR5bGliOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVu
Y2Ugc2VjdGlvbiAqLwogCkBAIC0xNTI0Nyw2ICsxNTI4Miw3IEBACiAJCUNERUJCMTFGMjRDMDE5
MTgwMEFEQkQ0NCAvKiBsaWJ3ZWJtICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQlDREZEMkY5MjI0QzRCMkY5MDA0OERBQzMgLyogY29tbW9uICovLAogCQkJ
CUNERUJCMTkyMjRDMDE5MTgwMEFEQkQ0NCAvKiB3ZWJtX3BhcnNlciAqLywKIAkJCSk7CiAJCQlw
YXRoID0gbGlid2VibTsKQEAgLTE1MzcyLDYgKzE1NDA4LDE1IEBACiAJCQlwYXRoID0gc3JjOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQ0RGRDJGOTIyNEM0QjJGOTAwNDhE
QUMzIC8qIGNvbW1vbiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJQ0RGRDJGOUEyNEM0QjJGOTAwNDhEQUMzIC8qIHZwOV9oZWFkZXJfcGFyc2VyLmNjICov
LAorCQkJCUNERkQyRjk2MjRDNEIyRjkwMDQ4REFDMyAvKiB2cDlfaGVhZGVyX3BhcnNlci5oICov
LAorCQkJKTsKKwkJCXBhdGggPSBjb21tb247CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwor
CQl9OwogCQlGQjM5RDA2RTEyMDBFRDkyMDAwODhFNjkgPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKApAQCAtMTU3NDEsMTYgKzE1Nzg2LDYgQEAKIAkJCWlzYSA9IFBCWEhl
YWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZp
bGVzID0gKAotCQkJCUNERUJCNEFEMjRDMDE5OUQwMEFEQkQ0NCAvKiBidWZmZXJfcmVhZGVyLmgg
aW4gSGVhZGVycyAqLywKLQkJCQlDREVCQjRCNTI0QzAxOTlEMDBBREJENDQgLyogY2FsbGJhY2su
aCBpbiBIZWFkZXJzICovLAotCQkJCUNERUJCNEIwMjRDMDE5OUQwMEFEQkQ0NCAvKiBkb21fdHlw
ZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCUNERUJCNEIxMjRDMDE5OUQwMEFEQkQ0NCAvKiBlbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlDREVCQjRCNDI0QzAxOTlEMDBBREJENDQgLyogZmls
ZV9yZWFkZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUNERUJCNEFFMjRDMDE5OUQwMEFEQkQ0NCAv
KiBpZC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0RFQkI0QUYyNEMwMTk5RDAwQURCRDQ0IC8qIGlz
dHJlYW1fcmVhZGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlDREVCQjRCMzI0QzAxOTlEMDBBREJE
NDQgLyogcmVhZGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlDREVCQjRCMjI0QzAxOTlEMDBBREJE
NDQgLyogc3RhdHVzLmggaW4gSGVhZGVycyAqLywKLQkJCQlDREVCQjRBQzI0QzAxOTlEMDBBREJE
NDQgLyogd2VibV9wYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTczNjYsNiArMTc0MDEsOCBA
QAogCQkJCUNERUJCMTE1MjRDMDE4NzQwMEFEQkQ0NCAvKiBIZWFkZXJzICovLAogCQkJCUNERUJC
MTE2MjRDMDE4NzQwMEFEQkQ0NCAvKiBTb3VyY2VzICovLAogCQkJCUNERUJCMTE3MjRDMDE4NzQw
MEFEQkQ0NCAvKiBGcmFtZXdvcmtzICovLAorCQkJCUNERkQyRkM0MjRDNEQ5RDEwMDQ4REFDMyAv
KiBDb3B5IHdlYm0gaGVhZGVycyAqLywKKwkJCQlDREZEMkZDRjI0QzREQjBDMDA0OERBQzMgLyog
Q29weSBjb21tb24gaGVhZGVycyAqLywKIAkJCSk7CiAJCQlidWlsZFJ1bGVzID0gKAogCQkJKTsK
QEAgLTE4NTM0LDYgKzE4NTcxLDcgQEAKIAkJCQlDREVCQjRDMzI0QzAxOUM0MDBBREJENDQgLyog
dmFyX2ludF9wYXJzZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQlDREVCQjRCOTI0QzAxOUM0MDBB
REJENDQgLyogdmlydHVhbF9ibG9ja19wYXJzZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQlDREVC
QjRDODI0QzAxOUM0MDBBREJENDQgLyogdm9pZF9wYXJzZXIuY2MgaW4gU291cmNlcyAqLywKKwkJ
CQlDREZEMkZBODI0QzRCMzRFMDA0OERBQzMgLyogdnA5X2hlYWRlcl9wYXJzZXIuY2MgaW4gU291
cmNlcyAqLywKIAkJCQlDREVCQjRCQTI0QzAxOUM0MDBBREJENDQgLyogd2VibV9wYXJzZXIuY2Mg
aW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDFkN2YyMDk4NjdjMWQ0ZTBhNDI3
NDY5NzY1NWY4ZDFiMTM2ZGFkMGUuLmRjM2ZmMjU4NDFhOTI1MzNiZWU4ZDA1ODE2MThhYjIwYzcw
Yzk5ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMjkxLDYgKzI5MSw3IEBAIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQy5tbSBAbm8tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNhbXBsZUFWRk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tIEBuby11bmlmeQogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
bW0gQG5vLXVuaWZ5CitwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tIEBuby11bmlmeQogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCBA
bm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIEBuby11bmlmeQpAQCAtMzMzLDYgKzMzNCw3IEBA
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9UcmFuc2Zv
cm1hdGlvbk1hdHJpeENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3Bw
CitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Db2xvckNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9GbG9hdFJlY3RDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29y
ZVRleHQuY3BwCkBAIC0zNDgsNiArMzUwLDggQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9T
dXJmYWNlLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2VQb29sQ29jb2EubW0K
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ludFJlY3RDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcAorcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcAorcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvVlA5VXRpbGl0aWVzQ29jb2EubW0KQEAgLTM1Niw2ICszNjAsNyBAQCBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJHTExheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHUFVMYXllci5tbQor
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQogcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1Rl
eHR1cmVDYWNoZUNWLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggN2Q5NDM5YTFlZThmNWE3MjFmZjA5M2ZiZGMxM2JjODRkNTg1
ZjUyYS4uMDk1OGU0Yzc4MGFhNzUwYWVhNmM3YjI5YmFiZjllYzIxZmY5YjU2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDI2
Niw2ICs0MjY2LDcgQEAKIAkJQ0RGNjVDQ0ExNDVCNDQ4ODAwQzRDN0FBIC8qIE1lZGlhQ29udHJv
bGxlckludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RGNjVDQzkxNDVCNDNBNzAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFj
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNE
Rjc0ODNGMThGRUJDRUMwMDA2RUNDMCAvKiBHcmlkUG9zaXRpb25zUmVzb2x2ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjc0ODNEMThGRUJDRUMw
MDA2RUNDMCAvKiBHcmlkUG9zaXRpb25zUmVzb2x2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDREY3NTZBMzIxNUMyOUU5MDBFRkNCNTAgLyog
SlNNZWRpYUtleUVuY3J5cHRpb25TY2hlbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENERjc1NkExMjE1QzI5RTkwMEVGQ0I1MCAvKiBKU01lZGlhS2V5
RW5jcnlwdGlvblNjaGVtZS5oICovOyB9OworCQlDREY5OTRGRDI0QzE1RkUzMDAyRUEwNjIgLyog
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENERjk5NEZCMjRDMTJBNkEwMDJFQTA2MiAvKiBTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDLm1tICovOyB9OwogCQlDREZDMzYwNjE4Q0E2MUMyMDAyNkU1NkYgLyog
UmVtb3RlQ29tbWFuZExpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREZDMzYwNDE4Q0E2MUMyMDAyNkU1NkYgLyogUmVtb3RlQ29tbWFuZExp
c3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQ0UwNTdGQTYxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwNTdGQTQx
MjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMDhDM0QyMTUyQjU5OUEw
MDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA4QzNEMDE1MkI1OTlBMDAyMUI4QzIgLyog
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KCk7IH07IH07CkBAIC0xNDE2NCw2ICsxNDE2NSw4IEBACiAJCUNEOEM2QzI5MjJGRERBOTEwMEE3
MjBBQiAvKiBKU1JlbW90ZVBsYXliYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVtb3RlUGxheWJh
Y2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4RDMwNkQyM0FENEZBODAwNkMz
OTc1IC8qIENETUxvZ2dpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0RNTG9nZ2luZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRDhEMzA2RTIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9n
Z2luZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDRE1Mb2dnaW5nLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q4RjY2NzAyNEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEOEY2NjcyMjRDMEYyMDgwMDBD
NDIxQyAvKiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5MkY1MEYy
MjYwRkZFRTAwRjg3QkIzIC8qIERvY3VtZW50RnVsbHNjcmVlbi5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRG9jdW1lbnRG
dWxsc2NyZWVuLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5MkY1MTAyMjYw
RkZFRTAwRjg3QkIzIC8qIERvY3VtZW50RnVsbHNjcmVlbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1
bWVudEZ1bGxzY3JlZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5MkY1MTYy
MjYxMDM4MjAwRjg3QkIzIC8qIEZ1bGxzY3JlZW5NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1
bGxzY3JlZW5NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDM0NCw2
ICsxNDM0Nyw4IEBACiAJCUNERThCNUVGMUE2OTc3OEIwMEI0QjY2QSAvKiBMZWdhY3lDRE1TZXNz
aW9uQ2xlYXJLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGVnYWN5Q0RN
U2Vzc2lvbkNsZWFyS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUE3Qzgy
MTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVuLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbmRlckZ1bGxTY3JlZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0RFQTdDODMxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyRnVsbFNjcmVlbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERUIzRDcyMjRDNDFBNkUwMDFGQkVF
RiAvKiBTb3VyY2VCdWZmZXJQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlQnVm
ZmVyUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFQjNENzMyNEM0
MUE2RTAwMUZCRUVGIC8qIFNvdXJjZUJ1ZmZlclBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3Vy
Y2VCdWZmZXJQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQ0E4OTgx
RURGNDQ3RDAwRENCMDhCIC8qIEFWQXNzZXRUcmFja1V0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEFWQXNzZXRUcmFja1V0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0RFQ0E4OTkxRURGNDQ3RDAwRENCMDhCIC8qIEFWQXNzZXRUcmFja1V0aWxpdGll
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBVkFzc2V0VHJhY2tVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFRTM5MzYxNzk3NDI1OTAwMUQ3NTgwIC8qIFB1YmxpY1VSTE1h
bmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHVibGljVVJM
TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDM4Miw2ICsxNDM4
NywxMiBAQAogCQlDREY3NTY5RTIxNUMyODVFMDBFRkNCNTAgLyogTWVkaWFLZXlFbmNyeXB0aW9u
U2NoZW1lLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBNZWRpYUtleUVuY3J5cHRpb25TY2hlbWUuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDREY3NTZBMDIxNUMyOUU4MDBFRkNCNTAgLyogSlNNZWRpYUtl
eUVuY3J5cHRpb25TY2hlbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNNZWRpYUtleUVuY3J5cHRpb25TY2hlbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDREY3NTZBMTIxNUMyOUU5MDBFRkNCNTAgLyogSlNNZWRpYUtleUVuY3J5cHRpb25T
Y2hlbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUtleUVuY3J5
cHRpb25TY2hlbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RGOTk0RkEyNEMx
MkE2QTAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREY5OTRGQjI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjk5NEZFMjRDMjgxMzYwMDJFQTA2MiAv
KiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9UcmFja1ByaXZh
dGVXZWJNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjk5NEZGMjRDMjgxMzYw
MDJFQTA2MiAvKiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RGOTk1MDAyNEMyODE0OTAwMkVBMDYyIC8qIEF1ZGlvVHJhY2tQcml2YXRlV2ViTS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RGOTk1MDEyNEMyODE0OTAwMkVBMDYyIC8qIEF1ZGlvVHJhY2tQcml2YXRlV2Vi
TS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREZDMzYwMTE4Q0E2MTYzMDAyNkU1NkYgLyogUmVt
b3RlQ29tbWFuZExpc3RlbmVySU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDREZDMzYwMjE4Q0E2MTYzMDAyNkU1NkYgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlQ29tbWFuZExp
c3RlbmVySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREZDMzYwMzE4Q0E2
MUMyMDAyNkU1NkYgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTg2OCw2ICsyNTg3OSw4IEBACiAJCUI1MzIwRDY4MTIy
QTI0RTkwMDJEMTQ0MCAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJQ0RGOTk1MDEyNEMyODE0OTAwMkVBMDYyIC8qIEF1ZGlvVHJhY2tQcml2
YXRlV2ViTS5jcHAgKi8sCisJCQkJQ0RGOTk1MDAyNEMyODE0OTAwMkVBMDYyIC8qIEF1ZGlvVHJh
Y2tQcml2YXRlV2ViTS5oICovLAogCQkJCUY0OEQyQUEzMjE1OTc0MEQwMEM2NzUyQiAvKiBDb2xv
ckNvY29hLmggKi8sCiAJCQkJRjQ4RDJBQTQyMTU5NzQwRDAwQzY3NTJCIC8qIENvbG9yQ29jb2Eu
bW0gKi8sCiAJCQkJQjI3NTM1NEMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdENvY29hLm1t
ICovLApAQCAtMjU4ODksMTAgKzI1OTAyLDE2IEBACiAJCQkJQUQ5RkY2RTAxOTA4MzkxRDAwM0I2
MUUwIC8qIElPU3VyZmFjZVBvb2xDb2NvYS5tbSAqLywKIAkJCQlDREM0OEFDODIxNDlDRjJBMDAy
NEZENTkgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcCAqLywKIAkJ
CQlDREM0OEFDNzIxNDlDRjJBMDAyNEZENTkgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFj
dG9yeUNvY29hLmggKi8sCisJCQkJQ0RFQjNENzIyNEM0MUE2RTAwMUZCRUVGIC8qIFNvdXJjZUJ1
ZmZlclBhcnNlci5jcHAgKi8sCisJCQkJQ0RFQjNENzMyNEM0MUE2RTAwMUZCRUVGIC8qIFNvdXJj
ZUJ1ZmZlclBhcnNlci5oICovLAorCQkJCUNEOEY2NjcwMjRDMEYyMDgwMDBDNDIxQyAvKiBTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcCAqLywKKwkJCQlDRDhGNjY3MjI0QzBGMjA4MDAwQzQyMUMg
LyogU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oICovLAogCQkJCUU0RThCNEVEMjE2Qjc5RjQwMEI4
ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAgKi8sCiAJCQkJRTRFOEI0RUEy
MTZCNzlFNTAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmggKi8sCiAJCQkJ
NTI2NzI0RjIxQ0IyRkRGNjAwNzU5NzREIC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2Eu
aCAqLywKIAkJCQk1MjY3MjRGMTFDQjJGREY2MDA3NTk3NEQgLyogVGV4dFRyYWNrUmVwcmVzZW50
YXRpb25Db2NvYS5tbSAqLywKKwkJCQlDREY5OTRGRjI0QzI4MTM2MDAyRUEwNjIgLyogVmlkZW9U
cmFja1ByaXZhdGVXZWJNLmNwcCAqLywKKwkJCQlDREY5OTRGRTI0QzI4MTM2MDAyRUEwNjIgLyog
VmlkZW9UcmFja1ByaXZhdGVXZWJNLmggKi8sCiAJCQkJQ0Q2RkU1QjcyNEJDRTY0NTAwOUZDREE0
IC8qIFZQOVV0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJQ0Q2RkU1QjgyNEJDRTY0NTAwOUZDREE0
IC8qIFZQOVV0aWxpdGllc0NvY29hLm1tICovLAogCQkJCTJEM0VGNDQ0MTkxNzkxNUMwMDAzNDE4
NCAvKiBXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUuaCAqLywKQEAgLTI3Mzg1LDYg
KzI3NDA0LDggQEAKIAkJCQlDREM4QjVBNTE4MDQ3NEY3MDAxNkU2ODUgLyogTWVkaWFTb3VyY2VQ
cml2YXRlQVZGT2JqQy5oICovLAogCQkJCUNEQzhCNUE0MTgwNDc0RjcwMDE2RTY4NSAvKiBNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tICovLAogCQkJCTdBMjlGNTcxMThDNjk1MTQwMDREMEY4
MSAvKiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggKi8sCisJCQkJQ0RGOTk0RkEyNEMx
MkE2QTAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCAqLywKKwkJCQlDREY5
OTRGQjI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSAqLywK
IAkJCQlDREM4QjVBOTE4MDQ3RkYxMDAxNkU2ODUgLyogU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMuaCAqLywKIAkJCQlDREM4QjVBODE4MDQ3RkYxMDAxNkU2ODUgLyogU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMubW0gKi8sCiAJCQkJNTJENUExOEUxQzU0NTkwMzAwREUzNEEzIC8qIFZpZGVv
TGF5ZXJNYW5hZ2VyT2JqQy5oICovLApAQCAtMzQ1OTQsNiArMzQ2MTUsNyBAQAogCQkJCTI2QUEw
RjlFMThEMkExOEIwMDQxOTM4MSAvKiBTZWxlY3RvclBzZXVkb0VsZW1lbnRUeXBlTWFwLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTdDRDU4REZEMUY5NTY1QTgwMDExMjc5MSAvKiBTZXR0aW5ncy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTBBODFGOTAyMkE0MDA1MTAyQ0UgLyogU29mdExp
bmtMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNERjk5NEZEMjRDMTVGRTMwMDJFQTA2
MiAvKiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RD
OEI1QUExODA0N0ZGMTAwMTZFNjg1IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M3Q0EwQTJDRjA2QjAwRDU3NjY0IC8qIFNWR05hbWVzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUMxNjkyREQyMjNEMjNBQkQwMDZFODhGNyAvKiBTeXN0ZW1C
YXR0ZXJ5Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oCmluZGV4IDExYzBhN2Y1ZDhmOWI0YjQyYTg3MWIzMzExZWFjNDQ1OTc1
MzY0MjcuLmQwMTc4NGM3YWE0Yjc2ZDZjM2NkMjU5NzkyMzI0YTYwNTI5YTFmNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCkBAIC0zOTEsNiArMzkx
LDExIEBAIHB1YmxpYzoKICAgICBib29sIGluY3JlbWVudGFsUERGTG9hZGluZ0VuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX2luY3JlbWVudGFsUERGTG9hZGluZ0VuYWJsZWQ7IH0KICNlbmRpZgog
CisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICB2b2lkIHNldFdlYk1QYXJzZXJFbmFibGVk
KGJvb2wgaXNFbmFibGVkKSB7IG1fd2ViTVBhcnNlckVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAg
ICBib29sIHdlYk1QYXJzZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV93ZWJNUGFyc2VyRW5h
YmxlZDsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgLy8gTmV2ZXIgaW5zdGFudGlhdGUuCiAg
ICAgUnVudGltZUVuYWJsZWRGZWF0dXJlcygpOwpAQCAtNTg0LDYgKzU4OSwxMCBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9pbmNyZW1lbnRhbFBERkxvYWRpbmdFbmFibGVkIHsgZmFsc2UgfTsKICNl
bmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICBib29sIG1fd2ViTVBhcnNlckVu
YWJsZWQgeyBmYWxzZSB9OworI2VuZGlmCisKICAgICBmcmllbmQgY2xhc3MgV1RGOjpOZXZlckRl
c3Ryb3llZDxSdW50aW1lRW5hYmxlZEZlYXR1cmVzPjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oCmluZGV4IDdmYWUy
M2VmNWRjNDI5OWU4ZjA5ZmM0MTJmYzE3MTAyNjhiZWJjMjEuLmE5ZjgzNmJkMTE3M2UyMmUwYWU4
MTRhMTc1NDJhYTIzYTQ2MTVhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJUcmFja1ByaXZhdGVCYXNlLmgiCisjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+CiAKICNpZiBFTkFCTEUoVklERU8pCiAKQEAgLTU1LDYgKzU2LDggQEAgcHVibGlj
OgogICAgICAgICBtX2VuYWJsZWQgPSBlbmFibGVkOwogICAgICAgICBpZiAobV9jbGllbnQpCiAg
ICAgICAgICAgICBtX2NsaWVudC0+ZW5hYmxlZENoYW5nZWQoZW5hYmxlZCk7CisgICAgICAgIGlm
IChtX2VuYWJsZWRDaGFuZ2VkQ2FsbGJhY2spCisgICAgICAgICAgICBtX2VuYWJsZWRDaGFuZ2Vk
Q2FsbGJhY2soKnRoaXMsIG1fZW5hYmxlZCk7CiAgICAgfQogCiAgICAgYm9vbCBlbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CkBAIC02NCw2ICs2Nyw5IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgYm9vbCBpc0JhY2tlZEJ5TWVkaWFTdHJlYW1UcmFjaygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAKKyAgICB1c2luZyBFbmFibGVkQ2hhbmdlZENhbGxiYWNrID0gRnVuY3Rp
b248dm9pZChBdWRpb1RyYWNrUHJpdmF0ZSYsIGJvb2wgZW5hYmxlZCk+OworICAgIHZvaWQgc2V0
RW5hYmxlZENoYW5nZWRDYWxsYmFjayhFbmFibGVkQ2hhbmdlZENhbGxiYWNrJiYgY2FsbGJhY2sp
IHsgbV9lbmFibGVkQ2hhbmdlZENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7IH0KKwogI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJBdWRpb1RyYWNrUHJpdmF0ZSI7IH0KICNlbmRpZgpAQCAt
NzQsNiArODAsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIEF1ZGlvVHJhY2tQcml2YXRl
Q2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKICAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNl
IH07CisgICAgRW5hYmxlZENoYW5nZWRDYWxsYmFjayBtX2VuYWJsZWRDaGFuZ2VkQ2FsbGJhY2s7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNwcAppbmRleCA5YWMzOTE5NzNhNDQwNDQ3ZTJm
YjRkYzdmODc4MDczNTQ3ZDY0OGViLi5lNTI4Y2QzNTYzZTdlNTI5MGZhYTAyMDk0YWY2MWEyYWYx
MzdhZTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlV
dGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0
aWxpdGllcy5jcHAKQEAgLTU0LDI2ICs1NCw3NCBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkVlBMZXZl
bCh1aW50OF90IGxldmVsKQogICAgIHJldHVybiBzdGQ6OmJpbmFyeV9zZWFyY2goc3RkOjpiZWdp
bih2YWxpZExldmVscyksIHN0ZDo6ZW5kKHZhbGlkTGV2ZWxzKSwgbGV2ZWwpOwogfQogCi1zdGF0
aWMgYm9vbCBpc1ZhbGlkVlBjb2xvclByaW1hcmllcyh1aW50OF90IGNvbG9yUHJpbWFyaWVzKQor
c3RhdGljIGJvb2wgaXNWYWxpZFZQQ29sb3JQcmltYXJpZXModWludDhfdCBjb2xvclByaW1hcmll
cykKIHsKICAgICBjb25zdGV4cHIgdWludDhfdCB2YWxpZENvbG9yUHJpbWFyaWVzW10gPSB7Ci0g
ICAgICAgIDEsCi0gICAgICAgIDQsCi0gICAgICAgIDUsCi0gICAgICAgIDYsCi0gICAgICAgIDcs
Ci0gICAgICAgIDgsCi0gICAgICAgIDksCi0gICAgICAgIDEwLAotICAgICAgICAxMSwKLSAgICAg
ICAgMTIsCi0gICAgICAgIDIyLAorICAgICAgICBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmll
czo6QlRfNzA5XzYsCisgICAgICAgIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpVbnNw
ZWNpZmllZCwKKyAgICAgICAgVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OkJUXzQ3MF82
X00sCisgICAgICAgIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpCVF80NzBfN19CRywK
KyAgICAgICAgVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OkJUXzYwMV83LAorICAgICAg
ICBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6U01QVEVfU1RfMjQwLAorICAgICAgICBW
UENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6RmlsbSwKKyAgICAgICAgVlBDb25maWd1cmF0
aW9uQ29sb3JQcmltYXJpZXM6OkJUXzIwMjBfTm9uY29uc3RhbnRfTHVtaW5hbmNlLAorICAgICAg
ICBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6U01QVEVfU1RfNDI4XzEsCisgICAgICAg
IFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpTTVBURV9SUF80MzFfMiwKKyAgICAgICAg
VlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OlNNUFRFX0VHXzQzMl8xLAorICAgICAgICBW
UENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6RUJVX1RlY2hfMzIxM19FLAogICAgIH07CiAK
ICAgICBBU1NFUlQoc3RkOjppc19zb3J0ZWQoc3RkOjpiZWdpbih2YWxpZENvbG9yUHJpbWFyaWVz
KSwgc3RkOjplbmQodmFsaWRDb2xvclByaW1hcmllcykpKTsKICAgICByZXR1cm4gc3RkOjpiaW5h
cnlfc2VhcmNoKHN0ZDo6YmVnaW4odmFsaWRDb2xvclByaW1hcmllcyksIHN0ZDo6ZW5kKHZhbGlk
Q29sb3JQcmltYXJpZXMpLCBjb2xvclByaW1hcmllcyk7CiB9CiAKK3N0YXRpYyBib29sIGlzVmFs
aWRWUFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKHVpbnQ4X3QgdHJhbnNmZXJDaGFyYWN0ZXJpc3Rp
Y3MpCit7CisgICAgY29uc3RleHByIHVpbnQ4X3QgdmFsaWRUcmFuc2ZlckNoYXJhY3RlcmlzdGlj
c1tdID0geworICAgICAgICBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6
QlRfNzA5XzYsCisgICAgICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNz
OjpVbnNwZWNpZmllZCwKKyAgICAgICAgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJp
c3RpY3M6OkJUXzQ3MF82X00sCisgICAgICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFj
dGVyaXN0aWNzOjpCVF80NzBfN19CRywKKyAgICAgICAgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJD
aGFyYWN0ZXJpc3RpY3M6OkJUXzYwMV83LAorICAgICAgICBWUENvbmZpZ3VyYXRpb25UcmFuc2Zl
ckNoYXJhY3RlcmlzdGljczo6U01QVEVfU1RfMjQwLAorICAgICAgICBWUENvbmZpZ3VyYXRpb25U
cmFuc2ZlckNoYXJhY3RlcmlzdGljczo6TGluZWFyLAorICAgICAgICBWUENvbmZpZ3VyYXRpb25U
cmFuc2ZlckNoYXJhY3RlcmlzdGljczo6TG9ncml0aG1pYywKKyAgICAgICAgVlBDb25maWd1cmF0
aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkxvZ3JpdGhtaWNfU3FydCwKKyAgICAgICAgVlBD
b25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OklFQ182MTk2Nl8yXzQsCisgICAg
ICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpCVF8xMzYxXzAsCisg
ICAgICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpJRUNfNjE5NjZf
Ml8xLAorICAgICAgICBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6QlRf
MjAyMF8xMGJpdCwKKyAgICAgICAgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3Rp
Y3M6OkJUXzIwMjBfMTJiaXQsCisgICAgICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFj
dGVyaXN0aWNzOjpTTVBURV9TVF8yMDg0LAorICAgICAgICBWUENvbmZpZ3VyYXRpb25UcmFuc2Zl
ckNoYXJhY3RlcmlzdGljczo6U01QVEVfU1RfNDI4XzEsCisgICAgICAgIFZQQ29uZmlndXJhdGlv
blRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpCVF8yMTAwX0hMRywKKyAgICB9OworICAgIEFTU0VS
VChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKHZhbGlkVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3Mp
LCBzdGQ6OmVuZCh2YWxpZFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKSkpOworICAgIHJldHVybiBz
dGQ6OmJpbmFyeV9zZWFyY2goc3RkOjpiZWdpbih2YWxpZFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNz
KSwgc3RkOjplbmQodmFsaWRUcmFuc2ZlckNoYXJhY3RlcmlzdGljcyksIHRyYW5zZmVyQ2hhcmFj
dGVyaXN0aWNzKTsKK30KKworc3RhdGljIGJvb2wgaXNWYWxpZFZQTWF0cml4Q29lZmZpY2llbnRz
KHVpbnQ4X3QgbWF0cml4Q29lZmZpY2llbnRzKQoreworICAgIGNvbnN0ZXhwciB1aW50OF90IHZh
bGlkTWF0cml4Q29lZmZpY2llbnRzW10gPSB7CisgICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJp
eENvZWZmaWNpZW50czo6SWRlbnRpdHksCisgICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJpeENv
ZWZmaWNpZW50czo6QlRfNzA5XzYsCisgICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZm
aWNpZW50czo6VW5zcGVjaWZpZWQsCisgICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZm
aWNpZW50czo6RkNDLAorICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6
OkJUXzQ3MF83X0JHLAorICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6
OkJUXzYwMV83LAorICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OlNN
UFRFX1NUXzI0MCwKKyAgICAgICAgVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpZ
Q2dDbywKKyAgICAgICAgVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpCVF8yMDIw
X05vbmNvbnN0YW50X0x1bWluYW5jZSwKKyAgICAgICAgVlBDb25maWd1cmF0aW9uTWF0cml4Q29l
ZmZpY2llbnRzOjpCVF8yMDIwX0NvbnN0YW50X0x1bWluYW5jZSwKKyAgICAgICAgVlBDb25maWd1
cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpTTVBURV9TVF8yMDg1LAorICAgICAgICBWUENvbmZp
Z3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OkNocm9tYWNpdHlfQ29uc3RhbnRfTHVtaW5hbmNl
LAorICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OkNocm9tYWNpdHlf
Tm9uY29uc3RhbnRfTHVtaW5hbmNlLAorICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2Vm
ZmljaWVudHM6OkJUXzIxMDBfSUNDLAorICAgIH07CisgICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVk
KHN0ZDo6YmVnaW4odmFsaWRNYXRyaXhDb2VmZmljaWVudHMpLCBzdGQ6OmVuZCh2YWxpZE1hdHJp
eENvZWZmaWNpZW50cykpKTsKKyAgICByZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKHN0ZDo6YmVn
aW4odmFsaWRNYXRyaXhDb2VmZmljaWVudHMpLCBzdGQ6OmVuZCh2YWxpZE1hdHJpeENvZWZmaWNp
ZW50cyksIG1hdHJpeENvZWZmaWNpZW50cyk7Cit9CisKIE9wdGlvbmFsPFZQQ29kZWNDb25maWd1
cmF0aW9uUmVjb3JkPiBwYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNWaWV3
KQogewogICAgIC8vIFRoZSBmb3JtYXQgb2YgdGhlICd2cDA5JyBjb2RlYyBzdHJpbmcgaXMgc3Bl
Y2lmaWVkIGluIHRoZSB3ZWJtIEdpdEh1YiByZXBvOgpAQCAtMTQwLDcgKzE4OCw3IEBAIE9wdGlv
bmFsPFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkPiBwYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0
cmluZ1ZpZXcgY29kZWNWaWV3CiAgICAgLy8gRmlmdGggZWxlbWVudDogY29sb3JQcmltYXJpZXMu
IExlZ2FsIHZhbHVlcyBhcmUgZGVmaW5lZCBieSAgSVNPL0lFQyAyMzAwMS04OjIwMTYsIHN1cGVy
Y2VkZWQKICAgICAvLyBieSBJU08vSUVDIDIzMDkxLTI6MjAxOS4KICAgICBhdXRvIGNvbG9yUHJp
bWFyaWVzID0gdG9JbnRlZ3JhbFR5cGU8dWludDhfdD4oKm5leHRFbGVtZW50KTsKLSAgICBpZiAo
IWNvbG9yUHJpbWFyaWVzIHx8ICFpc1ZhbGlkVlBjb2xvclByaW1hcmllcygqY29sb3JQcmltYXJp
ZXMpKQorICAgIGlmICghY29sb3JQcmltYXJpZXMgfHwgIWlzVmFsaWRWUENvbG9yUHJpbWFyaWVz
KCpjb2xvclByaW1hcmllcykpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgY29u
ZmlndXJhdGlvbi5jb2xvclByaW1hcmllcyA9ICpjb2xvclByaW1hcmllczsKIApAQCAtMTUwLDcg
KzE5OCw3IEBAIE9wdGlvbmFsPFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkPiBwYXJzZVZQQ29k
ZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNWaWV3CiAgICAgLy8gU2l4dGggZWxlbWVudDog
dHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MuIExlZ2FsIHZhbHVlcyBhcmUgZGVmaW5lZCBieSAgSVNP
L0lFQyAyMzAwMS04OjIwMTYsIHN1cGVyY2VkZWQKICAgICAvLyBieSBJU08vSUVDIDIzMDkxLTI6
MjAxOS4KICAgICBhdXRvIHRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzID0gdG9JbnRlZ3JhbFR5cGU8
dWludDhfdD4oKm5leHRFbGVtZW50KTsKLSAgICBpZiAoIXRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNz
IHx8ICghKnRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzIHx8ICp0cmFuc2ZlckNoYXJhY3RlcmlzdGlj
cyA9PSAyIHx8ICp0cmFuc2ZlckNoYXJhY3RlcmlzdGljcyA9PSAzIHx8ICp0cmFuc2ZlckNoYXJh
Y3RlcmlzdGljcyA+IDE4KSkKKyAgICBpZiAoIXRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzIHx8ICFp
c1ZhbGlkVlBUcmFuc2ZlckNoYXJhY3RlcmlzdGljcygqdHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3Mp
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGNvbmZpZ3VyYXRpb24udHJhbnNm
ZXJDaGFyYWN0ZXJpc3RpY3MgPSAqdHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M7CiAKQEAgLTE2MCw3
ICsyMDgsNyBAQCBPcHRpb25hbDxWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZD4gcGFyc2VWUENv
ZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjVmlldwogICAgIC8vIFNldmVudGggZWxlbWVu
dDogbWF0cml4Q29lZmZpY2llbnRzLiBMZWdhbCB2YWx1ZXMgYXJlIGRlZmluZWQgYnkgIElTTy9J
RUMgMjMwMDEtODoyMDE2LCBzdXBlcmNlZGVkCiAgICAgLy8gYnkgSVNPL0lFQyAyMzA5MS0yOjIw
MTkuCiAgICAgYXV0byBtYXRyaXhDb2VmZmljaWVudHMgPSB0b0ludGVncmFsVHlwZTx1aW50OF90
PigqbmV4dEVsZW1lbnQpOwotICAgIGlmICghbWF0cml4Q29lZmZpY2llbnRzIHx8ICgqbWF0cml4
Q29lZmZpY2llbnRzID09IDIgfHwgKm1hdHJpeENvZWZmaWNpZW50cyA9PSAzIHx8ICptYXRyaXhD
b2VmZmljaWVudHMgPiAxNCkpCisgICAgaWYgKCFtYXRyaXhDb2VmZmljaWVudHMgfHwgaXNWYWxp
ZFZQTWF0cml4Q29lZmZpY2llbnRzKCptYXRyaXhDb2VmZmljaWVudHMpKQogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogICAgIGNvbmZpZ3VyYXRpb24ubWF0cml4Q29lZmZpY2llbnRzID0g
Km1hdHJpeENvZWZmaWNpZW50czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9WUDlVdGlsaXRpZXMuaAppbmRleCAzYWY1ODUwZTU0NDBkMmFmY2Y5ZWFjZGUyYzg1ZTBi
M2QzMTE4ZmUwLi44ODc2OTgzOGQ1MDgxOTgyZDIyYTA3YjA1OWQ0MGJkMzE1YzJjYmU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuaApAQCAt
NTksNiArNTksNjAgQEAgY29uc3RleHByIHVpbnQ4X3QgVmlkZW9SYW5nZSA9IDA7CiBjb25zdGV4
cHIgdWludDhfdCBGdWxsUmFuZ2UgPSAxOwogfQogCisvLyBSZWY6IElTTy9JRUMgMjMwOTEtMjoy
MDE5CituYW1lc3BhY2UgVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXMgeworY29uc3RleHBy
IHVpbnQ4X3QgQlRfNzA5XzYgPSAxOworY29uc3RleHByIHVpbnQ4X3QgVW5zcGVjaWZpZWQgPSAy
OworY29uc3RleHByIHVpbnQ4X3QgQlRfNDcwXzZfTSA9IDQ7Citjb25zdGV4cHIgdWludDhfdCBC
VF80NzBfN19CRyA9IDU7Citjb25zdGV4cHIgdWludDhfdCBCVF82MDFfNyA9IDY7Citjb25zdGV4
cHIgdWludDhfdCBTTVBURV9TVF8yNDAgPSA3OworY29uc3RleHByIHVpbnQ4X3QgRmlsbSA9IDg7
Citjb25zdGV4cHIgdWludDhfdCBCVF8yMDIwX05vbmNvbnN0YW50X0x1bWluYW5jZSA9IDk7Citj
b25zdGV4cHIgdWludDhfdCBTTVBURV9TVF80MjhfMSA9IDEwOworY29uc3RleHByIHVpbnQ4X3Qg
U01QVEVfUlBfNDMxXzIgPSAxMTsKK2NvbnN0ZXhwciB1aW50OF90IFNNUFRFX0VHXzQzMl8xID0g
MTI7Citjb25zdGV4cHIgdWludDhfdCBFQlVfVGVjaF8zMjEzX0UgPSAyMjsKK30KKworLy8gUmVm
OiBJU08vSUVDIDIzMDkxLTI6MjAxOQorbmFtZXNwYWNlIFZQQ29uZmlndXJhdGlvblRyYW5zZmVy
Q2hhcmFjdGVyaXN0aWNzIHsKK2NvbnN0ZXhwciB1aW50OF90IEJUXzcwOV82ID0gMTsKK2NvbnN0
ZXhwciB1aW50OF90IFVuc3BlY2lmaWVkID0gMjsKK2NvbnN0ZXhwciB1aW50OF90IEJUXzQ3MF82
X00gPSA0OworY29uc3RleHByIHVpbnQ4X3QgQlRfNDcwXzdfQkcgPSA1OworY29uc3RleHByIHVp
bnQ4X3QgQlRfNjAxXzcgPSA2OworY29uc3RleHByIHVpbnQ4X3QgU01QVEVfU1RfMjQwID0gNzsK
K2NvbnN0ZXhwciB1aW50OF90IExpbmVhciA9IDg7Citjb25zdGV4cHIgdWludDhfdCBMb2dyaXRo
bWljID0gOTsKK2NvbnN0ZXhwciB1aW50OF90IExvZ3JpdGhtaWNfU3FydCA9IDEwOworY29uc3Rl
eHByIHVpbnQ4X3QgSUVDXzYxOTY2XzJfNCA9IDExOworY29uc3RleHByIHVpbnQ4X3QgQlRfMTM2
MV8wID0gMTI7Citjb25zdGV4cHIgdWludDhfdCBJRUNfNjE5NjZfMl8xID0gMTM7Citjb25zdGV4
cHIgdWludDhfdCBCVF8yMDIwXzEwYml0ID0gMTQ7Citjb25zdGV4cHIgdWludDhfdCBCVF8yMDIw
XzEyYml0ID0gMTU7Citjb25zdGV4cHIgdWludDhfdCBTTVBURV9TVF8yMDg0ID0gMTY7Citjb25z
dGV4cHIgdWludDhfdCBTTVBURV9TVF80MjhfMSA9IDE3OworY29uc3RleHByIHVpbnQ4X3QgQlRf
MjEwMF9ITEcgPSAxODsKK30KKworbmFtZXNwYWNlIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZm
aWNpZW50cyB7Citjb25zdGV4cHIgdWludDhfdCBJZGVudGl0eSA9IDA7Citjb25zdGV4cHIgdWlu
dDhfdCBCVF83MDlfNiA9IDE7Citjb25zdGV4cHIgdWludDhfdCBVbnNwZWNpZmllZCA9IDI7Citj
b25zdGV4cHIgdWludDhfdCBGQ0MgPSA0OworY29uc3RleHByIHVpbnQ4X3QgQlRfNDcwXzdfQkcg
PSA1OworY29uc3RleHByIHVpbnQ4X3QgQlRfNjAxXzcgPSA2OworY29uc3RleHByIHVpbnQ4X3Qg
U01QVEVfU1RfMjQwID0gNzsKK2NvbnN0ZXhwciB1aW50OF90IFlDZ0NvID0gODsKK2NvbnN0ZXhw
ciB1aW50OF90IEJUXzIwMjBfTm9uY29uc3RhbnRfTHVtaW5hbmNlID0gOTsKK2NvbnN0ZXhwciB1
aW50OF90IEJUXzIwMjBfQ29uc3RhbnRfTHVtaW5hbmNlID0gMTA7Citjb25zdGV4cHIgdWludDhf
dCBTTVBURV9TVF8yMDg1ID0gMTE7Citjb25zdGV4cHIgdWludDhfdCBDaHJvbWFjaXR5X0NvbnN0
YW50X0x1bWluYW5jZSA9IDEyOworY29uc3RleHByIHVpbnQ4X3QgQ2hyb21hY2l0eV9Ob25jb25z
dGFudF9MdW1pbmFuY2UgPSAxMzsKK2NvbnN0ZXhwciB1aW50OF90IEJUXzIxMDBfSUNDID0gMTQ7
Cit9CisKIHN0cnVjdCBWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCB7CiAgICAgU3RyaW5nIGNv
ZGVjTmFtZTsKICAgICB1aW50OF90IHByb2ZpbGUgeyAwIH07CkBAIC02Niw5ICsxMjAsOSBAQCBz
dHJ1Y3QgVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQgewogICAgIHVpbnQ4X3QgYml0RGVwdGgg
eyA4IH07CiAgICAgdWludDhfdCBjaHJvbWFTdWJzYW1wbGluZyB7IFZQQ29uZmlndXJhdGlvbkNo
cm9tYVN1YnNhbXBsaW5nOjpTdWJzYW1wbGluZ180MjBfQ29sb2NhdGVkIH07CiAgICAgdWludDhf
dCB2aWRlb0Z1bGxSYW5nZUZsYWcgeyBWUENvbmZpZ3VyYXRpb25SYW5nZTo6VmlkZW9SYW5nZSB9
OwotICAgIHVpbnQ4X3QgY29sb3JQcmltYXJpZXMgeyAxIH07Ci0gICAgdWludDhfdCB0cmFuc2Zl
ckNoYXJhY3RlcmlzdGljcyB7IDEgfTsKLSAgICB1aW50OF90IG1hdHJpeENvZWZmaWNpZW50cyB7
IDEgfTsKKyAgICB1aW50OF90IGNvbG9yUHJpbWFyaWVzIHsgVlBDb25maWd1cmF0aW9uQ29sb3JQ
cmltYXJpZXM6OkJUXzcwOV82IH07CisgICAgdWludDhfdCB0cmFuc2ZlckNoYXJhY3RlcmlzdGlj
cyB7IFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpCVF83MDlfNiB9Owor
ICAgIHVpbnQ4X3QgbWF0cml4Q29lZmZpY2llbnRzIHsgVlBDb25maWd1cmF0aW9uTWF0cml4Q29l
ZmZpY2llbnRzOjpCVF83MDlfNiB9OwogfTsKIAogV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8VlBD
b2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQ+IHBhcnNlVlBDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmll
dyBjb2RlY1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvVmlkZW9UcmFja1ByaXZhdGUuaAppbmRleCA3MThkODBlMzQ1MmM0N2ZlZWY0MjY4ZjI5ZTNh
MmU4N2JiNGRjYWQzLi4wYzQxM2MyZGRmNWQ5ZGEyYTE1YjExMzVjMDhlNTEwODUyYjgwMmM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQ
cml2YXRlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoVklERU8pCiAKICNpbmNsdWRl
ICJUcmFja1ByaXZhdGVCYXNlLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNDgsNiArNDksOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fc2Vs
ZWN0ZWQgPSBzZWxlY3RlZDsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9j
bGllbnQtPnNlbGVjdGVkQ2hhbmdlZChtX3NlbGVjdGVkKTsKKyAgICAgICAgaWYgKG1fc2VsZWN0
ZWRDaGFuZ2VkQ2FsbGJhY2spCisgICAgICAgICAgICBtX3NlbGVjdGVkQ2hhbmdlZENhbGxiYWNr
KCp0aGlzLCBtX3NlbGVjdGVkKTsKICAgICB9CiAgICAgdmlydHVhbCBib29sIHNlbGVjdGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9zZWxlY3RlZDsgfQogCkBAIC01OCwxMiArNjEsMTcgQEAgcHVibGlj
OgogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJW
aWRlb1RyYWNrUHJpdmF0ZSI7IH0KICNlbmRpZgogCisgICAgdXNpbmcgU2VsZWN0ZWRDaGFuZ2Vk
Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFZpZGVvVHJhY2tQcml2YXRlJiwgYm9vbCBzZWxlY3Rl
ZCk+OworICAgIHZvaWQgc2V0U2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2soU2VsZWN0ZWRDaGFuZ2Vk
Q2FsbGJhY2smJiBjYWxsYmFjaykgeyBtX3NlbGVjdGVkQ2hhbmdlZENhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayk7IH0KKworCiBwcm90ZWN0ZWQ6CiAgICAgVmlkZW9UcmFja1ByaXZhdGUoKSA9
IGRlZmF1bHQ7CiAKIHByaXZhdGU6CiAgICAgVmlkZW9UcmFja1ByaXZhdGVDbGllbnQqIG1fY2xp
ZW50IHsgbnVsbHB0ciB9OwogICAgIGJvb2wgbV9zZWxlY3RlZCB7IGZhbHNlIH07CisgICAgU2Vs
ZWN0ZWRDaGFuZ2VkQ2FsbGJhY2sgbV9zZWxlY3RlZENoYW5nZWRDYWxsYmFjazsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcAppbmRleCBjMWNi
MWE0ZDM1NjEyNWQ5NDdkZWZmYzI3ZjU5ZmNhMGM5YjQxODQxLi5iYzEzOTc3OTdiYWRhOGE0NzU5
YmY1MmY5YTU0NjNiMmQ2NDFkNzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwCkBAIC0z
Myw5ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKEFW
QXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCitB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6QXVkaW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaykKICAgICA6IG1faW1wbChtYWtlVW5p
cXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKLSAgICAsIG1fcGFyZW50KHBh
cmVudCkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KQEAgLTY3LDcgKzY2
LDYgQEAgdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0RW5hYmxl
ZChib29sIGVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIEF1ZGlvVHJhY2tQcml2YXRl
QVZGOjpzZXRFbmFibGVkKGVuYWJsZWQpOwotICAgIG1fcGFyZW50LT50cmFja0RpZENoYW5nZUVu
YWJsZWQodGhpcyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IDliYzRmMjZj
MDczNDlmMTc3NmY2MGJlMGRkMWMyYWJjZDdiMzdkNmIuLjE0NTZjMDE2YmFlMDNiODc4YjUwYmY1
OTkyNGZiNGQ5ZjM1MzAxOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMzksOSArMzks
OSBAQCBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzsKIGNsYXNzIEF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIGZpbmFsIDogcHVibGljIEF1ZGlvVHJhY2tQcml2YXRl
QVZGIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQykKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrICp0cmFjaywgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKKyAgICBzdGF0aWMgUmVmPEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrICp0cmFjaykKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2spKTsKICAgICB9CiAKICAgICB2
b2lkIHNldEVuYWJsZWQoYm9vbCkgZmluYWw7CkBAIC01MiwxMiArNTIsMTEgQEAgcHVibGljOgog
ICAgIGludCB0cmFja0lEKCkgeyByZXR1cm4gbV90cmFja0lEOyB9CiAKIHByaXZhdGU6Ci0gICAg
ZXhwbGljaXQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNr
KiwgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCk7CisgICAgZXhwbGljaXQgQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKik7CiAgICAgCiAg
ICAgdm9pZCByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPiBtX2ltcGw7Ci0gICAgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMqIG1fcGFyZW50OwogICAgIGludCBtX3RyYWNrSUQ7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
Lm1tCmluZGV4IDI2NGM3NjRkYzQ0NmY4NThlZTc1MmFjYWM5YTk0ZDI0ZTU0OWU4ZDAuLmViNzgz
ZjhhNjVlNjVmODA1M2E0OTI5NjM1MmZiMzBjZWY4NjU4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNv
bnRlbnRLZXlTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCkBAIC0y
NTQsNyArMjU0LDcgQEAgYm9vbCBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6dXBkYXRl
KFVpbnQ4QXJyYXkqIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JgogICAgICAgICAvLyBkYXRhLgog
ICAgICAgICBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IHByb3RlY3RlZFNvdXJj
ZUJ1ZmZlcjsKICAgICAgICAgZm9yIChhdXRvJiBzb3VyY2VCdWZmZXIgOiBtX3NvdXJjZUJ1ZmZl
cnMpIHsKLSAgICAgICAgICAgIGlmIChzb3VyY2VCdWZmZXItPnByb3RlY3RlZFRyYWNrSUQoKSAh
PSAtMSkgeworICAgICAgICAgICAgaWYgKHNvdXJjZUJ1ZmZlci0+cHJvdGVjdGVkVHJhY2tJRCgp
ICE9IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAgICAgcHJvdGVjdGVkU291cmNlQnVmZmVyID0g
c291cmNlQnVmZmVyOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0K
aW5kZXggODk2YTI0NTIyYjhjNjJmYzM1MjRjMzQzNzg4ZTQzMzZkMGJkZWZmYS4uMjQ0NjEyYTVj
MWUzNjhjYmVkY2JmNzAwNDg1M2FkMGYzNTBjYjdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFt
U2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCkBAIC0yMDgsNyArMjA4LDcg
QEAgYm9vbCBDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjp1cGRhdGUoVWludDhBcnJheSoga2V5
LCBSZWZQdHI8VWludDhBcnJheT4mIG5leHQKIAogICAgIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQz4gcHJvdGVjdGVkU291cmNlQnVmZmVyOwogICAgIGZvciAoYXV0byYgc291cmNl
QnVmZmVyIDogbV9zb3VyY2VCdWZmZXJzKSB7Ci0gICAgICAgIGlmIChzb3VyY2VCdWZmZXItPnBy
b3RlY3RlZFRyYWNrSUQoKSAhPSAtMSkgeworICAgICAgICBpZiAoc291cmNlQnVmZmVyLT5wcm90
ZWN0ZWRUcmFja0lEKCkgIT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIHByb3RlY3RlZFNvdXJj
ZUJ1ZmZlciA9IHNvdXJjZUJ1ZmZlcjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggNjY4OTkxMDFlMWZjNTg0MDc3NzdiNjlkNjM5
MTkxNWZkOWFkZGQyMS4uOGI5NDE1MDdjMDM4ODFjMDIxNmI0ZTc5MmUzOWRiMjZlMzU3ZmRiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMjUzLDIyICsyNTMsNyBAQCBNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
c3VwcG9ydHNUeXBlKGNvbgogICAgIGlmICghcGFyYW1ldGVycy5pc01lZGlhU291cmNlKQogICAg
ICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAK
LSAgICBTdHJpbmcgZXh0ZW5kZWRUeXBlID0gcGFyYW1ldGVycy50eXBlLnJhdygpOwotICAgIFN0
cmluZyBvdXRwdXRDb2RlY3MgPSBwYXJhbWV0ZXJzLnR5cGUucGFyYW1ldGVyKENvbnRlbnRUeXBl
Ojpjb2RlY3NQYXJhbWV0ZXIoKSk7Ci0gICAgaWYgKCFvdXRwdXRDb2RlY3MuaXNFbXB0eSgpICYm
IFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihvdXRwdXRNSU1FQ29kZWNQYXJhbWV0ZXJGb3JJbnB1dE1JTUVDb2RlY1BhcmFtZXRl
cjopXSkgewotICAgICAgICBvdXRwdXRDb2RlY3MgPSBbUEFMOjpnZXRBVlN0cmVhbURhdGFQYXJz
ZXJDbGFzcygpIG91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFyYW1l
dGVyOm91dHB1dENvZGVjc107Ci0gICAgICAgIGV4dGVuZGVkVHlwZSA9IG1ha2VTdHJpbmcocGFy
YW1ldGVycy50eXBlLmNvbnRhaW5lclR5cGUoKSwgIjsgY29kZWNzPVwiIiwgb3V0cHV0Q29kZWNz
LCAiXCIiKTsKLSAgICB9Ci0KLSAgICBhdXRvIHN1cHBvcnRlZCA9IE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwotICAgIGF1dG8mIHN0cmVhbURhdGFQYXJzZXJDYWNo
ZSA9IEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpOwotICAgIGlm
IChzdHJlYW1EYXRhUGFyc2VyQ2FjaGUuaXNBdmFpbGFibGUoKSkKLSAgICAgICAgc3VwcG9ydGVk
ID0gc3RyZWFtRGF0YVBhcnNlckNhY2hlLmNhbkRlY29kZVR5cGUoZXh0ZW5kZWRUeXBlKTsKLSAg
ICBlbHNlIHsKLSAgICAgICAgYXV0byYgYXNzZXRDYWNoZSA9IEFWQXNzZXRNSU1FVHlwZUNhY2hl
OjpzaW5nbGV0b24oKTsKLSAgICAgICAgaWYgKGFzc2V0Q2FjaGUuaXNBdmFpbGFibGUoKSkKLSAg
ICAgICAgICAgIHN1cHBvcnRlZCA9IGFzc2V0Q2FjaGUuY2FuRGVjb2RlVHlwZShleHRlbmRlZFR5
cGUpOwotICAgIH0KKyAgICBhdXRvIHN1cHBvcnRlZCA9IFNvdXJjZUJ1ZmZlclBhcnNlcjo6aXND
b250ZW50VHlwZVN1cHBvcnRlZChwYXJhbWV0ZXJzLnR5cGUpOwogCiAgICAgaWYgKHN1cHBvcnRl
ZCAhPSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZCkKICAgICAgICAgcmV0
dXJuIHN1cHBvcnRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpD
LmgKaW5kZXggMzM0YzA2MTdhNWZhMjA2ZTY4ZmFmMGZlMGM5YjY5MDJkNzI4YmMyYy4uZDlmYjFm
OTFiZjlkY2ViMjFhY2JkNTNlYzMxNWUzNTgyYjA2M2MyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZP
YmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBNZWRpYVNhbXBsZUFWRk9iakMgOiBwdWJsaWMgTWVkaWFTYW1wbGUg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGUoQ01T
YW1wbGVCdWZmZXJSZWYgc2FtcGxlLCBpbnQgdHJhY2tJRCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBNZWRpYVNhbXBsZUFWRk9iakMoc2FtcGxlLCB0cmFja0lEKSk7IH0KKyAgICBzdGF0aWMgUmVm
PE1lZGlhU2FtcGxlQVZGT2JqQz4gY3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwgdWlu
dDY0X3QgdHJhY2tJRCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNhbXBsZUFWRk9iakMo
c2FtcGxlLCB0cmFja0lEKSk7IH0KICAgICBzdGF0aWMgUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4g
Y3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwgQXRvbVN0cmluZyB0cmFja0lEKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2FtcGxlQVZGT2JqQyhzYW1wbGUsIHRyYWNrSUQpKTsg
fQogICAgIHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGUoQ01TYW1wbGVCdWZm
ZXJSZWYgc2FtcGxlLCBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uID0gVmlkZW9Sb3RhdGlvbjo6Tm9u
ZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2Ft
cGxlQVZGT2JqQyhzYW1wbGUsIHJvdGF0aW9uLCBtaXJyb3JlZCkpOyB9CiAgICAgc3RhdGljIFJl
ZlB0cjxNZWRpYVNhbXBsZUFWRk9iakM+IGNyZWF0ZUltYWdlU2FtcGxlKFZlY3Rvcjx1aW50OF90
PiYmLCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KTsKQEAgLTg2LDcgKzg2LDcgQEAg
cHJvdGVjdGVkOgogICAgICAgICAsIG1faWQodHJhY2tJRCkKICAgICB7CiAgICAgfQotICAgIE1l
ZGlhU2FtcGxlQVZGT2JqQyhDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIGludCB0cmFja0lEKQor
ICAgIE1lZGlhU2FtcGxlQVZGT2JqQyhDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIHVpbnQ2NF90
IHRyYWNrSUQpCiAgICAgICAgIDogbV9zYW1wbGUoc2FtcGxlKQogICAgICAgICAsIG1faWQoQXRv
bVN0cmluZzo6bnVtYmVyKHRyYWNrSUQpKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDgyNzhlMDZhNTEyMjk3
YzdlZDJiMjY5MGZmZTBjYjQyODg4NWZiZjYuLjI5MzIyNzkzOTEwZWE1N2YxODFjOTIwMTdkM2Nm
MzY1Nzc1MjEwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQy5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCAiTG9nZ2luZy5o
IgogI2ltcG9ydCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgiCiAjaW1w
b3J0ICJNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaCIKKyNpbXBvcnQgIlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMuaCIKICNpbXBvcnQgIlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgiCiAj
aW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9BbGdvcml0aG1zLmg+CkBAIC04
NSw3ICs4NiwxMSBAQCBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBNZWRpYVNvdXJjZVBy
aXZhdGVBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgQwogICAgIGlmIChNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKSA9PSBN
ZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZCkKICAgICAgICAgcmV0dXJu
IE5vdFN1cHBvcnRlZDsKIAotICAgIGF1dG8gbmV3U291cmNlQnVmZmVyID0gU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSh0aGlzKTsKKyAgICBhdXRvIHBhcnNlciA9IFNvdXJjZUJ1
ZmZlclBhcnNlcjo6Y3JlYXRlKGNvbnRlbnRUeXBlKTsKKyAgICBpZiAoIXBhcnNlcikKKyAgICAg
ICAgcmV0dXJuIE5vdFN1cHBvcnRlZDsKKworICAgIGF1dG8gbmV3U291cmNlQnVmZmVyID0gU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSh0aGlzLCBwYXJzZXIucmVsZWFzZU5vbk51
bGwoKSk7CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBuZXdTb3VyY2VCdWZmZXIt
PnNldENETUluc3RhbmNlKG1fY2RtSW5zdGFuY2UuZ2V0KCkpOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGY4YWRiZmRjODAzMzY0ZDYzNWNmM2JjOTk4MzRmNTBjNzMyZTY2OQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5jbHVkZSAi
U291cmNlQnVmZmVyUGFyc2VyLmgiCisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgorI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK09CSkNfQ0xBU1MgQVZBc3NldDsKK09CSkNfQ0xBU1MgQVZT
dHJlYW1EYXRhUGFyc2VyOworT0JKQ19DTEFTUyBOU0RhdGE7CitPQkpDX0NMQVNTIE5TRXJyb3I7
CitPQkpDX0NMQVNTIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyOworCit0eXBlZGVmIHN0
cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQyBmaW5hbCA6IHB1
YmxpYyBTb3VyY2VCdWZmZXJQYXJzZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDPiB7CitwdWJsaWM6CisgICAgc3RhdGljIE1lZGlhUGxheWVyRW51bXM6
OlN1cHBvcnRzVHlwZSBpc0NvbnRlbnRUeXBlU3VwcG9ydGVkKGNvbnN0IENvbnRlbnRUeXBlJik7
CisKKyAgICBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCk7CisgICAgdmlydHVhbCB+U291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQygpOworCisgICAgQVZTdHJlYW1EYXRhUGFyc2VyKiBwYXJzZXIo
KSBjb25zdCB7IHJldHVybiBtX3BhcnNlci5nZXQoKTsgfQorCisgICAgVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gVHlwZTo6QVZGT2JqQzsgfQorICAgIHZvaWQgYXBwZW5kRGF0YShWZWN0b3I8
dW5zaWduZWQgY2hhcj4mJiwgQXBwZW5kRmxhZ3MgPSBBcHBlbmRGbGFnczo6Tm9uZSkgZmluYWw7
CisgICAgdm9pZCBmbHVzaFBlbmRpbmdNZWRpYURhdGEoKSBmaW5hbDsKKyAgICB2b2lkIHNldFNo
b3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGJvb2wsIHVpbnQ2NF90KSBmaW5hbDsKKyAg
ICBib29sIHNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lEKHVpbnQ2NF90KSBmaW5hbDsK
KyAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKKworICAgIHZvaWQgZGlkUGFyc2VT
dHJlYW1EYXRhQXNBc3NldChBVkFzc2V0Kik7CisgICAgdm9pZCBkaWRGYWlsVG9QYXJzZVN0cmVh
bURhdGFXaXRoRXJyb3IoTlNFcnJvciopOworICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZv
clRyYWNrSUQodWludDY0X3QgdHJhY2tJRCwgQ01TYW1wbGVCdWZmZXJSZWYsIGNvbnN0IFN0cmlu
ZyYgbWVkaWFUeXBlLCB1bnNpZ25lZCBmbGFncyk7CisgICAgdm9pZCB3aWxsUHJvdmlkZUNvbnRl
bnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCh1aW50NjRfdCB0cmFja0lE
KTsKKyAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0
YUZvclRyYWNrSUQoTlNEYXRhKiwgdWludDY0X3QgdHJhY2tJRCk7CisKK3ByaXZhdGU6CisgICAg
UmV0YWluUHRyPEFWU3RyZWFtRGF0YVBhcnNlcj4gbV9wYXJzZXI7CisgICAgUmV0YWluUHRyPFdl
YkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyPiBtX2RlbGVnYXRlOworICAgIGJvb2wgbV9kaXNj
YXJkU2FtcGxlc1VudGlsTmV4dEluaXRpYWxpemF0aW9uU2VnbWVudCB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX3BhcnNlclN0YXRlV2FzUmVzZXQgeyBmYWxzZSB9OworfTsKKworfQorCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMp
CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNl
ciYgcGFyc2VyKSB7IHJldHVybiBwYXJzZXIudHlwZSgpID09IFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clBhcnNlcjo6VHlwZTo6QVZGT2JqQzsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQor
CisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5MDVjZmVh
NTFiNzQ1Yzc4YzY5ZTU0MmEwNmYyMjNiN2Y4ZDk4MzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0wLDAgKzEsMzM5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgiCisKKyNp
ZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW1wb3J0ICJBVkFzc2V0TUlNRVR5cGVDYWNoZS5o
IgorI2ltcG9ydCAiQVZBc3NldFRyYWNrVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJBVlN0cmVhbURh
dGFQYXJzZXJNSU1FVHlwZUNhY2hlLmgiCisjaW1wb3J0ICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oIgorI2ltcG9ydCAiRm91ckNDLmgiCisjaW1wb3J0ICJJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGT2JqQy5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiTWVk
aWFEZXNjcmlwdGlvbi5oIgorI2ltcG9ydCAiTWVkaWFTYW1wbGUuaCIKKyNpbXBvcnQgIk1lZGlh
U2FtcGxlQVZGT2JqQy5oIgorI2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbXBvcnQgIlNo
YXJlZEJ1ZmZlci5oIgorI2ltcG9ydCAiVGltZVJhbmdlcy5oIgorI2ltcG9ydCAiVmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCIKKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkFz
c2V0VHJhY2suaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJyYXlJbmxpbmVzLmg+
CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHBhbC9hdmZvdW5kYXRpb24vTWVk
aWFUaW1lQVZGb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWRm91bmRhdGlv
blNQSS5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKworI2ltcG9ydCA8
cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0
aW9uU29mdExpbmsuaD4KKworI3ByYWdtYSBtYXJrIC0KKyNwcmFnbWEgbWFyayBXZWJBVlN0cmVh
bURhdGFQYXJzZXJMaXN0ZW5lcgorCitAaW50ZXJmYWNlIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxp
c3RlbmVyIDogTlNPYmplY3Q8QVZTdHJlYW1EYXRhUGFyc2VyT3V0cHV0SGFuZGxpbmc+IHsKKyAg
ICBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKiBfcGFyZW50OworICAgIEFWU3Ry
ZWFtRGF0YVBhcnNlciogX3BhcnNlcjsKK30KK0Bwcm9wZXJ0eSAoYXNzaWduKSBXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKiBwYXJlbnQ7CistIChpZClpbml0V2l0aFBhcnNlcjoo
QVZTdHJlYW1EYXRhUGFyc2VyKilwYXJzZXIgcGFyZW50OihXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDKilwYXJlbnQ7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJBVlN0cmVh
bURhdGFQYXJzZXJMaXN0ZW5lcgorLSAoaWQpaW5pdFdpdGhQYXJzZXI6KEFWU3RyZWFtRGF0YVBh
cnNlciopcGFyc2VyIHBhcmVudDooV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQyop
cGFyZW50Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAg
ICAgIHJldHVybiBuaWw7CisKKyAgICBBU1NFUlQocGFyZW50KTsKKyAgICBfcGFyZW50ID0gcGFy
ZW50OworICAgIF9wYXJzZXIgPSBwYXJzZXI7CisgICAgW19wYXJzZXIgc2V0RGVsZWdhdGU6c2Vs
Zl07CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK0BzeW50aGVzaXplIHBhcmVudD1fcGFyZW50Owor
CistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbX3BhcnNlciBzZXREZWxlZ2F0ZTpuaWxdOworICAg
IFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZClpbnZhbGlkYXRlCit7CisgICAgW19wYXJz
ZXIgc2V0RGVsZWdhdGU6bmlsXTsKKyAgICBfcGFyc2VyID0gbnVsbHB0cjsKK30KKworLSAodm9p
ZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2Vy
IGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQ6KEFWQXNzZXQgKilhc3NldAoreworICAgIEFTU0VS
VF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsK
KyAgICBfcGFyZW50LT5kaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KGFzc2V0KTsKK30KKworLSAo
dm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFy
c2VyIGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQ6KEFWQXNzZXQgKilhc3NldCB3aXRoRGlzY29u
dGludWl0eTooQk9PTClkaXNjb250aW51aXR5Cit7CisgICAgVU5VU0VEX1BBUkFNKGRpc2NvbnRp
bnVpdHkpOworICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBh
cnNlciA9PSBfcGFyc2VyKTsKKyAgICBfcGFyZW50LT5kaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0
KGFzc2V0KTsKK30KKworLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJz
ZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcjoo
TlNFcnJvciAqKWVycm9yCit7CisgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBz
dHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOworICAgIF9wYXJlbnQtPmRpZEZhaWxUb1BhcnNl
U3RyZWFtRGF0YVdpdGhFcnJvcihlcnJvcik7Cit9CisKKy0gKHZvaWQpc3RyZWFtRGF0YVBhcnNl
cjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQcm92aWRlTWVkaWFE
YXRhOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGUgZm9yVHJhY2tJRDooQ01QZXJzaXN0ZW50VHJh
Y2tJRCl0cmFja0lEIG1lZGlhVHlwZTooTlNTdHJpbmcgKiluc01lZGlhVHlwZSBmbGFnczooQVZT
dHJlYW1EYXRhUGFyc2VyT3V0cHV0TWVkaWFEYXRhRmxhZ3MpZmxhZ3MKK3sKKyAgICBBU1NFUlRf
VU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7Cisg
ICAgX3BhcmVudC0+ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQodHJhY2tJRCwgc2FtcGxl
LCBuc01lZGlhVHlwZSwgZmxhZ3MpOworfQorCitBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19CRUdJTgorLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyV2lsbFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0
YVBhcnNlciBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQKK0FMTE9XX0RF
UFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAoreworICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFt
RGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKKyAgICBfcGFyZW50LT53
aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCh0
cmFja0lEKTsKK30KKworQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfQkVHSU4KKy0g
KHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBh
cnNlciBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGE6KE5TRGF0
YSAqKWluaXREYXRhIGZvclRyYWNrSUQ6KENNUGVyc2lzdGVudFRyYWNrSUQpdHJhY2tJRAorQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECit7CisgICAgQVNTRVJUX1VOVVNFRChz
dHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOworICAgIF9wYXJl
bnQtPmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNr
SUQoaW5pdERhdGEsIHRyYWNrSUQpOworfQorQGVuZAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
KyNwcmFnbWEgbWFyayAtCisjcHJhZ21hIG1hcmsgTWVkaWFEZXNjcmlwdGlvbkFWRk9iakMKKwor
Y2xhc3MgTWVkaWFEZXNjcmlwdGlvbkFWRk9iakMgZmluYWwgOiBwdWJsaWMgTWVkaWFEZXNjcmlw
dGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxNZWRpYURlc2NyaXB0aW9uQVZGT2JqQz4g
Y3JlYXRlKEFWQXNzZXRUcmFjayogdHJhY2spIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFE
ZXNjcmlwdGlvbkFWRk9iakModHJhY2spKTsgfQorICAgIHZpcnR1YWwgfk1lZGlhRGVzY3JpcHRp
b25BVkZPYmpDKCkgeyB9CisKKyAgICBib29sIGlzVmlkZW8oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2lzVmlkZW87IH0KKyAgICBib29sIGlzQXVkaW8oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2lzQXVkaW87IH0KKyAgICBib29sIGlzVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1faXNUZXh0OyB9CisgICAgQXRvbVN0cmluZyBjb2RlYygpIGNvbnN0IG92ZXJyaWRlCisg
ICAgeworICAgICAgICAvLyBBdG9tU3RyaW5ncyBjYW4gb25seSBiZSBkZXN0cm95ZWQgZnJvbSB0
aGUgc2FtZSB0aHJlYWQgdGhleSdyZQorICAgICAgICAvLyBjcmVhdGVkIGluLiBTaW5jZSB0aGlz
IHN0cnVjdHVyZSBpcyBjcmVhdGVkIGluIGEgcGFyc2VyIHRocmVhZAorICAgICAgICAvLyBvbmx5
IGNyZWF0ZSB0aGUgQXRvbVN0cmluZyB0aGUgZmlyc3QgdGltZSB0aGlzIGZ1bmN0aW9uIGlzIGFj
Y2Vzc2VkCisgICAgICAgIC8vIHdoaWNoIGlzIHByZXN1bWFibHkgb24gdGhlIG1haW4gdGhyZWFk
LgorICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBpZiAoIW1fY29kZWMp
CisgICAgICAgICAgICBtX2NvZGVjID0gQXRvbVN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oJm1fb3JpZ2luYWxDb2RlYyksIDQpOworICAgICAgICByZXR1cm4gKm1fY29kZWM7
CisgICAgfQorCitwcml2YXRlOgorICAgIE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDKEFWQXNzZXRU
cmFjayogdHJhY2spCisgICAgICAgIDogbV9pc1ZpZGVvKFt0cmFjayBoYXNNZWRpYUNoYXJhY3Rl
cmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbF0pCisgICAgICAgICwgbV9pc0F1ZGlv
KFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGli
bGVdKQorICAgICAgICAsIG1faXNUZXh0KFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFW
TWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGVdKQorICAgIHsKKyAgICAgICAgTlNBcnJheSogZm9y
bWF0RGVzY3JpcHRpb25zID0gW3RyYWNrIGZvcm1hdERlc2NyaXB0aW9uc107CisgICAgICAgIENN
Rm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzY3JpcHRpb24gPSBbZm9ybWF0RGVzY3JpcHRpb25zIGNv
dW50XSA/IChfX2JyaWRnZSBDTUZvcm1hdERlc2NyaXB0aW9uUmVmKVtmb3JtYXREZXNjcmlwdGlv
bnMgb2JqZWN0QXRJbmRleDowXSA6IDA7CisgICAgICAgIGlmIChkZXNjcmlwdGlvbikgeworICAg
ICAgICAgICAgbV9vcmlnaW5hbENvZGVjID0gUEFMOjpzb2Z0TGlua19Db3JlTWVkaWFfQ01Gb3Jt
YXREZXNjcmlwdGlvbkdldE1lZGlhU3ViVHlwZShkZXNjcmlwdGlvbik7CisgICAgICAgICAgICBD
RlN0cmluZ1JlZiBvcmlnaW5hbEZvcm1hdEtleSA9IFBBTDo6Y2FuTG9hZF9Db3JlTWVkaWFfa0NN
Rm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fUHJvdGVjdGVkQ29udGVudE9yaWdpbmFsRm9ybWF0
KCkgPyBQQUw6OmdldF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fUHJv
dGVjdGVkQ29udGVudE9yaWdpbmFsRm9ybWF0KCkgOiBDRlNUUigiQ29tbW9uRW5jcnlwdGlvbk9y
aWdpbmFsRm9ybWF0Iik7CisgICAgICAgICAgICBDRlR5cGVSZWYgb3JpZ2luYWxGb3JtYXQgPSBD
TUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9uKGRlc2NyaXB0aW9uLCBvcmlnaW5hbEZvcm1h
dEtleSk7CisgICAgICAgICAgICBpZiAob3JpZ2luYWxGb3JtYXQgJiYgQ0ZHZXRUeXBlSUQob3Jp
Z2luYWxGb3JtYXQpID09IENGTnVtYmVyR2V0VHlwZUlEKCkpCisgICAgICAgICAgICAgICAgQ0ZO
dW1iZXJHZXRWYWx1ZSgoQ0ZOdW1iZXJSZWYpb3JpZ2luYWxGb3JtYXQsIGtDRk51bWJlclNJbnQz
MlR5cGUsICZtX29yaWdpbmFsQ29kZWMpOworICAgICAgICB9CisgICAgfQorCisgICAgRm91ckNo
YXJDb2RlIG1fb3JpZ2luYWxDb2RlYzsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPEF0b21TdHJpbmc+
IG1fY29kZWM7CisgICAgYm9vbCBtX2lzVmlkZW87CisgICAgYm9vbCBtX2lzQXVkaW87CisgICAg
Ym9vbCBtX2lzVGV4dDsKK307CisKKyNwcmFnbWEgbWFyayAtCisjcHJhZ21hIG1hcmsgU291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQworCitNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRlZChjb25zdCBDb250
ZW50VHlwZSYgdHlwZSkKK3sKKyAgICBTdHJpbmcgZXh0ZW5kZWRUeXBlID0gdHlwZS5yYXcoKTsK
KyAgICBTdHJpbmcgb3V0cHV0Q29kZWNzID0gdHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNv
ZGVjc1BhcmFtZXRlcigpKTsKKyAgICBpZiAoIW91dHB1dENvZGVjcy5pc0VtcHR5KCkgJiYgW1BB
TDo6Z2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKG91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFyYW1ldGVyOild
KSB7CisgICAgICAgIG91dHB1dENvZGVjcyA9IFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNs
YXNzKCkgb3V0cHV0TUlNRUNvZGVjUGFyYW1ldGVyRm9ySW5wdXRNSU1FQ29kZWNQYXJhbWV0ZXI6
b3V0cHV0Q29kZWNzXTsKKyAgICAgICAgZXh0ZW5kZWRUeXBlID0gbWFrZVN0cmluZyh0eXBlLmNv
bnRhaW5lclR5cGUoKSwgIjsgY29kZWNzPVwiIiwgb3V0cHV0Q29kZWNzLCAiXCIiKTsKKyAgICB9
CisKKyAgICBhdXRvJiBzdHJlYW1EYXRhUGFyc2VyQ2FjaGUgPSBBVlN0cmVhbURhdGFQYXJzZXJN
SU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKTsKKyAgICBpZiAoc3RyZWFtRGF0YVBhcnNlckNhY2hl
LmlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBzdHJlYW1EYXRhUGFyc2VyQ2FjaGUuY2Fu
RGVjb2RlVHlwZShleHRlbmRlZFR5cGUpOworCisgICAgYXV0byYgYXNzZXRDYWNoZSA9IEFWQXNz
ZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKTsKKyAgICBpZiAoYXNzZXRDYWNoZS5pc0F2YWls
YWJsZSgpKQorICAgICAgICByZXR1cm4gYXNzZXRDYWNoZS5jYW5EZWNvZGVUeXBlKGV4dGVuZGVk
VHlwZSk7CisKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc05v
dFN1cHBvcnRlZDsKK30KKworU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6U291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQygpCisgICAgOiBtX3BhcnNlcihhZG9wdE5TKFtQQUw6OmFsbG9jQVZTdHJl
YW1EYXRhUGFyc2VySW5zdGFuY2UoKSBpbml0XSkpCisgICAgLCBtX2RlbGVnYXRlKGFkb3B0TlMo
W1tXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJzZXI6bV9w
YXJzZXIuZ2V0KCkgcGFyZW50OnRoaXNdKSkKK3sKK30KKworU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6flNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKQoreworICAgIG1fZGVsZWdhdGUuZ2V0
KCkucGFyZW50ID0gbnVsbHB0cjsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
OjphcHBlbmREYXRhKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRhdGEsIEFwcGVuZEZsYWdzIGZs
YWdzKQoreworICAgIGF1dG8gc2hhcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpOworICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkRGF0YS0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgaWYgKG1fcGFyc2VyU3RhdGVXYXNSZXNldCB8fCBmbGFncyA9PSBBcHBlbmRGbGFnczo6
RGlzY29udGludWl0eSkKKyAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0cmVhbURhdGE6bnNEYXRh
LmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURhdGFQYXJzZXJTdHJlYW1EYXRhRGlzY29udGludWl0
eV07CisgICAgZWxzZQorICAgICAgICBbbV9wYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEu
Z2V0KCldOworICAgIG1fcGFyc2VyU3RhdGVXYXNSZXNldCA9IGZhbHNlOworfQorCit2b2lkIFNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmZsdXNoUGVuZGluZ01lZGlhRGF0YSgpCit7CisgICAg
W21fcGFyc2VyIHByb3ZpZGVQZW5kaW5nTWVkaWFEYXRhXTsKK30KKwordm9pZCBTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDOjpzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChib29s
IHNob3VsZCwgdWludDY0X3QgdHJhY2tJRCkKK3sKKyAgICBbbV9wYXJzZXIgc2V0U2hvdWxkUHJv
dmlkZU1lZGlhRGF0YTpzaG91bGQgZm9yVHJhY2tJRDp0cmFja0lEXTsKK30KKworYm9vbCBTb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpzaG91bGRQcm92aWRlTWVkaWFkYXRhRm9yVHJhY2tJRCh1
aW50NjRfdCB0cmFja0lEKQoreworICAgIHJldHVybiBbbV9wYXJzZXIgc2hvdWxkUHJvdmlkZU1l
ZGlhRGF0YUZvclRyYWNrSUQ6dHJhY2tJRF07Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQzo6cmVzZXRQYXJzZXJTdGF0ZSgpCit7CisgICAgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0
ID0gdHJ1ZTsKKyAgICBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdt
ZW50ID0gdHJ1ZTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQYXJz
ZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQoreworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYXNzZXQgPSByZXRhaW5QdHIo
YXNzZXQpXSB7CisgICAgICAgIG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlv
blNlZ21lbnQgPSBmYWxzZTsKKworICAgICAgICBpZiAoIW1fZGlkUGFyc2VJbml0aWFsaXphdGlv
bkRhdGFDYWxsYmFjaykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBJbml0aWFsaXph
dGlvblNlZ21lbnQgc2VnbWVudDsKKworICAgICAgICBpZiAoW2Fzc2V0IHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Iob3ZlcmFsbER1cmF0aW9uSGludCldKQorICAgICAgICAgICAgc2VnbWVu
dC5kdXJhdGlvbiA9IFBBTDo6dG9NZWRpYVRpbWUoW2Fzc2V0IG92ZXJhbGxEdXJhdGlvbkhpbnRd
KTsKKworICAgICAgICBpZiAoc2VnbWVudC5kdXJhdGlvbi5pc0ludmFsaWQoKSB8fCBzZWdtZW50
LmR1cmF0aW9uID09IE1lZGlhVGltZTo6emVyb1RpbWUoKSkKKyAgICAgICAgICAgIHNlZ21lbnQu
ZHVyYXRpb24gPSBQQUw6OnRvTWVkaWFUaW1lKFthc3NldCBkdXJhdGlvbl0pOworCisgICAgICAg
IGZvciAoQVZBc3NldFRyYWNrKiB0cmFjayBpbiBbYXNzZXQgdHJhY2tzXSkgeworICAgICAgICAg
ICAgaWYgKFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3Rp
Y0xlZ2libGVdKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUUoMTI1MTYxKTogSGFuZGxlIGlu
LWJhbmQgdGV4dCB0cmFja3MuCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1l
ZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWxdKSB7CisgICAgICAgICAgICAgICAgU291cmNlQnVmZmVy
UHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OjpWaWRlb1RyYWNrSW5mb3JtYXRp
b24gaW5mbzsKKyAgICAgICAgICAgICAgICBhdXRvIHZpZGVvVHJhY2sgPSBWaWRlb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKKyAgICAgICAgICAgICAgICBp
bmZvLnRyYWNrID0gdmlkZW9UcmFjay5jb3B5UmVmKCk7CisgICAgICAgICAgICAgICAgaW5mby5k
ZXNjcmlwdGlvbiA9IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDOjpjcmVhdGUodHJhY2spOworICAg
ICAgICAgICAgICAgIHNlZ21lbnQudmlkZW9UcmFja3MuYXBwZW5kKGluZm8pOworICAgICAgICAg
ICAgfSBlbHNlIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFj
dGVyaXN0aWNBdWRpYmxlXSkgeworICAgICAgICAgICAgICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDo6QXVkaW9UcmFja0luZm9ybWF0aW9uIGluZm87
CisgICAgICAgICAgICAgICAgYXV0byBhdWRpb1RyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjayk7CisgICAgICAgICAgICAgICAgaW5mby50cmFj
ayA9IGF1ZGlvVHJhY2suY29weVJlZigpOworICAgICAgICAgICAgICAgIGluZm8uZGVzY3JpcHRp
b24gPSBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKKyAgICAgICAgICAg
ICAgICBzZWdtZW50LmF1ZGlvVHJhY2tzLmFwcGVuZChpbmZvKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gRklYTUUoMTI1MTYxKSAgICA6IEFkZCBUZXh0VHJhY2sgc3VwcG9ydAor
ICAgICAgICB9CisKKyAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNr
KFdURk1vdmUoc2VnbWVudCkpOworICAgIH0pOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakM6OmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcihOU0Vycm9yKiBlcnJv
cikKK3sKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigq
dGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKV0geworICAgICAgICBpZiAobV9kaWRFbmNv
dW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjaykKKyAgICAgICAgICAgIG1fZGlkRW5jb3Vu
dGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2soZXJyb3IuZ2V0KCkuY29kZSk7CisgICAgfSk7
Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0
YUZvclRyYWNrSUQodWludDY0X3QgdHJhY2tJRCwgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVm
ZmVyLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgdW5zaWduZWQgZmxhZ3MpCit7CisgICAgVU5V
U0VEX1BBUkFNKGZsYWdzKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBzdHJvbmdUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHNhbXBsZUJ1ZmZlciA9IHJldGFpblB0cihzYW1wbGVCdWZmZXIp
LCB0cmFja0lELCBtZWRpYVR5cGUgPSBtZWRpYVR5cGVdIHsKKyAgICAgICAgaWYgKCFtX2RpZFBy
b3ZpZGVNZWRpYURhdGFDYWxsYmFjaykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBp
ZiAobV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4dEluaXRpYWxpemF0aW9uU2VnbWVudCkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIG1lZGlhU2FtcGxlID0gTWVkaWFTYW1wbGVB
VkZPYmpDOjpjcmVhdGUoc2FtcGxlQnVmZmVyLmdldCgpLCB0cmFja0lEKTsKKworICAgICAgICBp
ZiAobWVkaWFTYW1wbGUtPmlzSG9tb2dlbmVvdXMoKSkgeworICAgICAgICAgICAgbV9kaWRQcm92
aWRlTWVkaWFEYXRhQ2FsbGJhY2soV1RGTW92ZShtZWRpYVNhbXBsZSksIHRyYWNrSUQsIG1lZGlh
VHlwZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGF1
dG8mIHNhbXBsZSA6IG1lZGlhU2FtcGxlLT5kaXZpZGVJbnRvSG9tb2dlbmVvdXNTYW1wbGVzKCkp
CisgICAgICAgICAgICBtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayhXVEZNb3ZlKHNhbXBs
ZSksIHRyYWNrSUQsIG1lZGlhVHlwZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9u
RGF0YUZvclRyYWNrSUQodWludDY0X3QgdHJhY2tJRCkKK3sKKyAgICBtX3dpbGxQcm92aWRlQ29u
dGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sodHJhY2tJ
RCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRl
bnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChOU0RhdGEqIG5zSW5pdERh
dGEsIHVpbnQ2NF90IHRyYWNrSUQpCit7CisgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6
OmNyZWF0ZShuc0luaXREYXRhLmxlbmd0aCk7CisgICAgW25zSW5pdERhdGEgZ2V0Qnl0ZXM6aW5p
dERhdGEtPmRhdGEoKSBsZW5ndGg6aW5pdERhdGEtPmxlbmd0aCgpXTsKKworICAgIG1fZGlkUHJv
dmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNr
KFdURk1vdmUoaW5pdERhdGEpLCB0cmFja0lEKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IGRmYTEzNGI0ZDY4ZmRiNzQ3MzQzNzhkOWY5ZGQzYmQ4
NDFmMzNkNjUuLmFmMTMxZWQxZmEwMjE5MGI5ODg2Y2U5NTBkM2U5ODY4MGM0MzFjNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
aApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYgVVNFKEFW
Rk9VTkRBVElPTikKIAorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlci5oIgogI2luY2x1ZGUg
IlNvdXJjZUJ1ZmZlclByaXZhdGUuaCIKICNpbmNsdWRlIDxkaXNwYXRjaC9ncm91cC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Cb3guaD4KQEAgLTM4LDE4ICszOSwxNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi9XVEZTZW1hcGhvcmUuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFk
cy9CaW5hcnlTZW1hcGhvcmUuaD4KIAotT0JKQ19DTEFTUyBBVkFzc2V0OwogT0JKQ19DTEFTUyBB
VlN0cmVhbURhdGFQYXJzZXI7CiBPQkpDX0NMQVNTIEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJl
cjsKIE9CSkNfQ0xBU1MgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7CiBPQkpDX0NMQVNTIE5T
RGF0YTsKIE9CSkNfQ0xBU1MgTlNFcnJvcjsKIE9CSkNfQ0xBU1MgTlNPYmplY3Q7Ci1PQkpDX0NM
QVNTIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyOwogT0JKQ19DTEFTUyBXZWJBVlNhbXBs
ZUJ1ZmZlckVycm9yTGlzdGVuZXI7CiAKIHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVm
ZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKQEAgLTg2LDM0ICs4NiwyNyBAQCBjbGFzcyBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQyBmaW5hbAogI2VuZGlmCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gY3JlYXRlKE1lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakMqKTsKKyAgICBzdGF0aWMgUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBj
cmVhdGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyosIFJlZjxTb3VyY2VCdWZmZXJQYXJzZXI+
JiYpOwogICAgIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKCk7CiAKICAgICB2
b2lkIGNsZWFyTWVkaWFTb3VyY2UoKSB7IG1fbWVkaWFTb3VyY2UgPSBudWxscHRyOyB9CiAKLSAg
ICAvLyBBVlN0cmVhbURhdGFQYXJzZXIgZGVsZWdhdGUgbWV0aG9kcwotICAgIHZvaWQgZGlkUGFy
c2VTdHJlYW1EYXRhQXNBc3NldChBVkFzc2V0Kik7Ci0gICAgdm9pZCBkaWRGYWlsVG9QYXJzZVN0
cmVhbURhdGFXaXRoRXJyb3IoTlNFcnJvciopOwotICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0
YUZvclRyYWNrSUQoaW50IHRyYWNrSUQsIENNU2FtcGxlQnVmZmVyUmVmLCBjb25zdCBTdHJpbmcm
IG1lZGlhVHlwZSwgdW5zaWduZWQgZmxhZ3MpOwotICAgIHZvaWQgZGlkUmVhY2hFbmRPZlRyYWNr
V2l0aFRyYWNrSUQoaW50IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKLSAgICB2
b2lkIHdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFj
a0lEKGludCB0cmFja0lEKTsKLSAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElu
aXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoTlNEYXRhKiwgaW50IHRyYWNrSUQsIEJveDxCaW5h
cnlTZW1hcGhvcmU+KTsKLQotICAgIGJvb2wgcHJvY2Vzc0NvZGVkRnJhbWUoaW50IHRyYWNrSUQs
IENNU2FtcGxlQnVmZmVyUmVmLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CisgICAgdm9pZCB3
aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCh1
aW50NjRfdCB0cmFja0lEKTsKKyAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElu
aXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoUmVmPFVpbnQ4QXJyYXk+JiYsIHVpbnQ2NF90IHRy
YWNrSUQsIEJveDxCaW5hcnlTZW1hcGhvcmU+KTsKIAogICAgIGJvb2wgaGFzVmlkZW8oKSBjb25z
dDsKICAgICBib29sIGhhc1NlbGVjdGVkVmlkZW8oKSBjb25zdDsKICAgICBib29sIGhhc0F1ZGlv
KCkgY29uc3Q7CiAKLSAgICB2b2lkIHRyYWNrRGlkQ2hhbmdlRW5hYmxlZChWaWRlb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQyopOwotICAgIHZvaWQgdHJhY2tEaWRDaGFuZ2VFbmFibGVk
KEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKik7CisgICAgdm9pZCB0cmFja0Rp
ZENoYW5nZVNlbGVjdGVkKFZpZGVvVHJhY2tQcml2YXRlJiwgYm9vbCBzZWxlY3RlZCk7CisgICAg
dm9pZCB0cmFja0RpZENoYW5nZUVuYWJsZWQoQXVkaW9UcmFja1ByaXZhdGUmLCBib29sIGVuYWJs
ZWQpOwogCiAgICAgdm9pZCB3aWxsU2VlaygpOwogICAgIE1lZGlhVGltZSBmYXN0U2Vla1RpbWVG
b3JNZWRpYVRpbWUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZVRo
cmVzaG9sZCwgY29uc3QgTWVkaWFUaW1lJiBwb3NpdGl2ZVRocmVzaG9sZCk7CiAgICAgRmxvYXRT
aXplIG5hdHVyYWxTaXplKCk7CiAKLSAgICBpbnQgcHJvdGVjdGVkVHJhY2tJRCgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJvdGVjdGVkVHJhY2tJRDsgfQotICAgIEFWU3RyZWFtRGF0YVBhcnNlciogcGFy
c2VyKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZXIuZ2V0KCk7IH0KKyAgICB1aW50NjRfdCBwcm90
ZWN0ZWRUcmFja0lEKCkgY29uc3QgeyByZXR1cm4gbV9wcm90ZWN0ZWRUcmFja0lEOyB9CisgICAg
QVZTdHJlYW1EYXRhUGFyc2VyKiBwYXJzZXIoKSBjb25zdDsKICAgICB2b2lkIHNldENETVNlc3Np
b24oQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyopOwogICAgIHZvaWQgc2V0Q0RNSW5zdGFu
Y2UoQ0RNSW5zdGFuY2UqKTsKICAgICB2b2lkIGF0dGVtcHRUb0RlY3J5cHQoKTsKQEAgLTE0OCw3
ICsxNDEsMTIgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyopOworICAg
IGV4cGxpY2l0IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMqLCBSZWY8U291cmNlQnVmZmVyUGFyc2VyPiYmKTsKKworICAgIHVzaW5nIEluaXRpYWxp
emF0aW9uU2VnbWVudCA9IFNvdXJjZUJ1ZmZlclBhcnNlcjo6SW5pdGlhbGl6YXRpb25TZWdtZW50
OworICAgIHZvaWQgZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdt
ZW50JiYpOworICAgIHZvaWQgZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nKGludDMyX3Qp
OworICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoUmVmPE1lZGlhU2FtcGxl
PiYmLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CiAKICAgICAv
LyBTb3VyY2VCdWZmZXJQcml2YXRlIG92ZXJyaWRlcwogICAgIHZvaWQgc2V0Q2xpZW50KFNvdXJj
ZUJ1ZmZlclByaXZhdGVDbGllbnQqKSBmaW5hbDsKQEAgLTE2OCwzMiArMTY2LDMyIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjbGVhck1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWUoY29uc3Qg
QXRvbVN0cmluZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgY2FuU3dpdGNoVG9UeXBlKGNvbnN0IENv
bnRlbnRUeXBlJikgZmluYWw7CiAKLSAgICB2b2lkIGRpZEJlY29tZVJlYWR5Rm9yTW9yZVNhbXBs
ZXMoaW50IHRyYWNrSUQpOworICAgIHZvaWQgZGlkQmVjb21lUmVhZHlGb3JNb3JlU2FtcGxlcyh1
aW50NjRfdCB0cmFja0lEKTsKICAgICB2b2lkIGFwcGVuZENvbXBsZXRlZCgpOwogICAgIHZvaWQg
ZGVzdHJveVBhcnNlcigpOwogICAgIHZvaWQgZGVzdHJveVJlbmRlcmVycygpOworICAgIHZvaWQg
Y2xlYXJUcmFja3MoKTsKIAogICAgIHZvaWQgZmx1c2hWaWRlbygpOwogICAgIEFMTE9XX05FV19B
UElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KICAgICB2b2lkIGZsdXNoKEFWU2FtcGxlQnVmZmVyQXVk
aW9SZW5kZXJlciAqKTsKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAogCi0g
ICAgVmVjdG9yPFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4+IG1f
dmlkZW9UcmFja3M7Ci0gICAgVmVjdG9yPFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQz4+IG1fYXVkaW9UcmFja3M7CisgICAgVmVjdG9yPFJlZlB0cjxWaWRlb1RyYWNr
UHJpdmF0ZT4+IG1fdmlkZW9UcmFja3M7CisgICAgVmVjdG9yPFJlZlB0cjxBdWRpb1RyYWNrUHJp
dmF0ZT4+IG1fYXVkaW9UcmFja3M7CiAgICAgVmVjdG9yPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDRXJyb3JDbGllbnQqPiBtX2Vycm9yQ2xpZW50czsKIAogICAgIFdlYWtQdHJGYWN0b3J5PFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBtX2FwcGVuZFdlYWtGYWN0b3J5OwogCi0gICAgUmV0
YWluUHRyPEFWU3RyZWFtRGF0YVBhcnNlcj4gbV9wYXJzZXI7Ci0gICAgUmV0YWluUHRyPEFWQXNz
ZXQ+IG1fYXNzZXQ7CisgICAgUmVmPFNvdXJjZUJ1ZmZlclBhcnNlcj4gbV9wYXJzZXI7CiAgICAg
UmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBtX2Rpc3BsYXlMYXllcjsKICAg
ICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCi0gICAgSGFzaE1hcDxpbnQsIFJl
dGFpblB0cjxBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXI+PiBtX2F1ZGlvUmVuZGVyZXJzOwor
ICAgIEhhc2hNYXA8dWludDY0X3QsIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVy
ZXI+LCBEZWZhdWx0SGFzaDx1aW50NjRfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hU
cmFpdHM8dWludDY0X3Q+PiBtX2F1ZGlvUmVuZGVyZXJzOwogICAgIEFMTE9XX05FV19BUElfV0lU
SE9VVF9HVUFSRFNfRU5ECi0gICAgUmV0YWluUHRyPFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3Rl
bmVyPiBtX2RlbGVnYXRlOwogICAgIFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlckVycm9yTGlz
dGVuZXI+IG1fZXJyb3JMaXN0ZW5lcjsKICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gbV9oZGNwRXJy
b3I7CiAgICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gbV9oYXNTZXNzaW9uU2VtYXBob3JlOworICAg
IEJveDxTZW1hcGhvcmU+IG1fYWJvcnRTZW1hcGhvcmU7CiAgICAgT1NPYmplY3RQdHI8ZGlzcGF0
Y2hfZ3JvdXBfdD4gbV9pc0FwcGVuZGluZ0dyb3VwOwogICAgIFJlZlB0cjxXZWJDb3JlRGVjb21w
cmVzc2lvblNlc3Npb24+IG1fZGVjb21wcmVzc2lvblNlc3Npb247CiAKQEAgLTIxMSwxMSArMjA5
LDkgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxGbG9hdFNpemU+IG1fY2FjaGVkU2l6ZTsKICAg
ICBGbG9hdFNpemUgbV9jdXJyZW50U2l6ZTsKICAgICBib29sIG1fcGFyc2luZ1N1Y2NlZWRlZCB7
IHRydWUgfTsKLSAgICBib29sIG1fcGFyc2VyU3RhdGVXYXNSZXNldCB7IGZhbHNlIH07Ci0gICAg
Ym9vbCBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50IHsgZmFs
c2UgfTsKICAgICBib29sIG1fd2FpdGluZ0ZvcktleSB7IHRydWUgfTsKLSAgICBpbnQgbV9lbmFi
bGVkVmlkZW9UcmFja0lEIHsgLTEgfTsKLSAgICBpbnQgbV9wcm90ZWN0ZWRUcmFja0lEIHsgLTEg
fTsKKyAgICB1aW50NjRfdCBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgeyBub3RGb3VuZCB9OworICAg
IHVpbnQ2NF90IG1fcHJvdGVjdGVkVHJhY2tJRCB7IG5vdEZvdW5kIH07CiAgICAgdWludDY0X3Qg
bV9tYXBJRDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCBkNzM1Nzc1
Y2M4ZjA0YjhiMDIxYjM1YzcwMTY5NWJkMjRmNmY4ZGE4Li4yMDBjODRiODYwOGNlZWUzZTM1Zjdm
M2NjNDNlY2NlMzA0MDc3YTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtNDQsNiArNDQsNyBAQAogI2ltcG9ydCAi
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oIgogI2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIK
ICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgorI2ltcG9ydCAiU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQy5oIgogI2ltcG9ydCAiU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oIgogI2ltcG9ydCAi
VGltZVJhbmdlcy5oIgogI2ltcG9ydCAiVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMuaCIKQEAgLTgyLDE1MyArODMsNiBAQCAtICh2b2lkKWFkZFN0cmVhbURhdGFQYXJzZXI6KEFW
U3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXI7CiAtICh2b2lkKXJlbW92ZVN0cmVh
bURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXI7CiBAZW5k
CiAKLSNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1hcmsgV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlz
dGVuZXIKLQotQGludGVyZmFjZSBXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciA6IE5TT2Jq
ZWN0PEFWU3RyZWFtRGF0YVBhcnNlck91dHB1dEhhbmRsaW5nPiB7Ci0gICAgV2Vha1B0cjxXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gX3BhcmVudDsKLSAgICBCb3g8U2VtYXBo
b3JlPiBfYWJvcnRTZW1hcGhvcmU7Ci0gICAgQVZTdHJlYW1EYXRhUGFyc2VyKiBfcGFyc2VyOwot
fQotQHByb3BlcnR5IChhc3NpZ24pIFdlYWtQdHI8V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM+IHBhcmVudDsKLUBwcm9wZXJ0eSAoYXNzaWduKSBCb3g8U2VtYXBob3JlPiBhYm9y
dFNlbWFwaG9yZTsKLS0gKGlkKWluaXRXaXRoUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIqKXBh
cnNlciBwYXJlbnQ6KFdlYWtQdHI8V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+
KXBhcmVudDsKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxp
c3RlbmVyCi0tIChpZClpbml0V2l0aFBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyKilwYXJzZXIg
cGFyZW50OihXZWFrUHRyPFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPilwYXJl
bnQKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAg
cmV0dXJuIG5pbDsKLQotICAgIEFTU0VSVChwYXJlbnQpOwotICAgIF9wYXJlbnQgPSBwYXJlbnQ7
Ci0gICAgX3BhcnNlciA9IHBhcnNlcjsKLSAgICBbX3BhcnNlciBzZXREZWxlZ2F0ZTpzZWxmXTsK
LSAgICByZXR1cm4gc2VsZjsKLX0KLQotQHN5bnRoZXNpemUgcGFyZW50PV9wYXJlbnQ7Ci1Ac3lu
dGhlc2l6ZSBhYm9ydFNlbWFwaG9yZT1fYWJvcnRTZW1hcGhvcmU7Ci0KLS0gKHZvaWQpZGVhbGxv
YwotewotICAgIFtfcGFyc2VyIHNldERlbGVnYXRlOm5pbF07Ci0gICAgW3N1cGVyIGRlYWxsb2Nd
OwotfQotCi0tICh2b2lkKWludmFsaWRhdGUKLXsKLSAgICBbX3BhcnNlciBzZXREZWxlZ2F0ZTpu
aWxdOwotICAgIF9wYXJzZXIgPSBudWxscHRyOwotfQotCi0tICh2b2lkKXN0cmVhbURhdGFQYXJz
ZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkUGFyc2VTdHJlYW1E
YXRhQXNBc3NldDooQVZBc3NldCAqKWFzc2V0Ci17Ci0gICAgQVNTRVJUX1VOVVNFRChzdHJlYW1E
YXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOwotCi0gICAgUmV0YWluUHRy
PEFWQXNzZXQ+IHByb3RlY3RlZEFzc2V0ID0gYXNzZXQ7Ci0gICAgY2FsbE9uTWFpblRocmVhZChb
cGFyZW50ID0gX3BhcmVudCwgcHJvdGVjdGVkQXNzZXQgPSBXVEZNb3ZlKHByb3RlY3RlZEFzc2V0
KV0gewotICAgICAgICBpZiAocGFyZW50KQotICAgICAgICAgICAgcGFyZW50LT5kaWRQYXJzZVN0
cmVhbURhdGFBc0Fzc2V0KHByb3RlY3RlZEFzc2V0LmdldCgpKTsKLSAgICB9KTsKLX0KLQotLSAo
dm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFy
c2VyIGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQ6KEFWQXNzZXQgKilhc3NldCB3aXRoRGlzY29u
dGludWl0eTooQk9PTClkaXNjb250aW51aXR5Ci17Ci0gICAgVU5VU0VEX1BBUkFNKGRpc2NvbnRp
bnVpdHkpOwotICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBh
cnNlciA9PSBfcGFyc2VyKTsKLQotICAgIFJldGFpblB0cjxBVkFzc2V0PiBwcm90ZWN0ZWRBc3Nl
dCA9IGFzc2V0OwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3BhcmVudCA9IF9wYXJlbnQsIHByb3Rl
Y3RlZEFzc2V0ID0gV1RGTW92ZShwcm90ZWN0ZWRBc3NldCldIHsKLSAgICAgICAgaWYgKHBhcmVu
dCkKLSAgICAgICAgICAgIHBhcmVudC0+ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChwcm90ZWN0
ZWRBc3NldC5nZXQoKSk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjoo
QVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRGYWlsVG9QYXJzZVN0cmVh
bURhdGFXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgotewotICAgIEFTU0VSVF9VTlVTRUQoc3Ry
ZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLQotICAgIFJldGFp
blB0cjxOU0Vycm9yPiBwcm90ZWN0ZWRFcnJvciA9IGVycm9yOwotICAgIGNhbGxPbk1haW5UaHJl
YWQoW3BhcmVudCA9IF9wYXJlbnQsIHByb3RlY3RlZEVycm9yID0gV1RGTW92ZShwcm90ZWN0ZWRF
cnJvcildIHsKLSAgICAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAgIHBhcmVudC0+ZGlkRmFp
bFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yKHByb3RlY3RlZEVycm9yLmdldCgpKTsKLSAgICB9
KTsKLX0KLQotLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilz
dHJlYW1EYXRhUGFyc2VyIGRpZFByb3ZpZGVNZWRpYURhdGE6KENNU2FtcGxlQnVmZmVyUmVmKXNh
bXBsZSBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQgbWVkaWFUeXBlOihO
U1N0cmluZyAqKW5zTWVkaWFUeXBlIGZsYWdzOihBVlN0cmVhbURhdGFQYXJzZXJPdXRwdXRNZWRp
YURhdGFGbGFncylmbGFncwotewotICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwg
c3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLQotICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1
ZmZlclJlZj4gcHJvdGVjdGVkU2FtcGxlID0gc2FtcGxlOwotICAgIGNhbGxPbk1haW5UaHJlYWQo
W3BhcmVudCA9IF9wYXJlbnQsIHByb3RlY3RlZFNhbXBsZSA9IFdURk1vdmUocHJvdGVjdGVkU2Ft
cGxlKSwgdHJhY2tJRCwgbWVkaWFUeXBlID0gU3RyaW5nKG5zTWVkaWFUeXBlKSwgZmxhZ3NdIHsK
LSAgICAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAgIHBhcmVudC0+ZGlkUHJvdmlkZU1lZGlh
RGF0YUZvclRyYWNrSUQodHJhY2tJRCwgcHJvdGVjdGVkU2FtcGxlLmdldCgpLCBtZWRpYVR5cGUs
IGZsYWdzKTsKLSAgICB9KTsKLX0KLQotLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVh
bURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFJlYWNoRW5kT2ZUcmFja1dpdGhUcmFj
a0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQgbWVkaWFUeXBlOihOU1N0cmluZyAqKW5z
TWVkaWFUeXBlCi17Ci0gICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1E
YXRhUGFyc2VyID09IF9wYXJzZXIpOwotCi0gICAgY2FsbE9uTWFpblRocmVhZChbcGFyZW50ID0g
X3BhcmVudCwgdHJhY2tJRCwgbWVkaWFUeXBlID0gU3RyaW5nKG5zTWVkaWFUeXBlKV0gewotICAg
ICAgICBpZiAocGFyZW50KQotICAgICAgICAgICAgcGFyZW50LT5kaWRSZWFjaEVuZE9mVHJhY2tX
aXRoVHJhY2tJRCh0cmFja0lELCBtZWRpYVR5cGUpOwotICAgIH0pOwotfQotCi1BTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgotLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyV2ls
bFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTooQVZTdHJlYW1EYXRh
UGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lE
KXRyYWNrSUQKLUFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAotewotICAgIEFT
U0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2Vy
KTsKLQotICAgIC8vIFdlIG11c3QgY2FsbCBzeW5jaHJvbm91c2x5IHRvIHRoZSBtYWluIHRocmVh
ZCwgYXMgdGhlIEFWU3RyZWFtU2Vzc2lvbiBtdXN0IGJlIGFzc29jaWF0ZWQKLSAgICAvLyB3aXRo
IHRoZSBzdHJlYW1EYXRhUGFyc2VyIGJlZm9yZSB0aGUgZGVsZWdhdGUgbWV0aG9kIHJldHVybnMu
Ci0gICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gcmVzcG9uZGVkU2VtYXBob3JlID0gQm94PEJpbmFy
eVNlbWFwaG9yZT46OmNyZWF0ZSgpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3BhcmVudCA9IF9w
YXJlbnQsIHRyYWNrSUQsIHJlc3BvbmRlZFNlbWFwaG9yZV0oKSB7Ci0gICAgICAgIGlmIChwYXJl
bnQpCi0gICAgICAgICAgICBwYXJlbnQtPndpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0
aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHRyYWNrSUQpOwotICAgICAgICByZXNwb25kZWRTZW1h
cGhvcmUtPnNpZ25hbCgpOwotICAgIH0pOwotCi0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAg
aWYgKHJlc3BvbmRlZFNlbWFwaG9yZS0+d2FpdEZvcigxMDBfbXMpKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIGlmIChfYWJvcnRTZW1hcGhvcmUtPndhaXRGb3IoMTAwX21zKSkgewot
ICAgICAgICAgICAgX2Fib3J0U2VtYXBob3JlLT5zaWduYWwoKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgIH0KLX0KLQotQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfQkVHSU4KLS0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICop
c3RyZWFtRGF0YVBhcnNlciBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlv
bkRhdGE6KE5TRGF0YSAqKWluaXREYXRhIGZvclRyYWNrSUQ6KENNUGVyc2lzdGVudFRyYWNrSUQp
dHJhY2tJRAotQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECi17Ci0gICAgQVNT
RVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIp
OwotCi0gICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gaGFzU2Vzc2lvblNlbWFwaG9yZSA9IEJveDxC
aW5hcnlTZW1hcGhvcmU+OjpjcmVhdGUoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwYXJlbnQg
PSBfcGFyZW50LCBwcm90ZWN0ZWRJbml0RGF0YSA9IFJldGFpblB0cjxOU0RhdGE+KGluaXREYXRh
KSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNlbWFwaG9yZV0gewotICAgICAgICBpZiAocGFyZW50KQot
ICAgICAgICAgICAgcGFyZW50LT5kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXph
dGlvbkRhdGFGb3JUcmFja0lEKHByb3RlY3RlZEluaXREYXRhLmdldCgpLCB0cmFja0lELCBoYXNT
ZXNzaW9uU2VtYXBob3JlKTsKLSAgICB9KTsKLQotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAg
IGlmIChoYXNTZXNzaW9uU2VtYXBob3JlLT53YWl0Rm9yKDEwMF9tcykpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgaWYgKF9hYm9ydFNlbWFwaG9yZS0+d2FpdEZvcigxMDBfbXMpKSB7
Ci0gICAgICAgICAgICBfYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgfQotfQotQGVuZAotCiBAaW50ZXJmYWNlIFdlYkFWU2FtcGxl
QnVmZmVyRXJyb3JMaXN0ZW5lciA6IE5TT2JqZWN0IHsKICAgICBXZWFrUHRyPFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBfcGFyZW50OwogICAgIFZlY3RvcjxSZXRhaW5QdHI8
QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+PiBfbGF5ZXJzOwpAQCAtMzkxLDQzICsyNDUsNiBA
QCBAZW5kCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgUEFMOwogCi0jcHJh
Z21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDCi0KLWNsYXNz
IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDIGZpbmFsIDogcHVibGljIE1lZGlhRGVzY3JpcHRpb24g
ewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVkaWFEZXNjcmlwdGlvbkFWRk9iakM+IGNyZWF0
ZShBVkFzc2V0VHJhY2sqIHRyYWNrKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhRGVzY3Jp
cHRpb25BVkZPYmpDKHRyYWNrKSk7IH0KLSAgICB2aXJ0dWFsIH5NZWRpYURlc2NyaXB0aW9uQVZG
T2JqQygpIHsgfQotCi0gICAgQXRvbVN0cmluZyBjb2RlYygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fY29kZWM7IH0KLSAgICBib29sIGlzVmlkZW8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2lzVmlkZW87IH0KLSAgICBib29sIGlzQXVkaW8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2lzQXVkaW87IH0KLSAgICBib29sIGlzVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1faXNUZXh0OyB9Ci0gICAgCi1wcml2YXRlOgotICAgIE1lZGlhRGVzY3JpcHRpb25BVkZPYmpD
KEFWQXNzZXRUcmFjayogdHJhY2spCi0gICAgICAgIDogbV9pc1ZpZGVvKFt0cmFjayBoYXNNZWRp
YUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbF0pCi0gICAgICAgICwg
bV9pc0F1ZGlvKFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJp
c3RpY0F1ZGlibGVdKQotICAgICAgICAsIG1faXNUZXh0KFt0cmFjayBoYXNNZWRpYUNoYXJhY3Rl
cmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGVdKQotICAgIHsKLSAgICAgICAgTlNB
cnJheSogZm9ybWF0RGVzY3JpcHRpb25zID0gW3RyYWNrIGZvcm1hdERlc2NyaXB0aW9uc107Ci0g
ICAgICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzY3JpcHRpb24gPSBbZm9ybWF0RGVzY3Jp
cHRpb25zIGNvdW50XSA/IChfX2JyaWRnZSBDTUZvcm1hdERlc2NyaXB0aW9uUmVmKVtmb3JtYXRE
ZXNjcmlwdGlvbnMgb2JqZWN0QXRJbmRleDowXSA6IDA7Ci0gICAgICAgIGlmIChkZXNjcmlwdGlv
bikgewotICAgICAgICAgICAgRm91ckNoYXJDb2RlIGNvZGVjID0gQ01Gb3JtYXREZXNjcmlwdGlv
bkdldE1lZGlhU3ViVHlwZShkZXNjcmlwdGlvbik7Ci0gICAgICAgICAgICBDRlN0cmluZ1JlZiBv
cmlnaW5hbEZvcm1hdEtleSA9IFBBTDo6Y2FuTG9hZF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3Jp
cHRpb25FeHRlbnNpb25fUHJvdGVjdGVkQ29udGVudE9yaWdpbmFsRm9ybWF0KCkgPyBQQUw6Omdl
dF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fUHJvdGVjdGVkQ29udGVu
dE9yaWdpbmFsRm9ybWF0KCkgOiBDRlNUUigiQ29tbW9uRW5jcnlwdGlvbk9yaWdpbmFsRm9ybWF0
Iik7Ci0gICAgICAgICAgICBDRlR5cGVSZWYgb3JpZ2luYWxGb3JtYXQgPSBDTUZvcm1hdERlc2Ny
aXB0aW9uR2V0RXh0ZW5zaW9uKGRlc2NyaXB0aW9uLCBvcmlnaW5hbEZvcm1hdEtleSk7Ci0gICAg
ICAgICAgICBpZiAob3JpZ2luYWxGb3JtYXQgJiYgQ0ZHZXRUeXBlSUQob3JpZ2luYWxGb3JtYXQp
ID09IENGTnVtYmVyR2V0VHlwZUlEKCkpCi0gICAgICAgICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1
ZSgoQ0ZOdW1iZXJSZWYpb3JpZ2luYWxGb3JtYXQsIGtDRk51bWJlclNJbnQzMlR5cGUsICZjb2Rl
Yyk7Ci0gICAgICAgICAgICBtX2NvZGVjID0gQXRvbVN0cmluZyhyZWludGVycHJldF9jYXN0PExD
aGFyKj4oJmNvZGVjKSwgNCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBBdG9tU3RyaW5nIG1f
Y29kZWM7Ci0gICAgYm9vbCBtX2lzVmlkZW87Ci0gICAgYm9vbCBtX2lzQXVkaW87Ci0gICAgYm9v
bCBtX2lzVGV4dDsKLX07Ci0KICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMKIApAQCAtNDY1LDE0ICsyODIsMTMgQEAgc3RhdGljIHZvaWQgYnVm
ZmVyV2FzQ29uc3VtZWRDYWxsYmFjayhDTU5vdGlmaWNhdGlvbkNlbnRlclJlZiwgY29uc3Qgdm9p
ZCogbGlzdGUKICAgICAgICAgc291cmNlQnVmZmVyLT5idWZmZXJXYXNDb25zdW1lZCgpOwogfQog
Ci1SZWY8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpjcmVhdGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyogcGFyZW50KQorUmVmPFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y3JlYXRl
KE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqIHBhcmVudCwgUmVmPFNvdXJjZUJ1ZmZlclBhcnNl
cj4mJiBwYXJzZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMocGFyZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMocGFyZW50LCBXVEZNb3ZlKHBhcnNlcikpKTsKIH0KIAotU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291
cmNlUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKLSAgICA6IG1fcGFyc2VyKGFkb3B0TlMoW1BBTDo6
YWxsb2NBVlN0cmVhbURhdGFQYXJzZXJJbnN0YW5jZSgpIGluaXRdKSkKLSAgICAsIG1fZGVsZWdh
dGUoYWRvcHROUyhbW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIGFsbG9jXSBpbml0V2l0
aFBhcnNlcjptX3BhcnNlci5nZXQoKSBwYXJlbnQ6bWFrZVdlYWtQdHIoKnRoaXMpXSkpCitTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoTWVkaWFT
b3VyY2VQcml2YXRlQVZGT2JqQyogcGFyZW50LCBSZWY8U291cmNlQnVmZmVyUGFyc2VyPiYmIHBh
cnNlcikKKyAgICA6IG1fcGFyc2VyKFdURk1vdmUocGFyc2VyKSkKICAgICAsIG1fZXJyb3JMaXN0
ZW5lcihhZG9wdE5TKFtbV2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyIGFsbG9jXSBpbml0
V2l0aFBhcmVudDptYWtlV2Vha1B0cigqdGhpcyldKSkKICAgICAsIG1faXNBcHBlbmRpbmdHcm91
cChhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX2dyb3VwX2NyZWF0ZSgpKSkKICAgICAsIG1fbWVkaWFT
b3VyY2UocGFyZW50KQpAQCAtNDg2LDEwICszMDIsMjYgQEAgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMKIAogICAgIGlmICghW1BBTDo6Z2V0QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJDbGFzcygp
IGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3RvcihwcmVyb2xsRGVjb2RlV2l0aENv
bXBsZXRpb25IYW5kbGVyOildKQogICAgICAgICBDTU5vdGlmaWNhdGlvbkNlbnRlckFkZExpc3Rl
bmVyKENNTm90aWZpY2F0aW9uQ2VudGVyR2V0RGVmYXVsdExvY2FsQ2VudGVyKCksIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KG1fbWFwSUQpLCBidWZmZXJXYXNDb25zdW1lZENhbGxiYWNrLCBrQ01T
YW1wbGVCdWZmZXJDb25zdW1lck5vdGlmaWNhdGlvbl9CdWZmZXJDb25zdW1lZCwgbnVsbHB0ciwg
MCk7Ci0gICAgCi0gICAgbV9kZWxlZ2F0ZS5nZXQoKS5hYm9ydFNlbWFwaG9yZSA9IEJveDxTZW1h
cGhvcmU+OjpjcmVhdGUoMCk7CiAKICAgICBzb3VyY2VCdWZmZXJNYXAoKS5hZGQobV9tYXBJRCwg
bWFrZVdlYWtQdHIoKnRoaXMpKTsKKworICAgIG1fcGFyc2VyLT5zZXREaWRQYXJzZUluaXRpYWxp
emF0aW9uRGF0YUNhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoSW5pdGlh
bGl6YXRpb25TZWdtZW50JiYgc2VnbWVudCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgIHdlYWtUaGlz
LT5kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShXVEZNb3ZlKHNlZ21lbnQpKTsKKyAgICB9KTsK
KworICAgIG1fcGFyc2VyLT5zZXREaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFj
ayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKGludDMyX3QgZXJyb3JDb2RlKSBtdXRh
YmxlIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgaWYgKHdlYWtU
aGlzKQorICAgICAgICAgICAgd2Vha1RoaXMtPmRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2lu
ZyhlcnJvckNvZGUpOworICAgIH0pOworCisgICAgbV9wYXJzZXItPnNldERpZFByb3ZpZGVNZWRp
YURhdGFDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKFJlZjxNZWRpYVNh
bXBsZT4mJiBzYW1wbGUsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBl
KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgaWYg
KHdlYWtUaGlzKQorICAgICAgICAgICAgd2Vha1RoaXMtPmRpZFByb3ZpZGVNZWRpYURhdGFGb3JU
cmFja0lEKFdURk1vdmUoc2FtcGxlKSwgdHJhY2tJRCwgbWVkaWFUeXBlKTsKKyAgICB9KTsKIH0K
IAogU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6On5Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
QygpCkBAIC01MDAsNiArMzMyLDcgQEAgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6On5Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQygpCiAgICAgc291cmNlQnVmZmVyTWFwKCkucmVtb3ZlKG1f
bWFwSUQpOwogICAgIGRlc3Ryb3lQYXJzZXIoKTsKICAgICBkZXN0cm95UmVuZGVyZXJzKCk7Cisg
ICAgY2xlYXJUcmFja3MoKTsKIAogICAgIGlmICghW1BBTDo6Z2V0QVZTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJDbGFzcygpIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3RvcihwcmVy
b2xsRGVjb2RlV2l0aENvbXBsZXRpb25IYW5kbGVyOildKQogICAgICAgICBDTU5vdGlmaWNhdGlv
bkNlbnRlclJlbW92ZUxpc3RlbmVyKENNTm90aWZpY2F0aW9uQ2VudGVyR2V0RGVmYXVsdExvY2Fs
Q2VudGVyKCksIHRoaXMsIGJ1ZmZlcldhc0NvbnN1bWVkQ2FsbGJhY2ssIGtDTVNhbXBsZUJ1ZmZl
ckNvbnN1bWVyTm90aWZpY2F0aW9uX0J1ZmZlckNvbnN1bWVkLCBudWxscHRyKTsKQEAgLTUwOCw3
ICszNDEsNyBAQCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6flNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDKCkKICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKIH0K
IAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNB
c3NldChBVkFzc2V0KiBhc3NldCkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRp
ZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVudCYmIHNlZ21lbnQp
CiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIApAQCAtNTE2LDUyICszNDksMzMg
QEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNB
c3NldChBVkFzc2V0KiBhc3NldCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fbWVkaWFT
b3VyY2UtPnBsYXllcigpLT5zaG91bGRDaGVja0hhcmR3YXJlU3VwcG9ydCgpKSB7Ci0gICAgICAg
IGZvciAoQVZBc3NldFRyYWNrICp0cmFjayBpbiBbYXNzZXQgdHJhY2tzXSkgewotICAgICAgICAg
ICAgaWYgKCFhc3NldFRyYWNrTWVldHNIYXJkd2FyZURlY29kZVJlcXVpcmVtZW50cyh0cmFjaywg
bV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPm1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdh
cmVTdXBwb3J0KCkpKSB7CisgICAgICAgIGZvciAoYXV0byYgaW5mbyA6IHNlZ21lbnQudmlkZW9U
cmFja3MpIHsKKyAgICAgICAgICAgIGF1dG8gY29kZWMgPSBGb3VyQ0M6OmZyb21TdHJpbmcoaW5m
by5kZXNjcmlwdGlvbi0+Y29kZWMoKSk7CisgICAgICAgICAgICBpZiAoIWNvZGVjKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKCFjb2RlY3NNZWV0SGFyZHdhcmVE
ZWNvZGVSZXF1aXJlbWVudHMoe3sgKmNvZGVjIH19LCBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+
bWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSkpIHsKICAgICAgICAg
ICAgICAgICBtX3BhcnNpbmdTdWNjZWVkZWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2Fzc2V0ID0gYXNz
ZXQ7Ci0KLSAgICBtX3ZpZGVvVHJhY2tzLmNsZWFyKCk7Ci0gICAgbV9hdWRpb1RyYWNrcy5jbGVh
cigpOwotCi0gICAgbV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4dEluaXRpYWxpemF0aW9uU2VnbWVu
dCA9IGZhbHNlOwotCi0gICAgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRp
b25TZWdtZW50IHNlZ21lbnQ7Ci0KLSAgICBpZiAoW21fYXNzZXQgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihvdmVyYWxsRHVyYXRpb25IaW50KV0pCi0gICAgICAgIHNlZ21lbnQuZHVyYXRp
b24gPSBQQUw6OnRvTWVkaWFUaW1lKFttX2Fzc2V0IG92ZXJhbGxEdXJhdGlvbkhpbnRdKTsKLQot
ICAgIGlmIChzZWdtZW50LmR1cmF0aW9uLmlzSW52YWxpZCgpIHx8IHNlZ21lbnQuZHVyYXRpb24g
PT0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpKQotICAgICAgICBzZWdtZW50LmR1cmF0aW9uID0gUEFM
Ojp0b01lZGlhVGltZShbbV9hc3NldCBkdXJhdGlvbl0pOwotCi0gICAgZm9yIChBVkFzc2V0VHJh
Y2sqIHRyYWNrIGluIFttX2Fzc2V0IHRyYWNrc10pIHsKLSAgICAgICAgaWYgKFt0cmFjayBoYXNN
ZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGVdKSB7Ci0gICAg
ICAgICAgICAvLyBGSVhNRSgxMjUxNjEpOiBIYW5kbGUgaW4tYmFuZCB0ZXh0IHRyYWNrcy4KLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAgY2xlYXJUcmFja3MoKTsKIAotICAg
ICAgICBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3Rlcmlz
dGljVmlzdWFsXSkgewotICAgICAgICAgICAgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5p
dGlhbGl6YXRpb25TZWdtZW50OjpWaWRlb1RyYWNrSW5mb3JtYXRpb24gaW5mbzsKLSAgICAgICAg
ICAgIGF1dG8gdmlkZW9UcmFjayA9IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
OjpjcmVhdGUodHJhY2ssIHRoaXMpOwotICAgICAgICAgICAgaW5mby50cmFjayA9IHZpZGVvVHJh
Y2suY29weVJlZigpOwotICAgICAgICAgICAgbV92aWRlb1RyYWNrcy5hcHBlbmQoV1RGTW92ZSh2
aWRlb1RyYWNrKSk7Ci0gICAgICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVkaWFEZXNjcmlw
dGlvbkFWRk9iakM6OmNyZWF0ZSh0cmFjayk7Ci0gICAgICAgICAgICBzZWdtZW50LnZpZGVvVHJh
Y2tzLmFwcGVuZChpbmZvKTsKLSAgICAgICAgfSBlbHNlIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFy
YWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNBdWRpYmxlXSkgewotICAgICAgICAgICAg
U291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OjpBdWRpb1Ry
YWNrSW5mb3JtYXRpb24gaW5mbzsKLSAgICAgICAgICAgIGF1dG8gYXVkaW9UcmFjayA9IEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGUodHJhY2ssIHRoaXMpOwotICAg
ICAgICAgICAgaW5mby50cmFjayA9IGF1ZGlvVHJhY2suY29weVJlZigpOwotICAgICAgICAgICAg
bV9hdWRpb1RyYWNrcy5hcHBlbmQoV1RGTW92ZShhdWRpb1RyYWNrKSk7Ci0gICAgICAgICAgICBp
bmZvLmRlc2NyaXB0aW9uID0gTWVkaWFEZXNjcmlwdGlvbkFWRk9iakM6OmNyZWF0ZSh0cmFjayk7
Ci0gICAgICAgICAgICBzZWdtZW50LmF1ZGlvVHJhY2tzLmFwcGVuZChpbmZvKTsKLSAgICAgICAg
fQorICAgIGZvciAoYXV0byB2aWRlb1RyYWNrSW5mbyA6IHNlZ21lbnQudmlkZW9UcmFja3MpIHsK
KyAgICAgICAgdmlkZW9UcmFja0luZm8udHJhY2stPnNldFNlbGVjdGVkQ2hhbmdlZENhbGxiYWNr
KFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNr
LCBib29sIHNlbGVjdGVkKSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAg
ICAgICAgd2Vha1RoaXMtPnRyYWNrRGlkQ2hhbmdlU2VsZWN0ZWQodHJhY2ssIHNlbGVjdGVkKTsK
KyAgICAgICAgfSk7CisgICAgICAgIG1fdmlkZW9UcmFja3MuYXBwZW5kKHZpZGVvVHJhY2tJbmZv
LnRyYWNrKTsKKyAgICB9CiAKLSAgICAgICAgLy8gRklYTUUoMTI1MTYxKTogQWRkIFRleHRUcmFj
ayBzdXBwb3J0CisgICAgZm9yIChhdXRvIGF1ZGlvVHJhY2tJbmZvIDogc2VnbWVudC5hdWRpb1Ry
YWNrcykgeworICAgICAgICBhdWRpb1RyYWNrSW5mby50cmFjay0+c2V0RW5hYmxlZENoYW5nZWRD
YWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKEF1ZGlvVHJhY2tQcml2YXRl
JiB0cmFjaywgYm9vbCBlbmFibGVkKSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAg
ICAgICAgICAgICAgd2Vha1RoaXMtPnRyYWNrRGlkQ2hhbmdlRW5hYmxlZCh0cmFjaywgZW5hYmxl
ZCk7CisgICAgICAgIH0pOworICAgICAgICBtX2F1ZGlvVHJhY2tzLmFwcGVuZChhdWRpb1RyYWNr
SW5mby50cmFjayk7CiAgICAgfQogCiAgICAgaWYgKG1fbWVkaWFTb3VyY2UpCkBAIC01NzEsODAg
KzM4NSw1MCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZVN0cmVh
bURhdGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQogICAgICAgICBtX2NsaWVudC0+c291cmNlQnVm
ZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoc2VnbWVudCk7CiB9CiAK
LXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0
YVdpdGhFcnJvcihOU0Vycm9yICplcnJvcikKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhpbnQzMl90IGNvZGUpCiB7CiAjaWYg
TE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKKyAgICBVTlVTRURfUEFSQU0o
Y29kZSk7CiAjZW5kaWYKLSAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgW1tlcnJvciBkZXNj
cmlwdGlvbl0gVVRGOFN0cmluZ10pOworICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCBjb2Rl
KTsKIAogICAgIG1fcGFyc2luZ1N1Y2NlZWRlZCA9IGZhbHNlOwogfQogCi1zdHJ1Y3QgUHJvY2Vz
c0NvZGVkRnJhbWVJbmZvIHsKLSAgICBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogc291cmNl
QnVmZmVyOwotICAgIGludCB0cmFja0lEOwotICAgIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlOwot
fTsKLQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0
YUZvclRyYWNrSUQoaW50IHRyYWNrSUQsIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkKQordm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoUmVmPE1lZGlhU2FtcGxl
PiYmIG1lZGlhU2FtcGxlLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlw
ZSkKIHsKLSAgICBwcm9jZXNzQ29kZWRGcmFtZSh0cmFja0lELCBzYW1wbGVCdWZmZXIsIG1lZGlh
VHlwZSk7Ci19CisgICAgVU5VU0VEX1BBUkFNKG1lZGlhVHlwZSk7CiAKLWJvb2wgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OnByb2Nlc3NDb2RlZEZyYW1lKGludCB0cmFja0lELCBDTVNhbXBs
ZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIsIGNvbnN0IFN0cmluZyYpCi17CiAgICAgaWYgKHRyYWNr
SUQgIT0gbV9lbmFibGVkVmlkZW9UcmFja0lEICYmICFtX2F1ZGlvUmVuZGVyZXJzLmNvbnRhaW5z
KHRyYWNrSUQpKSB7CiAgICAgICAgIC8vIEZJWE1FKDEyNTE2MSk6IFdlIGRvbid0IGhhbmRsZSB0
ZXh0IHRyYWNrcywgYW5kIHBhc3NpbmcgdGhpcyBzYW1wbGUgdXAgdG8gU291cmNlQnVmZmVyCiAg
ICAgICAgIC8vIHdpbGwganVzdCBjb25mdXNlIGl0cyBzdGF0ZS4gRHJvcCB0aGlzIHNhbXBsZSB1
bnRpbCB3ZSBjYW4gaGFuZGxlIHRleHQgdHJhY2tzIHByb3Blcmx5LgotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9kaXNjYXJkU2FtcGxl
c1VudGlsTmV4dEluaXRpYWxpemF0aW9uU2VnbWVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgaWYgKCFtX2NsaWVudCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBhdXRvIG1l
ZGlhU2FtcGxlID0gTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUoc2FtcGxlQnVmZmVyLCB0cmFj
a0lEKTsKLQotICAgIGlmIChtZWRpYVNhbXBsZS0+aXNIb21vZ2VuZW91cygpKSB7Ci0gICAgICAg
IERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCBtZWRpYVNhbXBsZS0+dG9KU09OU3RyaW5nKCkpOwor
ICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCBtZWRpYVNhbXBsZS0+dG9KU09OU3RyaW5nKCkp
OworICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZh
dGVEaWRSZWNlaXZlU2FtcGxlKG1lZGlhU2FtcGxlKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfQotCi0gICAgYXV0byBtZWRpYVNhbXBsZXMgPSBtZWRpYVNhbXBsZS0+ZGl2aWRlSW50b0hv
bW9nZW5lb3VzU2FtcGxlcygpOwotICAgIGZvciAoYXV0byYgc2FtcGxlIDogbWVkaWFTYW1wbGVz
KSB7Ci0gICAgICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCBzYW1wbGUtPnRvSlNPTlN0cmlu
ZygpKTsKLSAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2Ft
cGxlKHNhbXBsZSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFJlYWNoRW5kT2ZUcmFja1dpdGhUcmFja0lEKGludCwg
Y29uc3QgU3RyaW5nJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlh
bGl6YXRpb25EYXRhRm9yVHJhY2tJRChpbnQgdHJhY2tJRCkKK3ZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OndpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRh
dGFGb3JUcmFja0lEKHVpbnQ2NF90IHRyYWNrSUQpCiB7CiAgICAgaWYgKCFtX21lZGlhU291cmNl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQobV9wYXJzZXIpOwotCiAjaWYgSEFWRShB
VlNUUkVBTVNFU1NJT04pICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgInRyYWNrID0gIiwgdHJhY2tJRCk7CiAKICAgICBtX3By
b3RlY3RlZFRyYWNrSUQgPSB0cmFja0lEOwogCisgICAgYXV0byBwYXJzZXIgPSB0aGlzLT5wYXJz
ZXIoKTsKKyAgICBpZiAoIXBhcnNlcikKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKENETVNl
c3Npb25NZWRpYVNvdXJjZUFWRk9iakMqIHNlc3Npb24gPSBtX21lZGlhU291cmNlLT5wbGF5ZXIo
KS0+Y2RtU2Vzc2lvbigpKQotICAgICAgICBzZXNzaW9uLT5hZGRQYXJzZXIobV9wYXJzZXIuZ2V0
KCkpOworICAgICAgICBzZXNzaW9uLT5hZGRQYXJzZXIocGFyc2VyKTsKICAgICBlbHNlIGlmICgh
Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmlzQXZhaWxhYmxlKCkpIHsKICAgICAgICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIFttX21lZGlhU291cmNlLT5wbGF5
ZXIoKS0+c3RyZWFtU2Vzc2lvbigpIGFkZFN0cmVhbURhdGFQYXJzZXI6bV9wYXJzZXIuZ2V0KCld
OworICAgICAgICBbbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPnN0cmVhbVNlc3Npb24oKSBhZGRT
dHJlYW1EYXRhUGFyc2VyOnBhcnNlcl07CiAgICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKICAgICB9CiAjZWxzZQpAQCAtNjUyLDcgKzQzNiw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OndpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRh
dGFGCiAjZW5kaWYKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJv
dmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChOU0RhdGEq
IGluaXREYXRhLCBpbnQgdHJhY2tJRCwgQm94PEJpbmFyeVNlbWFwaG9yZT4gaGFzU2Vzc2lvblNl
bWFwaG9yZSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250
ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoUmVmPFVpbnQ4QXJyYXk+
JiYgaW5pdERhdGEsIHVpbnQ2NF90IHRyYWNrSUQsIEJveDxCaW5hcnlTZW1hcGhvcmU+IGhhc1Nl
c3Npb25TZW1hcGhvcmUpCiB7CiAgICAgaWYgKCFtX21lZGlhU291cmNlKQogICAgICAgICByZXR1
cm47CkBAIC02NjEsMTEgKzQ0NSwxMSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGbwogICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgInRyYWNrID0gIiwgdHJhY2tJRCk7CiAKICAgICBtX3By
b3RlY3RlZFRyYWNrSUQgPSB0cmFja0lEOwotICAgIG1faW5pdERhdGEgPSBVaW50OEFycmF5Ojpj
cmVhdGUoW2luaXREYXRhIGxlbmd0aF0pOwotICAgIFtpbml0RGF0YSBnZXRCeXRlczptX2luaXRE
YXRhLT5kYXRhKCkgbGVuZ3RoOm1faW5pdERhdGEtPmxlbmd0aCgpXTsKKyAgICBtX2luaXREYXRh
ID0gV1RGTW92ZShpbml0RGF0YSk7CiAgICAgbV9tZWRpYVNvdXJjZS0+c291cmNlQnVmZmVyS2V5
TmVlZGVkKHRoaXMsIG1faW5pdERhdGEuZ2V0KCkpOwogICAgIGlmIChhdXRvIHNlc3Npb24gPSBt
X21lZGlhU291cmNlLT5wbGF5ZXIoKS0+Y2RtU2Vzc2lvbigpKSB7Ci0gICAgICAgIHNlc3Npb24t
PmFkZFBhcnNlcihtX3BhcnNlci5nZXQoKSk7CisgICAgICAgIGlmIChhdXRvIHBhcnNlciA9IHRo
aXMtPnBhcnNlcigpKQorICAgICAgICAgICAgc2Vzc2lvbi0+YWRkUGFyc2VyKHBhcnNlcik7CiAg
ICAgICAgIGhhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtNjc2LDE0ICs0NjAsMTUgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KICAgICBt
X2hhc1Nlc3Npb25TZW1hcGhvcmUgPSBoYXNTZXNzaW9uU2VtYXBob3JlOwogICAgIAogI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKLSAgICBh
dXRvIGluaXREYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW5pdERhdGEpOworICAg
IGF1dG8gaW5pdERhdGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2luaXREYXRhLT5k
YXRhKCksIG1faW5pdERhdGEtPmJ5dGVMZW5ndGgoKSk7CiAgICAgYXV0byBrZXlJRHMgPSBDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTaW5mKGluaXREYXRhQnVmZmVy
KTsKICAgICBpZiAoIWtleUlEcykKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fY2RtSW5z
dGFuY2UpIHsKICAgICAgICAgaWYgKGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5j
ZS0+c2Vzc2lvbkZvcktleUlEcyhrZXlJRHMudmFsdWUoKSkpIHsKLSAgICAgICAgICAgIFtpbnN0
YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVudDpt
X3BhcnNlci5nZXQoKV07CisgICAgICAgICAgICBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5wYXJz
ZXIoKSkKKyAgICAgICAgICAgICAgICBbaW5zdGFuY2VTZXNzaW9uLT5jb250ZW50S2V5U2Vzc2lv
bigpIGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6cGFyc2VyXTsKICAgICAgICAgICAgIGlmIChtX2hh
c1Nlc3Npb25TZW1hcGhvcmUpIHsKICAgICAgICAgICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhv
cmUtPnNpZ25hbCgpOwogICAgICAgICAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZSA9IG51
bGxwdHI7CkBAIC03MjQsMTYgKzUwOSw1NCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjphcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgZGF0YSkKIHsKICAgICBERUJVR19M
T0coTE9HSURFTlRJRklFUiwgImRhdGEgbGVuZ3RoID0gIiwgZGF0YS5zaXplKCkpOwogCisgICAg
QVNTRVJUKCFtX2hhc1Nlc3Npb25TZW1hcGhvcmUpOworICAgIEFTU0VSVCghbV9hYm9ydFNlbWFw
aG9yZSk7CisKKyAgICBtX2Fib3J0U2VtYXBob3JlID0gQm94PFNlbWFwaG9yZT46OmNyZWF0ZSgw
KTsKKyAgICBtX3BhcnNlci0+c2V0V2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxp
emF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlz
KSwgYWJvcnRTZW1hcGhvcmUgPSBtX2Fib3J0U2VtYXBob3JlXSAodWludDY0X3QgdHJhY2tJRCkg
bXV0YWJsZSB7CisgICAgICAgIC8vIFdlIG11c3QgY2FsbCBzeW5jaHJvbm91c2x5IHRvIHRoZSBt
YWluIHRocmVhZCwgYXMgdGhlIEFWU3RyZWFtU2Vzc2lvbiBtdXN0IGJlIGFzc29jaWF0ZWQKKyAg
ICAgICAgLy8gd2l0aCB0aGUgc3RyZWFtRGF0YVBhcnNlciBiZWZvcmUgdGhlIGRlbGVnYXRlIG1l
dGhvZCByZXR1cm5zLgorICAgICAgICBCb3g8QmluYXJ5U2VtYXBob3JlPiByZXNwb25kZWRTZW1h
cGhvcmUgPSBCb3g8QmluYXJ5U2VtYXBob3JlPjo6Y3JlYXRlKCk7CisgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHRyYWNrSUQsIHJlc3BvbmRl
ZFNlbWFwaG9yZV0oKSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAg
ICAgd2Vha1RoaXMtPndpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRh
dGFGb3JUcmFja0lEKHRyYWNrSUQpOworICAgICAgICAgICAgcmVzcG9uZGVkU2VtYXBob3JlLT5z
aWduYWwoKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAg
ICAgIGlmIChyZXNwb25kZWRTZW1hcGhvcmUtPndhaXRGb3IoMTAwX21zKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlmIChhYm9ydFNlbWFwaG9yZS0+d2FpdEZvcigx
MDBfbXMpKSB7CisgICAgICAgICAgICAgICAgYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pOwor
CisgICAgbV9wYXJzZXItPnNldERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwg
YWJvcnRTZW1hcGhvcmUgPSBtX2Fib3J0U2VtYXBob3JlXSAoUmVmPFVpbnQ4QXJyYXk+JiYgaW5p
dERhdGEsIHVpbnQ2NF90IHRyYWNrSUQpIG11dGFibGUgeworICAgICAgICBCb3g8QmluYXJ5U2Vt
YXBob3JlPiBoYXNTZXNzaW9uU2VtYXBob3JlID0gQm94PEJpbmFyeVNlbWFwaG9yZT46OmNyZWF0
ZSgpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1Ro
aXMpLCBpbml0RGF0YSA9IFdURk1vdmUoaW5pdERhdGEpLCB0cmFja0lELCBoYXNTZXNzaW9uU2Vt
YXBob3JlXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAg
ICAgICAgICB3ZWFrVGhpcy0+ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm9yVHJhY2tJRChXVEZNb3ZlKGluaXREYXRhKSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNl
bWFwaG9yZSk7CisgICAgICAgIH0pOworCisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAg
ICAgICBpZiAoaGFzU2Vzc2lvblNlbWFwaG9yZS0+d2FpdEZvcigxMDBfbXMpKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYgKGFib3J0U2VtYXBob3JlLT53YWl0Rm9y
KDEwMF9tcykpIHsKKyAgICAgICAgICAgICAgICBhYm9ydFNlbWFwaG9yZS0+c2lnbmFsKCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSk7
CisKICAgICBtX3BhcnNpbmdTdWNjZWVkZWQgPSB0cnVlOwogICAgIGRpc3BhdGNoX2dyb3VwX2Vu
dGVyKG1faXNBcHBlbmRpbmdHcm91cC5nZXQoKSk7CiAKLSAgICBkaXNwYXRjaF9hc3luYyhnbG9i
YWxEYXRhUGFyc2VyUXVldWUoKSwgW2RhdGEgPSBXVEZNb3ZlKGRhdGEpLCB3ZWFrVGhpcyA9IG1f
YXBwZW5kV2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyksIHBhcnNlciA9IG1fcGFyc2Vy
LCBkZWxlZ2F0ZSA9IG1fZGVsZWdhdGUsIGlzQXBwZW5kaW5nR3JvdXAgPSBtX2lzQXBwZW5kaW5n
R3JvdXAsIHBhcnNlclN0YXRlV2FzUmVzZXQgPSBtX3BhcnNlclN0YXRlV2FzUmVzZXRdICgpIG11
dGFibGUgewotICAgICAgICBhdXRvIHNoYXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGRhdGEpKTsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBzaGFyZWREYXRhLT5jcmVhdGVO
U0RhdGEoKTsKLSAgICAgICAgaWYgKHBhcnNlclN0YXRlV2FzUmVzZXQpCi0gICAgICAgICAgICBb
cGFyc2VyIGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURh
dGFQYXJzZXJTdHJlYW1EYXRhRGlzY29udGludWl0eV07Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIFtwYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCldOworICAgIGRpc3BhdGNo
X2FzeW5jKGdsb2JhbERhdGFQYXJzZXJRdWV1ZSgpLCBbZGF0YSA9IFdURk1vdmUoZGF0YSksIHdl
YWtUaGlzID0gbV9hcHBlbmRXZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCp0aGlzKSwgcGFyc2Vy
ID0gbV9wYXJzZXIsIGlzQXBwZW5kaW5nR3JvdXAgPSBtX2lzQXBwZW5kaW5nR3JvdXBdICgpIG11
dGFibGUgeworICAgICAgICBwYXJzZXItPmFwcGVuZERhdGEoV1RGTW92ZShkYXRhKSk7CiAKICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXNdIHsKICAgICAgICAgICAgIGlmICh3ZWFr
VGhpcykKQEAgLTc0MSwxMSArNTY0LDIwIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQogICAgICAgICB9KTsKICAg
ICAgICAgZGlzcGF0Y2hfZ3JvdXBfbGVhdmUoaXNBcHBlbmRpbmdHcm91cC5nZXQoKSk7CiAgICAg
fSk7Ci0gICAgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0ID0gZmFsc2U7CiB9CiAKIHZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZENvbXBsZXRlZCgpCiB7CisgICAgaWYgKG1fYWJv
cnRTZW1hcGhvcmUpIHsKKyAgICAgICAgbV9hYm9ydFNlbWFwaG9yZS0+c2lnbmFsKCk7CisgICAg
ICAgIG1fYWJvcnRTZW1hcGhvcmUgPSBuaWw7CisgICAgfQorCisgICAgaWYgKG1faGFzU2Vzc2lv
blNlbWFwaG9yZSkgeworICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwor
ICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUgPSBuaWw7CisgICAgfQorCiAgICAgaWYgKG1f
cGFyc2luZ1N1Y2NlZWRlZCAmJiBtX21lZGlhU291cmNlKQogICAgICAgICBtX21lZGlhU291cmNl
LT5wbGF5ZXIoKS0+c2V0TG9hZGluZ1Byb2dyZXNzc2VkKHRydWUpOwogCkBAIC03NjAsMzkgKzU5
MiwzOSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphYm9ydCgpCiAgICAgLy8g
VGhlIHBhcnNpbmcgcXVldWUgbWF5IGJlIGJsb2NrZWQgd2FpdGluZyBmb3IgdGhlIG1haW4gdGhy
ZWFkIHRvIHByb3ZpZGUgaXQgYSBBVlN0cmVhbVNlc3Npb24uIFdlCiAgICAgLy8gd2VyZSBhc2tl
ZCB0byBhYm9ydCwgYW5kIHRoYXQgY2FuY2VscyBhbGwgb3V0c3RhbmRpbmcgYXBwZW5kIG9wZXJh
dGlvbnMuIFdpdGhvdXQgY2FuY2VsbGluZyB0aGlzCiAgICAgLy8gc2VtYXBob3JlLCB0aGUgbV9p
c0FwcGVuZGluZ0dyb3VwIHdhaXQgb3BlcmF0aW9uIHdpbGwgZGVhZGxvY2suCi0gICAgaWYgKG1f
aGFzU2Vzc2lvblNlbWFwaG9yZSkKKyAgICBpZiAobV9oYXNTZXNzaW9uU2VtYXBob3JlKSB7CiAg
ICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFsKCk7Ci0gICAgbV9kZWxlZ2F0ZS5n
ZXQoKS5hYm9ydFNlbWFwaG9yZS0+c2lnbmFsKCk7CisgICAgICAgIG1faGFzU2Vzc2lvblNlbWFw
aG9yZSA9IG51bGxwdHI7CisgICAgfQorICAgIGlmIChtX2Fib3J0U2VtYXBob3JlKSB7CisgICAg
ICAgIG1fYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAgICBtX2Fib3J0U2VtYXBob3Jl
ID0gbnVsbHB0cjsKKyAgICB9CiAgICAgZGlzcGF0Y2hfZ3JvdXBfd2FpdChtX2lzQXBwZW5kaW5n
R3JvdXAuZ2V0KCksIERJU1BBVENIX1RJTUVfRk9SRVZFUik7Ci0gICAgbV9hcHBlbmRXZWFrRmFj
dG9yeS5yZXZva2VBbGwoKTsKLSAgICBtX2RlbGVnYXRlLmdldCgpLnBhcmVudCA9IG1fYXBwZW5k
V2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyk7Ci0gICAgbV9kZWxlZ2F0ZS5nZXQoKS5h
Ym9ydFNlbWFwaG9yZSA9IEJveDxTZW1hcGhvcmU+OjpjcmVhdGUoMCk7CiB9CiAKIHZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnJlc2V0UGFyc2VyU3RhdGUoKQogewogICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUik7CiAKLSAgICBtX3BhcnNlclN0YXRlV2FzUmVzZXQgPSB0cnVl
OwotICAgIG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlvblNlZ21lbnQgPSB0
cnVlOworICAgIG1fcGFyc2VyLT5yZXNldFBhcnNlclN0YXRlKCk7CiB9CiAKIHZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRlc3Ryb3lQYXJzZXIoKQogeworICAgIGF1dG8gcGFyc2Vy
ID0gdGhpcy0+cGFyc2VyKCk7CisgICAgaWYgKCFwYXJzZXIpCisgICAgICAgIHJldHVybjsKICNp
ZiBIQVZFKEFWU1RSRUFNU0VTU0lPTikgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEp
CiAgICAgaWYgKG1fbWVkaWFTb3VyY2UgJiYgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPmhhc1N0
cmVhbVNlc3Npb24oKSkKLSAgICAgICAgW21fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5zdHJlYW1T
ZXNzaW9uKCkgcmVtb3ZlU3RyZWFtRGF0YVBhcnNlcjptX3BhcnNlci5nZXQoKV07CisgICAgICAg
IFttX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c3RyZWFtU2Vzc2lvbigpIHJlbW92ZVN0cmVhbURh
dGFQYXJzZXI6cGFyc2VyXTsKICNlbmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYm
IEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKICAgICBpZiAobV9jZG1JbnN0YW5jZSkgewogICAg
ICAgICBpZiAoYXV0byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUluc3RhbmNlLT5zZXNzaW9uRm9y
S2V5SURzKG1fa2V5SURzKSkKLSAgICAgICAgICAgIFtpbnN0YW5jZVNlc3Npb24tPmNvbnRlbnRL
ZXlTZXNzaW9uKCkgcmVtb3ZlQ29udGVudEtleVJlY2lwaWVudDptX3BhcnNlci5nZXQoKV07Cisg
ICAgICAgICAgICBbaW5zdGFuY2VTZXNzaW9uLT5jb250ZW50S2V5U2Vzc2lvbigpIHJlbW92ZUNv
bnRlbnRLZXlSZWNpcGllbnQ6cGFyc2VyXTsKICAgICB9CiAjZW5kaWYKLQotICAgIFttX2RlbGVn
YXRlIGludmFsaWRhdGVdOwotICAgIG1fZGVsZWdhdGUgPSBudWxscHRyOwotICAgIG1fcGFyc2Vy
ID0gbnVsbHB0cjsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGVzdHJv
eVJlbmRlcmVycygpCkBAIC04MTcsNiArNjQ5LDE3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OmRlc3Ryb3lSZW5kZXJlcnMoKQogICAgIG1fYXVkaW9SZW5kZXJlcnMuY2xlYXIo
KTsKIH0KIAordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y2xlYXJUcmFja3MoKQor
eworICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX3ZpZGVvVHJhY2tzKQorICAgICAgICB0cmFjay0+
c2V0U2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2sobnVsbHB0cik7CisgICAgbV92aWRlb1RyYWNrcy5j
bGVhcigpOworCisgICAgZm9yIChhdXRvJiB0cmFjayA6IG1fYXVkaW9UcmFja3MpCisgICAgICAg
IHRyYWNrLT5zZXRFbmFibGVkQ2hhbmdlZENhbGxiYWNrKG51bGxwdHIpOworICAgIG1fYXVkaW9U
cmFja3MuY2xlYXIoKTsKK30KKwogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6cmVt
b3ZlZEZyb21NZWRpYVNvdXJjZSgpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsK
QEAgLTg0OCw3ICs2OTEsNyBAQCBib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpoYXNW
aWRlbygpIGNvbnN0CiAKIGJvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Omhhc1NlbGVj
dGVkVmlkZW8oKSBjb25zdAogewotICAgIHJldHVybiBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgIT0g
LTE7CisgICAgcmV0dXJuIG1fZW5hYmxlZFZpZGVvVHJhY2tJRCAhPSBub3RGb3VuZDsKIH0KIAog
Ym9vbCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6aGFzQXVkaW8oKSBjb25zdApAQCAtODU2
LDIxICs2OTksMjEgQEAgYm9vbCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6aGFzQXVkaW8o
KSBjb25zdAogICAgIHJldHVybiBtX2NsaWVudCAmJiBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJp
dmF0ZUhhc0F1ZGlvKCk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRy
YWNrRGlkQ2hhbmdlRW5hYmxlZChWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyog
dHJhY2spCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZVNl
bGVjdGVkKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjaywgYm9vbCBzZWxlY3RlZCkKIHsKLSAgICBp
bnQgdHJhY2tJRCA9IHRyYWNrLT50cmFja0lEKCk7CisgICAgYXV0byB0cmFja0lEID0gdHJhY2su
aWQoKS5zdHJpbmcoKS50b1VJbnQ2NCgpOwogCi0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
LCAidmlkZW8gdHJhY2tJRCA9ICIsIHRyYWNrSUQsICIsIHNlbGVjdGVkID0gIiwgdHJhY2stPnNl
bGVjdGVkKCkpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInZpZGVvIHRyYWNrSUQg
PSAiLCB0cmFja0lELCAiLCBzZWxlY3RlZCA9ICIsIHNlbGVjdGVkKTsKIAotICAgIGlmICghdHJh
Y2stPnNlbGVjdGVkKCkgJiYgbV9lbmFibGVkVmlkZW9UcmFja0lEID09IHRyYWNrSUQpIHsKKyAg
ICBpZiAoIXNlbGVjdGVkICYmIG1fZW5hYmxlZFZpZGVvVHJhY2tJRCA9PSB0cmFja0lEKSB7CiAg
ICAgICAgIG1fZW5hYmxlZFZpZGVvVHJhY2tJRCA9IC0xOwotICAgICAgICBbbV9wYXJzZXIgc2V0
U2hvdWxkUHJvdmlkZU1lZGlhRGF0YTpOTyBmb3JUcmFja0lEOnRyYWNrSURdOworICAgICAgICBt
X3BhcnNlci0+c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoZmFsc2UsIHRyYWNr
SUQpOwogCiAgICAgICAgIGlmIChtX2RlY29tcHJlc3Npb25TZXNzaW9uKQogICAgICAgICAgICAg
bV9kZWNvbXByZXNzaW9uU2Vzc2lvbi0+c3RvcFJlcXVlc3RpbmdNZWRpYURhdGEoKTsKLSAgICB9
IGVsc2UgaWYgKHRyYWNrLT5zZWxlY3RlZCgpKSB7CisgICAgfSBlbHNlIGlmIChzZWxlY3RlZCkg
ewogICAgICAgICBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgPSB0cmFja0lEOwotICAgICAgICBbbV9w
YXJzZXIgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YTpZRVMgZm9yVHJhY2tJRDp0cmFja0lEXTsK
KyAgICAgICAgbV9wYXJzZXItPnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKHRy
dWUsIHRyYWNrSUQpOwogCiAgICAgICAgIGlmIChtX2RlY29tcHJlc3Npb25TZXNzaW9uKSB7CiAg
ICAgICAgICAgICBtX2RlY29tcHJlc3Npb25TZXNzaW9uLT5yZXF1ZXN0TWVkaWFEYXRhV2hlblJl
YWR5KFt0aGlzLCB0cmFja0lEXSB7CkBAIC04ODIsMjEgKzcyNSwyMSBAQCB2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQoVmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdQogICAgIG1fbWVkaWFTb3VyY2UtPmhhc1NlbGVjdGVkVmlkZW9DaGFuZ2VkKCp0
aGlzKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFu
Z2VFbmFibGVkKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiB0cmFjaykKK3Zv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlRW5hYmxlZChBdWRp
b1RyYWNrUHJpdmF0ZSYgdHJhY2ssIGJvb2wgZW5hYmxlZCkKIHsKLSAgICBpbnQgdHJhY2tJRCA9
IHRyYWNrLT50cmFja0lEKCk7CisgICAgYXV0byB0cmFja0lEID0gdHJhY2suaWQoKS5zdHJpbmco
KS50b1VJbnQ2NCgpOwogCi0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiYXVkaW8gdHJh
Y2tJRCA9ICIsIHRyYWNrSUQsICIsIHNlbGVjdGVkID0gIiwgdHJhY2stPmVuYWJsZWQoKSk7Cisg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiYXVkaW8gdHJhY2tJRCA9ICIsIHRyYWNrSUQs
ICIsIHNlbGVjdGVkID0gIiwgZW5hYmxlZCk7CiAKLSAgICBpZiAoIXRyYWNrLT5lbmFibGVkKCkp
IHsKKyAgICBpZiAoIWVuYWJsZWQpIHsKICAgICAgICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dV
QVJEU19CRUdJTgogICAgICAgICBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVy
PiByZW5kZXJlciA9IG1fYXVkaW9SZW5kZXJlcnMuZ2V0KHRyYWNrSUQpOwogICAgICAgICBBTExP
V19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAotICAgICAgICBbbV9wYXJzZXIgc2V0U2hvdWxk
UHJvdmlkZU1lZGlhRGF0YTpOTyBmb3JUcmFja0lEOnRyYWNrSURdOworICAgICAgICBtX3BhcnNl
ci0+c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoZmFsc2UsIHRyYWNrSUQpOwog
ICAgICAgICBpZiAobV9tZWRpYVNvdXJjZSkKICAgICAgICAgICAgIG1fbWVkaWFTb3VyY2UtPnBs
YXllcigpLT5yZW1vdmVBdWRpb1JlbmRlcmVyKHJlbmRlcmVyLmdldCgpKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBbbV9wYXJzZXIgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YTpZRVMgZm9yVHJh
Y2tJRDp0cmFja0lEXTsKKyAgICAgICAgbV9wYXJzZXItPnNldFNob3VsZFByb3ZpZGVNZWRpYURh
dGFGb3JUcmFja0lEKHRydWUsIHRyYWNrSUQpOwogICAgICAgICBBTExPV19ORVdfQVBJX1dJVEhP
VVRfR1VBUkRTX0JFR0lOCiAgICAgICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVu
ZGVyZXI+IHJlbmRlcmVyOwogICAgICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VO
RApAQCAtOTI2LDYgKzc2OSwxMyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0
cmFja0RpZENoYW5nZUVuYWJsZWQoQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdQogICAgIH0KIH0K
IAorQVZTdHJlYW1EYXRhUGFyc2VyKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6cGFyc2Vy
KCkgY29uc3QKK3sKKyAgICBpZiAoaXM8U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQz4obV9wYXJz
ZXIuZ2V0KCkpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8U291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQz4obV9wYXJzZXIuZ2V0KCkpLnBhcnNlcigpOworICAgIHJldHVybiBuaWw7Cit9CisKIHZv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNldENETVNlc3Npb24oQ0RNU2Vzc2lvbk1l
ZGlhU291cmNlQVZGT2JqQyogc2Vzc2lvbikKIHsKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKQEAgLTk4Nyw3ICs4MzcsOCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjphdHRlbXB0VG9EZWNyeXB0KCkKICAgICBpZiAoIWluc3RhbmNlU2Vzc2lvbikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgW2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSBh
ZGRDb250ZW50S2V5UmVjaXBpZW50Om1fcGFyc2VyLmdldCgpXTsKKyAgICBpZiAoYXV0byBwYXJz
ZXIgPSB0aGlzLT5wYXJzZXIoKSkKKyAgICAgICAgW2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtl
eVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50OnBhcnNlcl07CiAgICAgaWYgKG1faGFz
U2Vzc2lvblNlbWFwaG9yZSkgewogICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25h
bCgpOwogICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUgPSBudWxscHRyOwpAQCAtMTA3NSw3
ICs5MjYsNyBAQCBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAogCiB2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpmbHVzaChjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEU3Ry
aW5nKQogewotICAgIGludCB0cmFja0lEID0gdHJhY2tJRFN0cmluZy50b0ludCgpOworICAgIGF1
dG8gdHJhY2tJRCA9IHRyYWNrSURTdHJpbmcuc3RyaW5nKCkudG9VSW50NjQoKTsKICAgICBERUJV
R19MT0coTE9HSURFTlRJRklFUiwgdHJhY2tJRCk7CiAKICAgICBpZiAodHJhY2tJRCA9PSBtX2Vu
YWJsZWRWaWRlb1RyYWNrSUQpIHsKQEAgLTExMTcsNyArOTY4LDcgQEAgQUxMT1dfTkVXX0FQSV9X
SVRIT1VUX0dVQVJEU19FTkQKIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZW5x
dWV1ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGU+JiYgc2FtcGxlLCBjb25zdCBBdG9tU3RyaW5nJiB0
cmFja0lEU3RyaW5nKQogewotICAgIGludCB0cmFja0lEID0gdHJhY2tJRFN0cmluZy50b0ludCgp
OworICAgIGF1dG8gdHJhY2tJRCA9IHRyYWNrSURTdHJpbmcuc3RyaW5nKCkudG9VSW50NjQoKTsK
ICAgICBpZiAodHJhY2tJRCAhPSBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgJiYgIW1fYXVkaW9SZW5k
ZXJlcnMuY29udGFpbnModHJhY2tJRCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTIyOSw3ICsx
MDgwLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YnVmZmVyV2FzQ29uc3Vt
ZWQoKQogCiBib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjppc1JlYWR5Rm9yTW9yZVNh
bXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRFN0cmluZykKIHsKLSAgICBpbnQgdHJhY2tJ
RCA9IHRyYWNrSURTdHJpbmcudG9JbnQoKTsKKyAgICBhdXRvIHRyYWNrSUQgPSB0cmFja0lEU3Ry
aW5nLnN0cmluZygpLnRvVUludDY0KCk7CiAgICAgaWYgKHRyYWNrSUQgPT0gbV9lbmFibGVkVmlk
ZW9UcmFja0lEKSB7CiAgICAgICAgIGlmIChtX2RlY29tcHJlc3Npb25TZXNzaW9uKQogICAgICAg
ICAgICAgcmV0dXJuIG1fZGVjb21wcmVzc2lvblNlc3Npb24tPmlzUmVhZHlGb3JNb3JlTWVkaWFE
YXRhKCk7CkBAIC0xMjY4LDcgKzExMTksNyBAQCBGbG9hdFNpemUgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6Om5hdHVyYWxTaXplKCkKICAgICByZXR1cm4gbV9jYWNoZWRTaXplLnZhbHVlT3Io
RmxvYXRTaXplKCkpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRC
ZWNvbWVSZWFkeUZvck1vcmVTYW1wbGVzKGludCB0cmFja0lEKQordm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6ZGlkQmVjb21lUmVhZHlGb3JNb3JlU2FtcGxlcyh1aW50NjRfdCB0cmFj
a0lEKQogewogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsIHRyYWNrSUQpOwogCkBAIC0xMjg3
LDcgKzExMzgsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRCZWNvbWVS
ZWFkeUZvck1vcmVTYW1wbGVzKGludCB0cmFja0lEKQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpub3RpZnlDbGllbnRXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBBdG9t
U3RyaW5nJiB0cmFja0lEU3RyaW5nKQogewotICAgIGludCB0cmFja0lEID0gdHJhY2tJRFN0cmlu
Zy50b0ludCgpOworICAgIGF1dG8gdHJhY2tJRCA9IHRyYWNrSURTdHJpbmcuc3RyaW5nKCkudG9V
SW50NjQoKTsKICAgICBpZiAodHJhY2tJRCA9PSBtX2VuYWJsZWRWaWRlb1RyYWNrSUQpIHsKICAg
ICAgICAgaWYgKG1fZGVjb21wcmVzc2lvblNlc3Npb24pIHsKICAgICAgICAgICAgIG1fZGVjb21w
cmVzc2lvblNlc3Npb24tPnJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHkoW3RoaXMsIHRyYWNrSURd
IHsKQEAgLTEzMTIsNyArMTE2Myw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
Om5vdGlmeUNsaWVudFdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0b21TCiAKIGJvb2wg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNhblNldE1pbmltdW1VcGNvbWluZ1ByZXNlbnRh
dGlvblRpbWUoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRFN0cmluZykgY29uc3QKIHsKLSAgICBp
bnQgdHJhY2tJRCA9IHRyYWNrSURTdHJpbmcudG9JbnQoKTsKKyAgICBhdXRvIHRyYWNrSUQgPSB0
cmFja0lEU3RyaW5nLnN0cmluZygpLnRvVUludDY0KCk7CiAgICAgaWYgKHRyYWNrSUQgPT0gbV9l
bmFibGVkVmlkZW9UcmFja0lEKQogICAgICAgICByZXR1cm4gW2dldEFWU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyQ2xhc3MoKSBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3IoZXhw
ZWN0TWluaW11bVVwY29taW5nU2FtcGxlQnVmZmVyUHJlc2VudGF0aW9uVGltZTopXTsKICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlk
ZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCBjNzhiOTUzYzdiYWE4ZWNi
MjkyOGJmMmMzZGQ1NTFhOTBlZDIzOGNjLi42YjExY2NhMzJiZGQ0OWQyYWRkNjEwZTlhN2E3NzZi
NTk1YjhhOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Zp
ZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZUFWRi5oIgor
I2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIApA
QCAtNDIsMTQgKzQzLDExIEBAIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOwogY2xh
c3MgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgVmlk
ZW9UcmFja1ByaXZhdGVBVkYgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKQogcHVibGljOgotICAgIHN0YXRpYyBSZWY8VmlkZW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sqIHRyYWNr
LCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQorICAgIHN0YXRpYyBSZWY8Vmlk
ZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sqIHRy
YWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2ssIHBhcmVudCkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyh0cmFjaykpOwog
ICAgIH0KIAotICAgIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIHNl
dFNlbGVjdGVkKGJvb2wpIG92ZXJyaWRlOwotCiAgICAgdm9pZCBzZXRBc3NldFRyYWNrKEFWQXNz
ZXRUcmFjayopOwogICAgIEFWQXNzZXRUcmFjayogYXNzZXRUcmFjaygpIGNvbnN0OwogCkBAIC01
OCwxNCArNTYsMTIgQEAgcHVibGljOgogICAgIEZsb2F0U2l6ZSBuYXR1cmFsU2l6ZSgpIGNvbnN0
OwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDKEFWQXNzZXRUcmFjayosIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQp
OworICAgIGV4cGxpY2l0IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKEFWQXNz
ZXRUcmFjayopOwogICAgIAogICAgIHZvaWQgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4gbV9pbXBsOwot
ICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBtX3BhcmVudDsKICAgICBpbnQgbV90cmFj
a0lEOwotICAgIGJvb2wgbV9zZWxlY3RlZDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
bW0KaW5kZXggMmM3MzkyNzk2ZTBmNTI1Zjk0YzI4YWEyMGFhZDEwZTMwZDBkMDUxYy4uYWZkMWI3
ZjNhOTMzNDkxNzFkOTEwNThmNjg1Y2ZlODBiYjhkNzMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMubW0KQEAgLTM0LDExICszNCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVmlkZW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
KiBwYXJlbnQpCitWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6VmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaykKICAgICA6IG1f
aW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKLSAgICAs
IG1fcGFyZW50KHBhcmVudCkKICAgICAsIG1fdHJhY2tJRCgtMSkKLSAgICAsIG1fc2VsZWN0ZWQo
ZmFsc2UpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CkBAIC02NSwyMSAr
NjMsNiBAQCBBVkFzc2V0VHJhY2sqIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Ojphc3NldFRyYWNrKCkgY29uc3QKICAgICByZXR1cm4gbV9pbXBsLT5hc3NldFRyYWNrKCk7CiB9
CiAKLQotYm9vbCBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2VsZWN0ZWQo
KSBjb25zdAotewotICAgIHJldHVybiBtX3NlbGVjdGVkOwotfQotCi12b2lkIFZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRTZWxlY3RlZChib29sIHNlbGVjdGVkKQotewot
ICAgIGlmIChtX3NlbGVjdGVkID09IHNlbGVjdGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X3NlbGVjdGVkID0gc2VsZWN0ZWQ7Ci0gICAgbV9wYXJlbnQtPnRyYWNrRGlkQ2hhbmdlRW5hYmxl
ZCh0aGlzKTsKLX0KLQogRmxvYXRTaXplIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpuYXR1cmFsU2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEZsb2F0U2l6ZShbYXNzZXRU
cmFjaygpIG5hdHVyYWxTaXplXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41ZjIwYmNmOWRmMTAxYWNhMTg1YjIzYzMxOWZkMjNiZDdlZTJjOWQyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9U
cmFja1ByaXZhdGVXZWJNLmNwcApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlV2ViTS5oIgorCisjaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8QXVkaW9U
cmFja1ByaXZhdGVXZWJNPiBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZSh3ZWJtOjpUcmFj
a0VudHJ5JiYgdHJhY2tFbnRyeSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1Ry
YWNrUHJpdmF0ZVdlYk0oV1RGTW92ZSh0cmFja0VudHJ5KSkpOworfQorCitBdWRpb1RyYWNrUHJp
dmF0ZVdlYk06OkF1ZGlvVHJhY2tQcml2YXRlV2ViTSh3ZWJtOjpUcmFja0VudHJ5JiYgdHJhY2tF
bnRyeSkKKyAgICA6IG1fdHJhY2soV1RGTW92ZSh0cmFja0VudHJ5KSkKK3sKKyAgICBpZiAobV90
cmFjay5pc19lbmFibGVkLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgc2V0RW5hYmxlZChtX3RyYWNr
LmlzX2VuYWJsZWQudmFsdWUoKSk7Cit9CisKK0F0b21TdHJpbmcgQXVkaW9UcmFja1ByaXZhdGVX
ZWJNOjppZCgpIGNvbnN0Cit7CisgICAgaWYgKG1fdHJhY2tJRC5pc051bGwoKSkKKyAgICAgICAg
bV90cmFja0lEID0gbV90cmFjay50cmFja191aWQuaXNfcHJlc2VudCgpID8gQXRvbVN0cmluZzo6
bnVtYmVyKG1fdHJhY2sudHJhY2tfdWlkLnZhbHVlKCkpIDogZW1wdHlBdG9tKCk7CisgICAgcmV0
dXJuIG1fdHJhY2tJRDsKK30KKworQXRvbVN0cmluZyBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06Omxh
YmVsKCkgY29uc3QKK3sKKyAgICBpZiAobV9sYWJlbC5pc051bGwoKSkKKyAgICAgICAgbV9sYWJl
bCA9IG1fdHJhY2submFtZS5pc19wcmVzZW50KCkgPyBBdG9tU3RyaW5nOjpmcm9tVVRGOChtX3Ry
YWNrLm5hbWUudmFsdWUoKS5kYXRhKCksIG1fdHJhY2submFtZS52YWx1ZSgpLmxlbmd0aCgpKSA6
IGVtcHR5QXRvbSgpOworICAgIHJldHVybiBtX2xhYmVsOworfQorCitBdG9tU3RyaW5nIEF1ZGlv
VHJhY2tQcml2YXRlV2ViTTo6bGFuZ3VhZ2UoKSBjb25zdAoreworICAgIGlmIChtX2xhbmd1YWdl
LmlzTnVsbCgpKQorICAgICAgICBtX2xhbmd1YWdlID0gbV90cmFjay5sYW5ndWFnZS5pc19wcmVz
ZW50KCkgPyBBdG9tU3RyaW5nOjpmcm9tVVRGOChtX3RyYWNrLmxhbmd1YWdlLnZhbHVlKCkuZGF0
YSgpLCBtX3RyYWNrLmxhbmd1YWdlLnZhbHVlKCkubGVuZ3RoKCkpIDogZW1wdHlBdG9tKCk7Cisg
ICAgcmV0dXJuIG1fbGFuZ3VhZ2U7Cit9CisKK2ludCBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OnRy
YWNrSW5kZXgoKSBjb25zdAoreworICAgIGlmIChtX3RyYWNrLnRyYWNrX251bWJlci5pc19wcmVz
ZW50KCkpCisgICAgICAgIHJldHVybiBtX3RyYWNrLnRyYWNrX251bWJlci52YWx1ZSgpOworICAg
IHJldHVybiAwOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFj
a1ByaXZhdGVXZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9B
dWRpb1RyYWNrUHJpdmF0ZVdlYk0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTk3OGRmNzhjM2I1NmZhNGU3MWI5
MDFkZjZhZjdjOTJlMTY5OTEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmgKQEAgLTAsMCArMSw1
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJD
RSkKKworI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSA8d2VibS9kb21f
dHlwZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1RyYWNrUHJpdmF0
ZVdlYk0gZmluYWwgOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGUgeworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVXZWJNPiBjcmVhdGUod2VibTo6VHJhY2tFbnRyeSYm
KTsKKyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNrUHJpdmF0ZVdlYk0oKSA9IGRlZmF1bHQ7CisKKyAg
ICBBdG9tU3RyaW5nIGlkKCkgY29uc3QgZmluYWw7CisgICAgQXRvbVN0cmluZyBsYWJlbCgpIGNv
bnN0IGZpbmFsOworICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBmaW5hbDsKKyAgICBp
bnQgdHJhY2tJbmRleCgpIGNvbnN0IGZpbmFsOworCitwcml2YXRlOgorICAgIEF1ZGlvVHJhY2tQ
cml2YXRlV2ViTSh3ZWJtOjpUcmFja0VudHJ5JiYpOworICAgIHdlYm06OlRyYWNrRW50cnkgbV90
cmFjazsKKyAgICBtdXRhYmxlIEF0b21TdHJpbmcgbV90cmFja0lEOworICAgIG11dGFibGUgQXRv
bVN0cmluZyBtX2xhYmVsOworICAgIG11dGFibGUgQXRvbVN0cmluZyBtX2xhbmd1YWdlOworfTsK
KworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjgxOGVkZjZlYTQ0ODA3YTBlMDYxYjQxNTRhYzg5ZWQzZTE4YTU5
OTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU291cmNlQnVmZmVyUGFyc2VyLmgiCisK
KyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKKyNp
bmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgiCisjaW5jbHVkZSAiU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK01lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZSBTb3VyY2VC
dWZmZXJQYXJzZXI6OmlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29uc3QgQ29udGVudFR5cGUmIHR5
cGUpCit7CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzID0gTWVk
aWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKKyAgICBzdXBwb3J0
cyA9IHN0ZDo6bWF4KHN1cHBvcnRzLCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppc0NvbnRlbnRU
eXBlU3VwcG9ydGVkKHR5cGUpKTsKKyAgICBzdXBwb3J0cyA9IHN0ZDo6bWF4KHN1cHBvcnRzLCBT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjppc0NvbnRlbnRUeXBlU3VwcG9ydGVkKHR5cGUpKTsK
KyAgICByZXR1cm4gc3VwcG9ydHM7Cit9CisKK1JlZlB0cjxTb3VyY2VCdWZmZXJQYXJzZXI+IFNv
dXJjZUJ1ZmZlclBhcnNlcjo6Y3JlYXRlKGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSkK
K3sKKyAgICBpZiAoV1RGOjplcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnRlbnRUeXBlLmNvbnRh
aW5lclR5cGUoKSwgImF1ZGlvL3dlYm0iKSB8fCBXVEY6OmVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
Y29udGVudFR5cGUuY29udGFpbmVyVHlwZSgpLCAidmlkZW8vd2VibSIpKQorICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkpOworfQorCit9CisKKyNlbmRp
ZiAvLyBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40N2JmNjg4YzNlNjQ5OGJmN2ZkNmQ4NzcwODNhZDVlMGMzNzcwOTdhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyLmgKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisKKyNpbmNsdWRlICJNZWRpYVBsYXllckVudW1zLmgi
CisjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oIgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbnRlbnRUeXBlOworY2xhc3MgTWVkaWFTYW1w
bGU7CisKK2NsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxTb3VyY2VCdWZmZXJQYXJzZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgTWVkaWFQbGF5
ZXJFbnVtczo6U3VwcG9ydHNUeXBlIGlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29uc3QgQ29udGVu
dFR5cGUmKTsKKworICAgIHN0YXRpYyBSZWZQdHI8U291cmNlQnVmZmVyUGFyc2VyPiBjcmVhdGUo
Y29uc3QgQ29udGVudFR5cGUmKTsKKyAgICB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQYXJzZXIoKSA9
IGRlZmF1bHQ7CisKKyAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsKKyAgICAgICAgQVZG
T2JqQywKKyAgICAgICAgV2ViTSwKKyAgICB9OworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29u
c3QgPSAwOworICAgIGVudW0gY2xhc3MgQXBwZW5kRmxhZ3MgOiB1aW50OF90IHsKKyAgICAgICAg
Tm9uZSwKKyAgICAgICAgRGlzY29udGludWl0eSwKKyAgICB9OworICAgIHZpcnR1YWwgdm9pZCBh
cHBlbmREYXRhKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmLCBBcHBlbmRGbGFncyA9IEFwcGVuZEZs
YWdzOjpOb25lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZsdXNoUGVuZGluZ01lZGlhRGF0YSgp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNr
SUQoYm9vbCwgdWludDY0X3QpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUHJvdmlkZU1l
ZGlhZGF0YUZvclRyYWNrSUQodWludDY0X3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXRQ
YXJzZXJTdGF0ZSgpID0gMDsKKworICAgIC8vIFdpbGwgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRo
cmVhZC4KKyAgICB1c2luZyBJbml0aWFsaXphdGlvblNlZ21lbnQgPSBTb3VyY2VCdWZmZXJQcml2
YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ7CisgICAgdXNpbmcgRGlkUGFyc2VJbml0
aWFsaXphdGlvbkRhdGFDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChJbml0aWFsaXphdGlv
blNlZ21lbnQmJik+OworICAgIHZvaWQgc2V0RGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxs
YmFjayhEaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrJiYgY2FsbGJhY2spCisgICAg
eworICAgICAgICBtX2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKTsKKyAgICB9CisKKyAgICAvLyBXaWxsIGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0
aHJlYWQuCisgICAgdXNpbmcgRGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2sg
PSBXVEY6OkZ1bmN0aW9uPHZvaWQodWludDY0X3QgZXJyb3JDb2RlKT47CisgICAgdm9pZCBzZXRE
aWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayhEaWRFbmNvdW50ZXJFcnJvckR1
cmluZ1BhcnNpbmdDYWxsYmFjayYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgbV9kaWRFbmNv
dW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworICAg
IH0KKworICAgIC8vIFdpbGwgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICB1c2lu
ZyBEaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmPE1l
ZGlhU2FtcGxlPiYmLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk+
OworICAgIHZvaWQgc2V0RGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKERpZFByb3ZpZGVNZWRp
YURhdGFDYWxsYmFjayYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgbV9kaWRQcm92aWRlTWVk
aWFEYXRhQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKKyAgICB9CisKKyAgICAvLyBXaWxs
IGJlIGNhbGxlZCBzeW5jaHJvbm91c2x5IG9uIHRoZSBwYXJzZXIgdGhlYWQuCisgICAgdXNpbmcg
V2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURD
YWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZCh1aW50NjRfdCB0cmFja0lEKT47CisgICAgdm9p
ZCBzZXRXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJh
Y2tJRENhbGxiYWNrKFdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRh
dGFGb3JUcmFja0lEQ2FsbGJhY2smJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIG1fd2lsbFBy
b3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spOworICAgIH0KKworICAgIC8vIFdpbGwgYmUgY2FsbGVkIHN5
bmNocm9ub3VzbHkgb24gdGhlIHBhcnNlciB0aGVhZC4KKyAgICB1c2luZyBEaWRQcm92aWRlQ29u
dGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sgPSBXVEY6
OkZ1bmN0aW9uPHZvaWQoUmVmPFVpbnQ4QXJyYXk+JiYsIHVpbnQ2NF90IHRyYWNrSUQpPjsKKyAg
ICB2b2lkIHNldERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZv
clRyYWNrSURDYWxsYmFjayhEaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlv
bkRhdGFGb3JUcmFja0lEQ2FsbGJhY2smJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIG1fZGlk
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgU291cmNl
QnVmZmVyUGFyc2VyKCkgPSBkZWZhdWx0OworCisgICAgRGlkUGFyc2VJbml0aWFsaXphdGlvbkRh
dGFDYWxsYmFjayBtX2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2s7CisgICAgRGlk
RW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2sgbV9kaWRFbmNvdW50ZXJFcnJvckR1
cmluZ1BhcnNpbmdDYWxsYmFjazsKKyAgICBEaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2sgbV9k
aWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2s7CisgICAgV2lsbFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayBtX3dpbGxQcm92aWRlQ29u
dGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2s7CisgICAg
RGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENh
bGxiYWNrIG1fZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9y
VHJhY2tJRENhbGxiYWNrOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NPVVJD
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWUwYjUxYzk2
Y2IzZTMxN2EwNWM2NGNhNzQ1Mjc0YTMwNDc1MmQyMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwCkBAIC0wLDAgKzEsNzk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaCIKKworI2lmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaCIKKyNpbmNsdWRlICJJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiTWVkaWFEZXNjcmlwdGlvbi5oIgor
I2luY2x1ZGUgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlZQOVV0aWxpdGllc0NvY29hLmgiCisjaW5jbHVkZSAiVmlk
ZW9UcmFja1ByaXZhdGVXZWJNLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGF0YVZpZXcu
aD4KKyNpbmNsdWRlIDx3ZWJtL3dlYm1fcGFyc2VyLmg+CisjaW5jbHVkZSA8d3RmL0FsZ29yaXRo
bXMuaD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvZGFyd2luL1dlYWtMaW5raW5nLmg+CisKK1dURl9XRUFLX0xJ
TktfRk9SQ0VfSU1QT1JUKHdlYm06OnN3YXApOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
YXRpYyBib29sIGlzV2VibVBhcnNlckF2YWlsYWJsZSgpCit7CisgICAgcmV0dXJuICEhd2VibTo6
c3dhcCAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYk1QYXJz
ZXJFbmFibGVkKCk7Cit9CisKK3VzaW5nIG5hbWVzcGFjZSB3ZWJtOworCitjbGFzcyBTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpTdHJlYW1pbmdWZWN0b3JSZWFkZXIgZmluYWwgOiBwdWJsaWMgd2Vi
bTo6UmVhZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB1
c2luZyBTZWdtZW50ID0gVmVjdG9yPHVuc2lnbmVkIGNoYXI+OworICAgIHZvaWQgYXBwZW5kU2Vn
bWVudChTZWdtZW50JiYgc2VnbWVudCkKKyAgICB7CisgICAgICAgIG1fZGF0YS5hcHBlbmQoV1RG
TW92ZShzZWdtZW50KSk7CisgICAgfQorCisgICAgU3RhdHVzIFJlYWQoc3RkOjpzaXplX3QgbnVt
VG9SZWFkLCB1aW50OF90KiBvdXRwdXRCdWZmZXIsIHVpbnQ2NF90KiBudW1BY3R1YWxseVJlYWQp
IGZpbmFsCisgICAgeworICAgICAgICBBU1NFUlQob3V0cHV0QnVmZmVyICYmIG51bUFjdHVhbGx5
UmVhZCk7CisgICAgICAgIGlmICghb3V0cHV0QnVmZmVyIHx8ICFudW1BY3R1YWxseVJlYWQpCisg
ICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisKKyAg
ICAgICAgKm51bUFjdHVhbGx5UmVhZCA9IDA7CisgICAgICAgIHdoaWxlICghbV9kYXRhLmlzRW1w
dHkoKSkgeworICAgICAgICAgICAgYXV0byYgY3VycmVudFNlZ21lbnQgPSBtX2RhdGEuZmlyc3Qo
KTsKKworICAgICAgICAgICAgaWYgKG1fcG9zaXRpb25XaXRoaW5TZWdtZW50ID49IGN1cnJlbnRT
ZWdtZW50LnNpemUoKSkgeworICAgICAgICAgICAgICAgIGFkdmFuY2VUb05leHRTZWdtZW50KCk7
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHNpemVfdCBudW1BdmFpbGFibGUgPSBjdXJyZW50U2VnbWVudC5zaXplKCkgLSBtX3Bvc2l0aW9u
V2l0aGluU2VnbWVudDsKKyAgICAgICAgICAgIGlmIChudW1Ub1JlYWQgPCBudW1BdmFpbGFibGUp
IHsKKyAgICAgICAgICAgICAgICBtZW1jcHkob3V0cHV0QnVmZmVyLCBjdXJyZW50U2VnbWVudC5k
YXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCwgbnVtVG9SZWFkKTsKKyAgICAgICAgICAg
ICAgICAqbnVtQWN0dWFsbHlSZWFkICs9IG51bVRvUmVhZDsKKyAgICAgICAgICAgICAgICBtX3Bv
c2l0aW9uICs9IG51bVRvUmVhZDsKKyAgICAgICAgICAgICAgICBtX3Bvc2l0aW9uV2l0aGluU2Vn
bWVudCArPSBudW1Ub1JlYWQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6
OmtPa0NvbXBsZXRlZCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1lbWNweShvdXRw
dXRCdWZmZXIsIGN1cnJlbnRTZWdtZW50LmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50
LCBudW1BdmFpbGFibGUpOworICAgICAgICAgICAgKm51bUFjdHVhbGx5UmVhZCArPSBudW1BdmFp
bGFibGU7CisgICAgICAgICAgICBtX3Bvc2l0aW9uICs9IG51bUF2YWlsYWJsZTsKKyAgICAgICAg
ICAgIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50ICs9IG51bUF2YWlsYWJsZTsKKyAgICAgICAgICAg
IG51bVRvUmVhZCAtPSBudW1BdmFpbGFibGU7CisgICAgICAgICAgICBhZHZhbmNlVG9OZXh0U2Vn
bWVudCgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFu
dW1Ub1JlYWQpCisgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVk
KTsKKyAgICAgICAgaWYgKCpudW1BY3R1YWxseVJlYWQpCisgICAgICAgICAgICByZXR1cm4gU3Rh
dHVzKFN0YXR1czo6a09rUGFydGlhbCk7CisgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjpr
V291bGRCbG9jayk7CisgICAgfQorCisgICAgU3RhdHVzIFNraXAodWludDY0X3QgbnVtVG9Ta2lw
LCB1aW50NjRfdCogbnVtQWN0dWFsbHlTa2lwcGVkKSBmaW5hbAorICAgIHsKKyAgICAgICAgQVNT
RVJUKG51bUFjdHVhbGx5U2tpcHBlZCk7CisgICAgICAgIGlmICghbnVtQWN0dWFsbHlTa2lwcGVk
KQorICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOwor
CisgICAgICAgICpudW1BY3R1YWxseVNraXBwZWQgPSAwOworICAgICAgICB3aGlsZSAoIW1fZGF0
YS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGF1dG8mIGN1cnJlbnRTZWdtZW50ID0gbV9kYXRh
LmZpcnN0KCk7CisKKyAgICAgICAgICAgIGlmIChtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCA+PSBj
dXJyZW50U2VnbWVudC5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICBhZHZhbmNlVG9OZXh0U2Vn
bWVudCgpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBzaXplX3QgbnVtQXZhaWxhYmxlID0gY3VycmVudFNlZ21lbnQuc2l6ZSgpIC0gbV9w
b3NpdGlvbldpdGhpblNlZ21lbnQ7CisKKyAgICAgICAgICAgIGlmIChudW1Ub1NraXAgPCBudW1B
dmFpbGFibGUpIHsKKyAgICAgICAgICAgICAgICAqbnVtQWN0dWFsbHlTa2lwcGVkICs9IG51bVRv
U2tpcDsKKyAgICAgICAgICAgICAgICBtX3Bvc2l0aW9uICs9IG51bVRvU2tpcDsKKyAgICAgICAg
ICAgICAgICBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCArPSBudW1Ub1NraXA7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICpudW1BY3R1YWxseVNraXBwZWQgKz0gbnVtQXZhaWxhYmxlOworICAg
ICAgICAgICAgbV9wb3NpdGlvbiArPSBudW1BdmFpbGFibGU7CisgICAgICAgICAgICBtX3Bvc2l0
aW9uV2l0aGluU2VnbWVudCArPSBudW1BdmFpbGFibGU7CisgICAgICAgICAgICBudW1Ub1NraXAg
LT0gbnVtQXZhaWxhYmxlOworICAgICAgICAgICAgYWR2YW5jZVRvTmV4dFNlZ21lbnQoKTsKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICghbnVtVG9Ta2lwKQor
ICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CisgICAgICAg
IGlmICgqbnVtQWN0dWFsbHlTa2lwcGVkKQorICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0
dXM6OmtPa1BhcnRpYWwpOworICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a1dvdWxkQmxv
Y2spOworICAgIH0KKworICAgIHVpbnQ2NF90IFBvc2l0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9wb3NpdGlvbjsgfQorCisgICAgdm9pZCByZXNldCgpCisgICAgeworICAgICAgICBtX3Bv
c2l0aW9uID0gMDsKKyAgICAgICAgbV9kYXRhLmNsZWFyKCk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIHZvaWQgYWR2YW5jZVRvTmV4dFNlZ21lbnQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFt
X2RhdGEuaXNFbXB0eSgpKTsKKyAgICAgICAgaWYgKG1fZGF0YS5pc0VtcHR5KCkpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgQVNTRVJUKG1fcG9zaXRpb25XaXRoaW5TZWdtZW50ID09
IG1fZGF0YS5maXJzdCgpLnNpemUoKSk7CisKKyAgICAgICAgbV9kYXRhLnJlbW92ZUZpcnN0KCk7
CisgICAgICAgIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50ID0gMDsKKyAgICB9CisKKyAgICBEZXF1
ZTxTZWdtZW50PiBtX2RhdGE7CisgICAgc2l6ZV90IG1fcG9zaXRpb24geyAwIH07CisgICAgc2l6
ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50IHsgMCB9OworfTsKKworY2xhc3MgTWVkaWFEZXNj
cmlwdGlvbldlYk0gZmluYWwgOiBwdWJsaWMgTWVkaWFEZXNjcmlwdGlvbiB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxNZWRpYURlc2NyaXB0
aW9uV2ViTT4gY3JlYXRlKHdlYm06OlRyYWNrRW50cnkmJiB0cmFjaykKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhRGVzY3JpcHRpb25XZWJNKFdURk1vdmUodHJhY2sp
KSk7CisgICAgfQorCisgICAgTWVkaWFEZXNjcmlwdGlvbldlYk0od2VibTo6VHJhY2tFbnRyeSYm
IHRyYWNrKQorICAgICAgICA6IG1fdHJhY2sgeyBXVEZNb3ZlKHRyYWNrKSB9CisgICAgeworICAg
IH0KKworICAgIEF0b21TdHJpbmcgY29kZWMoKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAg
aWYgKG1fY29kZWMpCisgICAgICAgICAgICByZXR1cm4gKm1fY29kZWM7CisKKyAgICAgICAgLy8g
RnJvbTogaHR0cHM6Ly93d3cubWF0cm9za2Eub3JnL3RlY2huaWNhbC9jb2RlY19zcGVjcy5odG1s
CisgICAgICAgIC8vICJFYWNoIENvZGVjIElEIE1VU1QgaW5jbHVkZSBhIE1ham9yIENvZGVjIElE
IGltbWVkaWF0ZWx5IGZvbGxvd2luZyB0aGUgQ29kZWMgSUQgUHJlZml4LgorICAgICAgICAvLyBB
IE1ham9yIENvZGVjIElEIE1BWSBiZSBmb2xsb3dlZCBieSBhbiBPUFRJT05BTCBDb2RlYyBJRCBT
dWZmaXggdG8gY29tbXVuaWNhdGUgYSByZWZpbmVtZW50CisgICAgICAgIC8vIG9mIHRoZSBNYWpv
ciBDb2RlYyBJRC4gSWYgYSBDb2RlYyBJRCBTdWZmaXggaXMgdXNlZCwgdGhlbiB0aGUgQ29kZWMg
SUQgTVVTVCBpbmNsdWRlIGEgZm9yd2FyZAorICAgICAgICAvLyBzbGFzaCAo4oCcL+KAnSkgYXMg
YSBzZXBhcmF0b3IgYmV0d2VlbiB0aGUgTWFqb3IgQ29kZWMgSUQgYW5kIHRoZSBDb2RlYyBJRCBT
dWZmaXguIFRoZSBNYWpvciBDb2RlYworICAgICAgICAvLyBJRCBNVVNUIGJlIGNvbXBvc2VkIG9m
IG9ubHkgY2FwaXRhbCBsZXR0ZXJzIChBLVopIGFuZCBudW1iZXJzICgwLTkpLiBUaGUgQ29kZWMg
SUQgU3VmZml4IE1VU1QKKyAgICAgICAgLy8gYmUgY29tcG9zZWQgb2Ygb25seSBjYXBpdGFsIGxl
dHRlcnMgKEEtWiksIG51bWJlcnMgKDAtOSksIHVuZGVyc2NvcmUgKOKAnF/igJ0pLCBhbmQgZm9y
d2FyZCBzbGFzaCAo4oCcL+KAnSkuIgorCisgICAgICAgIGlmICghbV90cmFjay5jb2RlY19pZC5p
c19wcmVzZW50KCkpIHsKKyAgICAgICAgICAgIG1fY29kZWMgPSBlbXB0eUF0b20oKTsKKyAgICAg
ICAgICAgIHJldHVybiAqbV9jb2RlYzsKKyAgICAgICAgfQorCisgICAgICAgIFN0cmluZ1ZpZXcg
Y29kZWNJRCB7IG1fdHJhY2suY29kZWNfaWQudmFsdWUoKS5kYXRhKCksICh1bnNpZ25lZCltX3Ry
YWNrLmNvZGVjX2lkLnZhbHVlKCkubGVuZ3RoKCkgfTsKKyAgICAgICAgaWYgKCFjb2RlY0lELnN0
YXJ0c1dpdGgoIlZfIikgJiYgIWNvZGVjSUQuc3RhcnRzV2l0aCgiQV8iKSAmJiAhY29kZWNJRC5z
dGFydHNXaXRoKCJTXyIpKSB7CisgICAgICAgICAgICBtX2NvZGVjID0gZW1wdHlBdG9tKCk7Cisg
ICAgICAgICAgICByZXR1cm4gKm1fY29kZWM7CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHNs
YXNoTG9jYXRpb24gPSBjb2RlY0lELmZpbmQoJy8nKTsKKyAgICAgICAgYXV0byBsZW5ndGggPSBz
bGFzaExvY2F0aW9uID09IG5vdEZvdW5kID8gY29kZWNJRC5sZW5ndGgoKSAtIDIgOiBzbGFzaExv
Y2F0aW9uIC0gMjsKKyAgICAgICAgbV9jb2RlYyA9IEF0b21TdHJpbmcgeyBjb2RlY0lELnN1YnN0
cmluZygyLCBsZW5ndGgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgfTsKKyAgICAgICAgcmV0
dXJuICptX2NvZGVjOworICAgIH0KKyAgICBib29sIGlzVmlkZW8oKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3RyYWNrLnRyYWNrX3R5cGUuaXNfcHJlc2VudCgpICYmIG1fdHJhY2sudHJhY2tfdHlw
ZS52YWx1ZSgpID09IFRyYWNrVHlwZTo6a1ZpZGVvOyB9CisgICAgYm9vbCBpc0F1ZGlvKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV90cmFjay50cmFja190eXBlLmlzX3ByZXNlbnQoKSAmJiBtX3Ry
YWNrLnRyYWNrX3R5cGUudmFsdWUoKSA9PSBUcmFja1R5cGU6OmtBdWRpbzsgfQorICAgIGJvb2wg
aXNUZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90cmFjay50cmFja190eXBlLmlzX3ByZXNl
bnQoKSAmJiBtX3RyYWNrLnRyYWNrX3R5cGUudmFsdWUoKSA9PSBUcmFja1R5cGU6OmtTdWJ0aXRs
ZTsgfQorCisgICAgY29uc3Qgd2VibTo6VHJhY2tFbnRyeSYgdHJhY2soKSB7IHJldHVybiBtX3Ry
YWNrOyB9CisKK3ByaXZhdGU6CisgICAgbXV0YWJsZSBPcHRpb25hbDxBdG9tU3RyaW5nPiBtX2Nv
ZGVjOworICAgIHdlYm06OlRyYWNrRW50cnkgbV90cmFjazsKK307CisKK01lZGlhUGxheWVyRW51
bXM6OlN1cHBvcnRzVHlwZSBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppc0NvbnRlbnRUeXBlU3Vw
cG9ydGVkKGNvbnN0IENvbnRlbnRUeXBlJiB0eXBlKQoreworICAgIGlmICghaXNXZWJtUGFyc2Vy
QXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5
cGU6OklzTm90U3VwcG9ydGVkOworCisgICAgaWYgKCFXVEY6OmVxdWFsSWdub3JpbmdBU0NJSUNh
c2UodHlwZS5jb250YWluZXJUeXBlKCksICJhdWRpby93ZWJtIikKKyAgICAgICAgJiYgIVdURjo6
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLmNvbnRhaW5lclR5cGUoKSwgInZpZGVvL3dlYm0i
KSkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RT
dXBwb3J0ZWQ7CisKKyAgICBTdHJpbmcgY29kZWNzUGFyYW1ldGVyID0gdHlwZS5wYXJhbWV0ZXIo
Q29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsKKyAgICBpZiAoIWNvZGVjc1BhcmFtZXRl
cikKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6TWF5QmVT
dXBwb3J0ZWQ7CisKKyAgICBhdXRvIHNwbGl0UmVzdWx0cyA9IFN0cmluZ1ZpZXcoY29kZWNzUGFy
YW1ldGVyKS5zcGxpdCgnLCcpOworICAgIGZvciAoYXV0byBzcGxpdCA6IHNwbGl0UmVzdWx0cykg
eworICAgICAgICBpZiAoc3BsaXQuc3RhcnRzV2l0aCgidnAwOSIpKSB7CisgICAgICAgICAgICBp
ZiAoIWlzVlA5RGVjb2RlckF2YWlsYWJsZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBNZWRp
YVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOworICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IEFkZCBPcHVzIFN1cHBvcnQK
KyAgICAgICAgLy8gRklYTUU6IEFkZCBWb3JiaXMgU3VwcG9ydAorICAgICAgICByZXR1cm4gTWVk
aWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKKyAgICB9CisgICAg
cmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQ7Cit9CisK
K1NvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKQorICAgIDog
bV9yZWFkZXIoV1RGOjptYWtlVW5pcXVlUmVmPFN0cmVhbWluZ1ZlY3RvclJlYWRlcj4oKSkKK3sK
KyAgICBpZiAoaXNXZWJtUGFyc2VyQXZhaWxhYmxlKCkpCisgICAgICAgIG1fcGFyc2VyID0gV1RG
OjptYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxXZWJtUGFyc2VyPigpOworfQorCitT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjp+U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpID0gZGVmYXVs
dDsKKwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjphcHBlbmREYXRhKFZlY3Rvcjx1bnNp
Z25lZCBjaGFyPiYmIGJ1ZmZlciwgQXBwZW5kRmxhZ3MgYXBwZW5kRmxhZ3MpCit7CisgICAgaWYg
KCFtX3BhcnNlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGFwcGVuZEZsYWdzID09IEFw
cGVuZEZsYWdzOjpEaXNjb250aW51aXR5KSB7CisgICAgICAgIG1fcmVhZGVyLT5yZXNldCgpOwor
ICAgICAgICBtX3BhcnNlci0+RGlkU2VlaygpOworICAgIH0KKyAgICBtX3JlYWRlci0+YXBwZW5k
U2VnbWVudChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fc3RhdHVzID0gbV9wYXJzZXItPkZlZWQo
dGhpcywgJm1fcmVhZGVyKTsKKyAgICBpZiAobV9zdGF0dXMub2soKSB8fCBtX3N0YXR1cy5jb2Rl
ID09IFN0YXR1czo6a0VuZE9mRmlsZSB8fCBtX3N0YXR1cy5jb2RlID09IFN0YXR1czo6a1dvdWxk
QmxvY2spCisgICAgICAgIHJldHVybjsKKworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29kZSA9IG1fc3RhdHVzLmNvZGVdIHsKKyAg
ICAgICAgaWYgKG1fZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2spCisgICAg
ICAgICAgICBtX2RpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKGNvZGUpOwor
ICAgIH0pOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmZsdXNoUGVuZGluZ01l
ZGlhRGF0YSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjpzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChib29sLCB1
aW50NjRfdCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIFNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OnNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lEKHVpbnQ2NF90KQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06OnJlc2V0UGFyc2VyU3RhdGUoKQoreworICAgIG1fcGFyc2Vy
LT5EaWRTZWVrKCk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpOb25lOworfQorCithdXRvIFNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06OnRyYWNrRGF0YUZvclRyYWNrTnVtYmVyKHVpbnQ2NF90IHRyYWNr
TnVtYmVyKSAtPiBUcmFja0RhdGEqCit7CisgICAgZm9yIChhdXRvJiB0cmFjayA6IG1fdHJhY2tz
KSB7CisgICAgICAgIGlmICh0cmFjay50cmFjay50cmFja19udW1iZXIuaXNfcHJlc2VudCgpICYm
IHRyYWNrLnRyYWNrLnRyYWNrX251bWJlci52YWx1ZSgpID09IHRyYWNrTnVtYmVyKQorICAgICAg
ICAgICAgcmV0dXJuICZ0cmFjazsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKKwor
U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRWxlbWVudEJlZ2luKGNvbnN0IEVsZW1l
bnRNZXRhZGF0YSYgbWV0YWRhdGEsIEFjdGlvbiogYWN0aW9uKQoreworICAgIFVOVVNFRF9QQVJB
TShtZXRhZGF0YSk7CisgICAgQVNTRVJUKGFjdGlvbik7CisgICAgaWYgKCFhY3Rpb24pCisgICAg
ICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKworICAgIGlmICgo
bV9zdGF0ZSA9PSBTdGF0ZTo6Tm9uZSAmJiBtZXRhZGF0YS5pZCAhPSBJZDo6a0VibWwpCisgICAg
ICAgIHx8IChtX3N0YXRlID09IFN0YXRlOjpSZWFkRWJtbCAmJiBtZXRhZGF0YS5pZCAhPSBJZDo6
a1NlZ21lbnQpCisgICAgICAgIHx8IChtX3N0YXRlID09IFN0YXRlOjpSZWFkaW5nU2VnbWVudCAm
JiBtZXRhZGF0YS5pZCAhPSBJZDo6a0luZm8pCisgICAgICAgIHx8IChtX3N0YXRlID09IFN0YXRl
OjpSZWFkSW5mbyAmJiBtZXRhZGF0YS5pZCAhPSBJZDo6a1RyYWNrcykKKyAgICAgICAgfHwgKG1f
c3RhdGUgPT0gU3RhdGU6OlJlYWRUcmFjayAmJiBtZXRhZGF0YS5pZCAhPSBJZDo6a1RyYWNrRW50
cnkgJiYgbWV0YWRhdGEuaWQgIT0gSWQ6OmtDbHVzdGVyKQorICAgICAgICB8fCAobWV0YWRhdGEu
aWQgPT0gSWQ6OmtDdWVzIHx8IG1ldGFkYXRhLmlkID09IElkOjprQ2hhcHRlcnMpKSB7CisgICAg
ICAgICphY3Rpb24gPSBBY3Rpb246OmtTa2lwOworICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1
czo6a09rQ29tcGxldGVkKTsKKyAgICB9CisKKyAgICBpZiAobWV0YWRhdGEuaWQgPT0gSWQ6OmtF
Ym1sKQorICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWRpbmdFYm1sOworICAgIGVsc2UgaWYg
KG1ldGFkYXRhLmlkID09IElkOjprU2VnbWVudCkKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpS
ZWFkaW5nU2VnbWVudDsKKyAgICBlbHNlIGlmIChtZXRhZGF0YS5pZCA9PSBJZDo6a0luZm8pCisg
ICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZGluZ0luZm87CisgICAgZWxzZSBpZiAobWV0YWRh
dGEuaWQgPT0gSWQ6OmtUcmFja3MpCisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZGluZ1Ry
YWNrczsKKyAgICBlbHNlIGlmIChtZXRhZGF0YS5pZCA9PSBJZDo6a1RyYWNrRW50cnkpCisgICAg
ICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZGluZ1RyYWNrOworICAgIGVsc2UgaWYgKG1ldGFkYXRh
LmlkID09IElkOjprQ2x1c3RlcikKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkaW5nQ2x1
c3RlcjsKKworICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworfQorCitT
dGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FYm1sKGNvbnN0IEVsZW1lbnRNZXRhZGF0
YSYgbWV0YWRhdGEsIGNvbnN0IEVibWwmIGVibWwpCit7CisgICAgVU5VU0VEX1BBUkFNKG1ldGFk
YXRhKTsKKyAgICBpZiAoZWJtbC5kb2NfdHlwZS5pc19wcmVzZW50KCkgJiYgZWJtbC5kb2NfdHlw
ZS52YWx1ZSgpLmNvbXBhcmUoIndlYm0iKSkKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6
OkNvZGUoRXJyb3JDb2RlOjpJbnZhbGlkRG9jVHlwZSkpOworCisgICAgbV9pbml0aWFsaXphdGlv
blNlZ21lbnRFbmNvdW50ZXJlZCA9IHRydWU7CisgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnQg
PSBXVEY6Om1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEluaXRpYWxpemF0aW9uU2Vn
bWVudD4oKTsKKyAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWRFYm1sOworCisgICAgcmV0dXJuIFN0
YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7Cit9CisKK1N0YXR1cyBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpPblNlZ21lbnRCZWdpbihjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBB
Y3Rpb24qIGFjdGlvbikKK3sKKyAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOworICAgIGlmICgh
bV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCkKKyAgICAgICAgcmV0dXJuIFN0YXR1
cyhTdGF0dXM6OkNvZGUoRXJyb3JDb2RlOjpJbnZhbGlkSW5pdFNlZ21lbnQpKTsKKworICAgIEFT
U0VSVChhY3Rpb24pOworICAgIGlmICghYWN0aW9uKQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0
YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisgICAgKmFjdGlvbiA9IEFjdGlvbjo6a1JlYWQ7CisK
KyAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKK30KKworU3RhdHVzIFNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uSW5mbyhjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFk
YXRhLCBjb25zdCBJbmZvJiBpbmZvKQoreworICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7Cisg
ICAgaWYgKCFtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkIHx8ICFtX2luaXRpYWxp
emF0aW9uU2VnbWVudCkKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OkNvZGUoRXJyb3JD
b2RlOjpJbnZhbGlkSW5pdFNlZ21lbnQpKTsKKworICAgIGF1dG8gdGltZWNvZGVTY2FsZSA9IGlu
Zm8udGltZWNvZGVfc2NhbGUuaXNfcHJlc2VudCgpID8gaW5mby50aW1lY29kZV9zY2FsZS52YWx1
ZSgpIDogMTAwMDAwMDsKKyAgICBtX3RpbWVzY2FsZSA9IDEwMDAwMDAwMDAgLyB0aW1lY29kZVNj
YWxlOworICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50LT5kdXJhdGlvbiA9IGluZm8uZHVyYXRp
b24uaXNfcHJlc2VudCgpID8gTWVkaWFUaW1lKGluZm8uZHVyYXRpb24udmFsdWUoKSwgbV90aW1l
c2NhbGUpIDogTWVkaWFUaW1lOjppbmRlZmluaXRlVGltZSgpOworICAgIG1fc3RhdGUgPSBTdGF0
ZTo6UmVhZEluZm87CisKKyAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsK
K30KKworU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQ2x1c3RlckJlZ2luKGNvbnN0
IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0IENsdXN0ZXImIGNsdXN0ZXIsIEFjdGlv
biogYWN0aW9uKQoreworICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CisgICAgVU5VU0VEX1BB
UkFNKGNsdXN0ZXIpOworICAgIEFTU0VSVChhY3Rpb24pOworICAgIGlmICghYWN0aW9uKQorICAg
ICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisKKyAgICBpZiAo
bV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCAmJiBtX2RpZFBhcnNlSW5pdGlhbGl6
YXRpb25EYXRhQ2FsbGJhY2spIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpbml0aWFsaXphdGlvblNlZ21lbnQgPSBXVEZN
b3ZlKCptX2luaXRpYWxpemF0aW9uU2VnbWVudCldICgpIG11dGFibGUgeworICAgICAgICAgICAg
bV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFdURk1vdmUoaW5pdGlhbGl6YXRp
b25TZWdtZW50KSk7CisgICAgICAgIH0pOworICAgIH0KKyAgICBtX2luaXRpYWxpemF0aW9uU2Vn
bWVudEVuY291bnRlcmVkID0gZmFsc2U7CisgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnQgPSBu
dWxscHRyOworCisgICAgaWYgKGNsdXN0ZXIudGltZWNvZGUuaXNfcHJlc2VudCgpKQorICAgICAg
ICBtX2N1cnJlbnRUaW1lY29kZSA9IGNsdXN0ZXIudGltZWNvZGUudmFsdWUoKTsKKworICAgICph
Y3Rpb24gPSBBY3Rpb246OmtSZWFkOworCisgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0Nv
bXBsZXRlZCk7Cit9CisKK1N0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblRyYWNrRW50
cnkoY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uc3QgVHJhY2tFbnRyeSYgdHJh
Y2tFbnRyeSkKK3sKKyAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOworICAgIG1fc3RhdGUgPSBT
dGF0ZTo6UmVhZFRyYWNrOworICAgIGlmICghdHJhY2tFbnRyeS50cmFja190eXBlLmlzX3ByZXNl
bnQoKSkKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CisKKyAg
ICBhdXRvIHRyYWNrVHlwZSA9IHRyYWNrRW50cnkudHJhY2tfdHlwZS52YWx1ZSgpOworICAgIGlm
ICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprVmlkZW8pCisgICAgICAgIG1faW5pdGlhbGl6YXRp
b25TZWdtZW50LT52aWRlb1RyYWNrcy5hcHBlbmQoeyBNZWRpYURlc2NyaXB0aW9uV2ViTTo6Y3Jl
YXRlKFRyYWNrRW50cnkodHJhY2tFbnRyeSkpLCBWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0
ZShUcmFja0VudHJ5KHRyYWNrRW50cnkpKSB9KTsKKyAgICBlbHNlIGlmICh0cmFja1R5cGUgPT0g
VHJhY2tUeXBlOjprQXVkaW8pCisgICAgICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50LT5hdWRp
b1RyYWNrcy5hcHBlbmQoeyBNZWRpYURlc2NyaXB0aW9uV2ViTTo6Y3JlYXRlKFRyYWNrRW50cnko
dHJhY2tFbnRyeSkpLCBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZShUcmFja0VudHJ5KHRy
YWNrRW50cnkpKSB9KTsKKyAgICBtX3RyYWNrcy5hcHBlbmQoeyBUcmFja0VudHJ5KHRyYWNrRW50
cnkpLCB7IH0sIG51bGxwdHIsIG51bGxwdHIsIDAgfSk7CisKKyAgICByZXR1cm4gU3RhdHVzKFN0
YXR1czo6a09rQ29tcGxldGVkKTsKK30KKword2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNl
cldlYk06Ok9uQmxvY2tCZWdpbihjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25z
dCBCbG9jayYgYmxvY2ssIEFjdGlvbiogYWN0aW9uKQoreworICAgIFVOVVNFRF9QQVJBTShtZXRh
ZGF0YSk7CisgICAgQVNTRVJUKGFjdGlvbik7CisgICAgaWYgKCFhY3Rpb24pCisgICAgICAgIHJl
dHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKworICAgICphY3Rpb24gPSBB
Y3Rpb246OmtSZWFkOworCisgICAgbV9jdXJyZW50QmxvY2sgPSBtYWtlT3B0aW9uYWw8QmxvY2tW
YXJpYW50PihCbG9jayhibG9jaykpOworCisgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0Nv
bXBsZXRlZCk7Cit9CisKK3dlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJs
b2NrRW5kKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0IEJsb2NrJiBibG9j
aykKK3sKKyAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOworICAgIFVOVVNFRF9QQVJBTShibG9j
ayk7CisKKyAgICBtX2N1cnJlbnRCbG9jayA9IFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBT
dGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworfQorCit3ZWJtOjpTdGF0dXMgU291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6T25TaW1wbGVCbG9ja0JlZ2luKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYg
bWV0YWRhdGEsIGNvbnN0IFNpbXBsZUJsb2NrJiBibG9jaywgQWN0aW9uKiBhY3Rpb24pCit7Cisg
ICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKKyAgICBBU1NFUlQoYWN0aW9uKTsKKyAgICBpZiAo
IWFjdGlvbikKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkp
OworCisgICAgKmFjdGlvbiA9IEFjdGlvbjo6a1JlYWQ7CisKKyAgICBtX2N1cnJlbnRCbG9jayA9
IG1ha2VPcHRpb25hbDxCbG9ja1ZhcmlhbnQ+KFNpbXBsZUJsb2NrKGJsb2NrKSk7CisKKyAgICBy
ZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKK30KKword2VibTo6U3RhdHVzIFNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uU2ltcGxlQmxvY2tFbmQoY29uc3QgRWxlbWVudE1ldGFk
YXRhJiBtZXRhZGF0YSwgY29uc3QgU2ltcGxlQmxvY2smIGJsb2NrKQoreworICAgIFVOVVNFRF9Q
QVJBTShtZXRhZGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKGJsb2NrKTsKKworICAgIG1fY3VycmVu
dEJsb2NrID0gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0Nv
bXBsZXRlZCk7Cit9CisKK3dlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJs
b2NrR3JvdXBCZWdpbihjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCB3ZWJt
OjpBY3Rpb24qIGFjdGlvbikKK3sKKyAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOworICAgIEFT
U0VSVChhY3Rpb24pOworICAgIGlmICghYWN0aW9uKQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0
YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisKKyAgICAqYWN0aW9uID0gQWN0aW9uOjprUmVhZDsK
KyAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKK30KKword2VibTo6U3Rh
dHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQmxvY2tHcm91cEVuZChjb25zdCB3ZWJtOjpF
bGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCB3ZWJtOjpCbG9ja0dyb3VwJiBibG9ja0dy
b3VwKQoreworICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKGJs
b2NrR3JvdXApOworICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworfQor
CitzdGF0aWMgdWludDhfdCBjb252ZXJ0VG9Db2xvclByaW1hcmllcyhjb25zdCBQcmltYXJpZXMm
IGNvZWZmaWNpZW50cykKK3sKKyAgICBzd2l0Y2ggKGNvZWZmaWNpZW50cykgeworICAgIGNhc2Ug
UHJpbWFyaWVzOjprQnQ3MDk6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25Db2xvclBy
aW1hcmllczo6QlRfNzA5XzY7CisgICAgY2FzZSBQcmltYXJpZXM6OmtVbnNwZWNpZmllZDoKKyAg
ICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpVbnNwZWNpZmllZDsK
KyAgICBjYXNlIFByaW1hcmllczo6a0J0NDcwTToKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJh
dGlvbkNvbG9yUHJpbWFyaWVzOjpCVF80NzBfNl9NOworICAgIGNhc2UgUHJpbWFyaWVzOjprQnQ0
NzBCZzoKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpCVF80
NzBfN19CRzsKKyAgICBjYXNlIFByaW1hcmllczo6a1NtcHRlMTcwTToKKyAgICAgICAgcmV0dXJu
IFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpCVF82MDFfNzsKKyAgICBjYXNlIFByaW1h
cmllczo6a1NtcHRlMjQwTToKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJp
bWFyaWVzOjpTTVBURV9TVF8yNDA7CisgICAgY2FzZSBQcmltYXJpZXM6OmtGaWxtOgorICAgICAg
ICByZXR1cm4gVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OkZpbG07CisgICAgY2FzZSBQ
cmltYXJpZXM6OmtCdDIwMjA6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25Db2xvclBy
aW1hcmllczo6QlRfMjAyMF9Ob25jb25zdGFudF9MdW1pbmFuY2U7CisgICAgY2FzZSBQcmltYXJp
ZXM6OmtTbXB0ZVN0NDI4MToKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJp
bWFyaWVzOjpTTVBURV9TVF80MjhfMTsKKyAgICBjYXNlIFByaW1hcmllczo6a1NtcHRlUnA0MzE6
CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6U01QVEVfUlBf
NDMxXzI7CisgICAgY2FzZSBQcmltYXJpZXM6OmtTbXB0ZUVnNDMyOgorICAgICAgICByZXR1cm4g
VlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OlNNUFRFX0VHXzQzMl8xOworICAgIGNhc2Ug
UHJpbWFyaWVzOjprSmVkZWNQMjJQaG9zcGhvcnM6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3Vy
YXRpb25Db2xvclByaW1hcmllczo6RUJVX1RlY2hfMzIxM19FOworICAgIH0KK30KKworc3RhdGlj
IHVpbnQ4X3QgY29udmVydFRvVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MoY29uc3QgVHJhbnNmZXJD
aGFyYWN0ZXJpc3RpY3MmIGNoYXJhY3RlcmlzdGljcykKK3sKKyAgICBzd2l0Y2ggKGNoYXJhY3Rl
cmlzdGljcykgeworICAgIGNhc2UgVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OmtCdDcwOToKKyAg
ICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpCVF83
MDlfNjsKKyAgICBjYXNlIFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjprVW5zcGVjaWZpZWQ6Cisg
ICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6VW5z
cGVjaWZpZWQ7CisgICAgY2FzZSBUcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6a0dhbW1hMjJjdXJ2
ZToKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNz
OjpCVF80NzBfNl9NOworICAgIGNhc2UgVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OmtHYW1tYTI4
Y3VydmU6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3Rlcmlz
dGljczo6QlRfNDcwXzdfQkc7CisgICAgY2FzZSBUcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6a1Nt
cHRlMTcwTToKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVy
aXN0aWNzOjpCVF82MDFfNzsKKyAgICBjYXNlIFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjprU21w
dGUyNDBNOgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJp
c3RpY3M6OlNNUFRFX1NUXzI0MDsKKyAgICBjYXNlIFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpr
TGluZWFyOgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJp
c3RpY3M6OkxpbmVhcjsKKyAgICBjYXNlIFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjprTG9nOgor
ICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6Okxv
Z3JpdGhtaWM7CisgICAgY2FzZSBUcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6a0xvZ1NxcnQ6Cisg
ICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6TG9n
cml0aG1pY19TcXJ0OworICAgIGNhc2UgVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OmtJZWM2MTk2
NjI0OgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3Rp
Y3M6OklFQ182MTk2Nl8yXzQ7CisgICAgY2FzZSBUcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6a0J0
MTM2MUV4dGVuZGVkQ29sb3VyR2FtdXQ6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25U
cmFuc2ZlckNoYXJhY3RlcmlzdGljczo6QlRfMTM2MV8wOworICAgIGNhc2UgVHJhbnNmZXJDaGFy
YWN0ZXJpc3RpY3M6OmtJZWM2MTk2NjIxOgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9u
VHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OklFQ182MTk2Nl8yXzE7CisgICAgY2FzZSBUcmFuc2Zl
ckNoYXJhY3RlcmlzdGljczo6azEwQml0QnQyMDIwOgorICAgICAgICByZXR1cm4gVlBDb25maWd1
cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzIwMjBfMTBiaXQ7CisgICAgY2FzZSBU
cmFuc2ZlckNoYXJhY3RlcmlzdGljczo6azEyQml0QnQyMDIwOgorICAgICAgICByZXR1cm4gVlBD
b25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzIwMjBfMTJiaXQ7CisgICAg
Y2FzZSBUcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6a1NtcHRlU3QyMDg0OgorICAgICAgICByZXR1
cm4gVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OlNNUFRFX1NUXzIwODQ7
CisgICAgY2FzZSBUcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6a1NtcHRlU3Q0MjgxOgorICAgICAg
ICByZXR1cm4gVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OlNNUFRFX1NU
XzQyOF8xOworICAgIGNhc2UgVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OmtBcmliU3RkQjY3SGxn
OgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6
OkJUXzIxMDBfSExHOworICAgIH0KK30KKworc3RhdGljIHVpbnQ4X3QgY29udmVydFRvTWF0cml4
Q29lZmZpY2llbnRzKGNvbnN0IE1hdHJpeENvZWZmaWNpZW50cyYgY29lZmZpY2llbnRzKQorewor
ICAgIHN3aXRjaCAoY29lZmZpY2llbnRzKSB7CisgICAgY2FzZSBNYXRyaXhDb2VmZmljaWVudHM6
OmtSZ2I6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6
OklkZW50aXR5OworICAgIGNhc2UgTWF0cml4Q29lZmZpY2llbnRzOjprQnQ3MDk6CisgICAgICAg
IHJldHVybiBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OkJUXzcwOV82OworICAg
IGNhc2UgTWF0cml4Q29lZmZpY2llbnRzOjprVW5zcGVjaWZpZWQ6CisgICAgICAgIHJldHVybiBW
UENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OlVuc3BlY2lmaWVkOworICAgIGNhc2Ug
TWF0cml4Q29lZmZpY2llbnRzOjprRmNjOgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9u
TWF0cml4Q29lZmZpY2llbnRzOjpGQ0M7CisgICAgY2FzZSBNYXRyaXhDb2VmZmljaWVudHM6OmtC
dDQ3MEJnOgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRz
OjpCVF80NzBfN19CRzsKKyAgICBjYXNlIE1hdHJpeENvZWZmaWNpZW50czo6a1NtcHRlMTcwTToK
KyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6QlRfNjAx
Xzc7CisgICAgY2FzZSBNYXRyaXhDb2VmZmljaWVudHM6OmtTbXB0ZTI0ME06CisgICAgICAgIHJl
dHVybiBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OlNNUFRFX1NUXzI0MDsKKyAg
ICBjYXNlIE1hdHJpeENvZWZmaWNpZW50czo6a1lDZ0NvOgorICAgICAgICByZXR1cm4gVlBDb25m
aWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpZQ2dDbzsKKyAgICBjYXNlIE1hdHJpeENvZWZm
aWNpZW50czo6a0J0MjAyME5vbmNvbnN0YW50THVtaW5hbmNlOgorICAgICAgICByZXR1cm4gVlBD
b25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpCVF8yMDIwX05vbmNvbnN0YW50X0x1bWlu
YW5jZTsKKyAgICBjYXNlIE1hdHJpeENvZWZmaWNpZW50czo6a0J0MjAyMENvbnN0YW50THVtaW5h
bmNlOgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpC
VF8yMDIwX0NvbnN0YW50X0x1bWluYW5jZTsKKyAgICB9Cit9CisKK3N0YXRpYyB1aW50OF90IGNv
bnZlcnRTdWJzYW1wbGluZ1hZVG9DaHJvbWFTdWJzYW1wbGluZyh1aW50NjRfdCB4LCB1aW50NjRf
dCB5KQoreworICAgIGlmICh4ICYgeSkKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvbkNo
cm9tYVN1YnNhbXBsaW5nOjpTdWJzYW1wbGluZ180MjBfQ29sb2NhdGVkOworICAgIGlmICh4ICYg
IXkpCisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25DaHJvbWFTdWJzYW1wbGluZzo6U3Vi
c2FtcGxpbmdfNDIyOworICAgIGlmICgheCAmICF5KQorICAgICAgICByZXR1cm4gVlBDb25maWd1
cmF0aW9uQ2hyb21hU3Vic2FtcGxpbmc6OlN1YnNhbXBsaW5nXzQ0NDsKKyAgICAvLyBUaGlzIGlu
ZGljYXRlcyA0OjQ6MCBzdWJzYW1wbGluZywgd2hpY2ggaXMgbm90IGV4cHJlc3NhYmxlIGluIHRo
ZSAndnBjQycgYm94LiBEZWZhdWx0IHRvIDQ6MjowLgorICAgIHJldHVybiBWUENvbmZpZ3VyYXRp
b25DaHJvbWFTdWJzYW1wbGluZzo6U3Vic2FtcGxpbmdfNDIwX0NvbG9jYXRlZDsKK30KKworc3Rh
dGljIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVGb3JtYXREZXNjcmlw
dGlvbkZyb21WUDlIZWFkZXJQYXJzZXIoY29uc3QgdnA5X3BhcnNlcjo6VnA5SGVhZGVyUGFyc2Vy
JiBwYXJzZXIsIGNvbnN0IHdlYm06OkVsZW1lbnQ8Q29sb3VyPiYgY29sb3IpCit7CisgICAgLy8g
UmVmOiAiVlAgQ29kZWMgSVNPIE1lZGlhIEZpbGUgRm9ybWF0IEJpbmRpbmcsIHYxLjAsIDIwMTct
MDMtMzEiCisgICAgLy8gPGh0dHBzOi8vd3d3LndlYm1wcm9qZWN0Lm9yZy92cDkvbXA0Lz4KKyAg
ICAvLworICAgIC8vIGNsYXNzIFZQQ29kZWNDb25maWd1cmF0aW9uQm94IGV4dGVuZHMgRnVsbEJv
eCgndnBjQycsIHZlcnNpb24gPSAxLCAwKQorICAgIC8vIHsKKyAgICAvLyAgICAgVlBDb2RlY0Nv
bmZpZ3VyYXRpb25SZWNvcmQoKSB2cGNDb25maWc7CisgICAgLy8gfQorICAgIC8vCisgICAgLy8g
YWxpZ25lZCAoOCkgY2xhc3MgVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQgeworICAgIC8vICAg
ICB1bnNpZ25lZCBpbnQgKDgpICAgICBwcm9maWxlOworICAgIC8vICAgICB1bnNpZ25lZCBpbnQg
KDgpICAgICBsZXZlbDsKKyAgICAvLyAgICAgdW5zaWduZWQgaW50ICg0KSAgICAgYml0RGVwdGg7
CisgICAgLy8gICAgIHVuc2lnbmVkIGludCAoMykgICAgIGNocm9tYVN1YnNhbXBsaW5nOworICAg
IC8vICAgICB1bnNpZ25lZCBpbnQgKDEpICAgICB2aWRlb0Z1bGxSYW5nZUZsYWc7CisgICAgLy8g
ICAgIHVuc2lnbmVkIGludCAoOCkgICAgIGNvbG91clByaW1hcmllczsKKyAgICAvLyAgICAgdW5z
aWduZWQgaW50ICg4KSAgICAgdHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M7CisgICAgLy8gICAgIHVu
c2lnbmVkIGludCAoOCkgICAgIG1hdHJpeENvZWZmaWNpZW50czsKKyAgICAvLyAgICAgdW5zaWdu
ZWQgaW50ICgxNikgICAgY29kZWNJbnRpYWxpemF0aW9uRGF0YVNpemU7CisgICAgLy8gICAgIHVu
c2lnbmVkIGludCAoOClbXSAgIGNvZGVjSW50aWFsaXphdGlvbkRhdGE7CisgICAgLy8gfQorICAg
IC8vCisgICAgLy8gY29kZWNJbnRpYWxpemF0aW9uRGF0YVNpemXigItGb3IgVlA4IGFuZCBWUDkg
dGhpcyBmaWVsZCBtdXN0IGJlIDAuCisgICAgLy8gY29kZWNJbnRpYWxpemF0aW9uRGF0YeKAi2Jp
bmFyeSBjb2RlYyBpbml0aWFsaXphdGlvbiBkYXRhLiBOb3QgdXNlZCBmb3IgVlA4IGFuZCBWUDku
CisgICAgLy8KKyAgICAvLyBGSVhNRTogQ29udmVydCBleGlzdGluZyBzdHJ1Y3QgdG8gYW4gSVNP
Qm94IGFuZCByZXBsYWNlIHRoZSB3cml0aW5nIGNvZGUgYmVsb3cKKyAgICAvLyB3aXRoIGEgc3Vi
Y2xhc3Mgb2YgSVNPRnVsbEJveC4KKworICAgIFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkIHJl
Y29yZDsKKworICAgIHJlY29yZC5wcm9maWxlID0gcGFyc2VyLnByb2ZpbGUoKTsKKyAgICAvLyBD
b3JlTWVkaWEgZG9lcyBuYXQgY2FyZSBhYm91dCB0aGUgVlA5IGNvZGVjIGxldmVsOyBoYXJkLWNv
ZGUgdG8gTGV2ZWwgMS4wIGhlcmU6CisgICAgcmVjb3JkLmxldmVsID0gMTA7CisgICAgcmVjb3Jk
LmJpdERlcHRoID0gcGFyc2VyLmJpdF9kZXB0aCgpOworICAgIHJlY29yZC52aWRlb0Z1bGxSYW5n
ZUZsYWcgPSBwYXJzZXIuY29sb3JfcmFuZ2UoKSA/IFZQQ29uZmlndXJhdGlvblJhbmdlOjpGdWxs
UmFuZ2UgOiBWUENvbmZpZ3VyYXRpb25SYW5nZTo6VmlkZW9SYW5nZTsKKyAgICByZWNvcmQuY2hy
b21hU3Vic2FtcGxpbmcgPSBjb252ZXJ0U3Vic2FtcGxpbmdYWVRvQ2hyb21hU3Vic2FtcGxpbmco
cGFyc2VyLnN1YnNhbXBsaW5nX3goKSwgcGFyc2VyLnN1YnNhbXBsaW5nX3koKSk7CisgICAgcmVj
b3JkLmNvbG9yUHJpbWFyaWVzID0gVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OlVuc3Bl
Y2lmaWVkOworICAgIHJlY29yZC50cmFuc2ZlckNoYXJhY3RlcmlzdGljcyA9IFZQQ29uZmlndXJh
dGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpVbnNwZWNpZmllZDsKKyAgICByZWNvcmQubWF0
cml4Q29lZmZpY2llbnRzID0gVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpVbnNw
ZWNpZmllZDsKKworICAgIC8vIENvbnRhaW5lciBjb2xvciB2YWx1ZXMgY2FuIG92ZXJyaWRlIHBl
ci1zYW1wbGUgb25lczoKKyAgICBpZiAoY29sb3IuaXNfcHJlc2VudCgpKSB7CisgICAgICAgIGF1
dG8mIGNvbG9yVmFsdWUgPSBjb2xvci52YWx1ZSgpOworICAgICAgICBpZiAoY29sb3JWYWx1ZS5j
aHJvbWFfc3Vic2FtcGxpbmdfeC5pc19wcmVzZW50KCkgJiYgY29sb3JWYWx1ZS5jaHJvbWFfc3Vi
c2FtcGxpbmdfeS5pc19wcmVzZW50KCkpCisgICAgICAgICAgICByZWNvcmQuY2hyb21hU3Vic2Ft
cGxpbmcgPSBjb252ZXJ0U3Vic2FtcGxpbmdYWVRvQ2hyb21hU3Vic2FtcGxpbmcoY29sb3JWYWx1
ZS5jaHJvbWFfc3Vic2FtcGxpbmdfeC52YWx1ZSgpLCBjb2xvclZhbHVlLmNocm9tYV9zdWJzYW1w
bGluZ195LnZhbHVlKCkpOworICAgICAgICBpZiAoY29sb3JWYWx1ZS5yYW5nZS5pc19wcmVzZW50
KCkgJiYgY29sb3JWYWx1ZS5yYW5nZS52YWx1ZSgpICE9IFJhbmdlOjprVW5zcGVjaWZpZWQpCisg
ICAgICAgICAgICByZWNvcmQudmlkZW9GdWxsUmFuZ2VGbGFnID0gY29sb3JWYWx1ZS5yYW5nZS52
YWx1ZSgpID09IFJhbmdlOjprRnVsbCA/IFZQQ29uZmlndXJhdGlvblJhbmdlOjpGdWxsUmFuZ2Ug
OiBWUENvbmZpZ3VyYXRpb25SYW5nZTo6VmlkZW9SYW5nZTsKKyAgICAgICAgaWYgKGNvbG9yVmFs
dWUuYml0c19wZXJfY2hhbm5lbC5pc19wcmVzZW50KCkpCisgICAgICAgICAgICByZWNvcmQuYml0
RGVwdGggPSBjb2xvclZhbHVlLmJpdHNfcGVyX2NoYW5uZWwudmFsdWUoKTsKKyAgICAgICAgaWYg
KGNvbG9yVmFsdWUudHJhbnNmZXJfY2hhcmFjdGVyaXN0aWNzLmlzX3ByZXNlbnQoKSkKKyAgICAg
ICAgICAgIHJlY29yZC50cmFuc2ZlckNoYXJhY3RlcmlzdGljcyA9IGNvbnZlcnRUb1RyYW5zZmVy
Q2hhcmFjdGVyaXN0aWNzKGNvbG9yVmFsdWUudHJhbnNmZXJfY2hhcmFjdGVyaXN0aWNzLnZhbHVl
KCkpOworICAgICAgICBpZiAoY29sb3JWYWx1ZS5tYXRyaXhfY29lZmZpY2llbnRzLmlzX3ByZXNl
bnQoKSkKKyAgICAgICAgICAgIHJlY29yZC5tYXRyaXhDb2VmZmljaWVudHMgPSBjb252ZXJ0VG9N
YXRyaXhDb2VmZmljaWVudHMoY29sb3JWYWx1ZS5tYXRyaXhfY29lZmZpY2llbnRzLnZhbHVlKCkp
OworICAgICAgICBpZiAoY29sb3JWYWx1ZS5wcmltYXJpZXMuaXNfcHJlc2VudCgpKQorICAgICAg
ICAgICAgcmVjb3JkLmNvbG9yUHJpbWFyaWVzID0gY29udmVydFRvQ29sb3JQcmltYXJpZXMoY29s
b3JWYWx1ZS5wcmltYXJpZXMudmFsdWUoKSk7CisgICAgfQorCisgICAgY29uc3RleHByIHNpemVf
dCBWUENvZGVjQ29uZmlndXJhdGlvbkNvbnRlbnRzU2l6ZSA9IDEyOworCisgICAgdWludDMyX3Qg
dmVyc2lvbkFuZEZsYWdzID0gMSA8PCAyNDsKKyAgICB1aW50OF90IGJpdERlcHRoQ2hyb21hQW5k
UmFuZ2UgPSAoMHhGICYgcmVjb3JkLmJpdERlcHRoKSA8PCA0IHwgKDB4NyAmIHJlY29yZC5jaHJv
bWFTdWJzYW1wbGluZykgPDwgMSB8ICgweDEgJiByZWNvcmQudmlkZW9GdWxsUmFuZ2VGbGFnKTsK
KyAgICB1aW50MTZfdCBjb2RlY0ludGlhbGl6YXRpb25EYXRhU2l6ZSA9IDA7CisKKyAgICBhdXRv
IHZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoQXJyYXlCdWZmZXI6OmNyZWF0ZShWUENvZGVj
Q29uZmlndXJhdGlvbkNvbnRlbnRzU2l6ZSwgMSksIDAsIFZQQ29kZWNDb25maWd1cmF0aW9uQ29u
dGVudHNTaXplKTsKKyAgICB2aWV3LT5zZXQoMCwgdmVyc2lvbkFuZEZsYWdzLCBmYWxzZSk7Cisg
ICAgdmlldy0+c2V0KDQsIHJlY29yZC5wcm9maWxlLCBmYWxzZSk7CisgICAgdmlldy0+c2V0KDUs
IHJlY29yZC5sZXZlbCwgZmFsc2UpOworICAgIHZpZXctPnNldCg2LCBiaXREZXB0aENocm9tYUFu
ZFJhbmdlLCBmYWxzZSk7CisgICAgdmlldy0+c2V0KDcsIHJlY29yZC5jb2xvclByaW1hcmllcywg
ZmFsc2UpOworICAgIHZpZXctPnNldCg4LCByZWNvcmQudHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3Ms
IGZhbHNlKTsKKyAgICB2aWV3LT5zZXQoOSwgcmVjb3JkLm1hdHJpeENvZWZmaWNpZW50cywgZmFs
c2UpOworICAgIHZpZXctPnNldCgxMCwgY29kZWNJbnRpYWxpemF0aW9uRGF0YVNpemUsIGZhbHNl
KTsKKworICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIChjb25zdCBVSW50OCAqKXZpZXctPmRhdGEoKSwgdmlldy0+Ynl0ZUxlbmd0aCgpKSk7
CisKKyAgICBDRlR5cGVSZWYgY29uZmlndXJhdGlvbktleXNbXSA9IHsgQ0ZTVFIoInZwY0MiKSB9
OworICAgIENGVHlwZVJlZiBjb25maWd1cmF0aW9uVmFsdWVzW10gPSB7IGRhdGEuZ2V0KCkgfTsK
KyAgICBhdXRvIGNvbmZpZ3VyYXRpb25EaWN0ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgY29uZmlndXJhdGlvbktleXMsIGNvbmZpZ3VyYXRpb25WYWx1
ZXMsIFdURl9BUlJBWV9MRU5HVEgoY29uZmlndXJhdGlvbktleXMpLCAma0NGVHlwZURpY3Rpb25h
cnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisKKyAg
ICBWZWN0b3I8Q0ZUeXBlUmVmPiBhdG9tc0tleXMgeyBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVu
c2lvbl9TYW1wbGVEZXNjcmlwdGlvbkV4dGVuc2lvbkF0b21zIH07CisgICAgVmVjdG9yPENGVHlw
ZVJlZj4gYXRvbXNWYWx1ZXMgPSB7IGNvbmZpZ3VyYXRpb25EaWN0LmdldCgpIH07CisgICAgYXV0
byBhdG9tcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGF0b21zS2V5cy5kYXRhKCksIGF0b21zVmFsdWVzLmRhdGEoKSwgYXRvbXNLZXlzLnNpemUoKSwg
JmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNh
bGxCYWNrcykpOworCisgICAgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2Ny
aXB0aW9uID0gbnVsbHB0cjsKKyAgICBpZiAobm9FcnIgIT0gQ01WaWRlb0Zvcm1hdERlc2NyaXB0
aW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDTVZpZGVvQ29kZWNUeXBlX1ZQOSwgcGFy
c2VyLndpZHRoKCksIHBhcnNlci5oZWlnaHQoKSwgYXRvbXMuZ2V0KCksICZmb3JtYXREZXNjcmlw
dGlvbikpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBhZG9wdENGKGZvcm1h
dERlc2NyaXB0aW9uKTsKK30KKword2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
Ok9uRnJhbWUoY29uc3QgRnJhbWVNZXRhZGF0YSYgbWV0YWRhdGEsIFJlYWRlciogcmVhZGVyLCB1
aW50NjRfdCogYnl0ZXNSZW1haW5pbmcpCit7CisgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsK
KyAgICBVTlVTRURfUEFSQU0oYnl0ZXNSZW1haW5pbmcpOworCisgICAgQVNTRVJUKHJlYWRlcik7
CisgICAgaWYgKCFyZWFkZXIpCisgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5v
dWdoTWVtb3J5KTsKKworICAgIGlmICghbV9jdXJyZW50QmxvY2spCisgICAgICAgIHJldHVybiBT
dGF0dXMoU3RhdHVzOjprSW52YWxpZEVsZW1lbnRJZCk7CisKKyAgICBhdXRvKiBibG9jayA9IFdU
Rjo6c3dpdGNoT24oKm1fY3VycmVudEJsb2NrLCBbXShCbG9jayYgYmxvY2spIHsKKyAgICAgICAg
cmV0dXJuICZibG9jazsKKyAgICB9LCBbXShTaW1wbGVCbG9jayYgYmxvY2spIC0+IEJsb2NrKiB7
CisgICAgICAgIHJldHVybiAmYmxvY2s7CisgICAgfSk7CisgICAgaWYgKCFibG9jaykKKyAgICAg
ICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtJbnZhbGlkRWxlbWVudElkKTsKKworICAgIGF1dG8g
aXNTeW5jID0gV1RGOjpzd2l0Y2hPbigqbV9jdXJyZW50QmxvY2ssIFtdKEJsb2NrJikgeworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfSwgW10oU2ltcGxlQmxvY2smIGJsb2NrKSB7CisgICAg
ICAgIHJldHVybiBibG9jay5pc19rZXlfZnJhbWU7CisgICAgfSk7CisKKyAgICBhdXRvIHRyYWNr
TnVtYmVyID0gYmxvY2stPnRyYWNrX251bWJlcjsKKworICAgIGF1dG8qIHRyYWNrRGF0YSA9IHRy
YWNrRGF0YUZvclRyYWNrTnVtYmVyKHRyYWNrTnVtYmVyKTsKKyAgICBpZiAoIXRyYWNrRGF0YSkK
KyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtJbnZhbGlkRWxlbWVudElkKTsKKyAgICBh
dXRvJiB0cmFjayA9IHRyYWNrRGF0YS0+dHJhY2s7CisgICAgYXV0byYgaGVhZGVyUGFyc2VyID0g
dHJhY2tEYXRhLT5oZWFkZXJQYXJzZXI7CisKKyAgICB1aW50NjRfdCBkdXJhdGlvbiA9IDA7Cisg
ICAgaWYgKHRyYWNrLmRlZmF1bHRfZHVyYXRpb24uaXNfcHJlc2VudCgpKQorICAgICAgICBkdXJh
dGlvbiA9IHRyYWNrLmRlZmF1bHRfZHVyYXRpb24udmFsdWUoKSAqIG1fdGltZXNjYWxlIC8gMTAw
MDAwMDAwMDsKKworICAgIGlmICh0cmFjay5jb2RlY19pZC5pc19wcmVzZW50KCkgJiYgdHJhY2su
Y29kZWNfaWQudmFsdWUoKSA9PSAiVl9WUDkiKSB7CisgICAgICAgIGlmICghdHJhY2tEYXRhLT5j
dXJyZW50QmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3Qmxv
Y2tCdWZmZXIgPSBudWxscHRyOworICAgICAgICAgICAgaWYgKG5vRXJyICE9IENNQmxvY2tCdWZm
ZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2soa0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgbWV0
YWRhdGEuc2l6ZSwga0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgMCwgbWV0YWRhdGEuc2l6
ZSwgMCwgJnJhd0Jsb2NrQnVmZmVyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gU2tpcChyZWFk
ZXIsIGJ5dGVzUmVtYWluaW5nKTsKKyAgICAgICAgICAgIHRyYWNrRGF0YS0+Y3VycmVudEJsb2Nr
QnVmZmVyID0gYWRvcHRDRihyYXdCbG9ja0J1ZmZlcik7CisgICAgICAgICAgICB0cmFja0RhdGEt
PmN1cnJlbnRCbG9ja0J1ZmZlclBvc2l0aW9uID0gMDsKKworICAgICAgICAgICAgaWYgKG5vRXJy
ICE9IENNQmxvY2tCdWZmZXJBc3N1cmVCbG9ja01lbW9yeSh0cmFja0RhdGEtPmN1cnJlbnRCbG9j
a0J1ZmZlci5nZXQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNraXAocmVhZGVyLCBieXRl
c1JlbWFpbmluZyk7CisgICAgICAgIH0KKworICAgICAgICB1aW50OF90KiBibG9ja0J1ZmZlckRh
dGEgPSBudWxscHRyOworICAgICAgICBpZiAobm9FcnIgIT0gQ01CbG9ja0J1ZmZlckdldERhdGFQ
b2ludGVyKHRyYWNrRGF0YS0+Y3VycmVudEJsb2NrQnVmZmVyLmdldCgpLCAwLCBudWxscHRyLCBu
dWxscHRyLCAoY2hhcioqKSZibG9ja0J1ZmZlckRhdGEpKQorICAgICAgICAgICAgcmV0dXJuIFNr
aXAocmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CisKKyAgICAgICAgc2l6ZV90IG51bVRvUmVhZCA9
IG1ldGFkYXRhLnNpemUgLSB0cmFja0RhdGEtPmN1cnJlbnRCbG9ja0J1ZmZlclBvc2l0aW9uOwor
ICAgICAgICB1aW50NjRfdCBudW1BY3R1YWxseVJlYWQ7CisgICAgICAgIGF1dG8gc3RhdHVzID0g
bV9yZWFkZXItPlJlYWQobnVtVG9SZWFkLCAodWludDhfdCopYmxvY2tCdWZmZXJEYXRhLCAmbnVt
QWN0dWFsbHlSZWFkKTsKKyAgICAgICAgKmJ5dGVzUmVtYWluaW5nIC09IG51bUFjdHVhbGx5UmVh
ZDsKKyAgICAgICAgdHJhY2tEYXRhLT5jdXJyZW50QmxvY2tCdWZmZXJQb3NpdGlvbiArPSBudW1B
Y3R1YWxseVJlYWQ7CisKKyAgICAgICAgLy8gRklYTUU6IFdlIGNhbid0IHlldCBoYW5kbGUgcGFy
c2luZyBhIEZyYW1lIHRoYXQgZG9lc24ndCBoYXZlIGFsbCBpdHMgbWVtb3J5IGF2YWlsYWJsZS4K
KyAgICAgICAgaWYgKHN0YXR1cy5jb2RlID09IHdlYm06OlN0YXR1czo6a09rUGFydGlhbCB8fCBz
dGF0dXMuY29kZSA9PSB3ZWJtOjpTdGF0dXM6OmtXb3VsZEJsb2NrKQorICAgICAgICAgICAgcmV0
dXJuIHN0YXR1czsKKworICAgICAgICBpZiAoIWhlYWRlclBhcnNlci5QYXJzZVVuY29tcHJlc3Nl
ZEhlYWRlcihibG9ja0J1ZmZlckRhdGEsIG1ldGFkYXRhLnNpemUpKQorICAgICAgICAgICAgcmV0
dXJuIFNraXAocmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CisKKyAgICAgICAgLy8gT25seSB1cGRh
dGUgdGhlIGZvcm1hdCBkZXNjcmlwdGlvbiB3aGVuIHRoZSBoZWFkZXIgaW5kaWNhdGVzIHRoYXQg
dGhlIHNhbXBsZSBpcworICAgICAgICAvLyBhIGtleS1mcmFtZSwgb3RoZXJ3aXNlIGNvbG9yIGlu
Zm9ybWF0aW9uIHdpbGwgbm90IGJlIHBhcnNlZC4KKyAgICAgICAgaWYgKGhlYWRlclBhcnNlci5r
ZXkoKSkKKyAgICAgICAgICAgIHRyYWNrRGF0YS0+Zm9ybWF0RGVzY3JpcHRpb24gPSBjcmVhdGVG
b3JtYXREZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQYXJzZXIoaGVhZGVyUGFyc2VyLCB0cmFjay52
aWRlby52YWx1ZSgpLmNvbG91cik7CisgICAgICAgIGlmICghdHJhY2tEYXRhLT5mb3JtYXREZXNj
cmlwdGlvbikKKyAgICAgICAgICAgIHJldHVybiBTa2lwKHJlYWRlciwgYnl0ZXNSZW1haW5pbmcp
OworCisgICAgICAgIGF1dG8gcHRzID0gQ01UaW1lTWFrZShibG9jay0+dGltZWNvZGUgKyBtX2N1
cnJlbnRUaW1lY29kZSwgbV90aW1lc2NhbGUpOworICAgICAgICBDTVNhbXBsZVRpbWluZ0luZm8g
dGltaW5nID0geyBDTVRpbWVNYWtlKGR1cmF0aW9uLCBtX3RpbWVzY2FsZSksIHB0cywgcHRzIH07
CisgICAgICAgIHNpemVfdCBzaXplID0gbWV0YWRhdGEuc2l6ZTsKKworICAgICAgICBhdXRvIHNh
bXBsZUNvdW50ID0gYmxvY2stPm51bV9mcmFtZXM7CisgICAgICAgIENNU2FtcGxlQnVmZmVyUmVm
IHJhd1NhbXBsZUJ1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIGlmIChub0VyciAhPSBDTVNhbXBs
ZUJ1ZmZlckNyZWF0ZVJlYWR5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHRyYWNrRGF0YS0+Y3VycmVu
dEJsb2NrQnVmZmVyLmdldCgpLCB0cmFja0RhdGEtPmZvcm1hdERlc2NyaXB0aW9uLmdldCgpLCBz
YW1wbGVDb3VudCwgMSwgJnRpbWluZywgMSwgJnNpemUsICZyYXdTYW1wbGVCdWZmZXIpKQorICAg
ICAgICAgICAgcmV0dXJuIFNraXAocmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CisgICAgICAgIGF1
dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRihyYXdTYW1wbGVCdWZmZXIpOworCisgICAgICAgIHRy
YWNrRGF0YS0+Y3VycmVudEJsb2NrQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgdHJhY2tEYXRh
LT5jdXJyZW50QmxvY2tCdWZmZXJQb3NpdGlvbiA9IDA7CisKKyAgICAgICAgaWYgKCFpc1N5bmMp
CisgICAgICAgICAgICBDTVNldEF0dGFjaG1lbnQoc2FtcGxlQnVmZmVyLmdldCgpLCBrQ01TYW1w
bGVBdHRhY2htZW50S2V5X05vdFN5bmMsIGtDRkJvb2xlYW5UcnVlLCBrQ01BdHRhY2htZW50TW9k
ZV9TaG91bGRQcm9wYWdhdGUpOworCisgICAgICAgIGF1dG8gdHJhY2tJRCA9IHRyYWNrLnRyYWNr
X3VpZC52YWx1ZSgpOworCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2FtcGxlQnVmZmVyID0gV1RGTW92ZShzYW1wbGVCdWZm
ZXIpLCB0cmFja0lEXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghbV9kaWRQcm92aWRl
TWVkaWFEYXRhQ2FsbGJhY2spCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
YXV0byBtZWRpYVNhbXBsZSA9IE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKHNhbXBsZUJ1ZmZl
ci5nZXQoKSwgdHJhY2tJRCk7CisgICAgICAgICAgICBtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxs
YmFjayhXVEZNb3ZlKG1lZGlhU2FtcGxlKSwgdHJhY2tJRCwgZW1wdHlTdHJpbmcoKSk7CisgICAg
ICAgIH0pOworCisgICAgfQorCisgICAgcmV0dXJuIFNraXAocmVhZGVyLCBieXRlc1JlbWFpbmlu
Zyk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTE5MWRkMzVkZDBjY2IyOTEwOTJlMmFkZTgz
NDFmMzllN2U4YTM5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaApAQCAtMCwwICsxLDEzNyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkK
KworI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlci5oIgorI2luY2x1ZGUgPGNvbW1vbi92cDlf
aGVhZGVyX3BhcnNlci5oPgorI2luY2x1ZGUgPHdlYm0vY2FsbGJhY2suaD4KKyNpbmNsdWRlIDx3
ZWJtL3N0YXR1cy5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFu
dC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3Ry
aW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3R5cGVkZWYgc3RydWN0
IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKK3R5cGVkZWYgY29uc3Qg
c3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24qIENNRm9ybWF0RGVzY3JpcHRpb25SZWY7
Cit0eXBlZGVmIHN0cnVjdCBPcGFxdWVDTUJsb2NrQnVmZmVyICpDTUJsb2NrQnVmZmVyUmVmOwor
CituYW1lc3BhY2Ugd2VibSB7CitjbGFzcyBXZWJtUGFyc2VyOworfQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0gOiBwdWJsaWMgU291cmNlQnVm
ZmVyUGFyc2VyLCBwcml2YXRlIHdlYm06OkNhbGxiYWNrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNU
eXBlIGlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29uc3QgQ29udGVudFR5cGUmKTsKKworICAgIFNv
dXJjZUJ1ZmZlclBhcnNlcldlYk0oKTsKKyAgICB+U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpOwor
CisgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKKworICAgIGNvbnN0IHdlYm06OlN0YXR1
cyYgc3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0KKworICAgIFR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIFR5cGU6OldlYk07IH0KKyAgICB2b2lkIGFwcGVuZERhdGEoVmVjdG9y
PHVuc2lnbmVkIGNoYXI+JiYsIEFwcGVuZEZsYWdzID0gQXBwZW5kRmxhZ3M6Ok5vbmUpIGZpbmFs
OworICAgIHZvaWQgZmx1c2hQZW5kaW5nTWVkaWFEYXRhKCkgZmluYWw7CisgICAgdm9pZCBzZXRT
aG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChib29sLCB1aW50NjRfdCkgZmluYWw7Cisg
ICAgYm9vbCBzaG91bGRQcm92aWRlTWVkaWFkYXRhRm9yVHJhY2tJRCh1aW50NjRfdCkgZmluYWw7
CisgICAgdm9pZCByZXNldFBhcnNlclN0YXRlKCkgZmluYWw7CisKKyAgICBlbnVtIGNsYXNzIEVy
cm9yQ29kZSA6IGludDMyX3QgeworICAgICAgICBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNRXJyb3JD
b2RlU3RhcnQgPSAyMDAwLAorICAgICAgICBJbnZhbGlkRG9jVHlwZSwKKyAgICAgICAgSW52YWxp
ZEluaXRTZWdtZW50LAorICAgIH07CisKK3ByaXZhdGU6CisgICAgc3RydWN0IFRyYWNrRGF0YSB7
CisgICAgICAgIHdlYm06OlRyYWNrRW50cnkgdHJhY2s7CisgICAgICAgIHZwOV9wYXJzZXI6OlZw
OUhlYWRlclBhcnNlciBoZWFkZXJQYXJzZXI7CisgICAgICAgIFJldGFpblB0cjxDTUZvcm1hdERl
c2NyaXB0aW9uUmVmPiBmb3JtYXREZXNjcmlwdGlvbjsKKyAgICAgICAgUmV0YWluUHRyPENNQmxv
Y2tCdWZmZXJSZWY+IGN1cnJlbnRCbG9ja0J1ZmZlcjsKKyAgICAgICAgdWludDY0X3QgY3VycmVu
dEJsb2NrQnVmZmVyUG9zaXRpb24geyAwIH07CisgICAgfTsKKyAgICBUcmFja0RhdGEqIHRyYWNr
RGF0YUZvclRyYWNrTnVtYmVyKHVpbnQ2NF90KTsKKworICAgIC8vIHdlYm06OkNhbGxiYWNrCisg
ICAgd2VibTo6U3RhdHVzIE9uRWxlbWVudEJlZ2luKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0
YSYsIHdlYm06OkFjdGlvbiopIGZpbmFsOworICAgIHdlYm06OlN0YXR1cyBPbkVibWwoY29uc3Qg
d2VibTo6RWxlbWVudE1ldGFkYXRhJiwgY29uc3Qgd2VibTo6RWJtbCYpIGZpbmFsOworICAgIHdl
Ym06OlN0YXR1cyBPblNlZ21lbnRCZWdpbihjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmLCB3
ZWJtOjpBY3Rpb24qKSBmaW5hbDsKKyAgICB3ZWJtOjpTdGF0dXMgT25JbmZvKGNvbnN0IHdlYm06
OkVsZW1lbnRNZXRhZGF0YSYsIGNvbnN0IHdlYm06OkluZm8mKSBmaW5hbDsKKyAgICB3ZWJtOjpT
dGF0dXMgT25DbHVzdGVyQmVnaW4oY29uc3Qgd2VibTo6RWxlbWVudE1ldGFkYXRhJiwgY29uc3Qg
d2VibTo6Q2x1c3RlciYsIHdlYm06OkFjdGlvbiopIGZpbmFsOworICAgIHdlYm06OlN0YXR1cyBP
blRyYWNrRW50cnkoY29uc3Qgd2VibTo6RWxlbWVudE1ldGFkYXRhJiwgY29uc3Qgd2VibTo6VHJh
Y2tFbnRyeSYpIGZpbmFsOworICAgIHdlYm06OlN0YXR1cyBPbkJsb2NrQmVnaW4oY29uc3Qgd2Vi
bTo6RWxlbWVudE1ldGFkYXRhJiwgY29uc3Qgd2VibTo6QmxvY2smLCB3ZWJtOjpBY3Rpb24qKSBm
aW5hbDsKKyAgICB3ZWJtOjpTdGF0dXMgT25CbG9ja0VuZChjb25zdCB3ZWJtOjpFbGVtZW50TWV0
YWRhdGEmLCBjb25zdCB3ZWJtOjpCbG9jayYpIGZpbmFsOworICAgIHdlYm06OlN0YXR1cyBPblNp
bXBsZUJsb2NrQmVnaW4oY29uc3Qgd2VibTo6RWxlbWVudE1ldGFkYXRhJiwgY29uc3Qgd2VibTo6
U2ltcGxlQmxvY2smLCB3ZWJtOjpBY3Rpb24qKSBmaW5hbDsKKyAgICB3ZWJtOjpTdGF0dXMgT25T
aW1wbGVCbG9ja0VuZChjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmLCBjb25zdCB3ZWJtOjpT
aW1wbGVCbG9jayYpIGZpbmFsOworICAgIHdlYm06OlN0YXR1cyBPbkJsb2NrR3JvdXBCZWdpbihj
b25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmICwgd2VibTo6QWN0aW9uKik7CisgICAgd2VibTo6
U3RhdHVzIE9uQmxvY2tHcm91cEVuZChjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmLCBjb25z
dCB3ZWJtOjpCbG9ja0dyb3VwJik7CisgICAgd2VibTo6U3RhdHVzIE9uRnJhbWUoY29uc3Qgd2Vi
bTo6RnJhbWVNZXRhZGF0YSYsIHdlYm06OlJlYWRlciosIHVpbnQ2NF90KiBieXRlc1JlbWFpbmlu
ZykgZmluYWw7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5pdGlhbGl6YXRpb25TZWdtZW50PiBt
X2luaXRpYWxpemF0aW9uU2VnbWVudDsKKyAgICB3ZWJtOjpTdGF0dXMgbV9zdGF0dXM7CisgICAg
c3RkOjp1bmlxdWVfcHRyPHdlYm06OldlYm1QYXJzZXI+IG1fcGFyc2VyOworICAgIGJvb2wgbV9p
bml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCB7IGZhbHNlIH07CisgICAgdWludDMyX3Qg
bV90aW1lc2NhbGUgeyAxMDAwIH07CisgICAgdWludDY0X3QgbV9jdXJyZW50VGltZWNvZGUgeyAw
IH07CisKKyAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWludDhfdCB7CisgICAgICAgIE5vbmUsCisg
ICAgICAgIFJlYWRpbmdFYm1sLAorICAgICAgICBSZWFkRWJtbCwKKyAgICAgICAgUmVhZGluZ1Nl
Z21lbnQsCisgICAgICAgIFJlYWRpbmdJbmZvLAorICAgICAgICBSZWFkSW5mbywKKyAgICAgICAg
UmVhZGluZ1RyYWNrcywKKyAgICAgICAgUmVhZGluZ1RyYWNrLAorICAgICAgICBSZWFkVHJhY2ss
CisgICAgICAgIFJlYWRpbmdDbHVzdGVyLAorICAgIH07CisgICAgU3RhdGUgbV9zdGF0ZSB7IFN0
YXRlOjpOb25lIH07CisKKyAgICBjbGFzcyBTdHJlYW1pbmdWZWN0b3JSZWFkZXI7CisgICAgVW5p
cXVlUmVmPFN0cmVhbWluZ1ZlY3RvclJlYWRlcj4gbV9yZWFkZXI7CisKKyAgICBWZWN0b3I8VHJh
Y2tEYXRhPiBtX3RyYWNrczsKKyAgICB1c2luZyBCbG9ja1ZhcmlhbnQgPSBWYXJpYW50PHdlYm06
OkJsb2NrLCB3ZWJtOjpTaW1wbGVCbG9jaz47CisgICAgT3B0aW9uYWw8QmxvY2tWYXJpYW50PiBt
X2N1cnJlbnRCbG9jazsKK307CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShj
b25zdCBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXImIHBhcnNlcikgeyByZXR1cm4gcGFyc2Vy
LnR5cGUoKSA9PSBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlR5cGU6OldlYk07IH0KK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VS
Q0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9W
UDlVdGlsaXRpZXNDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvVlA5VXRpbGl0aWVzQ29jb2EuaAppbmRleCAwNThkN2Y5NmFjMDFiZDVmZGI0MDNjZjhlMGFi
NWExODhiOTBhNzRjLi43NDA2ODk3NWViNTJhMjI5ODMyM2NiYmNhNDc0YWU0YTIzNDM4NThmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGls
aXRpZXNDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1ZQOVV0aWxpdGllc0NvY29hLmgKQEAgLTM4LDYgKzM4LDcgQEAgV0VCQ09SRV9FWFBPUlQgZXh0
ZXJuIHZvaWQgc2V0T3ZlcnJpZGVWUDlIYXJkd2FyZURlY29kZXJEaXNhYmxlZEZvclRlc3Rpbmco
Ym9vbCkKIFdFQkNPUkVfRVhQT1JUIGV4dGVybiB2b2lkIHNldE92ZXJyaWRlVlA5U2NyZWVuU2l6
ZUFuZFNjYWxlRm9yVGVzdGluZyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBzY2Fs
ZSk7CiBXRUJDT1JFX0VYUE9SVCBleHRlcm4gdm9pZCByZXNldE92ZXJyaWRlVlA5U2NyZWVuU2l6
ZUFuZFNjYWxlRm9yVGVzdGluZygpOwogCitleHRlcm4gYm9vbCBpc1ZQOURlY29kZXJBdmFpbGFi
bGUoKTsKIGV4dGVybiBib29sIHZhbGlkYXRlVlBQYXJhbWV0ZXJzKFZQQ29kZWNDb25maWd1cmF0
aW9uUmVjb3JkJiwgTWVkaWFDYXBhYmlsaXRpZXNJbmZvJiwgY29uc3QgVmlkZW9Db25maWd1cmF0
aW9uJik7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0KaW5kZXggNTY4NTk1MzNkZWI2YWVjYzkw
YzU3ZTE5NTEyY2ZkZDhlMGUyZTRiMS4uMjg4N2E1MmUzYzMyNmY4ZTUxYzBjOGExYWIzYTBiMmEy
NDJhNjdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvVlA5VXRpbGl0aWVzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0KQEAgLTk2LDEwICs5NiwxNCBAQCBzdGF0
aWMgUmVzb2x1dGlvbkNhdGVnb3J5IHJlc29sdXRpb25DYXRlZ29yeShjb25zdCBGbG9hdFNpemUm
IHNpemUpCiAgICAgcmV0dXJuIFJlc29sdXRpb25DYXRlZ29yeTo6Ul80ODBwOwogfQogCitib29s
IGlzVlA5RGVjb2RlckF2YWlsYWJsZSgpCit7CisgICAgcmV0dXJuIG5vRXJyID09IFZUU2VsZWN0
QW5kQ3JlYXRlVmlkZW9EZWNvZGVySW5zdGFuY2Uoa0NNVmlkZW9Db2RlY1R5cGVfVlA5LCBrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCBudWxscHRyKTsKK30KKwogYm9vbCB2YWxpZGF0ZVZQ
UGFyYW1ldGVycyhWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYgY29kZWNDb25maWd1cmF0aW9u
LCBNZWRpYUNhcGFiaWxpdGllc0luZm8mIGluZm8sIGNvbnN0IFZpZGVvQ29uZmlndXJhdGlvbiYg
dmlkZW9Db25maWd1cmF0aW9uKQogewotICAgIE9TU3RhdHVzIHN0YXR1cyA9IFZUU2VsZWN0QW5k
Q3JlYXRlVmlkZW9EZWNvZGVySW5zdGFuY2Uoa0NNVmlkZW9Db2RlY1R5cGVfVlA5LCBrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBudWxscHRyLCBudWxscHRyKTsKLSAgICBpZiAoc3RhdHVzICE9IG5vRXJy
KQorICAgIGlmICghaXNWUDlEZWNvZGVyQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIC8vIFZpZGVvQ29uZmlndXJhdGlvbiBhbmQgVlBDb2RlY0NvbmZpZ3VyYXRpb25S
ZWNvcmQgY2FuIGhhdmUgY29uZmxpY3RpbmcgdmFsdWVzIGZvciBIRFIgcHJvcGVydGllcy4gSWYg
c28sIHJlamVjdC4KQEAgLTEyMiw3ICsxMjYsNyBAQCBib29sIHZhbGlkYXRlVlBQYXJhbWV0ZXJz
KFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkJiBjb2RlY0NvbmZpZ3VyYXRpb24sIE1lZGlhQwog
ICAgICAgICBpbmZvLnBvd2VyRWZmaWNpZW50ID0gdHJ1ZTsKIAogICAgICAgICAvLyBIVyBWUDkg
RGVjb2RlciBzdXBwb3J0cyBQcm9maWxlIDAgJiAyOgotICAgICAgICBpZiAoIWNvZGVjQ29uZmln
dXJhdGlvbi5wcm9maWxlICYmIGNvZGVjQ29uZmlndXJhdGlvbi5wcm9maWxlICE9IDIpCisgICAg
ICAgIGlmIChjb2RlY0NvbmZpZ3VyYXRpb24ucHJvZmlsZSAmJiBjb2RlY0NvbmZpZ3VyYXRpb24u
cHJvZmlsZSAhPSAyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIEhX
IFZQOSBEZWNvZGVyIHN1cHBvcnRzIHVwIHRvIExldmVsIDY6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZh
dGVXZWJNLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTM0ZjJlNTgzZmVjYmRhMzRmNzU3YmIyYjMxOTdmM2Vm
Y2U4MjMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcApAQCAtMCwwICsxLDc1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRl
V2ViTS5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitSZWY8VmlkZW9UcmFja1ByaXZhdGVXZWJNPiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OmNy
ZWF0ZSh3ZWJtOjpUcmFja0VudHJ5JiYgdHJhY2tFbnRyeSkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0oV1RGTW92ZSh0cmFja0VudHJ5KSkpOworfQor
CitWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OlZpZGVvVHJhY2tQcml2YXRlV2ViTSh3ZWJtOjpUcmFj
a0VudHJ5JiYgdHJhY2tFbnRyeSkKKyAgICA6IG1fdHJhY2soV1RGTW92ZSh0cmFja0VudHJ5KSkK
K3sKKyAgICBpZiAobV90cmFjay5pc19lbmFibGVkLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgc2V0
U2VsZWN0ZWQobV90cmFjay5pc19lbmFibGVkLnZhbHVlKCkpOworfQorCitBdG9tU3RyaW5nIFZp
ZGVvVHJhY2tQcml2YXRlV2ViTTo6aWQoKSBjb25zdAoreworICAgIGlmIChtX3RyYWNrSUQuaXNO
dWxsKCkpCisgICAgICAgIG1fdHJhY2tJRCA9IG1fdHJhY2sudHJhY2tfdWlkLmlzX3ByZXNlbnQo
KSA/IEF0b21TdHJpbmc6Om51bWJlcihtX3RyYWNrLnRyYWNrX3VpZC52YWx1ZSgpKSA6IGVtcHR5
QXRvbSgpOworICAgIHJldHVybiBtX3RyYWNrSUQ7Cit9CisKK0F0b21TdHJpbmcgVmlkZW9UcmFj
a1ByaXZhdGVXZWJNOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgaWYgKG1fbGFiZWwuaXNOdWxsKCkp
CisgICAgICAgIG1fbGFiZWwgPSBtX3RyYWNrLm5hbWUuaXNfcHJlc2VudCgpID8gQXRvbVN0cmlu
Zzo6ZnJvbVVURjgobV90cmFjay5uYW1lLnZhbHVlKCkuZGF0YSgpLCBtX3RyYWNrLm5hbWUudmFs
dWUoKS5sZW5ndGgoKSkgOiBlbXB0eUF0b20oKTsKKyAgICByZXR1cm4gbV9sYWJlbDsKK30KKwor
QXRvbVN0cmluZyBWaWRlb1RyYWNrUHJpdmF0ZVdlYk06Omxhbmd1YWdlKCkgY29uc3QKK3sKKyAg
ICBpZiAobV9sYW5ndWFnZS5pc051bGwoKSkKKyAgICAgICAgbV9sYW5ndWFnZSA9IG1fdHJhY2su
bGFuZ3VhZ2UuaXNfcHJlc2VudCgpID8gQXRvbVN0cmluZzo6ZnJvbVVURjgobV90cmFjay5sYW5n
dWFnZS52YWx1ZSgpLmRhdGEoKSwgbV90cmFjay5sYW5ndWFnZS52YWx1ZSgpLmxlbmd0aCgpKSA6
IGVtcHR5QXRvbSgpOworICAgIHJldHVybiBtX2xhbmd1YWdlOworfQorCitpbnQgVmlkZW9UcmFj
a1ByaXZhdGVXZWJNOjp0cmFja0luZGV4KCkgY29uc3QKK3sKKyAgICBpZiAobV90cmFjay50cmFj
a19udW1iZXIuaXNfcHJlc2VudCgpKQorICAgICAgICByZXR1cm4gbV90cmFjay50cmFja19udW1i
ZXIudmFsdWUoKTsKKyAgICByZXR1cm4gMDsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTc2N2I5
MWQ5NmVmZWFmNDlmM2M3OTBjNzJkNjNhMmZkODE1M2I4MQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2Vi
TS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCisKKyNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgPHdlYm0vZG9tX3R5cGVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
VmlkZW9UcmFja1ByaXZhdGVXZWJNIGZpbmFsIDogcHVibGljIFZpZGVvVHJhY2tQcml2YXRlIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFZpZGVvVHJhY2tQcml2YXRlV2ViTT4gY3JlYXRlKHdl
Ym06OlRyYWNrRW50cnkmJik7CisgICAgdmlydHVhbCB+VmlkZW9UcmFja1ByaXZhdGVXZWJNKCkg
PSBkZWZhdWx0OworCisgICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IGZpbmFsOworICAgIEF0b21T
dHJpbmcgbGFiZWwoKSBjb25zdCBmaW5hbDsKKyAgICBBdG9tU3RyaW5nIGxhbmd1YWdlKCkgY29u
c3QgZmluYWw7CisgICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBmaW5hbDsKKworcHJpdmF0ZToK
KyAgICBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0od2VibTo6VHJhY2tFbnRyeSYmKTsKKyAgICB3ZWJt
OjpUcmFja0VudHJ5IG1fdHJhY2s7CisgICAgbXV0YWJsZSBBdG9tU3RyaW5nIG1fdHJhY2tJRDsK
KyAgICBtdXRhYmxlIEF0b21TdHJpbmcgbV9sYWJlbDsKKyAgICBtdXRhYmxlIEF0b21TdHJpbmcg
bV9sYW5ndWFnZTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCBlMDRjYWRjYTJkYzVh
OGM0MTliNzJmYTE5ZWU3M2ZlNzNhMTBiNjAxLi40MmIwNDk3MDliM2ZlMDhlYTMwZmM1ZGQ5NmY2
ODFiZjZjN2MxNjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJl
bmNlcy55YW1sCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwK
QEAgLTY2OCw2ICs2NjgsMTUgQEAgVlA5RGVjb2RlckVuYWJsZWQ6CiAgIGh1bWFuUmVhZGFibGVE
ZXNjcmlwdGlvbjogIkVuYWJsZSBWUDkgZGVjb2RlciIKICAgY2F0ZWdvcnk6IGV4cGVyaW1lbnRh
bAogCitXZWJNUGFyc2VyRW5hYmxlZDoKKyAgdHlwZTogYm9vbAorICBkZWZhdWx0VmFsdWU6IGZh
bHNlCisgIHdlYmNvcmVCaW5kaW5nOiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzCisgIGh1bWFuUmVh
ZGFibGVOYW1lOiAiV2ViTSBNU0UgcGFyc2VyIgorICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246
ICJFbmFibGUgV2ViTSBNU0UgcGFyc2VyIgorICBjYXRlZ29yeTogZXhwZXJpbWVudGFsCisgIGNv
bmRpdGlvbjogRU5BQkxFKE1FRElBX1NPVVJDRSkKKwogVXNlTGVnYWN5VGV4dEFsaWduUG9zaXRp
b25lZEVsZW1lbnRCZWhhdmlvcjoKICAgdHlwZTogYm9vbAogICBkZWZhdWx0VmFsdWU6IGZhbHNl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggYzY4YTJjODgyYzY4MzMxYzQ4M2E4MzcxYmFjNGZlZDZiNWNlMTQ2NC4uMGY2Mzg5
N2Q3ZTBkZmU2Mzk1Mzg1ODIyOTg5MjliYjhlZTU1ODA4MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDIwLTA3LTIxICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAg
IFtDb2NvYV0gQWRkIGV4cGVyaW1lbnRhbCBNU0UgV2ViTSBwYXJzZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDUyOQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNjU3ODI0Njc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBtZWRpYS9tZWRpYS1zb3VyY2UvY29udGVudC90ZXN0LXZwOS1tYW5pZmVz
dC5qc29uOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1zb3VyY2UvY29udGVudC90ZXN0
LXZwOS53ZWJtOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291
cmNlLXdlYm0tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1zb3Vy
Y2UvbWVkaWEtc291cmNlLXdlYm0uaHRtbDogQWRkZWQuCisKIDIwMjAtMDctMjAgIEtlaXRoIE1p
bGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIG51bWJlciBv
ZiBpdGVyYXRpb25zIGZvciB3ZWFrcmVmIHRlc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9t
ZWRpYS9tZWRpYS1zb3VyY2UvY29udGVudC90ZXN0LXZwOS1tYW5pZmVzdC5qc29uIGIvTGF5b3V0
VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL2NvbnRlbnQvdGVzdC12cDktbWFuaWZlc3QuanNvbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hNDdkOTc3YTM3YmIzYjRjN2E1NjU0NTQzNjk0YTI0MGZmODA0MjcyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL2NvbnRlbnQvdGVz
dC12cDktbWFuaWZlc3QuanNvbgpAQCAtMCwwICsxLDkgQEAKK3sKKwkidXJsIjogImNvbnRlbnQv
dGVzdC12cDkud2VibSIsCisJInR5cGUiOiAidmlkZW8vd2VibTsgY29kZWNzPVwidnAwOS4wMC4x
MC4wOC4wMVwiIiwKKwkiaW5pdCI6IHsgIm9mZnNldCI6IDAsICJzaXplIjogNjI5IH0sCisJImR1
cmF0aW9uIjogMiwKKwkibWVkaWEiOiBbIAorCQl7ICJvZmZzZXQiOiA2MjksICJzaXplIjogNDM3
MjQsICJ0aW1lc3RhbXAiOiAwLCAiZHVyYXRpb24iOiAyfQorCV0KK30KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2Uv
Y29udGVudC90ZXN0LXZwOS53ZWJtIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL2Nv
bnRlbnQvdGVzdC12cDkud2VibQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjNkZmRhYWM3MTEyMmViNWEzOTJhOWNh
MjU1ZTZjMTk2YzM4ZTk4CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA0NDM1Mwp6Y21kNDJROzty
QSg+OGghKjRWYWYrcVB9bndyJCY8SE1WV3J2aiVIeVRtU1FaJiUzfGF8R19AcjY8cjtmLUliWncK
em02PzR8NW5XaUt5VHczJnt+N29+VlN6d0dGYU9OQEt2MUVGS25TNnI1Ty00fVRjUGtrVjQ9YEpV
PH5CfF5NOUF0CnpLcTFPenk5algwYzEwXiFnYGk0U25raVFZOT81cGF7Ryp8JSlMSlc3MkxUY1B0
MEppa25nMiglYCZZJEw/KXVOJAp6Plp7QkQyRj9DQV9XdipNe35gOFltYHFlXzRaLWsyMDxyPElH
S093dXRuNzNnJXlmKGw0QztkYXc9TlBIQSZAV2QKektXelMhaTJxdmkqWng7dlRNR25vOXRpfT4y
P1ArZTxPSTlnblNfT14+OG1NbDFfdUhXOXxWVTBkeWlZfntkWC0/CnplR3JnOVhXKHNDQW48Plpf
fXswKSZkJmRwPSMyYVNEKj8+TXwwYGpNN0tlKzwzQ29MIUR2NTt1LV5sKmdqXy1mJQp6SyNsKV9e
MXJyWnw4THZPZV4/cy0hOytFVkthK3ZMIz9ye20hR3FTI2YlQVg7YVElUHlBcmRXKTVLJmJVUkZS
YUkKejZBNGRZVkJxQEMjWUQmT3t8bz5DVSUxdXZVJk96UVBYWW5PaiZnd2pLdFBhV3VuKytHN1Zh
NV5nOUhhZDFwdmsxCnp6bW9zKmFuPVhGaVIqLXl7QDJld14hc0x1NUI8KU1lKFlPKD16RGtLamM/
fk83eUlreHI0Syojbi0yMXxfazw3cwp6T15iYTBKQVVOI2hrVk5+QyNofnVeeW1DSlUtVD5XaXFD
KWFMTFglNyF7NzN7N3JmI3twUzt7I3pHclZ8PzJuSlYKel90ajQrWitZN257ZkY/QG8yPUtCPn11
YXxjTjsoZG5tMW5WckJDSilSJmNnKz4wYFh7UWplP3EldDQ3KW5uYnRjCnpsYGpXU1k1PjZoZnlC
Y1JIITVuX1BzV1pkenIjUWdZS3FGMlQ2OVU9ZWVkUGp4WHU8a2AxLW5eYlZDR0teP1JURgp6KD14
XzUqdF5geU0+N25QeTV5T1NIKWxAKXYkMip6TGJoUGExQHUhQD1gcX1ucXN8fT1LPjNReUI8ZFU9
NWo0NTUKelRJOFc8cXQlU0QkQ3tsPz5ffkNEUX5QcTgwOHtIWjczY04hRjZJcSNxS3c7ZjxNZksr
aTYzXy0jbWFCb0ZXK2cjCnoqezAjNEs5cXckJGVhdV5abGU4PmFMPUVTRys9TnQ/SkA0QUhEZDQ5
czsrYDh3IzA9JGlxdCh6dCE8PUMkdWZ8OAp6dCF6YSs3cShaVTFwaUQ3XmxGZGluMXVMJmJ2ZnlP
VCliaD1SNHM+XzFgZXtIbW9mVEdOVygtYHl3QGg1UWtfVWQKemBXRz4jbm0mV1BZeUhaem9lJlQh
P3dkV3lNQmBYZktOZ303cmZ6R3JRYSMjRjheI3BmbVlpdmo4T2xjUlZDPSlBCnpYaDNvVUYrfWhJ
TGlyPlotczlKcGpfJkF4b25JPm9CfmI+ND1ASnc2VHsrYXNoaz9JNCZSNjgkRnIrTyNSPno/Mwp6
ZnVrQHV0fjdzc1JZI3RxJkh3T1d7eUZ9TEMrT248SCNSLWAxcSVZcTQ1Mk5gZjk/MnFiWTYjOTJg
VWpuMmdrMnkKenhiZE0lOEdoRDVUOXBfdzZwYXI+KlAoRCp5MSE3Sj5tJk9+Vmx9Vl9wLTwmTzIq
bnVeK3A4RmItTzBmWSQjRWc3CnowdVBINzBqJUl8aUtmQndKV1JHX2B0ak5BKFBAbVQ1Pms4NFIr
Pz0yaEx0QGArJmJ4NmZZUSE3Sl9DbV91PVN6bAp6Y0x7bzU1djcxfkshVVlPU01AXn1uTkImKHFL
V0xNcVYjdDVzKiR0TCs5RVorTjNJWWt3MDNDY1I3cE1FXnlVcHsKemNQIU1pK1VnZnM2RkZxcEZ0
aEU0WDhqODM/S05xbHQkQUZtP3o/TzRSdSlARz9fQTw8VztiWndEdVpIPVp2SCp6CnozUXc+U1El
dEhuQkNAQEMkWWt+QHZ5WH1pKkwwSDh6Sm94V0lfTzFSO0ZBJGZzOWRYdFlodnZHRm1XUGJNck4m
RQp6Xk52NWZJbEBhaWt+cX5tPVpXUX5zRXNrKGE+TiVJOT1kOWwwO2kyRV5WTWkrQXJvZXZESi19
bUM7QDY2VFEkJXIKejIpfFNOSmxZck1EdEFBOTxjbzhhR29JUFMrN1RDMmIhcH43REBKMkZ6S1Ay
c0tFdk5kUkNOZFBJWWA8SnZ3TTR7Cnpuc1lFR2orPTExQFhwSEk1ZjE5cG4+OE8lZEZzNlFTOE1Y
PkU1OStQPD8xO2BeZnYrZ15DQHVMIUNBPnR5Xk99Mgp6OWheUj11fn4xeE8/dEZMRXktZ1VXcys4
PDEkcC1HQlBsVDZ1cmA9SCkwcCp9Rz55OVJDNT1AaExtPG97WF90bkAKem5YKl96cihoZyhJRXJu
e3dJaGZxKCFoV2lvI1Y/JWtfLW1kX15YRzk9Kz5kTU9TfGEtI2lJe3p7aClBTiY4TFUtCnopfkdP
bHhtWFU2IWU9ZSUkYystKHMlKipmIVY2aXY0TilkZEZDUW14YHM3U3tWWHRfLXZKfmgmI3FHTC1m
JXslTgp6QzQ/Nm1EX0E8VSpPcClnOSpaLSVJRTRhIz5nT3N8Q1RxJnVuMmBhXnY5N0xIWVc7Qzdk
akF9ZktLSiZOIzZ9Z18Kel51NXNKSHl5Zk0mfEpJVSpscSY2UzlRaDh7dDhHMmNOSW9ZKCtPSERu
QjlxYGQ8d1BqdmFecnF6NCsrQ090YjZTCnohKE4yYHY5UzdRJkExUCErfk1gKVFaNkZsakp9alBM
JlAwaiUpOS1CVnkybzBmO0h4JSk5NjslPXtBUnIjYm1uewp6SkJFWUpUNDtFbjE4fVckWkc0fU0j
UCkoeDl3WVNwK1BAT28wV3RDdkR6bjUtZkAzJShgYU5BSC02QExNIyNIRTIKekhCVlU/U2FBWko9
RC18KGI8SjJQXjVxNDtmXkVxOHNGJGh8akRRX2FtRGFuRzdYJSZJPTNVOHROZFolJmx9SF9UCnpo
WUNmTD8/T3BrWH5YdTYtS3xER2ZEbXM4WWY5RkklIyZ5Y2BKZ2Y8VikySzVVK2AxVTxWQzZ3UGo3
KiF2WV5MaAp6OHo0QDJzYFQjamNDTjYoc19wKmg3ZXl3STJ3YD5eY0Q5UGgmK31YXlhEblhmMSFW
PHN4R35eWj49JWpzTzc8T18KenRrcDR3JHk/PUtEVjRAY0k2fkpAMCE/WFk+aXFyaSpzZkpsWi1V
aUluZ35BaVBuNSNiZj1fNHFUVF4xM0tVRjIrCnomeTZXWFYtfG0mYEVBc35END5GOyVje2okKnl9
ZXJMYWRqNSojYE40X1IlVz5oUVkwfjtVIWokI29qakJfJmNMPwp6cFRlan1tWG9OekBfKWY7OEFO
VjxTRisjanEwSnF3M2JEc0E5JmpQWVZvd1oobjVecW03QThwdTt0fTNkX2NeQXAKem1FVEhtUysp
T3NvcnhZWlVvWj8pSkw9YSp2OCMoT0NfTGs8OTtkTVBnX1pkPFFIRmglODRyQyVpPko1PmlEKXFQ
Cno9ZXZpbExXeCErOHR+PCgrcjR+OWBLTUIhb2gqa0o9Sng4Ml5ePSNaPiooPU0zJUxhRjZYJjAp
VTZeS1Z4RVglLQp6MVlyQmJkZ1k4VDY9TXJNVXpMPnB1SWd2Y2loWFNIN248KCRjdkl1KWw3I1du
aGQ7Y01sY05jeFV1RzZre2koMVQKekFRcSNra2BkbitANDZCS21OO2xxSHglUk5zalA4UjNRLSso
ZDVZe24yUH5NTlU4Q2spRSVUNE4+bEkyKHw3dkltCnptbz5oRW58X0t6TUlRUFI0NV5zcER7Q0Qr
SURSYXtmP357dGFJfkxGU2JIZyhNb2EoeGBtKzU0UjYzUk88aF5qfQp6TDZHbFVtdmtMUDJNSiNw
YUgrakRYfl5HVW09ezF2aCZlVkxrc1YlSlhlN3w0dW5JK2E2RCVNbnF7OzdORGYtYjgKeklMRVdD
VyFYOWJNSypDUnJIVVJXSkUhOTBNcnlwYzNsSSREPE1PcyVIS1FtS3ROI1FgY3xIQ1JyPmtXY0Vu
RDRNCnpOaW14SWhLYFYwQCk/YExqZVlBNjRubiExMkNKeFkxOXs1Y2khQEl+T2dFKWt6Kmt+OUU1
Yj0oMmkzOG08WjdHWgp6O31wemRFOCQ2MFA/ZUxjZUFkJXxtSEBnc1AlbHdMZTUhTHMzR3h4U09W
KyhARWo+VypwfiRFc3BnKEpDXzloeX0KenNFUkpTbUo1JGgtNHtBSnNUfWc2ezhoNSFzWjslPzsr
dz5MayROKDdgYXFOJWhqZSF5aEtJblh5VG9MYXE4Pnc1CnpMc0Q2OFRtdG50MVR5aiMkY1kqJmVk
Wj9mPXYxNVRLV3FBPGF8TG00Pzc0YXJYTyghcEY4RE9jXj9JZjJHbT08Ygp6QDljaj80Pj5pMiZ+
SnFfWU8rLU8jS3RSSC13fHQ4Nll9azJkQXVFP0MlbyUjVDVWbTBAdyU8LSlSKUs7X0R3NXAKenNu
bitCPT9GenY3e2RyVyZVeTBkSEZkMCVHVENmcVcxeEo/V3ZKQU5lNkxRN3Byem4kYWpiRms2fVNE
NWJ0RDExCnolczFvTWVQZWE5V0MwTGlQejtkVko2KUM/OXFxSCo7SFN3fjQwZjBJZnlIcE5RKTRO
MnZLUjJZIzNseWBKJVBATgp6RHBEfWlocTdVSWJHdyRwSCQ2RyppKSMlTSlranJPdypqOzdjeHZ2
ezUyMkU3TCZaQmY/Jj9QSW8zNUVXaGktO1AKel48bndHZyRvbGZre2s/UCp+I3xxVjNLTkAxPmIm
eXlxPWE+RiFmQ3JmN1p1dE15MSljJXRtPU5CYFZwQk5EYiUrCnpGUnB0UkZ2e305UVJuPUo0VSpI
MFo8OyYzMHhUfldeKVROT3p6cXI3MGZpUEs0cFZSSl8+PFI+VX4pQVFueUYmTwp6SXw7cjFjcWdH
cE96TVdiUnIpaTJBPDR2O016fHNuZ202fCFeZHIpelc9LSViRVFFKVZebWswaHJGajtRQ3Ntb0AK
elhZeVM2c2ltfUEqTn5mQ090OS03OzB6eDNrJUFUTDQje1JsP3U/WTBDUGhMPU5IOXR3Q3pRRGFZ
UEteYXJWMUh1CnpKOVdLKXZUQiFabHMocFoyTDZMKUhWSEE0JjQmJio4fiU2M2xfNX5RJWtOcXFk
JlhiMzw9bnh+REtPMm0+QVdWSQp6Q0l3VH12a2xiI2EkK1EoYTBRcHRmYW1KNU1wTmxZaGFnZVM0
cj9IKVlkKGpWU3xlLTNVLUNlPkpNbzI2RjhVVzAKemlDPiM+WEMhQm5iMmU/amheayhNQXJoeHkm
I2ZCPj5adU1HOGBFTFhHQ2tVRSVDd3VIYntkK0d3I2ojP09jU2s+CnpLcFBIY1cqPG5rVDV5bStr
OFJUOWxDU0RebHw9O1VDUkNzVWtlUDZ7Ul5LY1FNcjVvR19FJUpxTjlFVXxWKE1zWgp6XzF0TEFI
UiVNJCNAb3VwYnY+blJneVpiREJVKlFfcXp7WERecklzaiNyRXVmN2U9fCVqMnhMZnRYPz5VSTJ8
d3gKendXR0lwNypJXil7NHU1fjlJQkR+TXpzaF4yd2NZeD5hYnZEUExXeEswfiVHY1JnKn1aMkU3
Q0xSMkgrMVEqXk1PCnpARzQ8NiFGMVpBMUt1fHBLU1FBeD5ydWxLNEhLUEdSWU1oJnB8TXBXUUxy
ZjkzUE48OW9Ma2A7JDV9ZVVZVDFPZQp6WUU5bX1PaVlvPlBTNDJwZEApPHBFK3EofGk8QVIzYHBt
Rk1hUytxMk9KbjIlYil0THo2am1ePD0jNSRtM2p6NWgKekY2fEhlM1QoP15wcTFrJCpvMFZIeTc7
TGRHe0lLJkYoV35DbWxeU3w0ZVR5I1lGTXYmdmRpcSQ+aG9aZXwzTVI1CnpaPlhxOHR3RmtBNzND
WW5RRjdOJjNzemV4LUEpYXtwTH03Q1ZpYk5BU0tPQkNIVkMyN1V7WHFfRzhBSjdrJXJ8aQp6dWxm
LUN3OUIyM0wkM2pAPFc0aUVPKTE0Pj9SayZFNkAxfTgpbnVSVzJUSjI9MWFDMUZOV2pDJXg7enRu
dnhfaTcKejdLNGV5S3ZDbE9RdGN+R2BeKVRDRVUtVigwNVIjeCtoTy1+RzhpJmRyfF4jZCU/WlFe
Nk81RUc1VFZFaVNLLVd3CnpVIXRKe0s/VF5VZ1Y5TUFoMV5BYWRybHpXQkNGJmMlVEZjPDUkZXFf
b2AtSVJ5ZStwaV9FbDclVCRXPzczR019Qgp6SlpaaFN4emI/cVhzN1RNWFE0UXEwSkwyNmZicSlf
Q0F1I3kzZytQUUV2fmZabl9aX0YwaU1rX1otaUpOcEUtMyYKekc0UWswbiZZcmZabkBtWUA8cXRq
IV96UGlVKT0/UHNIQnBxQzM+Q3xiNVhPV2k5NTxBUSNGMTNrcXkkTyY5anN9Cnp6OEZ9PTQjN3N4
Xilua1BrPjx+X3c3Q1VvNkFSJipOZzskJXY+aTM/cG8odW5FYEhyYjYoRilWTHxXcj8mRklfVQp6
MzNGR0g1JGFvPVM/M09AVlVPakBWTzNeZTN4d1k5JUAoaGxuQzA/PmxXTEshOSNAKzBVSUlyY3lS
TFVxRilrX1oKem1sbl9DJGVuVn5zUmchaW9EOVkhV1VRYHFhYj1kYkhtYztldkR1MU9Hckp5flR2
anRQZz9DX3o3djMjTVRzWU1iCnpERSNTal9GWTEoRHlmRChhTWVeVG4lJjxAUDgwSGgoKldgbHM2
fEZrdWplcXdAUD02fVoze3s3YD8rO297eVIzTgp6TngtY2pFb1M/REdJaDZzaGxFMX5vRloqSkt1
OVJ1KC08MkcjPCh0fWdeSW4pRTJMaUNtMV9BeS1HbE59SXB3Z14KelliPTdzSVJ8VHRfJWdHc1gy
OE5TaCZXPFdBZDQjUTE+OFVsZ05YPTluOG8yaU51QXUrPn5DenN2VXZwK1VrJUFkCnppe1dpWFJy
dFB9WGd8bGhiT1N6XzdDdnQkeDhke3drdSlmdHZ7JHkhdCpJaVc7M2h0RV5sN0skSH1IKDd2QD53
MQp6e0Z+UGkmVHsqU1RSVE1XYytke1lYUVVJQz5XbV9lTmNVPmNEZy1vK3RLJnN3YTJBVHgoe2s5
I0ZTXlhKWGp6P0sKek5UViY3T1c9PFY4WGUkKGQtUzYyQHQ5MyVkQkNLTHlIMmMyPy1AWjlofHAh
I25NMV5jcWJ5UjBoVjZYRTFkdGF8Cnp0dGA2Xzk0NTE7NFprY0ZXVV88IXU5eyk2dHtDRTA2dD9X
JithZUYqbE05Z3d1QG1OZlZhSV8wQyhRYVlqdTR2RAp6QkpeQE42P1NLJEJRQkRMbHo1dUYwJTs5
Tj5xKzB0T3pPX0F0UEEpQ0heaGtrI09mYGkoNFgjeEgoNEw5TyM1Pm0Kekt0bk1jPERaZzFBXlI2
WDZCWHlUQShPKmI5KjlWLT44fk5SZEVJZyZ2TFZCTSlFeHZlKkNne0ZtPSVISUdjT2FHCnoyRiFD
MiM3UnVXNkdZPH5Bckg1Q0dlKVdLTnR7YDc5bExHZjlXKHBqJS0oXlZ1ISEyQ2soPS1mY3xJWW4j
Tjt1Xgp6aFc1Vy0wXnpKbzNLKnF5WFlGVSMyY3ZaSHEhcGBBNipKTmZLVlhwSjVPSX05cCs7UTZC
VmFNVGo3bVVlTT0qLW0KelgrWTg1KyNTS3pWU1lvI2B6VGc7TkdtekBuaDIhRWd8fWl1JVNgYzh4
Z157Nm5sVSRpV1ZlMlp7dUJQR0pJOytrCnp1PHl6PUtTJHx1TVBKY292WUhPUFAyKkI/IWkmP1VM
LUlvIz1FZzltRWcyOVhpPEBKYkdtbmdCT1FNME9nUnJlNwp6UGdeJmBXVjVva09PVD9EYmxmd31I
KTJsUCM0PUJFY3hvPWlHTGg0Rk9aczk3bn08SSFFOzZTIWclI3sxZG1CSyEKelA9cT89enRudXE3
elV5PlhtcUpQeFZlbT1fdUx8OzZKUSl1KXtPNGkqN2srYU8pMUBDbGdJQCtUWDEtJEoxUmBjCnpz
NWIzRilkKzFZcHE8OTwob3JfVm5CQEhIaiMyc1JgMj4+JispKXwyM0M7VkgkWitwSHlEWm4rUXkk
WTV1Y1ohbQp6SG4pQ2RaUkI/Q0RjUSlJSVpiVXdFe1MofkJXdCZmMGMyRUZNZD1nY0pyT05mcHgk
K2N6TncrPTlpakY4KEhHQjcKenRtQmElRz5kVnY1JWRtXntJajw9YzEoPWREPVB5Rz9YbD51WDlY
PUBHJG9wYHI+T2BJeUtxej9mO2QzMGN3ZChyCnp6Kll7e1JWQXAwdWVQR3FJJHxnO0Y0I3ZnIXwr
PXVSRiRZK2hEZiQyPzFpSmtwWEtCeVBEZ1MldUlfTihjI1ZVcAp6b2s2OHduKykoUT1iNFRKMWIh
JTJMNiVwcTc/dDJ7NGE/YS07WXtGPSU8MGNLQ3dTN15IdHAwMnYzU0M4P2F8NHQKenliRzBBcXhN
TXhtOypzdm9eZSNxNn1eZWRtZ3lBRzNhOHpUbUdhdE1jcSlQWWYtZjtjSjt7NktZJGEofHJzODE0
CnpNZytnRi13cXwwSk4mZU5NI2RxI19PaHRuY05TVjxBa3IrI0BqWWBJcSFhNXhtK0c7OzNacCF0
IztIeThKc3x6Vwp6MXx4bCQ7ZW1xdUM5SXQzTThNYTU0JXR5JWFJRW85I1RvRnNQPGNgZWZMWCNV
ZSlQRihzMnRhbmduP1M5RmlhTVUKenYwPnBiNDdtRCFAbnR4bWsrVnwmO1ZJZTxDJjZgdWBDJTUj
TVcwMlJfaCRmPylJMzghRlh4SmQjMHI3bmkocioxCnplbFJ3bntWU01fO0FDd2t6OEtVez19US1F
KC1Ce2s5Zz5FRnFQWmM1JXNPRTZsfEA4cDx8JV9adUtqTSZFTE5Pawp6RTQ1XnhLZUVJeTFvZ2Zn
NjRuPiRMfHsqPTZibjY4QDkoeXJjNGB3NT0rcTJhKyRgRkg3Xjs4KndpWE9LQjNWZyYKekRZZ0s2
al5QJndsdmpPemZtVFFiTGspO0hfWWRzKGglPztjZW4qek1MfCg9d1lwIWRgZFlpaTxRVGJKPUxi
VDhYCnpxfHtlUU5CZHxOQVcja2U+dCl1TiRpIVdJUHU/cnhjPkE3RDN3eXhNYUJsYl9vVEl4fXIz
OEtDMW5QbChYS0QmJQp6MEk4ZF4hWSpCPWBzM2JZSGQ1JUt6MGUkWlRHWVlWVCVISjVeNlkoI3FK
QVRJME07JVBRPXowV3Q/UFJUPzA1fCkKemJ7RkJZPiU4LWxUI2w7I3RUSXY5KVZkQkpNMHgjbU8m
aG1WKkRnViZ4TSl7N0RRTWskUkhVPFI/PHxEUGJqPEN2CnpMLW5HZCZ3eiZ4TjtNR3FGPF9WcE8w
ay19Xnp9K2NyS3tEQio2UDlBYWRAdHwhNV97JEcpbyV6YmV5OV50fSFDJQp6Nil5aHRFX0g+UWFL
WE5jWSs2SmhMKXFXdUp3TWQ2Uz1lUFpDdXhwV2RQUV8pZ0syUHUrSSFSUWlsanZgS0gwdmgKemYx
dTRnK3RxPU9lM2M+Q2FycjR4Z2ZaaHRJUWRlSHdmfFpBT1QocG8+ZnRYcndDfHxHdEdiT1k0SFND
cHh0cDc7CnpJWEZsamlWNEJob0RTaCE+Wj9GKzx1OTkyWnF2fDIoc1Beb1hac1lBK3d0eDNnRCY+
VnM0OV5tMSlqa1lOYFNAUwp6eF9SWGo1fFo8SChWdUhsXyFXOSp3dk1xekp5KUl6cjt3Nz9QLStp
WGg0O2FkTW1oZ2BycCsjOTlvUmlPMUkrcWIKelNzSjwobTU2ITFtS3A2NS1BajV0SkxWUWEwZn0+
Nyl9WFNzaGtrU04yNXFHRnYxNyMtfE5UUWg/aCVVUlohSiVvCnp3WCpHQ0omeWRNN1ojQDV2SDx1
Mio5VzIqY0UpPCg0WWUxUHJBJiUpeGttTUFoVHVMYVRXZkx7O1NqZStrfDJzOQp6Q2NwZng1TitC
KmcremEyNGkoWTQyZFMhOzsqdipTQ3dNaColUmUjO0Y+K2lId0diR3g3VEUycVlKKTheVjFReH4K
ek44cS0/VkU+bz9uP0ctNE1uTl5KRSFyTnspfEtRN2o1OV5UTX1OMWVCWTd+Kk0mQHtPcEQxKkgl
TFlYQFZYNlZBCnprNkZXfFJ+dGt6KTdaRHh6fExOaDB9PypOLTNOWGJTUWxkcVpUUDh9bzRYfFg8
dmB3JE9NSGEzMEhlRkhKNGEkKwp6RClVR3JCcGJ7UXltVnV7PGZnemMtUDU1RTR3TW4laGUtSTNN
WkI7aSEjQFhte2R+SW9UI0ZzJDZoODZ4YzIpSl4KelFhYE1sOVk5b05OSD5SOVFnSjtwKzk7SEA7
USN2VFJCdyt5Qm5wWE1JSGJfTz1fSWM7Y0ZDSDxiYEM/RmxEYVh4CnpvS1o/eUdzR24qa1dudDE+
YTM5UDhrKWFrWmxzclFyOzNQSE1KcVFQZV4xKnx3OEUoI2ZQaWRVWWpZWVBDKikoMQp6bVQ7TGtM
aTkyR2Y/MSolbiEzZiVkYE0xZlN9M3xzJSZnQWx0Wkx5eCg1Mm5AOUB9TDUqTmR5eTNLUDZWMVB3
VXQKejQ/WVhBM0IzUVhJUmBeSz02WiFCM2YtPmhnVSU9WVVwSE9aSFVOaSR7YDtmU3V1KS14b1Q7
fndaNUUtVyRrZHhtCno3fiNgbEF9aUVkKmMxJndVbHZfdDBTXyUyYz9lM05pJjBySmZAbFdAcDVB
VGZYTzBJTlVFXnF9VkpORCFSR2lOdgp6bmwobF8lWGlHJSsrI2E1TEZ7KTtMd3U9R1VURkRiKCZu
bG5uT1ZLWlhCJmpPZSFSI1RWQHU3UCpMM2hfZ0lGS1oKemZUdS0oNXYwZkZ3MkJXOGxPamEtLU8p
N1BFdV9kSThWeVdybzRqZ35VeVAhajw2O1orKmN0bWVSdjx6Sk53XmteCnpZMX1QSjFFdk92WUdC
fHZtbktYVyU1c28jeWBWcFZFcUpOLUozZFdVUGxkZEVjI0ckJlohVW8jYm50QE82KH5hVQp6UDt5
PFRaZjFFZ1dtbHhZd1E2PTxzVSM2UzUqLW43X0xCPCQxaG5RMnR1d3JFYkN0SSthK3t2SiFUOHBT
ZUhacmYKekhePEl1LU0wZEZ7TGFZMkxIJEAxMmpVYms8TyleRmo/e2lnO3RSfD9eUGM3UENLWll2
KzJYbjtmV3RYKStBdk5iCnpLSztxJHk/dXpUQW8rfmMqPWUmbz8tclJ5K30lIXE4b3VFZEp+TEJQ
T3NeTko+eUJOKyoqK2t5bTQ3cjVyflhyeAp6bWYzRTVOJC0jJjtgdzkrZ1h5bVQtfTh4ITg4aHY8
QC1pWUtNK1l3OGBeZHQkI2otbm5QSHdfb3dWUVllRUtyQEYKejFDY0FBOC1VQlFOTTJmRXlsPkJp
P0JVXlJOaVF0NDsmRUl4M2R3UXVoR3FvO204K05QK0l4NmlYQnBQZGd0RWh5Cnp1KkJXYTBYSERp
RjxhK1RUfnwlNGkoSkpWdnwhOCU5PXFNNkV8WjE4bm05VSYyVl82MCo3TUhKckZqdWZXfD1Lfgp6
MWxuZkZ1a0FkU0o7clpIckYrNWpYTSZyQ3hUK3BJQEVDOWFKbCt7akFFI2BlZjg3angoZ19VcmYj
QiMwZTNoIVcKemVjVEY8PHJIVHwxfXdSfGtPZV9aNj8lI0xmeUtafGFgfms2cTc5TlR7TiZHT1Yh
UEZBd3ZYanA8IVRXaG1QYmJiCnojJHBkOFp6WUA9LVUtPlY/emAkSygwOGIhQkcjI04hRm94SlVt
WDw1N0NnIWlse04jUzYjI3w/a3k1PmZqfiR3Kwp6eiNgMDE2P2EhRHhRIVdDeWxvWn1rIUIhKk0l
KHkxKnE9SWluSCF9ISRoaktnVDEyUyZ4dXVTaEYjTmxKcjBGLWcKenRieHtQNUU4MEZQNnF7YnVF
PGQhbSFJalpGJXlNdEpYOUx0UkF4TkFeTjVFX0F1fllFOH5oP1ZWcEI5Y0Q3JW4rCno1RXFKUXYr
dmtAJGtiODU+LXArOVhCSVBmeEhRR1JFdlZ+fWt0QSR2bUNMbDdOQkdSXntIZz04TnNAKHxRQ0VA
aAp6UU9NU2JPUHAxYXU2MnFTYjsxc01ldXk0UEopVjkhQDgoQjBoWHlhJXhCTEZYWCFNK3lmOT1H
fHYzfnhRNFVuI0QKej1QWmA5O2F3QGo1Kz0oSU8lRDxlWSYxUFVFUiRMMDZAbFledGBkbGZ7Vi0p
T0pmdjVBNEF+eWQwVVlxXk5AKjsjCnojNWRkdnlRXll4SSQ+Rj40dzlUMXomeD1SS1FfczteNmsz
fTtiRTFLUFZlYzJgO0ppRUN7U0crS3d2SUNqd3lMbgp6RjdDdzlabFJTa3VmMz1MX2FHI00yWWlG
MylBSyMxT3E0UWR7X2RWblduPTB5cj9iTVM7Klg9ZyV1M1o3YTN+QXcKej5FU08hV2x4YytmWVMx
cSUlU2BTUjR1MTNeZ2R2KHltOVEybmIyQTZfbio/RW0qbW0rOSVXKG55KypQMV58KSgyCnp1Wnoh
e19uc3c/d2BpdyhVcExTUnYxRnMmPlNOR25PTCg1YGtlNHNiUCVfJTxVKEJRcWNUKHtxe3lgIVFS
X2w0Nwp6YDl3Yz8yYiVhTHdXKTwjb2NlRW1fTmw4c2BzfEQpXl9pYnRmZjBfWlhXZ3EkNT9Bbno9
QHA+LT5oanp+IzNATFQKekAzeDNpN2RrZCQwKnplNmM5PiN9cj5rJSg7VTAhMXtzcyFeNWFaaE9W
Yml1UC0zIXIjTiY2JCNNZ297Tzt1TS1oCno5emFTOWhHVUYmJX4oYSlLNk9LXklUOUFjTjMkTk5k
WFd7bVApQjg2PSt1QHsqPThyYnA9K21BWThyN0Y5V0N+RQp6T3dFdX57R1V1WW8zJDQ/S1V+b2k3
MCQ+S0RzZH5RJi1gbV5hdyVgaVdXI29TTER5a3EzIzUmOShedSo4X0UrbWcKekEhQVF9e2o2fVc5
JUlJOEQreStod0B4KDlqfTNyfmZVLWR3TiluUWFzPTc/SyM4WEEwNDBwbittYXhuPHRVRUxJCnp0
eDhRfHB2RTMpbzRYaFB0ZFZpODR2QXl+bzFFUFJ5dGFPQ2tCe0A4VUtSI1AqWlk3fHRCVzglYlFY
T1o5aUQkPgp6OWBVeExSelU+PndXZERQJDUtekVyTVBORnlvNmp+dTdedF8oTTN8SnRnczY5Uil4
SWIxM2BNYSY9SU4xKzNTb2wKekJoMWJoWFk2Mi05NHNPQjxRaSNORHE1VnFeV3paQyt0UiFnd0M9
TzY7PVFMcVV1UEpobGB3T1Z7Y2hwVHhgUDstCnpxPmUyT3xBaXNXU3RWZE5gUXtJcnheUkt1QThZ
SV48IyFEKXUwQWZPeVdzI2kqIzUwPlEmVHhYNDEyT0ZRNUlUJQp6ZGY5YDgrPzwjQW1zMlA8LVdP
bn42TCghQWFrIU5OfDhxQ3FRY1heRXcqal9HcXN6RUIxfmspe3g+UHk+eUM+JjkKej14bCZARmdS
bHdOKzYkQmV9X3h6X01MYD9USDRHOU1GYzV6IypLR3xoX2wmWlV7YD8ydjhuMn4qe0BuO2dpJDck
CnpgSElMI0lQIX53a341eipuP1g7bXlgR3xAYW9vX2ArOyEhfVFrIXBKZEkrSk5qcS1mbzc+Uk0/
bzB2SDVQSGMzWQp6eCVNRiVBWEw7aUpWYCNeTj9pUzYpYzNkKkklQm1QVld4JTxtLUp3P2JOUzsj
IThTcCtKPFlXcjV6Z0Y0VGg3Vy0KemN7NHJkM3V5dndAPyNpQj55YGgpOH44b1FnVWFRPjhibGhn
cVh+MGtKS0BlMSpDbFI9V3d5dlhsRCNsK2QxViNiCno0X0FSIXZ+dUFGQ1M/cjFzLSgjRnFgWFEj
YWJkT2M8YVZmJUUlYnVHRi19P3Zvb2J9d2htdmkqYFBiLWhsdylSLQp6aEpZQzdIbDAmMSlyUD1F
aTF1ZDg8XmQwcndIK0NpQURHXk1ObFhQY3dYbXImJSoteWRUWCh0VUJGMnUpbiEqcioKemdvVCpD
YSghOWRHaGI7UzFHdXA1WHgjT0plIy1oYHEmU3IySE4hTzIpT2dQT1k2dU1hKi1Hd09kcmclfEd7
cE9fCnp5cnhXSXpucyUkdjdsYmRDeGBfKTBafldiPWRJQX5zdzlPYFg3P1YzWHA+ei1hbUYzdzF2
Q0VVYjIrJGhZQ1ZYSAp6YU9YMG1hR3QkeEB8ent1aWx8QFN1fng7cDgwNlNxMm57TCtafXFDIShO
I0E8aUJXKHRrO0ZXZmdYMnx+MGs/XzUKencpfmFXe3NOV3IlfVQ0ckpvdlFfNXg+UkxQOSN3PTVT
bXViVDxGJGY+VUZ3cTRgOW13M2p+ZGY2ZnRgTnt6VnQ9Cnp5WHJEQGJLaX54NXcyYTRDY3tvfDt1
NUghZVRYOTRlZTxZSVJ4cytJbG0mc0w4JlMrNlJjV3B0UXlIbFdsNml2OAp6Mm5AJE9qTzMweTAh
ejE/K3xgMl9PUkxfeGw2R2VnTlotJVJXNitfaWdfWT1COTFBbGFlTGojKVdXdlZ8WXJncGUKempJ
JGA/aSF0a3ZMY3w8dUVVPEM9RVh1Nm5kQkZUckdYN2NfOHxCZzJJaV5ZQU1+OXJjS0IyNSNKeWV2
JlMqc2FyCnpEbnsqakEzcGhHSzxoRXxYUWBoS0h0SCZ9YG1WfENTPjVUaz1AQllveHF2aFNJbEJz
PFIodlQxKFJ2SkVASn07YQp6YkFuMUhaQWhWeU1sYEljKEdQeV5sfiNAaztTRWdGdmdMM3d1b3tV
ckQ+JjMyQjVvZmFKYiV8O2wpPGlDZXtMU1kKenheY19FVD9QP3cjaDkxbEVtfjNfPGBrLVRYdytU
VCVpaiolU0tHS0tlT3dEMzw9WFMmKl4mPEVIXkh5TDNQXitgCnoyJGhzQmRpRTtVbkNmVnJ1Tj1X
VWQ9eFNCSkJSYzhjSFhKaVU8dUgqUTNHZD4jX0E7dzhNUHpVb3tkbyEzMX42Ugp6SiNMUy1SUjJg
LURvTnZsVHJaa2o7MXw5QHI7OzRQJWZwMnJTISpoa0FHT1c0eUQtQF8xaj99WGshYz9QcChmTXQK
ek1OUmNYQCtnJm84ezdAVXkkLTUxOVcxIXJOajBkVkE2b0V8IVZMKVEqOWhIbEFqNmZfPEc1ZzBP
MjJYQiR3SHdRCnoremZBKDk+WTZnJWdodHo/fVlhOE9NPElRIVRNbktSP3ZTJElKR1NuXndJS00t
V1QyeklFbU5UWkp2aiNwWk9pLQp6KVlCaFF1MnNITWl2KXAxX0tQNmRtfDVNaF9Rcmo7MnVecWIr
Y250XmwyaiE/cyhhTyk9Tnw0WEtsV3F3bX1LKnoKemBtVFM3Jk0kTUJFYjBPXmZOU2s8dkZubSNS
NlcqZCVlUHxEV3g1UzZCeVBobWx7ZiZBNkM8OCVMOFdxfEdkXjF6CnopOTNkfjtHQiY7eGQpbWhx
MEhVY3VmRyF+UW1zM0NiaihaJXBmb2NeU01wc2A5P3t4MkZxP1dBSW9kJSlKa29DMQp6RDYwSW8x
bigqRjVlfEA+dTNPZ0VBTX5sK2xDUSMlVFd1Tl9veyVhYGpQcG43PW9OMkFoJHBuIXozUWMhQzdB
e0kKelZZZG53Sj09JDRKPmJkbVl1O3ZLPUlYIVhgQyEkVmttYnhRRnVoUjY7JTBsTjUlUTB0XjNo
ajJ6PjxAYjxpSW0qCnp1UkcjJTVRTkckJlVVSz1DS2p1PGN7KmwzI01oenI5T3M+RlprfWBaczNq
JG09WUIqM2pkVUd1eVpkOW51RjVqUwp6JjFCcXBRRTVYeU19a2xxV1pKPDlePVcwO2VybChDYncl
V2N1OGdVYGwzMEB7X29fez96bV5HWWlkJXVIdFpEQWAKemR8c0pAbEpjeWU7U3UxIWMtJXRGX0s8
JDY/YmVKPHB6dkFzcTcxZnJMTyl5MmR1b2xKQHdwNjNvNUdISGQkcklrCnp6PExXcVUwR0FfTCpo
M2o+JUExMTl1ZnMzKnJAQn5MdHRpOVVuayFmbj51OUpWPlc7NkRgTjV1ZiEyWncoSGM9NAp6SCY2
c0tteUtOeEotNC00WUZudWEyYTF3NVUkazhqVzx4R0lBYzUmYGJrZDs5PjY1YnYtWmRkWilIbG13
YVFlVVUKejFKMlB5YEJYPXNDPUg4I2dBcCVta2I2cEhVVGBNQ2RVSz9kcDtiVT8qTlNiKXcjbFgj
ZWtrUU1UKnMmcU5CJnljCnpIJTY+dipodyR4Pz8+RVJ2Skt4b1daJighRzVeZjJXPldYNkA3WVpP
a2MpZkEpfSVPbSZRIU1nQVMjJXhRa1MrYQp6JWs1Pz5kR2FxRVB4KXBnP35UOUImMjR9Vk1TP2BO
JFZqPyVyX3JGQyYlKD0wQ1FXPCQjVz1sbm5UcnM7WFlIej0Kem45ZTJ+cHBWQFRwTyZNfUpwWX5e
IUNifCtiWjF9TENLI045JXdfdTleTyhVKDNEZEVKMks1P285IV53S0FtSUB6Cno0TzUxNWF2PGg4
cFNzOXU2d1NQWTVrKyhIMzlLXk02fXhYJDBOXnVvPGNpVChhb3VhKHlhSGl7cSZ1VnRSeytJdQp6
SSFUe21KfF4yMyVTUm94eHs9YSNRYmRKbGIwYHhrOWJYbXx2cCt2ZjRvJDZldGIhTlAqYm1ZRTBX
VWgtR2g7PmgKemVKe3YoKXUqejNtO3tIM0N7eXk1OSkqe28wR0JAJGF7PUx6UFVwUGZfVTtqbWRJ
WWhxSEJMY05fbkApQTs7dUF9Cno2O2FzWVRZZHRaKyN2fHVZYUVXOFMwLTM4KCUreU9MdmcoQS1u
Z3JnRWVaODdGdUFPbXdudlFlSVhGclNvelE2Mgp6ailpY3JoKWgrfkEob2dVXk95aGxAMVBhfUw0
KFVtWXBIbEEpSGVVUCp0KHJsM287ZFk0U3pSPlBpentPOCEycD0KekB0ZkJJYj1ueVRRaCVLfCFy
V0Y+Uj42MFkxbjNkYSZnK0JYTnFPWGpKcCZ1YmNVfFR0Xz5LfCQ8LWt9V2pjY2ImCnopMyN6Jj1o
Zy16R1BycWE0VFhFZkowfUl7bDlMby1rbHktNmRRNkBrP2ZUZUBxbGFfIUotR2g1amY0SSNrfGdg
agp6byNHYyQmSkVmez4xeXtgdHUwTzYreXxKYVB3R2I7RVp6WG1ALXdodylkM1NPUX1qbz53RU51
OWsrP1ZIeUdmKkkKek5QU3MpWk5xK2g2TGtIWXg0JHMyb3M8TWBUa2NnP2N8MzJfJnBLSWklPHBp
dTw3SiVORHVkWX1iQC0hKE1OPioqCnomZk8xIVNWP3lsQWBpZV5sOEhrUTg4d2ZkU09WVXdTNzJg
bHNMcnc8STBIPEpuOCR7K2AmaXQ8WC1JLXpRc0stfgp6emxaP3IzY0xSNkhsSEFpbUFLJGwkU2JY
PExjU2lPZT99LX0mVGlkezJgcWA5citGaDxST2UxUGdKbUlSISU2QEcKelI1NjU2PEZgeEpCUTlv
emMzQXQqbyYpZSVmMWdDe2RgVUgybVRyUClVe2JGV2p7bEd3d1ArNG0pJXk8WjZTTChkCnpXVHFn
KCQ8fWNPR3FPbzteOCh9NjxfcTNSKDE8cTZHNURmZ2pYe2x3bkJDOzYqJFpael92XiRgUnA4Izc+
TiVxYAp6Knp3cCg3Q1gzc3U8S0ZMMDl+dVp8TSg0PXNhNT1xdVZYOEU0bEtELVJ9cmdxMTMlc1dk
dXpCR3spdnJROWgycz8KeklybE5DPnAkJXxjOGlEOzgoTnhXMj5+emtYPnlpU1ZDPmhwYHxVMl9u
MEEyME5sb05QdDAjWGRaSlR2Kzw3akZPCnpeYFBtJUBVZVR1I1pEfD5xVC1FLU4tR1gzIUBGJkJ6
fmtjUSV+MCM0T2RVTj9vcl5oRl8kaV9MYF8hUzxKMVkpOAp6JGhTMUdGbGVBcVBSSVYwK2Ioe0x6
QChrQ0RRdnVHKko7OTg7NE1XYkM8JCZVQSsqdlRDMGYwZlFoeD52czQlN1UKenZ4RHJYcmQyck5r
KDlFIz5eKU1GbUhIWjI5bEZjOCpvb31qOF5mbW1JKk5oQWdUa2w5WHVCUiM5JDIrQ1l+ZUIhCno2
SnVHPXFgKTw1aWJ+X2dlbGp0I1JMRWBHZmdeOGZKPmpNKjFebXdCdnB7a2teMDhPPXJ5eFVZZTFQ
WnpCPEZoXgp6IU9iTDlVMihCfjN3Wng3WkwoJU0/PEcpVGF1WGVRVjg0amFfRGQ+WmVafEpNN2pM
PUYyKlVsYiZ6Sm0wTDU+c2EKemNOSVRsPzslcD9mUnNlTS1YRWVXMFBeSEEtSyhgcjJkem1EZHxu
OUdWWmtZKnJHSmpsdyNURzBXbkFRQUwhYmxICno/THFnTWVzaHhoKl8tNUNibDIoaHRAfEY+PGl1
czJYd0czVWQ/ZFdWO31OR2NuPUc3JDttM2R3d21weGVWcWBIZQp6WXtFZz40Qy1oXjtoSXZmSClB
eHgmNGIoMl9SPi1YXn0/aSpTYGk9Zj9APjNhe2RaMUFmaU1PRmtMQHhQJFVtdyUKejxZd0FIRUVA
TD4xc0A3dT1vd1U3PmFsdSNkMVpMVk5hTTtJe2FfQWwtdz5xc2d7ejdxZlJ7V0VWUm4rMyhjWEpo
CnptLWZ4ZUBWJnxXJV9+e05wI140PS19K1FgQWZHaVcjQyNzUW1DJUBwZjFZcjdNeG5eXmY8alpf
PUtBNT9HQ3FGdwp6VHlAVntwPVBWLXlfKkp+UT0pXzRqfipQWDhjPjFUenl4TWMjJkFodjxvJEdH
NnI1ZEdofWM4cyojUGdUNWRCJiUKekhlc09zRi10eUZqcm97YiMtZzF4U2Bqc1FHM19qT080RkJQ
Szg9PT9GN013UVZRcmx1KXJxNmIpKm44RitoWU5ACnpmNGluQGtlWlg0V0hSczBffGBlaEgxfiUl
NDw5bSo4OWcycGMjeSRaUWtnQ202ZjhmcyMpOH10O1RxO35Wc0JaUgp6X3wyUUAhIVVkeUpyVUZV
cWtIVVVoWFZPTlV2Uz88eHZeSm9hT2h+U0E2KnZmVj5uQiZ6ZGVkazM4V1k1cjVIUmAKekx4fGBs
alMhTyhwa2VxMlMqaD1kUjNZfSooJSN4MFZQdFBAX144SmUrNmUzUSVucD1pOW0jem00VlM3MDIx
P2tRCnpUXmU5OXU5TmFrTUIqcz1mYkR+RU1mKjMqam1se0JJK3FpNyhXMTskXmc7RjRKX2I8fXN9
O2l4IXpXQUc5IWQ3Iwp6ZSQwZXF1ZWAhWVpNaVZhcFM8Zi0oV3IoZWI2JUomMiRwUU9XZWolSzw3
Qj5MZilMbGo2QDBjNitwK25rN28kP2MKejVlLV4kJWlRJFdhP2ZrfTFUIV9HVTRjUnZrdXh8XkBB
MCRnaVpMSl5TR3RfR0wja1VhNGJBY1VhMikkKChYeUV7CnpZdU1Jc1puUnhLfEtXXnxnfSY2fGVG
PC1kWHY0Rzt7akxOZllUVzQxeiVrZW9BMXIjNXBsN0gqWjA7bFY/YTxKawp6VyRxK04zITtMQ2NH
ViEoXi1IP0NiP09sKVBgZmlgKmM8SD1vQSRgTCFjJWpFK2Z8e3ZzKXg8WEJTemxhJEtxVlIKejJp
KWFIX2J0N0szemJTcDNOPk0lZnhXakdWTD5jViMlTXYkb3N3T3JWekU4YDM8K1d8IU9aK3lnfGNe
ckdFbEFOCnp0UHl6SVVhSDhKdDspMSo2KUNWdz8hR0YhNUt2WnpFIzc3SHF3eko/I0YjWGxPXmpg
PSlPbldWcHIoQ31zUXAkZwp6VSs+RUNvSjFfY2JNYCZjI2gqeCFDcGJDVXRuSSMmclMtbkFKZyNw
I1pGbChhK1Fpcnphe2g0RmF6JChLX2JBfjIKenhDd0ZPcyZgSlIkT3N0K29FbHZ5cGNzIz81blpT
byZiNXVMRndOOTBuOyUoYSQpREFPJkZuRG5vRmJCQnlnNXBCCnprMEoycGlOMTVrPXB7fk5CN1Br
KlE5JGsqN2s2QzdkZH5HKXZqRzk9QmskbHthXi0xM1pEOzVGRDBpLVhSKD16cAp6WnRCPStBfGgp
ezxORi0zMitlQG4xNFhxdCNSblRgb3lIRkI+PUc1bWhzcTUpa1FLIT8jMU9STERwPyE8VD13QCQK
eiVBPkRRUzZzSWVRNlRyJmskNWtTNHlEN2ROcDQtKVZheCl3TXRYXnc2cy1LamU5NTc8eHt+WT5R
VUxgbyU0eDZvCnpgU1RsTDNRRWlnOW8+YjxgQnZSRntEbSpibFRAZmVRUiYlQUgxaFRaSElYe0w7
SURVPWVZME1TJEpDMSooQzwoJQp6ODYkcURXKFkzJDtSUWY3PU9+WjwmR2FBIVUlb285LU5CYHVL
ek83QCZwbnVCWkIhTXYhbGV2JE8rM1EpWXtzIXgKemZkXntiandfdEM2JC1tQCl7UjAtZV81K2BY
VHFUczB6MWx3Oysmak1QRmF0KE9Se3BvSnckPz1FRmorSGx0aDllCnpuekB2alRlPEApMWU2bTdM
UCtQWmRDK2loPUEtSkpBKWxtMWxlZDBhJiY7bj5DWkpGPXNkaEtGSFQxcmskXykzPAp6Wmk/cHZC
OTFHP2VyVEpuQkMhSChqO2NJWENSeERJdEVGfk5xKnNAY2tZekB6YFkpUGlsPVEtRSlBNDU1YDZh
SFUKej8oS0tKUExrc21HUk9DeiF1WCY9KG1TODxQbXIza0QwdD8oJE1XQVkmfFdeVyVYJEswLUE8
X31UYTtYYSpFP349CnpiTSFvVT0tWkFfPTFxZGtlbWlXJEstZ0t9WWpwbz9DKnVqRkREbk49PU98
fjhuakR0Uz9kQjsqTWRLdTg+S0N+dwp6ciV9fTIydn1Nb2tRSmhDUEZ7SCh7Mk1zbk8lPWlCQ1B9
TTsqRkY4MD9wNyU4MWBjVHNDeVB2ZC1DdGh6eDYrUCoKejZDUmUhdyhyZGJCUTxpQ0JkWn1CWHF3
VVRsQXRBVXtoKiVGdXtgcH4/SWBpZ1NaMXMtTENiTno5Q0l8cXF8emYjCnpVKF5gMXtGek85QG9Y
fkF6JHcjMSZ7QFBaZmlKXlppKlA5NSoySjxOVHh2OWgyOX00WD9LOHZjbClMZEdOdTFKLQp6XjJi
VUdlb3lMUVRnQFVpNG9lJnpjUiEhWikjI3FOTzAqdW9IKkZoPlkxN1h9cT9VJTV6citrNGR1OVVQ
JmhmMX4Kej9rT1ZgYUZPeFcqdE5PRyQzU2tYdzNldlhDK1U+TyNUeHl5YHp1OS1aUWZ0MUVQd153
WFFmcGVyMWhqa2JnRUVvCnpxNDU5cTN6PiRwNzNhdERobDw7SSQ3P2E1Tjh9USMhKyp7VTgrWUlq
NCg8MDNqN3ZtbylYI3JMVXZKNEdoNmhUZQp6bmh7JEFPI3FPWl5GfUJqJnJkMUQ8JkhsZ0ZqfUF+
QjxweiZLPShsIyNrSEtSIT5WaUdnS0FiTndZNzZke19YJXYKelklaTxAXz9MSSpLMVJBQVNiOylj
PXN9a2w1UXlFMiFhXnN8PEY1fldPNjQyQ2hTXlQkQVlkQ1hmMWMrRER6THh5CnozZVduTFd5Rm05
MVp1eTleKzdPalVhd3RDXy1TMip6Xjx0PSlRejRiTn00KTlnNyY3MXVhaiVGWDM7SlFwQWh7dgp6
bUdwNWZkemYySWEpUT85VnQ7I3M0QipvMmh0Zk54ci1ReiYqeXptUlRQZjFtT3xHJURYUjJrXjc5
Xl9UaVhgfWsKem1sIy1AKUl5OHxJeEsmRVc9NjtDJk87OWNYTzJQd2ojb2ohKXhDaGtNRzBSKzcp
aTtPdkE+TXVGfG97dVgxQHlvCnpDMHlnJmNUZ34kI3NQUXl0aEVrV1A8aSEkRXdDYjclRGdKbGF7
aiZFQjwqfVFjWSVyNUluVUp2MX5MMUooTkBDSgp6MUIrQ1o7WHtzTj8wUntJYGJvdUlUV3JJOC1Q
Um5NNlU4dTVHY0Blb15QMUlPNCYxYzdVbSFWeE8oe0lVMn5+UF8KejV2WFErVn1PfHVZK2B0YXRF
b1QoZ05WZ2dUNElqfTJQaFV3NEZwZ0QhVDx0RV9sOHNlZlAhMXYlO3J2PUVCSVJ5Cnp0Xl5iXk8o
NUl7MEFNbFp5UjI/eUxZdjZVZzB6MF8kUFZGX3o7eDYoODMxMlB1SyQlSCN5d3FjWjk4RGBZYzRP
egp6MENkZWo1LSU9JFhjKU5+bEg9T2olMDNIX3Bucj9Ia19FSDA3OHMjWWdgcytEbEFvQVdfPmd1
c3s7blNKTVRwUmAKejNPY2xXMjxpYUhqaShEY1QxflF4YDRXNShDJmgzfUBDfTQwUjI5aXllJTky
QFU7Ry1xWSV+dTBVWjxoUG1zaV5pCno2fTtSajRgY0dyYHp1e19RY0B5dT9oRURtNUVBXj1yVnB3
N2xQT3d0Z2d3OzAydWJqaDVYWFkwJWRHUT8qQ2wrOQp6VEZ2KG9qWTtTfipec082N3x9eilKc3tH
NiZuQ2lwSmA7QlhhLW96TGRkb3dhUXd2JWZEZn4yWVFpZX0pJjRDWF8Kenp0Xj1nKXVXJFdqVDJt
SSMrWDA9NlJ8Tko/PWh+c3UyP1RLV1krIWpiQ1JVYkkoVVRjWUVCZD5ybXppaiMmelIoCnolOHsw
PGc0elA5a2JAJHllRH4oZHRUb3lYaT1iKCE4PzRqZUtpe0ZZO1d0bjkjNUFKfWo3SjA+RnJgPyVH
IS0mWAp6XkApQm5VcVZvYl82I1dCUyhvYHhWTF9tcjdmPD1AUTx+Z3pTTXdgTzlCSjJ2YFV9Jig3
TGooVnp0e1hvJk94amgKelJNNj16OHY4P3RldGRrKTZtYTRuJWBgc0lGRS1uPGlJSUU/VmBqS24t
RGRvZUhzUzBsOT5+Xm45eUV+S3BjQSUmCnpiX3kwQyU9YDhBQnd5NXVAb1A3M0p8O0hOZDF3bGFz
LUc/PSFMZENYUXFVMGQjODt2LUIwMUR6ZXFKaHN7a3N3aAp6Pj8oODdnVTt4Zj43M0s8ZWx9NTc8
RlFEe3Y8R2UpVE1aSntUdyolcXtYSFBVTXFxIUA9Y2Vuezdicn17STQke2kKejZ8U2dTZEBWfXpa
RFU5YzM7Tzx2O01jVVE7MlglM0tkfWlxdTt2eTUyaWIyK2tWfn0mX3ZnYnlzK1ZrPXt3Q1RoCnp7
QU9gO1NPVDB+NWI0KXJnPF5zM0shRWM5XmtxKTlZQ2l6UDBSWFc0eWNxVHoybDNfYm1JLUw4Kkk5
djZ7IURvQgp6azhZPG5CJHJ0KHs4QnYtTUZ8dj1PZ0BmWjBqbGgxIyglUS1JfVFhNFAkeTM/KSp5
dXR2JDdFfXU3Yk49OzJUfHcKejQ+MD1NbyE4LWNEWHJ0fEVqREJuQEYjI19NRjM5ZylFPClaYSE2
UjExMTZkfkMzPl81RC1xM3lTOFhqSiQha1ktCnpFMFFaYD9MJWdGITlqKExQdnY5V3IyPUJQRitV
QVUtWFQtcl5WM3dQX3heNnU8VjV9d2JRUHw1S2NIQTNBYHN5Rgp6Rlo+K1VmZDdHUzEkNylrP1la
MlBQfnN2cXVBOVE+PT9tWjJ0KFQ/SShvNGJ+XiEtYkk3RURqYXtGTD91JUckUTkKek4rRW15OHww
b3JjJn5nZHpmM3NEO09yT3prRHB+K1hAJiY8MV4yMTdRZnllPiFyTl9CbihPem10bilPeTE+aihT
CnpZVCRKUHY1TzB3U0NJYVZmfWxsbTUzSFdxcGp4MDxwZXFuaXtfaHVGQzw2ZSV7RjZ4dzwqQ3Yx
cysjVz94dU9xegp6b1NaI2x1T3ljb1ZNRkp5IXteQHxSZD5rPyF2I19KPFV5THwyKmtmUi1DQXdk
Y35kZUxfV00tTXkqV08pIXZQZ0UKekM1OXlVSS1DXyphOVFwPzx1P0t7b348XnN2MUVGOz4oJWA5
KWVHY1BAYF82NilEfDYoMyNkU1o0Zl5wYGV+THRaCnpIdj1pPkZQd3E9NHNRMGpfMjVKTFZgeTw/
NH5qTStIdjNDRTsmO29GI0o1S3ZAMEQtUDx7aDRAYDU/MjhafHA4YQp6OEs3OFRJfWtBY1p6QWd6
MHwwUkQ/ak5sXkJJMWZ9WSVvUnR3OFJtM01HUTxVQD03NXJIams/UHdfVDVxcDhgMSQKei10S1hp
JURXTTV3SzA3ODF+XilyUX1MflQwX3tAKmJVRWhra0pvTkJnJUBTKGBqfGwyd3sreXNMP3RpRFUq
NjdaCnpIcWloc2dPSVVAVCk5Q2t5Kk9FSG1uIW1heWpeRHlUNUF+OGtoK21aVDJ5Wm44VHxBdXlZ
aEdEU2dJWk1eNUhHXgp6JDBSdkR2d0xhNDghMS1DSCsoWkxMQXNZRz9TV0ZiJWNmWGk2N184NEV9
QWVkdXNYVSR4cGFOfD5edHRAdk1+MG0KejhXQV5OUmxyflc2b3ZZRGgybnFNejVpUkFLKjR+Mlly
fXMpWVE5fVg7QWBzYD9HaSoqdERvVCFyTWZ4amVPS3UyCno7QjczSVBqOFFUISZKbUVBNDxsc0lR
NSN7OXFKST40O3Jlfl5TMzdISDd7bGNWJkU9TUZjc3pWbTdvQW5FTzs2Uwp6TURqb0c/LURyeTAw
d18hVXczWWFYPG5zJmp2WlBFJFZISUUhP15WY0UtSF4jSj9mXyEqMFQoVkxWUTBlVnRSbUUKejF5
RkhIK34oI1IhfD49c1Q8VCNkPVVmJU9VfEJ4I3lKJSFPNWpiT3ZnPiFgb0JFVTZEO0FXTytueX09
RkBrQHpHCnp6Sj1ZPiUtSjhpUnZ6ZDVWUFo2ISh2M3VFI0lvV0hAdFFiVnUpamJ+PUQ1bUxlUU5t
LXNAZ2Z9XkFrKH5oN0N2bgp6cyo8cWVaJmBzfUFCMURBaExSUX5HV205LXZ4YDBGUWtVV3YtZlc2
MFRaOX0he0VaI3M/bytLI0NeSFRmfDFIVDcKejlveEd4bjFJNkBhOF8rZTcoYmU3WFNnTj56ejt0
UEdXck0/SCVxV0pSJU1sU0lvR15yO3h6O1M5TiRFWFB+REMoCnpsd35GczleZEFHYj94YEchQEd0
eElLMG1fQXVtQEwoRDFaOSokbCZ2e3x1emtFOGNvYHZLNzV6aUROQHVSR0BzMgp6JCVxRTJXLTZY
UW5AQ1dBOHN9JihNfXpHOGM5RWRFYiRjRH5yMlhvayR6Smt4LUwkNkxwTCtkKnNPQ1Q2cXoxWVcK
ekZqeVpOWUF8aWFXMHdpYFFwcDVDODxYZi0jd1oxeTxuRzxwc0EoTWYzZk1GaUF3QGhEWSU4LUpT
YFFCWjF2UXp3CnpOendrcD9oZERMMj12Vn43aVpuIU8mampUWmNrUkliU3VvQWp0IX1lWE5jbWgq
U2JlRC14KUFLe01hNGUrYWg7Swp6NF42aXUwNlZ+T2FzTiM4OTM4eX5De347WjFkeyE/KUJfdj16
fV4wMV9mUFM2QEFBPWFVLUQmLXtATUhnb1FadCoKelhUU2M7cihYRSgzLTlLcWUpZyV9YFJUMUkr
dypSKy1gWHp3dlI7M1pTNn0/PDFBRiE1e15PIT0tMUV8Pl9+Wn0mCnokSHstPHJNR1U9NzJpSUE4
P1ctQmNXS1luLSFpMnFTV355VV9TdnFveDdvZGE0PzVVR2d5VDs0KEZAMWswPGx4fgp6YyZ9VlhD
OXJaO0J8dz9aPFlwKEBNRE5WPnktJksmP3U3REZmOSRQS3tPJHw/KS1WM2dDbSE+ZGtObV9OME5g
SWIKejU/WTFUSElrZW5RSH1nRitTdlg7bVJ3VillNnppNnFROyF0ckFmVD8pOWdtZm9KajsrPHxW
UVV5ZWBoX3BAQ1l0Cnoze0k8ZWRjN1AqYzdnfEVaciQlJjlrMUh8OUJDVClucHBnejgldSpCa0pN
VV9LdWJ+az9tMG4zajZ6P3RYSmlBQQp6biolcXghNipXaVphI2U4QDhEU05RYnl3eVU/dmJXeC1e
TWB1enluKlkjTXJqc0J3dGZUPUJoX0dgT1ZeLSFNX3YKent+WlNqeXhzSjJlMlNDbygqMVBiVkRh
NVRZRChFNGxkT25sITQ9dGBXWTdlWjImIVRgUVpvLTx0anp7eGBJY3pvCnpGWSQkKiRYN35qO356
dWZAUzdnX25FX2FsXkshMCtEflByQ2ZVJElRVStaVyM1PVFrR1hFTXU0PSQwZi0xenwmcAp6UkNs
SG11IUQ4YDhsbzN5KV9nUjZET1cjQjJMfDU1MjcrWkdWamBLMUhBQnpeNmlhXjdNaUNxODRXTyRV
M3krPj4KelRQOTx2LS0qWEshRDUweTRhMW4leTApfTApSElUYVoxS0NgXz5+eHFPbV8ze0MrdE1q
Mz0lWCVIUClKSEUtekxrCno9RjRaR1FlZDFLWmgqdmlnTnpLNHdqRz8/SGp7VmpXVyUtSGNIPUlI
dE4ycCQ/XjFPN080SjMrP0hmTXg7N2t2Jgp6IzVDV0RXI0xWWG9yZGFUKiRQbjJpRGFieF5PVmR3
R2ctbERsM19TaHRCNzhWYFRLT1g0R3dUeVVpIS18dj5ldCsKemE+P0Q2empwUj8pdmd1TWxieXIm
QlB2VztjZzM+ZjtTMDRzJGFYUn5tfjtEd1R5eUs3MmQmLSQtMisjbmtrZnVnCnpeYDkjQ1gpc3wp
aztQMWtsPXJwTyh6cU8oezB1Z3tgZj0wYntQJXZEey0+MjtPNU1wSTctSTY9fE5NWEEkfVEmSwp6
Rmh+T0l2fGZXcCtzejNoJEJxNF5HU3Y+Y2k5Vz1oZD5QdWgpR0JtaEZzcFIjb3AoQzlIZ1Rfb2I5
SVpwJkAwTyQKekluKXI4a3RZXityOTZoend9K2o/O2FuamdtXkl9SDdVcnUwc2djVW9BKEBaKE0p
VlhZbmt1TDgkZWNmSlZHM2M8Cno1MGo7Xk4zOyh6Qzk7SWBzIUU/UFpmPXRPITZycjtIeXROVDMr
Vks4dyUlP0kmajRmLWlyI2NLO1RtS0dJSkc/fAp6aGgkNmB7Tmx9OWMmcEw2bnAwMFhyRldkWT87
Uj9MdHkyRE1YU1QyJms9RnBKdkVIIXAqQ25SK3craUwwO2t8dCoKek1MblQqSGBWSEVASGRITEdW
cXZyIXo4RTQ0NTVGeDBVNSlWa2JMbXItanB1eClwcShqJXdCWkdGOUhMRkkjNWJKCnpldEc1TEky
e3UyQVRhZnd4YnNnVjFJWiN6Tn1KeFdoSX45TVBjTX1DUTZvT2RZRmtPJj5eIThgPURqb15RMjtI
Owp6ZGIzP35GWSp7bnB1fj5EJlBkVFZ2YG1CWWxtdnhtZTkxYlYlfisjfGxEIzJRdFZuYTMhbXo7
enJ3ZntESXtSRlQKejZadzFZUH1AazJfd2xnRTRJWXt+KS1VPkcqbGprUXExc1M+UmFfVmR0XjQx
YU0yKmhfWilhNFNGUnpwRjNqcng3CnokSl47dGxHcXJGVl42ezkqaEszYkE4WW9+OEV0STdkPnAk
MFlfJVh1dnw9MVdgOF8mSiFKenRNd3YxRUczdmk7fgp6JCl0RjZvbH5jXlJpS3dCTEt9eDV2KHhy
OVBJT3N5KnJ+Tmoka1B3PmpybUR+ITBkXiZCOGgoZSopfDB3TGsxUlYKelZMRHExeT98MX1wPyhS
Pks7OU1OYWpgdzYhQz8qbCkxVjNaVjZeOGs9X1dkVVpTN043bWJnRCtwSWEyJlhyNzNDCnoqNGZx
b3doPUhncHpKKTBHKStKPVJuYSlTK3k1SjYpUj9SfCRYMX5ASS07U05ONi0zNGIrMFhWKWVuUyN4
P0tCRQp6ZFVBSCNEWF5VJHlGO2ZuPGNye2gmeUpGfWBUX3hyKypDdEQ/KXFkKEp1N2QkM2RCPGpU
dnhyKUspSHUmbWFKKmEKenxOTjM/PUV6NnBsOTFwPERVU3IzM0x3YkItO2JWczwoMH5IdDRnUTs9
UClHO1FtWVpDYD9SbjE4PlE5PSM9QHFWCnptfEctT1FkKFc7VCNQdlF7YjdSTFNDVFh1OWc5UDx0
SEo3MWBySX1tSV5rbCM0VE1aQkozLThFOHB+dnIrbSNsPwp6YD0wOW11eWhXSmYkJmZrdTVIYDRa
UUhncndRYndCWkVNPDJaUUhpWj9lNCNDa2xmckdvUmZTWmJedkdkb1BIeVAKekVLT2RVQ1ZBNlI3
TShpZiYyRUdlRS01WkhzOUlHVV5YeHlFPTN3RlYkKi07WVd7KiEre1NLWXxfIW1yNkVzRl5aCno8
TEJSK25vX1E3UlRQT21lLVgtLWJpKGdWYDhQd0l3TjhZVVZOIUkyMmRJZHhxRGchYWE8SCVDMnkx
JDt1OThmUwp6R1ByQElxNzdQMkxiezFLUWZeRF85OGZscFBBa3sqMW5+MXhzXktBUzwwUGZLZzNI
fWNvK1ApdU5peEdgamshJX0KekB0fiE4ZHRecUxOZERZcS0yPnJjP3pCNitmZjB2I3QpbSs3K0Bw
VnRibGYyNm9NdiZQXlArTXk9STc/alNgSlc5CnorR14pOFpILVNnKV8kQnMpUzxVVDt2dTZ5ZVJM
IzlWYDlRQUhjSURoQDhkZGtLVElEaEUmfGJKUTxLJj1tenNMfQp6RDEjczBrO0EkM3ZqYVJwVjdA
PHtVa2h3RFM4MGhXP15eak1wMzZIfHMhRUBIK1o7PVZzTU5XcihhOSpeMiVNJiQKeiZATFhlQ0hU
blEzQU5vWCRaKWVFXjxAQ18tcVpxdTd6Kl5aek9HRDBRRj9YUnVYTyoyZiFWfkVmKVFnZ0F2dkt0
CnorbU1SR3c5cUQ1c2l0K2ckaGcmdFU4O15YTDBkUExKcDQwbnFzWU5yZFpuRzB0QFc0eSNta2N7
M3ZXNDU/JV8xXwp6bF5HTiExYyh1RiEwJXg9T1dxYyM+XiotPTJ1bjxsTGpud3xWZX1EbkN9Y2Zu
eGEwejNKR2kmPHA7MyFFRDlTYlAKejBhb2spVVdaTUJLcllNNXIpPmpJdUxmQWJEOV5VeHVPKHB0
KEloaUIkSDNuKGZRRjxnXzlxYTkwbWxTKDNLWHokCnpiNWBIJjd1dko+PE9wJlRWe0goNTNGVEI2
JGRnO0RXVyQzcDZTaEN5VFojV1ZlaEEqcTsjKTt3aiNHREoofE9WdQp6U2I0JF9ZI3BFSzFPaFBZ
UWNeMWU3TU8mdiMrVWFYWWwoV3heNkhBdThYKEFVaGtzUU5Za3Y5TFU9VSVSMTYzP0IKeiV6WGhG
cnhmZVEmWlpDOD9GKmZRaV8jUiEwK29qfDx2WGp2KjUjI3cqWSplVnQmKUJUSHBeV3AhZCFGP0ot
fkBiCnpFb2FkfT1HTWtuJkV2Jjsrbjc1V0s+WF8wKUpsTj5EVlJFQ3pwSTZ3TjZodmNnb3FZKHs7
dXQoR1daJkU7Yzs2fAp6NGpuS0gzb2UtQHI2Uz8jcUgramAjfHZ2Zj1AX01JPzVoRypUSmJBSiF1
c21sb3khVDdDcWM2c01VdEJgOXNyakYKemdfQHR5VTs9cUQmM2MhI2tidGspQENCREpxUHNKJF82
eSZFTCVRPz1ANFRWfXBVWn00PHt6fEY5I148ZlFXYG4qCnp6QXNYOG1fO3xpJWM1bkJPc0okeW0o
UGp1eHM2dWk+SE5ZdUpFPU5qYmtxQklTYlVHNStqJEIwUk9tKj57Sj5Dawp6a0k5Ql9FbH1iNWcp
cngkbzdaa0doODdtNjReMmdqSmdBWF57K2EzSkJZP3lfcVZBIXRAPHcxanVQVX5vNFlUKT4Kem4o
JVFgdyE1dX4jYUkjSHsyakJHKzM/VntSeDZLJCQ/ZlB+JVRKfUFpRVJiUj1BNWBhcUBuemQybkJp
VSFqdVM+CnpnVnUjMyh+eksjSG95b2Y/Q0gke0JtS3pHPCtCSGgpQjs1fCthdlZrU3IlJSNXWEJx
Z1d1eEtmZStsWH5uazlUTAp6aCZBWUx2QTlKI2FKV1pvYyFzKUcxdHw0clRKXzAzUCUqPkFCSGxu
SmowJFBDOVdoa0tHTUswbGdgT1FnWGpCMTYKeio7bkQjeFd0fH43NUlsY201fEAhJm5jP2MlaHwx
bzI0QHFzRzZ7UG9iOTJjdG9iczw9ZU11cVR2aipPV3R6dXtoCnp1bmA9RG16I2cxYE1vQCVQUjRl
al5ibGFEe1k/TTlELTdhTyQ3T0I9c01XTGVodE5aJktkJHUje3gjR2hHK1M/ZAp6KHdGI0k9Oyln
WE1wVD1nPDEpbEBUfTJ8IU16byZtMTI/dkE+eEdUQXN9c1RgQHpKP050Mn14PXh2dVM7cGNuQ20K
ejZXdSMlZzhIfWs5QUk4KTAqUkB9ODV5PjdOZk1BenhsPTg+UnpaYSpzaCpQa0gzcjttQG9Yc0Bh
d09TRipKVy1TCnp7SEdUTityOUhASDBBSyZ3SmBgRnh6QDltMW44MGtNd0lFaDJQUWtRc2VHX3Y2
T3d3a0w+I3ZQTVIobUMoMig0Xwp6Nko5YHVsR0ZqczN2djklNGFvMHxCTk0xVyRzcWliKXElZW5S
eCV4QU1gcnhDKj9jLW8oTV5JUlolb3h8cUJrPCoKeipwcSQ3S1M2Tk1RM0ZMdGs2UjVMbGAhdEw/
U2pvcz55R1dDT0FAIThhMCtpWSZORjFjSEtmSVk+QF50bVIzamg4Cnp5VUkqeWM8ajhKb0pJJWFy
fjh8JUdTSillRk8mYSUzaXY9Qm9tV25se245SkZzbEliRWBwdmkqU15pO1g+QGxBUwp6STs+YCFO
Pz5oMSVFJWNKQk5SMXl1KlJHZHA2Pjl9dCh9MDRNNk1BJnA2d35aS15ab2olTWs8Q0l7fT5zNDtr
eTgKenl7YFE1JChKRHVRaV9pN2FfeEFRNXhXVnVYeFYyX3N1YW9OUV9GZG09fiZoZzVZc0BxXn1f
e0ByWnBsRHd7MSNhCnpyNVBVJkE/dD1Lbj52KW9zaj1taDVYaHUpO1ZITj5xej4/VHl0YUJPK3BU
MHlTYTQ0OXchQDF5JjdNYSlRM3Q4Wgp6bl5mK2pnT1pUdTxTRzhkaUImbnhJY2tzfipOfkVZe1Rl
SjJoTHpiO3NCVXl8Mn5MVFkhKmBTTzM3fkAjcE5TYDcKelg+bTEpSG1ARF80Xj9JWlcyaHdBKG9P
RDYhbytifmZyR3J9VjdDa0IlMUN+azZjdk4/OXo3Wjl3X0VmaDBHZ1QqCnpDVitiWjF4cm15KChU
ZGY9Z2M7fnAzN3IhQkk9KEJrfCQwdEApezw8NCoxfV9lWW9LUmtZZjFAXnp3fH1YPTFlKAp6XkVL
WE1YLVRwaDh4ank/ak1AZUM2VjN9bE5qeFdPODE9KjRfR2R0QERvPG9YPTYtWmA2d2lAckROeVRQ
aCZgVnYKekh4MTJUVH1iUzZjaUdrcEhifSNyPWoqP1opdmZyTkVWYz9yWnFpcnMrNEg8a203N31q
ZVQrcjMwU2E8Kz0zVmV0CnpRYD8mKFNASkt1UT00YHk+KGx+OXNqRkJAPVNafUVRK0xnblZvKTVL
WF5Obmh6OTh3Zk9iNGdRYWU4U1Q/dyohYAp6OSl+YC1MMTVjbiRBZjhDRylqKXZqNDJRUDNDUVZr
MHowRUAxJSN8MXhpaE9EKSgoNHdzd35mZWpJVFVBQVNwbG4KelVOQ0B8QH1lNWM+Sm0pM2R9QHdC
OFp7cGMkV1RJbGBHcmx+RiR2SilvOHBFQTxIc3toaVMhMyRRcn02Uk8+X09zCnpTSl95QHEkSUM/
dn5+XnNZNmZQOTRAI3FTN0dqfWJIeWMhPzx8UX0jODRzV1EzSCZGYCsjV29SeFp5OG01KFZtZwp6
Jmx+I0JmRVVyM1FfTHQjeiQkKmtOZDMkfXJaO0FgKnEoPVg4amZIZj1fNTRqb35sfHpzI08lWlRR
O2paT3tJXyYKejc4PnUtJU1UPXFaO2Z9QlVGNnd1ZysmS19nP3x4clJMV29vPSlpTm1JQjk4XjBW
YW5QXjBkZ1QoSj4qZV9qd3R+CnpVaGtqOzMtSU0oUypgK3oxRkU3QDx+anQ9RjU0XzBVTkNDe3te
NnVjKEslIW1eZGMray1PRVhHYUQpRXxRQnFpPwp6O2ZoT2MlJWZ9Vm5FTUFFbyh8NHs4bj5mYDkx
WU4oZmp5I1BPTnVxRUYhRlVUMmheRkJIZF5ZISY1Y0lAVFFtZ2oKeld8LXZhRj0wKXluOWVwP0Y2
aVRFSGl8ZjswPTN4PDVCTy05M05LSjx7KFdKRD1qIVRxOX1Qc1Iwd3c9JVBTTmY1Cno8MEFfVW02
SGRhN2dYbSZuNHBYWGJLYD0/aF94clc+XzdgJXlUVmd6Xl8pI3c+VGVWOzcmZyV+Y1FfUG9BeHNy
Xwp6cXlpWVBmcHQwSyNwNmRMcW5nWkFldXJ4cjtXT1o4ZDByd1NOdkIzc3U+X3ElTkdeWm15SGsh
aWNBJSFkQiRMSE0KenFrayhka0ZtVUVGIVZvc3xGQE4mRmUwNEpZfnxgMTtlPVp9aEVhKCttOG1f
KWstX3hQc2trNiFuJHlUKEJeJiZSCnpXbmpvQilkPWs9Pn5OUjIrYmg/Y15WfnFqSjVadXFaXypp
UTNTQSlSJnd7K0QrRlN4bXtqK3NxKiZGaUFYQGIxPQp6M1ZUZUhrVDR1aV4wX3sxIzR7RiFqeW1N
Z0NGelEjRVMhO0EoI3dIMytoaX5oNGM4LVZOfG5kbmwjUnJvbns2bTcKemtVfFJzMVk7Y0BkSz9n
SE9xOXc9Pm8qIStVVyp9NjdSOVgmTUR3ailKNCR7VUh6U1VZSDQ/T2RTYF4kPlp8cCN5CnohUH4k
bGVlWCM7MEB1JDhDZCYmO2tWdVgwdEd9NWVAKHkrU3R7TFBnQnxSRUhnWGc/WTB5UiEwOG5hPGY1
THxkegp6aG5fLVlYfnpHUylsZnlAelBQYj03Wl8qcWkwfXtCMT5hUmFARyRraGJ0aWBxKGlqIUd1
NEVqbWJUOTZ0KFdfQDAKejlAcnklN3lAMXltWEVPQTtXaFRkcEtKSVV1eH09dSEpN25CSU1PalNu
cyZGKCt4XlMwdVN1dFE1PDB8X2J7ITkzCno7dyM3cl8tRkNgVTM0T3clRCtKJmtGdFpmazlOQmA3
aVJoZnw2TUAwIXdOUkloQzJqJjd6T2tAO2xsUn05bnFfOAp6T0lPUTg2Xl81UE93XjMjIVhLTDBA
MXl+OzlAbU9tRCV7O2o5UlI8NWJvX2l6dWl0djB8RTA0ckFxantUX0I+a3sKekJudkUkbzVwfUhy
JWB7JFRnbFJqTkZCe0lMI0Y7Q1A9T2ZrQUxGbTJlVm9ucntFU2N9a1FlfnlfTWV0PlhXJFJPCno7
M204YVlEYXhaJXJYb0JmYTU0Jko2ZVlgKEV+dzw5JlNrNW1UI2dqPFA+Q0xycGdoZi1fJTMrNWJs
SFlEOHhXQAp6SiUhYlljLSl4XyZ7ekUrQWJDS217PXQ+dSskR3NzKmNXdUBOS0cmYXNTZHluPmlM
fXN1cDFaNlc8diZKe1o/fDYKem5BaWNGV3hDZDBQYD1yfmM1ZDlUTkhSWU5VJmJUenZ2M2hmUCRa
WmQwOWYkYnNKX0h8S15fMUEzZkdYNCZSM3EhCnolNklAJl43ZUNNKmxQZ0RGTkF1ZiliaXA4UmV6
MkJ6YVZPMyRuaE1Cejgxe3lpMCNma2hAPyhzTD5RfXxucUo8Xwp6ckFqYWMwRTM8MjB9Ulh0Pn19
MTRqRCZSUTMlc0FzdHoxcGJnJXpYZ0B1Si1HJkBVNU1XZk9LNisjOEUyQmlAOHgKemlPeyZed0Q2
XnRNblheWVhzRk0kKnJPdSZ1K3MxdllndDlwYmxKUncjKGN7KVRFcmN3KytORzw5WH43N18+a05g
Cno4fSklJFZmPXg1NjZlNSZMYH5JPGhTTmlTd21NKHo4cDhLcVpiYiR0XyVsTkJCKFIkNzc0c3o0
Q3RTeVdoLXtEcAp6UHkmT1hxYUYyVEU1O3otN0B3cnxPJTshWnFxcERgaV8yO0YoKzdHZj1KQW4q
NkJzY1MhbGU3YiY5UExHOEg/UjcKek1zZjJkciF3OUchMHNnMyUjQ1ptamoxbyt7SUNsNFlYJFFe
ZmBvKytOVVRsSFZVK1BDZzckUEg1R1FGZXFhMmliCnpvalg9TTRxSiNmVlIqeGZFMUoxbllycT1W
QTBWI2VJdzJvSzZmaDd2U180RnJ0RUI5eUk/VioqQXpnQzhJVW1hTgp6UVh4VVZsMFVgM2V+JGQr
e09uWWB5aF5aKD5XYypHMHN6UFZGSXlaTU9hSzVkKyZGSDM8ejJCYG83ZEokYmtDI18KeklTe1or
ajg7RChmaU56fWdeWjFHa3laZ1ExQzFHYHFkI0xnWUMtMT1rRiMkUipoM15UWSQ8YWkrUzImc1J3
YEo1CnpzUz89PlE2OHpiN2diQih7aTZ6PTZrRFJ8QkN8aVJJZG97eUh3d1JKWUNAVV5XeERTPSlo
dG1rKCFCWD9RWEphNQp6OGNNem87UFZTODBQSnJlUXpFPzE/Qi1DQGd8c0duc1NBNyFvIzdhSGdq
Vzw5QngwKzlVcm9PKTBQeWt1XklJMUgKemZXJUZ7JXtoTVJ4NiRHVk0/MUswbnopeWtZZH4mKGdh
dX0ySzRpY3tTJj98RU1wNGJyZSh3PjVBNmJPQCZqPldLCnpBelY2N3h8K19NWX4mJGdFUHw1P3VZ
YVJRa14oM1k+eWopb2Jtezh8NGNOMDNkIW5FZnYwUTk1ekZSMDVqZkRhPwp6RW52bS1HOHRtUFM7
Z21ZJkl6SEBvcGBUb3h3e0kmIU1RMGh3UWtINjtfcmxvNzh1KVk0I3ooQF9ESWBPTVhGNWYKenRm
MSt0Nz9STXRAZDQlMFJlbylxZ2E5REN8Ny1hQHFTfTlZejFUeWgjfF91JS1uWTxONTNGY3NJRGFk
ZVJFTT5LCnpKPih6KVI7SFFMQCZ1QVI7a1cta2UjYiM7Ymplekg3UERGNVlxQE16OHBDd2lLUHkw
YGdeQmZUWUotVH5OeTdIWAp6ZTRLeyE/PHlUfmFsbX5IO0RIaF5CWD4mdm9FZX1OYUU4OHZhVDtq
RTRObihLa21rSUtJQ1lBV09Fe3lCK0RWWG8KenphbD9IMEZkfjkoVlVhQDJmKG5PbihfcXpARGZV
NztEVyppYUVITHoxdl95dzJyYiZ3R25CRD1zeVBvOER6NlU3CnolNlZtUnBiV3Y0KWJTbmY5JG1v
c0hZfTFAVVpWP2FWJHRBNm84Um9BI2NpcT9YVz1WWXNtNWZpQ1AjQFRLdElUPAp6OChVMlJYd1NL
Sig3bmgmZXFJXio3bVQkTUsrfkhiQF4zRXQ4QSZobFVYciVxcTN4RHY8X0khcTZ3fCVnWTIqel8K
em5+I3wrWmNQfnYzRUwxJU84KEBISj0pP185PThOVjM+VjVgPzghfU0teGcyNUdgZXN5KXAtZ0Il
djlCS2c/NUxrCnp7RXFhMk5PblA0JCpIM2RubUYqSCUxMHZ6RmxZcDVFUWo3JlhnJThVcnBrfXhf
ZDJGKVgpfUYzPzxiTWZ3UStsMAp6TVU1UTR3dl90TDsyRVpNT0FqSzg3bDNiQ0hDWFZQLS1gTSt0
KlRHcXc3ZmdRdWkzMkAwT2F1QkBCI2k+VkhSI0UKelRFUjRSSj5EflM7cDwtZigkUURVX3k7SkR2
OVNPRXpEc3tzKTkmWHxrUDBFMkV7ZUs4cUJEa0R0UW4lcz5wcG1ZCnpzS1hZYHghR24lY3Z0b1Na
T3FQcExmaFp8RHFKfHdRZSUmSF5RPlk8dX5OXjhVPmBES0FaRExCYT47WDsyKHIwNAp6ZD54V1ZT
NHJJXiVwejdnPjtYfERrYEgze3tEal9wTDBBUWJ3REt6dVgxNl9uJUVRclkoTDNmZ2I2Y31TSWwj
JVMKej9ufWAlKUchQyNgRmAzR3BYKmo3dXNKZW5JZmRxOWoobD0/Q0lzRnIjSURBPGFjbCRhYD0x
bnpOPT5SblNfdEIjCnpDMTFCR09ecD99JTtnSHx5V3M0aylgbVByKjhrenlrcTc9RVh1b0B9d3dX
Nis/cWpLXkBuRkYwJklmZzZ5UVptbwp6PlJ5aTZuJm5GWC19VCpZITZfNkU/aTR3PnspZVEyIWxX
TkJrd1lUOWlsQj1CbUZXbiZPOVZJUHswNntoMFZzcWEKejBDblBHe3FuczthVEsyU3VpYm5zbyM2
RnAkTzcoSTl8TWxNZ1FGb2FWJEN4RTJ1ZH49ODleUkE1OWNtWD9eb1BHCnpCeHorQTROX0RNRkM4
ZytuY1NpPGIjcyhmPkBhJExgR3tlIyh5THJ2IVExayhZZlJkP25WWUtNYyRKdihJbUVBRQp6e1Be
K0BHTGFFKWZIN00+Qz9ZZUNvbmo/P2FnQitxNFR9X0xeOWJyYVJuQEM9ZzkrNDJmN1JLOStFMHxS
Zzl+NCkKemEwKkE3PHZ3VF8la0c2TUpGK34/eT5UcU1wKkdhRHQod1kpSSpEJnlfZURlNVM3QTxo
WUZRT1heUm1vUHUlKX1JCnpxd1RUd2VELWRjMGdXOzVRITQ5PmshTDw5PGExaWFyWjlvSChpK3Y5
UD1DSWAxaF4xTHtOJFl8M2J9T2Y4al5fWAp6XjlIU2xSMnZfUDxOQj9ePF5aNnF8N3gofCpJZkh3
a0NsVj1WLXg1dGRXIXx2PnRFRXpKakdzeWJTTFpGPE9hUSYKeiF8cm4jQF5gdyNAdnRHazhOVVRG
Vmo2Z0hleD5+Kj1rT3BocCNVPFdDU0BwdVE5Mj8pV0xHblZLPlVPXmpqSUQ+CnpMdEJ7YU50ZzN6
Rzc9cGRvNSZTSE9DbFQ1NndxRkZ5KnUkMW87SDZ2SSEqfVlpVEkhMVQyaHZfS3MlN3hWfXdBdAp6
SlFzIUJoYHgkMzhAT3J6bnI7UyZmTVFnbVhYeHV3SVV1fGtmajM+NTMyMDdVMExfPjFAYjh0UEJJ
Z1QqdGxOYVIKelBlNm9NMmBlSCpgVjlXMzRMc1d8PmlgPXMwOFU1cksmPk9OWTQ+VEo1Zm1xQlVa
PkZ4SV5YY3Y0VGNAPCRWNVcxCnpVZz5kM042VUs/YytrNDFtK1RAKipmbitVcnRNWEBAYTJzNldr
dmFnYXJaV2FNb2gkSXdGSV9ATVVhVW9re3YzMgp6QFg+N29WNnZqZHo/aihyRVFwaTd6VSQlaWVM
YiV6MGxKMWhxN3tkRV8mV2AtakMwXnIhbyQpc01PSCFfb15LPHgKekx4UkZ3ZWdpMGZiQlN+T21J
ZDxzaVJmRXhJPE5XcXVJRzFGNSReTlBoKSlpdEJLdUV0X254dzIwNS1velh1LTZ7CnpXb1VrUiVA
SHMpc0BgU3B7cmpgaG5+Zyg9aEJeaVNjXlhpK1V1Km0lMEJHPzRyKm9ENmhSeVNia2pZVnljNGAo
PAp6IzlrYGgwaSh5Zk4tVTVPclU3PU82YnBeOHdJRz02PlZPISVOJi1oMWFvd3dCXjZha3tFdF9C
WjVQVHB0RXpFKW4KeiNmTjYkPWwyb1FBez5RSHR7TEhPZ1dQbHJmRyZvdGBBbCMkUGN5eGlTIz1j
NWF9eVBTYnJNQkY2JEplYThYU3NuCnpmOCg0XnteQnd1ZVQqVT8+KWVwIW9hZSYpUU5hQHBfSSk7
UnZaX0tOQWBgfjBzPDtiYyVSZSZwZHBfYX1SJmY9YAp6SypvKWZTQTFteHd2MVpON3xhMWJLeGw+
Z2lqSSlkMWxNWmYxSz1hXz16bTlGJVE8NSg/OXZuQFhBLXBwTUZLK3MKekstZDJ6WG9BOWpKeWlf
eko8JmJgdXxQN0FeJEVET0F4dVVFUDstJjJwT0YqeThvO2NYVWJRKShQRl9RNElhQW9kCnphfE1S
LVFhWlhnWDdScClCfHlvJmwpaHl3RndGZmZEXihkUGx7aEtYNEpTUkc8X2k7QkNDOTlrJkcxYz1f
N31xVgp6PkU3ZShIWihJdD9QbXNnQS1TcWVENnJ4ZGpMT35ZPyM4bTRQcCs3MWd6UmVzJXZUPWRs
cllBd24mIX1NRkxnazQKejYzVnI5VH56cChoODJidkpnRXFyQ1poSExFYUJgYTchd3g5IVpyaDg3
eD14djh2dTspfEFpKj96bCZXeVMyT15DCnpxTiYxP0ZyPSZVaDVsYEJPfUg3UlBnbHlMOFIjRzNA
cn0meUpoeW13cWQhUXVkTklfLVFPUUdTMVM+ISFlJjZTMwp6b3hfPmZkbG4kWG5IRyN9OWJsWm01
cTlSRWQzaT1kdnNUdzRTMShpU1c8UE54XmlfZnpxdE9HM0A7dCE2VS1PfCgKelBPUFF+d1BIVTlW
XnBKWSpFMXRXclpyQkpXQUdpQWUoQFFeJT9RU1c9PjhEdkRZPkYhQHJXJFN7aEtDTl9vKUQ8CnpU
cjkrSXtYNlA2QVhAb1E1QCUxJHh2M1ImZClBWSRAZk5ZJThjUkxhaipMYCg7eU85X0VOdWhBdEF+
NGFqMUFxWgp6b3ltciYpJn08JSFoLW4oMEh8a30mI2Z8MG4pKXA/IUNDQzFrPUNnNEA5JGs5KiU0
WnFwclopLUJgRyZ9UGVeel4KeklHeHpvcjwpYlVEK1Q8RzI/eXB6Xz0wUSlTRDNpcjhJdDlEX28j
cF91ZXNgVGlUeiNZMVZzdUkwbDxSNEczLW1jCnp5fjY8akI9RlJHLSZETT9aTkdCQUlCPnFuOF8r
ZFpHMXVqR1c4VjUkIWxHMXtlI2JsS0JyaVdicFojYm5PaHk7KQp6ZV5kezdmOSFCSmBneTt0VGp9
bWRCeEM0dkB5X2BANjhLZE8kfFR4Yyt4aXBpUEwtfk0yRT9Tb0Emc1d5K1Q/Q20KeldBZUY/YyQw
Ml5qNlRrVnZzeyhoSVBWSjxlJn50ZzgoeU82XyY4Rn5aTEFMRTwlQ281LTc7WUt4TUE3ZExVYjZu
CnpNMlQqRTFKREU9aDJjRWErJWRNeUMoUT9kNGhpKVhAR1lPI01xflNRP3BjKT16NTEzOTVqN3pH
K1p2eTxvMWRkZAp6YDRsP35VODlIfHk0Pjx8T0dkMm1vZklNRiFgQ0YqSmxKbkpOMnBxQkRZd0V+
U2FTZXRNRCZPLUFhMFFNQGljSGsKekAydTdJV2dZKG10e2RMYFduOVZWZmduPT1kKU0mflJIMTdQ
eWooWGNwQz1AbGdJNnpnUzsxJSN8NWNoPyhrQEFzCnoqPXo/KiYhMUghKS0tTUVUbyRgS2JLX0p2
WU4raVU/SD0rbVpkSFRRanlVTkZ2PlVxPU5sJCs0PFVOanhUdD1NTQp6YndkQWsheGkoOFBpJkd7
cyF9JSMtTSomTTQ3MmhReUlgcFVoZ2M1LWJGbHlMWXVGY1hDMFNacz1oV0RnQWFIVjIKem5Ackky
OS1hSkJVWFhoP0xwPCRQMzx4ZmlFYyRzfmJidCZaVUpTUSl3TEpmXyZjcGM3UldPb31Bb19rclo8
VTVKCnpvIW1NZj9eRU5WKkhFbEs/Pll4WHFlalMlQD9aP2wkail+U1lWLXpmXklMT3I/fmhzXkNo
T1U3MUp8LTchZHFsRAp6bDFEQFZtZ0g7Jmg+S0s1IzlNfC1nNkY3UGg/bTE7Y2VhaXRvI2FEUlpo
XnhpWWkpfCYmNj9lUGI9eiM+cEJ+UGwKenV8bE57bXRvaEZ1RFRuZTgzQ088OzhIIXlmKlFQfDUt
Q0skJWdofWE8UmIkeyhBdDgodjM5b1VQR3RLIShOKUsrCnojdjkwVVp+MUF8P18jUF9ncHZ3Pip1
ZnR7SVBxfTJ1ZU15XjhNVVFQQ1ErcmZtQSomfEVxTCMzSXxvJmI4SThCUgp6MEdYbnJMXn4+Jk5S
PnUoWVkyY3QxdzdoVUBLKypAa0Rke0ZJfG4jX0wyK0JYSHd1d0hRTEQ2emQtQkg4ZVhIJnEKekhv
aElAeWdwPzRSKX49flclfDB9Y1ZYUDt6d1hQPnZnPXNWWlcrPnE5UVQxfClyYj51JCtxXzRZbnBw
QihNNWhuCnpnRy1mcGA7K1JUKntNb2UtQ1hENzFKOFopOD80K0BeSEJWfGdHU3hHX0Q1NipFdl9H
SkBHYndKNl5kcXtCaDFlWgp6eUFHfGduIUw1ZHRyYjUqNTRVUmFMJTNtYFBfYjZQPGBSdEZOfW94
fXlsNkJqVVQ1JENKVVkyPXVCNzBpYEotSSUKemkpaG5tcnt2TFB7Z05ONzZDNGE9dDYhNCFPNEZm
c2BmK2BaPjlkPkhkclNsRSE9a00kaWdoSj4mNzxLKW1gP3FSCnpLZF84aDE7NklnaC10RHJ2aDRa
RCNoJUJzUTVOUmFGeEskNT9Qc01rclRiaHpAPFQtLTUxOUphUXN0bm16TyFIRQp6bnNVbWNOJmZf
IysmeENVQU5SUThKZzF2WVV9QC1rNXUqRlJaVUBaemN1WHptQGhfWDQ2PCRlbGYlJTd2XzZhUHsK
ekZFYkNDTCNBNDI8JnlhQ2RfTnppZ1Vid083bn0jQ3ZUfDE7PDV7dW53YXNLfnd9ekw0Q3IoIVV0
O0x+VSFkQGU3CnpWd3MqMVVtSiZMMmY8MV9GNno7LVZqX1Q2JWhGekA8QGcrYncxKEBmQHBjJCtp
aHpNa3shZil0ODxmdWNAfWh3WAp6ZFl8OE4paD4pITV7QENDMnR+Jk94d2RXSCslUnIlQSMmTldL
JjwmMXdCU2lzX1BGWjRvZz5DdXRxKUp+IXNgcn4KekB7eThxckZDLT90a2RDT1hAY1RrYUlvMSZn
VjZpLTxjfCNqNSp5cCYhaGhATUJ9UklrNnw4XzxKUzhlYzg/MH0mCno0e3xRTDN9bWhwNlR4PSE/
MVF4P3ZmbiVIU2ZBRTh1aV9XWSZMe2dtPWFjWGkqbXlkRlB7LTZpRlBlTTdgKkc3agp6cyVoO09R
M1NEMkI+MUF1eVB4NzgpY0ZwPDI9UmgwTm5vTnAwR2EwaTBDPHRYRk9YUUckUWxXKmhheEJxZEZQ
M1QKemRNUTlNanJPe1QzPX59NTU3R1VTXiVDUU1NZH17RFkmY0ZlUklUKGY1Zj97STZnS2BhIy1B
Q3MweklSVWpBYCsrCnpqJl8zS3ZSKk5QYCRaZk5sQVpBaFB1O1NEUFhwbkRvKFNpKEx0aGJxYEdu
MkVIeUdRJjFrQzg4cDgrcCFYfDghZgp6LWBafTdWcStXbU50bXQwJk4pc1Zpa3JycjhDJTFkRXJC
NTVWdWtoUWxUYWg0LV5qfGFrSkNOfEZ5NWsyQjQrQloKek94fHdpMihPZjZiRjxBb2UpdkdELTNt
PTJSYit9JmNIS1QzWnxtWSFtdW4ma0hLSUF0RWtjVlc9WCQxbHU2XipwCnpBN3RDWmA0USsjeCtD
MVVrKn5gdXI9ezA7ZTEhWl9kfH0+dVY/XmZ2JE01dU1jTlpYaU1WUzJ5NiVNZnE+KF43PQp6bGpv
IVl3Vmp5T2o+fmFrWXdrPlA5bHE3LXQqM1JIU1AzcXFycmRxPjFiWUYqLUZTN0hoNEViak07Xmo0
eHVSJG0KeklUOVBTX1p6QjBfZTFlZW5nJUVhYCpGO1E8QnEzJHJnJXhhYSE8X3gtZGVRN0I/NlYk
YmVeXjxJSUJxZTt2MXl9Cno4Ty05KGptJkdXTEZtaTA8OyV6V2NMcHMjPj5AWWFKdmc7JUh6MDhI
bEtWcnZIeGN0RihOYShqMjZ4LXdWUCVIRAp6PTwtaD9BJEorYihFdyE5elA1WG9nVzduWWEoR2Rj
V3FSYnVaTS19P0A0KH5vYzsmQiZzYSVzUyNBREorJVBhUS0KeiR8SWxoNnRBVVR1TSRAPGtFcCow
KCRGQE9kNlBLNFpfS2pXWjF7MmxOSzBmKDBWU2oyVnIwdSNETjUhTEFgaFR6CnpVaFVzOUVvcTw7
REIkd2IpKGtnUz8xbENpTEY3ajFFTzBEKVhTVT16dFV4OyljTWhZZWZ5eH1ycjVeQiZ6d0RSSwp6
V1AyWDxzeyVTJW9yaW5vPGQ7WHMzfmRVbl94KWRvdXk+Y1B0aUZjO1o9NSVMSU1Ke1U4YGhrQzs8
Nz0wUGtgeCkKenM7eCFjelB6Oz8kazxiWjhrRT01U0RLISlFIWlmbmVIMCF6TUghM181QHBRKTZ0
cUIpUFN0MUUjcjl8QWQtRiNQCnp4KDkkPns8UUl6c190eyRfOUpTUkFTdU9ldzVDNC12THFiJCkx
cSNqOC1xVjlRJjdPZGtfY0h+KGNsdHI+LVY5Swp6bVkpWEtyejhtdG9TfnBEa3M5LXYxR3h1cFBx
NFN2dlltUGlOWn5ZR1RTNE93THJ3YGNhdVBrKXF5NXQqallLWCsKemw9JitEQmx5NjlANn1ifF88
bzl0WWQyaklnfGJGVDsyP29NcUAqdXo0d2hkKncqWnAmYEF8cTdCSlAzSFQ1fVo8CnojMmk+NURA
TE4jeWRlX0BYQEk0fUNkUDRNSSFGbl81c2NeZUM5Xk1DUl9pXzVaX18+fnIkV3VoOzRDP3JVPWFt
RAp6eGdxIzlXSzY8eW54V0VnaGxIanxeJTlgWWdicndxUShOdm9ybHBrbERpfWdFYWp1Qjg3aTl0
cHhsMC0/b30jfGAKemhOJSVXPkReSUQwcDdoNVYpcTkydW08PkhWKClfeTRrZkVMPV9pVzdnIWdQ
ZCp+MEtqY2M/IWc2czVGT2dDOTEpCnpIYUI4YVJIQ2A+dVdqZkJjQERTK0tTYyU5TFR8ISpxWG9z
K3RkZVJzRzQjVkE8Rn1SNXsheX1GWj96XjZmPERzMAp6SjVndUklPU1CZEI5ckJRUjNsM3ZwJSt4
Z1JROCVreyklaE0rZD0zaj9HU3M0V3VKZ3hpWDJGaUJAMT57TjFAaH0KemJ4ckY4IyptVjckK3NZ
TkhQX0JhITdGVTBGTHVGX3ZSamhfVHV5NG9VJVVyeyRuaTFQY1BzTjN3djxAYUd9b2hgCnp0N0R7
JXZLdGtiUlUtYll4VF98fWxAU14pIT47RCNKQ3M9ITglKGRmbzFfeytgdFR3QTdIQ3VgPFckM3h1
ZXBKXgp6eylvdEopSTUhPXAmbVcoU3t0PUBBe2dHazNISHtqSVN5N3RaS1MzcmNodyVGNDQkVDgw
KkBISDVNRGdxKiNtbHAKelkhb2hmX1dVT2VzJllpRGgoM1M8eXxFTD5kSXs5RUY0c3s2K2padiUo
YEdxZWhoNH0yODNHeFBpPjdDX2krMk82Cnp4TC1HX0BjRGkrTz9rMD5NWGdLXm9iamhHVDZweDUj
NlpXMDZ0KX1NRU4ydEViOVJRN1hwdHtwMH1Ce29OZklCOAp6OCpDK0ZLJC1JK2p0ViVwUypPQ3c7
VWFVcWc9fWYwSVcxc2VXUG1gUmJPUU5JaVVofnB8THBtWndIfjlsJVEhbzAKek11JHF+bFhWeFZ8
S2ZnX1o2bGwxXm1vP1dFfmJnKDxnTG87TUNoe04wNVZ0TWw9YzwxdFpNYm00PzFYX0Q1Kn1PCnow
UTAyKkF4LW82bk8tVkxDSzxWMGl4TCgjTSUpRXdFXk43cHZRSSpUQjVIJGBmNWFpand2NzUldldt
NmkhOEwwZgp6QURrMV4wV0EqT2soZkhYUjhTSWJmPCQre2dsJHBZSC09O1VfdmF6eU5VI19nLUZ+
Q3YhTUkqPThCJnUrdVBONn0KelU3djdUJTFYM0t1TyFzbDwhYS1VLXMhbnNFUm9ac0N5fCNAIUt4
fihtbjEmU3ZlZXNRWGkhTF9hNGptejlBRlNTCnowJnp1VillfD1lZztpRFErY0gmVkplUFg3X2xr
fXBsQnI/NCp+IXoxUTglb2hgJCYqZDApTH5zSyshPXhmdHBiaAp6U3ZMdHpufDJjMjQzVk4tNFlI
dkZhUUVZVGUjQCVJXj1naFc3Mi1tRnImaVA1OyglRzl1ZSFqKFVtaTZDbFZYfFcKemxDbGIhI0Bs
MU0ye3oqMmVkMzNWKTQ2bztMfkw/JkBDKl9mMENBcHBDSGpoYzs5IXRpNVVzOSo9UWJyOURnRXo4
Cnp2eGhHJUVPYyVGPGRoMj5QJjMwVF4odkBwTjQ9MUJkeSslSXpjXkBwI19jcH52JTQwcXklWigy
bFoqZ2F0QFNRNgp6I3MhZTQqZShWSmJ5ajl4KE1lN09fTnZrR2Z2QUlGVk5UcU9rS2oyN3BXOFdj
QEkoLUstc3lveGcjWmVUdz9tPzIKenpSIzU7ajZwcXtGRThROSNJVExLVk84I19xRDtXLVVQX1BD
Jk0+dXNxRlcpIWZ3Ty1RJD1TJGQ5dntJS1R8UmdZCnpmOGM/bigyYEswLUR1S1FQTGh+aCM2WU5G
PDdAWSYrTEg0Iyh6cytpZD9ScVZQTHRjUTFhdih4X29DdUd6WlZ6RQp6Z35CaDxWY2ZHbHUxfC15
cUxBNitrIz5YfGcyKGZFSG03RWh2fFV6STwmPTdhb3pBcUpyc1VfZjhoY0ZENVdPYlQKekBVUTxV
TVUwLUk/Ni1MVCVPOXNXWEZeTSRHe3plSSNNRC1PaWRVKzU5JSVsO2xrKk13RmE+JGhxdTdFNFVa
dTBZCnp4YUlKb3tuZlA/ZEJGZClYcGpTUl4wY1VDbVYtN01yeX1MNiQtVShEPVNSK1ooOEhBeUNY
PWlUQUhLJClNNmF8RQp6eUQ8OzgxYWA4TmBMckE/Y1VOT0hUZn1De1VHcHUxdFF4d2BOaDNoN0Et
ND15Py0wY2RCUkV1MCNqZDF8fExgJXMKenNTVjVweitjMFJNXnsyfnopeHpWLSRzMUowWXhFaVo8
bShVaTUkZF5IZFB8YlFjVDVsPFZ+eSNoVlJMdzVDT1IxCnpCVylXMHpJPVY9R0lxSWh4cl81fnda
fCN5SExJKWVTbVREViowSW17K2sqT2NaPFhFPSRpISZDTno/fGVUYCZ2QQp6R1RBX3okbnJJQm5s
cCptcjQ+d0s0X19EOS1CbDBJNDRnbEJpKVV7Mz9fMXVLM35fT2laMnFOd3VuQ3Qzb0crMFYKenZk
JjlRMmtBaGY/SXBXXnolUkpYNjU1R2BZbko+RTVNdFkqUSspVTJ3JFV4LXBCRUN9VHV3UGR6Mkt+
KElXUEdECnopPERzdTB1aU07RC0oSmR7eGEmIXhpTmRwT15wIT5BJF5LeF4lalYwa351U1gjb0M9
fWJBaUQ7dlImem5zcz81dAp6ajxmaWlOKjc9aEtGUmtzYDBadVJNVEVtcXlkTCNRMHN9TlVRbkFH
Z3FJbj0/JTNHJH1uV3Yke2FQRV5vLUYxSnMKem5XNmByM2wjQWI9WnE+PGw2bE8qNjdYdklyeHwp
aW10ND85XkEhbSQ4Qzt7PjtufTtLWmYoay1VbSRITmZ4Yip+Cno3PDlpMDtlQ0VFP3gjWCQqNmpz
b2hGfks0SSo2RVV3V3VQM1Y+OWxmcTU5V25gT3ZYSmx7RHJpPTtCMVpheW8tYgp6OGMkUWk4MUde
WnRzT1pGTlBYJDNVKSklRXBLMHBwcnRRUUxKTVFOdHJnSTI1UWlqNHpzWV5yfl9LRUV3X0goZXQK
eiohaGQ4d3lBRzZROUUjVF5CQEApMXEheW8xRGNSVXR1ZDVlVVhRNkI/WS1DcnV8anYySyZVWHNr
OXZzMlRDb09RCnokelN1NT1mMGlGdGlvQjBHKDh4bDhJP19gKmU/IVJzRG5eYmAhZllUZTU8V2pY
O0Zeaj81V3opVWg4PStadSU+Owp6Km9RRlE/eUpaKDR7TClDUChye3NobUpBVkN1QEhGajtSM1BL
bVctc2Nhcn1yd35RNT01JilRai1vJTwzanBiNCsKelZCTkhuZGJWQWIrbylrPlU/Ni1lU2FJSTIl
alc4JkwjLTFwMUNIUSVZYEI5OXdZN3ArcFN9PnIlKE1hazNkdjkhCnooTXlkMDUqV29iPUVXTGIj
OD1GdjVVQ2pZWWg7WkppSERCTnc9TmRhaDU3dChmTkwtWDd5TzM1QHVUP0VuRzgrPwp6eTZjIWY9
O314YzQhWU9fI0I7O1J3Rk89QGh+Um9HX3l3SyUoU3VGKDNmIy1GZEZjR0pBanRjSEwrbVZmcyRl
VWQKem95IyZHeTd0Q09VeHhGT3s7TERhRXRsSX5CIzAzSm9ickdEeGtuV0YmJVpHUm48X0M+WHNS
cUl5SFBkZGV6TzJgCnpEVT9AVSo5ejFsNVg1N1F7UnxrOGh5cENWayNXRWhXdHlsWU43PU5SQV85
dm41SEh+c1dBXn4qX3pRVHglcmx4UQp6R2xKT0NUclo8bzNhdHRMdVcwJHFOK2pQWGA3LXl5bmR2
MUpFbFpjISZLcTZXczA8VHZXUEhRO3NGNmZfOyMjVV8KekdwKUY4PEgmLWQrMHpUQygyK1o8QUkl
WmghP1VseipnJVpYT1dEWkVqT2xWPzdWfERHUyNrKEsoTT16JUk4OEwhCnpqUWpHPktHYGNAYGk4
b2s4NVA/WHhISlJfO14hWi1RekliWiVpVFJPPDlia1NpYm9zUmFtMSs9PUZFeVolKTshNAp6SkJ6
UVp6KHlleERIa3s2d1olQ1dAWXxsU3h6RXd6R15EJlEpNyorPXNPSWtxKzU5NDUtVD5nPHxBdS1f
Mm1ydkAKejRGK2hCM195Ynd0VTd1cXNxWDBtJXxASi1RVWJuRzEyZkdaITFwTHMmWSNtUVJuMCpe
S1k1KlZJXyhqRks7ZHZ+Cnp1QGxzUUFyM0tTWDc7dWphY3VaOCU1JEZiazhKQGRvKCVAKzZuO1lv
IXNyR0FTUjZ6PUczckhqKFh0cGZsYWJsTwp6ZCtrP24qRUdXYmd0ZGdVUTFIU083MlI3c2R6aWso
X3smbSlsOV5NWjIrQUg5NG9BVXh1VWYoUGVTfG1EUzA4MEwKekhtNSEpKTFtfFpeQXgrJWZJKkpK
JlFffGgoYjU8empHWVRBPHEwfGoxXihNYFI+cGNDbnJEY35zNypOcCF2Ul5hCno9dD9TT3cxM25L
X1FQVTRufjU5fTVQIVhkKm1aLTErbFgkKlJJY2VVYT8ocjt6UXQrUWZ1aHVvXnFXdzxoYk9CJQp6
WThgSTwraUN2aGdibj0tYksybldXaHVuKmVWIWpCeUF9KT1pfFYzRzk7QH17TWAtMXVFP3FAeHBl
ayR7cChXcmkKeiM3WjVuaXdOaXUjbkJRUnl8d1F6JFB6YWteX1BZUTNRVykmPSo+X2duPikoN0pL
fXA7PXtJJlg9bG8zXlhkVFJxCno1bCpWbXE7TFY8cnZWU1NVdmNtSVBsWUNiNUlQQWs9cWc3UXYz
SDR8K2pIKSZYV1dtWCYxNkRoK3VXK185WSVlVwp6ckVtcU1SKzA/MGRnUHl7ZX5BPnkwO2E1cjFZ
Nz5TeyghfTNTOFozQi0zWUZWb1Ita1dvTFNqPzNmSEE3UE12ODMKekpqLTVmIXs/TFVCRnt9MyFQ
NmAzTCNxYjZ6MF95SDM8KjZfZCNmSytAYzsqaFFDM0lkeUtHSVlyaFRYaCRmdnIqCnpzTTd3c3Yk
T1ElPkRAVi1veihyLWJ8ZzNYJj5LWUFtb0xhfWE8d0o3N2oqPzQma1RJUG94RWh7Kjg5amd4d1Rt
Twp6PzI3fngyelFedHVEa156K1NJNV8/PWl4Nj42LW5SI1h0ZzFvWFYldDhGaHNXcEJqOG1kWFB3
TFFJUTUwVnhZKEsKenVmOFZJYnxienw8YUt8a0BWI3J8VU5xe0hEbTt8TGlAfmV0KXlTcE47clJ5
cGp9WH0hYkR5aWk9UWlGWTk/KmxxCnpMdHRHc3JXS14pemt8WHA0RTBrVFc5JnMjYHFHbzwkQ24q
fFJ4O3BxeyhqTzlsSUtJeDEpQEU1JWtFfGg3Z2JkOwp6VlJzUzxBIWQoLTxQZX11MVJJIUchTypq
cDFJenBDczA/Wn0hc1p8T15vYD1xe2IxUCk3bEVqT0VCPldGcUVjKzEKekk3dHw/a1F1TVEyeGdS
fGJrWVBqRE8lP0pCTlZkKlZ4dXAmUihta14lPnteNEIhbTxJZUVNSmdedm5QNlJCMGFqCnpFM35e
a3U0fF54WUo8a2t7UDtnMVozUHU5NTs7YFRqRkEhTXJ5YGMxaXJXU2o3KG5QX2w8X2NncFZEQ2RZ
RV9uPgp6KGJ+PGVmfD84eWdmMClnZkJ7U31tJmVBRnJ4eUpATF9+aXxrIUZxIXB7WWIkQ1p5IXhh
MSF2IUN+WVpfbVNnKk4KeksrUHI8dmN4fHYtUiRVZnFDWF9PUklaa1VfPyNLaGNFTlZ7dDlNUiQ2
NmBBUCY7MXpUX0E+fXNmPGRVTW8yVGQhCnpEazh4VHttT2VHP1FSKU85cUpybzIjVzdNOCElVyZo
KFRQeVFwdSNmYTx5flFLQFVjXktrRDErb3o5dV5SaUZ6Ywp6ekJea0xmUUxARXpoI3xVU1MmJHIw
blIxKHtNaloqY3chYCE+b3Q7OV5aSzV+YUEpMk9YMX1MQXFZWF5AIXgkUFkKekIyYjZ0Wk0xN25v
MFM7ezApQ1IpTEtoNnlVPDMjTmdRTVJyS1dRdXk3anhBZkFZOG9TfDZCJGN1enF6dTE2MD5CCnoz
ak56QDZtSXk/OXdmdX08VilEekFuVHZ9TG84USFaPShYVXRIRk1COGE0OHxBTyo0OUZAb2kzQ2JM
RmxJRmhpMwp6SjNVPC08UnRLRGE0KG5hKGNBbVRKK0dvc0hMRzc+fDZIUWQlU35YRW1ad3coO2Zg
OTYxbWsxUUVmeEM2Qm9AMTcKei0mNUB+aFpkeDgpYlRSWWtLWFUme0V9ZVNNYU9ibDI7S2xCM1Ul
dHM7KCghU0o1T1lzYlk4JlptdGd3fj1QSUMwCnpQTz4yeT9kSkJ3YmZEfX05MFc4V0BfQTFDcipY
bClHOEN4QHEyMlJLQy1wWmwyKEl5czVHNnNgRWZSUE4wNzNkTQp6RGZYMkFUV3tQLWEjTjZeUiZj
OGJKSHlodFA9LW0weXZwand1UFdnfVojRF96MCt4cllBVlNoSVViUWJ0S04zJX0Kekk8RilROENY
SjFidkx2Z2EpYz9Db1pWT2Y5clFKOWkhfHJuMGEldyo/IyEhem9NQiM2PkglRWxeUnoya256aDIy
CnpKRlQoeEIxbW47P18yKkMwXlYrVnl1JjQ7QSo2alhuSCVYR0VtaEdtPk1OSkBXNTYzPz12QTMw
bX5gTXo/N25rbQp6bDMqcSRRKkBxKnhNNkhFPFh0MSZgUTE+ZGEmPGNhVGY2PUdpNlliRmJSTWJZ
TVRRS3o2RFZARip9RGo2KVY9MHUKejBwRT9oQmA0TUxzMXZIVTxnKXZ6Z0M3fnNUV1lSWlRMOGNS
VG0qbnt8Rl9OcEQpPEFTKmxXRTQwQkFUQ1IqfUZzCnpaIXxqT0c1ZlYoRUN+fmphaHd5QlhmWE8z
eW9wIyVqeUJGTyF3UlZZS2s2eFJyNSh8b2RYRT5EeCg+eyNLNzBsegp6TFRMUj1RUnlBPypwI3lQ
dD1uUjFAV1o9e0lKeUc3JUsrdD5qXjJRVHhtfGlVR35qTVFAaHQ/c3hMTSlzJE0razcKenFzJll0
QV5qWiY/eD01K3duUkQtRmsmNTxwWH5Sd2w/OGs2QXkxSTFHdW0tKHFTIXJjS31GTVhgWUZrKWVO
ZCUrCnpKeilPQUsocUViKFh2TkhtU1hCeU5aeEpuYUhrYkN3TGAjOSgzaGcwRVY5KXBaeU9VI2Q+
ajRzZH0jdGVPI2k+Jgp6VyZYRjFuKGhEcVlTMF97R21IMGlSOzJERD5gY3tYeSROPUhANypOOGBp
MX51YD0wUU16QG9iWGstfEA+az5LMjYKekphczlBcmtJfilVen1GIW4tK3psbWlFVnVheCVVfU9t
bVREYjRHNU1yTkVpdlhJckZHOFdkc1RWeWV6SHYxXjVxCnp7WUxEZGF7RlIpOHxRTGcyZWkhVz8m
JGttJHR8fEkxVEpDTnVnZT5Eb3BAemtWO1chMUtCeHl6NzBxajFjblJXaQp6OEtrQWUzOXxRc1R1
cnxLV24hcHNTSGZfZzVTNiZFenI4ZjE7OWd2N0hUKysjeWBFNGApU1U2Xm5gOEo5TCprMDwKeiZ2
aG9POUlYK3E+TT1GYGNOSnZOVFY4TkJ4TX05V0BIKXRxQXNWd0gkKDl3WU8rRiQhKkJrO0pPeWp6
dT9xUShiCnomdjFBWHUmd2xFcWVuK1EmQVBYJnlVbWpoV0A1JWIye0c/YTIxU0FiMFUmWXpne3dq
T0tMXnN8ZHk/UHN6fCkpXgp6KFdAWkVpJVpEVU5xY0c0dz11RWwwPD4rUCREdXRTN250fCZhODxy
TjNrSDIySzdFbzUhRHclPmxeUW52aUApNVEKemlxb19DMGhldGgybU8jYjEpc2BSUStFNXlXbypM
aUNGeXppb0FWMzlvMVgtM2t5SjxqNl8wKk9HZXM5OTBzRz1wCnpQKXRue01OT1BKQktNRztJTzl9
RlQzdkxBMVpGV1JsYDR7YTtOI145ITl9UjxmRDg1ITd6Wm1BWDckbz4tbyN7Ugp6eWdNKkxkej81
RUE4QVRZPWpzdXtkPntxUitNcWQ7MnJ1VnpVVVBfPENOYXpGJXUjeWpuaC19SVhadUt5ez5MQmkK
elRGYlM9UCglQkw/LSVMQDxlWDB7UCU3UVRuYmpLMUQ+TWAqODApZ0h5fGB3cHNwZ0IzeFRGVHxG
UngpVGo3OTIrCno/SiY/OWNvUVVBOTNgdi04b1ReKjx6QysqeTljRXp1dCNWbUxiK0koLSQmKHdz
c1NNRnxEU1BFfEFrTnVDYUBzZgp6IWM1ZnRreytuJUV4U2NGQkFMcUpYTV9obG1WbGM9WT5TdXs/
N2A9bHo8V1p7I1d3JCNJP3VXcHBWMXcxaHBNIX4Kend6aE1fMHtkfGEzPG1VSFBPPW8+b3ctd01j
eWBVYCNOVzJMS0NSeSQzIz5ncDxNP1E4Y2tVTEM+RzlAO0JUQGwwCnpYJV8jYiZ6M0wwRUolWlNY
VnNAa0c9dnVxJXZMKz5aSm1SKXlnOTwhcUNfOEtNS1hnNUxWeWZyM00/MmhPeUhpUgp6WClGciU1
MlVgZko9KD9tZnQtOHJgfEM7RU9WKWVpdGhwcUVrZzglKlczdCZ2dyh2ZCl0cCMmNiZ5UD0ye1F4
aFoKelo9KD5wJHM9Nyh5cFkqVlVEeiFMVE17LSpwKjVMcT4+X0F0diNtWkp2aGlkRF42bktYTkZq
fnohPW1HdERjdnNHCnp3YkJlc0RhWT0jeyM1UEtYektwJCVeUjdQbyNmSzJWYVU/aUtGMVRNb09w
dS1PMEVWdFk3TF9qYyUkKjFOYmc3dgp6QmQ3d2xNeFg2cEItdEFQdml9PmB6UW5yI1k9M31lem5T
I3tUNTVacyomaVc4eGZMc2w2Wk5mZT9UTkN3UD1KancKeiVgcDNjN2FYdzEmI3ArVjNeXld1MDYh
JHM2XnpxUUZedllySVdvJT5lNEQhdGxgVW5TNU5DJnwyKks9T0pkT212Cno8OzFybXNDb0V7Sz8/
d1FBJkByRV8mcXVwaV4oN1NPbzIwdWpgOWNuOXRgNDstc2UxbzB8WklQJUtxTE0tWCV6cQp6bFdV
TEklOz1RO0dhKEx8Sis3I0lWQEFmaGZxZT94Tk0zdyhiPnUrc3NnKElYJXNscyNqIXx6QVhebHcj
Zl4hPVUKekUmfCp8SGY8Zig0M2FhKE1eWSshUmkpRnNHZVZ0Jl9IPUUlP3Vzancke2BFdnEpSDk8
PGNQJG4pbD0rSWNNKlcoCnoxSzkkM05TKXdFUDZjRUhvfEtHUCZxJG5KLXZfQDhMfl54dkJaRXts
ZCtRYSRvfnM/WW44TUBsenk1QVcqRTh3ZQp6NmlIaWdrM2A4PUVPTlpAcEdNbmlCPllWNjUxV2hM
XnYxOHlkdlh9TWUzaFVXJFB3M1djM1gybD8pR1BsZmJfKEkKenE4JCY2dWtMT3E1NUxEI284RkVr
eUQmUiFwX3hBIUBiZ2Q9e0BCPmxOK0ZRc1JaJEBESSoxLXkkTyMyV2EqbntBCnppNmRiZjlGe3ZB
MV5fe3Z4YjJ0d21NWG58Zj5wRV5XUmdfT09BcTt4cj5lWDB2TEBqZ0h6TW07LUR6X19wTm0lMQp6
KDJ2RyVtdiNNQHI4YWg1N3t5ZThJTUB1U1ZLejZyMzRZJl9XVG9RQVhpJml3OWEtLXc5fD9EcCZa
RnJ1LXxoXjQKelE3Qj5aYzN7RHdOcGE4Xno4MSRxT0J5KSVfQX16aU5ne3BASnYqWFF2UHFCNDxY
NVl2Z1gxSlBldU52ai1UPkNtCnpuSF9yWVJSZDRxMSZjQ302OXYta0RBMT1QPV5BSHNFPEw9SCpZ
MTd+YjEtZlM4TjNNdnc8QWRPXyZ+Uj5Camk5Kwp6Yjt9YiZgfiVObzdMQE5LekFvYD84MV4tQ2co
ciV6eDYjfjtUQ15ZVTYrMU5HZ345aDUlNWh9YmQmLWhQPEVoKD4KenVNZWB4M1g4YzxmNERENSY2
YSg3VXBzflA2aVhzKGR6c1ktN2BoczZvJjRRUUs+VUZARVY3OVp5djZuUWd8a1EoCnpyfnVEJSFW
djRCaXFXPEdvdWZlXjA8YEg9SWM8bHYlTkthZHRwTisxR2dDRX1MNTwhUTM8eFZpVntka35pT31C
PQp6RH5nMmtBQm94MClqPEhKQHxkZyFUM3FuUVdmcntjJkRyRSh5JEZVRGd4dytFKmFwUjRkUV9C
eSM+IyNDUHRue0sKemJnTm1hQkNkeWpPN3BvbzJBS0AqYnpsZCFwKnVFZXU9fTd2bUZwPmVOYj5f
e1pWSHFrPnlDWiV2c3AmSDNaX3clCno3PyQjKSh9ZkRIPG8tPlUwSWB2TnpDbSpsPG9GJH5wMD82
RFRlM0t3I0h4LWxiRVYtY2tZLVRVdj5oc3pWKkFjfAp6JURRWkx2UT4meDY4YyVVX0l3NUUjal9B
OWpCb31xeUc5TnNqRFcyKnQ8MldzZmwjLT5QRXpeTkgyUW9XeVUlJnsKem0yVUp9dDViP1krM2hS
MjAxVyU/UVorJG11a3BGZTk2R1c+ZFV0c1h3YiVyanlGYG4/YTQ7M19YMkNZeW1jOWt1Cnp6PX5P
dEY1TFp6dCk7MW1TIVBkVlBEYD5IRUZLU0tIVFdsbGtHKXdrTEcqXnlIdiVnMGF8b21pdDJZYWxu
bVAkSAp6MUBFYGg9VX42K1EtWmgpNVomOFZPcFVPRHFzTX5GKl9TdEFjbTlmfkpJRzd3bFZ7O0tV
JmpycmpeRlkyMWNONGkKenRWIUIrPHAqTjcrPmV1S3lTb1V3MEE4TUs+XlNuMCpNcC0zWllBJER5
X3MtOXA7em8hLTx0QztLRiVsMlVLVlUqCnpDVyYtM2h+SWcwe2hmTH5OUlgxNkt+NTQpd0ZxS2M4
N15zUGZqcTA7JldrMVVYYkVDP0ApKVQ2VGJMdDA/MUBZNgp6PygkJEtDMCozO2duRGw8VSEpRSpS
ZUYod0kocE5MMERnMXJCI1pobnVrM0x6UDYleVM+OUwyMW1ITiRvTVY4MCoKemteY0RwK2g9QjJU
Y0Jxak1tVH1DJH5YMT1NIzJQMSZPNDc4N18pPUUzcm5ybikmdFoqYHZqS15Abnh4TU4qZUpPCnpP
UW00bjR2KFJjdVlzOzJraX0oOHpzN0pDcUAtYH14JGcxI3tQJm1Id0QwNDw+ZU85V28lVVRURlY2
RjVCeWp+QAp6dlR6MGtuSWJxUG4xQW0pMzt5JFZpWTFyZnVrTyV+VSsoIVJqMFE/YXgrPmNke0JY
WFhGUnZoTSM+PWFRRUpzOVIKel8wS0c7K3w4S3Y0JjF4QmJlKFA1TW9UeVN7XipBM2wqPm42WCQy
YXo/b0ZmdEFteXRIdX4tcDsmUmhNQ1hwSFRTCno4MUh9PDFmM2A2JkFGe0xiP2ZyVE1tcnU7RHxx
Z34+UlNhZ0ZMPDQmMnZ7S31nZmszanQ9byRecyMhPVglTjIlbwp6Kn48MSFvR0crSnxLMjRqeiRr
NHNmVyZ2aE57fDZ1NUIlUmJKc1FAejdqTz1pKVd4Rk0qSi1uZEFtbFdrT0s3QHsKejFJUG5nXyU9
WUJoIW1UTllAcDlOOXt3KlkleGxLIWpKQGxBVGBlR0lSQEpsdz9HQmIyNitCKEgkK29tKVhzazdg
CnpweXJySHMkYWJMXkJKZldjbW88fXFob0lzUz52UEowQlVYZmxLaGE4OCNGRWZBbzRqP1c2QGlC
Vzx2OXJic1UyNAp6VHw3WHZOaXx5SjNZV3c3SGRFKj9oa0UpMUhzVWRFbmF9c2I9IUt+TGMzZGVh
QT88QkVLKiZRPipPcjE2bTVaMk0KenhocElSe2V1YCg8TThGVVZSPitrQnBrbWpPVHxFVCV1bHtx
Ki0xY2J0TUZWREpZVFczKGh1ZD1tb2d3Z3o1X3hSCnpkS1lfTSZPOSszcUkmRXxJQlpqZ24+JXpJ
Snh6KUZxd3U/bGpfM1lgRmd4ays4bCV1dzZWfT4rKF4tbzZASjxuSQp6SlRIVS0hek9xUjZ3UDMp
eUY+OVYrYElmd2VVfHIyK0k7PiY9biN3NmooRS1rI0lQa01tYGFhTzU8WCFVIVIoUFYKekYkPlZ5
QnQtfGc+JDFXeXM4LSFUKmJqc3pfMFpFT2UxODh4aFI/MUtlK0hTanVJRUg1dGlMezY3PWxsVmdM
eCp7Cnp0P1k7N0NJfURPOFJ5MjB0RGUoeyU2Xjh2UlJvRD4yOzR8eGd6cmlHeEdhJSN3cFg9MkMx
RCMmNkptN2N5aVlfaAp6JWgjYm11azwteFo9dTFJVEp6aW0/WU0+bV5SRlIoeCZiJUBRTklGfnJX
Mmk3ZEgqUHw3M3h8WDFGfTFDdmpUKEoKejdGLSg4U1UhRipeaSZlUSk2fTNIVG1lWiZ5MzB7dCZs
c0I+e19pJV5SbytUUT58PGRNWUB8QHp2eiVEIXVOMEYzCnpZd198RDB0MXtpczVqU3Y9PnxuZEV3
UHtXQS1IJGgxTUlvYz9EVyVQVj4lY2JTYH5HSTtoQm0zTV9zK2A4Pz5iUwp6IVNBbVhWTnE9MjJP
X3x3c0ZDT0dUb0R7eE1faTU7QDUtKE5WcF5USWtUV1NYVFhGS2t1JkpuR3VVK2FyM1N9Kj8KemAx
KHVuVktAO3J2a1lVYTdJfHRxK3NsPTFpK0EzNW80SVAxZio9KTNgNjgxR1l5XnNpek4zSzhWUDA8
Sl9Yfkp7CnotQnVMOzlGQEY2Zm9nZz09MjtxIzVXaj1jKHBpVitWeFU0bV9AOWc+XmpJPDJxMlRL
NGREQ1Z8ejYyT2dZZUo9Ngp6ekVKISFSPCVXYSlfV21tREVKR2cqbz9VcSpaTVFnVlR0WmVUP3sr
ZG59JEZRYDR0UFpXQi0mc0AtcShiWiZIQj8KekQjc1oxQElFSHA8U2RLbSgkIyUmeFhtMHlhbWQj
PEJ4XnFrbHx5Q25BVyNnM1p6QzREVTBBZnc3ZilRYGN8TXlwCnpfQj92ZWIqRU08RzVLfXdwNGY3
YjRDI2pIXzc3RFdKY2hBRSZSa0stWCZjM2c2clY4JHdHcy1VJktrS18jZGIwaAp6N35vcmxUWUJK
JWBXRmRsMWMxVyktXlRiSkBtSHFTYWRXQnpSI2lzZzE1ZWBXKDAhd2xVV0t9Q1l5WjhWMkxGLVQK
ekFvPGhRNDRTY2gkJS1SRDw5dnppen07U1E3c2szeE5QSXVOOyNqakQtUGJZWWNrKzZXaFBjOGpr
SlY3I0spXkhPCno/cz9ISlZ9Y0dBYHl2YkMwWTdVQz8oRkRDQUQjJndTZlAlNXwzRmBmez1QZXFe
Smh4cjZXSiYoTSlLUEdEPFcoKgp6Umt1JTBGT28xQUQ5PDhzYzM+djdoaiM2bih5OXU4Rms7VSVF
IXwhKlJyfFRmb2pvNSt5TEhDJVhMdkZhdTkpRGgKejBZbD5HRjI4PWdPZ0tfI2BRT2Y7M0tme3Fx
MWtJY2ooVk0qXzdqIUtVRm81cGhZIUxYXzB2VGR8Nyh3dDBPfFkyCnpWb1hOR29+Qik4Qz9+aU1O
X3ZSTnlIXyQ0OGErQkJSTjBAZ19EaWlOYiQoJilyaiN7YCZNNSN4UmZYO3leWkg9MAp6R3szaXBJ
N2tTSWt7JXlWJDVWY3p3UCpkJFFTQGRnK3E9dlA7TzAhO2YmczBlYTYjLUVLUTtSfGNWMz87JUU4
P1IKekpwIXxyV31HPUNYYWFOa05DWVBEYWorbH4/enhDRXFyVHs3YkgqRF89aCp7Y1JZe3wqezlV
VmpTaW9TOVNoRzcmCnp0PW85JExePmh9emVINj1QQkVHUzdaamg5OWNBSj43dyVxIWl6dFh5MVBQ
MmpfdHBCXmFBO2FPU3VQclZwI21XNAp6S3lAMmlaY1Awc1U8aT41M1A5UkFrUDZIZGxkZ3pHQzNy
fGNSTGJVTkxtYnp4WVF7Ryt5K3ZiKllScjJYdzVeUC0KelB8Ky0jT1dDO3BZM1VyP0dWUSolcEtW
WEpvMHslP1hXTz1HdmFMSCFjOVVJYC1ES09nSFE5RD0tezEzSWY1RT1hCno8SnxpPV9TKTtTJlJV
PjlJUnNhKT80cj8hVz5UcV9lblBMXyE/dW59XiMtU345K0pJbXY9KiNlTEE1RGg9VmBUPwp6UUBv
TUpsUktRazZKYzJncUQ/Nn4leWdNMERGSmlWYm95NTJRQDhXTE8tNFY5eDVAWl9jZGk4eEgyWiZk
dUlzT1EKejk7STdCSkgqZkZGTD1QeU9pTypLTmhUITM3S2N6dUVSOHtTTSNrPUowR3JtfHNxYEJx
LXpnbXlySXQyXiZjfiZPCnokODF2MHNtdChNIUk1XkxyWExUK3M5XnsjX1difmJ0I2VIb2RaSmFw
eD1MbSRKTipfUz44X0FvP1koKCtDQUBIPgp6X0RtdVBxNXN+NHQqPHwjV3QhdS01eC1afntxKWdq
VTVNfCRkaDx1Q3YrdnE4U3tVWX1FRnxuYntpPnp8c3VgalAKektsfWAwSSFgaT9yVWBLUXh6NTNC
R0ZfK2M4U3xQNXBudihfeCM2KnhjO318PUg2NipPITJfTzRFJG5xX3k4Xm9QCnpUS2ptfC1ffHB1
QnV6PiFzcmcrfCRsU2tNT3RlNVEtd3ElT09fWXV9IU4jLSZMUnI9KT5XREAwNlRxQSVfdmAoKgp6
I3l2Nih0S309Tm5LNmNMTTh0JWstPz9ubWBpdncoMWhSalZGN2NfazFePlhncDY5R0xEVWVfUHRQ
M05fN151SHMKenN8JmF6P2RpJlE1YVdyPURmRipqM0QoMTVHKjZjRClNUyFqaEk7TWxwdGBlUzk0
YkZgaTcrTy1FYFRkblF8ckBRCnp1IytJPUdjTlp6bkxEeFlYLUA9KXokU1d1KkdKMiE+SnFrUU89
Zz8hNXJzQ3ZyKSl3ez8/Q1crZW14UjlXTkRBYAp6KXA2dFNWYDZ+Zj5qPWQhTXM7WXlpblM3PjUq
UUl0P2hzZE9yWmVYSHJjTFdCZ3JmWSU+I0lWdzApalU5QDV1T30Kens5azQ2RTZJI21MNSE9TndF
dTZ3VD1vPlBIPGVhKDxoeis+YH07KkJWJk42PEljP0t9Ul5VZz85U25weVMrIyo+Cnp2aGpmdEUq
Qy12YXgoUTtYMFZVMkN9NmVWXzNvNU5kVygtU1JXdy1CdEd8JHVLITFANHtoWjlfbll+MTglUWJ5
OAp6WnwoY28tLWtSRytRQ1MxUXRhNXBYTjlFX3g/ekVmMTYjY3EhQUF9Xy16YXJubz48elpBNnsx
PSRRNmFBQWU3dzgKenhZa2RLcVYwaHFDS3J8UlEyUC18TUkrT2hYJCFKfnNSITNIb2txN3FuazJE
JkxDcj5odzYlWlBOQXVVZTMyfWcrCnohfmdUX2o2QiNeV29wOWtpKWhJfFhOWDl+P0lhelk/ZXRj
bjApPj1jO2ZZRj1KZEh6ezUrTzhrPUd7fENrb2RFVAp6YD0wRnJBJHd5RnM+KEV4NC03KUlyUTta
Klc3JjxndVMoTCFyNy03X3FeX1NQREBtIVRgI1BYSlQmcEpkRERBS28KeiRmPklmPW9jOWtvZCpC
UFNYVU1aK09RUWpSUkxfejhqRjlCT2JNe0pPNFowezc9Pz0pbz1eWElmS0g5I2V9WDhnCnp4XjBS
aks3XjxBdGJYelVMZWkzN2ljen5hTXplaTwybHckSit9NjQ1ckZsaVIhWjNYdnhKSVMlKmQocnwy
KiMhWAp6O1ZDY0YrXlckbVIjKkE8S2ZrPDRhaHpSYWBfXkVGRUFxN3lpR1hqVCZVcm5JZm9EWjN5
ZDVMfjxpSllQcmFjNmIKenpFMkMwbDFuJjg2fDI7K3tCbyY4IT5pbGpyZjh7UztKNUVWZXRCa1lf
T15NaEBRbXhkTlE3bm81ez9LMlVINn1HCnpkSCt8Xm4/d1R4R3Ricnd2TT50YVdEYU9gYSttSF5S
dzYkOFhRbj0wTi0ja1Q3K3M7JFclZXgrdzJ2TGhYI0I4Ygp6KClqQ08kbl5KMmY0RSt4UzI4eX1U
fSZDQXJ2ejR5NVZMQDlxcSgwMm5AfSp9VzRQZC1jRGg2Zzl+NiVudmhgciYKejNEam1UdjNUZFZC
LWJjfUM0VVhecjN5KGtkd0M8NEUobUttanB1aHklWjh9Qi1vS3hLa0w0ZnxHM1pNS20pRjNXCnpU
PmB5SW1TclN3JCNDbjFpeXVNRWxQdDQpYmNAeEVgWDxtTChIUjlFZXR8ZyZlMEFPYiMmPV95d3VK
O3FUJD9wOQp6U3kheVFgTHR3KSZCaSs/emp5NiV0MFE8fiVCdVhARyl5Ry0+eW9mKUhWT0AwcVBZ
bj8qcVBEYWNEJkdyPlZ5ZVkKejJ1MkB8Y1pMRDdgT1FvKVB5UD16IXZJMEF8RUpIK1NOSHdARmM8
VWV6MFl4KTZjTz4qYUEhTG9yUXpjVEBoTS11CnpZRDIqP1FuSnZXPCVnMj1uVWl3KiM9SEo4Kmo1
NXtsJnpBejxvaEdVQndoWktJbUhlUy1+RHRUPTl9RlhgKVQwZQp6dm5OcjVmK1ZkSDAzJDdIIUFD
SGtJMVY5MnZvKG5ONnxLP3o9ZCtNIVRFNWBldXR5cmVfT09ZbVRsWXNBVmJ0WEYKekdCZFAoaTE3
ZlkpKVRASXNORiY/aC1eayFBezE/YCF+QGIrcWM9NEVPcEVZTjxAfV8ya3YoMiZrcChEcFFMMGI2
CnpCT15vUFNULVY5eDlgUXNmV0RkdmNiTGdnN2c4QjkqJkZ+X2FqfGR1K3Q7fDtEc2NJP25PWm0w
WHstQ2pVamhTKwp6QDQ7PnU5WUVaXzJxWl5MSTF1UW50UWwydlZ7bilKLWQ7fXlMY3x+I25FeWxw
TiZiJiFiVChpRTB9T3ZqbFImJmcKeiVYVDdoRCh1dzEqbkN5Vi1ndjV7S1RWWio1M3E9VFE+Q0lL
Izd3KkJVTHVYWCR4JWYxcFBFMHAyeUM1SXQ7UGlKCnoyVTRveU5UNkFsZVlCTVkjLSZCWDBGWTlz
PGIwT0FpKCpuKCtjfT85TXk/UitNKm1UOTh+O0VMcEchTHxueTt4Qwp6VlhZcmRIOXwmNW5zQ0ph
PjkqOUwjOUs7d0BSRTd6TVRTcEpOdjFQenlWWnAham9pbVJScXlENkY2bnNSVXc2dyYKemYjK3ND
YXg5VmBWcU5qPmtsfnshSEspKGVKJFQ/elc0QkJ5XkRxRXprQXFeIzU4PT0+ankmamB7PmZDYlll
TGRNCnoocWdKc0RqLSlrN3l6LWtsWmxtbio0OWdOb3t8VXtoRGo4PUxBRSpIckAydSQmWVBlaipL
PnhoM3l3TmxWKSk3Kwp6MClrK2V7fVpUSXtRdFdxMFlgKEktQDdGRD9seihUTihAOHJKTjAwdkhs
QUphKSg8eElxNiFRVnZWKkpod1c8I00KekxyY1hRJkN3PjFZUGFHe3M+OSY2WGVVYzFuSFdQeShs
eWpAOHpoYGFfbE5CezMlIS1RY3h8YS1lbk5OP1EoUDcmCnojdlU9RmdibDZUejBQdE9hdCt7YVdB
blVhUkA5IVNNWEJ6NWdUd3tDWm1LcERvSDsqQzMzZHpNdTRub2M4dW1vPwp6M1VsTXc2amRGUzMz
ZX5YTjd6YjxJOytKeV5mVypDSEMmKmMjKV5eMUJaRWBpK19oND9UX1NRc1VFa1dkbitBeTcKensw
OUszMW1tQHZ3P3tEZyp2T01Fckg9PTkyaiZ1SCF1KHh6Y2ZaJiZQSHlDJGFgZ0xGQH1LTTVUZ05x
dig3MW92CnpgckVlSEI5ODJrcnk/VnQ1VytPdD9rRzQrYHhzMkY9KytKZEhNS05XRVl+aFRDRWEz
eV4kJCY5UnZOOXBVKDh9Ugp6MnVBRHcpVm8wITNqbXthU0QxYlVKRSpiJjE5Uj1RUGZXYE4kQXti
Mz9aSj1yZyNLPjQre2xKPFFTKVAlP0NqRS0KeiY5Pkp9MmxjbSRoSDMkdDc9IXJmV2V2U2YqWTQw
cXhKVW11ekt+VHQ3PjUxKXc2TUVNRFAqKSM0Qyk4UFBEIUd8CnpSd3U7YFo+djVPIVp1TzlHNy18
S3dEZW1iMWpOJGYrMnhYRSojSTBWTTx8a3syeGc8SEZLMUFENCViUVIyOyo2Kwp6dCNmVkVTZStD
fkxZSGVGWHxMYWpWQiF7KXI1aldgNmB1UiRDJF9KczREO1NUWiteNTU7dFY/U3NsUzg7Xm5GQGsK
ek1tbT8waFJrTnZtQmchTlJ2aElkd3ZnJmApLVI2X1kjN0t6OHsmJEtTKHZrSCk+OzEoTXwkbGk1
ZChURz9qTFgqCnpueWVEV25ueFNzV2RyYzk+eHxzUkZGPVYqbXh5MDQ4O0tKUj5NNjFMSWYzUkpv
NCpQJWBQfUUkb1FRT0k8WX5SbQp6WFR2QnwpRCppVTU5UjxpdjMyNmlgPEYzeCRsZilvZEMkemBe
ODMzbXZlOFp9RVdUbURKejBjTlJvYzkjSW9zYXsKekRmI0ozZiFSSlV4SFZwdmdFNDElWmV9cCst
O3VROzw2UUhQJFokNWV5KSUqSHMzJUA7aTxDTFMhJl9wKWV8NmdqCno+VFJBU3Z8SU54Ym02QXRW
WTVYJW1tQSspd0dwemZMWmd2Mko1dnBPQyYoXl5nKThvKzU8KHBCVXJlUSVtfHZ+bQp6RlFNZ0RY
Xyp2YDZQJW9uazRORjM3M1UyVyk0ZyMwVHtxQFgkdlclNzw3ZyFpWCk4UXtgWEN6JW0/R0owI0B0
JngKeiV5cGpVQGszRCZPKXZnbyt1VHN7OE9EdiFKOEdpYW9mejR5ZWhsQHU+OWFEY0dTblFKeH54
UX5XV3woNTliVzZGCnpEcGRRelhlPShPMmpINyR3d1RoUDBCYExsUF4qfl8pdyFUN2Q/RU5MYSNB
MjNAc3QhM2A4USQ/aGt4V35zOzkjUAp6b35YVjlYKz5JfjJ+aWNsZTNWd3s7Vk88OSslfU4lXn5L
b2JAS2sjKEgpMGtwRGBUUF9kQ0w5dT8wbHRJNilxKlUKelJvaUV0Xk87dyg3Qzkqaks5NyZCRi13
TFdaZiNHK3J6NDwxalI2RGBea3Z+TTtBclB0MEM9aWpgMHNoY1lEckQhCno0KUB3cXtjMSVHOz5h
YVM/Ylo3JnpeWnxNekEpbTkmKGhLclUzdXBGN1E+VCgjT3FlWntsfj02dm1lUnZ5RCE3dAp6JUxl
KSNyeFMwcV5pd2c/b0JpMCVCYUp3YHk0Y0N5NkQkOyUkZyViOWp6YnE+ZDVNbDduRSVWNkd9SUU0
Sz0jTGAKeiVJcCsyQilCPmtNNmtiRHYjPTZoYVF1VkNeN0BqKl5xNlhsUj8kaHU2SmE5LSotbjJD
IzRhRXt6SztWSWx6dTVDCnowa3I5ZFRWeS1OYGtje20jNSNGYUowRWpXWjFjRTYzYlVUSyY+ajkq
MXFwM2oyQ3FERlRxfThidllRN08yRDUmewp6QyktbU0/fCpsdz1pKWNKd3Z2REV6cShwfUshZGJW
OVMpezVKeVloYyU3VFUlOHtlVUo7QWRndVRtPkg1PCRyUkYKek9JITxsPlUtNkNfNmNpOFheO0F2
QTxmNEI+R0NoUihVSj9Wb3ZPM01hTEZ3dmYqP2h9VkNvbygrKT1YNV5kNWVQCnpXI0lJZnAoPFFG
KWlAZDckeVkkWjtEYHxAR1dkKCFvVD9KWGRkJDFacH5FT1N6bSZrSGJqSl8taFo0eGVmSnRBLQp6
I3xLUmpqbSUhfFBlUn1gdSFMfXhtQGk/Q3hRSndPTz9TeFhAVVMxNmhIRmpQOVN3YyltJnhNPUU2
N0M/WC1GQUwKenElZiFsMENMYmpoVEdjWCFzY1YkJkUxSTtqQk47VXchZitDOzJvU0NIbm1zc0JJ
UnBeNmV0Xz96cDVGPnhqeHYmCno8Yn5BS3VkKiVUMGFMP3RwNlBHfWhQTD98T0wxdWJ7VnMtR0Qj
aDl1XzM9WE1JSlJWYCljJnlCQnwjZk5KVkJ3dwp6cyMqbWhPY2c+cTNXK3NpXmh2Qk4jU2FaKVZv
I3spTkZSbU1BZjVXUis2TzFHN0RiV3wkJHpaZVRrZmtlWF9xbEgKeiRRe3JTMn5MeEtWK0ttJSFm
XnhnVzVfUEJRQ2BnflJ6P2Q7O3s8dCVnZDhzUEQ/P0g3cWU5KmFwIXBrYTlfR3NRCnpKSnhzMmpw
QnhRTnxMTzEtJExWNEVecGxqI2tiaWF6Xn5SUSQ9Sz0zSWE7Z04tZHp7PSFFZGFmdlFZKjQtYDFG
Zgp6RTFZWjYzbTs9ZzRkbkRDU0V6YytJWXxWK0ZiWDhKbUBEYkV3TDVueHgrJn1tWmdiO0ZfaFF1
SiREfF52WH0/WSYKekkwcCZ2SF5TdXwmPXJHREhTMGAye1ptXkpjPDl0Y2slKDdpe3BfWnFEaV4h
UHcjVnhQUGh7anNIYHx0U1RqTWh0CnpJd2lHWUtnP3hNWWVNd3pAWVNIZWNBe0U1KT5FY01eSnxL
PjNPNWMrWWBwc3RJLUBBeisjWGlWeXhfI1JzRnBRPAp6b0h9Qz57a29ga1RSdFVjIWErYERJQ0R1
dldqQE9PbmJHeDhCSE54bVVLU0Z3VGl6TVhxQHdkUWwkOyUpXyZ+KUoKenhuRGVCeUJSJlRZSkM2
aUFOKjBeKl9lfjghOEFSKFdldz4tZ0w2b0ktM3Mmb0pQUUdEem00dGcrY3A4ckZiTX5PCnpXYkVs
R3coTlRyVDg2bzRHeVVwUGoyPSFjS2I3TmRnZUtoaTdRTU1LempaLTkjR2AxVTBEdF5hTCglODk+
VlVzcgp6QipQaVBFUSpZT0E5YjUzR0dKP0hEMipBWkZ3dTlgKDRFITFZMFRIOHNBb00jPkdaU2d5
JHBUO2plZn5JYGtuNXsKelBuJTg/YnNnJShrYzlpV2I2OSh3eighU1EjTHZuPnVsTn5yP1M7cV5z
VF9ITGclPUEyTDVeIUsmVUFHWCNNUz8hCnorS0s1ekRkIU1De1dgPkIkI0FsRHNGWm4qeyExeEdZ
fWpycWYhQnxUbSFyZXw2KHZWRGIkPDxzOz0qMWNOPV9XYgp6OHZefn0hRFkjXmxrKlB8SFJqen1Z
c2pDaHRXfTYkJXtSQWNgQjdQYClWSXBZYlZEUndEaWhxPFl6dVB4eWpoU3kKekNwK01BK35tJChR
fGZuKG4mbSlkO3NkQFppU1h1JFRsXjJUeWVHZiNJcylrcjxKZU9lXm4xMT48d3dQKjVpa2QwCnpH
bTBxYDt7aXJhcWg3TT1LOS0/VyZ8KXIoUCZMRjVKdkVFUTNEbH11RUx4ITl4Rz5wOEAhND0xbzN4
XzIlOGYpMwp6KH0zRF82JGgoZHVEVVZHTHhBcmlwXjZfRFMrXjMqRlVlRmBgSHpVI2UrRVBCJThk
KHR1PldpLW94dGkoN2JuSjgKemF2NGl+UyNMa25DSnJLQkF4a1BVYWpYTzxOVW8hSWhxWGZeeXs3
cT4qRCNGfnhyJCtLMj1rajcyYlVYbiZ1cktqCnomel99JFZCMCZjeDU/QzgrRXpuKmN8TlI1PCEl
eEdmKT5hMSRzX2ZKVFNqQEw1VTFXTHFxWWRCaihrXypMPTV4Sgp6Wk01cmBOM2lQaEJ8NEdsTWdF
K2V1KHAjTDt+d21jKDJITHBUOTh0MURTKXBaSCZkME9UV0UwSGR3Y3VlWiRjK3IKejExU2lCO1FN
djBJWHkrbEckMllJbGc9X1RIdyRMZG5IdVdLS3JTcEAlLVU5SlZVKzxkR0drUn4kKXxSemVMRSQo
CnpFRn17YHdtZTEtPjMje1ZHUih+MSVSK2h5UVVnYHhiRjMhQjdhdiMqJHNvfFBAdjx6fTYqKD5+
VnR8e314OCt4VAp6JVRRJCgyIWpLeF43YGswak90KSFxKU8qP25GaGBieFMtTUpASiZ3ZmdJWEBD
VTkpJClCe31iSGctdlN4S1ZDVmoKelFYPE11bWMqQSomYCh5OG5yYW9uKXpGdDc3Q3dZTWAzM0xv
a1Q9UDBtYFhgQWo0VylsNkd3QFJpQmErZnVXOClMCnpBazJ7ZnRtdWU+MXZjXyticl4tYi0qYyo0
YzRHRzdWakIjKkZGWThKTUxmaUtJdF9iLWFTI2I4VlFifjA9WDxpdQp6KDdvPjlnfThyU2JIOSV8
OWU8I3khNzhvUm5vIV5fIShWU1hQN2tlOCRxcXduRjBlS14kJW1rcTJpSGNvPT57RWAKeit8d3RB
OHM1TjMmO1VnOEk5R0F5bmhlNSZAcT1ldCYtYGBDZCg9YU9zZCZ1fXcxM241Zks0ZFpHUD53N24k
QWNLCnozSSYoYW4wUXJYLWgpN287NlY0TTN9TFN3Z0xidzBiI1Q2JEhlSzJMQ1BwNFJDRkBHdjVT
bE0+cUh0UE83WWtUWQp6aHVBPW87JFlNUUBVVk93P3p1fWNwTD4yeC1BR1c5VXRrYXVqemJxTiVI
SkV0MWlOVHp4R0RLUmYxeXJ6JG1gcGgKekwhantOdm1OTF9EWlhNb1VVd2w3K2l5IStfMHkrSkN2
MyhDRDUjMSpfdkc+NzckUTdBSiErfns2YFBKKmExOVJ+CnpCTWtKOWJqSD1+Sit3dDwhdX1yfjRB
cnRyWkxhanQqOUtffW5geylVMn5pfEw0UCl4fUNDOHx+PkBCYVBJPCMkKgp6QiY2SjI4a2RDT0Y0
LUlwM29WRTY4I3NQQm9LNExNTUY4JnJPVERDdWdqMCtIZ2c7YD9taGY5fkhfTTU5OHRDNkUKemsz
MUlTTFpLUEkhOzxPdD92a1RTaFdtI0MrSUo3fkYoQEcmUSkxMFk8YXUxU2lTSiozSG9eZ2lvZ1Fq
SC1aSHVGCnohcSFQUShTejc8I0o1OCEwISQ4fGglMUwhYWEwUUQ8TkxUcG1oKyRnO0w3fDFWdyRL
SDt8KzE0KVN+bjNeIUtKdwp6KVNmPHghMHBVZnRPYlUtXmpLM1E1WTFiS0p1OVhPdSV0aCM7akNT
ZFhVfEE3dFN3JERPUlhlKTt2LTBwSXxTKkcKekNtK0F0VygkWnk7QldiUWEtVWpte1c3cHhWeVFN
fDUpYkopaW1vNXpnSmpMRW0hb1U5I2QlMHdGPWMlJlk3JjtZCnpBSXtIbnM5VHx8bnAwM2s9clZq
b2dlXzF4RGZnNTRmSXpOa053N1khRkkmO08qX0h9YCYoN2tlKlUjYXxOKHxSRAp6WChaYzFSbSVn
SEpVPUorMTM4XmtvS3BldUc5R0ZzXmdLfFgzVz9VeXQzNFBYUk5+VXopSSg5RyU0Kjs7UzF8NUIK
elQwdTMtUlR0VThQKH5La2NJenV4Q1BOOSQzVyh9bUVGfSpESjZoKUAkYUpPRU8lTSRTMUFZSWs/
NER4fio5R3Q/CnpJTklPUF50UnxTc1VCOT16YSFieSs8UGBnN2xqcUU/QClOMFhCQ3ckeUJnU1Y3
QCh7M080Q1NXeTxkIWZnbG88JQp6MjhHQU1JXlZndWp0Nk5TRVFtandDbkVCJTtJSWJEITFfJmVD
bjgqMkhreD00KFYwc3pPWFRfXk5aLUZwMmpkZzQKenRlTUtUTSM5Y21Naj5TMmtFUiZOdTxuI21H
dlM0VWMlZSo1aykrWDJxVTJBcDF4Y3QrKE94N3xGVEN9JE9BWDdMCnp4OXwhQnl3YHQwS2s2OTho
UTAjNUppLSFuUG0+fSh1SGw1YnZMS2hiKX1aWlRLUjdlJT5FUDlzcEwyTnZfdld6Rwp6eFJJVFNt
a2ZwI2hgKWxje3kweEVBUyRNZkJFYERzTDhkfEl0bHA/PUdHVSVNUTgzVzlgfG9PSjgmP0Z7d0A4
UD8KemYhPDdfRVlKVkkoLT5FTmFfWEwySW1kJTctNXZJNSR8VV9tYFIyYnZXUTN2PD5oXjV1K1pT
PGBzPXMoYWA9fSVKCnpgO0R0ej1nQUlqQVZUPX15ZTFSQiFIaWU/PDlZYVZsSDgrXmZzR2t8LTZN
Y0NNXlRNX0BgRV4/ciNeYmFfXnVqOwp6ZCllWEBiNztAdGhGdXVhVk1PNlZ2Oz0hQ0J2SnBzei1H
M2JyZGgqVGRPM2w+M34xQV5xWHdPYiUkJDBkVGQqNmwKejMxRkwyRXVoLVR0SUY4ZiZhc1AxZSE2
SXFldmtXfGZZeWV5XzBpe1hqbV8zaUklZllRVW9HZ0E8MzZkJWIlIUJuCnpWKyVMaFdkSVAmIUVD
azE/OVZjJnEjdnlEdTFQckB1UEBUeT5uSztMP2ckRX40aFd7bShgMCFoZ1NVYSo2Sl9NVAp6JEQt
MGkqNSlqSiheeGFDZ3c8QjwhUVVGUy1wMCEjQnR8ZFlMJEQtVWZjQEx3QkdhZnRRYmNSPSE3KSk3
VWclakQKejtaO35PcUN2d0JHMjY5LTY1OSF7dU5tKk9lQVQ7ektOZ2QheVFuSF9MJWJVS0hEbHIq
Q0VvenVsSVVFd3cpa2g8CnpxV0BJVnNZPUVTcXgyPWBqM3Y9bkNpVj56LVd6RXF1VFhpZVd4aS0k
Mng1dCgoLSR+T1VfMnV7NjRPQTxibX4xUAp6cSFAZ0ZeUnp6XzZ5M2orR2NIMiFNNSowNWpNZ3cj
YmJtY3Y3MTZTOFBVUn5LQ0AqWFNpNjt4PDMjOUJOQmZmMnYKelJxUGQxV0U9cW9QUzRzRjN7WmI/
JlFJT2FWRUNeMV5maGsxbyFeT3E0bG8xbkBMKE4pdSUoUVJzTiE3cnBHa1c9CnptQComRDFCOT8+
O3I9T2cldWVsY0heUG5DSH0/RUFKZ083ISM1cGlZMX1tJDltSSE7Ul9rMTNNYlcmTHtFQipmagp6
RDFlTjAjQkV9KHJ3XjR1cm9lY3ZXdlB+ZW9oWmgzNSlIclpWOHBUQiFDSHJCaj9pQUpFVFQ0QkF6
MllNU2hNIzUKekdEUGh7SDUyayh3dHBpJGVZeWluKExVNW0zNCoxMElaT1JfJGZweUtYJiVmeipO
RngyLXRIZnxkPCZ3MEExeU8wCnopQCtkKnNOWlhUbXVGZiNkOGM7aEs2P00tWHlMUXhkfDllPDN6
OXVvZnNHNitSRDZiTmtHbnpJekhJaXpqKVZwIwp6OzIrX1FxMCpldTF3TTtSeXMzT3JUYiQ2P0tT
MCQyc3JCPXx5JmQtPXglaUpSM0gpQE5XOytkb3V4PWJsUjhZWn4KejxnIyR9cXpKPEI2ZVN6b25i
UUJFJWZFNSsra3BVYykkQzVLYkZKS3B3TGl9P2pQdigrRk9NKzJ2KnEmeFkrNVU+CnpIfXJHI1hs
Y0x4anJafSgjZyZvbyl7X0BVaT1AcH54KHl6JFJkb3tBSVg5bE1eWnxNZmI4M2JtcFFsXlFgcD54
JAp6X2JxMGxMWHB5O2QyKl9SNiVYeF55b19KeXg3JmJpMnZJdjBPTV82V29tdXl6Kj8je0EzayR5
MXs7MGkkQUFAUk0Kek9mZlJUPS1PMGMjTHxyQ2RNLSZuYGYyTVhqYnF4Uz5gc3xLe2ZnVUIkczYx
NTVYPUVtOXcmZT57VndHazA5ITBBCnp7MEoxalJRKWRzTFoxP2oxMXJobDZ5Zk1gciV3QzNYT14j
LWhEPCQqbkA4K3g1bnlGPUohMTV3emczNz96OVl4Owp6UE1Sb29DX0RxKV8qOGRjQW91Tz9NWilg
c3hNcGkoUXFIJTM/VUNCVGY1VipuMVd3UGBJTmZIbDZoZUhBenYyMGQKemhXdCtUOWMhMk8oI2xG
YGM8U2drMzJ8K0E4KFVMZDhKVXdCb0o1NVZUSnVSY3M1UVB6N0xHbkwkQkshY01lY3FtCnpie2pF
aUZYfHskLStfPVUhRUBAU3Z5RUpkQXleS0JLeEIyQkVqeWhUbzF4N21KVj12X285ZSZmR0Z0cjZ7
NEUhRgp6ST45cEN6TFp8Ui1ZWVhgPmIwdCN5TmxCSGUlRXR7WjFOWCE9Uj9IZ3hrSiZYKHcpVlJr
Nkp1M2xxa3h1SzIoaEAKenQwbXg4eWFHU0NaYzJHSjxFZnN7SjBvJllSMXROKHpReSliPFJ+TD1K
MnZtYyR0JFJDckVhKjAkSil1TlJ+JXZBCnpebCNkJSFyLSRIWUNreGZAd08qWUhKMFYkWHtkaXpG
KV9iJFZeJUkpUWFDdGF1P0RtYGwjdlZrMTRCMFdPSXhmaAp6PiVtNSRVTDImd24mPj9QPktoK2dj
WG8hK05XNj5yZ1QhZGhgeVh5ZW4wXkYqc0U/cjM8Yyh9TXlja2NhMkFhOW8KejkwQkZMMTJfSn4+
bElrVUc/MU5HWFU1UDFgNCNZbTJ+U29gUm1UR2dIQi1MS29TOEQwN0Z1TUcqRWdWbVlMfGFyCnpx
OTB+ZUxfbW53T2kjUyg3RGUpNE9mPz5sdjZVdCljeG0hP2hiNSRyXzllQGAhUGNBWVBVZXp3Vzw1
T0hUJFNPMwp6QEszejVKVGFtTFhaNXYoOz5TbG9Hc0smbj0rQCgoM0dxYXNsS1VJUEU1LW40YVF6
aD8wPjR+QlpaandwaX14djIKeiZneVU9STRIMy0zODBIWEoxNDVlSWJATl5YQn1aPWA1MHxXKnsw
bFJYMiM7UzJ2eDVVTXp+Png3aH47SF83azRhCnozYXFmekgpS0I5dkJCO1JEMm5KOWhuO2F6MTZm
RjdvJU82IV9gfiZwYWNYJlM/RyklfldtIS0hTHZiUEp1K19JVAp6QjwpanA7c1cqcDQ9c0omOGIr
ekx1b0FFYWhhY0VfNzxNPShZMEpPXlImKXAoYE5RRHZXOXNXdiZSNXplQ3BGcCoKel40fVNRdXRE
YUJhREo3X2NIQTx6bUdyYFc8MytJSV5pclNBPj5pNyp0JnRCWUI3RldqSmdFN1lHbnFDWExlP2Fz
CnpYa18wVXNzN2hOa3FfTkQ3KWQ9WCp5JDB+Z01sI3REQllxN1d8LSRuKCRXWVBDYlRocFdRWm8r
R3M7a1U2U2M+KQp6KSh3UjtXPUZwTDQpZnwpT1dsUS1OM18pQnooelVramoxVGJHLVJRJm1sQkhF
TThuS1ojVU1xM042OUxhVjF6QkIKeks1PXxRMWM5bjZKSnAxeHFNSmIhZm1fS3U2eWliUCs5T3Qh
bTFLX0t0Y0U/JFo0RWNrT0I7OEI3a0J7SD4qcV9+CnomTWIxTlh2IztZJT45SzR1MT1BRmR0JSp6
KD18RChNYEw3aDEmKDwxZ1N1a1chWjgpZFlAKHc8dFJjdDRjYilCSgp6dkghXjdLMmE/TigoMmdv
KSM1cX0mdWM2VmgjIT9nLSlZUXUtN08xYVFzMSp7QSNZWHo7XmhsY2RPeD9EIX02R1cKei0jKDgr
bjNkT3NueUl9djVyKTQyKUhjbUNhezZVYWdiX0J+JFFgK0hJanp4Zlh9UTEkKH1MV25fdVFTYSl1
YnBiCnp5WH4mKygzfFlDKWtfIT88JiQkPmNAby1PemBDR1d4P1U2RTJlTWVBQyZMPW9aSlledT5J
WF5NUVlFejVDfX18Uwp6Nlg3fmJNdjFRXyQ8VE93KXhFMnxEOSRfSTFmSClsZW8xbVU+OUkhZms8
cmI9LWdtWlFQfTxGRldxIXMhKmRBakQKenhtXjFyO0B8N1kqZnRtOWJ9eCo2U35VdytLRGVMdGpj
aCZ6SSZBLW44NThNc09yPT0zdiQ1TnlHTllIdFVNRTdzCnorO2h4SDxrZFo/QmklSF5UfjN2blV1
IVduIzVtbTY3SklYX3F2SmtgOEM1TU9BcnkrI3s5TCM7ODxPSFRqcUsoOQp6YUg4Wm9NN1lTez9L
Qm48JSlxfnFtMHowWU94MjN3S3BMVlBlZXk4PzslQD19WTklR18zRWc5WXlWcmVUaG8ybjUKeiM9
RmdhdF5GVjdIUjt3ZCtWbkEmXlFPK35JLWhJey0pRiNkclFtVnEmIUwzYFlmZitWa2c+d29sKyl7
cVI/cU1LCnomTjhgR1M4JGh5OFF3R2tJWShXQ1hidD1pNnpFMztIJkRibXV3ZFNvUVg0c0NYKTsy
Z3N9SGZgJXMkX2FNVVEoMgp6KDUoKihUQS1tbSorZlNEVWkxNFI9Mmw7NDxlU25PeD8/ZEQ+ZkBm
OUdsVCZgNHZ7P3gkcWIpeGVLeDlkc01aaSoKeikwRXxfVnV7QkpRQz0tdGpfaTJOaWswbi1HS2Bi
NG5kdHg8eFB9dH51alh9TTJgS3psTHcxMnZ6ZVRoc1JKLWU8CnpQVWRKTl5teEkwT35HTy1ycCtE
LTBjMkxrTHxmbU9ieztrRyhVeTBuTlZaSnkxSjlwOT90KnlvSS1LPV5wRXJsJQp6YWYxYGZUfXRs
KD9KcURCcDNJUm85dCFUI3hEaGFVbUl3WUUjKyFkOVhAdGU1UFJfSFp6WTZ7VTVLUDU/Jm19dm0K
enxKVGdJVFNnOHNgYnBzSGl5fEBzOSRpPldfPWZ3MTsya35xdkRkRTI9ZiRESjFERFl7bHJTVEh7
fWVjZSsxO3YmCnpGKDg7Xk4rQ0hnc08rKSVSamd3Q2lCbGkpPVZzbDs2RkY1WXIoMXdVSj5nJFlv
TGxOfkBkJnhkWUhuWFJgUHRiPgp6Jm53c3kmKVhKV2AzK3xBSUdMIX1uOH41TTc+O3tVaCNTNyMx
Xjw9JGNAeCM9PzNoYngwUyN3WD5iSz5mRmQhMWMKem1nbUFvQ3ZYMT9EOytReHhoaUBsQigoe3xR
JSo2OXBmZTFJZXR8UUQlWG5EYGMoVXxsKEtxeHgzemk3IWdEZFE7Cnppaj5QS2dnJiR4QzQtfXZH
cTRVMDh8b09gVVk/S0BCeU1fUG9lYF9GS2ZWPjRgYms2PUoxIS1Zai1eY2RuPileaAp6TH40MTU5
cko8SUFvbEV7VCNfSHQ1UlRHNzEqMXg4WTtieyR1Zz5zJjFkT0tvZzk7T30xUyg+MHJeWjJAPnUw
UUYKelYxYn58NT5vcDArOFVWR0cwaUMzckA8UnZpbzspIXUmOURWPXVYNHY9RHRDdSYleVZYNElf
MFVJalAoOUkzUFg+CnpuQ0NvO3pfbDt+d0dUYlppUm16LSlSR0llNTt7PHgjeHJvVElwXkQ7ZXQk
NF5RRWBrIzBBTG52WCF9UEk/SElBVgp6Z3A9WWcoIXhCYG0jWD9ld01GKElDens5cFZTYkhWWU5N
ZG1eQn1VdDNmWTFyJFp1UlkoZE1rSntZRmhARXIlUV8KendFZ04tXiNFJUZ0KXRVPjxMN3wyPSRX
QiMpP01nMHF2KTRkR1dxZn5Te0xnc0J0YF8md0tReS05OGBmKFd0O0ZwCnoyWk1SJllrUloyajM/
RiYoeXNMSzV0SGlRRnF6VkBWfVRgTUt+ST9sZjxZamQjczcwbld8RF5Ce3tfeWVOekVaaQp6U25F
WkllVCFVT2w9Wkt0P0FZZVZyfDBZSSsmVDE3U1NyLTs8VUhvIVBCWE9+NSFWeHB7cy1BXmUleG1v
V3dfZnkKejl7O2FMWjVRWD1NJTExWCFDfWJUTVdoa1YqYCt1PGBkdzh2OXFyblFSK2hLNHR9WFhQ
KW5JfSEjeHZ5e3RtRUdpCno1RT0wSl4/PT81Zig4Mzs1aVYtfkV5Q3s8Y0M/M3AjcUcoVkRaYUpi
K283TkdrOGo1K3Z8ZTNRKmMjZXdlJFJydwp6Tk5Cfkt6cUUqPSQ/QksraDMtTUhicE0ldTxfcGxK
Ync/Xnh1fjcrYDNJTmx6PVcxemZMWnJBaDx6d3UqVF9jK00KekJnWHZtQSRBSVVyU1JwbElEWU5a
SUFRfWJWbVcjdy05RENaPT1uNDZIJDwjYUluWnZNN35BKzJEVTA/V3MjJURrCno5YjN8P2opeVI2
fER4TlZwXihQUzBjP3FhRVRPRU5jYnl1ZDFGPUpyVH1RVm83dCtkZTdaSyNycDI9fkJZUH07egp6
UW5LZHM+e3xQfDAtRDZ0Wi17JDVkI2NXcChEcDh1K1U5XiMmen5NZFcjPHFkelA8RiVPbzJQLU5L
K3xYWE9ARW0KeiY/NkZLJnhNZEJ4bXVRd1kwcF9tVTlPYTIjI1pxQy17fX1HPmlHaCs7QUxUZ3VG
fip0a2hPIXoqXkR3M3l4STdlCno5dXk4cHFyKSRHNml4fEcyVklEaEE0LUFtVTRNJng2bXdhQXNi
P197Ukw+QmlVezVLaDFZe1J0JHJKVj4tWVNJZQp6KzU8eVRTKTA7VzYlZXZrSmJOan1qfiMoajVU
cCE+RHJRVmtQN00jcWRAa305UyVOOFUkMCtUZVNfZWx2JHYoSnoKengwYDlhTyVKczUjNVRHbGpe
amNtNzRoMG91N2JKYTQqP0ZVdUNrQEFLOTw8YDJ5OHVzaFkjYXghUF4+T3ZydnVRCnoxTEpAdDYw
UEpAM1BpXk9ZTTspMyZNJnk0XklmbnVmN05QNEc7V3V0MVVmMypZN31nIVNtSn1OTipSViVJPSkl
Vgp6R1gjJnZQRS1+R1pGR1Veayh1VjZaZnZ+SV48c0MjPjByPjdJQEtsO1dLPG1jY2RrOSRVdTM8
MGYjNEdlX1BAQnQKej4rQW9Jd3h9fTg7alpFbjBMfXZiUTl3UCkkbDJYOzY3KyNKN3prcDw8S3dI
U0Z6PiFJYHduMzxQNzw/LU5jQklnCnphdEskfnp6e2RFYX5+eEd2RyNLZV9ka2Y7RF5COz5pI3NU
N2JWIXd8an5WSEpXRUVFez9hWlhWNUFgJD1OfTlAcgp6V2olKTs8PEE2VUR5cmBLOCs/Zk8lYjt6
VlZfPURkPEdlNkRMVzdfTE5gI2BpZW53djNIKHI4d0YzbDJvI2hROzUKek1gd1RKe2ZsRCUrKVlB
Xi1kOEw8Qld0Kz1Mb25Gc3hzeXpHX1NQYlg+MnJ5eEpYM0sySlhGQFNVfmpsNWc0Y2B8CnpDbSp1
UFo5UCh6QCZaTlV6KmwlLXdgYjUtNEpqYGdFYHo9LXpYeVctRkRkZm9odmZlLXZIPnRLRmpjaTRz
VW4lTAp6NVNrYmxMP1J2ODY5KmAtJUBvZyNuPHpMUmo/IX1RYCQqKE1DfHpLeyVIIzFAelh+P2pp
P3FQck9nVGMlMDMrck0KentAUH1he3RhYjZTSzUzSHU9ZVR8cDBJWlh0VSR5SjFwRFh6Pzw7YC1G
aUNkO2E0M2ZSeGk7fWlUMTxSX1JSfFVeCnp8TWIwcyUrXj1TP0tTdV9QSlMkQShjWGUwZnJkVWJO
IUtpRVQhPXJKVDNKQHkkQXRGQDE9KzAlaCRWRjxtVHsjJgp6dWNGJWpVOCM7UEt5Tj9nQFFBak5n
PXFyTD97QHl0Mn5KV2F2aFQ4WWF5aVh6OUI3XjZaeX1iSWRTZW9CdTlkZl4KejhrV0JINGtxcGdg
N1BFUi1PI1A4R0wrRGotKUU3QzhIUkZ2UX13c1lNPGE0NGVIMiRzREt+RW52UVIrd2Q0cmh9CnpK
Tzx9KDBDXlJDVCt6RDQkdylfRVUjfCVzXyYrbyUkeFVVeVZ8QHF6bH59PWt2cEkhM09uTiNvLUZr
Y1lWJnUqKQp6a3dxRkFONXslUV9pRmV0UXNqTlRVND1YP1I7Pnk9eUNSU1dBNXpFV2wmSDNObyp0
e2AyPSQrVUloWDZYSkNfdTgKekFsa1BzKiM5ZlpLO004USRVKikkVEdkNWNhWlV0VGV8dkczVmYx
QzBoej5HaCNqP3RzQXVLSVdDPj8pN1lacX5GCnoodEV+enI7PntgRWxeVyokeXF9RCthVDNeRjFM
MiMzUHIpSGlJaTBzaSt8ckxmLX5KP19WQUQ4SGpaeWR7RFolSwp6ODghTUNRZFo/NGd+Zn1Le0RI
az4mPE9tRCNrRTVLe0Frb3ZxdkQ9I1cmWkY3ZGtJMV5YenQwYWhZXypEPkk2LTQKekhSfHFGUEtu
WH5nYVJOJEV9czJxcnVzfTIxZFpPb2ExI2g7ITlOc1UyWDRBNnNSd3w1cXZISldRUkN5cS1nbGN5
CnpeRX4+KTJ7aFU0dUp6TD1gQDw8NHNMViVieik4V1lGYG92OThfMVRGdis3TmtiN3F1aypgTVFw
bXo/X2glRVQ7UQp6SyZVSzQ7SXl2UDBMQ097RGooMzdzSHE3SWVicU8xRylQXks7bkN6cD4+NWh4
eHhZK0duPU8/Vl91aUJeVEpofkYKej9LUmFhczEmQ0gmJWZzQWY3JW9gXnBFaV8+ayU+QXZ0fCg7
cCRGa1FyUTU0JnYxWHFpZWh0TUM2ZEBpQ1lBWXg7CnowQCFwcXtiVXMtSS1YeDZLcz54SEJlUitR
c1RWIUhhTGImPnNlWFlAYHA5flJMSWhHJUJzZVQqXjZnZlZLcG0zagp6cDN6Qz5sMGBATzhee1le
Uy17MXBXQztFPz97Nig+I29jWElIOE97TmxoK1hwSUlIc1ApS0preFRWb3cpJEtxNEgKemAha1dI
YSppMmRKYEBgNU1rbEQ4SzYtNWtoa3Q2Wm8pcWdkSUlESDMrSG0qZW40JDYyN1N5dnY+X2lkZj1X
Sz5qCnp6S3t1TXBNSF9GUShWRj4xPCM8fFF+UnpOUyslUjJVI2w5KFc9NjdgWTYkUG5yTD9SfSNN
OG1SNHlpfWhraSN5RQpuPEpTO0p2YDB5KChxO3wqd1NUYHBedFJZfjVMaT5oQk1BSUQ1UTZgIW8k
dm52aWJuKSkKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0tZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjY5YWNjZmFiZTY2MmNlNGQ3ODFiMmZmZjkyODI5NDcxN2JlYjU2MGMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291
cmNlLXdlYm0tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1RoaXMgdGVzdHMgdGhlIGFi
aWxpdHkgb2YgdGhlIFNvdXJjZUJ1ZmZlciB0byByZXNldCB0aGUgcGFyc2VyIGFmdGVyIGFuIGFi
b3J0KCkuIEEgU291cmNlQnVmZmVyIGluIHRoaXMgc3RhdGUgc2hvdWxkIGJlIGFibGUgdG8gYWNj
ZXB0IGEgbmV3IGluaXRpYWxpemF0aW9uIHNlZ21lbnQgb3IgYSBuZXcgbWVkaWEgc2VnbWVudC4K
KworUlVOKHZpZGVvLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoc291cmNlKSkKK0VWRU5UKHNv
dXJjZW9wZW4pCitSVU4oc291cmNlLmR1cmF0aW9uID0gbG9hZGVyLmR1cmF0aW9uKCkpCitSVU4o
c291cmNlQnVmZmVyID0gc291cmNlLmFkZFNvdXJjZUJ1ZmZlcihsb2FkZXIudHlwZSgpKSkKK1JV
Tihzb3VyY2VCdWZmZXIuYXBwZW5kQnVmZmVyKGxvYWRlci5pbml0U2VnbWVudCgpKSkKK0VWRU5U
KHVwZGF0ZSkKK0FwcGVuZCBhIG1lZGlhIHNlZ21lbnQuCitSVU4oc291cmNlQnVmZmVyLmFwcGVu
ZEJ1ZmZlcihsb2FkZXIubWVkaWFTZWdtZW50KDApKSkKK0VWRU5UKHJlc2l6ZSkKK0VYUEVDVEVE
ICh2aWRlby52aWRlb1dpZHRoID09ICczMjAnKSBPSworRVhQRUNURUQgKHZpZGVvLnZpZGVvSGVp
Z2h0ID09ICcyNDAnKSBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
bWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLmh0bWwgYi9MYXlvdXRUZXN0cy9t
ZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0uaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTQw
Y2JjYzEzYzM1MmY3ZTFkNTE3ODI3ZTAyZjc4Y2E0Yzk4NWIyCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLmh0bWwKQEAg
LTAsMCArMSw2MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRs
ZT5tZWRpYS1zb3VyY2Utd2VibTwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Im1lZGlhLXNvdXJj
ZS1sb2FkZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIHZhciBsb2FkZXI7CisgICAgdmFyIHNvdXJj
ZTsKKyAgICB2YXIgc291cmNlQnVmZmVyOworCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAg
ICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworCisgICAgICAgIGxvYWRlciA9IG5ldyBNZWRpYVNv
dXJjZUxvYWRlcignY29udGVudC90ZXN0LXZwOS1tYW5pZmVzdC5qc29uJyk7CisgICAgICAgIGxv
YWRlci5vbmxvYWQgPSBtZWRpYURhdGFMb2FkZWQ7CisgICAgICAgIGxvYWRlci5vbmVycm9yID0g
bWVkaWFEYXRhTG9hZGluZ0ZhaWxlZDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBtZWRpYURhdGFM
b2FkaW5nRmFpbGVkKCkgeworICAgICAgICBmYWlsVGVzdCgnTWVkaWEgZGF0YSBsb2FkaW5nIGZh
aWxlZCcpOworICAgIH0KKworICAgIGZ1bmN0aW9uIG1lZGlhRGF0YUxvYWRlZCgpIHsKKyAgICAg
ICAgc291cmNlID0gbmV3IE1lZGlhU291cmNlKCk7CisgICAgICAgIHdhaXRGb3JFdmVudCgnc291
cmNlb3BlbicsIHNvdXJjZU9wZW4sIGZhbHNlLCBmYWxzZSwgc291cmNlKTsKKyAgICAgICAgd2Fp
dEZvckV2ZW50QW5kRmFpbCgnZXJyb3InKTsKKyAgICAgICAgcnVuKCd2aWRlby5zcmMgPSBVUkwu
Y3JlYXRlT2JqZWN0VVJMKHNvdXJjZSknKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzb3VyY2VP
cGVuKCkgeworICAgICAgICBydW4oJ3NvdXJjZS5kdXJhdGlvbiA9IGxvYWRlci5kdXJhdGlvbigp
Jyk7CisgICAgICAgIHJ1bignc291cmNlQnVmZmVyID0gc291cmNlLmFkZFNvdXJjZUJ1ZmZlcihs
b2FkZXIudHlwZSgpKScpOworICAgICAgICB3YWl0Rm9yRXZlbnRPbihzb3VyY2VCdWZmZXIsICd1
cGRhdGUnLCBzb3VyY2VJbml0aWFsaXplZCwgZmFsc2UsIHRydWUpOworICAgICAgICB3YWl0Rm9y
RXZlbnRPbmNlKCdyZXNpemUnLCByZXNpemUpOworICAgICAgICBydW4oJ3NvdXJjZUJ1ZmZlci5h
cHBlbmRCdWZmZXIobG9hZGVyLmluaXRTZWdtZW50KCkpJyk7CisgICAgfQorCisgICAgZnVuY3Rp
b24gc291cmNlSW5pdGlhbGl6ZWQoKSB7CisgICAgICAgIHdhaXRGb3JFdmVudE9uY2UoJ3Jlc2l6
ZScsIHJlc2l6ZSk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnQXBwZW5kIGEgbWVkaWEgc2VnbWVu
dC4nKQorICAgICAgICBydW4oJ3NvdXJjZUJ1ZmZlci5hcHBlbmRCdWZmZXIobG9hZGVyLm1lZGlh
U2VnbWVudCgwKSknKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiByZXNpemUoKSB7CisgICAgICAg
IC8vIEZpcnN0IHJlc2l6ZSBjYW4gYmUgMHgwIChNYWMpIG9yIDY0MHg0ODAgKEdUSyspCisgICAg
ICAgIGlmICh2aWRlby52aWRlb1dpZHRoID4gMCAmJiB2aWRlby52aWRlb0hlaWdodCA+IDApIHsK
KyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8udmlkZW9XaWR0aCcsIDMyMCk7CisgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnZpZGVvSGVpZ2h0JywgMjQwKTsKKyAgICAgICAg
ICAgIGVuZFRlc3QoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8ZGl2PgorICAgICAgICBUaGlzIHRlc3Rz
IHRoZSBhYmlsaXR5IG9mIHRoZSBTb3VyY2VCdWZmZXIgdG8gcmVzZXQgdGhlIHBhcnNlciBhZnRl
ciBhbiBhYm9ydCgpLiBBIFNvdXJjZUJ1ZmZlciBpbiB0aGlzIHN0YXRlIHNob3VsZCBiZSBhYmxl
IHRvIGFjY2VwdAorICAgICAgICBhIG5ldyBpbml0aWFsaXphdGlvbiBzZWdtZW50IG9yIGEgbmV3
IG1lZGlhIHNlZ21lbnQuCisgICAgPC9kaXY+CisgICAgPHZpZGVvIGNvbnRyb2xzPjwvdmlkZW8+
Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="review"
          id="420202"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404868</attachid>
            <date>2020-07-21 15:37:49 -0700</date>
            <delta_ts>2020-07-21 17:25:16 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-214529-20200721153749.patch</filename>
            <type>text/plain</type>
            <size>254467</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NjczCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCAwOGE0YzYwZmQ4ZDQ1ZjUzYWVhY2IwNGRmOGNiYmQ1MGM5Y2E2Yzg2Li4xZDZi
MDdkZDljZDAzNjBkODg1ZjgwMGIwMDZlN2IyZTgzMzdmNWUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMC0wNy0yMSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBleHBlcmltZW50
YWwgTVNFIFdlYk0gcGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTQ1MjkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1NzgyNDY3PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBBZGQgdGhlIHZwOV9o
ZWFkZXJfcGFyc2VyIGZyb20gbGlid2VicnRjIHRvIHRoZSBwcm9qZWN0LCBhbmQgYWRkIGl0cwor
ICAgICAgICBzeW1ib2xzIHRvIHRoZSBsaXN0IG9mIGV4cG9ydGVkIHN5bWJvbHMuIEJlY2F1c2Ug
dGhpcyBoZWFkZXIgd2FudHMgdG8KKyAgICAgICAgYmUgaW5zdGFsbGVkIHRvIGEgImNvbW1vbi92
cDlfaGVhZGVyX3BhcnNlci5oIiBwYXRoLCBzcGxpdCB1cCB0aGUgZGVmYXVsdAorICAgICAgICBD
b3B5SGVhZGVyc0luc3RhbGxQaGFzZSBpbnRvIHR3byBzZXBhcmF0ZSBDb3B5RmlsZXMgYnVpbGQg
cGhhc2VzIHRoYXQKKyAgICAgICAgcHV0IGhlYWRlcnMgaW50byBkaWZmZXJlbnQgbG9jYXRpb25z
LgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2VibS54Y2NvbmZpZzoKKyAgICAgICAg
KiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cDoKKyAgICAgICAgKiBDb25maWd1cmF0
aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3
ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBTb3VyY2UvdGhpcmRfcGFydHkvbGlid2VibS9jb21t
b24vdnA5X2hlYWRlcl9wYXJzZXIuaDoKKyAgICAgICAgKHZwOV9wYXJzZXI6OlZwOUhlYWRlclBh
cnNlcjo6Y29sb3JfcmFuZ2UgY29uc3QpOgorICAgICAgICAodnA5X3BhcnNlcjo6VnA5SGVhZGVy
UGFyc2VyOjpzdWJzYW1wbGluZ194IGNvbnN0KToKKyAgICAgICAgKHZwOV9wYXJzZXI6OlZwOUhl
YWRlclBhcnNlcjo6c3Vic2FtcGxpbmdfeSBjb25zdCk6CisgICAgICAgICogbGlid2VicnRjLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAtMDctMjEgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlc3luYyBmaWx0ZXJfYW5hbHl6ZXIuY2MgdXAg
dG8gdXBzdHJlYW0gbGlid2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWM5ZjZiMjBmYmMzMWJmMDJkYTlh
NTRkZjMxYmUzMGFhOWE0MjhlZi4uNTQ3MzhmMGJjNWU0NjA4ZDc2MmE3N2I4YzU1M2E0ZDJjZjcz
NTllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MyBAQAorMjAyMC0wNy0yMSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBleHBlcmltZW50
YWwgTVNFIFdlYk0gcGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTQ1MjkKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisK
KyAgICAgICAgVGVzdDogbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLmh0bWwK
KworICAgICAgICBBZGQgYW4gZXhwZXJpbWVudGFsIE1TRSBXZWJNIHBhcnNlciB0byBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQy4gVGhpcyB3aWxsIHJlcXVpcmUgZXh0ZW5zaXZlIHJlZmFjdG9y
aW5nCisgICAgICAgIG9mIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLCB0byBleHRyYWN0IG91
dCB0aGUgcGFyc2VyIGludG8gYSBuZXcsIHZpcnR1YWxpemVkIGNsYXNzLiBUaGlzIG5ldyBwYXJz
ZXIgY2FuCisgICAgICAgIHRha2UgYWR2YW50YWdlIG9mIG5ldyBDKys+MTEgZmVhdHVyZXMgc3Vj
aCBhcyBsYW1iZGFzIHRvIGNsZWFuIHVwIHNvbWUgcHJvYmxlbWF0aWMgZXhpc3RpbmcgY29kZS4g
VGhlIG5ldworICAgICAgICB2aXJ0dWFsaXplZCBTb3VyY2VCdWZmZXJQYXJzZXIgY2xhc3MgdXNl
cyBwYXNzZWQtaW4gRnVuY3Rpb24gb2JqZWN0cywgcmF0aGVyIHRoYW4gcHVyZS12aXJ0dWFsIENs
aWVudCBjbGFzc2VzCisgICAgICAgIHRvIG5vdGlmeSBpdCdzIHBhcmVudCBvYmplY3Qgd2hlbiB0
aGUgcGFyc2VyIGVuY291bnRlcnMgaW5pdGlhbGl6YXRpb24tIG9yIG1lZGlhLWRhdGEuCisgICAg
ICAgIAorICAgICAgICBCZWNhdXNlIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDIHdpbGwgbm93
IGhhdmUgdG8gZGVhbCB3aXRoIEF1ZGlvVHJhY2tQcml2YXRlIGFuZCBWaWRlb1RyYWNrUHJpdmF0
ZSBvYmplY3RzCisgICAgICAgIHRoYXQgYXJlIG5vdCBuZWNlc3NhcmlseSBBdWRpby0gYW5kIFZp
ZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIHN1YmNsYXNzZXMsIG1vdmUgdGhvc2Ug
Y2xhc3NlcyBub3RpZmljYXRpb24KKyAgICAgICAgZmVhdHVyZXMgdXAgaW50byBBdWRpby0gYW5k
IFZpZGVvVHJhY2tQcml2YXRlLCBhZ2FpbiB1c2luZyBhIEZ1bmN0aW9uIG9iamVjdCByYXRoZXIg
dGhhbiBhIGNsaWVudCBjbGFzcy4KKworICAgICAgICBBZGQgYSBuZXcgU291cmNlQnVmZmVyUGFy
c2VyV2ViTSBhbmQgYXNzb2NpYXRlZCBBdWRpb1RyYWNrUHJpdmF0ZVdlYk0gYW5kIFZpZGVvVHJh
Y2tQcml2YXRlV2ViTSBjbGFzc2VzLCB3aGljaAorICAgICAgICB1c2UgbGlid2VibSB2aWEgbGli
d2VicnRjIHRvIHBhcnNlIGFwcGVuZGVkIGJ1ZmZlcnMuIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0g
ZmVlZHMgcGFzc2VkLWluIGRhdGEgaW50byBhCisgICAgICAgIGxpYndlYm0tcHJvdmlkZWQgcGFy
c2VyIG9mIGl0cyBvd24uIEl0IHRoZW4gYnVpbGRzIHVwIHRyYWNrcyBhbmQgc2FtcGxlcyBiYXNl
ZCBvbiBjYWxsYmFja3MgZnJvbSB0aGF0IHNhbWUgcGFyc2VyLAorICAgICAgICBjb25zdHJ1Y3Rp
bmcgQ01TYW1wbGVCdWZmZXJzIGFuZCBWaWRlb1RyYWNrUHJpdmF0ZSBvYmplY3RzIG91dCBvZiB0
aGUgdW5kZXJseWluZyBsaWJ3ZWJtIHByaW1pdGl2ZXMuCisKKyAgICAgICAgQmVjYXVzZSBXZWJN
IHVzZXMgYSBVVUlEIGFzIGl0cyB0cmFjayBpZGVudGlmaWVyLCB0aGUgcmVwcmVzZW50YXRpb24g
b2YgYSAidHJhY2tJRCIgaW5zaWRlIFdlYkNvcmUgbXVzdCBiZQorICAgICAgICBpbmNyZWFzZWQg
ZnJvbSBhbiBpbnQgdG8gYSB1aW50NjRfdCwgb3IgdHJhY2tJRHMgd2lsbCBiZSB0cnVuY2F0ZWQg
b3IgemVyb2VkIHdoZW4gcGFzc2VkIGJldHdlZW4gY2xhc3NlcyBhbmQKKyAgICAgICAgd2hlbiBj
b252ZXJ0ZWQgdG8gYW5kIGZyb20gQXRvbVN0cmluZ3MuCisKKyAgICAgICAgVGhpcyBlYXJseSBp
bXBsZW1lbnRhdGlvbiBpcyBub3QgeWV0IGFibGUgdG8gcGFzcyB0aGUgV2ViTSBXUFQgbWVkaWEt
c291cmNlLyB0ZXN0cywgYXMgd2Ugb25seSBoYXZlIGEgVlA5IGRlY29kZXIKKyAgICAgICAgYXZh
aWxhYmxlLCBhbmQgdGhvc2UgdGVzdHMgdXNlIGJvdGggVlA4IGFuZCBWb3JiaXMuCisKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFdlYk1QYXJzZXJFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYk1QYXJz
ZXJFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNr
UHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGU6OnNldEVuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGU6OnNldEVuYWJsZWRDaGFu
Z2VkQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkVlBDb2xvclByaW1hcmllcyk6CisgICAgICAg
IChXZWJDb3JlOjppc1ZhbGlkVlBUcmFuc2ZlckNoYXJhY3RlcmlzdGljcyk6CisgICAgICAgIChX
ZWJDb3JlOjppc1ZhbGlkVlBNYXRyaXhDb2VmZmljaWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
cGFyc2VWUENvZGVjUGFyYW1ldGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVlA5
VXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZh
dGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlOjpzZXRTZWxlY3RlZCk6
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6c2V0U2VsZWN0ZWRDaGFuZ2Vk
Q2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0RW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1T
ZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Np
b25BVkNvbnRlbnRLZXlTZXNzaW9uOjp1cGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW06CisgICAg
ICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjp1cGRhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6TWVkaWFTYW1wbGVBVkZPYmpDKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZP
YmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6YWRk
U291cmNlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmg6IEFkZGVkLgorICAgICAgICAoaXNUeXBl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRh
UGFyc2VyTGlzdGVuZXIgaW5pdFdpdGhQYXJzZXI6cGFyZW50Ol0pOgorICAgICAgICAoLVtXZWJB
VlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkFWU3Ry
ZWFtRGF0YVBhcnNlckxpc3RlbmVyIGludmFsaWRhdGVdKToKKyAgICAgICAgKC1bV2ViQVZTdHJl
YW1EYXRhUGFyc2VyTGlzdGVuZXIgc3RyZWFtRGF0YVBhcnNlcjpkaWRQYXJzZVN0cmVhbURhdGFB
c0Fzc2V0Ol0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJl
YW1EYXRhUGFyc2VyOmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQ6d2l0aERpc2NvbnRpbnVpdHk6
XSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbURhdGFQ
YXJzZXI6ZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yOl0pOgorICAgICAgICAoLVtX
ZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVN
ZWRpYURhdGE6Zm9yVHJhY2tJRDptZWRpYVR5cGU6ZmxhZ3M6XSk6CisgICAgICAgICgtW1dlYkFW
U3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbURhdGFQYXJzZXJXaWxsUHJvdmlkZUNvbnRl
bnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOmZvclRyYWNrSUQ6XSk6CisgICAgICAgICgt
W1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbURhdGFQYXJzZXI6ZGlkUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOmZvclRyYWNrSUQ6XSk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjppc0NvbnRlbnRUeXBlU3Vw
cG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OlNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQzo6flNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpmbHVzaFBlbmRpbmdNZWRpYURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6c2V0U2hvdWxk
UHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQzo6c2hvdWxkUHJvdmlkZU1lZGlhZGF0YUZvclRyYWNrSUQpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6cmVzZXRQYXJzZXJTdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQYXJz
ZVN0cmVhbURhdGFBc0Fzc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakM6OmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcik6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQcm92aWRlTWVkaWFEYXRhRm9y
VHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp3
aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6On5Tb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZU1l
ZGlhRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OndpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFG
b3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lE
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZENv
bXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnJl
c2V0UGFyc2VyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OmRlc3Ryb3lQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OmNsZWFyVHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpoYXNTZWxlY3RlZFZpZGVvIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZVNlbGVjdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENo
YW5nZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OnBhcnNlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6YXR0ZW1wdFRvRGVjcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6Zmx1c2gpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmVucXVldWVTYW1wbGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmlzUmVhZHlGb3JNb3JlU2FtcGxlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkQmVjb21lUmVhZHlGb3JNb3Jl
U2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
bm90aWZ5Q2xpZW50V2hlblJlYWR5Rm9yTW9yZVNhbXBsZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNhblNldE1pbmltdW1VcGNvbWluZ1ByZXNlbnRh
dGlvblRpbWUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5j
cHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQ
OVV0aWxpdGllc0NvY29hLmguCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZVdl
Yk06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OkF1
ZGlvVHJhY2tQcml2YXRlV2ViTSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0
ZVdlYk06OmlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlV2Vi
TTo6bGFiZWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVXZWJN
OjpsYW5ndWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZVdl
Yk06OnRyYWNrSW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5oLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHA6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLmgu
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OmlzQ29udGVudFR5cGVTdXBw
b3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0RGlkUGFyc2VJ
bml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXI6OnNldERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0RGlkUHJvdmlkZU1lZGlhRGF0
YUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0V2ls
bFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OnNldERpZFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNXZWJtUGFyc2VyQXZhaWxhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmlzQ29udGVudFR5cGVT
dXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6U291
cmNlQnVmZmVyUGFyc2VyV2ViTSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNl
cldlYk06OmZsdXNoUGVuZGluZ01lZGlhRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpzaG91bGRQcm92aWRlTWVk
aWFkYXRhRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpyZXNldFBhcnNlclN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlcldlYk06OnRyYWNrRGF0YUZvclRyYWNrTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRWxlbWVudEJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRWJtbCk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjpPblNlZ21lbnRCZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkluZm8pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6T25DbHVzdGVyQmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25UcmFja0VudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQmxvY2tCZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJsb2NrRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uU2ltcGxlQmxvY2tCZWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblNpbXBsZUJsb2NrRW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQmxvY2tHcm91cEJlZ2luKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQmxvY2tHcm91cEVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9Db2xvclByaW1hcmllcyk6CisgICAgICAgIChX
ZWJDb3JlOjpjb252ZXJ0VG9UcmFuc2ZlckNoYXJhY3RlcmlzdGljcyk6CisgICAgICAgIChXZWJD
b3JlOjpjb252ZXJ0VG9NYXRyaXhDb2VmZmljaWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dmVydFN1YnNhbXBsaW5nWFlUb0Nocm9tYVN1YnNhbXBsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOUhlYWRlclBhcnNlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkZyYW1lKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c3RhdHVzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnR5cGUgY29uc3QpOgorICAg
ICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGls
aXRpZXNDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxp
dGllc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6aXNWUDlEZWNvZGVyQXZhaWxhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRlVlBQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVXZWJNOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9UcmFja1ByaXZhdGVXZWJNOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk0pOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVXZWJNOjppZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OmxhYmVsIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlV2ViTTo6bGFuZ3VhZ2UgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVXZWJNOjp0cmFja0luZGV4IGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaDoKKwog
MjAyMC0wNy0yMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVc2UgQVZSb3V0ZVBpY2tlclZpZXcgd2hlbiBhdmFpbGFibGUgZm9yIGNob29zaW5nIEFp
clBsYXkgZGV2aWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjMDVlZmU0N2M0NDhlNWRjZTI1NTIzZjNhMmI1Yzg3
YTkwZWU4ZGE2Li45NDQwMDk0ZTAxNWExM2NhMDQ0MzYwMzMzMDA5MzE2MDk3MmQwOTYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA3LTIxICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIGV4cGVyaW1lbnRhbCBNU0UgV2ViTSBw
YXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NDUyOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjU3ODI0Njc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIEFkZCBhbiBFeHBlcmltZW50YWwgc2V0dGlu
ZyB0byBlbmFibGUgdGhlIE1TRSBXZWJNIHBhcnNlciAob2ZmIGJ5IGRlZmF1bHQpLgorCisgICAg
ICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisKIDIwMjAtMDctMjEgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgRnJlcXVlbnQgTmV0
d29yayBlcnJvciBtZXNzYWdlczogIlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
Ojp0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50
ZXJhY3Rpb25TdGF0ZW1lbnQgcXVlcnkgZmFpbGVkIHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6IG5v
IG1vcmUgcm93cyBhdmFpbGFibGUiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VibS54Y2NvbmZpZyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJtLnhjY29uZmlnCmluZGV4IDU3YjU0N2Vm
YjhmY2UzOGZhNGY2ZDBiY2ZlNGE1NGVmYjg5YTQ0MTQuLjE3YzY0ZTAzMDBlNWNiZDhjMGI1MDJm
MDQ3NGYzMzllNmZiYzY5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJtLnhjY29uZmlnCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJtLnhjY29uZmlnCkBAIC04LDYgKzgsNiBA
QCBHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POwogSEVBREVSX1NFQVJDSF9Q
QVRIUyA9IFNvdXJjZS90aGlyZF9wYXJ0eS9saWJ3ZWJtIFNvdXJjZS90aGlyZF9wYXJ0eS9saWJ3
ZWJtL3dlYm1fcGFyc2VyIFNvdXJjZS90aGlyZF9wYXJ0eS9saWJ3ZWJtL3dlYm1fcGFyc2VyL2lu
Y2x1ZGU7CiAKIElOU1RBTExfUEFUSCA9IC91c3IvbG9jYWwvbGliOwotUFJJVkFURV9IRUFERVJT
X0ZPTERFUl9QQVRIID0gL3Vzci9sb2NhbC9pbmNsdWRlL3dlYm07CitQUklWQVRFX0hFQURFUlNf
Rk9MREVSX1BBVEggPSAvdXNyL2xvY2FsL2luY2x1ZGU7CiBVU0VfSEVBREVSTUFQID0gTk87CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9s
aWJ3ZWJydGMuaU9TLmV4cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0
aW9ucy9saWJ3ZWJydGMuaU9TLmV4cAppbmRleCBkMDRhOTE5Njg2ZTljYzg5NjdhOGFhZDA0Njlj
Njg1NTQ2NTcyNzliLi44MWE2NDRjYzA1MTcxMWVhOTM0YTBmZTI1NDVmZDNiZTNkY2E1MGFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGli
d2VicnRjLmlPUy5leHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3Vy
YXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCkBAIC0yODAsMTMgKzI4MCwyMCBAQCBfX1pUVk40d2Vi
bTEyQnVmZmVyUmVhZGVyRQogX19aVFZONHdlYm04Q2FsbGJhY2tFCiBfX1pONHdlYm04Q2FsbGJh
Y2sxME9uQmxvY2tFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzVCbG9ja0UKIF9fWk40
d2VibThDYWxsYmFjazEwT25DdWVQb2ludEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfOEN1
ZVBvaW50RQorX19aTjR3ZWJtOENhbGxiYWNrMTJPbkJsb2NrQmVnaW5FUktOU18xNUVsZW1lbnRN
ZXRhZGF0YUVSS05TXzVCbG9ja0VQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFjazEyT25D
bHVzdGVyRW5kRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU183Q2x1c3RlckUKIF9fWk40d2Vi
bThDYWxsYmFjazEyT25TZWdtZW50RW5kRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFCiBfX1pONHdl
Ym04Q2FsbGJhY2sxMk9uVHJhY2tFbnRyeUVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTBU
cmFja0VudHJ5RQorX19aTjR3ZWJtOENhbGxiYWNrMTRPbkNsdXN0ZXJCZWdpbkVSS05TXzE1RWxl
bWVudE1ldGFkYXRhRVJLTlNfN0NsdXN0ZXJFUE5TXzZBY3Rpb25FCiBfX1pONHdlYm04Q2FsbGJh
Y2sxNE9uRWRpdGlvbkVudHJ5RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMkVkaXRpb25F
bnRyeUUKK19fWk40d2VibThDYWxsYmFjazE0T25FbGVtZW50QmVnaW5FUktOU18xNUVsZW1lbnRN
ZXRhZGF0YUVQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxsYmFjazE0T25TZWdtZW50QmVnaW5F
UktOU18xNUVsZW1lbnRNZXRhZGF0YUVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFjazE1
T25CbG9ja0dyb3VwRW5kRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMEJsb2NrR3JvdXBF
CiBfX1pONHdlYm04Q2FsbGJhY2sxNk9uU2ltcGxlQmxvY2tFbmRFUktOU18xNUVsZW1lbnRNZXRh
ZGF0YUVSS05TXzExU2ltcGxlQmxvY2tFCiBfX1pONHdlYm04Q2FsbGJhY2sxNk9uVW5rbm93bkVs
ZW1lbnRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVQTlNfNlJlYWRlckVQeQorX19aTjR3ZWJtOENh
bGxiYWNrMTdPbkJsb2NrR3JvdXBCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0
aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrMThPblNpbXBsZUJsb2NrQmVnaW5FUktOU18xNUVsZW1l
bnRNZXRhZGF0YUVSS05TXzExU2ltcGxlQmxvY2tFUE5TXzZBY3Rpb25FCitfX1pONHdlYm04Q2Fs
bGJhY2s0U2tpcEVQTlNfNlJlYWRlckVQeQogX19aTjR3ZWJtOENhbGxiYWNrNU9uVGFnRVJLTlNf
MTVFbGVtZW50TWV0YWRhdGFFUktOU18zVGFnRQogX19aTjR3ZWJtOENhbGxiYWNrNk9uRWJtbEVS
S05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNEVibWxFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25J
bmZvRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU180SW5mb0UKQEAgLTMxNywzICszMjQsNCBA
QCBfX1pONHdlYm0xMFdlYm1QYXJzZXJDMkV2CiBfX1pONHdlYm0xMFdlYm1QYXJzZXJEMUV2CiBf
X1pONHdlYm0xMFdlYm1QYXJzZXJEMkV2CiBfX1pONHdlYm00c3dhcEVSTlNfMTBXZWJtUGFyc2Vy
RVMxXworX19aTjEwdnA5X3BhcnNlcjE1VnA5SGVhZGVyUGFyc2VyMjNQYXJzZVVuY29tcHJlc3Nl
ZEhlYWRlckVQS2htCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29u
ZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKaW5kZXggZDA0YTkxOTY4
NmU5Y2M4OTY3YThhYWQwNDY5YzY4NTU0NjU3Mjc5Yi4uODFhNjQ0Y2MwNTE3MTFlYTkzNGEwZmUy
NTQ1ZmQzYmUzZGNhNTBhYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cApAQCAtMjgw
LDEzICsyODAsMjAgQEAgX19aVFZONHdlYm0xMkJ1ZmZlclJlYWRlckUKIF9fWlRWTjR3ZWJtOENh
bGxiYWNrRQogX19aTjR3ZWJtOENhbGxiYWNrMTBPbkJsb2NrRW5kRVJLTlNfMTVFbGVtZW50TWV0
YWRhdGFFUktOU181QmxvY2tFCiBfX1pONHdlYm04Q2FsbGJhY2sxME9uQ3VlUG9pbnRFUktOU18x
NUVsZW1lbnRNZXRhZGF0YUVSS05TXzhDdWVQb2ludEUKK19fWk40d2VibThDYWxsYmFjazEyT25C
bG9ja0JlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU181QmxvY2tFUE5TXzZBY3Rpb25F
CiBfX1pONHdlYm04Q2FsbGJhY2sxMk9uQ2x1c3RlckVuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRh
RVJLTlNfN0NsdXN0ZXJFCiBfX1pONHdlYm04Q2FsbGJhY2sxMk9uU2VnbWVudEVuZEVSS05TXzE1
RWxlbWVudE1ldGFkYXRhRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPblRyYWNrRW50cnlFUktOU18x
NUVsZW1lbnRNZXRhZGF0YUVSS05TXzEwVHJhY2tFbnRyeUUKK19fWk40d2VibThDYWxsYmFjazE0
T25DbHVzdGVyQmVnaW5FUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzdDbHVzdGVyRVBOU182
QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTRPbkVkaXRpb25FbnRyeUVSS05TXzE1RWxlbWVu
dE1ldGFkYXRhRVJLTlNfMTJFZGl0aW9uRW50cnlFCitfX1pONHdlYm04Q2FsbGJhY2sxNE9uRWxl
bWVudEJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rpb25FCitfX1pONHdlYm04
Q2FsbGJhY2sxNE9uU2VnbWVudEJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rp
b25FCiBfX1pONHdlYm04Q2FsbGJhY2sxNU9uQmxvY2tHcm91cEVuZEVSS05TXzE1RWxlbWVudE1l
dGFkYXRhRVJLTlNfMTBCbG9ja0dyb3VwRQogX19aTjR3ZWJtOENhbGxiYWNrMTZPblNpbXBsZUJs
b2NrRW5kRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMVNpbXBsZUJsb2NrRQogX19aTjR3
ZWJtOENhbGxiYWNrMTZPblVua25vd25FbGVtZW50RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5T
XzZSZWFkZXJFUHkKK19fWk40d2VibThDYWxsYmFjazE3T25CbG9ja0dyb3VwQmVnaW5FUktOU18x
NUVsZW1lbnRNZXRhZGF0YUVQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxsYmFjazE4T25TaW1w
bGVCbG9ja0JlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMVNpbXBsZUJsb2NrRVBO
U182QWN0aW9uRQorX19aTjR3ZWJtOENhbGxiYWNrNFNraXBFUE5TXzZSZWFkZXJFUHkKIF9fWk40
d2VibThDYWxsYmFjazVPblRhZ0VSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfM1RhZ0UKIF9f
Wk40d2VibThDYWxsYmFjazZPbkVibWxFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzRFYm1s
RQogX19aTjR3ZWJtOENhbGxiYWNrNk9uSW5mb0VSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNf
NEluZm9FCkBAIC0zMTcsMyArMzI0LDQgQEAgX19aTjR3ZWJtMTBXZWJtUGFyc2VyQzJFdgogX19a
TjR3ZWJtMTBXZWJtUGFyc2VyRDFFdgogX19aTjR3ZWJtMTBXZWJtUGFyc2VyRDJFdgogX19aTjR3
ZWJtNHN3YXBFUk5TXzEwV2VibVBhcnNlckVTMV8KK19fWk4xMHZwOV9wYXJzZXIxNVZwOUhlYWRl
clBhcnNlcjIzUGFyc2VVbmNvbXByZXNzZWRIZWFkZXJFUEtobQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMu
ZXhwCmluZGV4IDhkODViNWI4YjM3NTRhZGRlZmRlN2MyNGYyZjIwYTQ2NTgzNjZhY2QuLjU1OGY0
YjJjMTgyMTcxZWZjNDE1Yzc1NzdmMWQzOTYwMTgwMzJhYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1h
Yy5leHAKQEAgLTI3OCwxMyArMjc4LDIwIEBAIF9fWlRWTjR3ZWJtMTJCdWZmZXJSZWFkZXJFCiBf
X1pUVk40d2VibThDYWxsYmFja0UKIF9fWk40d2VibThDYWxsYmFjazEwT25CbG9ja0VuZEVSS05T
XzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2NrRQogX19aTjR3ZWJtOENhbGxiYWNrMTBPbkN1
ZVBvaW50RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU184Q3VlUG9pbnRFCitfX1pONHdlYm04
Q2FsbGJhY2sxMk9uQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfNUJsb2Nr
RVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPbkNsdXN0ZXJFbmRFUktOU18xNUVs
ZW1lbnRNZXRhZGF0YUVSS05TXzdDbHVzdGVyRQogX19aTjR3ZWJtOENhbGxiYWNrMTJPblNlZ21l
bnRFbmRFUktOU18xNUVsZW1lbnRNZXRhZGF0YUUKIF9fWk40d2VibThDYWxsYmFjazEyT25UcmFj
a0VudHJ5RVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU18xMFRyYWNrRW50cnlFCitfX1pONHdl
Ym04Q2FsbGJhY2sxNE9uQ2x1c3RlckJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUktOU183
Q2x1c3RlckVQTlNfNkFjdGlvbkUKIF9fWk40d2VibThDYWxsYmFjazE0T25FZGl0aW9uRW50cnlF
UktOU18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEyRWRpdGlvbkVudHJ5RQorX19aTjR3ZWJtOENh
bGxiYWNrMTRPbkVsZW1lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVBOU182QWN0aW9u
RQorX19aTjR3ZWJtOENhbGxiYWNrMTRPblNlZ21lbnRCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFk
YXRhRVBOU182QWN0aW9uRQogX19aTjR3ZWJtOENhbGxiYWNrMTVPbkJsb2NrR3JvdXBFbmRFUktO
U18xNUVsZW1lbnRNZXRhZGF0YUVSS05TXzEwQmxvY2tHcm91cEUKIF9fWk40d2VibThDYWxsYmFj
azE2T25TaW1wbGVCbG9ja0VuZEVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTFTaW1wbGVC
bG9ja0UKIF9fWk40d2VibThDYWxsYmFjazE2T25Vbmtub3duRWxlbWVudEVSS05TXzE1RWxlbWVu
dE1ldGFkYXRhRVBOU182UmVhZGVyRVB5CitfX1pONHdlYm04Q2FsbGJhY2sxN09uQmxvY2tHcm91
cEJlZ2luRVJLTlNfMTVFbGVtZW50TWV0YWRhdGFFUE5TXzZBY3Rpb25FCitfX1pONHdlYm04Q2Fs
bGJhY2sxOE9uU2ltcGxlQmxvY2tCZWdpbkVSS05TXzE1RWxlbWVudE1ldGFkYXRhRVJLTlNfMTFT
aW1wbGVCbG9ja0VQTlNfNkFjdGlvbkUKK19fWk40d2VibThDYWxsYmFjazRTa2lwRVBOU182UmVh
ZGVyRVB5CiBfX1pONHdlYm04Q2FsbGJhY2s1T25UYWdFUktOU18xNUVsZW1lbnRNZXRhZGF0YUVS
S05TXzNUYWdFCiBfX1pONHdlYm04Q2FsbGJhY2s2T25FYm1sRVJLTlNfMTVFbGVtZW50TWV0YWRh
dGFFUktOU180RWJtbEUKIF9fWk40d2VibThDYWxsYmFjazZPbkluZm9FUktOU18xNUVsZW1lbnRN
ZXRhZGF0YUVSS05TXzRJbmZvRQpAQCAtMzE1LDMgKzMyMiw0IEBAIF9fWk40d2VibTEwV2VibVBh
cnNlckMyRXYKIF9fWk40d2VibTEwV2VibVBhcnNlckQxRXYKIF9fWk40d2VibTEwV2VibVBhcnNl
ckQyRXYKIF9fWk40d2VibTRzd2FwRVJOU18xMFdlYm1QYXJzZXJFUzFfCitfX1pOMTB2cDlfcGFy
c2VyMTVWcDlIZWFkZXJQYXJzZXIyM1BhcnNlVW5jb21wcmVzc2VkSGVhZGVyRVBLaG0KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2xpYndlYm0vY29tbW9uL3ZwOV9oZWFkZXJfcGFyc2Vy
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2xpYndl
Ym0vY29tbW9uL3ZwOV9oZWFkZXJfcGFyc2VyLmgKaW5kZXggMDZiZDY1NjllNmY4MDhmNmZhODRm
YTdmNmYxZDRhMGMwN2RmZmYxYS4uNjlkNzEyNjZiYTllZDgwM2FkNWY4MmY0NzhlNmEyMmM5NDJh
NDgxMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9saWJ3ZWJtL2NvbW1vbi92cDlfaGVhZGVyX3BhcnNlci5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvbGlid2VibS9jb21tb24vdnA5
X2hlYWRlcl9wYXJzZXIuaApAQCAtNjksNiArNjksMTEgQEAgY2xhc3MgVnA5SGVhZGVyUGFyc2Vy
IHsKICAgaW50IGNvbHVtbl90aWxlcygpIGNvbnN0IHsgcmV0dXJuIGNvbHVtbl90aWxlc187IH0K
ICAgaW50IGZyYW1lX3BhcmFsbGVsX21vZGUoKSBjb25zdCB7IHJldHVybiBmcmFtZV9wYXJhbGxl
bF9tb2RlXzsgfQogCisgIC8vIFdlYktpdCBBZGRpdGlvbnM6CisgIGludCBjb2xvcl9yYW5nZSgp
IGNvbnN0IHsgcmV0dXJuIGNvbG9yX3JhbmdlXzsgfQorICBpbnQgc3Vic2FtcGxpbmdfeCgpIGNv
bnN0IHsgcmV0dXJuIHN1YnNhbXBsaW5nX3hfOyB9CisgIGludCBzdWJzYW1wbGluZ195KCkgY29u
c3QgeyByZXR1cm4gc3Vic2FtcGxpbmdfeV87IH0KKwogIHByaXZhdGU6CiAgIC8vIFNldCB0aGUg
Y29tcHJlc3NlZCBWUDkgZnJhbWUuCiAgIGJvb2wgU2V0RnJhbWUoY29uc3QgdWludDhfdCogZnJh
bWUsIHNpemVfdCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRk
YTczYTFiZmI0MTAzYTFmN2FhNDE0MzQ5ZmUwYWZhZWJjMGM4YWEuLjdhODk2ZGU3NGI2ZDgxNGRh
NWFhMzFjODAxNjQwODhiZmFkYTQzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTM4NTMsMTYgKzM4NTMsNiBAQAogCQk1Q0ZENTM5MjFFNEJEM0EzMDA0ODI5MDggLyogcm93
X25lb242NC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDRkQ1MzhBMUU0QkQzQTMwMDQ4MjkwOCAvKiByb3dfbmVvbjY0LmNjICovOyB9OwogCQk1Q0ZE
NTM5MzFFNEJEM0EzMDA0ODI5MDggLyogc2NhbGVfbmVvbi5jYyBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRkQ1MzhCMUU0QkQzQTMwMDQ4MjkwOCAvKiBz
Y2FsZV9uZW9uLmNjICovOyB9OwogCQk1Q0ZENTM5NDFFNEJEM0EzMDA0ODI5MDggLyogc2NhbGVf
bmVvbjY0LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUNGRDUzOEMxRTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb242NC5jYyAqLzsgfTsKLQkJQ0RF
QkI0QUMyNEMwMTk5RDAwQURCRDQ0IC8qIHdlYm1fcGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwODI0QzAxOTFBMDBBREJENDQgLyog
d2VibV9wYXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07
IH07Ci0JCUNERUJCNEFEMjRDMDE5OUQwMEFEQkQ0NCAvKiBidWZmZXJfcmVhZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwRDI0QzAxOTFB
MDBBREJENDQgLyogYnVmZmVyX3JlYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFB1YmxpYywgKTsgfTsgfTsKLQkJQ0RFQkI0QUUyNEMwMTk5RDAwQURCRDQ0IC8qIGlkLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwQTI0QzAx
OTFBMDBBREJENDQgLyogaWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMs
ICk7IH07IH07Ci0JCUNERUJCNEFGMjRDMDE5OUQwMEFEQkQ0NCAvKiBpc3RyZWFtX3JlYWRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0MDky
NEMwMTkxQTAwQURCRDQ0IC8qIGlzdHJlYW1fcmVhZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCMDI0QzAxOTlEMDBBREJENDQgLyog
ZG9tX3R5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREVCQjQwQjI0QzAxOTFBMDBBREJENDQgLyogZG9tX3R5cGVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCMTI0QzAxOTlEMDBBREJE
NDQgLyogZWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RFQkI0MEMyNEMwMTkxQTAwQURCRDQ0IC8qIGVsZW1lbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07Ci0JCUNERUJCNEIyMjRDMDE5OUQwMEFE
QkQ0NCAvKiBzdGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENERUJCNDA2MjRDMDE5MUEwMEFEQkQ0NCAvKiBzdGF0dXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07Ci0JCUNERUJCNEIzMjRDMDE5OUQwMEFE
QkQ0NCAvKiByZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENERUJCNDA1MjRDMDE5MUEwMEFEQkQ0NCAvKiByZWFkZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07Ci0JCUNERUJCNEI0MjRDMDE5OUQwMEFE
QkQ0NCAvKiBmaWxlX3JlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RFQkI0MDcyNEMwMTkxQTAwQURCRDQ0IC8qIGZpbGVfcmVhZGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlDREVCQjRCNTI0
QzAxOTlEMDBBREJENDQgLyogY2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDBFMjRDMDE5MUEwMEFEQkQ0NCAvKiBjYWxsYmFjay5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJQ0RFQkI0
QjYyNEMwMTlDNDAwQURCRDQ0IC8qIHVua25vd25fcGFyc2VyLmNjIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0NjQyNEMwMTkxQTAwQURCRDQ0IC8q
IHVua25vd25fcGFyc2VyLmNjICovOyB9OwogCQlDREVCQjRCNzI0QzAxOUM0MDBBREJENDQgLyog
bWFzdGVyX3BhcnNlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENERUJCNDZGMjRDMDE5MUEwMEFEQkQ0NCAvKiBtYXN0ZXJfcGFyc2VyLmNjICovOyB9
OwogCQlDREVCQjRCODI0QzAxOUM0MDBBREJENDQgLyogYmxvY2tfcGFyc2VyLmNjIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0NzYyNEMwMTkxQTAw
QURCRDQ0IC8qIGJsb2NrX3BhcnNlci5jYyAqLzsgfTsKQEAgLTM4ODYsNiArMzg3NiwxOCBAQAog
CQlDREVCQjRDQTI0QzAxQTBEMDBBREJENDQgLyogbGlid2VibS5hIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkIxMTkyNEMwMTg3NDAwQURCRDQ0
IC8qIGxpYndlYm0uYSAqLzsgfTsKIAkJQ0RFQkI0RDMyNEMwQzhDQTAwQURCRDQ0IC8qIGJpdF91
dGlscy5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
RUJCNDUxMjRDMDE5MUEwMEFEQkQ0NCAvKiBiaXRfdXRpbHMuY2MgKi87IH07CiAJCUNERUJCNEQ0
MjRDMENCMTAwMEFEQkQ0NCAvKiBjYWxsYmFjay5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDhFMjRDMDE5MUEwMEFEQkQ0NCAvKiBjYWxsYmFj
ay5jYyAqLzsgfTsKKwkJQ0RGRDJGQTgyNEM0QjM0RTAwNDhEQUMzIC8qIHZwOV9oZWFkZXJfcGFy
c2VyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RG
RDJGOUEyNEM0QjJGOTAwNDhEQUMzIC8qIHZwOV9oZWFkZXJfcGFyc2VyLmNjICovOyB9OworCQlD
REZEMkZDNTI0QzREQUY3MDA0OERBQzMgLyogYnVmZmVyX3JlYWRlci5oIGluIENvcHkgd2VibSBo
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDBEMjRDMDE5
MUEwMEFEQkQ0NCAvKiBidWZmZXJfcmVhZGVyLmggKi87IH07CisJCUNERkQyRkM2MjRDNERBRjcw
MDQ4REFDMyAvKiBjYWxsYmFjay5oIGluIENvcHkgd2VibSBoZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDBFMjRDMDE5MUEwMEFEQkQ0NCAvKiBjYWxsYmFj
ay5oICovOyB9OworCQlDREZEMkZDNzI0QzREQUY3MDA0OERBQzMgLyogZG9tX3R5cGVzLmggaW4g
Q29weSB3ZWJtIGhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RF
QkI0MEIyNEMwMTkxQTAwQURCRDQ0IC8qIGRvbV90eXBlcy5oICovOyB9OworCQlDREZEMkZDODI0
QzREQUY3MDA0OERBQzMgLyogZWxlbWVudC5oIGluIENvcHkgd2VibSBoZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDBDMjRDMDE5MUEwMEFEQkQ0NCAvKiBl
bGVtZW50LmggKi87IH07CisJCUNERkQyRkM5MjRDNERBRjcwMDQ4REFDMyAvKiBmaWxlX3JlYWRl
ci5oIGluIENvcHkgd2VibSBoZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENERUJCNDA3MjRDMDE5MUEwMEFEQkQ0NCAvKiBmaWxlX3JlYWRlci5oICovOyB9OworCQlD
REZEMkZDQTI0QzREQUY3MDA0OERBQzMgLyogaWQuaCBpbiBDb3B5IHdlYm0gaGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwQTI0QzAxOTFBMDBBREJENDQg
LyogaWQuaCAqLzsgfTsKKwkJQ0RGRDJGQ0IyNEM0REFGNzAwNDhEQUMzIC8qIGlzdHJlYW1fcmVh
ZGVyLmggaW4gQ29weSB3ZWJtIGhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RFQkI0MDkyNEMwMTkxQTAwQURCRDQ0IC8qIGlzdHJlYW1fcmVhZGVyLmggKi87IH07
CisJCUNERkQyRkNDMjRDNERBRjcwMDQ4REFDMyAvKiByZWFkZXIuaCBpbiBDb3B5IHdlYm0gaGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQwNTI0QzAxOTFB
MDBBREJENDQgLyogcmVhZGVyLmggKi87IH07CisJCUNERkQyRkNEMjRDNERBRjcwMDQ4REFDMyAv
KiBzdGF0dXMuaCBpbiBDb3B5IHdlYm0gaGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREVCQjQwNjI0QzAxOTFBMDBBREJENDQgLyogc3RhdHVzLmggKi87IH07CisJ
CUNERkQyRkNFMjRDNERBRjcwMDQ4REFDMyAvKiB3ZWJtX3BhcnNlci5oIGluIENvcHkgd2VibSBo
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDA4MjRDMDE5
MUEwMEFEQkQ0NCAvKiB3ZWJtX3BhcnNlci5oICovOyB9OworCQlDREZEMkZEMDI0QzREQjJGMDA0
OERBQzMgLyogdnA5X2hlYWRlcl9wYXJzZXIuaCBpbiBDb3B5IGNvbW1vbiBoZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERkQyRjk2MjRDNEIyRjkwMDQ4REFDMyAv
KiB2cDlfaGVhZGVyX3BhcnNlci5oICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWEJ1aWxkUnVsZSBzZWN0aW9uICovCkBAIC00MTgwLDYgKzQxODIs
MzcgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsK
IAkJfTsKKwkJQ0RGRDJGQzQyNEM0RDlEMTAwNDhEQUMzIC8qIENvcHkgd2VibSBoZWFkZXJzICov
ID0geworCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7CisJCQlkc3RQYXRoID0gdXNyL2xvY2FsL2luY2x1ZGUvd2VibTsKKwkJ
CWRzdFN1YmZvbGRlclNwZWMgPSAxNjsKKwkJCWZpbGVzID0gKAorCQkJCUNERkQyRkM1MjRDNERB
RjcwMDQ4REFDMyAvKiBidWZmZXJfcmVhZGVyLmggaW4gQ29weSB3ZWJtIGhlYWRlcnMgKi8sCisJ
CQkJQ0RGRDJGQzYyNEM0REFGNzAwNDhEQUMzIC8qIGNhbGxiYWNrLmggaW4gQ29weSB3ZWJtIGhl
YWRlcnMgKi8sCisJCQkJQ0RGRDJGQzcyNEM0REFGNzAwNDhEQUMzIC8qIGRvbV90eXBlcy5oIGlu
IENvcHkgd2VibSBoZWFkZXJzICovLAorCQkJCUNERkQyRkM4MjRDNERBRjcwMDQ4REFDMyAvKiBl
bGVtZW50LmggaW4gQ29weSB3ZWJtIGhlYWRlcnMgKi8sCisJCQkJQ0RGRDJGQzkyNEM0REFGNzAw
NDhEQUMzIC8qIGZpbGVfcmVhZGVyLmggaW4gQ29weSB3ZWJtIGhlYWRlcnMgKi8sCisJCQkJQ0RG
RDJGQ0EyNEM0REFGNzAwNDhEQUMzIC8qIGlkLmggaW4gQ29weSB3ZWJtIGhlYWRlcnMgKi8sCisJ
CQkJQ0RGRDJGQ0IyNEM0REFGNzAwNDhEQUMzIC8qIGlzdHJlYW1fcmVhZGVyLmggaW4gQ29weSB3
ZWJtIGhlYWRlcnMgKi8sCisJCQkJQ0RGRDJGQ0MyNEM0REFGNzAwNDhEQUMzIC8qIHJlYWRlci5o
IGluIENvcHkgd2VibSBoZWFkZXJzICovLAorCQkJCUNERkQyRkNEMjRDNERBRjcwMDQ4REFDMyAv
KiBzdGF0dXMuaCBpbiBDb3B5IHdlYm0gaGVhZGVycyAqLywKKwkJCQlDREZEMkZDRTI0QzREQUY3
MDA0OERBQzMgLyogd2VibV9wYXJzZXIuaCBpbiBDb3B5IHdlYm0gaGVhZGVycyAqLywKKwkJCSk7
CisJCQluYW1lID0gIkNvcHkgd2VibSBoZWFkZXJzIjsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworCQlDREZEMkZDRjI0QzREQjBDMDA0OERBQzMgLyog
Q29weSBjb21tb24gaGVhZGVycyAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhh
c2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IHVzci9s
b2NhbC9pbmNsdWRlL2NvbW1vbjsKKwkJCWRzdFN1YmZvbGRlclNwZWMgPSAxNjsKKwkJCWZpbGVz
ID0gKAorCQkJCUNERkQyRkQwMjRDNERCMkYwMDQ4REFDMyAvKiB2cDlfaGVhZGVyX3BhcnNlci5o
IGluIENvcHkgY29tbW9uIGhlYWRlcnMgKi8sCisJCQkpOworCQkJbmFtZSA9ICJDb3B5IGNvbW1v
biBoZWFkZXJzIjsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwor
CQl9OwogLyogRW5kIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdp
biBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KQEAgLTgzNjYsNiArODM5OSw4IEBACiAJCUNE
RUJCNDlCMjRDMDE5MUEwMEFEQkQ0NCAvKiBjb250ZW50X2VuY19hZXNfc2V0dGluZ3NfcGFyc2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IGNvbnRlbnRfZW5jX2Flc19zZXR0aW5nc19wYXJzZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQkI0OUMyNEMwMTkxQTAwQURCRDQ0IC8qIHZp
ZGVvX3BhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSB2aWRlb19wYXJzZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQkI0OUQyNEMwMTkxQTAwQURCRDQ0IC8qIG1hc3Rlcl9wYXJz
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gbWFzdGVyX3BhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDREZEMkY5NjI0QzRCMkY5MDA0OERBQzMgLyogdnA5X2hlYWRlcl9wYXJzZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gdnA5X2hlYWRlcl9wYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0RGRDJGOUEyNEM0QjJGOTAwNDhEQUMzIC8qIHZwOV9oZWFkZXJfcGFyc2Vy
LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdnA5X2hlYWRlcl9wYXJzZXIuY2M7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZCMzlEMEQxMTIwMEYwRTMwMDA4OEU2OSAvKiBsaWJ3ZWJydGMu
ZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJj
b21waWxlZC5tYWNoLW8uZHlsaWIiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJ3ZWJy
dGMuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAvKiBFbmQgUEJY
RmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKQEAgLTE1MjQ3LDYgKzE1MjgyLDcgQEAKIAkJQ0RF
QkIxMUYyNEMwMTkxODAwQURCRDQ0IC8qIGxpYndlYm0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNERkQyRjkyMjRDNEIyRjkwMDQ4REFDMyAvKiBjb21t
b24gKi8sCiAJCQkJQ0RFQkIxOTIyNEMwMTkxODAwQURCRDQ0IC8qIHdlYm1fcGFyc2VyICovLAog
CQkJKTsKIAkJCXBhdGggPSBsaWJ3ZWJtOwpAQCAtMTUzNzIsNiArMTU0MDgsMTUgQEAKIAkJCXBh
dGggPSBzcmM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlDREZEMkY5MjI0
QzRCMkY5MDA0OERBQzMgLyogY29tbW9uICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQlj
aGlsZHJlbiA9ICgKKwkJCQlDREZEMkY5QTI0QzRCMkY5MDA0OERBQzMgLyogdnA5X2hlYWRlcl9w
YXJzZXIuY2MgKi8sCisJCQkJQ0RGRDJGOTYyNEM0QjJGOTAwNDhEQUMzIC8qIHZwOV9oZWFkZXJf
cGFyc2VyLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGNvbW1vbjsKKwkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CisJCX07CiAJCUZCMzlEMDZFMTIwMEVEOTIwMDA4OEU2OSA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xNTc0MSwxNiArMTU3ODYsNiBAQAogCQkJ
aXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwogCQkJZmlsZXMgPSAoCi0JCQkJQ0RFQkI0QUQyNEMwMTk5RDAwQURCRDQ0IC8qIGJ1ZmZl
cl9yZWFkZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUNERUJCNEI1MjRDMDE5OUQwMEFEQkQ0NCAv
KiBjYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0RFQkI0QjAyNEMwMTk5RDAwQURCRDQ0
IC8qIGRvbV90eXBlcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0RFQkI0QjEyNEMwMTk5RDAwQURC
RDQ0IC8qIGVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUNERUJCNEI0MjRDMDE5OUQwMEFE
QkQ0NCAvKiBmaWxlX3JlYWRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0RFQkI0QUUyNEMwMTk5
RDAwQURCRDQ0IC8qIGlkLmggaW4gSGVhZGVycyAqLywKLQkJCQlDREVCQjRBRjI0QzAxOTlEMDBB
REJENDQgLyogaXN0cmVhbV9yZWFkZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUNERUJCNEIzMjRD
MDE5OUQwMEFEQkQ0NCAvKiByZWFkZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUNERUJCNEIyMjRD
MDE5OUQwMEFEQkQ0NCAvKiBzdGF0dXMuaCBpbiBIZWFkZXJzICovLAotCQkJCUNERUJCNEFDMjRD
MDE5OUQwMEFEQkQ0NCAvKiB3ZWJtX3BhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNzM2Niw2
ICsxNzQwMSw4IEBACiAJCQkJQ0RFQkIxMTUyNEMwMTg3NDAwQURCRDQ0IC8qIEhlYWRlcnMgKi8s
CiAJCQkJQ0RFQkIxMTYyNEMwMTg3NDAwQURCRDQ0IC8qIFNvdXJjZXMgKi8sCiAJCQkJQ0RFQkIx
MTcyNEMwMTg3NDAwQURCRDQ0IC8qIEZyYW1ld29ya3MgKi8sCisJCQkJQ0RGRDJGQzQyNEM0RDlE
MTAwNDhEQUMzIC8qIENvcHkgd2VibSBoZWFkZXJzICovLAorCQkJCUNERkQyRkNGMjRDNERCMEMw
MDQ4REFDMyAvKiBDb3B5IGNvbW1vbiBoZWFkZXJzICovLAogCQkJKTsKIAkJCWJ1aWxkUnVsZXMg
PSAoCiAJCQkpOwpAQCAtMTg1MzQsNiArMTg1NzEsNyBAQAogCQkJCUNERUJCNEMzMjRDMDE5QzQw
MEFEQkQ0NCAvKiB2YXJfaW50X3BhcnNlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCUNERUJCNEI5
MjRDMDE5QzQwMEFEQkQ0NCAvKiB2aXJ0dWFsX2Jsb2NrX3BhcnNlci5jYyBpbiBTb3VyY2VzICov
LAogCQkJCUNERUJCNEM4MjRDMDE5QzQwMEFEQkQ0NCAvKiB2b2lkX3BhcnNlci5jYyBpbiBTb3Vy
Y2VzICovLAorCQkJCUNERkQyRkE4MjRDNEIzNEUwMDQ4REFDMyAvKiB2cDlfaGVhZGVyX3BhcnNl
ci5jYyBpbiBTb3VyY2VzICovLAogCQkJCUNERUJCNEJBMjRDMDE5QzQwMEFEQkQ0NCAvKiB3ZWJt
X3BhcnNlci5jYyBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggY2E2MzBkZDk3
NjBjYjBmZGY4Yzg4MzY0OWU0YzU1OTg4NzFjMjQ0MC4uZjczNzE2ODVkM2FmN2I5MjNlYzFmZmFh
ZjE4ODZhZWZmNTc2Y2QyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yOTMsNiArMjkz
LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIEBuby0KIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gQG5vLXVu
aWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy5tbSBAbm8tdW5pZnkKK3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMubW0gQG5vLXVuaWZ5
CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZUFW
Rk9iakMuY3BwIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gQG5vLXVuaWZ5CkBAIC0zMzUs
NiArMzM2LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElS
ZWdpc3RyeS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2Vi
TS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2EubW0KIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0Zsb2F0UmVjdENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTM1MCw2ICszNTIsOCBAQCBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9JT1N1cmZhY2UubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBv
b2xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSW50UmVjdENvY29hLm1tCiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2Eu
Y3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCitwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbQpAQCAtMzU4LDYgKzM2Miw3IEBAIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdQ
VUxheWVyLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0u
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCiBwbGF0
Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2OGZmNDE5OGIwNDZlOWJhMTYxY2YwMmIw
MzI2ZmUwN2YxYzRkYzE2Li42MWFiYTgwYjk4ODBkZTMwYzM2NjgzODM3MThkNTcxZTFlN2Q3NWEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC00MjcwLDYgKzQyNzAsNyBAQAogCQlDREY2NUNDQTE0NUI0NDg4MDBDNEM3QUEgLyog
TWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREY2NUNDOTE0NUI0M0E3MDBDNEM3QUEgLyogTWVkaWFDb250cm9s
bGVySW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0RGNzQ4M0YxOEZFQkNFQzAwMDZFQ0MwIC8qIEdyaWRQb3NpdGlvbnNSZXNvbHZl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNzQ4
M0QxOEZFQkNFQzAwMDZFQ0MwIC8qIEdyaWRQb3NpdGlvbnNSZXNvbHZlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNERjc1NkEzMjE1QzI5RTkw
MEVGQ0I1MCAvKiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNzU2QTEyMTVDMjlFOTAwRUZDQjUwIC8q
IEpTTWVkaWFLZXlFbmNyeXB0aW9uU2NoZW1lLmggKi87IH07CisJCUNERjk5NEZEMjRDMTVGRTMw
MDJFQTA2MiAvKiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGOTk0RkIyNEMxMkE2QTAwMkVBMDYyIC8q
IFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gKi87IH07CiAJCUNERkMzNjA2MThDQTYxQzIw
MDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERkMzNjA0MThDQTYxQzIwMDI2RTU2RiAvKiBSZW1v
dGVDb21tYW5kTGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDRTA1N0ZBNjEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRTA1N0ZBNDEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0UwOEMz
RDIxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDhDM0QwMTUyQjU5OUEw
MDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoKTsgfTsgfTsKQEAgLTE0MTc0LDYgKzE0MTc1LDggQEAKIAkJQ0Q4QzZDMjky
MkZEREE5MTAwQTcyMEFCIC8qIEpTUmVtb3RlUGxheWJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNS
ZW1vdGVQbGF5YmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDhEMzA2RDIz
QUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRE1Mb2dnaW5n
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOEQzMDZFMjNBRDRGQTgwMDZDMzk3
NSAvKiBDRE1Mb2dnaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENETUxvZ2dpbmcuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDhGNjY3MDI0QzBGMjA4MDAwQzQyMUMgLyog
U291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q4RjY2NzIy
NEMwRjIwODAwMEM0MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRDkyRjUwRjIyNjBGRkVFMDBGODdCQjMgLyogRG9jdW1lbnRGdWxsc2NyZWVuLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBEb2N1bWVudEZ1bGxzY3JlZW4uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
RDkyRjUxMDIyNjBGRkVFMDBGODdCQjMgLyogRG9jdW1lbnRGdWxsc2NyZWVuLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERvY3VtZW50RnVsbHNjcmVlbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRDkyRjUxNjIyNjEwMzgyMDBGODdCQjMgLyogRnVsbHNjcmVlbk1hbmFnZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRnVsbHNjcmVlbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE0MzU0LDYgKzE0MzU3LDggQEAKIAkJQ0RFOEI1RUYxQTY5Nzc4QjAwQjRCNjZBIC8qIExl
Z2FjeUNETVNlc3Npb25DbGVhcktleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBMZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0RFQTdDODIxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyRnVsbFNjcmVlbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDREVBN0M4MzEyNzYyMzA0MDBCODQ2REQgLyogUmVuZGVyRnVs
bFNjcmVlbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJG
dWxsU2NyZWVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFQjNENzIyNEM0
MUE2RTAwMUZCRUVGIC8qIFNvdXJjZUJ1ZmZlclBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTb3VyY2VCdWZmZXJQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REVCM0Q3MzI0QzQxQTZFMDAxRkJFRUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNvdXJjZUJ1ZmZlclBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDREVDQTg5ODFFREY0NDdEMDBEQ0IwOEIgLyogQVZBc3NldFRyYWNrVXRpbGl0aWVzLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gQVZBc3NldFRyYWNrVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDREVDQTg5OTFFREY0NDdEMDBEQ0IwOEIgLyogQVZBc3NldFRy
YWNrVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFWQXNzZXRUcmFja1V0aWxpdGllcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVFMzkzNjE3OTc0MjU5MDAxRDc1ODAgLyog
UHVibGljVVJMTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQdWJsaWNVUkxNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0
MzkyLDYgKzE0Mzk3LDEyIEBACiAJCUNERjc1NjlFMjE1QzI4NUUwMEVGQ0I1MCAvKiBNZWRpYUtl
eUVuY3J5cHRpb25TY2hlbWUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERjc1NkEwMjE1QzI5RTgwMEVGQ0I1MCAv
KiBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU01lZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNERjc1NkExMjE1QzI5RTkwMEVGQ0I1MCAvKiBKU01lZGlhS2V5
RW5jcnlwdGlvblNjaGVtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01l
ZGlhS2V5RW5jcnlwdGlvblNjaGVtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REY5OTRGQTI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNERjk5NEZCMjRDMTJBNkEwMDJFQTA2MiAvKiBTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RGOTk0RkUyNEMyODEz
NjAwMkVBMDYyIC8qIFZpZGVvVHJhY2tQcml2YXRlV2ViTS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRl
b1RyYWNrUHJpdmF0ZVdlYk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RGOTk0
RkYyNEMyODEzNjAwMkVBMDYyIC8qIFZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDREY5OTUwMDI0QzI4MTQ5MDAyRUEwNjIgLyogQXVkaW9UcmFja1ByaXZhdGVX
ZWJNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRlV2ViTS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREY5OTUwMTI0QzI4MTQ5MDAyRUEwNjIgLyogQXVkaW9UcmFj
a1ByaXZhdGVXZWJNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRlV2Vi
TS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERkMzNjAxMThDQTYxNjMwMDI2
RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNERkMzNjAyMThDQTYxNjMwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlz
dGVuZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW1v
dGVDb21tYW5kTGlzdGVuZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
RkMzNjAzMThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1ODgwLDYgKzI1ODkxLDggQEAKIAkJ
QjUzMjBENjgxMjJBMjRFOTAwMkQxNDQwIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDREY5OTUwMTI0QzI4MTQ5MDAyRUEwNjIgLyogQXVk
aW9UcmFja1ByaXZhdGVXZWJNLmNwcCAqLywKKwkJCQlDREY5OTUwMDI0QzI4MTQ5MDAyRUEwNjIg
LyogQXVkaW9UcmFja1ByaXZhdGVXZWJNLmggKi8sCiAJCQkJRjQ4RDJBQTMyMTU5NzQwRDAwQzY3
NTJCIC8qIENvbG9yQ29jb2EuaCAqLywKIAkJCQlGNDhEMkFBNDIxNTk3NDBEMDBDNjc1MkIgLyog
Q29sb3JDb2NvYS5tbSAqLywKIAkJCQlCMjc1MzU0QzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRS
ZWN0Q29jb2EubW0gKi8sCkBAIC0yNTkwMSwxMCArMjU5MTQsMTYgQEAKIAkJCQlBRDlGRjZFMDE5
MDgzOTFEMDAzQjYxRTAgLyogSU9TdXJmYWNlUG9vbENvY29hLm1tICovLAogCQkJCUNEQzQ4QUM4
MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2Eu
Y3BwICovLAogCQkJCUNEQzQ4QUM3MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZp
Z3VyYXRpb25GYWN0b3J5Q29jb2EuaCAqLywKKwkJCQlDREVCM0Q3MjI0QzQxQTZFMDAxRkJFRUYg
LyogU291cmNlQnVmZmVyUGFyc2VyLmNwcCAqLywKKwkJCQlDREVCM0Q3MzI0QzQxQTZFMDAxRkJF
RUYgLyogU291cmNlQnVmZmVyUGFyc2VyLmggKi8sCisJCQkJQ0Q4RjY2NzAyNEMwRjIwODAwMEM0
MjFDIC8qIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwICovLAorCQkJCUNEOEY2NjcyMjRDMEYy
MDgwMDBDNDIxQyAvKiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmggKi8sCiAJCQkJRTRFOEI0RUQy
MTZCNzlGNDAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcCAqLywKIAkJ
CQlFNEU4QjRFQTIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQu
aCAqLywKIAkJCQk1MjY3MjRGMjFDQjJGREY2MDA3NTk3NEQgLyogVGV4dFRyYWNrUmVwcmVzZW50
YXRpb25Db2NvYS5oICovLAogCQkJCTUyNjcyNEYxMUNCMkZERjYwMDc1OTc0RCAvKiBUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbkNvY29hLm1tICovLAorCQkJCUNERjk5NEZGMjRDMjgxMzYwMDJFQTA2
MiAvKiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwICovLAorCQkJCUNERjk5NEZFMjRDMjgxMzYw
MDJFQTA2MiAvKiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaCAqLywKIAkJCQlDRDZGRTVCNzI0QkNF
NjQ1MDA5RkNEQTQgLyogVlA5VXRpbGl0aWVzQ29jb2EuaCAqLywKIAkJCQlDRDZGRTVCODI0QkNF
NjQ1MDA5RkNEQTQgLyogVlA5VXRpbGl0aWVzQ29jb2EubW0gKi8sCiAJCQkJMkQzRUY0NDQxOTE3
OTE1QzAwMDM0MTg0IC8qIFdlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5oICovLApA
QCAtMjc0MDIsNiArMjc0MjEsOCBAQAogCQkJCUNEQzhCNUE1MTgwNDc0RjcwMDE2RTY4NSAvKiBN
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmggKi8sCiAJCQkJQ0RDOEI1QTQxODA0NzRGNzAwMTZF
Njg1IC8qIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gKi8sCiAJCQkJN0EyOUY1NzExOEM2
OTUxNDAwNEQwRjgxIC8qIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCAqLywKKwkJCQlD
REY5OTRGQTI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oICov
LAorCQkJCUNERjk5NEZCMjRDMTJBNkEwMDJFQTA2MiAvKiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDLm1tICovLAogCQkJCUNEQzhCNUE5MTgwNDdGRjEwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQy5oICovLAogCQkJCUNEQzhCNUE4MTgwNDdGRjEwMDE2RTY4NSAvKiBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSAqLywKIAkJCQk1MkQ1QTE4RTFDNTQ1OTAzMDBERTM0
QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmggKi8sCkBAIC0zNDYxOCw2ICszNDYzOSw3IEBA
CiAJCQkJMjZBQTBGOUUxOEQyQTE4QjAwNDE5MzgxIC8qIFNlbGVjdG9yUHNldWRvRWxlbWVudFR5
cGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NENThERkQxRjk1NjVBODAwMTEyNzkxIC8q
IFNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxMEE4MUY5MDIyQTQwMDUxMDJD
RSAvKiBTb2Z0TGlua0xpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RGOTk0RkQyNEMx
NUZFMzAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gaW4gU291cmNlcyAq
LywKIAkJCQlDREM4QjVBQTE4MDQ3RkYxMDAxNkU2ODUgLyogU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBODMzQzdDQTBBMkNGMDZCMDBENTc2NjQgLyog
U1ZHTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzE2OTJERDIyM0QyM0FCRDAwNkU4OEY3
IC8qIFN5c3RlbUJhdHRlcnkubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggMTFjMGE3ZjVkOGY5YjRiNDJhODcxYjMz
MTFlYWM0NDU5NzUzNjQyNy4uZDAxNzg0YzdhYTRiNzZkNmMzY2QyNTk3OTIzMjRhNjA1MjlhMWY3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKQEAg
LTM5MSw2ICszOTEsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaW5jcmVtZW50YWxQREZMb2FkaW5n
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5jcmVtZW50YWxQREZMb2FkaW5nRW5hYmxlZDsg
fQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgIHZvaWQgc2V0V2ViTVBh
cnNlckVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV93ZWJNUGFyc2VyRW5hYmxlZCA9IGlzRW5h
YmxlZDsgfQorICAgIGJvb2wgd2ViTVBhcnNlckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3dl
Yk1QYXJzZXJFbmFibGVkOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICAvLyBOZXZlciBpbnN0
YW50aWF0ZS4KICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCk7CkBAIC01ODQsNiArNTg5LDEw
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2luY3JlbWVudGFsUERGTG9hZGluZ0VuYWJsZWQgeyBm
YWxzZSB9OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgIGJvb2wgbV93
ZWJNUGFyc2VyRW5hYmxlZCB7IGZhbHNlIH07CisjZW5kaWYKKwogICAgIGZyaWVuZCBjbGFzcyBX
VEY6Ok5ldmVyRGVzdHJveWVkPFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM+OwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmgK
aW5kZXggN2ZhZTIzZWY1ZGM0Mjk5ZThmMDlmYzQxMmZjMTcxMDI2OGJlYmMyMS4uYTlmODM2YmQx
MTczZTIyZTBhZTgxNGExNzU0MmFhMjNhNDYxNWE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oCkBAIC0yNiw2ICsyNiw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZUJhc2UuaCIKKyNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogI2lmIEVOQUJMRShWSURFTykKIApAQCAtNTUsNiArNTYs
OCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7CiAgICAgICAgIGlmICht
X2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5lbmFibGVkQ2hhbmdlZChlbmFibGVkKTsK
KyAgICAgICAgaWYgKG1fZW5hYmxlZENoYW5nZWRDYWxsYmFjaykKKyAgICAgICAgICAgIG1fZW5h
YmxlZENoYW5nZWRDYWxsYmFjaygqdGhpcywgbV9lbmFibGVkKTsKICAgICB9CiAKICAgICBib29s
IGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KQEAgLTY0LDYgKzY3LDkgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzQmFja2VkQnlNZWRpYVN0cmVhbVRyYWNrKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHVzaW5nIEVuYWJsZWRDaGFuZ2VkQ2FsbGJh
Y2sgPSBGdW5jdGlvbjx2b2lkKEF1ZGlvVHJhY2tQcml2YXRlJiwgYm9vbCBlbmFibGVkKT47Cisg
ICAgdm9pZCBzZXRFbmFibGVkQ2hhbmdlZENhbGxiYWNrKEVuYWJsZWRDaGFuZ2VkQ2FsbGJhY2sm
JiBjYWxsYmFjaykgeyBtX2VuYWJsZWRDaGFuZ2VkQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KTsgfQorCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgY2hhciogbG9nQ2xh
c3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkF1ZGlvVHJhY2tQcml2YXRlIjsgfQog
I2VuZGlmCkBAIC03NCw2ICs4MCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgQXVkaW9U
cmFja1ByaXZhdGVDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwogICAgIGJvb2wgbV9lbmFi
bGVkIHsgZmFsc2UgfTsKKyAgICBFbmFibGVkQ2hhbmdlZENhbGxiYWNrIG1fZW5hYmxlZENoYW5n
ZWRDYWxsYmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuY3BwCmluZGV4IDlhYzM5MTk3
M2E0NDA0NDdlMmZiNGRjN2Y4NzgwNzM1NDdkNjQ4ZWIuLjE0MDg3NDFiODEzMzEwZDI3ZjQ2MDAw
MThlMzMxYTUwNGM1NDQwYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvVlA5VXRpbGl0aWVzLmNwcApAQCAtNTQsMjYgKzU0LDc0IEBAIHN0YXRpYyBib29sIGlz
VmFsaWRWUExldmVsKHVpbnQ4X3QgbGV2ZWwpCiAgICAgcmV0dXJuIHN0ZDo6YmluYXJ5X3NlYXJj
aChzdGQ6OmJlZ2luKHZhbGlkTGV2ZWxzKSwgc3RkOjplbmQodmFsaWRMZXZlbHMpLCBsZXZlbCk7
CiB9CiAKLXN0YXRpYyBib29sIGlzVmFsaWRWUGNvbG9yUHJpbWFyaWVzKHVpbnQ4X3QgY29sb3JQ
cmltYXJpZXMpCitzdGF0aWMgYm9vbCBpc1ZhbGlkVlBDb2xvclByaW1hcmllcyh1aW50OF90IGNv
bG9yUHJpbWFyaWVzKQogewogICAgIGNvbnN0ZXhwciB1aW50OF90IHZhbGlkQ29sb3JQcmltYXJp
ZXNbXSA9IHsKLSAgICAgICAgMSwKLSAgICAgICAgNCwKLSAgICAgICAgNSwKLSAgICAgICAgNiwK
LSAgICAgICAgNywKLSAgICAgICAgOCwKLSAgICAgICAgOSwKLSAgICAgICAgMTAsCi0gICAgICAg
IDExLAotICAgICAgICAxMiwKLSAgICAgICAgMjIsCisgICAgICAgIFZQQ29uZmlndXJhdGlvbkNv
bG9yUHJpbWFyaWVzOjpCVF83MDlfNiwKKyAgICAgICAgVlBDb25maWd1cmF0aW9uQ29sb3JQcmlt
YXJpZXM6OlVuc3BlY2lmaWVkLAorICAgICAgICBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmll
czo6QlRfNDcwXzZfTSwKKyAgICAgICAgVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OkJU
XzQ3MF83X0JHLAorICAgICAgICBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6QlRfNjAx
XzcsCisgICAgICAgIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpTTVBURV9TVF8yNDAs
CisgICAgICAgIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpGaWxtLAorICAgICAgICBW
UENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6QlRfMjAyMF9Ob25jb25zdGFudF9MdW1pbmFu
Y2UsCisgICAgICAgIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpTTVBURV9TVF80Mjhf
MSwKKyAgICAgICAgVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OlNNUFRFX1JQXzQzMV8y
LAorICAgICAgICBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6U01QVEVfRUdfNDMyXzEs
CisgICAgICAgIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpFQlVfVGVjaF8zMjEzX0Us
CiAgICAgfTsKIAogICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKHZhbGlkQ29s
b3JQcmltYXJpZXMpLCBzdGQ6OmVuZCh2YWxpZENvbG9yUHJpbWFyaWVzKSkpOwogICAgIHJldHVy
biBzdGQ6OmJpbmFyeV9zZWFyY2goc3RkOjpiZWdpbih2YWxpZENvbG9yUHJpbWFyaWVzKSwgc3Rk
OjplbmQodmFsaWRDb2xvclByaW1hcmllcyksIGNvbG9yUHJpbWFyaWVzKTsKIH0KIAorc3RhdGlj
IGJvb2wgaXNWYWxpZFZQVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3ModWludDhfdCB0cmFuc2ZlckNo
YXJhY3RlcmlzdGljcykKK3sKKyAgICBjb25zdGV4cHIgdWludDhfdCB2YWxpZFRyYW5zZmVyQ2hh
cmFjdGVyaXN0aWNzW10gPSB7CisgICAgICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFj
dGVyaXN0aWNzOjpCVF83MDlfNiwKKyAgICAgICAgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFy
YWN0ZXJpc3RpY3M6OlVuc3BlY2lmaWVkLAorICAgICAgICBWUENvbmZpZ3VyYXRpb25UcmFuc2Zl
ckNoYXJhY3RlcmlzdGljczo6QlRfNDcwXzZfTSwKKyAgICAgICAgVlBDb25maWd1cmF0aW9uVHJh
bnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzQ3MF83X0JHLAorICAgICAgICBWUENvbmZpZ3VyYXRp
b25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6QlRfNjAxXzcsCisgICAgICAgIFZQQ29uZmlndXJh
dGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpTTVBURV9TVF8yNDAsCisgICAgICAgIFZQQ29u
ZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpMaW5lYXIsCisgICAgICAgIFZQQ29u
ZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpMb2dyaXRobWljLAorICAgICAgICBW
UENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6TG9ncml0aG1pY19TcXJ0LAor
ICAgICAgICBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6SUVDXzYxOTY2
XzJfNCwKKyAgICAgICAgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkJU
XzEzNjFfMCwKKyAgICAgICAgVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6
OklFQ182MTk2Nl8yXzEsCisgICAgICAgIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVy
aXN0aWNzOjpCVF8yMDIwXzEwYml0LAorICAgICAgICBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNo
YXJhY3RlcmlzdGljczo6QlRfMjAyMF8xMmJpdCwKKyAgICAgICAgVlBDb25maWd1cmF0aW9uVHJh
bnNmZXJDaGFyYWN0ZXJpc3RpY3M6OlNNUFRFX1NUXzIwODQsCisgICAgICAgIFZQQ29uZmlndXJh
dGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpTTVBURV9TVF80MjhfMSwKKyAgICAgICAgVlBD
b25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzIxMDBfSExHLAorICAgIH07
CisgICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVkKHN0ZDo6YmVnaW4odmFsaWRUcmFuc2ZlckNoYXJh
Y3RlcmlzdGljcyksIHN0ZDo6ZW5kKHZhbGlkVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MpKSk7Cisg
ICAgcmV0dXJuIHN0ZDo6YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2luKHZhbGlkVHJhbnNmZXJDaGFy
YWN0ZXJpc3RpY3MpLCBzdGQ6OmVuZCh2YWxpZFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKSwgdHJh
bnNmZXJDaGFyYWN0ZXJpc3RpY3MpOworfQorCitzdGF0aWMgYm9vbCBpc1ZhbGlkVlBNYXRyaXhD
b2VmZmljaWVudHModWludDhfdCBtYXRyaXhDb2VmZmljaWVudHMpCit7CisgICAgY29uc3RleHBy
IHVpbnQ4X3QgdmFsaWRNYXRyaXhDb2VmZmljaWVudHNbXSA9IHsKKyAgICAgICAgVlBDb25maWd1
cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpJZGVudGl0eSwKKyAgICAgICAgVlBDb25maWd1cmF0
aW9uTWF0cml4Q29lZmZpY2llbnRzOjpCVF83MDlfNiwKKyAgICAgICAgVlBDb25maWd1cmF0aW9u
TWF0cml4Q29lZmZpY2llbnRzOjpVbnNwZWNpZmllZCwKKyAgICAgICAgVlBDb25maWd1cmF0aW9u
TWF0cml4Q29lZmZpY2llbnRzOjpGQ0MsCisgICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJpeENv
ZWZmaWNpZW50czo6QlRfNDcwXzdfQkcsCisgICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJpeENv
ZWZmaWNpZW50czo6QlRfNjAxXzcsCisgICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZm
aWNpZW50czo6U01QVEVfU1RfMjQwLAorICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2Vm
ZmljaWVudHM6OllDZ0NvLAorICAgICAgICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVu
dHM6OkJUXzIwMjBfTm9uY29uc3RhbnRfTHVtaW5hbmNlLAorICAgICAgICBWUENvbmZpZ3VyYXRp
b25NYXRyaXhDb2VmZmljaWVudHM6OkJUXzIwMjBfQ29uc3RhbnRfTHVtaW5hbmNlLAorICAgICAg
ICBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OlNNUFRFX1NUXzIwODUsCisgICAg
ICAgIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6Q2hyb21hY2l0eV9Db25zdGFu
dF9MdW1pbmFuY2UsCisgICAgICAgIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6
Q2hyb21hY2l0eV9Ob25jb25zdGFudF9MdW1pbmFuY2UsCisgICAgICAgIFZQQ29uZmlndXJhdGlv
bk1hdHJpeENvZWZmaWNpZW50czo6QlRfMjEwMF9JQ0MsCisgICAgfTsKKyAgICBBU1NFUlQoc3Rk
Ojppc19zb3J0ZWQoc3RkOjpiZWdpbih2YWxpZE1hdHJpeENvZWZmaWNpZW50cyksIHN0ZDo6ZW5k
KHZhbGlkTWF0cml4Q29lZmZpY2llbnRzKSkpOworICAgIHJldHVybiBzdGQ6OmJpbmFyeV9zZWFy
Y2goc3RkOjpiZWdpbih2YWxpZE1hdHJpeENvZWZmaWNpZW50cyksIHN0ZDo6ZW5kKHZhbGlkTWF0
cml4Q29lZmZpY2llbnRzKSwgbWF0cml4Q29lZmZpY2llbnRzKTsKK30KKwogT3B0aW9uYWw8VlBD
b2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQ+IHBhcnNlVlBDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmll
dyBjb2RlY1ZpZXcpCiB7CiAgICAgLy8gVGhlIGZvcm1hdCBvZiB0aGUgJ3ZwMDknIGNvZGVjIHN0
cmluZyBpcyBzcGVjaWZpZWQgaW4gdGhlIHdlYm0gR2l0SHViIHJlcG86CkBAIC0xNDAsNyArMTg4
LDcgQEAgT3B0aW9uYWw8VlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQ+IHBhcnNlVlBDb2RlY1Bh
cmFtZXRlcnMoU3RyaW5nVmlldyBjb2RlY1ZpZXcKICAgICAvLyBGaWZ0aCBlbGVtZW50OiBjb2xv
clByaW1hcmllcy4gTGVnYWwgdmFsdWVzIGFyZSBkZWZpbmVkIGJ5ICBJU08vSUVDIDIzMDAxLTg6
MjAxNiwgc3VwZXJjZWRlZAogICAgIC8vIGJ5IElTTy9JRUMgMjMwOTEtMjoyMDE5LgogICAgIGF1
dG8gY29sb3JQcmltYXJpZXMgPSB0b0ludGVncmFsVHlwZTx1aW50OF90PigqbmV4dEVsZW1lbnQp
OwotICAgIGlmICghY29sb3JQcmltYXJpZXMgfHwgIWlzVmFsaWRWUGNvbG9yUHJpbWFyaWVzKCpj
b2xvclByaW1hcmllcykpCisgICAgaWYgKCFjb2xvclByaW1hcmllcyB8fCAhaXNWYWxpZFZQQ29s
b3JQcmltYXJpZXMoKmNvbG9yUHJpbWFyaWVzKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKICAgICBjb25maWd1cmF0aW9uLmNvbG9yUHJpbWFyaWVzID0gKmNvbG9yUHJpbWFyaWVzOwog
CkBAIC0xNTAsNyArMTk4LDcgQEAgT3B0aW9uYWw8VlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQ+
IHBhcnNlVlBDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBjb2RlY1ZpZXcKICAgICAvLyBTaXh0
aCBlbGVtZW50OiB0cmFuc2ZlckNoYXJhY3RlcmlzdGljcy4gTGVnYWwgdmFsdWVzIGFyZSBkZWZp
bmVkIGJ5ICBJU08vSUVDIDIzMDAxLTg6MjAxNiwgc3VwZXJjZWRlZAogICAgIC8vIGJ5IElTTy9J
RUMgMjMwOTEtMjoyMDE5LgogICAgIGF1dG8gdHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MgPSB0b0lu
dGVncmFsVHlwZTx1aW50OF90PigqbmV4dEVsZW1lbnQpOwotICAgIGlmICghdHJhbnNmZXJDaGFy
YWN0ZXJpc3RpY3MgfHwgKCEqdHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MgfHwgKnRyYW5zZmVyQ2hh
cmFjdGVyaXN0aWNzID09IDIgfHwgKnRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzID09IDMgfHwgKnRy
YW5zZmVyQ2hhcmFjdGVyaXN0aWNzID4gMTgpKQorICAgIGlmICghdHJhbnNmZXJDaGFyYWN0ZXJp
c3RpY3MgfHwgIWlzVmFsaWRWUFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKCp0cmFuc2ZlckNoYXJh
Y3RlcmlzdGljcykpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgY29uZmlndXJh
dGlvbi50cmFuc2ZlckNoYXJhY3RlcmlzdGljcyA9ICp0cmFuc2ZlckNoYXJhY3RlcmlzdGljczsK
IApAQCAtMTYwLDcgKzIwOCw3IEBAIE9wdGlvbmFsPFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3Jk
PiBwYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNWaWV3CiAgICAgLy8gU2V2
ZW50aCBlbGVtZW50OiBtYXRyaXhDb2VmZmljaWVudHMuIExlZ2FsIHZhbHVlcyBhcmUgZGVmaW5l
ZCBieSAgSVNPL0lFQyAyMzAwMS04OjIwMTYsIHN1cGVyY2VkZWQKICAgICAvLyBieSBJU08vSUVD
IDIzMDkxLTI6MjAxOS4KICAgICBhdXRvIG1hdHJpeENvZWZmaWNpZW50cyA9IHRvSW50ZWdyYWxU
eXBlPHVpbnQ4X3Q+KCpuZXh0RWxlbWVudCk7Ci0gICAgaWYgKCFtYXRyaXhDb2VmZmljaWVudHMg
fHwgKCptYXRyaXhDb2VmZmljaWVudHMgPT0gMiB8fCAqbWF0cml4Q29lZmZpY2llbnRzID09IDMg
fHwgKm1hdHJpeENvZWZmaWNpZW50cyA+IDE0KSkKKyAgICBpZiAoIW1hdHJpeENvZWZmaWNpZW50
cyB8fCAhaXNWYWxpZFZQTWF0cml4Q29lZmZpY2llbnRzKCptYXRyaXhDb2VmZmljaWVudHMpKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGNvbmZpZ3VyYXRpb24ubWF0cml4Q29l
ZmZpY2llbnRzID0gKm1hdHJpeENvZWZmaWNpZW50czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuaAppbmRleCAzYWY1ODUwZTU0NDBkMmFmY2Y5
ZWFjZGUyYzg1ZTBiM2QzMTE4ZmUwLi44ODc2OTgzOGQ1MDgxOTgyZDIyYTA3YjA1OWQ0MGJkMzE1
YzJjYmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlV
dGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGls
aXRpZXMuaApAQCAtNTksNiArNTksNjAgQEAgY29uc3RleHByIHVpbnQ4X3QgVmlkZW9SYW5nZSA9
IDA7CiBjb25zdGV4cHIgdWludDhfdCBGdWxsUmFuZ2UgPSAxOwogfQogCisvLyBSZWY6IElTTy9J
RUMgMjMwOTEtMjoyMDE5CituYW1lc3BhY2UgVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXMg
eworY29uc3RleHByIHVpbnQ4X3QgQlRfNzA5XzYgPSAxOworY29uc3RleHByIHVpbnQ4X3QgVW5z
cGVjaWZpZWQgPSAyOworY29uc3RleHByIHVpbnQ4X3QgQlRfNDcwXzZfTSA9IDQ7Citjb25zdGV4
cHIgdWludDhfdCBCVF80NzBfN19CRyA9IDU7Citjb25zdGV4cHIgdWludDhfdCBCVF82MDFfNyA9
IDY7Citjb25zdGV4cHIgdWludDhfdCBTTVBURV9TVF8yNDAgPSA3OworY29uc3RleHByIHVpbnQ4
X3QgRmlsbSA9IDg7Citjb25zdGV4cHIgdWludDhfdCBCVF8yMDIwX05vbmNvbnN0YW50X0x1bWlu
YW5jZSA9IDk7Citjb25zdGV4cHIgdWludDhfdCBTTVBURV9TVF80MjhfMSA9IDEwOworY29uc3Rl
eHByIHVpbnQ4X3QgU01QVEVfUlBfNDMxXzIgPSAxMTsKK2NvbnN0ZXhwciB1aW50OF90IFNNUFRF
X0VHXzQzMl8xID0gMTI7Citjb25zdGV4cHIgdWludDhfdCBFQlVfVGVjaF8zMjEzX0UgPSAyMjsK
K30KKworLy8gUmVmOiBJU08vSUVDIDIzMDkxLTI6MjAxOQorbmFtZXNwYWNlIFZQQ29uZmlndXJh
dGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzIHsKK2NvbnN0ZXhwciB1aW50OF90IEJUXzcwOV82
ID0gMTsKK2NvbnN0ZXhwciB1aW50OF90IFVuc3BlY2lmaWVkID0gMjsKK2NvbnN0ZXhwciB1aW50
OF90IEJUXzQ3MF82X00gPSA0OworY29uc3RleHByIHVpbnQ4X3QgQlRfNDcwXzdfQkcgPSA1Owor
Y29uc3RleHByIHVpbnQ4X3QgQlRfNjAxXzcgPSA2OworY29uc3RleHByIHVpbnQ4X3QgU01QVEVf
U1RfMjQwID0gNzsKK2NvbnN0ZXhwciB1aW50OF90IExpbmVhciA9IDg7Citjb25zdGV4cHIgdWlu
dDhfdCBMb2dyaXRobWljID0gOTsKK2NvbnN0ZXhwciB1aW50OF90IExvZ3JpdGhtaWNfU3FydCA9
IDEwOworY29uc3RleHByIHVpbnQ4X3QgSUVDXzYxOTY2XzJfNCA9IDExOworY29uc3RleHByIHVp
bnQ4X3QgQlRfMTM2MV8wID0gMTI7Citjb25zdGV4cHIgdWludDhfdCBJRUNfNjE5NjZfMl8xID0g
MTM7Citjb25zdGV4cHIgdWludDhfdCBCVF8yMDIwXzEwYml0ID0gMTQ7Citjb25zdGV4cHIgdWlu
dDhfdCBCVF8yMDIwXzEyYml0ID0gMTU7Citjb25zdGV4cHIgdWludDhfdCBTTVBURV9TVF8yMDg0
ID0gMTY7Citjb25zdGV4cHIgdWludDhfdCBTTVBURV9TVF80MjhfMSA9IDE3OworY29uc3RleHBy
IHVpbnQ4X3QgQlRfMjEwMF9ITEcgPSAxODsKK30KKworbmFtZXNwYWNlIFZQQ29uZmlndXJhdGlv
bk1hdHJpeENvZWZmaWNpZW50cyB7Citjb25zdGV4cHIgdWludDhfdCBJZGVudGl0eSA9IDA7Citj
b25zdGV4cHIgdWludDhfdCBCVF83MDlfNiA9IDE7Citjb25zdGV4cHIgdWludDhfdCBVbnNwZWNp
ZmllZCA9IDI7Citjb25zdGV4cHIgdWludDhfdCBGQ0MgPSA0OworY29uc3RleHByIHVpbnQ4X3Qg
QlRfNDcwXzdfQkcgPSA1OworY29uc3RleHByIHVpbnQ4X3QgQlRfNjAxXzcgPSA2OworY29uc3Rl
eHByIHVpbnQ4X3QgU01QVEVfU1RfMjQwID0gNzsKK2NvbnN0ZXhwciB1aW50OF90IFlDZ0NvID0g
ODsKK2NvbnN0ZXhwciB1aW50OF90IEJUXzIwMjBfTm9uY29uc3RhbnRfTHVtaW5hbmNlID0gOTsK
K2NvbnN0ZXhwciB1aW50OF90IEJUXzIwMjBfQ29uc3RhbnRfTHVtaW5hbmNlID0gMTA7Citjb25z
dGV4cHIgdWludDhfdCBTTVBURV9TVF8yMDg1ID0gMTE7Citjb25zdGV4cHIgdWludDhfdCBDaHJv
bWFjaXR5X0NvbnN0YW50X0x1bWluYW5jZSA9IDEyOworY29uc3RleHByIHVpbnQ4X3QgQ2hyb21h
Y2l0eV9Ob25jb25zdGFudF9MdW1pbmFuY2UgPSAxMzsKK2NvbnN0ZXhwciB1aW50OF90IEJUXzIx
MDBfSUNDID0gMTQ7Cit9CisKIHN0cnVjdCBWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCB7CiAg
ICAgU3RyaW5nIGNvZGVjTmFtZTsKICAgICB1aW50OF90IHByb2ZpbGUgeyAwIH07CkBAIC02Niw5
ICsxMjAsOSBAQCBzdHJ1Y3QgVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQgewogICAgIHVpbnQ4
X3QgYml0RGVwdGggeyA4IH07CiAgICAgdWludDhfdCBjaHJvbWFTdWJzYW1wbGluZyB7IFZQQ29u
ZmlndXJhdGlvbkNocm9tYVN1YnNhbXBsaW5nOjpTdWJzYW1wbGluZ180MjBfQ29sb2NhdGVkIH07
CiAgICAgdWludDhfdCB2aWRlb0Z1bGxSYW5nZUZsYWcgeyBWUENvbmZpZ3VyYXRpb25SYW5nZTo6
VmlkZW9SYW5nZSB9OwotICAgIHVpbnQ4X3QgY29sb3JQcmltYXJpZXMgeyAxIH07Ci0gICAgdWlu
dDhfdCB0cmFuc2ZlckNoYXJhY3RlcmlzdGljcyB7IDEgfTsKLSAgICB1aW50OF90IG1hdHJpeENv
ZWZmaWNpZW50cyB7IDEgfTsKKyAgICB1aW50OF90IGNvbG9yUHJpbWFyaWVzIHsgVlBDb25maWd1
cmF0aW9uQ29sb3JQcmltYXJpZXM6OkJUXzcwOV82IH07CisgICAgdWludDhfdCB0cmFuc2ZlckNo
YXJhY3RlcmlzdGljcyB7IFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpC
VF83MDlfNiB9OworICAgIHVpbnQ4X3QgbWF0cml4Q29lZmZpY2llbnRzIHsgVlBDb25maWd1cmF0
aW9uTWF0cml4Q29lZmZpY2llbnRzOjpCVF83MDlfNiB9OwogfTsKIAogV0VCQ09SRV9FWFBPUlQg
T3B0aW9uYWw8VlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQ+IHBhcnNlVlBDb2RlY1BhcmFtZXRl
cnMoU3RyaW5nVmlldyBjb2RlY1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaAppbmRleCA3MThkODBlMzQ1MmM0N2Zl
ZWY0MjY4ZjI5ZTNhMmU4N2JiNGRjYWQzLi4wYzQxM2MyZGRmNWQ5ZGEyYTE1YjExMzVjMDhlNTEw
ODUyYjgwMmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9W
aWRlb1RyYWNrUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1ZpZGVvVHJhY2tQcml2YXRlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoVklERU8p
CiAKICNpbmNsdWRlICJUcmFja1ByaXZhdGVCYXNlLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDgsNiArNDksOCBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fc2VsZWN0ZWQgPSBzZWxlY3RlZDsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAg
ICAgICAgICAgbV9jbGllbnQtPnNlbGVjdGVkQ2hhbmdlZChtX3NlbGVjdGVkKTsKKyAgICAgICAg
aWYgKG1fc2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2spCisgICAgICAgICAgICBtX3NlbGVjdGVkQ2hh
bmdlZENhbGxiYWNrKCp0aGlzLCBtX3NlbGVjdGVkKTsKICAgICB9CiAgICAgdmlydHVhbCBib29s
IHNlbGVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RlZDsgfQogCkBAIC01OCwxMiArNjEs
MTcgQEAgcHVibGljOgogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuICJWaWRlb1RyYWNrUHJpdmF0ZSI7IH0KICNlbmRpZgogCisgICAgdXNpbmcgU2Vs
ZWN0ZWRDaGFuZ2VkQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFZpZGVvVHJhY2tQcml2YXRlJiwg
Ym9vbCBzZWxlY3RlZCk+OworICAgIHZvaWQgc2V0U2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2soU2Vs
ZWN0ZWRDaGFuZ2VkQ2FsbGJhY2smJiBjYWxsYmFjaykgeyBtX3NlbGVjdGVkQ2hhbmdlZENhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayk7IH0KKworCiBwcm90ZWN0ZWQ6CiAgICAgVmlkZW9UcmFj
a1ByaXZhdGUoKSA9IGRlZmF1bHQ7CiAKIHByaXZhdGU6CiAgICAgVmlkZW9UcmFja1ByaXZhdGVD
bGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwogICAgIGJvb2wgbV9zZWxlY3RlZCB7IGZhbHNl
IH07CisgICAgU2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2sgbV9zZWxlY3RlZENoYW5nZWRDYWxsYmFj
azsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNw
cAppbmRleCBjMWNiMWE0ZDM1NjEyNWQ5NDdkZWZmYzI3ZjU5ZmNhMGM5YjQxODQxLi5iYzEzOTc3
OTdiYWRhOGE0NzU5YmY1MmY5YTU0NjNiMmQ2NDFkNzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMuY3BwCkBAIC0zMyw5ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
KiBwYXJlbnQpCitBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6QXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaykKICAgICA6IG1f
aW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKLSAgICAs
IG1fcGFyZW50KHBhcmVudCkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0K
QEAgLTY3LDcgKzY2LDYgQEAgdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIEF1ZGlv
VHJhY2tQcml2YXRlQVZGOjpzZXRFbmFibGVkKGVuYWJsZWQpOwotICAgIG1fcGFyZW50LT50cmFj
a0RpZENoYW5nZUVuYWJsZWQodGhpcyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmlu
ZGV4IDliYzRmMjZjMDczNDlmMTc3NmY2MGJlMGRkMWMyYWJjZDdiMzdkNmIuLjE0NTZjMDE2YmFl
MDNiODc4YjUwYmY1OTkyNGZiNGQ5ZjM1MzAxOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApA
QCAtMzksOSArMzksOSBAQCBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzsKIGNsYXNz
IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIGZpbmFsIDogcHVibGljIEF1ZGlv
VHJhY2tQcml2YXRlQVZGIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQykKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrICp0cmFjaywg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKKyAgICBzdGF0aWMgUmVmPEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrICp0cmFj
aykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2spKTsKICAg
ICB9CiAKICAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCkgZmluYWw7CkBAIC01MiwxMiArNTIsMTEg
QEAgcHVibGljOgogICAgIGludCB0cmFja0lEKCkgeyByZXR1cm4gbV90cmFja0lEOyB9CiAKIHBy
aXZhdGU6Ci0gICAgZXhwbGljaXQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMo
QVZBc3NldFRyYWNrKiwgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCk7CisgICAg
ZXhwbGljaXQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNr
Kik7CiAgICAgCiAgICAgdm9pZCByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPiBtX2ltcGw7Ci0gICAgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIG1fcGFyZW50OwogICAgIGludCBtX3RyYWNrSUQ7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRl
bnRLZXlTZXNzaW9uLm1tCmluZGV4IDI2NGM3NjRkYzQ0NmY4NThlZTc1MmFjYWM5YTk0ZDI0ZTU0
OWU4ZDAuLmViNzgzZjhhNjVlNjVmODA1M2E0OTI5NjM1MmZiMzBjZWY4NjU4N2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uLm1tCkBAIC0yNTQsNyArMjU0LDcgQEAgYm9vbCBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vz
c2lvbjo6dXBkYXRlKFVpbnQ4QXJyYXkqIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JgogICAgICAg
ICAvLyBkYXRhLgogICAgICAgICBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IHBy
b3RlY3RlZFNvdXJjZUJ1ZmZlcjsKICAgICAgICAgZm9yIChhdXRvJiBzb3VyY2VCdWZmZXIgOiBt
X3NvdXJjZUJ1ZmZlcnMpIHsKLSAgICAgICAgICAgIGlmIChzb3VyY2VCdWZmZXItPnByb3RlY3Rl
ZFRyYWNrSUQoKSAhPSAtMSkgeworICAgICAgICAgICAgaWYgKHNvdXJjZUJ1ZmZlci0+cHJvdGVj
dGVkVHJhY2tJRCgpICE9IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAgICAgcHJvdGVjdGVkU291
cmNlQnVmZmVyID0gc291cmNlQnVmZmVyOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVh
bVNlc3Npb24ubW0KaW5kZXggODk2YTI0NTIyYjhjNjJmYzM1MjRjMzQzNzg4ZTQzMzZkMGJkZWZm
YS4uMjQ0NjEyYTVjMWUzNjhjYmVkY2JmNzAwNDg1M2FkMGYzNTBjYjdkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCkBAIC0y
MDgsNyArMjA4LDcgQEAgYm9vbCBDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjp1cGRhdGUoVWlu
dDhBcnJheSoga2V5LCBSZWZQdHI8VWludDhBcnJheT4mIG5leHQKIAogICAgIFJlZlB0cjxTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gcHJvdGVjdGVkU291cmNlQnVmZmVyOwogICAgIGZvciAo
YXV0byYgc291cmNlQnVmZmVyIDogbV9zb3VyY2VCdWZmZXJzKSB7Ci0gICAgICAgIGlmIChzb3Vy
Y2VCdWZmZXItPnByb3RlY3RlZFRyYWNrSUQoKSAhPSAtMSkgeworICAgICAgICBpZiAoc291cmNl
QnVmZmVyLT5wcm90ZWN0ZWRUcmFja0lEKCkgIT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIHBy
b3RlY3RlZFNvdXJjZUJ1ZmZlciA9IHNvdXJjZUJ1ZmZlcjsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggNjY4OTkxMDFlMWZjNTg0
MDc3NzdiNjlkNjM5MTkxNWZkOWFkZGQyMS4uOGI5NDE1MDdjMDM4ODFjMDIxNmI0ZTc5MmUzOWRi
MjZlMzU3ZmRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMjUzLDIyICsyNTMs
NyBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlKGNvbgogICAgIGlmICghcGFyYW1ldGVycy5pc01lZGlh
U291cmNlKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RT
dXBwb3J0ZWQ7CiAKLSAgICBTdHJpbmcgZXh0ZW5kZWRUeXBlID0gcGFyYW1ldGVycy50eXBlLnJh
dygpOwotICAgIFN0cmluZyBvdXRwdXRDb2RlY3MgPSBwYXJhbWV0ZXJzLnR5cGUucGFyYW1ldGVy
KENvbnRlbnRUeXBlOjpjb2RlY3NQYXJhbWV0ZXIoKSk7Ci0gICAgaWYgKCFvdXRwdXRDb2RlY3Mu
aXNFbXB0eSgpICYmIFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihvdXRwdXRNSU1FQ29kZWNQYXJhbWV0ZXJGb3JJbnB1dE1JTUVD
b2RlY1BhcmFtZXRlcjopXSkgewotICAgICAgICBvdXRwdXRDb2RlY3MgPSBbUEFMOjpnZXRBVlN0
cmVhbURhdGFQYXJzZXJDbGFzcygpIG91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklucHV0TUlN
RUNvZGVjUGFyYW1ldGVyOm91dHB1dENvZGVjc107Ci0gICAgICAgIGV4dGVuZGVkVHlwZSA9IG1h
a2VTdHJpbmcocGFyYW1ldGVycy50eXBlLmNvbnRhaW5lclR5cGUoKSwgIjsgY29kZWNzPVwiIiwg
b3V0cHV0Q29kZWNzLCAiXCIiKTsKLSAgICB9Ci0KLSAgICBhdXRvIHN1cHBvcnRlZCA9IE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwotICAgIGF1dG8mIHN0cmVhbURh
dGFQYXJzZXJDYWNoZSA9IEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRv
bigpOwotICAgIGlmIChzdHJlYW1EYXRhUGFyc2VyQ2FjaGUuaXNBdmFpbGFibGUoKSkKLSAgICAg
ICAgc3VwcG9ydGVkID0gc3RyZWFtRGF0YVBhcnNlckNhY2hlLmNhbkRlY29kZVR5cGUoZXh0ZW5k
ZWRUeXBlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgYXV0byYgYXNzZXRDYWNoZSA9IEFWQXNzZXRN
SU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKTsKLSAgICAgICAgaWYgKGFzc2V0Q2FjaGUuaXNBdmFp
bGFibGUoKSkKLSAgICAgICAgICAgIHN1cHBvcnRlZCA9IGFzc2V0Q2FjaGUuY2FuRGVjb2RlVHlw
ZShleHRlbmRlZFR5cGUpOwotICAgIH0KKyAgICBhdXRvIHN1cHBvcnRlZCA9IFNvdXJjZUJ1ZmZl
clBhcnNlcjo6aXNDb250ZW50VHlwZVN1cHBvcnRlZChwYXJhbWV0ZXJzLnR5cGUpOwogCiAgICAg
aWYgKHN1cHBvcnRlZCAhPSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZCkK
ICAgICAgICAgcmV0dXJuIHN1cHBvcnRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFT
YW1wbGVBVkZPYmpDLmgKaW5kZXggMzM0YzA2MTdhNWZhMjA2ZTY4ZmFmMGZlMGM5YjY5MDJkNzI4
YmMyYy4uZDlmYjFmOTFiZjlkY2ViMjFhY2JkNTNlYzMxNWUzNTgyYjA2M2MyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTYW1wbGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKQEAgLTM0LDcgKzM0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVNhbXBsZUFWRk9iakMgOiBwdWJsaWMg
TWVkaWFTYW1wbGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVBVkZPYmpD
PiBjcmVhdGUoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCBpbnQgdHJhY2tJRCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBNZWRpYVNhbXBsZUFWRk9iakMoc2FtcGxlLCB0cmFja0lEKSk7IH0KKyAg
ICBzdGF0aWMgUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4gY3JlYXRlKENNU2FtcGxlQnVmZmVyUmVm
IHNhbXBsZSwgdWludDY0X3QgdHJhY2tJRCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNh
bXBsZUFWRk9iakMoc2FtcGxlLCB0cmFja0lEKSk7IH0KICAgICBzdGF0aWMgUmVmPE1lZGlhU2Ft
cGxlQVZGT2JqQz4gY3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwgQXRvbVN0cmluZyB0
cmFja0lEKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2FtcGxlQVZGT2JqQyhzYW1wbGUs
IHRyYWNrSUQpKTsgfQogICAgIHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGUo
Q01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uID0gVmlkZW9S
b3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IE1lZGlhU2FtcGxlQVZGT2JqQyhzYW1wbGUsIHJvdGF0aW9uLCBtaXJyb3JlZCkpOyB9CiAg
ICAgc3RhdGljIFJlZlB0cjxNZWRpYVNhbXBsZUFWRk9iakM+IGNyZWF0ZUltYWdlU2FtcGxlKFZl
Y3Rvcjx1aW50OF90PiYmLCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KTsKQEAgLTg2
LDcgKzg2LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAsIG1faWQodHJhY2tJRCkKICAgICB7CiAg
ICAgfQotICAgIE1lZGlhU2FtcGxlQVZGT2JqQyhDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIGlu
dCB0cmFja0lEKQorICAgIE1lZGlhU2FtcGxlQVZGT2JqQyhDTVNhbXBsZUJ1ZmZlclJlZiBzYW1w
bGUsIHVpbnQ2NF90IHRyYWNrSUQpCiAgICAgICAgIDogbV9zYW1wbGUoc2FtcGxlKQogICAgICAg
ICAsIG1faWQoQXRvbVN0cmluZzo6bnVtYmVyKHRyYWNrSUQpKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDgy
NzhlMDZhNTEyMjk3YzdlZDJiMjY5MGZmZTBjYjQyODg4NWZiZjYuLjI5MzIyNzkzOTEwZWE1N2Yx
ODFjOTIwMTdkM2NmMzY1Nzc1MjEwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9y
dCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLmgiCiAjaW1wb3J0ICJNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaCIKKyNpbXBvcnQgIlNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCIKICNpbXBvcnQgIlNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLmgiCiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9BbGdvcml0
aG1zLmg+CkBAIC04NSw3ICs4NiwxMSBAQCBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBN
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgQwogICAgIGlm
IChNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZShwYXJh
bWV0ZXJzKSA9PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZCkKICAg
ICAgICAgcmV0dXJuIE5vdFN1cHBvcnRlZDsKIAotICAgIGF1dG8gbmV3U291cmNlQnVmZmVyID0g
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSh0aGlzKTsKKyAgICBhdXRvIHBhcnNl
ciA9IFNvdXJjZUJ1ZmZlclBhcnNlcjo6Y3JlYXRlKGNvbnRlbnRUeXBlKTsKKyAgICBpZiAoIXBh
cnNlcikKKyAgICAgICAgcmV0dXJuIE5vdFN1cHBvcnRlZDsKKworICAgIGF1dG8gbmV3U291cmNl
QnVmZmVyID0gU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSh0aGlzLCBwYXJzZXIu
cmVsZWFzZU5vbk51bGwoKSk7CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBuZXdT
b3VyY2VCdWZmZXItPnNldENETUluc3RhbmNlKG1fY2RtSW5zdGFuY2UuZ2V0KCkpOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uN2M0ZDAyOGQ4ZGU4NTNkM2M5ODJhN2I2NjBmYmM5N2U5Njk4ZGUwMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaApAQCAtMCwwICsxLDgwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQor
CisjaW5jbHVkZSAiU291cmNlQnVmZmVyUGFyc2VyLmgiCisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0
cy5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK09CSkNfQ0xBU1MgQVZBc3NldDsKK09C
SkNfQ0xBU1MgQVZTdHJlYW1EYXRhUGFyc2VyOworT0JKQ19DTEFTUyBOU0RhdGE7CitPQkpDX0NM
QVNTIE5TRXJyb3I7CitPQkpDX0NMQVNTIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyOwor
Cit0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
QyBmaW5hbCA6IHB1YmxpYyBTb3VyY2VCdWZmZXJQYXJzZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDPiB7CitwdWJsaWM6CisgICAgc3RhdGljIE1lZGlh
UGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZSBpc0NvbnRlbnRUeXBlU3VwcG9ydGVkKGNvbnN0IENv
bnRlbnRUeXBlJik7CisKKyAgICBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCk7CisgICAgdmly
dHVhbCB+U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpOworCisgICAgQVZTdHJlYW1EYXRhUGFy
c2VyKiBwYXJzZXIoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlci5nZXQoKTsgfQorCisgICAgVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gVHlwZTo6QVZGT2JqQzsgfQorICAgIHZvaWQgYXBwZW5k
RGF0YShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgQXBwZW5kRmxhZ3MgPSBBcHBlbmRGbGFnczo6
Tm9uZSkgZmluYWw7CisgICAgdm9pZCBmbHVzaFBlbmRpbmdNZWRpYURhdGEoKSBmaW5hbDsKKyAg
ICB2b2lkIHNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGJvb2wsIHVpbnQ2NF90
KSBmaW5hbDsKKyAgICBib29sIHNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lEKHVpbnQ2
NF90KSBmaW5hbDsKKyAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKKyAgICB2b2lk
IGludmFsaWRhdGUoKSBmaW5hbDsKKworICAgIHZvaWQgZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3Nl
dChBVkFzc2V0Kik7CisgICAgdm9pZCBkaWRGYWlsVG9QYXJzZVN0cmVhbURhdGFXaXRoRXJyb3Io
TlNFcnJvciopOworICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQodWludDY0
X3QgdHJhY2tJRCwgQ01TYW1wbGVCdWZmZXJSZWYsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlLCB1
bnNpZ25lZCBmbGFncyk7CisgICAgdm9pZCB3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5p
dGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCh1aW50NjRfdCB0cmFja0lEKTsKKyAgICB2b2lkIGRp
ZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoTlNE
YXRhKiwgdWludDY0X3QgdHJhY2tJRCk7CisKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPEFWU3Ry
ZWFtRGF0YVBhcnNlcj4gbV9wYXJzZXI7CisgICAgUmV0YWluUHRyPFdlYkFWU3RyZWFtRGF0YVBh
cnNlckxpc3RlbmVyPiBtX2RlbGVnYXRlOworICAgIGJvb2wgbV9kaXNjYXJkU2FtcGxlc1VudGls
TmV4dEluaXRpYWxpemF0aW9uU2VnbWVudCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3BhcnNlclN0
YXRlV2FzUmVzZXQgeyBmYWxzZSB9OworfTsKKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMpCisgICAgc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlciYgcGFyc2VyKSB7IHJl
dHVybiBwYXJzZXIudHlwZSgpID09IFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6VHlwZTo6
QVZGT2JqQzsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCisjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5OGNmN2EzM2ZlZTI5YTQxNzBjZjgy
NjcwZjQ2NDI1Mzg1NWIwMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
Lm1tCkBAIC0wLDAgKzEsMzQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgiCisKKyNpZiBFTkFCTEUoTUVESUFf
U09VUkNFKQorCisjaW1wb3J0ICJBVkFzc2V0TUlNRVR5cGVDYWNoZS5oIgorI2ltcG9ydCAiQVZB
c3NldFRyYWNrVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlw
ZUNhY2hlLmgiCisjaW1wb3J0ICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5o
IgorI2ltcG9ydCAiRm91ckNDLmgiCisjaW1wb3J0ICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
T2JqQy5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiTWVkaWFEZXNjcmlwdGlvbi5o
IgorI2ltcG9ydCAiTWVkaWFTYW1wbGUuaCIKKyNpbXBvcnQgIk1lZGlhU2FtcGxlQVZGT2JqQy5o
IgorI2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgor
I2ltcG9ydCAiVGltZVJhbmdlcy5oIgorI2ltcG9ydCAiVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaCIKKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkFzc2V0VHJhY2suaD4KKyNp
bXBvcnQgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJyYXlJbmxpbmVzLmg+CisjaW1wb3J0IDxvYmpj
L3J1bnRpbWUuaD4KKyNpbXBvcnQgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0
aW9uLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oPgorI2ltcG9y
dCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKworI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRp
YVNvZnRMaW5rLmg+CisjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4K
KworI3ByYWdtYSBtYXJrIC0KKyNwcmFnbWEgbWFyayBXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0
ZW5lcgorCitAaW50ZXJmYWNlIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIDogTlNPYmpl
Y3Q8QVZTdHJlYW1EYXRhUGFyc2VyT3V0cHV0SGFuZGxpbmc+IHsKKyAgICBXZWJDb3JlOjpTb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDKiBfcGFyZW50OworICAgIEFWU3RyZWFtRGF0YVBhcnNlciog
X3BhcnNlcjsKK30KK0Bwcm9wZXJ0eSAoYXNzaWduKSBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDKiBwYXJlbnQ7CistIChpZClpbml0V2l0aFBhcnNlcjooQVZTdHJlYW1EYXRhUGFy
c2VyKilwYXJzZXIgcGFyZW50OihXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKilw
YXJlbnQ7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0
ZW5lcgorLSAoaWQpaW5pdFdpdGhQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciopcGFyc2VyIHBh
cmVudDooV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQyopcGFyZW50Cit7CisgICAg
c2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7
CisKKyAgICBBU1NFUlQocGFyZW50KTsKKyAgICBfcGFyZW50ID0gcGFyZW50OworICAgIF9wYXJz
ZXIgPSBwYXJzZXI7CisgICAgW19wYXJzZXIgc2V0RGVsZWdhdGU6c2VsZl07CisgICAgcmV0dXJu
IHNlbGY7Cit9CisKK0BzeW50aGVzaXplIHBhcmVudD1fcGFyZW50OworCistICh2b2lkKWRlYWxs
b2MKK3sKKyAgICBbX3BhcnNlciBzZXREZWxlZ2F0ZTpuaWxdOworICAgIFtzdXBlciBkZWFsbG9j
XTsKK30KKworLSAodm9pZClpbnZhbGlkYXRlCit7CisgICAgW19wYXJzZXIgc2V0RGVsZWdhdGU6
bmlsXTsKKyAgICBfcGFyc2VyID0gbnVsbHB0cjsKK30KKworLSAodm9pZClzdHJlYW1EYXRhUGFy
c2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFBhcnNlU3RyZWFt
RGF0YUFzQXNzZXQ6KEFWQXNzZXQgKilhc3NldAoreworICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFt
RGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKKyAgICBfcGFyZW50LT5k
aWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KGFzc2V0KTsKK30KKworLSAodm9pZClzdHJlYW1EYXRh
UGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFBhcnNlU3Ry
ZWFtRGF0YUFzQXNzZXQ6KEFWQXNzZXQgKilhc3NldCB3aXRoRGlzY29udGludWl0eTooQk9PTClk
aXNjb250aW51aXR5Cit7CisgICAgVU5VU0VEX1BBUkFNKGRpc2NvbnRpbnVpdHkpOworICAgIEFT
U0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2Vy
KTsKKyAgICBfcGFyZW50LT5kaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KGFzc2V0KTsKK30KKwor
LSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRh
UGFyc2VyIGRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9y
Cit7CisgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2Vy
ID09IF9wYXJzZXIpOworICAgIF9wYXJlbnQtPmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhF
cnJvcihlcnJvcik7Cit9CisKKy0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRh
UGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQcm92aWRlTWVkaWFEYXRhOihDTVNhbXBsZUJ1
ZmZlclJlZilzYW1wbGUgZm9yVHJhY2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lEIG1l
ZGlhVHlwZTooTlNTdHJpbmcgKiluc01lZGlhVHlwZSBmbGFnczooQVZTdHJlYW1EYXRhUGFyc2Vy
T3V0cHV0TWVkaWFEYXRhRmxhZ3MpZmxhZ3MKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURh
dGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7CisgICAgX3BhcmVudC0+ZGlk
UHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQodHJhY2tJRCwgc2FtcGxlLCBuc01lZGlhVHlwZSwg
ZmxhZ3MpOworfQorCitBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgorLSAo
dm9pZClzdHJlYW1EYXRhUGFyc2VyV2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxp
emF0aW9uRGF0YTooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBmb3JUcmFj
a0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQKK0FMTE9XX0RFUFJFQ0FURURfSU1QTEVN
RU5UQVRJT05TX0VORAoreworICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3Ry
ZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKKyAgICBfcGFyZW50LT53aWxsUHJvdmlkZUNvbnRl
bnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCh0cmFja0lEKTsKK30KKwor
QUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfQkVHSU4KKy0gKHZvaWQpc3RyZWFtRGF0
YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGE6KE5TRGF0YSAqKWluaXREYXRhIGZv
clRyYWNrSUQ6KENNUGVyc2lzdGVudFRyYWNrSUQpdHJhY2tJRAorQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5ECit7CisgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2Vy
LCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOworICAgIF9wYXJlbnQtPmRpZFByb3ZpZGVD
b250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoaW5pdERhdGEsIHRy
YWNrSUQpOworfQorQGVuZAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNwcmFnbWEgbWFyayAt
CisjcHJhZ21hIG1hcmsgTWVkaWFEZXNjcmlwdGlvbkFWRk9iakMKKworY2xhc3MgTWVkaWFEZXNj
cmlwdGlvbkFWRk9iakMgZmluYWwgOiBwdWJsaWMgTWVkaWFEZXNjcmlwdGlvbiB7CitwdWJsaWM6
CisgICAgc3RhdGljIFJlZjxNZWRpYURlc2NyaXB0aW9uQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRU
cmFjayogdHJhY2spIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFEZXNjcmlwdGlvbkFWRk9i
akModHJhY2spKTsgfQorICAgIHZpcnR1YWwgfk1lZGlhRGVzY3JpcHRpb25BVkZPYmpDKCkgeyB9
CisKKyAgICBib29sIGlzVmlkZW8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzVmlkZW87
IH0KKyAgICBib29sIGlzQXVkaW8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzQXVkaW87
IH0KKyAgICBib29sIGlzVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNUZXh0OyB9
CisgICAgQXRvbVN0cmluZyBjb2RlYygpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICAv
LyBBdG9tU3RyaW5ncyBjYW4gb25seSBiZSBkZXN0cm95ZWQgZnJvbSB0aGUgc2FtZSB0aHJlYWQg
dGhleSdyZQorICAgICAgICAvLyBjcmVhdGVkIGluLiBTaW5jZSB0aGlzIHN0cnVjdHVyZSBpcyBj
cmVhdGVkIGluIGEgcGFyc2VyIHRocmVhZAorICAgICAgICAvLyBvbmx5IGNyZWF0ZSB0aGUgQXRv
bVN0cmluZyB0aGUgZmlyc3QgdGltZSB0aGlzIGZ1bmN0aW9uIGlzIGFjY2Vzc2VkCisgICAgICAg
IC8vIHdoaWNoIGlzIHByZXN1bWFibHkgb24gdGhlIG1haW4gdGhyZWFkLgorICAgICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBpZiAoIW1fY29kZWMpCisgICAgICAgICAgICBt
X2NvZGVjID0gQXRvbVN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oJm1fb3Jp
Z2luYWxDb2RlYyksIDQpOworICAgICAgICByZXR1cm4gKm1fY29kZWM7CisgICAgfQorCitwcml2
YXRlOgorICAgIE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2spCisg
ICAgICAgIDogbV9pc1ZpZGVvKFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFD
aGFyYWN0ZXJpc3RpY1Zpc3VhbF0pCisgICAgICAgICwgbV9pc0F1ZGlvKFt0cmFjayBoYXNNZWRp
YUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGVdKQorICAgICAgICAs
IG1faXNUZXh0KFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJp
c3RpY0xlZ2libGVdKQorICAgIHsKKyAgICAgICAgTlNBcnJheSogZm9ybWF0RGVzY3JpcHRpb25z
ID0gW3RyYWNrIGZvcm1hdERlc2NyaXB0aW9uc107CisgICAgICAgIENNRm9ybWF0RGVzY3JpcHRp
b25SZWYgZGVzY3JpcHRpb24gPSBbZm9ybWF0RGVzY3JpcHRpb25zIGNvdW50XSA/IChfX2JyaWRn
ZSBDTUZvcm1hdERlc2NyaXB0aW9uUmVmKVtmb3JtYXREZXNjcmlwdGlvbnMgb2JqZWN0QXRJbmRl
eDowXSA6IDA7CisgICAgICAgIGlmIChkZXNjcmlwdGlvbikgeworICAgICAgICAgICAgbV9vcmln
aW5hbENvZGVjID0gUEFMOjpzb2Z0TGlua19Db3JlTWVkaWFfQ01Gb3JtYXREZXNjcmlwdGlvbkdl
dE1lZGlhU3ViVHlwZShkZXNjcmlwdGlvbik7CisgICAgICAgICAgICBDRlN0cmluZ1JlZiBvcmln
aW5hbEZvcm1hdEtleSA9IFBBTDo6Y2FuTG9hZF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRp
b25FeHRlbnNpb25fUHJvdGVjdGVkQ29udGVudE9yaWdpbmFsRm9ybWF0KCkgPyBQQUw6OmdldF9D
b3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fUHJvdGVjdGVkQ29udGVudE9y
aWdpbmFsRm9ybWF0KCkgOiBDRlNUUigiQ29tbW9uRW5jcnlwdGlvbk9yaWdpbmFsRm9ybWF0Iik7
CisgICAgICAgICAgICBDRlR5cGVSZWYgb3JpZ2luYWxGb3JtYXQgPSBDTUZvcm1hdERlc2NyaXB0
aW9uR2V0RXh0ZW5zaW9uKGRlc2NyaXB0aW9uLCBvcmlnaW5hbEZvcm1hdEtleSk7CisgICAgICAg
ICAgICBpZiAob3JpZ2luYWxGb3JtYXQgJiYgQ0ZHZXRUeXBlSUQob3JpZ2luYWxGb3JtYXQpID09
IENGTnVtYmVyR2V0VHlwZUlEKCkpCisgICAgICAgICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZSgo
Q0ZOdW1iZXJSZWYpb3JpZ2luYWxGb3JtYXQsIGtDRk51bWJlclNJbnQzMlR5cGUsICZtX29yaWdp
bmFsQ29kZWMpOworICAgICAgICB9CisgICAgfQorCisgICAgRm91ckNoYXJDb2RlIG1fb3JpZ2lu
YWxDb2RlYzsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPEF0b21TdHJpbmc+IG1fY29kZWM7CisgICAg
Ym9vbCBtX2lzVmlkZW87CisgICAgYm9vbCBtX2lzQXVkaW87CisgICAgYm9vbCBtX2lzVGV4dDsK
K307CisKKyNwcmFnbWEgbWFyayAtCisjcHJhZ21hIG1hcmsgU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQworCitNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQzo6aXNDb250ZW50VHlwZVN1cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYgdHlwZSkK
K3sKKyAgICBTdHJpbmcgZXh0ZW5kZWRUeXBlID0gdHlwZS5yYXcoKTsKKyAgICBTdHJpbmcgb3V0
cHV0Q29kZWNzID0gdHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigp
KTsKKyAgICBpZiAoIW91dHB1dENvZGVjcy5pc0VtcHR5KCkgJiYgW1BBTDo6Z2V0QVZTdHJlYW1E
YXRhUGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dE1JTUVD
b2RlY1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFyYW1ldGVyOildKSB7CisgICAgICAgIG91
dHB1dENvZGVjcyA9IFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgb3V0cHV0TUlN
RUNvZGVjUGFyYW1ldGVyRm9ySW5wdXRNSU1FQ29kZWNQYXJhbWV0ZXI6b3V0cHV0Q29kZWNzXTsK
KyAgICAgICAgZXh0ZW5kZWRUeXBlID0gbWFrZVN0cmluZyh0eXBlLmNvbnRhaW5lclR5cGUoKSwg
IjsgY29kZWNzPVwiIiwgb3V0cHV0Q29kZWNzLCAiXCIiKTsKKyAgICB9CisKKyAgICBhdXRvJiBz
dHJlYW1EYXRhUGFyc2VyQ2FjaGUgPSBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjpz
aW5nbGV0b24oKTsKKyAgICBpZiAoc3RyZWFtRGF0YVBhcnNlckNhY2hlLmlzQXZhaWxhYmxlKCkp
CisgICAgICAgIHJldHVybiBzdHJlYW1EYXRhUGFyc2VyQ2FjaGUuY2FuRGVjb2RlVHlwZShleHRl
bmRlZFR5cGUpOworCisgICAgYXV0byYgYXNzZXRDYWNoZSA9IEFWQXNzZXRNSU1FVHlwZUNhY2hl
OjpzaW5nbGV0b24oKTsKKyAgICBpZiAoYXNzZXRDYWNoZS5pc0F2YWlsYWJsZSgpKQorICAgICAg
ICByZXR1cm4gYXNzZXRDYWNoZS5jYW5EZWNvZGVUeXBlKGV4dGVuZGVkVHlwZSk7CisKKyAgICBy
ZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKK30K
KworU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygp
CisgICAgOiBtX3BhcnNlcihhZG9wdE5TKFtQQUw6OmFsbG9jQVZTdHJlYW1EYXRhUGFyc2VySW5z
dGFuY2UoKSBpbml0XSkpCisgICAgLCBtX2RlbGVnYXRlKGFkb3B0TlMoW1tXZWJBVlN0cmVhbURh
dGFQYXJzZXJMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJzZXI6bV9wYXJzZXIuZ2V0KCkgcGFy
ZW50OnRoaXNdKSkKK3sKK30KKworU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakMoKQoreworICAgIG1fZGVsZWdhdGUuZ2V0KCkucGFyZW50ID0gbnVs
bHB0cjsKKyAgICBbbV9kZWxlZ2F0ZSBpbnZhbGlkYXRlXTsKK30KKwordm9pZCBTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRhdGEs
IEFwcGVuZEZsYWdzIGZsYWdzKQoreworICAgIGF1dG8gc2hhcmVkRGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkRGF0YS0+
Y3JlYXRlTlNEYXRhKCk7CisgICAgaWYgKG1fcGFyc2VyU3RhdGVXYXNSZXNldCB8fCBmbGFncyA9
PSBBcHBlbmRGbGFnczo6RGlzY29udGludWl0eSkKKyAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0
cmVhbURhdGE6bnNEYXRhLmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURhdGFQYXJzZXJTdHJlYW1E
YXRhRGlzY29udGludWl0eV07CisgICAgZWxzZQorICAgICAgICBbbV9wYXJzZXIgYXBwZW5kU3Ry
ZWFtRGF0YTpuc0RhdGEuZ2V0KCldOworICAgIG1fcGFyc2VyU3RhdGVXYXNSZXNldCA9IGZhbHNl
OworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmZsdXNoUGVuZGluZ01lZGlh
RGF0YSgpCit7CisgICAgW21fcGFyc2VyIHByb3ZpZGVQZW5kaW5nTWVkaWFEYXRhXTsKK30KKwor
dm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRh
Rm9yVHJhY2tJRChib29sIHNob3VsZCwgdWludDY0X3QgdHJhY2tJRCkKK3sKKyAgICBbbV9wYXJz
ZXIgc2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YTpzaG91bGQgZm9yVHJhY2tJRDp0cmFja0lEXTsK
K30KKworYm9vbCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpzaG91bGRQcm92aWRlTWVkaWFk
YXRhRm9yVHJhY2tJRCh1aW50NjRfdCB0cmFja0lEKQoreworICAgIHJldHVybiBbbV9wYXJzZXIg
c2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQ6dHJhY2tJRF07Cit9CisKK3ZvaWQgU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6cmVzZXRQYXJzZXJTdGF0ZSgpCit7CisgICAgbV9wYXJz
ZXJTdGF0ZVdhc1Jlc2V0ID0gdHJ1ZTsKKyAgICBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5p
dGlhbGl6YXRpb25TZWdtZW50ID0gdHJ1ZTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjppbnZhbGlkYXRlKCkKK3sKKyAgICBbbV9kZWxlZ2F0ZSBpbnZhbGlkYXRlXTsKKyAg
ICBtX2RlbGVnYXRlID0gbnVsbHB0cjsKKyAgICBtX3BhcnNlciA9IG51bGxwdHI7Cit9CisKK3Zv
aWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChB
VkFzc2V0KiBhc3NldCkKK3sKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBzdHJvbmdUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGFzc2V0ID0gcmV0YWluUHRyKGFzc2V0KV0geworICAgICAgICBt
X2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50ID0gZmFsc2U7CisK
KyAgICAgICAgaWYgKCFtX2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2spCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgSW5pdGlhbGl6YXRpb25TZWdtZW50IHNlZ21lbnQ7
CisKKyAgICAgICAgaWYgKFthc3NldCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG92ZXJh
bGxEdXJhdGlvbkhpbnQpXSkKKyAgICAgICAgICAgIHNlZ21lbnQuZHVyYXRpb24gPSBQQUw6OnRv
TWVkaWFUaW1lKFthc3NldCBvdmVyYWxsRHVyYXRpb25IaW50XSk7CisKKyAgICAgICAgaWYgKHNl
Z21lbnQuZHVyYXRpb24uaXNJbnZhbGlkKCkgfHwgc2VnbWVudC5kdXJhdGlvbiA9PSBNZWRpYVRp
bWU6Onplcm9UaW1lKCkpCisgICAgICAgICAgICBzZWdtZW50LmR1cmF0aW9uID0gUEFMOjp0b01l
ZGlhVGltZShbYXNzZXQgZHVyYXRpb25dKTsKKworICAgICAgICBmb3IgKEFWQXNzZXRUcmFjayog
dHJhY2sgaW4gW2Fzc2V0IHRyYWNrc10pIHsKKyAgICAgICAgICAgIGlmIChbdHJhY2sgaGFzTWVk
aWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlXSkgeworICAgICAg
ICAgICAgICAgIC8vIEZJWE1FKDEyNTE2MSk6IEhhbmRsZSBpbi1iYW5kIHRleHQgdHJhY2tzLgor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljVmlz
dWFsXSkgeworICAgICAgICAgICAgICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRp
YWxpemF0aW9uU2VnbWVudDo6VmlkZW9UcmFja0luZm9ybWF0aW9uIGluZm87CisgICAgICAgICAg
ICAgICAgYXV0byB2aWRlb1RyYWNrID0gVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OmNyZWF0ZSh0cmFjayk7CisgICAgICAgICAgICAgICAgaW5mby50cmFjayA9IHZpZGVvVHJh
Y2suY29weVJlZigpOworICAgICAgICAgICAgICAgIGluZm8uZGVzY3JpcHRpb24gPSBNZWRpYURl
c2NyaXB0aW9uQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKKyAgICAgICAgICAgICAgICBzZWdtZW50
LnZpZGVvVHJhY2tzLmFwcGVuZChpbmZvKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoW3RyYWNr
IGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJsZV0pIHsK
KyAgICAgICAgICAgICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlv
blNlZ21lbnQ6OkF1ZGlvVHJhY2tJbmZvcm1hdGlvbiBpbmZvOworICAgICAgICAgICAgICAgIGF1
dG8gYXVkaW9UcmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVh
dGUodHJhY2spOworICAgICAgICAgICAgICAgIGluZm8udHJhY2sgPSBhdWRpb1RyYWNrLmNvcHlS
ZWYoKTsKKyAgICAgICAgICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVkaWFEZXNjcmlwdGlv
bkFWRk9iakM6OmNyZWF0ZSh0cmFjayk7CisgICAgICAgICAgICAgICAgc2VnbWVudC5hdWRpb1Ry
YWNrcy5hcHBlbmQoaW5mbyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEZJWE1F
KDEyNTE2MSkgICAgOiBBZGQgVGV4dFRyYWNrIHN1cHBvcnQKKyAgICAgICAgfQorCisgICAgICAg
IG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhXVEZNb3ZlKHNlZ21lbnQpKTsK
KyAgICB9KTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRGYWlsVG9Q
YXJzZVN0cmVhbURhdGFXaXRoRXJyb3IoTlNFcnJvciogZXJyb3IpCit7CisgICAgY2FsbE9uTWFp
blRocmVhZChbdGhpcywgc3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBlcnJvciA9IHJldGFp
blB0cihlcnJvcildIHsKKyAgICAgICAgaWYgKG1fZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJz
aW5nQ2FsbGJhY2spCisgICAgICAgICAgICBtX2RpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2lu
Z0NhbGxiYWNrKGVycm9yLmdldCgpLmNvZGUpOworICAgIH0pOworfQorCit2b2lkIFNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKHVpbnQ2NF90
IHRyYWNrSUQsIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBt
ZWRpYVR5cGUsIHVuc2lnbmVkIGZsYWdzKQoreworICAgIFVOVVNFRF9QQVJBTShmbGFncyk7Cisg
ICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgc3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBz
YW1wbGVCdWZmZXIgPSByZXRhaW5QdHIoc2FtcGxlQnVmZmVyKSwgdHJhY2tJRCwgbWVkaWFUeXBl
ID0gbWVkaWFUeXBlXSB7CisgICAgICAgIGlmICghbV9kaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJh
Y2spCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKG1fZGlzY2FyZFNhbXBsZXNV
bnRpbE5leHRJbml0aWFsaXphdGlvblNlZ21lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgYXV0byBtZWRpYVNhbXBsZSA9IE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKHNhbXBs
ZUJ1ZmZlci5nZXQoKSwgdHJhY2tJRCk7CisKKyAgICAgICAgaWYgKG1lZGlhU2FtcGxlLT5pc0hv
bW9nZW5lb3VzKCkpIHsKKyAgICAgICAgICAgIG1fZGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNr
KFdURk1vdmUobWVkaWFTYW1wbGUpLCB0cmFja0lELCBtZWRpYVR5cGUpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChhdXRvJiBzYW1wbGUgOiBtZWRpYVNh
bXBsZS0+ZGl2aWRlSW50b0hvbW9nZW5lb3VzU2FtcGxlcygpKQorICAgICAgICAgICAgbV9kaWRQ
cm92aWRlTWVkaWFEYXRhQ2FsbGJhY2soV1RGTW92ZShzYW1wbGUpLCB0cmFja0lELCBtZWRpYVR5
cGUpOworICAgIH0pOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OndpbGxQ
cm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHVpbnQ2
NF90IHRyYWNrSUQpCit7CisgICAgbV93aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlh
bGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrKHRyYWNrSUQpOworfQorCit2b2lkIFNvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxp
emF0aW9uRGF0YUZvclRyYWNrSUQoTlNEYXRhKiBuc0luaXREYXRhLCB1aW50NjRfdCB0cmFja0lE
KQoreworICAgIGF1dG8gaW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVhdGUobnNJbml0RGF0YS5s
ZW5ndGgpOworICAgIFtuc0luaXREYXRhIGdldEJ5dGVzOmluaXREYXRhLT5kYXRhKCkgbGVuZ3Ro
OmluaXREYXRhLT5sZW5ndGgoKV07CisKKyAgICBtX2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVz
dEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayhXVEZNb3ZlKGluaXREYXRhKSwg
dHJhY2tJRCk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApp
bmRleCBkZmExMzRiNGQ2OGZkYjc0NzM0Mzc4ZDlmOWRkM2JkODQxZjMzZDY1Li5hZjEzMWVkMWZh
MDIxOTBiOTg4NmNlOTUwZDNlOTg2ODBjNDMxYzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKQEAgLTI3LDYgKzI3LDcgQEAK
IAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpICYmIFVTRShBVkZPVU5EQVRJT04pCiAKKyNpbmNs
dWRlICJTb3VyY2VCdWZmZXJQYXJzZXIuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRl
LmgiCiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZ3JvdXAuaD4KICNpbmNsdWRlIDx3dGYvQm94Lmg+CkBA
IC0zOCwxOCArMzksMTcgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV1RG
U2VtYXBob3JlLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9tU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+
CiAKLU9CSkNfQ0xBU1MgQVZBc3NldDsKIE9CSkNfQ0xBU1MgQVZTdHJlYW1EYXRhUGFyc2VyOwog
T0JKQ19DTEFTUyBBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXI7CiBPQkpDX0NMQVNTIEFWU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyOwogT0JKQ19DTEFTUyBOU0RhdGE7CiBPQkpDX0NMQVNTIE5T
RXJyb3I7CiBPQkpDX0NMQVNTIE5TT2JqZWN0OwotT0JKQ19DTEFTUyBXZWJBVlN0cmVhbURhdGFQ
YXJzZXJMaXN0ZW5lcjsKIE9CSkNfQ0xBU1MgV2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVy
OwogCiB0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJS
ZWY7CkBAIC04NiwzNCArODYsMjcgQEAgY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMg
ZmluYWwKICNlbmRpZgogewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM+IGNyZWF0ZShNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKik7CisgICAgc3Rh
dGljIFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gY3JlYXRlKE1lZGlhU291cmNlUHJp
dmF0ZUFWRk9iakMqLCBSZWY8U291cmNlQnVmZmVyUGFyc2VyPiYmKTsKICAgICB2aXJ0dWFsIH5T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQygpOwogCiAgICAgdm9pZCBjbGVhck1lZGlhU291cmNl
KCkgeyBtX21lZGlhU291cmNlID0gbnVsbHB0cjsgfQogCi0gICAgLy8gQVZTdHJlYW1EYXRhUGFy
c2VyIGRlbGVnYXRlIG1ldGhvZHMKLSAgICB2b2lkIGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQo
QVZBc3NldCopOwotICAgIHZvaWQgZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yKE5T
RXJyb3IqKTsKLSAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGludCB0cmFj
a0lELCBDTVNhbXBsZUJ1ZmZlclJlZiwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVk
IGZsYWdzKTsKLSAgICB2b2lkIGRpZFJlYWNoRW5kT2ZUcmFja1dpdGhUcmFja0lEKGludCB0cmFj
a0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7Ci0gICAgdm9pZCB3aWxsUHJvdmlkZUNvbnRl
bnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChpbnQgdHJhY2tJRCk7Ci0g
ICAgdm9pZCBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JU
cmFja0lEKE5TRGF0YSosIGludCB0cmFja0lELCBCb3g8QmluYXJ5U2VtYXBob3JlPik7Ci0KLSAg
ICBib29sIHByb2Nlc3NDb2RlZEZyYW1lKGludCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJlZiwg
Y29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpOworICAgIHZvaWQgd2lsbFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQodWludDY0X3QgdHJhY2tJRCk7Cisg
ICAgdm9pZCBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JU
cmFja0lEKFJlZjxVaW50OEFycmF5PiYmLCB1aW50NjRfdCB0cmFja0lELCBCb3g8QmluYXJ5U2Vt
YXBob3JlPik7CiAKICAgICBib29sIGhhc1ZpZGVvKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNTZWxl
Y3RlZFZpZGVvKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNBdWRpbygpIGNvbnN0OwogCi0gICAgdm9p
ZCB0cmFja0RpZENoYW5nZUVuYWJsZWQoVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMqKTsKLSAgICB2b2lkIHRyYWNrRGlkQ2hhbmdlRW5hYmxlZChBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyopOworICAgIHZvaWQgdHJhY2tEaWRDaGFuZ2VTZWxlY3RlZChWaWRl
b1RyYWNrUHJpdmF0ZSYsIGJvb2wgc2VsZWN0ZWQpOworICAgIHZvaWQgdHJhY2tEaWRDaGFuZ2VF
bmFibGVkKEF1ZGlvVHJhY2tQcml2YXRlJiwgYm9vbCBlbmFibGVkKTsKIAogICAgIHZvaWQgd2ls
bFNlZWsoKTsKICAgICBNZWRpYVRpbWUgZmFzdFNlZWtUaW1lRm9yTWVkaWFUaW1lKGNvbnN0IE1l
ZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVUaHJlc2hvbGQsIGNvbnN0IE1lZGlh
VGltZSYgcG9zaXRpdmVUaHJlc2hvbGQpOwogICAgIEZsb2F0U2l6ZSBuYXR1cmFsU2l6ZSgpOwog
Ci0gICAgaW50IHByb3RlY3RlZFRyYWNrSUQoKSBjb25zdCB7IHJldHVybiBtX3Byb3RlY3RlZFRy
YWNrSUQ7IH0KLSAgICBBVlN0cmVhbURhdGFQYXJzZXIqIHBhcnNlcigpIGNvbnN0IHsgcmV0dXJu
IG1fcGFyc2VyLmdldCgpOyB9CisgICAgdWludDY0X3QgcHJvdGVjdGVkVHJhY2tJRCgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJvdGVjdGVkVHJhY2tJRDsgfQorICAgIEFWU3RyZWFtRGF0YVBhcnNlciog
cGFyc2VyKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDRE1TZXNzaW9uKENETVNlc3Npb25NZWRpYVNv
dXJjZUFWRk9iakMqKTsKICAgICB2b2lkIHNldENETUluc3RhbmNlKENETUluc3RhbmNlKik7CiAg
ICAgdm9pZCBhdHRlbXB0VG9EZWNyeXB0KCk7CkBAIC0xNDgsNyArMTQxLDEyIEBAIHB1YmxpYzoK
ICNlbmRpZgogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqKTsKKyAgICBleHBsaWNpdCBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiwgUmVmPFNvdXJjZUJ1
ZmZlclBhcnNlcj4mJik7CisKKyAgICB1c2luZyBJbml0aWFsaXphdGlvblNlZ21lbnQgPSBTb3Vy
Y2VCdWZmZXJQYXJzZXI6OkluaXRpYWxpemF0aW9uU2VnbWVudDsKKyAgICB2b2lkIGRpZFBhcnNl
SW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVudCYmKTsKKyAgICB2b2lkIGRp
ZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhpbnQzMl90KTsKKyAgICB2b2lkIGRpZFByb3Zp
ZGVNZWRpYURhdGFGb3JUcmFja0lEKFJlZjxNZWRpYVNhbXBsZT4mJiwgdWludDY0X3QgdHJhY2tJ
RCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpOwogCiAgICAgLy8gU291cmNlQnVmZmVyUHJpdmF0
ZSBvdmVycmlkZXMKICAgICB2b2lkIHNldENsaWVudChTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50
KikgZmluYWw7CkBAIC0xNjgsMzIgKzE2NiwzMiBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJN
aW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lKGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlk
ZTsKICAgICBib29sIGNhblN3aXRjaFRvVHlwZShjb25zdCBDb250ZW50VHlwZSYpIGZpbmFsOwog
Ci0gICAgdm9pZCBkaWRCZWNvbWVSZWFkeUZvck1vcmVTYW1wbGVzKGludCB0cmFja0lEKTsKKyAg
ICB2b2lkIGRpZEJlY29tZVJlYWR5Rm9yTW9yZVNhbXBsZXModWludDY0X3QgdHJhY2tJRCk7CiAg
ICAgdm9pZCBhcHBlbmRDb21wbGV0ZWQoKTsKICAgICB2b2lkIGRlc3Ryb3lQYXJzZXIoKTsKICAg
ICB2b2lkIGRlc3Ryb3lSZW5kZXJlcnMoKTsKKyAgICB2b2lkIGNsZWFyVHJhY2tzKCk7CiAKICAg
ICB2b2lkIGZsdXNoVmlkZW8oKTsKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JF
R0lOCiAgICAgdm9pZCBmbHVzaChBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIgKik7CiAgICAg
QUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKIAotICAgIFZlY3RvcjxSZWZQdHI8Vmlk
ZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+PiBtX3ZpZGVvVHJhY2tzOwotICAgIFZl
Y3RvcjxSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+PiBtX2F1ZGlv
VHJhY2tzOworICAgIFZlY3RvcjxSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+PiBtX3ZpZGVvVHJh
Y2tzOworICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+PiBtX2F1ZGlvVHJhY2tz
OwogICAgIFZlY3RvcjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQ0Vycm9yQ2xpZW50Kj4gbV9l
cnJvckNsaWVudHM7CiAKICAgICBXZWFrUHRyRmFjdG9yeTxTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQz4gbV9hcHBlbmRXZWFrRmFjdG9yeTsKIAotICAgIFJldGFpblB0cjxBVlN0cmVhbURhdGFQ
YXJzZXI+IG1fcGFyc2VyOwotICAgIFJldGFpblB0cjxBVkFzc2V0PiBtX2Fzc2V0OworICAgIFJl
ZjxTb3VyY2VCdWZmZXJQYXJzZXI+IG1fcGFyc2VyOwogICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcj4gbV9kaXNwbGF5TGF5ZXI7CiAgICAgQUxMT1dfTkVXX0FQSV9XSVRI
T1VUX0dVQVJEU19CRUdJTgotICAgIEhhc2hNYXA8aW50LCBSZXRhaW5QdHI8QVZTYW1wbGVCdWZm
ZXJBdWRpb1JlbmRlcmVyPj4gbV9hdWRpb1JlbmRlcmVyczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyPiwgRGVmYXVsdEhhc2g8dWlu
dDY0X3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj4gbV9h
dWRpb1JlbmRlcmVyczsKICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAotICAg
IFJldGFpblB0cjxXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcj4gbV9kZWxlZ2F0ZTsKICAg
ICBSZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyPiBtX2Vycm9yTGlzdGVu
ZXI7CiAgICAgUmV0YWluUHRyPE5TRXJyb3I+IG1faGRjcEVycm9yOwogICAgIEJveDxCaW5hcnlT
ZW1hcGhvcmU+IG1faGFzU2Vzc2lvblNlbWFwaG9yZTsKKyAgICBCb3g8U2VtYXBob3JlPiBtX2Fi
b3J0U2VtYXBob3JlOwogICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX2dyb3VwX3Q+IG1faXNBcHBl
bmRpbmdHcm91cDsKICAgICBSZWZQdHI8V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uPiBtX2Rl
Y29tcHJlc3Npb25TZXNzaW9uOwogCkBAIC0yMTEsMTEgKzIwOSw5IEBAIHByaXZhdGU6CiAgICAg
T3B0aW9uYWw8RmxvYXRTaXplPiBtX2NhY2hlZFNpemU7CiAgICAgRmxvYXRTaXplIG1fY3VycmVu
dFNpemU7CiAgICAgYm9vbCBtX3BhcnNpbmdTdWNjZWVkZWQgeyB0cnVlIH07Ci0gICAgYm9vbCBt
X3BhcnNlclN0YXRlV2FzUmVzZXQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9kaXNjYXJkU2FtcGxl
c1VudGlsTmV4dEluaXRpYWxpemF0aW9uU2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3dh
aXRpbmdGb3JLZXkgeyB0cnVlIH07Ci0gICAgaW50IG1fZW5hYmxlZFZpZGVvVHJhY2tJRCB7IC0x
IH07Ci0gICAgaW50IG1fcHJvdGVjdGVkVHJhY2tJRCB7IC0xIH07CisgICAgdWludDY0X3QgbV9l
bmFibGVkVmlkZW9UcmFja0lEIHsgbm90Rm91bmQgfTsKKyAgICB1aW50NjRfdCBtX3Byb3RlY3Rl
ZFRyYWNrSUQgeyBub3RGb3VuZCB9OwogICAgIHVpbnQ2NF90IG1fbWFwSUQ7CiAKICNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggZDczNTc3NWNjOGYwNGI4YjAyMWIzNWM3MDE2
OTViZDI0ZjZmOGRhOC4uMjAwYzg0Yjg2MDhjZWVlM2UzNWY3ZjNjYzQzZWNjZTMwNDA3N2EwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMubW0KQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbXBvcnQgIk1lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMuaCIKICNpbXBvcnQgIk5vdEltcGxlbWVudGVkLmgiCiAjaW1wb3J0ICJTaGFyZWRCdWZm
ZXIuaCIKKyNpbXBvcnQgIlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCIKICNpbXBvcnQgIlNv
dXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaCIKICNpbXBvcnQgIlRpbWVSYW5nZXMuaCIKICNpbXBv
cnQgIlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgiCkBAIC04MiwxNTMgKzgz
LDYgQEAgLSAodm9pZClhZGRTdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilz
dHJlYW1EYXRhUGFyc2VyOwogLSAodm9pZClyZW1vdmVTdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVh
bURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyOwogQGVuZAogCi0jcHJhZ21hIG1hcmsgLQot
I3ByYWdtYSBtYXJrIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyCi0KLUBpbnRlcmZhY2Ug
V2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgOiBOU09iamVjdDxBVlN0cmVhbURhdGFQYXJz
ZXJPdXRwdXRIYW5kbGluZz4gewotICAgIFdlYWtQdHI8V2ViQ29yZTo6U291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM+IF9wYXJlbnQ7Ci0gICAgQm94PFNlbWFwaG9yZT4gX2Fib3J0U2VtYXBob3Jl
OwotICAgIEFWU3RyZWFtRGF0YVBhcnNlciogX3BhcnNlcjsKLX0KLUBwcm9wZXJ0eSAoYXNzaWdu
KSBXZWFrUHRyPFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBwYXJlbnQ7Ci1A
cHJvcGVydHkgKGFzc2lnbikgQm94PFNlbWFwaG9yZT4gYWJvcnRTZW1hcGhvcmU7Ci0tIChpZClp
bml0V2l0aFBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyKilwYXJzZXIgcGFyZW50OihXZWFrUHRy
PFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPilwYXJlbnQ7Ci1AZW5kCi0KLUBp
bXBsZW1lbnRhdGlvbiBXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcgotLSAoaWQpaW5pdFdp
dGhQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciopcGFyc2VyIHBhcmVudDooV2Vha1B0cjxXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4pcGFyZW50Ci17Ci0gICAgc2VsZiA9IFtz
dXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBB
U1NFUlQocGFyZW50KTsKLSAgICBfcGFyZW50ID0gcGFyZW50OwotICAgIF9wYXJzZXIgPSBwYXJz
ZXI7Ci0gICAgW19wYXJzZXIgc2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgcmV0dXJuIHNlbGY7Ci19
Ci0KLUBzeW50aGVzaXplIHBhcmVudD1fcGFyZW50OwotQHN5bnRoZXNpemUgYWJvcnRTZW1hcGhv
cmU9X2Fib3J0U2VtYXBob3JlOwotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbX3BhcnNlciBz
ZXREZWxlZ2F0ZTpuaWxdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClpbnZh
bGlkYXRlCi17Ci0gICAgW19wYXJzZXIgc2V0RGVsZWdhdGU6bmlsXTsKLSAgICBfcGFyc2VyID0g
bnVsbHB0cjsKLX0KLQotLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJz
ZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQ6KEFWQXNzZXQg
Kilhc3NldAotewotICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0
YVBhcnNlciA9PSBfcGFyc2VyKTsKLQotICAgIFJldGFpblB0cjxBVkFzc2V0PiBwcm90ZWN0ZWRB
c3NldCA9IGFzc2V0OwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3BhcmVudCA9IF9wYXJlbnQsIHBy
b3RlY3RlZEFzc2V0ID0gV1RGTW92ZShwcm90ZWN0ZWRBc3NldCldIHsKLSAgICAgICAgaWYgKHBh
cmVudCkKLSAgICAgICAgICAgIHBhcmVudC0+ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChwcm90
ZWN0ZWRBc3NldC5nZXQoKSk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpc3RyZWFtRGF0YVBhcnNl
cjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQYXJzZVN0cmVhbURh
dGFBc0Fzc2V0OihBVkFzc2V0ICopYXNzZXQgd2l0aERpc2NvbnRpbnVpdHk6KEJPT0wpZGlzY29u
dGludWl0eQotewotICAgIFVOVVNFRF9QQVJBTShkaXNjb250aW51aXR5KTsKLSAgICBBU1NFUlRf
VU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7Ci0K
LSAgICBSZXRhaW5QdHI8QVZBc3NldD4gcHJvdGVjdGVkQXNzZXQgPSBhc3NldDsKLSAgICBjYWxs
T25NYWluVGhyZWFkKFtwYXJlbnQgPSBfcGFyZW50LCBwcm90ZWN0ZWRBc3NldCA9IFdURk1vdmUo
cHJvdGVjdGVkQXNzZXQpXSB7Ci0gICAgICAgIGlmIChwYXJlbnQpCi0gICAgICAgICAgICBwYXJl
bnQtPmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQocHJvdGVjdGVkQXNzZXQuZ2V0KCkpOwotICAg
IH0pOwotfQotCi0tICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAq
KXN0cmVhbURhdGFQYXJzZXIgZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yOihOU0Vy
cm9yICopZXJyb3IKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVh
bURhdGFQYXJzZXIgPT0gX3BhcnNlcik7Ci0KLSAgICBSZXRhaW5QdHI8TlNFcnJvcj4gcHJvdGVj
dGVkRXJyb3IgPSBlcnJvcjsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwYXJlbnQgPSBfcGFyZW50
LCBwcm90ZWN0ZWRFcnJvciA9IFdURk1vdmUocHJvdGVjdGVkRXJyb3IpXSB7Ci0gICAgICAgIGlm
IChwYXJlbnQpCi0gICAgICAgICAgICBwYXJlbnQtPmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdp
dGhFcnJvcihwcm90ZWN0ZWRFcnJvci5nZXQoKSk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpc3Ry
ZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQ
cm92aWRlTWVkaWFEYXRhOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGUgZm9yVHJhY2tJRDooQ01Q
ZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lEIG1lZGlhVHlwZTooTlNTdHJpbmcgKiluc01lZGlhVHlw
ZSBmbGFnczooQVZTdHJlYW1EYXRhUGFyc2VyT3V0cHV0TWVkaWFEYXRhRmxhZ3MpZmxhZ3MKLXsK
LSAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURhdGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0g
X3BhcnNlcik7Ci0KLSAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHByb3RlY3RlZFNh
bXBsZSA9IHNhbXBsZTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwYXJlbnQgPSBfcGFyZW50LCBw
cm90ZWN0ZWRTYW1wbGUgPSBXVEZNb3ZlKHByb3RlY3RlZFNhbXBsZSksIHRyYWNrSUQsIG1lZGlh
VHlwZSA9IFN0cmluZyhuc01lZGlhVHlwZSksIGZsYWdzXSB7Ci0gICAgICAgIGlmIChwYXJlbnQp
Ci0gICAgICAgICAgICBwYXJlbnQtPmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKHRyYWNr
SUQsIHByb3RlY3RlZFNhbXBsZS5nZXQoKSwgbWVkaWFUeXBlLCBmbGFncyk7Ci0gICAgfSk7Ci19
Ci0KLS0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFt
RGF0YVBhcnNlciBkaWRSZWFjaEVuZE9mVHJhY2tXaXRoVHJhY2tJRDooQ01QZXJzaXN0ZW50VHJh
Y2tJRCl0cmFja0lEIG1lZGlhVHlwZTooTlNTdHJpbmcgKiluc01lZGlhVHlwZQotewotICAgIEFT
U0VSVF9VTlVTRUQoc3RyZWFtRGF0YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2Vy
KTsKLQotICAgIGNhbGxPbk1haW5UaHJlYWQoW3BhcmVudCA9IF9wYXJlbnQsIHRyYWNrSUQsIG1l
ZGlhVHlwZSA9IFN0cmluZyhuc01lZGlhVHlwZSldIHsKLSAgICAgICAgaWYgKHBhcmVudCkKLSAg
ICAgICAgICAgIHBhcmVudC0+ZGlkUmVhY2hFbmRPZlRyYWNrV2l0aFRyYWNrSUQodHJhY2tJRCwg
bWVkaWFUeXBlKTsKLSAgICB9KTsKLX0KLQotQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfQkVHSU4KLS0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcldpbGxQcm92aWRlQ29udGVudEtleVJl
cXVlc3RJbml0aWFsaXphdGlvbkRhdGE6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQ
YXJzZXIgZm9yVHJhY2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lECi1BTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbURh
dGFQYXJzZXIsIHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7Ci0KLSAgICAvLyBXZSBtdXN0
IGNhbGwgc3luY2hyb25vdXNseSB0byB0aGUgbWFpbiB0aHJlYWQsIGFzIHRoZSBBVlN0cmVhbVNl
c3Npb24gbXVzdCBiZSBhc3NvY2lhdGVkCi0gICAgLy8gd2l0aCB0aGUgc3RyZWFtRGF0YVBhcnNl
ciBiZWZvcmUgdGhlIGRlbGVnYXRlIG1ldGhvZCByZXR1cm5zLgotICAgIEJveDxCaW5hcnlTZW1h
cGhvcmU+IHJlc3BvbmRlZFNlbWFwaG9yZSA9IEJveDxCaW5hcnlTZW1hcGhvcmU+OjpjcmVhdGUo
KTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwYXJlbnQgPSBfcGFyZW50LCB0cmFja0lELCByZXNw
b25kZWRTZW1hcGhvcmVdKCkgewotICAgICAgICBpZiAocGFyZW50KQotICAgICAgICAgICAgcGFy
ZW50LT53aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJh
Y2tJRCh0cmFja0lEKTsKLSAgICAgICAgcmVzcG9uZGVkU2VtYXBob3JlLT5zaWduYWwoKTsKLSAg
ICB9KTsKLQotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGlmIChyZXNwb25kZWRTZW1hcGhv
cmUtPndhaXRGb3IoMTAwX21zKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAo
X2Fib3J0U2VtYXBob3JlLT53YWl0Rm9yKDEwMF9tcykpIHsKLSAgICAgICAgICAgIF9hYm9ydFNl
bWFwaG9yZS0+c2lnbmFsKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9
Ci19Ci0KLUFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCi0tICh2b2lkKXN0
cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlk
UHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOihOU0RhdGEgKilpbml0
RGF0YSBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQKLUFMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0VORAotewotICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtRGF0
YVBhcnNlciwgc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLQotICAgIEJveDxCaW5hcnlT
ZW1hcGhvcmU+IGhhc1Nlc3Npb25TZW1hcGhvcmUgPSBCb3g8QmluYXJ5U2VtYXBob3JlPjo6Y3Jl
YXRlKCk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcGFyZW50ID0gX3BhcmVudCwgcHJvdGVjdGVk
SW5pdERhdGEgPSBSZXRhaW5QdHI8TlNEYXRhPihpbml0RGF0YSksIHRyYWNrSUQsIGhhc1Nlc3Np
b25TZW1hcGhvcmVdIHsKLSAgICAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAgIHBhcmVudC0+
ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChw
cm90ZWN0ZWRJbml0RGF0YS5nZXQoKSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNlbWFwaG9yZSk7Ci0g
ICAgfSk7Ci0KLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBpZiAoaGFzU2Vzc2lvblNlbWFw
aG9yZS0+d2FpdEZvcigxMDBfbXMpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlm
IChfYWJvcnRTZW1hcGhvcmUtPndhaXRGb3IoMTAwX21zKSkgewotICAgICAgICAgICAgX2Fib3J0
U2VtYXBob3JlLT5zaWduYWwoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
IH0KLX0KLUBlbmQKLQogQGludGVyZmFjZSBXZWJBVlNhbXBsZUJ1ZmZlckVycm9yTGlzdGVuZXIg
OiBOU09iamVjdCB7CiAgICAgV2Vha1B0cjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQz4gX3BhcmVudDsKICAgICBWZWN0b3I8UmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyPj4gX2xheWVyczsKQEAgLTM5MSw0MyArMjQ1LDYgQEAgQGVuZAogbmFtZXNwYWNlIFdl
YkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIFBBTDsKIAotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEg
bWFyayBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQwotCi1jbGFzcyBNZWRpYURlc2NyaXB0aW9uQVZG
T2JqQyBmaW5hbCA6IHB1YmxpYyBNZWRpYURlc2NyaXB0aW9uIHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrKiB0cmFj
aykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyh0cmFjaykp
OyB9Ci0gICAgdmlydHVhbCB+TWVkaWFEZXNjcmlwdGlvbkFWRk9iakMoKSB7IH0KLQotICAgIEF0
b21TdHJpbmcgY29kZWMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvZGVjOyB9Ci0gICAg
Ym9vbCBpc1ZpZGVvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1ZpZGVvOyB9Ci0gICAg
Ym9vbCBpc0F1ZGlvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0F1ZGlvOyB9Ci0gICAg
Ym9vbCBpc1RleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzVGV4dDsgfQotICAgIAot
cHJpdmF0ZToKLSAgICBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNr
KQotICAgICAgICA6IG1faXNWaWRlbyhbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1l
ZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWxdKQotICAgICAgICAsIG1faXNBdWRpbyhbdHJhY2sgaGFz
TWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNBdWRpYmxlXSkKLSAgICAg
ICAgLCBtX2lzVGV4dChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFj
dGVyaXN0aWNMZWdpYmxlXSkKLSAgICB7Ci0gICAgICAgIE5TQXJyYXkqIGZvcm1hdERlc2NyaXB0
aW9ucyA9IFt0cmFjayBmb3JtYXREZXNjcmlwdGlvbnNdOwotICAgICAgICBDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmIGRlc2NyaXB0aW9uID0gW2Zvcm1hdERlc2NyaXB0aW9ucyBjb3VudF0gPyAoX19i
cmlkZ2UgQ01Gb3JtYXREZXNjcmlwdGlvblJlZilbZm9ybWF0RGVzY3JpcHRpb25zIG9iamVjdEF0
SW5kZXg6MF0gOiAwOwotICAgICAgICBpZiAoZGVzY3JpcHRpb24pIHsKLSAgICAgICAgICAgIEZv
dXJDaGFyQ29kZSBjb2RlYyA9IENNRm9ybWF0RGVzY3JpcHRpb25HZXRNZWRpYVN1YlR5cGUoZGVz
Y3JpcHRpb24pOwotICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgb3JpZ2luYWxGb3JtYXRLZXkgPSBQ
QUw6OmNhbkxvYWRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1Byb3Rl
Y3RlZENvbnRlbnRPcmlnaW5hbEZvcm1hdCgpID8gUEFMOjpnZXRfQ29yZU1lZGlhX2tDTUZvcm1h
dERlc2NyaXB0aW9uRXh0ZW5zaW9uX1Byb3RlY3RlZENvbnRlbnRPcmlnaW5hbEZvcm1hdCgpIDog
Q0ZTVFIoIkNvbW1vbkVuY3J5cHRpb25PcmlnaW5hbEZvcm1hdCIpOwotICAgICAgICAgICAgQ0ZU
eXBlUmVmIG9yaWdpbmFsRm9ybWF0ID0gQ01Gb3JtYXREZXNjcmlwdGlvbkdldEV4dGVuc2lvbihk
ZXNjcmlwdGlvbiwgb3JpZ2luYWxGb3JtYXRLZXkpOwotICAgICAgICAgICAgaWYgKG9yaWdpbmFs
Rm9ybWF0ICYmIENGR2V0VHlwZUlEKG9yaWdpbmFsRm9ybWF0KSA9PSBDRk51bWJlckdldFR5cGVJ
RCgpKQotICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUoKENGTnVtYmVyUmVmKW9yaWdp
bmFsRm9ybWF0LCBrQ0ZOdW1iZXJTSW50MzJUeXBlLCAmY29kZWMpOwotICAgICAgICAgICAgbV9j
b2RlYyA9IEF0b21TdHJpbmcocmVpbnRlcnByZXRfY2FzdDxMQ2hhcio+KCZjb2RlYyksIDQpOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgQXRvbVN0cmluZyBtX2NvZGVjOwotICAgIGJvb2wgbV9p
c1ZpZGVvOwotICAgIGJvb2wgbV9pc0F1ZGlvOwotICAgIGJvb2wgbV9pc1RleHQ7Ci19OwotCiAj
cHJhZ21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDCiAK
QEAgLTQ2NSwxNCArMjgyLDEzIEBAIHN0YXRpYyB2b2lkIGJ1ZmZlcldhc0NvbnN1bWVkQ2FsbGJh
Y2soQ01Ob3RpZmljYXRpb25DZW50ZXJSZWYsIGNvbnN0IHZvaWQqIGxpc3RlCiAgICAgICAgIHNv
dXJjZUJ1ZmZlci0+YnVmZmVyV2FzQ29uc3VtZWQoKTsKIH0KIAotUmVmPFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDPiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKE1lZGlhU291
cmNlUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKK1JlZjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qz4gU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZShNZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDKiBwYXJlbnQsIFJlZjxTb3VyY2VCdWZmZXJQYXJzZXI+JiYgcGFyc2VyKQogewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKHBhcmVudCkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKHBh
cmVudCwgV1RGTW92ZShwYXJzZXIpKSk7CiB9CiAKLVNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiBw
YXJlbnQpCi0gICAgOiBtX3BhcnNlcihhZG9wdE5TKFtQQUw6OmFsbG9jQVZTdHJlYW1EYXRhUGFy
c2VySW5zdGFuY2UoKSBpbml0XSkpCi0gICAgLCBtX2RlbGVnYXRlKGFkb3B0TlMoW1tXZWJBVlN0
cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJzZXI6bV9wYXJzZXIuZ2V0
KCkgcGFyZW50Om1ha2VXZWFrUHRyKCp0aGlzKV0pKQorU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMq
IHBhcmVudCwgUmVmPFNvdXJjZUJ1ZmZlclBhcnNlcj4mJiBwYXJzZXIpCisgICAgOiBtX3BhcnNl
cihXVEZNb3ZlKHBhcnNlcikpCiAgICAgLCBtX2Vycm9yTGlzdGVuZXIoYWRvcHROUyhbW1dlYkFW
U2FtcGxlQnVmZmVyRXJyb3JMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6bWFrZVdlYWtQ
dHIoKnRoaXMpXSkpCiAgICAgLCBtX2lzQXBwZW5kaW5nR3JvdXAoYWRvcHRPU09iamVjdChkaXNw
YXRjaF9ncm91cF9jcmVhdGUoKSkpCiAgICAgLCBtX21lZGlhU291cmNlKHBhcmVudCkKQEAgLTQ4
NiwxMCArMzAyLDI2IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDCiAKICAgICBpZiAoIVtQQUw6
OmdldEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQ2xhc3MoKSBpbnN0YW5jZXNSZXNwb25kVG9T
ZWxlY3RvcjpAc2VsZWN0b3IocHJlcm9sbERlY29kZVdpdGhDb21wbGV0aW9uSGFuZGxlcjopXSkK
ICAgICAgICAgQ01Ob3RpZmljYXRpb25DZW50ZXJBZGRMaXN0ZW5lcihDTU5vdGlmaWNhdGlvbkNl
bnRlckdldERlZmF1bHRMb2NhbENlbnRlcigpLCByZWludGVycHJldF9jYXN0PHZvaWQqPihtX21h
cElEKSwgYnVmZmVyV2FzQ29uc3VtZWRDYWxsYmFjaywga0NNU2FtcGxlQnVmZmVyQ29uc3VtZXJO
b3RpZmljYXRpb25fQnVmZmVyQ29uc3VtZWQsIG51bGxwdHIsIDApOwotICAgIAotICAgIG1fZGVs
ZWdhdGUuZ2V0KCkuYWJvcnRTZW1hcGhvcmUgPSBCb3g8U2VtYXBob3JlPjo6Y3JlYXRlKDApOwog
CiAgICAgc291cmNlQnVmZmVyTWFwKCkuYWRkKG1fbWFwSUQsIG1ha2VXZWFrUHRyKCp0aGlzKSk7
CisKKyAgICBtX3BhcnNlci0+c2V0RGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhb
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKEluaXRpYWxpemF0aW9uU2VnbWVudCYmIHNl
Z21lbnQpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAg
ICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICB3ZWFrVGhpcy0+ZGlkUGFyc2VJbml0aWFsaXph
dGlvbkRhdGEoV1RGTW92ZShzZWdtZW50KSk7CisgICAgfSk7CisKKyAgICBtX3BhcnNlci0+c2V0
RGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2soW3dlYWtUaGlzID0gbWFrZVdl
YWtQdHIodGhpcyldIChpbnQzMl90IGVycm9yQ29kZSkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgIHdl
YWtUaGlzLT5kaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmcoZXJyb3JDb2RlKTsKKyAgICB9
KTsKKworICAgIG1fcGFyc2VyLT5zZXREaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2soW3dlYWtU
aGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChSZWY8TWVkaWFTYW1wbGU+JiYgc2FtcGxlLCB1aW50
NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkgbXV0YWJsZSB7CisgICAgICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAg
ICAgIHdlYWtUaGlzLT5kaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChXVEZNb3ZlKHNhbXBs
ZSksIHRyYWNrSUQsIG1lZGlhVHlwZSk7CisgICAgfSk7CiB9CiAKIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjp+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoKQpAQCAtNTAwLDYgKzMzMiw3
IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMoKQogICAgIHNvdXJjZUJ1ZmZlck1hcCgpLnJlbW92ZShtX21hcElEKTsKICAgICBkZXN0cm95
UGFyc2VyKCk7CiAgICAgZGVzdHJveVJlbmRlcmVycygpOworICAgIGNsZWFyVHJhY2tzKCk7CiAK
ICAgICBpZiAoIVtQQUw6OmdldEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQ2xhc3MoKSBpbnN0
YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3IocHJlcm9sbERlY29kZVdpdGhDb21wbGV0
aW9uSGFuZGxlcjopXSkKICAgICAgICAgQ01Ob3RpZmljYXRpb25DZW50ZXJSZW1vdmVMaXN0ZW5l
cihDTU5vdGlmaWNhdGlvbkNlbnRlckdldERlZmF1bHRMb2NhbENlbnRlcigpLCB0aGlzLCBidWZm
ZXJXYXNDb25zdW1lZENhbGxiYWNrLCBrQ01TYW1wbGVCdWZmZXJDb25zdW1lck5vdGlmaWNhdGlv
bl9CdWZmZXJDb25zdW1lZCwgbnVsbHB0cik7CkBAIC01MDgsNyArMzQxLDcgQEAgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6On5Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQygpCiAgICAgICAg
IG1faGFzU2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFsKCk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3NldCogYXNzZXQp
Cit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9u
RGF0YShJbml0aWFsaXphdGlvblNlZ21lbnQmJiBzZWdtZW50KQogewogICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUik7CiAKQEAgLTUxNiw1MiArMzQ5LDMzIEBAIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3NldCogYXNzZXQp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c2hv
dWxkQ2hlY2tIYXJkd2FyZVN1cHBvcnQoKSkgewotICAgICAgICBmb3IgKEFWQXNzZXRUcmFjayAq
dHJhY2sgaW4gW2Fzc2V0IHRyYWNrc10pIHsKLSAgICAgICAgICAgIGlmICghYXNzZXRUcmFja01l
ZXRzSGFyZHdhcmVEZWNvZGVSZXF1aXJlbWVudHModHJhY2ssIG1fbWVkaWFTb3VyY2UtPnBsYXll
cigpLT5tZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgpKSkgeworICAg
ICAgICBmb3IgKGF1dG8mIGluZm8gOiBzZWdtZW50LnZpZGVvVHJhY2tzKSB7CisgICAgICAgICAg
ICBhdXRvIGNvZGVjID0gRm91ckNDOjpmcm9tU3RyaW5nKGluZm8uZGVzY3JpcHRpb24tPmNvZGVj
KCkpOworICAgICAgICAgICAgaWYgKCFjb2RlYykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIGlmICghY29kZWNzTWVldEhhcmR3YXJlRGVjb2RlUmVxdWlyZW1lbnRzKHt7
ICpjb2RlYyB9fSwgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPm1lZGlhQ29udGVudFR5cGVzUmVx
dWlyaW5nSGFyZHdhcmVTdXBwb3J0KCkpKSB7CiAgICAgICAgICAgICAgICAgbV9wYXJzaW5nU3Vj
Y2VlZGVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQogCi0gICAgbV9hc3NldCA9IGFzc2V0OwotCi0gICAgbV92aWRlb1Ry
YWNrcy5jbGVhcigpOwotICAgIG1fYXVkaW9UcmFja3MuY2xlYXIoKTsKLQotICAgIG1fZGlzY2Fy
ZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlvblNlZ21lbnQgPSBmYWxzZTsKLQotICAgIFNv
dXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudCBzZWdtZW50Owot
Ci0gICAgaWYgKFttX2Fzc2V0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob3ZlcmFsbER1
cmF0aW9uSGludCldKQotICAgICAgICBzZWdtZW50LmR1cmF0aW9uID0gUEFMOjp0b01lZGlhVGlt
ZShbbV9hc3NldCBvdmVyYWxsRHVyYXRpb25IaW50XSk7Ci0KLSAgICBpZiAoc2VnbWVudC5kdXJh
dGlvbi5pc0ludmFsaWQoKSB8fCBzZWdtZW50LmR1cmF0aW9uID09IE1lZGlhVGltZTo6emVyb1Rp
bWUoKSkKLSAgICAgICAgc2VnbWVudC5kdXJhdGlvbiA9IFBBTDo6dG9NZWRpYVRpbWUoW21fYXNz
ZXQgZHVyYXRpb25dKTsKLQotICAgIGZvciAoQVZBc3NldFRyYWNrKiB0cmFjayBpbiBbbV9hc3Nl
dCB0cmFja3NdKSB7Ci0gICAgICAgIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpB
Vk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlXSkgewotICAgICAgICAgICAgLy8gRklYTUUoMTI1
MTYxKTogSGFuZGxlIGluLWJhbmQgdGV4dCB0cmFja3MuCi0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgfQorICAgIGNsZWFyVHJhY2tzKCk7CiAKLSAgICAgICAgaWYgKFt0cmFjayBoYXNN
ZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbF0pIHsKLSAgICAg
ICAgICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDo6
VmlkZW9UcmFja0luZm9ybWF0aW9uIGluZm87Ci0gICAgICAgICAgICBhdXRvIHZpZGVvVHJhY2sg
PSBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNrLCB0aGlz
KTsKLSAgICAgICAgICAgIGluZm8udHJhY2sgPSB2aWRlb1RyYWNrLmNvcHlSZWYoKTsKLSAgICAg
ICAgICAgIG1fdmlkZW9UcmFja3MuYXBwZW5kKFdURk1vdmUodmlkZW9UcmFjaykpOwotICAgICAg
ICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDOjpjcmVhdGUo
dHJhY2spOwotICAgICAgICAgICAgc2VnbWVudC52aWRlb1RyYWNrcy5hcHBlbmQoaW5mbyk7Ci0g
ICAgICAgIH0gZWxzZSBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNo
YXJhY3RlcmlzdGljQXVkaWJsZV0pIHsKLSAgICAgICAgICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDo6QXVkaW9UcmFja0luZm9ybWF0aW9uIGluZm87
Ci0gICAgICAgICAgICBhdXRvIGF1ZGlvVHJhY2sgPSBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNrLCB0aGlzKTsKLSAgICAgICAgICAgIGluZm8udHJhY2sg
PSBhdWRpb1RyYWNrLmNvcHlSZWYoKTsKLSAgICAgICAgICAgIG1fYXVkaW9UcmFja3MuYXBwZW5k
KFdURk1vdmUoYXVkaW9UcmFjaykpOwotICAgICAgICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IE1l
ZGlhRGVzY3JpcHRpb25BVkZPYmpDOjpjcmVhdGUodHJhY2spOwotICAgICAgICAgICAgc2VnbWVu
dC5hdWRpb1RyYWNrcy5hcHBlbmQoaW5mbyk7Ci0gICAgICAgIH0KKyAgICBmb3IgKGF1dG8gdmlk
ZW9UcmFja0luZm8gOiBzZWdtZW50LnZpZGVvVHJhY2tzKSB7CisgICAgICAgIHZpZGVvVHJhY2tJ
bmZvLnRyYWNrLT5zZXRTZWxlY3RlZENoYW5nZWRDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cih0aGlzKV0gKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjaywgYm9vbCBzZWxlY3RlZCkgewor
ICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT50cmFj
a0RpZENoYW5nZVNlbGVjdGVkKHRyYWNrLCBzZWxlY3RlZCk7CisgICAgICAgIH0pOworICAgICAg
ICBtX3ZpZGVvVHJhY2tzLmFwcGVuZCh2aWRlb1RyYWNrSW5mby50cmFjayk7CisgICAgfQogCi0g
ICAgICAgIC8vIEZJWE1FKDEyNTE2MSk6IEFkZCBUZXh0VHJhY2sgc3VwcG9ydAorICAgIGZvciAo
YXV0byBhdWRpb1RyYWNrSW5mbyA6IHNlZ21lbnQuYXVkaW9UcmFja3MpIHsKKyAgICAgICAgYXVk
aW9UcmFja0luZm8udHJhY2stPnNldEVuYWJsZWRDaGFuZ2VkQ2FsbGJhY2soW3dlYWtUaGlzID0g
bWFrZVdlYWtQdHIodGhpcyldIChBdWRpb1RyYWNrUHJpdmF0ZSYgdHJhY2ssIGJvb2wgZW5hYmxl
ZCkgeworICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlz
LT50cmFja0RpZENoYW5nZUVuYWJsZWQodHJhY2ssIGVuYWJsZWQpOworICAgICAgICB9KTsKKyAg
ICAgICAgbV9hdWRpb1RyYWNrcy5hcHBlbmQoYXVkaW9UcmFja0luZm8udHJhY2spOwogICAgIH0K
IAogICAgIGlmIChtX21lZGlhU291cmNlKQpAQCAtNTcxLDgwICszODUsNTAgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChBVkFzc2V0
KiBhc3NldCkKICAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZl
SW5pdGlhbGl6YXRpb25TZWdtZW50KHNlZ21lbnQpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpkaWRGYWlsVG9QYXJzZVN0cmVhbURhdGFXaXRoRXJyb3IoTlNFcnJvciAq
ZXJyb3IpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRFbmNvdW50ZXJFcnJv
ckR1cmluZ1BhcnNpbmcoaW50MzJfdCBjb2RlKQogewogI2lmIExPR19ESVNBQkxFRAotICAgIFVO
VVNFRF9QQVJBTShlcnJvcik7CisgICAgVU5VU0VEX1BBUkFNKGNvZGUpOwogI2VuZGlmCi0gICAg
RVJST1JfTE9HKExPR0lERU5USUZJRVIsIFtbZXJyb3IgZGVzY3JpcHRpb25dIFVURjhTdHJpbmdd
KTsKKyAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgY29kZSk7CiAKICAgICBtX3BhcnNpbmdT
dWNjZWVkZWQgPSBmYWxzZTsKIH0KIAotc3RydWN0IFByb2Nlc3NDb2RlZEZyYW1lSW5mbyB7Ci0g
ICAgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHNvdXJjZUJ1ZmZlcjsKLSAgICBpbnQgdHJh
Y2tJRDsKLSAgICBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZTsKLX07Ci0KLXZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGludCB0cmFj
a0lELCBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIsIGNvbnN0IFN0cmluZyYgbWVkaWFU
eXBlLCB1bnNpZ25lZCkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3Zp
ZGVNZWRpYURhdGFGb3JUcmFja0lEKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNhbXBsZSwgdWlu
dDY0X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpCiB7Ci0gICAgcHJvY2Vzc0Nv
ZGVkRnJhbWUodHJhY2tJRCwgc2FtcGxlQnVmZmVyLCBtZWRpYVR5cGUpOwotfQorICAgIFVOVVNF
RF9QQVJBTShtZWRpYVR5cGUpOwogCi1ib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpw
cm9jZXNzQ29kZWRGcmFtZShpbnQgdHJhY2tJRCwgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVm
ZmVyLCBjb25zdCBTdHJpbmcmKQotewogICAgIGlmICh0cmFja0lEICE9IG1fZW5hYmxlZFZpZGVv
VHJhY2tJRCAmJiAhbV9hdWRpb1JlbmRlcmVycy5jb250YWlucyh0cmFja0lEKSkgewogICAgICAg
ICAvLyBGSVhNRSgxMjUxNjEpOiBXZSBkb24ndCBoYW5kbGUgdGV4dCB0cmFja3MsIGFuZCBwYXNz
aW5nIHRoaXMgc2FtcGxlIHVwIHRvIFNvdXJjZUJ1ZmZlcgogICAgICAgICAvLyB3aWxsIGp1c3Qg
Y29uZnVzZSBpdHMgc3RhdGUuIERyb3AgdGhpcyBzYW1wbGUgdW50aWwgd2UgY2FuIGhhbmRsZSB0
ZXh0IHRyYWNrcyBwcm9wZXJseS4KLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgaWYgKG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXph
dGlvblNlZ21lbnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghbV9jbGllbnQp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgYXV0byBtZWRpYVNhbXBsZSA9IE1lZGlhU2Ft
cGxlQVZGT2JqQzo6Y3JlYXRlKHNhbXBsZUJ1ZmZlciwgdHJhY2tJRCk7Ci0KLSAgICBpZiAobWVk
aWFTYW1wbGUtPmlzSG9tb2dlbmVvdXMoKSkgewotICAgICAgICBERUJVR19MT0coTE9HSURFTlRJ
RklFUiwgbWVkaWFTYW1wbGUtPnRvSlNPTlN0cmluZygpKTsKKyAgICBERUJVR19MT0coTE9HSURF
TlRJRklFUiwgbWVkaWFTYW1wbGUtPnRvSlNPTlN0cmluZygpKTsKKyAgICBpZiAobV9jbGllbnQp
CiAgICAgICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVNhbXBsZSht
ZWRpYVNhbXBsZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGF1dG8gbWVk
aWFTYW1wbGVzID0gbWVkaWFTYW1wbGUtPmRpdmlkZUludG9Ib21vZ2VuZW91c1NhbXBsZXMoKTsK
LSAgICBmb3IgKGF1dG8mIHNhbXBsZSA6IG1lZGlhU2FtcGxlcykgewotICAgICAgICBERUJVR19M
T0coTE9HSURFTlRJRklFUiwgc2FtcGxlLT50b0pTT05TdHJpbmcoKSk7Ci0gICAgICAgIG1fY2xp
ZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVNhbXBsZShzYW1wbGUpOwotICAgIH0K
LQotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpkaWRSZWFjaEVuZE9mVHJhY2tXaXRoVHJhY2tJRChpbnQsIGNvbnN0IFN0cmluZyYpCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNr
SUQoaW50IHRyYWNrSUQpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxsUHJv
dmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCh1aW50NjRf
dCB0cmFja0lEKQogewogICAgIGlmICghbV9tZWRpYVNvdXJjZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgQVNTRVJUKG1fcGFyc2VyKTsKLQogI2lmIEhBVkUoQVZTVFJFQU1TRVNTSU9OKSAmJiBF
TkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIsICJ0cmFjayA9ICIsIHRyYWNrSUQpOwogCiAgICAgbV9wcm90ZWN0ZWRUcmFja0lEID0gdHJh
Y2tJRDsKIAorICAgIGF1dG8gcGFyc2VyID0gdGhpcy0+cGFyc2VyKCk7CisgICAgaWYgKCFwYXJz
ZXIpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZP
YmpDKiBzZXNzaW9uID0gbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPmNkbVNlc3Npb24oKSkKLSAg
ICAgICAgc2Vzc2lvbi0+YWRkUGFyc2VyKG1fcGFyc2VyLmdldCgpKTsKKyAgICAgICAgc2Vzc2lv
bi0+YWRkUGFyc2VyKHBhcnNlcik7CiAgICAgZWxzZSBpZiAoIUNETVNlc3Npb25BVkNvbnRlbnRL
ZXlTZXNzaW9uOjppc0F2YWlsYWJsZSgpKSB7CiAgICAgICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotICAgICAgICBbbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPnN0cmVhbVNlc3Npb24o
KSBhZGRTdHJlYW1EYXRhUGFyc2VyOm1fcGFyc2VyLmdldCgpXTsKKyAgICAgICAgW21fbWVkaWFT
b3VyY2UtPnBsYXllcigpLT5zdHJlYW1TZXNzaW9uKCkgYWRkU3RyZWFtRGF0YVBhcnNlcjpwYXJz
ZXJdOwogICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgfQogI2Vsc2UKQEAg
LTY1Miw3ICs0MzYsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxsUHJv
dmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRgogI2VuZGlmCiB9CiAKLXZv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVz
dEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoTlNEYXRhKiBpbml0RGF0YSwgaW50IHRyYWNr
SUQsIEJveDxCaW5hcnlTZW1hcGhvcmU+IGhhc1Nlc3Npb25TZW1hcGhvcmUpCit2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFs
aXphdGlvbkRhdGFGb3JUcmFja0lEKFJlZjxVaW50OEFycmF5PiYmIGluaXREYXRhLCB1aW50NjRf
dCB0cmFja0lELCBCb3g8QmluYXJ5U2VtYXBob3JlPiBoYXNTZXNzaW9uU2VtYXBob3JlKQogewog
ICAgIGlmICghbV9tZWRpYVNvdXJjZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjYxLDExICs0NDUs
MTEgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRL
ZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIsICJ0cmFjayA9ICIsIHRyYWNrSUQpOwogCiAgICAgbV9wcm90ZWN0ZWRUcmFja0lEID0gdHJh
Y2tJRDsKLSAgICBtX2luaXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRlKFtpbml0RGF0YSBsZW5n
dGhdKTsKLSAgICBbaW5pdERhdGEgZ2V0Qnl0ZXM6bV9pbml0RGF0YS0+ZGF0YSgpIGxlbmd0aDpt
X2luaXREYXRhLT5sZW5ndGgoKV07CisgICAgbV9pbml0RGF0YSA9IFdURk1vdmUoaW5pdERhdGEp
OwogICAgIG1fbWVkaWFTb3VyY2UtPnNvdXJjZUJ1ZmZlcktleU5lZWRlZCh0aGlzLCBtX2luaXRE
YXRhLmdldCgpKTsKICAgICBpZiAoYXV0byBzZXNzaW9uID0gbV9tZWRpYVNvdXJjZS0+cGxheWVy
KCktPmNkbVNlc3Npb24oKSkgewotICAgICAgICBzZXNzaW9uLT5hZGRQYXJzZXIobV9wYXJzZXIu
Z2V0KCkpOworICAgICAgICBpZiAoYXV0byBwYXJzZXIgPSB0aGlzLT5wYXJzZXIoKSkKKyAgICAg
ICAgICAgIHNlc3Npb24tPmFkZFBhcnNlcihwYXJzZXIpOwogICAgICAgICBoYXNTZXNzaW9uU2Vt
YXBob3JlLT5zaWduYWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTY3NiwxNCArNDYw
LDE1IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvCiAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3Jl
ID0gaGFzU2Vzc2lvblNlbWFwaG9yZTsKICAgICAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCi0gICAgYXV0byBpbml0RGF0YUJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRhKTsKKyAgICBhdXRvIGluaXREYXRhQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9pbml0RGF0YS0+ZGF0YSgpLCBtX2luaXREYXRhLT5i
eXRlTGVuZ3RoKCkpOwogICAgIGF1dG8ga2V5SURzID0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFt
aW5nOjpleHRyYWN0S2V5SURzU2luZihpbml0RGF0YUJ1ZmZlcik7CiAgICAgaWYgKCFrZXlJRHMp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2NkbUluc3RhbmNlKSB7CiAgICAgICAgIGlm
IChhdXRvIGluc3RhbmNlU2Vzc2lvbiA9IG1fY2RtSW5zdGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMo
a2V5SURzLnZhbHVlKCkpKSB7Ci0gICAgICAgICAgICBbaW5zdGFuY2VTZXNzaW9uLT5jb250ZW50
S2V5U2Vzc2lvbigpIGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6bV9wYXJzZXIuZ2V0KCldOworICAg
ICAgICAgICAgaWYgKGF1dG8gcGFyc2VyID0gdGhpcy0+cGFyc2VyKCkpCisgICAgICAgICAgICAg
ICAgW2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVj
aXBpZW50OnBhcnNlcl07CiAgICAgICAgICAgICBpZiAobV9oYXNTZXNzaW9uU2VtYXBob3JlKSB7
CiAgICAgICAgICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKICAgICAg
ICAgICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUgPSBudWxscHRyOwpAQCAtNzI0LDE2ICs1
MDksNTQgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFZlY3Rvcjx1
bnNpZ25lZCBjaGFyPiYmIGRhdGEpCiB7CiAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsICJk
YXRhIGxlbmd0aCA9ICIsIGRhdGEuc2l6ZSgpKTsKIAorICAgIEFTU0VSVCghbV9oYXNTZXNzaW9u
U2VtYXBob3JlKTsKKyAgICBBU1NFUlQoIW1fYWJvcnRTZW1hcGhvcmUpOworCisgICAgbV9hYm9y
dFNlbWFwaG9yZSA9IEJveDxTZW1hcGhvcmU+OjpjcmVhdGUoMCk7CisgICAgbV9wYXJzZXItPnNl
dFdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lE
Q2FsbGJhY2soW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGFib3J0U2VtYXBob3JlID0g
bV9hYm9ydFNlbWFwaG9yZV0gKHVpbnQ2NF90IHRyYWNrSUQpIG11dGFibGUgeworICAgICAgICAv
LyBXZSBtdXN0IGNhbGwgc3luY2hyb25vdXNseSB0byB0aGUgbWFpbiB0aHJlYWQsIGFzIHRoZSBB
VlN0cmVhbVNlc3Npb24gbXVzdCBiZSBhc3NvY2lhdGVkCisgICAgICAgIC8vIHdpdGggdGhlIHN0
cmVhbURhdGFQYXJzZXIgYmVmb3JlIHRoZSBkZWxlZ2F0ZSBtZXRob2QgcmV0dXJucy4KKyAgICAg
ICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gcmVzcG9uZGVkU2VtYXBob3JlID0gQm94PEJpbmFyeVNl
bWFwaG9yZT46OmNyZWF0ZSgpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9
IFdURk1vdmUod2Vha1RoaXMpLCB0cmFja0lELCByZXNwb25kZWRTZW1hcGhvcmVdKCkgeworICAg
ICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT53aWxsUHJv
dmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCh0cmFja0lE
KTsKKyAgICAgICAgICAgIHJlc3BvbmRlZFNlbWFwaG9yZS0+c2lnbmFsKCk7CisgICAgICAgIH0p
OworCisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBpZiAocmVzcG9uZGVkU2Vt
YXBob3JlLT53YWl0Rm9yKDEwMF9tcykpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICBpZiAoYWJvcnRTZW1hcGhvcmUtPndhaXRGb3IoMTAwX21zKSkgeworICAgICAgICAg
ICAgICAgIGFib3J0U2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIG1fcGFyc2VyLT5zZXRE
aWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2Fs
bGJhY2soW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGFib3J0U2VtYXBob3JlID0gbV9h
Ym9ydFNlbWFwaG9yZV0gKFJlZjxVaW50OEFycmF5PiYmIGluaXREYXRhLCB1aW50NjRfdCB0cmFj
a0lEKSBtdXRhYmxlIHsKKyAgICAgICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gaGFzU2Vzc2lvblNl
bWFwaG9yZSA9IEJveDxCaW5hcnlTZW1hcGhvcmU+OjpjcmVhdGUoKTsKKyAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgaW5pdERhdGEgPSBXVEZN
b3ZlKGluaXREYXRhKSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNlbWFwaG9yZV0gKCkgbXV0YWJsZSB7
CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPmRp
ZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoV1RG
TW92ZShpbml0RGF0YSksIHRyYWNrSUQsIGhhc1Nlc3Npb25TZW1hcGhvcmUpOworICAgICAgICB9
KTsKKworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgaWYgKGhhc1Nlc3Npb25T
ZW1hcGhvcmUtPndhaXRGb3IoMTAwX21zKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgIGlmIChhYm9ydFNlbWFwaG9yZS0+d2FpdEZvcigxMDBfbXMpKSB7CisgICAgICAg
ICAgICAgICAgYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pOworCiAgICAgbV9wYXJzaW5nU3Vj
Y2VlZGVkID0gdHJ1ZTsKICAgICBkaXNwYXRjaF9ncm91cF9lbnRlcihtX2lzQXBwZW5kaW5nR3Jv
dXAuZ2V0KCkpOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMoZ2xvYmFsRGF0YVBhcnNlclF1ZXVlKCks
IFtkYXRhID0gV1RGTW92ZShkYXRhKSwgd2Vha1RoaXMgPSBtX2FwcGVuZFdlYWtGYWN0b3J5LmNy
ZWF0ZVdlYWtQdHIoKnRoaXMpLCBwYXJzZXIgPSBtX3BhcnNlciwgZGVsZWdhdGUgPSBtX2RlbGVn
YXRlLCBpc0FwcGVuZGluZ0dyb3VwID0gbV9pc0FwcGVuZGluZ0dyb3VwLCBwYXJzZXJTdGF0ZVdh
c1Jlc2V0ID0gbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0XSAoKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0
byBzaGFyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7Ci0gICAg
ICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkRGF0YS0+Y3JlYXRlTlNEYXRhKCk7Ci0gICAgICAgIGlm
IChwYXJzZXJTdGF0ZVdhc1Jlc2V0KQotICAgICAgICAgICAgW3BhcnNlciBhcHBlbmRTdHJlYW1E
YXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2VyU3RyZWFtRGF0YURp
c2NvbnRpbnVpdHldOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBbcGFyc2VyIGFwcGVuZFN0
cmVhbURhdGE6bnNEYXRhLmdldCgpXTsKKyAgICBkaXNwYXRjaF9hc3luYyhnbG9iYWxEYXRhUGFy
c2VyUXVldWUoKSwgW2RhdGEgPSBXVEZNb3ZlKGRhdGEpLCB3ZWFrVGhpcyA9IG1fYXBwZW5kV2Vh
a0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyksIHBhcnNlciA9IG1fcGFyc2VyLCBpc0FwcGVu
ZGluZ0dyb3VwID0gbV9pc0FwcGVuZGluZ0dyb3VwXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgcGFy
c2VyLT5hcHBlbmREYXRhKFdURk1vdmUoZGF0YSkpOwogCiAgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW3dlYWtUaGlzXSB7CiAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCkBAIC03NDEsMTEgKzU2
NCwyMCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQoVmVjdG9yPHVu
c2lnbmVkIGNoYXI+JiYgZGF0YSkKICAgICAgICAgfSk7CiAgICAgICAgIGRpc3BhdGNoX2dyb3Vw
X2xlYXZlKGlzQXBwZW5kaW5nR3JvdXAuZ2V0KCkpOwogICAgIH0pOwotICAgIG1fcGFyc2VyU3Rh
dGVXYXNSZXNldCA9IGZhbHNlOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjphcHBlbmRDb21wbGV0ZWQoKQogeworICAgIGlmIChtX2Fib3J0U2VtYXBob3JlKSB7CisgICAg
ICAgIG1fYWJvcnRTZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAgICBtX2Fib3J0U2VtYXBob3Jl
ID0gbmlsOworICAgIH0KKworICAgIGlmIChtX2hhc1Nlc3Npb25TZW1hcGhvcmUpIHsKKyAgICAg
ICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICAgICAgbV9oYXNTZXNzaW9u
U2VtYXBob3JlID0gbmlsOworICAgIH0KKwogICAgIGlmIChtX3BhcnNpbmdTdWNjZWVkZWQgJiYg
bV9tZWRpYVNvdXJjZSkKICAgICAgICAgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPnNldExvYWRp
bmdQcm9ncmVzc3NlZCh0cnVlKTsKIApAQCAtNzYwLDM5ICs1OTIsMzkgQEAgdm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6YWJvcnQoKQogICAgIC8vIFRoZSBwYXJzaW5nIHF1ZXVlIG1h
eSBiZSBibG9ja2VkIHdhaXRpbmcgZm9yIHRoZSBtYWluIHRocmVhZCB0byBwcm92aWRlIGl0IGEg
QVZTdHJlYW1TZXNzaW9uLiBXZQogICAgIC8vIHdlcmUgYXNrZWQgdG8gYWJvcnQsIGFuZCB0aGF0
IGNhbmNlbHMgYWxsIG91dHN0YW5kaW5nIGFwcGVuZCBvcGVyYXRpb25zLiBXaXRob3V0IGNhbmNl
bGxpbmcgdGhpcwogICAgIC8vIHNlbWFwaG9yZSwgdGhlIG1faXNBcHBlbmRpbmdHcm91cCB3YWl0
IG9wZXJhdGlvbiB3aWxsIGRlYWRsb2NrLgotICAgIGlmIChtX2hhc1Nlc3Npb25TZW1hcGhvcmUp
CisgICAgaWYgKG1faGFzU2Vzc2lvblNlbWFwaG9yZSkgewogICAgICAgICBtX2hhc1Nlc3Npb25T
ZW1hcGhvcmUtPnNpZ25hbCgpOwotICAgIG1fZGVsZWdhdGUuZ2V0KCkuYWJvcnRTZW1hcGhvcmUt
PnNpZ25hbCgpOworICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUgPSBudWxscHRyOworICAg
IH0KKyAgICBpZiAobV9hYm9ydFNlbWFwaG9yZSkgeworICAgICAgICBtX2Fib3J0U2VtYXBob3Jl
LT5zaWduYWwoKTsKKyAgICAgICAgbV9hYm9ydFNlbWFwaG9yZSA9IG51bGxwdHI7CisgICAgfQog
ICAgIGRpc3BhdGNoX2dyb3VwX3dhaXQobV9pc0FwcGVuZGluZ0dyb3VwLmdldCgpLCBESVNQQVRD
SF9USU1FX0ZPUkVWRVIpOwotICAgIG1fYXBwZW5kV2Vha0ZhY3RvcnkucmV2b2tlQWxsKCk7Ci0g
ICAgbV9kZWxlZ2F0ZS5nZXQoKS5wYXJlbnQgPSBtX2FwcGVuZFdlYWtGYWN0b3J5LmNyZWF0ZVdl
YWtQdHIoKnRoaXMpOwotICAgIG1fZGVsZWdhdGUuZ2V0KCkuYWJvcnRTZW1hcGhvcmUgPSBCb3g8
U2VtYXBob3JlPjo6Y3JlYXRlKDApOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpyZXNldFBhcnNlclN0YXRlKCkKIHsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIp
OwogCi0gICAgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0ID0gdHJ1ZTsKLSAgICBtX2Rpc2NhcmRTYW1w
bGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50ID0gdHJ1ZTsKKyAgICBtX3BhcnNlci0+
cmVzZXRQYXJzZXJTdGF0ZSgpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpkZXN0cm95UGFyc2VyKCkKIHsKKyAgICBhdXRvIHBhcnNlciA9IHRoaXMtPnBhcnNlcigpOwor
ICAgIGlmICghcGFyc2VyKQorICAgICAgICByZXR1cm47CiAjaWYgSEFWRShBVlNUUkVBTVNFU1NJ
T04pICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIGlmIChtX21lZGlhU291
cmNlICYmIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5oYXNTdHJlYW1TZXNzaW9uKCkpCi0gICAg
ICAgIFttX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c3RyZWFtU2Vzc2lvbigpIHJlbW92ZVN0cmVh
bURhdGFQYXJzZXI6bV9wYXJzZXIuZ2V0KCldOworICAgICAgICBbbV9tZWRpYVNvdXJjZS0+cGxh
eWVyKCktPnN0cmVhbVNlc3Npb24oKSByZW1vdmVTdHJlYW1EYXRhUGFyc2VyOnBhcnNlcl07CiAj
ZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNF
U1NJT04pCiAgICAgaWYgKG1fY2RtSW5zdGFuY2UpIHsKICAgICAgICAgaWYgKGF1dG8gaW5zdGFu
Y2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhtX2tleUlEcykpCi0g
ICAgICAgICAgICBbaW5zdGFuY2VTZXNzaW9uLT5jb250ZW50S2V5U2Vzc2lvbigpIHJlbW92ZUNv
bnRlbnRLZXlSZWNpcGllbnQ6bV9wYXJzZXIuZ2V0KCldOworICAgICAgICAgICAgW2luc3RhbmNl
U2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSByZW1vdmVDb250ZW50S2V5UmVjaXBpZW50OnBh
cnNlcl07CiAgICAgfQogI2VuZGlmCi0KLSAgICBbbV9kZWxlZ2F0ZSBpbnZhbGlkYXRlXTsKLSAg
ICBtX2RlbGVnYXRlID0gbnVsbHB0cjsKLSAgICBtX3BhcnNlciA9IG51bGxwdHI7CiB9CiAKIHZv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRlc3Ryb3lSZW5kZXJlcnMoKQpAQCAtODE3
LDYgKzY0OSwxNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkZXN0cm95UmVu
ZGVyZXJzKCkKICAgICBtX2F1ZGlvUmVuZGVyZXJzLmNsZWFyKCk7CiB9CiAKK3ZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNsZWFyVHJhY2tzKCkKK3sKKyAgICBmb3IgKGF1dG8mIHRy
YWNrIDogbV92aWRlb1RyYWNrcykKKyAgICAgICAgdHJhY2stPnNldFNlbGVjdGVkQ2hhbmdlZENh
bGxiYWNrKG51bGxwdHIpOworICAgIG1fdmlkZW9UcmFja3MuY2xlYXIoKTsKKworICAgIGZvciAo
YXV0byYgdHJhY2sgOiBtX2F1ZGlvVHJhY2tzKQorICAgICAgICB0cmFjay0+c2V0RW5hYmxlZENo
YW5nZWRDYWxsYmFjayhudWxscHRyKTsKKyAgICBtX2F1ZGlvVHJhY2tzLmNsZWFyKCk7Cit9CisK
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnJlbW92ZWRGcm9tTWVkaWFTb3VyY2Uo
KQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CkBAIC04NDgsNyArNjkxLDcgQEAg
Ym9vbCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6aGFzVmlkZW8oKSBjb25zdAogCiBib29s
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpoYXNTZWxlY3RlZFZpZGVvKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9lbmFibGVkVmlkZW9UcmFja0lEICE9IC0xOworICAgIHJldHVybiBtX2Vu
YWJsZWRWaWRlb1RyYWNrSUQgIT0gbm90Rm91bmQ7CiB9CiAKIGJvb2wgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6Omhhc0F1ZGlvKCkgY29uc3QKQEAgLTg1NiwyMSArNjk5LDIxIEBAIGJvb2wg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Omhhc0F1ZGlvKCkgY29uc3QKICAgICByZXR1cm4g
bV9jbGllbnQgJiYgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRpbygpOwogfQog
Ci12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQo
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqIHRyYWNrKQordm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFuZ2VTZWxlY3RlZChWaWRlb1RyYWNrUHJp
dmF0ZSYgdHJhY2ssIGJvb2wgc2VsZWN0ZWQpCiB7Ci0gICAgaW50IHRyYWNrSUQgPSB0cmFjay0+
dHJhY2tJRCgpOworICAgIGF1dG8gdHJhY2tJRCA9IHRyYWNrLmlkKCkuc3RyaW5nKCkudG9VSW50
NjQoKTsKIAotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInZpZGVvIHRyYWNrSUQgPSAi
LCB0cmFja0lELCAiLCBzZWxlY3RlZCA9ICIsIHRyYWNrLT5zZWxlY3RlZCgpKTsKKyAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIsICJ2aWRlbyB0cmFja0lEID0gIiwgdHJhY2tJRCwgIiwgc2Vs
ZWN0ZWQgPSAiLCBzZWxlY3RlZCk7CiAKLSAgICBpZiAoIXRyYWNrLT5zZWxlY3RlZCgpICYmIG1f
ZW5hYmxlZFZpZGVvVHJhY2tJRCA9PSB0cmFja0lEKSB7CisgICAgaWYgKCFzZWxlY3RlZCAmJiBt
X2VuYWJsZWRWaWRlb1RyYWNrSUQgPT0gdHJhY2tJRCkgewogICAgICAgICBtX2VuYWJsZWRWaWRl
b1RyYWNrSUQgPSAtMTsKLSAgICAgICAgW21fcGFyc2VyIHNldFNob3VsZFByb3ZpZGVNZWRpYURh
dGE6Tk8gZm9yVHJhY2tJRDp0cmFja0lEXTsKKyAgICAgICAgbV9wYXJzZXItPnNldFNob3VsZFBy
b3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGZhbHNlLCB0cmFja0lEKTsKIAogICAgICAgICBpZiAo
bV9kZWNvbXByZXNzaW9uU2Vzc2lvbikKICAgICAgICAgICAgIG1fZGVjb21wcmVzc2lvblNlc3Np
b24tPnN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRhKCk7Ci0gICAgfSBlbHNlIGlmICh0cmFjay0+c2Vs
ZWN0ZWQoKSkgeworICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWQpIHsKICAgICAgICAgbV9lbmFibGVk
VmlkZW9UcmFja0lEID0gdHJhY2tJRDsKLSAgICAgICAgW21fcGFyc2VyIHNldFNob3VsZFByb3Zp
ZGVNZWRpYURhdGE6WUVTIGZvclRyYWNrSUQ6dHJhY2tJRF07CisgICAgICAgIG1fcGFyc2VyLT5z
ZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCh0cnVlLCB0cmFja0lEKTsKIAogICAg
ICAgICBpZiAobV9kZWNvbXByZXNzaW9uU2Vzc2lvbikgewogICAgICAgICAgICAgbV9kZWNvbXBy
ZXNzaW9uU2Vzc2lvbi0+cmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeShbdGhpcywgdHJhY2tJRF0g
ewpAQCAtODgyLDIxICs3MjUsMjEgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
dHJhY2tEaWRDaGFuZ2VFbmFibGVkKFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3UKICAgICBtX21l
ZGlhU291cmNlLT5oYXNTZWxlY3RlZFZpZGVvQ2hhbmdlZCgqdGhpcyk7CiB9CiAKLXZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlRW5hYmxlZChBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyogdHJhY2spCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQoQXVkaW9UcmFja1ByaXZhdGUmIHRyYWNr
LCBib29sIGVuYWJsZWQpCiB7Ci0gICAgaW50IHRyYWNrSUQgPSB0cmFjay0+dHJhY2tJRCgpOwor
ICAgIGF1dG8gdHJhY2tJRCA9IHRyYWNrLmlkKCkuc3RyaW5nKCkudG9VSW50NjQoKTsKIAotICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImF1ZGlvIHRyYWNrSUQgPSAiLCB0cmFja0lELCAi
LCBzZWxlY3RlZCA9ICIsIHRyYWNrLT5lbmFibGVkKCkpOworICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgImF1ZGlvIHRyYWNrSUQgPSAiLCB0cmFja0lELCAiLCBzZWxlY3RlZCA9ICIsIGVu
YWJsZWQpOwogCi0gICAgaWYgKCF0cmFjay0+ZW5hYmxlZCgpKSB7CisgICAgaWYgKCFlbmFibGVk
KSB7CiAgICAgICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KICAgICAgICAg
UmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlcj4gcmVuZGVyZXIgPSBtX2F1ZGlv
UmVuZGVyZXJzLmdldCh0cmFja0lEKTsKICAgICAgICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dV
QVJEU19FTkQKLSAgICAgICAgW21fcGFyc2VyIHNldFNob3VsZFByb3ZpZGVNZWRpYURhdGE6Tk8g
Zm9yVHJhY2tJRDp0cmFja0lEXTsKKyAgICAgICAgbV9wYXJzZXItPnNldFNob3VsZFByb3ZpZGVN
ZWRpYURhdGFGb3JUcmFja0lEKGZhbHNlLCB0cmFja0lEKTsKICAgICAgICAgaWYgKG1fbWVkaWFT
b3VyY2UpCiAgICAgICAgICAgICBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+cmVtb3ZlQXVkaW9S
ZW5kZXJlcihyZW5kZXJlci5nZXQoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgW21fcGFyc2Vy
IHNldFNob3VsZFByb3ZpZGVNZWRpYURhdGE6WUVTIGZvclRyYWNrSUQ6dHJhY2tJRF07CisgICAg
ICAgIG1fcGFyc2VyLT5zZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCh0cnVlLCB0
cmFja0lEKTsKICAgICAgICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgogICAg
ICAgICBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyPiByZW5kZXJlcjsKICAg
ICAgICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKQEAgLTkyNiw2ICs3NjksMTMg
QEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFuZ2VFbmFibGVk
KEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3UKICAgICB9CiB9CiAKK0FWU3RyZWFtRGF0YVBhcnNl
ciogU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnBhcnNlcigpIGNvbnN0Cit7CisgICAgaWYg
KGlzPFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM+KG1fcGFyc2VyLmdldCgpKSkKKyAgICAgICAg
cmV0dXJuIGRvd25jYXN0PFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM+KG1fcGFyc2VyLmdldCgp
KS5wYXJzZXIoKTsKKyAgICByZXR1cm4gbmlsOworfQorCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpzZXRDRE1TZXNzaW9uKENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMqIHNl
c3Npb24pCiB7CiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCkBAIC05ODcsNyAr
ODM3LDggQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXR0ZW1wdFRvRGVjcnlw
dCgpCiAgICAgaWYgKCFpbnN0YW5jZVNlc3Npb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFtp
bnN0YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVu
dDptX3BhcnNlci5nZXQoKV07CisgICAgaWYgKGF1dG8gcGFyc2VyID0gdGhpcy0+cGFyc2VyKCkp
CisgICAgICAgIFtpbnN0YW5jZVNlc3Npb24tPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVu
dEtleVJlY2lwaWVudDpwYXJzZXJdOwogICAgIGlmIChtX2hhc1Nlc3Npb25TZW1hcGhvcmUpIHsK
ICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKICAgICAgICAgbV9oYXNT
ZXNzaW9uU2VtYXBob3JlID0gbnVsbHB0cjsKQEAgLTEwNzUsNyArOTI2LDcgQEAgQUxMT1dfTkVX
X0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6Zmx1c2goY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRFN0cmluZykKIHsKLSAgICBpbnQgdHJh
Y2tJRCA9IHRyYWNrSURTdHJpbmcudG9JbnQoKTsKKyAgICBhdXRvIHRyYWNrSUQgPSB0cmFja0lE
U3RyaW5nLnN0cmluZygpLnRvVUludDY0KCk7CiAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIs
IHRyYWNrSUQpOwogCiAgICAgaWYgKHRyYWNrSUQgPT0gbV9lbmFibGVkVmlkZW9UcmFja0lEKSB7
CkBAIC0xMTE3LDcgKzk2OCw3IEBAIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECiAK
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmVucXVldWVTYW1wbGUoUmVmPE1lZGlh
U2FtcGxlPiYmIHNhbXBsZSwgY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRFN0cmluZykKIHsKLSAg
ICBpbnQgdHJhY2tJRCA9IHRyYWNrSURTdHJpbmcudG9JbnQoKTsKKyAgICBhdXRvIHRyYWNrSUQg
PSB0cmFja0lEU3RyaW5nLnN0cmluZygpLnRvVUludDY0KCk7CiAgICAgaWYgKHRyYWNrSUQgIT0g
bV9lbmFibGVkVmlkZW9UcmFja0lEICYmICFtX2F1ZGlvUmVuZGVyZXJzLmNvbnRhaW5zKHRyYWNr
SUQpKQogICAgICAgICByZXR1cm47CiAKQEAgLTEyMjksNyArMTA4MCw3IEBAIHZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmJ1ZmZlcldhc0NvbnN1bWVkKCkKIAogYm9vbCBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6aXNSZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0b21TdHJp
bmcmIHRyYWNrSURTdHJpbmcpCiB7Ci0gICAgaW50IHRyYWNrSUQgPSB0cmFja0lEU3RyaW5nLnRv
SW50KCk7CisgICAgYXV0byB0cmFja0lEID0gdHJhY2tJRFN0cmluZy5zdHJpbmcoKS50b1VJbnQ2
NCgpOwogICAgIGlmICh0cmFja0lEID09IG1fZW5hYmxlZFZpZGVvVHJhY2tJRCkgewogICAgICAg
ICBpZiAobV9kZWNvbXByZXNzaW9uU2Vzc2lvbikKICAgICAgICAgICAgIHJldHVybiBtX2RlY29t
cHJlc3Npb25TZXNzaW9uLT5pc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YSgpOwpAQCAtMTI2OCw3ICsx
MTE5LDcgQEAgRmxvYXRTaXplIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpuYXR1cmFsU2l6
ZSgpCiAgICAgcmV0dXJuIG1fY2FjaGVkU2l6ZS52YWx1ZU9yKEZsb2F0U2l6ZSgpKTsKIH0KIAot
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkQmVjb21lUmVhZHlGb3JNb3JlU2Ft
cGxlcyhpbnQgdHJhY2tJRCkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEJl
Y29tZVJlYWR5Rm9yTW9yZVNhbXBsZXModWludDY0X3QgdHJhY2tJRCkKIHsKICAgICBJTkZPX0xP
RyhMT0dJREVOVElGSUVSLCB0cmFja0lEKTsKIApAQCAtMTI4Nyw3ICsxMTM4LDcgQEAgdm9pZCBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkQmVjb21lUmVhZHlGb3JNb3JlU2FtcGxlcyhp
bnQgdHJhY2tJRCkKIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6bm90aWZ5Q2xp
ZW50V2hlblJlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRFN0cmlu
ZykKIHsKLSAgICBpbnQgdHJhY2tJRCA9IHRyYWNrSURTdHJpbmcudG9JbnQoKTsKKyAgICBhdXRv
IHRyYWNrSUQgPSB0cmFja0lEU3RyaW5nLnN0cmluZygpLnRvVUludDY0KCk7CiAgICAgaWYgKHRy
YWNrSUQgPT0gbV9lbmFibGVkVmlkZW9UcmFja0lEKSB7CiAgICAgICAgIGlmIChtX2RlY29tcHJl
c3Npb25TZXNzaW9uKSB7CiAgICAgICAgICAgICBtX2RlY29tcHJlc3Npb25TZXNzaW9uLT5yZXF1
ZXN0TWVkaWFEYXRhV2hlblJlYWR5KFt0aGlzLCB0cmFja0lEXSB7CkBAIC0xMzEyLDcgKzExNjMs
NyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpub3RpZnlDbGllbnRXaGVuUmVh
ZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBBdG9tUwogCiBib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjpjYW5TZXRNaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lKGNvbnN0IEF0b21T
dHJpbmcmIHRyYWNrSURTdHJpbmcpIGNvbnN0CiB7Ci0gICAgaW50IHRyYWNrSUQgPSB0cmFja0lE
U3RyaW5nLnRvSW50KCk7CisgICAgYXV0byB0cmFja0lEID0gdHJhY2tJRFN0cmluZy5zdHJpbmco
KS50b1VJbnQ2NCgpOwogICAgIGlmICh0cmFja0lEID09IG1fZW5hYmxlZFZpZGVvVHJhY2tJRCkK
ICAgICAgICAgcmV0dXJuIFtnZXRBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckNsYXNzKCkgaW5z
dGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9yKGV4cGVjdE1pbmltdW1VcGNvbWluZ1Nh
bXBsZUJ1ZmZlclByZXNlbnRhdGlvblRpbWU6KV07CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmgKaW5kZXggYzc4Yjk1M2M3YmFhOGVjYjI5MjhiZjJjM2RkNTUxYTkwZWQy
MzhjYy4uYzgzMmE5ZTFhYmYyMDIwZTkyMDY1YTBjOGM4YzJlMGM1MWM3YTc2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlk
ZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oCkBAIC00MiwxNCArNDIsMTEgQEAgY2xhc3MgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyBm
aW5hbCA6IHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZUFWRiB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMpCiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gY3JlYXRlKEFW
QXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCisg
ICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gY3JlYXRl
KEFWQXNzZXRUcmFjayogdHJhY2spCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyh0cmFjaywgcGFyZW50KSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDKHRyYWNrKSk7CiAgICAgfQogCi0gICAgYm9vbCBzZWxlY3RlZCgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCkgb3ZlcnJpZGU7Ci0KICAgICB2b2lkIHNl
dEFzc2V0VHJhY2soQVZBc3NldFRyYWNrKik7CiAgICAgQVZBc3NldFRyYWNrKiBhc3NldFRyYWNr
KCkgY29uc3Q7CiAKQEAgLTU4LDE0ICs1NSwxMiBAQCBwdWJsaWM6CiAgICAgRmxvYXRTaXplIG5h
dHVyYWxTaXplKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgVmlkZW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiwgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMqIHBhcmVudCk7CisgICAgZXhwbGljaXQgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKik7CiAgICAgCiAgICAgdm9pZCByZXNldFByb3BlcnRp
ZXNGcm9tVHJhY2soKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBVlRyYWNrUHJpdmF0ZUFWRk9i
akNJbXBsPiBtX2ltcGw7Ci0gICAgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIG1fcGFyZW50
OwogICAgIGludCBtX3RyYWNrSUQ7Ci0gICAgYm9vbCBtX3NlbGVjdGVkOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCAyYzczOTI3OTZlMGY1MjVmOTRjMjhhYTIwYWFkMTBl
MzBkMGQwNTFjLi5hZmQxYjdmM2E5MzM0OTE3MWQ5MTA1OGY2ODVjZmU4MGJiOGQ3MzJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMzQsMTEgKzM0LDkgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6VmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaywgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKK1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sq
IHRyYWNrKQogICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1w
bD4odHJhY2spKQotICAgICwgbV9wYXJlbnQocGFyZW50KQogICAgICwgbV90cmFja0lEKC0xKQot
ICAgICwgbV9zZWxlY3RlZChmYWxzZSkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2so
KTsKIH0KQEAgLTY1LDIxICs2Myw2IEBAIEFWQXNzZXRUcmFjayogVmlkZW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OmFzc2V0VHJhY2soKSBjb25zdAogICAgIHJldHVybiBtX2ltcGwt
PmFzc2V0VHJhY2soKTsKIH0KIAotCi1ib29sIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjpzZWxlY3RlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2VsZWN0ZWQ7Ci19Ci0K
LXZvaWQgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldFNlbGVjdGVkKGJv
b2wgc2VsZWN0ZWQpCi17Ci0gICAgaWYgKG1fc2VsZWN0ZWQgPT0gc2VsZWN0ZWQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIG1fc2VsZWN0ZWQgPSBzZWxlY3RlZDsKLSAgICBtX3BhcmVudC0+dHJh
Y2tEaWRDaGFuZ2VFbmFibGVkKHRoaXMpOwotfQotCiBGbG9hdFNpemUgVmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6Om5hdHVyYWxTaXplKCkgY29uc3QKIHsKICAgICByZXR1cm4g
RmxvYXRTaXplKFthc3NldFRyYWNrKCkgbmF0dXJhbFNpemVdKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJp
dmF0ZVdlYk0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmMjBiY2Y5ZGYxMDFhY2ExODViMjNjMzE5ZmQyM2Jk
N2VlMmM5ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCkBAIC0wLDAgKzEsNzUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZh
dGVXZWJNLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1JlZjxBdWRpb1RyYWNrUHJpdmF0ZVdlYk0+IEF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6
Y3JlYXRlKHdlYm06OlRyYWNrRW50cnkmJiB0cmFja0VudHJ5KQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEF1ZGlvVHJhY2tQcml2YXRlV2ViTShXVEZNb3ZlKHRyYWNrRW50cnkpKSk7Cit9
CisKK0F1ZGlvVHJhY2tQcml2YXRlV2ViTTo6QXVkaW9UcmFja1ByaXZhdGVXZWJNKHdlYm06OlRy
YWNrRW50cnkmJiB0cmFja0VudHJ5KQorICAgIDogbV90cmFjayhXVEZNb3ZlKHRyYWNrRW50cnkp
KQoreworICAgIGlmIChtX3RyYWNrLmlzX2VuYWJsZWQuaXNfcHJlc2VudCgpKQorICAgICAgICBz
ZXRFbmFibGVkKG1fdHJhY2suaXNfZW5hYmxlZC52YWx1ZSgpKTsKK30KKworQXRvbVN0cmluZyBB
dWRpb1RyYWNrUHJpdmF0ZVdlYk06OmlkKCkgY29uc3QKK3sKKyAgICBpZiAobV90cmFja0lELmlz
TnVsbCgpKQorICAgICAgICBtX3RyYWNrSUQgPSBtX3RyYWNrLnRyYWNrX3VpZC5pc19wcmVzZW50
KCkgPyBBdG9tU3RyaW5nOjpudW1iZXIobV90cmFjay50cmFja191aWQudmFsdWUoKSkgOiBlbXB0
eUF0b20oKTsKKyAgICByZXR1cm4gbV90cmFja0lEOworfQorCitBdG9tU3RyaW5nIEF1ZGlvVHJh
Y2tQcml2YXRlV2ViTTo6bGFiZWwoKSBjb25zdAoreworICAgIGlmIChtX2xhYmVsLmlzTnVsbCgp
KQorICAgICAgICBtX2xhYmVsID0gbV90cmFjay5uYW1lLmlzX3ByZXNlbnQoKSA/IEF0b21TdHJp
bmc6OmZyb21VVEY4KG1fdHJhY2submFtZS52YWx1ZSgpLmRhdGEoKSwgbV90cmFjay5uYW1lLnZh
bHVlKCkubGVuZ3RoKCkpIDogZW1wdHlBdG9tKCk7CisgICAgcmV0dXJuIG1fbGFiZWw7Cit9CisK
K0F0b21TdHJpbmcgQXVkaW9UcmFja1ByaXZhdGVXZWJNOjpsYW5ndWFnZSgpIGNvbnN0Cit7Cisg
ICAgaWYgKG1fbGFuZ3VhZ2UuaXNOdWxsKCkpCisgICAgICAgIG1fbGFuZ3VhZ2UgPSBtX3RyYWNr
Lmxhbmd1YWdlLmlzX3ByZXNlbnQoKSA/IEF0b21TdHJpbmc6OmZyb21VVEY4KG1fdHJhY2subGFu
Z3VhZ2UudmFsdWUoKS5kYXRhKCksIG1fdHJhY2subGFuZ3VhZ2UudmFsdWUoKS5sZW5ndGgoKSkg
OiBlbXB0eUF0b20oKTsKKyAgICByZXR1cm4gbV9sYW5ndWFnZTsKK30KKworaW50IEF1ZGlvVHJh
Y2tQcml2YXRlV2ViTTo6dHJhY2tJbmRleCgpIGNvbnN0Cit7CisgICAgaWYgKG1fdHJhY2sudHJh
Y2tfbnVtYmVyLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgcmV0dXJuIG1fdHJhY2sudHJhY2tfbnVt
YmVyLnZhbHVlKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShN
RURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhOTc4
ZGY3OGMzYjU2ZmE0ZTcxYjkwMWRmNmFmN2M5MmUxNjk5MTIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdl
Yk0uaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGUuaCIKKyNp
bmNsdWRlIDx3ZWJtL2RvbV90eXBlcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEF1ZGlvVHJhY2tQcml2YXRlV2ViTSBmaW5hbCA6IHB1YmxpYyBBdWRpb1RyYWNrUHJpdmF0ZSB7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxBdWRpb1RyYWNrUHJpdmF0ZVdlYk0+IGNyZWF0ZSh3
ZWJtOjpUcmFja0VudHJ5JiYpOworICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2tQcml2YXRlV2ViTSgp
ID0gZGVmYXVsdDsKKworICAgIEF0b21TdHJpbmcgaWQoKSBjb25zdCBmaW5hbDsKKyAgICBBdG9t
U3RyaW5nIGxhYmVsKCkgY29uc3QgZmluYWw7CisgICAgQXRvbVN0cmluZyBsYW5ndWFnZSgpIGNv
bnN0IGZpbmFsOworICAgIGludCB0cmFja0luZGV4KCkgY29uc3QgZmluYWw7CisKK3ByaXZhdGU6
CisgICAgQXVkaW9UcmFja1ByaXZhdGVXZWJNKHdlYm06OlRyYWNrRW50cnkmJik7CisgICAgd2Vi
bTo6VHJhY2tFbnRyeSBtX3RyYWNrOworICAgIG11dGFibGUgQXRvbVN0cmluZyBtX3RyYWNrSUQ7
CisgICAgbXV0YWJsZSBBdG9tU3RyaW5nIG1fbGFiZWw7CisgICAgbXV0YWJsZSBBdG9tU3RyaW5n
IG1fbGFuZ3VhZ2U7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU09VUkNFKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODRhOWEyMDI4MWM0ZWVjNWUwYzY1
ZTM0YzY0ZDA0NDcyYWZiYTBhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKQEAgLTAsMCArMSw1
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTb3VyY2VC
dWZmZXJQYXJzZXIuaCIKKworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisKKyNpbmNsdWRlICJD
b250ZW50VHlwZS5oIgorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCIKKyNp
bmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWVkaWFQbGF5ZXJFbnVtczo6U3Vw
cG9ydHNUeXBlIFNvdXJjZUJ1ZmZlclBhcnNlcjo6aXNDb250ZW50VHlwZVN1cHBvcnRlZChjb25z
dCBDb250ZW50VHlwZSYgdHlwZSkKK3sKKyAgICBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5
cGUgc3VwcG9ydHMgPSBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9y
dGVkOworICAgIHN1cHBvcnRzID0gc3RkOjptYXgoc3VwcG9ydHMsIFNvdXJjZUJ1ZmZlclBhcnNl
cldlYk06OmlzQ29udGVudFR5cGVTdXBwb3J0ZWQodHlwZSkpOworICAgIHN1cHBvcnRzID0gc3Rk
OjptYXgoc3VwcG9ydHMsIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmlzQ29udGVudFR5cGVT
dXBwb3J0ZWQodHlwZSkpOworICAgIHJldHVybiBzdXBwb3J0czsKK30KKworUmVmUHRyPFNvdXJj
ZUJ1ZmZlclBhcnNlcj4gU291cmNlQnVmZmVyUGFyc2VyOjpjcmVhdGUoY29uc3QgQ29udGVudFR5
cGUmIHR5cGUpCit7CisgICAgaWYgKFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmlzQ29udGVudFR5
cGVTdXBwb3J0ZWQodHlwZSkgIT0gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc05v
dFN1cHBvcnRlZCkKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNKCkpOworCisgICAgaWYgKFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmlzQ29udGVu
dFR5cGVTdXBwb3J0ZWQodHlwZSkgIT0gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJ
c05vdFN1cHBvcnRlZCkKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDKCkpOworCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30KKworI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI2MGNiNmE1YzJiZDRkM2NmNjFhMGRjNjY0MTNiYTA3ODcwN2UwZTYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuaApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKworI2luY2x1ZGUgIk1lZGlhUGxheWVyRW51bXMuaCIK
KyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmgiCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvVWludDhBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29udGVudFR5cGU7CitjbGFzcyBNZWRpYVNhbXBs
ZTsKKworY2xhc3MgU291cmNlQnVmZmVyUGFyc2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFNvdXJjZUJ1ZmZlclBhcnNlcj4geworcHVibGljOgorICAgIHN0YXRpYyBNZWRpYVBsYXll
ckVudW1zOjpTdXBwb3J0c1R5cGUgaXNDb250ZW50VHlwZVN1cHBvcnRlZChjb25zdCBDb250ZW50
VHlwZSYpOworCisgICAgc3RhdGljIFJlZlB0cjxTb3VyY2VCdWZmZXJQYXJzZXI+IGNyZWF0ZShj
b25zdCBDb250ZW50VHlwZSYpOworICAgIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclBhcnNlcigpID0g
ZGVmYXVsdDsKKworICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeworICAgICAgICBBVkZP
YmpDLAorICAgICAgICBXZWJNLAorICAgIH07CisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25z
dCA9IDA7CisgICAgZW51bSBjbGFzcyBBcHBlbmRGbGFncyA6IHVpbnQ4X3QgeworICAgICAgICBO
b25lLAorICAgICAgICBEaXNjb250aW51aXR5LAorICAgIH07CisgICAgdmlydHVhbCB2b2lkIGFw
cGVuZERhdGEoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYsIEFwcGVuZEZsYWdzID0gQXBwZW5kRmxh
Z3M6Ok5vbmUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmx1c2hQZW5kaW5nTWVkaWFEYXRhKCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJ
RChib29sLCB1aW50NjRfdCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQcm92aWRlTWVk
aWFkYXRhRm9yVHJhY2tJRCh1aW50NjRfdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXNldFBh
cnNlclN0YXRlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgPSAwOworCisg
ICAgLy8gV2lsbCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgorICAgIHVzaW5nIEluaXRp
YWxpemF0aW9uU2VnbWVudCA9IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0
aW9uU2VnbWVudDsKKyAgICB1c2luZyBEaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNr
ID0gV1RGOjpGdW5jdGlvbjx2b2lkKEluaXRpYWxpemF0aW9uU2VnbWVudCYmKT47CisgICAgdm9p
ZCBzZXREaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKERpZFBhcnNlSW5pdGlhbGl6
YXRpb25EYXRhQ2FsbGJhY2smJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIG1fZGlkUGFyc2VJ
bml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworICAgIH0KKwor
ICAgIC8vIFdpbGwgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICB1c2luZyBEaWRF
bmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZCh1
aW50NjRfdCBlcnJvckNvZGUpPjsKKyAgICB2b2lkIHNldERpZEVuY291bnRlckVycm9yRHVyaW5n
UGFyc2luZ0NhbGxiYWNrKERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrJiYg
Y2FsbGJhY2spCisgICAgeworICAgICAgICBtX2RpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2lu
Z0NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CisgICAgfQorCisgICAgLy8gV2lsbCBiZSBj
YWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgorICAgIHVzaW5nIERpZFByb3ZpZGVNZWRpYURhdGFD
YWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChSZWY8TWVkaWFTYW1wbGU+JiYsIHVpbnQ2NF90
IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKT47CisgICAgdm9pZCBzZXREaWRQcm92
aWRlTWVkaWFEYXRhQ2FsbGJhY2soRGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrJiYgY2FsbGJh
Y2spCisgICAgeworICAgICAgICBtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spOworICAgIH0KKworICAgIC8vIFdpbGwgYmUgY2FsbGVkIHN5bmNocm9ub3Vz
bHkgb24gdGhlIHBhcnNlciB0aGVhZC4KKyAgICB1c2luZyBXaWxsUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrID0gV1RGOjpGdW5jdGlv
bjx2b2lkKHVpbnQ2NF90IHRyYWNrSUQpPjsKKyAgICB2b2lkIHNldFdpbGxQcm92aWRlQ29udGVu
dEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soV2lsbFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayYm
IGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgbV93aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7
CisgICAgfQorCisgICAgLy8gV2lsbCBiZSBjYWxsZWQgc3luY2hyb25vdXNseSBvbiB0aGUgcGFy
c2VyIHRoZWFkLgorICAgIHVzaW5nIERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxp
emF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChSZWY8VWlu
dDhBcnJheT4mJiwgdWludDY0X3QgdHJhY2tJRCk+OworICAgIHZvaWQgc2V0RGlkUHJvdmlkZUNv
bnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrKERpZFBy
b3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFj
ayYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgbV9kaWRQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBTb3VyY2VCdWZmZXJQYXJzZXIoKSA9IGRlZmF1
bHQ7CisKKyAgICBEaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrIG1fZGlkUGFyc2VJ
bml0aWFsaXphdGlvbkRhdGFDYWxsYmFjazsKKyAgICBEaWRFbmNvdW50ZXJFcnJvckR1cmluZ1Bh
cnNpbmdDYWxsYmFjayBtX2RpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrOwor
ICAgIERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayBtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxs
YmFjazsKKyAgICBXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRENhbGxiYWNrIG1fd2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxp
emF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjazsKKyAgICBEaWRQcm92aWRlQ29udGVudEtleVJl
cXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sgbV9kaWRQcm92aWRlQ29u
dGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2s7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDdhNzg4MTk3OGMxMzk1ODYwODBkYmU3ZjkyZGE0
MzA1NDFhYTgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTAsMCArMSw4MTUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKworI2luY2x1ZGUgIkF1
ZGlvVHJhY2tQcml2YXRlV2ViTS5oIgorI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUu
aCIKKyNpbmNsdWRlICJNZWRpYURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFTYW1wbGVB
VkZPYmpDLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJSdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAi
VlA5VXRpbGl0aWVzQ29jb2EuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaCIK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EYXRhVmlldy5oPgorI2luY2x1ZGUgPHdlYm0vd2Vi
bV9wYXJzZXIuaD4KKyNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgorI2luY2x1ZGUgPHd0Zi9E
ZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9k
YXJ3aW4vV2Vha0xpbmtpbmcuaD4KKworV1RGX1dFQUtfTElOS19GT1JDRV9JTVBPUlQod2VibTo6
c3dhcCk7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGJvb2wgaXNXZWJtUGFyc2Vy
QXZhaWxhYmxlKCkKK3sKKyAgICByZXR1cm4gISF3ZWJtOjpzd2FwICYmIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViTVBhcnNlckVuYWJsZWQoKTsKK30KKwordXNp
bmcgbmFtZXNwYWNlIHdlYm07CisKK2NsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlN0cmVh
bWluZ1ZlY3RvclJlYWRlciBmaW5hbCA6IHB1YmxpYyB3ZWJtOjpSZWFkZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHVzaW5nIFNlZ21lbnQgPSBWZWN0b3I8
dW5zaWduZWQgY2hhcj47CisgICAgdm9pZCBhcHBlbmRTZWdtZW50KFNlZ21lbnQmJiBzZWdtZW50
KQorICAgIHsKKyAgICAgICAgbV9kYXRhLmFwcGVuZChXVEZNb3ZlKHNlZ21lbnQpKTsKKyAgICB9
CisKKyAgICBTdGF0dXMgUmVhZChzdGQ6OnNpemVfdCBudW1Ub1JlYWQsIHVpbnQ4X3QqIG91dHB1
dEJ1ZmZlciwgdWludDY0X3QqIG51bUFjdHVhbGx5UmVhZCkgZmluYWwKKyAgICB7CisgICAgICAg
IEFTU0VSVChvdXRwdXRCdWZmZXIgJiYgbnVtQWN0dWFsbHlSZWFkKTsKKyAgICAgICAgaWYgKCFv
dXRwdXRCdWZmZXIgfHwgIW51bUFjdHVhbGx5UmVhZCkKKyAgICAgICAgICAgIHJldHVybiBTdGF0
dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKworICAgICAgICAqbnVtQWN0dWFsbHlSZWFk
ID0gMDsKKyAgICAgICAgd2hpbGUgKCFtX2RhdGEuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBh
dXRvJiBjdXJyZW50U2VnbWVudCA9IG1fZGF0YS5maXJzdCgpOworCisgICAgICAgICAgICBpZiAo
bV9wb3NpdGlvbldpdGhpblNlZ21lbnQgPj0gY3VycmVudFNlZ21lbnQuc2l6ZSgpKSB7CisgICAg
ICAgICAgICAgICAgYWR2YW5jZVRvTmV4dFNlZ21lbnQoKTsKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2l6ZV90IG51bUF2YWlsYWJsZSA9
IGN1cnJlbnRTZWdtZW50LnNpemUoKSAtIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OworICAgICAg
ICAgICAgaWYgKG51bVRvUmVhZCA8IG51bUF2YWlsYWJsZSkgeworICAgICAgICAgICAgICAgIG1l
bWNweShvdXRwdXRCdWZmZXIsIGN1cnJlbnRTZWdtZW50LmRhdGEoKSArIG1fcG9zaXRpb25XaXRo
aW5TZWdtZW50LCBudW1Ub1JlYWQpOworICAgICAgICAgICAgICAgICpudW1BY3R1YWxseVJlYWQg
Kz0gbnVtVG9SZWFkOworICAgICAgICAgICAgICAgIG1fcG9zaXRpb24gKz0gbnVtVG9SZWFkOwor
ICAgICAgICAgICAgICAgIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50ICs9IG51bVRvUmVhZDsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgbWVtY3B5KG91dHB1dEJ1ZmZlciwgY3VycmVudFNlZ21l
bnQuZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQsIG51bUF2YWlsYWJsZSk7CisgICAg
ICAgICAgICAqbnVtQWN0dWFsbHlSZWFkICs9IG51bUF2YWlsYWJsZTsKKyAgICAgICAgICAgIG1f
cG9zaXRpb24gKz0gbnVtQXZhaWxhYmxlOworICAgICAgICAgICAgbV9wb3NpdGlvbldpdGhpblNl
Z21lbnQgKz0gbnVtQXZhaWxhYmxlOworICAgICAgICAgICAgbnVtVG9SZWFkIC09IG51bUF2YWls
YWJsZTsKKyAgICAgICAgICAgIGFkdmFuY2VUb05leHRTZWdtZW50KCk7CisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIW51bVRvUmVhZCkKKyAgICAgICAgICAg
IHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworICAgICAgICBpZiAoKm51bUFj
dHVhbGx5UmVhZCkKKyAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tQYXJ0aWFs
KTsKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtXb3VsZEJsb2NrKTsKKyAgICB9CisK
KyAgICBTdGF0dXMgU2tpcCh1aW50NjRfdCBudW1Ub1NraXAsIHVpbnQ2NF90KiBudW1BY3R1YWxs
eVNraXBwZWQpIGZpbmFsCisgICAgeworICAgICAgICBBU1NFUlQobnVtQWN0dWFsbHlTa2lwcGVk
KTsKKyAgICAgICAgaWYgKCFudW1BY3R1YWxseVNraXBwZWQpCisgICAgICAgICAgICByZXR1cm4g
U3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CisKKyAgICAgICAgKm51bUFjdHVhbGx5
U2tpcHBlZCA9IDA7CisgICAgICAgIHdoaWxlICghbV9kYXRhLmlzRW1wdHkoKSkgeworICAgICAg
ICAgICAgYXV0byYgY3VycmVudFNlZ21lbnQgPSBtX2RhdGEuZmlyc3QoKTsKKworICAgICAgICAg
ICAgaWYgKG1fcG9zaXRpb25XaXRoaW5TZWdtZW50ID49IGN1cnJlbnRTZWdtZW50LnNpemUoKSkg
eworICAgICAgICAgICAgICAgIGFkdmFuY2VUb05leHRTZWdtZW50KCk7CisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNpemVfdCBudW1BdmFp
bGFibGUgPSBjdXJyZW50U2VnbWVudC5zaXplKCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsK
KworICAgICAgICAgICAgaWYgKG51bVRvU2tpcCA8IG51bUF2YWlsYWJsZSkgeworICAgICAgICAg
ICAgICAgICpudW1BY3R1YWxseVNraXBwZWQgKz0gbnVtVG9Ta2lwOworICAgICAgICAgICAgICAg
IG1fcG9zaXRpb24gKz0gbnVtVG9Ta2lwOworICAgICAgICAgICAgICAgIG1fcG9zaXRpb25XaXRo
aW5TZWdtZW50ICs9IG51bVRvU2tpcDsKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0
YXR1czo6a09rQ29tcGxldGVkKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgKm51bUFj
dHVhbGx5U2tpcHBlZCArPSBudW1BdmFpbGFibGU7CisgICAgICAgICAgICBtX3Bvc2l0aW9uICs9
IG51bUF2YWlsYWJsZTsKKyAgICAgICAgICAgIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50ICs9IG51
bUF2YWlsYWJsZTsKKyAgICAgICAgICAgIG51bVRvU2tpcCAtPSBudW1BdmFpbGFibGU7CisgICAg
ICAgICAgICBhZHZhbmNlVG9OZXh0U2VnbWVudCgpOworICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKCFudW1Ub1NraXApCisgICAgICAgICAgICByZXR1cm4gU3Rh
dHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKKyAgICAgICAgaWYgKCpudW1BY3R1YWxseVNraXBw
ZWQpCisgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rUGFydGlhbCk7CisgICAg
ICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprV291bGRCbG9jayk7CisgICAgfQorCisgICAgdWlu
dDY0X3QgUG9zaXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CisKKyAg
ICB2b2lkIHJlc2V0KCkKKyAgICB7CisgICAgICAgIG1fcG9zaXRpb24gPSAwOworICAgICAgICBt
X2RhdGEuY2xlYXIoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBhZHZhbmNlVG9OZXh0
U2VnbWVudCgpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fZGF0YS5pc0VtcHR5KCkpOworICAg
ICAgICBpZiAobV9kYXRhLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBBU1NFUlQobV9wb3NpdGlvbldpdGhpblNlZ21lbnQgPT0gbV9kYXRhLmZpcnN0KCkuc2l6ZSgp
KTsKKworICAgICAgICBtX2RhdGEucmVtb3ZlRmlyc3QoKTsKKyAgICAgICAgbV9wb3NpdGlvbldp
dGhpblNlZ21lbnQgPSAwOworICAgIH0KKworICAgIERlcXVlPFNlZ21lbnQ+IG1fZGF0YTsKKyAg
ICBzaXplX3QgbV9wb3NpdGlvbiB7IDAgfTsKKyAgICBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNl
Z21lbnQgeyAwIH07Cit9OworCitjbGFzcyBNZWRpYURlc2NyaXB0aW9uV2ViTSBmaW5hbCA6IHB1
YmxpYyBNZWRpYURlc2NyaXB0aW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUmVmPE1lZGlhRGVzY3JpcHRpb25XZWJNPiBjcmVhdGUod2VibTo6
VHJhY2tFbnRyeSYmIHRyYWNrKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzV2VibVBhcnNlckF2
YWlsYWJsZSgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFEZXNjcmlwdGlv
bldlYk0oV1RGTW92ZSh0cmFjaykpKTsKKyAgICB9CisKKyAgICBNZWRpYURlc2NyaXB0aW9uV2Vi
TSh3ZWJtOjpUcmFja0VudHJ5JiYgdHJhY2spCisgICAgICAgIDogbV90cmFjayB7IFdURk1vdmUo
dHJhY2spIH0KKyAgICB7CisgICAgfQorCisgICAgQXRvbVN0cmluZyBjb2RlYygpIGNvbnN0IGZp
bmFsCisgICAgeworICAgICAgICBpZiAobV9jb2RlYykKKyAgICAgICAgICAgIHJldHVybiAqbV9j
b2RlYzsKKworICAgICAgICAvLyBGcm9tOiBodHRwczovL3d3dy5tYXRyb3NrYS5vcmcvdGVjaG5p
Y2FsL2NvZGVjX3NwZWNzLmh0bWwKKyAgICAgICAgLy8gIkVhY2ggQ29kZWMgSUQgTVVTVCBpbmNs
dWRlIGEgTWFqb3IgQ29kZWMgSUQgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRoZSBDb2RlYyBJRCBQ
cmVmaXguCisgICAgICAgIC8vIEEgTWFqb3IgQ29kZWMgSUQgTUFZIGJlIGZvbGxvd2VkIGJ5IGFu
IE9QVElPTkFMIENvZGVjIElEIFN1ZmZpeCB0byBjb21tdW5pY2F0ZSBhIHJlZmluZW1lbnQKKyAg
ICAgICAgLy8gb2YgdGhlIE1ham9yIENvZGVjIElELiBJZiBhIENvZGVjIElEIFN1ZmZpeCBpcyB1
c2VkLCB0aGVuIHRoZSBDb2RlYyBJRCBNVVNUIGluY2x1ZGUgYSBmb3J3YXJkCisgICAgICAgIC8v
IHNsYXNoICjigJwv4oCdKSBhcyBhIHNlcGFyYXRvciBiZXR3ZWVuIHRoZSBNYWpvciBDb2RlYyBJ
RCBhbmQgdGhlIENvZGVjIElEIFN1ZmZpeC4gVGhlIE1ham9yIENvZGVjCisgICAgICAgIC8vIElE
IE1VU1QgYmUgY29tcG9zZWQgb2Ygb25seSBjYXBpdGFsIGxldHRlcnMgKEEtWikgYW5kIG51bWJl
cnMgKDAtOSkuIFRoZSBDb2RlYyBJRCBTdWZmaXggTVVTVAorICAgICAgICAvLyBiZSBjb21wb3Nl
ZCBvZiBvbmx5IGNhcGl0YWwgbGV0dGVycyAoQS1aKSwgbnVtYmVycyAoMC05KSwgdW5kZXJzY29y
ZSAo4oCcX+KAnSksIGFuZCBmb3J3YXJkIHNsYXNoICjigJwv4oCdKS4iCisKKyAgICAgICAgaWYg
KCFtX3RyYWNrLmNvZGVjX2lkLmlzX3ByZXNlbnQoKSkgeworICAgICAgICAgICAgbV9jb2RlYyA9
IGVtcHR5QXRvbSgpOworICAgICAgICAgICAgcmV0dXJuICptX2NvZGVjOworICAgICAgICB9CisK
KyAgICAgICAgU3RyaW5nVmlldyBjb2RlY0lEIHsgbV90cmFjay5jb2RlY19pZC52YWx1ZSgpLmRh
dGEoKSwgKHVuc2lnbmVkKW1fdHJhY2suY29kZWNfaWQudmFsdWUoKS5sZW5ndGgoKSB9OworICAg
ICAgICBpZiAoIWNvZGVjSUQuc3RhcnRzV2l0aCgiVl8iKSAmJiAhY29kZWNJRC5zdGFydHNXaXRo
KCJBXyIpICYmICFjb2RlY0lELnN0YXJ0c1dpdGgoIlNfIikpIHsKKyAgICAgICAgICAgIG1fY29k
ZWMgPSBlbXB0eUF0b20oKTsKKyAgICAgICAgICAgIHJldHVybiAqbV9jb2RlYzsKKyAgICAgICAg
fQorCisgICAgICAgIGF1dG8gc2xhc2hMb2NhdGlvbiA9IGNvZGVjSUQuZmluZCgnLycpOworICAg
ICAgICBhdXRvIGxlbmd0aCA9IHNsYXNoTG9jYXRpb24gPT0gbm90Rm91bmQgPyBjb2RlY0lELmxl
bmd0aCgpIC0gMiA6IHNsYXNoTG9jYXRpb24gLSAyOworICAgICAgICBtX2NvZGVjID0gQXRvbVN0
cmluZyB7IGNvZGVjSUQuc3Vic3RyaW5nKDIsIGxlbmd0aCkuY29udmVydFRvQVNDSUlMb3dlcmNh
c2UoKSB9OworICAgICAgICByZXR1cm4gKm1fY29kZWM7CisgICAgfQorICAgIGJvb2wgaXNWaWRl
bygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdHJhY2sudHJhY2tfdHlwZS5pc19wcmVzZW50KCkg
JiYgbV90cmFjay50cmFja190eXBlLnZhbHVlKCkgPT0gVHJhY2tUeXBlOjprVmlkZW87IH0KKyAg
ICBib29sIGlzQXVkaW8oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RyYWNrLnRyYWNrX3R5cGUu
aXNfcHJlc2VudCgpICYmIG1fdHJhY2sudHJhY2tfdHlwZS52YWx1ZSgpID09IFRyYWNrVHlwZTo6
a0F1ZGlvOyB9CisgICAgYm9vbCBpc1RleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RyYWNr
LnRyYWNrX3R5cGUuaXNfcHJlc2VudCgpICYmIG1fdHJhY2sudHJhY2tfdHlwZS52YWx1ZSgpID09
IFRyYWNrVHlwZTo6a1N1YnRpdGxlOyB9CisKKyAgICBjb25zdCB3ZWJtOjpUcmFja0VudHJ5JiB0
cmFjaygpIHsgcmV0dXJuIG1fdHJhY2s7IH0KKworcHJpdmF0ZToKKyAgICBtdXRhYmxlIE9wdGlv
bmFsPEF0b21TdHJpbmc+IG1fY29kZWM7CisgICAgd2VibTo6VHJhY2tFbnRyeSBtX3RyYWNrOwor
fTsKKworTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIFNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk06OmlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29uc3QgQ29udGVudFR5cGUmIHR5cGUpCit7Cisg
ICAgaWYgKCFpc1dlYm1QYXJzZXJBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxh
eWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CisKKyAgICBpZiAoIVdURjo6
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLmNvbnRhaW5lclR5cGUoKSwgImF1ZGlvL3dlYm0i
KQorICAgICAgICAmJiAhV1RGOjplcXVhbElnbm9yaW5nQVNDSUlDYXNlKHR5cGUuY29udGFpbmVy
VHlwZSgpLCAidmlkZW8vd2VibSIpKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6
U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKKworICAgIFN0cmluZyBjb2RlY3NQYXJhbWV0
ZXIgPSB0eXBlLnBhcmFtZXRlcihDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVyKCkpOworICAg
IGlmICghY29kZWNzUGFyYW1ldGVyKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6
U3VwcG9ydHNUeXBlOjpNYXlCZVN1cHBvcnRlZDsKKworICAgIGF1dG8gc3BsaXRSZXN1bHRzID0g
U3RyaW5nVmlldyhjb2RlY3NQYXJhbWV0ZXIpLnNwbGl0KCcsJyk7CisgICAgZm9yIChhdXRvIHNw
bGl0IDogc3BsaXRSZXN1bHRzKSB7CisgICAgICAgIGlmIChzcGxpdC5zdGFydHNXaXRoKCJ2cDA5
IikpIHsKKyAgICAgICAgICAgIGlmICghaXNWUDlEZWNvZGVyQXZhaWxhYmxlKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBw
b3J0ZWQ7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhN
RTogQWRkIE9wdXMgU3VwcG9ydAorICAgICAgICAvLyBGSVhNRTogQWRkIFZvcmJpcyBTdXBwb3J0
CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGU6OklzTm90U3Vw
cG9ydGVkOworICAgIH0KKyAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBl
OjpJc1N1cHBvcnRlZDsKK30KKworU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6U291cmNlQnVmZmVy
UGFyc2VyV2ViTSgpCisgICAgOiBtX3JlYWRlcihXVEY6Om1ha2VVbmlxdWVSZWY8U3RyZWFtaW5n
VmVjdG9yUmVhZGVyPigpKQoreworICAgIGlmIChpc1dlYm1QYXJzZXJBdmFpbGFibGUoKSkKKyAg
ICAgICAgbV9wYXJzZXIgPSBXVEY6Om1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFdl
Ym1QYXJzZXI+KCk7Cit9CisKK1NvdXJjZUJ1ZmZlclBhcnNlcldlYk06On5Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNKCkgPSBkZWZhdWx0OworCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmFw
cGVuZERhdGEoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgYnVmZmVyLCBBcHBlbmRGbGFncyBhcHBl
bmRGbGFncykKK3sKKyAgICBpZiAoIW1fcGFyc2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoYXBwZW5kRmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpIHsKKyAgICAgICAg
bV9yZWFkZXItPnJlc2V0KCk7CisgICAgICAgIG1fcGFyc2VyLT5EaWRTZWVrKCk7CisgICAgfQor
ICAgIG1fcmVhZGVyLT5hcHBlbmRTZWdtZW50KFdURk1vdmUoYnVmZmVyKSk7CisgICAgbV9zdGF0
dXMgPSBtX3BhcnNlci0+RmVlZCh0aGlzLCAmbV9yZWFkZXIpOworICAgIGlmIChtX3N0YXR1cy5v
aygpIHx8IG1fc3RhdHVzLmNvZGUgPT0gU3RhdHVzOjprRW5kT2ZGaWxlIHx8IG1fc3RhdHVzLmNv
ZGUgPT0gU3RhdHVzOjprV291bGRCbG9jaykKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb2RlID0g
bV9zdGF0dXMuY29kZV0geworICAgICAgICBpZiAobV9kaWRFbmNvdW50ZXJFcnJvckR1cmluZ1Bh
cnNpbmdDYWxsYmFjaykKKyAgICAgICAgICAgIG1fZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJz
aW5nQ2FsbGJhY2soY29kZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnNldFNob3VsZFByb3ZpZGVNZWRpYURh
dGFGb3JUcmFja0lEKGJvb2wsIHVpbnQ2NF90KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK2Jvb2wgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2hvdWxkUHJvdmlkZU1lZGlhZGF0YUZv
clRyYWNrSUQodWludDY0X3QpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6cmVzZXRQYXJzZXJTdGF0
ZSgpCit7CisgICAgbV9wYXJzZXItPkRpZFNlZWsoKTsKKyAgICBtX3N0YXRlID0gU3RhdGU6Ok5v
bmU7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aW52YWxpZGF0ZSgpCit7Cisg
ICAgbV9wYXJzZXIgPSBudWxscHRyOworICAgIG1fdHJhY2tzLmNsZWFyKCk7CisgICAgbV9pbml0
aWFsaXphdGlvblNlZ21lbnQgPSBudWxscHRyOworICAgIG1fY3VycmVudEJsb2NrLnJlc2V0KCk7
Cit9CisKK2F1dG8gU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6dHJhY2tEYXRhRm9yVHJhY2tOdW1i
ZXIodWludDY0X3QgdHJhY2tOdW1iZXIpIC0+IFRyYWNrRGF0YSoKK3sKKyAgICBmb3IgKGF1dG8m
IHRyYWNrIDogbV90cmFja3MpIHsKKyAgICAgICAgaWYgKHRyYWNrLnRyYWNrLnRyYWNrX251bWJl
ci5pc19wcmVzZW50KCkgJiYgdHJhY2sudHJhY2sudHJhY2tfbnVtYmVyLnZhbHVlKCkgPT0gdHJh
Y2tOdW1iZXIpCisgICAgICAgICAgICByZXR1cm4gJnRyYWNrOworICAgIH0KKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKworCitTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FbGVtZW50
QmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgQWN0aW9uKiBhY3Rpb24pCit7
CisgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKKyAgICBBU1NFUlQoYWN0aW9uKTsKKyAgICBp
ZiAoIWFjdGlvbikKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1v
cnkpOworCisgICAgaWYgKChtX3N0YXRlID09IFN0YXRlOjpOb25lICYmIG1ldGFkYXRhLmlkICE9
IElkOjprRWJtbCkKKyAgICAgICAgfHwgKG1fc3RhdGUgPT0gU3RhdGU6OlJlYWRFYm1sICYmIG1l
dGFkYXRhLmlkICE9IElkOjprU2VnbWVudCkKKyAgICAgICAgfHwgKG1fc3RhdGUgPT0gU3RhdGU6
OlJlYWRpbmdTZWdtZW50ICYmIG1ldGFkYXRhLmlkICE9IElkOjprSW5mbykKKyAgICAgICAgfHwg
KG1fc3RhdGUgPT0gU3RhdGU6OlJlYWRJbmZvICYmIG1ldGFkYXRhLmlkICE9IElkOjprVHJhY2tz
KQorICAgICAgICB8fCAobV9zdGF0ZSA9PSBTdGF0ZTo6UmVhZFRyYWNrICYmIG1ldGFkYXRhLmlk
ICE9IElkOjprVHJhY2tFbnRyeSAmJiBtZXRhZGF0YS5pZCAhPSBJZDo6a0NsdXN0ZXIpCisgICAg
ICAgIHx8IChtZXRhZGF0YS5pZCA9PSBJZDo6a0N1ZXMgfHwgbWV0YWRhdGEuaWQgPT0gSWQ6OmtD
aGFwdGVycykpIHsKKyAgICAgICAgKmFjdGlvbiA9IEFjdGlvbjo6a1NraXA7CisgICAgICAgIHJl
dHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworICAgIH0KKworICAgIGlmIChtZXRh
ZGF0YS5pZCA9PSBJZDo6a0VibWwpCisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZGluZ0Vi
bWw7CisgICAgZWxzZSBpZiAobWV0YWRhdGEuaWQgPT0gSWQ6OmtTZWdtZW50KQorICAgICAgICBt
X3N0YXRlID0gU3RhdGU6OlJlYWRpbmdTZWdtZW50OworICAgIGVsc2UgaWYgKG1ldGFkYXRhLmlk
ID09IElkOjprSW5mbykKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkaW5nSW5mbzsKKyAg
ICBlbHNlIGlmIChtZXRhZGF0YS5pZCA9PSBJZDo6a1RyYWNrcykKKyAgICAgICAgbV9zdGF0ZSA9
IFN0YXRlOjpSZWFkaW5nVHJhY2tzOworICAgIGVsc2UgaWYgKG1ldGFkYXRhLmlkID09IElkOjpr
VHJhY2tFbnRyeSkKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkaW5nVHJhY2s7CisgICAg
ZWxzZSBpZiAobWV0YWRhdGEuaWQgPT0gSWQ6OmtDbHVzdGVyKQorICAgICAgICBtX3N0YXRlID0g
U3RhdGU6OlJlYWRpbmdDbHVzdGVyOworCisgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0Nv
bXBsZXRlZCk7Cit9CisKK1N0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkVibWwoY29u
c3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uc3QgRWJtbCYgZWJtbCkKK3sKKyAgICBV
TlVTRURfUEFSQU0obWV0YWRhdGEpOworICAgIGlmIChlYm1sLmRvY190eXBlLmlzX3ByZXNlbnQo
KSAmJiBlYm1sLmRvY190eXBlLnZhbHVlKCkuY29tcGFyZSgid2VibSIpKQorICAgICAgICByZXR1
cm4gU3RhdHVzKFN0YXR1czo6Q29kZShFcnJvckNvZGU6OkludmFsaWREb2NUeXBlKSk7CisKKyAg
ICBtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkID0gdHJ1ZTsKKyAgICBtX2luaXRp
YWxpemF0aW9uU2VnbWVudCA9IFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
SW5pdGlhbGl6YXRpb25TZWdtZW50PigpOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZEVibWw7
CisKKyAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKK30KKworU3RhdHVz
IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uU2VnbWVudEJlZ2luKGNvbnN0IEVsZW1lbnRNZXRh
ZGF0YSYgbWV0YWRhdGEsIEFjdGlvbiogYWN0aW9uKQoreworICAgIFVOVVNFRF9QQVJBTShtZXRh
ZGF0YSk7CisgICAgaWYgKCFtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkKQorICAg
ICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6Q29kZShFcnJvckNvZGU6OkludmFsaWRJbml0U2Vn
bWVudCkpOworCisgICAgQVNTRVJUKGFjdGlvbik7CisgICAgaWYgKCFhY3Rpb24pCisgICAgICAg
IHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKyAgICAqYWN0aW9uID0g
QWN0aW9uOjprUmVhZDsKKworICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQp
OworfQorCitTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25JbmZvKGNvbnN0IEVsZW1l
bnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0IEluZm8mIGluZm8pCit7CisgICAgVU5VU0VEX1BB
UkFNKG1ldGFkYXRhKTsKKyAgICBpZiAoIW1faW5pdGlhbGl6YXRpb25TZWdtZW50RW5jb3VudGVy
ZWQgfHwgIW1faW5pdGlhbGl6YXRpb25TZWdtZW50KQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0
YXR1czo6Q29kZShFcnJvckNvZGU6OkludmFsaWRJbml0U2VnbWVudCkpOworCisgICAgYXV0byB0
aW1lY29kZVNjYWxlID0gaW5mby50aW1lY29kZV9zY2FsZS5pc19wcmVzZW50KCkgPyBpbmZvLnRp
bWVjb2RlX3NjYWxlLnZhbHVlKCkgOiAxMDAwMDAwOworICAgIG1fdGltZXNjYWxlID0gMTAwMDAw
MDAwMCAvIHRpbWVjb2RlU2NhbGU7CisgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnQtPmR1cmF0
aW9uID0gaW5mby5kdXJhdGlvbi5pc19wcmVzZW50KCkgPyBNZWRpYVRpbWUoaW5mby5kdXJhdGlv
bi52YWx1ZSgpLCBtX3RpbWVzY2FsZSkgOiBNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCk7Cisg
ICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkSW5mbzsKKworICAgIHJldHVybiBTdGF0dXMoU3RhdHVz
OjprT2tDb21wbGV0ZWQpOworfQorCitTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25D
bHVzdGVyQmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uc3QgQ2x1c3Rl
ciYgY2x1c3RlciwgQWN0aW9uKiBhY3Rpb24pCit7CisgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRh
KTsKKyAgICBVTlVTRURfUEFSQU0oY2x1c3Rlcik7CisgICAgQVNTRVJUKGFjdGlvbik7CisgICAg
aWYgKCFhY3Rpb24pCisgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVt
b3J5KTsKKworICAgIGlmIChtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkICYmIG1f
ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjaykgeworICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluaXRpYWxpemF0
aW9uU2VnbWVudCA9IFdURk1vdmUoKm1faW5pdGlhbGl6YXRpb25TZWdtZW50KV0gKCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBtX2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soV1RG
TW92ZShpbml0aWFsaXphdGlvblNlZ21lbnQpKTsKKyAgICAgICAgfSk7CisgICAgfQorICAgIG1f
aW5pdGlhbGl6YXRpb25TZWdtZW50RW5jb3VudGVyZWQgPSBmYWxzZTsKKyAgICBtX2luaXRpYWxp
emF0aW9uU2VnbWVudCA9IG51bGxwdHI7CisKKyAgICBpZiAoY2x1c3Rlci50aW1lY29kZS5pc19w
cmVzZW50KCkpCisgICAgICAgIG1fY3VycmVudFRpbWVjb2RlID0gY2x1c3Rlci50aW1lY29kZS52
YWx1ZSgpOworCisgICAgKmFjdGlvbiA9IEFjdGlvbjo6a1JlYWQ7CisKKyAgICByZXR1cm4gU3Rh
dHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKK30KKworU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNl
cldlYk06Ok9uVHJhY2tFbnRyeShjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25z
dCBUcmFja0VudHJ5JiB0cmFja0VudHJ5KQoreworICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7
CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkVHJhY2s7CisgICAgaWYgKCF0cmFja0VudHJ5LnRy
YWNrX3R5cGUuaXNfcHJlc2VudCgpKQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09r
Q29tcGxldGVkKTsKKworICAgIGF1dG8gdHJhY2tUeXBlID0gdHJhY2tFbnRyeS50cmFja190eXBl
LnZhbHVlKCk7CisgICAgaWYgKHRyYWNrVHlwZSA9PSBUcmFja1R5cGU6OmtWaWRlbykKKyAgICAg
ICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnQtPnZpZGVvVHJhY2tzLmFwcGVuZCh7IE1lZGlhRGVz
Y3JpcHRpb25XZWJNOjpjcmVhdGUoVHJhY2tFbnRyeSh0cmFja0VudHJ5KSksIFZpZGVvVHJhY2tQ
cml2YXRlV2ViTTo6Y3JlYXRlKFRyYWNrRW50cnkodHJhY2tFbnRyeSkpIH0pOworICAgIGVsc2Ug
aWYgKHRyYWNrVHlwZSA9PSBUcmFja1R5cGU6OmtBdWRpbykKKyAgICAgICAgbV9pbml0aWFsaXph
dGlvblNlZ21lbnQtPmF1ZGlvVHJhY2tzLmFwcGVuZCh7IE1lZGlhRGVzY3JpcHRpb25XZWJNOjpj
cmVhdGUoVHJhY2tFbnRyeSh0cmFja0VudHJ5KSksIEF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6Y3Jl
YXRlKFRyYWNrRW50cnkodHJhY2tFbnRyeSkpIH0pOworICAgIG1fdHJhY2tzLmFwcGVuZCh7IFRy
YWNrRW50cnkodHJhY2tFbnRyeSksIHsgfSwgbnVsbHB0ciwgbnVsbHB0ciwgMCB9KTsKKworICAg
IHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworfQorCit3ZWJtOjpTdGF0dXMg
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25CbG9ja0JlZ2luKGNvbnN0IEVsZW1lbnRNZXRhZGF0
YSYgbWV0YWRhdGEsIGNvbnN0IEJsb2NrJiBibG9jaywgQWN0aW9uKiBhY3Rpb24pCit7CisgICAg
VU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKKyAgICBBU1NFUlQoYWN0aW9uKTsKKyAgICBpZiAoIWFj
dGlvbikKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOwor
CisgICAgKmFjdGlvbiA9IEFjdGlvbjo6a1JlYWQ7CisKKyAgICBtX2N1cnJlbnRCbG9jayA9IG1h
a2VPcHRpb25hbDxCbG9ja1ZhcmlhbnQ+KEJsb2NrKGJsb2NrKSk7CisKKyAgICByZXR1cm4gU3Rh
dHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKK30KKword2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06Ok9uQmxvY2tFbmQoY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwg
Y29uc3QgQmxvY2smIGJsb2NrKQoreworICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CisgICAg
VU5VU0VEX1BBUkFNKGJsb2NrKTsKKworICAgIG1fY3VycmVudEJsb2NrID0gV1RGOjpudWxsb3B0
OworCisgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7Cit9CisKK3dlYm06
OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblNpbXBsZUJsb2NrQmVnaW4oY29uc3Qg
RWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uc3QgU2ltcGxlQmxvY2smIGJsb2NrLCBBY3Rp
b24qIGFjdGlvbikKK3sKKyAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOworICAgIEFTU0VSVChh
Y3Rpb24pOworICAgIGlmICghYWN0aW9uKQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6
a05vdEVub3VnaE1lbW9yeSk7CisKKyAgICAqYWN0aW9uID0gQWN0aW9uOjprUmVhZDsKKworICAg
IG1fY3VycmVudEJsb2NrID0gbWFrZU9wdGlvbmFsPEJsb2NrVmFyaWFudD4oU2ltcGxlQmxvY2so
YmxvY2spKTsKKworICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOworfQor
Cit3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25TaW1wbGVCbG9ja0VuZChj
b25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBTaW1wbGVCbG9jayYgYmxvY2sp
Cit7CisgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oYmxvY2sp
OworCisgICAgbV9jdXJyZW50QmxvY2sgPSBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gU3Rh
dHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKK30KKword2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06Ok9uQmxvY2tHcm91cEJlZ2luKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0
YSYgbWV0YWRhdGEsIHdlYm06OkFjdGlvbiogYWN0aW9uKQoreworICAgIFVOVVNFRF9QQVJBTSht
ZXRhZGF0YSk7CisgICAgQVNTRVJUKGFjdGlvbik7CisgICAgaWYgKCFhY3Rpb24pCisgICAgICAg
IHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKKworICAgICphY3Rpb24g
PSBBY3Rpb246OmtSZWFkOworICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQp
OworfQorCit3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25CbG9ja0dyb3Vw
RW5kKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0IHdlYm06OkJs
b2NrR3JvdXAmIGJsb2NrR3JvdXApCit7CisgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKKyAg
ICBVTlVTRURfUEFSQU0oYmxvY2tHcm91cCk7CisgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtP
a0NvbXBsZXRlZCk7Cit9CisKK3N0YXRpYyB1aW50OF90IGNvbnZlcnRUb0NvbG9yUHJpbWFyaWVz
KGNvbnN0IFByaW1hcmllcyYgY29lZmZpY2llbnRzKQoreworICAgIHN3aXRjaCAoY29lZmZpY2ll
bnRzKSB7CisgICAgY2FzZSBQcmltYXJpZXM6OmtCdDcwOToKKyAgICAgICAgcmV0dXJuIFZQQ29u
ZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpCVF83MDlfNjsKKyAgICBjYXNlIFByaW1hcmllczo6
a1Vuc3BlY2lmaWVkOgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJp
ZXM6OlVuc3BlY2lmaWVkOworICAgIGNhc2UgUHJpbWFyaWVzOjprQnQ0NzBNOgorICAgICAgICBy
ZXR1cm4gVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OkJUXzQ3MF82X007CisgICAgY2Fz
ZSBQcmltYXJpZXM6OmtCdDQ3MEJnOgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uQ29s
b3JQcmltYXJpZXM6OkJUXzQ3MF83X0JHOworICAgIGNhc2UgUHJpbWFyaWVzOjprU21wdGUxNzBN
OgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OkJUXzYwMV83
OworICAgIGNhc2UgUHJpbWFyaWVzOjprU21wdGUyNDBNOgorICAgICAgICByZXR1cm4gVlBDb25m
aWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OlNNUFRFX1NUXzI0MDsKKyAgICBjYXNlIFByaW1hcmll
czo6a0ZpbG06CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6
RmlsbTsKKyAgICBjYXNlIFByaW1hcmllczo6a0J0MjAyMDoKKyAgICAgICAgcmV0dXJuIFZQQ29u
ZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpCVF8yMDIwX05vbmNvbnN0YW50X0x1bWluYW5jZTsK
KyAgICBjYXNlIFByaW1hcmllczo6a1NtcHRlU3Q0MjgxOgorICAgICAgICByZXR1cm4gVlBDb25m
aWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OlNNUFRFX1NUXzQyOF8xOworICAgIGNhc2UgUHJpbWFy
aWVzOjprU21wdGVScDQzMToKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJp
bWFyaWVzOjpTTVBURV9SUF80MzFfMjsKKyAgICBjYXNlIFByaW1hcmllczo6a1NtcHRlRWc0MzI6
CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6U01QVEVfRUdf
NDMyXzE7CisgICAgY2FzZSBQcmltYXJpZXM6OmtKZWRlY1AyMlBob3NwaG9yczoKKyAgICAgICAg
cmV0dXJuIFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpFQlVfVGVjaF8zMjEzX0U7Cisg
ICAgfQorfQorCitzdGF0aWMgdWludDhfdCBjb252ZXJ0VG9UcmFuc2ZlckNoYXJhY3RlcmlzdGlj
cyhjb25zdCBUcmFuc2ZlckNoYXJhY3RlcmlzdGljcyYgY2hhcmFjdGVyaXN0aWNzKQoreworICAg
IHN3aXRjaCAoY2hhcmFjdGVyaXN0aWNzKSB7CisgICAgY2FzZSBUcmFuc2ZlckNoYXJhY3Rlcmlz
dGljczo6a0J0NzA5OgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFy
YWN0ZXJpc3RpY3M6OkJUXzcwOV82OworICAgIGNhc2UgVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6
OmtVbnNwZWNpZmllZDoKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hh
cmFjdGVyaXN0aWNzOjpVbnNwZWNpZmllZDsKKyAgICBjYXNlIFRyYW5zZmVyQ2hhcmFjdGVyaXN0
aWNzOjprR2FtbWEyMmN1cnZlOgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uVHJhbnNm
ZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzQ3MF82X007CisgICAgY2FzZSBUcmFuc2ZlckNoYXJhY3Rl
cmlzdGljczo6a0dhbW1hMjhjdXJ2ZToKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvblRy
YW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpCVF80NzBfN19CRzsKKyAgICBjYXNlIFRyYW5zZmVyQ2hh
cmFjdGVyaXN0aWNzOjprU21wdGUxNzBNOgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9u
VHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzYwMV83OworICAgIGNhc2UgVHJhbnNmZXJDaGFy
YWN0ZXJpc3RpY3M6OmtTbXB0ZTI0ME06CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25U
cmFuc2ZlckNoYXJhY3RlcmlzdGljczo6U01QVEVfU1RfMjQwOworICAgIGNhc2UgVHJhbnNmZXJD
aGFyYWN0ZXJpc3RpY3M6OmtMaW5lYXI6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25U
cmFuc2ZlckNoYXJhY3RlcmlzdGljczo6TGluZWFyOworICAgIGNhc2UgVHJhbnNmZXJDaGFyYWN0
ZXJpc3RpY3M6OmtMb2c6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNo
YXJhY3RlcmlzdGljczo6TG9ncml0aG1pYzsKKyAgICBjYXNlIFRyYW5zZmVyQ2hhcmFjdGVyaXN0
aWNzOjprTG9nU3FydDoKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hh
cmFjdGVyaXN0aWNzOjpMb2dyaXRobWljX1NxcnQ7CisgICAgY2FzZSBUcmFuc2ZlckNoYXJhY3Rl
cmlzdGljczo6a0llYzYxOTY2MjQ6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25UcmFu
c2ZlckNoYXJhY3RlcmlzdGljczo6SUVDXzYxOTY2XzJfNDsKKyAgICBjYXNlIFRyYW5zZmVyQ2hh
cmFjdGVyaXN0aWNzOjprQnQxMzYxRXh0ZW5kZWRDb2xvdXJHYW11dDoKKyAgICAgICAgcmV0dXJu
IFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpCVF8xMzYxXzA7CisgICAg
Y2FzZSBUcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6a0llYzYxOTY2MjE6CisgICAgICAgIHJldHVy
biBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6SUVDXzYxOTY2XzJfMTsK
KyAgICBjYXNlIFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjprMTBCaXRCdDIwMjA6CisgICAgICAg
IHJldHVybiBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6QlRfMjAyMF8x
MGJpdDsKKyAgICBjYXNlIFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjprMTJCaXRCdDIwMjA6Cisg
ICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6QlRf
MjAyMF8xMmJpdDsKKyAgICBjYXNlIFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjprU21wdGVTdDIw
ODQ6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGlj
czo6U01QVEVfU1RfMjA4NDsKKyAgICBjYXNlIFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjprU21w
dGVTdDQyODE6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3Rl
cmlzdGljczo6U01QVEVfU1RfNDI4XzE7CisgICAgY2FzZSBUcmFuc2ZlckNoYXJhY3RlcmlzdGlj
czo6a0FyaWJTdGRCNjdIbGc6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25UcmFuc2Zl
ckNoYXJhY3RlcmlzdGljczo6QlRfMjEwMF9ITEc7CisgICAgfQorfQorCitzdGF0aWMgdWludDhf
dCBjb252ZXJ0VG9NYXRyaXhDb2VmZmljaWVudHMoY29uc3QgTWF0cml4Q29lZmZpY2llbnRzJiBj
b2VmZmljaWVudHMpCit7CisgICAgc3dpdGNoIChjb2VmZmljaWVudHMpIHsKKyAgICBjYXNlIE1h
dHJpeENvZWZmaWNpZW50czo6a1JnYjoKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvbk1h
dHJpeENvZWZmaWNpZW50czo6SWRlbnRpdHk7CisgICAgY2FzZSBNYXRyaXhDb2VmZmljaWVudHM6
OmtCdDcwOToKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50
czo6QlRfNzA5XzY7CisgICAgY2FzZSBNYXRyaXhDb2VmZmljaWVudHM6OmtVbnNwZWNpZmllZDoK
KyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6VW5zcGVj
aWZpZWQ7CisgICAgY2FzZSBNYXRyaXhDb2VmZmljaWVudHM6OmtGY2M6CisgICAgICAgIHJldHVy
biBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OkZDQzsKKyAgICBjYXNlIE1hdHJp
eENvZWZmaWNpZW50czo6a0J0NDcwQmc6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25N
YXRyaXhDb2VmZmljaWVudHM6OkJUXzQ3MF83X0JHOworICAgIGNhc2UgTWF0cml4Q29lZmZpY2ll
bnRzOjprU21wdGUxNzBNOgorICAgICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uTWF0cml4Q29l
ZmZpY2llbnRzOjpCVF82MDFfNzsKKyAgICBjYXNlIE1hdHJpeENvZWZmaWNpZW50czo6a1NtcHRl
MjQwTToKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6
U01QVEVfU1RfMjQwOworICAgIGNhc2UgTWF0cml4Q29lZmZpY2llbnRzOjprWUNnQ286CisgICAg
ICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OllDZ0NvOworICAg
IGNhc2UgTWF0cml4Q29lZmZpY2llbnRzOjprQnQyMDIwTm9uY29uc3RhbnRMdW1pbmFuY2U6Cisg
ICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OkJUXzIwMjBf
Tm9uY29uc3RhbnRfTHVtaW5hbmNlOworICAgIGNhc2UgTWF0cml4Q29lZmZpY2llbnRzOjprQnQy
MDIwQ29uc3RhbnRMdW1pbmFuY2U6CisgICAgICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25NYXRy
aXhDb2VmZmljaWVudHM6OkJUXzIwMjBfQ29uc3RhbnRfTHVtaW5hbmNlOworICAgIH0KK30KKwor
c3RhdGljIHVpbnQ4X3QgY29udmVydFN1YnNhbXBsaW5nWFlUb0Nocm9tYVN1YnNhbXBsaW5nKHVp
bnQ2NF90IHgsIHVpbnQ2NF90IHkpCit7CisgICAgaWYgKHggJiB5KQorICAgICAgICByZXR1cm4g
VlBDb25maWd1cmF0aW9uQ2hyb21hU3Vic2FtcGxpbmc6OlN1YnNhbXBsaW5nXzQyMF9Db2xvY2F0
ZWQ7CisgICAgaWYgKHggJiAheSkKKyAgICAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvbkNocm9t
YVN1YnNhbXBsaW5nOjpTdWJzYW1wbGluZ180MjI7CisgICAgaWYgKCF4ICYgIXkpCisgICAgICAg
IHJldHVybiBWUENvbmZpZ3VyYXRpb25DaHJvbWFTdWJzYW1wbGluZzo6U3Vic2FtcGxpbmdfNDQ0
OworICAgIC8vIFRoaXMgaW5kaWNhdGVzIDQ6NDowIHN1YnNhbXBsaW5nLCB3aGljaCBpcyBub3Qg
ZXhwcmVzc2FibGUgaW4gdGhlICd2cGNDJyBib3guIERlZmF1bHQgdG8gNDoyOjAuCisgICAgcmV0
dXJuIFZQQ29uZmlndXJhdGlvbkNocm9tYVN1YnNhbXBsaW5nOjpTdWJzYW1wbGluZ180MjBfQ29s
b2NhdGVkOworfQorCitzdGF0aWMgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGNy
ZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOUhlYWRlclBhcnNlcihjb25zdCB2cDlfcGFyc2Vy
OjpWcDlIZWFkZXJQYXJzZXImIHBhcnNlciwgY29uc3Qgd2VibTo6RWxlbWVudDxDb2xvdXI+JiBj
b2xvcikKK3sKKyAgICAvLyBSZWY6ICJWUCBDb2RlYyBJU08gTWVkaWEgRmlsZSBGb3JtYXQgQmlu
ZGluZywgdjEuMCwgMjAxNy0wMy0zMSIKKyAgICAvLyA8aHR0cHM6Ly93d3cud2VibXByb2plY3Qu
b3JnL3ZwOS9tcDQvPgorICAgIC8vCisgICAgLy8gY2xhc3MgVlBDb2RlY0NvbmZpZ3VyYXRpb25C
b3ggZXh0ZW5kcyBGdWxsQm94KCd2cGNDJywgdmVyc2lvbiA9IDEsIDApCisgICAgLy8geworICAg
IC8vICAgICBWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCgpIHZwY0NvbmZpZzsKKyAgICAvLyB9
CisgICAgLy8KKyAgICAvLyBhbGlnbmVkICg4KSBjbGFzcyBWUENvZGVjQ29uZmlndXJhdGlvblJl
Y29yZCB7CisgICAgLy8gICAgIHVuc2lnbmVkIGludCAoOCkgICAgIHByb2ZpbGU7CisgICAgLy8g
ICAgIHVuc2lnbmVkIGludCAoOCkgICAgIGxldmVsOworICAgIC8vICAgICB1bnNpZ25lZCBpbnQg
KDQpICAgICBiaXREZXB0aDsKKyAgICAvLyAgICAgdW5zaWduZWQgaW50ICgzKSAgICAgY2hyb21h
U3Vic2FtcGxpbmc7CisgICAgLy8gICAgIHVuc2lnbmVkIGludCAoMSkgICAgIHZpZGVvRnVsbFJh
bmdlRmxhZzsKKyAgICAvLyAgICAgdW5zaWduZWQgaW50ICg4KSAgICAgY29sb3VyUHJpbWFyaWVz
OworICAgIC8vICAgICB1bnNpZ25lZCBpbnQgKDgpICAgICB0cmFuc2ZlckNoYXJhY3RlcmlzdGlj
czsKKyAgICAvLyAgICAgdW5zaWduZWQgaW50ICg4KSAgICAgbWF0cml4Q29lZmZpY2llbnRzOwor
ICAgIC8vICAgICB1bnNpZ25lZCBpbnQgKDE2KSAgICBjb2RlY0ludGlhbGl6YXRpb25EYXRhU2l6
ZTsKKyAgICAvLyAgICAgdW5zaWduZWQgaW50ICg4KVtdICAgY29kZWNJbnRpYWxpemF0aW9uRGF0
YTsKKyAgICAvLyB9CisgICAgLy8KKyAgICAvLyBjb2RlY0ludGlhbGl6YXRpb25EYXRhU2l6ZeKA
i0ZvciBWUDggYW5kIFZQOSB0aGlzIGZpZWxkIG11c3QgYmUgMC4KKyAgICAvLyBjb2RlY0ludGlh
bGl6YXRpb25EYXRh4oCLYmluYXJ5IGNvZGVjIGluaXRpYWxpemF0aW9uIGRhdGEuIE5vdCB1c2Vk
IGZvciBWUDggYW5kIFZQOS4KKyAgICAvLworICAgIC8vIEZJWE1FOiBDb252ZXJ0IGV4aXN0aW5n
IHN0cnVjdCB0byBhbiBJU09Cb3ggYW5kIHJlcGxhY2UgdGhlIHdyaXRpbmcgY29kZSBiZWxvdwor
ICAgIC8vIHdpdGggYSBzdWJjbGFzcyBvZiBJU09GdWxsQm94LgorCisgICAgVlBDb2RlY0NvbmZp
Z3VyYXRpb25SZWNvcmQgcmVjb3JkOworCisgICAgcmVjb3JkLnByb2ZpbGUgPSBwYXJzZXIucHJv
ZmlsZSgpOworICAgIC8vIENvcmVNZWRpYSBkb2VzIG5hdCBjYXJlIGFib3V0IHRoZSBWUDkgY29k
ZWMgbGV2ZWw7IGhhcmQtY29kZSB0byBMZXZlbCAxLjAgaGVyZToKKyAgICByZWNvcmQubGV2ZWwg
PSAxMDsKKyAgICByZWNvcmQuYml0RGVwdGggPSBwYXJzZXIuYml0X2RlcHRoKCk7CisgICAgcmVj
b3JkLnZpZGVvRnVsbFJhbmdlRmxhZyA9IHBhcnNlci5jb2xvcl9yYW5nZSgpID8gVlBDb25maWd1
cmF0aW9uUmFuZ2U6OkZ1bGxSYW5nZSA6IFZQQ29uZmlndXJhdGlvblJhbmdlOjpWaWRlb1Jhbmdl
OworICAgIHJlY29yZC5jaHJvbWFTdWJzYW1wbGluZyA9IGNvbnZlcnRTdWJzYW1wbGluZ1hZVG9D
aHJvbWFTdWJzYW1wbGluZyhwYXJzZXIuc3Vic2FtcGxpbmdfeCgpLCBwYXJzZXIuc3Vic2FtcGxp
bmdfeSgpKTsKKyAgICByZWNvcmQuY29sb3JQcmltYXJpZXMgPSBWUENvbmZpZ3VyYXRpb25Db2xv
clByaW1hcmllczo6VW5zcGVjaWZpZWQ7CisgICAgcmVjb3JkLnRyYW5zZmVyQ2hhcmFjdGVyaXN0
aWNzID0gVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OlVuc3BlY2lmaWVk
OworICAgIHJlY29yZC5tYXRyaXhDb2VmZmljaWVudHMgPSBWUENvbmZpZ3VyYXRpb25NYXRyaXhD
b2VmZmljaWVudHM6OlVuc3BlY2lmaWVkOworCisgICAgLy8gQ29udGFpbmVyIGNvbG9yIHZhbHVl
cyBjYW4gb3ZlcnJpZGUgcGVyLXNhbXBsZSBvbmVzOgorICAgIGlmIChjb2xvci5pc19wcmVzZW50
KCkpIHsKKyAgICAgICAgYXV0byYgY29sb3JWYWx1ZSA9IGNvbG9yLnZhbHVlKCk7CisgICAgICAg
IGlmIChjb2xvclZhbHVlLmNocm9tYV9zdWJzYW1wbGluZ194LmlzX3ByZXNlbnQoKSAmJiBjb2xv
clZhbHVlLmNocm9tYV9zdWJzYW1wbGluZ195LmlzX3ByZXNlbnQoKSkKKyAgICAgICAgICAgIHJl
Y29yZC5jaHJvbWFTdWJzYW1wbGluZyA9IGNvbnZlcnRTdWJzYW1wbGluZ1hZVG9DaHJvbWFTdWJz
YW1wbGluZyhjb2xvclZhbHVlLmNocm9tYV9zdWJzYW1wbGluZ194LnZhbHVlKCksIGNvbG9yVmFs
dWUuY2hyb21hX3N1YnNhbXBsaW5nX3kudmFsdWUoKSk7CisgICAgICAgIGlmIChjb2xvclZhbHVl
LnJhbmdlLmlzX3ByZXNlbnQoKSAmJiBjb2xvclZhbHVlLnJhbmdlLnZhbHVlKCkgIT0gUmFuZ2U6
OmtVbnNwZWNpZmllZCkKKyAgICAgICAgICAgIHJlY29yZC52aWRlb0Z1bGxSYW5nZUZsYWcgPSBj
b2xvclZhbHVlLnJhbmdlLnZhbHVlKCkgPT0gUmFuZ2U6OmtGdWxsID8gVlBDb25maWd1cmF0aW9u
UmFuZ2U6OkZ1bGxSYW5nZSA6IFZQQ29uZmlndXJhdGlvblJhbmdlOjpWaWRlb1JhbmdlOworICAg
ICAgICBpZiAoY29sb3JWYWx1ZS5iaXRzX3Blcl9jaGFubmVsLmlzX3ByZXNlbnQoKSkKKyAgICAg
ICAgICAgIHJlY29yZC5iaXREZXB0aCA9IGNvbG9yVmFsdWUuYml0c19wZXJfY2hhbm5lbC52YWx1
ZSgpOworICAgICAgICBpZiAoY29sb3JWYWx1ZS50cmFuc2Zlcl9jaGFyYWN0ZXJpc3RpY3MuaXNf
cHJlc2VudCgpKQorICAgICAgICAgICAgcmVjb3JkLnRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzID0g
Y29udmVydFRvVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MoY29sb3JWYWx1ZS50cmFuc2Zlcl9jaGFy
YWN0ZXJpc3RpY3MudmFsdWUoKSk7CisgICAgICAgIGlmIChjb2xvclZhbHVlLm1hdHJpeF9jb2Vm
ZmljaWVudHMuaXNfcHJlc2VudCgpKQorICAgICAgICAgICAgcmVjb3JkLm1hdHJpeENvZWZmaWNp
ZW50cyA9IGNvbnZlcnRUb01hdHJpeENvZWZmaWNpZW50cyhjb2xvclZhbHVlLm1hdHJpeF9jb2Vm
ZmljaWVudHMudmFsdWUoKSk7CisgICAgICAgIGlmIChjb2xvclZhbHVlLnByaW1hcmllcy5pc19w
cmVzZW50KCkpCisgICAgICAgICAgICByZWNvcmQuY29sb3JQcmltYXJpZXMgPSBjb252ZXJ0VG9D
b2xvclByaW1hcmllcyhjb2xvclZhbHVlLnByaW1hcmllcy52YWx1ZSgpKTsKKyAgICB9CisKKyAg
ICBjb25zdGV4cHIgc2l6ZV90IFZQQ29kZWNDb25maWd1cmF0aW9uQ29udGVudHNTaXplID0gMTI7
CisKKyAgICB1aW50MzJfdCB2ZXJzaW9uQW5kRmxhZ3MgPSAxIDw8IDI0OworICAgIHVpbnQ4X3Qg
Yml0RGVwdGhDaHJvbWFBbmRSYW5nZSA9ICgweEYgJiByZWNvcmQuYml0RGVwdGgpIDw8IDQgfCAo
MHg3ICYgcmVjb3JkLmNocm9tYVN1YnNhbXBsaW5nKSA8PCAxIHwgKDB4MSAmIHJlY29yZC52aWRl
b0Z1bGxSYW5nZUZsYWcpOworICAgIHVpbnQxNl90IGNvZGVjSW50aWFsaXphdGlvbkRhdGFTaXpl
ID0gMDsKKworICAgIGF1dG8gdmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShBcnJheUJ1ZmZl
cjo6Y3JlYXRlKFZQQ29kZWNDb25maWd1cmF0aW9uQ29udGVudHNTaXplLCAxKSwgMCwgVlBDb2Rl
Y0NvbmZpZ3VyYXRpb25Db250ZW50c1NpemUpOworICAgIHZpZXctPnNldCgwLCB2ZXJzaW9uQW5k
RmxhZ3MsIGZhbHNlKTsKKyAgICB2aWV3LT5zZXQoNCwgcmVjb3JkLnByb2ZpbGUsIGZhbHNlKTsK
KyAgICB2aWV3LT5zZXQoNSwgcmVjb3JkLmxldmVsLCBmYWxzZSk7CisgICAgdmlldy0+c2V0KDYs
IGJpdERlcHRoQ2hyb21hQW5kUmFuZ2UsIGZhbHNlKTsKKyAgICB2aWV3LT5zZXQoNywgcmVjb3Jk
LmNvbG9yUHJpbWFyaWVzLCBmYWxzZSk7CisgICAgdmlldy0+c2V0KDgsIHJlY29yZC50cmFuc2Zl
ckNoYXJhY3RlcmlzdGljcywgZmFsc2UpOworICAgIHZpZXctPnNldCg5LCByZWNvcmQubWF0cml4
Q29lZmZpY2llbnRzLCBmYWxzZSk7CisgICAgdmlldy0+c2V0KDEwLCBjb2RlY0ludGlhbGl6YXRp
b25EYXRhU2l6ZSwgZmFsc2UpOworCisgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4ICopdmlldy0+ZGF0YSgpLCB2aWV3
LT5ieXRlTGVuZ3RoKCkpKTsKKworICAgIENGVHlwZVJlZiBjb25maWd1cmF0aW9uS2V5c1tdID0g
eyBDRlNUUigidnBjQyIpIH07CisgICAgQ0ZUeXBlUmVmIGNvbmZpZ3VyYXRpb25WYWx1ZXNbXSA9
IHsgZGF0YS5nZXQoKSB9OworICAgIGF1dG8gY29uZmlndXJhdGlvbkRpY3QgPSBhZG9wdENGKENG
RGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjb25maWd1cmF0aW9uS2V5cywg
Y29uZmlndXJhdGlvblZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSChjb25maWd1cmF0aW9uS2V5cyks
ICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVD
YWxsQmFja3MpKTsKKworICAgIFZlY3RvcjxDRlR5cGVSZWY+IGF0b21zS2V5cyB7IGtDTUZvcm1h
dERlc2NyaXB0aW9uRXh0ZW5zaW9uX1NhbXBsZURlc2NyaXB0aW9uRXh0ZW5zaW9uQXRvbXMgfTsK
KyAgICBWZWN0b3I8Q0ZUeXBlUmVmPiBhdG9tc1ZhbHVlcyA9IHsgY29uZmlndXJhdGlvbkRpY3Qu
Z2V0KCkgfTsKKyAgICBhdXRvIGF0b21zID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgYXRvbXNLZXlzLmRhdGEoKSwgYXRvbXNWYWx1ZXMuZGF0YSgpLCBh
dG9tc0tleXMuc2l6ZSgpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBl
RGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisKKyAgICBDTVZpZGVvRm9ybWF0RGVzY3JpcHRp
b25SZWYgZm9ybWF0RGVzY3JpcHRpb24gPSBudWxscHRyOworICAgIGlmIChub0VyciAhPSBDTVZp
ZGVvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NNVmlkZW9D
b2RlY1R5cGVfVlA5LCBwYXJzZXIud2lkdGgoKSwgcGFyc2VyLmhlaWdodCgpLCBhdG9tcy5nZXQo
KSwgJmZvcm1hdERlc2NyaXB0aW9uKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIGFkb3B0Q0YoZm9ybWF0RGVzY3JpcHRpb24pOworfQorCit3ZWJtOjpTdGF0dXMgU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6T25GcmFtZShjb25zdCBGcmFtZU1ldGFkYXRhJiBtZXRhZGF0YSwg
UmVhZGVyKiByZWFkZXIsIHVpbnQ2NF90KiBieXRlc1JlbWFpbmluZykKK3sKKyAgICBVTlVTRURf
UEFSQU0obWV0YWRhdGEpOworICAgIFVOVVNFRF9QQVJBTShieXRlc1JlbWFpbmluZyk7CisKKyAg
ICBBU1NFUlQocmVhZGVyKTsKKyAgICBpZiAoIXJlYWRlcikKKyAgICAgICAgcmV0dXJuIFN0YXR1
cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOworCisgICAgaWYgKCFtX2N1cnJlbnRCbG9jaykK
KyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtJbnZhbGlkRWxlbWVudElkKTsKKworICAg
IGF1dG8qIGJsb2NrID0gV1RGOjpzd2l0Y2hPbigqbV9jdXJyZW50QmxvY2ssIFtdKEJsb2NrJiBi
bG9jaykgeworICAgICAgICByZXR1cm4gJmJsb2NrOworICAgIH0sIFtdKFNpbXBsZUJsb2NrJiBi
bG9jaykgLT4gQmxvY2sqIHsKKyAgICAgICAgcmV0dXJuICZibG9jazsKKyAgICB9KTsKKyAgICBp
ZiAoIWJsb2NrKQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a0ludmFsaWRFbGVtZW50
SWQpOworCisgICAgYXV0byBpc1N5bmMgPSBXVEY6OnN3aXRjaE9uKCptX2N1cnJlbnRCbG9jaywg
W10oQmxvY2smKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9LCBbXShTaW1wbGVCbG9j
ayYgYmxvY2spIHsKKyAgICAgICAgcmV0dXJuIGJsb2NrLmlzX2tleV9mcmFtZTsKKyAgICB9KTsK
KworICAgIGF1dG8gdHJhY2tOdW1iZXIgPSBibG9jay0+dHJhY2tfbnVtYmVyOworCisgICAgYXV0
byogdHJhY2tEYXRhID0gdHJhY2tEYXRhRm9yVHJhY2tOdW1iZXIodHJhY2tOdW1iZXIpOworICAg
IGlmICghdHJhY2tEYXRhKQorICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a0ludmFsaWRF
bGVtZW50SWQpOworICAgIGF1dG8mIHRyYWNrID0gdHJhY2tEYXRhLT50cmFjazsKKyAgICBhdXRv
JiBoZWFkZXJQYXJzZXIgPSB0cmFja0RhdGEtPmhlYWRlclBhcnNlcjsKKworICAgIHVpbnQ2NF90
IGR1cmF0aW9uID0gMDsKKyAgICBpZiAodHJhY2suZGVmYXVsdF9kdXJhdGlvbi5pc19wcmVzZW50
KCkpCisgICAgICAgIGR1cmF0aW9uID0gdHJhY2suZGVmYXVsdF9kdXJhdGlvbi52YWx1ZSgpICog
bV90aW1lc2NhbGUgLyAxMDAwMDAwMDAwOworCisgICAgaWYgKHRyYWNrLmNvZGVjX2lkLmlzX3By
ZXNlbnQoKSAmJiB0cmFjay5jb2RlY19pZC52YWx1ZSgpID09ICJWX1ZQOSIpIHsKKyAgICAgICAg
aWYgKCF0cmFja0RhdGEtPmN1cnJlbnRCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgQ01CbG9j
a0J1ZmZlclJlZiByYXdCbG9ja0J1ZmZlciA9IG51bGxwdHI7CisgICAgICAgICAgICBpZiAobm9F
cnIgIT0gQ01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBudWxscHRyLCBtZXRhZGF0YS5zaXplLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRy
LCAwLCBtZXRhZGF0YS5zaXplLCAwLCAmcmF3QmxvY2tCdWZmZXIpKQorICAgICAgICAgICAgICAg
IHJldHVybiBTa2lwKHJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOworICAgICAgICAgICAgdHJhY2tE
YXRhLT5jdXJyZW50QmxvY2tCdWZmZXIgPSBhZG9wdENGKHJhd0Jsb2NrQnVmZmVyKTsKKyAgICAg
ICAgICAgIHRyYWNrRGF0YS0+Y3VycmVudEJsb2NrQnVmZmVyUG9zaXRpb24gPSAwOworCisgICAg
ICAgICAgICBpZiAobm9FcnIgIT0gQ01CbG9ja0J1ZmZlckFzc3VyZUJsb2NrTWVtb3J5KHRyYWNr
RGF0YS0+Y3VycmVudEJsb2NrQnVmZmVyLmdldCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
U2tpcChyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKKyAgICAgICAgfQorCisgICAgICAgIHNpemVf
dCBudW1Ub1JlYWQgPSBtZXRhZGF0YS5zaXplIC0gdHJhY2tEYXRhLT5jdXJyZW50QmxvY2tCdWZm
ZXJQb3NpdGlvbjsKKyAgICAgICAgc2l6ZV90IHNlZ21lbnRTaXplQXRQb3NpdGlvbiA9IDA7Cisg
ICAgICAgIHVpbnQ4X3QqIGJsb2NrQnVmZmVyRGF0YSA9IG51bGxwdHI7CisKKyAgICAgICAgd2hp
bGUgKG51bVRvUmVhZCkgeworICAgICAgICAgICAgaWYgKG5vRXJyICE9IENNQmxvY2tCdWZmZXJH
ZXREYXRhUG9pbnRlcih0cmFja0RhdGEtPmN1cnJlbnRCbG9ja0J1ZmZlci5nZXQoKSwgdHJhY2tE
YXRhLT5jdXJyZW50QmxvY2tCdWZmZXJQb3NpdGlvbiwgJnNlZ21lbnRTaXplQXRQb3NpdGlvbiwg
bnVsbHB0ciwgKGNoYXIqKikmYmxvY2tCdWZmZXJEYXRhKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gU2tpcChyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKKworICAgICAgICAgICAgc2l6ZV90IG51
bVRvUmVhZEZyb21UaGlzU2VnbWVudCA9IHN0ZDo6bWluKG51bVRvUmVhZCwgc2VnbWVudFNpemVB
dFBvc2l0aW9uKTsKKyAgICAgICAgICAgIHVpbnQ2NF90IG51bUFjdHVhbGx5V3JpdHRlblRvVGhp
c1NlZ21lbnQ7CisKKyAgICAgICAgICAgIGF1dG8gc3RhdHVzID0gbV9yZWFkZXItPlJlYWQobnVt
VG9SZWFkRnJvbVRoaXNTZWdtZW50LCAodWludDhfdCopYmxvY2tCdWZmZXJEYXRhLCAmbnVtQWN0
dWFsbHlXcml0dGVuVG9UaGlzU2VnbWVudCk7CisgICAgICAgICAgICBudW1Ub1JlYWQgLT0gbnVt
QWN0dWFsbHlXcml0dGVuVG9UaGlzU2VnbWVudDsKKyAgICAgICAgICAgICpieXRlc1JlbWFpbmlu
ZyAtPSBudW1BY3R1YWxseVdyaXR0ZW5Ub1RoaXNTZWdtZW50OworICAgICAgICAgICAgdHJhY2tE
YXRhLT5jdXJyZW50QmxvY2tCdWZmZXJQb3NpdGlvbiArPSBudW1BY3R1YWxseVdyaXR0ZW5Ub1Ro
aXNTZWdtZW50OworCisgICAgICAgICAgICAvLyBGSVhNRTogV2UgY2FuJ3QgeWV0IGhhbmRsZSBw
YXJzaW5nIGEgRnJhbWUgdGhhdCBkb2Vzbid0IGhhdmUgYWxsIGl0cyBtZW1vcnkgYXZhaWxhYmxl
LgorICAgICAgICAgICAgaWYgKHN0YXR1cy5jb2RlID09IHdlYm06OlN0YXR1czo6a09rUGFydGlh
bCB8fCBzdGF0dXMuY29kZSA9PSB3ZWJtOjpTdGF0dXM6OmtXb3VsZEJsb2NrKQorICAgICAgICAg
ICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgICAgIH0KKworICAgICAgICBpZiAobm9FcnIgIT0g
Q01CbG9ja0J1ZmZlckdldERhdGFQb2ludGVyKHRyYWNrRGF0YS0+Y3VycmVudEJsb2NrQnVmZmVy
LmdldCgpLCAwLCAmc2VnbWVudFNpemVBdFBvc2l0aW9uLCBudWxscHRyLCAoY2hhcioqKSZibG9j
a0J1ZmZlckRhdGEpKQorICAgICAgICAgICAgcmV0dXJuIFNraXAocmVhZGVyLCBieXRlc1JlbWFp
bmluZyk7CisKKyAgICAgICAgaWYgKCFoZWFkZXJQYXJzZXIuUGFyc2VVbmNvbXByZXNzZWRIZWFk
ZXIoYmxvY2tCdWZmZXJEYXRhLCBzZWdtZW50U2l6ZUF0UG9zaXRpb24pKQorICAgICAgICAgICAg
cmV0dXJuIFNraXAocmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CisKKyAgICAgICAgLy8gT25seSB1
cGRhdGUgdGhlIGZvcm1hdCBkZXNjcmlwdGlvbiB3aGVuIHRoZSBoZWFkZXIgaW5kaWNhdGVzIHRo
YXQgdGhlIHNhbXBsZSBpcworICAgICAgICAvLyBhIGtleS1mcmFtZSwgb3RoZXJ3aXNlIGNvbG9y
IGluZm9ybWF0aW9uIHdpbGwgbm90IGJlIHBhcnNlZC4KKyAgICAgICAgaWYgKGhlYWRlclBhcnNl
ci5rZXkoKSkKKyAgICAgICAgICAgIHRyYWNrRGF0YS0+Zm9ybWF0RGVzY3JpcHRpb24gPSBjcmVh
dGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQYXJzZXIoaGVhZGVyUGFyc2VyLCB0cmFj
ay52aWRlby52YWx1ZSgpLmNvbG91cik7CisgICAgICAgIGlmICghdHJhY2tEYXRhLT5mb3JtYXRE
ZXNjcmlwdGlvbikKKyAgICAgICAgICAgIHJldHVybiBTa2lwKHJlYWRlciwgYnl0ZXNSZW1haW5p
bmcpOworCisgICAgICAgIGF1dG8gcHRzID0gQ01UaW1lTWFrZShibG9jay0+dGltZWNvZGUgKyBt
X2N1cnJlbnRUaW1lY29kZSwgbV90aW1lc2NhbGUpOworICAgICAgICBDTVNhbXBsZVRpbWluZ0lu
Zm8gdGltaW5nID0geyBDTVRpbWVNYWtlKGR1cmF0aW9uLCBtX3RpbWVzY2FsZSksIHB0cywgcHRz
IH07CisgICAgICAgIHNpemVfdCBzaXplID0gbWV0YWRhdGEuc2l6ZTsKKworICAgICAgICBhdXRv
IHNhbXBsZUNvdW50ID0gYmxvY2stPm51bV9mcmFtZXM7CisgICAgICAgIENNU2FtcGxlQnVmZmVy
UmVmIHJhd1NhbXBsZUJ1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIGlmIChub0VyciAhPSBDTVNh
bXBsZUJ1ZmZlckNyZWF0ZVJlYWR5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHRyYWNrRGF0YS0+Y3Vy
cmVudEJsb2NrQnVmZmVyLmdldCgpLCB0cmFja0RhdGEtPmZvcm1hdERlc2NyaXB0aW9uLmdldCgp
LCBzYW1wbGVDb3VudCwgMSwgJnRpbWluZywgMSwgJnNpemUsICZyYXdTYW1wbGVCdWZmZXIpKQor
ICAgICAgICAgICAgcmV0dXJuIFNraXAocmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CisgICAgICAg
IGF1dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRihyYXdTYW1wbGVCdWZmZXIpOworCisgICAgICAg
IHRyYWNrRGF0YS0+Y3VycmVudEJsb2NrQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgdHJhY2tE
YXRhLT5jdXJyZW50QmxvY2tCdWZmZXJQb3NpdGlvbiA9IDA7CisKKyAgICAgICAgaWYgKCFpc1N5
bmMpCisgICAgICAgICAgICBDTVNldEF0dGFjaG1lbnQoc2FtcGxlQnVmZmVyLmdldCgpLCBrQ01T
YW1wbGVBdHRhY2htZW50S2V5X05vdFN5bmMsIGtDRkJvb2xlYW5UcnVlLCBrQ01BdHRhY2htZW50
TW9kZV9TaG91bGRQcm9wYWdhdGUpOworCisgICAgICAgIGF1dG8gdHJhY2tJRCA9IHRyYWNrLnRy
YWNrX3VpZC52YWx1ZSgpOworCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2FtcGxlQnVmZmVyID0gV1RGTW92ZShzYW1wbGVC
dWZmZXIpLCB0cmFja0lEXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghbV9kaWRQcm92
aWRlTWVkaWFEYXRhQ2FsbGJhY2spCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgYXV0byBtZWRpYVNhbXBsZSA9IE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKHNhbXBsZUJ1
ZmZlci5nZXQoKSwgdHJhY2tJRCk7CisgICAgICAgICAgICBtX2RpZFByb3ZpZGVNZWRpYURhdGFD
YWxsYmFjayhXVEZNb3ZlKG1lZGlhU2FtcGxlKSwgdHJhY2tJRCwgZW1wdHlTdHJpbmcoKSk7Cisg
ICAgICAgIH0pOworCisgICAgfQorCisgICAgcmV0dXJuIFNraXAocmVhZGVyLCBieXRlc1JlbWFp
bmluZyk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTgxYzNkN2ZjNTczNmYzNjlhN2JjYjNm
NjEzYzc2NDdiOTMwNmU2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaApAQCAtMCwwICsxLDEz
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJD
RSkKKworI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlci5oIgorI2luY2x1ZGUgPGNvbW1vbi92
cDlfaGVhZGVyX3BhcnNlci5oPgorI2luY2x1ZGUgPHdlYm0vY2FsbGJhY2suaD4KKyNpbmNsdWRl
IDx3ZWJtL3N0YXR1cy5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9G
dW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVmFy
aWFudC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
U3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3R5cGVkZWYgc3Ry
dWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKK3R5cGVkZWYgY29u
c3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24qIENNRm9ybWF0RGVzY3JpcHRpb25S
ZWY7Cit0eXBlZGVmIHN0cnVjdCBPcGFxdWVDTUJsb2NrQnVmZmVyICpDTUJsb2NrQnVmZmVyUmVm
OworCituYW1lc3BhY2Ugd2VibSB7CitjbGFzcyBXZWJtUGFyc2VyOworfQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0gOiBwdWJsaWMgU291cmNl
QnVmZmVyUGFyc2VyLCBwcml2YXRlIHdlYm06OkNhbGxiYWNrIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9y
dHNUeXBlIGlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29uc3QgQ29udGVudFR5cGUmKTsKKworICAg
IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKTsKKyAgICB+U291cmNlQnVmZmVyUGFyc2VyV2ViTSgp
OworCisgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKKworICAgIGNvbnN0IHdlYm06OlN0
YXR1cyYgc3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0KKworICAgIFR5cGUgdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIFR5cGU6OldlYk07IH0KKyAgICB2b2lkIGFwcGVuZERhdGEoVmVj
dG9yPHVuc2lnbmVkIGNoYXI+JiYsIEFwcGVuZEZsYWdzID0gQXBwZW5kRmxhZ3M6Ok5vbmUpIGZp
bmFsOworICAgIHZvaWQgZmx1c2hQZW5kaW5nTWVkaWFEYXRhKCkgZmluYWw7CisgICAgdm9pZCBz
ZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChib29sLCB1aW50NjRfdCkgZmluYWw7
CisgICAgYm9vbCBzaG91bGRQcm92aWRlTWVkaWFkYXRhRm9yVHJhY2tJRCh1aW50NjRfdCkgZmlu
YWw7CisgICAgdm9pZCByZXNldFBhcnNlclN0YXRlKCkgZmluYWw7CisgICAgdm9pZCBpbnZhbGlk
YXRlKCkgZmluYWw7CisKKyAgICBlbnVtIGNsYXNzIEVycm9yQ29kZSA6IGludDMyX3QgeworICAg
ICAgICBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNRXJyb3JDb2RlU3RhcnQgPSAyMDAwLAorICAgICAg
ICBJbnZhbGlkRG9jVHlwZSwKKyAgICAgICAgSW52YWxpZEluaXRTZWdtZW50LAorICAgIH07CisK
K3ByaXZhdGU6CisgICAgc3RydWN0IFRyYWNrRGF0YSB7CisgICAgICAgIHdlYm06OlRyYWNrRW50
cnkgdHJhY2s7CisgICAgICAgIHZwOV9wYXJzZXI6OlZwOUhlYWRlclBhcnNlciBoZWFkZXJQYXJz
ZXI7CisgICAgICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBmb3JtYXREZXNj
cmlwdGlvbjsKKyAgICAgICAgUmV0YWluUHRyPENNQmxvY2tCdWZmZXJSZWY+IGN1cnJlbnRCbG9j
a0J1ZmZlcjsKKyAgICAgICAgdWludDY0X3QgY3VycmVudEJsb2NrQnVmZmVyUG9zaXRpb24geyAw
IH07CisgICAgfTsKKyAgICBUcmFja0RhdGEqIHRyYWNrRGF0YUZvclRyYWNrTnVtYmVyKHVpbnQ2
NF90KTsKKworICAgIC8vIHdlYm06OkNhbGxiYWNrCisgICAgd2VibTo6U3RhdHVzIE9uRWxlbWVu
dEJlZ2luKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYsIHdlYm06OkFjdGlvbiopIGZpbmFs
OworICAgIHdlYm06OlN0YXR1cyBPbkVibWwoY29uc3Qgd2VibTo6RWxlbWVudE1ldGFkYXRhJiwg
Y29uc3Qgd2VibTo6RWJtbCYpIGZpbmFsOworICAgIHdlYm06OlN0YXR1cyBPblNlZ21lbnRCZWdp
bihjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmLCB3ZWJtOjpBY3Rpb24qKSBmaW5hbDsKKyAg
ICB3ZWJtOjpTdGF0dXMgT25JbmZvKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYsIGNvbnN0
IHdlYm06OkluZm8mKSBmaW5hbDsKKyAgICB3ZWJtOjpTdGF0dXMgT25DbHVzdGVyQmVnaW4oY29u
c3Qgd2VibTo6RWxlbWVudE1ldGFkYXRhJiwgY29uc3Qgd2VibTo6Q2x1c3RlciYsIHdlYm06OkFj
dGlvbiopIGZpbmFsOworICAgIHdlYm06OlN0YXR1cyBPblRyYWNrRW50cnkoY29uc3Qgd2VibTo6
RWxlbWVudE1ldGFkYXRhJiwgY29uc3Qgd2VibTo6VHJhY2tFbnRyeSYpIGZpbmFsOworICAgIHdl
Ym06OlN0YXR1cyBPbkJsb2NrQmVnaW4oY29uc3Qgd2VibTo6RWxlbWVudE1ldGFkYXRhJiwgY29u
c3Qgd2VibTo6QmxvY2smLCB3ZWJtOjpBY3Rpb24qKSBmaW5hbDsKKyAgICB3ZWJtOjpTdGF0dXMg
T25CbG9ja0VuZChjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmLCBjb25zdCB3ZWJtOjpCbG9j
ayYpIGZpbmFsOworICAgIHdlYm06OlN0YXR1cyBPblNpbXBsZUJsb2NrQmVnaW4oY29uc3Qgd2Vi
bTo6RWxlbWVudE1ldGFkYXRhJiwgY29uc3Qgd2VibTo6U2ltcGxlQmxvY2smLCB3ZWJtOjpBY3Rp
b24qKSBmaW5hbDsKKyAgICB3ZWJtOjpTdGF0dXMgT25TaW1wbGVCbG9ja0VuZChjb25zdCB3ZWJt
OjpFbGVtZW50TWV0YWRhdGEmLCBjb25zdCB3ZWJtOjpTaW1wbGVCbG9jayYpIGZpbmFsOworICAg
IHdlYm06OlN0YXR1cyBPbkJsb2NrR3JvdXBCZWdpbihjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRh
dGEmICwgd2VibTo6QWN0aW9uKik7CisgICAgd2VibTo6U3RhdHVzIE9uQmxvY2tHcm91cEVuZChj
b25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmLCBjb25zdCB3ZWJtOjpCbG9ja0dyb3VwJik7Cisg
ICAgd2VibTo6U3RhdHVzIE9uRnJhbWUoY29uc3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYsIHdlYm06
OlJlYWRlciosIHVpbnQ2NF90KiBieXRlc1JlbWFpbmluZykgZmluYWw7CisKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8SW5pdGlhbGl6YXRpb25TZWdtZW50PiBtX2luaXRpYWxpemF0aW9uU2VnbWVudDsK
KyAgICB3ZWJtOjpTdGF0dXMgbV9zdGF0dXM7CisgICAgc3RkOjp1bmlxdWVfcHRyPHdlYm06Oldl
Ym1QYXJzZXI+IG1fcGFyc2VyOworICAgIGJvb2wgbV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNv
dW50ZXJlZCB7IGZhbHNlIH07CisgICAgdWludDMyX3QgbV90aW1lc2NhbGUgeyAxMDAwIH07Cisg
ICAgdWludDY0X3QgbV9jdXJyZW50VGltZWNvZGUgeyAwIH07CisKKyAgICBlbnVtIGNsYXNzIFN0
YXRlIDogdWludDhfdCB7CisgICAgICAgIE5vbmUsCisgICAgICAgIFJlYWRpbmdFYm1sLAorICAg
ICAgICBSZWFkRWJtbCwKKyAgICAgICAgUmVhZGluZ1NlZ21lbnQsCisgICAgICAgIFJlYWRpbmdJ
bmZvLAorICAgICAgICBSZWFkSW5mbywKKyAgICAgICAgUmVhZGluZ1RyYWNrcywKKyAgICAgICAg
UmVhZGluZ1RyYWNrLAorICAgICAgICBSZWFkVHJhY2ssCisgICAgICAgIFJlYWRpbmdDbHVzdGVy
LAorICAgIH07CisgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpOb25lIH07CisKKyAgICBjbGFz
cyBTdHJlYW1pbmdWZWN0b3JSZWFkZXI7CisgICAgVW5pcXVlUmVmPFN0cmVhbWluZ1ZlY3RvclJl
YWRlcj4gbV9yZWFkZXI7CisKKyAgICBWZWN0b3I8VHJhY2tEYXRhPiBtX3RyYWNrczsKKyAgICB1
c2luZyBCbG9ja1ZhcmlhbnQgPSBWYXJpYW50PHdlYm06OkJsb2NrLCB3ZWJtOjpTaW1wbGVCbG9j
az47CisgICAgT3B0aW9uYWw8QmxvY2tWYXJpYW50PiBtX2N1cnJlbnRCbG9jazsKK307CisKK30K
KworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXImIHBhcnNlcikgeyByZXR1cm4gcGFyc2VyLnR5cGUoKSA9PSBXZWJDb3JlOjpTb3Vy
Y2VCdWZmZXJQYXJzZXI6OlR5cGU6OldlYk07IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5E
KCkKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EuaApp
bmRleCA4YzI0NTUzY2IxNjVmY2E3OWEyOTU4YjZkYmVkODI3ZjcyNzgxMTI3Li5lM2UzNWJlZmU0
YWUwNDhkMWJjNTlmODMwNDMzZTFhYmI0YTFhMzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLmgKQEAg
LTM5LDYgKzM5LDcgQEAgV0VCQ09SRV9FWFBPUlQgZXh0ZXJuIHZvaWQgc2V0T3ZlcnJpZGVWUDlT
Y3JlZW5TaXplQW5kU2NhbGVGb3JUZXN0aW5nKGZsb2F0IHdpZHQKIFdFQkNPUkVfRVhQT1JUIGV4
dGVybiB2b2lkIHJlc2V0T3ZlcnJpZGVWUDlTY3JlZW5TaXplQW5kU2NhbGVGb3JUZXN0aW5nKCk7
CiAKIFdFQkNPUkVfRVhQT1JUIGV4dGVybiB2b2lkIHJlZ2lzdGVyU3VwcGxlbWVudGFsVlA5RGVj
b2RlcigpOworZXh0ZXJuIGJvb2wgaXNWUDlEZWNvZGVyQXZhaWxhYmxlKCk7CiBleHRlcm4gYm9v
bCB2YWxpZGF0ZVZQUGFyYW1ldGVycyhWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYsIE1lZGlh
Q2FwYWJpbGl0aWVzSW5mbyYsIGNvbnN0IFZpZGVvQ29uZmlndXJhdGlvbiYpOwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRp
ZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0
aWxpdGllc0NvY29hLm1tCmluZGV4IGU0NDM1M2I4MDM0ZWY3MmFmOGNjN2RjOTQ4MWE0OWEzODlk
ZTlhNmUuLmY3OTY1NjNiM2ZmNjdlZWJhOTAwMmJiMjNhNjRjYjdkODg2MWMwNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0Nv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0
aWxpdGllc0NvY29hLm1tCkBAIC0xMDIsMTAgKzEwMiwxNCBAQCB2b2lkIHJlZ2lzdGVyU3VwcGxl
bWVudGFsVlA5RGVjb2RlcigpCiAgICAgICAgIHNvZnRMaW5rX1ZpZGVvVG9vbGJveF9WVFJlZ2lz
dGVyU3VwcGxlbWVudGFsVmlkZW9EZWNvZGVySWZBdmFpbGFibGUoa0NNVmlkZW9Db2RlY1R5cGVf
VlA5KTsKIH0KIAorYm9vbCBpc1ZQOURlY29kZXJBdmFpbGFibGUoKQoreworICAgIHJldHVybiBu
b0VyciA9PSBWVFNlbGVjdEFuZENyZWF0ZVZpZGVvRGVjb2Rlckluc3RhbmNlKGtDTVZpZGVvQ29k
ZWNUeXBlX1ZQOSwga0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgbnVsbHB0cik7Cit9CisK
IGJvb2wgdmFsaWRhdGVWUFBhcmFtZXRlcnMoVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQmIGNv
ZGVjQ29uZmlndXJhdGlvbiwgTWVkaWFDYXBhYmlsaXRpZXNJbmZvJiBpbmZvLCBjb25zdCBWaWRl
b0NvbmZpZ3VyYXRpb24mIHZpZGVvQ29uZmlndXJhdGlvbikKIHsKLSAgICBPU1N0YXR1cyBzdGF0
dXMgPSBWVFNlbGVjdEFuZENyZWF0ZVZpZGVvRGVjb2Rlckluc3RhbmNlKGtDTVZpZGVvQ29kZWNU
eXBlX1ZQOSwga0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgaWYg
KHN0YXR1cyAhPSBub0VycikKKyAgICBpZiAoIWlzVlA5RGVjb2RlckF2YWlsYWJsZSgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBWaWRlb0NvbmZpZ3VyYXRpb24gYW5kIFZQQ29k
ZWNDb25maWd1cmF0aW9uUmVjb3JkIGNhbiBoYXZlIGNvbmZsaWN0aW5nIHZhbHVlcyBmb3IgSERS
IHByb3BlcnRpZXMuIElmIHNvLCByZWplY3QuCkBAIC0xMjgsNyArMTMyLDcgQEAgYm9vbCB2YWxp
ZGF0ZVZQUGFyYW1ldGVycyhWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYgY29kZWNDb25maWd1
cmF0aW9uLCBNZWRpYUMKICAgICAgICAgaW5mby5wb3dlckVmZmljaWVudCA9IHRydWU7CiAKICAg
ICAgICAgLy8gSFcgVlA5IERlY29kZXIgc3VwcG9ydHMgUHJvZmlsZSAwICYgMjoKLSAgICAgICAg
aWYgKCFjb2RlY0NvbmZpZ3VyYXRpb24ucHJvZmlsZSAmJiBjb2RlY0NvbmZpZ3VyYXRpb24ucHJv
ZmlsZSAhPSAyKQorICAgICAgICBpZiAoY29kZWNDb25maWd1cmF0aW9uLnByb2ZpbGUgJiYgY29k
ZWNDb25maWd1cmF0aW9uLnByb2ZpbGUgIT0gMikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgICAgICAvLyBIVyBWUDkgRGVjb2RlciBzdXBwb3J0cyB1cCB0byBMZXZlbCA2OgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFj
a1ByaXZhdGVXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmEzNGYyZTU4M2ZlY2JkYTM0
Zjc1N2JiMmIzMTk3ZjNlZmNlODIzMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKQEAgLTAs
MCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJW
aWRlb1RyYWNrUHJpdmF0ZVdlYk0uaCIKKworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFZpZGVvVHJhY2tQcml2YXRlV2ViTT4gVmlkZW9UcmFj
a1ByaXZhdGVXZWJNOjpjcmVhdGUod2VibTo6VHJhY2tFbnRyeSYmIHRyYWNrRW50cnkpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFja1ByaXZhdGVXZWJNKFdURk1vdmUodHJh
Y2tFbnRyeSkpKTsKK30KKworVmlkZW9UcmFja1ByaXZhdGVXZWJNOjpWaWRlb1RyYWNrUHJpdmF0
ZVdlYk0od2VibTo6VHJhY2tFbnRyeSYmIHRyYWNrRW50cnkpCisgICAgOiBtX3RyYWNrKFdURk1v
dmUodHJhY2tFbnRyeSkpCit7CisgICAgaWYgKG1fdHJhY2suaXNfZW5hYmxlZC5pc19wcmVzZW50
KCkpCisgICAgICAgIHNldFNlbGVjdGVkKG1fdHJhY2suaXNfZW5hYmxlZC52YWx1ZSgpKTsKK30K
KworQXRvbVN0cmluZyBWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OmlkKCkgY29uc3QKK3sKKyAgICBp
ZiAobV90cmFja0lELmlzTnVsbCgpKQorICAgICAgICBtX3RyYWNrSUQgPSBtX3RyYWNrLnRyYWNr
X3VpZC5pc19wcmVzZW50KCkgPyBBdG9tU3RyaW5nOjpudW1iZXIobV90cmFjay50cmFja191aWQu
dmFsdWUoKSkgOiBlbXB0eUF0b20oKTsKKyAgICByZXR1cm4gbV90cmFja0lEOworfQorCitBdG9t
U3RyaW5nIFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6bGFiZWwoKSBjb25zdAoreworICAgIGlmICht
X2xhYmVsLmlzTnVsbCgpKQorICAgICAgICBtX2xhYmVsID0gbV90cmFjay5uYW1lLmlzX3ByZXNl
bnQoKSA/IEF0b21TdHJpbmc6OmZyb21VVEY4KG1fdHJhY2submFtZS52YWx1ZSgpLmRhdGEoKSwg
bV90cmFjay5uYW1lLnZhbHVlKCkubGVuZ3RoKCkpIDogZW1wdHlBdG9tKCk7CisgICAgcmV0dXJu
IG1fbGFiZWw7Cit9CisKK0F0b21TdHJpbmcgVmlkZW9UcmFja1ByaXZhdGVXZWJNOjpsYW5ndWFn
ZSgpIGNvbnN0Cit7CisgICAgaWYgKG1fbGFuZ3VhZ2UuaXNOdWxsKCkpCisgICAgICAgIG1fbGFu
Z3VhZ2UgPSBtX3RyYWNrLmxhbmd1YWdlLmlzX3ByZXNlbnQoKSA/IEF0b21TdHJpbmc6OmZyb21V
VEY4KG1fdHJhY2subGFuZ3VhZ2UudmFsdWUoKS5kYXRhKCksIG1fdHJhY2subGFuZ3VhZ2UudmFs
dWUoKS5sZW5ndGgoKSkgOiBlbXB0eUF0b20oKTsKKyAgICByZXR1cm4gbV9sYW5ndWFnZTsKK30K
KworaW50IFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6dHJhY2tJbmRleCgpIGNvbnN0Cit7CisgICAg
aWYgKG1fdHJhY2sudHJhY2tfbnVtYmVyLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgcmV0dXJuIG1f
dHJhY2sudHJhY2tfbnVtYmVyLnZhbHVlKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK30KKworI2Vu
ZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE3NjdiOTFkOTZlZmVhZjQ5ZjNjNzkwYzcyZDYzYTJmZDgxNTNiODEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRl
b1RyYWNrUHJpdmF0ZVdlYk0uaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5jbHVkZSAiVmlkZW9UcmFj
a1ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3ZWJtL2RvbV90eXBlcy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFZpZGVvVHJhY2tQcml2YXRlV2ViTSBmaW5hbCA6IHB1YmxpYyBWaWRl
b1RyYWNrUHJpdmF0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0
ZVdlYk0+IGNyZWF0ZSh3ZWJtOjpUcmFja0VudHJ5JiYpOworICAgIHZpcnR1YWwgflZpZGVvVHJh
Y2tQcml2YXRlV2ViTSgpID0gZGVmYXVsdDsKKworICAgIEF0b21TdHJpbmcgaWQoKSBjb25zdCBm
aW5hbDsKKyAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3QgZmluYWw7CisgICAgQXRvbVN0cmlu
ZyBsYW5ndWFnZSgpIGNvbnN0IGZpbmFsOworICAgIGludCB0cmFja0luZGV4KCkgY29uc3QgZmlu
YWw7CisKK3ByaXZhdGU6CisgICAgVmlkZW9UcmFja1ByaXZhdGVXZWJNKHdlYm06OlRyYWNrRW50
cnkmJik7CisgICAgd2VibTo6VHJhY2tFbnRyeSBtX3RyYWNrOworICAgIG11dGFibGUgQXRvbVN0
cmluZyBtX3RyYWNrSUQ7CisgICAgbXV0YWJsZSBBdG9tU3RyaW5nIG1fbGFiZWw7CisgICAgbXV0
YWJsZSBBdG9tU3RyaW5nIG1fbGFuZ3VhZ2U7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVy
ZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKaW5k
ZXggZTA0Y2FkY2EyZGM1YThjNDE5YjcyZmExOWVlNzNmZTczYTEwYjYwMS4uNDJiMDQ5NzA5YjNm
ZTA4ZWEzMGZjNWRkOTZmNjgxYmY2YzdjMTYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
cmVmZXJlbmNlcy55YW1sCkBAIC02NjgsNiArNjY4LDE1IEBAIFZQOURlY29kZXJFbmFibGVkOgog
ICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJFbmFibGUgVlA5IGRlY29kZXIiCiAgIGNhdGVn
b3J5OiBleHBlcmltZW50YWwKIAorV2ViTVBhcnNlckVuYWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAg
ZGVmYXVsdFZhbHVlOiBmYWxzZQorICB3ZWJjb3JlQmluZGluZzogUnVudGltZUVuYWJsZWRGZWF0
dXJlcworICBodW1hblJlYWRhYmxlTmFtZTogIldlYk0gTVNFIHBhcnNlciIKKyAgaHVtYW5SZWFk
YWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIFdlYk0gTVNFIHBhcnNlciIKKyAgY2F0ZWdvcnk6IGV4
cGVyaW1lbnRhbAorICBjb25kaXRpb246IEVOQUJMRShNRURJQV9TT1VSQ0UpCisKIFVzZUxlZ2Fj
eVRleHRBbGlnblBvc2l0aW9uZWRFbGVtZW50QmVoYXZpb3I6CiAgIHR5cGU6IGJvb2wKICAgZGVm
YXVsdFZhbHVlOiBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGFkNzJiZmMzNTk0ZTFmMWQyNDJkZTg0ZTAxNmZkZGU2
MzljZjFiZWQuLmNiNDYxOTkyMGQ4Mjk1MmEzN2ZiYzQxY2U1YjVlNTQ2OGE0NGNhNTkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAyMC0wNy0yMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBleHBlcmltZW50YWwgTVNFIFdlYk0gcGFyc2Vy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ1MjkK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1NzgyNDY3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9jb250ZW50L3Rl
c3QtdnA5LW1hbmlmZXN0Lmpzb246IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLXNvdXJj
ZS9jb250ZW50L3Rlc3QtdnA5LndlYm06IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLXNv
dXJjZS9tZWRpYS1zb3VyY2Utd2VibS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1l
ZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS5odG1sOiBBZGRlZC4KKwogMjAyMC0w
Ny0yMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mgc2hvdWxkIG5vdCBoYW5kbGUgTmV0d29ya1JUQ1Byb3Zp
ZGVyIG1lc3NhZ2VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2Uv
Y29udGVudC90ZXN0LXZwOS1tYW5pZmVzdC5qc29uIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEt
c291cmNlL2NvbnRlbnQvdGVzdC12cDktbWFuaWZlc3QuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNDdkOTc3
YTM3YmIzYjRjN2E1NjU0NTQzNjk0YTI0MGZmODA0MjcyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL2NvbnRlbnQvdGVzdC12cDktbWFuaWZlc3QuanNv
bgpAQCAtMCwwICsxLDkgQEAKK3sKKwkidXJsIjogImNvbnRlbnQvdGVzdC12cDkud2VibSIsCisJ
InR5cGUiOiAidmlkZW8vd2VibTsgY29kZWNzPVwidnAwOS4wMC4xMC4wOC4wMVwiIiwKKwkiaW5p
dCI6IHsgIm9mZnNldCI6IDAsICJzaXplIjogNjI5IH0sCisJImR1cmF0aW9uIjogMiwKKwkibWVk
aWEiOiBbIAorCQl7ICJvZmZzZXQiOiA2MjksICJzaXplIjogNDM3MjQsICJ0aW1lc3RhbXAiOiAw
LCAiZHVyYXRpb24iOiAyfQorCV0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvY29udGVudC90ZXN0LXZwOS53
ZWJtIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL2NvbnRlbnQvdGVzdC12cDkud2Vi
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kNjNkZmRhYWM3MTEyMmViNWEzOTJhOWNhMjU1ZTZjMTk2YzM4ZTk4CkdJ
VCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA0NDM1Mwp6Y21kNDJROztyQSg+OGghKjRWYWYrcVB9bndy
JCY8SE1WV3J2aiVIeVRtU1FaJiUzfGF8R19AcjY8cjtmLUliWncKem02PzR8NW5XaUt5VHczJnt+
N29+VlN6d0dGYU9OQEt2MUVGS25TNnI1Ty00fVRjUGtrVjQ9YEpVPH5CfF5NOUF0CnpLcTFPenk5
algwYzEwXiFnYGk0U25raVFZOT81cGF7Ryp8JSlMSlc3MkxUY1B0MEppa25nMiglYCZZJEw/KXVO
JAp6Plp7QkQyRj9DQV9XdipNe35gOFltYHFlXzRaLWsyMDxyPElHS093dXRuNzNnJXlmKGw0Qztk
YXc9TlBIQSZAV2QKektXelMhaTJxdmkqWng7dlRNR25vOXRpfT4yP1ArZTxPSTlnblNfT14+OG1N
bDFfdUhXOXxWVTBkeWlZfntkWC0/CnplR3JnOVhXKHNDQW48PlpffXswKSZkJmRwPSMyYVNEKj8+
TXwwYGpNN0tlKzwzQ29MIUR2NTt1LV5sKmdqXy1mJQp6SyNsKV9eMXJyWnw4THZPZV4/cy0hOytF
VkthK3ZMIz9ye20hR3FTI2YlQVg7YVElUHlBcmRXKTVLJmJVUkZSYUkKejZBNGRZVkJxQEMjWUQm
T3t8bz5DVSUxdXZVJk96UVBYWW5PaiZnd2pLdFBhV3VuKytHN1ZhNV5nOUhhZDFwdmsxCnp6bW9z
KmFuPVhGaVIqLXl7QDJld14hc0x1NUI8KU1lKFlPKD16RGtLamM/fk83eUlreHI0Syojbi0yMXxf
azw3cwp6T15iYTBKQVVOI2hrVk5+QyNofnVeeW1DSlUtVD5XaXFDKWFMTFglNyF7NzN7N3JmI3tw
Uzt7I3pHclZ8PzJuSlYKel90ajQrWitZN257ZkY/QG8yPUtCPn11YXxjTjsoZG5tMW5WckJDSilS
JmNnKz4wYFh7UWplP3EldDQ3KW5uYnRjCnpsYGpXU1k1PjZoZnlCY1JIITVuX1BzV1pkenIjUWdZ
S3FGMlQ2OVU9ZWVkUGp4WHU8a2AxLW5eYlZDR0teP1JURgp6KD14XzUqdF5geU0+N25QeTV5T1NI
KWxAKXYkMip6TGJoUGExQHUhQD1gcX1ucXN8fT1LPjNReUI8ZFU9NWo0NTUKelRJOFc8cXQlU0Qk
Q3tsPz5ffkNEUX5QcTgwOHtIWjczY04hRjZJcSNxS3c7ZjxNZksraTYzXy0jbWFCb0ZXK2cjCnoq
ezAjNEs5cXckJGVhdV5abGU4PmFMPUVTRys9TnQ/SkA0QUhEZDQ5czsrYDh3IzA9JGlxdCh6dCE8
PUMkdWZ8OAp6dCF6YSs3cShaVTFwaUQ3XmxGZGluMXVMJmJ2ZnlPVCliaD1SNHM+XzFgZXtIbW9m
VEdOVygtYHl3QGg1UWtfVWQKemBXRz4jbm0mV1BZeUhaem9lJlQhP3dkV3lNQmBYZktOZ303cmZ6
R3JRYSMjRjheI3BmbVlpdmo4T2xjUlZDPSlBCnpYaDNvVUYrfWhJTGlyPlotczlKcGpfJkF4b25J
Pm9CfmI+ND1ASnc2VHsrYXNoaz9JNCZSNjgkRnIrTyNSPno/Mwp6ZnVrQHV0fjdzc1JZI3RxJkh3
T1d7eUZ9TEMrT248SCNSLWAxcSVZcTQ1Mk5gZjk/MnFiWTYjOTJgVWpuMmdrMnkKenhiZE0lOEdo
RDVUOXBfdzZwYXI+KlAoRCp5MSE3Sj5tJk9+Vmx9Vl9wLTwmTzIqbnVeK3A4RmItTzBmWSQjRWc3
CnowdVBINzBqJUl8aUtmQndKV1JHX2B0ak5BKFBAbVQ1Pms4NFIrPz0yaEx0QGArJmJ4NmZZUSE3
Sl9DbV91PVN6bAp6Y0x7bzU1djcxfkshVVlPU01AXn1uTkImKHFLV0xNcVYjdDVzKiR0TCs5RVor
TjNJWWt3MDNDY1I3cE1FXnlVcHsKemNQIU1pK1VnZnM2RkZxcEZ0aEU0WDhqODM/S05xbHQkQUZt
P3o/TzRSdSlARz9fQTw8VztiWndEdVpIPVp2SCp6CnozUXc+U1EldEhuQkNAQEMkWWt+QHZ5WH1p
KkwwSDh6Sm94V0lfTzFSO0ZBJGZzOWRYdFlodnZHRm1XUGJNck4mRQp6Xk52NWZJbEBhaWt+cX5t
PVpXUX5zRXNrKGE+TiVJOT1kOWwwO2kyRV5WTWkrQXJvZXZESi19bUM7QDY2VFEkJXIKejIpfFNO
SmxZck1EdEFBOTxjbzhhR29JUFMrN1RDMmIhcH43REBKMkZ6S1Ayc0tFdk5kUkNOZFBJWWA8SnZ3
TTR7Cnpuc1lFR2orPTExQFhwSEk1ZjE5cG4+OE8lZEZzNlFTOE1YPkU1OStQPD8xO2BeZnYrZ15D
QHVMIUNBPnR5Xk99Mgp6OWheUj11fn4xeE8/dEZMRXktZ1VXcys4PDEkcC1HQlBsVDZ1cmA9SCkw
cCp9Rz55OVJDNT1AaExtPG97WF90bkAKem5YKl96cihoZyhJRXJue3dJaGZxKCFoV2lvI1Y/JWtf
LW1kX15YRzk9Kz5kTU9TfGEtI2lJe3p7aClBTiY4TFUtCnopfkdPbHhtWFU2IWU9ZSUkYystKHMl
KipmIVY2aXY0TilkZEZDUW14YHM3U3tWWHRfLXZKfmgmI3FHTC1mJXslTgp6QzQ/Nm1EX0E8VSpP
cClnOSpaLSVJRTRhIz5nT3N8Q1RxJnVuMmBhXnY5N0xIWVc7QzdkakF9ZktLSiZOIzZ9Z18Kel51
NXNKSHl5Zk0mfEpJVSpscSY2UzlRaDh7dDhHMmNOSW9ZKCtPSERuQjlxYGQ8d1BqdmFecnF6NCsr
Q090YjZTCnohKE4yYHY5UzdRJkExUCErfk1gKVFaNkZsakp9alBMJlAwaiUpOS1CVnkybzBmO0h4
JSk5NjslPXtBUnIjYm1uewp6SkJFWUpUNDtFbjE4fVckWkc0fU0jUCkoeDl3WVNwK1BAT28wV3RD
dkR6bjUtZkAzJShgYU5BSC02QExNIyNIRTIKekhCVlU/U2FBWko9RC18KGI8SjJQXjVxNDtmXkVx
OHNGJGh8akRRX2FtRGFuRzdYJSZJPTNVOHROZFolJmx9SF9UCnpoWUNmTD8/T3BrWH5YdTYtS3xE
R2ZEbXM4WWY5RkklIyZ5Y2BKZ2Y8VikySzVVK2AxVTxWQzZ3UGo3KiF2WV5MaAp6OHo0QDJzYFQj
amNDTjYoc19wKmg3ZXl3STJ3YD5eY0Q5UGgmK31YXlhEblhmMSFWPHN4R35eWj49JWpzTzc8T18K
enRrcDR3JHk/PUtEVjRAY0k2fkpAMCE/WFk+aXFyaSpzZkpsWi1VaUluZ35BaVBuNSNiZj1fNHFU
VF4xM0tVRjIrCnomeTZXWFYtfG0mYEVBc35END5GOyVje2okKnl9ZXJMYWRqNSojYE40X1IlVz5o
UVkwfjtVIWokI29qakJfJmNMPwp6cFRlan1tWG9OekBfKWY7OEFOVjxTRisjanEwSnF3M2JEc0E5
JmpQWVZvd1oobjVecW03QThwdTt0fTNkX2NeQXAKem1FVEhtUyspT3NvcnhZWlVvWj8pSkw9YSp2
OCMoT0NfTGs8OTtkTVBnX1pkPFFIRmglODRyQyVpPko1PmlEKXFQCno9ZXZpbExXeCErOHR+PCgr
cjR+OWBLTUIhb2gqa0o9Sng4Ml5ePSNaPiooPU0zJUxhRjZYJjApVTZeS1Z4RVglLQp6MVlyQmJk
Z1k4VDY9TXJNVXpMPnB1SWd2Y2loWFNIN248KCRjdkl1KWw3I1duaGQ7Y01sY05jeFV1RzZre2ko
MVQKekFRcSNra2BkbitANDZCS21OO2xxSHglUk5zalA4UjNRLSsoZDVZe24yUH5NTlU4Q2spRSVU
NE4+bEkyKHw3dkltCnptbz5oRW58X0t6TUlRUFI0NV5zcER7Q0QrSURSYXtmP357dGFJfkxGU2JI
ZyhNb2EoeGBtKzU0UjYzUk88aF5qfQp6TDZHbFVtdmtMUDJNSiNwYUgrakRYfl5HVW09ezF2aCZl
Vkxrc1YlSlhlN3w0dW5JK2E2RCVNbnF7OzdORGYtYjgKeklMRVdDVyFYOWJNSypDUnJIVVJXSkUh
OTBNcnlwYzNsSSREPE1PcyVIS1FtS3ROI1FgY3xIQ1JyPmtXY0VuRDRNCnpOaW14SWhLYFYwQCk/
YExqZVlBNjRubiExMkNKeFkxOXs1Y2khQEl+T2dFKWt6Kmt+OUU1Yj0oMmkzOG08WjdHWgp6O31w
emRFOCQ2MFA/ZUxjZUFkJXxtSEBnc1AlbHdMZTUhTHMzR3h4U09WKyhARWo+VypwfiRFc3BnKEpD
XzloeX0KenNFUkpTbUo1JGgtNHtBSnNUfWc2ezhoNSFzWjslPzsrdz5MayROKDdgYXFOJWhqZSF5
aEtJblh5VG9MYXE4Pnc1CnpMc0Q2OFRtdG50MVR5aiMkY1kqJmVkWj9mPXYxNVRLV3FBPGF8TG00
Pzc0YXJYTyghcEY4RE9jXj9JZjJHbT08Ygp6QDljaj80Pj5pMiZ+SnFfWU8rLU8jS3RSSC13fHQ4
Nll9azJkQXVFP0MlbyUjVDVWbTBAdyU8LSlSKUs7X0R3NXAKenNubitCPT9GenY3e2RyVyZVeTBk
SEZkMCVHVENmcVcxeEo/V3ZKQU5lNkxRN3Byem4kYWpiRms2fVNENWJ0RDExCnolczFvTWVQZWE5
V0MwTGlQejtkVko2KUM/OXFxSCo7SFN3fjQwZjBJZnlIcE5RKTROMnZLUjJZIzNseWBKJVBATgp6
RHBEfWlocTdVSWJHdyRwSCQ2RyppKSMlTSlranJPdypqOzdjeHZ2ezUyMkU3TCZaQmY/Jj9QSW8z
NUVXaGktO1AKel48bndHZyRvbGZre2s/UCp+I3xxVjNLTkAxPmImeXlxPWE+RiFmQ3JmN1p1dE15
MSljJXRtPU5CYFZwQk5EYiUrCnpGUnB0UkZ2e305UVJuPUo0VSpIMFo8OyYzMHhUfldeKVROT3p6
cXI3MGZpUEs0cFZSSl8+PFI+VX4pQVFueUYmTwp6SXw7cjFjcWdHcE96TVdiUnIpaTJBPDR2O016
fHNuZ202fCFeZHIpelc9LSViRVFFKVZebWswaHJGajtRQ3Ntb0AKelhZeVM2c2ltfUEqTn5mQ090
OS03OzB6eDNrJUFUTDQje1JsP3U/WTBDUGhMPU5IOXR3Q3pRRGFZUEteYXJWMUh1CnpKOVdLKXZU
QiFabHMocFoyTDZMKUhWSEE0JjQmJio4fiU2M2xfNX5RJWtOcXFkJlhiMzw9bnh+REtPMm0+QVdW
SQp6Q0l3VH12a2xiI2EkK1EoYTBRcHRmYW1KNU1wTmxZaGFnZVM0cj9IKVlkKGpWU3xlLTNVLUNl
PkpNbzI2RjhVVzAKemlDPiM+WEMhQm5iMmU/amheayhNQXJoeHkmI2ZCPj5adU1HOGBFTFhHQ2tV
RSVDd3VIYntkK0d3I2ojP09jU2s+CnpLcFBIY1cqPG5rVDV5bStrOFJUOWxDU0RebHw9O1VDUkNz
VWtlUDZ7Ul5LY1FNcjVvR19FJUpxTjlFVXxWKE1zWgp6XzF0TEFIUiVNJCNAb3VwYnY+blJneVpi
REJVKlFfcXp7WERecklzaiNyRXVmN2U9fCVqMnhMZnRYPz5VSTJ8d3gKendXR0lwNypJXil7NHU1
fjlJQkR+TXpzaF4yd2NZeD5hYnZEUExXeEswfiVHY1JnKn1aMkU3Q0xSMkgrMVEqXk1PCnpARzQ8
NiFGMVpBMUt1fHBLU1FBeD5ydWxLNEhLUEdSWU1oJnB8TXBXUUxyZjkzUE48OW9Ma2A7JDV9ZVVZ
VDFPZQp6WUU5bX1PaVlvPlBTNDJwZEApPHBFK3EofGk8QVIzYHBtRk1hUytxMk9KbjIlYil0THo2
am1ePD0jNSRtM2p6NWgKekY2fEhlM1QoP15wcTFrJCpvMFZIeTc7TGRHe0lLJkYoV35DbWxeU3w0
ZVR5I1lGTXYmdmRpcSQ+aG9aZXwzTVI1CnpaPlhxOHR3RmtBNzNDWW5RRjdOJjNzemV4LUEpYXtw
TH03Q1ZpYk5BU0tPQkNIVkMyN1V7WHFfRzhBSjdrJXJ8aQp6dWxmLUN3OUIyM0wkM2pAPFc0aUVP
KTE0Pj9SayZFNkAxfTgpbnVSVzJUSjI9MWFDMUZOV2pDJXg7enRudnhfaTcKejdLNGV5S3ZDbE9R
dGN+R2BeKVRDRVUtVigwNVIjeCtoTy1+RzhpJmRyfF4jZCU/WlFeNk81RUc1VFZFaVNLLVd3CnpV
IXRKe0s/VF5VZ1Y5TUFoMV5BYWRybHpXQkNGJmMlVEZjPDUkZXFfb2AtSVJ5ZStwaV9FbDclVCRX
PzczR019Qgp6SlpaaFN4emI/cVhzN1RNWFE0UXEwSkwyNmZicSlfQ0F1I3kzZytQUUV2fmZabl9a
X0YwaU1rX1otaUpOcEUtMyYKekc0UWswbiZZcmZabkBtWUA8cXRqIV96UGlVKT0/UHNIQnBxQzM+
Q3xiNVhPV2k5NTxBUSNGMTNrcXkkTyY5anN9Cnp6OEZ9PTQjN3N4Xilua1BrPjx+X3c3Q1VvNkFS
JipOZzskJXY+aTM/cG8odW5FYEhyYjYoRilWTHxXcj8mRklfVQp6MzNGR0g1JGFvPVM/M09AVlVP
akBWTzNeZTN4d1k5JUAoaGxuQzA/PmxXTEshOSNAKzBVSUlyY3lSTFVxRilrX1oKem1sbl9DJGVu
Vn5zUmchaW9EOVkhV1VRYHFhYj1kYkhtYztldkR1MU9Hckp5flR2anRQZz9DX3o3djMjTVRzWU1i
CnpERSNTal9GWTEoRHlmRChhTWVeVG4lJjxAUDgwSGgoKldgbHM2fEZrdWplcXdAUD02fVoze3s3
YD8rO297eVIzTgp6TngtY2pFb1M/REdJaDZzaGxFMX5vRloqSkt1OVJ1KC08MkcjPCh0fWdeSW4p
RTJMaUNtMV9BeS1HbE59SXB3Z14KelliPTdzSVJ8VHRfJWdHc1gyOE5TaCZXPFdBZDQjUTE+OFVs
Z05YPTluOG8yaU51QXUrPn5DenN2VXZwK1VrJUFkCnppe1dpWFJydFB9WGd8bGhiT1N6XzdDdnQk
eDhke3drdSlmdHZ7JHkhdCpJaVc7M2h0RV5sN0skSH1IKDd2QD53MQp6e0Z+UGkmVHsqU1RSVE1X
Yytke1lYUVVJQz5XbV9lTmNVPmNEZy1vK3RLJnN3YTJBVHgoe2s5I0ZTXlhKWGp6P0sKek5UViY3
T1c9PFY4WGUkKGQtUzYyQHQ5MyVkQkNLTHlIMmMyPy1AWjlofHAhI25NMV5jcWJ5UjBoVjZYRTFk
dGF8Cnp0dGA2Xzk0NTE7NFprY0ZXVV88IXU5eyk2dHtDRTA2dD9XJithZUYqbE05Z3d1QG1OZlZh
SV8wQyhRYVlqdTR2RAp6QkpeQE42P1NLJEJRQkRMbHo1dUYwJTs5Tj5xKzB0T3pPX0F0UEEpQ0he
aGtrI09mYGkoNFgjeEgoNEw5TyM1Pm0Kekt0bk1jPERaZzFBXlI2WDZCWHlUQShPKmI5KjlWLT44
fk5SZEVJZyZ2TFZCTSlFeHZlKkNne0ZtPSVISUdjT2FHCnoyRiFDMiM3UnVXNkdZPH5Bckg1Q0dl
KVdLTnR7YDc5bExHZjlXKHBqJS0oXlZ1ISEyQ2soPS1mY3xJWW4jTjt1Xgp6aFc1Vy0wXnpKbzNL
KnF5WFlGVSMyY3ZaSHEhcGBBNipKTmZLVlhwSjVPSX05cCs7UTZCVmFNVGo3bVVlTT0qLW0Kelgr
WTg1KyNTS3pWU1lvI2B6VGc7TkdtekBuaDIhRWd8fWl1JVNgYzh4Z157Nm5sVSRpV1ZlMlp7dUJQ
R0pJOytrCnp1PHl6PUtTJHx1TVBKY292WUhPUFAyKkI/IWkmP1VMLUlvIz1FZzltRWcyOVhpPEBK
YkdtbmdCT1FNME9nUnJlNwp6UGdeJmBXVjVva09PVD9EYmxmd31IKTJsUCM0PUJFY3hvPWlHTGg0
Rk9aczk3bn08SSFFOzZTIWclI3sxZG1CSyEKelA9cT89enRudXE3elV5PlhtcUpQeFZlbT1fdUx8
OzZKUSl1KXtPNGkqN2srYU8pMUBDbGdJQCtUWDEtJEoxUmBjCnpzNWIzRilkKzFZcHE8OTwob3Jf
Vm5CQEhIaiMyc1JgMj4+JispKXwyM0M7VkgkWitwSHlEWm4rUXkkWTV1Y1ohbQp6SG4pQ2RaUkI/
Q0RjUSlJSVpiVXdFe1MofkJXdCZmMGMyRUZNZD1nY0pyT05mcHgkK2N6TncrPTlpakY4KEhHQjcK
enRtQmElRz5kVnY1JWRtXntJajw9YzEoPWREPVB5Rz9YbD51WDlYPUBHJG9wYHI+T2BJeUtxej9m
O2QzMGN3ZChyCnp6Kll7e1JWQXAwdWVQR3FJJHxnO0Y0I3ZnIXwrPXVSRiRZK2hEZiQyPzFpSmtw
WEtCeVBEZ1MldUlfTihjI1ZVcAp6b2s2OHduKykoUT1iNFRKMWIhJTJMNiVwcTc/dDJ7NGE/YS07
WXtGPSU8MGNLQ3dTN15IdHAwMnYzU0M4P2F8NHQKenliRzBBcXhNTXhtOypzdm9eZSNxNn1eZWRt
Z3lBRzNhOHpUbUdhdE1jcSlQWWYtZjtjSjt7NktZJGEofHJzODE0CnpNZytnRi13cXwwSk4mZU5N
I2RxI19PaHRuY05TVjxBa3IrI0BqWWBJcSFhNXhtK0c7OzNacCF0IztIeThKc3x6Vwp6MXx4bCQ7
ZW1xdUM5SXQzTThNYTU0JXR5JWFJRW85I1RvRnNQPGNgZWZMWCNVZSlQRihzMnRhbmduP1M5Rmlh
TVUKenYwPnBiNDdtRCFAbnR4bWsrVnwmO1ZJZTxDJjZgdWBDJTUjTVcwMlJfaCRmPylJMzghRlh4
SmQjMHI3bmkocioxCnplbFJ3bntWU01fO0FDd2t6OEtVez19US1FKC1Ce2s5Zz5FRnFQWmM1JXNP
RTZsfEA4cDx8JV9adUtqTSZFTE5Pawp6RTQ1XnhLZUVJeTFvZ2ZnNjRuPiRMfHsqPTZibjY4QDko
eXJjNGB3NT0rcTJhKyRgRkg3Xjs4KndpWE9LQjNWZyYKekRZZ0s2al5QJndsdmpPemZtVFFiTGsp
O0hfWWRzKGglPztjZW4qek1MfCg9d1lwIWRgZFlpaTxRVGJKPUxiVDhYCnpxfHtlUU5CZHxOQVcj
a2U+dCl1TiRpIVdJUHU/cnhjPkE3RDN3eXhNYUJsYl9vVEl4fXIzOEtDMW5QbChYS0QmJQp6MEk4
ZF4hWSpCPWBzM2JZSGQ1JUt6MGUkWlRHWVlWVCVISjVeNlkoI3FKQVRJME07JVBRPXowV3Q/UFJU
PzA1fCkKemJ7RkJZPiU4LWxUI2w7I3RUSXY5KVZkQkpNMHgjbU8maG1WKkRnViZ4TSl7N0RRTWsk
UkhVPFI/PHxEUGJqPEN2CnpMLW5HZCZ3eiZ4TjtNR3FGPF9WcE8way19Xnp9K2NyS3tEQio2UDlB
YWRAdHwhNV97JEcpbyV6YmV5OV50fSFDJQp6Nil5aHRFX0g+UWFLWE5jWSs2SmhMKXFXdUp3TWQ2
Uz1lUFpDdXhwV2RQUV8pZ0syUHUrSSFSUWlsanZgS0gwdmgKemYxdTRnK3RxPU9lM2M+Q2FycjR4
Z2ZaaHRJUWRlSHdmfFpBT1QocG8+ZnRYcndDfHxHdEdiT1k0SFNDcHh0cDc7CnpJWEZsamlWNEJo
b0RTaCE+Wj9GKzx1OTkyWnF2fDIoc1Beb1hac1lBK3d0eDNnRCY+VnM0OV5tMSlqa1lOYFNAUwp6
eF9SWGo1fFo8SChWdUhsXyFXOSp3dk1xekp5KUl6cjt3Nz9QLStpWGg0O2FkTW1oZ2BycCsjOTlv
UmlPMUkrcWIKelNzSjwobTU2ITFtS3A2NS1BajV0SkxWUWEwZn0+Nyl9WFNzaGtrU04yNXFHRnYx
NyMtfE5UUWg/aCVVUlohSiVvCnp3WCpHQ0omeWRNN1ojQDV2SDx1Mio5VzIqY0UpPCg0WWUxUHJB
JiUpeGttTUFoVHVMYVRXZkx7O1NqZStrfDJzOQp6Q2NwZng1TitCKmcremEyNGkoWTQyZFMhOzsq
dipTQ3dNaColUmUjO0Y+K2lId0diR3g3VEUycVlKKTheVjFReH4Kek44cS0/VkU+bz9uP0ctNE1u
Tl5KRSFyTnspfEtRN2o1OV5UTX1OMWVCWTd+Kk0mQHtPcEQxKkglTFlYQFZYNlZBCnprNkZXfFJ+
dGt6KTdaRHh6fExOaDB9PypOLTNOWGJTUWxkcVpUUDh9bzRYfFg8dmB3JE9NSGEzMEhlRkhKNGEk
Kwp6RClVR3JCcGJ7UXltVnV7PGZnemMtUDU1RTR3TW4laGUtSTNNWkI7aSEjQFhte2R+SW9UI0Zz
JDZoODZ4YzIpSl4KelFhYE1sOVk5b05OSD5SOVFnSjtwKzk7SEA7USN2VFJCdyt5Qm5wWE1JSGJf
Tz1fSWM7Y0ZDSDxiYEM/RmxEYVh4CnpvS1o/eUdzR24qa1dudDE+YTM5UDhrKWFrWmxzclFyOzNQ
SE1KcVFQZV4xKnx3OEUoI2ZQaWRVWWpZWVBDKikoMQp6bVQ7TGtMaTkyR2Y/MSolbiEzZiVkYE0x
ZlN9M3xzJSZnQWx0Wkx5eCg1Mm5AOUB9TDUqTmR5eTNLUDZWMVB3VXQKejQ/WVhBM0IzUVhJUmBe
Sz02WiFCM2YtPmhnVSU9WVVwSE9aSFVOaSR7YDtmU3V1KS14b1Q7fndaNUUtVyRrZHhtCno3fiNg
bEF9aUVkKmMxJndVbHZfdDBTXyUyYz9lM05pJjBySmZAbFdAcDVBVGZYTzBJTlVFXnF9VkpORCFS
R2lOdgp6bmwobF8lWGlHJSsrI2E1TEZ7KTtMd3U9R1VURkRiKCZubG5uT1ZLWlhCJmpPZSFSI1RW
QHU3UCpMM2hfZ0lGS1oKemZUdS0oNXYwZkZ3MkJXOGxPamEtLU8pN1BFdV9kSThWeVdybzRqZ35V
eVAhajw2O1orKmN0bWVSdjx6Sk53XmteCnpZMX1QSjFFdk92WUdCfHZtbktYVyU1c28jeWBWcFZF
cUpOLUozZFdVUGxkZEVjI0ckJlohVW8jYm50QE82KH5hVQp6UDt5PFRaZjFFZ1dtbHhZd1E2PTxz
VSM2UzUqLW43X0xCPCQxaG5RMnR1d3JFYkN0SSthK3t2SiFUOHBTZUhacmYKekhePEl1LU0wZEZ7
TGFZMkxIJEAxMmpVYms8TyleRmo/e2lnO3RSfD9eUGM3UENLWll2KzJYbjtmV3RYKStBdk5iCnpL
SztxJHk/dXpUQW8rfmMqPWUmbz8tclJ5K30lIXE4b3VFZEp+TEJQT3NeTko+eUJOKyoqK2t5bTQ3
cjVyflhyeAp6bWYzRTVOJC0jJjtgdzkrZ1h5bVQtfTh4ITg4aHY8QC1pWUtNK1l3OGBeZHQkI2ot
bm5QSHdfb3dWUVllRUtyQEYKejFDY0FBOC1VQlFOTTJmRXlsPkJpP0JVXlJOaVF0NDsmRUl4M2R3
UXVoR3FvO204K05QK0l4NmlYQnBQZGd0RWh5Cnp1KkJXYTBYSERpRjxhK1RUfnwlNGkoSkpWdnwh
OCU5PXFNNkV8WjE4bm05VSYyVl82MCo3TUhKckZqdWZXfD1Lfgp6MWxuZkZ1a0FkU0o7clpIckYr
NWpYTSZyQ3hUK3BJQEVDOWFKbCt7akFFI2BlZjg3angoZ19VcmYjQiMwZTNoIVcKemVjVEY8PHJI
VHwxfXdSfGtPZV9aNj8lI0xmeUtafGFgfms2cTc5TlR7TiZHT1YhUEZBd3ZYanA8IVRXaG1QYmJi
CnojJHBkOFp6WUA9LVUtPlY/emAkSygwOGIhQkcjI04hRm94SlVtWDw1N0NnIWlse04jUzYjI3w/
a3k1PmZqfiR3Kwp6eiNgMDE2P2EhRHhRIVdDeWxvWn1rIUIhKk0lKHkxKnE9SWluSCF9ISRoaktn
VDEyUyZ4dXVTaEYjTmxKcjBGLWcKenRieHtQNUU4MEZQNnF7YnVFPGQhbSFJalpGJXlNdEpYOUx0
UkF4TkFeTjVFX0F1fllFOH5oP1ZWcEI5Y0Q3JW4rCno1RXFKUXYrdmtAJGtiODU+LXArOVhCSVBm
eEhRR1JFdlZ+fWt0QSR2bUNMbDdOQkdSXntIZz04TnNAKHxRQ0VAaAp6UU9NU2JPUHAxYXU2MnFT
Yjsxc01ldXk0UEopVjkhQDgoQjBoWHlhJXhCTEZYWCFNK3lmOT1HfHYzfnhRNFVuI0QKej1QWmA5
O2F3QGo1Kz0oSU8lRDxlWSYxUFVFUiRMMDZAbFledGBkbGZ7Vi0pT0pmdjVBNEF+eWQwVVlxXk5A
KjsjCnojNWRkdnlRXll4SSQ+Rj40dzlUMXomeD1SS1FfczteNmszfTtiRTFLUFZlYzJgO0ppRUN7
U0crS3d2SUNqd3lMbgp6RjdDdzlabFJTa3VmMz1MX2FHI00yWWlGMylBSyMxT3E0UWR7X2RWbldu
PTB5cj9iTVM7Klg9ZyV1M1o3YTN+QXcKej5FU08hV2x4YytmWVMxcSUlU2BTUjR1MTNeZ2R2KHlt
OVEybmIyQTZfbio/RW0qbW0rOSVXKG55KypQMV58KSgyCnp1Wnohe19uc3c/d2BpdyhVcExTUnYx
RnMmPlNOR25PTCg1YGtlNHNiUCVfJTxVKEJRcWNUKHtxe3lgIVFSX2w0Nwp6YDl3Yz8yYiVhTHdX
KTwjb2NlRW1fTmw4c2BzfEQpXl9pYnRmZjBfWlhXZ3EkNT9Bbno9QHA+LT5oanp+IzNATFQKekAz
eDNpN2RrZCQwKnplNmM5PiN9cj5rJSg7VTAhMXtzcyFeNWFaaE9WYml1UC0zIXIjTiY2JCNNZ297
Tzt1TS1oCno5emFTOWhHVUYmJX4oYSlLNk9LXklUOUFjTjMkTk5kWFd7bVApQjg2PSt1QHsqPThy
YnA9K21BWThyN0Y5V0N+RQp6T3dFdX57R1V1WW8zJDQ/S1V+b2k3MCQ+S0RzZH5RJi1gbV5hdyVg
aVdXI29TTER5a3EzIzUmOShedSo4X0UrbWcKekEhQVF9e2o2fVc5JUlJOEQreStod0B4KDlqfTNy
fmZVLWR3TiluUWFzPTc/SyM4WEEwNDBwbittYXhuPHRVRUxJCnp0eDhRfHB2RTMpbzRYaFB0ZFZp
ODR2QXl+bzFFUFJ5dGFPQ2tCe0A4VUtSI1AqWlk3fHRCVzglYlFYT1o5aUQkPgp6OWBVeExSelU+
PndXZERQJDUtekVyTVBORnlvNmp+dTdedF8oTTN8SnRnczY5Uil4SWIxM2BNYSY9SU4xKzNTb2wK
ekJoMWJoWFk2Mi05NHNPQjxRaSNORHE1VnFeV3paQyt0UiFnd0M9TzY7PVFMcVV1UEpobGB3T1Z7
Y2hwVHhgUDstCnpxPmUyT3xBaXNXU3RWZE5gUXtJcnheUkt1QThZSV48IyFEKXUwQWZPeVdzI2kq
IzUwPlEmVHhYNDEyT0ZRNUlUJQp6ZGY5YDgrPzwjQW1zMlA8LVdPbn42TCghQWFrIU5OfDhxQ3FR
Y1heRXcqal9HcXN6RUIxfmspe3g+UHk+eUM+JjkKej14bCZARmdSbHdOKzYkQmV9X3h6X01MYD9U
SDRHOU1GYzV6IypLR3xoX2wmWlV7YD8ydjhuMn4qe0BuO2dpJDckCnpgSElMI0lQIX53a341eipu
P1g7bXlgR3xAYW9vX2ArOyEhfVFrIXBKZEkrSk5qcS1mbzc+Uk0/bzB2SDVQSGMzWQp6eCVNRiVB
WEw7aUpWYCNeTj9pUzYpYzNkKkklQm1QVld4JTxtLUp3P2JOUzsjIThTcCtKPFlXcjV6Z0Y0VGg3
Vy0KemN7NHJkM3V5dndAPyNpQj55YGgpOH44b1FnVWFRPjhibGhncVh+MGtKS0BlMSpDbFI9V3d5
dlhsRCNsK2QxViNiCno0X0FSIXZ+dUFGQ1M/cjFzLSgjRnFgWFEjYWJkT2M8YVZmJUUlYnVHRi19
P3Zvb2J9d2htdmkqYFBiLWhsdylSLQp6aEpZQzdIbDAmMSlyUD1FaTF1ZDg8XmQwcndIK0NpQURH
Xk1ObFhQY3dYbXImJSoteWRUWCh0VUJGMnUpbiEqcioKemdvVCpDYSghOWRHaGI7UzFHdXA1WHgj
T0plIy1oYHEmU3IySE4hTzIpT2dQT1k2dU1hKi1Hd09kcmclfEd7cE9fCnp5cnhXSXpucyUkdjds
YmRDeGBfKTBafldiPWRJQX5zdzlPYFg3P1YzWHA+ei1hbUYzdzF2Q0VVYjIrJGhZQ1ZYSAp6YU9Y
MG1hR3QkeEB8ent1aWx8QFN1fng7cDgwNlNxMm57TCtafXFDIShOI0E8aUJXKHRrO0ZXZmdYMnx+
MGs/XzUKencpfmFXe3NOV3IlfVQ0ckpvdlFfNXg+UkxQOSN3PTVTbXViVDxGJGY+VUZ3cTRgOW13
M2p+ZGY2ZnRgTnt6VnQ9Cnp5WHJEQGJLaX54NXcyYTRDY3tvfDt1NUghZVRYOTRlZTxZSVJ4cytJ
bG0mc0w4JlMrNlJjV3B0UXlIbFdsNml2OAp6Mm5AJE9qTzMweTAhejE/K3xgMl9PUkxfeGw2R2Vn
TlotJVJXNitfaWdfWT1COTFBbGFlTGojKVdXdlZ8WXJncGUKempJJGA/aSF0a3ZMY3w8dUVVPEM9
RVh1Nm5kQkZUckdYN2NfOHxCZzJJaV5ZQU1+OXJjS0IyNSNKeWV2JlMqc2FyCnpEbnsqakEzcGhH
SzxoRXxYUWBoS0h0SCZ9YG1WfENTPjVUaz1AQllveHF2aFNJbEJzPFIodlQxKFJ2SkVASn07YQp6
YkFuMUhaQWhWeU1sYEljKEdQeV5sfiNAaztTRWdGdmdMM3d1b3tVckQ+JjMyQjVvZmFKYiV8O2wp
PGlDZXtMU1kKenheY19FVD9QP3cjaDkxbEVtfjNfPGBrLVRYdytUVCVpaiolU0tHS0tlT3dEMzw9
WFMmKl4mPEVIXkh5TDNQXitgCnoyJGhzQmRpRTtVbkNmVnJ1Tj1XVWQ9eFNCSkJSYzhjSFhKaVU8
dUgqUTNHZD4jX0E7dzhNUHpVb3tkbyEzMX42Ugp6SiNMUy1SUjJgLURvTnZsVHJaa2o7MXw5QHI7
OzRQJWZwMnJTISpoa0FHT1c0eUQtQF8xaj99WGshYz9QcChmTXQKek1OUmNYQCtnJm84ezdAVXkk
LTUxOVcxIXJOajBkVkE2b0V8IVZMKVEqOWhIbEFqNmZfPEc1ZzBPMjJYQiR3SHdRCnoremZBKDk+
WTZnJWdodHo/fVlhOE9NPElRIVRNbktSP3ZTJElKR1NuXndJS00tV1QyeklFbU5UWkp2aiNwWk9p
LQp6KVlCaFF1MnNITWl2KXAxX0tQNmRtfDVNaF9Rcmo7MnVecWIrY250XmwyaiE/cyhhTyk9Tnw0
WEtsV3F3bX1LKnoKemBtVFM3Jk0kTUJFYjBPXmZOU2s8dkZubSNSNlcqZCVlUHxEV3g1UzZCeVBo
bWx7ZiZBNkM8OCVMOFdxfEdkXjF6CnopOTNkfjtHQiY7eGQpbWhxMEhVY3VmRyF+UW1zM0Niaiha
JXBmb2NeU01wc2A5P3t4MkZxP1dBSW9kJSlKa29DMQp6RDYwSW8xbigqRjVlfEA+dTNPZ0VBTX5s
K2xDUSMlVFd1Tl9veyVhYGpQcG43PW9OMkFoJHBuIXozUWMhQzdBe0kKelZZZG53Sj09JDRKPmJk
bVl1O3ZLPUlYIVhgQyEkVmttYnhRRnVoUjY7JTBsTjUlUTB0XjNoajJ6PjxAYjxpSW0qCnp1Ukcj
JTVRTkckJlVVSz1DS2p1PGN7KmwzI01oenI5T3M+RlprfWBaczNqJG09WUIqM2pkVUd1eVpkOW51
RjVqUwp6JjFCcXBRRTVYeU19a2xxV1pKPDlePVcwO2VybChDYnclV2N1OGdVYGwzMEB7X29fez96
bV5HWWlkJXVIdFpEQWAKemR8c0pAbEpjeWU7U3UxIWMtJXRGX0s8JDY/YmVKPHB6dkFzcTcxZnJM
Tyl5MmR1b2xKQHdwNjNvNUdISGQkcklrCnp6PExXcVUwR0FfTCpoM2o+JUExMTl1ZnMzKnJAQn5M
dHRpOVVuayFmbj51OUpWPlc7NkRgTjV1ZiEyWncoSGM9NAp6SCY2c0tteUtOeEotNC00WUZudWEy
YTF3NVUkazhqVzx4R0lBYzUmYGJrZDs5PjY1YnYtWmRkWilIbG13YVFlVVUKejFKMlB5YEJYPXND
PUg4I2dBcCVta2I2cEhVVGBNQ2RVSz9kcDtiVT8qTlNiKXcjbFgjZWtrUU1UKnMmcU5CJnljCnpI
JTY+dipodyR4Pz8+RVJ2Skt4b1daJighRzVeZjJXPldYNkA3WVpPa2MpZkEpfSVPbSZRIU1nQVMj
JXhRa1MrYQp6JWs1Pz5kR2FxRVB4KXBnP35UOUImMjR9Vk1TP2BOJFZqPyVyX3JGQyYlKD0wQ1FX
PCQjVz1sbm5UcnM7WFlIej0Kem45ZTJ+cHBWQFRwTyZNfUpwWX5eIUNifCtiWjF9TENLI045JXdf
dTleTyhVKDNEZEVKMks1P285IV53S0FtSUB6Cno0TzUxNWF2PGg4cFNzOXU2d1NQWTVrKyhIMzlL
Xk02fXhYJDBOXnVvPGNpVChhb3VhKHlhSGl7cSZ1VnRSeytJdQp6SSFUe21KfF4yMyVTUm94eHs9
YSNRYmRKbGIwYHhrOWJYbXx2cCt2ZjRvJDZldGIhTlAqYm1ZRTBXVWgtR2g7PmgKemVKe3YoKXUq
ejNtO3tIM0N7eXk1OSkqe28wR0JAJGF7PUx6UFVwUGZfVTtqbWRJWWhxSEJMY05fbkApQTs7dUF9
Cno2O2FzWVRZZHRaKyN2fHVZYUVXOFMwLTM4KCUreU9MdmcoQS1uZ3JnRWVaODdGdUFPbXdudlFl
SVhGclNvelE2Mgp6ailpY3JoKWgrfkEob2dVXk95aGxAMVBhfUw0KFVtWXBIbEEpSGVVUCp0KHJs
M287ZFk0U3pSPlBpentPOCEycD0KekB0ZkJJYj1ueVRRaCVLfCFyV0Y+Uj42MFkxbjNkYSZnK0JY
TnFPWGpKcCZ1YmNVfFR0Xz5LfCQ8LWt9V2pjY2ImCnopMyN6Jj1oZy16R1BycWE0VFhFZkowfUl7
bDlMby1rbHktNmRRNkBrP2ZUZUBxbGFfIUotR2g1amY0SSNrfGdgagp6byNHYyQmSkVmez4xeXtg
dHUwTzYreXxKYVB3R2I7RVp6WG1ALXdodylkM1NPUX1qbz53RU51OWsrP1ZIeUdmKkkKek5QU3Mp
Wk5xK2g2TGtIWXg0JHMyb3M8TWBUa2NnP2N8MzJfJnBLSWklPHBpdTw3SiVORHVkWX1iQC0hKE1O
PioqCnomZk8xIVNWP3lsQWBpZV5sOEhrUTg4d2ZkU09WVXdTNzJgbHNMcnc8STBIPEpuOCR7K2Am
aXQ8WC1JLXpRc0stfgp6emxaP3IzY0xSNkhsSEFpbUFLJGwkU2JYPExjU2lPZT99LX0mVGlkezJg
cWA5citGaDxST2UxUGdKbUlSISU2QEcKelI1NjU2PEZgeEpCUTlvemMzQXQqbyYpZSVmMWdDe2Rg
VUgybVRyUClVe2JGV2p7bEd3d1ArNG0pJXk8WjZTTChkCnpXVHFnKCQ8fWNPR3FPbzteOCh9Njxf
cTNSKDE8cTZHNURmZ2pYe2x3bkJDOzYqJFpael92XiRgUnA4Izc+TiVxYAp6Knp3cCg3Q1gzc3U8
S0ZMMDl+dVp8TSg0PXNhNT1xdVZYOEU0bEtELVJ9cmdxMTMlc1dkdXpCR3spdnJROWgycz8Kekly
bE5DPnAkJXxjOGlEOzgoTnhXMj5+emtYPnlpU1ZDPmhwYHxVMl9uMEEyME5sb05QdDAjWGRaSlR2
Kzw3akZPCnpeYFBtJUBVZVR1I1pEfD5xVC1FLU4tR1gzIUBGJkJ6fmtjUSV+MCM0T2RVTj9vcl5o
Rl8kaV9MYF8hUzxKMVkpOAp6JGhTMUdGbGVBcVBSSVYwK2Ioe0x6QChrQ0RRdnVHKko7OTg7NE1X
YkM8JCZVQSsqdlRDMGYwZlFoeD52czQlN1UKenZ4RHJYcmQyck5rKDlFIz5eKU1GbUhIWjI5bEZj
OCpvb31qOF5mbW1JKk5oQWdUa2w5WHVCUiM5JDIrQ1l+ZUIhCno2SnVHPXFgKTw1aWJ+X2dlbGp0
I1JMRWBHZmdeOGZKPmpNKjFebXdCdnB7a2teMDhPPXJ5eFVZZTFQWnpCPEZoXgp6IU9iTDlVMihC
fjN3Wng3WkwoJU0/PEcpVGF1WGVRVjg0amFfRGQ+WmVafEpNN2pMPUYyKlVsYiZ6Sm0wTDU+c2EK
emNOSVRsPzslcD9mUnNlTS1YRWVXMFBeSEEtSyhgcjJkem1EZHxuOUdWWmtZKnJHSmpsdyNURzBX
bkFRQUwhYmxICno/THFnTWVzaHhoKl8tNUNibDIoaHRAfEY+PGl1czJYd0czVWQ/ZFdWO31OR2Nu
PUc3JDttM2R3d21weGVWcWBIZQp6WXtFZz40Qy1oXjtoSXZmSClBeHgmNGIoMl9SPi1YXn0/aSpT
YGk9Zj9APjNhe2RaMUFmaU1PRmtMQHhQJFVtdyUKejxZd0FIRUVATD4xc0A3dT1vd1U3PmFsdSNk
MVpMVk5hTTtJe2FfQWwtdz5xc2d7ejdxZlJ7V0VWUm4rMyhjWEpoCnptLWZ4ZUBWJnxXJV9+e05w
I140PS19K1FgQWZHaVcjQyNzUW1DJUBwZjFZcjdNeG5eXmY8alpfPUtBNT9HQ3FGdwp6VHlAVntw
PVBWLXlfKkp+UT0pXzRqfipQWDhjPjFUenl4TWMjJkFodjxvJEdHNnI1ZEdofWM4cyojUGdUNWRC
JiUKekhlc09zRi10eUZqcm97YiMtZzF4U2Bqc1FHM19qT080RkJQSzg9PT9GN013UVZRcmx1KXJx
NmIpKm44RitoWU5ACnpmNGluQGtlWlg0V0hSczBffGBlaEgxfiUlNDw5bSo4OWcycGMjeSRaUWtn
Q202ZjhmcyMpOH10O1RxO35Wc0JaUgp6X3wyUUAhIVVkeUpyVUZVcWtIVVVoWFZPTlV2Uz88eHZe
Sm9hT2h+U0E2KnZmVj5uQiZ6ZGVkazM4V1k1cjVIUmAKekx4fGBsalMhTyhwa2VxMlMqaD1kUjNZ
fSooJSN4MFZQdFBAX144SmUrNmUzUSVucD1pOW0jem00VlM3MDIxP2tRCnpUXmU5OXU5TmFrTUIq
cz1mYkR+RU1mKjMqam1se0JJK3FpNyhXMTskXmc7RjRKX2I8fXN9O2l4IXpXQUc5IWQ3Iwp6ZSQw
ZXF1ZWAhWVpNaVZhcFM8Zi0oV3IoZWI2JUomMiRwUU9XZWolSzw3Qj5MZilMbGo2QDBjNitwK25r
N28kP2MKejVlLV4kJWlRJFdhP2ZrfTFUIV9HVTRjUnZrdXh8XkBBMCRnaVpMSl5TR3RfR0wja1Vh
NGJBY1VhMikkKChYeUV7CnpZdU1Jc1puUnhLfEtXXnxnfSY2fGVGPC1kWHY0Rzt7akxOZllUVzQx
eiVrZW9BMXIjNXBsN0gqWjA7bFY/YTxKawp6VyRxK04zITtMQ2NHViEoXi1IP0NiP09sKVBgZmlg
KmM8SD1vQSRgTCFjJWpFK2Z8e3ZzKXg8WEJTemxhJEtxVlIKejJpKWFIX2J0N0szemJTcDNOPk0l
ZnhXakdWTD5jViMlTXYkb3N3T3JWekU4YDM8K1d8IU9aK3lnfGNeckdFbEFOCnp0UHl6SVVhSDhK
dDspMSo2KUNWdz8hR0YhNUt2WnpFIzc3SHF3eko/I0YjWGxPXmpgPSlPbldWcHIoQ31zUXAkZwp6
VSs+RUNvSjFfY2JNYCZjI2gqeCFDcGJDVXRuSSMmclMtbkFKZyNwI1pGbChhK1Fpcnphe2g0RmF6
JChLX2JBfjIKenhDd0ZPcyZgSlIkT3N0K29FbHZ5cGNzIz81blpTbyZiNXVMRndOOTBuOyUoYSQp
REFPJkZuRG5vRmJCQnlnNXBCCnprMEoycGlOMTVrPXB7fk5CN1BrKlE5JGsqN2s2QzdkZH5HKXZq
Rzk9QmskbHthXi0xM1pEOzVGRDBpLVhSKD16cAp6WnRCPStBfGgpezxORi0zMitlQG4xNFhxdCNS
blRgb3lIRkI+PUc1bWhzcTUpa1FLIT8jMU9STERwPyE8VD13QCQKeiVBPkRRUzZzSWVRNlRyJmsk
NWtTNHlEN2ROcDQtKVZheCl3TXRYXnc2cy1LamU5NTc8eHt+WT5RVUxgbyU0eDZvCnpgU1RsTDNR
RWlnOW8+YjxgQnZSRntEbSpibFRAZmVRUiYlQUgxaFRaSElYe0w7SURVPWVZME1TJEpDMSooQzwo
JQp6ODYkcURXKFkzJDtSUWY3PU9+WjwmR2FBIVUlb285LU5CYHVLek83QCZwbnVCWkIhTXYhbGV2
JE8rM1EpWXtzIXgKemZkXntiandfdEM2JC1tQCl7UjAtZV81K2BYVHFUczB6MWx3Oysmak1QRmF0
KE9Se3BvSnckPz1FRmorSGx0aDllCnpuekB2alRlPEApMWU2bTdMUCtQWmRDK2loPUEtSkpBKWxt
MWxlZDBhJiY7bj5DWkpGPXNkaEtGSFQxcmskXykzPAp6Wmk/cHZCOTFHP2VyVEpuQkMhSChqO2NJ
WENSeERJdEVGfk5xKnNAY2tZekB6YFkpUGlsPVEtRSlBNDU1YDZhSFUKej8oS0tKUExrc21HUk9D
eiF1WCY9KG1TODxQbXIza0QwdD8oJE1XQVkmfFdeVyVYJEswLUE8X31UYTtYYSpFP349CnpiTSFv
VT0tWkFfPTFxZGtlbWlXJEstZ0t9WWpwbz9DKnVqRkREbk49PU98fjhuakR0Uz9kQjsqTWRLdTg+
S0N+dwp6ciV9fTIydn1Nb2tRSmhDUEZ7SCh7Mk1zbk8lPWlCQ1B9TTsqRkY4MD9wNyU4MWBjVHND
eVB2ZC1DdGh6eDYrUCoKejZDUmUhdyhyZGJCUTxpQ0JkWn1CWHF3VVRsQXRBVXtoKiVGdXtgcH4/
SWBpZ1NaMXMtTENiTno5Q0l8cXF8emYjCnpVKF5gMXtGek85QG9YfkF6JHcjMSZ7QFBaZmlKXlpp
KlA5NSoySjxOVHh2OWgyOX00WD9LOHZjbClMZEdOdTFKLQp6XjJiVUdlb3lMUVRnQFVpNG9lJnpj
UiEhWikjI3FOTzAqdW9IKkZoPlkxN1h9cT9VJTV6citrNGR1OVVQJmhmMX4Kej9rT1ZgYUZPeFcq
dE5PRyQzU2tYdzNldlhDK1U+TyNUeHl5YHp1OS1aUWZ0MUVQd153WFFmcGVyMWhqa2JnRUVvCnpx
NDU5cTN6PiRwNzNhdERobDw7SSQ3P2E1Tjh9USMhKyp7VTgrWUlqNCg8MDNqN3ZtbylYI3JMVXZK
NEdoNmhUZQp6bmh7JEFPI3FPWl5GfUJqJnJkMUQ8JkhsZ0ZqfUF+QjxweiZLPShsIyNrSEtSIT5W
aUdnS0FiTndZNzZke19YJXYKelklaTxAXz9MSSpLMVJBQVNiOyljPXN9a2w1UXlFMiFhXnN8PEY1
fldPNjQyQ2hTXlQkQVlkQ1hmMWMrRER6THh5CnozZVduTFd5Rm05MVp1eTleKzdPalVhd3RDXy1T
Mip6Xjx0PSlRejRiTn00KTlnNyY3MXVhaiVGWDM7SlFwQWh7dgp6bUdwNWZkemYySWEpUT85VnQ7
I3M0QipvMmh0Zk54ci1ReiYqeXptUlRQZjFtT3xHJURYUjJrXjc5Xl9UaVhgfWsKem1sIy1AKUl5
OHxJeEsmRVc9NjtDJk87OWNYTzJQd2ojb2ohKXhDaGtNRzBSKzcpaTtPdkE+TXVGfG97dVgxQHlv
CnpDMHlnJmNUZ34kI3NQUXl0aEVrV1A8aSEkRXdDYjclRGdKbGF7aiZFQjwqfVFjWSVyNUluVUp2
MX5MMUooTkBDSgp6MUIrQ1o7WHtzTj8wUntJYGJvdUlUV3JJOC1QUm5NNlU4dTVHY0Blb15QMUlP
NCYxYzdVbSFWeE8oe0lVMn5+UF8KejV2WFErVn1PfHVZK2B0YXRFb1QoZ05WZ2dUNElqfTJQaFV3
NEZwZ0QhVDx0RV9sOHNlZlAhMXYlO3J2PUVCSVJ5Cnp0Xl5iXk8oNUl7MEFNbFp5UjI/eUxZdjZV
ZzB6MF8kUFZGX3o7eDYoODMxMlB1SyQlSCN5d3FjWjk4RGBZYzRPegp6MENkZWo1LSU9JFhjKU5+
bEg9T2olMDNIX3Bucj9Ia19FSDA3OHMjWWdgcytEbEFvQVdfPmd1c3s7blNKTVRwUmAKejNPY2xX
MjxpYUhqaShEY1QxflF4YDRXNShDJmgzfUBDfTQwUjI5aXllJTkyQFU7Ry1xWSV+dTBVWjxoUG1z
aV5pCno2fTtSajRgY0dyYHp1e19RY0B5dT9oRURtNUVBXj1yVnB3N2xQT3d0Z2d3OzAydWJqaDVY
WFkwJWRHUT8qQ2wrOQp6VEZ2KG9qWTtTfipec082N3x9eilKc3tHNiZuQ2lwSmA7QlhhLW96TGRk
b3dhUXd2JWZEZn4yWVFpZX0pJjRDWF8Kenp0Xj1nKXVXJFdqVDJtSSMrWDA9NlJ8Tko/PWh+c3Uy
P1RLV1krIWpiQ1JVYkkoVVRjWUVCZD5ybXppaiMmelIoCnolOHswPGc0elA5a2JAJHllRH4oZHRU
b3lYaT1iKCE4PzRqZUtpe0ZZO1d0bjkjNUFKfWo3SjA+RnJgPyVHIS0mWAp6XkApQm5VcVZvYl82
I1dCUyhvYHhWTF9tcjdmPD1AUTx+Z3pTTXdgTzlCSjJ2YFV9Jig3TGooVnp0e1hvJk94amgKelJN
Nj16OHY4P3RldGRrKTZtYTRuJWBgc0lGRS1uPGlJSUU/VmBqS24tRGRvZUhzUzBsOT5+Xm45eUV+
S3BjQSUmCnpiX3kwQyU9YDhBQnd5NXVAb1A3M0p8O0hOZDF3bGFzLUc/PSFMZENYUXFVMGQjODt2
LUIwMUR6ZXFKaHN7a3N3aAp6Pj8oODdnVTt4Zj43M0s8ZWx9NTc8RlFEe3Y8R2UpVE1aSntUdyol
cXtYSFBVTXFxIUA9Y2Vuezdicn17STQke2kKejZ8U2dTZEBWfXpaRFU5YzM7Tzx2O01jVVE7Mlgl
M0tkfWlxdTt2eTUyaWIyK2tWfn0mX3ZnYnlzK1ZrPXt3Q1RoCnp7QU9gO1NPVDB+NWI0KXJnPF5z
M0shRWM5XmtxKTlZQ2l6UDBSWFc0eWNxVHoybDNfYm1JLUw4Kkk5djZ7IURvQgp6azhZPG5CJHJ0
KHs4QnYtTUZ8dj1PZ0BmWjBqbGgxIyglUS1JfVFhNFAkeTM/KSp5dXR2JDdFfXU3Yk49OzJUfHcK
ejQ+MD1NbyE4LWNEWHJ0fEVqREJuQEYjI19NRjM5ZylFPClaYSE2UjExMTZkfkMzPl81RC1xM3lT
OFhqSiQha1ktCnpFMFFaYD9MJWdGITlqKExQdnY5V3IyPUJQRitVQVUtWFQtcl5WM3dQX3heNnU8
VjV9d2JRUHw1S2NIQTNBYHN5Rgp6Rlo+K1VmZDdHUzEkNylrP1laMlBQfnN2cXVBOVE+PT9tWjJ0
KFQ/SShvNGJ+XiEtYkk3RURqYXtGTD91JUckUTkKek4rRW15OHwwb3JjJn5nZHpmM3NEO09yT3pr
RHB+K1hAJiY8MV4yMTdRZnllPiFyTl9CbihPem10bilPeTE+aihTCnpZVCRKUHY1TzB3U0NJYVZm
fWxsbTUzSFdxcGp4MDxwZXFuaXtfaHVGQzw2ZSV7RjZ4dzwqQ3YxcysjVz94dU9xegp6b1NaI2x1
T3ljb1ZNRkp5IXteQHxSZD5rPyF2I19KPFV5THwyKmtmUi1DQXdkY35kZUxfV00tTXkqV08pIXZQ
Z0UKekM1OXlVSS1DXyphOVFwPzx1P0t7b348XnN2MUVGOz4oJWA5KWVHY1BAYF82NilEfDYoMyNk
U1o0Zl5wYGV+THRaCnpIdj1pPkZQd3E9NHNRMGpfMjVKTFZgeTw/NH5qTStIdjNDRTsmO29GI0o1
S3ZAMEQtUDx7aDRAYDU/MjhafHA4YQp6OEs3OFRJfWtBY1p6QWd6MHwwUkQ/ak5sXkJJMWZ9WSVv
UnR3OFJtM01HUTxVQD03NXJIams/UHdfVDVxcDhgMSQKei10S1hpJURXTTV3SzA3ODF+XilyUX1M
flQwX3tAKmJVRWhra0pvTkJnJUBTKGBqfGwyd3sreXNMP3RpRFUqNjdaCnpIcWloc2dPSVVAVCk5
Q2t5Kk9FSG1uIW1heWpeRHlUNUF+OGtoK21aVDJ5Wm44VHxBdXlZaEdEU2dJWk1eNUhHXgp6JDBS
dkR2d0xhNDghMS1DSCsoWkxMQXNZRz9TV0ZiJWNmWGk2N184NEV9QWVkdXNYVSR4cGFOfD5edHRA
dk1+MG0KejhXQV5OUmxyflc2b3ZZRGgybnFNejVpUkFLKjR+MllyfXMpWVE5fVg7QWBzYD9HaSoq
dERvVCFyTWZ4amVPS3UyCno7QjczSVBqOFFUISZKbUVBNDxsc0lRNSN7OXFKST40O3Jlfl5TMzdI
SDd7bGNWJkU9TUZjc3pWbTdvQW5FTzs2Uwp6TURqb0c/LURyeTAwd18hVXczWWFYPG5zJmp2WlBF
JFZISUUhP15WY0UtSF4jSj9mXyEqMFQoVkxWUTBlVnRSbUUKejF5RkhIK34oI1IhfD49c1Q8VCNk
PVVmJU9VfEJ4I3lKJSFPNWpiT3ZnPiFgb0JFVTZEO0FXTytueX09RkBrQHpHCnp6Sj1ZPiUtSjhp
UnZ6ZDVWUFo2ISh2M3VFI0lvV0hAdFFiVnUpamJ+PUQ1bUxlUU5tLXNAZ2Z9XkFrKH5oN0N2bgp6
cyo8cWVaJmBzfUFCMURBaExSUX5HV205LXZ4YDBGUWtVV3YtZlc2MFRaOX0he0VaI3M/bytLI0Ne
SFRmfDFIVDcKejlveEd4bjFJNkBhOF8rZTcoYmU3WFNnTj56ejt0UEdXck0/SCVxV0pSJU1sU0lv
R15yO3h6O1M5TiRFWFB+REMoCnpsd35GczleZEFHYj94YEchQEd0eElLMG1fQXVtQEwoRDFaOSok
bCZ2e3x1emtFOGNvYHZLNzV6aUROQHVSR0BzMgp6JCVxRTJXLTZYUW5AQ1dBOHN9JihNfXpHOGM5
RWRFYiRjRH5yMlhvayR6Smt4LUwkNkxwTCtkKnNPQ1Q2cXoxWVcKekZqeVpOWUF8aWFXMHdpYFFw
cDVDODxYZi0jd1oxeTxuRzxwc0EoTWYzZk1GaUF3QGhEWSU4LUpTYFFCWjF2UXp3CnpOendrcD9o
ZERMMj12Vn43aVpuIU8mampUWmNrUkliU3VvQWp0IX1lWE5jbWgqU2JlRC14KUFLe01hNGUrYWg7
Swp6NF42aXUwNlZ+T2FzTiM4OTM4eX5De347WjFkeyE/KUJfdj16fV4wMV9mUFM2QEFBPWFVLUQm
LXtATUhnb1FadCoKelhUU2M7cihYRSgzLTlLcWUpZyV9YFJUMUkrdypSKy1gWHp3dlI7M1pTNn0/
PDFBRiE1e15PIT0tMUV8Pl9+Wn0mCnokSHstPHJNR1U9NzJpSUE4P1ctQmNXS1luLSFpMnFTV355
VV9TdnFveDdvZGE0PzVVR2d5VDs0KEZAMWswPGx4fgp6YyZ9VlhDOXJaO0J8dz9aPFlwKEBNRE5W
PnktJksmP3U3REZmOSRQS3tPJHw/KS1WM2dDbSE+ZGtObV9OME5gSWIKejU/WTFUSElrZW5RSH1n
RitTdlg7bVJ3VillNnppNnFROyF0ckFmVD8pOWdtZm9KajsrPHxWUVV5ZWBoX3BAQ1l0Cnoze0k8
ZWRjN1AqYzdnfEVaciQlJjlrMUh8OUJDVClucHBnejgldSpCa0pNVV9LdWJ+az9tMG4zajZ6P3RY
SmlBQQp6biolcXghNipXaVphI2U4QDhEU05RYnl3eVU/dmJXeC1eTWB1enluKlkjTXJqc0J3dGZU
PUJoX0dgT1ZeLSFNX3YKent+WlNqeXhzSjJlMlNDbygqMVBiVkRhNVRZRChFNGxkT25sITQ9dGBX
WTdlWjImIVRgUVpvLTx0anp7eGBJY3pvCnpGWSQkKiRYN35qO356dWZAUzdnX25FX2FsXkshMCtE
flByQ2ZVJElRVStaVyM1PVFrR1hFTXU0PSQwZi0xenwmcAp6UkNsSG11IUQ4YDhsbzN5KV9nUjZE
T1cjQjJMfDU1MjcrWkdWamBLMUhBQnpeNmlhXjdNaUNxODRXTyRVM3krPj4KelRQOTx2LS0qWEsh
RDUweTRhMW4leTApfTApSElUYVoxS0NgXz5+eHFPbV8ze0MrdE1qMz0lWCVIUClKSEUtekxrCno9
RjRaR1FlZDFLWmgqdmlnTnpLNHdqRz8/SGp7VmpXVyUtSGNIPUlIdE4ycCQ/XjFPN080SjMrP0hm
TXg7N2t2Jgp6IzVDV0RXI0xWWG9yZGFUKiRQbjJpRGFieF5PVmR3R2ctbERsM19TaHRCNzhWYFRL
T1g0R3dUeVVpIS18dj5ldCsKemE+P0Q2empwUj8pdmd1TWxieXImQlB2VztjZzM+ZjtTMDRzJGFY
Un5tfjtEd1R5eUs3MmQmLSQtMisjbmtrZnVnCnpeYDkjQ1gpc3wpaztQMWtsPXJwTyh6cU8oezB1
Z3tgZj0wYntQJXZEey0+MjtPNU1wSTctSTY9fE5NWEEkfVEmSwp6Rmh+T0l2fGZXcCtzejNoJEJx
NF5HU3Y+Y2k5Vz1oZD5QdWgpR0JtaEZzcFIjb3AoQzlIZ1Rfb2I5SVpwJkAwTyQKekluKXI4a3RZ
XityOTZoend9K2o/O2FuamdtXkl9SDdVcnUwc2djVW9BKEBaKE0pVlhZbmt1TDgkZWNmSlZHM2M8
Cno1MGo7Xk4zOyh6Qzk7SWBzIUU/UFpmPXRPITZycjtIeXROVDMrVks4dyUlP0kmajRmLWlyI2NL
O1RtS0dJSkc/fAp6aGgkNmB7Tmx9OWMmcEw2bnAwMFhyRldkWT87Uj9MdHkyRE1YU1QyJms9RnBK
dkVIIXAqQ25SK3craUwwO2t8dCoKek1MblQqSGBWSEVASGRITEdWcXZyIXo4RTQ0NTVGeDBVNSlW
a2JMbXItanB1eClwcShqJXdCWkdGOUhMRkkjNWJKCnpldEc1TEkye3UyQVRhZnd4YnNnVjFJWiN6
Tn1KeFdoSX45TVBjTX1DUTZvT2RZRmtPJj5eIThgPURqb15RMjtIOwp6ZGIzP35GWSp7bnB1fj5E
JlBkVFZ2YG1CWWxtdnhtZTkxYlYlfisjfGxEIzJRdFZuYTMhbXo7enJ3ZntESXtSRlQKejZadzFZ
UH1AazJfd2xnRTRJWXt+KS1VPkcqbGprUXExc1M+UmFfVmR0XjQxYU0yKmhfWilhNFNGUnpwRjNq
cng3CnokSl47dGxHcXJGVl42ezkqaEszYkE4WW9+OEV0STdkPnAkMFlfJVh1dnw9MVdgOF8mSiFK
enRNd3YxRUczdmk7fgp6JCl0RjZvbH5jXlJpS3dCTEt9eDV2KHhyOVBJT3N5KnJ+Tmoka1B3Pmpy
bUR+ITBkXiZCOGgoZSopfDB3TGsxUlYKelZMRHExeT98MX1wPyhSPks7OU1OYWpgdzYhQz8qbCkx
VjNaVjZeOGs9X1dkVVpTN043bWJnRCtwSWEyJlhyNzNDCnoqNGZxb3doPUhncHpKKTBHKStKPVJu
YSlTK3k1SjYpUj9SfCRYMX5ASS07U05ONi0zNGIrMFhWKWVuUyN4P0tCRQp6ZFVBSCNEWF5VJHlG
O2ZuPGNye2gmeUpGfWBUX3hyKypDdEQ/KXFkKEp1N2QkM2RCPGpUdnhyKUspSHUmbWFKKmEKenxO
TjM/PUV6NnBsOTFwPERVU3IzM0x3YkItO2JWczwoMH5IdDRnUTs9UClHO1FtWVpDYD9SbjE4PlE5
PSM9QHFWCnptfEctT1FkKFc7VCNQdlF7YjdSTFNDVFh1OWc5UDx0SEo3MWBySX1tSV5rbCM0VE1a
QkozLThFOHB+dnIrbSNsPwp6YD0wOW11eWhXSmYkJmZrdTVIYDRaUUhncndRYndCWkVNPDJaUUhp
Wj9lNCNDa2xmckdvUmZTWmJedkdkb1BIeVAKekVLT2RVQ1ZBNlI3TShpZiYyRUdlRS01WkhzOUlH
VV5YeHlFPTN3RlYkKi07WVd7KiEre1NLWXxfIW1yNkVzRl5aCno8TEJSK25vX1E3UlRQT21lLVgt
LWJpKGdWYDhQd0l3TjhZVVZOIUkyMmRJZHhxRGchYWE8SCVDMnkxJDt1OThmUwp6R1ByQElxNzdQ
MkxiezFLUWZeRF85OGZscFBBa3sqMW5+MXhzXktBUzwwUGZLZzNIfWNvK1ApdU5peEdgamshJX0K
ekB0fiE4ZHRecUxOZERZcS0yPnJjP3pCNitmZjB2I3QpbSs3K0BwVnRibGYyNm9NdiZQXlArTXk9
STc/alNgSlc5CnorR14pOFpILVNnKV8kQnMpUzxVVDt2dTZ5ZVJMIzlWYDlRQUhjSURoQDhkZGtL
VElEaEUmfGJKUTxLJj1tenNMfQp6RDEjczBrO0EkM3ZqYVJwVjdAPHtVa2h3RFM4MGhXP15eak1w
MzZIfHMhRUBIK1o7PVZzTU5XcihhOSpeMiVNJiQKeiZATFhlQ0hUblEzQU5vWCRaKWVFXjxAQ18t
cVpxdTd6Kl5aek9HRDBRRj9YUnVYTyoyZiFWfkVmKVFnZ0F2dkt0CnorbU1SR3c5cUQ1c2l0K2ck
aGcmdFU4O15YTDBkUExKcDQwbnFzWU5yZFpuRzB0QFc0eSNta2N7M3ZXNDU/JV8xXwp6bF5HTiEx
Yyh1RiEwJXg9T1dxYyM+XiotPTJ1bjxsTGpud3xWZX1EbkN9Y2ZueGEwejNKR2kmPHA7MyFFRDlT
YlAKejBhb2spVVdaTUJLcllNNXIpPmpJdUxmQWJEOV5VeHVPKHB0KEloaUIkSDNuKGZRRjxnXzlx
YTkwbWxTKDNLWHokCnpiNWBIJjd1dko+PE9wJlRWe0goNTNGVEI2JGRnO0RXVyQzcDZTaEN5VFoj
V1ZlaEEqcTsjKTt3aiNHREoofE9WdQp6U2I0JF9ZI3BFSzFPaFBZUWNeMWU3TU8mdiMrVWFYWWwo
V3heNkhBdThYKEFVaGtzUU5Za3Y5TFU9VSVSMTYzP0IKeiV6WGhGcnhmZVEmWlpDOD9GKmZRaV8j
UiEwK29qfDx2WGp2KjUjI3cqWSplVnQmKUJUSHBeV3AhZCFGP0otfkBiCnpFb2FkfT1HTWtuJkV2
Jjsrbjc1V0s+WF8wKUpsTj5EVlJFQ3pwSTZ3TjZodmNnb3FZKHs7dXQoR1daJkU7Yzs2fAp6NGpu
S0gzb2UtQHI2Uz8jcUgramAjfHZ2Zj1AX01JPzVoRypUSmJBSiF1c21sb3khVDdDcWM2c01VdEJg
OXNyakYKemdfQHR5VTs9cUQmM2MhI2tidGspQENCREpxUHNKJF82eSZFTCVRPz1ANFRWfXBVWn00
PHt6fEY5I148ZlFXYG4qCnp6QXNYOG1fO3xpJWM1bkJPc0okeW0oUGp1eHM2dWk+SE5ZdUpFPU5q
YmtxQklTYlVHNStqJEIwUk9tKj57Sj5Dawp6a0k5Ql9FbH1iNWcpcngkbzdaa0doODdtNjReMmdq
SmdBWF57K2EzSkJZP3lfcVZBIXRAPHcxanVQVX5vNFlUKT4Kem4oJVFgdyE1dX4jYUkjSHsyakJH
KzM/VntSeDZLJCQ/ZlB+JVRKfUFpRVJiUj1BNWBhcUBuemQybkJpVSFqdVM+CnpnVnUjMyh+eksj
SG95b2Y/Q0gke0JtS3pHPCtCSGgpQjs1fCthdlZrU3IlJSNXWEJxZ1d1eEtmZStsWH5uazlUTAp6
aCZBWUx2QTlKI2FKV1pvYyFzKUcxdHw0clRKXzAzUCUqPkFCSGxuSmowJFBDOVdoa0tHTUswbGdg
T1FnWGpCMTYKeio7bkQjeFd0fH43NUlsY201fEAhJm5jP2MlaHwxbzI0QHFzRzZ7UG9iOTJjdG9i
czw9ZU11cVR2aipPV3R6dXtoCnp1bmA9RG16I2cxYE1vQCVQUjRlal5ibGFEe1k/TTlELTdhTyQ3
T0I9c01XTGVodE5aJktkJHUje3gjR2hHK1M/ZAp6KHdGI0k9OylnWE1wVD1nPDEpbEBUfTJ8IU16
byZtMTI/dkE+eEdUQXN9c1RgQHpKP050Mn14PXh2dVM7cGNuQ20KejZXdSMlZzhIfWs5QUk4KTAq
UkB9ODV5PjdOZk1BenhsPTg+UnpaYSpzaCpQa0gzcjttQG9Yc0Bhd09TRipKVy1TCnp7SEdUTity
OUhASDBBSyZ3SmBgRnh6QDltMW44MGtNd0lFaDJQUWtRc2VHX3Y2T3d3a0w+I3ZQTVIobUMoMig0
Xwp6Nko5YHVsR0ZqczN2djklNGFvMHxCTk0xVyRzcWliKXElZW5SeCV4QU1gcnhDKj9jLW8oTV5J
Ulolb3h8cUJrPCoKeipwcSQ3S1M2Tk1RM0ZMdGs2UjVMbGAhdEw/U2pvcz55R1dDT0FAIThhMCtp
WSZORjFjSEtmSVk+QF50bVIzamg4Cnp5VUkqeWM8ajhKb0pJJWFyfjh8JUdTSillRk8mYSUzaXY9
Qm9tV25se245SkZzbEliRWBwdmkqU15pO1g+QGxBUwp6STs+YCFOPz5oMSVFJWNKQk5SMXl1KlJH
ZHA2Pjl9dCh9MDRNNk1BJnA2d35aS15ab2olTWs8Q0l7fT5zNDtreTgKenl7YFE1JChKRHVRaV9p
N2FfeEFRNXhXVnVYeFYyX3N1YW9OUV9GZG09fiZoZzVZc0BxXn1fe0ByWnBsRHd7MSNhCnpyNVBV
JkE/dD1Lbj52KW9zaj1taDVYaHUpO1ZITj5xej4/VHl0YUJPK3BUMHlTYTQ0OXchQDF5JjdNYSlR
M3Q4Wgp6bl5mK2pnT1pUdTxTRzhkaUImbnhJY2tzfipOfkVZe1RlSjJoTHpiO3NCVXl8Mn5MVFkh
KmBTTzM3fkAjcE5TYDcKelg+bTEpSG1ARF80Xj9JWlcyaHdBKG9PRDYhbytifmZyR3J9VjdDa0Il
MUN+azZjdk4/OXo3Wjl3X0VmaDBHZ1QqCnpDVitiWjF4cm15KChUZGY9Z2M7fnAzN3IhQkk9KEJr
fCQwdEApezw8NCoxfV9lWW9LUmtZZjFAXnp3fH1YPTFlKAp6XkVLWE1YLVRwaDh4ank/ak1AZUM2
VjN9bE5qeFdPODE9KjRfR2R0QERvPG9YPTYtWmA2d2lAckROeVRQaCZgVnYKekh4MTJUVH1iUzZj
aUdrcEhifSNyPWoqP1opdmZyTkVWYz9yWnFpcnMrNEg8a203N31qZVQrcjMwU2E8Kz0zVmV0CnpR
YD8mKFNASkt1UT00YHk+KGx+OXNqRkJAPVNafUVRK0xnblZvKTVLWF5Obmh6OTh3Zk9iNGdRYWU4
U1Q/dyohYAp6OSl+YC1MMTVjbiRBZjhDRylqKXZqNDJRUDNDUVZrMHowRUAxJSN8MXhpaE9EKSgo
NHdzd35mZWpJVFVBQVNwbG4KelVOQ0B8QH1lNWM+Sm0pM2R9QHdCOFp7cGMkV1RJbGBHcmx+RiR2
SilvOHBFQTxIc3toaVMhMyRRcn02Uk8+X09zCnpTSl95QHEkSUM/dn5+XnNZNmZQOTRAI3FTN0dq
fWJIeWMhPzx8UX0jODRzV1EzSCZGYCsjV29SeFp5OG01KFZtZwp6Jmx+I0JmRVVyM1FfTHQjeiQk
KmtOZDMkfXJaO0FgKnEoPVg4amZIZj1fNTRqb35sfHpzI08lWlRRO2paT3tJXyYKejc4PnUtJU1U
PXFaO2Z9QlVGNnd1ZysmS19nP3x4clJMV29vPSlpTm1JQjk4XjBWYW5QXjBkZ1QoSj4qZV9qd3R+
CnpVaGtqOzMtSU0oUypgK3oxRkU3QDx+anQ9RjU0XzBVTkNDe3teNnVjKEslIW1eZGMray1PRVhH
YUQpRXxRQnFpPwp6O2ZoT2MlJWZ9Vm5FTUFFbyh8NHs4bj5mYDkxWU4oZmp5I1BPTnVxRUYhRlVU
MmheRkJIZF5ZISY1Y0lAVFFtZ2oKeld8LXZhRj0wKXluOWVwP0Y2aVRFSGl8ZjswPTN4PDVCTy05
M05LSjx7KFdKRD1qIVRxOX1Qc1Iwd3c9JVBTTmY1Cno8MEFfVW02SGRhN2dYbSZuNHBYWGJLYD0/
aF94clc+XzdgJXlUVmd6Xl8pI3c+VGVWOzcmZyV+Y1FfUG9BeHNyXwp6cXlpWVBmcHQwSyNwNmRM
cW5nWkFldXJ4cjtXT1o4ZDByd1NOdkIzc3U+X3ElTkdeWm15SGshaWNBJSFkQiRMSE0KenFrayhk
a0ZtVUVGIVZvc3xGQE4mRmUwNEpZfnxgMTtlPVp9aEVhKCttOG1fKWstX3hQc2trNiFuJHlUKEJe
JiZSCnpXbmpvQilkPWs9Pn5OUjIrYmg/Y15WfnFqSjVadXFaXyppUTNTQSlSJnd7K0QrRlN4bXtq
K3NxKiZGaUFYQGIxPQp6M1ZUZUhrVDR1aV4wX3sxIzR7RiFqeW1NZ0NGelEjRVMhO0EoI3dIMyto
aX5oNGM4LVZOfG5kbmwjUnJvbns2bTcKemtVfFJzMVk7Y0BkSz9nSE9xOXc9Pm8qIStVVyp9NjdS
OVgmTUR3ailKNCR7VUh6U1VZSDQ/T2RTYF4kPlp8cCN5CnohUH4kbGVlWCM7MEB1JDhDZCYmO2tW
dVgwdEd9NWVAKHkrU3R7TFBnQnxSRUhnWGc/WTB5UiEwOG5hPGY1THxkegp6aG5fLVlYfnpHUyls
ZnlAelBQYj03Wl8qcWkwfXtCMT5hUmFARyRraGJ0aWBxKGlqIUd1NEVqbWJUOTZ0KFdfQDAKejlA
cnklN3lAMXltWEVPQTtXaFRkcEtKSVV1eH09dSEpN25CSU1PalNucyZGKCt4XlMwdVN1dFE1PDB8
X2J7ITkzCno7dyM3cl8tRkNgVTM0T3clRCtKJmtGdFpmazlOQmA3aVJoZnw2TUAwIXdOUkloQzJq
Jjd6T2tAO2xsUn05bnFfOAp6T0lPUTg2Xl81UE93XjMjIVhLTDBAMXl+OzlAbU9tRCV7O2o5UlI8
NWJvX2l6dWl0djB8RTA0ckFxantUX0I+a3sKekJudkUkbzVwfUhyJWB7JFRnbFJqTkZCe0lMI0Y7
Q1A9T2ZrQUxGbTJlVm9ucntFU2N9a1FlfnlfTWV0PlhXJFJPCno7M204YVlEYXhaJXJYb0JmYTU0
Jko2ZVlgKEV+dzw5JlNrNW1UI2dqPFA+Q0xycGdoZi1fJTMrNWJsSFlEOHhXQAp6SiUhYlljLSl4
XyZ7ekUrQWJDS217PXQ+dSskR3NzKmNXdUBOS0cmYXNTZHluPmlMfXN1cDFaNlc8diZKe1o/fDYK
em5BaWNGV3hDZDBQYD1yfmM1ZDlUTkhSWU5VJmJUenZ2M2hmUCRaWmQwOWYkYnNKX0h8S15fMUEz
ZkdYNCZSM3EhCnolNklAJl43ZUNNKmxQZ0RGTkF1ZiliaXA4UmV6MkJ6YVZPMyRuaE1Cejgxe3lp
MCNma2hAPyhzTD5RfXxucUo8Xwp6ckFqYWMwRTM8MjB9Ulh0Pn19MTRqRCZSUTMlc0FzdHoxcGJn
JXpYZ0B1Si1HJkBVNU1XZk9LNisjOEUyQmlAOHgKemlPeyZed0Q2XnRNblheWVhzRk0kKnJPdSZ1
K3MxdllndDlwYmxKUncjKGN7KVRFcmN3KytORzw5WH43N18+a05gCno4fSklJFZmPXg1NjZlNSZM
YH5JPGhTTmlTd21NKHo4cDhLcVpiYiR0XyVsTkJCKFIkNzc0c3o0Q3RTeVdoLXtEcAp6UHkmT1hx
YUYyVEU1O3otN0B3cnxPJTshWnFxcERgaV8yO0YoKzdHZj1KQW4qNkJzY1MhbGU3YiY5UExHOEg/
UjcKek1zZjJkciF3OUchMHNnMyUjQ1ptamoxbyt7SUNsNFlYJFFeZmBvKytOVVRsSFZVK1BDZzck
UEg1R1FGZXFhMmliCnpvalg9TTRxSiNmVlIqeGZFMUoxbllycT1WQTBWI2VJdzJvSzZmaDd2U180
RnJ0RUI5eUk/VioqQXpnQzhJVW1hTgp6UVh4VVZsMFVgM2V+JGQre09uWWB5aF5aKD5XYypHMHN6
UFZGSXlaTU9hSzVkKyZGSDM8ejJCYG83ZEokYmtDI18KeklTe1orajg7RChmaU56fWdeWjFHa3la
Z1ExQzFHYHFkI0xnWUMtMT1rRiMkUipoM15UWSQ8YWkrUzImc1J3YEo1CnpzUz89PlE2OHpiN2di
Qih7aTZ6PTZrRFJ8QkN8aVJJZG97eUh3d1JKWUNAVV5XeERTPSlodG1rKCFCWD9RWEphNQp6OGNN
em87UFZTODBQSnJlUXpFPzE/Qi1DQGd8c0duc1NBNyFvIzdhSGdqVzw5QngwKzlVcm9PKTBQeWt1
XklJMUgKemZXJUZ7JXtoTVJ4NiRHVk0/MUswbnopeWtZZH4mKGdhdX0ySzRpY3tTJj98RU1wNGJy
ZSh3PjVBNmJPQCZqPldLCnpBelY2N3h8K19NWX4mJGdFUHw1P3VZYVJRa14oM1k+eWopb2Jtezh8
NGNOMDNkIW5FZnYwUTk1ekZSMDVqZkRhPwp6RW52bS1HOHRtUFM7Z21ZJkl6SEBvcGBUb3h3e0km
IU1RMGh3UWtINjtfcmxvNzh1KVk0I3ooQF9ESWBPTVhGNWYKenRmMSt0Nz9STXRAZDQlMFJlbylx
Z2E5REN8Ny1hQHFTfTlZejFUeWgjfF91JS1uWTxONTNGY3NJRGFkZVJFTT5LCnpKPih6KVI7SFFM
QCZ1QVI7a1cta2UjYiM7Ymplekg3UERGNVlxQE16OHBDd2lLUHkwYGdeQmZUWUotVH5OeTdIWAp6
ZTRLeyE/PHlUfmFsbX5IO0RIaF5CWD4mdm9FZX1OYUU4OHZhVDtqRTRObihLa21rSUtJQ1lBV09F
e3lCK0RWWG8KenphbD9IMEZkfjkoVlVhQDJmKG5PbihfcXpARGZVNztEVyppYUVITHoxdl95dzJy
YiZ3R25CRD1zeVBvOER6NlU3CnolNlZtUnBiV3Y0KWJTbmY5JG1vc0hZfTFAVVpWP2FWJHRBNm84
Um9BI2NpcT9YVz1WWXNtNWZpQ1AjQFRLdElUPAp6OChVMlJYd1NLSig3bmgmZXFJXio3bVQkTUsr
fkhiQF4zRXQ4QSZobFVYciVxcTN4RHY8X0khcTZ3fCVnWTIqel8Kem5+I3wrWmNQfnYzRUwxJU84
KEBISj0pP185PThOVjM+VjVgPzghfU0teGcyNUdgZXN5KXAtZ0IldjlCS2c/NUxrCnp7RXFhMk5P
blA0JCpIM2RubUYqSCUxMHZ6RmxZcDVFUWo3JlhnJThVcnBrfXhfZDJGKVgpfUYzPzxiTWZ3USts
MAp6TVU1UTR3dl90TDsyRVpNT0FqSzg3bDNiQ0hDWFZQLS1gTSt0KlRHcXc3ZmdRdWkzMkAwT2F1
QkBCI2k+VkhSI0UKelRFUjRSSj5EflM7cDwtZigkUURVX3k7SkR2OVNPRXpEc3tzKTkmWHxrUDBF
MkV7ZUs4cUJEa0R0UW4lcz5wcG1ZCnpzS1hZYHghR24lY3Z0b1NaT3FQcExmaFp8RHFKfHdRZSUm
SF5RPlk8dX5OXjhVPmBES0FaRExCYT47WDsyKHIwNAp6ZD54V1ZTNHJJXiVwejdnPjtYfERrYEgz
e3tEal9wTDBBUWJ3REt6dVgxNl9uJUVRclkoTDNmZ2I2Y31TSWwjJVMKej9ufWAlKUchQyNgRmAz
R3BYKmo3dXNKZW5JZmRxOWoobD0/Q0lzRnIjSURBPGFjbCRhYD0xbnpOPT5SblNfdEIjCnpDMTFC
R09ecD99JTtnSHx5V3M0aylgbVByKjhrenlrcTc9RVh1b0B9d3dXNis/cWpLXkBuRkYwJklmZzZ5
UVptbwp6PlJ5aTZuJm5GWC19VCpZITZfNkU/aTR3PnspZVEyIWxXTkJrd1lUOWlsQj1CbUZXbiZP
OVZJUHswNntoMFZzcWEKejBDblBHe3FuczthVEsyU3VpYm5zbyM2RnAkTzcoSTl8TWxNZ1FGb2FW
JEN4RTJ1ZH49ODleUkE1OWNtWD9eb1BHCnpCeHorQTROX0RNRkM4ZytuY1NpPGIjcyhmPkBhJExg
R3tlIyh5THJ2IVExayhZZlJkP25WWUtNYyRKdihJbUVBRQp6e1BeK0BHTGFFKWZIN00+Qz9ZZUNv
bmo/P2FnQitxNFR9X0xeOWJyYVJuQEM9ZzkrNDJmN1JLOStFMHxSZzl+NCkKemEwKkE3PHZ3VF8l
a0c2TUpGK34/eT5UcU1wKkdhRHQod1kpSSpEJnlfZURlNVM3QTxoWUZRT1heUm1vUHUlKX1JCnpx
d1RUd2VELWRjMGdXOzVRITQ5PmshTDw5PGExaWFyWjlvSChpK3Y5UD1DSWAxaF4xTHtOJFl8M2J9
T2Y4al5fWAp6XjlIU2xSMnZfUDxOQj9ePF5aNnF8N3gofCpJZkh3a0NsVj1WLXg1dGRXIXx2PnRF
RXpKakdzeWJTTFpGPE9hUSYKeiF8cm4jQF5gdyNAdnRHazhOVVRGVmo2Z0hleD5+Kj1rT3BocCNV
PFdDU0BwdVE5Mj8pV0xHblZLPlVPXmpqSUQ+CnpMdEJ7YU50ZzN6Rzc9cGRvNSZTSE9DbFQ1Nndx
RkZ5KnUkMW87SDZ2SSEqfVlpVEkhMVQyaHZfS3MlN3hWfXdBdAp6SlFzIUJoYHgkMzhAT3J6bnI7
UyZmTVFnbVhYeHV3SVV1fGtmajM+NTMyMDdVMExfPjFAYjh0UEJJZ1QqdGxOYVIKelBlNm9NMmBl
SCpgVjlXMzRMc1d8PmlgPXMwOFU1cksmPk9OWTQ+VEo1Zm1xQlVaPkZ4SV5YY3Y0VGNAPCRWNVcx
CnpVZz5kM042VUs/YytrNDFtK1RAKipmbitVcnRNWEBAYTJzNldrdmFnYXJaV2FNb2gkSXdGSV9A
TVVhVW9re3YzMgp6QFg+N29WNnZqZHo/aihyRVFwaTd6VSQlaWVMYiV6MGxKMWhxN3tkRV8mV2At
akMwXnIhbyQpc01PSCFfb15LPHgKekx4UkZ3ZWdpMGZiQlN+T21JZDxzaVJmRXhJPE5XcXVJRzFG
NSReTlBoKSlpdEJLdUV0X254dzIwNS1velh1LTZ7CnpXb1VrUiVASHMpc0BgU3B7cmpgaG5+Zyg9
aEJeaVNjXlhpK1V1Km0lMEJHPzRyKm9ENmhSeVNia2pZVnljNGAoPAp6IzlrYGgwaSh5Zk4tVTVP
clU3PU82YnBeOHdJRz02PlZPISVOJi1oMWFvd3dCXjZha3tFdF9CWjVQVHB0RXpFKW4KeiNmTjYk
PWwyb1FBez5RSHR7TEhPZ1dQbHJmRyZvdGBBbCMkUGN5eGlTIz1jNWF9eVBTYnJNQkY2JEplYThY
U3NuCnpmOCg0XnteQnd1ZVQqVT8+KWVwIW9hZSYpUU5hQHBfSSk7UnZaX0tOQWBgfjBzPDtiYyVS
ZSZwZHBfYX1SJmY9YAp6SypvKWZTQTFteHd2MVpON3xhMWJLeGw+Z2lqSSlkMWxNWmYxSz1hXz16
bTlGJVE8NSg/OXZuQFhBLXBwTUZLK3MKekstZDJ6WG9BOWpKeWlfeko8JmJgdXxQN0FeJEVET0F4
dVVFUDstJjJwT0YqeThvO2NYVWJRKShQRl9RNElhQW9kCnphfE1SLVFhWlhnWDdScClCfHlvJmwp
aHl3RndGZmZEXihkUGx7aEtYNEpTUkc8X2k7QkNDOTlrJkcxYz1fN31xVgp6PkU3ZShIWihJdD9Q
bXNnQS1TcWVENnJ4ZGpMT35ZPyM4bTRQcCs3MWd6UmVzJXZUPWRscllBd24mIX1NRkxnazQKejYz
VnI5VH56cChoODJidkpnRXFyQ1poSExFYUJgYTchd3g5IVpyaDg3eD14djh2dTspfEFpKj96bCZX
eVMyT15DCnpxTiYxP0ZyPSZVaDVsYEJPfUg3UlBnbHlMOFIjRzNAcn0meUpoeW13cWQhUXVkTklf
LVFPUUdTMVM+ISFlJjZTMwp6b3hfPmZkbG4kWG5IRyN9OWJsWm01cTlSRWQzaT1kdnNUdzRTMShp
U1c8UE54XmlfZnpxdE9HM0A7dCE2VS1PfCgKelBPUFF+d1BIVTlWXnBKWSpFMXRXclpyQkpXQUdp
QWUoQFFeJT9RU1c9PjhEdkRZPkYhQHJXJFN7aEtDTl9vKUQ8CnpUcjkrSXtYNlA2QVhAb1E1QCUx
JHh2M1ImZClBWSRAZk5ZJThjUkxhaipMYCg7eU85X0VOdWhBdEF+NGFqMUFxWgp6b3ltciYpJn08
JSFoLW4oMEh8a30mI2Z8MG4pKXA/IUNDQzFrPUNnNEA5JGs5KiU0WnFwclopLUJgRyZ9UGVeel4K
eklHeHpvcjwpYlVEK1Q8RzI/eXB6Xz0wUSlTRDNpcjhJdDlEX28jcF91ZXNgVGlUeiNZMVZzdUkw
bDxSNEczLW1jCnp5fjY8akI9RlJHLSZETT9aTkdCQUlCPnFuOF8rZFpHMXVqR1c4VjUkIWxHMXtl
I2JsS0JyaVdicFojYm5PaHk7KQp6ZV5kezdmOSFCSmBneTt0VGp9bWRCeEM0dkB5X2BANjhLZE8k
fFR4Yyt4aXBpUEwtfk0yRT9Tb0Emc1d5K1Q/Q20KeldBZUY/YyQwMl5qNlRrVnZzeyhoSVBWSjxl
Jn50ZzgoeU82XyY4Rn5aTEFMRTwlQ281LTc7WUt4TUE3ZExVYjZuCnpNMlQqRTFKREU9aDJjRWEr
JWRNeUMoUT9kNGhpKVhAR1lPI01xflNRP3BjKT16NTEzOTVqN3pHK1p2eTxvMWRkZAp6YDRsP35V
ODlIfHk0Pjx8T0dkMm1vZklNRiFgQ0YqSmxKbkpOMnBxQkRZd0V+U2FTZXRNRCZPLUFhMFFNQGlj
SGsKekAydTdJV2dZKG10e2RMYFduOVZWZmduPT1kKU0mflJIMTdQeWooWGNwQz1AbGdJNnpnUzsx
JSN8NWNoPyhrQEFzCnoqPXo/KiYhMUghKS0tTUVUbyRgS2JLX0p2WU4raVU/SD0rbVpkSFRRanlV
TkZ2PlVxPU5sJCs0PFVOanhUdD1NTQp6YndkQWsheGkoOFBpJkd7cyF9JSMtTSomTTQ3MmhReUlg
cFVoZ2M1LWJGbHlMWXVGY1hDMFNacz1oV0RnQWFIVjIKem5AckkyOS1hSkJVWFhoP0xwPCRQMzx4
ZmlFYyRzfmJidCZaVUpTUSl3TEpmXyZjcGM3UldPb31Bb19rclo8VTVKCnpvIW1NZj9eRU5WKkhF
bEs/Pll4WHFlalMlQD9aP2wkail+U1lWLXpmXklMT3I/fmhzXkNoT1U3MUp8LTchZHFsRAp6bDFE
QFZtZ0g7Jmg+S0s1IzlNfC1nNkY3UGg/bTE7Y2VhaXRvI2FEUlpoXnhpWWkpfCYmNj9lUGI9eiM+
cEJ+UGwKenV8bE57bXRvaEZ1RFRuZTgzQ088OzhIIXlmKlFQfDUtQ0skJWdofWE8UmIkeyhBdDgo
djM5b1VQR3RLIShOKUsrCnojdjkwVVp+MUF8P18jUF9ncHZ3Pip1ZnR7SVBxfTJ1ZU15XjhNVVFQ
Q1ErcmZtQSomfEVxTCMzSXxvJmI4SThCUgp6MEdYbnJMXn4+Jk5SPnUoWVkyY3QxdzdoVUBLKypA
a0Rke0ZJfG4jX0wyK0JYSHd1d0hRTEQ2emQtQkg4ZVhIJnEKekhvaElAeWdwPzRSKX49flclfDB9
Y1ZYUDt6d1hQPnZnPXNWWlcrPnE5UVQxfClyYj51JCtxXzRZbnBwQihNNWhuCnpnRy1mcGA7K1JU
KntNb2UtQ1hENzFKOFopOD80K0BeSEJWfGdHU3hHX0Q1NipFdl9HSkBHYndKNl5kcXtCaDFlWgp6
eUFHfGduIUw1ZHRyYjUqNTRVUmFMJTNtYFBfYjZQPGBSdEZOfW94fXlsNkJqVVQ1JENKVVkyPXVC
NzBpYEotSSUKemkpaG5tcnt2TFB7Z05ONzZDNGE9dDYhNCFPNEZmc2BmK2BaPjlkPkhkclNsRSE9
a00kaWdoSj4mNzxLKW1gP3FSCnpLZF84aDE7NklnaC10RHJ2aDRaRCNoJUJzUTVOUmFGeEskNT9Q
c01rclRiaHpAPFQtLTUxOUphUXN0bm16TyFIRQp6bnNVbWNOJmZfIysmeENVQU5SUThKZzF2WVV9
QC1rNXUqRlJaVUBaemN1WHptQGhfWDQ2PCRlbGYlJTd2XzZhUHsKekZFYkNDTCNBNDI8JnlhQ2Rf
TnppZ1Vid083bn0jQ3ZUfDE7PDV7dW53YXNLfnd9ekw0Q3IoIVV0O0x+VSFkQGU3CnpWd3MqMVVt
SiZMMmY8MV9GNno7LVZqX1Q2JWhGekA8QGcrYncxKEBmQHBjJCtpaHpNa3shZil0ODxmdWNAfWh3
WAp6ZFl8OE4paD4pITV7QENDMnR+Jk94d2RXSCslUnIlQSMmTldLJjwmMXdCU2lzX1BGWjRvZz5D
dXRxKUp+IXNgcn4KekB7eThxckZDLT90a2RDT1hAY1RrYUlvMSZnVjZpLTxjfCNqNSp5cCYhaGhA
TUJ9UklrNnw4XzxKUzhlYzg/MH0mCno0e3xRTDN9bWhwNlR4PSE/MVF4P3ZmbiVIU2ZBRTh1aV9X
WSZMe2dtPWFjWGkqbXlkRlB7LTZpRlBlTTdgKkc3agp6cyVoO09RM1NEMkI+MUF1eVB4NzgpY0Zw
PDI9UmgwTm5vTnAwR2EwaTBDPHRYRk9YUUckUWxXKmhheEJxZEZQM1QKemRNUTlNanJPe1QzPX59
NTU3R1VTXiVDUU1NZH17RFkmY0ZlUklUKGY1Zj97STZnS2BhIy1BQ3MweklSVWpBYCsrCnpqJl8z
S3ZSKk5QYCRaZk5sQVpBaFB1O1NEUFhwbkRvKFNpKEx0aGJxYEduMkVIeUdRJjFrQzg4cDgrcCFY
fDghZgp6LWBafTdWcStXbU50bXQwJk4pc1Zpa3JycjhDJTFkRXJCNTVWdWtoUWxUYWg0LV5qfGFr
SkNOfEZ5NWsyQjQrQloKek94fHdpMihPZjZiRjxBb2UpdkdELTNtPTJSYit9JmNIS1QzWnxtWSFt
dW4ma0hLSUF0RWtjVlc9WCQxbHU2XipwCnpBN3RDWmA0USsjeCtDMVVrKn5gdXI9ezA7ZTEhWl9k
fH0+dVY/XmZ2JE01dU1jTlpYaU1WUzJ5NiVNZnE+KF43PQp6bGpvIVl3Vmp5T2o+fmFrWXdrPlA5
bHE3LXQqM1JIU1AzcXFycmRxPjFiWUYqLUZTN0hoNEViak07Xmo0eHVSJG0KeklUOVBTX1p6QjBf
ZTFlZW5nJUVhYCpGO1E8QnEzJHJnJXhhYSE8X3gtZGVRN0I/NlYkYmVeXjxJSUJxZTt2MXl9Cno4
Ty05KGptJkdXTEZtaTA8OyV6V2NMcHMjPj5AWWFKdmc7JUh6MDhIbEtWcnZIeGN0RihOYShqMjZ4
LXdWUCVIRAp6PTwtaD9BJEorYihFdyE5elA1WG9nVzduWWEoR2RjV3FSYnVaTS19P0A0KH5vYzsm
QiZzYSVzUyNBREorJVBhUS0KeiR8SWxoNnRBVVR1TSRAPGtFcCowKCRGQE9kNlBLNFpfS2pXWjF7
MmxOSzBmKDBWU2oyVnIwdSNETjUhTEFgaFR6CnpVaFVzOUVvcTw7REIkd2IpKGtnUz8xbENpTEY3
ajFFTzBEKVhTVT16dFV4OyljTWhZZWZ5eH1ycjVeQiZ6d0RSSwp6V1AyWDxzeyVTJW9yaW5vPGQ7
WHMzfmRVbl94KWRvdXk+Y1B0aUZjO1o9NSVMSU1Ke1U4YGhrQzs8Nz0wUGtgeCkKenM7eCFjelB6
Oz8kazxiWjhrRT01U0RLISlFIWlmbmVIMCF6TUghM181QHBRKTZ0cUIpUFN0MUUjcjl8QWQtRiNQ
Cnp4KDkkPns8UUl6c190eyRfOUpTUkFTdU9ldzVDNC12THFiJCkxcSNqOC1xVjlRJjdPZGtfY0h+
KGNsdHI+LVY5Swp6bVkpWEtyejhtdG9TfnBEa3M5LXYxR3h1cFBxNFN2dlltUGlOWn5ZR1RTNE93
THJ3YGNhdVBrKXF5NXQqallLWCsKemw9JitEQmx5NjlANn1ifF88bzl0WWQyaklnfGJGVDsyP29N
cUAqdXo0d2hkKncqWnAmYEF8cTdCSlAzSFQ1fVo8CnojMmk+NURATE4jeWRlX0BYQEk0fUNkUDRN
SSFGbl81c2NeZUM5Xk1DUl9pXzVaX18+fnIkV3VoOzRDP3JVPWFtRAp6eGdxIzlXSzY8eW54V0Vn
aGxIanxeJTlgWWdicndxUShOdm9ybHBrbERpfWdFYWp1Qjg3aTl0cHhsMC0/b30jfGAKemhOJSVX
PkReSUQwcDdoNVYpcTkydW08PkhWKClfeTRrZkVMPV9pVzdnIWdQZCp+MEtqY2M/IWc2czVGT2dD
OTEpCnpIYUI4YVJIQ2A+dVdqZkJjQERTK0tTYyU5TFR8ISpxWG9zK3RkZVJzRzQjVkE8Rn1SNXsh
eX1GWj96XjZmPERzMAp6SjVndUklPU1CZEI5ckJRUjNsM3ZwJSt4Z1JROCVreyklaE0rZD0zaj9H
U3M0V3VKZ3hpWDJGaUJAMT57TjFAaH0KemJ4ckY4IyptVjckK3NZTkhQX0JhITdGVTBGTHVGX3ZS
amhfVHV5NG9VJVVyeyRuaTFQY1BzTjN3djxAYUd9b2hgCnp0N0R7JXZLdGtiUlUtYll4VF98fWxA
U14pIT47RCNKQ3M9ITglKGRmbzFfeytgdFR3QTdIQ3VgPFckM3h1ZXBKXgp6eylvdEopSTUhPXAm
bVcoU3t0PUBBe2dHazNISHtqSVN5N3RaS1MzcmNodyVGNDQkVDgwKkBISDVNRGdxKiNtbHAKelkh
b2hmX1dVT2VzJllpRGgoM1M8eXxFTD5kSXs5RUY0c3s2K2padiUoYEdxZWhoNH0yODNHeFBpPjdD
X2krMk82Cnp4TC1HX0BjRGkrTz9rMD5NWGdLXm9iamhHVDZweDUjNlpXMDZ0KX1NRU4ydEViOVJR
N1hwdHtwMH1Ce29OZklCOAp6OCpDK0ZLJC1JK2p0ViVwUypPQ3c7VWFVcWc9fWYwSVcxc2VXUG1g
UmJPUU5JaVVofnB8THBtWndIfjlsJVEhbzAKek11JHF+bFhWeFZ8S2ZnX1o2bGwxXm1vP1dFfmJn
KDxnTG87TUNoe04wNVZ0TWw9YzwxdFpNYm00PzFYX0Q1Kn1PCnowUTAyKkF4LW82bk8tVkxDSzxW
MGl4TCgjTSUpRXdFXk43cHZRSSpUQjVIJGBmNWFpand2NzUldldtNmkhOEwwZgp6QURrMV4wV0Eq
T2soZkhYUjhTSWJmPCQre2dsJHBZSC09O1VfdmF6eU5VI19nLUZ+Q3YhTUkqPThCJnUrdVBONn0K
elU3djdUJTFYM0t1TyFzbDwhYS1VLXMhbnNFUm9ac0N5fCNAIUt4fihtbjEmU3ZlZXNRWGkhTF9h
NGptejlBRlNTCnowJnp1VillfD1lZztpRFErY0gmVkplUFg3X2xrfXBsQnI/NCp+IXoxUTglb2hg
JCYqZDApTH5zSyshPXhmdHBiaAp6U3ZMdHpufDJjMjQzVk4tNFlIdkZhUUVZVGUjQCVJXj1naFc3
Mi1tRnImaVA1OyglRzl1ZSFqKFVtaTZDbFZYfFcKemxDbGIhI0BsMU0ye3oqMmVkMzNWKTQ2bztM
fkw/JkBDKl9mMENBcHBDSGpoYzs5IXRpNVVzOSo9UWJyOURnRXo4Cnp2eGhHJUVPYyVGPGRoMj5Q
JjMwVF4odkBwTjQ9MUJkeSslSXpjXkBwI19jcH52JTQwcXklWigybFoqZ2F0QFNRNgp6I3MhZTQq
ZShWSmJ5ajl4KE1lN09fTnZrR2Z2QUlGVk5UcU9rS2oyN3BXOFdjQEkoLUstc3lveGcjWmVUdz9t
PzIKenpSIzU7ajZwcXtGRThROSNJVExLVk84I19xRDtXLVVQX1BDJk0+dXNxRlcpIWZ3Ty1RJD1T
JGQ5dntJS1R8UmdZCnpmOGM/bigyYEswLUR1S1FQTGh+aCM2WU5GPDdAWSYrTEg0Iyh6cytpZD9S
cVZQTHRjUTFhdih4X29DdUd6WlZ6RQp6Z35CaDxWY2ZHbHUxfC15cUxBNitrIz5YfGcyKGZFSG03
RWh2fFV6STwmPTdhb3pBcUpyc1VfZjhoY0ZENVdPYlQKekBVUTxVTVUwLUk/Ni1MVCVPOXNXWEZe
TSRHe3plSSNNRC1PaWRVKzU5JSVsO2xrKk13RmE+JGhxdTdFNFVadTBZCnp4YUlKb3tuZlA/ZEJG
ZClYcGpTUl4wY1VDbVYtN01yeX1MNiQtVShEPVNSK1ooOEhBeUNYPWlUQUhLJClNNmF8RQp6eUQ8
OzgxYWA4TmBMckE/Y1VOT0hUZn1De1VHcHUxdFF4d2BOaDNoN0EtND15Py0wY2RCUkV1MCNqZDF8
fExgJXMKenNTVjVweitjMFJNXnsyfnopeHpWLSRzMUowWXhFaVo8bShVaTUkZF5IZFB8YlFjVDVs
PFZ+eSNoVlJMdzVDT1IxCnpCVylXMHpJPVY9R0lxSWh4cl81fndafCN5SExJKWVTbVREViowSW17
K2sqT2NaPFhFPSRpISZDTno/fGVUYCZ2QQp6R1RBX3okbnJJQm5scCptcjQ+d0s0X19EOS1CbDBJ
NDRnbEJpKVV7Mz9fMXVLM35fT2laMnFOd3VuQ3Qzb0crMFYKenZkJjlRMmtBaGY/SXBXXnolUkpY
NjU1R2BZbko+RTVNdFkqUSspVTJ3JFV4LXBCRUN9VHV3UGR6Mkt+KElXUEdECnopPERzdTB1aU07
RC0oSmR7eGEmIXhpTmRwT15wIT5BJF5LeF4lalYwa351U1gjb0M9fWJBaUQ7dlImem5zcz81dAp6
ajxmaWlOKjc9aEtGUmtzYDBadVJNVEVtcXlkTCNRMHN9TlVRbkFHZ3FJbj0/JTNHJH1uV3Yke2FQ
RV5vLUYxSnMKem5XNmByM2wjQWI9WnE+PGw2bE8qNjdYdklyeHwpaW10ND85XkEhbSQ4Qzt7Pjtu
fTtLWmYoay1VbSRITmZ4Yip+Cno3PDlpMDtlQ0VFP3gjWCQqNmpzb2hGfks0SSo2RVV3V3VQM1Y+
OWxmcTU5V25gT3ZYSmx7RHJpPTtCMVpheW8tYgp6OGMkUWk4MUdeWnRzT1pGTlBYJDNVKSklRXBL
MHBwcnRRUUxKTVFOdHJnSTI1UWlqNHpzWV5yfl9LRUV3X0goZXQKeiohaGQ4d3lBRzZROUUjVF5C
QEApMXEheW8xRGNSVXR1ZDVlVVhRNkI/WS1DcnV8anYySyZVWHNrOXZzMlRDb09RCnokelN1NT1m
MGlGdGlvQjBHKDh4bDhJP19gKmU/IVJzRG5eYmAhZllUZTU8V2pYO0Zeaj81V3opVWg4PStadSU+
Owp6Km9RRlE/eUpaKDR7TClDUChye3NobUpBVkN1QEhGajtSM1BLbVctc2Nhcn1yd35RNT01JilR
ai1vJTwzanBiNCsKelZCTkhuZGJWQWIrbylrPlU/Ni1lU2FJSTIlalc4JkwjLTFwMUNIUSVZYEI5
OXdZN3ArcFN9PnIlKE1hazNkdjkhCnooTXlkMDUqV29iPUVXTGIjOD1GdjVVQ2pZWWg7WkppSERC
Tnc9TmRhaDU3dChmTkwtWDd5TzM1QHVUP0VuRzgrPwp6eTZjIWY9O314YzQhWU9fI0I7O1J3Rk89
QGh+Um9HX3l3SyUoU3VGKDNmIy1GZEZjR0pBanRjSEwrbVZmcyRlVWQKem95IyZHeTd0Q09VeHhG
T3s7TERhRXRsSX5CIzAzSm9ickdEeGtuV0YmJVpHUm48X0M+WHNScUl5SFBkZGV6TzJgCnpEVT9A
VSo5ejFsNVg1N1F7UnxrOGh5cENWayNXRWhXdHlsWU43PU5SQV85dm41SEh+c1dBXn4qX3pRVHgl
cmx4UQp6R2xKT0NUclo8bzNhdHRMdVcwJHFOK2pQWGA3LXl5bmR2MUpFbFpjISZLcTZXczA8VHZX
UEhRO3NGNmZfOyMjVV8KekdwKUY4PEgmLWQrMHpUQygyK1o8QUklWmghP1VseipnJVpYT1dEWkVq
T2xWPzdWfERHUyNrKEsoTT16JUk4OEwhCnpqUWpHPktHYGNAYGk4b2s4NVA/WHhISlJfO14hWi1R
ekliWiVpVFJPPDlia1NpYm9zUmFtMSs9PUZFeVolKTshNAp6SkJ6UVp6KHlleERIa3s2d1olQ1dA
WXxsU3h6RXd6R15EJlEpNyorPXNPSWtxKzU5NDUtVD5nPHxBdS1fMm1ydkAKejRGK2hCM195Ynd0
VTd1cXNxWDBtJXxASi1RVWJuRzEyZkdaITFwTHMmWSNtUVJuMCpeS1k1KlZJXyhqRks7ZHZ+Cnp1
QGxzUUFyM0tTWDc7dWphY3VaOCU1JEZiazhKQGRvKCVAKzZuO1lvIXNyR0FTUjZ6PUczckhqKFh0
cGZsYWJsTwp6ZCtrP24qRUdXYmd0ZGdVUTFIU083MlI3c2R6aWsoX3smbSlsOV5NWjIrQUg5NG9B
VXh1VWYoUGVTfG1EUzA4MEwKekhtNSEpKTFtfFpeQXgrJWZJKkpKJlFffGgoYjU8empHWVRBPHEw
fGoxXihNYFI+cGNDbnJEY35zNypOcCF2Ul5hCno9dD9TT3cxM25LX1FQVTRufjU5fTVQIVhkKm1a
LTErbFgkKlJJY2VVYT8ocjt6UXQrUWZ1aHVvXnFXdzxoYk9CJQp6WThgSTwraUN2aGdibj0tYksy
bldXaHVuKmVWIWpCeUF9KT1pfFYzRzk7QH17TWAtMXVFP3FAeHBlayR7cChXcmkKeiM3WjVuaXdO
aXUjbkJRUnl8d1F6JFB6YWteX1BZUTNRVykmPSo+X2duPikoN0pLfXA7PXtJJlg9bG8zXlhkVFJx
Cno1bCpWbXE7TFY8cnZWU1NVdmNtSVBsWUNiNUlQQWs9cWc3UXYzSDR8K2pIKSZYV1dtWCYxNkRo
K3VXK185WSVlVwp6ckVtcU1SKzA/MGRnUHl7ZX5BPnkwO2E1cjFZNz5TeyghfTNTOFozQi0zWUZW
b1Ita1dvTFNqPzNmSEE3UE12ODMKekpqLTVmIXs/TFVCRnt9MyFQNmAzTCNxYjZ6MF95SDM8KjZf
ZCNmSytAYzsqaFFDM0lkeUtHSVlyaFRYaCRmdnIqCnpzTTd3c3YkT1ElPkRAVi1veihyLWJ8ZzNY
Jj5LWUFtb0xhfWE8d0o3N2oqPzQma1RJUG94RWh7Kjg5amd4d1RtTwp6PzI3fngyelFedHVEa156
K1NJNV8/PWl4Nj42LW5SI1h0ZzFvWFYldDhGaHNXcEJqOG1kWFB3TFFJUTUwVnhZKEsKenVmOFZJ
Ynxienw8YUt8a0BWI3J8VU5xe0hEbTt8TGlAfmV0KXlTcE47clJ5cGp9WH0hYkR5aWk9UWlGWTk/
KmxxCnpMdHRHc3JXS14pemt8WHA0RTBrVFc5JnMjYHFHbzwkQ24qfFJ4O3BxeyhqTzlsSUtJeDEp
QEU1JWtFfGg3Z2JkOwp6VlJzUzxBIWQoLTxQZX11MVJJIUchTypqcDFJenBDczA/Wn0hc1p8T15v
YD1xe2IxUCk3bEVqT0VCPldGcUVjKzEKekk3dHw/a1F1TVEyeGdSfGJrWVBqRE8lP0pCTlZkKlZ4
dXAmUihta14lPnteNEIhbTxJZUVNSmdedm5QNlJCMGFqCnpFM35ea3U0fF54WUo8a2t7UDtnMVoz
UHU5NTs7YFRqRkEhTXJ5YGMxaXJXU2o3KG5QX2w8X2NncFZEQ2RZRV9uPgp6KGJ+PGVmfD84eWdm
MClnZkJ7U31tJmVBRnJ4eUpATF9+aXxrIUZxIXB7WWIkQ1p5IXhhMSF2IUN+WVpfbVNnKk4Keksr
UHI8dmN4fHYtUiRVZnFDWF9PUklaa1VfPyNLaGNFTlZ7dDlNUiQ2NmBBUCY7MXpUX0E+fXNmPGRV
TW8yVGQhCnpEazh4VHttT2VHP1FSKU85cUpybzIjVzdNOCElVyZoKFRQeVFwdSNmYTx5flFLQFVj
XktrRDErb3o5dV5SaUZ6Ywp6ekJea0xmUUxARXpoI3xVU1MmJHIwblIxKHtNaloqY3chYCE+b3Q7
OV5aSzV+YUEpMk9YMX1MQXFZWF5AIXgkUFkKekIyYjZ0Wk0xN25vMFM7ezApQ1IpTEtoNnlVPDMj
TmdRTVJyS1dRdXk3anhBZkFZOG9TfDZCJGN1enF6dTE2MD5CCnozak56QDZtSXk/OXdmdX08VilE
ekFuVHZ9TG84USFaPShYVXRIRk1COGE0OHxBTyo0OUZAb2kzQ2JMRmxJRmhpMwp6SjNVPC08UnRL
RGE0KG5hKGNBbVRKK0dvc0hMRzc+fDZIUWQlU35YRW1ad3coO2ZgOTYxbWsxUUVmeEM2Qm9AMTcK
ei0mNUB+aFpkeDgpYlRSWWtLWFUme0V9ZVNNYU9ibDI7S2xCM1UldHM7KCghU0o1T1lzYlk4Jlpt
dGd3fj1QSUMwCnpQTz4yeT9kSkJ3YmZEfX05MFc4V0BfQTFDcipYbClHOEN4QHEyMlJLQy1wWmwy
KEl5czVHNnNgRWZSUE4wNzNkTQp6RGZYMkFUV3tQLWEjTjZeUiZjOGJKSHlodFA9LW0weXZwand1
UFdnfVojRF96MCt4cllBVlNoSVViUWJ0S04zJX0Kekk8RilROENYSjFidkx2Z2EpYz9Db1pWT2Y5
clFKOWkhfHJuMGEldyo/IyEhem9NQiM2PkglRWxeUnoya256aDIyCnpKRlQoeEIxbW47P18yKkMw
XlYrVnl1JjQ7QSo2alhuSCVYR0VtaEdtPk1OSkBXNTYzPz12QTMwbX5gTXo/N25rbQp6bDMqcSRR
KkBxKnhNNkhFPFh0MSZgUTE+ZGEmPGNhVGY2PUdpNlliRmJSTWJZTVRRS3o2RFZARip9RGo2KVY9
MHUKejBwRT9oQmA0TUxzMXZIVTxnKXZ6Z0M3fnNUV1lSWlRMOGNSVG0qbnt8Rl9OcEQpPEFTKmxX
RTQwQkFUQ1IqfUZzCnpaIXxqT0c1ZlYoRUN+fmphaHd5QlhmWE8zeW9wIyVqeUJGTyF3UlZZS2s2
eFJyNSh8b2RYRT5EeCg+eyNLNzBsegp6TFRMUj1RUnlBPypwI3lQdD1uUjFAV1o9e0lKeUc3JUsr
dD5qXjJRVHhtfGlVR35qTVFAaHQ/c3hMTSlzJE0razcKenFzJll0QV5qWiY/eD01K3duUkQtRmsm
NTxwWH5Sd2w/OGs2QXkxSTFHdW0tKHFTIXJjS31GTVhgWUZrKWVOZCUrCnpKeilPQUsocUViKFh2
TkhtU1hCeU5aeEpuYUhrYkN3TGAjOSgzaGcwRVY5KXBaeU9VI2Q+ajRzZH0jdGVPI2k+Jgp6VyZY
RjFuKGhEcVlTMF97R21IMGlSOzJERD5gY3tYeSROPUhANypOOGBpMX51YD0wUU16QG9iWGstfEA+
az5LMjYKekphczlBcmtJfilVen1GIW4tK3psbWlFVnVheCVVfU9tbVREYjRHNU1yTkVpdlhJckZH
OFdkc1RWeWV6SHYxXjVxCnp7WUxEZGF7RlIpOHxRTGcyZWkhVz8mJGttJHR8fEkxVEpDTnVnZT5E
b3BAemtWO1chMUtCeHl6NzBxajFjblJXaQp6OEtrQWUzOXxRc1R1cnxLV24hcHNTSGZfZzVTNiZF
enI4ZjE7OWd2N0hUKysjeWBFNGApU1U2Xm5gOEo5TCprMDwKeiZ2aG9POUlYK3E+TT1GYGNOSnZO
VFY4TkJ4TX05V0BIKXRxQXNWd0gkKDl3WU8rRiQhKkJrO0pPeWp6dT9xUShiCnomdjFBWHUmd2xF
cWVuK1EmQVBYJnlVbWpoV0A1JWIye0c/YTIxU0FiMFUmWXpne3dqT0tMXnN8ZHk/UHN6fCkpXgp6
KFdAWkVpJVpEVU5xY0c0dz11RWwwPD4rUCREdXRTN250fCZhODxyTjNrSDIySzdFbzUhRHclPmxe
UW52aUApNVEKemlxb19DMGhldGgybU8jYjEpc2BSUStFNXlXbypMaUNGeXppb0FWMzlvMVgtM2t5
SjxqNl8wKk9HZXM5OTBzRz1wCnpQKXRue01OT1BKQktNRztJTzl9RlQzdkxBMVpGV1JsYDR7YTtO
I145ITl9UjxmRDg1ITd6Wm1BWDckbz4tbyN7Ugp6eWdNKkxkej81RUE4QVRZPWpzdXtkPntxUitN
cWQ7MnJ1VnpVVVBfPENOYXpGJXUjeWpuaC19SVhadUt5ez5MQmkKelRGYlM9UCglQkw/LSVMQDxl
WDB7UCU3UVRuYmpLMUQ+TWAqODApZ0h5fGB3cHNwZ0IzeFRGVHxGUngpVGo3OTIrCno/SiY/OWNv
UVVBOTNgdi04b1ReKjx6QysqeTljRXp1dCNWbUxiK0koLSQmKHdzc1NNRnxEU1BFfEFrTnVDYUBz
Zgp6IWM1ZnRreytuJUV4U2NGQkFMcUpYTV9obG1WbGM9WT5TdXs/N2A9bHo8V1p7I1d3JCNJP3VX
cHBWMXcxaHBNIX4Kend6aE1fMHtkfGEzPG1VSFBPPW8+b3ctd01jeWBVYCNOVzJMS0NSeSQzIz5n
cDxNP1E4Y2tVTEM+RzlAO0JUQGwwCnpYJV8jYiZ6M0wwRUolWlNYVnNAa0c9dnVxJXZMKz5aSm1S
KXlnOTwhcUNfOEtNS1hnNUxWeWZyM00/MmhPeUhpUgp6WClGciU1MlVgZko9KD9tZnQtOHJgfEM7
RU9WKWVpdGhwcUVrZzglKlczdCZ2dyh2ZCl0cCMmNiZ5UD0ye1F4aFoKelo9KD5wJHM9Nyh5cFkq
VlVEeiFMVE17LSpwKjVMcT4+X0F0diNtWkp2aGlkRF42bktYTkZqfnohPW1HdERjdnNHCnp3YkJl
c0RhWT0jeyM1UEtYektwJCVeUjdQbyNmSzJWYVU/aUtGMVRNb09wdS1PMEVWdFk3TF9qYyUkKjFO
Ymc3dgp6QmQ3d2xNeFg2cEItdEFQdml9PmB6UW5yI1k9M31lem5TI3tUNTVacyomaVc4eGZMc2w2
Wk5mZT9UTkN3UD1KancKeiVgcDNjN2FYdzEmI3ArVjNeXld1MDYhJHM2XnpxUUZedllySVdvJT5l
NEQhdGxgVW5TNU5DJnwyKks9T0pkT212Cno8OzFybXNDb0V7Sz8/d1FBJkByRV8mcXVwaV4oN1NP
bzIwdWpgOWNuOXRgNDstc2UxbzB8WklQJUtxTE0tWCV6cQp6bFdVTEklOz1RO0dhKEx8Sis3I0lW
QEFmaGZxZT94Tk0zdyhiPnUrc3NnKElYJXNscyNqIXx6QVhebHcjZl4hPVUKekUmfCp8SGY8Zig0
M2FhKE1eWSshUmkpRnNHZVZ0Jl9IPUUlP3Vzancke2BFdnEpSDk8PGNQJG4pbD0rSWNNKlcoCnox
SzkkM05TKXdFUDZjRUhvfEtHUCZxJG5KLXZfQDhMfl54dkJaRXtsZCtRYSRvfnM/WW44TUBsenk1
QVcqRTh3ZQp6NmlIaWdrM2A4PUVPTlpAcEdNbmlCPllWNjUxV2hMXnYxOHlkdlh9TWUzaFVXJFB3
M1djM1gybD8pR1BsZmJfKEkKenE4JCY2dWtMT3E1NUxEI284RkVreUQmUiFwX3hBIUBiZ2Q9e0BC
PmxOK0ZRc1JaJEBESSoxLXkkTyMyV2EqbntBCnppNmRiZjlGe3ZBMV5fe3Z4YjJ0d21NWG58Zj5w
RV5XUmdfT09BcTt4cj5lWDB2TEBqZ0h6TW07LUR6X19wTm0lMQp6KDJ2RyVtdiNNQHI4YWg1N3t5
ZThJTUB1U1ZLejZyMzRZJl9XVG9RQVhpJml3OWEtLXc5fD9EcCZaRnJ1LXxoXjQKelE3Qj5aYzN7
RHdOcGE4Xno4MSRxT0J5KSVfQX16aU5ne3BASnYqWFF2UHFCNDxYNVl2Z1gxSlBldU52ai1UPkNt
CnpuSF9yWVJSZDRxMSZjQ302OXYta0RBMT1QPV5BSHNFPEw9SCpZMTd+YjEtZlM4TjNNdnc8QWRP
XyZ+Uj5Camk5Kwp6Yjt9YiZgfiVObzdMQE5LekFvYD84MV4tQ2cociV6eDYjfjtUQ15ZVTYrMU5H
Z345aDUlNWh9YmQmLWhQPEVoKD4KenVNZWB4M1g4YzxmNERENSY2YSg3VXBzflA2aVhzKGR6c1kt
N2BoczZvJjRRUUs+VUZARVY3OVp5djZuUWd8a1EoCnpyfnVEJSFWdjRCaXFXPEdvdWZlXjA8YEg9
SWM8bHYlTkthZHRwTisxR2dDRX1MNTwhUTM8eFZpVntka35pT31CPQp6RH5nMmtBQm94MClqPEhK
QHxkZyFUM3FuUVdmcntjJkRyRSh5JEZVRGd4dytFKmFwUjRkUV9CeSM+IyNDUHRue0sKemJnTm1h
QkNkeWpPN3BvbzJBS0AqYnpsZCFwKnVFZXU9fTd2bUZwPmVOYj5fe1pWSHFrPnlDWiV2c3AmSDNa
X3clCno3PyQjKSh9ZkRIPG8tPlUwSWB2TnpDbSpsPG9GJH5wMD82RFRlM0t3I0h4LWxiRVYtY2tZ
LVRVdj5oc3pWKkFjfAp6JURRWkx2UT4meDY4YyVVX0l3NUUjal9BOWpCb31xeUc5TnNqRFcyKnQ8
MldzZmwjLT5QRXpeTkgyUW9XeVUlJnsKem0yVUp9dDViP1krM2hSMjAxVyU/UVorJG11a3BGZTk2
R1c+ZFV0c1h3YiVyanlGYG4/YTQ7M19YMkNZeW1jOWt1Cnp6PX5PdEY1TFp6dCk7MW1TIVBkVlBE
YD5IRUZLU0tIVFdsbGtHKXdrTEcqXnlIdiVnMGF8b21pdDJZYWxubVAkSAp6MUBFYGg9VX42K1Et
WmgpNVomOFZPcFVPRHFzTX5GKl9TdEFjbTlmfkpJRzd3bFZ7O0tVJmpycmpeRlkyMWNONGkKenRW
IUIrPHAqTjcrPmV1S3lTb1V3MEE4TUs+XlNuMCpNcC0zWllBJER5X3MtOXA7em8hLTx0QztLRiVs
MlVLVlUqCnpDVyYtM2h+SWcwe2hmTH5OUlgxNkt+NTQpd0ZxS2M4N15zUGZqcTA7JldrMVVYYkVD
P0ApKVQ2VGJMdDA/MUBZNgp6PygkJEtDMCozO2duRGw8VSEpRSpSZUYod0kocE5MMERnMXJCI1po
bnVrM0x6UDYleVM+OUwyMW1ITiRvTVY4MCoKemteY0RwK2g9QjJUY0Jxak1tVH1DJH5YMT1NIzJQ
MSZPNDc4N18pPUUzcm5ybikmdFoqYHZqS15Abnh4TU4qZUpPCnpPUW00bjR2KFJjdVlzOzJraX0o
OHpzN0pDcUAtYH14JGcxI3tQJm1Id0QwNDw+ZU85V28lVVRURlY2RjVCeWp+QAp6dlR6MGtuSWJx
UG4xQW0pMzt5JFZpWTFyZnVrTyV+VSsoIVJqMFE/YXgrPmNke0JYWFhGUnZoTSM+PWFRRUpzOVIK
el8wS0c7K3w4S3Y0JjF4QmJlKFA1TW9UeVN7XipBM2wqPm42WCQyYXo/b0ZmdEFteXRIdX4tcDsm
UmhNQ1hwSFRTCno4MUh9PDFmM2A2JkFGe0xiP2ZyVE1tcnU7RHxxZ34+UlNhZ0ZMPDQmMnZ7S31n
ZmszanQ9byRecyMhPVglTjIlbwp6Kn48MSFvR0crSnxLMjRqeiRrNHNmVyZ2aE57fDZ1NUIlUmJK
c1FAejdqTz1pKVd4Rk0qSi1uZEFtbFdrT0s3QHsKejFJUG5nXyU9WUJoIW1UTllAcDlOOXt3Klkl
eGxLIWpKQGxBVGBlR0lSQEpsdz9HQmIyNitCKEgkK29tKVhzazdgCnpweXJySHMkYWJMXkJKZldj
bW88fXFob0lzUz52UEowQlVYZmxLaGE4OCNGRWZBbzRqP1c2QGlCVzx2OXJic1UyNAp6VHw3WHZO
aXx5SjNZV3c3SGRFKj9oa0UpMUhzVWRFbmF9c2I9IUt+TGMzZGVhQT88QkVLKiZRPipPcjE2bTVa
Mk0KenhocElSe2V1YCg8TThGVVZSPitrQnBrbWpPVHxFVCV1bHtxKi0xY2J0TUZWREpZVFczKGh1
ZD1tb2d3Z3o1X3hSCnpkS1lfTSZPOSszcUkmRXxJQlpqZ24+JXpJSnh6KUZxd3U/bGpfM1lgRmd4
ays4bCV1dzZWfT4rKF4tbzZASjxuSQp6SlRIVS0hek9xUjZ3UDMpeUY+OVYrYElmd2VVfHIyK0k7
PiY9biN3NmooRS1rI0lQa01tYGFhTzU8WCFVIVIoUFYKekYkPlZ5QnQtfGc+JDFXeXM4LSFUKmJq
c3pfMFpFT2UxODh4aFI/MUtlK0hTanVJRUg1dGlMezY3PWxsVmdMeCp7Cnp0P1k7N0NJfURPOFJ5
MjB0RGUoeyU2Xjh2UlJvRD4yOzR8eGd6cmlHeEdhJSN3cFg9MkMxRCMmNkptN2N5aVlfaAp6JWgj
Ym11azwteFo9dTFJVEp6aW0/WU0+bV5SRlIoeCZiJUBRTklGfnJXMmk3ZEgqUHw3M3h8WDFGfTFD
dmpUKEoKejdGLSg4U1UhRipeaSZlUSk2fTNIVG1lWiZ5MzB7dCZsc0I+e19pJV5SbytUUT58PGRN
WUB8QHp2eiVEIXVOMEYzCnpZd198RDB0MXtpczVqU3Y9PnxuZEV3UHtXQS1IJGgxTUlvYz9EVyVQ
Vj4lY2JTYH5HSTtoQm0zTV9zK2A4Pz5iUwp6IVNBbVhWTnE9MjJPX3x3c0ZDT0dUb0R7eE1faTU7
QDUtKE5WcF5USWtUV1NYVFhGS2t1JkpuR3VVK2FyM1N9Kj8KemAxKHVuVktAO3J2a1lVYTdJfHRx
K3NsPTFpK0EzNW80SVAxZio9KTNgNjgxR1l5XnNpek4zSzhWUDA8Sl9Yfkp7CnotQnVMOzlGQEY2
Zm9nZz09MjtxIzVXaj1jKHBpVitWeFU0bV9AOWc+XmpJPDJxMlRLNGREQ1Z8ejYyT2dZZUo9Ngp6
ekVKISFSPCVXYSlfV21tREVKR2cqbz9VcSpaTVFnVlR0WmVUP3srZG59JEZRYDR0UFpXQi0mc0At
cShiWiZIQj8KekQjc1oxQElFSHA8U2RLbSgkIyUmeFhtMHlhbWQjPEJ4XnFrbHx5Q25BVyNnM1p6
QzREVTBBZnc3ZilRYGN8TXlwCnpfQj92ZWIqRU08RzVLfXdwNGY3YjRDI2pIXzc3RFdKY2hBRSZS
a0stWCZjM2c2clY4JHdHcy1VJktrS18jZGIwaAp6N35vcmxUWUJKJWBXRmRsMWMxVyktXlRiSkBt
SHFTYWRXQnpSI2lzZzE1ZWBXKDAhd2xVV0t9Q1l5WjhWMkxGLVQKekFvPGhRNDRTY2gkJS1SRDw5
dnppen07U1E3c2szeE5QSXVOOyNqakQtUGJZWWNrKzZXaFBjOGprSlY3I0spXkhPCno/cz9ISlZ9
Y0dBYHl2YkMwWTdVQz8oRkRDQUQjJndTZlAlNXwzRmBmez1QZXFeSmh4cjZXSiYoTSlLUEdEPFco
Kgp6Umt1JTBGT28xQUQ5PDhzYzM+djdoaiM2bih5OXU4Rms7VSVFIXwhKlJyfFRmb2pvNSt5TEhD
JVhMdkZhdTkpRGgKejBZbD5HRjI4PWdPZ0tfI2BRT2Y7M0tme3FxMWtJY2ooVk0qXzdqIUtVRm81
cGhZIUxYXzB2VGR8Nyh3dDBPfFkyCnpWb1hOR29+Qik4Qz9+aU1OX3ZSTnlIXyQ0OGErQkJSTjBA
Z19EaWlOYiQoJilyaiN7YCZNNSN4UmZYO3leWkg9MAp6R3szaXBJN2tTSWt7JXlWJDVWY3p3UCpk
JFFTQGRnK3E9dlA7TzAhO2YmczBlYTYjLUVLUTtSfGNWMz87JUU4P1IKekpwIXxyV31HPUNYYWFO
a05DWVBEYWorbH4/enhDRXFyVHs3YkgqRF89aCp7Y1JZe3wqezlVVmpTaW9TOVNoRzcmCnp0PW85
JExePmh9emVINj1QQkVHUzdaamg5OWNBSj43dyVxIWl6dFh5MVBQMmpfdHBCXmFBO2FPU3VQclZw
I21XNAp6S3lAMmlaY1Awc1U8aT41M1A5UkFrUDZIZGxkZ3pHQzNyfGNSTGJVTkxtYnp4WVF7Ryt5
K3ZiKllScjJYdzVeUC0KelB8Ky0jT1dDO3BZM1VyP0dWUSolcEtWWEpvMHslP1hXTz1HdmFMSCFj
OVVJYC1ES09nSFE5RD0tezEzSWY1RT1hCno8SnxpPV9TKTtTJlJVPjlJUnNhKT80cj8hVz5UcV9l
blBMXyE/dW59XiMtU345K0pJbXY9KiNlTEE1RGg9VmBUPwp6UUBvTUpsUktRazZKYzJncUQ/Nn4l
eWdNMERGSmlWYm95NTJRQDhXTE8tNFY5eDVAWl9jZGk4eEgyWiZkdUlzT1EKejk7STdCSkgqZkZG
TD1QeU9pTypLTmhUITM3S2N6dUVSOHtTTSNrPUowR3JtfHNxYEJxLXpnbXlySXQyXiZjfiZPCnok
ODF2MHNtdChNIUk1XkxyWExUK3M5XnsjX1difmJ0I2VIb2RaSmFweD1MbSRKTipfUz44X0FvP1ko
KCtDQUBIPgp6X0RtdVBxNXN+NHQqPHwjV3QhdS01eC1afntxKWdqVTVNfCRkaDx1Q3YrdnE4U3tV
WX1FRnxuYntpPnp8c3VgalAKektsfWAwSSFgaT9yVWBLUXh6NTNCR0ZfK2M4U3xQNXBudihfeCM2
KnhjO318PUg2NipPITJfTzRFJG5xX3k4Xm9QCnpUS2ptfC1ffHB1QnV6PiFzcmcrfCRsU2tNT3Rl
NVEtd3ElT09fWXV9IU4jLSZMUnI9KT5XREAwNlRxQSVfdmAoKgp6I3l2Nih0S309Tm5LNmNMTTh0
JWstPz9ubWBpdncoMWhSalZGN2NfazFePlhncDY5R0xEVWVfUHRQM05fN151SHMKenN8JmF6P2Rp
JlE1YVdyPURmRipqM0QoMTVHKjZjRClNUyFqaEk7TWxwdGBlUzk0YkZgaTcrTy1FYFRkblF8ckBR
Cnp1IytJPUdjTlp6bkxEeFlYLUA9KXokU1d1KkdKMiE+SnFrUU89Zz8hNXJzQ3ZyKSl3ez8/Q1cr
ZW14UjlXTkRBYAp6KXA2dFNWYDZ+Zj5qPWQhTXM7WXlpblM3PjUqUUl0P2hzZE9yWmVYSHJjTFdC
Z3JmWSU+I0lWdzApalU5QDV1T30Kens5azQ2RTZJI21MNSE9TndFdTZ3VD1vPlBIPGVhKDxoeis+
YH07KkJWJk42PEljP0t9Ul5VZz85U25weVMrIyo+Cnp2aGpmdEUqQy12YXgoUTtYMFZVMkN9NmVW
XzNvNU5kVygtU1JXdy1CdEd8JHVLITFANHtoWjlfbll+MTglUWJ5OAp6WnwoY28tLWtSRytRQ1Mx
UXRhNXBYTjlFX3g/ekVmMTYjY3EhQUF9Xy16YXJubz48elpBNnsxPSRRNmFBQWU3dzgKenhZa2RL
cVYwaHFDS3J8UlEyUC18TUkrT2hYJCFKfnNSITNIb2txN3FuazJEJkxDcj5odzYlWlBOQXVVZTMy
fWcrCnohfmdUX2o2QiNeV29wOWtpKWhJfFhOWDl+P0lhelk/ZXRjbjApPj1jO2ZZRj1KZEh6ezUr
TzhrPUd7fENrb2RFVAp6YD0wRnJBJHd5RnM+KEV4NC03KUlyUTtaKlc3JjxndVMoTCFyNy03X3Fe
X1NQREBtIVRgI1BYSlQmcEpkRERBS28KeiRmPklmPW9jOWtvZCpCUFNYVU1aK09RUWpSUkxfejhq
RjlCT2JNe0pPNFowezc9Pz0pbz1eWElmS0g5I2V9WDhnCnp4XjBSaks3XjxBdGJYelVMZWkzN2lj
en5hTXplaTwybHckSit9NjQ1ckZsaVIhWjNYdnhKSVMlKmQocnwyKiMhWAp6O1ZDY0YrXlckbVIj
KkE8S2ZrPDRhaHpSYWBfXkVGRUFxN3lpR1hqVCZVcm5JZm9EWjN5ZDVMfjxpSllQcmFjNmIKenpF
MkMwbDFuJjg2fDI7K3tCbyY4IT5pbGpyZjh7UztKNUVWZXRCa1lfT15NaEBRbXhkTlE3bm81ez9L
MlVINn1HCnpkSCt8Xm4/d1R4R3Ricnd2TT50YVdEYU9gYSttSF5SdzYkOFhRbj0wTi0ja1Q3K3M7
JFclZXgrdzJ2TGhYI0I4Ygp6KClqQ08kbl5KMmY0RSt4UzI4eX1UfSZDQXJ2ejR5NVZMQDlxcSgw
Mm5AfSp9VzRQZC1jRGg2Zzl+NiVudmhgciYKejNEam1UdjNUZFZCLWJjfUM0VVhecjN5KGtkd0M8
NEUobUttanB1aHklWjh9Qi1vS3hLa0w0ZnxHM1pNS20pRjNXCnpUPmB5SW1TclN3JCNDbjFpeXVN
RWxQdDQpYmNAeEVgWDxtTChIUjlFZXR8ZyZlMEFPYiMmPV95d3VKO3FUJD9wOQp6U3kheVFgTHR3
KSZCaSs/emp5NiV0MFE8fiVCdVhARyl5Ry0+eW9mKUhWT0AwcVBZbj8qcVBEYWNEJkdyPlZ5ZVkK
ejJ1MkB8Y1pMRDdgT1FvKVB5UD16IXZJMEF8RUpIK1NOSHdARmM8VWV6MFl4KTZjTz4qYUEhTG9y
UXpjVEBoTS11CnpZRDIqP1FuSnZXPCVnMj1uVWl3KiM9SEo4Kmo1NXtsJnpBejxvaEdVQndoWktJ
bUhlUy1+RHRUPTl9RlhgKVQwZQp6dm5OcjVmK1ZkSDAzJDdIIUFDSGtJMVY5MnZvKG5ONnxLP3o9
ZCtNIVRFNWBldXR5cmVfT09ZbVRsWXNBVmJ0WEYKekdCZFAoaTE3ZlkpKVRASXNORiY/aC1eayFB
ezE/YCF+QGIrcWM9NEVPcEVZTjxAfV8ya3YoMiZrcChEcFFMMGI2CnpCT15vUFNULVY5eDlgUXNm
V0RkdmNiTGdnN2c4QjkqJkZ+X2FqfGR1K3Q7fDtEc2NJP25PWm0wWHstQ2pVamhTKwp6QDQ7PnU5
WUVaXzJxWl5MSTF1UW50UWwydlZ7bilKLWQ7fXlMY3x+I25FeWxwTiZiJiFiVChpRTB9T3ZqbFIm
JmcKeiVYVDdoRCh1dzEqbkN5Vi1ndjV7S1RWWio1M3E9VFE+Q0lLIzd3KkJVTHVYWCR4JWYxcFBF
MHAyeUM1SXQ7UGlKCnoyVTRveU5UNkFsZVlCTVkjLSZCWDBGWTlzPGIwT0FpKCpuKCtjfT85TXk/
UitNKm1UOTh+O0VMcEchTHxueTt4Qwp6VlhZcmRIOXwmNW5zQ0phPjkqOUwjOUs7d0BSRTd6TVRT
cEpOdjFQenlWWnAham9pbVJScXlENkY2bnNSVXc2dyYKemYjK3NDYXg5VmBWcU5qPmtsfnshSEsp
KGVKJFQ/elc0QkJ5XkRxRXprQXFeIzU4PT0+ankmamB7PmZDYlllTGRNCnoocWdKc0RqLSlrN3l6
LWtsWmxtbio0OWdOb3t8VXtoRGo4PUxBRSpIckAydSQmWVBlaipLPnhoM3l3TmxWKSk3Kwp6MClr
K2V7fVpUSXtRdFdxMFlgKEktQDdGRD9seihUTihAOHJKTjAwdkhsQUphKSg8eElxNiFRVnZWKkpo
d1c8I00KekxyY1hRJkN3PjFZUGFHe3M+OSY2WGVVYzFuSFdQeShseWpAOHpoYGFfbE5CezMlIS1R
Y3h8YS1lbk5OP1EoUDcmCnojdlU9RmdibDZUejBQdE9hdCt7YVdBblVhUkA5IVNNWEJ6NWdUd3tD
Wm1LcERvSDsqQzMzZHpNdTRub2M4dW1vPwp6M1VsTXc2amRGUzMzZX5YTjd6YjxJOytKeV5mVypD
SEMmKmMjKV5eMUJaRWBpK19oND9UX1NRc1VFa1dkbitBeTcKenswOUszMW1tQHZ3P3tEZyp2T01F
ckg9PTkyaiZ1SCF1KHh6Y2ZaJiZQSHlDJGFgZ0xGQH1LTTVUZ05xdig3MW92CnpgckVlSEI5ODJr
cnk/VnQ1VytPdD9rRzQrYHhzMkY9KytKZEhNS05XRVl+aFRDRWEzeV4kJCY5UnZOOXBVKDh9Ugp6
MnVBRHcpVm8wITNqbXthU0QxYlVKRSpiJjE5Uj1RUGZXYE4kQXtiMz9aSj1yZyNLPjQre2xKPFFT
KVAlP0NqRS0KeiY5Pkp9MmxjbSRoSDMkdDc9IXJmV2V2U2YqWTQwcXhKVW11ekt+VHQ3PjUxKXc2
TUVNRFAqKSM0Qyk4UFBEIUd8CnpSd3U7YFo+djVPIVp1TzlHNy18S3dEZW1iMWpOJGYrMnhYRSoj
STBWTTx8a3syeGc8SEZLMUFENCViUVIyOyo2Kwp6dCNmVkVTZStDfkxZSGVGWHxMYWpWQiF7KXI1
aldgNmB1UiRDJF9KczREO1NUWiteNTU7dFY/U3NsUzg7Xm5GQGsKek1tbT8waFJrTnZtQmchTlJ2
aElkd3ZnJmApLVI2X1kjN0t6OHsmJEtTKHZrSCk+OzEoTXwkbGk1ZChURz9qTFgqCnpueWVEV25u
eFNzV2RyYzk+eHxzUkZGPVYqbXh5MDQ4O0tKUj5NNjFMSWYzUkpvNCpQJWBQfUUkb1FRT0k8WX5S
bQp6WFR2QnwpRCppVTU5UjxpdjMyNmlgPEYzeCRsZilvZEMkemBeODMzbXZlOFp9RVdUbURKejBj
TlJvYzkjSW9zYXsKekRmI0ozZiFSSlV4SFZwdmdFNDElWmV9cCstO3VROzw2UUhQJFokNWV5KSUq
SHMzJUA7aTxDTFMhJl9wKWV8NmdqCno+VFJBU3Z8SU54Ym02QXRWWTVYJW1tQSspd0dwemZMWmd2
Mko1dnBPQyYoXl5nKThvKzU8KHBCVXJlUSVtfHZ+bQp6RlFNZ0RYXyp2YDZQJW9uazRORjM3M1Uy
Vyk0ZyMwVHtxQFgkdlclNzw3ZyFpWCk4UXtgWEN6JW0/R0owI0B0JngKeiV5cGpVQGszRCZPKXZn
byt1VHN7OE9EdiFKOEdpYW9mejR5ZWhsQHU+OWFEY0dTblFKeH54UX5XV3woNTliVzZGCnpEcGRR
elhlPShPMmpINyR3d1RoUDBCYExsUF4qfl8pdyFUN2Q/RU5MYSNBMjNAc3QhM2A4USQ/aGt4V35z
OzkjUAp6b35YVjlYKz5JfjJ+aWNsZTNWd3s7Vk88OSslfU4lXn5Lb2JAS2sjKEgpMGtwRGBUUF9k
Q0w5dT8wbHRJNilxKlUKelJvaUV0Xk87dyg3Qzkqaks5NyZCRi13TFdaZiNHK3J6NDwxalI2RGBe
a3Z+TTtBclB0MEM9aWpgMHNoY1lEckQhCno0KUB3cXtjMSVHOz5hYVM/Ylo3JnpeWnxNekEpbTkm
KGhLclUzdXBGN1E+VCgjT3FlWntsfj02dm1lUnZ5RCE3dAp6JUxlKSNyeFMwcV5pd2c/b0JpMCVC
YUp3YHk0Y0N5NkQkOyUkZyViOWp6YnE+ZDVNbDduRSVWNkd9SUU0Sz0jTGAKeiVJcCsyQilCPmtN
NmtiRHYjPTZoYVF1VkNeN0BqKl5xNlhsUj8kaHU2SmE5LSotbjJDIzRhRXt6SztWSWx6dTVDCnow
a3I5ZFRWeS1OYGtje20jNSNGYUowRWpXWjFjRTYzYlVUSyY+ajkqMXFwM2oyQ3FERlRxfThidllR
N08yRDUmewp6QyktbU0/fCpsdz1pKWNKd3Z2REV6cShwfUshZGJWOVMpezVKeVloYyU3VFUlOHtl
VUo7QWRndVRtPkg1PCRyUkYKek9JITxsPlUtNkNfNmNpOFheO0F2QTxmNEI+R0NoUihVSj9Wb3ZP
M01hTEZ3dmYqP2h9VkNvbygrKT1YNV5kNWVQCnpXI0lJZnAoPFFGKWlAZDckeVkkWjtEYHxAR1dk
KCFvVD9KWGRkJDFacH5FT1N6bSZrSGJqSl8taFo0eGVmSnRBLQp6I3xLUmpqbSUhfFBlUn1gdSFM
fXhtQGk/Q3hRSndPTz9TeFhAVVMxNmhIRmpQOVN3YyltJnhNPUU2N0M/WC1GQUwKenElZiFsMENM
YmpoVEdjWCFzY1YkJkUxSTtqQk47VXchZitDOzJvU0NIbm1zc0JJUnBeNmV0Xz96cDVGPnhqeHYm
Cno8Yn5BS3VkKiVUMGFMP3RwNlBHfWhQTD98T0wxdWJ7VnMtR0QjaDl1XzM9WE1JSlJWYCljJnlC
QnwjZk5KVkJ3dwp6cyMqbWhPY2c+cTNXK3NpXmh2Qk4jU2FaKVZvI3spTkZSbU1BZjVXUis2TzFH
N0RiV3wkJHpaZVRrZmtlWF9xbEgKeiRRe3JTMn5MeEtWK0ttJSFmXnhnVzVfUEJRQ2BnflJ6P2Q7
O3s8dCVnZDhzUEQ/P0g3cWU5KmFwIXBrYTlfR3NRCnpKSnhzMmpwQnhRTnxMTzEtJExWNEVecGxq
I2tiaWF6Xn5SUSQ9Sz0zSWE7Z04tZHp7PSFFZGFmdlFZKjQtYDFGZgp6RTFZWjYzbTs9ZzRkbkRD
U0V6YytJWXxWK0ZiWDhKbUBEYkV3TDVueHgrJn1tWmdiO0ZfaFF1SiREfF52WH0/WSYKekkwcCZ2
SF5TdXwmPXJHREhTMGAye1ptXkpjPDl0Y2slKDdpe3BfWnFEaV4hUHcjVnhQUGh7anNIYHx0U1Rq
TWh0CnpJd2lHWUtnP3hNWWVNd3pAWVNIZWNBe0U1KT5FY01eSnxLPjNPNWMrWWBwc3RJLUBBeisj
WGlWeXhfI1JzRnBRPAp6b0h9Qz57a29ga1RSdFVjIWErYERJQ0R1dldqQE9PbmJHeDhCSE54bVVL
U0Z3VGl6TVhxQHdkUWwkOyUpXyZ+KUoKenhuRGVCeUJSJlRZSkM2aUFOKjBeKl9lfjghOEFSKFdl
dz4tZ0w2b0ktM3Mmb0pQUUdEem00dGcrY3A4ckZiTX5PCnpXYkVsR3coTlRyVDg2bzRHeVVwUGoy
PSFjS2I3TmRnZUtoaTdRTU1LempaLTkjR2AxVTBEdF5hTCglODk+VlVzcgp6QipQaVBFUSpZT0E5
YjUzR0dKP0hEMipBWkZ3dTlgKDRFITFZMFRIOHNBb00jPkdaU2d5JHBUO2plZn5JYGtuNXsKelBu
JTg/YnNnJShrYzlpV2I2OSh3eighU1EjTHZuPnVsTn5yP1M7cV5zVF9ITGclPUEyTDVeIUsmVUFH
WCNNUz8hCnorS0s1ekRkIU1De1dgPkIkI0FsRHNGWm4qeyExeEdZfWpycWYhQnxUbSFyZXw2KHZW
RGIkPDxzOz0qMWNOPV9XYgp6OHZefn0hRFkjXmxrKlB8SFJqen1Zc2pDaHRXfTYkJXtSQWNgQjdQ
YClWSXBZYlZEUndEaWhxPFl6dVB4eWpoU3kKekNwK01BK35tJChRfGZuKG4mbSlkO3NkQFppU1h1
JFRsXjJUeWVHZiNJcylrcjxKZU9lXm4xMT48d3dQKjVpa2QwCnpHbTBxYDt7aXJhcWg3TT1LOS0/
VyZ8KXIoUCZMRjVKdkVFUTNEbH11RUx4ITl4Rz5wOEAhND0xbzN4XzIlOGYpMwp6KH0zRF82JGgo
ZHVEVVZHTHhBcmlwXjZfRFMrXjMqRlVlRmBgSHpVI2UrRVBCJThkKHR1PldpLW94dGkoN2JuSjgK
emF2NGl+UyNMa25DSnJLQkF4a1BVYWpYTzxOVW8hSWhxWGZeeXs3cT4qRCNGfnhyJCtLMj1rajcy
YlVYbiZ1cktqCnomel99JFZCMCZjeDU/QzgrRXpuKmN8TlI1PCEleEdmKT5hMSRzX2ZKVFNqQEw1
VTFXTHFxWWRCaihrXypMPTV4Sgp6Wk01cmBOM2lQaEJ8NEdsTWdFK2V1KHAjTDt+d21jKDJITHBU
OTh0MURTKXBaSCZkME9UV0UwSGR3Y3VlWiRjK3IKejExU2lCO1FNdjBJWHkrbEckMllJbGc9X1RI
dyRMZG5IdVdLS3JTcEAlLVU5SlZVKzxkR0drUn4kKXxSemVMRSQoCnpFRn17YHdtZTEtPjMje1ZH
Uih+MSVSK2h5UVVnYHhiRjMhQjdhdiMqJHNvfFBAdjx6fTYqKD5+VnR8e314OCt4VAp6JVRRJCgy
IWpLeF43YGswak90KSFxKU8qP25GaGBieFMtTUpASiZ3ZmdJWEBDVTkpJClCe31iSGctdlN4S1ZD
VmoKelFYPE11bWMqQSomYCh5OG5yYW9uKXpGdDc3Q3dZTWAzM0xva1Q9UDBtYFhgQWo0VylsNkd3
QFJpQmErZnVXOClMCnpBazJ7ZnRtdWU+MXZjXyticl4tYi0qYyo0YzRHRzdWakIjKkZGWThKTUxm
aUtJdF9iLWFTI2I4VlFifjA9WDxpdQp6KDdvPjlnfThyU2JIOSV8OWU8I3khNzhvUm5vIV5fIShW
U1hQN2tlOCRxcXduRjBlS14kJW1rcTJpSGNvPT57RWAKeit8d3RBOHM1TjMmO1VnOEk5R0F5bmhl
NSZAcT1ldCYtYGBDZCg9YU9zZCZ1fXcxM241Zks0ZFpHUD53N24kQWNLCnozSSYoYW4wUXJYLWgp
N287NlY0TTN9TFN3Z0xidzBiI1Q2JEhlSzJMQ1BwNFJDRkBHdjVTbE0+cUh0UE83WWtUWQp6aHVB
PW87JFlNUUBVVk93P3p1fWNwTD4yeC1BR1c5VXRrYXVqemJxTiVISkV0MWlOVHp4R0RLUmYxeXJ6
JG1gcGgKekwhantOdm1OTF9EWlhNb1VVd2w3K2l5IStfMHkrSkN2MyhDRDUjMSpfdkc+NzckUTdB
SiErfns2YFBKKmExOVJ+CnpCTWtKOWJqSD1+Sit3dDwhdX1yfjRBcnRyWkxhanQqOUtffW5geylV
Mn5pfEw0UCl4fUNDOHx+PkBCYVBJPCMkKgp6QiY2SjI4a2RDT0Y0LUlwM29WRTY4I3NQQm9LNExN
TUY4JnJPVERDdWdqMCtIZ2c7YD9taGY5fkhfTTU5OHRDNkUKemszMUlTTFpLUEkhOzxPdD92a1RT
aFdtI0MrSUo3fkYoQEcmUSkxMFk8YXUxU2lTSiozSG9eZ2lvZ1FqSC1aSHVGCnohcSFQUShTejc8
I0o1OCEwISQ4fGglMUwhYWEwUUQ8TkxUcG1oKyRnO0w3fDFWdyRLSDt8KzE0KVN+bjNeIUtKdwp6
KVNmPHghMHBVZnRPYlUtXmpLM1E1WTFiS0p1OVhPdSV0aCM7akNTZFhVfEE3dFN3JERPUlhlKTt2
LTBwSXxTKkcKekNtK0F0VygkWnk7QldiUWEtVWpte1c3cHhWeVFNfDUpYkopaW1vNXpnSmpMRW0h
b1U5I2QlMHdGPWMlJlk3JjtZCnpBSXtIbnM5VHx8bnAwM2s9clZqb2dlXzF4RGZnNTRmSXpOa053
N1khRkkmO08qX0h9YCYoN2tlKlUjYXxOKHxSRAp6WChaYzFSbSVnSEpVPUorMTM4XmtvS3BldUc5
R0ZzXmdLfFgzVz9VeXQzNFBYUk5+VXopSSg5RyU0Kjs7UzF8NUIKelQwdTMtUlR0VThQKH5La2NJ
enV4Q1BOOSQzVyh9bUVGfSpESjZoKUAkYUpPRU8lTSRTMUFZSWs/NER4fio5R3Q/CnpJTklPUF50
UnxTc1VCOT16YSFieSs8UGBnN2xqcUU/QClOMFhCQ3ckeUJnU1Y3QCh7M080Q1NXeTxkIWZnbG88
JQp6MjhHQU1JXlZndWp0Nk5TRVFtandDbkVCJTtJSWJEITFfJmVDbjgqMkhreD00KFYwc3pPWFRf
Xk5aLUZwMmpkZzQKenRlTUtUTSM5Y21Naj5TMmtFUiZOdTxuI21HdlM0VWMlZSo1aykrWDJxVTJB
cDF4Y3QrKE94N3xGVEN9JE9BWDdMCnp4OXwhQnl3YHQwS2s2OThoUTAjNUppLSFuUG0+fSh1SGw1
YnZMS2hiKX1aWlRLUjdlJT5FUDlzcEwyTnZfdld6Rwp6eFJJVFNta2ZwI2hgKWxje3kweEVBUyRN
ZkJFYERzTDhkfEl0bHA/PUdHVSVNUTgzVzlgfG9PSjgmP0Z7d0A4UD8KemYhPDdfRVlKVkkoLT5F
TmFfWEwySW1kJTctNXZJNSR8VV9tYFIyYnZXUTN2PD5oXjV1K1pTPGBzPXMoYWA9fSVKCnpgO0R0
ej1nQUlqQVZUPX15ZTFSQiFIaWU/PDlZYVZsSDgrXmZzR2t8LTZNY0NNXlRNX0BgRV4/ciNeYmFf
XnVqOwp6ZCllWEBiNztAdGhGdXVhVk1PNlZ2Oz0hQ0J2SnBzei1HM2JyZGgqVGRPM2w+M34xQV5x
WHdPYiUkJDBkVGQqNmwKejMxRkwyRXVoLVR0SUY4ZiZhc1AxZSE2SXFldmtXfGZZeWV5XzBpe1hq
bV8zaUklZllRVW9HZ0E8MzZkJWIlIUJuCnpWKyVMaFdkSVAmIUVDazE/OVZjJnEjdnlEdTFQckB1
UEBUeT5uSztMP2ckRX40aFd7bShgMCFoZ1NVYSo2Sl9NVAp6JEQtMGkqNSlqSiheeGFDZ3c8Qjwh
UVVGUy1wMCEjQnR8ZFlMJEQtVWZjQEx3QkdhZnRRYmNSPSE3KSk3VWclakQKejtaO35PcUN2d0JH
MjY5LTY1OSF7dU5tKk9lQVQ7ektOZ2QheVFuSF9MJWJVS0hEbHIqQ0VvenVsSVVFd3cpa2g8Cnpx
V0BJVnNZPUVTcXgyPWBqM3Y9bkNpVj56LVd6RXF1VFhpZVd4aS0kMng1dCgoLSR+T1VfMnV7NjRP
QTxibX4xUAp6cSFAZ0ZeUnp6XzZ5M2orR2NIMiFNNSowNWpNZ3cjYmJtY3Y3MTZTOFBVUn5LQ0Aq
WFNpNjt4PDMjOUJOQmZmMnYKelJxUGQxV0U9cW9QUzRzRjN7WmI/JlFJT2FWRUNeMV5maGsxbyFe
T3E0bG8xbkBMKE4pdSUoUVJzTiE3cnBHa1c9CnptQComRDFCOT8+O3I9T2cldWVsY0heUG5DSH0/
RUFKZ083ISM1cGlZMX1tJDltSSE7Ul9rMTNNYlcmTHtFQipmagp6RDFlTjAjQkV9KHJ3XjR1cm9l
Y3ZXdlB+ZW9oWmgzNSlIclpWOHBUQiFDSHJCaj9pQUpFVFQ0QkF6MllNU2hNIzUKekdEUGh7SDUy
ayh3dHBpJGVZeWluKExVNW0zNCoxMElaT1JfJGZweUtYJiVmeipORngyLXRIZnxkPCZ3MEExeU8w
CnopQCtkKnNOWlhUbXVGZiNkOGM7aEs2P00tWHlMUXhkfDllPDN6OXVvZnNHNitSRDZiTmtHbnpJ
ekhJaXpqKVZwIwp6OzIrX1FxMCpldTF3TTtSeXMzT3JUYiQ2P0tTMCQyc3JCPXx5JmQtPXglaUpS
M0gpQE5XOytkb3V4PWJsUjhZWn4KejxnIyR9cXpKPEI2ZVN6b25iUUJFJWZFNSsra3BVYykkQzVL
YkZKS3B3TGl9P2pQdigrRk9NKzJ2KnEmeFkrNVU+CnpIfXJHI1hsY0x4anJafSgjZyZvbyl7X0BV
aT1AcH54KHl6JFJkb3tBSVg5bE1eWnxNZmI4M2JtcFFsXlFgcD54JAp6X2JxMGxMWHB5O2QyKl9S
NiVYeF55b19KeXg3JmJpMnZJdjBPTV82V29tdXl6Kj8je0EzayR5MXs7MGkkQUFAUk0Kek9mZlJU
PS1PMGMjTHxyQ2RNLSZuYGYyTVhqYnF4Uz5gc3xLe2ZnVUIkczYxNTVYPUVtOXcmZT57VndHazA5
ITBBCnp7MEoxalJRKWRzTFoxP2oxMXJobDZ5Zk1gciV3QzNYT14jLWhEPCQqbkA4K3g1bnlGPUoh
MTV3emczNz96OVl4Owp6UE1Sb29DX0RxKV8qOGRjQW91Tz9NWilgc3hNcGkoUXFIJTM/VUNCVGY1
VipuMVd3UGBJTmZIbDZoZUhBenYyMGQKemhXdCtUOWMhMk8oI2xGYGM8U2drMzJ8K0E4KFVMZDhK
VXdCb0o1NVZUSnVSY3M1UVB6N0xHbkwkQkshY01lY3FtCnpie2pFaUZYfHskLStfPVUhRUBAU3Z5
RUpkQXleS0JLeEIyQkVqeWhUbzF4N21KVj12X285ZSZmR0Z0cjZ7NEUhRgp6ST45cEN6TFp8Ui1Z
WVhgPmIwdCN5TmxCSGUlRXR7WjFOWCE9Uj9IZ3hrSiZYKHcpVlJrNkp1M2xxa3h1SzIoaEAKenQw
bXg4eWFHU0NaYzJHSjxFZnN7SjBvJllSMXROKHpReSliPFJ+TD1KMnZtYyR0JFJDckVhKjAkSil1
TlJ+JXZBCnpebCNkJSFyLSRIWUNreGZAd08qWUhKMFYkWHtkaXpGKV9iJFZeJUkpUWFDdGF1P0Rt
YGwjdlZrMTRCMFdPSXhmaAp6PiVtNSRVTDImd24mPj9QPktoK2djWG8hK05XNj5yZ1QhZGhgeVh5
ZW4wXkYqc0U/cjM8Yyh9TXlja2NhMkFhOW8KejkwQkZMMTJfSn4+bElrVUc/MU5HWFU1UDFgNCNZ
bTJ+U29gUm1UR2dIQi1MS29TOEQwN0Z1TUcqRWdWbVlMfGFyCnpxOTB+ZUxfbW53T2kjUyg3RGUp
NE9mPz5sdjZVdCljeG0hP2hiNSRyXzllQGAhUGNBWVBVZXp3Vzw1T0hUJFNPMwp6QEszejVKVGFt
TFhaNXYoOz5TbG9Hc0smbj0rQCgoM0dxYXNsS1VJUEU1LW40YVF6aD8wPjR+QlpaandwaX14djIK
eiZneVU9STRIMy0zODBIWEoxNDVlSWJATl5YQn1aPWA1MHxXKnswbFJYMiM7UzJ2eDVVTXp+Png3
aH47SF83azRhCnozYXFmekgpS0I5dkJCO1JEMm5KOWhuO2F6MTZmRjdvJU82IV9gfiZwYWNYJlM/
RyklfldtIS0hTHZiUEp1K19JVAp6QjwpanA7c1cqcDQ9c0omOGIrekx1b0FFYWhhY0VfNzxNPShZ
MEpPXlImKXAoYE5RRHZXOXNXdiZSNXplQ3BGcCoKel40fVNRdXREYUJhREo3X2NIQTx6bUdyYFc8
MytJSV5pclNBPj5pNyp0JnRCWUI3RldqSmdFN1lHbnFDWExlP2FzCnpYa18wVXNzN2hOa3FfTkQ3
KWQ9WCp5JDB+Z01sI3REQllxN1d8LSRuKCRXWVBDYlRocFdRWm8rR3M7a1U2U2M+KQp6KSh3UjtX
PUZwTDQpZnwpT1dsUS1OM18pQnooelVramoxVGJHLVJRJm1sQkhFTThuS1ojVU1xM042OUxhVjF6
QkIKeks1PXxRMWM5bjZKSnAxeHFNSmIhZm1fS3U2eWliUCs5T3QhbTFLX0t0Y0U/JFo0RWNrT0I7
OEI3a0J7SD4qcV9+CnomTWIxTlh2IztZJT45SzR1MT1BRmR0JSp6KD18RChNYEw3aDEmKDwxZ1N1
a1chWjgpZFlAKHc8dFJjdDRjYilCSgp6dkghXjdLMmE/TigoMmdvKSM1cX0mdWM2VmgjIT9nLSlZ
UXUtN08xYVFzMSp7QSNZWHo7XmhsY2RPeD9EIX02R1cKei0jKDgrbjNkT3NueUl9djVyKTQyKUhj
bUNhezZVYWdiX0J+JFFgK0hJanp4Zlh9UTEkKH1MV25fdVFTYSl1YnBiCnp5WH4mKygzfFlDKWtf
IT88JiQkPmNAby1PemBDR1d4P1U2RTJlTWVBQyZMPW9aSlledT5JWF5NUVlFejVDfX18Uwp6Nlg3
fmJNdjFRXyQ8VE93KXhFMnxEOSRfSTFmSClsZW8xbVU+OUkhZms8cmI9LWdtWlFQfTxGRldxIXMh
KmRBakQKenhtXjFyO0B8N1kqZnRtOWJ9eCo2U35VdytLRGVMdGpjaCZ6SSZBLW44NThNc09yPT0z
diQ1TnlHTllIdFVNRTdzCnorO2h4SDxrZFo/QmklSF5UfjN2blV1IVduIzVtbTY3SklYX3F2Smtg
OEM1TU9BcnkrI3s5TCM7ODxPSFRqcUsoOQp6YUg4Wm9NN1lTez9LQm48JSlxfnFtMHowWU94MjN3
S3BMVlBlZXk4PzslQD19WTklR18zRWc5WXlWcmVUaG8ybjUKeiM9RmdhdF5GVjdIUjt3ZCtWbkEm
XlFPK35JLWhJey0pRiNkclFtVnEmIUwzYFlmZitWa2c+d29sKyl7cVI/cU1LCnomTjhgR1M4JGh5
OFF3R2tJWShXQ1hidD1pNnpFMztIJkRibXV3ZFNvUVg0c0NYKTsyZ3N9SGZgJXMkX2FNVVEoMgp6
KDUoKihUQS1tbSorZlNEVWkxNFI9Mmw7NDxlU25PeD8/ZEQ+ZkBmOUdsVCZgNHZ7P3gkcWIpeGVL
eDlkc01aaSoKeikwRXxfVnV7QkpRQz0tdGpfaTJOaWswbi1HS2BiNG5kdHg8eFB9dH51alh9TTJg
S3psTHcxMnZ6ZVRoc1JKLWU8CnpQVWRKTl5teEkwT35HTy1ycCtELTBjMkxrTHxmbU9ieztrRyhV
eTBuTlZaSnkxSjlwOT90KnlvSS1LPV5wRXJsJQp6YWYxYGZUfXRsKD9KcURCcDNJUm85dCFUI3hE
aGFVbUl3WUUjKyFkOVhAdGU1UFJfSFp6WTZ7VTVLUDU/Jm19dm0KenxKVGdJVFNnOHNgYnBzSGl5
fEBzOSRpPldfPWZ3MTsya35xdkRkRTI9ZiRESjFERFl7bHJTVEh7fWVjZSsxO3YmCnpGKDg7Xk4r
Q0hnc08rKSVSamd3Q2lCbGkpPVZzbDs2RkY1WXIoMXdVSj5nJFlvTGxOfkBkJnhkWUhuWFJgUHRi
Pgp6Jm53c3kmKVhKV2AzK3xBSUdMIX1uOH41TTc+O3tVaCNTNyMxXjw9JGNAeCM9PzNoYngwUyN3
WD5iSz5mRmQhMWMKem1nbUFvQ3ZYMT9EOytReHhoaUBsQigoe3xRJSo2OXBmZTFJZXR8UUQlWG5E
YGMoVXxsKEtxeHgzemk3IWdEZFE7Cnppaj5QS2dnJiR4QzQtfXZHcTRVMDh8b09gVVk/S0BCeU1f
UG9lYF9GS2ZWPjRgYms2PUoxIS1Zai1eY2RuPileaAp6TH40MTU5cko8SUFvbEV7VCNfSHQ1UlRH
NzEqMXg4WTtieyR1Zz5zJjFkT0tvZzk7T30xUyg+MHJeWjJAPnUwUUYKelYxYn58NT5vcDArOFVW
R0cwaUMzckA8UnZpbzspIXUmOURWPXVYNHY9RHRDdSYleVZYNElfMFVJalAoOUkzUFg+CnpuQ0Nv
O3pfbDt+d0dUYlppUm16LSlSR0llNTt7PHgjeHJvVElwXkQ7ZXQkNF5RRWBrIzBBTG52WCF9UEk/
SElBVgp6Z3A9WWcoIXhCYG0jWD9ld01GKElDens5cFZTYkhWWU5NZG1eQn1VdDNmWTFyJFp1Ulko
ZE1rSntZRmhARXIlUV8KendFZ04tXiNFJUZ0KXRVPjxMN3wyPSRXQiMpP01nMHF2KTRkR1dxZn5T
e0xnc0J0YF8md0tReS05OGBmKFd0O0ZwCnoyWk1SJllrUloyajM/RiYoeXNMSzV0SGlRRnF6VkBW
fVRgTUt+ST9sZjxZamQjczcwbld8RF5Ce3tfeWVOekVaaQp6U25FWkllVCFVT2w9Wkt0P0FZZVZy
fDBZSSsmVDE3U1NyLTs8VUhvIVBCWE9+NSFWeHB7cy1BXmUleG1vV3dfZnkKejl7O2FMWjVRWD1N
JTExWCFDfWJUTVdoa1YqYCt1PGBkdzh2OXFyblFSK2hLNHR9WFhQKW5JfSEjeHZ5e3RtRUdpCno1
RT0wSl4/PT81Zig4Mzs1aVYtfkV5Q3s8Y0M/M3AjcUcoVkRaYUpiK283TkdrOGo1K3Z8ZTNRKmMj
ZXdlJFJydwp6Tk5Cfkt6cUUqPSQ/QksraDMtTUhicE0ldTxfcGxKYnc/Xnh1fjcrYDNJTmx6PVcx
emZMWnJBaDx6d3UqVF9jK00KekJnWHZtQSRBSVVyU1JwbElEWU5aSUFRfWJWbVcjdy05RENaPT1u
NDZIJDwjYUluWnZNN35BKzJEVTA/V3MjJURrCno5YjN8P2opeVI2fER4TlZwXihQUzBjP3FhRVRP
RU5jYnl1ZDFGPUpyVH1RVm83dCtkZTdaSyNycDI9fkJZUH07egp6UW5LZHM+e3xQfDAtRDZ0Wi17
JDVkI2NXcChEcDh1K1U5XiMmen5NZFcjPHFkelA8RiVPbzJQLU5LK3xYWE9ARW0KeiY/NkZLJnhN
ZEJ4bXVRd1kwcF9tVTlPYTIjI1pxQy17fX1HPmlHaCs7QUxUZ3VGfip0a2hPIXoqXkR3M3l4STdl
Cno5dXk4cHFyKSRHNml4fEcyVklEaEE0LUFtVTRNJng2bXdhQXNiP197Ukw+QmlVezVLaDFZe1J0
JHJKVj4tWVNJZQp6KzU8eVRTKTA7VzYlZXZrSmJOan1qfiMoajVUcCE+RHJRVmtQN00jcWRAa305
UyVOOFUkMCtUZVNfZWx2JHYoSnoKengwYDlhTyVKczUjNVRHbGpeamNtNzRoMG91N2JKYTQqP0ZV
dUNrQEFLOTw8YDJ5OHVzaFkjYXghUF4+T3ZydnVRCnoxTEpAdDYwUEpAM1BpXk9ZTTspMyZNJnk0
XklmbnVmN05QNEc7V3V0MVVmMypZN31nIVNtSn1OTipSViVJPSklVgp6R1gjJnZQRS1+R1pGR1Ve
ayh1VjZaZnZ+SV48c0MjPjByPjdJQEtsO1dLPG1jY2RrOSRVdTM8MGYjNEdlX1BAQnQKej4rQW9J
d3h9fTg7alpFbjBMfXZiUTl3UCkkbDJYOzY3KyNKN3prcDw8S3dIU0Z6PiFJYHduMzxQNzw/LU5j
QklnCnphdEskfnp6e2RFYX5+eEd2RyNLZV9ka2Y7RF5COz5pI3NUN2JWIXd8an5WSEpXRUVFez9h
WlhWNUFgJD1OfTlAcgp6V2olKTs8PEE2VUR5cmBLOCs/Zk8lYjt6VlZfPURkPEdlNkRMVzdfTE5g
I2BpZW53djNIKHI4d0YzbDJvI2hROzUKek1gd1RKe2ZsRCUrKVlBXi1kOEw8Qld0Kz1Mb25Gc3hz
eXpHX1NQYlg+MnJ5eEpYM0sySlhGQFNVfmpsNWc0Y2B8CnpDbSp1UFo5UCh6QCZaTlV6KmwlLXdg
YjUtNEpqYGdFYHo9LXpYeVctRkRkZm9odmZlLXZIPnRLRmpjaTRzVW4lTAp6NVNrYmxMP1J2ODY5
KmAtJUBvZyNuPHpMUmo/IX1RYCQqKE1DfHpLeyVIIzFAelh+P2ppP3FQck9nVGMlMDMrck0KentA
UH1he3RhYjZTSzUzSHU9ZVR8cDBJWlh0VSR5SjFwRFh6Pzw7YC1GaUNkO2E0M2ZSeGk7fWlUMTxS
X1JSfFVeCnp8TWIwcyUrXj1TP0tTdV9QSlMkQShjWGUwZnJkVWJOIUtpRVQhPXJKVDNKQHkkQXRG
QDE9KzAlaCRWRjxtVHsjJgp6dWNGJWpVOCM7UEt5Tj9nQFFBak5nPXFyTD97QHl0Mn5KV2F2aFQ4
WWF5aVh6OUI3XjZaeX1iSWRTZW9CdTlkZl4KejhrV0JINGtxcGdgN1BFUi1PI1A4R0wrRGotKUU3
QzhIUkZ2UX13c1lNPGE0NGVIMiRzREt+RW52UVIrd2Q0cmh9CnpKTzx9KDBDXlJDVCt6RDQkdylf
RVUjfCVzXyYrbyUkeFVVeVZ8QHF6bH59PWt2cEkhM09uTiNvLUZrY1lWJnUqKQp6a3dxRkFONXsl
UV9pRmV0UXNqTlRVND1YP1I7Pnk9eUNSU1dBNXpFV2wmSDNObyp0e2AyPSQrVUloWDZYSkNfdTgK
ekFsa1BzKiM5ZlpLO004USRVKikkVEdkNWNhWlV0VGV8dkczVmYxQzBoej5HaCNqP3RzQXVLSVdD
Pj8pN1lacX5GCnoodEV+enI7PntgRWxeVyokeXF9RCthVDNeRjFMMiMzUHIpSGlJaTBzaSt8ckxm
LX5KP19WQUQ4SGpaeWR7RFolSwp6ODghTUNRZFo/NGd+Zn1Le0RIaz4mPE9tRCNrRTVLe0Frb3Zx
dkQ9I1cmWkY3ZGtJMV5YenQwYWhZXypEPkk2LTQKekhSfHFGUEtuWH5nYVJOJEV9czJxcnVzfTIx
ZFpPb2ExI2g7ITlOc1UyWDRBNnNSd3w1cXZISldRUkN5cS1nbGN5CnpeRX4+KTJ7aFU0dUp6TD1g
QDw8NHNMViVieik4V1lGYG92OThfMVRGdis3TmtiN3F1aypgTVFwbXo/X2glRVQ7UQp6SyZVSzQ7
SXl2UDBMQ097RGooMzdzSHE3SWVicU8xRylQXks7bkN6cD4+NWh4eHhZK0duPU8/Vl91aUJeVEpo
fkYKej9LUmFhczEmQ0gmJWZzQWY3JW9gXnBFaV8+ayU+QXZ0fCg7cCRGa1FyUTU0JnYxWHFpZWh0
TUM2ZEBpQ1lBWXg7CnowQCFwcXtiVXMtSS1YeDZLcz54SEJlUitRc1RWIUhhTGImPnNlWFlAYHA5
flJMSWhHJUJzZVQqXjZnZlZLcG0zagp6cDN6Qz5sMGBATzhee1leUy17MXBXQztFPz97Nig+I29j
WElIOE97TmxoK1hwSUlIc1ApS0preFRWb3cpJEtxNEgKemAha1dIYSppMmRKYEBgNU1rbEQ4SzYt
NWtoa3Q2Wm8pcWdkSUlESDMrSG0qZW40JDYyN1N5dnY+X2lkZj1XSz5qCnp6S3t1TXBNSF9GUShW
Rj4xPCM8fFF+UnpOUyslUjJVI2w5KFc9NjdgWTYkUG5yTD9SfSNNOG1SNHlpfWhraSN5RQpuPEpT
O0p2YDB5KChxO3wqd1NUYHBedFJZfjVMaT5oQk1BSUQ1UTZgIW8kdm52aWJuKSkKCmxpdGVyYWwg
MApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJj
ZS9tZWRpYS1zb3VyY2Utd2VibS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRp
YS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5YWNj
ZmFiZTY2MmNlNGQ3ODFiMmZmZjkyODI5NDcxN2JlYjU2MGMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0tZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTUgQEAKK1RoaXMgdGVzdHMgdGhlIGFiaWxpdHkgb2YgdGhlIFNvdXJj
ZUJ1ZmZlciB0byByZXNldCB0aGUgcGFyc2VyIGFmdGVyIGFuIGFib3J0KCkuIEEgU291cmNlQnVm
ZmVyIGluIHRoaXMgc3RhdGUgc2hvdWxkIGJlIGFibGUgdG8gYWNjZXB0IGEgbmV3IGluaXRpYWxp
emF0aW9uIHNlZ21lbnQgb3IgYSBuZXcgbWVkaWEgc2VnbWVudC4KKworUlVOKHZpZGVvLnNyYyA9
IFVSTC5jcmVhdGVPYmplY3RVUkwoc291cmNlKSkKK0VWRU5UKHNvdXJjZW9wZW4pCitSVU4oc291
cmNlLmR1cmF0aW9uID0gbG9hZGVyLmR1cmF0aW9uKCkpCitSVU4oc291cmNlQnVmZmVyID0gc291
cmNlLmFkZFNvdXJjZUJ1ZmZlcihsb2FkZXIudHlwZSgpKSkKK1JVTihzb3VyY2VCdWZmZXIuYXBw
ZW5kQnVmZmVyKGxvYWRlci5pbml0U2VnbWVudCgpKSkKK0VWRU5UKHVwZGF0ZSkKK0FwcGVuZCBh
IG1lZGlhIHNlZ21lbnQuCitSVU4oc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihsb2FkZXIubWVk
aWFTZWdtZW50KDApKSkKK0VWRU5UKHJlc2l6ZSkKK0VYUEVDVEVEICh2aWRlby52aWRlb1dpZHRo
ID09ICczMjAnKSBPSworRVhQRUNURUQgKHZpZGVvLnZpZGVvSGVpZ2h0ID09ICcyNDAnKSBPSwor
RU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNl
L21lZGlhLXNvdXJjZS13ZWJtLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2Uv
bWVkaWEtc291cmNlLXdlYm0uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTQwY2JjYzEzYzM1MmY3ZTFkNTE3
ODI3ZTAyZjc4Y2E0Yzk4NWIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEv
bWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLmh0bWwKQEAgLTAsMCArMSw2MiBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5tZWRpYS1zb3VyY2Utd2Vi
bTwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Im1lZGlhLXNvdXJjZS1sb2FkZXIuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0PgorICAgIHZhciBsb2FkZXI7CisgICAgdmFyIHNvdXJjZTsKKyAgICB2YXIgc291cmNl
QnVmZmVyOworCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgZmluZE1lZGlhRWxl
bWVudCgpOworCisgICAgICAgIGxvYWRlciA9IG5ldyBNZWRpYVNvdXJjZUxvYWRlcignY29udGVu
dC90ZXN0LXZwOS1tYW5pZmVzdC5qc29uJyk7CisgICAgICAgIGxvYWRlci5vbmxvYWQgPSBtZWRp
YURhdGFMb2FkZWQ7CisgICAgICAgIGxvYWRlci5vbmVycm9yID0gbWVkaWFEYXRhTG9hZGluZ0Zh
aWxlZDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBtZWRpYURhdGFMb2FkaW5nRmFpbGVkKCkgewor
ICAgICAgICBmYWlsVGVzdCgnTWVkaWEgZGF0YSBsb2FkaW5nIGZhaWxlZCcpOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIG1lZGlhRGF0YUxvYWRlZCgpIHsKKyAgICAgICAgc291cmNlID0gbmV3IE1l
ZGlhU291cmNlKCk7CisgICAgICAgIHdhaXRGb3JFdmVudCgnc291cmNlb3BlbicsIHNvdXJjZU9w
ZW4sIGZhbHNlLCBmYWxzZSwgc291cmNlKTsKKyAgICAgICAgd2FpdEZvckV2ZW50QW5kRmFpbCgn
ZXJyb3InKTsKKyAgICAgICAgcnVuKCd2aWRlby5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHNv
dXJjZSknKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzb3VyY2VPcGVuKCkgeworICAgICAgICBy
dW4oJ3NvdXJjZS5kdXJhdGlvbiA9IGxvYWRlci5kdXJhdGlvbigpJyk7CisgICAgICAgIHJ1bign
c291cmNlQnVmZmVyID0gc291cmNlLmFkZFNvdXJjZUJ1ZmZlcihsb2FkZXIudHlwZSgpKScpOwor
ICAgICAgICB3YWl0Rm9yRXZlbnRPbihzb3VyY2VCdWZmZXIsICd1cGRhdGUnLCBzb3VyY2VJbml0
aWFsaXplZCwgZmFsc2UsIHRydWUpOworICAgICAgICB3YWl0Rm9yRXZlbnRPbmNlKCdyZXNpemUn
LCByZXNpemUpOworICAgICAgICBydW4oJ3NvdXJjZUJ1ZmZlci5hcHBlbmRCdWZmZXIobG9hZGVy
LmluaXRTZWdtZW50KCkpJyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc291cmNlSW5pdGlhbGl6
ZWQoKSB7CisgICAgICAgIHdhaXRGb3JFdmVudE9uY2UoJ3Jlc2l6ZScsIHJlc2l6ZSk7CisgICAg
ICAgIGNvbnNvbGVXcml0ZSgnQXBwZW5kIGEgbWVkaWEgc2VnbWVudC4nKQorICAgICAgICBydW4o
J3NvdXJjZUJ1ZmZlci5hcHBlbmRCdWZmZXIobG9hZGVyLm1lZGlhU2VnbWVudCgwKSknKTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiByZXNpemUoKSB7CisgICAgICAgIC8vIEZpcnN0IHJlc2l6ZSBj
YW4gYmUgMHgwIChNYWMpIG9yIDY0MHg0ODAgKEdUSyspCisgICAgICAgIGlmICh2aWRlby52aWRl
b1dpZHRoID4gMCAmJiB2aWRlby52aWRlb0hlaWdodCA+IDApIHsKKyAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgndmlkZW8udmlkZW9XaWR0aCcsIDMyMCk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoJ3ZpZGVvLnZpZGVvSGVpZ2h0JywgMjQwKTsKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KKyAgICA8ZGl2PgorICAgICAgICBUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IG9mIHRo
ZSBTb3VyY2VCdWZmZXIgdG8gcmVzZXQgdGhlIHBhcnNlciBhZnRlciBhbiBhYm9ydCgpLiBBIFNv
dXJjZUJ1ZmZlciBpbiB0aGlzIHN0YXRlIHNob3VsZCBiZSBhYmxlIHRvIGFjY2VwdAorICAgICAg
ICBhIG5ldyBpbml0aWFsaXphdGlvbiBzZWdtZW50IG9yIGEgbmV3IG1lZGlhIHNlZ21lbnQuCisg
ICAgPC9kaXY+CisgICAgPHZpZGVvIGNvbnRyb2xzPjwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVk
aWEvdnAtY29kZWMtcGFyYW1ldGVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS92
cC1jb2RlYy1wYXJhbWV0ZXJzLWV4cGVjdGVkLnR4dAppbmRleCAzMTgzY2E1MWU0NGQ2ZjQ4NDU5
OThlYjlmYjQxOWE5OGI3Mjg5NTRmLi4wMGRlYzc1MDA3OWY3ZDAwNGRlNDQ5ZmFiZjU5NWU5YWYw
MTI5ZDNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS92cC1jb2RlYy1wYXJhbWV0ZXJz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92cC1jb2RlYy1wYXJhbWV0ZXJz
LWV4cGVjdGVkLnR4dApAQCAtODMsNyArODMsNyBAQCBFWFBFQ1RFRCAoaW50ZXJuYWxzLnBhcnNl
VlBDb2RlY1BhcmFtZXRlcnMoInZwMDkuMDIuMTAuMTAuMDEuMTIuMTYuMDkuMDEiKSA9PT0gJwog
RVhQRUNURUQgKGludGVybmFscy5wYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKCJ2cDA5LjAyLjEwLjEw
LjAxLjIyLjE2LjA5LjAxIikgPT09ICd7IHZwMDksIDIsIDEwLCAxMCwgMSwgMjIsIDE2LCA5LCAx
fScpIE9LCiAKIFRlc3QgaW52YWxpZCBjb2xvclByaW1hcmllczoKLUVYUEVDVEVEIChpbnRlcm5h
bHMucGFyc2VWUENvZGVjUGFyYW1ldGVycygidnAwOS4wMi4xMC4xMC4wMS4wMi4xNi4wOS4wMSIp
ID09ICdudWxsJykgT0sKK0VYUEVDVEVEIChpbnRlcm5hbHMucGFyc2VWUENvZGVjUGFyYW1ldGVy
cygidnAwOS4wMi4xMC4xMC4wMS4wMy4xNi4wOS4wMSIpID09ICdudWxsJykgT0sKIAogVGVzdCB2
YWxpZCB0cmFuc2ZlckNoYXJhY3RlcmlzdGljczoKIEVYUEVDVEVEIChpbnRlcm5hbHMucGFyc2VW
UENvZGVjUGFyYW1ldGVycygidnAwOS4wMi4xMC4xMC4wMS4wOS4wMS4wOS4wMSIpID09PSAneyB2
cDA5LCAyLCAxMCwgMTAsIDEsIDksIDEsIDksIDF9JykgT0sKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL21lZGlhL3ZwLWNvZGVjLXBhcmFtZXRlcnMuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3Zw
LWNvZGVjLXBhcmFtZXRlcnMuaHRtbAppbmRleCAxMTdiZjY2MmU0ZDJhOTVkYTgzZDEzNzBjZTQ4
YzA0ZGExMjRhZTAzLi5hODNlMmY5Nzc5MDc4ZGI1YjBlNzg5NGY3ZTRhZjgwNWE2MGRkZmI2IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS92cC1jb2RlYy1wYXJhbWV0ZXJzLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvbWVkaWEvdnAtY29kZWMtcGFyYW1ldGVycy5odG1sCkBAIC0xMDQsNyAr
MTA0LDcgQEAKICAgICAgICAgICAgIHRlc3RFeHBlY3RlZFZQQ29kZWNDb25maWd1cmF0aW9uUmVj
b3JkKGBpbnRlcm5hbHMucGFyc2VWUENvZGVjUGFyYW1ldGVycygidnAwOS4wMi4xMC4xMC4wMS4k
e2NvbG9yUHJpbWFyaWVzLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX0uMTYuMDkuMDEiKWAs
IG1ha2VWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCgndnAwOScsIDIsIDEwLCAxMCwgMSwgY29s
b3JQcmltYXJpZXMsIDE2LCA5LCAxKSk7CiAgICAgICAgIGNvbnNvbGVXcml0ZSgnJyk7CiAgICAg
ICAgIGNvbnNvbGVXcml0ZSgnVGVzdCBpbnZhbGlkIGNvbG9yUHJpbWFyaWVzOicpOwotICAgICAg
ICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5wYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKCJ2cDA5LjAy
LjEwLjEwLjAxLjAyLjE2LjA5LjAxIiknLCBudWxsKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCdp
bnRlcm5hbHMucGFyc2VWUENvZGVjUGFyYW1ldGVycygidnAwOS4wMi4xMC4xMC4wMS4wMy4xNi4w
OS4wMSIpJywgbnVsbCk7CiAgICAgICAgIGNvbnNvbGVXcml0ZSgnJyk7CiAgICAgICAgIGNvbnNv
bGVXcml0ZSgnVGVzdCB2YWxpZCB0cmFuc2ZlckNoYXJhY3RlcmlzdGljczonKTsKICAgICAgICAg
Zm9yIChsZXQgdHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3Mgb2YgWzEsIDQsIDUsIDYsIDcsIDgsIDks
IDEwLCAxMSwgMTIsIDEzLCAxNF0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IDc5YTYzZTc2YmY0MTQxNGE3NTA5MzJmMTJjZjM0M2ZmYmJlZThiZDEuLjdj
NmU1NmE0MDFlZTNkYjk1YTkwZWZmYTVhZjJmZDA0MjhmMDIyYjggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xOTIxLDggKzE5MjEsOSBAQCBmYXN0L3Rl
eHQvdGV4dC1zdHlsZXMvLWFwcGxlLXN5c3RlbSBbIFBhc3MgXQogCiB3ZWJraXQub3JnL2IvMjE0
MTU1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1i
ZWRkZXItcG9saWN5L2Jsb2IuaHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLSMgVGhpcyB0
ZXN0IHJlcXVpcmVzIHN5c3RlbSBwbGF0Zm9ybSBzdXBwb3J0LgotcGxhdGZvcm0vbWFjL21lZGlh
L21lZGlhY2FwYWJpbGl0aWVzL3ZwOS1kZWNvZGluZ0luZm8tc3cuaHRtbCBbIFNraXAgXQorIyBU
aGVzZSB0ZXN0IHJlcXVpcmVzIHN5c3RlbSBwbGF0Zm9ybSBzdXBwb3J0LgorWyBDYXRhbGluYSBN
b2phdmUgXSBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0uaHRtbCBbIFNraXAg
XQorWyBDYXRhbGluYSBNb2phdmUgXSBwbGF0Zm9ybS9tYWMvbWVkaWEvbWVkaWFjYXBhYmlsaXRp
ZXMvdnA5LWRlY29kaW5nSW5mby1zdy5odG1sIFsgU2tpcCBdCiAKIHdlYmtpdC5vcmcvYi8yMTQ0
MjIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBp
L3RoZS1hdWRpb2NvbnRleHQtaW50ZXJmYWNlL3N1c3BlbmQtYWZ0ZXItY29uc3RydWN0Lmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>