<?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>204932</bug_id>
          
          <creation_ts>2019-12-05 16:57:04 -0800</creation_ts>
          <short_desc>Create WebKit API calls for ITP Data</short_desc>
          <delta_ts>2019-12-13 15:31:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1596113</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-12-05 16:57:04 -0800</bug_when>
    <thetext>The data captured in the ITP store needs to be exposed to WebKit clients through the Objective C API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596127</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-12-05 17:11:39 -0800</bug_when>
    <thetext>&lt;rdar://problem/57632753&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596138</commentid>
    <comment_count>2</comment_count>
      <attachid>384982</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-12-05 17:44:29 -0800</bug_when>
    <thetext>Created attachment 384982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596139</commentid>
    <comment_count>3</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-12-05 17:45:37 -0800</bug_when>
    <thetext>Style bot will be angry because it doesn&apos;t recognize that &quot;WKWebsiteDataStoreInternal.h&quot; is the header file for WKWebsiteDataStore.mm, so it thinks the alphabetic order is wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596234</commentid>
    <comment_count>4</comment_count>
      <attachid>384982</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-12-06 06:49:57 -0800</bug_when>
    <thetext>Comment on attachment 384982
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:74
&gt; +- (void)_getITPDataSummary:(void (^)(NSArray&lt;NSDictionary *&gt; *thirdPartyDomains))completionHandler WK_API_AVAILABLE(macos(10.15), ios(13.0));

Can we avoid the term ITP here? It&apos;s pretty unclear (at least to me) what that means, and is not a term we use in the code with much consistency (most places seem to refer to resource load statistics).

Also, rather than returning a dictionary, it seems like a strongly typed objective-c type would be preferable unless there is a really compelling reason this needs to be a dictionary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596882</commentid>
    <comment_count>5</comment_count>
      <attachid>385166</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-12-09 10:25:59 -0800</bug_when>
    <thetext>Created attachment 385166
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596883</commentid>
    <comment_count>6</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-12-09 10:27:15 -0800</bug_when>
    <thetext>(In reply to Sam Weinig from comment #4)
&gt; Comment on attachment 384982 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=384982&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:74
&gt; &gt; +- (void)_getITPDataSummary:(void (^)(NSArray&lt;NSDictionary *&gt; *thirdPartyDomains))completionHandler WK_API_AVAILABLE(macos(10.15), ios(13.0));
&gt; 
&gt; Can we avoid the term ITP here? It&apos;s pretty unclear (at least to me) what
&gt; that means, and is not a term we use in the code with much consistency (most
&gt; places seem to refer to resource load statistics).
&gt; 

Agreed for consistency it makes sense to use resource load statistics, thanks for pointing this out.

&gt; Also, rather than returning a dictionary, it seems like a strongly typed
&gt; objective-c type would be preferable unless there is a really compelling
&gt; reason this needs to be a dictionary.

Good idea! The patch I just uploaded adds two new classes to hold the data instead of an NS Dictionary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596912</commentid>
    <comment_count>7</comment_count>
      <attachid>385176</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-12-09 12:00:10 -0800</bug_when>
    <thetext>Created attachment 385176
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596914</commentid>
    <comment_count>8</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-12-09 12:01:08 -0800</bug_when>
    <thetext>Changed header files to be Project, this should fix the iOS compile failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596951</commentid>
    <comment_count>9</comment_count>
      <attachid>385176</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-12-09 14:15:39 -0800</bug_when>
    <thetext>Comment on attachment 385176
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKITPThirdParty.h:31
&gt; +@interface WKITPThirdParty : NSObject

Nice. I like the concrete class much better. 

However, kike with the method, I think it would make sense to stay consistent here and not use ITP in the name. Also, since this is being exposed as SPI, this class should start with an _. (Both comments apply to WKITPFirstParty as well).

&gt; Source/WebKit/UIProcess/API/Cocoa/WKITPThirdParty.h:34
&gt; +- (NSArray&lt;WKITPFirstParty *&gt; *)getWKITPFirstPartyList:(Vector&lt;WebKit::WebResourceLoadStatisticsStore::ThirdPartyDataForSpecificFirstParty&gt; *)underFirstParties;
&gt; +- (instancetype)initWithDomain:(NSString *)domain underFirstParties:(Vector&lt;WebKit::WebResourceLoadStatisticsStore::ThirdPartyDataForSpecificFirstParty&gt;&amp;)underFirstParties;

It&apos;s not valid to reference WebKit c++ classes from WebKit API/SPI headers. The model we use is to have a WKITPThirdPartyInternal.h that exposes this, and that header is not present in the SDK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596968</commentid>
    <comment_count>10</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-12-09 15:15:15 -0800</bug_when>
    <thetext>(In reply to Sam Weinig from comment #9)
&gt; Comment on attachment 385176 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=385176&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKITPThirdParty.h:34
&gt; &gt; +- (NSArray&lt;WKITPFirstParty *&gt; *)getWKITPFirstPartyList:(Vector&lt;WebKit::WebResourceLoadStatisticsStore::ThirdPartyDataForSpecificFirstParty&gt; *)underFirstParties;
&gt; &gt; +- (instancetype)initWithDomain:(NSString *)domain underFirstParties:(Vector&lt;WebKit::WebResourceLoadStatisticsStore::ThirdPartyDataForSpecificFirstParty&gt;&amp;)underFirstParties;
&gt; 
&gt; It&apos;s not valid to reference WebKit c++ classes from WebKit API/SPI headers.
&gt; The model we use is to have a WKITPThirdPartyInternal.h that exposes this,
&gt; and that header is not present in the SDK.

Ah okay, good to know. Should WKITPThirdPartyInternal.h also have an underscore before it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596971</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-12-09 15:21:31 -0800</bug_when>
    <thetext>(In reply to katherine_cheney from comment #10)
&gt; (In reply to Sam Weinig from comment #9)
&gt; &gt; Comment on attachment 385176 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=385176&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKITPThirdParty.h:34
&gt; &gt; &gt; +- (NSArray&lt;WKITPFirstParty *&gt; *)getWKITPFirstPartyList:(Vector&lt;WebKit::WebResourceLoadStatisticsStore::ThirdPartyDataForSpecificFirstParty&gt; *)underFirstParties;
&gt; &gt; &gt; +- (instancetype)initWithDomain:(NSString *)domain underFirstParties:(Vector&lt;WebKit::WebResourceLoadStatisticsStore::ThirdPartyDataForSpecificFirstParty&gt;&amp;)underFirstParties;
&gt; &gt; 
&gt; &gt; It&apos;s not valid to reference WebKit c++ classes from WebKit API/SPI headers.
&gt; &gt; The model we use is to have a WKITPThirdPartyInternal.h that exposes this,
&gt; &gt; and that header is not present in the SDK.
&gt; 
&gt; Ah okay, good to know. Should WKITPThirdPartyInternal.h also have an
&gt; underscore before it?

Yup. Take a look at _WKFrameHandle{Internal}.h/mm as a reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597064</commentid>
    <comment_count>12</comment_count>
      <attachid>385220</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-12-09 18:20:20 -0800</bug_when>
    <thetext>Created attachment 385220
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597654</commentid>
    <comment_count>13</comment_count>
      <attachid>385220</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-12-11 09:29:52 -0800</bug_when>
    <thetext>Comment on attachment 385220
Patch

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

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:1166
&gt; +        Vector&lt;WebResourceLoadStatisticsStore::ThirdPartyData&gt; thirdPartyData = m_statisticsStore-&gt;aggregatedThirdPartyData();

I think this could be auto.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:532
&gt; +        completionHandler(WTFMove(apiThirdParties));

It&apos;s a little strange to WTFMove an ObjC pointer.  Let&apos;s not.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:535
&gt; +    completionHandler({ });

This should be nil.

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadStatisticsFirstParty.h:2
&gt; + * Copyright (C) 2017 Apple Inc. All rights reserved.

2019

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadStatisticsFirstParty.mm:2
&gt; + * Copyright (C) 2015 Apple Inc. All rights reserved.

2019.
All your copyright dates need updating.

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadStatisticsFirstParty.mm:37
&gt; +    self.firstPartyDomain = domain;
&gt; +    self.thirdPartyStorageAccessGranted = storageAccess;

Please make these wrappers of C++ objects like all our other API objects.  See WKWebpagePreferences for an example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597816</commentid>
    <comment_count>14</comment_count>
      <attachid>385449</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-12-11 15:29:43 -0800</bug_when>
    <thetext>Created attachment 385449
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598003</commentid>
    <comment_count>15</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-12-12 08:39:52 -0800</bug_when>
    <thetext>Mac-wk2 failure is for webrtc and seems unrelated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598006</commentid>
    <comment_count>16</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-12-12 08:57:44 -0800</bug_when>
    <thetext>(In reply to katherine_cheney from comment #15)
&gt; Mac-wk2 failure is for webrtc and seems unrelated

I agree. The EWS system seems to have some kind of media stack issue that is causing timeouts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598148</commentid>
    <comment_count>17</comment_count>
      <attachid>385449</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-12-12 14:42:13 -0800</bug_when>
    <thetext>Comment on attachment 385449
Patch

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

Getting closer!

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:125
&gt; +        WebCore::RegistrableDomain decodedDomain;

It would be a little bit more consistent to do this here:
Optional&lt;RegistrableDomain&gt; decodedDomain;
decoder &gt;&gt; decodedDomain;
if (!decodedDomain)
    return WTF::nullopt;

...
return {{
    WTFMove(*decodedDomain),
...
}};


Our IPC code is in a strange state right now, but that&apos;s most like what we&apos;re trying to get to.
Same with other decoders in this patch.

&gt; Source/WebKit/UIProcess/API/APIResourceLoadStatisticsFirstParty.h:33
&gt; +class ResourceLoadStatisticsFirstParty final : public API::ObjectImpl&lt;API::Object::Type::ResourceLoadStatisticsFirstParty&gt; {

The API::&apos;s are unnecessary because we&apos;re inside namespace API here.

&gt; Source/WebKit/UIProcess/API/APIResourceLoadStatisticsThirdParty.h:40
&gt; +    Vector&lt;WebKit::WebResourceLoadStatisticsStore::ThirdPartyDataForSpecificFirstParty&gt; underFirstParties() { return m_underFirstParties; }

const, const

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:528
&gt; +            _WKResourceLoadStatisticsThirdParty *wkThirdParty = [[_WKResourceLoadStatisticsThirdParty alloc] init];

You shouldn&apos;t need to create a new _WKResourceLoadStasticsThirdParty object here because wrapper(thirdParty) is a _WKResourceLoadStatisticsThirdParty.  Just move them from the Vector to the NSArray.

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadStatisticsFirstParty.h:30
&gt; +@property (nonatomic, copy, setter=_setFirstPartyDomain:) NSString *_firstPartyDomain;

readonly?

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadStatisticsThirdParty.h:33
&gt; +@property (nonatomic, copy, setter=_setThirdPartyDomain:) NSString *_thirdPartyDomain;

These don&apos;t need underscores because they are properties on a class that starts with an underscore.
Can these properties be made readonly?

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadStatisticsThirdParty.h:36
&gt; +- (NSArray&lt;_WKResourceLoadStatisticsFirstParty *&gt; *)_getWKResourceLoadStatisticsFirstPartyList:(Vector&lt;WebKit::WebResourceLoadStatisticsStore::ThirdPartyDataForSpecificFirstParty&gt; *)underFirstParties;

This should not be in an API header because it uses a WTF type, Vector.  For this functionally you should just call a C++ function through _thirdParty inside a .mm file.

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadStatisticsThirdParty.mm:39
&gt; +        _WKResourceLoadStatisticsFirstParty *wkFirstParty = [[_WKResourceLoadStatisticsFirstParty alloc] init];

Ditto, no copying and setting here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598212</commentid>
    <comment_count>18</comment_count>
      <attachid>385564</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-12-12 17:42:13 -0800</bug_when>
    <thetext>Created attachment 385564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598213</commentid>
    <comment_count>19</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-12-12 17:42:40 -0800</bug_when>
    <thetext>Thanks Alex!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598263</commentid>
    <comment_count>20</comment_count>
      <attachid>385564</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-12-12 22:31:51 -0800</bug_when>
    <thetext>Comment on attachment 385564
Patch

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

r=me once these nits are addressed.

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:184
&gt; +    bool operator&lt;(const ThirdPartyData &amp;other) const

I think in a future patch we should replace this with a comparator at a call site of std::sort.  It&apos;s not inherent to this type to have a less than comparison, it&apos;s just how we want to sort certain containers.

&gt; Source/WebKit/UIProcess/API/APIResourceLoadStatisticsFirstParty.h:47
&gt; +    const WTF::String&amp; firstPartyDomain() { return m_firstPartyData.firstPartyDomain.string(); }
&gt; +    bool storageAccess() { return m_firstPartyData.storageAccessGranted; }

const after parentheses because it doesn&apos;t mutate the object to call these functions, and they return a non-mutable reference or POD type.

&gt; Source/WebKit/UIProcess/API/APIResourceLoadStatisticsFirstParty.h:50
&gt; +    WebKit::WebResourceLoadStatisticsStore::ThirdPartyDataForSpecificFirstParty m_firstPartyData;

const?

&gt; Source/WebKit/UIProcess/API/APIResourceLoadStatisticsThirdParty.h:36
&gt; +    static Ref&lt;ResourceLoadStatisticsThirdParty&gt; create(const WebKit::WebResourceLoadStatisticsStore::ThirdPartyData thirdPartyData)

This could probably take a ThirdPartyData&amp;&amp; then move it into the constructor, which moves it into the member variable.

&gt; Source/WebKit/UIProcess/API/APIResourceLoadStatisticsThirdParty.h:47
&gt; +    Vector&lt;WebKit::WebResourceLoadStatisticsStore::ThirdPartyDataForSpecificFirstParty&gt; underFirstParties() { return m_thirdPartyData.underFirstParties; }

This is an unnecessary implicit Vector copy.  If you made this return a const Vector&lt;...&gt;&amp; it would remove the copy.

&gt; Source/WebKit/UIProcess/API/APIResourceLoadStatisticsThirdParty.h:50
&gt; +    WebKit::WebResourceLoadStatisticsStore::ThirdPartyData m_thirdPartyData;

This could probably be marked const because it&apos;s not mutated after construction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598364</commentid>
    <comment_count>21</comment_count>
      <attachid>385609</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-12-13 09:09:00 -0800</bug_when>
    <thetext>Created attachment 385609
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598366</commentid>
    <comment_count>22</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-12-13 09:11:36 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #20)
&gt; Comment on attachment 385564 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=385564&amp;action=review
&gt; 
&gt; r=me once these nits are addressed.
&gt; 

Thanks again for all the feedback!

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:184
&gt; &gt; +    bool operator&lt;(const ThirdPartyData &amp;other) const
&gt; 
&gt; I think in a future patch we should replace this with a comparator at a call
&gt; site of std::sort.  It&apos;s not inherent to this type to have a less than
&gt; comparison, it&apos;s just how we want to sort certain containers.
&gt; 

Good idea, I can file a Radar</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598389</commentid>
    <comment_count>23</comment_count>
      <attachid>385609</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-13 10:13:28 -0800</bug_when>
    <thetext>Comment on attachment 385609
Patch

Clearing flags on attachment: 385609

Committed r253484: &lt;https://trac.webkit.org/changeset/253484&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598390</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-13 10:13:30 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598391</commentid>
    <comment_count>25</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-13 10:14:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/57915968&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598496</commentid>
    <comment_count>26</comment_count>
      <attachid>385609</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-12-13 14:20:21 -0800</bug_when>
    <thetext>Comment on attachment 385609
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadStatisticsFirstParty.h:29
&gt; +

These should probably have this:

+ (instancetype)new NS_UNAVAILABLE;
- (instancetype)init NS_UNAVAILABLE;

That will prevent people from alloc init&apos;ing these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598531</commentid>
    <comment_count>27</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-12-13 15:31:08 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #26)
&gt; Comment on attachment 385609 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=385609&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadStatisticsFirstParty.h:29
&gt; &gt; +
&gt; 
&gt; These should probably have this:
&gt; 
&gt; + (instancetype)new NS_UNAVAILABLE;
&gt; - (instancetype)init NS_UNAVAILABLE;
&gt; 
&gt; That will prevent people from alloc init&apos;ing these.

https://bugs.webkit.org/show_bug.cgi?id=205221</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384982</attachid>
            <date>2019-12-05 17:44:29 -0800</date>
            <delta_ts>2019-12-09 10:25:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204932-20191205174429.patch</filename>
            <type>text/plain</type>
            <size>44630</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMxNGQ3ZmMxNzdlNzRiYzM3
ZjIwYjRkMWEwZjhkZmJjM2Y0NWI4YTAuLmM3ZmQ4NzZkMDRhNDUyZGYxMmUyNjE5NzlhZjc4MzMy
ZWRkMDRiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTktMTItMDUgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIFdlYktp
dCBBUEkgY2FsbHMgZm9yIElUUCBEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDQ5MzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3NjMyNzUz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9z
ZWQgSVRQIGRhdGEgY2FwdHVyZWQgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcyB0aHJvdWdoIHRoZQor
ICAgICAgICBPYmplY3RpdmUgQyBBUEkuIFRoZSBkYXRhIGhhZCB0byBiZSBlbmNvZGVkIGFuZCBz
ZW50IHZpYSBJUEMKKyAgICAgICAgdG8gdGhlIFVJUHJvY2Vzcywgc28gdGhpcyBwYXRjaCBhZGRz
IG5ldyBlbmNvZGUvZGVjb2RlIGZ1bmN0aW9ucworICAgICAgICBhbmQgcmVsb2NhdGVzIHRoZSBz
dHJ1Y3RzIGludG8gdGhlIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZQorICAgICAgICBj
bGFzcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICBVcGRhdGVkIG1l
bnRpb25zIG9mIFRoaXJkUGFydHlEYXRhIHRvIGluY2x1ZGUgdGhlCisgICAgICAgIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6IGNsYXNzIHNwZWNpZmllci4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphZ2dy
ZWdhdGVkVGhpcmRQYXJ0eURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgIFVwZGF0ZWQgdGhl
IGRhdGEgdG8gYmUgc2VudCB2aWEgY29tcGxldGlvbiBoYW5kbGVyIHN0cmFpZ2h0IGZyb20KKyAg
ICAgICAgdGhlIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBhcyBvcHBvc2VkIHRvIHRo
ZSBuZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgdG8gYXNzdXJlIHRoZSBjYWxscyB0byBhZ2dyZWdh
dGVkVGhpcmRQYXJ0eURhdGEoKSBhcmUgaGFwcGVuaW5nCisgICAgICAgIG9uIGEgYmFja2dyb3Vu
ZCB0aHJlYWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpnZXRJVFBEYXRhU3VtbWFyeSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRl
RGF0YVN0b3JlIF9nZXRJVFBEYXRhU3VtbWFyeTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6Z2V0SVRQRGF0YVN1bW1hcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OmdldElUUERhdGFTdW1tYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorCiAyMDE5LTEyLTA1ICB5b3Vlbm4gZmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBpbnNwZWN0b3IvcGFnZS9vdmVycmlkZVNldHRpbmct
TW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZC5odG1sIGlzIGZhaWxpbmcgYWZ0ZXIgcmVtb3ZhbCBv
ZiBpbnRlcm5hbHMuc2V0TW9ja01lZGlhQ2FwdHVyZURldmljZXNFbmFibGVkIEFQSQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5k
ZXggOGY4OTUzMTc1ZDRmNTc1YzkwZWFlYzUxYjZiNmVkYTU0NDJiNTRhNy4uZDA3ODQ0MTNmZTdh
M2Q0MzdjMDgzOTI3NGE2NjZkZGU5ODlhNzNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC03ODYsNyArNzg2LDcgQEAg
c3RhdGljIFNRTGl0ZVN0YXRlbWVudCBtYWtlTWVkaWFuV2l0aFVJUXVlcnkoU1FMaXRlRGF0YWJh
c2UmIGRhdGFiYXNlKQogICAgIHJldHVybiBTUUxpdGVTdGF0ZW1lbnQoZGF0YWJhc2UsIG1ha2VT
dHJpbmcoIlNFTEVDVCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSBGUk9NIE9ic2VydmVk
RG9tYWlucyBJTk5FUiBKT0lOIChTRUxFQ1QgIiwgam9pblN1YlN0YXRpc3RpY3NGb3JTb3J0aW5n
KCksICIpIGFzIHEgT04gT2JzZXJ2ZWREb21haW5zLmRvbWFpbklEID0gcS5kb21haW5JRCBMSU1J
VCAxIE9GRlNFVCA/IikpOwogfQogCi1WZWN0b3I8VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0Zp
cnN0UGFydHk+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRUaGlyZFBh
cnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnModW5zaWduZWQgdGhpcmRQYXJ0eURv
bWFpbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdGhpcmRQYXJ0eURvbWFpbikgY29uc3QK
K1ZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9y
U3BlY2lmaWNGaXJzdFBhcnR5PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
Z2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHVuc2lnbmVkIHRo
aXJkUGFydHlEb21haW5JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRoaXJkUGFydHlEb21h
aW4pIGNvbnN0CiB7CiAgICAgaWYgKG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudC5iaW5k
SW50KDEsIHRoaXJkUGFydHlEb21haW5JRCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1fZ2V0
QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudC5iaW5kSW50KDIsIHRoaXJkUGFydHlEb21haW5JRCkg
IT0gU1FMSVRFX09LCkBAIC03OTQsMTAgKzc5NCwxMCBAQCBWZWN0b3I8VGhpcmRQYXJ0eURhdGFG
b3JTcGVjaWZpY0ZpcnN0UGFydHk+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OgogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmdldFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5
RG9tYWluLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31zIiwgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLSAgICBWZWN0b3I8
VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IHRoaXJkUGFydHlEYXRhRm9yU3Bl
Y2lmaWNGaXJzdFBhcnR5RG9tYWluczsKKyAgICBWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4gdGhpcmRQYXJ0
eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zOwogICAgIHdoaWxlIChtX2dldEFsbFN1
YlN0YXRpc3RpY3NTdGF0ZW1lbnQuc3RlcCgpID09IFNRTElURV9ST1cpIHsKICAgICAgICAgUmVn
aXN0cmFibGVEb21haW4gZmlyc3RQYXJ0eURvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNo
ZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoZ2V0RG9tYWluU3RyaW5nRnJv
bURvbWFpbklEKG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCkp
KTsKLSAgICAgICAgdGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zLmFw
cGVuZElmTm90Q29udGFpbnMoVGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHkgeyBm
aXJzdFBhcnR5RG9tYWluLCBoYXNTdG9yYWdlQWNjZXNzKGZpcnN0UGFydHlEb21haW4sIHRoaXJk
UGFydHlEb21haW4pIH0pOworICAgICAgICB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQ
YXJ0eURvbWFpbnMuYXBwZW5kSWZOb3RDb250YWlucyhXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5IHsgZmlyc3RQYXJ0eURv
bWFpbiwgaGFzU3RvcmFnZUFjY2VzcyhmaXJzdFBhcnR5RG9tYWluLCB0aGlyZFBhcnR5RG9tYWlu
KSB9KTsKICAgICB9CiAgICAgcmVzZXRTdGF0ZW1lbnQobV9nZXRBbGxTdWJTdGF0aXN0aWNzU3Rh
dGVtZW50KTsKICAgICByZXR1cm4gdGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlE
b21haW5zOwpAQCAtODA4LDExICs4MDgsMTEgQEAgc3RhdGljIGJvb2wgaGFzQmVlblRoaXJkUGFy
dHkodW5zaWduZWQgdGltZXNVbmRlckZpcnN0UGFydHkpCiAgICAgcmV0dXJuIHRpbWVzVW5kZXJG
aXJzdFBhcnR5ID4gMDsKIH0KIAotVmVjdG9yPFRoaXJkUGFydHlEYXRhPiBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKCkgY29uc3QK
K1ZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHlE
YXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFZl
Y3RvcjxUaGlyZFBhcnR5RGF0YT4gdGhpcmRQYXJ0eURhdGFMaXN0OworICAgIFZlY3RvcjxXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiB0aGlyZFBhcnR5RGF0
YUxpc3Q7CiAgICAgU1FMaXRlU3RhdGVtZW50IHNvcnRlZFN0YXRpc3RpY3MobV9kYXRhYmFzZSwg
bWFrZVN0cmluZygiU0VMRUNUICIsIGpvaW5TdWJTdGF0aXN0aWNzRm9yU29ydGluZygpKSk7CiAg
ICAgaWYgKHNvcnRlZFN0YXRpc3RpY3MucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8
fCBzb3J0ZWRTdGF0aXN0aWNzLmJpbmRUZXh0KDEsICIlIikKQEAgLTgyNSw3ICs4MjUsNyBAQCBW
ZWN0b3I8VGhpcmRQYXJ0eURhdGE+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjphZ2dyZWdhdGVkVGhpcmRQYXJ0eQogICAgICAgICBpZiAoaGFzQmVlblRoaXJkUGFydHkoc29y
dGVkU3RhdGlzdGljcy5nZXRDb2x1bW5JbnQoMSkpKSB7CiAgICAgICAgICAgICBhdXRvIHRoaXJk
UGFydHlEb21haW5JRCA9IHNvcnRlZFN0YXRpc3RpY3MuZ2V0Q29sdW1uSW50KDApOwogICAgICAg
ICAgICAgYXV0byB0aGlyZFBhcnR5RG9tYWluID0gUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tl
ZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhnZXREb21haW5TdHJpbmdGcm9tRG9t
YWluSUQodGhpcmRQYXJ0eURvbWFpbklEKSk7Ci0gICAgICAgICAgICB0aGlyZFBhcnR5RGF0YUxp
c3QuYXBwZW5kKFRoaXJkUGFydHlEYXRhIHsgdGhpcmRQYXJ0eURvbWFpbiwgZ2V0VGhpcmRQYXJ0
eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHRoaXJkUGFydHlEb21haW5JRCwgdGhp
cmRQYXJ0eURvbWFpbikgfSk7CisgICAgICAgICAgICB0aGlyZFBhcnR5RGF0YUxpc3QuYXBwZW5k
KFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGEgeyB0aGlyZFBh
cnR5RG9tYWluLCBnZXRUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnMo
dGhpcmRQYXJ0eURvbWFpbklELCB0aGlyZFBhcnR5RG9tYWluKSB9KTsKICAgICAgICAgfQogICAg
IH0KICAgICByZXR1cm4gdGhpcmRQYXJ0eURhdGFMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCA3YWQ4NjE1ZjVhMjcyYzZm
ZmM1NmRlYWU1MmFlZjJiZTZlYTZkYjcxLi43N2U5ZjhmNzEzYTNlMzMxMDAzZWU5YmZhYjgxYjkx
YTY3NTU2OGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IG92ZXJyaWRlOwogCi0gICAgVmVjdG9yPFRoaXJkUGFydHlEYXRhPiBhZ2dyZWdhdGVk
VGhpcmRQYXJ0eURhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gYWdncmVnYXRlZFRoaXJkUGFydHlE
YXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVDb29raWVCbG9ja2luZyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjbGFzc2lmeVBy
ZXZhbGVudFJlc291cmNlcygpIG92ZXJyaWRlOwpAQCAtMTM5LDcgKzEzOSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBvcGVuSVRQRGF0YWJhc2UoKTsKICAgICBib29sIGlzQ29ycmVjdFRhYmxlU2No
ZW1hKCk7CiAgICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwg
Y29uc3QgU3ViRnJhbWVEb21haW4mKSBjb25zdDsKLSAgICBWZWN0b3I8VGhpcmRQYXJ0eURhdGFG
b3JTcGVjaWZpY0ZpcnN0UGFydHk+IGdldFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBh
cnR5RG9tYWlucyh1bnNpZ25lZCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKKyAg
ICBWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZv
clNwZWNpZmljRmlyc3RQYXJ0eT4gZ2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFy
dHlEb21haW5zKHVuc2lnbmVkLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogICAg
IHZvaWQgb3BlbkFuZERyb3BPbGREYXRhYmFzZUlmTmVjZXNzYXJ5KCk7CiAgICAgU3RyaW5nIGdl
dERvbWFpblN0cmluZ0Zyb21Eb21haW5JRCh1bnNpZ25lZCkgY29uc3Q7CiAgICAgU3RyaW5nIGdl
dFN1YlN0YXRpc3RpY1N0YXRlbWVudChjb25zdCBTdHJpbmcmKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKaW5kZXggMzQwZGY5
M2QwMzNhYzk2NjNlNzZlMGUwMzVlOWU4ZWEzNWQ3YjhiMC4uMzY0ZTQ3YTAwZTg1NDI0OTQ3YjA1
MDIxMjMzOTQwNzQ2MGNjZDhlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAgLTEwMywxNSArMTAzLDE1IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpjYWxjdWxhdGVBbmRTdWJtaXRUZWxlbWV0cnko
KSBjb25zdAogICAgICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5OjpjYWxj
dWxhdGVBbmRTdWJtaXQoKnRoaXMpOwogfQogCi1zdGF0aWMgdm9pZCBlbnN1cmVUaGlyZFBhcnR5
RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbihWZWN0b3I8VGhpcmRQYXJ0eURhdGFGb3JT
cGVjaWZpY0ZpcnN0UGFydHk+JiB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIGJvb2wgdGhp
cmRQYXJ0eUhhc1N0b3JhZ2VBY2Nlc3MpCitzdGF0aWMgdm9pZCBlbnN1cmVUaGlyZFBhcnR5RGF0
YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbihWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4mIHRoaXJkUGFy
dHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZmlyc3RQYXJ0eURvbWFpbiwgYm9vbCB0aGlyZFBhcnR5SGFzU3RvcmFnZUFjY2VzcykKIHsK
LSAgICBUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSB0aGlyZFBhcnR5RGF0YUZv
clNwZWNpZmljRmlyc3RQYXJ0eSB7IGZpcnN0UGFydHlEb21haW4sIHRoaXJkUGFydHlIYXNTdG9y
YWdlQWNjZXNzIH07CisgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBh
cnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmly
c3RQYXJ0eSB7IGZpcnN0UGFydHlEb21haW4sIHRoaXJkUGFydHlIYXNTdG9yYWdlQWNjZXNzIH07
CiAgICAgdGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW4uYXBwZW5kSWZO
b3RDb250YWlucyh0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSk7CiB9CiAKLXN0
YXRpYyBWZWN0b3I8VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IGdldFRoaXJk
UGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucyhjb25zdCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzJiB0aGlyZFBhcnR5U3RhdGlzdGljKQorc3RhdGljIFZlY3RvcjxXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5
PiBnZXRUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnMoY29uc3QgUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyYgdGhpcmRQYXJ0eVN0YXRpc3RpYykKIHsKLSAgICBWZWN0b3I8
VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IHRoaXJkUGFydHlEYXRhRm9yU3Bl
Y2lmaWNGaXJzdFBhcnR5RG9tYWluczsKKyAgICBWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4gdGhpcmRQYXJ0
eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zOwogCiAgICAgZm9yIChhdXRvIGZpcnN0
UGFydHlEb21haW4gOiB0aGlyZFBhcnR5U3RhdGlzdGljLnN1YmZyYW1lVW5kZXJUb3BGcmFtZURv
bWFpbnMpCiAgICAgICAgIGVuc3VyZVRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5
RG9tYWluKHRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucywgZmlyc3RQ
YXJ0eURvbWFpbiwgdGhpcmRQYXJ0eVN0YXRpc3RpYy5zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFt
ZURvbWFpbnMuY29udGFpbnMoZmlyc3RQYXJ0eURvbWFpbikpOwpAQCAtMTMwLDE0ICsxMzAsMTQg
QEAgc3RhdGljIGJvb2wgaGFzQmVlblRoaXJkUGFydHkoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyYgc3RhdGlzdGljKQogICAgICAgICB8fCAhc3RhdGlzdGljLnN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RzVG8uaXNFbXB0eSgpOwogfQogCi1WZWN0b3I8VGhpcmRQYXJ0eURhdGE+IFJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKCkg
Y29uc3QKK1ZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlE
YXRhPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmFnZ3JlZ2F0ZWRUaGlyZFBh
cnR5RGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAg
ICBWZWN0b3I8VGhpcmRQYXJ0eURhdGE+IHRoaXJkUGFydHlEYXRhTGlzdDsKKyAgICBWZWN0b3I8
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gdGhpcmRQYXJ0
eURhdGFMaXN0OwogICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogbV9yZXNvdXJjZVN0YXRpc3Rp
Y3NNYXAudmFsdWVzKCkpIHsKICAgICAgICAgaWYgKGhhc0JlZW5UaGlyZFBhcnR5KHN0YXRpc3Rp
YykpCi0gICAgICAgICAgICB0aGlyZFBhcnR5RGF0YUxpc3QuYXBwZW5kKFRoaXJkUGFydHlEYXRh
IHsgc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluLCBnZXRUaGlyZFBhcnR5RGF0YUZvclNwZWNp
ZmljRmlyc3RQYXJ0eURvbWFpbnMoc3RhdGlzdGljKSB9KTsKKyAgICAgICAgICAgIHRoaXJkUGFy
dHlEYXRhTGlzdC5hcHBlbmQoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBh
cnR5RGF0YSB7IHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbiwgZ2V0VGhpcmRQYXJ0eURhdGFG
b3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHN0YXRpc3RpYykgfSk7CiAgICAgfQogICAgIHN0
ZDo6c29ydCh0aGlyZFBhcnR5RGF0YUxpc3QucmJlZ2luKCksIHRoaXJkUGFydHlEYXRhTGlzdC5y
ZW5kKCkpOwogICAgIHJldHVybiB0aGlyZFBhcnR5RGF0YUxpc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggOWJjYTkwMzBjNTZlN2Rj
MjMzMWQ5NjA5M2U3NDcxNTU3NjA4Njc3YS4uMGIwZTZkODA1NmRiMDZhMGM4YzU1NjE0ODIwNzMx
YjE1OTEzM2RjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmUuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgVmVjdG9yPFRoaXJkUGFydHlEYXRhPiBhZ2dyZWdhdGVkVGhp
cmRQYXJ0eURhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gYWdncmVnYXRlZFRoaXJkUGFydHlEYXRh
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwg
V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X3Jlc291cmNlU3RhdGlzdGljc01hcDsgfQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OktleWVkRW5jb2Rlcj4gY3JlYXRlRW5jb2RlckZyb21EYXRhKCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggOWE1Zjg5YTlkNmQ2YzlhZDRjNzA4
NjYxYzI3YjU3YjdkNGQ0YzY5OS4uYzViMmE4ZmNkMjJjYjQ4YzBjODllNGViZmI3OTJhZWVhNWI4
OGRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtOTgs
NyArOTgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCBWZWN0b3I8VGhpcmRQYXJ0eURhdGE+IGFnZ3JlZ2F0ZWRUaGlyZFBh
cnR5RGF0YSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiBhZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEo
KSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29va2llQmxvY2tpbmcoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CiAgICAgdm9pZCB1cGRhdGVDb29raWVCbG9j
a2luZ0ZvckRvbWFpbnMoY29uc3QgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3Im
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCAzZmYwYTZiMjY2Njk3OTk2ZTA3NmIwMmI3
ZmUyY2I5OTU3NTE5MzdiLi5mMjcyYmZjNTY1ZmEyZmM5YjhhNDY4YTIxODg1NTU1M2M4ODAxYzQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApA
QCAtMTE0OSw5ICsxMTQ5LDIyIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Ojpub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnCiAgICAgICAgIGNv
bnN0X2Nhc3Q8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKj4odGhpcyktPm5ldHdvcmtT
ZXNzaW9uKCktPm5vdGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQobnVtYmVyT2ZQ
cmV2YWxlbnRSZXNvdXJjZXMsIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRl
cmFjdGlvbiwgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9u
LCB0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50
ZXJhY3Rpb24sIG1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblByZXZhbGVudFJlc291cmNl
V2l0aFVzZXJJbnRlcmFjdGlvbiwgdG9wM051bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVJ
LCB0b3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0VUksIHRvcDNNZWRpYW5TdWJSZXNvdXJjZVdpdGhv
dXRVSSwgdG9wM01lZGlhblVuaXF1ZVJlZGlyZWN0c1dpdGhvdXRVSSwgdG9wM01lZGlhbkRhdGFS
ZWNvcmRzUmVtb3ZlZFdpdGhvdXRVSSk7CiB9CiAKLVZlY3RvcjxUaGlyZFBhcnR5RGF0YT4gV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoKQor
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5
RGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICByZXR1cm4gbV9zdGF0aXN0aWNzU3RvcmUtPmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YSgpOwor
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBwb3N0VGFzayhbdGhpcywgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlICB7
CisgICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3RvcmUpIHsKKyAgICAgICAgICAgIHBvc3RUYXNr
UmVwbHkoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFZlY3Rv
cjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiBpdHBEYXRh
ID0gbV9zdGF0aXN0aWNzU3RvcmUtPmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YSgpOworICAgICAg
ICBwb3N0VGFza1JlcGx5KFtpdHBEYXRhID0gV1RGTW92ZShpdHBEYXRhKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaXRwRGF0YSkpOworICAgICAgICB9KTsKKyAg
ICB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggZDNmOWNmMGYzYTJkM2Q2YmYyNGJjOWZiMWI0
NWJlNWMyOGE5M2VjMS4uMTUzYmU5OTU2M2RjMTMzOTA5YzMxMGRmZmE1ZWI0MGM4Yjg3MzIzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMjcs
NiArMjcsOSBAQAogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAorI2lu
Y2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUg
IkVuY29kZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgpA
QCAtNzgsNiArODEsMzAgQEAgc3RydWN0IFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVz
Rm9yIHsKICAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciBpc29sYXRlZENv
cHkoKSBjb25zdCB7IHJldHVybiB7IGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvci5p
c29sYXRlZENvcHkoKSwgZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvci5pc29sYXRlZENv
cHkoKSwgZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkuaXNvbGF0ZWRDb3B5
KCkgfTsgfQogfTsKIAorY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGZpbmFs
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZSwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4geworcHVibGljOgorICAgIHVzaW5n
IFJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
OworICAgIHVzaW5nIFJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW47CisgICAgdXNpbmcgVG9wRnJhbWVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bjsKKyAgICB1c2luZyBTdWJGcmFtZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
OworICAgIHVzaW5nIFN1YlJlc291cmNlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW47CisgICAgdXNpbmcgUmVkaXJlY3REb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bjsKKyAgICB1c2luZyBSZWRpcmVjdGVkRnJvbURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluOworICAgIHVzaW5nIFJlZGlyZWN0ZWRUb0RvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluOworICAgIHVzaW5nIE5hdmlnYXRlZEZyb21Eb21haW4gPSBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbjsKKyAgICB1c2luZyBOYXZpZ2F0ZWRUb0RvbWFpbiA9IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluOworICAgIHVzaW5nIERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyA9
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOworICAgIHVzaW5nIE9wZW5lckRvbWFpbiA9IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOworICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NXYXNHcmFu
dGVkID0gV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ7CisgICAgdXNpbmcgU3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duID0gV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duOworCisgICAgc3RhdGljIFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNy
ZWF0ZShOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJ
bmNsdWRlTG9jYWxob3N0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKG5ldHdvcmtTZXNzaW9uLCByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5LCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KSk7CisgICAgfQorCisg
ICAgfldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpOworCiBzdHJ1Y3QgVGhpcmRQYXJ0
eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHkgewogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIGZpcnN0UGFydHlEb21haW47CiAgICAgYm9vbCBzdG9yYWdlQWNjZXNzR3JhbnRlZDsKQEAg
LTg3LDYgKzExNCwyNSBAQCBzdHJ1Y3QgVGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFy
dHkgewogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiSGFzIGJlZW4gZ3JhbnRlZCBzdG9yYWdl
IGFjY2VzcyB1bmRlciAiLCBmaXJzdFBhcnR5RG9tYWluLnN0cmluZygpLCAiOiAiLCBzdG9yYWdl
QWNjZXNzR3JhbnRlZCk7CiAgICAgfQogCisgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBmaXJzdFBhcnR5RG9tYWlu
OworICAgICAgICBlbmNvZGVyIDw8IHN0b3JhZ2VBY2Nlc3NHcmFudGVkOworICAgIH0KKworICAg
IHN0YXRpYyBPcHRpb25hbDxUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4gZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIGRlY29kZWREb21haW47CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
ZGVjb2RlZERvbWFpbikpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
ICAgIGJvb2wgZGVjb2RlZFN0b3JhZ2VBY2Nlc3M7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoZGVjb2RlZFN0b3JhZ2VBY2Nlc3MpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgICAgICByZXR1cm4ge3sgZGVjb2RlZERvbWFpbiwgZGVjb2RlZFN0b3JhZ2VBY2Nl
c3MgfX07CisgICAgfQorCiAgICAgYm9vbCBvcGVyYXRvcj09KFRoaXJkUGFydHlEYXRhRm9yU3Bl
Y2lmaWNGaXJzdFBhcnR5IGNvbnN0IG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IGZpcnN0UGFydHlEb21haW4gPT0gb3RoZXIuZmlyc3RQYXJ0eURvbWFpbiAmJiBzdG9yYWdlQWNj
ZXNzR3JhbnRlZCA9PSBvdGhlci5zdG9yYWdlQWNjZXNzR3JhbnRlZDsKQEAgLTExMiwzNSArMTU4
LDMxIEBAIHN0cnVjdCBUaGlyZFBhcnR5RGF0YSB7CiAgICAgICAgIHJldHVybiBzdHJpbmdCdWls
ZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgVGhpcmRQ
YXJ0eURhdGEgJm90aGVyKSBjb25zdAorICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYgZW5j
b2RlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiB1bmRlckZpcnN0UGFydGllcy5zaXpl
KCkgPCBvdGhlci51bmRlckZpcnN0UGFydGllcy5zaXplKCk7CisgICAgICAgIGVuY29kZXIgPDwg
dGhpcmRQYXJ0eURvbWFpbjsKKyAgICAgICAgZW5jb2RlciA8PCB1bmRlckZpcnN0UGFydGllczsK
ICAgICB9Ci19OwogCi1jbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgZmluYWwg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcg
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M7
Ci0gICAgdXNpbmcgUmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bjsKLSAgICB1c2luZyBUb3BGcmFtZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
OwotICAgIHVzaW5nIFN1YkZyYW1lRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47
Ci0gICAgdXNpbmcgU3ViUmVzb3VyY2VEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bjsKLSAgICB1c2luZyBSZWRpcmVjdERvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
OwotICAgIHVzaW5nIFJlZGlyZWN0ZWRGcm9tRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW47Ci0gICAgdXNpbmcgUmVkaXJlY3RlZFRvRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW47Ci0gICAgdXNpbmcgTmF2aWdhdGVkRnJvbURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluOwotICAgIHVzaW5nIE5hdmlnYXRlZFRvRG9tYWluID0gV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzID0g
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgT3BlbmVyRG9tYWluID0gV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQgPSBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDsKLSAgICB1c2luZyBTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd24gPSBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d247Ci0KLSAgICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3Jl
YXRlKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgY29uc3QgU3RyaW5nJiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBTaG91bGRJbmNsdWRlTG9jYWxob3N0IHNob3VsZElu
Y2x1ZGVMb2NhbGhvc3QpCisgICAgc3RhdGljIE9wdGlvbmFsPFRoaXJkUGFydHlEYXRhPiBkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKG5ldHdvcmtTZXNzaW9uLCByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KSk7Cisg
ICAgICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRlY29kZWREb21haW47CisgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGVjb2RlZERvbWFpbikpCisgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxUaGlyZFBhcnR5RGF0YUZv
clNwZWNpZmljRmlyc3RQYXJ0eT4+IGRlY29kZWRGaXJzdFBhcnRpZXM7CisgICAgICAgIGRlY29k
ZXIgPj4gZGVjb2RlZEZpcnN0UGFydGllczsKKyAgICAgICAgaWYgKCFkZWNvZGVkRmlyc3RQYXJ0
aWVzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4g
e3sgZGVjb2RlZERvbWFpbiwgV1RGTW92ZSgqZGVjb2RlZEZpcnN0UGFydGllcykgfX07CiAgICAg
fQogCi0gICAgfldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpOworICAgIGJvb2wgb3Bl
cmF0b3I8KGNvbnN0IFRoaXJkUGFydHlEYXRhICZvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiB1bmRlckZpcnN0UGFydGllcy5zaXplKCkgPCBvdGhlci51bmRlckZpcnN0UGFydGll
cy5zaXplKCk7CisgICAgfQorfTsKIAogICAgIHZvaWQgZGlkRGVzdHJveU5ldHdvcmtTZXNzaW9u
KCk7CiAKQEAgLTIzNSw3ICsyNzcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
PiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lcklELCBP
cGVuZXJEb21haW4mJik7Ci0gICAgVmVjdG9yPFRoaXJkUGFydHlEYXRhPiBhZ2dyZWdhdGVkVGhp
cmRQYXJ0eURhdGEoKTsKKyAgICB2b2lkIGFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRo
aXJkUGFydHlEYXRhPiYmKT4mJik7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlKE5ldHdvcmtTZXNzaW9uJiwgY29uc3QgU3RyaW5nJiwgU2hv
dWxkSW5jbHVkZUxvY2FsaG9zdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDkzMjM1N2U5NjZhZWEzM2I3MzA2NDE5N2VhM2YzOWIy
NGU2MjY3YjEuLjk2MjE0Y2RkNDMwMTBiZjkxZmZjODIzYzhkMzFmN2YwNzcwMzY3ODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC03
NTAsNiArNzUwLDE5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNjaGVkdWxlQ2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklECiAgICAgfQogfQogCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjpnZXRJVFBEYXRhU3VtbWFyeShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3Jr
U2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgICAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
eyB9KTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICB9Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
aW5kZXggNGQ0YWRkMDBjZTM4NmMwN2VkODc2NjQ0YWVmZTQ3ODE5OTVlZWYwMi4uZjMxNmMwYjAz
ZmYyMmZkNTIxZjIwMzM0NGYxZGQ5ZWFmZDk2ODY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjMxLDYgKzIzMSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpT
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldFBh
cmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50
KFBBTDo6U2Vzc2lvbklELCBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgU2hvdWxk
R3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAg
IHZvaWQgZ2V0SVRQRGF0YVN1bW1hcnkoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURh
dGE+JiYpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoUEFMOjpT
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVs
ZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoUEFMOjpTZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzdWJtaXRUZWxlbWV0cnkoUEFMOjpT
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRl
eCAwMjU3ZDhkMjNlZjNlNWVlODY1N2EwZjFiYTc0M2YyODZkOWNlZjlmLi44Mjc3YmQ4YzY0ZmY5
NDE3YmM5Y2Q5MDMwMTI1OTFmMzVkOThkM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTExMyw2ICsx
MTMsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAg
U2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBTZWNvbmRzIHNlY29uZHMpIC0+ICgpIEFzeW5jCiAgICAgU2V0R3JhbmRmYXRoZXJl
ZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJl
c291cmNlRG9tYWluLCBib29sIGlzR3JhbmRmYXRoZXJlZCkgLT4gKCkgQXN5bmMKICAgICBTZXRV
c2VJVFBEYXRhYmFzZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgdmFsdWUpIC0+ICgp
IEFzeW5jCisgICAgR2V0SVRQRGF0YVN1bW1hcnkoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAt
PiAoVmVjdG9yPFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBh
cnR5RGF0YT4gdGhpcmRQYXJ0eURhdGEpIEFzeW5jCiAgICAgU2V0R3JhbmRmYXRoZXJpbmdUaW1l
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzKSAtPiAoKSBBc3luYwog
ICAgIFNldE1heFN0YXRpc3RpY3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWlu
dDY0X3QgbWF4aW11bUVudHJ5Q291bnQpIC0+ICgpIEFzeW5jCiAgICAgU2V0TWluaW11bVRpbWVC
ZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjb25k
cyBzZWNvbmRzKSAtPiAoKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggNDg0NjdiN2E4MzMyMTBi
MjlhMGFlZDBlYWI0NGEwODAyZjNmOGUzNi4uODg5NTg5ZjIyZjNlNDg1NDNmOTg1N2Q4M2ZkZGY2
ZmZmNGRkYzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJj
b25maWcuaCIKICNpbXBvcnQgIldLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgiCiAKKyNpbXBv
cnQgIkFQSURpY3Rpb25hcnkuaCIKICNpbXBvcnQgIkFQSVN0cmluZy5oIgogI2ltcG9ydCAiQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLmgiCiAjaW1wb3J0ICJDb21wbGV0
aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCkBAIC01MTgsNiArNTE5LDMxIEBAIC0gKHZvaWQpX2Ns
ZWFyUmVzb3VyY2VMb2FkU3RhdGlzdGljczoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRs
ZXIKICNlbmRpZgogfQogCistICh2b2lkKV9nZXRJVFBEYXRhU3VtbWFyeToodm9pZCAoXikoTlNB
cnJheTxOU0RpY3Rpb25hcnkgKj4gKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5nZXRJVFBE
YXRhU3VtbWFyeShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpXShhdXRvIHRoaXJkUGFydHlEb21haW5zKSB7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8
QVBJOjpPYmplY3Q+PiBhcGlJVFBEYXRhOworICAgICAgICBmb3IgKGF1dG8mIHRoaXJkUGFydHkg
OiB0aGlyZFBhcnR5RG9tYWlucykgeworICAgICAgICAgICAgQVBJOjpEaWN0aW9uYXJ5OjpNYXBU
eXBlIHRoaXJkUGFydHlEb21haW5zTWFwOworICAgICAgICAgICAgdGhpcmRQYXJ0eURvbWFpbnNN
YXAuc2V0KCJkb21haW4iLCBBUEk6OlN0cmluZzo6Y3JlYXRlKHRoaXJkUGFydHkudGhpcmRQYXJ0
eURvbWFpbi5zdHJpbmcoKSkpOworICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVj
dD4+IGFwaVVuZGVyRmlyc3RQYXJ0aWVzOworICAgICAgICAgICAgZm9yIChhdXRvJiBmaXJzdFBh
cnR5IDogdGhpcmRQYXJ0eS51bmRlckZpcnN0UGFydGllcykgeworICAgICAgICAgICAgICAgIEFQ
STo6RGljdGlvbmFyeTo6TWFwVHlwZSBmaXJzdFBhcnR5RG9tYWluc01hcDsKKyAgICAgICAgICAg
ICAgICBmaXJzdFBhcnR5RG9tYWluc01hcC5zZXQoImRvbWFpbiIsIEFQSTo6U3RyaW5nOjpjcmVh
dGUoZmlyc3RQYXJ0eS5maXJzdFBhcnR5RG9tYWluLnN0cmluZygpKSk7CisgICAgICAgICAgICAg
ICAgZmlyc3RQYXJ0eURvbWFpbnNNYXAuc2V0KCJoYXNTdG9yYWdlQWNjZXNzIiwgQVBJOjpCb29s
ZWFuOjpjcmVhdGUoZmlyc3RQYXJ0eS5zdG9yYWdlQWNjZXNzR3JhbnRlZCkpOworICAgICAgICAg
ICAgICAgIGFwaVVuZGVyRmlyc3RQYXJ0aWVzLmFwcGVuZChBUEk6OkRpY3Rpb25hcnk6OmNyZWF0
ZShXVEZNb3ZlKGZpcnN0UGFydHlEb21haW5zTWFwKSkpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgdGhpcmRQYXJ0eURvbWFpbnNNYXAuc2V0KCJ1bmRlckZpcnN0UGFydGllcyIsIEFQSTo6
QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFwaVVuZGVyRmlyc3RQYXJ0aWVzKSkpOworICAgICAgICAg
ICAgYXBpSVRQRGF0YS5hcHBlbmQoQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGTW92ZSh0aGly
ZFBhcnR5RG9tYWluc01hcCkpKTsKKyAgICAgICAgfQorICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih3cmFwcGVyKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFwaUlUUERhdGEpKSkpOworICAg
IH0pOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworI2VuZGlmCit9CisKIC0g
KHZvaWQpX2lzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlckZpcnN0UGFydHk6KE5TVVJMICop
Zmlyc3RQYXJ0eVVSTCB0aGlyZFBhcnR5OihOU1VSTCAqKXRoaXJkUGFydHlVUkwgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4
IDcwZmMxNDY1NzNkMjNlYTRlNTBiMzliZWNjNTgzMmIyMmEzMjAyMmQuLjdhYWY1OGQzNWNiMTQ0
M2NjZDBhZDM2ZGQ2OGFjNWRjZjRjNDM2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApA
QCAtNzEsNiArNzEsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0
ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogLSAodm9pZClfbG9nVXNlckludGVyYWN0aW9uOihO
U1VSTCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlv
bkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKIC0gKHZvaWQpX3NldFByZXZhbGVudERvbWFpbjooTlNVUkwgKilkb21haW4gY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogLSAodm9pZClfZ2V0SXNQcmV2YWxlbnRE
b21haW46KE5TVVJMICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09MKSlj
b21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjAp
KTsKKy0gKHZvaWQpX2dldElUUERhdGFTdW1tYXJ5Oih2b2lkICheKShOU0FycmF5PE5TRGljdGlv
bmFyeSAqPiAqdGhpcmRQYXJ0eURvbWFpbnMpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogLSAodm9pZClfY2xlYXJQcmV2YWxlbnRE
b21haW46KE5TVVJMICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSlj
b21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwogLSAodm9pZClfY2xlYXJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOih2b2lk
ICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfaXNSZWdpc3RlcmVkQXNTdWJyZXNv
dXJjZVVuZGVyRmlyc3RQYXJ0eTooTlNVUkwgKilmaXJzdFBhcnR5VVJMIHRoaXJkUGFydHk6KE5T
VVJMICopdGhpcmRQYXJ0eVVSTCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpY29t
cGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGFhOTFhZTBiNzQ2MzdiYzMyM2U2OGY4MjAz
NzlkN2MyNWI2ZTk2OTIuLjliMzliNmI3OTUxNTY1OGU3MWIwMWI5NTRjYzM4NzQ0ZWY3NTc5NGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcApAQCAtODE0LDYgKzgxNCwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgQwogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okdl
dEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKHNlc3Npb25JRCksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRJVFBEYXRhU3VtbWFy
eShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgeworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6R2V0SVRQRGF0YVN1
bW1hcnkoc2Vzc2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3Vy
Y2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFjYW5TZW5k
TWVzc2FnZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDc2ZTgyYTdiOTcxZDhlZDJjMjAzOGMxOTVhZmU5
OWJlNTU3ZTFjYzkuLmQ5YTYyZWY5YjM3ODk1YmE2Y2E0YTBkMzc2MzkzMzUyYjA2OWZhYzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oCkBAIC0xMzUsNiArMTM1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJldmFs
ZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNl
Rm9yRGVidWdNb2RlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVz
b3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGdldElUUERhdGFTdW1tYXJ5KFBBTDo6U2Vz
c2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiYmKT4mJik7CiAgICAgdm9pZCBnZXRBbGxTdG9y
YWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiBkb21haW5zKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vz
c0NvbmZpcm0oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1
bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCmluZGV4IGIyZjlmYzI0OWZhNDhlYjVmZGMzZjYzNGE5ZjU5NGMxNjM2NzYw
NDMuLjRhZmQ4Yjc0NzJiNDA1ZWQ2ZjJmYWUyMDg3OGRkYzE2NGNjYzQ3ZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwCkBAIC0xNTEwLDYgKzE1MTAsMTYgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzY2hl
ZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1vZGlmaWVkU2luY2UKICAg
ICB9CiB9CiAKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z2V0SVRQRGF0YVN1bW1hcnkoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpU
aGlyZFBhcnR5RGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNz
UG9vbHMoKSkgeworICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3
b3JrUHJvY2VzcygpKQorICAgICAgICAgICAgcHJvY2Vzcy0+Z2V0SVRQRGF0YVN1bW1hcnkobV9z
ZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9Cit9CisKIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91
bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDI3MGMyYzc4YThjOTM0NWJmMDgxNjYyZTRjYzU5
ODgxMDBkZTkwODUuLjE2NGE5ZjU0YWM5OTIyNWE3YjZiMDA1MjYzZjhhNjg2ZWQ3YWJhMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0aW9uQW5kTW90
aW9uQWNjZXNzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIu
aCIKKyNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgpAQCAtMTYwLDYgKzE2
MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnQoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJT
dGF0aXN0aWNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1
bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Ms
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBnZXRJVFBEYXRhU3VtbWFy
eShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OlRoaXJkUGFydHlEYXRhPiYmKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3Rp
Y3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeSgpOwogICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJlZChj
b25zdCBVUkwmLCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU2M2Y4NDZiZTE2ZGUz
ODQ2MzU4NGY4ZDhmMmEyZDg4OTI4OWM4NzAuLjk5MDJmM2MxNmI3YTMxZGI5MzBhYjYzN2M3NGYw
M2NjYTQxMGE2NmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxOS0xMi0wNSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJp
bmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBDcmVhdGUgV2ViS2l0IEFQSSBjYWxscyBm
b3IgSVRQIERhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNDkzMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc2MzI3NTM+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSB0ZXN0IHRvIGNo
ZWNrIHRoYXQgdGhlIElUUCBkYXRhIHN1bW1hcnkgd2FzIGJlaW5nIHByb3Blcmx5CisgICAgICAg
IGFnZ3JlZ2F0ZWQgYW5kIHNlbnQgdG8gdGhlIFVJUHJvY2VzcywgYW5kIHRvIG1ha2Ugc3VyZSB0
aGUgQVBJIHdvcmtzCisgICAgICAgIGFzIGV4cGVjdGVkLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tOgorICAgICAg
ICAoVEVTVCk6CisKIDIwMTktMTItMDUgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgogCiAgICAgICAgIGluc3BlY3Rvci9wYWdlL292ZXJyaWRlU2V0dGluZy1Nb2NrQ2FwdHVyZURl
dmljZXNFbmFibGVkLmh0bWwgaXMgZmFpbGluZyBhZnRlciByZW1vdmFsIG9mIGludGVybmFscy5z
ZXRNb2NrTWVkaWFDYXB0dXJlRGV2aWNlc0VuYWJsZWQgQVBJCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3MubW0KaW5kZXggZjNjZWRhZmU3ZTYyNjI1ODA2Y2Y0YzFiZTZiNzYzMDA3MjM2NmZhYy4u
MjU5OGQxYjA4ZDEwYzFlNzJhYjQwMmE5YjZlZDVkOTU1YjgzNWUyZCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5tbQpAQCAtNjQ5LDMgKzY0OSwxOTYgQEAgVEVTVChSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLCBGbHVzaE9ic2VydmVyV2hlbldlYlBhZ2VJc0Nsb3NlZEJ5SmF2YVNjcmlwdCkK
IAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcpOwogfQorCitURVNUKFJl
c291cmNlTG9hZFN0YXRpc3RpY3MsIEdldElUUERhdGFTdW1tYXJ5KQoreworICAgIGF1dG8gKnNo
YXJlZFByb2Nlc3NQb29sID0gW1dLUHJvY2Vzc1Bvb2wgX3NoYXJlZFByb2Nlc3NQb29sXTsKKyAg
ICBhdXRvICpkYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVd
OworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDog
c2hhcmVkUHJvY2Vzc1Bvb2xdOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFT
dG9yZSA9IGRhdGFTdG9yZTsKKworICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gd2ViVmlldzIgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gd2Vi
VmlldzMgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwor
CisgICAgW3dlYlZpZXcxIGxvYWRIVE1MU3RyaW5nOkAiV2ViS2l0IFRlc3QiIGJhc2VVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdXTsKKyAgICBbd2ViVmlldzEg
X3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgIFt3ZWJWaWV3MiBsb2FkSFRN
TFN0cmluZzpAIldlYktpdCBUZXN0IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0
cDovL3dlYmtpdDIub3JnIl1dOworICAgIFt3ZWJWaWV3MiBfdGVzdF93YWl0Rm9yRGlkRmluaXNo
TmF2aWdhdGlvbl07CisgICAgW3dlYlZpZXczIGxvYWRIVE1MU3RyaW5nOkAiV2ViS2l0IFRlc3Qi
IGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0My5vcmciXV07Cisg
ICAgW3dlYlZpZXczIF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIFtk
YXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOllFU107CisKKyAgICBz
dGF0aWMgYm9vbCBkb25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX2NsZWFyUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljczpeKHZvaWQpIHsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAg
IH1dOworCisgICAgc3RhdGljIGJvb2wgc3RhdGlzdGljc1VwZGF0ZWQgPSBmYWxzZTsKKyAgICBb
ZGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOl4oV0tX
ZWJzaXRlRGF0YVN0b3JlICosIE5TU3RyaW5nICptZXNzYWdlKSB7CisgICAgICAgIGlmICghW21l
c3NhZ2UgaXNFcXVhbFRvU3RyaW5nOkAiU3RhdGlzdGljcyBVcGRhdGVkIl0pCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIHN0YXRpc3RpY3NVcGRhdGVkID0gdHJ1ZTsKKyAgICB9XTsKKwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcpOworCisgICAgLy8gU2VlZCB0
ZXN0IGRhdGEgaW4gdGhlIHdlYiBwcm9jZXNzJyBvYnNlcnZlci4KKyAgICAKKyAgICAvLyBldmls
MQorICAgIGRvbmVGbGFnID0gZmFsc2U7CisgICAgW3NoYXJlZFByb2Nlc3NQb29sIF9zZWVkUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmdXaXRoRmlyc3RQYXJ0eTpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnIl0gdGhpcmRQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0
cmluZzpAImh0dHA6Ly9ldmlsMS5jb20iXSBzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbjpOTyBj
b21wbGV0aW9uSGFuZGxlcjogXigpIHsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1d
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcpOworCisgICAgZG9uZUZs
YWcgPSBmYWxzZTsKKyAgICBbc2hhcmVkUHJvY2Vzc1Bvb2wgX3NlZWRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRm9yVGVzdGluZ1dpdGhGaXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0
cDovL3dlYmtpdDIub3JnIl0gdGhpcmRQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6
Ly9ldmlsMS5jb20iXSBzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbjpOTyBjb21wbGV0aW9uSGFu
ZGxlcjogXigpIHsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcpOworCisKKyAgICAvLyBldmlsMgorICAgIGRv
bmVGbGFnID0gZmFsc2U7CisgICAgW3NoYXJlZFByb2Nlc3NQb29sIF9zZWVkUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0ZvclRlc3RpbmdXaXRoRmlyc3RQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
Imh0dHA6Ly93ZWJraXQub3JnIl0gdGhpcmRQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0
dHA6Ly9ldmlsMi5jb20iXSBzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbjpOTyBjb21wbGV0aW9u
SGFuZGxlcjogXigpIHsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcpOworICAgIAorCisgICAgLy8gZXZpbDMK
KyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtzaGFyZWRQcm9jZXNzUG9vbCBfc2VlZFJlc291
cmNlTG9hZFN0YXRpc3RpY3NGb3JUZXN0aW5nV2l0aEZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdIHRoaXJkUGFydHk6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJodHRwOi8vZXZpbDMuY29tIl0gc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb246Tk8gY29t
cGxldGlvbkhhbmRsZXI6IF4oKSB7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKyAgICBkb25lRmxhZyA9
IGZhbHNlOworICAgIFtzaGFyZWRQcm9jZXNzUG9vbCBfc2VlZFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NGb3JUZXN0aW5nV2l0aEZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8v
d2Via2l0Mi5vcmciXSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2
aWwzLmNvbSJdIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uOk5PIGNvbXBsZXRpb25IYW5kbGVy
OiBeKCkgeworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBb
c2hhcmVkUHJvY2Vzc1Bvb2wgX3NlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZ1dp
dGhGaXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdDMub3JnIl0g
dGhpcmRQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsMy5jb20iXSBzaG91
bGRTY2hlZHVsZU5vdGlmaWNhdGlvbjpOTyBjb21wbGV0aW9uSGFuZGxlcjogXigpIHsKKyAgICAg
ICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZG9uZUZsYWcpOworCisgICAgc3RhdGlzdGljc1VwZGF0ZWQgPSBmYWxzZTsKKyAgICBbd2Vi
VmlldzEgbG9hZEhUTUxTdHJpbmc6QCI8Ym9keT48c2NyaXB0PmNsb3NlKCk7PC9zY3JpcHQ+PC9i
b2R5PiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnIl1d
OworICAgIFt3ZWJWaWV3MiBsb2FkSFRNTFN0cmluZzpAIjxib2R5PjxzY3JpcHQ+Y2xvc2UoKTs8
L3NjcmlwdD48L2JvZHk+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dl
YmtpdDIub3JnIl1dOworICAgIFt3ZWJWaWV3MyBsb2FkSFRNTFN0cmluZzpAIjxib2R5PjxzY3Jp
cHQ+Y2xvc2UoKTs8L3NjcmlwdD48L2JvZHk+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiaHR0cDovL3dlYmtpdDMub3JnIl1dOworCisgICAgLy8gV2FpdCBmb3IgdGhlIHN0YXRpc3Rp
Y3MgdG8gYmUgdXBkYXRlZCBpbiB0aGUgbmV0d29yayBwcm9jZXNzLgorICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmc3RhdGlzdGljc1VwZGF0ZWQpOworCisgICAgLy8gQ2hlY2sgdGhhdCB0
aGUgdGhpcmQtcGFydHkgZXZpbDEgaXMgbm93IHJlZ2lzdGVyZWQgYXMgc3VicmVzb3VyY2UuCisg
ICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9pc1JlZ2lzdGVyZWRBc1N1YnJl
c291cmNlVW5kZXJGaXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtp
dC5vcmciXSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwxLmNv
bSJdIGNvbXBsZXRpb25IYW5kbGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7CisgICAgICAgIEVY
UEVDVF9UUlVFKGlzUmVnaXN0ZXJlZCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9
XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKyAgICBkb25lRmxh
ZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX2lzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRl
ckZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Mi5vcmciXSB0
aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwxLmNvbSJdIGNvbXBs
ZXRpb25IYW5kbGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7CisgICAgICAgIEVYUEVDVF9UUlVF
KGlzUmVnaXN0ZXJlZCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworCisgICAgLy8gQ2hlY2sgdGhh
dCB0aGUgdGhpcmQtcGFydHkgZXZpbDIgaXMgbm93IHJlZ2lzdGVyZWQgYXMgc3VicmVzb3VyY2Uu
CisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9pc1JlZ2lzdGVyZWRBc1N1
YnJlc291cmNlVW5kZXJGaXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dl
YmtpdC5vcmciXSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwy
LmNvbSJdIGNvbXBsZXRpb25IYW5kbGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7CisgICAgICAg
IEVYUEVDVF9UUlVFKGlzUmVnaXN0ZXJlZCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworCisgICAg
Ly8gQ2hlY2sgdGhhdCB0aGUgdGhpcmQtcGFydHkgZXZpbDMgaXMgbm93IHJlZ2lzdGVyZWQgYXMg
c3VicmVzb3VyY2UuCisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9pc1Jl
Z2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXJGaXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiaHR0cDovL3dlYmtpdC5vcmciXSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
aHR0cDovL2V2aWwzLmNvbSJdIGNvbXBsZXRpb25IYW5kbGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVk
KSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGlzUmVnaXN0ZXJlZCk7CisgICAgICAgIGRvbmVGbGFn
ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFn
KTsKKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX2lzUmVnaXN0ZXJlZEFz
U3VicmVzb3VyY2VVbmRlckZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8v
d2Via2l0Mi5vcmciXSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2
aWwzLmNvbSJdIGNvbXBsZXRpb25IYW5kbGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7CisgICAg
ICAgIEVYUEVDVF9UUlVFKGlzUmVnaXN0ZXJlZCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsK
KyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKyAgICBk
b25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX2lzUmVnaXN0ZXJlZEFzU3VicmVzb3Vy
Y2VVbmRlckZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0My5v
cmciXSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwzLmNvbSJd
IGNvbXBsZXRpb25IYW5kbGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7CisgICAgICAgIEVYUEVD
VF9UUlVFKGlzUmVnaXN0ZXJlZCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworCisgICAgLy8gQ29s
bGVjdCB0aGUgSVRQIGRhdGEgc3VtbWFyeSB3aGljaCBzaG91bGQgaW5jbHVkZSBhbGwgdGhpcmQg
cGFydGllcyBpbiB0aGUKKyAgICAvLyBvcmRlcjogW2V2aWwzLmNvbSwgZXZpbDEuY29tLCBldmls
Mi5jb21dIHNvcnRlZCBieSBudW1iZXIgb2YgZmlyc3QgcGFydGllcworICAgIC8vIGl0IGFwcGVh
cnMgdW5kZXIgb3IgcmVkaXJlY3RzIHRvCisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0
YVN0b3JlIF9nZXRJVFBEYXRhU3VtbWFyeTpedm9pZChOU0FycmF5PE5TRGljdGlvbmFyeSAqPiAq
aXRwRGF0YSkKKyAgICB7CisgICAgICAgIE5TRW51bWVyYXRvciAqdGhpcmRQYXJ0eURvbWFpbnMg
PSBbaXRwRGF0YSBvYmplY3RFbnVtZXJhdG9yXTsKKyAgICAKKyAgICAgICAgLy8gZXZpbDMKKyAg
ICAgICAgTlNEaWN0aW9uYXJ5ICpldmlsM1RoaXJkUGFydHkgPSBbdGhpcmRQYXJ0eURvbWFpbnMg
bmV4dE9iamVjdF07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShldmlsM1RoaXJkUGFydHlbQCJk
b21haW4iXSwgQCJldmlsMy5jb20iKTsKKworICAgICAgICBOU0VudW1lcmF0b3IgKmV2aWwzRW51
bWVyYXRvciA9IFtldmlsM1RoaXJkUGFydHlbQCJ1bmRlckZpcnN0UGFydGllcyJdIG9iamVjdEVu
dW1lcmF0b3JdOworICAgICAgICBOU0RpY3Rpb25hcnkgKmV2aWwzRmlyc3RQYXJ0eTEgPSBbZXZp
bDNFbnVtZXJhdG9yIG5leHRPYmplY3RdOworICAgICAgICBOU0RpY3Rpb25hcnkgKmV2aWwzRmly
c3RQYXJ0eTIgPSBbZXZpbDNFbnVtZXJhdG9yIG5leHRPYmplY3RdOworICAgICAgICBOU0RpY3Rp
b25hcnkgKmV2aWwzRmlyc3RQYXJ0eTMgPSBbZXZpbDNFbnVtZXJhdG9yIG5leHRPYmplY3RdOwor
CisgICAgICAgIEFTU0VSVF9UUlVFKGV2aWwzRmlyc3RQYXJ0eTEgIT0gbmlsKTsKKyAgICAgICAg
QVNTRVJUX1RSVUUoZXZpbDNGaXJzdFBhcnR5MiAhPSBuaWwpOworICAgICAgICBBU1NFUlRfVFJV
RShldmlsM0ZpcnN0UGFydHkzICE9IG5pbCk7CisKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGV2
aWwzRmlyc3RQYXJ0eTFbQCJkb21haW4iXSwgQCJ3ZWJraXQyLm9yZyIpOworICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEoZXZpbDNGaXJzdFBhcnR5MltAImRvbWFpbiJdLCBAIndlYmtpdDMub3JnIik7
CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShldmlsM0ZpcnN0UGFydHkzW0AiZG9tYWluIl0sIEAi
d2Via2l0Lm9yZyIpOworCisgICAgICAgIEVYUEVDVF9GQUxTRShldmlsM0ZpcnN0UGFydHkxW0Ai
c3RvcmFnZUFjY2Vzc0dyYW50ZWQiXSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShldmlsM0ZpcnN0
UGFydHkyW0Aic3RvcmFnZUFjY2Vzc0dyYW50ZWQiXSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShl
dmlsM0ZpcnN0UGFydHkzW0Aic3RvcmFnZUFjY2Vzc0dyYW50ZWQiXSk7CisKKyAgICAgICAgLy8g
ZXZpbDEKKyAgICAgICAgTlNEaWN0aW9uYXJ5ICpldmlsMVRoaXJkUGFydHkgPSBbdGhpcmRQYXJ0
eURvbWFpbnMgbmV4dE9iamVjdF07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShldmlsMVRoaXJk
UGFydHlbQCJkb21haW4iXSwgQCJldmlsMS5jb20iKTsKKworICAgICAgICBOU0VudW1lcmF0b3Ig
KmV2aWwxRW51bWVyYXRvciA9IFtldmlsMVRoaXJkUGFydHlbQCJ1bmRlckZpcnN0UGFydGllcyJd
IG9iamVjdEVudW1lcmF0b3JdOworICAgICAgICBOU0RpY3Rpb25hcnkgKmV2aWwxRmlyc3RQYXJ0
eTE9IFtldmlsMUVudW1lcmF0b3IgbmV4dE9iamVjdF07CisgICAgICAgIE5TRGljdGlvbmFyeSAq
ZXZpbDFGaXJzdFBhcnR5MiA9IFtldmlsMUVudW1lcmF0b3IgbmV4dE9iamVjdF07CisKKyAgICAg
ICAgQVNTRVJUX1RSVUUoZXZpbDFGaXJzdFBhcnR5MSAhPSBuaWwpOworICAgICAgICBBU1NFUlRf
VFJVRShldmlsMUZpcnN0UGFydHkyICE9IG5pbCk7CisKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KGV2aWwxRmlyc3RQYXJ0eTFbQCJkb21haW4iXSwgQCJ3ZWJraXQyLm9yZyIpOworICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoZXZpbDFGaXJzdFBhcnR5MltAImRvbWFpbiJdLCBAIndlYmtpdC5vcmci
KTsKKworICAgICAgICBFWFBFQ1RfRkFMU0UoZXZpbDFGaXJzdFBhcnR5MVtAInN0b3JhZ2VBY2Nl
c3NHcmFudGVkIl0pOworICAgICAgICBFWFBFQ1RfRkFMU0UoZXZpbDFGaXJzdFBhcnR5MltAInN0
b3JhZ2VBY2Nlc3NHcmFudGVkIl0pOworCisgICAgICAgIC8vIGV2aWwyCisgICAgICAgIE5TRGlj
dGlvbmFyeSAqZXZpbDJUaGlyZFBhcnR5ID0gW3RoaXJkUGFydHlEb21haW5zIG5leHRPYmplY3Rd
OworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXZpbDJUaGlyZFBhcnR5W0AiZG9tYWluIl0sIEAi
ZXZpbDIuY29tIik7CisKKyAgICAgICAgTlNFbnVtZXJhdG9yICpldmlsMkVudW1lcmF0b3IgPSBb
ZXZpbDJUaGlyZFBhcnR5W0AidW5kZXJGaXJzdFBhcnRpZXMiXSBvYmplY3RFbnVtZXJhdG9yXTsK
KyAgICAgICAgTlNEaWN0aW9uYXJ5ICpldmlsMkZpcnN0UGFydHkxID0gW2V2aWwyRW51bWVyYXRv
ciBuZXh0T2JqZWN0XTsKKworICAgICAgICBBU1NFUlRfVFJVRShldmlsMkZpcnN0UGFydHkxICE9
IG5pbCk7CisKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGV2aWwyRmlyc3RQYXJ0eTFbQCJkb21h
aW4iXSwgQCJ3ZWJraXQub3JnIik7CisgICAgICAgIEVYUEVDVF9GQUxTRShldmlsMkZpcnN0UGFy
dHkxW0Aic3RvcmFnZUFjY2Vzc0dyYW50ZWQiXSk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsK
KyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385166</attachid>
            <date>2019-12-09 10:25:59 -0800</date>
            <delta_ts>2019-12-09 12:00:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204932-20191209102559.patch</filename>
            <type>text/plain</type>
            <size>61804</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg4NWJjY2JkNTQzNGFiZDdj
NGJlMTE2ODM5ZDYxMTc5NDlhYjIzMTUuLjAxOGQ4NjZhYjUzNmFiN2NlOWRlOGIwODRkOGVhNDNj
YWUyMTkxZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTktMTItMDkgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIFdlYktp
dCBBUEkgY2FsbHMgZm9yIElUUCBEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDQ5MzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3NjMyNzUz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggZXhwb3NlcyBJVFAgZGF0YSBjYXB0dXJlZCBpbiB0aGUgbmV0d29yayBwcm9jZXNzIHRo
cm91Z2ggdGhlCisgICAgICAgIE9iamVjdGl2ZSBDIEFQSS4gVGhlIGRhdGEgaGFkIHRvIGJlIGVu
Y29kZWQgYW5kIHNlbnQgdmlhIElQQworICAgICAgICB0byB0aGUgVUlQcm9jZXNzLCBzbyB0aGlz
IHBhdGNoIGFkZHMgbmV3IGVuY29kZS9kZWNvZGUgZnVuY3Rpb25zCisgICAgICAgIGFuZCByZWxv
Y2F0ZXMgdGhlIHN0cnVjdHMgaW50byB0aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
CisgICAgICAgIGNsYXNzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZW5zdXJlVGhpcmRQYXJ0eURh
dGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpnZXRUaGly
ZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnMpOgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5
RGF0YSBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICBVcGRhdGVk
IG1lbnRpb25zIG9mIFRoaXJkUGFydHlEYXRhIHRvIGluY2x1ZGUgdGhlCisgICAgICAgIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6IGNsYXNzIHNwZWNpZmllci4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjph
Z2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgIFVwZGF0ZWQg
dGhlIGRhdGEgdG8gYmUgc2VudCB2aWEgY29tcGxldGlvbiBoYW5kbGVyIHN0cmFpZ2h0IGZyb20K
KyAgICAgICAgdGhlIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBhcyBvcHBvc2VkIHRv
IHRoZSBuZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgdG8gYXNzdXJlIHRoZSBjYWxscyB0byBhZ2dy
ZWdhdGVkVGhpcmRQYXJ0eURhdGEoKSBhcmUgaGFwcGVuaW5nCisgICAgICAgIG9uIGEgYmFja2dy
b3VuZCB0aHJlYWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpnZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YVN1bW1hcnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW46CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLSVRQRmlyc3RQYXJ0eS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLSVRQRmlyc3RQYXJ0eS5tbTog
QWRkZWQuCisgICAgICAgICgtW1dLSVRQRmlyc3RQYXJ0eSBpbml0V2l0aERvbWFpbjphbmRTdG9y
YWdlQWNjZXNzOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tJVFBUaGlyZFBh
cnR5Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tJVFBUaGlyZFBh
cnR5Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV0tJVFBUaGlyZFBhcnR5IGdldFdLSVRQRmlyc3RQ
YXJ0eUxpc3Q6XSk6CisgICAgICAgICgtW1dLSVRQVGhpcmRQYXJ0eSBpbml0V2l0aERvbWFpbjp1
bmRlckZpcnN0UGFydGllczpdKToKKyAgICAgICAgV0tJVFBGaXJzdFBhcnR5IGFuZCBXS0lUUFRo
aXJkUGFydHkgcmVwcmVzZW50IGZpcnN0IGFuZCB0aGlyZCBwYXJ0eQorICAgICAgICBkb21haW5z
IHJlc3BlY3RpdmVseSB3aGljaCBob2xkIElUUCBkYXRhIGFuZCBhcmUgc3Ryb25nbHkgdHlwZWQg
dG8KKyAgICAgICAgZW5zdXJlIHRoZSBjb3JyZWN0IGRhdGEgaXMgYmVpbmcgZXhwb3NlZCB2aWEg
QVBJLiBUaGUgZnVuY3Rpb24gYW5kCisgICAgICAgIHBhcmFtZXRlciBuYW1lcyBmb3Igc3RvcmFn
ZSBhY2Nlc3Mgc3BlY2lmeSAidGhpcmQgcGFydHkiIGJlY2F1c2UgZWFjaAorICAgICAgICBXS0lU
UEZpcnN0UGFydHkgaG9sZHMgZGF0YSByZWxhdmVudCB0byBhIHNwZWNpZmljIHRoaXJkIHBhcnR5
IGFuZAorICAgICAgICBzdG9yYWdlIGFjY2VzcyB3b3VsZCBub3QgbWFrZSBzZW5zZSBpbiBqdXN0
IGEgZmlyc3QgcGFydHkgY29udGV4dC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2dl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeTpdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFTdW1tYXJ5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpnZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YVN1bW1hcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisK
IDIwMTktMTItMDkgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IEFkZCBhbiBvcHRpb24gdG8gY2FwdHVyZSBhdWRpbyBpbiBHUFUgcHJvY2VzcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXgg
NTUzZTA1MmQ4MTc0YTZkZTM0MWIzM2I1ZDk5NTM1Y2FhMDRjZmRhMC4uOTFiMDk1NWY0YjkwODI4
ZGUxMTEyZmIzYWM5Yzg5NDVjZDQyZDJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC03ODYsNyArNzg2LDcgQEAgc3Rh
dGljIFNRTGl0ZVN0YXRlbWVudCBtYWtlTWVkaWFuV2l0aFVJUXVlcnkoU1FMaXRlRGF0YWJhc2Um
IGRhdGFiYXNlKQogICAgIHJldHVybiBTUUxpdGVTdGF0ZW1lbnQoZGF0YWJhc2UsIG1ha2VTdHJp
bmcoIlNFTEVDVCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSBGUk9NIE9ic2VydmVkRG9t
YWlucyBJTk5FUiBKT0lOIChTRUxFQ1QgIiwgam9pblN1YlN0YXRpc3RpY3NGb3JTb3J0aW5nKCks
ICIpIGFzIHEgT04gT2JzZXJ2ZWREb21haW5zLmRvbWFpbklEID0gcS5kb21haW5JRCBMSU1JVCAx
IE9GRlNFVCA/IikpOwogfQogCi1WZWN0b3I8VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0
UGFydHk+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRUaGlyZFBhcnR5
RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnModW5zaWduZWQgdGhpcmRQYXJ0eURvbWFp
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdGhpcmRQYXJ0eURvbWFpbikgY29uc3QKK1Zl
Y3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3Bl
Y2lmaWNGaXJzdFBhcnR5PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0
VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHVuc2lnbmVkIHRoaXJk
UGFydHlEb21haW5JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRoaXJkUGFydHlEb21haW4p
IGNvbnN0CiB7CiAgICAgaWYgKG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudC5iaW5kSW50
KDEsIHRoaXJkUGFydHlEb21haW5JRCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1fZ2V0QWxs
U3ViU3RhdGlzdGljc1N0YXRlbWVudC5iaW5kSW50KDIsIHRoaXJkUGFydHlEb21haW5JRCkgIT0g
U1FMSVRFX09LCkBAIC03OTQsMTAgKzc5NCwxMCBAQCBWZWN0b3I8VGhpcmRQYXJ0eURhdGFGb3JT
cGVjaWZpY0ZpcnN0UGFydHk+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOgog
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmdldFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9t
YWluLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31zIiwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLSAgICBWZWN0b3I8VGhp
cmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IHRoaXJkUGFydHlEYXRhRm9yU3BlY2lm
aWNGaXJzdFBhcnR5RG9tYWluczsKKyAgICBWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4gdGhpcmRQYXJ0eURh
dGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zOwogICAgIHdoaWxlIChtX2dldEFsbFN1YlN0
YXRpc3RpY3NTdGF0ZW1lbnQuc3RlcCgpID09IFNRTElURV9ST1cpIHsKICAgICAgICAgUmVnaXN0
cmFibGVEb21haW4gZmlyc3RQYXJ0eURvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNr
ZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoZ2V0RG9tYWluU3RyaW5nRnJvbURv
bWFpbklEKG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCkpKTsK
LSAgICAgICAgdGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zLmFwcGVu
ZElmTm90Q29udGFpbnMoVGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHkgeyBmaXJz
dFBhcnR5RG9tYWluLCBoYXNTdG9yYWdlQWNjZXNzKGZpcnN0UGFydHlEb21haW4sIHRoaXJkUGFy
dHlEb21haW4pIH0pOworICAgICAgICB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0
eURvbWFpbnMuYXBwZW5kSWZOb3RDb250YWlucyhXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5IHsgZmlyc3RQYXJ0eURvbWFp
biwgaGFzU3RvcmFnZUFjY2VzcyhmaXJzdFBhcnR5RG9tYWluLCB0aGlyZFBhcnR5RG9tYWluKSB9
KTsKICAgICB9CiAgICAgcmVzZXRTdGF0ZW1lbnQobV9nZXRBbGxTdWJTdGF0aXN0aWNzU3RhdGVt
ZW50KTsKICAgICByZXR1cm4gdGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21h
aW5zOwpAQCAtODA4LDExICs4MDgsMTEgQEAgc3RhdGljIGJvb2wgaGFzQmVlblRoaXJkUGFydHko
dW5zaWduZWQgdGltZXNVbmRlckZpcnN0UGFydHkpCiAgICAgcmV0dXJuIHRpbWVzVW5kZXJGaXJz
dFBhcnR5ID4gMDsKIH0KIAotVmVjdG9yPFRoaXJkUGFydHlEYXRhPiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKCkgY29uc3QKK1Zl
Y3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHlEYXRh
KCkgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFZlY3Rv
cjxUaGlyZFBhcnR5RGF0YT4gdGhpcmRQYXJ0eURhdGFMaXN0OworICAgIFZlY3RvcjxXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiB0aGlyZFBhcnR5RGF0YUxp
c3Q7CiAgICAgU1FMaXRlU3RhdGVtZW50IHNvcnRlZFN0YXRpc3RpY3MobV9kYXRhYmFzZSwgbWFr
ZVN0cmluZygiU0VMRUNUICIsIGpvaW5TdWJTdGF0aXN0aWNzRm9yU29ydGluZygpKSk7CiAgICAg
aWYgKHNvcnRlZFN0YXRpc3RpY3MucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBz
b3J0ZWRTdGF0aXN0aWNzLmJpbmRUZXh0KDEsICIlIikKQEAgLTgyNSw3ICs4MjUsNyBAQCBWZWN0
b3I8VGhpcmRQYXJ0eURhdGE+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjph
Z2dyZWdhdGVkVGhpcmRQYXJ0eQogICAgICAgICBpZiAoaGFzQmVlblRoaXJkUGFydHkoc29ydGVk
U3RhdGlzdGljcy5nZXRDb2x1bW5JbnQoMSkpKSB7CiAgICAgICAgICAgICBhdXRvIHRoaXJkUGFy
dHlEb21haW5JRCA9IHNvcnRlZFN0YXRpc3RpY3MuZ2V0Q29sdW1uSW50KDApOwogICAgICAgICAg
ICAgYXV0byB0aGlyZFBhcnR5RG9tYWluID0gUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENy
ZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhnZXREb21haW5TdHJpbmdGcm9tRG9tYWlu
SUQodGhpcmRQYXJ0eURvbWFpbklEKSk7Ci0gICAgICAgICAgICB0aGlyZFBhcnR5RGF0YUxpc3Qu
YXBwZW5kKFRoaXJkUGFydHlEYXRhIHsgdGhpcmRQYXJ0eURvbWFpbiwgZ2V0VGhpcmRQYXJ0eURh
dGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHRoaXJkUGFydHlEb21haW5JRCwgdGhpcmRQ
YXJ0eURvbWFpbikgfSk7CisgICAgICAgICAgICB0aGlyZFBhcnR5RGF0YUxpc3QuYXBwZW5kKFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGEgeyB0aGlyZFBhcnR5
RG9tYWluLCBnZXRUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnModGhp
cmRQYXJ0eURvbWFpbklELCB0aGlyZFBhcnR5RG9tYWluKSB9KTsKICAgICAgICAgfQogICAgIH0K
ICAgICByZXR1cm4gdGhpcmRQYXJ0eURhdGFMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCA3YWQ4NjE1ZjVhMjcyYzZmZmM1
NmRlYWU1MmFlZjJiZTZlYTZkYjcxLi43N2U5ZjhmNzEzYTNlMzMxMDAzZWU5YmZhYjgxYjkxYTY3
NTU2OGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgVmVjdG9yPFRoaXJkUGFydHlEYXRhPiBhZ2dyZWdhdGVkVGhp
cmRQYXJ0eURhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gYWdncmVnYXRlZFRoaXJkUGFydHlEYXRh
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVDb29raWVCbG9ja2luZyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjbGFzc2lmeVByZXZh
bGVudFJlc291cmNlcygpIG92ZXJyaWRlOwpAQCAtMTM5LDcgKzEzOSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBvcGVuSVRQRGF0YWJhc2UoKTsKICAgICBib29sIGlzQ29ycmVjdFRhYmxlU2NoZW1h
KCk7CiAgICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29u
c3QgU3ViRnJhbWVEb21haW4mKSBjb25zdDsKLSAgICBWZWN0b3I8VGhpcmRQYXJ0eURhdGFGb3JT
cGVjaWZpY0ZpcnN0UGFydHk+IGdldFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5
RG9tYWlucyh1bnNpZ25lZCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKKyAgICBW
ZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNw
ZWNpZmljRmlyc3RQYXJ0eT4gZ2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlE
b21haW5zKHVuc2lnbmVkLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogICAgIHZv
aWQgb3BlbkFuZERyb3BPbGREYXRhYmFzZUlmTmVjZXNzYXJ5KCk7CiAgICAgU3RyaW5nIGdldERv
bWFpblN0cmluZ0Zyb21Eb21haW5JRCh1bnNpZ25lZCkgY29uc3Q7CiAgICAgU3RyaW5nIGdldFN1
YlN0YXRpc3RpY1N0YXRlbWVudChjb25zdCBTdHJpbmcmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKaW5kZXggODE5Mjg1Mzhh
ZDEyNTAzZWYyZmZlZWYwNTc1Y2RkODQ4ZWIzMmQ1OS4uODJlNGIwMzNkMzcyZmZkNTYyYzI2OTM1
YjVkYTk5MTNiZWIzZDE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAgLTEwMywxNSArMTAzLDE1IEBAIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpjYWxjdWxhdGVBbmRTdWJtaXRUZWxlbWV0cnkoKSBj
b25zdAogICAgICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5OjpjYWxjdWxh
dGVBbmRTdWJtaXQoKnRoaXMpOwogfQogCi1zdGF0aWMgdm9pZCBlbnN1cmVUaGlyZFBhcnR5RGF0
YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbihWZWN0b3I8VGhpcmRQYXJ0eURhdGFGb3JTcGVj
aWZpY0ZpcnN0UGFydHk+JiB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIGJvb2wgdGhpcmRQ
YXJ0eUhhc1N0b3JhZ2VBY2Nlc3MpCitzdGF0aWMgdm9pZCBlbnN1cmVUaGlyZFBhcnR5RGF0YUZv
clNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbihWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4mIHRoaXJkUGFydHlE
YXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
Zmlyc3RQYXJ0eURvbWFpbiwgYm9vbCB0aGlyZFBhcnR5SGFzU3RvcmFnZUFjY2VzcykKIHsKLSAg
ICBUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSB0aGlyZFBhcnR5RGF0YUZvclNw
ZWNpZmljRmlyc3RQYXJ0eSB7IGZpcnN0UGFydHlEb21haW4sIHRoaXJkUGFydHlIYXNTdG9yYWdl
QWNjZXNzIH07CisgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5
RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQ
YXJ0eSB7IGZpcnN0UGFydHlEb21haW4sIHRoaXJkUGFydHlIYXNTdG9yYWdlQWNjZXNzIH07CiAg
ICAgdGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW4uYXBwZW5kSWZOb3RD
b250YWlucyh0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSk7CiB9CiAKLXN0YXRp
YyBWZWN0b3I8VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IGdldFRoaXJkUGFy
dHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzJiB0aGlyZFBhcnR5U3RhdGlzdGljKQorc3RhdGljIFZlY3RvcjxXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBn
ZXRUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnMoY29uc3QgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyYgdGhpcmRQYXJ0eVN0YXRpc3RpYykKIHsKLSAgICBWZWN0b3I8VGhp
cmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IHRoaXJkUGFydHlEYXRhRm9yU3BlY2lm
aWNGaXJzdFBhcnR5RG9tYWluczsKKyAgICBWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4gdGhpcmRQYXJ0eURh
dGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zOwogCiAgICAgZm9yIChhdXRvIGZpcnN0UGFy
dHlEb21haW4gOiB0aGlyZFBhcnR5U3RhdGlzdGljLnN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFp
bnMpCiAgICAgICAgIGVuc3VyZVRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9t
YWluKHRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucywgZmlyc3RQYXJ0
eURvbWFpbiwgdGhpcmRQYXJ0eVN0YXRpc3RpYy5zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURv
bWFpbnMuY29udGFpbnMoZmlyc3RQYXJ0eURvbWFpbikpOwpAQCAtMTMwLDE0ICsxMzAsMTQgQEAg
c3RhdGljIGJvb2wgaGFzQmVlblRoaXJkUGFydHkoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyYgc3RhdGlzdGljKQogICAgICAgICB8fCAhc3RhdGlzdGljLnN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RzVG8uaXNFbXB0eSgpOwogfQogCi1WZWN0b3I8VGhpcmRQYXJ0eURhdGE+IFJlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKCkgY29u
c3QKK1ZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRh
PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5
RGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBW
ZWN0b3I8VGhpcmRQYXJ0eURhdGE+IHRoaXJkUGFydHlEYXRhTGlzdDsKKyAgICBWZWN0b3I8V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gdGhpcmRQYXJ0eURh
dGFMaXN0OwogICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogbV9yZXNvdXJjZVN0YXRpc3RpY3NN
YXAudmFsdWVzKCkpIHsKICAgICAgICAgaWYgKGhhc0JlZW5UaGlyZFBhcnR5KHN0YXRpc3RpYykp
Ci0gICAgICAgICAgICB0aGlyZFBhcnR5RGF0YUxpc3QuYXBwZW5kKFRoaXJkUGFydHlEYXRhIHsg
c3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluLCBnZXRUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmlj
Rmlyc3RQYXJ0eURvbWFpbnMoc3RhdGlzdGljKSB9KTsKKyAgICAgICAgICAgIHRoaXJkUGFydHlE
YXRhTGlzdC5hcHBlbmQoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5
RGF0YSB7IHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbiwgZ2V0VGhpcmRQYXJ0eURhdGFGb3JT
cGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHN0YXRpc3RpYykgfSk7CiAgICAgfQogICAgIHN0ZDo6
c29ydCh0aGlyZFBhcnR5RGF0YUxpc3QucmJlZ2luKCksIHRoaXJkUGFydHlEYXRhTGlzdC5yZW5k
KCkpOwogICAgIHJldHVybiB0aGlyZFBhcnR5RGF0YUxpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggOWJjYTkwMzBjNTZlN2RjMjMz
MWQ5NjA5M2U3NDcxNTU3NjA4Njc3YS4uMGIwZTZkODA1NmRiMDZhMGM4YzU1NjE0ODIwNzMxYjE1
OTEzM2RjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmUuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IG92ZXJyaWRlOwogCi0gICAgVmVjdG9yPFRoaXJkUGFydHlEYXRhPiBhZ2dyZWdhdGVkVGhpcmRQ
YXJ0eURhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gYWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX3Jl
c291cmNlU3RhdGlzdGljc01hcDsgfQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Oktl
eWVkRW5jb2Rlcj4gY3JlYXRlRW5jb2RlckZyb21EYXRhKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggYWUzYzhlZWY4YTk5NTVkNjYwMTc5OWM5
YmFmMzljN2E0OGI2NzlkYi4uN2RhZGY0ZGI4ODczNTJhY2Y5ZTFlZjVmNDAwNzRmYWVlYWMwM2E4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtOTgsNyAr
OTgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBWZWN0b3I8VGhpcmRQYXJ0eURhdGE+IGFnZ3JlZ2F0ZWRUaGlyZFBhcnR5
RGF0YSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiBhZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoKSBj
b25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29va2llQmxvY2tpbmcoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CiAgICAgdm9pZCB1cGRhdGVDb29raWVCbG9ja2lu
Z0ZvckRvbWFpbnMoY29uc3QgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3ImLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBkNDU4NmQ1YTA4ODEwZGFjYTYzNjAwNmRkMGIw
YWQ0ZTliNmEyOGJjLi4wYTk0NDA0NThkNjI2YzBiZjY5YTJlYmNjM2MyNDZjZjIxY2IxM2VkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAt
MTE1Miw5ICsxMTUyLDIyIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpu
b3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnCiAgICAgICAgIGNvbnN0
X2Nhc3Q8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKj4odGhpcyktPm5ldHdvcmtTZXNz
aW9uKCktPm5vdGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQobnVtYmVyT2ZQcmV2
YWxlbnRSZXNvdXJjZXMsIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFj
dGlvbiwgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCB0
b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJh
Y3Rpb24sIG1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblByZXZhbGVudFJlc291cmNlV2l0
aFVzZXJJbnRlcmFjdGlvbiwgdG9wM051bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVJLCB0
b3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0VUksIHRvcDNNZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRV
SSwgdG9wM01lZGlhblVuaXF1ZVJlZGlyZWN0c1dpdGhvdXRVSSwgdG9wM01lZGlhbkRhdGFSZWNv
cmRzUmVtb3ZlZFdpdGhvdXRVSSk7CiB9CiAKLVZlY3RvcjxUaGlyZFBhcnR5RGF0YT4gV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoKQordm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0
YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OlRoaXJkUGFydHlEYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBy
ZXR1cm4gbV9zdGF0aXN0aWNzU3RvcmUtPmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YSgpOworICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBwb3N0VGFzayhbdGhpcywgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlICB7Cisg
ICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3RvcmUpIHsKKyAgICAgICAgICAgIHBvc3RUYXNrUmVw
bHkoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFZlY3RvcjxX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiB0aGlyZFBhcnR5
RGF0YSA9IG1fc3RhdGlzdGljc1N0b3JlLT5hZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoKTsKKyAg
ICAgICAgcG9zdFRhc2tSZXBseShbdGhpcmRQYXJ0eURhdGEgPSBXVEZNb3ZlKHRoaXJkUGFydHlE
YXRhKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUodGhpcmRQYXJ0
eURhdGEpKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IGM1
OTFmYzJlM2M5MDg2YzIwNThhYjQ3NWM2ZDIzNGE2MzQ0ZjkxNTcuLjJlNWI0NGZmYWQ1ZjRmYjNi
YTgwNmZjNDcyNmI1ODU0NmQ3NTlmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmgKQEAgLTI3LDYgKzI3LDkgQEAKIAogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1
ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJFbmNvZGVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFj
Y2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKQEAgLTc4LDYgKzgxLDMwIEBAIHN0cnVjdCBSZWdpc3Ry
YWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciB7CiAgICAgUmVnaXN0cmFibGVEb21haW5zVG9C
bG9ja0Nvb2tpZXNGb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBkb21haW5zVG9C
bG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNUb0Jsb2NrQnV0
S2VlcENvb2tpZXNGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9u
QXNGaXJzdFBhcnR5Lmlzb2xhdGVkQ29weSgpIH07IH0KIH07CiAKK2NsYXNzIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1h
aW4+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczsKKyAgICB1c2luZyBSZWdpc3RyYWJsZURvbWFpbiA9
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOworICAgIHVzaW5nIFRvcEZyYW1lRG9tYWluID0g
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CisgICAgdXNpbmcgU3ViRnJhbWVEb21haW4gPSBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKKyAgICB1c2luZyBTdWJSZXNvdXJjZURvbWFpbiA9
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOworICAgIHVzaW5nIFJlZGlyZWN0RG9tYWluID0g
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CisgICAgdXNpbmcgUmVkaXJlY3RlZEZyb21Eb21h
aW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKKyAgICB1c2luZyBSZWRpcmVjdGVkVG9E
b21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKKyAgICB1c2luZyBOYXZpZ2F0ZWRG
cm9tRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CisgICAgdXNpbmcgTmF2aWdh
dGVkVG9Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKKyAgICB1c2luZyBEb21h
aW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKKyAg
ICB1c2luZyBPcGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKKyAgICB1
c2luZyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA9IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkOworICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biA9IFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjsKKworICAgIHN0YXRpYyBSZWY8V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNz
aW9uLCBjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFNob3Vs
ZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShuZXR3
b3JrU2Vzc2lvbiwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgc2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdCkpOworICAgIH0KKworICAgIH5XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUoKTsKKwogc3RydWN0IFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5IHsKICAg
ICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmaXJzdFBhcnR5RG9tYWluOwogICAgIGJvb2wg
c3RvcmFnZUFjY2Vzc0dyYW50ZWQ7CkBAIC04Nyw2ICsxMTQsMjUgQEAgc3RydWN0IFRoaXJkUGFy
dHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5IHsKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmco
IkhhcyBiZWVuIGdyYW50ZWQgc3RvcmFnZSBhY2Nlc3MgdW5kZXIgIiwgZmlyc3RQYXJ0eURvbWFp
bi5zdHJpbmcoKSwgIjogIiwgc3RvcmFnZUFjY2Vzc0dyYW50ZWQgPyAnMScgOiAnMCcpOwogICAg
IH0KIAorICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7
CisgICAgICAgIGVuY29kZXIgPDwgZmlyc3RQYXJ0eURvbWFpbjsKKyAgICAgICAgZW5jb2RlciA8
PCBzdG9yYWdlQWNjZXNzR3JhbnRlZDsKKyAgICB9CisKKyAgICBzdGF0aWMgT3B0aW9uYWw8VGhp
cmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IGRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIpCisgICAgeworICAgICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkZWNvZGVk
RG9tYWluOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRlY29kZWREb21haW4pKQorICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBib29sIGRlY29kZWRTdG9y
YWdlQWNjZXNzOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRlY29kZWRTdG9yYWdlQWNj
ZXNzKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJu
IHt7IGRlY29kZWREb21haW4sIGRlY29kZWRTdG9yYWdlQWNjZXNzIH19OworICAgIH0KKwogICAg
IGJvb2wgb3BlcmF0b3I9PShUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSBjb25z
dCBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBmaXJzdFBhcnR5RG9tYWluID09
IG90aGVyLmZpcnN0UGFydHlEb21haW4gJiYgc3RvcmFnZUFjY2Vzc0dyYW50ZWQgPT0gb3RoZXIu
c3RvcmFnZUFjY2Vzc0dyYW50ZWQ7CkBAIC0xMTIsMzUgKzE1OCwzMSBAQCBzdHJ1Y3QgVGhpcmRQ
YXJ0eURhdGEgewogICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogICAg
IH0KIAotICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFRoaXJkUGFydHlEYXRhICZvdGhlcikgY29u
c3QKKyAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgewot
ICAgICAgICByZXR1cm4gdW5kZXJGaXJzdFBhcnRpZXMuc2l6ZSgpIDwgb3RoZXIudW5kZXJGaXJz
dFBhcnRpZXMuc2l6ZSgpOworICAgICAgICBlbmNvZGVyIDw8IHRoaXJkUGFydHlEb21haW47Cisg
ICAgICAgIGVuY29kZXIgPDwgdW5kZXJGaXJzdFBhcnRpZXM7CiAgICAgfQotfTsKIAotY2xhc3Mg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSwgV1RGOjpEZXN0cnVjdGlv
blRocmVhZDo6TWFpbj4gewotcHVibGljOgotICAgIHVzaW5nIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPSBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwotICAgIHVzaW5nIFJlZ2lzdHJh
YmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgVG9wRnJh
bWVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBTdWJGcmFt
ZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIFN1YlJlc291
cmNlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgUmVkaXJl
Y3REb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBSZWRpcmVj
dGVkRnJvbURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIFJl
ZGlyZWN0ZWRUb0RvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5n
IE5hdmlnYXRlZEZyb21Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1
c2luZyBOYXZpZ2F0ZWRUb0RvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAg
IHVzaW5nIERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluOwotICAgIHVzaW5nIE9wZW5lckRvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluOwotICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkID0gV2ViQ29yZTo6U3RvcmFn
ZUFjY2Vzc1dhc0dyYW50ZWQ7Ci0gICAgdXNpbmcgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
ID0gV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOwotCi0gICAgc3RhdGljIFJl
ZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYg
bmV0d29ya1Nlc3Npb24sIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KQorICAg
IHN0YXRpYyBPcHRpb25hbDxUaGlyZFBhcnR5RGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZShuZXR3b3JrU2Vzc2lvbiwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCkpOworICAgICAgICBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiBkZWNvZGVkRG9tYWluOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGRlY29kZWREb21haW4pKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
ICAgICBPcHRpb25hbDxWZWN0b3I8VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+
PiBkZWNvZGVkRmlyc3RQYXJ0aWVzOworICAgICAgICBkZWNvZGVyID4+IGRlY29kZWRGaXJzdFBh
cnRpZXM7CisgICAgICAgIGlmICghZGVjb2RlZEZpcnN0UGFydGllcykKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7IGRlY29kZWREb21haW4sIFdU
Rk1vdmUoKmRlY29kZWRGaXJzdFBhcnRpZXMpIH19OwogICAgIH0KIAotICAgIH5XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUoKTsKKyAgICBib29sIG9wZXJhdG9yPChjb25zdCBUaGlyZFBh
cnR5RGF0YSAmb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gdW5kZXJGaXJzdFBh
cnRpZXMuc2l6ZSgpIDwgb3RoZXIudW5kZXJGaXJzdFBhcnRpZXMuc2l6ZSgpOworICAgIH0KK307
CiAKICAgICB2b2lkIGRpZERlc3Ryb3lOZXR3b3JrU2Vzc2lvbigpOwogCkBAIC0yMzUsNyArMjc3
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChW
ZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik7CiAgICAgdm9pZCByZXF1
ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYm
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJJRCwgT3BlbmVyRG9tYWluJiYpOwotICAg
IFZlY3RvcjxUaGlyZFBhcnR5RGF0YT4gYWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKCk7CisgICAg
dm9pZCBhZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4mJik+JiYp
OwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZShOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApp
bmRleCA5MzIzNTdlOTY2YWVhMzNiNzMwNjQxOTdlYTNmMzliMjRlNjI2N2IxLi40YmJlYTcyNDJm
NjI4YTZiM2I2Mzc2OTQzYWFhZmRkOWQwMWJhM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNzUwLDYgKzc1MCwxOSBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRAogICAgIH0KIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFTdW1tYXJ5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
aWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtT
ZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5hZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7
IH0pOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgIH0KK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApp
bmRleCA0ZDRhZGQwMGNlMzg2YzA3ZWQ4NzY2NDRhZWZlNDc4MTk5NWVlZjAyLi41YmMxNjVhZTYz
ZjBhNTQzNTg3N2ZiZjY3MzUwNmUwMmVkNmQzYzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yMzEsNiArMjMxLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0UGFy
YW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQo
UEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRH
cmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAg
dm9pZCBnZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkoUEFMOjpTZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6VGhpcmRQYXJ0eURhdGE+JiYpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ29va2llQmxv
Y2tpbmdVcGRhdGUoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoUEFM
OjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzdWJt
aXRUZWxlbWV0cnkoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgppbmRleCBlZTA4NmMwY2QxNjc2ZTUwZDc4ZWRhOTYyMDFjYzM3MWFjNDJm
YzhhLi4yYWQ5ODgxZmNmN2VhODQ0ZDgyYmM3N2ZhYzA3ZjQ5M2Q3YzRkZTVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTExMyw2ICsxMTMsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgU2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMpIC0+ICgpIEFzeW5jCiAg
ICAgU2V0R3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluLCBib29sIGlzR3JhbmRmYXRoZXJlZCkgLT4g
KCkgQXN5bmMKICAgICBTZXRVc2VJVFBEYXRhYmFzZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGJvb2wgdmFsdWUpIC0+ICgpIEFzeW5jCisgICAgR2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFTdW1tYXJ5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKFZlY3RvcjxXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+IHRoaXJkUGFydHlE
YXRhKSBBc3luYwogICAgIFNldEdyYW5kZmF0aGVyaW5nVGltZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFNlY29uZHMgc2Vjb25kcykgLT4gKCkgQXN5bmMKICAgICBTZXRNYXhTdGF0aXN0aWNz
RW50cmllcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IG1heGltdW1FbnRyeUNv
dW50KSAtPiAoKSBBc3luYwogICAgIFNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVt
b3ZhbChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY29uZHMgc2Vjb25kcykgLT4gKCkgQXN5
bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0lUUEZp
cnN0UGFydHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0lUUEZpcnN0
UGFydHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zZGJjMTYzMzE3ZGUzM2NiMWM0MGYzODU1NGU0NGJiMTg3ODY3
Mzg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLSVRQRmlyc3RQYXJ0eS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitOU19BU1NV
TUVfTk9OTlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIFdLSVRQRmlyc3RQYXJ0eSA6IE5TT2JqZWN0
CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERvbWFpbjooTlNTdHJpbmcgKilkb21haW4gYW5k
VGhpcmRQYXJ0eVN0b3JhZ2VBY2Nlc3M6KEJPT0wpc3RvcmFnZUFjY2VzczsKKworQHByb3BlcnR5
IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICpmaXJzdFBhcnR5RG9tYWluOworQHByb3BlcnR5
IChub25hdG9taWMpIEJPT0wgdGhpcmRQYXJ0eVN0b3JhZ2VBY2Nlc3NHcmFudGVkOworCitAZW5k
CisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLSVRQRmlyc3RQYXJ0eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0lUUEZpcnN0UGFydHkubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQxMTcyMjczY2Qy
YWNkMjcyNTdkM2NjNjQ4YTdmN2U3YTZlOWEyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0lUUEZpcnN0UGFydHkubW0KQEAgLTAsMCArMSw0
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tJVFBGaXJz
dFBhcnR5LmgiCisKK0BpbXBsZW1lbnRhdGlvbiBXS0lUUEZpcnN0UGFydHkKKworLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRG9tYWluOihOU1N0cmluZyAqKWRvbWFpbiBhbmRUaGlyZFBhcnR5U3Rv
cmFnZUFjY2VzczooQk9PTClzdG9yYWdlQWNjZXNzCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBl
ciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBzZWxmLmZpcnN0UGFydHlEb21h
aW4gPSBkb21haW47CisgICAgc2VsZi50aGlyZFBhcnR5U3RvcmFnZUFjY2Vzc0dyYW50ZWQgPSBz
dG9yYWdlQWNjZXNzOworICAgIHJldHVybiBzZWxmOworfQorCitAZW5kCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0lUUFRoaXJkUGFydHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0lUUFRoaXJkUGFydHkuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40OGYxYTZkYzNiZWE0NjFhNDRmMTYwY2I1OGFlMWJkODIzMzA0NDU2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSVRQVGhpcmRQYXJ0
eS5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXS0lUUEZpcnN0UGFy
dHkuaCIKKyNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgorCitOU19B
U1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIFdLSVRQVGhpcmRQYXJ0eSA6IE5TT2Jq
ZWN0CisKKy0gKE5TQXJyYXk8V0tJVFBGaXJzdFBhcnR5ICo+ICopZ2V0V0tJVFBGaXJzdFBhcnR5
TGlzdDooVmVjdG9yPFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGly
ZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4gKil1bmRlckZpcnN0UGFydGllczsKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aERvbWFpbjooTlNTdHJpbmcgKilkb21haW4gdW5kZXJGaXJz
dFBhcnRpZXM6KFZlY3RvcjxXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+Jil1bmRlckZpcnN0UGFydGllczsK
KworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICp0aGlyZFBhcnR5RG9tYWlu
OworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TQXJyYXk8V0tJVFBGaXJzdFBhcnR5ICo+
ICp1bmRlckZpcnN0UGFydGllczsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0lUUFRoaXJkUGFy
dHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tJVFBUaGlyZFBhcnR5
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjU0MjY1YjRjZjgxOTJiOGUyZGE5YTg2NDI1MWQ3ZTAyMmEwMGVkYWIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tJ
VFBUaGlyZFBhcnR5Lm1tCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIldLSVRQVGhpcmRQYXJ0eS5oIgorCisjaW1wb3J0ICJBUElBcnJh
eS5oIgorI2ltcG9ydCAiV0tJVFBGaXJzdFBhcnR5LmgiCisjaW1wb3J0ICJXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaCIKKworQGltcGxlbWVudGF0aW9uIFdLSVRQVGhpcmRQYXJ0eQor
CistIChOU0FycmF5PFdLSVRQRmlyc3RQYXJ0eSAqPiAqKWdldFdLSVRQRmlyc3RQYXJ0eUxpc3Q6
KFZlY3RvcjxXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0
eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+ICopdW5kZXJGaXJzdFBhcnRpZXMKK3sKKyAgICBO
U011dGFibGVBcnJheTxXS0lUUEZpcnN0UGFydHkgKj4gKmFwaVVuZGVyRmlyc3RQYXJ0aWVzID0g
W05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnVuZGVyRmlyc3RQYXJ0aWVzLT5zaXpl
KCldOworICAgIGZvciAoY29uc3QgYXV0byYgdGhpcmRQYXJ0eURhdGFVbmRlckZpcnN0UGFydHkg
OiAqdW5kZXJGaXJzdFBhcnRpZXMpIHsKKyAgICAgICAgV0tJVFBGaXJzdFBhcnR5ICp3a0ZpcnN0
UGFydHkgPSBbW1dLSVRQRmlyc3RQYXJ0eSBhbGxvY10gaW5pdFdpdGhEb21haW46dGhpcmRQYXJ0
eURhdGFVbmRlckZpcnN0UGFydHkuZmlyc3RQYXJ0eURvbWFpbi5zdHJpbmcoKSBhbmRUaGlyZFBh
cnR5U3RvcmFnZUFjY2Vzczp0aGlyZFBhcnR5RGF0YVVuZGVyRmlyc3RQYXJ0eS5zdG9yYWdlQWNj
ZXNzR3JhbnRlZF07CisgICAgICAgIFthcGlVbmRlckZpcnN0UGFydGllcyBhZGRPYmplY3Q6d2tG
aXJzdFBhcnR5XTsKKyAgICB9CisgICAgcmV0dXJuIGFwaVVuZGVyRmlyc3RQYXJ0aWVzOworfQor
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEb21haW46KE5TU3RyaW5nICopZG9tYWluIHVuZGVy
Rmlyc3RQYXJ0aWVzOihWZWN0b3I8V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiYpdW5kZXJGaXJzdFBhcnRp
ZXMKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5p
bDsKKworICAgIHNlbGYudGhpcmRQYXJ0eURvbWFpbiA9IGRvbWFpbjsKKyAgICBzZWxmLnVuZGVy
Rmlyc3RQYXJ0aWVzID0gW3NlbGYgZ2V0V0tJVFBGaXJzdFBhcnR5TGlzdDomdW5kZXJGaXJzdFBh
cnRpZXNdOworICAgIHJldHVybiBzZWxmOworfQorCitAZW5kCisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4
IDQ4NDY3YjdhODMzMjEwYjI5YTBhZWQwZWFiNDRhMDgwMmYzZjhlMzYuLmYyMmYxMTc1YjRjMzJk
MDk4OWZlNmMzYTg0ZjAzZTE4MmY0ODQ3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtMjYsMTEgKzI2
LDEzIEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLV2Vic2l0ZURhdGFTdG9yZUlu
dGVybmFsLmgiCiAKKyNpbXBvcnQgIkFQSURpY3Rpb25hcnkuaCIKICNpbXBvcnQgIkFQSVN0cmlu
Zy5oIgogI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLmgi
CiAjaW1wb3J0ICJDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJTaG91
bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIKICNpbXBvcnQgIldLSFRUUENvb2tpZVN0b3JlSW50
ZXJuYWwuaCIKKyNpbXBvcnQgIldLSVRQVGhpcmRQYXJ0eS5oIgogI2ltcG9ydCAiV0tOU0FycmF5
LmgiCiAjaW1wb3J0ICJXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQg
IldLV2ViVmlld0ludGVybmFsLmgiCkBAIC01MTgsNiArNTIwLDIyIEBAIC0gKHZvaWQpX2NsZWFy
UmVzb3VyY2VMb2FkU3RhdGlzdGljczoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIK
ICNlbmRpZgogfQogCistICh2b2lkKV9nZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1h
cnk6KHZvaWQgKF4pKE5TQXJyYXk8V0tJVFBUaGlyZFBhcnR5ICo+ICopKWNvbXBsZXRpb25IYW5k
bGVyCit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBfd2Vic2l0
ZURhdGFTdG9yZS0+Z2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFTdW1tYXJ5KFtjb21wbGV0
aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgdGhp
cmRQYXJ0eURvbWFpbnMpIHsKKyAgICAgICAgTlNNdXRhYmxlQXJyYXk8V0tJVFBUaGlyZFBhcnR5
ICo+ICphcGlUaGlyZFBhcnRpZXMgPSBbW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhD
YXBhY2l0eTp0aGlyZFBhcnR5RG9tYWlucy5zaXplKCldIGF1dG9yZWxlYXNlXTsKKyAgICAgICAg
Zm9yIChhdXRvJiB0aGlyZFBhcnR5IDogdGhpcmRQYXJ0eURvbWFpbnMpIHsKKyAgICAgICAgICAg
IFdLSVRQVGhpcmRQYXJ0eSAqd2tUaGlyZFBhcnR5ID0gW1tXS0lUUFRoaXJkUGFydHkgYWxsb2Nd
IGluaXRXaXRoRG9tYWluOnRoaXJkUGFydHkudGhpcmRQYXJ0eURvbWFpbi5zdHJpbmcoKSB1bmRl
ckZpcnN0UGFydGllczp0aGlyZFBhcnR5LnVuZGVyRmlyc3RQYXJ0aWVzXTsKKyAgICAgICAgICAg
IFthcGlUaGlyZFBhcnRpZXMgYWRkT2JqZWN0OndrVGhpcmRQYXJ0eV07CisgICAgICAgIH0KKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShhcGlUaGlyZFBhcnRpZXMpKTsKKyAgICB9
KTsKKyNlbHNlCisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyNlbmRpZgorfQorCiAtICh2
b2lkKV9pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXJGaXJzdFBhcnR5OihOU1VSTCAqKWZp
cnN0UGFydHlVUkwgdGhpcmRQYXJ0eTooTlNVUkwgKil0aGlyZFBhcnR5VVJMIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAppbmRleCA3
MGZjMTQ2NTczZDIzZWE0ZTUwYjM5YmVjYzU4MzJiMjJhMzIwMjJkLi5hZDA1Njg1OWNhOGUyNDYy
NWM0MDU4YTliNDIzMTZmNTVhZTM2OGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAg
LTI5LDYgKzI5LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGNsYXNzIF9XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOwogQGNsYXNzIFdLV2ViVmlldzsKK0BjbGFzcyBXS0lU
UFRoaXJkUGFydHk7CiAKIEBwcm90b2NvbCBfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU7CiAK
QEAgLTcxLDYgKzcyLDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNp
dGVEYXRhU3RvcmVGZXRjaE9wdGlvbnMpIHsKIC0gKHZvaWQpX2xvZ1VzZXJJbnRlcmFjdGlvbjoo
TlNVUkwgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRp
b25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CiAtICh2b2lkKV9zZXRQcmV2YWxlbnREb21haW46KE5TVVJMICopZG9tYWluIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKIC0gKHZvaWQpX2dldElzUHJldmFsZW50
RG9tYWluOihOU1VSTCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkp
Y29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4w
KSk7CistICh2b2lkKV9nZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnk6KHZvaWQg
KF4pKE5TQXJyYXk8V0tJVFBUaGlyZFBhcnR5ICo+ICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogLSAodm9pZClfY2xlYXJQcmV2
YWxlbnREb21haW46KE5TVVJMICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2
b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfY2xlYXJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Oih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfaXNSZWdpc3RlcmVkQXNT
dWJyZXNvdXJjZVVuZGVyRmlyc3RQYXJ0eTooTlNVUkwgKilmaXJzdFBhcnR5VVJMIHRoaXJkUGFy
dHk6KE5TVVJMICopdGhpcmRQYXJ0eVVSTCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9P
TCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGFhOTFhZTBiNzQ2MzdiYzMyM2U2
OGY4MjAzNzlkN2MyNWI2ZTk2OTIuLjEwYjY5MmVkZDMyODdmMGZmMDgyYzQ1Zjg0NjU3ZjA4MmNk
MDc3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtODE0LDYgKzgxNCwxNiBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgQwogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OkdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKHNlc3Npb25JRCksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OlRoaXJkUGFydHlEYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIWNh
blNlbmRNZXNzYWdlKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OkdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeShzZXNzaW9u
SUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKaW5kZXggNzZlODJhN2I5NzFkOGVkMmMyMDM4YzE5NWFmZTk5YmU1NTdlMWNjOS4u
OTFlMDk2NDYwYjIyMDVhYzE5MWM4MTdmZWFkNDc4ZWIxM2JiZGZhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAg
LTEzNSw2ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgZ2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFTdW1tYXJ5KFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiYmKT4mJik7CiAgICAgdm9pZCBnZXRB
bGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U3RyaW5nPiBkb21haW5zKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFn
ZUFjY2Vzc0NvbmZpcm0oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCByZXNldFBhcmFtZXRlcnNU
b0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IGIyZjlmYzI0OWZhNDhlYjVmZGMzZjYzNGE5ZjU5NGMx
NjM2NzYwNDMuLjE5OTUxMGU0MmVkMWU0ODQxMDEwMDA0ZDQyNGE2MDg1NDgxNDJmZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCkBAIC0xNTEwLDYgKzE1MTAsMTYgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1vZGlmaWVkU2lu
Y2UKICAgICB9CiB9CiAKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFTdW1tYXJ5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBmb3IgKGF1
dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHBy
b2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKKyAgICAgICAgICAgIHByb2Nl
c3MtPmdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeShtX3Nlc3Npb25JRCwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0KK30KKwogdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVy
U3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmgKaW5kZXggMjcwYzJjNzhhOGM5MzQ1YmYwODE2NjJlNGNjNTk4ODEwMGRlOTA4NS4u
YTc1YjFhZTZkY2I3YTRiMzNiZjcwZmVhMjhiM2Q2YzMyMGNkY2FiYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRh
U3RvcmVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+CkBAIC0xNjAsNiArMTYxLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVu
dChXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
U3VtbWFyeShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiYmKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZVN0
YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeSgpOwogICAgIHZvaWQgc2V0R3JhbmRmYXRo
ZXJlZChjb25zdCBVUkwmLCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjc5
ZGRjMTIwNDBmMmJmNzkyNDBjY2E1NWVmOTg5MzBiNTAwNzUzNC4uNmEwYjI3YWNjYWViZWRjY2I2
YzExODk5NGY2Njc0ZjBkYTIzYTY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MjYsNiArOTI2LDEwIEBACiAJCTQ2QzM5MjI5MjMx
NkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMzOTIyODIzMTZFQzREMDA4RUVEOUIg
LyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oICovOyB9OwogCQk0NkRGMDYzQzFGMzkwNUY4MDAx
OTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyog
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggKi87IH07CiAJCTQ2RjlCMjYzMjM1MjZFRjMw
MDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAvKiBX
ZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCAqLzsgfTsKKwkJNDlGQkVGRkQyMzlCMDExRDAwQkQw
MzJGIC8qIFdLSVRQRmlyc3RQYXJ0eS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ5RkJFRkZDMjM5QjAxMUQwMEJEMDMyRiAvKiBXS0lUUEZpcnN0UGFy
dHkubW0gKi87IH07CisJCTQ5RkJFRkZGMjM5QjAxMkYwMEJEMDMyRiAvKiBXS0lUUFRoaXJkUGFy
dHkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUZC
RUZGRTIzOUIwMTJGMDBCRDAzMkYgLyogV0tJVFBUaGlyZFBhcnR5Lm1tICovOyB9OworCQk0OUZC
RjAwMDIzOUIxRjc1MDBCRDAzMkYgLyogV0tJVFBUaGlyZFBhcnR5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUZCRUZGQTIzOUFEOTc4MDBCRDAzMkYg
LyogV0tJVFBUaGlyZFBhcnR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNDlGQkYwMDEyMzlCMUY4RDAwQkQwMzJGIC8qIFdLSVRQRmlyc3RQYXJ0
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlGQkVG
RkIyMzlBREIxODAwQkQwMzJGIC8qIFdLSVRQRmlyc3RQYXJ0eS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBM0NDMThCMTlCMDY0MEYwMEQxNEFF
RiAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGM0ExOUFGN0IwNDAwMkVC
QUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggKi87IH07CiAJ
CTRBM0NDMThEMTlCMDY0MTkwMEQxNEFFRiAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFBy
b3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQx
MEYzQzE5QUY3QjA0MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5o
ICovOyB9OwogCQk0QTNDQzE4RjE5QjA3QjhBMDBEMTRBRUYgLyogV0tVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNEE0MTBGMzYxOUFGN0FDMzAwMkVCQUI1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MzMxNiw2ICszMzIwLDEwIEBACiAJCTQ2REYwNjM5MUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZGOUIy
NjIyMzUyNkVEMDAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlGQkVGRkEyMzlBRDk3ODAwQkQwMzJGIC8qIFdL
SVRQVGhpcmRQYXJ0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0lUUFRoaXJkUGFydHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlGQkVGRkIyMzlBREIxODAwQkQwMzJGIC8qIFdLSVRQ
Rmlyc3RQYXJ0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0lUUEZpcnN0UGFydHkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlGQkVGRkMyMzlCMDExRDAwQkQwMzJGIC8qIFdLSVRQRmly
c3RQYXJ0eS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLSVRQRmlyc3RQYXJ0eS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlGQkVGRkUyMzlCMDEyRjAwQkQwMzJGIC8qIFdL
SVRQVGhpcmRQYXJ0eS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLSVRQVGhpcmRQYXJ0eS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0MTBGMzUxOUFGN0FDMzAwMkVCQUI1
IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNDEwRjM2MTlBRjdBQzMwMDJFQkFCNSAvKiBXS1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNEE0MTBGMzkxOUFGN0IwNDAwMkVCQUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY2NjYsNiArNjY3NCwxMCBAQAogCQkJCTUxRDEyNDg0MUU3
MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yZS5oICovLAogCQkJCTUxRDEyNDg1MUU3
MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yZS5tbSAqLywKIAkJCQk1MUQxMjQ4NjFF
NzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmVJbnRlcm5hbC5oICovLAorCQkJCTQ5
RkJFRkZCMjM5QURCMTgwMEJEMDMyRiAvKiBXS0lUUEZpcnN0UGFydHkuaCAqLywKKwkJCQk0OUZC
RUZGQzIzOUIwMTFEMDBCRDAzMkYgLyogV0tJVFBGaXJzdFBhcnR5Lm1tICovLAorCQkJCTQ5RkJF
RkZBMjM5QUQ5NzgwMEJEMDMyRiAvKiBXS0lUUFRoaXJkUGFydHkuaCAqLywKKwkJCQk0OUZCRUZG
RTIzOUIwMTJGMDBCRDAzMkYgLyogV0tJVFBUaGlyZFBhcnR5Lm1tICovLAogCQkJCTFBQjQwRUUz
MUJGNjc3RTMwMEJBODFCRSAvKiBXS01lbnVJdGVtSWRlbnRpZmllcnMubW0gKi8sCiAJCQkJMUFC
NDBFRTQxQkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVudUl0ZW1JZGVudGlmaWVyc1ByaXZhdGUuaCAq
LywKIAkJCQkxQTVCMUM0RjE4OTg2MDZGMDA0RkNGOUIgLyogV0tOYXZpZ2F0aW9uLmggKi8sCkBA
IC0xMDUxMiw2ICsxMDUyNCw4IEBACiAJCQkJNkVFODQ5QzgxMzY4RDkzOTAwMzhENDgxIC8qIFdL
SW5zcGVjdG9yUHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk0QkFERjQxRjdENzgx
NDAwQjU3MUU3IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1MThCNUQyMUZFMUQ1NUIwMEY5RkEyOCAvKiBXS0luc3BlY3RvcldLV2ViVmlldy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDlGQkYwMDEyMzlCMUY4RDAwQkQwMzJGIC8qIFdLSVRQRmlyc3RQ
YXJ0eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDlGQkYwMDAyMzlCMUY3NTAwQkQwMzJGIC8qIFdL
SVRQVGhpcmRQYXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRENUUxMjkyMTBBREM3QjAwREI2
MDEyIC8qIFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTFBOUUxMEIxMzE1Q0QxODAwOUU3MDMxIC8qIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkQ3OTBBOUYxQUQ3MTY0OTAwQUI5MEIzIC8qIFdLTGF5b3V0TW9k
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTkyMiw2ICsxMTkzNiw4IEBACiAJCQkJMkQ5MzExNjky
MTJGNjFCMjAwMDQ0QkZFIC8qIFdLQ29udGVudFZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJCQky
RDkzMTE2QTIxMkY2MUI1MDAwNDRCRkUgLyogV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNjM3MjgxQTMyMUFEQzc0NDAwOUUwREU2IC8qIFdLRG93bmxvYWRQ
cm9ncmVzcy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQ5RkJFRkZEMjM5QjAxMUQwMEJEMDMyRiAv
KiBXS0lUUEZpcnN0UGFydHkubW0gaW4gU291cmNlcyAqLywKKwkJCQk0OUZCRUZGRjIzOUIwMTJG
MDBCRDAzMkYgLyogV0tJVFBUaGlyZFBhcnR5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNFOTEy
MEQyMjkzQzIxOTAwNUJFQzc4IC8qIFdLTWFpbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ2NTdE
ODhBMjI2NjRBMkYwMDVERTgyMyAvKiBXS09yaWVudGF0aW9uQWNjZXNzQWxlcnQubW0gaW4gU291
cmNlcyAqLywKIAkJCQk1Q0EyNkQ4MzIxN0FEMUI4MDBGOTdBMzUgLyogV0tTYWZlQnJvd3NpbmdX
YXJuaW5nLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggYmE3NzYyODE1ZTc0YmEzOWVmN2ViYmQ0NDYzODNhYzFiYWU2
ZjYwMS4uNjYyY2FiZjUyYWFlZTgwMjA5N2NlNzBlNGE5YzlkNWJmMDBkZjJmYSAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDE5LTEyLTA5ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgor
CisgICAgICAgIENyZWF0ZSBXZWJLaXQgQVBJIGNhbGxzIGZvciBJVFAgRGF0YQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0OTMyCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS81NzYzMjc1Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRlZCBhIHRlc3QgdG8gY2hlY2sgdGhhdCB0aGUgSVRQIGRhdGEg
c3VtbWFyeSB3YXMgYmVpbmcgcHJvcGVybHkKKyAgICAgICAgYWdncmVnYXRlZCBhbmQgc2VudCB0
byB0aGUgVUlQcm9jZXNzLCBhbmQgdG8gbWFrZSBzdXJlIHRoZSBBUEkgd29ya3MKKyAgICAgICAg
YXMgZXhwZWN0ZWQuIEFkZGVkIGludGVyZmFjZSBkZWNsYXJhdGlvbnMgdG8gdGhlIGZpbGUgdG8g
YWxsb3cgZm9yCisgICAgICAgIHVzZSBvZiB0aGUgV0tJVFBGaXJzdFBhcnR5IGFuZCBXS0lUUFRo
aXJkUGFydHkgY2xhc3NlcyB3aXRob3V0IGhhdmluZworICAgICAgICB0byBpbXBvcnQgdGhlIGhl
YWRlciBmaWxlcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbToKKyAgICAgICAgKFRFU1QpOgorCiAyMDE5LTEyLTA5
ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYW4gb3B0
aW9uIHRvIGNhcHR1cmUgYXVkaW8gaW4gR1BVIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlz
dGljcy5tbQppbmRleCA0ZmRjZGI1ZGI0ZjBmZjIwMmFjY2FiYzk4ZDVkMDJjZjViODllMGFjLi4y
NjdjZmU3NTZjMTM1YjMzMzI3ZDQ4NzA1ZTM4ZGYxZjU0ZjVmODJlIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3Mu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLm1tCkBAIC00MCw2ICs0MCwxNiBAQAogCiBzdGF0aWMgYm9vbCBmaW5pc2hl
ZE5hdmlnYXRpb24gPSBmYWxzZTsKIAorQGludGVyZmFjZSBXS0lUUEZpcnN0UGFydHkgOiBOU09i
amVjdAorQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICpmaXJzdFBhcnR5RG9t
YWluOworQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgdGhpcmRQYXJ0eVN0b3JhZ2VBY2Nlc3NH
cmFudGVkOworQGVuZAorCitAaW50ZXJmYWNlIFdLSVRQVGhpcmRQYXJ0eSA6IE5TT2JqZWN0CitA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKnRoaXJkUGFydHlEb21haW47CitA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJheTxXS0lUUEZpcnN0UGFydHkgKj4gKnVu
ZGVyRmlyc3RQYXJ0aWVzOworQGVuZAorCiBAaW50ZXJmYWNlIERpc2FibGVJVFBEdXJpbmdOYXZp
Z2F0aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CiBAZW5kCiAK
QEAgLTY1MCwzICs2NjAsMTk2IEBAIFRFU1QoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgRmx1c2hP
YnNlcnZlcldoZW5XZWJQYWdlSXNDbG9zZWRCeUphdmFTY3JpcHQpCiAKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKIH0KKworVEVTVChSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLCBHZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkpCit7CisgICAgYXV0byAq
c2hhcmVkUHJvY2Vzc1Bvb2wgPSBbV0tQcm9jZXNzUG9vbCBfc2hhcmVkUHJvY2Vzc1Bvb2xdOwor
ICAgIGF1dG8gKmRhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9y
ZV07CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29s
OiBzaGFyZWRQcm9jZXNzUG9vbF07CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0
YVN0b3JlID0gZGF0YVN0b3JlOworCisgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byB3ZWJWaWV3MiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byB3
ZWJWaWV3MyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7
CisKKyAgICBbd2ViVmlldzEgbG9hZEhUTUxTdHJpbmc6QCJXZWJLaXQgVGVzdCIgYmFzZVVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnIl1dOworICAgIFt3ZWJWaWV3
MSBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgW3dlYlZpZXcyIGxvYWRI
VE1MU3RyaW5nOkAiV2ViS2l0IFRlc3QiIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJo
dHRwOi8vd2Via2l0Mi5vcmciXV07CisgICAgW3dlYlZpZXcyIF90ZXN0X3dhaXRGb3JEaWRGaW5p
c2hOYXZpZ2F0aW9uXTsKKyAgICBbd2ViVmlldzMgbG9hZEhUTUxTdHJpbmc6QCJXZWJLaXQgVGVz
dCIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQzLm9yZyJdXTsK
KyAgICBbd2ViVmlldzMgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAg
W2RhdGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6WUVTXTsKKworICAg
IHN0YXRpYyBib29sIGRvbmVGbGFnID0gZmFsc2U7CisgICAgW2RhdGFTdG9yZSBfY2xlYXJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzOl4odm9pZCkgeworICAgICAgICBkb25lRmxhZyA9IHRydWU7Cisg
ICAgfV07CisKKyAgICBzdGF0aWMgYm9vbCBzdGF0aXN0aWNzVXBkYXRlZCA9IGZhbHNlOworICAg
IFtkYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2s6XihX
S1dlYnNpdGVEYXRhU3RvcmUgKiwgTlNTdHJpbmcgKm1lc3NhZ2UpIHsKKyAgICAgICAgaWYgKCFb
bWVzc2FnZSBpc0VxdWFsVG9TdHJpbmc6QCJTdGF0aXN0aWNzIFVwZGF0ZWQiXSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgc3RhdGlzdGljc1VwZGF0ZWQgPSB0cnVlOworICAgIH1dOwor
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKyAgICAvLyBTZWVk
IHRlc3QgZGF0YSBpbiB0aGUgd2ViIHByb2Nlc3MnIG9ic2VydmVyLgorCisgICAgLy8gZXZpbDEK
KyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtzaGFyZWRQcm9jZXNzUG9vbCBfc2VlZFJlc291
cmNlTG9hZFN0YXRpc3RpY3NGb3JUZXN0aW5nV2l0aEZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdIHRoaXJkUGFydHk6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJodHRwOi8vZXZpbDEuY29tIl0gc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb246Tk8gY29t
cGxldGlvbkhhbmRsZXI6IF4oKSB7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworICAgIGRvbmVGbGFn
ID0gZmFsc2U7CisgICAgW3NoYXJlZFByb2Nlc3NQb29sIF9zZWVkUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0ZvclRlc3RpbmdXaXRoRmlyc3RQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6
Ly93ZWJraXQyLm9yZyJdIHRoaXJkUGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8v
ZXZpbDEuY29tIl0gc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb246Tk8gY29tcGxldGlvbkhhbmRs
ZXI6IF4oKSB7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworCisgICAgLy8gZXZpbDIKKyAgICBkb25l
RmxhZyA9IGZhbHNlOworICAgIFtzaGFyZWRQcm9jZXNzUG9vbCBfc2VlZFJlc291cmNlTG9hZFN0
YXRpc3RpY3NGb3JUZXN0aW5nV2l0aEZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJo
dHRwOi8vd2Via2l0Lm9yZyJdIHRoaXJkUGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRw
Oi8vZXZpbDIuY29tIl0gc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb246Tk8gY29tcGxldGlvbkhh
bmRsZXI6IF4oKSB7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworCisgICAgLy8gZXZpbDMKKyAgICBk
b25lRmxhZyA9IGZhbHNlOworICAgIFtzaGFyZWRQcm9jZXNzUG9vbCBfc2VlZFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NGb3JUZXN0aW5nV2l0aEZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJodHRwOi8vd2Via2l0Lm9yZyJdIHRoaXJkUGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJo
dHRwOi8vZXZpbDMuY29tIl0gc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb246Tk8gY29tcGxldGlv
bkhhbmRsZXI6IF4oKSB7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKyAgICBkb25lRmxhZyA9IGZhbHNl
OworICAgIFtzaGFyZWRQcm9jZXNzUG9vbCBfc2VlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JU
ZXN0aW5nV2l0aEZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0
Mi5vcmciXSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwzLmNv
bSJdIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uOk5PIGNvbXBsZXRpb25IYW5kbGVyOiBeKCkg
eworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lRmxhZyk7CisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbc2hhcmVk
UHJvY2Vzc1Bvb2wgX3NlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZ1dpdGhGaXJz
dFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdDMub3JnIl0gdGhpcmRQ
YXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsMy5jb20iXSBzaG91bGRTY2hl
ZHVsZU5vdGlmaWNhdGlvbjpOTyBjb21wbGV0aW9uSGFuZGxlcjogXigpIHsKKyAgICAgICAgZG9u
ZUZsYWcgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZUZsYWcpOworCisgICAgc3RhdGlzdGljc1VwZGF0ZWQgPSBmYWxzZTsKKyAgICBbd2ViVmlldzEg
bG9hZEhUTUxTdHJpbmc6QCI8Ym9keT48c2NyaXB0PmNsb3NlKCk7PC9zY3JpcHQ+PC9ib2R5PiIg
YmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnIl1dOworICAg
IFt3ZWJWaWV3MiBsb2FkSFRNTFN0cmluZzpAIjxib2R5PjxzY3JpcHQ+Y2xvc2UoKTs8L3Njcmlw
dD48L2JvZHk+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdDIu
b3JnIl1dOworICAgIFt3ZWJWaWV3MyBsb2FkSFRNTFN0cmluZzpAIjxib2R5PjxzY3JpcHQ+Y2xv
c2UoKTs8L3NjcmlwdD48L2JvZHk+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0
cDovL3dlYmtpdDMub3JnIl1dOworCisgICAgLy8gV2FpdCBmb3IgdGhlIHN0YXRpc3RpY3MgdG8g
YmUgdXBkYXRlZCBpbiB0aGUgbmV0d29yayBwcm9jZXNzLgorICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmc3RhdGlzdGljc1VwZGF0ZWQpOworCisgICAgLy8gQ2hlY2sgdGhhdCB0aGUgdGhp
cmQtcGFydHkgZXZpbDEgaXMgbm93IHJlZ2lzdGVyZWQgYXMgc3VicmVzb3VyY2UuCisgICAgZG9u
ZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNl
VW5kZXJGaXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmci
XSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwxLmNvbSJdIGNv
bXBsZXRpb25IYW5kbGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7CisgICAgICAgIEVYUEVDVF9U
UlVFKGlzUmVnaXN0ZXJlZCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKyAgICBkb25lRmxhZyA9IGZh
bHNlOworICAgIFtkYXRhU3RvcmUgX2lzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlckZpcnN0
UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Mi5vcmciXSB0aGlyZFBh
cnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwxLmNvbSJdIGNvbXBsZXRpb25I
YW5kbGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGlzUmVn
aXN0ZXJlZCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworCisgICAgLy8gQ2hlY2sgdGhhdCB0aGUg
dGhpcmQtcGFydHkgZXZpbDIgaXMgbm93IHJlZ2lzdGVyZWQgYXMgc3VicmVzb3VyY2UuCisgICAg
ZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9pc1JlZ2lzdGVyZWRBc1N1YnJlc291
cmNlVW5kZXJGaXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5v
cmciXSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwyLmNvbSJd
IGNvbXBsZXRpb25IYW5kbGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7CisgICAgICAgIEVYUEVD
VF9UUlVFKGlzUmVnaXN0ZXJlZCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworCisgICAgLy8gQ2hl
Y2sgdGhhdCB0aGUgdGhpcmQtcGFydHkgZXZpbDMgaXMgbm93IHJlZ2lzdGVyZWQgYXMgc3VicmVz
b3VyY2UuCisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9pc1JlZ2lzdGVy
ZWRBc1N1YnJlc291cmNlVW5kZXJGaXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0
cDovL3dlYmtpdC5vcmciXSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDov
L2V2aWwzLmNvbSJdIGNvbXBsZXRpb25IYW5kbGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKGlzUmVnaXN0ZXJlZCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1
ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKyAg
ICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX2lzUmVnaXN0ZXJlZEFzU3VicmVz
b3VyY2VVbmRlckZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0
Mi5vcmciXSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwzLmNv
bSJdIGNvbXBsZXRpb25IYW5kbGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7CisgICAgICAgIEVY
UEVDVF9UUlVFKGlzUmVnaXN0ZXJlZCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9
XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKyAgICBkb25lRmxh
ZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX2lzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRl
ckZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0My5vcmciXSB0
aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwzLmNvbSJdIGNvbXBs
ZXRpb25IYW5kbGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7CisgICAgICAgIEVYUEVDVF9UUlVF
KGlzUmVnaXN0ZXJlZCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworCisgICAgLy8gQ29sbGVjdCB0
aGUgSVRQIGRhdGEgc3VtbWFyeSB3aGljaCBzaG91bGQgaW5jbHVkZSBhbGwgdGhpcmQgcGFydGll
cyBpbiB0aGUKKyAgICAvLyBvcmRlcjogW2V2aWwzLmNvbSwgZXZpbDEuY29tLCBldmlsMi5jb21d
IHNvcnRlZCBieSBudW1iZXIgb2YgZmlyc3QgcGFydGllcworICAgIC8vIGl0IGFwcGVhcnMgdW5k
ZXIgb3IgcmVkaXJlY3RzIHRvCisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3Jl
IF9nZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnk6XnZvaWQoTlNBcnJheTxXS0lU
UFRoaXJkUGFydHkgKj4gKnRoaXJkUGFydHlEYXRhKQorICAgIHsKKyAgICAgICAgTlNFbnVtZXJh
dG9yICp0aGlyZFBhcnR5RG9tYWlucyA9IFt0aGlyZFBhcnR5RGF0YSBvYmplY3RFbnVtZXJhdG9y
XTsKKworICAgICAgICAvLyBldmlsMworICAgICAgICBXS0lUUFRoaXJkUGFydHkgKmV2aWwzVGhp
cmRQYXJ0eSA9IFt0aGlyZFBhcnR5RG9tYWlucyBuZXh0T2JqZWN0XTsKKyAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKGV2aWwzVGhpcmRQYXJ0eS50aGlyZFBhcnR5RG9tYWluLCBAImV2aWwzLmNvbSIp
OworCisgICAgICAgIE5TRW51bWVyYXRvciAqZXZpbDNFbnVtZXJhdG9yID0gW2V2aWwzVGhpcmRQ
YXJ0eS51bmRlckZpcnN0UGFydGllcyBvYmplY3RFbnVtZXJhdG9yXTsKKyAgICAgICAgV0tJVFBG
aXJzdFBhcnR5ICpldmlsM0ZpcnN0UGFydHkxID0gW2V2aWwzRW51bWVyYXRvciBuZXh0T2JqZWN0
XTsKKyAgICAgICAgV0tJVFBGaXJzdFBhcnR5ICpldmlsM0ZpcnN0UGFydHkyID0gW2V2aWwzRW51
bWVyYXRvciBuZXh0T2JqZWN0XTsKKyAgICAgICAgV0tJVFBGaXJzdFBhcnR5ICpldmlsM0ZpcnN0
UGFydHkzID0gW2V2aWwzRW51bWVyYXRvciBuZXh0T2JqZWN0XTsKKworICAgICAgICBBU1NFUlRf
VFJVRShldmlsM0ZpcnN0UGFydHkxICE9IG5pbCk7CisgICAgICAgIEFTU0VSVF9UUlVFKGV2aWwz
Rmlyc3RQYXJ0eTIgIT0gbmlsKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoZXZpbDNGaXJzdFBhcnR5
MyAhPSBuaWwpOworCisgICAgICAgIEVYUEVDVF9XS19TVFJFUShldmlsM0ZpcnN0UGFydHkxLmZp
cnN0UGFydHlEb21haW4sIEAid2Via2l0Mi5vcmciKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KGV2aWwzRmlyc3RQYXJ0eTIuZmlyc3RQYXJ0eURvbWFpbiwgQCJ3ZWJraXQzLm9yZyIpOworICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEoZXZpbDNGaXJzdFBhcnR5My5maXJzdFBhcnR5RG9tYWluLCBA
IndlYmtpdC5vcmciKTsKKworICAgICAgICBFWFBFQ1RfRkFMU0UoZXZpbDNGaXJzdFBhcnR5MS50
aGlyZFBhcnR5U3RvcmFnZUFjY2Vzc0dyYW50ZWQpOworICAgICAgICBFWFBFQ1RfRkFMU0UoZXZp
bDNGaXJzdFBhcnR5Mi50aGlyZFBhcnR5U3RvcmFnZUFjY2Vzc0dyYW50ZWQpOworICAgICAgICBF
WFBFQ1RfRkFMU0UoZXZpbDNGaXJzdFBhcnR5My50aGlyZFBhcnR5U3RvcmFnZUFjY2Vzc0dyYW50
ZWQpOworCisgICAgICAgIC8vIGV2aWwxCisgICAgICAgIFdLSVRQVGhpcmRQYXJ0eSAqZXZpbDFU
aGlyZFBhcnR5ID0gW3RoaXJkUGFydHlEb21haW5zIG5leHRPYmplY3RdOworICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEoZXZpbDFUaGlyZFBhcnR5LnRoaXJkUGFydHlEb21haW4sIEAiZXZpbDEuY29t
Iik7CisKKyAgICAgICAgTlNFbnVtZXJhdG9yICpldmlsMUVudW1lcmF0b3IgPSBbZXZpbDFUaGly
ZFBhcnR5LnVuZGVyRmlyc3RQYXJ0aWVzIG9iamVjdEVudW1lcmF0b3JdOworICAgICAgICBXS0lU
UEZpcnN0UGFydHkgKmV2aWwxRmlyc3RQYXJ0eTE9IFtldmlsMUVudW1lcmF0b3IgbmV4dE9iamVj
dF07CisgICAgICAgIFdLSVRQRmlyc3RQYXJ0eSAqZXZpbDFGaXJzdFBhcnR5MiA9IFtldmlsMUVu
dW1lcmF0b3IgbmV4dE9iamVjdF07CisKKyAgICAgICAgQVNTRVJUX1RSVUUoZXZpbDFGaXJzdFBh
cnR5MSAhPSBuaWwpOworICAgICAgICBBU1NFUlRfVFJVRShldmlsMUZpcnN0UGFydHkyICE9IG5p
bCk7CisKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGV2aWwxRmlyc3RQYXJ0eTEuZmlyc3RQYXJ0
eURvbWFpbiwgQCJ3ZWJraXQyLm9yZyIpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXZpbDFG
aXJzdFBhcnR5Mi5maXJzdFBhcnR5RG9tYWluLCBAIndlYmtpdC5vcmciKTsKKworICAgICAgICBF
WFBFQ1RfRkFMU0UoZXZpbDFGaXJzdFBhcnR5MS50aGlyZFBhcnR5U3RvcmFnZUFjY2Vzc0dyYW50
ZWQpOworICAgICAgICBFWFBFQ1RfRkFMU0UoZXZpbDFGaXJzdFBhcnR5Mi50aGlyZFBhcnR5U3Rv
cmFnZUFjY2Vzc0dyYW50ZWQpOworCisgICAgICAgIC8vIGV2aWwyCisgICAgICAgIFdLSVRQVGhp
cmRQYXJ0eSAqZXZpbDJUaGlyZFBhcnR5ID0gW3RoaXJkUGFydHlEb21haW5zIG5leHRPYmplY3Rd
OworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXZpbDJUaGlyZFBhcnR5LnRoaXJkUGFydHlEb21h
aW4sIEAiZXZpbDIuY29tIik7CisKKyAgICAgICAgTlNFbnVtZXJhdG9yICpldmlsMkVudW1lcmF0
b3IgPSBbZXZpbDJUaGlyZFBhcnR5LnVuZGVyRmlyc3RQYXJ0aWVzIG9iamVjdEVudW1lcmF0b3Jd
OworICAgICAgICBXS0lUUEZpcnN0UGFydHkgKmV2aWwyRmlyc3RQYXJ0eTEgPSBbZXZpbDJFbnVt
ZXJhdG9yIG5leHRPYmplY3RdOworCisgICAgICAgIEFTU0VSVF9UUlVFKGV2aWwyRmlyc3RQYXJ0
eTEgIT0gbmlsKTsKKworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXZpbDJGaXJzdFBhcnR5MS5m
aXJzdFBhcnR5RG9tYWluLCBAIndlYmtpdC5vcmciKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGV2
aWwyRmlyc3RQYXJ0eTEudGhpcmRQYXJ0eVN0b3JhZ2VBY2Nlc3NHcmFudGVkKTsKKyAgICAgICAg
ZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lRmxhZyk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385176</attachid>
            <date>2019-12-09 12:00:10 -0800</date>
            <delta_ts>2019-12-09 18:20:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204932-20191209120009.patch</filename>
            <type>text/plain</type>
            <size>61722</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg4NWJjY2JkNTQzNGFiZDdj
NGJlMTE2ODM5ZDYxMTc5NDlhYjIzMTUuLjAxOGQ4NjZhYjUzNmFiN2NlOWRlOGIwODRkOGVhNDNj
YWUyMTkxZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTktMTItMDkgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIFdlYktp
dCBBUEkgY2FsbHMgZm9yIElUUCBEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDQ5MzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3NjMyNzUz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggZXhwb3NlcyBJVFAgZGF0YSBjYXB0dXJlZCBpbiB0aGUgbmV0d29yayBwcm9jZXNzIHRo
cm91Z2ggdGhlCisgICAgICAgIE9iamVjdGl2ZSBDIEFQSS4gVGhlIGRhdGEgaGFkIHRvIGJlIGVu
Y29kZWQgYW5kIHNlbnQgdmlhIElQQworICAgICAgICB0byB0aGUgVUlQcm9jZXNzLCBzbyB0aGlz
IHBhdGNoIGFkZHMgbmV3IGVuY29kZS9kZWNvZGUgZnVuY3Rpb25zCisgICAgICAgIGFuZCByZWxv
Y2F0ZXMgdGhlIHN0cnVjdHMgaW50byB0aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
CisgICAgICAgIGNsYXNzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZW5zdXJlVGhpcmRQYXJ0eURh
dGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpnZXRUaGly
ZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnMpOgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5
RGF0YSBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICBVcGRhdGVk
IG1lbnRpb25zIG9mIFRoaXJkUGFydHlEYXRhIHRvIGluY2x1ZGUgdGhlCisgICAgICAgIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6IGNsYXNzIHNwZWNpZmllci4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjph
Z2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgIFVwZGF0ZWQg
dGhlIGRhdGEgdG8gYmUgc2VudCB2aWEgY29tcGxldGlvbiBoYW5kbGVyIHN0cmFpZ2h0IGZyb20K
KyAgICAgICAgdGhlIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBhcyBvcHBvc2VkIHRv
IHRoZSBuZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgdG8gYXNzdXJlIHRoZSBjYWxscyB0byBhZ2dy
ZWdhdGVkVGhpcmRQYXJ0eURhdGEoKSBhcmUgaGFwcGVuaW5nCisgICAgICAgIG9uIGEgYmFja2dy
b3VuZCB0aHJlYWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpnZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YVN1bW1hcnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW46CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLSVRQRmlyc3RQYXJ0eS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLSVRQRmlyc3RQYXJ0eS5tbTog
QWRkZWQuCisgICAgICAgICgtW1dLSVRQRmlyc3RQYXJ0eSBpbml0V2l0aERvbWFpbjphbmRTdG9y
YWdlQWNjZXNzOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tJVFBUaGlyZFBh
cnR5Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tJVFBUaGlyZFBh
cnR5Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV0tJVFBUaGlyZFBhcnR5IGdldFdLSVRQRmlyc3RQ
YXJ0eUxpc3Q6XSk6CisgICAgICAgICgtW1dLSVRQVGhpcmRQYXJ0eSBpbml0V2l0aERvbWFpbjp1
bmRlckZpcnN0UGFydGllczpdKToKKyAgICAgICAgV0tJVFBGaXJzdFBhcnR5IGFuZCBXS0lUUFRo
aXJkUGFydHkgcmVwcmVzZW50IGZpcnN0IGFuZCB0aGlyZCBwYXJ0eQorICAgICAgICBkb21haW5z
IHJlc3BlY3RpdmVseSB3aGljaCBob2xkIElUUCBkYXRhIGFuZCBhcmUgc3Ryb25nbHkgdHlwZWQg
dG8KKyAgICAgICAgZW5zdXJlIHRoZSBjb3JyZWN0IGRhdGEgaXMgYmVpbmcgZXhwb3NlZCB2aWEg
QVBJLiBUaGUgZnVuY3Rpb24gYW5kCisgICAgICAgIHBhcmFtZXRlciBuYW1lcyBmb3Igc3RvcmFn
ZSBhY2Nlc3Mgc3BlY2lmeSAidGhpcmQgcGFydHkiIGJlY2F1c2UgZWFjaAorICAgICAgICBXS0lU
UEZpcnN0UGFydHkgaG9sZHMgZGF0YSByZWxhdmVudCB0byBhIHNwZWNpZmljIHRoaXJkIHBhcnR5
IGFuZAorICAgICAgICBzdG9yYWdlIGFjY2VzcyB3b3VsZCBub3QgbWFrZSBzZW5zZSBpbiBqdXN0
IGEgZmlyc3QgcGFydHkgY29udGV4dC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2dl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeTpdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFTdW1tYXJ5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpnZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YVN1bW1hcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisK
IDIwMTktMTItMDkgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IEFkZCBhbiBvcHRpb24gdG8gY2FwdHVyZSBhdWRpbyBpbiBHUFUgcHJvY2VzcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXgg
NTUzZTA1MmQ4MTc0YTZkZTM0MWIzM2I1ZDk5NTM1Y2FhMDRjZmRhMC4uOTFiMDk1NWY0YjkwODI4
ZGUxMTEyZmIzYWM5Yzg5NDVjZDQyZDJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC03ODYsNyArNzg2LDcgQEAgc3Rh
dGljIFNRTGl0ZVN0YXRlbWVudCBtYWtlTWVkaWFuV2l0aFVJUXVlcnkoU1FMaXRlRGF0YWJhc2Um
IGRhdGFiYXNlKQogICAgIHJldHVybiBTUUxpdGVTdGF0ZW1lbnQoZGF0YWJhc2UsIG1ha2VTdHJp
bmcoIlNFTEVDVCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSBGUk9NIE9ic2VydmVkRG9t
YWlucyBJTk5FUiBKT0lOIChTRUxFQ1QgIiwgam9pblN1YlN0YXRpc3RpY3NGb3JTb3J0aW5nKCks
ICIpIGFzIHEgT04gT2JzZXJ2ZWREb21haW5zLmRvbWFpbklEID0gcS5kb21haW5JRCBMSU1JVCAx
IE9GRlNFVCA/IikpOwogfQogCi1WZWN0b3I8VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0
UGFydHk+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRUaGlyZFBhcnR5
RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnModW5zaWduZWQgdGhpcmRQYXJ0eURvbWFp
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdGhpcmRQYXJ0eURvbWFpbikgY29uc3QKK1Zl
Y3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3Bl
Y2lmaWNGaXJzdFBhcnR5PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0
VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHVuc2lnbmVkIHRoaXJk
UGFydHlEb21haW5JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRoaXJkUGFydHlEb21haW4p
IGNvbnN0CiB7CiAgICAgaWYgKG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudC5iaW5kSW50
KDEsIHRoaXJkUGFydHlEb21haW5JRCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1fZ2V0QWxs
U3ViU3RhdGlzdGljc1N0YXRlbWVudC5iaW5kSW50KDIsIHRoaXJkUGFydHlEb21haW5JRCkgIT0g
U1FMSVRFX09LCkBAIC03OTQsMTAgKzc5NCwxMCBAQCBWZWN0b3I8VGhpcmRQYXJ0eURhdGFGb3JT
cGVjaWZpY0ZpcnN0UGFydHk+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOgog
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmdldFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9t
YWluLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31zIiwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLSAgICBWZWN0b3I8VGhp
cmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IHRoaXJkUGFydHlEYXRhRm9yU3BlY2lm
aWNGaXJzdFBhcnR5RG9tYWluczsKKyAgICBWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4gdGhpcmRQYXJ0eURh
dGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zOwogICAgIHdoaWxlIChtX2dldEFsbFN1YlN0
YXRpc3RpY3NTdGF0ZW1lbnQuc3RlcCgpID09IFNRTElURV9ST1cpIHsKICAgICAgICAgUmVnaXN0
cmFibGVEb21haW4gZmlyc3RQYXJ0eURvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNr
ZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoZ2V0RG9tYWluU3RyaW5nRnJvbURv
bWFpbklEKG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCkpKTsK
LSAgICAgICAgdGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zLmFwcGVu
ZElmTm90Q29udGFpbnMoVGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHkgeyBmaXJz
dFBhcnR5RG9tYWluLCBoYXNTdG9yYWdlQWNjZXNzKGZpcnN0UGFydHlEb21haW4sIHRoaXJkUGFy
dHlEb21haW4pIH0pOworICAgICAgICB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0
eURvbWFpbnMuYXBwZW5kSWZOb3RDb250YWlucyhXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5IHsgZmlyc3RQYXJ0eURvbWFp
biwgaGFzU3RvcmFnZUFjY2VzcyhmaXJzdFBhcnR5RG9tYWluLCB0aGlyZFBhcnR5RG9tYWluKSB9
KTsKICAgICB9CiAgICAgcmVzZXRTdGF0ZW1lbnQobV9nZXRBbGxTdWJTdGF0aXN0aWNzU3RhdGVt
ZW50KTsKICAgICByZXR1cm4gdGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21h
aW5zOwpAQCAtODA4LDExICs4MDgsMTEgQEAgc3RhdGljIGJvb2wgaGFzQmVlblRoaXJkUGFydHko
dW5zaWduZWQgdGltZXNVbmRlckZpcnN0UGFydHkpCiAgICAgcmV0dXJuIHRpbWVzVW5kZXJGaXJz
dFBhcnR5ID4gMDsKIH0KIAotVmVjdG9yPFRoaXJkUGFydHlEYXRhPiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKCkgY29uc3QKK1Zl
Y3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHlEYXRh
KCkgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFZlY3Rv
cjxUaGlyZFBhcnR5RGF0YT4gdGhpcmRQYXJ0eURhdGFMaXN0OworICAgIFZlY3RvcjxXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiB0aGlyZFBhcnR5RGF0YUxp
c3Q7CiAgICAgU1FMaXRlU3RhdGVtZW50IHNvcnRlZFN0YXRpc3RpY3MobV9kYXRhYmFzZSwgbWFr
ZVN0cmluZygiU0VMRUNUICIsIGpvaW5TdWJTdGF0aXN0aWNzRm9yU29ydGluZygpKSk7CiAgICAg
aWYgKHNvcnRlZFN0YXRpc3RpY3MucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBz
b3J0ZWRTdGF0aXN0aWNzLmJpbmRUZXh0KDEsICIlIikKQEAgLTgyNSw3ICs4MjUsNyBAQCBWZWN0
b3I8VGhpcmRQYXJ0eURhdGE+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjph
Z2dyZWdhdGVkVGhpcmRQYXJ0eQogICAgICAgICBpZiAoaGFzQmVlblRoaXJkUGFydHkoc29ydGVk
U3RhdGlzdGljcy5nZXRDb2x1bW5JbnQoMSkpKSB7CiAgICAgICAgICAgICBhdXRvIHRoaXJkUGFy
dHlEb21haW5JRCA9IHNvcnRlZFN0YXRpc3RpY3MuZ2V0Q29sdW1uSW50KDApOwogICAgICAgICAg
ICAgYXV0byB0aGlyZFBhcnR5RG9tYWluID0gUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENy
ZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhnZXREb21haW5TdHJpbmdGcm9tRG9tYWlu
SUQodGhpcmRQYXJ0eURvbWFpbklEKSk7Ci0gICAgICAgICAgICB0aGlyZFBhcnR5RGF0YUxpc3Qu
YXBwZW5kKFRoaXJkUGFydHlEYXRhIHsgdGhpcmRQYXJ0eURvbWFpbiwgZ2V0VGhpcmRQYXJ0eURh
dGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHRoaXJkUGFydHlEb21haW5JRCwgdGhpcmRQ
YXJ0eURvbWFpbikgfSk7CisgICAgICAgICAgICB0aGlyZFBhcnR5RGF0YUxpc3QuYXBwZW5kKFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGEgeyB0aGlyZFBhcnR5
RG9tYWluLCBnZXRUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnModGhp
cmRQYXJ0eURvbWFpbklELCB0aGlyZFBhcnR5RG9tYWluKSB9KTsKICAgICAgICAgfQogICAgIH0K
ICAgICByZXR1cm4gdGhpcmRQYXJ0eURhdGFMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCA3YWQ4NjE1ZjVhMjcyYzZmZmM1
NmRlYWU1MmFlZjJiZTZlYTZkYjcxLi43N2U5ZjhmNzEzYTNlMzMxMDAzZWU5YmZhYjgxYjkxYTY3
NTU2OGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgVmVjdG9yPFRoaXJkUGFydHlEYXRhPiBhZ2dyZWdhdGVkVGhp
cmRQYXJ0eURhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gYWdncmVnYXRlZFRoaXJkUGFydHlEYXRh
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVDb29raWVCbG9ja2luZyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjbGFzc2lmeVByZXZh
bGVudFJlc291cmNlcygpIG92ZXJyaWRlOwpAQCAtMTM5LDcgKzEzOSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBvcGVuSVRQRGF0YWJhc2UoKTsKICAgICBib29sIGlzQ29ycmVjdFRhYmxlU2NoZW1h
KCk7CiAgICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29u
c3QgU3ViRnJhbWVEb21haW4mKSBjb25zdDsKLSAgICBWZWN0b3I8VGhpcmRQYXJ0eURhdGFGb3JT
cGVjaWZpY0ZpcnN0UGFydHk+IGdldFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5
RG9tYWlucyh1bnNpZ25lZCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKKyAgICBW
ZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNw
ZWNpZmljRmlyc3RQYXJ0eT4gZ2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlE
b21haW5zKHVuc2lnbmVkLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogICAgIHZv
aWQgb3BlbkFuZERyb3BPbGREYXRhYmFzZUlmTmVjZXNzYXJ5KCk7CiAgICAgU3RyaW5nIGdldERv
bWFpblN0cmluZ0Zyb21Eb21haW5JRCh1bnNpZ25lZCkgY29uc3Q7CiAgICAgU3RyaW5nIGdldFN1
YlN0YXRpc3RpY1N0YXRlbWVudChjb25zdCBTdHJpbmcmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKaW5kZXggODE5Mjg1Mzhh
ZDEyNTAzZWYyZmZlZWYwNTc1Y2RkODQ4ZWIzMmQ1OS4uODJlNGIwMzNkMzcyZmZkNTYyYzI2OTM1
YjVkYTk5MTNiZWIzZDE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAgLTEwMywxNSArMTAzLDE1IEBAIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpjYWxjdWxhdGVBbmRTdWJtaXRUZWxlbWV0cnkoKSBj
b25zdAogICAgICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5OjpjYWxjdWxh
dGVBbmRTdWJtaXQoKnRoaXMpOwogfQogCi1zdGF0aWMgdm9pZCBlbnN1cmVUaGlyZFBhcnR5RGF0
YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbihWZWN0b3I8VGhpcmRQYXJ0eURhdGFGb3JTcGVj
aWZpY0ZpcnN0UGFydHk+JiB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIGJvb2wgdGhpcmRQ
YXJ0eUhhc1N0b3JhZ2VBY2Nlc3MpCitzdGF0aWMgdm9pZCBlbnN1cmVUaGlyZFBhcnR5RGF0YUZv
clNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbihWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4mIHRoaXJkUGFydHlE
YXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
Zmlyc3RQYXJ0eURvbWFpbiwgYm9vbCB0aGlyZFBhcnR5SGFzU3RvcmFnZUFjY2VzcykKIHsKLSAg
ICBUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSB0aGlyZFBhcnR5RGF0YUZvclNw
ZWNpZmljRmlyc3RQYXJ0eSB7IGZpcnN0UGFydHlEb21haW4sIHRoaXJkUGFydHlIYXNTdG9yYWdl
QWNjZXNzIH07CisgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5
RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQ
YXJ0eSB7IGZpcnN0UGFydHlEb21haW4sIHRoaXJkUGFydHlIYXNTdG9yYWdlQWNjZXNzIH07CiAg
ICAgdGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW4uYXBwZW5kSWZOb3RD
b250YWlucyh0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSk7CiB9CiAKLXN0YXRp
YyBWZWN0b3I8VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IGdldFRoaXJkUGFy
dHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzJiB0aGlyZFBhcnR5U3RhdGlzdGljKQorc3RhdGljIFZlY3RvcjxXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBn
ZXRUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnMoY29uc3QgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyYgdGhpcmRQYXJ0eVN0YXRpc3RpYykKIHsKLSAgICBWZWN0b3I8VGhp
cmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IHRoaXJkUGFydHlEYXRhRm9yU3BlY2lm
aWNGaXJzdFBhcnR5RG9tYWluczsKKyAgICBWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4gdGhpcmRQYXJ0eURh
dGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zOwogCiAgICAgZm9yIChhdXRvIGZpcnN0UGFy
dHlEb21haW4gOiB0aGlyZFBhcnR5U3RhdGlzdGljLnN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFp
bnMpCiAgICAgICAgIGVuc3VyZVRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9t
YWluKHRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucywgZmlyc3RQYXJ0
eURvbWFpbiwgdGhpcmRQYXJ0eVN0YXRpc3RpYy5zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURv
bWFpbnMuY29udGFpbnMoZmlyc3RQYXJ0eURvbWFpbikpOwpAQCAtMTMwLDE0ICsxMzAsMTQgQEAg
c3RhdGljIGJvb2wgaGFzQmVlblRoaXJkUGFydHkoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyYgc3RhdGlzdGljKQogICAgICAgICB8fCAhc3RhdGlzdGljLnN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RzVG8uaXNFbXB0eSgpOwogfQogCi1WZWN0b3I8VGhpcmRQYXJ0eURhdGE+IFJlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKCkgY29u
c3QKK1ZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRh
PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5
RGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBW
ZWN0b3I8VGhpcmRQYXJ0eURhdGE+IHRoaXJkUGFydHlEYXRhTGlzdDsKKyAgICBWZWN0b3I8V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gdGhpcmRQYXJ0eURh
dGFMaXN0OwogICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogbV9yZXNvdXJjZVN0YXRpc3RpY3NN
YXAudmFsdWVzKCkpIHsKICAgICAgICAgaWYgKGhhc0JlZW5UaGlyZFBhcnR5KHN0YXRpc3RpYykp
Ci0gICAgICAgICAgICB0aGlyZFBhcnR5RGF0YUxpc3QuYXBwZW5kKFRoaXJkUGFydHlEYXRhIHsg
c3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluLCBnZXRUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmlj
Rmlyc3RQYXJ0eURvbWFpbnMoc3RhdGlzdGljKSB9KTsKKyAgICAgICAgICAgIHRoaXJkUGFydHlE
YXRhTGlzdC5hcHBlbmQoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5
RGF0YSB7IHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbiwgZ2V0VGhpcmRQYXJ0eURhdGFGb3JT
cGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHN0YXRpc3RpYykgfSk7CiAgICAgfQogICAgIHN0ZDo6
c29ydCh0aGlyZFBhcnR5RGF0YUxpc3QucmJlZ2luKCksIHRoaXJkUGFydHlEYXRhTGlzdC5yZW5k
KCkpOwogICAgIHJldHVybiB0aGlyZFBhcnR5RGF0YUxpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggOWJjYTkwMzBjNTZlN2RjMjMz
MWQ5NjA5M2U3NDcxNTU3NjA4Njc3YS4uMGIwZTZkODA1NmRiMDZhMGM4YzU1NjE0ODIwNzMxYjE1
OTEzM2RjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmUuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IG92ZXJyaWRlOwogCi0gICAgVmVjdG9yPFRoaXJkUGFydHlEYXRhPiBhZ2dyZWdhdGVkVGhpcmRQ
YXJ0eURhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gYWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX3Jl
c291cmNlU3RhdGlzdGljc01hcDsgfQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Oktl
eWVkRW5jb2Rlcj4gY3JlYXRlRW5jb2RlckZyb21EYXRhKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggYWUzYzhlZWY4YTk5NTVkNjYwMTc5OWM5
YmFmMzljN2E0OGI2NzlkYi4uN2RhZGY0ZGI4ODczNTJhY2Y5ZTFlZjVmNDAwNzRmYWVlYWMwM2E4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtOTgsNyAr
OTgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBWZWN0b3I8VGhpcmRQYXJ0eURhdGE+IGFnZ3JlZ2F0ZWRUaGlyZFBhcnR5
RGF0YSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiBhZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoKSBj
b25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29va2llQmxvY2tpbmcoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CiAgICAgdm9pZCB1cGRhdGVDb29raWVCbG9ja2lu
Z0ZvckRvbWFpbnMoY29uc3QgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3ImLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBkNDU4NmQ1YTA4ODEwZGFjYTYzNjAwNmRkMGIw
YWQ0ZTliNmEyOGJjLi4wYTk0NDA0NThkNjI2YzBiZjY5YTJlYmNjM2MyNDZjZjIxY2IxM2VkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAt
MTE1Miw5ICsxMTUyLDIyIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpu
b3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnCiAgICAgICAgIGNvbnN0
X2Nhc3Q8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKj4odGhpcyktPm5ldHdvcmtTZXNz
aW9uKCktPm5vdGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQobnVtYmVyT2ZQcmV2
YWxlbnRSZXNvdXJjZXMsIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFj
dGlvbiwgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCB0
b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJh
Y3Rpb24sIG1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblByZXZhbGVudFJlc291cmNlV2l0
aFVzZXJJbnRlcmFjdGlvbiwgdG9wM051bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVJLCB0
b3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0VUksIHRvcDNNZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRV
SSwgdG9wM01lZGlhblVuaXF1ZVJlZGlyZWN0c1dpdGhvdXRVSSwgdG9wM01lZGlhbkRhdGFSZWNv
cmRzUmVtb3ZlZFdpdGhvdXRVSSk7CiB9CiAKLVZlY3RvcjxUaGlyZFBhcnR5RGF0YT4gV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoKQordm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0
YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OlRoaXJkUGFydHlEYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBy
ZXR1cm4gbV9zdGF0aXN0aWNzU3RvcmUtPmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YSgpOworICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBwb3N0VGFzayhbdGhpcywgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlICB7Cisg
ICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3RvcmUpIHsKKyAgICAgICAgICAgIHBvc3RUYXNrUmVw
bHkoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFZlY3RvcjxX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiB0aGlyZFBhcnR5
RGF0YSA9IG1fc3RhdGlzdGljc1N0b3JlLT5hZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoKTsKKyAg
ICAgICAgcG9zdFRhc2tSZXBseShbdGhpcmRQYXJ0eURhdGEgPSBXVEZNb3ZlKHRoaXJkUGFydHlE
YXRhKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUodGhpcmRQYXJ0
eURhdGEpKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IGM1
OTFmYzJlM2M5MDg2YzIwNThhYjQ3NWM2ZDIzNGE2MzQ0ZjkxNTcuLjJlNWI0NGZmYWQ1ZjRmYjNi
YTgwNmZjNDcyNmI1ODU0NmQ3NTlmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmgKQEAgLTI3LDYgKzI3LDkgQEAKIAogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1
ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJFbmNvZGVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFj
Y2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKQEAgLTc4LDYgKzgxLDMwIEBAIHN0cnVjdCBSZWdpc3Ry
YWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciB7CiAgICAgUmVnaXN0cmFibGVEb21haW5zVG9C
bG9ja0Nvb2tpZXNGb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBkb21haW5zVG9C
bG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNUb0Jsb2NrQnV0
S2VlcENvb2tpZXNGb3IuaXNvbGF0ZWRDb3B5KCksIGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9u
QXNGaXJzdFBhcnR5Lmlzb2xhdGVkQ29weSgpIH07IH0KIH07CiAKK2NsYXNzIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1h
aW4+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczsKKyAgICB1c2luZyBSZWdpc3RyYWJsZURvbWFpbiA9
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOworICAgIHVzaW5nIFRvcEZyYW1lRG9tYWluID0g
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CisgICAgdXNpbmcgU3ViRnJhbWVEb21haW4gPSBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKKyAgICB1c2luZyBTdWJSZXNvdXJjZURvbWFpbiA9
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOworICAgIHVzaW5nIFJlZGlyZWN0RG9tYWluID0g
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CisgICAgdXNpbmcgUmVkaXJlY3RlZEZyb21Eb21h
aW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKKyAgICB1c2luZyBSZWRpcmVjdGVkVG9E
b21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKKyAgICB1c2luZyBOYXZpZ2F0ZWRG
cm9tRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CisgICAgdXNpbmcgTmF2aWdh
dGVkVG9Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKKyAgICB1c2luZyBEb21h
aW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKKyAg
ICB1c2luZyBPcGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKKyAgICB1
c2luZyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA9IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkOworICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biA9IFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjsKKworICAgIHN0YXRpYyBSZWY8V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNz
aW9uLCBjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFNob3Vs
ZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShuZXR3
b3JrU2Vzc2lvbiwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgc2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdCkpOworICAgIH0KKworICAgIH5XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUoKTsKKwogc3RydWN0IFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5IHsKICAg
ICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmaXJzdFBhcnR5RG9tYWluOwogICAgIGJvb2wg
c3RvcmFnZUFjY2Vzc0dyYW50ZWQ7CkBAIC04Nyw2ICsxMTQsMjUgQEAgc3RydWN0IFRoaXJkUGFy
dHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5IHsKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmco
IkhhcyBiZWVuIGdyYW50ZWQgc3RvcmFnZSBhY2Nlc3MgdW5kZXIgIiwgZmlyc3RQYXJ0eURvbWFp
bi5zdHJpbmcoKSwgIjogIiwgc3RvcmFnZUFjY2Vzc0dyYW50ZWQgPyAnMScgOiAnMCcpOwogICAg
IH0KIAorICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7
CisgICAgICAgIGVuY29kZXIgPDwgZmlyc3RQYXJ0eURvbWFpbjsKKyAgICAgICAgZW5jb2RlciA8
PCBzdG9yYWdlQWNjZXNzR3JhbnRlZDsKKyAgICB9CisKKyAgICBzdGF0aWMgT3B0aW9uYWw8VGhp
cmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IGRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIpCisgICAgeworICAgICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkZWNvZGVk
RG9tYWluOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRlY29kZWREb21haW4pKQorICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBib29sIGRlY29kZWRTdG9y
YWdlQWNjZXNzOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRlY29kZWRTdG9yYWdlQWNj
ZXNzKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJu
IHt7IGRlY29kZWREb21haW4sIGRlY29kZWRTdG9yYWdlQWNjZXNzIH19OworICAgIH0KKwogICAg
IGJvb2wgb3BlcmF0b3I9PShUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSBjb25z
dCBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBmaXJzdFBhcnR5RG9tYWluID09
IG90aGVyLmZpcnN0UGFydHlEb21haW4gJiYgc3RvcmFnZUFjY2Vzc0dyYW50ZWQgPT0gb3RoZXIu
c3RvcmFnZUFjY2Vzc0dyYW50ZWQ7CkBAIC0xMTIsMzUgKzE1OCwzMSBAQCBzdHJ1Y3QgVGhpcmRQ
YXJ0eURhdGEgewogICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogICAg
IH0KIAotICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFRoaXJkUGFydHlEYXRhICZvdGhlcikgY29u
c3QKKyAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgewot
ICAgICAgICByZXR1cm4gdW5kZXJGaXJzdFBhcnRpZXMuc2l6ZSgpIDwgb3RoZXIudW5kZXJGaXJz
dFBhcnRpZXMuc2l6ZSgpOworICAgICAgICBlbmNvZGVyIDw8IHRoaXJkUGFydHlEb21haW47Cisg
ICAgICAgIGVuY29kZXIgPDwgdW5kZXJGaXJzdFBhcnRpZXM7CiAgICAgfQotfTsKIAotY2xhc3Mg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSwgV1RGOjpEZXN0cnVjdGlv
blRocmVhZDo6TWFpbj4gewotcHVibGljOgotICAgIHVzaW5nIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPSBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwotICAgIHVzaW5nIFJlZ2lzdHJh
YmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgVG9wRnJh
bWVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBTdWJGcmFt
ZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIFN1YlJlc291
cmNlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgUmVkaXJl
Y3REb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBSZWRpcmVj
dGVkRnJvbURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIFJl
ZGlyZWN0ZWRUb0RvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5n
IE5hdmlnYXRlZEZyb21Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1
c2luZyBOYXZpZ2F0ZWRUb0RvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAg
IHVzaW5nIERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluOwotICAgIHVzaW5nIE9wZW5lckRvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluOwotICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkID0gV2ViQ29yZTo6U3RvcmFn
ZUFjY2Vzc1dhc0dyYW50ZWQ7Ci0gICAgdXNpbmcgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
ID0gV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOwotCi0gICAgc3RhdGljIFJl
ZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYg
bmV0d29ya1Nlc3Npb24sIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KQorICAg
IHN0YXRpYyBPcHRpb25hbDxUaGlyZFBhcnR5RGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZShuZXR3b3JrU2Vzc2lvbiwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCkpOworICAgICAgICBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiBkZWNvZGVkRG9tYWluOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGRlY29kZWREb21haW4pKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
ICAgICBPcHRpb25hbDxWZWN0b3I8VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+
PiBkZWNvZGVkRmlyc3RQYXJ0aWVzOworICAgICAgICBkZWNvZGVyID4+IGRlY29kZWRGaXJzdFBh
cnRpZXM7CisgICAgICAgIGlmICghZGVjb2RlZEZpcnN0UGFydGllcykKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7IGRlY29kZWREb21haW4sIFdU
Rk1vdmUoKmRlY29kZWRGaXJzdFBhcnRpZXMpIH19OwogICAgIH0KIAotICAgIH5XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUoKTsKKyAgICBib29sIG9wZXJhdG9yPChjb25zdCBUaGlyZFBh
cnR5RGF0YSAmb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gdW5kZXJGaXJzdFBh
cnRpZXMuc2l6ZSgpIDwgb3RoZXIudW5kZXJGaXJzdFBhcnRpZXMuc2l6ZSgpOworICAgIH0KK307
CiAKICAgICB2b2lkIGRpZERlc3Ryb3lOZXR3b3JrU2Vzc2lvbigpOwogCkBAIC0yMzUsNyArMjc3
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChW
ZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik7CiAgICAgdm9pZCByZXF1
ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYm
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJJRCwgT3BlbmVyRG9tYWluJiYpOwotICAg
IFZlY3RvcjxUaGlyZFBhcnR5RGF0YT4gYWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKCk7CisgICAg
dm9pZCBhZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4mJik+JiYp
OwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZShOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApp
bmRleCA5MzIzNTdlOTY2YWVhMzNiNzMwNjQxOTdlYTNmMzliMjRlNjI2N2IxLi40YmJlYTcyNDJm
NjI4YTZiM2I2Mzc2OTQzYWFhZmRkOWQwMWJhM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNzUwLDYgKzc1MCwxOSBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRAogICAgIH0KIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFTdW1tYXJ5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
aWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtT
ZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5hZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7
IH0pOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgIH0KK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApp
bmRleCA0ZDRhZGQwMGNlMzg2YzA3ZWQ4NzY2NDRhZWZlNDc4MTk5NWVlZjAyLi41YmMxNjVhZTYz
ZjBhNTQzNTg3N2ZiZjY3MzUwNmUwMmVkNmQzYzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yMzEsNiArMjMxLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0UGFy
YW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQo
UEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRH
cmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAg
dm9pZCBnZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkoUEFMOjpTZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6VGhpcmRQYXJ0eURhdGE+JiYpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ29va2llQmxv
Y2tpbmdVcGRhdGUoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoUEFM
OjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzdWJt
aXRUZWxlbWV0cnkoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgppbmRleCBlZTA4NmMwY2QxNjc2ZTUwZDc4ZWRhOTYyMDFjYzM3MWFjNDJm
YzhhLi4yYWQ5ODgxZmNmN2VhODQ0ZDgyYmM3N2ZhYzA3ZjQ5M2Q3YzRkZTVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTExMyw2ICsxMTMsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgU2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMpIC0+ICgpIEFzeW5jCiAg
ICAgU2V0R3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluLCBib29sIGlzR3JhbmRmYXRoZXJlZCkgLT4g
KCkgQXN5bmMKICAgICBTZXRVc2VJVFBEYXRhYmFzZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGJvb2wgdmFsdWUpIC0+ICgpIEFzeW5jCisgICAgR2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFTdW1tYXJ5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKFZlY3RvcjxXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+IHRoaXJkUGFydHlE
YXRhKSBBc3luYwogICAgIFNldEdyYW5kZmF0aGVyaW5nVGltZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFNlY29uZHMgc2Vjb25kcykgLT4gKCkgQXN5bmMKICAgICBTZXRNYXhTdGF0aXN0aWNz
RW50cmllcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IG1heGltdW1FbnRyeUNv
dW50KSAtPiAoKSBBc3luYwogICAgIFNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVt
b3ZhbChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY29uZHMgc2Vjb25kcykgLT4gKCkgQXN5
bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0lUUEZp
cnN0UGFydHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0lUUEZpcnN0
UGFydHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zZGJjMTYzMzE3ZGUzM2NiMWM0MGYzODU1NGU0NGJiMTg3ODY3
Mzg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLSVRQRmlyc3RQYXJ0eS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitOU19BU1NV
TUVfTk9OTlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIFdLSVRQRmlyc3RQYXJ0eSA6IE5TT2JqZWN0
CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERvbWFpbjooTlNTdHJpbmcgKilkb21haW4gYW5k
VGhpcmRQYXJ0eVN0b3JhZ2VBY2Nlc3M6KEJPT0wpc3RvcmFnZUFjY2VzczsKKworQHByb3BlcnR5
IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICpmaXJzdFBhcnR5RG9tYWluOworQHByb3BlcnR5
IChub25hdG9taWMpIEJPT0wgdGhpcmRQYXJ0eVN0b3JhZ2VBY2Nlc3NHcmFudGVkOworCitAZW5k
CisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLSVRQRmlyc3RQYXJ0eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0lUUEZpcnN0UGFydHkubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQxMTcyMjczY2Qy
YWNkMjcyNTdkM2NjNjQ4YTdmN2U3YTZlOWEyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0lUUEZpcnN0UGFydHkubW0KQEAgLTAsMCArMSw0
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tJVFBGaXJz
dFBhcnR5LmgiCisKK0BpbXBsZW1lbnRhdGlvbiBXS0lUUEZpcnN0UGFydHkKKworLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRG9tYWluOihOU1N0cmluZyAqKWRvbWFpbiBhbmRUaGlyZFBhcnR5U3Rv
cmFnZUFjY2VzczooQk9PTClzdG9yYWdlQWNjZXNzCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBl
ciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBzZWxmLmZpcnN0UGFydHlEb21h
aW4gPSBkb21haW47CisgICAgc2VsZi50aGlyZFBhcnR5U3RvcmFnZUFjY2Vzc0dyYW50ZWQgPSBz
dG9yYWdlQWNjZXNzOworICAgIHJldHVybiBzZWxmOworfQorCitAZW5kCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0lUUFRoaXJkUGFydHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0lUUFRoaXJkUGFydHkuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40OGYxYTZkYzNiZWE0NjFhNDRmMTYwY2I1OGFlMWJkODIzMzA0NDU2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSVRQVGhpcmRQYXJ0
eS5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXS0lUUEZpcnN0UGFy
dHkuaCIKKyNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgorCitOU19B
U1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIFdLSVRQVGhpcmRQYXJ0eSA6IE5TT2Jq
ZWN0CisKKy0gKE5TQXJyYXk8V0tJVFBGaXJzdFBhcnR5ICo+ICopZ2V0V0tJVFBGaXJzdFBhcnR5
TGlzdDooVmVjdG9yPFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGly
ZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4gKil1bmRlckZpcnN0UGFydGllczsKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aERvbWFpbjooTlNTdHJpbmcgKilkb21haW4gdW5kZXJGaXJz
dFBhcnRpZXM6KFZlY3RvcjxXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+Jil1bmRlckZpcnN0UGFydGllczsK
KworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICp0aGlyZFBhcnR5RG9tYWlu
OworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TQXJyYXk8V0tJVFBGaXJzdFBhcnR5ICo+
ICp1bmRlckZpcnN0UGFydGllczsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0lUUFRoaXJkUGFy
dHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tJVFBUaGlyZFBhcnR5
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjU0MjY1YjRjZjgxOTJiOGUyZGE5YTg2NDI1MWQ3ZTAyMmEwMGVkYWIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tJ
VFBUaGlyZFBhcnR5Lm1tCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIldLSVRQVGhpcmRQYXJ0eS5oIgorCisjaW1wb3J0ICJBUElBcnJh
eS5oIgorI2ltcG9ydCAiV0tJVFBGaXJzdFBhcnR5LmgiCisjaW1wb3J0ICJXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaCIKKworQGltcGxlbWVudGF0aW9uIFdLSVRQVGhpcmRQYXJ0eQor
CistIChOU0FycmF5PFdLSVRQRmlyc3RQYXJ0eSAqPiAqKWdldFdLSVRQRmlyc3RQYXJ0eUxpc3Q6
KFZlY3RvcjxXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0
eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+ICopdW5kZXJGaXJzdFBhcnRpZXMKK3sKKyAgICBO
U011dGFibGVBcnJheTxXS0lUUEZpcnN0UGFydHkgKj4gKmFwaVVuZGVyRmlyc3RQYXJ0aWVzID0g
W05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnVuZGVyRmlyc3RQYXJ0aWVzLT5zaXpl
KCldOworICAgIGZvciAoY29uc3QgYXV0byYgdGhpcmRQYXJ0eURhdGFVbmRlckZpcnN0UGFydHkg
OiAqdW5kZXJGaXJzdFBhcnRpZXMpIHsKKyAgICAgICAgV0tJVFBGaXJzdFBhcnR5ICp3a0ZpcnN0
UGFydHkgPSBbW1dLSVRQRmlyc3RQYXJ0eSBhbGxvY10gaW5pdFdpdGhEb21haW46dGhpcmRQYXJ0
eURhdGFVbmRlckZpcnN0UGFydHkuZmlyc3RQYXJ0eURvbWFpbi5zdHJpbmcoKSBhbmRUaGlyZFBh
cnR5U3RvcmFnZUFjY2Vzczp0aGlyZFBhcnR5RGF0YVVuZGVyRmlyc3RQYXJ0eS5zdG9yYWdlQWNj
ZXNzR3JhbnRlZF07CisgICAgICAgIFthcGlVbmRlckZpcnN0UGFydGllcyBhZGRPYmplY3Q6d2tG
aXJzdFBhcnR5XTsKKyAgICB9CisgICAgcmV0dXJuIGFwaVVuZGVyRmlyc3RQYXJ0aWVzOworfQor
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEb21haW46KE5TU3RyaW5nICopZG9tYWluIHVuZGVy
Rmlyc3RQYXJ0aWVzOihWZWN0b3I8V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiYpdW5kZXJGaXJzdFBhcnRp
ZXMKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5p
bDsKKworICAgIHNlbGYudGhpcmRQYXJ0eURvbWFpbiA9IGRvbWFpbjsKKyAgICBzZWxmLnVuZGVy
Rmlyc3RQYXJ0aWVzID0gW3NlbGYgZ2V0V0tJVFBGaXJzdFBhcnR5TGlzdDomdW5kZXJGaXJzdFBh
cnRpZXNdOworICAgIHJldHVybiBzZWxmOworfQorCitAZW5kCisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4
IDQ4NDY3YjdhODMzMjEwYjI5YTBhZWQwZWFiNDRhMDgwMmYzZjhlMzYuLmYyMmYxMTc1YjRjMzJk
MDk4OWZlNmMzYTg0ZjAzZTE4MmY0ODQ3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtMjYsMTEgKzI2
LDEzIEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLV2Vic2l0ZURhdGFTdG9yZUlu
dGVybmFsLmgiCiAKKyNpbXBvcnQgIkFQSURpY3Rpb25hcnkuaCIKICNpbXBvcnQgIkFQSVN0cmlu
Zy5oIgogI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLmgi
CiAjaW1wb3J0ICJDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJTaG91
bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIKICNpbXBvcnQgIldLSFRUUENvb2tpZVN0b3JlSW50
ZXJuYWwuaCIKKyNpbXBvcnQgIldLSVRQVGhpcmRQYXJ0eS5oIgogI2ltcG9ydCAiV0tOU0FycmF5
LmgiCiAjaW1wb3J0ICJXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQg
IldLV2ViVmlld0ludGVybmFsLmgiCkBAIC01MTgsNiArNTIwLDIyIEBAIC0gKHZvaWQpX2NsZWFy
UmVzb3VyY2VMb2FkU3RhdGlzdGljczoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIK
ICNlbmRpZgogfQogCistICh2b2lkKV9nZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1h
cnk6KHZvaWQgKF4pKE5TQXJyYXk8V0tJVFBUaGlyZFBhcnR5ICo+ICopKWNvbXBsZXRpb25IYW5k
bGVyCit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBfd2Vic2l0
ZURhdGFTdG9yZS0+Z2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFTdW1tYXJ5KFtjb21wbGV0
aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgdGhp
cmRQYXJ0eURvbWFpbnMpIHsKKyAgICAgICAgTlNNdXRhYmxlQXJyYXk8V0tJVFBUaGlyZFBhcnR5
ICo+ICphcGlUaGlyZFBhcnRpZXMgPSBbW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhD
YXBhY2l0eTp0aGlyZFBhcnR5RG9tYWlucy5zaXplKCldIGF1dG9yZWxlYXNlXTsKKyAgICAgICAg
Zm9yIChhdXRvJiB0aGlyZFBhcnR5IDogdGhpcmRQYXJ0eURvbWFpbnMpIHsKKyAgICAgICAgICAg
IFdLSVRQVGhpcmRQYXJ0eSAqd2tUaGlyZFBhcnR5ID0gW1tXS0lUUFRoaXJkUGFydHkgYWxsb2Nd
IGluaXRXaXRoRG9tYWluOnRoaXJkUGFydHkudGhpcmRQYXJ0eURvbWFpbi5zdHJpbmcoKSB1bmRl
ckZpcnN0UGFydGllczp0aGlyZFBhcnR5LnVuZGVyRmlyc3RQYXJ0aWVzXTsKKyAgICAgICAgICAg
IFthcGlUaGlyZFBhcnRpZXMgYWRkT2JqZWN0OndrVGhpcmRQYXJ0eV07CisgICAgICAgIH0KKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShhcGlUaGlyZFBhcnRpZXMpKTsKKyAgICB9
KTsKKyNlbHNlCisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyNlbmRpZgorfQorCiAtICh2
b2lkKV9pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXJGaXJzdFBhcnR5OihOU1VSTCAqKWZp
cnN0UGFydHlVUkwgdGhpcmRQYXJ0eTooTlNVUkwgKil0aGlyZFBhcnR5VVJMIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAppbmRleCA3
MGZjMTQ2NTczZDIzZWE0ZTUwYjM5YmVjYzU4MzJiMjJhMzIwMjJkLi5hZDA1Njg1OWNhOGUyNDYy
NWM0MDU4YTliNDIzMTZmNTVhZTM2OGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAg
LTI5LDYgKzI5LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGNsYXNzIF9XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOwogQGNsYXNzIFdLV2ViVmlldzsKK0BjbGFzcyBXS0lU
UFRoaXJkUGFydHk7CiAKIEBwcm90b2NvbCBfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU7CiAK
QEAgLTcxLDYgKzcyLDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNp
dGVEYXRhU3RvcmVGZXRjaE9wdGlvbnMpIHsKIC0gKHZvaWQpX2xvZ1VzZXJJbnRlcmFjdGlvbjoo
TlNVUkwgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRp
b25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CiAtICh2b2lkKV9zZXRQcmV2YWxlbnREb21haW46KE5TVVJMICopZG9tYWluIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKIC0gKHZvaWQpX2dldElzUHJldmFsZW50
RG9tYWluOihOU1VSTCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkp
Y29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4w
KSk7CistICh2b2lkKV9nZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnk6KHZvaWQg
KF4pKE5TQXJyYXk8V0tJVFBUaGlyZFBhcnR5ICo+ICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogLSAodm9pZClfY2xlYXJQcmV2
YWxlbnREb21haW46KE5TVVJMICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2
b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfY2xlYXJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Oih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfaXNSZWdpc3RlcmVkQXNT
dWJyZXNvdXJjZVVuZGVyRmlyc3RQYXJ0eTooTlNVUkwgKilmaXJzdFBhcnR5VVJMIHRoaXJkUGFy
dHk6KE5TVVJMICopdGhpcmRQYXJ0eVVSTCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9P
TCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGFhOTFhZTBiNzQ2MzdiYzMyM2U2
OGY4MjAzNzlkN2MyNWI2ZTk2OTIuLjEwYjY5MmVkZDMyODdmMGZmMDgyYzQ1Zjg0NjU3ZjA4MmNk
MDc3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtODE0LDYgKzgxNCwxNiBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgQwogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OkdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKHNlc3Npb25JRCksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OlRoaXJkUGFydHlEYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIWNh
blNlbmRNZXNzYWdlKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OkdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeShzZXNzaW9u
SUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKaW5kZXggNzZlODJhN2I5NzFkOGVkMmMyMDM4YzE5NWFmZTk5YmU1NTdlMWNjOS4u
OTFlMDk2NDYwYjIyMDVhYzE5MWM4MTdmZWFkNDc4ZWIxM2JiZGZhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAg
LTEzNSw2ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgZ2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFTdW1tYXJ5KFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiYmKT4mJik7CiAgICAgdm9pZCBnZXRB
bGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U3RyaW5nPiBkb21haW5zKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFn
ZUFjY2Vzc0NvbmZpcm0oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCByZXNldFBhcmFtZXRlcnNU
b0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IGIyZjlmYzI0OWZhNDhlYjVmZGMzZjYzNGE5ZjU5NGMx
NjM2NzYwNDMuLjE5OTUxMGU0MmVkMWU0ODQxMDEwMDA0ZDQyNGE2MDg1NDgxNDJmZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCkBAIC0xNTEwLDYgKzE1MTAsMTYgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1vZGlmaWVkU2lu
Y2UKICAgICB9CiB9CiAKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFTdW1tYXJ5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBmb3IgKGF1
dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHBy
b2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKKyAgICAgICAgICAgIHByb2Nl
c3MtPmdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeShtX3Nlc3Npb25JRCwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0KK30KKwogdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVy
U3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmgKaW5kZXggMjcwYzJjNzhhOGM5MzQ1YmYwODE2NjJlNGNjNTk4ODEwMGRlOTA4NS4u
YTc1YjFhZTZkY2I3YTRiMzNiZjcwZmVhMjhiM2Q2YzMyMGNkY2FiYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRh
U3RvcmVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+CkBAIC0xNjAsNiArMTYxLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVu
dChXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
U3VtbWFyeShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiYmKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZVN0
YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeSgpOwogICAgIHZvaWQgc2V0R3JhbmRmYXRo
ZXJlZChjb25zdCBVUkwmLCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjc5
ZGRjMTIwNDBmMmJmNzkyNDBjY2E1NWVmOTg5MzBiNTAwNzUzNC4uZDAzYmY1NzgzYTQ2OGI1Y2I2
ZWQ4NmVlZDQzODJlNTQ4NjcxY2QyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MjYsNiArOTI2LDEwIEBACiAJCTQ2QzM5MjI5MjMx
NkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMzOTIyODIzMTZFQzREMDA4RUVEOUIg
LyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oICovOyB9OwogCQk0NkRGMDYzQzFGMzkwNUY4MDAx
OTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyog
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggKi87IH07CiAJCTQ2RjlCMjYzMjM1MjZFRjMw
MDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAvKiBX
ZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCAqLzsgfTsKKwkJNDlGQkVGRkQyMzlCMDExRDAwQkQw
MzJGIC8qIFdLSVRQRmlyc3RQYXJ0eS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ5RkJFRkZDMjM5QjAxMUQwMEJEMDMyRiAvKiBXS0lUUEZpcnN0UGFy
dHkubW0gKi87IH07CisJCTQ5RkJFRkZGMjM5QjAxMkYwMEJEMDMyRiAvKiBXS0lUUFRoaXJkUGFy
dHkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUZC
RUZGRTIzOUIwMTJGMDBCRDAzMkYgLyogV0tJVFBUaGlyZFBhcnR5Lm1tICovOyB9OworCQk0OUZC
RjAwMDIzOUIxRjc1MDBCRDAzMkYgLyogV0tJVFBUaGlyZFBhcnR5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUZCRUZGQTIzOUFEOTc4MDBCRDAzMkYg
LyogV0tJVFBUaGlyZFBhcnR5LmggKi87IH07CisJCTQ5RkJGMDAxMjM5QjFGOEQwMEJEMDMyRiAv
KiBXS0lUUEZpcnN0UGFydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ5RkJFRkZCMjM5QURCMTgwMEJEMDMyRiAvKiBXS0lUUEZpcnN0UGFydHkuaCAq
LzsgfTsKIAkJNEEzQ0MxOEIxOUIwNjQwRjAwRDE0QUVGIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QTQxMEYzQTE5QUY3QjA0MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkuaCAqLzsgfTsKIAkJNEEzQ0MxOEQxOUIwNjQxOTAwRDE0QUVG
IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNDEwRjNDMTlBRjdCMDQwMDJFQkFCNSAvKiBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmggKi87IH07CiAJCTRBM0NDMThGMTlCMDdC
OEEwMEQxNEFFRiAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEYzNjE5QUY3QUMzMDAyRUJB
QjUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zMzE2LDYgKzMzMjAsMTAgQEAKIAkJNDZE
RjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZsaWdo
dENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYzQTFGMzkw
NUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2Vi
QmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0OUZCRUZGQTIzOUFEOTc4MDBCRDAzMkYgLyogV0tJVFBUaGlyZFBhcnR5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLSVRQVGhpcmRQYXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
OUZCRUZGQjIzOUFEQjE4MDBCRDAzMkYgLyogV0tJVFBGaXJzdFBhcnR5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLSVRQRmlyc3RQYXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OUZC
RUZGQzIzOUIwMTFEMDBCRDAzMkYgLyogV0tJVFBGaXJzdFBhcnR5Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV0tJVFBGaXJzdFBhcnR5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0OUZCRUZGRTIzOUIwMTJGMDBCRDAzMkYgLyogV0tJVFBUaGlyZFBhcnR5Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV0tJVFBUaGlyZFBhcnR5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0QTQxMEYzNTE5QUY3QUMzMDAyRUJBQjUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NEE0MTBGMzYxOUFGN0FDMzAwMkVCQUI1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTQxMEYzOTE5QUY3QjA0
MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjY2
Niw2ICs2Njc0LDEwIEBACiAJCQkJNTFEMTI0ODQxRTczNEFFMzAwMkIyODIwIC8qIFdLSFRUUENv
b2tpZVN0b3JlLmggKi8sCiAJCQkJNTFEMTI0ODUxRTczNEFFMzAwMkIyODIwIC8qIFdLSFRUUENv
b2tpZVN0b3JlLm1tICovLAogCQkJCTUxRDEyNDg2MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBD
b29raWVTdG9yZUludGVybmFsLmggKi8sCisJCQkJNDlGQkVGRkIyMzlBREIxODAwQkQwMzJGIC8q
IFdLSVRQRmlyc3RQYXJ0eS5oICovLAorCQkJCTQ5RkJFRkZDMjM5QjAxMUQwMEJEMDMyRiAvKiBX
S0lUUEZpcnN0UGFydHkubW0gKi8sCisJCQkJNDlGQkVGRkEyMzlBRDk3ODAwQkQwMzJGIC8qIFdL
SVRQVGhpcmRQYXJ0eS5oICovLAorCQkJCTQ5RkJFRkZFMjM5QjAxMkYwMEJEMDMyRiAvKiBXS0lU
UFRoaXJkUGFydHkubW0gKi8sCiAJCQkJMUFCNDBFRTMxQkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVu
dUl0ZW1JZGVudGlmaWVycy5tbSAqLywKIAkJCQkxQUI0MEVFNDFCRjY3N0UzMDBCQTgxQkUgLyog
V0tNZW51SXRlbUlkZW50aWZpZXJzUHJpdmF0ZS5oICovLAogCQkJCTFBNUIxQzRGMTg5ODYwNkYw
MDRGQ0Y5QiAvKiBXS05hdmlnYXRpb24uaCAqLywKQEAgLTEwNTEyLDYgKzEwNTI0LDggQEAKIAkJ
CQk2RUU4NDlDODEzNjhEOTM5MDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFjLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5OTRCQURGNDFGN0Q3ODE0MDBCNTcxRTcgLyogV0tJbnNwZWN0b3JW
aWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUxOEI1RDIxRkUxRDU1QjAwRjlG
QTI4IC8qIFdLSW5zcGVjdG9yV0tXZWJWaWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQk0OUZCRjAw
MTIzOUIxRjhEMDBCRDAzMkYgLyogV0tJVFBGaXJzdFBhcnR5LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0OUZCRjAwMDIzOUIxRjc1MDBCRDAzMkYgLyogV0tJVFBUaGlyZFBhcnR5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyREQ1RTEyOTIxMEFEQzdCMDBEQjYwMTIgLyogV0tLZXlib2FyZFNjcm9sbGlu
Z0FuaW1hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUE5RTEwQjEzMTVDRDE4MDA5RTcwMzEg
LyogV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDc5MEE5
RjFBRDcxNjQ5MDBBQjkwQjMgLyogV0tMYXlvdXRNb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTEx
OTIyLDYgKzExOTM2LDggQEAKIAkJCQkyRDkzMTE2OTIxMkY2MUIyMDAwNDRCRkUgLyogV0tDb250
ZW50Vmlldy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEOTMxMTZBMjEyRjYxQjUwMDA0NEJGRSAv
KiBXS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk2MzcyODFB
MzIxQURDNzQ0MDA5RTBERTYgLyogV0tEb3dubG9hZFByb2dyZXNzLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJNDlGQkVGRkQyMzlCMDExRDAwQkQwMzJGIC8qIFdLSVRQRmlyc3RQYXJ0eS5tbSBpbiBT
b3VyY2VzICovLAorCQkJCTQ5RkJFRkZGMjM5QjAxMkYwMEJEMDMyRiAvKiBXS0lUUFRoaXJkUGFy
dHkubW0gaW4gU291cmNlcyAqLywKIAkJCQk1Q0U5MTIwRDIyOTNDMjE5MDA1QkVDNzggLyogV0tN
YWluLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDY1N0Q4OEEyMjY2NEEyRjAwNURFODIzIC8qIFdL
T3JpZW50YXRpb25BY2Nlc3NBbGVydC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDQTI2RDgzMjE3
QUQxQjgwMEY5N0EzNSAvKiBXS1NhZmVCcm93c2luZ1dhcm5pbmcubW0gaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiYTc3
NjI4MTVlNzRiYTM5ZWY3ZWJiZDQ0NjM4M2FjMWJhZTZmNjAxLi42NjJjYWJmNTJhYWVlODAyMDk3
Y2U3MGU0YTljOWQ1YmYwMGRmMmZhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMTItMDkgIEthdGUgQ2hlbmV5
ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIFdlYktpdCBB
UEkgY2FsbHMgZm9yIElUUCBEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDQ5MzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3NjMyNzUzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEg
dGVzdCB0byBjaGVjayB0aGF0IHRoZSBJVFAgZGF0YSBzdW1tYXJ5IHdhcyBiZWluZyBwcm9wZXJs
eQorICAgICAgICBhZ2dyZWdhdGVkIGFuZCBzZW50IHRvIHRoZSBVSVByb2Nlc3MsIGFuZCB0byBt
YWtlIHN1cmUgdGhlIEFQSSB3b3JrcworICAgICAgICBhcyBleHBlY3RlZC4gQWRkZWQgaW50ZXJm
YWNlIGRlY2xhcmF0aW9ucyB0byB0aGUgZmlsZSB0byBhbGxvdyBmb3IKKyAgICAgICAgdXNlIG9m
IHRoZSBXS0lUUEZpcnN0UGFydHkgYW5kIFdLSVRQVGhpcmRQYXJ0eSBjbGFzc2VzIHdpdGhvdXQg
aGF2aW5nCisgICAgICAgIHRvIGltcG9ydCB0aGUgaGVhZGVyIGZpbGVzLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1t
OgorICAgICAgICAoVEVTVCk6CisKIDIwMTktMTItMDkgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhbiBvcHRpb24gdG8gY2FwdHVyZSBhdWRpbyBpbiBH
UFUgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tCmluZGV4IDRmZGNkYjVkYjRm
MGZmMjAyYWNjYWJjOThkNWQwMmNmNWI4OWUwYWMuLjI2N2NmZTc1NmMxMzViMzMzMjdkNDg3MDVl
MzhkZjFmNTRmNWY4MmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW0KQEAgLTQwLDYg
KzQwLDE2IEBACiAKIHN0YXRpYyBib29sIGZpbmlzaGVkTmF2aWdhdGlvbiA9IGZhbHNlOwogCitA
aW50ZXJmYWNlIFdLSVRQRmlyc3RQYXJ0eSA6IE5TT2JqZWN0CitAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSkgTlNTdHJpbmcgKmZpcnN0UGFydHlEb21haW47CitAcHJvcGVydHkgKG5vbmF0b21p
YykgQk9PTCB0aGlyZFBhcnR5U3RvcmFnZUFjY2Vzc0dyYW50ZWQ7CitAZW5kCisKK0BpbnRlcmZh
Y2UgV0tJVFBUaGlyZFBhcnR5IDogTlNPYmplY3QKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
KSBOU1N0cmluZyAqdGhpcmRQYXJ0eURvbWFpbjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
KSBOU0FycmF5PFdLSVRQRmlyc3RQYXJ0eSAqPiAqdW5kZXJGaXJzdFBhcnRpZXM7CitAZW5kCisK
IEBpbnRlcmZhY2UgRGlzYWJsZUlUUER1cmluZ05hdmlnYXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0
IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KIEBlbmQKIApAQCAtNjUwLDMgKzY2MCwxOTYgQEAgVEVT
VChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCBGbHVzaE9ic2VydmVyV2hlbldlYlBhZ2VJc0Nsb3Nl
ZEJ5SmF2YVNjcmlwdCkKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcp
OwogfQorCitURVNUKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsIEdldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhU3VtbWFyeSkKK3sKKyAgICBhdXRvICpzaGFyZWRQcm9jZXNzUG9vbCA9IFtXS1By
b2Nlc3NQb29sIF9zaGFyZWRQcm9jZXNzUG9vbF07CisgICAgYXV0byAqZGF0YVN0b3JlID0gW1dL
V2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKKworICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Cisg
ICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6IHNoYXJlZFByb2Nlc3NQb29sXTsKKyAg
ICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBkYXRhU3RvcmU7CisKKyAg
ICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKKyAgICBhdXRvIHdlYlZpZXcyID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIHdlYlZpZXczID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIFt3ZWJWaWV3MSBsb2FkSFRN
TFN0cmluZzpAIldlYktpdCBUZXN0IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0
cDovL3dlYmtpdC5vcmciXV07CisgICAgW3dlYlZpZXcxIF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hO
YXZpZ2F0aW9uXTsKKyAgICBbd2ViVmlldzIgbG9hZEhUTUxTdHJpbmc6QCJXZWJLaXQgVGVzdCIg
YmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQyLm9yZyJdXTsKKyAg
ICBbd2ViVmlldzIgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgIFt3ZWJW
aWV3MyBsb2FkSFRNTFN0cmluZzpAIldlYktpdCBUZXN0IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiaHR0cDovL3dlYmtpdDMub3JnIl1dOworICAgIFt3ZWJWaWV3MyBfdGVzdF93YWl0
Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBbZGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZDpZRVNdOworCisgICAgc3RhdGljIGJvb2wgZG9uZUZsYWcgPSBm
YWxzZTsKKyAgICBbZGF0YVN0b3JlIF9jbGVhclJlc291cmNlTG9hZFN0YXRpc3RpY3M6Xih2b2lk
KSB7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIHN0YXRpYyBib29s
IHN0YXRpc3RpY3NVcGRhdGVkID0gZmFsc2U7CisgICAgW2RhdGFTdG9yZSBfc2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazpeKFdLV2Vic2l0ZURhdGFTdG9yZSAqLCBOU1N0
cmluZyAqbWVzc2FnZSkgeworICAgICAgICBpZiAoIVttZXNzYWdlIGlzRXF1YWxUb1N0cmluZzpA
IlN0YXRpc3RpY3MgVXBkYXRlZCJdKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzdGF0
aXN0aWNzVXBkYXRlZCA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmVGbGFnKTsKKworICAgIC8vIFNlZWQgdGVzdCBkYXRhIGluIHRoZSB3ZWIgcHJv
Y2Vzcycgb2JzZXJ2ZXIuCisKKyAgICAvLyBldmlsMQorICAgIGRvbmVGbGFnID0gZmFsc2U7Cisg
ICAgW3NoYXJlZFByb2Nlc3NQb29sIF9zZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3Rp
bmdXaXRoRmlyc3RQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3Jn
Il0gdGhpcmRQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsMS5jb20iXSBz
aG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbjpOTyBjb21wbGV0aW9uSGFuZGxlcjogXigpIHsKKyAg
ICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZUZsYWcpOworCisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbc2hhcmVkUHJv
Y2Vzc1Bvb2wgX3NlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZ1dpdGhGaXJzdFBh
cnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdDIub3JnIl0gdGhpcmRQYXJ0
eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsMS5jb20iXSBzaG91bGRTY2hlZHVs
ZU5vdGlmaWNhdGlvbjpOTyBjb21wbGV0aW9uSGFuZGxlcjogXigpIHsKKyAgICAgICAgZG9uZUZs
YWcgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZs
YWcpOworCisKKyAgICAvLyBldmlsMgorICAgIGRvbmVGbGFnID0gZmFsc2U7CisgICAgW3NoYXJl
ZFByb2Nlc3NQb29sIF9zZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmdXaXRoRmly
c3RQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnIl0gdGhpcmRQ
YXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsMi5jb20iXSBzaG91bGRTY2hl
ZHVsZU5vdGlmaWNhdGlvbjpOTyBjb21wbGV0aW9uSGFuZGxlcjogXigpIHsKKyAgICAgICAgZG9u
ZUZsYWcgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZUZsYWcpOworCisKKyAgICAvLyBldmlsMworICAgIGRvbmVGbGFnID0gZmFsc2U7CisgICAgW3No
YXJlZFByb2Nlc3NQb29sIF9zZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmdXaXRo
Rmlyc3RQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnIl0gdGhp
cmRQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsMy5jb20iXSBzaG91bGRT
Y2hlZHVsZU5vdGlmaWNhdGlvbjpOTyBjb21wbGV0aW9uSGFuZGxlcjogXigpIHsKKyAgICAgICAg
ZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZUZsYWcpOworICAgIGRvbmVGbGFnID0gZmFsc2U7CisgICAgW3NoYXJlZFByb2Nlc3NQb29s
IF9zZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmdXaXRoRmlyc3RQYXJ0eTpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQyLm9yZyJdIHRoaXJkUGFydHk6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXZpbDMuY29tIl0gc2hvdWxkU2NoZWR1bGVOb3RpZmlj
YXRpb246Tk8gY29tcGxldGlvbkhhbmRsZXI6IF4oKSB7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1
ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKyAg
ICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtzaGFyZWRQcm9jZXNzUG9vbCBfc2VlZFJlc291cmNl
TG9hZFN0YXRpc3RpY3NGb3JUZXN0aW5nV2l0aEZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJodHRwOi8vd2Via2l0My5vcmciXSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiaHR0cDovL2V2aWwzLmNvbSJdIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uOk5PIGNvbXBs
ZXRpb25IYW5kbGVyOiBeKCkgeworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKyAgICBzdGF0aXN0aWNz
VXBkYXRlZCA9IGZhbHNlOworICAgIFt3ZWJWaWV3MSBsb2FkSFRNTFN0cmluZzpAIjxib2R5Pjxz
Y3JpcHQ+Y2xvc2UoKTs8L3NjcmlwdD48L2JvZHk+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiaHR0cDovL3dlYmtpdC5vcmciXV07CisgICAgW3dlYlZpZXcyIGxvYWRIVE1MU3RyaW5n
OkAiPGJvZHk+PHNjcmlwdD5jbG9zZSgpOzwvc2NyaXB0PjwvYm9keT4iIGJhc2VVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Mi5vcmciXV07CisgICAgW3dlYlZpZXczIGxv
YWRIVE1MU3RyaW5nOkAiPGJvZHk+PHNjcmlwdD5jbG9zZSgpOzwvc2NyaXB0PjwvYm9keT4iIGJh
c2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0My5vcmciXV07CisKKyAg
ICAvLyBXYWl0IGZvciB0aGUgc3RhdGlzdGljcyB0byBiZSB1cGRhdGVkIGluIHRoZSBuZXR3b3Jr
IHByb2Nlc3MuCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZzdGF0aXN0aWNzVXBkYXRl
ZCk7CisKKyAgICAvLyBDaGVjayB0aGF0IHRoZSB0aGlyZC1wYXJ0eSBldmlsMSBpcyBub3cgcmVn
aXN0ZXJlZCBhcyBzdWJyZXNvdXJjZS4KKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRh
U3RvcmUgX2lzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlckZpcnN0UGFydHk6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdIHRoaXJkUGFydHk6W05TVVJMIFVSTFdp
dGhTdHJpbmc6QCJodHRwOi8vZXZpbDEuY29tIl0gY29tcGxldGlvbkhhbmRsZXI6IF4oQk9PTCBp
c1JlZ2lzdGVyZWQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoaXNSZWdpc3RlcmVkKTsKKyAgICAg
ICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZG9uZUZsYWcpOworICAgIGRvbmVGbGFnID0gZmFsc2U7CisgICAgW2RhdGFTdG9yZSBfaXNS
ZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyRmlyc3RQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAImh0dHA6Ly93ZWJraXQyLm9yZyJdIHRoaXJkUGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJodHRwOi8vZXZpbDEuY29tIl0gY29tcGxldGlvbkhhbmRsZXI6IF4oQk9PTCBpc1JlZ2lzdGVy
ZWQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoaXNSZWdpc3RlcmVkKTsKKyAgICAgICAgZG9uZUZs
YWcgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZs
YWcpOworCisKKyAgICAvLyBDaGVjayB0aGF0IHRoZSB0aGlyZC1wYXJ0eSBldmlsMiBpcyBub3cg
cmVnaXN0ZXJlZCBhcyBzdWJyZXNvdXJjZS4KKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtk
YXRhU3RvcmUgX2lzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlckZpcnN0UGFydHk6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdIHRoaXJkUGFydHk6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJodHRwOi8vZXZpbDIuY29tIl0gY29tcGxldGlvbkhhbmRsZXI6IF4oQk9P
TCBpc1JlZ2lzdGVyZWQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoaXNSZWdpc3RlcmVkKTsKKyAg
ICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZUZsYWcpOworCisKKyAgICAvLyBDaGVjayB0aGF0IHRoZSB0aGlyZC1wYXJ0eSBl
dmlsMyBpcyBub3cgcmVnaXN0ZXJlZCBhcyBzdWJyZXNvdXJjZS4KKyAgICBkb25lRmxhZyA9IGZh
bHNlOworICAgIFtkYXRhU3RvcmUgX2lzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlckZpcnN0
UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdIHRoaXJkUGFy
dHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXZpbDMuY29tIl0gY29tcGxldGlvbkhh
bmRsZXI6IF4oQk9PTCBpc1JlZ2lzdGVyZWQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoaXNSZWdp
c3RlcmVkKTsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcpOworICAgIGRvbmVGbGFnID0gZmFsc2U7CisgICAg
W2RhdGFTdG9yZSBfaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyRmlyc3RQYXJ0eTpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQyLm9yZyJdIHRoaXJkUGFydHk6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXZpbDMuY29tIl0gY29tcGxldGlvbkhhbmRsZXI6IF4o
Qk9PTCBpc1JlZ2lzdGVyZWQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoaXNSZWdpc3RlcmVkKTsK
KyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZUZsYWcpOworICAgIGRvbmVGbGFnID0gZmFsc2U7CisgICAgW2RhdGFTdG9y
ZSBfaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyRmlyc3RQYXJ0eTpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAImh0dHA6Ly93ZWJraXQzLm9yZyJdIHRoaXJkUGFydHk6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJodHRwOi8vZXZpbDMuY29tIl0gY29tcGxldGlvbkhhbmRsZXI6IF4oQk9PTCBpc1Jl
Z2lzdGVyZWQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoaXNSZWdpc3RlcmVkKTsKKyAgICAgICAg
ZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZUZsYWcpOworCisKKyAgICAvLyBDb2xsZWN0IHRoZSBJVFAgZGF0YSBzdW1tYXJ5IHdoaWNo
IHNob3VsZCBpbmNsdWRlIGFsbCB0aGlyZCBwYXJ0aWVzIGluIHRoZQorICAgIC8vIG9yZGVyOiBb
ZXZpbDMuY29tLCBldmlsMS5jb20sIGV2aWwyLmNvbV0gc29ydGVkIGJ5IG51bWJlciBvZiBmaXJz
dCBwYXJ0aWVzCisgICAgLy8gaXQgYXBwZWFycyB1bmRlciBvciByZWRpcmVjdHMgdG8KKyAgICBk
b25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX2dldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhU3VtbWFyeTpedm9pZChOU0FycmF5PFdLSVRQVGhpcmRQYXJ0eSAqPiAqdGhpcmRQYXJ0
eURhdGEpCisgICAgeworICAgICAgICBOU0VudW1lcmF0b3IgKnRoaXJkUGFydHlEb21haW5zID0g
W3RoaXJkUGFydHlEYXRhIG9iamVjdEVudW1lcmF0b3JdOworCisgICAgICAgIC8vIGV2aWwzCisg
ICAgICAgIFdLSVRQVGhpcmRQYXJ0eSAqZXZpbDNUaGlyZFBhcnR5ID0gW3RoaXJkUGFydHlEb21h
aW5zIG5leHRPYmplY3RdOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXZpbDNUaGlyZFBhcnR5
LnRoaXJkUGFydHlEb21haW4sIEAiZXZpbDMuY29tIik7CisKKyAgICAgICAgTlNFbnVtZXJhdG9y
ICpldmlsM0VudW1lcmF0b3IgPSBbZXZpbDNUaGlyZFBhcnR5LnVuZGVyRmlyc3RQYXJ0aWVzIG9i
amVjdEVudW1lcmF0b3JdOworICAgICAgICBXS0lUUEZpcnN0UGFydHkgKmV2aWwzRmlyc3RQYXJ0
eTEgPSBbZXZpbDNFbnVtZXJhdG9yIG5leHRPYmplY3RdOworICAgICAgICBXS0lUUEZpcnN0UGFy
dHkgKmV2aWwzRmlyc3RQYXJ0eTIgPSBbZXZpbDNFbnVtZXJhdG9yIG5leHRPYmplY3RdOworICAg
ICAgICBXS0lUUEZpcnN0UGFydHkgKmV2aWwzRmlyc3RQYXJ0eTMgPSBbZXZpbDNFbnVtZXJhdG9y
IG5leHRPYmplY3RdOworCisgICAgICAgIEFTU0VSVF9UUlVFKGV2aWwzRmlyc3RQYXJ0eTEgIT0g
bmlsKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoZXZpbDNGaXJzdFBhcnR5MiAhPSBuaWwpOworICAg
ICAgICBBU1NFUlRfVFJVRShldmlsM0ZpcnN0UGFydHkzICE9IG5pbCk7CisKKyAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKGV2aWwzRmlyc3RQYXJ0eTEuZmlyc3RQYXJ0eURvbWFpbiwgQCJ3ZWJraXQy
Lm9yZyIpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXZpbDNGaXJzdFBhcnR5Mi5maXJzdFBh
cnR5RG9tYWluLCBAIndlYmtpdDMub3JnIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShldmls
M0ZpcnN0UGFydHkzLmZpcnN0UGFydHlEb21haW4sIEAid2Via2l0Lm9yZyIpOworCisgICAgICAg
IEVYUEVDVF9GQUxTRShldmlsM0ZpcnN0UGFydHkxLnRoaXJkUGFydHlTdG9yYWdlQWNjZXNzR3Jh
bnRlZCk7CisgICAgICAgIEVYUEVDVF9GQUxTRShldmlsM0ZpcnN0UGFydHkyLnRoaXJkUGFydHlT
dG9yYWdlQWNjZXNzR3JhbnRlZCk7CisgICAgICAgIEVYUEVDVF9GQUxTRShldmlsM0ZpcnN0UGFy
dHkzLnRoaXJkUGFydHlTdG9yYWdlQWNjZXNzR3JhbnRlZCk7CisKKyAgICAgICAgLy8gZXZpbDEK
KyAgICAgICAgV0tJVFBUaGlyZFBhcnR5ICpldmlsMVRoaXJkUGFydHkgPSBbdGhpcmRQYXJ0eURv
bWFpbnMgbmV4dE9iamVjdF07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShldmlsMVRoaXJkUGFy
dHkudGhpcmRQYXJ0eURvbWFpbiwgQCJldmlsMS5jb20iKTsKKworICAgICAgICBOU0VudW1lcmF0
b3IgKmV2aWwxRW51bWVyYXRvciA9IFtldmlsMVRoaXJkUGFydHkudW5kZXJGaXJzdFBhcnRpZXMg
b2JqZWN0RW51bWVyYXRvcl07CisgICAgICAgIFdLSVRQRmlyc3RQYXJ0eSAqZXZpbDFGaXJzdFBh
cnR5MT0gW2V2aWwxRW51bWVyYXRvciBuZXh0T2JqZWN0XTsKKyAgICAgICAgV0tJVFBGaXJzdFBh
cnR5ICpldmlsMUZpcnN0UGFydHkyID0gW2V2aWwxRW51bWVyYXRvciBuZXh0T2JqZWN0XTsKKwor
ICAgICAgICBBU1NFUlRfVFJVRShldmlsMUZpcnN0UGFydHkxICE9IG5pbCk7CisgICAgICAgIEFT
U0VSVF9UUlVFKGV2aWwxRmlyc3RQYXJ0eTIgIT0gbmlsKTsKKworICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoZXZpbDFGaXJzdFBhcnR5MS5maXJzdFBhcnR5RG9tYWluLCBAIndlYmtpdDIub3JnIik7
CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShldmlsMUZpcnN0UGFydHkyLmZpcnN0UGFydHlEb21h
aW4sIEAid2Via2l0Lm9yZyIpOworCisgICAgICAgIEVYUEVDVF9GQUxTRShldmlsMUZpcnN0UGFy
dHkxLnRoaXJkUGFydHlTdG9yYWdlQWNjZXNzR3JhbnRlZCk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShldmlsMUZpcnN0UGFydHkyLnRoaXJkUGFydHlTdG9yYWdlQWNjZXNzR3JhbnRlZCk7CisKKyAg
ICAgICAgLy8gZXZpbDIKKyAgICAgICAgV0tJVFBUaGlyZFBhcnR5ICpldmlsMlRoaXJkUGFydHkg
PSBbdGhpcmRQYXJ0eURvbWFpbnMgbmV4dE9iamVjdF07CisgICAgICAgIEVYUEVDVF9XS19TVFJF
UShldmlsMlRoaXJkUGFydHkudGhpcmRQYXJ0eURvbWFpbiwgQCJldmlsMi5jb20iKTsKKworICAg
ICAgICBOU0VudW1lcmF0b3IgKmV2aWwyRW51bWVyYXRvciA9IFtldmlsMlRoaXJkUGFydHkudW5k
ZXJGaXJzdFBhcnRpZXMgb2JqZWN0RW51bWVyYXRvcl07CisgICAgICAgIFdLSVRQRmlyc3RQYXJ0
eSAqZXZpbDJGaXJzdFBhcnR5MSA9IFtldmlsMkVudW1lcmF0b3IgbmV4dE9iamVjdF07CisKKyAg
ICAgICAgQVNTRVJUX1RSVUUoZXZpbDJGaXJzdFBhcnR5MSAhPSBuaWwpOworCisgICAgICAgIEVY
UEVDVF9XS19TVFJFUShldmlsMkZpcnN0UGFydHkxLmZpcnN0UGFydHlEb21haW4sIEAid2Via2l0
Lm9yZyIpOworICAgICAgICBFWFBFQ1RfRkFMU0UoZXZpbDJGaXJzdFBhcnR5MS50aGlyZFBhcnR5
U3RvcmFnZUFjY2Vzc0dyYW50ZWQpOworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07
CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385220</attachid>
            <date>2019-12-09 18:20:20 -0800</date>
            <delta_ts>2019-12-11 15:29:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204932-20191209182019.patch</filename>
            <type>text/plain</type>
            <size>65995</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY3YTZhOWY1YzdkNDM2NWM1
ODYyMjg5ZWVkODBhYjdmNTlmMGU2MjIuLjUwOWY5NTcyNzVlMjU3OTQyMDNjOWViMWRiYmNjYjlm
MGZmYjkyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTktMTItMDkgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIFdlYktp
dCBBUEkgY2FsbHMgZm9yIElUUCBEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDQ5MzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3NjMyNzUz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggZXhwb3NlcyBJVFAgZGF0YSBjYXB0dXJlZCBpbiB0aGUgbmV0d29yayBwcm9jZXNzIHRo
cm91Z2ggdGhlCisgICAgICAgIE9iamVjdGl2ZSBDIEFQSS4gVGhlIGRhdGEgaGFkIHRvIGJlIGVu
Y29kZWQgYW5kIHNlbnQgdmlhIElQQworICAgICAgICB0byB0aGUgVUlQcm9jZXNzLCBzbyB0aGlz
IHBhdGNoIGFkZHMgbmV3IGVuY29kZS9kZWNvZGUgZnVuY3Rpb25zCisgICAgICAgIGFuZCByZWxv
Y2F0ZXMgdGhlIHN0cnVjdHMgaW50byB0aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
CisgICAgICAgIGNsYXNzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZW5zdXJlVGhpcmRQYXJ0eURh
dGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpnZXRUaGly
ZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnMpOgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5
RGF0YSBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICBVcGRhdGVk
IG1lbnRpb25zIG9mIFRoaXJkUGFydHlEYXRhIHRvIGluY2x1ZGUgdGhlCisgICAgICAgIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6IGNsYXNzIHNwZWNpZmllci4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjph
Z2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgIFVwZGF0ZWQg
dGhlIGRhdGEgdG8gYmUgc2VudCB2aWEgY29tcGxldGlvbiBoYW5kbGVyIGZyb20KKyAgICAgICAg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIHNvIHRoYXQgY2FsbHMgdG8KKyAgICAgICAg
YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKCkgYXJlIGhhcHBlbmluZyBvbiBhIGJhY2tncm91bmQg
dGhyZWFkLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Z2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFTdW1tYXJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorCisg
ICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfZ2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFTdW1tYXJ5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVN0b3JlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5tbTogQWRkZWQu
CisgICAgICAgICgtW19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5IGluaXRXaXRo
RG9tYWluOmFuZFRoaXJkUGFydHlTdG9yYWdlQWNjZXNzOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkuaDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VGhpcmRQYXJ0eS5tbTogQWRkZWQuCisgICAgICAgICgtW19XS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUaGlyZFBhcnR5IGdldFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlMaXN0Ol0p
OgorICAgICAgICAoLVtfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eSBpbml0V2l0
aERvbWFpbjp1bmRlckZpcnN0UGFydGllczpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5SW50ZXJuYWwuaDogQWRkZWQu
CisgICAgICAgIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5IGFuZCBfV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eQorICAgICAgICByZXByZXNlbnQgZmlyc3QgYW5k
IHRoaXJkIHBhcnR5IGRvbWFpbnMgcmVzcGVjdGl2ZWx5IHdoaWNoIGhvbGQgSVRQCisgICAgICAg
IGRhdGEgYW5kIGFyZSBzdHJvbmdseSB0eXBlZCB0byBlbnN1cmUgdGhlIGNvcnJlY3QgZGF0YSBp
cyBiZWluZworICAgICAgICBleHBvc2VkIHZpYSBBUEkuIFRoZSBmdW5jdGlvbiBhbmQgcGFyYW1l
dGVyIG5hbWVzIGZvciBzdG9yYWdlIGFjY2VzcworICAgICAgICBzcGVjaWZ5ICJ0aGlyZCBwYXJ0
eSIgYmVjYXVzZSBlYWNoIFdLSVRQRmlyc3RQYXJ0eSBob2xkcyBkYXRhIHJlbGV2ZW50CisgICAg
ICAgIHRvIGEgc3BlY2lmaWMgdGhpcmQgcGFydHkgYW5kIHN0b3JhZ2UgYWNjZXNzIHdvdWxkIG5v
dCBtYWtlIHNlbnNlIGluCisgICAgICAgIGp1c3QgYSBmaXJzdCBwYXJ0eSBjb250ZXh0LgorCisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmdldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhU3VtbWFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Z2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFTdW1tYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorCiAyMDE5LTEyLTA5ICBUcnVpdHQgU2F2ZWxsICA8dHNhdmVsbEBhcHBsZS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1MzI5OS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4
IDU1M2UwNTJkODE3NGE2ZGUzNDFiMzNiNWQ5OTUzNWNhYTA0Y2ZkYTAuLjkxYjA5NTVmNGI5MDgy
OGRlMTExMmZiM2FjOWM4OTQ1Y2Q0MmQyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtNzg2LDcgKzc4Niw3IEBAIHN0
YXRpYyBTUUxpdGVTdGF0ZW1lbnQgbWFrZU1lZGlhbldpdGhVSVF1ZXJ5KFNRTGl0ZURhdGFiYXNl
JiBkYXRhYmFzZSkKICAgICByZXR1cm4gU1FMaXRlU3RhdGVtZW50KGRhdGFiYXNlLCBtYWtlU3Ry
aW5nKCJTRUxFQ1QgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgRlJPTSBPYnNlcnZlZERv
bWFpbnMgSU5ORVIgSk9JTiAoU0VMRUNUICIsIGpvaW5TdWJTdGF0aXN0aWNzRm9yU29ydGluZygp
LCAiKSBhcyBxIE9OIE9ic2VydmVkRG9tYWlucy5kb21haW5JRCA9IHEuZG9tYWluSUQgTElNSVQg
MSBPRkZTRVQgPyIpKTsKIH0KIAotVmVjdG9yPFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJz
dFBhcnR5PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0VGhpcmRQYXJ0
eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHVuc2lnbmVkIHRoaXJkUGFydHlEb21h
aW5JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRoaXJkUGFydHlEb21haW4pIGNvbnN0CitW
ZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNw
ZWNpZmljRmlyc3RQYXJ0eT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omdl
dFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucyh1bnNpZ25lZCB0aGly
ZFBhcnR5RG9tYWluSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0aGlyZFBhcnR5RG9tYWlu
KSBjb25zdAogewogICAgIGlmIChtX2dldEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQuYmluZElu
dCgxLCB0aGlyZFBhcnR5RG9tYWluSUQpICE9IFNRTElURV9PSwogICAgICAgICB8fCBtX2dldEFs
bFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQuYmluZEludCgyLCB0aGlyZFBhcnR5RG9tYWluSUQpICE9
IFNRTElURV9PSwpAQCAtNzk0LDEwICs3OTQsMTAgQEAgVmVjdG9yPFRoaXJkUGFydHlEYXRhRm9y
U3BlY2lmaWNGaXJzdFBhcnR5PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZToK
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpnZXRUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURv
bWFpbiwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9Ci0gICAgVmVjdG9yPFRo
aXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiB0aGlyZFBhcnR5RGF0YUZvclNwZWNp
ZmljRmlyc3RQYXJ0eURvbWFpbnM7CisgICAgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IHRoaXJkUGFydHlE
YXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWluczsKICAgICB3aGlsZSAobV9nZXRBbGxTdWJT
dGF0aXN0aWNzU3RhdGVtZW50LnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CiAgICAgICAgIFJlZ2lz
dHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVj
a2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKGdldERvbWFpblN0cmluZ0Zyb21E
b21haW5JRChtX2dldEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApKSk7
Ci0gICAgICAgIHRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucy5hcHBl
bmRJZk5vdENvbnRhaW5zKFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5IHsgZmly
c3RQYXJ0eURvbWFpbiwgaGFzU3RvcmFnZUFjY2VzcyhmaXJzdFBhcnR5RG9tYWluLCB0aGlyZFBh
cnR5RG9tYWluKSB9KTsKKyAgICAgICAgdGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFy
dHlEb21haW5zLmFwcGVuZElmTm90Q29udGFpbnMoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSB7IGZpcnN0UGFydHlEb21h
aW4sIGhhc1N0b3JhZ2VBY2Nlc3MoZmlyc3RQYXJ0eURvbWFpbiwgdGhpcmRQYXJ0eURvbWFpbikg
fSk7CiAgICAgfQogICAgIHJlc2V0U3RhdGVtZW50KG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRl
bWVudCk7CiAgICAgcmV0dXJuIHRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9t
YWluczsKQEAgLTgwOCwxMSArODA4LDExIEBAIHN0YXRpYyBib29sIGhhc0JlZW5UaGlyZFBhcnR5
KHVuc2lnbmVkIHRpbWVzVW5kZXJGaXJzdFBhcnR5KQogICAgIHJldHVybiB0aW1lc1VuZGVyRmly
c3RQYXJ0eSA+IDA7CiB9CiAKLVZlY3RvcjxUaGlyZFBhcnR5RGF0YT4gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YSgpIGNvbnN0CitW
ZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0
YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBWZWN0
b3I8VGhpcmRQYXJ0eURhdGE+IHRoaXJkUGFydHlEYXRhTGlzdDsKKyAgICBWZWN0b3I8V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gdGhpcmRQYXJ0eURhdGFM
aXN0OwogICAgIFNRTGl0ZVN0YXRlbWVudCBzb3J0ZWRTdGF0aXN0aWNzKG1fZGF0YWJhc2UsIG1h
a2VTdHJpbmcoIlNFTEVDVCAiLCBqb2luU3ViU3RhdGlzdGljc0ZvclNvcnRpbmcoKSkpOwogICAg
IGlmIChzb3J0ZWRTdGF0aXN0aWNzLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwg
c29ydGVkU3RhdGlzdGljcy5iaW5kVGV4dCgxLCAiJSIpCkBAIC04MjUsNyArODI1LDcgQEAgVmVj
dG9yPFRoaXJkUGFydHlEYXRhPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
YWdncmVnYXRlZFRoaXJkUGFydHkKICAgICAgICAgaWYgKGhhc0JlZW5UaGlyZFBhcnR5KHNvcnRl
ZFN0YXRpc3RpY3MuZ2V0Q29sdW1uSW50KDEpKSkgewogICAgICAgICAgICAgYXV0byB0aGlyZFBh
cnR5RG9tYWluSUQgPSBzb3J0ZWRTdGF0aXN0aWNzLmdldENvbHVtbkludCgwKTsKICAgICAgICAg
ICAgIGF1dG8gdGhpcmRQYXJ0eURvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRD
cmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFp
bklEKHRoaXJkUGFydHlEb21haW5JRCkpOwotICAgICAgICAgICAgdGhpcmRQYXJ0eURhdGFMaXN0
LmFwcGVuZChUaGlyZFBhcnR5RGF0YSB7IHRoaXJkUGFydHlEb21haW4sIGdldFRoaXJkUGFydHlE
YXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucyh0aGlyZFBhcnR5RG9tYWluSUQsIHRoaXJk
UGFydHlEb21haW4pIH0pOworICAgICAgICAgICAgdGhpcmRQYXJ0eURhdGFMaXN0LmFwcGVuZChX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhIHsgdGhpcmRQYXJ0
eURvbWFpbiwgZ2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHRo
aXJkUGFydHlEb21haW5JRCwgdGhpcmRQYXJ0eURvbWFpbikgfSk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgcmV0dXJuIHRoaXJkUGFydHlEYXRhTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKaW5kZXggN2FkODYxNWY1YTI3MmM2ZmZj
NTZkZWFlNTJhZWYyYmU2ZWE2ZGI3MS4uNzdlOWY4ZjcxM2EzZTMzMTAwM2VlOWJmYWI4MWI5MWE2
NzU1NjhkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICBib29sIGlzRW1wdHkoKSBj
b25zdCBvdmVycmlkZTsKIAotICAgIFZlY3RvcjxUaGlyZFBhcnR5RGF0YT4gYWdncmVnYXRlZFRo
aXJkUGFydHlEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9yPFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+IGFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0
YSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlQ29va2llQmxvY2tpbmcoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgY2xhc3NpZnlQcmV2
YWxlbnRSZXNvdXJjZXMoKSBvdmVycmlkZTsKQEAgLTEzOSw3ICsxMzksNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgb3BlbklUUERhdGFiYXNlKCk7CiAgICAgYm9vbCBpc0NvcnJlY3RUYWJsZVNjaGVt
YSgpOwogICAgIGJvb2wgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNv
bnN0IFN1YkZyYW1lRG9tYWluJikgY29uc3Q7Ci0gICAgVmVjdG9yPFRoaXJkUGFydHlEYXRhRm9y
U3BlY2lmaWNGaXJzdFBhcnR5PiBnZXRUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0
eURvbWFpbnModW5zaWduZWQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CisgICAg
VmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JT
cGVjaWZpY0ZpcnN0UGFydHk+IGdldFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5
RG9tYWlucyh1bnNpZ25lZCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKICAgICB2
b2lkIG9wZW5BbmREcm9wT2xkRGF0YWJhc2VJZk5lY2Vzc2FyeSgpOwogICAgIFN0cmluZyBnZXRE
b21haW5TdHJpbmdGcm9tRG9tYWluSUQodW5zaWduZWQpIGNvbnN0OwogICAgIFN0cmluZyBnZXRT
dWJTdGF0aXN0aWNTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJikgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IDgxOTI4NTM4
YWQxMjUwM2VmMmZmZWVmMDU3NWNkZDg0OGViMzJkNTkuLjgyZTRiMDMzZDM3MmZmZDU2MmMyNjkz
NWI1ZGE5OTEzYmViM2QxODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuY3BwCkBAIC0xMDMsMTUgKzEwMywxNSBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Y2FsY3VsYXRlQW5kU3VibWl0VGVsZW1ldHJ5KCkg
Y29uc3QKICAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeTo6Y2FsY3Vs
YXRlQW5kU3VibWl0KCp0aGlzKTsKIH0KIAotc3RhdGljIHZvaWQgZW5zdXJlVGhpcmRQYXJ0eURh
dGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW4oVmVjdG9yPFRoaXJkUGFydHlEYXRhRm9yU3Bl
Y2lmaWNGaXJzdFBhcnR5PiYgdGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21h
aW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBib29sIHRoaXJk
UGFydHlIYXNTdG9yYWdlQWNjZXNzKQorc3RhdGljIHZvaWQgZW5zdXJlVGhpcmRQYXJ0eURhdGFG
b3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW4oVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+JiB0aGlyZFBhcnR5
RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGZpcnN0UGFydHlEb21haW4sIGJvb2wgdGhpcmRQYXJ0eUhhc1N0b3JhZ2VBY2Nlc3MpCiB7Ci0g
ICAgVGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHkgdGhpcmRQYXJ0eURhdGFGb3JT
cGVjaWZpY0ZpcnN0UGFydHkgeyBmaXJzdFBhcnR5RG9tYWluLCB0aGlyZFBhcnR5SGFzU3RvcmFn
ZUFjY2VzcyB9OworICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0
eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHkgdGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0
UGFydHkgeyBmaXJzdFBhcnR5RG9tYWluLCB0aGlyZFBhcnR5SGFzU3RvcmFnZUFjY2VzcyB9Owog
ICAgIHRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWluLmFwcGVuZElmTm90
Q29udGFpbnModGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHkpOwogfQogCi1zdGF0
aWMgVmVjdG9yPFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBnZXRUaGlyZFBh
cnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnMoY29uc3QgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyYgdGhpcmRQYXJ0eVN0YXRpc3RpYykKK3N0YXRpYyBWZWN0b3I8V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4g
Z2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKGNvbnN0IFJlc291
cmNlTG9hZFN0YXRpc3RpY3MmIHRoaXJkUGFydHlTdGF0aXN0aWMpCiB7Ci0gICAgVmVjdG9yPFRo
aXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiB0aGlyZFBhcnR5RGF0YUZvclNwZWNp
ZmljRmlyc3RQYXJ0eURvbWFpbnM7CisgICAgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IHRoaXJkUGFydHlE
YXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWluczsKIAogICAgIGZvciAoYXV0byBmaXJzdFBh
cnR5RG9tYWluIDogdGhpcmRQYXJ0eVN0YXRpc3RpYy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21h
aW5zKQogICAgICAgICBlbnN1cmVUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURv
bWFpbih0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnMsIGZpcnN0UGFy
dHlEb21haW4sIHRoaXJkUGFydHlTdGF0aXN0aWMuc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVE
b21haW5zLmNvbnRhaW5zKGZpcnN0UGFydHlEb21haW4pKTsKQEAgLTEzMCwxNCArMTMwLDE0IEBA
IHN0YXRpYyBib29sIGhhc0JlZW5UaGlyZFBhcnR5KGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MmIHN0YXRpc3RpYykKICAgICAgICAgfHwgIXN0YXRpc3RpYy5zdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c1RvLmlzRW1wdHkoKTsKIH0KIAotVmVjdG9yPFRoaXJkUGFydHlEYXRhPiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YSgpIGNv
bnN0CitWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0
YT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjphZ2dyZWdhdGVkVGhpcmRQYXJ0
eURhdGEoKSBjb25zdAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAg
VmVjdG9yPFRoaXJkUGFydHlEYXRhPiB0aGlyZFBhcnR5RGF0YUxpc3Q7CisgICAgVmVjdG9yPFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+IHRoaXJkUGFydHlE
YXRhTGlzdDsKICAgICBmb3IgKGF1dG8mIHN0YXRpc3RpYyA6IG1fcmVzb3VyY2VTdGF0aXN0aWNz
TWFwLnZhbHVlcygpKSB7CiAgICAgICAgIGlmIChoYXNCZWVuVGhpcmRQYXJ0eShzdGF0aXN0aWMp
KQotICAgICAgICAgICAgdGhpcmRQYXJ0eURhdGFMaXN0LmFwcGVuZChUaGlyZFBhcnR5RGF0YSB7
IHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbiwgZ2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZp
Y0ZpcnN0UGFydHlEb21haW5zKHN0YXRpc3RpYykgfSk7CisgICAgICAgICAgICB0aGlyZFBhcnR5
RGF0YUxpc3QuYXBwZW5kKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0
eURhdGEgeyBzdGF0aXN0aWMucmVnaXN0cmFibGVEb21haW4sIGdldFRoaXJkUGFydHlEYXRhRm9y
U3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucyhzdGF0aXN0aWMpIH0pOwogICAgIH0KICAgICBzdGQ6
OnNvcnQodGhpcmRQYXJ0eURhdGFMaXN0LnJiZWdpbigpLCB0aGlyZFBhcnR5RGF0YUxpc3QucmVu
ZCgpKTsKICAgICByZXR1cm4gdGhpcmRQYXJ0eURhdGFMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCmluZGV4IDliY2E5MDMwYzU2ZTdkYzIz
MzFkOTYwOTNlNzQ3MTU1NzYwODY3N2EuLjBiMGU2ZDgwNTZkYjA2YTBjOGM1NTYxNDgyMDczMWIx
NTkxMzNkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICBib29sIGlzRW1wdHkoKSBjb25z
dCBvdmVycmlkZTsKIAotICAgIFZlY3RvcjxUaGlyZFBhcnR5RGF0YT4gYWdncmVnYXRlZFRoaXJk
UGFydHlEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+IGFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YSgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFdl
YkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNvdXJjZVN0YXRpc3RpY3NNYXA7IH0KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpL
ZXllZEVuY29kZXI+IGNyZWF0ZUVuY29kZXJGcm9tRGF0YSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IGFlM2M4ZWVmOGE5OTU1ZDY2MDE3OTlj
OWJhZjM5YzdhNDhiNjc5ZGIuLjdkYWRmNGRiODg3MzUyYWNmOWUxZWY1ZjQwMDc0ZmFlZWFjMDNh
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTk4LDcg
Kzk4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3QgPSAw
OwotICAgIHZpcnR1YWwgVmVjdG9yPFRoaXJkUGFydHlEYXRhPiBhZ2dyZWdhdGVkVGhpcmRQYXJ0
eURhdGEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gYWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKCkg
Y29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvb2tpZUJsb2NraW5nKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOwogICAgIHZvaWQgdXBkYXRlQ29va2llQmxvY2tp
bmdGb3JEb21haW5zKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggZDQ1ODZkNWEwODgxMGRhY2E2MzYwMDZkZDBi
MGFkNGU5YjZhMjhiYy4uMGE5NDQwNDU4ZDYyNmMwYmY2OWEyZWJjYzNjMjQ2Y2YyMWNiMTNlZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAg
LTExNTIsOSArMTE1MiwyMiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
bm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCh1bnNpZwogICAgICAgICBjb25z
dF9jYXN0PFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSo+KHRoaXMpLT5uZXR3b3JrU2Vz
c2lvbigpLT5ub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKG51bWJlck9mUHJl
dmFsZW50UmVzb3VyY2VzLCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJh
Y3Rpb24sIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwg
dG9wUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVy
YWN0aW9uLCBtZWRpYW5EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25QcmV2YWxlbnRSZXNvdXJjZVdp
dGhVc2VySW50ZXJhY3Rpb24sIHRvcDNOdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVSSwg
dG9wM01lZGlhblN1YkZyYW1lV2l0aG91dFVJLCB0b3AzTWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0
VUksIHRvcDNNZWRpYW5VbmlxdWVSZWRpcmVjdHNXaXRob3V0VUksIHRvcDNNZWRpYW5EYXRhUmVj
b3Jkc1JlbW92ZWRXaXRob3V0VUkpOwogfQogCi1WZWN0b3I8VGhpcmRQYXJ0eURhdGE+IFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKCkKK3Zv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphZ2dyZWdhdGVkVGhpcmRQYXJ0eURh
dGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
cmV0dXJuIG1fc3RhdGlzdGljc1N0b3JlLT5hZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoKTsKKyAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgcG9zdFRhc2soW3RoaXMsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSAgewor
ICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKSB7CisgICAgICAgICAgICBwb3N0VGFza1Jl
cGx5KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBWZWN0b3I8
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gdGhpcmRQYXJ0
eURhdGEgPSBtX3N0YXRpc3RpY3NTdG9yZS0+YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKCk7Cisg
ICAgICAgIHBvc3RUYXNrUmVwbHkoW3RoaXJkUGFydHlEYXRhID0gV1RGTW92ZSh0aGlyZFBhcnR5
RGF0YSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHRoaXJkUGFy
dHlEYXRhKSk7CisgICAgICAgIH0pOworICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCBj
NTkxZmMyZTNjOTA4NmMyMDU4YWI0NzVjNmQyMzRhNjM0NGY5MTU3Li4yZTViNDRmZmFkNWY0ZmIz
YmE4MDZmYzQ3MjZiNTg1NDZkNzU5ZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0yNyw2ICsyNyw5IEBACiAKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQogCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNs
dWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiRW5jb2Rlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VB
Y2Nlc3NTdGF0dXMuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCkBAIC03OCw2ICs4MSwzMCBAQCBzdHJ1Y3QgUmVnaXN0
cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgewogICAgIFJlZ2lzdHJhYmxlRG9tYWluc1Rv
QmxvY2tDb29raWVzRm9yIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgZG9tYWluc1Rv
QmxvY2tBbmREZWxldGVDb29raWVzRm9yLmlzb2xhdGVkQ29weSgpLCBkb21haW5zVG9CbG9ja0J1
dEtlZXBDb29raWVzRm9yLmlzb2xhdGVkQ29weSgpLCBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlv
bkFzRmlyc3RQYXJ0eS5pc29sYXRlZENvcHkoKSB9OyB9CiB9OwogCitjbGFzcyBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpN
YWluPiB7CitwdWJsaWM6CisgICAgdXNpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFdlYkNv
cmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M7CisgICAgdXNpbmcgUmVnaXN0cmFibGVEb21haW4g
PSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKKyAgICB1c2luZyBUb3BGcmFtZURvbWFpbiA9
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOworICAgIHVzaW5nIFN1YkZyYW1lRG9tYWluID0g
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CisgICAgdXNpbmcgU3ViUmVzb3VyY2VEb21haW4g
PSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKKyAgICB1c2luZyBSZWRpcmVjdERvbWFpbiA9
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOworICAgIHVzaW5nIFJlZGlyZWN0ZWRGcm9tRG9t
YWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CisgICAgdXNpbmcgUmVkaXJlY3RlZFRv
RG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CisgICAgdXNpbmcgTmF2aWdhdGVk
RnJvbURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOworICAgIHVzaW5nIE5hdmln
YXRlZFRvRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CisgICAgdXNpbmcgRG9t
YWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Cisg
ICAgdXNpbmcgT3BlbmVyRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CisgICAg
dXNpbmcgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgPSBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZDsKKyAgICB1c2luZyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gPSBXZWJDb3Jl
OjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd247CisKKyAgICBzdGF0aWMgUmVmPFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vz
c2lvbiwgY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBTaG91
bGRJbmNsdWRlTG9jYWxob3N0IHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUobmV0
d29ya1Nlc3Npb24sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHNob3VsZEluY2x1
ZGVMb2NhbGhvc3QpKTsKKyAgICB9CisKKyAgICB+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlKCk7CisKIHN0cnVjdCBUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSB7CiAg
ICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZmlyc3RQYXJ0eURvbWFpbjsKICAgICBib29s
IHN0b3JhZ2VBY2Nlc3NHcmFudGVkOwpAQCAtODcsNiArMTE0LDI1IEBAIHN0cnVjdCBUaGlyZFBh
cnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSB7CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5n
KCJIYXMgYmVlbiBncmFudGVkIHN0b3JhZ2UgYWNjZXNzIHVuZGVyICIsIGZpcnN0UGFydHlEb21h
aW4uc3RyaW5nKCksICI6ICIsIHN0b3JhZ2VBY2Nlc3NHcmFudGVkID8gJzEnIDogJzAnKTsKICAg
ICB9CiAKKyAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAg
eworICAgICAgICBlbmNvZGVyIDw8IGZpcnN0UGFydHlEb21haW47CisgICAgICAgIGVuY29kZXIg
PDwgc3RvcmFnZUFjY2Vzc0dyYW50ZWQ7CisgICAgfQorCisgICAgc3RhdGljIE9wdGlvbmFsPFRo
aXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyKQorICAgIHsKKyAgICAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZGVjb2Rl
ZERvbWFpbjsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZWNvZGVkRG9tYWluKSkKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgYm9vbCBkZWNvZGVkU3Rv
cmFnZUFjY2VzczsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZWNvZGVkU3RvcmFnZUFj
Y2VzcykpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVy
biB7eyBkZWNvZGVkRG9tYWluLCBkZWNvZGVkU3RvcmFnZUFjY2VzcyB9fTsKKyAgICB9CisKICAg
ICBib29sIG9wZXJhdG9yPT0oVGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHkgY29u
c3Qgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gZmlyc3RQYXJ0eURvbWFpbiA9
PSBvdGhlci5maXJzdFBhcnR5RG9tYWluICYmIHN0b3JhZ2VBY2Nlc3NHcmFudGVkID09IG90aGVy
LnN0b3JhZ2VBY2Nlc3NHcmFudGVkOwpAQCAtMTEyLDM1ICsxNTgsMzEgQEAgc3RydWN0IFRoaXJk
UGFydHlEYXRhIHsKICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKICAg
ICB9CiAKLSAgICBib29sIG9wZXJhdG9yPChjb25zdCBUaGlyZFBhcnR5RGF0YSAmb3RoZXIpIGNv
bnN0CisgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsK
LSAgICAgICAgcmV0dXJuIHVuZGVyRmlyc3RQYXJ0aWVzLnNpemUoKSA8IG90aGVyLnVuZGVyRmly
c3RQYXJ0aWVzLnNpemUoKTsKKyAgICAgICAgZW5jb2RlciA8PCB0aGlyZFBhcnR5RG9tYWluOwor
ICAgICAgICBlbmNvZGVyIDw8IHVuZGVyRmlyc3RQYXJ0aWVzOwogICAgIH0KLX07CiAKLWNsYXNz
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUsIFdURjo6RGVzdHJ1Y3Rp
b25UaHJlYWQ6Ok1haW4+IHsKLXB1YmxpYzoKLSAgICB1c2luZyBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczsKLSAgICB1c2luZyBSZWdpc3Ry
YWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIFRvcEZy
YW1lRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgU3ViRnJh
bWVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBTdWJSZXNv
dXJjZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIFJlZGly
ZWN0RG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgUmVkaXJl
Y3RlZEZyb21Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBS
ZWRpcmVjdGVkVG9Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2lu
ZyBOYXZpZ2F0ZWRGcm9tRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAg
dXNpbmcgTmF2aWdhdGVkVG9Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAg
ICB1c2luZyBEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbjsKLSAgICB1c2luZyBPcGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbjsKLSAgICB1c2luZyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA9IFdlYkNvcmU6OlN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkOwotICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93
biA9IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjsKLQotICAgIHN0YXRpYyBS
ZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24m
IG5ldHdvcmtTZXNzaW9uLCBjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnksIFNob3VsZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCkKKyAg
ICBzdGF0aWMgT3B0aW9uYWw8VGhpcmRQYXJ0eURhdGE+IGRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUobmV0d29ya1Nlc3Npb24sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnksIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpKTsKKyAgICAgICAgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gZGVjb2RlZERvbWFpbjsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkZWNvZGVkRG9tYWluKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICAgICAgT3B0aW9uYWw8VmVjdG9yPFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5
Pj4gZGVjb2RlZEZpcnN0UGFydGllczsKKyAgICAgICAgZGVjb2RlciA+PiBkZWNvZGVkRmlyc3RQ
YXJ0aWVzOworICAgICAgICBpZiAoIWRlY29kZWRGaXJzdFBhcnRpZXMpCisgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7eyBkZWNvZGVkRG9tYWluLCBX
VEZNb3ZlKCpkZWNvZGVkRmlyc3RQYXJ0aWVzKSB9fTsKICAgICB9CiAKLSAgICB+V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlKCk7CisgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgVGhpcmRQ
YXJ0eURhdGEgJm90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHVuZGVyRmlyc3RQ
YXJ0aWVzLnNpemUoKSA8IG90aGVyLnVuZGVyRmlyc3RQYXJ0aWVzLnNpemUoKTsKKyAgICB9Cit9
OwogCiAgICAgdm9pZCBkaWREZXN0cm95TmV0d29ya1Nlc3Npb24oKTsKIApAQCAtMjM1LDcgKzI3
Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQo
VmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpOwogICAgIHZvaWQgcmVx
dWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3Mm
JiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVySUQsIE9wZW5lckRvbWFpbiYmKTsKLSAg
ICBWZWN0b3I8VGhpcmRQYXJ0eURhdGE+IGFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YSgpOworICAg
IHZvaWQgYWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+JiYpPiYm
KTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJpbmcmLCBTaG91bGRJbmNsdWRlTG9jYWxob3N0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
aW5kZXggOTMyMzU3ZTk2NmFlYTMzYjczMDY0MTk3ZWEzZjM5YjI0ZTYyNjdiMS4uNGJiZWE3MjQy
ZjYyOGE2YjNiNjM3Njk0M2FhYWZkZDlkMDFiYTNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTc1MCw2ICs3NTAsMTkgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQKICAgICB9CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6Omdl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3Jr
U2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgICAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
eyB9KTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICB9Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
aW5kZXggNGQ0YWRkMDBjZTM4NmMwN2VkODc2NjQ0YWVmZTQ3ODE5OTVlZWYwMi4uNWJjMTY1YWU2
M2YwYTU0MzU4NzdmYmY2NzM1MDZlMDJlZDZkM2MxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjMxLDYgKzIzMSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpT
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldFBh
cmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50
KFBBTDo6U2Vzc2lvbklELCBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgU2hvdWxk
R3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAg
IHZvaWQgZ2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFTdW1tYXJ5KFBBTDo6U2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OlRoaXJkUGFydHlEYXRhPiYmKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNvb2tpZUJs
b2NraW5nVXBkYXRlKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc3Vi
bWl0VGVsZW1ldHJ5KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4KaW5kZXggZWUwODZjMGNkMTY3NmU1MGQ3OGVkYTk2MjAxY2MzNzFhYzQy
ZmM4YS4uMmFkOTg4MWZjZjdlYTg0NGQ4MmJjNzdmYWMwN2Y0OTNkN2M0ZGU1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluCkBAIC0xMTMsNiArMTEzLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogICAgIFNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2Vz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzKSAtPiAoKSBBc3luYwog
ICAgIFNldEdyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFpbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQpIC0+
ICgpIEFzeW5jCiAgICAgU2V0VXNlSVRQRGF0YWJhc2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBib29sIHZhbHVlKSAtPiAoKSBBc3luYworICAgIEdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhU3VtbWFyeShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChWZWN0b3I8V2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiB0aGlyZFBhcnR5
RGF0YSkgQXN5bmMKICAgICBTZXRHcmFuZGZhdGhlcmluZ1RpbWUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBTZWNvbmRzIHNlY29uZHMpIC0+ICgpIEFzeW5jCiAgICAgU2V0TWF4U3RhdGlzdGlj
c0VudHJpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBtYXhpbXVtRW50cnlD
b3VudCkgLT4gKCkgQXN5bmMKICAgICBTZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1Jl
bW92YWwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMpIC0+ICgpIEFz
eW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZS5tbQppbmRleCA0ODQ2N2I3YTgzMzIxMGIyOWEwYWVkMGVhYjQ0YTA4MDJm
M2Y4ZTM2Li5mMWVjM2U4MzZjYzI1ZjUxNmE2ZjcwNTczYzI0MjBmNDZlNzk5NTg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmUubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
V0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaCIKIAorI2ltcG9ydCAiQVBJRGljdGlvbmFyeS5o
IgogI2ltcG9ydCAiQVBJU3RyaW5nLmgiCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZURpc3Bvc2l0aW9uQ29jb2EuaCIKICNpbXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNr
ZXIuaCIKQEAgLTM5LDYgKzQwLDcgQEAKICNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oIgogI2ltcG9ydCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5o
IgogI2ltcG9ydCAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgorI2ltcG9ydCAiX1dLUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLV2Vic2l0ZURh
dGFTdG9yZURlbGVnYXRlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NyZWRlbnRpYWwuaD4KQEAgLTUx
OCw2ICs1MjAsMjIgQEAgLSAodm9pZClfY2xlYXJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOih2b2lk
ICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogI2VuZGlmCiB9CiAKKy0gKHZvaWQpX2dldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeToodm9pZCAoXikoTlNBcnJheTxfV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eSAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgorewor
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgX3dlYnNpdGVEYXRhU3Rv
cmUtPmdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeShbY29tcGxldGlvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYmIHRoaXJkUGFydHlE
b21haW5zKSB7CisgICAgICAgIE5TTXV0YWJsZUFycmF5PF9XS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUaGlyZFBhcnR5ICo+ICphcGlUaGlyZFBhcnRpZXMgPSBbW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhDYXBhY2l0eTp0aGlyZFBhcnR5RG9tYWlucy5zaXplKCldIGF1dG9yZWxlYXNl
XTsKKyAgICAgICAgZm9yIChhdXRvJiB0aGlyZFBhcnR5IDogdGhpcmRQYXJ0eURvbWFpbnMpIHsK
KyAgICAgICAgICAgIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5ICp3a1RoaXJk
UGFydHkgPSBbW19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5IGFsbG9jXSBpbml0
V2l0aERvbWFpbjp0aGlyZFBhcnR5LnRoaXJkUGFydHlEb21haW4uc3RyaW5nKCkgdW5kZXJGaXJz
dFBhcnRpZXM6dGhpcmRQYXJ0eS51bmRlckZpcnN0UGFydGllc107CisgICAgICAgICAgICBbYXBp
VGhpcmRQYXJ0aWVzIGFkZE9iamVjdDp3a1RoaXJkUGFydHldOworICAgICAgICB9CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYXBpVGhpcmRQYXJ0aWVzKSk7CisgICAgfSk7Cisj
ZWxzZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisjZW5kaWYKK30KKwogLSAodm9pZClf
aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyRmlyc3RQYXJ0eTooTlNVUkwgKilmaXJzdFBh
cnR5VVJMIHRoaXJkUGFydHk6KE5TVVJMICopdGhpcmRQYXJ0eVVSTCBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKaW5kZXggNzBmYzE0
NjU3M2QyM2VhNGU1MGIzOWJlY2M1ODMyYjIyYTMyMDIyZC4uNDkxYjUyYzA2ODJjN2I4MWY2YTVk
NjA2N2JhNTdkNTliYTAyNzg2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC0yOSw2
ICsyOSw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIEBjbGFzcyBfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbjsKIEBjbGFzcyBXS1dlYlZpZXc7CitAY2xhc3MgX1dLUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHk7CiAKIEBwcm90b2NvbCBfV0tXZWJzaXRlRGF0YVN0
b3JlRGVsZWdhdGU7CiAKQEAgLTcxLDYgKzcyLDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUlu
dGVnZXIsIF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRjaE9wdGlvbnMpIHsKIC0gKHZvaWQpX2xvZ1Vz
ZXJJbnRlcmFjdGlvbjooTlNVUkwgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV9zZXRQcmV2YWxlbnREb21haW46KE5TVVJM
ICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFu
ZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKIC0gKHZvaWQp
X2dldElzUHJldmFsZW50RG9tYWluOihOU1VSTCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
MC4xNSksIGlvcygxMy4wKSk7CistICh2b2lkKV9nZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YVN1bW1hcnk6KHZvaWQgKF4pKE5TQXJyYXk8X1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJk
UGFydHkgKj4gKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4x
NSksIGlvcygxMy4wKSk7CiAtICh2b2lkKV9jbGVhclByZXZhbGVudERvbWFpbjooTlNVUkwgKilk
b21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVy
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAt
ICh2b2lkKV9jbGVhclJlc291cmNlTG9hZFN0YXRpc3RpY3M6KHZvaWQgKF4pKHZvaWQpKWNvbXBs
ZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CiAtICh2b2lkKV9pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXJGaXJzdFBh
cnR5OihOU1VSTCAqKWZpcnN0UGFydHlVUkwgdGhpcmRQYXJ0eTooTlNVUkwgKil0aGlyZFBhcnR5
VVJMIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NGaXJzdFBhcnR5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTY1
OThiNmE1M2QwMWIyZmQ0YzY3ZGZiMjViNTc2MGI3ODE4OTY5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NGaXJzdFBhcnR5LmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK05TX0FTU1VNRV9O
T05OVUxMX0JFR0lOCisKK0BpbnRlcmZhY2UgX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0
UGFydHkgOiBOU09iamVjdAorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEb21haW46KE5TU3Ry
aW5nICopZG9tYWluIGFuZFRoaXJkUGFydHlTdG9yYWdlQWNjZXNzOihCT09MKXN0b3JhZ2VBY2Nl
c3M7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqZmlyc3RQYXJ0eURv
bWFpbjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHRoaXJkUGFydHlTdG9yYWdlQWNjZXNz
R3JhbnRlZDsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Rmlyc3RQYXJ0eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OWQ4NWQyOGI2OGI0
MjAwYzJiMzhiYzNhMDVkNWQ1NTUyOWIyZjkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBh
cnR5Lm1tCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIl9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5LmgiCisKK0BpbXBs
ZW1lbnRhdGlvbiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eQorCistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhEb21haW46KE5TU3RyaW5nICopZG9tYWluIGFuZFRoaXJkUGFydHlT
dG9yYWdlQWNjZXNzOihCT09MKXN0b3JhZ2VBY2Nlc3MKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1
cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHNlbGYuZmlyc3RQYXJ0eURv
bWFpbiA9IGRvbWFpbjsKKyAgICBzZWxmLnRoaXJkUGFydHlTdG9yYWdlQWNjZXNzR3JhbnRlZCA9
IHN0b3JhZ2VBY2Nlc3M7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK0BlbmQKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NUaGlyZFBhcnR5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMWExNTQyNGY5
ZWQxNjJiNGI4NmRmYmM1ODNhZjBiNWNjNmFkMmZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGly
ZFBhcnR5LmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIl9XS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5LmgiCisKK0BpbnRlcmZhY2UgX1dLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1RoaXJkUGFydHkgOiBOU09iamVjdAorCitAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSkgTlNTdHJpbmcgKnRoaXJkUGFydHlEb21haW47CitAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSkgTlNBcnJheTxfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eSAqPiAq
dW5kZXJGaXJzdFBhcnRpZXM7CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVGhpcmRQYXJ0eS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzk0NTJiNThkNTAyOWJlMGFhMTVmNDJiMmYw
YmNiNDYyMzhjMjZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Lm1tCkBAIC0wLDAg
KzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIl9XS1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5SW50ZXJuYWwuaCIKKworI2ltcG9ydCAiQVBJ
QXJyYXkuaCIKKyNpbXBvcnQgIl9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5Lmgi
CisKK0BpbXBsZW1lbnRhdGlvbiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eQor
CistIChOU0FycmF5PF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5ICo+ICopZ2V0
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUxpc3Q6KFZlY3RvcjxXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0Zp
cnN0UGFydHk+ICopdW5kZXJGaXJzdFBhcnRpZXMKK3sKKyAgICBOU011dGFibGVBcnJheTxfV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eSAqPiAqYXBpVW5kZXJGaXJzdFBhcnRpZXMg
PSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6dW5kZXJGaXJzdFBhcnRpZXMtPnNp
emUoKV07CisgICAgZm9yIChjb25zdCBhdXRvJiB0aGlyZFBhcnR5RGF0YVVuZGVyRmlyc3RQYXJ0
eSA6ICp1bmRlckZpcnN0UGFydGllcykgeworICAgICAgICBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRmlyc3RQYXJ0eSAqd2tGaXJzdFBhcnR5ID0gW1tfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Rmlyc3RQYXJ0eSBhbGxvY10gaW5pdFdpdGhEb21haW46dGhpcmRQYXJ0eURhdGFVbmRlckZpcnN0
UGFydHkuZmlyc3RQYXJ0eURvbWFpbi5zdHJpbmcoKSBhbmRUaGlyZFBhcnR5U3RvcmFnZUFjY2Vz
czp0aGlyZFBhcnR5RGF0YVVuZGVyRmlyc3RQYXJ0eS5zdG9yYWdlQWNjZXNzR3JhbnRlZF07Cisg
ICAgICAgIFthcGlVbmRlckZpcnN0UGFydGllcyBhZGRPYmplY3Q6d2tGaXJzdFBhcnR5XTsKKyAg
ICB9CisgICAgcmV0dXJuIGFwaVVuZGVyRmlyc3RQYXJ0aWVzOworfQorCistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhEb21haW46KE5TU3RyaW5nICopZG9tYWluIHVuZGVyRmlyc3RQYXJ0aWVzOihW
ZWN0b3I8V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlE
YXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiYpdW5kZXJGaXJzdFBhcnRpZXMKK3sKKyAgICBpZiAo
IShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHNlbGYu
dGhpcmRQYXJ0eURvbWFpbiA9IGRvbWFpbjsKKyAgICBzZWxmLnVuZGVyRmlyc3RQYXJ0aWVzID0g
W3NlbGYgZ2V0V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUxpc3Q6JnVuZGVyRmly
c3RQYXJ0aWVzXTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworQGVuZAorCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1RoaXJkUGFydHlJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5SW50ZXJuYWwuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40Yjc1YTVlNWMxZGE3YTE4NTRkODI5YzNiMTg2ZDU4OTg1MGI2MDQ0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NUaGlyZFBhcnR5SW50ZXJuYWwuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCisjaW1wb3J0ICJf
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oIgorI2ltcG9ydCAiX1dLUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkuaCIKKworQGludGVyZmFjZSBfV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVGhpcmRQYXJ0eSAoKQorCistIChOU0FycmF5PF9XS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NGaXJzdFBhcnR5ICo+ICopZ2V0V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQ
YXJ0eUxpc3Q6KFZlY3RvcjxXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+ICopdW5kZXJGaXJzdFBhcnRpZXM7
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEb21haW46KE5TU3RyaW5nICopZG9tYWluIHVuZGVy
Rmlyc3RQYXJ0aWVzOihWZWN0b3I8V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiYpdW5kZXJGaXJzdFBhcnRp
ZXM7CisKK0BlbmQKKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBhYTkxYWUwYjc0NjM3YmMzMjNlNjhm
ODIwMzc5ZDdjMjViNmU5NjkyLi4xMGI2OTJlZGQzMjg3ZjBmZjA4MmM0NWY4NDY1N2YwODJjZDA3
N2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTgxNCw2ICs4MTQsMTYgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIEMKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpHZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhzZXNzaW9uSUQpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFTdW1tYXJ5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpU
aGlyZFBhcnR5RGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFjYW5T
ZW5kTWVzc2FnZSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzOjpHZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkoc2Vzc2lvbklE
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCmluZGV4IDc2ZTgyYTdiOTcxZDhlZDJjMjAzOGMxOTVhZmU5OWJlNTU3ZTFjYzkuLjkx
ZTA5NjQ2MGIyMjA1YWMxOTFjODE3ZmVhZDQ3OGViMTNiYmRmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0x
MzUsNiArMTM1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKKyAgICB2b2lkIGdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeShQQUw6
OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4mJik+JiYpOwogICAgIHZvaWQgZ2V0QWxs
U3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFN0cmluZz4gZG9tYWlucyk+JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NDb25maXJtKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgcmVzZXRQYXJhbWV0ZXJzVG9E
ZWZhdWx0VmFsdWVzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcAppbmRleCBiMmY5ZmMyNDlmYTQ4ZWI1ZmRjM2Y2MzRhOWY1OTRjMTYz
Njc2MDQzLi4xOTk1MTBlNDJlZDFlNDg0MTAxMDAwNGQ0MjRhNjA4NTQ4MTQyZmZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcApAQCAtMTUxMCw2ICsxNTEwLDE2IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChXYWxsVGltZSBtb2RpZmllZFNpbmNl
CiAgICAgfQogfQogCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmdldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhU3VtbWFyeShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgZm9yIChhdXRv
JiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CisgICAgICAgIGlmIChhdXRvKiBwcm9j
ZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCisgICAgICAgICAgICBwcm9jZXNz
LT5nZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkobV9zZXNzaW9uSUQsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9Cit9CisKIHZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhlclN0
YXRpc3RpY3Mgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oCmluZGV4IDI3MGMyYzc4YThjOTM0NWJmMDgxNjYyZTRjYzU5ODgxMDBkZTkwODUuLmE3
NWIxYWU2ZGNiN2E0YjMzYmY3MGZlYTI4YjNkNmMzMjBjZGNhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cy5oIgogI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0
b3JlQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgpAQCAtMTYwLDYgKzE2MSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQo
V2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBnZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1
bW1hcnkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4mJik+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVTdGF0
aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBzdWJtaXRUZWxlbWV0cnkoKTsKICAgICB2b2lkIHNldEdyYW5kZmF0aGVy
ZWQoY29uc3QgVVJMJiwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY3OWRk
YzEyMDQwZjJiZjc5MjQwY2NhNTVlZjk4OTMwYjUwMDc1MzQuLjFlNzFkNDNlYmRmOTdlZGM5ZDNl
ZWUyNzJjYTEzMTJmODAzYzBhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTI2LDYgKzkyNiwxMSBAQAogCQk0NkMzOTIyOTIzMTZF
QzREMDA4RUVEOUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDMzkyMjgyMzE2RUM0RDAwOEVFRDlCIC8q
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCAqLzsgfTsKIAkJNDZERjA2M0MxRjM5MDVGODAwMTk4
MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oICovOyB9OwogCQk0NkY5QjI2MzIzNTI2RUYzMDA2
RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2Vi
QmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi87IH07CisJCTQ5RkJFRkZEMjM5QjAxMUQwMEJEMDMy
RiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkJFRkZDMjM5QjAxMUQwMEJEMDMy
RiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5tbSAqLzsgfTsKKwkJNDlG
QkVGRkYyMzlCMDEyRjAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBh
cnR5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlG
QkVGRkUyMzlCMDEyRjAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBh
cnR5Lm1tICovOyB9OworCQk0OUZCRjAwMDIzOUIxRjc1MDBCRDAzMkYgLyogX1dLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1RoaXJkUGFydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ5RkJFRkZBMjM5QUQ5NzgwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5oICovOyB9OworCQk0OUZCRjAwMTIzOUIxRjhEMDBCRDAz
MkYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkJFRkZCMjM5QURCMTgwMEJEMDMy
RiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oICovOyB9OworCQk0OUZC
RjAwOTIzOUYwOEUwMDBCRDAzMkYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFy
dHlJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDlGQkYwMDgyMzlGMDhFMDAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NU
aGlyZFBhcnR5SW50ZXJuYWwuaCAqLzsgfTsKIAkJNEEzQ0MxOEIxOUIwNjQwRjAwRDE0QUVGIC8q
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEYzQTE5QUY3QjA0MDAyRUJBQjUg
LyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCAqLzsgfTsKIAkJNEEz
Q0MxOEQxOUIwNjQxOTAwRDE0QUVGIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNDEwRjND
MTlBRjdCMDQwMDJFQkFCNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmggKi87
IH07CiAJCTRBM0NDMThGMTlCMDdCOEEwMEQxNEFFRiAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
QTQxMEYzNjE5QUY3QUMzMDAyRUJBQjUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zMzE2
LDYgKzMzMjEsMTEgQEAKIAkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRD
aGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkY5QjI2MjIz
NTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0OUZCRUZGQTIzOUFEOTc4MDBCRDAzMkYgLyogX1dLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDlGQkVGRkIyMzlBREIxODAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NG
aXJzdFBhcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJz
dFBhcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5RkJFRkZDMjM5QjAxMUQw
MEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OUZCRUZGRTIzOUIwMTJGMDBCRDAzMkYgLyog
X1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDlGQkYwMDgyMzlGMDhFMDAwQkQwMzJGIC8qIF9XS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0QTQxMEYzNTE5QUY3QUMzMDAyRUJBQjUgLyogV0tVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
S1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNEE0MTBGMzYxOUFGN0FDMzAwMkVCQUI1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTQxMEYzOTE5
QUY3QjA0MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNjU3MSw2ICs2NTgxLDExIEBACiAJCQkJQTU1QkE4MEMxQkExMkJFMTAwN0NEMzNEIC8qIF9X
S1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLmggKi8sCiAJCQkJQTU1QkE4MEQxQkEx
MkJFMTAwN0NEMzNEIC8qIF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tICov
LAogCQkJCTk5MEUxRTA4MjM4NEE4OEIwMDQ2MDJERiAvKiBfV0tSZW1vdGVXZWJJbnNwZWN0b3JW
aWV3Q29udHJvbGxlclByaXZhdGUuaCAqLywKKwkJCQk0OUZCRUZGQjIzOUFEQjE4MDBCRDAzMkYg
LyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkuaCAqLywKKwkJCQk0OUZCRUZG
QzIzOUIwMTFEMDBCRDAzMkYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHku
bW0gKi8sCisJCQkJNDlGQkVGRkEyMzlBRDk3ODAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NUaGlyZFBhcnR5LmggKi8sCisJCQkJNDlGQkVGRkUyMzlCMDEyRjAwQkQwMzJGIC8q
IF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Lm1tICovLAorCQkJCTQ5RkJGMDA4
MjM5RjA4RTAwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUlu
dGVybmFsLmggKi8sCiAJCQkJMUEwMDJEM0YxOTZCMzI5NDAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25T
dGF0ZS5oICovLAogCQkJCTFBMDAyRDNFMTk2QjMyOTQwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3Rh
dGUubW0gKi8sCiAJCQkJMUEwMDJENDIxOTZCMzM3MDAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0
ZUludGVybmFsLmggKi8sCkBAIC05NTYxLDYgKzk1NzYsOSBAQAogCQkJCTk5MEUxRTA5MjM4NEFB
NTcwMDQ2MDJERiAvKiBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlclByaXZhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTM3NzIxNkI4MUE0RTZCRTAwMERDQTcxOCAvKiBfV0tSZW5k
ZXJpbmdQcm9ncmVzc0V2ZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUY2MDRCQUExODg5RkJC
ODAwRUUwMzk1IC8qIF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQ5RkJGMDAxMjM5QjFGOEQwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRmlyc3RQYXJ0eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDlGQkYwMDAyMzlCMUY3
NTAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5LmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0OUZCRjAwOTIzOUYwOEUwMDBCRDAzMkYgLyogX1dLUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1RoaXJkUGFydHlJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc2MzEx
RkQxQTNGQjVGNzAwNUEyRTUxIC8qIF9XS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkzNzYzMTFGRTFBM0ZCNjAwMDA1QTJFNTEgLyogX1dLU2FtZURvY3Vt
ZW50TmF2aWdhdGlvblR5cGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwMDJENDQx
OTZCMzM4OTAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MTU2NSw2ICsxMTU4Myw4IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJ
ZmlsZXMgPSAoCiAJCQkJNUNCRDU5NUMyMjgwRURGNDAwMkIyMkFBIC8qIF9XS0N1c3RvbUhlYWRl
ckZpZWxkcy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQ5RkJFRkZEMjM5QjAxMUQwMEJEMDMyRiAv
KiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTQ5RkJFRkZGMjM5QjAxMkYwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VGhpcmRQYXJ0eS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTk5RTcxODlBMjFGNzlEOUUwMDU1RTk3
NSAvKiBfV0tUb3VjaEV2ZW50R2VuZXJhdG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3
ODQyMTJCNkFCMTAwRjQ5M0ZEIC8qIEFjdGl2aXR5QXNzZXJ0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJEOTJBNzdCMjEyQjZBNzEwMEY0OTNGRCAvKiBBcmd1bWVudENvZGVycy5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCAxNzBlMWQ5MmNmMTMyN2I5YTU0YzlkNTJmNzEyYjg0Zjg0MmQzZTY5Li5hYTYxMmMw
YjQzYTZkY2M4NWY5NWNjZDBmOTU2ODM5MjY0ZTVmYjgyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMTItMDkg
IEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ3Jl
YXRlIFdlYktpdCBBUEkgY2FsbHMgZm9yIElUUCBEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQ5MzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU3NjMyNzUzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIGEgdGVzdCB0byBjaGVjayB0aGF0IHRoZSBJVFAgZGF0YSBzdW1tYXJ5IHdhcyBi
ZWluZyBwcm9wZXJseQorICAgICAgICBhZ2dyZWdhdGVkIGFuZCBzZW50IHRvIHRoZSBVSVByb2Nl
c3MsIGFuZCB0byBtYWtlIHN1cmUgdGhlIEFQSSB3b3JrcworICAgICAgICBhcyBleHBlY3RlZC4g
QWRkZWQgaW50ZXJmYWNlIGRlY2xhcmF0aW9ucyB0byB0aGUgZmlsZSB0byBhbGxvdyBmb3IKKyAg
ICAgICAgdXNlIG9mIHRoZSBXS0lUUEZpcnN0UGFydHkgYW5kIFdLSVRQVGhpcmRQYXJ0eSBjbGFz
c2VzIHdpdGhvdXQgaGF2aW5nCisgICAgICAgIHRvIGltcG9ydCB0aGUgaGVhZGVyIGZpbGVzLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLm1tOgorICAgICAgICAoVEVTVCk6CisKIDIwMTktMTItMDkgIEpvbmF0aGFuIEJl
ZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIHRlc3Qtd2Via2l0cHk6IFJlbW92
ZSAtLTxjb25maWd1cmF0aW9uPiBmbGFncyBmcm9tIENJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MubW0KaW5kZXggNGZkY2RiNWRiNGYwZmYyMDJhY2NhYmM5OGQ1ZDAyY2Y1Yjg5ZTBhYy4uOWU4
ZDg2YWVkZTM1NDBhODAyMTE5NDk3NTIwNDJjMzJlY2EzNmMxYyAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5tbQpAQCAtNDAsNiArNDAsMTYgQEAKIAogc3RhdGljIGJvb2wgZmluaXNoZWRO
YXZpZ2F0aW9uID0gZmFsc2U7CiAKK0BpbnRlcmZhY2UgX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0ZpcnN0UGFydHkgOiBOU09iamVjdAorQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3Ry
aW5nICpmaXJzdFBhcnR5RG9tYWluOworQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgdGhpcmRQ
YXJ0eVN0b3JhZ2VBY2Nlc3NHcmFudGVkOworQGVuZAorCitAaW50ZXJmYWNlIF9XS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5IDogTlNPYmplY3QKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5KSBOU1N0cmluZyAqdGhpcmRQYXJ0eURvbWFpbjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5KSBOU0FycmF5PF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5ICo+ICp1
bmRlckZpcnN0UGFydGllczsKK0BlbmQKKwogQGludGVyZmFjZSBEaXNhYmxlSVRQRHVyaW5nTmF2
aWdhdGlvbkRlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgogQGVuZAog
CkBAIC02NTAsMyArNjYwLDE5NiBAQCBURVNUKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsIEZsdXNo
T2JzZXJ2ZXJXaGVuV2ViUGFnZUlzQ2xvc2VkQnlKYXZhU2NyaXB0KQogCiAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CiB9CisKK1RFU1QoUmVzb3VyY2VMb2FkU3RhdGlz
dGljcywgR2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFTdW1tYXJ5KQoreworICAgIGF1dG8g
KnNoYXJlZFByb2Nlc3NQb29sID0gW1dLUHJvY2Vzc1Bvb2wgX3NoYXJlZFByb2Nlc3NQb29sXTsK
KyAgICBhdXRvICpkYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3Rv
cmVdOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9v
bDogc2hhcmVkUHJvY2Vzc1Bvb2xdOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURh
dGFTdG9yZSA9IGRhdGFTdG9yZTsKKworICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gd2ViVmlldzIgPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8g
d2ViVmlldzMgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OworCisgICAgW3dlYlZpZXcxIGxvYWRIVE1MU3RyaW5nOkAiV2ViS2l0IFRlc3QiIGJhc2VVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdXTsKKyAgICBbd2ViVmll
dzEgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgIFt3ZWJWaWV3MiBsb2Fk
SFRNTFN0cmluZzpAIldlYktpdCBUZXN0IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
aHR0cDovL3dlYmtpdDIub3JnIl1dOworICAgIFt3ZWJWaWV3MiBfdGVzdF93YWl0Rm9yRGlkRmlu
aXNoTmF2aWdhdGlvbl07CisgICAgW3dlYlZpZXczIGxvYWRIVE1MU3RyaW5nOkAiV2ViS2l0IFRl
c3QiIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0My5vcmciXV07
CisgICAgW3dlYlZpZXczIF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAg
IFtkYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOllFU107CisKKyAg
ICBzdGF0aWMgYm9vbCBkb25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX2NsZWFyUmVz
b3VyY2VMb2FkU3RhdGlzdGljczpeKHZvaWQpIHsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOwor
ICAgIH1dOworCisgICAgc3RhdGljIGJvb2wgc3RhdGlzdGljc1VwZGF0ZWQgPSBmYWxzZTsKKyAg
ICBbZGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOl4o
V0tXZWJzaXRlRGF0YVN0b3JlICosIE5TU3RyaW5nICptZXNzYWdlKSB7CisgICAgICAgIGlmICgh
W21lc3NhZ2UgaXNFcXVhbFRvU3RyaW5nOkAiU3RhdGlzdGljcyBVcGRhdGVkIl0pCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIHN0YXRpc3RpY3NVcGRhdGVkID0gdHJ1ZTsKKyAgICB9XTsK
KworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcpOworCisgICAgLy8gU2Vl
ZCB0ZXN0IGRhdGEgaW4gdGhlIHdlYiBwcm9jZXNzJyBvYnNlcnZlci4KKworICAgIC8vIGV2aWwx
CisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbc2hhcmVkUHJvY2Vzc1Bvb2wgX3NlZWRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZ1dpdGhGaXJzdFBhcnR5OltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmciXSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiaHR0cDovL2V2aWwxLmNvbSJdIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uOk5PIGNv
bXBsZXRpb25IYW5kbGVyOiBeKCkgeworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKyAgICBkb25lRmxh
ZyA9IGZhbHNlOworICAgIFtzaGFyZWRQcm9jZXNzUG9vbCBfc2VlZFJlc291cmNlTG9hZFN0YXRp
c3RpY3NGb3JUZXN0aW5nV2l0aEZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRw
Oi8vd2Via2l0Mi5vcmciXSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDov
L2V2aWwxLmNvbSJdIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uOk5PIGNvbXBsZXRpb25IYW5k
bGVyOiBeKCkgeworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKworICAgIC8vIGV2aWwyCisgICAgZG9u
ZUZsYWcgPSBmYWxzZTsKKyAgICBbc2hhcmVkUHJvY2Vzc1Bvb2wgX3NlZWRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRm9yVGVzdGluZ1dpdGhGaXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
aHR0cDovL3dlYmtpdC5vcmciXSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0
cDovL2V2aWwyLmNvbSJdIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uOk5PIGNvbXBsZXRpb25I
YW5kbGVyOiBeKCkgeworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKworICAgIC8vIGV2aWwzCisgICAg
ZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbc2hhcmVkUHJvY2Vzc1Bvb2wgX3NlZWRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRm9yVGVzdGluZ1dpdGhGaXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiaHR0cDovL3dlYmtpdC5vcmciXSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
aHR0cDovL2V2aWwzLmNvbSJdIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uOk5PIGNvbXBsZXRp
b25IYW5kbGVyOiBeKCkgeworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisgICAgZG9uZUZsYWcgPSBmYWxz
ZTsKKyAgICBbc2hhcmVkUHJvY2Vzc1Bvb2wgX3NlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9y
VGVzdGluZ1dpdGhGaXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtp
dDIub3JnIl0gdGhpcmRQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsMy5j
b20iXSBzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbjpOTyBjb21wbGV0aW9uSGFuZGxlcjogXigp
IHsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZG9uZUZsYWcpOworICAgIGRvbmVGbGFnID0gZmFsc2U7CisgICAgW3NoYXJl
ZFByb2Nlc3NQb29sIF9zZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmdXaXRoRmly
c3RQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQzLm9yZyJdIHRoaXJk
UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXZpbDMuY29tIl0gc2hvdWxkU2No
ZWR1bGVOb3RpZmljYXRpb246Tk8gY29tcGxldGlvbkhhbmRsZXI6IF4oKSB7CisgICAgICAgIGRv
bmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRv
bmVGbGFnKTsKKworICAgIHN0YXRpc3RpY3NVcGRhdGVkID0gZmFsc2U7CisgICAgW3dlYlZpZXcx
IGxvYWRIVE1MU3RyaW5nOkAiPGJvZHk+PHNjcmlwdD5jbG9zZSgpOzwvc2NyaXB0PjwvYm9keT4i
IGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdXTsKKyAg
ICBbd2ViVmlldzIgbG9hZEhUTUxTdHJpbmc6QCI8Ym9keT48c2NyaXB0PmNsb3NlKCk7PC9zY3Jp
cHQ+PC9ib2R5PiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQy
Lm9yZyJdXTsKKyAgICBbd2ViVmlldzMgbG9hZEhUTUxTdHJpbmc6QCI8Ym9keT48c2NyaXB0PmNs
b3NlKCk7PC9zY3JpcHQ+PC9ib2R5PiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0
dHA6Ly93ZWJraXQzLm9yZyJdXTsKKworICAgIC8vIFdhaXQgZm9yIHRoZSBzdGF0aXN0aWNzIHRv
IGJlIHVwZGF0ZWQgaW4gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJnN0YXRpc3RpY3NVcGRhdGVkKTsKKworICAgIC8vIENoZWNrIHRoYXQgdGhlIHRo
aXJkLXBhcnR5IGV2aWwxIGlzIG5vdyByZWdpc3RlcmVkIGFzIHN1YnJlc291cmNlLgorICAgIGRv
bmVGbGFnID0gZmFsc2U7CisgICAgW2RhdGFTdG9yZSBfaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJj
ZVVuZGVyRmlyc3RQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3Jn
Il0gdGhpcmRQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsMS5jb20iXSBj
b21wbGV0aW9uSGFuZGxlcjogXihCT09MIGlzUmVnaXN0ZXJlZCkgeworICAgICAgICBFWFBFQ1Rf
VFJVRShpc1JlZ2lzdGVyZWQpOworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisgICAgZG9uZUZsYWcgPSBm
YWxzZTsKKyAgICBbZGF0YVN0b3JlIF9pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXJGaXJz
dFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdDIub3JnIl0gdGhpcmRQ
YXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsMS5jb20iXSBjb21wbGV0aW9u
SGFuZGxlcjogXihCT09MIGlzUmVnaXN0ZXJlZCkgeworICAgICAgICBFWFBFQ1RfVFJVRShpc1Jl
Z2lzdGVyZWQpOworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKworICAgIC8vIENoZWNrIHRoYXQgdGhl
IHRoaXJkLXBhcnR5IGV2aWwyIGlzIG5vdyByZWdpc3RlcmVkIGFzIHN1YnJlc291cmNlLgorICAg
IGRvbmVGbGFnID0gZmFsc2U7CisgICAgW2RhdGFTdG9yZSBfaXNSZWdpc3RlcmVkQXNTdWJyZXNv
dXJjZVVuZGVyRmlyc3RQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQu
b3JnIl0gdGhpcmRQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsMi5jb20i
XSBjb21wbGV0aW9uSGFuZGxlcjogXihCT09MIGlzUmVnaXN0ZXJlZCkgeworICAgICAgICBFWFBF
Q1RfVFJVRShpc1JlZ2lzdGVyZWQpOworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKworICAgIC8vIENo
ZWNrIHRoYXQgdGhlIHRoaXJkLXBhcnR5IGV2aWwzIGlzIG5vdyByZWdpc3RlcmVkIGFzIHN1YnJl
c291cmNlLgorICAgIGRvbmVGbGFnID0gZmFsc2U7CisgICAgW2RhdGFTdG9yZSBfaXNSZWdpc3Rl
cmVkQXNTdWJyZXNvdXJjZVVuZGVyRmlyc3RQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0
dHA6Ly93ZWJraXQub3JnIl0gdGhpcmRQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6
Ly9ldmlsMy5jb20iXSBjb21wbGV0aW9uSGFuZGxlcjogXihCT09MIGlzUmVnaXN0ZXJlZCkgewor
ICAgICAgICBFWFBFQ1RfVFJVRShpc1JlZ2lzdGVyZWQpOworICAgICAgICBkb25lRmxhZyA9IHRy
dWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7Cisg
ICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9pc1JlZ2lzdGVyZWRBc1N1YnJl
c291cmNlVW5kZXJGaXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtp
dDIub3JnIl0gdGhpcmRQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsMy5j
b20iXSBjb21wbGV0aW9uSGFuZGxlcjogXihCT09MIGlzUmVnaXN0ZXJlZCkgeworICAgICAgICBF
WFBFQ1RfVFJVRShpc1JlZ2lzdGVyZWQpOworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAg
fV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisgICAgZG9uZUZs
YWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5k
ZXJGaXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdDMub3JnIl0g
dGhpcmRQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsMy5jb20iXSBjb21w
bGV0aW9uSGFuZGxlcjogXihCT09MIGlzUmVnaXN0ZXJlZCkgeworICAgICAgICBFWFBFQ1RfVFJV
RShpc1JlZ2lzdGVyZWQpOworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKworICAgIC8vIENvbGxlY3Qg
dGhlIElUUCBkYXRhIHN1bW1hcnkgd2hpY2ggc2hvdWxkIGluY2x1ZGUgYWxsIHRoaXJkIHBhcnRp
ZXMgaW4gdGhlCisgICAgLy8gb3JkZXI6IFtldmlsMy5jb20sIGV2aWwxLmNvbSwgZXZpbDIuY29t
XSBzb3J0ZWQgYnkgbnVtYmVyIG9mIGZpcnN0IHBhcnRpZXMKKyAgICAvLyBpdCBhcHBlYXJzIHVu
ZGVyIG9yIHJlZGlyZWN0cyB0bworICAgIGRvbmVGbGFnID0gZmFsc2U7CisgICAgW2RhdGFTdG9y
ZSBfZ2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFTdW1tYXJ5Ol52b2lkKE5TQXJyYXk8X1dL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkgKj4gKnRoaXJkUGFydHlEYXRhKQorICAg
IHsKKyAgICAgICAgTlNFbnVtZXJhdG9yICp0aGlyZFBhcnR5RG9tYWlucyA9IFt0aGlyZFBhcnR5
RGF0YSBvYmplY3RFbnVtZXJhdG9yXTsKKworICAgICAgICAvLyBldmlsMworICAgICAgICBfV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eSAqZXZpbDNUaGlyZFBhcnR5ID0gW3RoaXJk
UGFydHlEb21haW5zIG5leHRPYmplY3RdOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXZpbDNU
aGlyZFBhcnR5LnRoaXJkUGFydHlEb21haW4sIEAiZXZpbDMuY29tIik7CisKKyAgICAgICAgTlNF
bnVtZXJhdG9yICpldmlsM0VudW1lcmF0b3IgPSBbZXZpbDNUaGlyZFBhcnR5LnVuZGVyRmlyc3RQ
YXJ0aWVzIG9iamVjdEVudW1lcmF0b3JdOworICAgICAgICBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRmlyc3RQYXJ0eSAqZXZpbDNGaXJzdFBhcnR5MSA9IFtldmlsM0VudW1lcmF0b3IgbmV4dE9i
amVjdF07CisgICAgICAgIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5ICpldmls
M0ZpcnN0UGFydHkyID0gW2V2aWwzRW51bWVyYXRvciBuZXh0T2JqZWN0XTsKKyAgICAgICAgX1dL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkgKmV2aWwzRmlyc3RQYXJ0eTMgPSBbZXZp
bDNFbnVtZXJhdG9yIG5leHRPYmplY3RdOworCisgICAgICAgIEFTU0VSVF9UUlVFKGV2aWwzRmly
c3RQYXJ0eTEgIT0gbmlsKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoZXZpbDNGaXJzdFBhcnR5MiAh
PSBuaWwpOworICAgICAgICBBU1NFUlRfVFJVRShldmlsM0ZpcnN0UGFydHkzICE9IG5pbCk7CisK
KyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGV2aWwzRmlyc3RQYXJ0eTEuZmlyc3RQYXJ0eURvbWFp
biwgQCJ3ZWJraXQyLm9yZyIpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXZpbDNGaXJzdFBh
cnR5Mi5maXJzdFBhcnR5RG9tYWluLCBAIndlYmtpdDMub3JnIik7CisgICAgICAgIEVYUEVDVF9X
S19TVFJFUShldmlsM0ZpcnN0UGFydHkzLmZpcnN0UGFydHlEb21haW4sIEAid2Via2l0Lm9yZyIp
OworCisgICAgICAgIEVYUEVDVF9GQUxTRShldmlsM0ZpcnN0UGFydHkxLnRoaXJkUGFydHlTdG9y
YWdlQWNjZXNzR3JhbnRlZCk7CisgICAgICAgIEVYUEVDVF9GQUxTRShldmlsM0ZpcnN0UGFydHky
LnRoaXJkUGFydHlTdG9yYWdlQWNjZXNzR3JhbnRlZCk7CisgICAgICAgIEVYUEVDVF9GQUxTRShl
dmlsM0ZpcnN0UGFydHkzLnRoaXJkUGFydHlTdG9yYWdlQWNjZXNzR3JhbnRlZCk7CisKKyAgICAg
ICAgLy8gZXZpbDEKKyAgICAgICAgX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkg
KmV2aWwxVGhpcmRQYXJ0eSA9IFt0aGlyZFBhcnR5RG9tYWlucyBuZXh0T2JqZWN0XTsKKyAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKGV2aWwxVGhpcmRQYXJ0eS50aGlyZFBhcnR5RG9tYWluLCBAImV2
aWwxLmNvbSIpOworCisgICAgICAgIE5TRW51bWVyYXRvciAqZXZpbDFFbnVtZXJhdG9yID0gW2V2
aWwxVGhpcmRQYXJ0eS51bmRlckZpcnN0UGFydGllcyBvYmplY3RFbnVtZXJhdG9yXTsKKyAgICAg
ICAgX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkgKmV2aWwxRmlyc3RQYXJ0eTE9
IFtldmlsMUVudW1lcmF0b3IgbmV4dE9iamVjdF07CisgICAgICAgIF9XS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NGaXJzdFBhcnR5ICpldmlsMUZpcnN0UGFydHkyID0gW2V2aWwxRW51bWVyYXRvciBu
ZXh0T2JqZWN0XTsKKworICAgICAgICBBU1NFUlRfVFJVRShldmlsMUZpcnN0UGFydHkxICE9IG5p
bCk7CisgICAgICAgIEFTU0VSVF9UUlVFKGV2aWwxRmlyc3RQYXJ0eTIgIT0gbmlsKTsKKworICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEoZXZpbDFGaXJzdFBhcnR5MS5maXJzdFBhcnR5RG9tYWluLCBA
IndlYmtpdDIub3JnIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShldmlsMUZpcnN0UGFydHky
LmZpcnN0UGFydHlEb21haW4sIEAid2Via2l0Lm9yZyIpOworCisgICAgICAgIEVYUEVDVF9GQUxT
RShldmlsMUZpcnN0UGFydHkxLnRoaXJkUGFydHlTdG9yYWdlQWNjZXNzR3JhbnRlZCk7CisgICAg
ICAgIEVYUEVDVF9GQUxTRShldmlsMUZpcnN0UGFydHkyLnRoaXJkUGFydHlTdG9yYWdlQWNjZXNz
R3JhbnRlZCk7CisKKyAgICAgICAgLy8gZXZpbDIKKyAgICAgICAgX1dLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RoaXJkUGFydHkgKmV2aWwyVGhpcmRQYXJ0eSA9IFt0aGlyZFBhcnR5RG9tYWlucyBu
ZXh0T2JqZWN0XTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGV2aWwyVGhpcmRQYXJ0eS50aGly
ZFBhcnR5RG9tYWluLCBAImV2aWwyLmNvbSIpOworCisgICAgICAgIE5TRW51bWVyYXRvciAqZXZp
bDJFbnVtZXJhdG9yID0gW2V2aWwyVGhpcmRQYXJ0eS51bmRlckZpcnN0UGFydGllcyBvYmplY3RF
bnVtZXJhdG9yXTsKKyAgICAgICAgX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkg
KmV2aWwyRmlyc3RQYXJ0eTEgPSBbZXZpbDJFbnVtZXJhdG9yIG5leHRPYmplY3RdOworCisgICAg
ICAgIEFTU0VSVF9UUlVFKGV2aWwyRmlyc3RQYXJ0eTEgIT0gbmlsKTsKKworICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEoZXZpbDJGaXJzdFBhcnR5MS5maXJzdFBhcnR5RG9tYWluLCBAIndlYmtpdC5v
cmciKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGV2aWwyRmlyc3RQYXJ0eTEudGhpcmRQYXJ0eVN0
b3JhZ2VBY2Nlc3NHcmFudGVkKTsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOwor
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385449</attachid>
            <date>2019-12-11 15:29:43 -0800</date>
            <delta_ts>2019-12-12 17:42:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204932-20191211152943.patch</filename>
            <type>text/plain</type>
            <size>80997</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc5ZDNjNzM4ODkxYzcxNmNj
NzM3NjU0YWFjYTg1NWVhMTA4YTU3Y2UuLmNkY2Q5MWRhNzBjNzI2NTE0NGRmZTdhN2NhNmUyOTk5
NjZmNWZkZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODMgQEAKKzIwMTktMTItMTEgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIFdlYktp
dCBBUEkgY2FsbHMgZm9yIElUUCBEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDQ5MzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3NjMyNzUz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggZXhwb3NlcyBJVFAgZGF0YSBjYXB0dXJlZCBpbiB0aGUgbmV0d29yayBwcm9jZXNzIHRo
cm91Z2ggdGhlCisgICAgICAgIE9iamVjdGl2ZSBDIEFQSSB1c2luZyB0d28gbmV3IGNsYXNzZXM6
IF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5CisgICAgICAgIGFuZCBfV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmVuc3Vy
ZVRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWluKToKKyAgICAgICAgKFdl
YktpdDo6Z2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKToKKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjphZ2dyZWdh
dGVkVGhpcmRQYXJ0eURhdGEgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAg
ICAgICAgVXBkYXRlZCBtZW50aW9ucyBvZiBUaGlyZFBhcnR5RGF0YSB0byBpbmNsdWRlIHRoZQor
ICAgICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OiBjbGFzcyBzcGVjaWZpZXIg
YWZ0ZXIgcmVsb2NhdGluZworICAgICAgICBUaGlyZFBhcnR5RGF0YS4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphZ2dy
ZWdhdGVkVGhpcmRQYXJ0eURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgIFVwZGF0ZWQgdGhl
IGRhdGEgdG8gYmUgc2VudCB2aWEgY29tcGxldGlvbiBoYW5kbGVyIGZyb20KKyAgICAgICAgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIHNvIHRoYXQgY2FsbHMgdG8KKyAgICAgICAgYWdn
cmVnYXRlZFRoaXJkUGFydHlEYXRhKCkgYXJlIGhhcHBlbmluZyBvbiBhIGJhY2tncm91bmQgdGhy
ZWFkLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFy
ZWQvQ29jb2EvQVBJT2JqZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQ
YXJ0eS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVJlc291cmNlTG9hZFN0
YXRpc3RpY3NUaGlyZFBhcnR5Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUg
X2dldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeTpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5Lmg6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0ZpcnN0UGFydHkubW06IEFkZGVkLgorICAgICAgICAoLVtfV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRmlyc3RQYXJ0eSBpbml0XSk6CisgICAgICAgICgtW19XS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NGaXJzdFBhcnR5IGRlYWxsb2NdKToKKyAgICAgICAgKC1bX1dLUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0ZpcnN0UGFydHkgX3NldEZpcnN0UGFydHlEb21haW46XSk6CisgICAgICAgICgt
W19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5IF9maXJzdFBhcnR5RG9tYWluXSk6
CisgICAgICAgICgtW19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5IF9zZXRTdG9y
YWdlQWNjZXNzOl0pOgorICAgICAgICAoLVtfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQ
YXJ0eSBfc3RvcmFnZUFjY2Vzc10pOgorICAgICAgICAoLVtfV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRmlyc3RQYXJ0eSBfYXBpT2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUludGVybmFsLmg6IEFkZGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Ro
aXJkUGFydHkuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5tbTogQWRkZWQuCisgICAgICAgICgtW19XS1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5IF9nZXRXS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NGaXJzdFBhcnR5TGlzdDpdKToKKyAgICAgICAgKC1bX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1RoaXJkUGFydHkgaW5pdF0pOgorICAgICAgICAoLVtfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VGhpcmRQYXJ0eSBkZWFsbG9jXSk6CisgICAgICAgICgtW19XS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUaGlyZFBhcnR5IF9zZXRUaGlyZFBhcnR5RG9tYWluOl0pOgorICAgICAgICAoLVtfV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eSBfdGhpcmRQYXJ0eURvbWFpbl0pOgorICAgICAg
ICAoLVtfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eSBfc2V0VW5kZXJGaXJzdFBh
cnRpZXM6XSk6CisgICAgICAgICgtW19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5
IF91bmRlckZpcnN0UGFydGllc10pOgorICAgICAgICAoLVtfV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVGhpcmRQYXJ0eSBfYXBpT2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUludGVybmFsLmg6IEFkZGVkLgor
ICAgICAgICBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eSBhbmQgX1dLUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkKKyAgICAgICAgcmVwcmVzZW50IGZpcnN0IGFuZCB0
aGlyZCBwYXJ0eSBkb21haW5zIHJlc3BlY3RpdmVseSB3aGljaCBob2xkIElUUAorICAgICAgICBk
YXRhIGFuZCBhcmUgc3Ryb25nbHkgdHlwZWQgdG8gZW5zdXJlIHRoZSBjb3JyZWN0IGRhdGEgaXMg
YmVpbmcKKyAgICAgICAgZXhwb3NlZCB2aWEgQVBJLiBUaGUgZnVuY3Rpb24gYW5kIHBhcmFtZXRl
ciBuYW1lcyBmb3Igc3RvcmFnZSBhY2Nlc3MKKyAgICAgICAgc3BlY2lmeSAidGhpcmQgcGFydHki
IGJlY2F1c2UgZWFjaCBXS0lUUEZpcnN0UGFydHkgaG9sZHMgZGF0YSByZWxldmVudAorICAgICAg
ICB0byBhIHNwZWNpZmljIHRoaXJkIHBhcnR5IGFuZCBzdG9yYWdlIGFjY2VzcyB3b3VsZCBub3Qg
bWFrZSBzZW5zZSBpbgorICAgICAgICBqdXN0IGEgZmlyc3QgcGFydHkgY29udGV4dC4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OmdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFTdW1tYXJ5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpnZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YVN1bW1hcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisK
IDIwMTktMTItMTAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgTW92ZSBXS1dlYlZpZXcgY29kZSByZWxhdGVkIHRvIHRlc3RpbmcgdG8gbmV3IGZpbGVz
LCB3aXRoIHRoZWlyIG93biBoZWFkZXJzLCBhbmQgc3RvcCBleHBvc2luZyB0ZXN0LW9ubHkgZnVu
Y3Rpb25zIGFzIFNQSS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IGJlZGVjYjI1NGNjNTM0MjUyNTVhZTAyNjEwNjU4ZGIz
NTA0YmZjOGIuLmFlNWY1MTg4YWI3MjNjYmQ3ZjZjYzlkMGM2MzMyZmNmYTE2YzM1ZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNw
cApAQCAtNzg2LDcgKzc4Niw3IEBAIHN0YXRpYyBTUUxpdGVTdGF0ZW1lbnQgbWFrZU1lZGlhbldp
dGhVSVF1ZXJ5KFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKICAgICByZXR1cm4gU1FMaXRlU3Rh
dGVtZW50KGRhdGFiYXNlLCBtYWtlU3RyaW5nKCJTRUxFQ1QgbW9zdFJlY2VudFVzZXJJbnRlcmFj
dGlvblRpbWUgRlJPTSBPYnNlcnZlZERvbWFpbnMgSU5ORVIgSk9JTiAoU0VMRUNUICIsIGpvaW5T
dWJTdGF0aXN0aWNzRm9yU29ydGluZygpLCAiKSBhcyBxIE9OIE9ic2VydmVkRG9tYWlucy5kb21h
aW5JRCA9IHEuZG9tYWluSUQgTElNSVQgMSBPRkZTRVQgPyIpKTsKIH0KIAotVmVjdG9yPFRoaXJk
UGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6Z2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5z
KHVuc2lnbmVkIHRoaXJkUGFydHlEb21haW5JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRo
aXJkUGFydHlEb21haW4pIGNvbnN0CitWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBh
cnR5RG9tYWlucyh1bnNpZ25lZCB0aGlyZFBhcnR5RG9tYWluSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiB0aGlyZFBhcnR5RG9tYWluKSBjb25zdAogewogICAgIGlmIChtX2dldEFsbFN1YlN0
YXRpc3RpY3NTdGF0ZW1lbnQuYmluZEludCgxLCB0aGlyZFBhcnR5RG9tYWluSUQpICE9IFNRTElU
RV9PSwogICAgICAgICB8fCBtX2dldEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQuYmluZEludCgy
LCB0aGlyZFBhcnR5RG9tYWluSUQpICE9IFNRTElURV9PSwpAQCAtNzk0LDEwICs3OTQsMTAgQEAg
VmVjdG9yPFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZToKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29y
aywgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRUaGlyZFBhcnR5RGF0
YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbiwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIs
IG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICB9Ci0gICAgVmVjdG9yPFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5
PiB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnM7CisgICAgVmVjdG9y
PFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZp
Y0ZpcnN0UGFydHk+IHRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWluczsK
ICAgICB3aGlsZSAobV9nZXRBbGxTdWJTdGF0aXN0aWNzU3RhdGVtZW50LnN0ZXAoKSA9PSBTUUxJ
VEVfUk9XKSB7CiAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4gPSBS
ZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3Ry
aW5nKGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRChtX2dldEFsbFN1YlN0YXRpc3RpY3NTdGF0
ZW1lbnQuZ2V0Q29sdW1uSW50KDApKSk7Ci0gICAgICAgIHRoaXJkUGFydHlEYXRhRm9yU3BlY2lm
aWNGaXJzdFBhcnR5RG9tYWlucy5hcHBlbmRJZk5vdENvbnRhaW5zKFRoaXJkUGFydHlEYXRhRm9y
U3BlY2lmaWNGaXJzdFBhcnR5IHsgZmlyc3RQYXJ0eURvbWFpbiwgaGFzU3RvcmFnZUFjY2Vzcyhm
aXJzdFBhcnR5RG9tYWluLCB0aGlyZFBhcnR5RG9tYWluKSB9KTsKKyAgICAgICAgdGhpcmRQYXJ0
eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zLmFwcGVuZElmTm90Q29udGFpbnMoV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmly
c3RQYXJ0eSB7IGZpcnN0UGFydHlEb21haW4sIGhhc1N0b3JhZ2VBY2Nlc3MoZmlyc3RQYXJ0eURv
bWFpbiwgdGhpcmRQYXJ0eURvbWFpbikgfSk7CiAgICAgfQogICAgIHJlc2V0U3RhdGVtZW50KG1f
Z2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudCk7CiAgICAgcmV0dXJuIHRoaXJkUGFydHlEYXRh
Rm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWluczsKQEAgLTgwOCwxMSArODA4LDExIEBAIHN0YXRp
YyBib29sIGhhc0JlZW5UaGlyZFBhcnR5KHVuc2lnbmVkIHRpbWVzVW5kZXJGaXJzdFBhcnR5KQog
ICAgIHJldHVybiB0aW1lc1VuZGVyRmlyc3RQYXJ0eSA+IDA7CiB9CiAKLVZlY3RvcjxUaGlyZFBh
cnR5RGF0YT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFnZ3JlZ2F0ZWRU
aGlyZFBhcnR5RGF0YSgpIGNvbnN0CitWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpUaGlyZFBhcnR5RGF0YT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAKLSAgICBWZWN0b3I8VGhpcmRQYXJ0eURhdGE+IHRoaXJkUGFydHlEYXRh
TGlzdDsKKyAgICBWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBh
cnR5RGF0YT4gdGhpcmRQYXJ0eURhdGFMaXN0OwogICAgIFNRTGl0ZVN0YXRlbWVudCBzb3J0ZWRT
dGF0aXN0aWNzKG1fZGF0YWJhc2UsIG1ha2VTdHJpbmcoIlNFTEVDVCAiLCBqb2luU3ViU3RhdGlz
dGljc0ZvclNvcnRpbmcoKSkpOwogICAgIGlmIChzb3J0ZWRTdGF0aXN0aWNzLnByZXBhcmUoKSAh
PSBTUUxJVEVfT0sKICAgICAgICAgfHwgc29ydGVkU3RhdGlzdGljcy5iaW5kVGV4dCgxLCAiJSIp
CkBAIC04MjUsNyArODI1LDcgQEAgVmVjdG9yPFRoaXJkUGFydHlEYXRhPiBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHkKICAgICAgICAgaWYg
KGhhc0JlZW5UaGlyZFBhcnR5KHNvcnRlZFN0YXRpc3RpY3MuZ2V0Q29sdW1uSW50KDEpKSkgewog
ICAgICAgICAgICAgYXV0byB0aGlyZFBhcnR5RG9tYWluSUQgPSBzb3J0ZWRTdGF0aXN0aWNzLmdl
dENvbHVtbkludCgwKTsKICAgICAgICAgICAgIGF1dG8gdGhpcmRQYXJ0eURvbWFpbiA9IFJlZ2lz
dHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmco
Z2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHRoaXJkUGFydHlEb21haW5JRCkpOwotICAgICAg
ICAgICAgdGhpcmRQYXJ0eURhdGFMaXN0LmFwcGVuZChUaGlyZFBhcnR5RGF0YSB7IHRoaXJkUGFy
dHlEb21haW4sIGdldFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucyh0
aGlyZFBhcnR5RG9tYWluSUQsIHRoaXJkUGFydHlEb21haW4pIH0pOworICAgICAgICAgICAgdGhp
cmRQYXJ0eURhdGFMaXN0LmFwcGVuZChXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRo
aXJkUGFydHlEYXRhIHsgdGhpcmRQYXJ0eURvbWFpbiwgZ2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVj
aWZpY0ZpcnN0UGFydHlEb21haW5zKHRoaXJkUGFydHlEb21haW5JRCwgdGhpcmRQYXJ0eURvbWFp
bikgfSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHRoaXJkUGFydHlEYXRhTGlzdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgK
aW5kZXggN2FkODYxNWY1YTI3MmM2ZmZjNTZkZWFlNTJhZWYyYmU2ZWE2ZGI3MS4uNzdlOWY4Zjcx
M2EzZTMzMTAwM2VlOWJmYWI4MWI5MWE2NzU1NjhkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlk
ZTsKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIFZlY3RvcjxUaGly
ZFBhcnR5RGF0YT4gYWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+
IGFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgdXBk
YXRlQ29va2llQmxvY2tpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgY2xhc3NpZnlQcmV2YWxlbnRSZXNvdXJjZXMoKSBvdmVycmlkZTsKQEAgLTEz
OSw3ICsxMzksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgb3BlbklUUERhdGFiYXNlKCk7CiAgICAg
Ym9vbCBpc0NvcnJlY3RUYWJsZVNjaGVtYSgpOwogICAgIGJvb2wgaGFzU3RvcmFnZUFjY2Vzcyhj
b25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IFN1YkZyYW1lRG9tYWluJikgY29uc3Q7Ci0gICAg
VmVjdG9yPFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBnZXRUaGlyZFBhcnR5
RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnModW5zaWduZWQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJikgY29uc3Q7CisgICAgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IGdldFRoaXJkUGFydHlE
YXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucyh1bnNpZ25lZCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mKSBjb25zdDsKICAgICB2b2lkIG9wZW5BbmREcm9wT2xkRGF0YWJhc2VJZk5lY2Vz
c2FyeSgpOwogICAgIFN0cmluZyBnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQodW5zaWduZWQp
IGNvbnN0OwogICAgIFN0cmluZyBnZXRTdWJTdGF0aXN0aWNTdGF0ZW1lbnQoY29uc3QgU3RyaW5n
JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmUuY3BwCmluZGV4IDcwOTc5NTgxODc4ZWVlMTdiNjMzMTc3YjZjMDA1NTI2OTU1ZjU0YjEu
LjYxNjcxZDY4Y2ZjMjhiYjYyZTgwNGVhNGE4M2RiYWE3N2RmMDM0YzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCkBAIC0xMDMsMTUg
KzEwMywxNSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Y2FsY3Vs
YXRlQW5kU3VibWl0VGVsZW1ldHJ5KCkgY29uc3QKICAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RlbGVtZXRyeTo6Y2FsY3VsYXRlQW5kU3VibWl0KCp0aGlzKTsKIH0KIAotc3RhdGlj
IHZvaWQgZW5zdXJlVGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW4oVmVj
dG9yPFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiYgdGhpcmRQYXJ0eURhdGFG
b3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJz
dFBhcnR5RG9tYWluLCBib29sIHRoaXJkUGFydHlIYXNTdG9yYWdlQWNjZXNzKQorc3RhdGljIHZv
aWQgZW5zdXJlVGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW4oVmVjdG9y
PFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZp
Y0ZpcnN0UGFydHk+JiB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIGJvb2wgdGhpcmRQYXJ0
eUhhc1N0b3JhZ2VBY2Nlc3MpCiB7Ci0gICAgVGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0
UGFydHkgdGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHkgeyBmaXJzdFBhcnR5RG9t
YWluLCB0aGlyZFBhcnR5SGFzU3RvcmFnZUFjY2VzcyB9OworICAgIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHkgdGhpcmRQ
YXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHkgeyBmaXJzdFBhcnR5RG9tYWluLCB0aGlyZFBh
cnR5SGFzU3RvcmFnZUFjY2VzcyB9OwogICAgIHRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJz
dFBhcnR5RG9tYWluLmFwcGVuZElmTm90Q29udGFpbnModGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZp
Y0ZpcnN0UGFydHkpOwogfQogCi1zdGF0aWMgVmVjdG9yPFRoaXJkUGFydHlEYXRhRm9yU3BlY2lm
aWNGaXJzdFBhcnR5PiBnZXRUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFp
bnMoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgdGhpcmRQYXJ0eVN0YXRpc3RpYykKK3N0
YXRpYyBWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0
YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4gZ2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0
UGFydHlEb21haW5zKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHRoaXJkUGFydHlTdGF0
aXN0aWMpCiB7Ci0gICAgVmVjdG9yPFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5
PiB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnM7CisgICAgVmVjdG9y
PFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZp
Y0ZpcnN0UGFydHk+IHRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWluczsK
IAogICAgIGZvciAoYXV0byBmaXJzdFBhcnR5RG9tYWluIDogdGhpcmRQYXJ0eVN0YXRpc3RpYy5z
dWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zKQogICAgICAgICBlbnN1cmVUaGlyZFBhcnR5RGF0
YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbih0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmly
c3RQYXJ0eURvbWFpbnMsIGZpcnN0UGFydHlEb21haW4sIHRoaXJkUGFydHlTdGF0aXN0aWMuc3Rv
cmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zLmNvbnRhaW5zKGZpcnN0UGFydHlEb21haW4p
KTsKQEAgLTEzMCwxNCArMTMwLDE0IEBAIHN0YXRpYyBib29sIGhhc0JlZW5UaGlyZFBhcnR5KGNv
bnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHN0YXRpc3RpYykKICAgICAgICAgfHwgIXN0YXRp
c3RpYy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLmlzRW1wdHkoKTsKIH0KIAotVmVjdG9y
PFRoaXJkUGFydHlEYXRhPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmFnZ3Jl
Z2F0ZWRUaGlyZFBhcnR5RGF0YSgpIGNvbnN0CitWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlOjphZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoKSBjb25zdAogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCi0gICAgVmVjdG9yPFRoaXJkUGFydHlEYXRhPiB0aGlyZFBhcnR5
RGF0YUxpc3Q7CisgICAgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhp
cmRQYXJ0eURhdGE+IHRoaXJkUGFydHlEYXRhTGlzdDsKICAgICBmb3IgKGF1dG8mIHN0YXRpc3Rp
YyA6IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnZhbHVlcygpKSB7CiAgICAgICAgIGlmIChoYXNC
ZWVuVGhpcmRQYXJ0eShzdGF0aXN0aWMpKQotICAgICAgICAgICAgdGhpcmRQYXJ0eURhdGFMaXN0
LmFwcGVuZChUaGlyZFBhcnR5RGF0YSB7IHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbiwgZ2V0
VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHN0YXRpc3RpYykgfSk7
CisgICAgICAgICAgICB0aGlyZFBhcnR5RGF0YUxpc3QuYXBwZW5kKFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGEgeyBzdGF0aXN0aWMucmVnaXN0cmFibGVEb21h
aW4sIGdldFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucyhzdGF0aXN0
aWMpIH0pOwogICAgIH0KICAgICBzdGQ6OnNvcnQodGhpcmRQYXJ0eURhdGFMaXN0LnJiZWdpbigp
LCB0aGlyZFBhcnR5RGF0YUxpc3QucmVuZCgpKTsKICAgICByZXR1cm4gdGhpcmRQYXJ0eURhdGFM
aXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5o
CmluZGV4IDliY2E5MDMwYzU2ZTdkYzIzMzFkOTYwOTNlNzQ3MTU1NzYwODY3N2EuLjBiMGU2ZDgw
NTZkYjA2YTBjOGM1NTYxNDgyMDczMWIxNTkxMzNkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsK
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIFZlY3RvcjxUaGlyZFBh
cnR5RGF0YT4gYWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
VmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+IGFn
Z3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IEhhc2hN
YXA8UmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXA7IH0KIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpLZXllZEVuY29kZXI+IGNyZWF0ZUVuY29kZXJGcm9tRGF0
YSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4
IGFlM2M4ZWVmOGE5OTU1ZDY2MDE3OTljOWJhZjM5YzdhNDhiNjc5ZGIuLjdkYWRmNGRiODg3MzUy
YWNmOWUxZWY1ZjQwMDc0ZmFlZWFjMDNhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIGNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgVmVjdG9yPFRoaXJkUGFydHlE
YXRhPiBhZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBW
ZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gYWdn
cmVnYXRlZFRoaXJkUGFydHlEYXRhKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUNvb2tpZUJsb2NraW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOwogICAg
IHZvaWQgdXBkYXRlQ29va2llQmxvY2tpbmdGb3JEb21haW5zKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluc1RvQmxvY2tDb29raWVzRm9yJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggZDQ1
ODZkNWEwODgxMGRhY2E2MzYwMDZkZDBiMGFkNGU5YjZhMjhiYy4uODIzOWQ2ZDlmNWY5NDI1MGE4
MTE1ZTBlMzUxOTgyOWY5ZGRmZDE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTExNTIsOSArMTE1MiwyMiBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5p
c2hlZCh1bnNpZwogICAgICAgICBjb25zdF9jYXN0PFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZSo+KHRoaXMpLT5uZXR3b3JrU2Vzc2lvbigpLT5ub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVt
ZXRyeUZpbmlzaGVkKG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzLCBudW1iZXJPZlByZXZhbGVu
dFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2Vz
V2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgdG9wUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVy
YWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9uLCBtZWRpYW5EYXlzU2luY2VVc2VySW50ZXJh
Y3Rpb25QcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb24sIHRvcDNOdW1iZXJPZlBy
ZXZhbGVudFJlc291cmNlc1dpdGhVSSwgdG9wM01lZGlhblN1YkZyYW1lV2l0aG91dFVJLCB0b3Az
TWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUksIHRvcDNNZWRpYW5VbmlxdWVSZWRpcmVjdHNXaXRo
b3V0VUksIHRvcDNNZWRpYW5EYXRhUmVjb3Jkc1JlbW92ZWRXaXRob3V0VUkpOwogfQogCi1WZWN0
b3I8VGhpcmRQYXJ0eURhdGE+IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6YWdncmVn
YXRlZFRoaXJkUGFydHlEYXRhKCkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjphZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuIG1fc3RhdGlzdGljc1N0b3JlLT5hZ2dyZWdh
dGVkVGhpcmRQYXJ0eURhdGEoKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisg
ICAgcG9zdFRhc2soW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSAgeworICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKSB7
CisgICAgICAgICAgICBwb3N0VGFza1JlcGx5KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBhdXRvIHRoaXJkUGFydHlEYXRhID0gbV9zdGF0aXN0aWNzU3RvcmUt
PmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YSgpOworICAgICAgICBwb3N0VGFza1JlcGx5KFt0aGly
ZFBhcnR5RGF0YSA9IFdURk1vdmUodGhpcmRQYXJ0eURhdGEpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZSh0aGlyZFBhcnR5RGF0YSkpOworICAgICAgICB9KTsKKyAg
ICB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggYzU5MWZjMmUzYzkwODZjMjA1OGFiNDc1YzZk
MjM0YTYzNDRmOTE1Ny4uMmU1YjQ0ZmZhZDVmNGZiM2JhODA2ZmM0NzI2YjU4NTQ2ZDc1OWZlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMjcs
NiArMjcsOSBAQAogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAorI2lu
Y2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUg
IkVuY29kZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgpA
QCAtNzgsNiArODEsMzAgQEAgc3RydWN0IFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVz
Rm9yIHsKICAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciBpc29sYXRlZENv
cHkoKSBjb25zdCB7IHJldHVybiB7IGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvci5p
c29sYXRlZENvcHkoKSwgZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvci5pc29sYXRlZENv
cHkoKSwgZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkuaXNvbGF0ZWRDb3B5
KCkgfTsgfQogfTsKIAorY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGZpbmFs
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZSwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4geworcHVibGljOgorICAgIHVzaW5n
IFJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
OworICAgIHVzaW5nIFJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW47CisgICAgdXNpbmcgVG9wRnJhbWVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bjsKKyAgICB1c2luZyBTdWJGcmFtZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
OworICAgIHVzaW5nIFN1YlJlc291cmNlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW47CisgICAgdXNpbmcgUmVkaXJlY3REb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bjsKKyAgICB1c2luZyBSZWRpcmVjdGVkRnJvbURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluOworICAgIHVzaW5nIFJlZGlyZWN0ZWRUb0RvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluOworICAgIHVzaW5nIE5hdmlnYXRlZEZyb21Eb21haW4gPSBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbjsKKyAgICB1c2luZyBOYXZpZ2F0ZWRUb0RvbWFpbiA9IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluOworICAgIHVzaW5nIERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyA9
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOworICAgIHVzaW5nIE9wZW5lckRvbWFpbiA9IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOworICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NXYXNHcmFu
dGVkID0gV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ7CisgICAgdXNpbmcgU3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duID0gV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duOworCisgICAgc3RhdGljIFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNy
ZWF0ZShOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJ
bmNsdWRlTG9jYWxob3N0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKG5ldHdvcmtTZXNzaW9uLCByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5LCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KSk7CisgICAgfQorCisg
ICAgfldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpOworCiBzdHJ1Y3QgVGhpcmRQYXJ0
eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHkgewogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIGZpcnN0UGFydHlEb21haW47CiAgICAgYm9vbCBzdG9yYWdlQWNjZXNzR3JhbnRlZDsKQEAg
LTg3LDYgKzExNCwyNSBAQCBzdHJ1Y3QgVGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFy
dHkgewogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiSGFzIGJlZW4gZ3JhbnRlZCBzdG9yYWdl
IGFjY2VzcyB1bmRlciAiLCBmaXJzdFBhcnR5RG9tYWluLnN0cmluZygpLCAiOiAiLCBzdG9yYWdl
QWNjZXNzR3JhbnRlZCA/ICcxJyA6ICcwJyk7CiAgICAgfQogCisgICAgdm9pZCBlbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBmaXJz
dFBhcnR5RG9tYWluOworICAgICAgICBlbmNvZGVyIDw8IHN0b3JhZ2VBY2Nlc3NHcmFudGVkOwor
ICAgIH0KKworICAgIHN0YXRpYyBPcHRpb25hbDxUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmly
c3RQYXJ0eT4gZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRlY29kZWREb21haW47CisgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGVjb2RlZERvbWFpbikpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgICAgIGJvb2wgZGVjb2RlZFN0b3JhZ2VBY2Nlc3M7CisgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZGVjb2RlZFN0b3JhZ2VBY2Nlc3MpKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4ge3sgZGVjb2RlZERvbWFpbiwgZGVjb2Rl
ZFN0b3JhZ2VBY2Nlc3MgfX07CisgICAgfQorCiAgICAgYm9vbCBvcGVyYXRvcj09KFRoaXJkUGFy
dHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5IGNvbnN0IG90aGVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIGZpcnN0UGFydHlEb21haW4gPT0gb3RoZXIuZmlyc3RQYXJ0eURvbWFpbiAm
JiBzdG9yYWdlQWNjZXNzR3JhbnRlZCA9PSBvdGhlci5zdG9yYWdlQWNjZXNzR3JhbnRlZDsKQEAg
LTExMiwzNSArMTU4LDMxIEBAIHN0cnVjdCBUaGlyZFBhcnR5RGF0YSB7CiAgICAgICAgIHJldHVy
biBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcjwo
Y29uc3QgVGhpcmRQYXJ0eURhdGEgJm90aGVyKSBjb25zdAorICAgIHZvaWQgZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiB1bmRlckZpcnN0
UGFydGllcy5zaXplKCkgPCBvdGhlci51bmRlckZpcnN0UGFydGllcy5zaXplKCk7CisgICAgICAg
IGVuY29kZXIgPDwgdGhpcmRQYXJ0eURvbWFpbjsKKyAgICAgICAgZW5jb2RlciA8PCB1bmRlckZp
cnN0UGFydGllczsKICAgICB9Ci19OwogCi1jbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7Ci1wdWJsaWM6
Ci0gICAgdXNpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFdlYkNvcmU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3M7Ci0gICAgdXNpbmcgUmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBUb3BGcmFtZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluOwotICAgIHVzaW5nIFN1YkZyYW1lRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW47Ci0gICAgdXNpbmcgU3ViUmVzb3VyY2VEb21haW4gPSBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBSZWRpcmVjdERvbWFpbiA9IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluOwotICAgIHVzaW5nIFJlZGlyZWN0ZWRGcm9tRG9tYWluID0gV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgUmVkaXJlY3RlZFRvRG9tYWluID0gV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgTmF2aWdhdGVkRnJvbURvbWFpbiA9IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIE5hdmlnYXRlZFRvRG9tYWluID0g
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgRG9tYWluSW5OZWVkT2ZTdG9y
YWdlQWNjZXNzID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgT3BlbmVy
RG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgU3RvcmFnZUFj
Y2Vzc1dhc0dyYW50ZWQgPSBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDsKLSAgICB1
c2luZyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gPSBXZWJDb3JlOjpTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd247Ci0KLSAgICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZT4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgY29uc3QgU3Ry
aW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBTaG91bGRJbmNsdWRlTG9jYWxo
b3N0IHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpCisgICAgc3RhdGljIE9wdGlvbmFsPFRoaXJkUGFy
dHlEYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKG5ldHdvcmtT
ZXNzaW9uLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBzaG91bGRJbmNsdWRlTG9j
YWxob3N0KSk7CisgICAgICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRlY29kZWREb21h
aW47CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGVjb2RlZERvbWFpbikpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxUaGly
ZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4+IGRlY29kZWRGaXJzdFBhcnRpZXM7Cisg
ICAgICAgIGRlY29kZXIgPj4gZGVjb2RlZEZpcnN0UGFydGllczsKKyAgICAgICAgaWYgKCFkZWNv
ZGVkRmlyc3RQYXJ0aWVzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
ICAgICByZXR1cm4ge3sgZGVjb2RlZERvbWFpbiwgV1RGTW92ZSgqZGVjb2RlZEZpcnN0UGFydGll
cykgfX07CiAgICAgfQogCi0gICAgfldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpOwor
ICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFRoaXJkUGFydHlEYXRhICZvdGhlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiB1bmRlckZpcnN0UGFydGllcy5zaXplKCkgPCBvdGhlci51bmRl
ckZpcnN0UGFydGllcy5zaXplKCk7CisgICAgfQorfTsKIAogICAgIHZvaWQgZGlkRGVzdHJveU5l
dHdvcmtTZXNzaW9uKCk7CiAKQEAgLTIzNSw3ICsyNzcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVu
ZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IG9wZW5lcklELCBPcGVuZXJEb21haW4mJik7Ci0gICAgVmVjdG9yPFRoaXJkUGFydHlEYXRhPiBh
Z2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoKTsKKyAgICB2b2lkIGFnZ3JlZ2F0ZWRUaGlyZFBhcnR5
RGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiYmKT4mJik7CiAKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKE5ldHdvcmtTZXNzaW9uJiwgY29uc3Qg
U3RyaW5nJiwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDkzMjM1N2U5NjZhZWEzM2I3MzA2
NDE5N2VhM2YzOWIyNGU2MjY3YjEuLjRiYmVhNzI0MmY2MjhhNmIzYjYzNzY5NDNhYWFmZGQ5ZDAx
YmEzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCkBAIC03NTAsNiArNzUwLDE5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNjaGVkdWxl
Q2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklECiAgICAg
fQogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YVN1bW1hcnkoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24g
PSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSkKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmFnZ3JlZ2F0ZWRU
aGlyZFBhcnR5RGF0YShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7
CisgICAgfQorfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1
bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9u
ID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDRkNGFkZDAwY2UzODZjMDdlZDg3
NjY0NGFlZmU0NzgxOTk1ZWVmMDIuLjViYzE2NWFlNjNmMGE1NDM1ODc3ZmJmNjczNTA2ZTAyZWQ2
ZDNjMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKQEAgLTIzMSw2ICsyMzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldENhY2hlTWF4QWdl
Q2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2No
ZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCwgT3B0aW9uYWw8
V2FsbFRpbWU+IG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGdldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhU3VtbWFyeShQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4mJik+
JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShQQUw6OlNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlU3RhdGlz
dGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeShQQUw6OlNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGVlMDg2
YzBjZDE2NzZlNTBkNzhlZGE5NjIwMWNjMzcxYWM0MmZjOGEuLjJhZDk4ODFmY2Y3ZWE4NDRkODJi
Yzc3ZmFjMDdmNDkzZDdjNGRlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTEzLDYgKzExMyw3IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRDYWNo
ZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFNlY29uZHMgc2Vjb25kcykgLT4gKCkgQXN5bmMKICAgICBTZXRHcmFuZGZhdGhlcmVkKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VE
b21haW4sIGJvb2wgaXNHcmFuZGZhdGhlcmVkKSAtPiAoKSBBc3luYwogICAgIFNldFVzZUlUUERh
dGFiYXNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCB2YWx1ZSkgLT4gKCkgQXN5bmMK
KyAgICBHZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKSAtPiAoVmVjdG9yPFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpUaGlyZFBhcnR5RGF0YT4gdGhpcmRQYXJ0eURhdGEpIEFzeW5jCiAgICAgU2V0R3JhbmRm
YXRoZXJpbmdUaW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzKSAt
PiAoKSBBc3luYwogICAgIFNldE1heFN0YXRpc3RpY3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgdWludDY0X3QgbWF4aW11bUVudHJ5Q291bnQpIC0+ICgpIEFzeW5jCiAgICAgU2V0
TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgU2Vjb25kcyBzZWNvbmRzKSAtPiAoKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SU9iamVjdC5oCmluZGV4IGI3Y2E5N2FmYTAwZDkzYzNiNDk2YjQxZDVjMDg2YWYxZTk4MjNhZjIu
LmE2ZDA4OGRlOTBjNmUzOTIzMjFjZGYxMDczNmE0MWUwNWJiYjI2OWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAgLTE1Myw2ICsxNTMsOCBAQCBwdWJsaWM6CiAgICAgICAg
IFByZWZlcmVuY2VzLAogICAgICAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm1SZXN1bHRM
aXN0ZW5lciwKICAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLAorICAgICAgICBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eSwKKyAgICAgICAgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RoaXJkUGFydHksCiAgICAgICAgIFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFJl
c3VsdExpc3RlbmVyLAogICAgICAgICBSdW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5lciwK
ICAgICAgICAgUnVuSmF2YVNjcmlwdENvbmZpcm1SZXN1bHRMaXN0ZW5lciwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQppbmRleCAxNDNlYjA4OTFiOWYyYmFjNGIwMDFiMTE0
NmViZDM4Njc3NjU0ZmVjLi4yMThhYmU3MzQ4NDQzNTVjNDliYTA1ZmUzM2Y0MGZkY2UxOTY1OTNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCkBAIC04MCw2ICs4MCw4
IEBACiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSW50ZXJu
YWxEZWJ1Z0ZlYXR1cmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJz
dFBhcnR5SW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGly
ZFBhcnR5SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5o
IgogI2ltcG9ydCAiX1dLVXNlckluaXRpYXRlZEFjdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJf
V0tVc2VyU3R5bGVTaGVldEludGVybmFsLmgiCkBAIC0zMjUsNiArMzI3LDE0IEBAIHZvaWQqIE9i
amVjdDo6bmV3T2JqZWN0KHNpemVfdCBzaXplLCBUeXBlIHR5cGUpCiAgICAgICAgIHdyYXBwZXIg
PSBbX1dLQ3VzdG9tSGVhZGVyRmllbGRzIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBj
YXNlIFR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5OgorICAgICAgICB3cmFw
cGVyID0gW19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5IGFsbG9jXTsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIFR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBh
cnR5OgorICAgICAgICB3cmFwcGVyID0gW19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBh
cnR5IGFsbG9jXTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIFR5cGU6OlVzZXJDb250ZW50
V29ybGQ6CiAgICAgICAgIHdyYXBwZXIgPSBbX1dLVXNlckNvbnRlbnRXb3JsZCBhbGxvY107CiAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45NzFjYzgwOWZlZDZmMmMzODkyNGQwNzJkYzg3ZWJlNDRlZTUwNTJjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NGaXJzdFBhcnR5LmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmly
c3RQYXJ0eSBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5PiB7CitwdWJsaWM6CisgICAgdm9pZCBz
ZXRGaXJzdFBhcnR5RG9tYWluKFdURjo6U3RyaW5nIGZpcnN0UGFydHlEb21haW4pIHsgbV9maXJz
dFBhcnR5RG9tYWluID0gZmlyc3RQYXJ0eURvbWFpbjsgfQorICAgIFdURjo6U3RyaW5nJiBmaXJz
dFBhcnR5RG9tYWluKCkgeyByZXR1cm4gbV9maXJzdFBhcnR5RG9tYWluOyB9CisKKyAgICB2b2lk
IHNldFN0b3JhZ2VBY2Nlc3MoYm9vbCBzdG9yYWdlQWNjZXNzKSB7IG1fdGhpcmRQYXJ0eVN0b3Jh
Z2VBY2Nlc3NHcmFudGVkID0gc3RvcmFnZUFjY2VzczsgfQorICAgIGJvb2wgc3RvcmFnZUFjY2Vz
cygpIHsgcmV0dXJuIG1fdGhpcmRQYXJ0eVN0b3JhZ2VBY2Nlc3NHcmFudGVkOyB9CisKK3ByaXZh
dGU6CisgICAgV1RGOjpTdHJpbmcgbV9maXJzdFBhcnR5RG9tYWluOworICAgIGJvb2wgbV90aGly
ZFBhcnR5U3RvcmFnZUFjY2Vzc0dyYW50ZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBUEkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVGhpcmRQYXJ0eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVJlc291
cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODA0MjA1MGRjZTg0ZjY3
NTkyNDBjNjhhOWVkMGZlYzNmMDMxMWUwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5oCkBA
IC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFQ
SU9iamVjdC5oIgorI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgQVBJIHsKKworY2xh
c3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkgZmluYWwgOiBwdWJsaWMgQVBJOjpP
YmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQ
YXJ0eT4geworcHVibGljOgorICAgIHZvaWQgc2V0VGhpcmRQYXJ0eURvbWFpbihXVEY6OlN0cmlu
ZyB0aGlyZFBhcnR5RG9tYWluKSB7IG1fdGhpcmRQYXJ0eURvbWFpbiA9IHRoaXJkUGFydHlEb21h
aW47IH0KKyAgICBXVEY6OlN0cmluZyYgdGhpcmRQYXJ0eURvbWFpbigpIHsgcmV0dXJuIG1fdGhp
cmRQYXJ0eURvbWFpbjsgfQorCisgICAgdm9pZCBzZXRVbmRlckZpcnN0UGFydGllcyhWZWN0b3I8
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9y
U3BlY2lmaWNGaXJzdFBhcnR5PiYmIHVuZGVyRmlyc3RQYXJ0aWVzKSB7IG1fdW5kZXJGaXJzdFBh
cnRpZXMgPSBXVEZNb3ZlKHVuZGVyRmlyc3RQYXJ0aWVzKTsgfQorICAgIFZlY3RvcjxXZWJLaXQ6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZp
Y0ZpcnN0UGFydHk+IHVuZGVyRmlyc3RQYXJ0aWVzKCkgeyByZXR1cm4gbV91bmRlckZpcnN0UGFy
dGllczsgfQorCitwcml2YXRlOgorICAgIFdURjo6U3RyaW5nIG1fdGhpcmRQYXJ0eURvbWFpbjsK
KyAgICBWZWN0b3I8V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJk
UGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBtX3VuZGVyRmlyc3RQYXJ0aWVzOworfTsK
KworfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCA0ODQ2N2I3YTgzMzIxMGIy
OWEwYWVkMGVhYjQ0YTA4MDJmM2Y4ZTM2Li5jMWUwZDcyMmE5MDA2NGIzZWI1OTQ4MjhkMjViOTc4
NTAwY2NkYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQgIldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2ltcG9ydCAiV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1RlbGVtZXRyeS5oIgogI2ltcG9ydCAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5o
IgorI2ltcG9ydCAiX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlJbnRlcm5hbC5o
IgogI2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgog
I2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLmgiCiAjaW1wb3J0IDxXZWJDb3Jl
L0NyZWRlbnRpYWwuaD4KQEAgLTUxOCw2ICs1MTksMjQgQEAgLSAodm9pZClfY2xlYXJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogI2VuZGlm
CiB9CiAKKy0gKHZvaWQpX2dldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeToodm9p
ZCAoXikoTlNBcnJheTxfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eSAqPiAqKSlj
b21wbGV0aW9uSGFuZGxlcgoreworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPmdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3Vt
bWFyeShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIp
XSAoYXV0byYmIHRoaXJkUGFydHlEb21haW5zKSB7CisgICAgICAgIE5TTXV0YWJsZUFycmF5PF9X
S1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5ICo+ICphcGlUaGlyZFBhcnRpZXMgPSBb
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTp0aGlyZFBhcnR5RG9tYWlu
cy5zaXplKCldIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgZm9yIChhdXRvJiB0aGlyZFBhcnR5IDog
dGhpcmRQYXJ0eURvbWFpbnMpIHsKKyAgICAgICAgICAgIF9XS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUaGlyZFBhcnR5ICp3a1RoaXJkUGFydHkgPSBbW19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NU
aGlyZFBhcnR5IGFsbG9jXSBpbml0XTsKKyAgICAgICAgICAgIFt3a1RoaXJkUGFydHkgX3NldFRo
aXJkUGFydHlEb21haW46dGhpcmRQYXJ0eS50aGlyZFBhcnR5RG9tYWluLnN0cmluZygpXTsKKyAg
ICAgICAgICAgIFt3a1RoaXJkUGFydHkgX3NldFVuZGVyRmlyc3RQYXJ0aWVzOlt3a1RoaXJkUGFy
dHkgX2dldFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlMaXN0OiZ0aGlyZFBhcnR5
LnVuZGVyRmlyc3RQYXJ0aWVzXV07CisgICAgICAgICAgICBbYXBpVGhpcmRQYXJ0aWVzIGFkZE9i
amVjdDp3a1RoaXJkUGFydHldOworICAgICAgICB9CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGFwaVRoaXJkUGFydGllcyk7CisgICAgfSk7CisjZWxzZQorICAgIGNvbXBsZXRpb25IYW5kbGVy
KG5pbCk7CisjZW5kaWYKK30KKwogLSAodm9pZClfaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVu
ZGVyRmlyc3RQYXJ0eTooTlNVUkwgKilmaXJzdFBhcnR5VVJMIHRoaXJkUGFydHk6KE5TVVJMICop
dGhpcmRQYXJ0eVVSTCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpY29tcGxldGlv
bkhhbmRsZXIKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhU3RvcmVQcml2YXRlLmgKaW5kZXggNzBmYzE0NjU3M2QyM2VhNGU1MGIzOWJlY2M1ODMyYjIy
YTMyMDIyZC4uNDkxYjUyYzA2ODJjN2I4MWY2YTVkNjA2N2JhNTdkNTliYTAyNzg2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC0yOSw2ICsyOSw3IEBAIE5TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCiAKIEBjbGFzcyBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjsKIEBjbGFz
cyBXS1dlYlZpZXc7CitAY2xhc3MgX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHk7
CiAKIEBwcm90b2NvbCBfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU7CiAKQEAgLTcxLDYgKzcy
LDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNpdGVEYXRhU3RvcmVG
ZXRjaE9wdGlvbnMpIHsKIC0gKHZvaWQpX2xvZ1VzZXJJbnRlcmFjdGlvbjooTlNVUkwgKilkb21h
aW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2
b2lkKV9zZXRQcmV2YWxlbnREb21haW46KE5TVVJMICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjE1KSwgaW9zKDEzLjApKTsKIC0gKHZvaWQpX2dldElzUHJldmFsZW50RG9tYWluOihOU1VS
TCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CistICh2b2lk
KV9nZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnk6KHZvaWQgKF4pKE5TQXJyYXk8
X1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkgKj4gKikpY29tcGxldGlvbkhhbmRs
ZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CiAtICh2b2lkKV9j
bGVhclByZXZhbGVudERvbWFpbjooTlNVUkwgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV9jbGVhclJlc291cmNlTG9hZFN0
YXRpc3RpY3M6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV9pc1JlZ2lz
dGVyZWRBc1N1YnJlc291cmNlVW5kZXJGaXJzdFBhcnR5OihOU1VSTCAqKWZpcnN0UGFydHlVUkwg
dGhpcmRQYXJ0eTooTlNVUkwgKil0aGlyZFBhcnR5VVJMIGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0ZpcnN0UGFydHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDFiNWVkM2Q1OWM0ODg5MTE1MWI1NjAxOWYwYjc1
NzIyNzQ1MzNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5LmgKQEAgLTAsMCArMSwz
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0BpbnRlcmZhY2Ug
X1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkgOiBOU09iamVjdAorCitAcHJvcGVy
dHkgKG5vbmF0b21pYywgY29weSwgc2V0dGVyPV9zZXRGaXJzdFBhcnR5RG9tYWluOikgTlNTdHJp
bmcgKl9maXJzdFBhcnR5RG9tYWluOworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0
VGhpcmRQYXJ0eVN0b3JhZ2VBY2Nlc3NHcmFudGVkOikgQk9PTCBfdGhpcmRQYXJ0eVN0b3JhZ2VB
Y2Nlc3NHcmFudGVkOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NGaXJzdFBhcnR5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhMTgyZTBk
YzQ2OGYxMjQ4ZDNlYzYzZjJjNWUxNGNjNDRmYjA1OTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Zp
cnN0UGFydHkubW0KQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlJbnRlcm5h
bC5oIgorCitAaW1wbGVtZW50YXRpb24gX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFy
dHkKKworLSAoaW5zdGFuY2V0eXBlKWluaXQKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGlu
aXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJ
bldyYXBwZXI8QVBJOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eT4oc2VsZik7Cisg
ICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIF9maXJzdFBhcnR5
LT5BUEk6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5Ojp+UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0ZpcnN0UGFydHkoKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQp
X3NldEZpcnN0UGFydHlEb21haW46KE5TU3RyaW5nICopZmlyc3RQYXJ0eURvbWFpbgoreworICAg
IF9maXJzdFBhcnR5LT5zZXRGaXJzdFBhcnR5RG9tYWluKFN0cmluZyB7IGZpcnN0UGFydHlEb21h
aW4gfSk7Cit9CisKKy0gKE5TU3RyaW5nICopX2ZpcnN0UGFydHlEb21haW4KK3sKKyAgICByZXR1
cm4gX2ZpcnN0UGFydHktPmZpcnN0UGFydHlEb21haW4oKTsKK30KKworLSAodm9pZClfc2V0U3Rv
cmFnZUFjY2VzczooQk9PTClzdG9yYWdlQWNjZXNzCit7CisgICAgX2ZpcnN0UGFydHktPnNldFN0
b3JhZ2VBY2Nlc3Moc3RvcmFnZUFjY2Vzcyk7Cit9CisKKy0gKEJPT0wpX3N0b3JhZ2VBY2Nlc3MK
K3sKKyAgICByZXR1cm4gX2ZpcnN0UGFydHktPnN0b3JhZ2VBY2Nlc3MoKTsKK30KKworLSAoQVBJ
OjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4gKl9maXJzdFBhcnR5OworfQorCitA
ZW5kCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlJ
bnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2NDAwZmNhYWVmNGZkOWI1MTQxYWU0ZjJmOGUzZmZmMWFj
YWU0ODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlJbnRlcm5hbC5oCkBAIC0wLDAg
KzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCAiQVBJUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkuaCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCisjaW1w
b3J0ICJfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5PiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gX1dL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHk7Cit9OworCit9CisKK0BpbnRlcmZhY2Ug
X1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkgKCkgPFdLT2JqZWN0PiB7CitAcGFj
a2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NG
aXJzdFBhcnR5PiBfZmlyc3RQYXJ0eTsKK30KK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NUaGlyZFBhcnR5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQxY2Y2M2QzNGI1ZjFiMmM5MzM2ZmM1
Y2I2N2FkNjVlNzJkMTAwYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5oCkBAIC0w
LDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaCIKKyNpbXBvcnQgIl9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5
LmgiCisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0BpbnRlcmZhY2UgX1dLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1RoaXJkUGFydHkgOiBOU09iamVjdAorCitAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSwgc2V0dGVyPV9zZXRUaGlyZFBhcnR5RG9tYWluOikgTlNTdHJpbmcgKl90aGlyZFBh
cnR5RG9tYWluOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNldHRlcj1fc2V0VW5kZXJG
aXJzdFBhcnRpZXM6KSBOU0FycmF5PF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5
ICo+ICpfdW5kZXJGaXJzdFBhcnRpZXM7CisKKy0gKE5TQXJyYXk8X1dLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0ZpcnN0UGFydHkgKj4gKilfZ2V0V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQ
YXJ0eUxpc3Q6KFZlY3RvcjxXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+ICopdW5kZXJGaXJzdFBhcnRpZXM7
CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFy
dHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1RoaXJkUGFydHkubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDk4NWRiNjAwYzA1ZDM5ODAyYWEz
ZjBlZTNkOWM0OTc2MGViNWU4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5tbQpA
QCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUludGVybmFsLmgiCisKKyNpbXBv
cnQgIkFQSUFycmF5LmgiCisjaW1wb3J0ICJfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQ
YXJ0eS5oIgorI2ltcG9ydCA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorCitAaW1wbGVt
ZW50YXRpb24gX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkKKworLSAoTlNBcnJh
eTxfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eSAqPiAqKV9nZXRXS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5TGlzdDooVmVjdG9yPFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4g
Kil1bmRlckZpcnN0UGFydGllcworeworICAgIE5TTXV0YWJsZUFycmF5PF9XS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NGaXJzdFBhcnR5ICo+ICphcGlVbmRlckZpcnN0UGFydGllcyA9IFtOU011dGFi
bGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTp1bmRlckZpcnN0UGFydGllcy0+c2l6ZSgpXTsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIHRoaXJkUGFydHlEYXRhVW5kZXJGaXJzdFBhcnR5IDogKnVuZGVy
Rmlyc3RQYXJ0aWVzKSB7CisgICAgICAgIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBh
cnR5ICp3a0ZpcnN0UGFydHkgPSBbW19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5
IGFsbG9jXSBpbml0XTsKKyAgICAgICAgW3drRmlyc3RQYXJ0eSBfc2V0Rmlyc3RQYXJ0eURvbWFp
bjp0aGlyZFBhcnR5RGF0YVVuZGVyRmlyc3RQYXJ0eS5maXJzdFBhcnR5RG9tYWluLnN0cmluZygp
XTsKKyAgICAgICAgW3drRmlyc3RQYXJ0eSBfc2V0VGhpcmRQYXJ0eVN0b3JhZ2VBY2Nlc3NHcmFu
dGVkOnRoaXJkUGFydHlEYXRhVW5kZXJGaXJzdFBhcnR5LnN0b3JhZ2VBY2Nlc3NHcmFudGVkXTsK
KyAgICAgICAgW2FwaVVuZGVyRmlyc3RQYXJ0aWVzIGFkZE9iamVjdDp3a0ZpcnN0UGFydHldOwor
ICAgIH0KKyAgICByZXR1cm4gYXBpVW5kZXJGaXJzdFBhcnRpZXM7Cit9CisKKy0gKGluc3RhbmNl
dHlwZSlpbml0Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJl
dHVybiBuaWw7CisKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHk+KHNlbGYpOworICAgIHJldHVybiBzZWxmOwor
fQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBfdGhpcmRQYXJ0eS0+QVBJOjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVGhpcmRQYXJ0eTo6flJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5
KCk7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKV9zZXRUaGlyZFBhcnR5RG9t
YWluOihOU1N0cmluZyAqKXRoaXJkUGFydHlEb21haW4KK3sKKyAgICBfdGhpcmRQYXJ0eS0+c2V0
VGhpcmRQYXJ0eURvbWFpbihTdHJpbmcgeyB0aGlyZFBhcnR5RG9tYWluIH0pOworfQorCistIChO
U1N0cmluZyAqKV90aGlyZFBhcnR5RG9tYWluCit7CisgICAgcmV0dXJuIF90aGlyZFBhcnR5LT50
aGlyZFBhcnR5RG9tYWluKCk7Cit9CisKKy0gKHZvaWQpX3NldFVuZGVyRmlyc3RQYXJ0aWVzOihO
U0FycmF5PF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5ICo+ICopdW5kZXJGaXJz
dFBhcnRpZXMKK3sKKyAgICBWZWN0b3I8V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBhcGlVbmRlckZpcnN0
UGFydGllczsKKyAgICBbdW5kZXJGaXJzdFBhcnRpZXMgZW51bWVyYXRlT2JqZWN0c1VzaW5nQmxv
Y2s6WyZdKF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5KiBmaXJzdFBhcnR5LCBO
U1VJbnRlZ2VyLCBCT09MKikgeworICAgICAgICBhcGlVbmRlckZpcnN0UGFydGllcy5hcHBlbmQo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9y
U3BlY2lmaWNGaXJzdFBhcnR5IHsgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tl
ZENyZWF0ZUZyb21Ib3N0KFtmaXJzdFBhcnR5IF9maXJzdFBhcnR5RG9tYWluXSksIHN0YXRpY19j
YXN0PGJvb2w+KFtmaXJzdFBhcnR5IF90aGlyZFBhcnR5U3RvcmFnZUFjY2Vzc0dyYW50ZWRdKSB9
KTsKKyAgICB9XTsKKworICAgIF90aGlyZFBhcnR5LT5zZXRVbmRlckZpcnN0UGFydGllcyhXVEZN
b3ZlKGFwaVVuZGVyRmlyc3RQYXJ0aWVzKSk7Cit9CisKKy0gKE5TQXJyYXk8X1dLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0ZpcnN0UGFydHkgKj4gKilfdW5kZXJGaXJzdFBhcnRpZXMKK3sKKyAgICBh
dXRvIGFwaUZpcnN0UGFydGllcyA9IF90aGlyZFBhcnR5LT51bmRlckZpcnN0UGFydGllcygpOwor
ICAgIHJldHVybiBbIHNlbGYgX2dldFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlM
aXN0OiZhcGlGaXJzdFBhcnRpZXMgXTsKK30KKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QK
K3sKKyAgICByZXR1cm4gKl90aGlyZFBhcnR5OworfQorCisKK0BlbmQKKwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUaGlyZFBhcnR5SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUludGVybmFsLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWJmNjI3MzhiNzk3NGI1YTQyZTcwZjJlNWQ2OGM0ZGYxYzc5ZmI0MQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVGhpcmRQYXJ0eUludGVybmFsLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJBUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhp
cmRQYXJ0eS5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIKKyNpbXBvcnQgIl9XS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NGaXJzdFBhcnR5SW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NUaGlyZFBhcnR5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPEFQSTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJk
UGFydHk+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVGhpcmRQYXJ0eTsKK307CisKK30KKworQGludGVyZmFjZSBfV0tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVGhpcmRQYXJ0eSAoKSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAgQVBJOjpPYmpl
Y3RTdG9yYWdlPEFQSTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHk+IF90aGlyZFBh
cnR5OworfQorCitAZW5kCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGFhOTFhZTBiNzQ2MzdiYzMyM2U2
OGY4MjAzNzlkN2MyNWI2ZTk2OTIuLjEwYjY5MmVkZDMyODdmMGZmMDgyYzQ1Zjg0NjU3ZjA4MmNk
MDc3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtODE0LDYgKzgxNCwxNiBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgQwogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OkdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKHNlc3Npb25JRCksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OlRoaXJkUGFydHlEYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIWNh
blNlbmRNZXNzYWdlKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OkdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeShzZXNzaW9u
SUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKaW5kZXggNzZlODJhN2I5NzFkOGVkMmMyMDM4YzE5NWFmZTk5YmU1NTdlMWNjOS4u
OTFlMDk2NDYwYjIyMDVhYzE5MWM4MTdmZWFkNDc4ZWIxM2JiZGZhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAg
LTEzNSw2ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgZ2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFTdW1tYXJ5KFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiYmKT4mJik7CiAgICAgdm9pZCBnZXRB
bGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U3RyaW5nPiBkb21haW5zKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFn
ZUFjY2Vzc0NvbmZpcm0oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCByZXNldFBhcmFtZXRlcnNU
b0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IGIyZjlmYzI0OWZhNDhlYjVmZGMzZjYzNGE5ZjU5NGMx
NjM2NzYwNDMuLjE5OTUxMGU0MmVkMWU0ODQxMDEwMDA0ZDQyNGE2MDg1NDgxNDJmZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCkBAIC0xNTEwLDYgKzE1MTAsMTYgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1vZGlmaWVkU2lu
Y2UKICAgICB9CiB9CiAKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFTdW1tYXJ5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBmb3IgKGF1
dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHBy
b2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKKyAgICAgICAgICAgIHByb2Nl
c3MtPmdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeShtX3Nlc3Npb25JRCwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0KK30KKwogdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVy
U3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmgKaW5kZXggMjcwYzJjNzhhOGM5MzQ1YmYwODE2NjJlNGNjNTk4ODEwMGRlOTA4NS4u
YTc1YjFhZTZkY2I3YTRiMzNiZjcwZmVhMjhiM2Q2YzMyMGNkY2FiYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRh
U3RvcmVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+CkBAIC0xNjAsNiArMTYxLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVu
dChXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
U3VtbWFyeShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiYmKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZVN0
YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeSgpOwogICAgIHZvaWQgc2V0R3JhbmRmYXRo
ZXJlZChjb25zdCBVUkwmLCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjcz
MjhlMjQ1YzAwODc1ZjQyZDQ4Y2ZhZTcwZDM0OGEwN2ViYzUzYi4uMjJlMjU3MTk0ZmViZWFjMjI2
YjA1ZmYxYjAyNDFmOGMzNmRkZTY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MzIsNiArOTMyLDE0IEBACiAJCTQ2QzM5MjI5MjMx
NkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMzOTIyODIzMTZFQzREMDA4RUVEOUIg
LyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oICovOyB9OwogCQk0NkRGMDYzQzFGMzkwNUY4MDAx
OTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyog
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggKi87IH07CiAJCTQ2RjlCMjYzMjM1MjZFRjMw
MDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAvKiBX
ZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCAqLzsgfTsKKwkJNDlCQ0ExOTIyM0ExNzc2NjAwMjhB
ODM2IC8qIEFQSVJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUJDQTE5MTIzQTE3NzY2MDAyOEE4
MzYgLyogQVBJUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkuaCAqLzsgfTsKKwkJNDlC
Q0ExOTUyM0ExOENGRDAwMjhBODM2IC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBh
cnR5SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ5QkNBMTkwMjNBMTc1NDkwMDI4QTgzNiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Rmlyc3RQYXJ0eUludGVybmFsLmggKi87IH07CisJCTQ5QkNBMTk3MjNBMTkzMEQwMDI4QTgzNiAv
KiBBUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlCQ0ExOTYyM0ExOEY2MjAwMjhBODM2IC8q
IEFQSVJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5LmggKi87IH07CisJCTQ5RkJFRkZE
MjM5QjAxMUQwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkJFRkZD
MjM5QjAxMUQwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5t
bSAqLzsgfTsKKwkJNDlGQkVGRkYyMzlCMDEyRjAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NUaGlyZFBhcnR5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDlGQkVGRkUyMzlCMDEyRjAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NUaGlyZFBhcnR5Lm1tICovOyB9OworCQk0OUZCRjAwMDIzOUIxRjc1MDBCRDAzMkYg
LyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkJFRkZBMjM5QUQ5NzgwMEJEMDMyRiAv
KiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5oICovOyB9OworCQk0OUZCRjAw
MTIzOUIxRjhEMDBCRDAzMkYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkJFRkZC
MjM5QURCMTgwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5o
ICovOyB9OworCQk0OUZCRjAwOTIzOUYwOEUwMDBCRDAzMkYgLyogX1dLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RoaXJkUGFydHlJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDlGQkYwMDgyMzlGMDhFMDAwQkQwMzJGIC8qIF9XS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5SW50ZXJuYWwuaCAqLzsgfTsKIAkJNEEzQ0MxOEIxOUIw
NjQwRjAwRDE0QUVGIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEYzQTE5
QUY3QjA0MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHku
aCAqLzsgfTsKIAkJNEEzQ0MxOEQxOUIwNjQxOTAwRDE0QUVGIC8qIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRBNDEwRjNDMTlBRjdCMDQwMDJFQkFCNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5LmggKi87IH07CiAJCTRBM0NDMThGMTlCMDdCOEEwMEQxNEFFRiAvKiBXS1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0QTQxMEYzNjE5QUY3QUMzMDAyRUJBQjUgLyogV0tVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0zMzQxLDYgKzMzNDksMTQgQEAKIAkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJC
IC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkQ2FjaGVF
bnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OUJDQTE5MDIzQTE3NTQ5MDAy
OEE4MzYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlJbnRlcm5hbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUludGVybmFs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5QkNBMTkxMjNBMTc3NjYwMDI4QTgz
NiAvKiBBUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0OUJDQTE5NjIzQTE4RjYyMDAyOEE4MzYgLyogQVBJUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1RoaXJkUGFydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RoaXJkUGFydHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlGQkVG
RkEyMzlBRDk3ODAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5RkJFRkZCMjM5QURCMTgwMEJEMDMyRiAv
KiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBf
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0OUZCRUZGQzIzOUIwMTFEMDBCRDAzMkYgLyogX1dLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0ZpcnN0UGFydHkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDlGQkVGRkUyMzlCMDEyRjAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGly
ZFBhcnR5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1RoaXJkUGFydHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5RkJGMDA4MjM5
RjA4RTAwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUludGVy
bmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5
SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0MTBGMzUxOUFGN0FD
MzAwMkVCQUI1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNDEwRjM2MTlBRjdBQzMwMDJFQkFC
NSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNEE0MTBGMzkxOUFGN0IwNDAwMkVCQUI1IC8qIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY2MDUsNiArNjYyMSwxMiBAQAogCQkJCUE1
NUJBODBDMUJBMTJCRTEwMDdDRDMzRCAvKiBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJv
bGxlci5oICovLAogCQkJCUE1NUJBODBEMUJBMTJCRTEwMDdDRDMzRCAvKiBfV0tSZW1vdGVXZWJJ
bnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSAqLywKIAkJCQk5OTBFMUUwODIzODRBODhCMDA0NjAy
REYgLyogX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJQcml2YXRlLmggKi8sCisJ
CQkJNDlGQkVGRkIyMzlBREIxODAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NG
aXJzdFBhcnR5LmggKi8sCisJCQkJNDlGQkVGRkMyMzlCMDExRDAwQkQwMzJGIC8qIF9XS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5Lm1tICovLAorCQkJCTQ5QkNBMTkwMjNBMTc1NDkw
MDI4QTgzNiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUludGVybmFsLmgg
Ki8sCisJCQkJNDlGQkVGRkEyMzlBRDk3ODAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NUaGlyZFBhcnR5LmggKi8sCisJCQkJNDlGQkVGRkUyMzlCMDEyRjAwQkQwMzJGIC8qIF9X
S1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Lm1tICovLAorCQkJCTQ5RkJGMDA4MjM5
RjA4RTAwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUludGVy
bmFsLmggKi8sCiAJCQkJMUEwMDJEM0YxOTZCMzI5NDAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0
ZS5oICovLAogCQkJCTFBMDAyRDNFMTk2QjMyOTQwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGUu
bW0gKi8sCiAJCQkJMUEwMDJENDIxOTZCMzM3MDAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZUlu
dGVybmFsLmggKi8sCkBAIC04MjcxLDYgKzgyOTMsOCBAQAogCQkJCTFBRkREMzE0MTg5MUI1NDAw
MDE1Mzk3MCAvKiBBUElQb2xpY3lDbGllbnQuaCAqLywKIAkJCQk3Q0U0RDIxRDFBNDkxNENBMDBD
N0YxNTIgLyogQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcCAqLywKIAkJCQk3Q0U0RDIx
RTFBNDkxNENBMDBDN0YxNTIgLyogQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggKi8sCisJ
CQkJNDlCQ0ExOTEyM0ExNzc2NjAwMjhBODM2IC8qIEFQSVJlc291cmNlTG9hZFN0YXRpc3RpY3NG
aXJzdFBhcnR5LmggKi8sCisJCQkJNDlCQ0ExOTYyM0ExOEY2MjAwMjhBODM2IC8qIEFQSVJlc291
cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5LmggKi8sCiAJCQkJMUFGREU2NUYxOTU0RTlCMTAw
QzQ4RkZBIC8qIEFQSVNlc3Npb25TdGF0ZS5jcHAgKi8sCiAJCQkJMUFGREU2NjAxOTU0RTlCMTAw
QzQ4RkZBIC8qIEFQSVNlc3Npb25TdGF0ZS5oICovLAogCQkJCTFBNEQ2NjQ3MThBMkQ5MUEwMEQ4
MkUyMSAvKiBBUElVSUNsaWVudC5oICovLApAQCAtOTYwMCw2ICs5NjI0LDEwIEBACiAJCQkJOTkw
RTFFMDkyMzg0QUE1NzAwNDYwMkRGIC8qIF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9s
bGVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc3MjE2QjgxQTRFNkJFMDAwRENBNzE4
IC8qIF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxRjYw
NEJBQTE4ODlGQkI4MDBFRTAzOTUgLyogX1dLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHNJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDlGQkYwMDEyMzlCMUY4RDAwQkQwMzJGIC8qIF9XS1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5LmggaW4gSGVhZGVycyAqLywKKwkJCQk0OUJD
QTE5NTIzQTE4Q0ZEMDAyOEE4MzYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFy
dHlJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDlGQkYwMDAyMzlCMUY3NTAwQkQwMzJG
IC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5LmggaW4gSGVhZGVycyAqLywK
KwkJCQk0OUZCRjAwOTIzOUYwOEUwMDBCRDAzMkYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1RoaXJkUGFydHlJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc2MzExRkQxQTNGQjVG
NzAwNUEyRTUxIC8qIF9XS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkzNzYzMTFGRTFBM0ZCNjAwMDA1QTJFNTEgLyogX1dLU2FtZURvY3VtZW50TmF2aWdh
dGlvblR5cGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwMDJENDQxOTZCMzM4OTAw
QjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05Njk0LDYgKzk3
MjIsOCBAQAogCQkJCTFBQzEzMzZDMTg1NjVDN0EwMEYzRUMwNSAvKiBBUElQYWdlSGFuZGxlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUZERDMxNTE4OTFCNTQwMDAxNTM5NzAgLyogQVBJUG9saWN5
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0U0RDIyMDFBNDkxNENBMDBDN0YxNTIgLyog
QVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk0OUJDQTE5
MjIzQTE3NzY2MDAyOEE4MzYgLyogQVBJUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHku
aCBpbiBIZWFkZXJzICovLAorCQkJCTQ5QkNBMTk3MjNBMTkzMEQwMDI4QTgzNiAvKiBBUElSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYzNDQ0
NTYxMkE4ODVDODAwMDYxMkQ4IC8qIEFQSVNlY3VyaXR5T3JpZ2luLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQUZERTY2MjE5NTRFOUIxMDBDNDhGRkEgLyogQVBJU2Vzc2lvblN0YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTRENjY0ODE4QTJEOTFBMDBEODJFMjEgLyogQVBJVUlDbGllbnQuaCBp
biBIZWFkZXJzICovLApAQCAtMTE2MDgsNiArMTE2MzgsOCBAQAogCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTVDQkQ1OTVDMjI4MEVERjQwMDJCMjJB
QSAvKiBfV0tDdXN0b21IZWFkZXJGaWVsZHMubW0gaW4gU291cmNlcyAqLywKKwkJCQk0OUZCRUZG
RDIzOUIwMTFEMDBCRDAzMkYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHku
bW0gaW4gU291cmNlcyAqLywKKwkJCQk0OUZCRUZGRjIzOUIwMTJGMDBCRDAzMkYgLyogX1dLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkubW0gaW4gU291cmNlcyAqLywKIAkJCQk5OUU3
MTg5QTIxRjc5RDlFMDA1NUU5NzUgLyogX1dLVG91Y2hFdmVudEdlbmVyYXRvci5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTJEOTJBNzg0MjEyQjZBQjEwMEY0OTNGRCAvKiBBY3Rpdml0eUFzc2VydGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3QjIxMkI2QTcxMDBGNDkzRkQgLyogQXJn
dW1lbnRDb2RlcnMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2ZhZDZmYzlkNGQ2Njc2YWJmMzk3MWQzMzBiNDUx
Y2RkMTBmYTJmZi4uM2Y0OTdhZWMxZTkwOTQ3MGRhZDlmYmIzYzdjMmQyMGJmYTA0ZmM0YSAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIxIEBACisyMDE5LTEyLTExICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUu
Y29tPgorCisgICAgICAgIENyZWF0ZSBXZWJLaXQgQVBJIGNhbGxzIGZvciBJVFAgRGF0YQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0OTMyCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81NzYzMjc1Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHRlc3QgdG8gY2hlY2sgdGhhdCB0aGUgSVRQ
IGRhdGEgc3VtbWFyeSB3YXMgYmVpbmcgcHJvcGVybHkKKyAgICAgICAgYWdncmVnYXRlZCBhbmQg
c2VudCB0byB0aGUgVUlQcm9jZXNzLCBhbmQgdG8gbWFrZSBzdXJlIHRoZSBBUEkgd29ya3MKKyAg
ICAgICAgYXMgZXhwZWN0ZWQuIEFkZGVkIGludGVyZmFjZSBkZWNsYXJhdGlvbnMgdG8gdGhlIGZp
bGUgdG8gYWxsb3cgZm9yCisgICAgICAgIHVzZSBvZiB0aGUgX1dLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0ZpcnN0UGFydHkgYW5kCisgICAgICAgIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGly
ZFBhcnR5IGNsYXNzZXMgd2l0aG91dCBoYXZpbmcKKyAgICAgICAgdG8gaW1wb3J0IHRoZSBoZWFk
ZXIgZmlsZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3MubW06CisgICAgICAgIChURVNUKToKKwogMjAxOS0xMi0xMCAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIFdL
V2ViVmlldyBjb2RlIHJlbGF0ZWQgdG8gdGVzdGluZyB0byBuZXcgZmlsZXMsIHdpdGggdGhlaXIg
b3duIGhlYWRlcnMsIGFuZCBzdG9wIGV4cG9zaW5nIHRlc3Qtb25seSBmdW5jdGlvbnMgYXMgU1BJ
LgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tCmluZGV4IDRmZGNkYjVkYjRmMGZmMjAyYWNj
YWJjOThkNWQwMmNmNWI4OWUwYWMuLjIzNjY3YzJhYTNkYTY0NmQyZjliYWFlZmQ0MTgyOTM2OWMz
YmJiNWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW0KQEAgLTQwLDYgKzQwLDE2IEBA
CiAKIHN0YXRpYyBib29sIGZpbmlzaGVkTmF2aWdhdGlvbiA9IGZhbHNlOwogCitAaW50ZXJmYWNl
IF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5IDogTlNPYmplY3QKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldEZpcnN0UGFydHlEb21haW46KSBOU1N0cmlu
ZyAqX2ZpcnN0UGFydHlEb21haW47CitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRU
aGlyZFBhcnR5U3RvcmFnZUFjY2Vzc0dyYW50ZWQ6KSBCT09MIF90aGlyZFBhcnR5U3RvcmFnZUFj
Y2Vzc0dyYW50ZWQ7CitAZW5kCisKK0BpbnRlcmZhY2UgX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1RoaXJkUGFydHkgOiBOU09iamVjdAorQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNldHRl
cj1fc2V0VGhpcmRQYXJ0eURvbWFpbjopIE5TU3RyaW5nICpfdGhpcmRQYXJ0eURvbWFpbjsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldFVuZGVyRmlyc3RQYXJ0aWVzOikg
TlNBcnJheTxfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eSAqPiAqX3VuZGVyRmly
c3RQYXJ0aWVzOworQGVuZAorCiBAaW50ZXJmYWNlIERpc2FibGVJVFBEdXJpbmdOYXZpZ2F0aW9u
RGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CiBAZW5kCiAKQEAgLTY1
MCwzICs2NjAsMTk2IEBAIFRFU1QoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgRmx1c2hPYnNlcnZl
cldoZW5XZWJQYWdlSXNDbG9zZWRCeUphdmFTY3JpcHQpCiAKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmVGbGFnKTsKIH0KKworVEVTVChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCBH
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkpCit7CisgICAgYXV0byAqc2hhcmVk
UHJvY2Vzc1Bvb2wgPSBbV0tQcm9jZXNzUG9vbCBfc2hhcmVkUHJvY2Vzc1Bvb2xdOworICAgIGF1
dG8gKmRhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV07CisK
KyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOiBzaGFy
ZWRQcm9jZXNzUG9vbF07CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3Jl
ID0gZGF0YVN0b3JlOworCisgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byB3ZWJWaWV3
MyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAg
ICBbd2ViVmlldzEgbG9hZEhUTUxTdHJpbmc6QCJXZWJLaXQgVGVzdCIgYmFzZVVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnIl1dOworICAgIFt3ZWJWaWV3MSBfdGVz
dF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgW3dlYlZpZXcyIGxvYWRIVE1MU3Ry
aW5nOkAiV2ViS2l0IFRlc3QiIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8v
d2Via2l0Mi5vcmciXV07CisgICAgW3dlYlZpZXcyIF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZp
Z2F0aW9uXTsKKyAgICBbd2ViVmlldzMgbG9hZEhUTUxTdHJpbmc6QCJXZWJLaXQgVGVzdCIgYmFz
ZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQzLm9yZyJdXTsKKyAgICBb
d2ViVmlldzMgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgW2RhdGFT
dG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6WUVTXTsKKworICAgIHN0YXRp
YyBib29sIGRvbmVGbGFnID0gZmFsc2U7CisgICAgW2RhdGFTdG9yZSBfY2xlYXJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzOl4odm9pZCkgeworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07
CisKKyAgICBzdGF0aWMgYm9vbCBzdGF0aXN0aWNzVXBkYXRlZCA9IGZhbHNlOworICAgIFtkYXRh
U3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2s6XihXS1dlYnNp
dGVEYXRhU3RvcmUgKiwgTlNTdHJpbmcgKm1lc3NhZ2UpIHsKKyAgICAgICAgaWYgKCFbbWVzc2Fn
ZSBpc0VxdWFsVG9TdHJpbmc6QCJTdGF0aXN0aWNzIFVwZGF0ZWQiXSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgc3RhdGlzdGljc1VwZGF0ZWQgPSB0cnVlOworICAgIH1dOworCisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKyAgICAvLyBTZWVkIHRlc3Qg
ZGF0YSBpbiB0aGUgd2ViIHByb2Nlc3MnIG9ic2VydmVyLgorCisgICAgLy8gZXZpbDEKKyAgICBk
b25lRmxhZyA9IGZhbHNlOworICAgIFtzaGFyZWRQcm9jZXNzUG9vbCBfc2VlZFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NGb3JUZXN0aW5nV2l0aEZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJodHRwOi8vd2Via2l0Lm9yZyJdIHRoaXJkUGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJo
dHRwOi8vZXZpbDEuY29tIl0gc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb246Tk8gY29tcGxldGlv
bkhhbmRsZXI6IF4oKSB7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworICAgIGRvbmVGbGFnID0gZmFs
c2U7CisgICAgW3NoYXJlZFByb2Nlc3NQb29sIF9zZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Zv
clRlc3RpbmdXaXRoRmlyc3RQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJr
aXQyLm9yZyJdIHRoaXJkUGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXZpbDEu
Y29tIl0gc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb246Tk8gY29tcGxldGlvbkhhbmRsZXI6IF4o
KSB7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworCisgICAgLy8gZXZpbDIKKyAgICBkb25lRmxhZyA9
IGZhbHNlOworICAgIFtzaGFyZWRQcm9jZXNzUG9vbCBfc2VlZFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NGb3JUZXN0aW5nV2l0aEZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8v
d2Via2l0Lm9yZyJdIHRoaXJkUGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXZp
bDIuY29tIl0gc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb246Tk8gY29tcGxldGlvbkhhbmRsZXI6
IF4oKSB7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworCisgICAgLy8gZXZpbDMKKyAgICBkb25lRmxh
ZyA9IGZhbHNlOworICAgIFtzaGFyZWRQcm9jZXNzUG9vbCBfc2VlZFJlc291cmNlTG9hZFN0YXRp
c3RpY3NGb3JUZXN0aW5nV2l0aEZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRw
Oi8vd2Via2l0Lm9yZyJdIHRoaXJkUGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8v
ZXZpbDMuY29tIl0gc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb246Tk8gY29tcGxldGlvbkhhbmRs
ZXI6IF4oKSB7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAg
IFtzaGFyZWRQcm9jZXNzUG9vbCBfc2VlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JUZXN0aW5n
V2l0aEZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Mi5vcmci
XSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwzLmNvbSJdIHNo
b3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uOk5PIGNvbXBsZXRpb25IYW5kbGVyOiBeKCkgeworICAg
ICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lRmxhZyk7CisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbc2hhcmVkUHJvY2Vz
c1Bvb2wgX3NlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZ1dpdGhGaXJzdFBhcnR5
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdDMub3JnIl0gdGhpcmRQYXJ0eTpb
TlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsMy5jb20iXSBzaG91bGRTY2hlZHVsZU5v
dGlmaWNhdGlvbjpOTyBjb21wbGV0aW9uSGFuZGxlcjogXigpIHsKKyAgICAgICAgZG9uZUZsYWcg
PSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcp
OworCisgICAgc3RhdGlzdGljc1VwZGF0ZWQgPSBmYWxzZTsKKyAgICBbd2ViVmlldzEgbG9hZEhU
TUxTdHJpbmc6QCI8Ym9keT48c2NyaXB0PmNsb3NlKCk7PC9zY3JpcHQ+PC9ib2R5PiIgYmFzZVVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnIl1dOworICAgIFt3ZWJW
aWV3MiBsb2FkSFRNTFN0cmluZzpAIjxib2R5PjxzY3JpcHQ+Y2xvc2UoKTs8L3NjcmlwdD48L2Jv
ZHk+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdDIub3JnIl1d
OworICAgIFt3ZWJWaWV3MyBsb2FkSFRNTFN0cmluZzpAIjxib2R5PjxzY3JpcHQ+Y2xvc2UoKTs8
L3NjcmlwdD48L2JvZHk+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dl
YmtpdDMub3JnIl1dOworCisgICAgLy8gV2FpdCBmb3IgdGhlIHN0YXRpc3RpY3MgdG8gYmUgdXBk
YXRlZCBpbiB0aGUgbmV0d29yayBwcm9jZXNzLgorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmc3RhdGlzdGljc1VwZGF0ZWQpOworCisgICAgLy8gQ2hlY2sgdGhhdCB0aGUgdGhpcmQtcGFy
dHkgZXZpbDEgaXMgbm93IHJlZ2lzdGVyZWQgYXMgc3VicmVzb3VyY2UuCisgICAgZG9uZUZsYWcg
PSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXJG
aXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmciXSB0aGly
ZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwxLmNvbSJdIGNvbXBsZXRp
b25IYW5kbGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGlz
UmVnaXN0ZXJlZCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKyAgICBkb25lRmxhZyA9IGZhbHNlOwor
ICAgIFtkYXRhU3RvcmUgX2lzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlckZpcnN0UGFydHk6
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Mi5vcmciXSB0aGlyZFBhcnR5OltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwxLmNvbSJdIGNvbXBsZXRpb25IYW5kbGVy
OiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGlzUmVnaXN0ZXJl
ZCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworCisgICAgLy8gQ2hlY2sgdGhhdCB0aGUgdGhpcmQt
cGFydHkgZXZpbDIgaXMgbm93IHJlZ2lzdGVyZWQgYXMgc3VicmVzb3VyY2UuCisgICAgZG9uZUZs
YWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5k
ZXJGaXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmciXSB0
aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwyLmNvbSJdIGNvbXBs
ZXRpb25IYW5kbGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7CisgICAgICAgIEVYUEVDVF9UUlVF
KGlzUmVnaXN0ZXJlZCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworCisgICAgLy8gQ2hlY2sgdGhh
dCB0aGUgdGhpcmQtcGFydHkgZXZpbDMgaXMgbm93IHJlZ2lzdGVyZWQgYXMgc3VicmVzb3VyY2Uu
CisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9pc1JlZ2lzdGVyZWRBc1N1
YnJlc291cmNlVW5kZXJGaXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dl
YmtpdC5vcmciXSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwz
LmNvbSJdIGNvbXBsZXRpb25IYW5kbGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7CisgICAgICAg
IEVYUEVDVF9UUlVFKGlzUmVnaXN0ZXJlZCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKyAgICBkb25l
RmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX2lzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VV
bmRlckZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Mi5vcmci
XSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwzLmNvbSJdIGNv
bXBsZXRpb25IYW5kbGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7CisgICAgICAgIEVYUEVDVF9U
UlVFKGlzUmVnaXN0ZXJlZCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKyAgICBkb25lRmxhZyA9IGZh
bHNlOworICAgIFtkYXRhU3RvcmUgX2lzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlckZpcnN0
UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0My5vcmciXSB0aGlyZFBh
cnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwzLmNvbSJdIGNvbXBsZXRpb25I
YW5kbGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGlzUmVn
aXN0ZXJlZCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworCisgICAgLy8gQ29sbGVjdCB0aGUgSVRQ
IGRhdGEgc3VtbWFyeSB3aGljaCBzaG91bGQgaW5jbHVkZSBhbGwgdGhpcmQgcGFydGllcyBpbiB0
aGUKKyAgICAvLyBvcmRlcjogW2V2aWwzLmNvbSwgZXZpbDEuY29tLCBldmlsMi5jb21dIHNvcnRl
ZCBieSBudW1iZXIgb2YgZmlyc3QgcGFydGllcworICAgIC8vIGl0IGFwcGVhcnMgdW5kZXIgb3Ig
cmVkaXJlY3RzIHRvCisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9nZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnk6XnZvaWQoTlNBcnJheTxfV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eSAqPiAqdGhpcmRQYXJ0eURhdGEpCisgICAgeworICAg
ICAgICBOU0VudW1lcmF0b3IgKnRoaXJkUGFydHlEb21haW5zID0gW3RoaXJkUGFydHlEYXRhIG9i
amVjdEVudW1lcmF0b3JdOworCisgICAgICAgIC8vIGV2aWwzCisgICAgICAgIF9XS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5ICpldmlsM1RoaXJkUGFydHkgPSBbdGhpcmRQYXJ0eURv
bWFpbnMgbmV4dE9iamVjdF07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShldmlsM1RoaXJkUGFy
dHkuX3RoaXJkUGFydHlEb21haW4sIEAiZXZpbDMuY29tIik7CisKKyAgICAgICAgTlNFbnVtZXJh
dG9yICpldmlsM0VudW1lcmF0b3IgPSBbZXZpbDNUaGlyZFBhcnR5Ll91bmRlckZpcnN0UGFydGll
cyBvYmplY3RFbnVtZXJhdG9yXTsKKyAgICAgICAgX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Zp
cnN0UGFydHkgKmV2aWwzRmlyc3RQYXJ0eTEgPSBbZXZpbDNFbnVtZXJhdG9yIG5leHRPYmplY3Rd
OworICAgICAgICBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eSAqZXZpbDNGaXJz
dFBhcnR5MiA9IFtldmlsM0VudW1lcmF0b3IgbmV4dE9iamVjdF07CisgICAgICAgIF9XS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5ICpldmlsM0ZpcnN0UGFydHkzID0gW2V2aWwzRW51
bWVyYXRvciBuZXh0T2JqZWN0XTsKKworICAgICAgICBBU1NFUlRfVFJVRShldmlsM0ZpcnN0UGFy
dHkxICE9IG5pbCk7CisgICAgICAgIEFTU0VSVF9UUlVFKGV2aWwzRmlyc3RQYXJ0eTIgIT0gbmls
KTsKKyAgICAgICAgQVNTRVJUX1RSVUUoZXZpbDNGaXJzdFBhcnR5MyAhPSBuaWwpOworCisgICAg
ICAgIEVYUEVDVF9XS19TVFJFUShldmlsM0ZpcnN0UGFydHkxLl9maXJzdFBhcnR5RG9tYWluLCBA
IndlYmtpdDIub3JnIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShldmlsM0ZpcnN0UGFydHky
Ll9maXJzdFBhcnR5RG9tYWluLCBAIndlYmtpdDMub3JnIik7CisgICAgICAgIEVYUEVDVF9XS19T
VFJFUShldmlsM0ZpcnN0UGFydHkzLl9maXJzdFBhcnR5RG9tYWluLCBAIndlYmtpdC5vcmciKTsK
KworICAgICAgICBFWFBFQ1RfRkFMU0UoZXZpbDNGaXJzdFBhcnR5MS5fdGhpcmRQYXJ0eVN0b3Jh
Z2VBY2Nlc3NHcmFudGVkKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGV2aWwzRmlyc3RQYXJ0eTIu
X3RoaXJkUGFydHlTdG9yYWdlQWNjZXNzR3JhbnRlZCk7CisgICAgICAgIEVYUEVDVF9GQUxTRShl
dmlsM0ZpcnN0UGFydHkzLl90aGlyZFBhcnR5U3RvcmFnZUFjY2Vzc0dyYW50ZWQpOworCisgICAg
ICAgIC8vIGV2aWwxCisgICAgICAgIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5
ICpldmlsMVRoaXJkUGFydHkgPSBbdGhpcmRQYXJ0eURvbWFpbnMgbmV4dE9iamVjdF07CisgICAg
ICAgIEVYUEVDVF9XS19TVFJFUShldmlsMVRoaXJkUGFydHkuX3RoaXJkUGFydHlEb21haW4sIEAi
ZXZpbDEuY29tIik7CisKKyAgICAgICAgTlNFbnVtZXJhdG9yICpldmlsMUVudW1lcmF0b3IgPSBb
ZXZpbDFUaGlyZFBhcnR5Ll91bmRlckZpcnN0UGFydGllcyBvYmplY3RFbnVtZXJhdG9yXTsKKyAg
ICAgICAgX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkgKmV2aWwxRmlyc3RQYXJ0
eTE9IFtldmlsMUVudW1lcmF0b3IgbmV4dE9iamVjdF07CisgICAgICAgIF9XS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NGaXJzdFBhcnR5ICpldmlsMUZpcnN0UGFydHkyID0gW2V2aWwxRW51bWVyYXRv
ciBuZXh0T2JqZWN0XTsKKworICAgICAgICBBU1NFUlRfVFJVRShldmlsMUZpcnN0UGFydHkxICE9
IG5pbCk7CisgICAgICAgIEFTU0VSVF9UUlVFKGV2aWwxRmlyc3RQYXJ0eTIgIT0gbmlsKTsKKwor
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXZpbDFGaXJzdFBhcnR5MS5fZmlyc3RQYXJ0eURvbWFp
biwgQCJ3ZWJraXQyLm9yZyIpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXZpbDFGaXJzdFBh
cnR5Mi5fZmlyc3RQYXJ0eURvbWFpbiwgQCJ3ZWJraXQub3JnIik7CisKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKGV2aWwxRmlyc3RQYXJ0eTEuX3RoaXJkUGFydHlTdG9yYWdlQWNjZXNzR3JhbnRlZCk7
CisgICAgICAgIEVYUEVDVF9GQUxTRShldmlsMUZpcnN0UGFydHkyLl90aGlyZFBhcnR5U3RvcmFn
ZUFjY2Vzc0dyYW50ZWQpOworCisgICAgICAgIC8vIGV2aWwyCisgICAgICAgIF9XS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5ICpldmlsMlRoaXJkUGFydHkgPSBbdGhpcmRQYXJ0eURv
bWFpbnMgbmV4dE9iamVjdF07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShldmlsMlRoaXJkUGFy
dHkuX3RoaXJkUGFydHlEb21haW4sIEAiZXZpbDIuY29tIik7CisKKyAgICAgICAgTlNFbnVtZXJh
dG9yICpldmlsMkVudW1lcmF0b3IgPSBbZXZpbDJUaGlyZFBhcnR5Ll91bmRlckZpcnN0UGFydGll
cyBvYmplY3RFbnVtZXJhdG9yXTsKKyAgICAgICAgX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Zp
cnN0UGFydHkgKmV2aWwyRmlyc3RQYXJ0eTEgPSBbZXZpbDJFbnVtZXJhdG9yIG5leHRPYmplY3Rd
OworCisgICAgICAgIEFTU0VSVF9UUlVFKGV2aWwyRmlyc3RQYXJ0eTEgIT0gbmlsKTsKKworICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEoZXZpbDJGaXJzdFBhcnR5MS5fZmlyc3RQYXJ0eURvbWFpbiwg
QCJ3ZWJraXQub3JnIik7CisgICAgICAgIEVYUEVDVF9GQUxTRShldmlsMkZpcnN0UGFydHkxLl90
aGlyZFBhcnR5U3RvcmFnZUFjY2Vzc0dyYW50ZWQpOworICAgICAgICBkb25lRmxhZyA9IHRydWU7
CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385564</attachid>
            <date>2019-12-12 17:42:13 -0800</date>
            <delta_ts>2019-12-13 09:08:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204932-20191212174212.patch</filename>
            <type>text/plain</type>
            <size>78186</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc5ZDNjNzM4ODkxYzcxNmNj
NzM3NjU0YWFjYTg1NWVhMTA4YTU3Y2UuLjgxNmIxYzE3NDIxNzQwZmIyNmI1MzgxMTk4ODA2ZTAy
ZTlkOWJiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTktMTItMTIgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIFdlYktp
dCBBUEkgY2FsbHMgZm9yIElUUCBEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDQ5MzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3NjMyNzUz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggZXhwb3NlcyBJVFAgZGF0YSBjYXB0dXJlZCBpbiB0aGUgbmV0d29yayBwcm9jZXNzIHRo
cm91Z2ggdGhlCisgICAgICAgIE9iamVjdGl2ZSBDIEFQSSB1c2luZyB0d28gbmV3IGNsYXNzZXM6
IF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5CisgICAgICAgIGFuZCBfV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmVuc3Vy
ZVRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWluKToKKyAgICAgICAgKFdl
YktpdDo6Z2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKToKKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjphZ2dyZWdh
dGVkVGhpcmRQYXJ0eURhdGEgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAg
ICAgICAgVXBkYXRlZCBtZW50aW9ucyBvZiBUaGlyZFBhcnR5RGF0YSB0byBpbmNsdWRlIHRoZQor
ICAgICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OiBjbGFzcyBzcGVjaWZpZXIg
YWZ0ZXIgcmVsb2NhdGluZworICAgICAgICBUaGlyZFBhcnR5RGF0YS4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphZ2dy
ZWdhdGVkVGhpcmRQYXJ0eURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgIFVwZGF0ZWQgdGhl
IGRhdGEgdG8gYmUgc2VudCB2aWEgY29tcGxldGlvbiBoYW5kbGVyIGZyb20KKyAgICAgICAgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIHNvIHRoYXQgY2FsbHMgdG8KKyAgICAgICAgYWdn
cmVnYXRlZFRoaXJkUGFydHlEYXRhKCkgYXJlIGhhcHBlbmluZyBvbiBhIGJhY2tncm91bmQgdGhy
ZWFkLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFy
ZWQvQ29jb2EvQVBJT2JqZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQ
YXJ0eS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVJlc291cmNlTG9hZFN0
YXRpc3RpY3NUaGlyZFBhcnR5Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUg
X2dldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeTpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5Lmg6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0ZpcnN0UGFydHkubW06IEFkZGVkLgorICAgICAgICAoLVtfV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRmlyc3RQYXJ0eSBkZWFsbG9jXSk6CisgICAgICAgICgtW19XS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NGaXJzdFBhcnR5IGZpcnN0UGFydHlEb21haW5dKToKKyAgICAgICAgKC1bX1dL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkgc3RvcmFnZUFjY2Vzc10pOgorICAgICAg
ICAoLVtfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eSBfYXBpT2JqZWN0XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmly
c3RQYXJ0eUludGVybmFsLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkuaDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5t
bTogQWRkZWQuCisgICAgICAgICgtW19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5
IGRlYWxsb2NdKToKKyAgICAgICAgKC1bX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFy
dHkgdGhpcmRQYXJ0eURvbWFpbl0pOgorICAgICAgICAoLVtfV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVGhpcmRQYXJ0eSB1bmRlckZpcnN0UGFydGllc10pOgorICAgICAgICAoLVtfV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eSBfYXBpT2JqZWN0XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUludGVybmFs
Lmg6IEFkZGVkLgorICAgICAgICBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eSBh
bmQgX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkKKyAgICAgICAgcmVwcmVzZW50
IGZpcnN0IGFuZCB0aGlyZCBwYXJ0eSBkb21haW5zIHJlc3BlY3RpdmVseSB3aGljaCBob2xkIElU
UAorICAgICAgICBkYXRhIGFuZCBhcmUgc3Ryb25nbHkgdHlwZWQgdG8gZW5zdXJlIHRoZSBjb3Jy
ZWN0IGRhdGEgaXMgYmVpbmcKKyAgICAgICAgZXhwb3NlZCB2aWEgQVBJLiBUaGUgZnVuY3Rpb24g
YW5kIHBhcmFtZXRlciBuYW1lcyBmb3Igc3RvcmFnZSBhY2Nlc3MKKyAgICAgICAgc3BlY2lmeSAi
dGhpcmQgcGFydHkiIGJlY2F1c2UgZWFjaCBXS0lUUEZpcnN0UGFydHkgaG9sZHMgZGF0YSByZWxl
dmVudAorICAgICAgICB0byBhIHNwZWNpZmljIHRoaXJkIHBhcnR5IGFuZCBzdG9yYWdlIGFjY2Vz
cyB3b3VsZCBub3QgbWFrZSBzZW5zZSBpbgorICAgICAgICBqdXN0IGEgZmlyc3QgcGFydHkgY29u
dGV4dC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhU3VtbWFyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFTdW1tYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpnZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisKIDIwMTktMTItMTAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgTW92ZSBXS1dlYlZpZXcgY29kZSByZWxhdGVkIHRvIHRlc3Rpbmcg
dG8gbmV3IGZpbGVzLCB3aXRoIHRoZWlyIG93biBoZWFkZXJzLCBhbmQgc3RvcCBleHBvc2luZyB0
ZXN0LW9ubHkgZnVuY3Rpb25zIGFzIFNQSS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IGJlZGVjYjI1NGNjNTM0MjUyNTVh
ZTAyNjEwNjU4ZGIzNTA0YmZjOGIuLmFlNWY1MTg4YWI3MjNjYmQ3ZjZjYzlkMGM2MzMyZmNmYTE2
YzM1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmNwcApAQCAtNzg2LDcgKzc4Niw3IEBAIHN0YXRpYyBTUUxpdGVTdGF0ZW1lbnQg
bWFrZU1lZGlhbldpdGhVSVF1ZXJ5KFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKICAgICByZXR1
cm4gU1FMaXRlU3RhdGVtZW50KGRhdGFiYXNlLCBtYWtlU3RyaW5nKCJTRUxFQ1QgbW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvblRpbWUgRlJPTSBPYnNlcnZlZERvbWFpbnMgSU5ORVIgSk9JTiAoU0VM
RUNUICIsIGpvaW5TdWJTdGF0aXN0aWNzRm9yU29ydGluZygpLCAiKSBhcyBxIE9OIE9ic2VydmVk
RG9tYWlucy5kb21haW5JRCA9IHEuZG9tYWluSUQgTElNSVQgMSBPRkZTRVQgPyIpKTsKIH0KIAot
VmVjdG9yPFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0
UGFydHlEb21haW5zKHVuc2lnbmVkIHRoaXJkUGFydHlEb21haW5JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHRoaXJkUGFydHlEb21haW4pIGNvbnN0CitWZWN0b3I8V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldFRoaXJkUGFydHlEYXRhRm9yU3Bl
Y2lmaWNGaXJzdFBhcnR5RG9tYWlucyh1bnNpZ25lZCB0aGlyZFBhcnR5RG9tYWluSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0aGlyZFBhcnR5RG9tYWluKSBjb25zdAogewogICAgIGlmICht
X2dldEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQuYmluZEludCgxLCB0aGlyZFBhcnR5RG9tYWlu
SUQpICE9IFNRTElURV9PSwogICAgICAgICB8fCBtX2dldEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1l
bnQuYmluZEludCgyLCB0aGlyZFBhcnR5RG9tYWluSUQpICE9IFNRTElURV9PSwpAQCAtNzk0LDEw
ICs3OTQsMTAgQEAgVmVjdG9yPFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZToKICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTmV0d29yaywgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRU
aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbiwgZXJyb3IgbWVzc2FnZTog
JXtwdWJsaWN9cyIsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICB9Ci0gICAgVmVjdG9yPFRoaXJkUGFydHlEYXRhRm9yU3BlY2lm
aWNGaXJzdFBhcnR5PiB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnM7
CisgICAgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURh
dGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IHRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBh
cnR5RG9tYWluczsKICAgICB3aGlsZSAobV9nZXRBbGxTdWJTdGF0aXN0aWNzU3RhdGVtZW50LnN0
ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CiAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFy
dHlEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJh
YmxlRG9tYWluU3RyaW5nKGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRChtX2dldEFsbFN1YlN0
YXRpc3RpY3NTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApKSk7Ci0gICAgICAgIHRoaXJkUGFydHlE
YXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucy5hcHBlbmRJZk5vdENvbnRhaW5zKFRoaXJk
UGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5IHsgZmlyc3RQYXJ0eURvbWFpbiwgaGFzU3Rv
cmFnZUFjY2VzcyhmaXJzdFBhcnR5RG9tYWluLCB0aGlyZFBhcnR5RG9tYWluKSB9KTsKKyAgICAg
ICAgdGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zLmFwcGVuZElmTm90
Q29udGFpbnMoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZv
clNwZWNpZmljRmlyc3RQYXJ0eSB7IGZpcnN0UGFydHlEb21haW4sIGhhc1N0b3JhZ2VBY2Nlc3Mo
Zmlyc3RQYXJ0eURvbWFpbiwgdGhpcmRQYXJ0eURvbWFpbikgfSk7CiAgICAgfQogICAgIHJlc2V0
U3RhdGVtZW50KG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudCk7CiAgICAgcmV0dXJuIHRo
aXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWluczsKQEAgLTgwOCwxMSArODA4
LDExIEBAIHN0YXRpYyBib29sIGhhc0JlZW5UaGlyZFBhcnR5KHVuc2lnbmVkIHRpbWVzVW5kZXJG
aXJzdFBhcnR5KQogICAgIHJldHVybiB0aW1lc1VuZGVyRmlyc3RQYXJ0eSA+IDA7CiB9CiAKLVZl
Y3RvcjxUaGlyZFBhcnR5RGF0YT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YSgpIGNvbnN0CitWZWN0b3I8V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YSgpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBWZWN0b3I8VGhpcmRQYXJ0eURhdGE+IHRo
aXJkUGFydHlEYXRhTGlzdDsKKyAgICBWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpUaGlyZFBhcnR5RGF0YT4gdGhpcmRQYXJ0eURhdGFMaXN0OwogICAgIFNRTGl0ZVN0YXRl
bWVudCBzb3J0ZWRTdGF0aXN0aWNzKG1fZGF0YWJhc2UsIG1ha2VTdHJpbmcoIlNFTEVDVCAiLCBq
b2luU3ViU3RhdGlzdGljc0ZvclNvcnRpbmcoKSkpOwogICAgIGlmIChzb3J0ZWRTdGF0aXN0aWNz
LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgc29ydGVkU3RhdGlzdGljcy5iaW5k
VGV4dCgxLCAiJSIpCkBAIC04MjUsNyArODI1LDcgQEAgVmVjdG9yPFRoaXJkUGFydHlEYXRhPiBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHkK
ICAgICAgICAgaWYgKGhhc0JlZW5UaGlyZFBhcnR5KHNvcnRlZFN0YXRpc3RpY3MuZ2V0Q29sdW1u
SW50KDEpKSkgewogICAgICAgICAgICAgYXV0byB0aGlyZFBhcnR5RG9tYWluSUQgPSBzb3J0ZWRT
dGF0aXN0aWNzLmdldENvbHVtbkludCgwKTsKICAgICAgICAgICAgIGF1dG8gdGhpcmRQYXJ0eURv
bWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVE
b21haW5TdHJpbmcoZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHRoaXJkUGFydHlEb21haW5J
RCkpOwotICAgICAgICAgICAgdGhpcmRQYXJ0eURhdGFMaXN0LmFwcGVuZChUaGlyZFBhcnR5RGF0
YSB7IHRoaXJkUGFydHlEb21haW4sIGdldFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBh
cnR5RG9tYWlucyh0aGlyZFBhcnR5RG9tYWluSUQsIHRoaXJkUGFydHlEb21haW4pIH0pOworICAg
ICAgICAgICAgdGhpcmRQYXJ0eURhdGFMaXN0LmFwcGVuZChXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhIHsgdGhpcmRQYXJ0eURvbWFpbiwgZ2V0VGhpcmRQYXJ0
eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHRoaXJkUGFydHlEb21haW5JRCwgdGhp
cmRQYXJ0eURvbWFpbikgfSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHRoaXJkUGFy
dHlEYXRhTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmgKaW5kZXggN2FkODYxNWY1YTI3MmM2ZmZjNTZkZWFlNTJhZWYyYmU2ZWE2ZGI3
MS4uNzdlOWY4ZjcxM2EzZTMzMTAwM2VlOWJmYWI4MWI5MWE2NzU1NjhkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKQEAgLTg1LDcg
Kzg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKSBvdmVycmlkZTsKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IFZlY3RvcjxUaGlyZFBhcnR5RGF0YT4gYWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhp
cmRQYXJ0eURhdGE+IGFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZvaWQgdXBkYXRlQ29va2llQmxvY2tpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgY2xhc3NpZnlQcmV2YWxlbnRSZXNvdXJjZXMoKSBvdmVy
cmlkZTsKQEAgLTEzOSw3ICsxMzksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgb3BlbklUUERhdGFi
YXNlKCk7CiAgICAgYm9vbCBpc0NvcnJlY3RUYWJsZVNjaGVtYSgpOwogICAgIGJvb2wgaGFzU3Rv
cmFnZUFjY2Vzcyhjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IFN1YkZyYW1lRG9tYWluJikg
Y29uc3Q7Ci0gICAgVmVjdG9yPFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBn
ZXRUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnModW5zaWduZWQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CisgICAgVmVjdG9yPFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IGdl
dFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucyh1bnNpZ25lZCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKICAgICB2b2lkIG9wZW5BbmREcm9wT2xkRGF0
YWJhc2VJZk5lY2Vzc2FyeSgpOwogICAgIFN0cmluZyBnZXREb21haW5TdHJpbmdGcm9tRG9tYWlu
SUQodW5zaWduZWQpIGNvbnN0OwogICAgIFN0cmluZyBnZXRTdWJTdGF0aXN0aWNTdGF0ZW1lbnQo
Y29uc3QgU3RyaW5nJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IDcwOTc5NTgxODc4ZWVlMTdiNjMzMTc3YjZjMDA1
NTI2OTU1ZjU0YjEuLjYxNjcxZDY4Y2ZjMjhiYjYyZTgwNGVhNGE4M2RiYWE3N2RmMDM0YzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3Bw
CkBAIC0xMDMsMTUgKzEwMywxNSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZTo6Y2FsY3VsYXRlQW5kU3VibWl0VGVsZW1ldHJ5KCkgY29uc3QKICAgICAgICAgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeTo6Y2FsY3VsYXRlQW5kU3VibWl0KCp0aGlzKTsK
IH0KIAotc3RhdGljIHZvaWQgZW5zdXJlVGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFy
dHlEb21haW4oVmVjdG9yPFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiYgdGhp
cmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBib29sIHRoaXJkUGFydHlIYXNTdG9yYWdlQWNjZXNz
KQorc3RhdGljIHZvaWQgZW5zdXJlVGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlE
b21haW4oVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURh
dGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+JiB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQ
YXJ0eURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIGJv
b2wgdGhpcmRQYXJ0eUhhc1N0b3JhZ2VBY2Nlc3MpCiB7Ci0gICAgVGhpcmRQYXJ0eURhdGFGb3JT
cGVjaWZpY0ZpcnN0UGFydHkgdGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHkgeyBm
aXJzdFBhcnR5RG9tYWluLCB0aGlyZFBhcnR5SGFzU3RvcmFnZUFjY2VzcyB9OworICAgIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0
UGFydHkgdGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHkgeyBmaXJzdFBhcnR5RG9t
YWluLCB0aGlyZFBhcnR5SGFzU3RvcmFnZUFjY2VzcyB9OwogICAgIHRoaXJkUGFydHlEYXRhRm9y
U3BlY2lmaWNGaXJzdFBhcnR5RG9tYWluLmFwcGVuZElmTm90Q29udGFpbnModGhpcmRQYXJ0eURh
dGFGb3JTcGVjaWZpY0ZpcnN0UGFydHkpOwogfQogCi1zdGF0aWMgVmVjdG9yPFRoaXJkUGFydHlE
YXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBnZXRUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmly
c3RQYXJ0eURvbWFpbnMoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgdGhpcmRQYXJ0eVN0
YXRpc3RpYykKK3N0YXRpYyBWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpU
aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4gZ2V0VGhpcmRQYXJ0eURhdGFGb3JT
cGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHRo
aXJkUGFydHlTdGF0aXN0aWMpCiB7Ci0gICAgVmVjdG9yPFRoaXJkUGFydHlEYXRhRm9yU3BlY2lm
aWNGaXJzdFBhcnR5PiB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnM7
CisgICAgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURh
dGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IHRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBh
cnR5RG9tYWluczsKIAogICAgIGZvciAoYXV0byBmaXJzdFBhcnR5RG9tYWluIDogdGhpcmRQYXJ0
eVN0YXRpc3RpYy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zKQogICAgICAgICBlbnN1cmVU
aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbih0aGlyZFBhcnR5RGF0YUZv
clNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnMsIGZpcnN0UGFydHlEb21haW4sIHRoaXJkUGFydHlT
dGF0aXN0aWMuc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zLmNvbnRhaW5zKGZpcnN0
UGFydHlEb21haW4pKTsKQEAgLTEzMCwxNCArMTMwLDE0IEBAIHN0YXRpYyBib29sIGhhc0JlZW5U
aGlyZFBhcnR5KGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHN0YXRpc3RpYykKICAgICAg
ICAgfHwgIXN0YXRpc3RpYy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLmlzRW1wdHkoKTsK
IH0KIAotVmVjdG9yPFRoaXJkUGFydHlEYXRhPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmU6OmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YSgpIGNvbnN0CitWZWN0b3I8V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlOjphZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoKSBjb25zdAogewogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgVmVjdG9yPFRoaXJkUGFydHlEYXRh
PiB0aGlyZFBhcnR5RGF0YUxpc3Q7CisgICAgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+IHRoaXJkUGFydHlEYXRhTGlzdDsKICAgICBmb3IgKGF1
dG8mIHN0YXRpc3RpYyA6IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnZhbHVlcygpKSB7CiAgICAg
ICAgIGlmIChoYXNCZWVuVGhpcmRQYXJ0eShzdGF0aXN0aWMpKQotICAgICAgICAgICAgdGhpcmRQ
YXJ0eURhdGFMaXN0LmFwcGVuZChUaGlyZFBhcnR5RGF0YSB7IHN0YXRpc3RpYy5yZWdpc3RyYWJs
ZURvbWFpbiwgZ2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHN0
YXRpc3RpYykgfSk7CisgICAgICAgICAgICB0aGlyZFBhcnR5RGF0YUxpc3QuYXBwZW5kKFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGEgeyBzdGF0aXN0aWMucmVn
aXN0cmFibGVEb21haW4sIGdldFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9t
YWlucyhzdGF0aXN0aWMpIH0pOwogICAgIH0KICAgICBzdGQ6OnNvcnQodGhpcmRQYXJ0eURhdGFM
aXN0LnJiZWdpbigpLCB0aGlyZFBhcnR5RGF0YUxpc3QucmVuZCgpKTsKICAgICByZXR1cm4gdGhp
cmRQYXJ0eURhdGFMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZS5oCmluZGV4IDliY2E5MDMwYzU2ZTdkYzIzMzFkOTYwOTNlNzQ3MTU1NzYwODY3
N2EuLjBiMGU2ZDgwNTZkYjA2YTBjOGM1NTYxNDgyMDczMWIxNTkxMzNkYzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKQEAgLTU2LDcgKzU2
LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KSBvdmVycmlkZTsKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIFZl
Y3RvcjxUaGlyZFBhcnR5RGF0YT4gYWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQ
YXJ0eURhdGE+IGFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IGNvbnN0IEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3M+JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXA7
IH0KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpLZXllZEVuY29kZXI+IGNyZWF0ZUVu
Y29kZXJGcm9tRGF0YSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oCmluZGV4IGFlM2M4ZWVmOGE5OTU1ZDY2MDE3OTljOWJhZjM5YzdhNDhiNjc5ZGIuLjdk
YWRmNGRiODg3MzUyYWNmOWUxZWY1ZjQwMDc0ZmFlZWFjMDNhODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgVmVjdG9y
PFRoaXJkUGFydHlEYXRhPiBhZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBh
cnR5RGF0YT4gYWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKCkgY29uc3QgPSAwOwogCiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUNvb2tpZUJsb2NraW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JikgPSAwOwogICAgIHZvaWQgdXBkYXRlQ29va2llQmxvY2tpbmdGb3JEb21haW5zKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAKaW5kZXggZDQ1ODZkNWEwODgxMGRhY2E2MzYwMDZkZDBiMGFkNGU5YjZhMjhiYy4uODIzOWQ2
ZDlmNWY5NDI1MGE4MTE1ZTBlMzUxOTgyOWY5ZGRmZDE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTExNTIsOSArMTE1MiwyMiBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NU
ZWxlbWV0cnlGaW5pc2hlZCh1bnNpZwogICAgICAgICBjb25zdF9jYXN0PFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZSo+KHRoaXMpLT5uZXR3b3JrU2Vzc2lvbigpLT5ub3RpZnlQYWdlU3Rh
dGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzLCBudW1i
ZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIG51bWJlck9mUHJldmFs
ZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgdG9wUHJldmFsZW50UmVzb3VyY2VX
aXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9uLCBtZWRpYW5EYXlzU2lu
Y2VVc2VySW50ZXJhY3Rpb25QcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb24sIHRv
cDNOdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVSSwgdG9wM01lZGlhblN1YkZyYW1lV2l0
aG91dFVJLCB0b3AzTWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUksIHRvcDNNZWRpYW5VbmlxdWVS
ZWRpcmVjdHNXaXRob3V0VUksIHRvcDNNZWRpYW5EYXRhUmVjb3Jkc1JlbW92ZWRXaXRob3V0VUkp
OwogfQogCi1WZWN0b3I8VGhpcmRQYXJ0eURhdGE+IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKCkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjphZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0
YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuIG1fc3RhdGlzdGljc1N0
b3JlLT5hZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOworCisgICAgcG9zdFRhc2soW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSAgeworICAgICAgICBpZiAoIW1fc3RhdGlz
dGljc1N0b3JlKSB7CisgICAgICAgICAgICBwb3N0VGFza1JlcGx5KFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhdXRvIHRoaXJkUGFydHlEYXRhID0gbV9zdGF0
aXN0aWNzU3RvcmUtPmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YSgpOworICAgICAgICBwb3N0VGFz
a1JlcGx5KFt0aGlyZFBhcnR5RGF0YSA9IFdURk1vdmUodGhpcmRQYXJ0eURhdGEpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSh0aGlyZFBhcnR5RGF0YSkpOworICAg
ICAgICB9KTsKKyAgICB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggYzU5MWZjMmUzYzkwODZj
MjA1OGFiNDc1YzZkMjM0YTYzNDRmOTE1Ny4uMGRlOTU5NDFjZmIwODExYzMyMGI0MWYwMzlhYzZk
ZTEwODRjNDUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaApAQCAtMjcsNiArMjcsOSBAQAogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5o
IgorI2luY2x1ZGUgIkVuY29kZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhVHlwZS5oIgpAQCAtNzgsNiArODEsMzAgQEAgc3RydWN0IFJlZ2lzdHJhYmxlRG9tYWluc1Rv
QmxvY2tDb29raWVzRm9yIHsKICAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0Zv
ciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRl
Q29va2llc0Zvci5pc29sYXRlZENvcHkoKSwgZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zv
ci5pc29sYXRlZENvcHkoKSwgZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHku
aXNvbGF0ZWRDb3B5KCkgfTsgfQogfTsKIAorY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZSwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4geworcHVibGlj
OgorICAgIHVzaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzOworICAgIHVzaW5nIFJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW47CisgICAgdXNpbmcgVG9wRnJhbWVEb21haW4gPSBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbjsKKyAgICB1c2luZyBTdWJGcmFtZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluOworICAgIHVzaW5nIFN1YlJlc291cmNlRG9tYWluID0gV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW47CisgICAgdXNpbmcgUmVkaXJlY3REb21haW4gPSBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbjsKKyAgICB1c2luZyBSZWRpcmVjdGVkRnJvbURvbWFpbiA9IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluOworICAgIHVzaW5nIFJlZGlyZWN0ZWRUb0RvbWFpbiA9IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluOworICAgIHVzaW5nIE5hdmlnYXRlZEZyb21Eb21haW4gPSBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKKyAgICB1c2luZyBOYXZpZ2F0ZWRUb0RvbWFpbiA9
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOworICAgIHVzaW5nIERvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcyA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOworICAgIHVzaW5nIE9wZW5l
ckRvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOworICAgIHVzaW5nIFN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkID0gV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ7CisgICAg
dXNpbmcgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duID0gV2ViQ29yZTo6U3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duOworCisgICAgc3RhdGljIFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIGNvbnN0IFN0
cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgU2hvdWxkSW5jbHVkZUxvY2Fs
aG9zdCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKG5ldHdvcmtTZXNzaW9uLCBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KSk7
CisgICAgfQorCisgICAgfldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpOworCiBzdHJ1
Y3QgVGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHkgewogICAgIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW47CiAgICAgYm9vbCBzdG9yYWdlQWNjZXNz
R3JhbnRlZDsKQEAgLTg3LDYgKzExNCwyNyBAQCBzdHJ1Y3QgVGhpcmRQYXJ0eURhdGFGb3JTcGVj
aWZpY0ZpcnN0UGFydHkgewogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiSGFzIGJlZW4gZ3Jh
bnRlZCBzdG9yYWdlIGFjY2VzcyB1bmRlciAiLCBmaXJzdFBhcnR5RG9tYWluLnN0cmluZygpLCAi
OiAiLCBzdG9yYWdlQWNjZXNzR3JhbnRlZCA/ICcxJyA6ICcwJyk7CiAgICAgfQogCisgICAgdm9p
ZCBlbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5j
b2RlciA8PCBmaXJzdFBhcnR5RG9tYWluOworICAgICAgICBlbmNvZGVyIDw8IHN0b3JhZ2VBY2Nl
c3NHcmFudGVkOworICAgIH0KKworICAgIHN0YXRpYyBPcHRpb25hbDxUaGlyZFBhcnR5RGF0YUZv
clNwZWNpZmljRmlyc3RQYXJ0eT4gZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKKyAgICB7
CisgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkZWNvZGVkRG9t
YWluOworICAgICAgICBkZWNvZGVyID4+IGRlY29kZWREb21haW47CisgICAgICAgIGlmICghZGVj
b2RlZERvbWFpbikKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAg
T3B0aW9uYWw8Ym9vbD4gZGVjb2RlZFN0b3JhZ2VBY2Nlc3M7CisgICAgICAgIGRlY29kZXIgPj4g
ZGVjb2RlZFN0b3JhZ2VBY2Nlc3M7CisgICAgICAgIGlmICghZGVjb2RlZFN0b3JhZ2VBY2Nlc3Mp
CisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7eyBX
VEZNb3ZlKCpkZWNvZGVkRG9tYWluKSwgV1RGTW92ZSgqZGVjb2RlZFN0b3JhZ2VBY2Nlc3MpIH19
OworICAgIH0KKwogICAgIGJvb2wgb3BlcmF0b3I9PShUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmlj
Rmlyc3RQYXJ0eSBjb25zdCBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBmaXJz
dFBhcnR5RG9tYWluID09IG90aGVyLmZpcnN0UGFydHlEb21haW4gJiYgc3RvcmFnZUFjY2Vzc0dy
YW50ZWQgPT0gb3RoZXIuc3RvcmFnZUFjY2Vzc0dyYW50ZWQ7CkBAIC0xMTIsMzUgKzE2MCwzMiBA
QCBzdHJ1Y3QgVGhpcmRQYXJ0eURhdGEgewogICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50
b1N0cmluZygpOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFRoaXJkUGFydHlE
YXRhICZvdGhlcikgY29uc3QKKyAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gdW5kZXJGaXJzdFBhcnRpZXMuc2l6ZSgpIDwg
b3RoZXIudW5kZXJGaXJzdFBhcnRpZXMuc2l6ZSgpOworICAgICAgICBlbmNvZGVyIDw8IHRoaXJk
UGFydHlEb21haW47CisgICAgICAgIGVuY29kZXIgPDwgdW5kZXJGaXJzdFBhcnRpZXM7CiAgICAg
fQotfTsKIAotY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGZpbmFsIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSwg
V1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4gewotcHVibGljOgotICAgIHVzaW5nIFJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwotICAg
IHVzaW5nIFJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0g
ICAgdXNpbmcgVG9wRnJhbWVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAg
ICB1c2luZyBTdWJGcmFtZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAg
IHVzaW5nIFN1YlJlc291cmNlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0g
ICAgdXNpbmcgUmVkaXJlY3REb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAg
ICB1c2luZyBSZWRpcmVjdGVkRnJvbURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
OwotICAgIHVzaW5nIFJlZGlyZWN0ZWRUb0RvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluOwotICAgIHVzaW5nIE5hdmlnYXRlZEZyb21Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbjsKLSAgICB1c2luZyBOYXZpZ2F0ZWRUb0RvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluOwotICAgIHVzaW5nIERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyA9IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIE9wZW5lckRvbWFpbiA9IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkID0g
V2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ7Ci0gICAgdXNpbmcgU3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duID0gV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOwot
Ci0gICAgc3RhdGljIFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNyZWF0ZShO
ZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRl
TG9jYWxob3N0KQorICAgIHN0YXRpYyBPcHRpb25hbDxUaGlyZFBhcnR5RGF0YT4gZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShuZXR3b3JrU2Vzc2lvbiwgcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCkpOworICAgICAg
ICBPcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZGVjb2RlZERvbWFpbjsKKyAg
ICAgICAgZGVjb2RlciA+PiBkZWNvZGVkRG9tYWluOworICAgICAgICBpZiAoIWRlY29kZWREb21h
aW4pCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFs
PFZlY3RvcjxUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4+IGRlY29kZWRGaXJz
dFBhcnRpZXM7CisgICAgICAgIGRlY29kZXIgPj4gZGVjb2RlZEZpcnN0UGFydGllczsKKyAgICAg
ICAgaWYgKCFkZWNvZGVkRmlyc3RQYXJ0aWVzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqZGVjb2RlZERvbWFpbiksIFdURk1v
dmUoKmRlY29kZWRGaXJzdFBhcnRpZXMpIH19OwogICAgIH0KIAotICAgIH5XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUoKTsKKyAgICBib29sIG9wZXJhdG9yPChjb25zdCBUaGlyZFBhcnR5
RGF0YSAmb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gdW5kZXJGaXJzdFBhcnRp
ZXMuc2l6ZSgpIDwgb3RoZXIudW5kZXJGaXJzdFBhcnRpZXMuc2l6ZSgpOworICAgIH0KK307CiAK
ICAgICB2b2lkIGRpZERlc3Ryb3lOZXR3b3JrU2Vzc2lvbigpOwogCkBAIC0yMzUsNyArMjgwLDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0
b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik7CiAgICAgdm9pZCByZXF1ZXN0
U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJJRCwgT3BlbmVyRG9tYWluJiYpOwotICAgIFZl
Y3RvcjxUaGlyZFBhcnR5RGF0YT4gYWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKCk7CisgICAgdm9p
ZCBhZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4mJik+JiYpOwog
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShO
ZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRl
eCA5MzIzNTdlOTY2YWVhMzNiNzMwNjQxOTdlYTNmMzliMjRlNjI2N2IxLi40YmJlYTcyNDJmNjI4
YTZiM2I2Mzc2OTQzYWFhZmRkOWQwMWJhM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNzUwLDYgKzc1MCwxOSBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRAogICAgIH0KIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFTdW1tYXJ5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpUaGlyZFBhcnR5RGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYg
KGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkg
eworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgICAgICAgICByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLT5hZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0p
OworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgIH0KK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlm
IChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRl
eCA0ZDRhZGQwMGNlMzg2YzA3ZWQ4NzY2NDRhZWZlNDc4MTk5NWVlZjAyLi41YmMxNjVhZTYzZjBh
NTQzNTg3N2ZiZjY3MzUwNmUwMmVkNmQzYzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yMzEsNiArMjMxLDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0UGFyYW1l
dGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFM
OjpTZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFu
ZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9p
ZCBnZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkoUEFMOjpTZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6VGhpcmRQYXJ0eURhdGE+JiYpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ29va2llQmxvY2tp
bmdVcGRhdGUoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBzY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoUEFMOjpT
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzdWJtaXRU
ZWxlbWV0cnkoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbgppbmRleCBlZTA4NmMwY2QxNjc2ZTUwZDc4ZWRhOTYyMDFjYzM3MWFjNDJmYzhh
Li4yYWQ5ODgxZmNmN2VhODQ0ZDgyYmM3N2ZhYzA3ZjQ5M2Q3YzRkZTVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4KQEAgLTExMyw2ICsxMTMsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgU2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMpIC0+ICgpIEFzeW5jCiAgICAg
U2V0R3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluLCBib29sIGlzR3JhbmRmYXRoZXJlZCkgLT4gKCkg
QXN5bmMKICAgICBTZXRVc2VJVFBEYXRhYmFzZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJv
b2wgdmFsdWUpIC0+ICgpIEFzeW5jCisgICAgR2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFT
dW1tYXJ5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKFZlY3RvcjxXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+IHRoaXJkUGFydHlEYXRh
KSBBc3luYwogICAgIFNldEdyYW5kZmF0aGVyaW5nVGltZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFNlY29uZHMgc2Vjb25kcykgLT4gKCkgQXN5bmMKICAgICBTZXRNYXhTdGF0aXN0aWNzRW50
cmllcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IG1heGltdW1FbnRyeUNvdW50
KSAtPiAoKSBBc3luYwogICAgIFNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3Zh
bChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY29uZHMgc2Vjb25kcykgLT4gKCkgQXN5bmMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAppbmRleCBiN2NhOTdhZmEwMGQ5M2MzYjQ5
NmI0MWQ1YzA4NmFmMWU5ODIzYWYyLi5hNmQwODhkZTkwYzZlMzkyMzIxY2RmMTA3MzZhNDFlMDVi
YmIyNjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCkBAIC0xNTMsNiArMTUz
LDggQEAgcHVibGljOgogICAgICAgICBQcmVmZXJlbmNlcywKICAgICAgICAgUmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NDb25maXJtUmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZSwKKyAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHksCisg
ICAgICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5LAogICAgICAgICBSdW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWxSZXN1bHRMaXN0ZW5lciwKICAgICAgICAgUnVuSmF2YVNjcmlw
dEFsZXJ0UmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIFJ1bkphdmFTY3JpcHRDb25maXJtUmVzdWx0
TGlzdGVuZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmpl
Y3QubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KaW5kZXggMTQz
ZWIwODkxYjlmMmJhYzRiMDAxYjExNDZlYmQzODY3NzY1NGZlYy4uMjE4YWJlNzM0ODQ0MzU1YzQ5
YmEwNWZlMzNmNDBmZGNlMTk2NTkzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvQVBJT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9i
amVjdC5tbQpAQCAtODAsNiArODAsOCBAQAogI2ltcG9ydCAiX1dLSW5zcGVjdG9ySW50ZXJuYWwu
aCIKICNpbXBvcnQgIl9XS0ludGVybmFsRGVidWdGZWF0dXJlSW50ZXJuYWwuaCIKICNpbXBvcnQg
Il9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbkludGVybmFsLmgiCisjaW1wb3J0ICJfV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUludGVybmFsLmgiCisjaW1wb3J0ICJfV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tVc2Vy
Q29udGVudFdvcmxkSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1VzZXJJbml0aWF0ZWRBY3Rpb25J
bnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oIgpAQCAtMzI1
LDYgKzMyNywxNCBAQCB2b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0
eXBlKQogICAgICAgICB3cmFwcGVyID0gW19XS0N1c3RvbUhlYWRlckZpZWxkcyBhbGxvY107CiAg
ICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmly
c3RQYXJ0eToKKyAgICAgICAgd3JhcHBlciA9IFtfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmly
c3RQYXJ0eSBhbGxvY107CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBUeXBlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eToKKyAgICAgICAgd3JhcHBlciA9IFtfV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eSBhbGxvY107CisgICAgICAgIGJyZWFrOworCiAgICAg
Y2FzZSBUeXBlOjpVc2VyQ29udGVudFdvcmxkOgogICAgICAgICB3cmFwcGVyID0gW19XS1VzZXJD
b250ZW50V29ybGQgYWxsb2NdOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVJlc291cmNlTG9hZFN0YXRpc3RpY3NG
aXJzdFBhcnR5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDZjOGU4M2I0MjYwZmQ1YTIwNDM0YTQzOTFiOGM5YzIx
MDhjMWMzZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1
ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgQVBJIHsKKworY2xhc3MgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0ZpcnN0UGFydHkgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5PiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eT4gY3JlYXRlKGNvbnN0IFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNp
ZmljRmlyc3RQYXJ0eSBmaXJzdFBhcnR5RGF0YSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5KGZpcnN0UGFydHlEYXRh
KSk7CisgICAgfQorCisgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkoY29uc3Qg
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9y
U3BlY2lmaWNGaXJzdFBhcnR5IGZpcnN0UGFydHlEYXRhKQorICAgICAgICA6IG1fZmlyc3RQYXJ0
eURhdGEoZmlyc3RQYXJ0eURhdGEpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IFdURjo6U3Ry
aW5nJiBmaXJzdFBhcnR5RG9tYWluKCkgeyByZXR1cm4gbV9maXJzdFBhcnR5RGF0YS5maXJzdFBh
cnR5RG9tYWluLnN0cmluZygpOyB9CisgICAgYm9vbCBzdG9yYWdlQWNjZXNzKCkgeyByZXR1cm4g
bV9maXJzdFBhcnR5RGF0YS5zdG9yYWdlQWNjZXNzR3JhbnRlZDsgfQorCitwcml2YXRlOgorICAg
IFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZv
clNwZWNpZmljRmlyc3RQYXJ0eSBtX2ZpcnN0UGFydHlEYXRhOworCit9OworCit9IC8vIG5hbWVz
cGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTI4
YWFhMDY3NzNmMDk0MzA1YzUzNTljM2UzOTUwYjdmMTllNzFjZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhp
cmRQYXJ0eS5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
QVBJIHsKKworY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkgZmluYWwgOiBw
dWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGly
ZFBhcnR5PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VGhpcmRQYXJ0eT4gY3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpUaGlyZFBhcnR5RGF0YSB0aGlyZFBhcnR5RGF0YSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5KHRoaXJk
UGFydHlEYXRhKSk7CisgICAgfQorCisgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFy
dHkoY29uc3QgV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFy
dHlEYXRhIHRoaXJkUGFydHlEYXRhKQorICAgICAgICA6IG1fdGhpcmRQYXJ0eURhdGEodGhpcmRQ
YXJ0eURhdGEpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IFdURjo6U3RyaW5nJiB0aGlyZFBh
cnR5RG9tYWluKCkgeyByZXR1cm4gbV90aGlyZFBhcnR5RGF0YS50aGlyZFBhcnR5RG9tYWluLnN0
cmluZygpOyB9CisgICAgVmVjdG9yPFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4gdW5kZXJGaXJzdFBhcnRp
ZXMoKSB7IHJldHVybiBtX3RoaXJkUGFydHlEYXRhLnVuZGVyRmlyc3RQYXJ0aWVzOyB9CisKK3By
aXZhdGU6CisgICAgV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJk
UGFydHlEYXRhIG1fdGhpcmRQYXJ0eURhdGE7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBUEkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVN0b3JlLm1tCmluZGV4IDQ4NDY3YjdhODMzMjEwYjI5YTBhZWQwZWFiNDRhMDgwMmYzZjhlMzYu
LmYwZTFjNDVlNjRiMTRhYmVlOGM4NGU0YzZiMjRmZjVlYWZiMDMyYjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5t
bQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgiCiAjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmgiCiAj
aW1wb3J0ICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCisjaW1wb3J0ICJfV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0
b3JlRGVsZWdhdGUuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ3JlZGVudGlhbC5oPgpAQCAtNTE4LDYg
KzUxOSwyMSBAQCAtICh2b2lkKV9jbGVhclJlc291cmNlTG9hZFN0YXRpc3RpY3M6KHZvaWQgKF4p
KHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiAjZW5kaWYKIH0KIAorLSAodm9pZClfZ2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFTdW1tYXJ5Oih2b2lkICheKShOU0FycmF5PF9XS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5ICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+
Z2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFTdW1tYXJ5KFtjb21wbGV0aW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgdGhpcmRQYXJ0eURvbWFp
bnMpIHsKKyAgICAgICAgTlNNdXRhYmxlQXJyYXk8X1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Ro
aXJkUGFydHkgKj4gKmFwaVRoaXJkUGFydGllcyA9IFtbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0V2l0aENhcGFjaXR5OnRoaXJkUGFydHlEb21haW5zLnNpemUoKV0gYXV0b3JlbGVhc2VdOwor
ICAgICAgICBmb3IgKGF1dG8mIHRoaXJkUGFydHkgOiB0aGlyZFBhcnR5RG9tYWlucykKKyAgICAg
ICAgICAgIFthcGlUaGlyZFBhcnRpZXMgYWRkT2JqZWN0OndyYXBwZXIoQVBJOjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVGhpcmRQYXJ0eTo6Y3JlYXRlKHRoaXJkUGFydHkpKV07CisKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoYXBpVGhpcmRQYXJ0aWVzKTsKKyAgICB9KTsKKyNlbHNlCisgICAg
Y29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyNlbmRpZgorfQorCiAtICh2b2lkKV9pc1JlZ2lzdGVy
ZWRBc1N1YnJlc291cmNlVW5kZXJGaXJzdFBhcnR5OihOU1VSTCAqKWZpcnN0UGFydHlVUkwgdGhp
cmRQYXJ0eTooTlNVUkwgKil0aGlyZFBhcnR5VVJMIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAppbmRleCA3MGZjMTQ2NTczZDIzZWE0
ZTUwYjM5YmVjYzU4MzJiMjJhMzIwMjJkLi40OTFiNTJjMDY4MmM3YjgxZjZhNWQ2MDY3YmE1N2Q1
OWJhMDI3ODY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAgLTI5LDYgKzI5LDcgQEAg
TlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGNsYXNzIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uOwogQGNsYXNzIFdLV2ViVmlldzsKK0BjbGFzcyBfV0tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVGhpcmRQYXJ0eTsKIAogQHByb3RvY29sIF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0
ZTsKIApAQCAtNzEsNiArNzIsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dL
V2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogLSAodm9pZClfbG9nVXNlckludGVyYWN0
aW9uOihOU1VSTCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29t
cGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKIC0gKHZvaWQpX3NldFByZXZhbGVudERvbWFpbjooTlNVUkwgKilkb21haW4g
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogLSAodm9pZClfZ2V0SXNQcmV2
YWxlbnREb21haW46KE5TVVJMICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShC
T09MKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9z
KDEzLjApKTsKKy0gKHZvaWQpX2dldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeToo
dm9pZCAoXikoTlNBcnJheTxfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eSAqPiAq
KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEz
LjApKTsKIC0gKHZvaWQpX2NsZWFyUHJldmFsZW50RG9tYWluOihOU1VSTCAqKWRvbWFpbiBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX2Ns
ZWFyUmVzb3VyY2VMb2FkU3RhdGlzdGljczoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRs
ZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
IC0gKHZvaWQpX2lzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlckZpcnN0UGFydHk6KE5TVVJM
ICopZmlyc3RQYXJ0eVVSTCB0aGlyZFBhcnR5OihOU1VSTCAqKXRoaXJkUGFydHlVUkwgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0ZpcnN0UGFydHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhOWZhNDgxYjM2ZTU5
ZjFiMzkxOGFkMWNlN2U0OTFhMjJjOWFlMTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFy
dHkuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworTlNfQVNTVU1FX05PTk5VTExfQkVH
SU4KKworQGludGVyZmFjZSBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eSA6IE5T
T2JqZWN0CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKmZpcnN0
UGFydHlEb21haW47CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgdGhpcmRQ
YXJ0eVN0b3JhZ2VBY2Nlc3NHcmFudGVkOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VO
RApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5Lm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjFjZmFhYzhhMzE2MGQzZjVjZGQzM2M0YzhhZmEzOWIyZTQ3ZDVhYjgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0ZpcnN0UGFydHkubW0KQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0
UGFydHlJbnRlcm5hbC5oIgorCitAaW1wbGVtZW50YXRpb24gX1dLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0ZpcnN0UGFydHkKKworLSAodm9pZClkZWFsbG9jCit7CisgICAgX2ZpcnN0UGFydHktPkFQ
STo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHk6On5SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRmlyc3RQYXJ0eSgpOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAoTlNTdHJpbmcg
KilmaXJzdFBhcnR5RG9tYWluCit7CisgICAgcmV0dXJuIF9maXJzdFBhcnR5LT5maXJzdFBhcnR5
RG9tYWluKCk7Cit9CisKKy0gKEJPT0wpc3RvcmFnZUFjY2VzcworeworICAgIHJldHVybiBfZmly
c3RQYXJ0eS0+c3RvcmFnZUFjY2VzcygpOworfQorCistIChBUEk6Ok9iamVjdCYpX2FwaU9iamVj
dAoreworICAgIHJldHVybiAqX2ZpcnN0UGFydHk7Cit9CisKK0BlbmQKKwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NGaXJzdFBhcnR5SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUludGVybmFsLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTY0MDBmY2FhZWY0ZmQ5YjUxNDFhZTRmMmY4ZTNmZmYxYWNhZTQ4NwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRmlyc3RQYXJ0eUludGVybmFsLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJBUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmly
c3RQYXJ0eS5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIKKyNpbXBvcnQgIl9XS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NGaXJzdFBhcnR5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPEFQSTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0
UGFydHk+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRmlyc3RQYXJ0eTsKK307CisKK30KKworQGludGVyZmFjZSBfV0tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRmlyc3RQYXJ0eSAoKSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAgQVBJOjpPYmpl
Y3RTdG9yYWdlPEFQSTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHk+IF9maXJzdFBh
cnR5OworfQorQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHku
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mNDM2OGU5ZTI1NzQwNGNlNzVmMjdlOWQ2ZjdkMjhmN2RlMjA0ODIwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5LmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgIl9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5LmgiCisK
K05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0BpbnRlcmZhY2UgX1dLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RoaXJkUGFydHkgOiBOU09iamVjdAorCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIE5TU3RyaW5nICp0aGlyZFBhcnR5RG9tYWluOworQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBOU0FycmF5PF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5ICo+
ICp1bmRlckZpcnN0UGFydGllczsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
ZGY5ZjVmZjFhYjY3ZDE0MzlkOTU4NjZkODIxMGI1ZWJlZjY5NDk0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NUaGlyZFBhcnR5Lm1tCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIl9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5
SW50ZXJuYWwuaCIKKworI2ltcG9ydCAiQVBJQXJyYXkuaCIKKyNpbXBvcnQgIl9XS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5LmgiCisKK0BpbXBsZW1lbnRhdGlvbiBfV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBfdGhp
cmRQYXJ0eS0+QVBJOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eTo6flJlc291cmNl
TG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5KCk7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCist
IChOU1N0cmluZyAqKXRoaXJkUGFydHlEb21haW4KK3sKKyAgICByZXR1cm4gX3RoaXJkUGFydHkt
PnRoaXJkUGFydHlEb21haW4oKTsKK30KKworLSAoTlNBcnJheTxfV0tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRmlyc3RQYXJ0eSAqPiAqKXVuZGVyRmlyc3RQYXJ0aWVzCit7CisgICAgYXV0byBhcGlG
aXJzdFBhcnRpZXMgPSBfdGhpcmRQYXJ0eS0+dW5kZXJGaXJzdFBhcnRpZXMoKTsKKyAgICBOU011
dGFibGVBcnJheTxfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eSAqPiAqYXBpVW5k
ZXJGaXJzdFBhcnRpZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6YXBpRmly
c3RQYXJ0aWVzLnNpemUoKV07CisgICAgZm9yIChjb25zdCBhdXRvJiB0aGlyZFBhcnR5RGF0YVVu
ZGVyRmlyc3RQYXJ0eSA6IGFwaUZpcnN0UGFydGllcykKKyAgICAgICAgW2FwaVVuZGVyRmlyc3RQ
YXJ0aWVzIGFkZE9iamVjdDp3cmFwcGVyKEFQSTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0
UGFydHk6OmNyZWF0ZSh0aGlyZFBhcnR5RGF0YVVuZGVyRmlyc3RQYXJ0eSkpXTsKKworICAgIHJl
dHVybiBhcGlVbmRlckZpcnN0UGFydGllczsKK30KKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmpl
Y3QKK3sKKyAgICByZXR1cm4gKl90aGlyZFBhcnR5OworfQorCisKK0BlbmQKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NUaGlyZFBhcnR5SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUludGVybmFsLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWJmNjI3MzhiNzk3NGI1YTQyZTcwZjJlNWQ2OGM0ZGYxYzc5ZmI0MQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUludGVybmFsLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJBUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VGhpcmRQYXJ0eS5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIKKyNpbXBvcnQgIl9XS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit0ZW1w
bGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPEFQSTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Ro
aXJkUGFydHk+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVGhpcmRQYXJ0eTsKK307CisKK30KKworQGludGVyZmFjZSBfV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVGhpcmRQYXJ0eSAoKSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAgQVBJOjpP
YmplY3RTdG9yYWdlPEFQSTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHk+IF90aGly
ZFBhcnR5OworfQorCitAZW5kCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGFhOTFhZTBiNzQ2MzdiYzMy
M2U2OGY4MjAzNzlkN2MyNWI2ZTk2OTIuLjEwYjY5MmVkZDMyODdmMGZmMDgyYzQ1Zjg0NjU3ZjA4
MmNkMDc3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtODE0LDYgKzgxNCwxNiBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgQwogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OkdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKHNlc3Npb25JRCksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OlRoaXJkUGFydHlEYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAo
IWNhblNlbmRNZXNzYWdlKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OkdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeShzZXNz
aW9uSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgKaW5kZXggNzZlODJhN2I5NzFkOGVkMmMyMDM4YzE5NWFmZTk5YmU1NTdlMWNj
OS4uOTFlMDk2NDYwYjIyMDVhYzE5MWM4MTdmZWFkNDc4ZWIxM2JiZGZhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgK
QEAgLTEzNSw2ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJj
ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01v
ZGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6
OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworICAgIHZvaWQgZ2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFTdW1tYXJ5
KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiYmKT4mJik7CiAgICAgdm9pZCBn
ZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8U3RyaW5nPiBkb21haW5zKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0U3Rv
cmFnZUFjY2Vzc0NvbmZpcm0oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCByZXNldFBhcmFtZXRl
cnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IGIyZjlmYzI0OWZhNDhlYjVmZGMzZjYzNGE5ZjU5
NGMxNjM2NzYwNDMuLjE5OTUxMGU0MmVkMWU0ODQxMDEwMDA0ZDQyNGE2MDg1NDgxNDJmZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCkBAIC0xNTEwLDYgKzE1MTAsMTYgQEAgdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1vZGlmaWVk
U2luY2UKICAgICB9CiB9CiAKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFTdW1tYXJ5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBmb3Ig
KGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8q
IHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKKyAgICAgICAgICAgIHBy
b2Nlc3MtPmdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeShtX3Nlc3Npb25JRCwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0KK30KKwogdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0
aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmgKaW5kZXggMjcwYzJjNzhhOGM5MzQ1YmYwODE2NjJlNGNjNTk4ODEwMGRlOTA4
NS4uYTc1YjFhZTZkY2I3YTRiMzNiZjcwZmVhMjhiM2Q2YzMyMGNkY2FiYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3ND
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgorI2luY2x1
ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhU3RvcmVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+CkBAIC0xNjAsNiArMTYxLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lz
dGVudChXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Ms
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5N
ZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhU3VtbWFyeShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiYmKT4mJik7CiAgICAgdm9pZCBzY2hlZHVs
ZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeSgpOwogICAgIHZvaWQgc2V0R3JhbmRm
YXRoZXJlZChjb25zdCBVUkwmLCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MjczMjhlMjQ1YzAwODc1ZjQyZDQ4Y2ZhZTcwZDM0OGEwN2ViYzUzYi4uMjJlMjU3MTk0ZmViZWFj
MjI2YjA1ZmYxYjAyNDFmOGMzNmRkZTY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MzIsNiArOTMyLDE0IEBACiAJCTQ2QzM5MjI5
MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMzOTIyODIzMTZFQzREMDA4RUVE
OUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oICovOyB9OwogCQk0NkRGMDYzQzFGMzkwNUY4
MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIg
LyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggKi87IH07CiAJCTQ2RjlCMjYzMjM1MjZF
RjMwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAv
KiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCAqLzsgfTsKKwkJNDlCQ0ExOTIyM0ExNzc2NjAw
MjhBODM2IC8qIEFQSVJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUJDQTE5MTIzQTE3NzY2MDAy
OEE4MzYgLyogQVBJUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkuaCAqLzsgfTsKKwkJ
NDlCQ0ExOTUyM0ExOENGRDAwMjhBODM2IC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJz
dFBhcnR5SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ5QkNBMTkwMjNBMTc1NDkwMDI4QTgzNiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRmlyc3RQYXJ0eUludGVybmFsLmggKi87IH07CisJCTQ5QkNBMTk3MjNBMTkzMEQwMDI4QTgz
NiAvKiBBUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlCQ0ExOTYyM0ExOEY2MjAwMjhBODM2
IC8qIEFQSVJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5LmggKi87IH07CisJCTQ5RkJF
RkZEMjM5QjAxMUQwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0
eS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkJF
RkZDMjM5QjAxMUQwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0
eS5tbSAqLzsgfTsKKwkJNDlGQkVGRkYyMzlCMDEyRjAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NUaGlyZFBhcnR5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDlGQkVGRkUyMzlCMDEyRjAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NUaGlyZFBhcnR5Lm1tICovOyB9OworCQk0OUZCRjAwMDIzOUIxRjc1MDBCRDAz
MkYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkJFRkZBMjM5QUQ5NzgwMEJEMDMy
RiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5oICovOyB9OworCQk0OUZC
RjAwMTIzOUIxRjhEMDBCRDAzMkYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFy
dHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkJF
RkZCMjM5QURCMTgwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0
eS5oICovOyB9OworCQk0OUZCRjAwOTIzOUYwOEUwMDBCRDAzMkYgLyogX1dLUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1RoaXJkUGFydHlJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDlGQkYwMDgyMzlGMDhFMDAwQkQwMzJGIC8qIF9XS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5SW50ZXJuYWwuaCAqLzsgfTsKIAkJNEEzQ0MxOEIx
OUIwNjQwRjAwRDE0QUVGIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEYz
QTE5QUY3QjA0MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuaCAqLzsgfTsKIAkJNEEzQ0MxOEQxOUIwNjQxOTAwRDE0QUVGIC8qIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRBNDEwRjNDMTlBRjdCMDQwMDJFQkFCNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5LmggKi87IH07CiAJCTRBM0NDMThGMTlCMDdCOEEwMEQxNEFFRiAvKiBXS1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEYzNjE5QUY3QUMzMDAyRUJBQjUgLyogV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0zMzQxLDYgKzMzNDksMTQgQEAKIAkJNDZERjA2MzkxRjM5MDVFNTAwMTk4
MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVu
dHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkQ2Fj
aGVFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OUJDQTE5MDIzQTE3NTQ5
MDAyOEE4MzYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlJbnRlcm5hbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUludGVy
bmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5QkNBMTkxMjNBMTc3NjYwMDI4
QTgzNiAvKiBBUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0OUJDQTE5NjIzQTE4RjYyMDAyOEE4MzYgLyogQVBJUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1RoaXJkUGFydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1RoaXJkUGFydHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlG
QkVGRkEyMzlBRDk3ODAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBh
cnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5RkJFRkZCMjM5QURCMTgwMEJEMDMy
RiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0OUZCRUZGQzIzOUIwMTFEMDBCRDAzMkYgLyogX1dLUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0ZpcnN0UGFydHkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDlGQkVGRkUyMzlCMDEyRjAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NU
aGlyZFBhcnR5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1RoaXJkUGFydHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5RkJGMDA4
MjM5RjA4RTAwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUlu
dGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBh
cnR5SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0MTBGMzUxOUFG
N0FDMzAwMkVCQUI1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNDEwRjM2MTlBRjdBQzMwMDJF
QkFCNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0MTBGMzkxOUFGN0IwNDAwMkVCQUI1IC8qIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY2MDUsNiArNjYyMSwxMiBAQAogCQkJ
CUE1NUJBODBDMUJBMTJCRTEwMDdDRDMzRCAvKiBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29u
dHJvbGxlci5oICovLAogCQkJCUE1NUJBODBEMUJBMTJCRTEwMDdDRDMzRCAvKiBfV0tSZW1vdGVX
ZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSAqLywKIAkJCQk5OTBFMUUwODIzODRBODhCMDA0
NjAyREYgLyogX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJQcml2YXRlLmggKi8s
CisJCQkJNDlGQkVGRkIyMzlBREIxODAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NGaXJzdFBhcnR5LmggKi8sCisJCQkJNDlGQkVGRkMyMzlCMDExRDAwQkQwMzJGIC8qIF9XS1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5Lm1tICovLAorCQkJCTQ5QkNBMTkwMjNBMTc1
NDkwMDI4QTgzNiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUludGVybmFs
LmggKi8sCisJCQkJNDlGQkVGRkEyMzlBRDk3ODAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NUaGlyZFBhcnR5LmggKi8sCisJCQkJNDlGQkVGRkUyMzlCMDEyRjAwQkQwMzJGIC8q
IF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Lm1tICovLAorCQkJCTQ5RkJGMDA4
MjM5RjA4RTAwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUlu
dGVybmFsLmggKi8sCiAJCQkJMUEwMDJEM0YxOTZCMzI5NDAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25T
dGF0ZS5oICovLAogCQkJCTFBMDAyRDNFMTk2QjMyOTQwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3Rh
dGUubW0gKi8sCiAJCQkJMUEwMDJENDIxOTZCMzM3MDAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0
ZUludGVybmFsLmggKi8sCkBAIC04MjcxLDYgKzgyOTMsOCBAQAogCQkJCTFBRkREMzE0MTg5MUI1
NDAwMDE1Mzk3MCAvKiBBUElQb2xpY3lDbGllbnQuaCAqLywKIAkJCQk3Q0U0RDIxRDFBNDkxNENB
MDBDN0YxNTIgLyogQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcCAqLywKIAkJCQk3Q0U0
RDIxRTFBNDkxNENBMDBDN0YxNTIgLyogQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggKi8s
CisJCQkJNDlCQ0ExOTEyM0ExNzc2NjAwMjhBODM2IC8qIEFQSVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NGaXJzdFBhcnR5LmggKi8sCisJCQkJNDlCQ0ExOTYyM0ExOEY2MjAwMjhBODM2IC8qIEFQSVJl
c291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5LmggKi8sCiAJCQkJMUFGREU2NUYxOTU0RTlC
MTAwQzQ4RkZBIC8qIEFQSVNlc3Npb25TdGF0ZS5jcHAgKi8sCiAJCQkJMUFGREU2NjAxOTU0RTlC
MTAwQzQ4RkZBIC8qIEFQSVNlc3Npb25TdGF0ZS5oICovLAogCQkJCTFBNEQ2NjQ3MThBMkQ5MUEw
MEQ4MkUyMSAvKiBBUElVSUNsaWVudC5oICovLApAQCAtOTYwMCw2ICs5NjI0LDEwIEBACiAJCQkJ
OTkwRTFFMDkyMzg0QUE1NzAwNDYwMkRGIC8qIF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250
cm9sbGVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc3MjE2QjgxQTRFNkJFMDAwRENB
NzE4IC8qIF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
RjYwNEJBQTE4ODlGQkI4MDBFRTAzOTUgLyogX1dLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHNJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDlGQkYwMDEyMzlCMUY4RDAwQkQwMzJGIC8qIF9X
S1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5LmggaW4gSGVhZGVycyAqLywKKwkJCQk0
OUJDQTE5NTIzQTE4Q0ZEMDAyOEE4MzYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0
UGFydHlJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDlGQkYwMDAyMzlCMUY3NTAwQkQw
MzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5LmggaW4gSGVhZGVycyAq
LywKKwkJCQk0OUZCRjAwOTIzOUYwOEUwMDBCRDAzMkYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1RoaXJkUGFydHlJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc2MzExRkQxQTNG
QjVGNzAwNUEyRTUxIC8qIF9XS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzNzYzMTFGRTFBM0ZCNjAwMDA1QTJFNTEgLyogX1dLU2FtZURvY3VtZW50TmF2
aWdhdGlvblR5cGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwMDJENDQxOTZCMzM4
OTAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05Njk0LDYg
Kzk3MjIsOCBAQAogCQkJCTFBQzEzMzZDMTg1NjVDN0EwMEYzRUMwNSAvKiBBUElQYWdlSGFuZGxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUZERDMxNTE4OTFCNTQwMDAxNTM5NzAgLyogQVBJUG9s
aWN5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0U0RDIyMDFBNDkxNENBMDBDN0YxNTIg
LyogQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk0OUJD
QTE5MjIzQTE3NzY2MDAyOEE4MzYgLyogQVBJUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFy
dHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ5QkNBMTk3MjNBMTkzMEQwMDI4QTgzNiAvKiBBUElS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYz
NDQ0NTYxMkE4ODVDODAwMDYxMkQ4IC8qIEFQSVNlY3VyaXR5T3JpZ2luLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUZERTY2MjE5NTRFOUIxMDBDNDhGRkEgLyogQVBJU2Vzc2lvblN0YXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQTRENjY0ODE4QTJEOTFBMDBEODJFMjEgLyogQVBJVUlDbGllbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtMTE2MDgsNiArMTE2MzgsOCBAQAogCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTVDQkQ1OTVDMjI4MEVERjQwMDJC
MjJBQSAvKiBfV0tDdXN0b21IZWFkZXJGaWVsZHMubW0gaW4gU291cmNlcyAqLywKKwkJCQk0OUZC
RUZGRDIzOUIwMTFEMDBCRDAzMkYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFy
dHkubW0gaW4gU291cmNlcyAqLywKKwkJCQk0OUZCRUZGRjIzOUIwMTJGMDBCRDAzMkYgLyogX1dL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkubW0gaW4gU291cmNlcyAqLywKIAkJCQk5
OUU3MTg5QTIxRjc5RDlFMDA1NUU5NzUgLyogX1dLVG91Y2hFdmVudEdlbmVyYXRvci5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTJEOTJBNzg0MjEyQjZBQjEwMEY0OTNGRCAvKiBBY3Rpdml0eUFzc2Vy
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3QjIxMkI2QTcxMDBGNDkzRkQgLyog
QXJndW1lbnRDb2RlcnMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2ZhZDZmYzlkNGQ2Njc2YWJmMzk3MWQzMzBi
NDUxY2RkMTBmYTJmZi4uMzY5ZWQ4MzhmMjJlMDdhOTdiOWRiMTY5MmQ1Y2FjY2JlNzA2YzVlOSAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIxIEBACisyMDE5LTEyLTEyICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBw
bGUuY29tPgorCisgICAgICAgIENyZWF0ZSBXZWJLaXQgQVBJIGNhbGxzIGZvciBJVFAgRGF0YQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0OTMyCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzYzMjc1Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHRlc3QgdG8gY2hlY2sgdGhhdCB0aGUg
SVRQIGRhdGEgc3VtbWFyeSB3YXMgYmVpbmcgcHJvcGVybHkKKyAgICAgICAgYWdncmVnYXRlZCBh
bmQgc2VudCB0byB0aGUgVUlQcm9jZXNzLCBhbmQgdG8gbWFrZSBzdXJlIHRoZSBBUEkgd29ya3MK
KyAgICAgICAgYXMgZXhwZWN0ZWQuIEFkZGVkIGludGVyZmFjZSBkZWNsYXJhdGlvbnMgdG8gdGhl
IGZpbGUgdG8gYWxsb3cgZm9yCisgICAgICAgIHVzZSBvZiB0aGUgX1dLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0ZpcnN0UGFydHkgYW5kCisgICAgICAgIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NU
aGlyZFBhcnR5IGNsYXNzZXMgd2l0aG91dCBoYXZpbmcKKyAgICAgICAgdG8gaW1wb3J0IHRoZSBo
ZWFkZXIgZmlsZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW06CisgICAgICAgIChURVNUKToKKwogMjAxOS0xMi0x
MCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3Zl
IFdLV2ViVmlldyBjb2RlIHJlbGF0ZWQgdG8gdGVzdGluZyB0byBuZXcgZmlsZXMsIHdpdGggdGhl
aXIgb3duIGhlYWRlcnMsIGFuZCBzdG9wIGV4cG9zaW5nIHRlc3Qtb25seSBmdW5jdGlvbnMgYXMg
U1BJLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tCmluZGV4IDRmZGNkYjVkYjRmMGZmMjAy
YWNjYWJjOThkNWQwMmNmNWI4OWUwYWMuLmQ2ODUzMzlmZDk4ZjM0MmYyNDY2MmM3M2QwMmVlNWNi
NDQ2Yzg5MDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW0KQEAgLTQwLDYgKzQwLDE2
IEBACiAKIHN0YXRpYyBib29sIGZpbmlzaGVkTmF2aWdhdGlvbiA9IGZhbHNlOwogCitAaW50ZXJm
YWNlIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5IDogTlNPYmplY3QKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKmZpcnN0UGFydHlEb21haW47CitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgdGhpcmRQYXJ0eVN0b3JhZ2VBY2Nl
c3NHcmFudGVkOworQGVuZAorCitAaW50ZXJmYWNlIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NU
aGlyZFBhcnR5IDogTlNPYmplY3QKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNT
dHJpbmcgKnRoaXJkUGFydHlEb21haW47CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkp
IE5TQXJyYXk8X1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkgKj4gKnVuZGVyRmly
c3RQYXJ0aWVzOworQGVuZAorCiBAaW50ZXJmYWNlIERpc2FibGVJVFBEdXJpbmdOYXZpZ2F0aW9u
RGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CiBAZW5kCiAKQEAgLTY1
MCwzICs2NjAsMTk2IEBAIFRFU1QoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgRmx1c2hPYnNlcnZl
cldoZW5XZWJQYWdlSXNDbG9zZWRCeUphdmFTY3JpcHQpCiAKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmVGbGFnKTsKIH0KKworVEVTVChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCBH
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkpCit7CisgICAgYXV0byAqc2hhcmVk
UHJvY2Vzc1Bvb2wgPSBbV0tQcm9jZXNzUG9vbCBfc2hhcmVkUHJvY2Vzc1Bvb2xdOworICAgIGF1
dG8gKmRhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV07CisK
KyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOiBzaGFy
ZWRQcm9jZXNzUG9vbF07CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3Jl
ID0gZGF0YVN0b3JlOworCisgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byB3ZWJWaWV3
MyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAg
ICBbd2ViVmlldzEgbG9hZEhUTUxTdHJpbmc6QCJXZWJLaXQgVGVzdCIgYmFzZVVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnIl1dOworICAgIFt3ZWJWaWV3MSBfdGVz
dF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgW3dlYlZpZXcyIGxvYWRIVE1MU3Ry
aW5nOkAiV2ViS2l0IFRlc3QiIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8v
d2Via2l0Mi5vcmciXV07CisgICAgW3dlYlZpZXcyIF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZp
Z2F0aW9uXTsKKyAgICBbd2ViVmlldzMgbG9hZEhUTUxTdHJpbmc6QCJXZWJLaXQgVGVzdCIgYmFz
ZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQzLm9yZyJdXTsKKyAgICBb
d2ViVmlldzMgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgW2RhdGFT
dG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6WUVTXTsKKworICAgIHN0YXRp
YyBib29sIGRvbmVGbGFnID0gZmFsc2U7CisgICAgW2RhdGFTdG9yZSBfY2xlYXJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzOl4odm9pZCkgeworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07
CisKKyAgICBzdGF0aWMgYm9vbCBzdGF0aXN0aWNzVXBkYXRlZCA9IGZhbHNlOworICAgIFtkYXRh
U3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2s6XihXS1dlYnNp
dGVEYXRhU3RvcmUgKiwgTlNTdHJpbmcgKm1lc3NhZ2UpIHsKKyAgICAgICAgaWYgKCFbbWVzc2Fn
ZSBpc0VxdWFsVG9TdHJpbmc6QCJTdGF0aXN0aWNzIFVwZGF0ZWQiXSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgc3RhdGlzdGljc1VwZGF0ZWQgPSB0cnVlOworICAgIH1dOworCisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKyAgICAvLyBTZWVkIHRlc3Qg
ZGF0YSBpbiB0aGUgd2ViIHByb2Nlc3MnIG9ic2VydmVyLgorCisgICAgLy8gZXZpbDEKKyAgICBk
b25lRmxhZyA9IGZhbHNlOworICAgIFtzaGFyZWRQcm9jZXNzUG9vbCBfc2VlZFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NGb3JUZXN0aW5nV2l0aEZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJodHRwOi8vd2Via2l0Lm9yZyJdIHRoaXJkUGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJo
dHRwOi8vZXZpbDEuY29tIl0gc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb246Tk8gY29tcGxldGlv
bkhhbmRsZXI6IF4oKSB7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworICAgIGRvbmVGbGFnID0gZmFs
c2U7CisgICAgW3NoYXJlZFByb2Nlc3NQb29sIF9zZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Zv
clRlc3RpbmdXaXRoRmlyc3RQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJr
aXQyLm9yZyJdIHRoaXJkUGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXZpbDEu
Y29tIl0gc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb246Tk8gY29tcGxldGlvbkhhbmRsZXI6IF4o
KSB7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworCisgICAgLy8gZXZpbDIKKyAgICBkb25lRmxhZyA9
IGZhbHNlOworICAgIFtzaGFyZWRQcm9jZXNzUG9vbCBfc2VlZFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NGb3JUZXN0aW5nV2l0aEZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8v
d2Via2l0Lm9yZyJdIHRoaXJkUGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXZp
bDIuY29tIl0gc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb246Tk8gY29tcGxldGlvbkhhbmRsZXI6
IF4oKSB7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworCisgICAgLy8gZXZpbDMKKyAgICBkb25lRmxh
ZyA9IGZhbHNlOworICAgIFtzaGFyZWRQcm9jZXNzUG9vbCBfc2VlZFJlc291cmNlTG9hZFN0YXRp
c3RpY3NGb3JUZXN0aW5nV2l0aEZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRw
Oi8vd2Via2l0Lm9yZyJdIHRoaXJkUGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8v
ZXZpbDMuY29tIl0gc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb246Tk8gY29tcGxldGlvbkhhbmRs
ZXI6IF4oKSB7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAg
IFtzaGFyZWRQcm9jZXNzUG9vbCBfc2VlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JUZXN0aW5n
V2l0aEZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Mi5vcmci
XSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwzLmNvbSJdIHNo
b3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uOk5PIGNvbXBsZXRpb25IYW5kbGVyOiBeKCkgeworICAg
ICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lRmxhZyk7CisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbc2hhcmVkUHJvY2Vz
c1Bvb2wgX3NlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZ1dpdGhGaXJzdFBhcnR5
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdDMub3JnIl0gdGhpcmRQYXJ0eTpb
TlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsMy5jb20iXSBzaG91bGRTY2hlZHVsZU5v
dGlmaWNhdGlvbjpOTyBjb21wbGV0aW9uSGFuZGxlcjogXigpIHsKKyAgICAgICAgZG9uZUZsYWcg
PSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcp
OworCisgICAgc3RhdGlzdGljc1VwZGF0ZWQgPSBmYWxzZTsKKyAgICBbd2ViVmlldzEgbG9hZEhU
TUxTdHJpbmc6QCI8Ym9keT48c2NyaXB0PmNsb3NlKCk7PC9zY3JpcHQ+PC9ib2R5PiIgYmFzZVVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnIl1dOworICAgIFt3ZWJW
aWV3MiBsb2FkSFRNTFN0cmluZzpAIjxib2R5PjxzY3JpcHQ+Y2xvc2UoKTs8L3NjcmlwdD48L2Jv
ZHk+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdDIub3JnIl1d
OworICAgIFt3ZWJWaWV3MyBsb2FkSFRNTFN0cmluZzpAIjxib2R5PjxzY3JpcHQ+Y2xvc2UoKTs8
L3NjcmlwdD48L2JvZHk+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dl
YmtpdDMub3JnIl1dOworCisgICAgLy8gV2FpdCBmb3IgdGhlIHN0YXRpc3RpY3MgdG8gYmUgdXBk
YXRlZCBpbiB0aGUgbmV0d29yayBwcm9jZXNzLgorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmc3RhdGlzdGljc1VwZGF0ZWQpOworCisgICAgLy8gQ2hlY2sgdGhhdCB0aGUgdGhpcmQtcGFy
dHkgZXZpbDEgaXMgbm93IHJlZ2lzdGVyZWQgYXMgc3VicmVzb3VyY2UuCisgICAgZG9uZUZsYWcg
PSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXJG
aXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmciXSB0aGly
ZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwxLmNvbSJdIGNvbXBsZXRp
b25IYW5kbGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGlz
UmVnaXN0ZXJlZCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKyAgICBkb25lRmxhZyA9IGZhbHNlOwor
ICAgIFtkYXRhU3RvcmUgX2lzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlckZpcnN0UGFydHk6
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Mi5vcmciXSB0aGlyZFBhcnR5OltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwxLmNvbSJdIGNvbXBsZXRpb25IYW5kbGVy
OiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGlzUmVnaXN0ZXJl
ZCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworCisgICAgLy8gQ2hlY2sgdGhhdCB0aGUgdGhpcmQt
cGFydHkgZXZpbDIgaXMgbm93IHJlZ2lzdGVyZWQgYXMgc3VicmVzb3VyY2UuCisgICAgZG9uZUZs
YWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5k
ZXJGaXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmciXSB0
aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwyLmNvbSJdIGNvbXBs
ZXRpb25IYW5kbGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7CisgICAgICAgIEVYUEVDVF9UUlVF
KGlzUmVnaXN0ZXJlZCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworCisgICAgLy8gQ2hlY2sgdGhh
dCB0aGUgdGhpcmQtcGFydHkgZXZpbDMgaXMgbm93IHJlZ2lzdGVyZWQgYXMgc3VicmVzb3VyY2Uu
CisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9pc1JlZ2lzdGVyZWRBc1N1
YnJlc291cmNlVW5kZXJGaXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dl
YmtpdC5vcmciXSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwz
LmNvbSJdIGNvbXBsZXRpb25IYW5kbGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7CisgICAgICAg
IEVYUEVDVF9UUlVFKGlzUmVnaXN0ZXJlZCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKyAgICBkb25l
RmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX2lzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VV
bmRlckZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Mi5vcmci
XSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwzLmNvbSJdIGNv
bXBsZXRpb25IYW5kbGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7CisgICAgICAgIEVYUEVDVF9U
UlVFKGlzUmVnaXN0ZXJlZCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKyAgICBkb25lRmxhZyA9IGZh
bHNlOworICAgIFtkYXRhU3RvcmUgX2lzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlckZpcnN0
UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0My5vcmciXSB0aGlyZFBh
cnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwzLmNvbSJdIGNvbXBsZXRpb25I
YW5kbGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGlzUmVn
aXN0ZXJlZCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworCisgICAgLy8gQ29sbGVjdCB0aGUgSVRQ
IGRhdGEgc3VtbWFyeSB3aGljaCBzaG91bGQgaW5jbHVkZSBhbGwgdGhpcmQgcGFydGllcyBpbiB0
aGUKKyAgICAvLyBvcmRlcjogW2V2aWwzLmNvbSwgZXZpbDEuY29tLCBldmlsMi5jb21dIHNvcnRl
ZCBieSBudW1iZXIgb2YgZmlyc3QgcGFydGllcworICAgIC8vIGl0IGFwcGVhcnMgdW5kZXIgb3Ig
cmVkaXJlY3RzIHRvCisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9nZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnk6XnZvaWQoTlNBcnJheTxfV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eSAqPiAqdGhpcmRQYXJ0eURhdGEpCisgICAgeworICAg
ICAgICBOU0VudW1lcmF0b3IgKnRoaXJkUGFydHlEb21haW5zID0gW3RoaXJkUGFydHlEYXRhIG9i
amVjdEVudW1lcmF0b3JdOworCisgICAgICAgIC8vIGV2aWwzCisgICAgICAgIF9XS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5ICpldmlsM1RoaXJkUGFydHkgPSBbdGhpcmRQYXJ0eURv
bWFpbnMgbmV4dE9iamVjdF07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShldmlsM1RoaXJkUGFy
dHkudGhpcmRQYXJ0eURvbWFpbiwgQCJldmlsMy5jb20iKTsKKworICAgICAgICBOU0VudW1lcmF0
b3IgKmV2aWwzRW51bWVyYXRvciA9IFtldmlsM1RoaXJkUGFydHkudW5kZXJGaXJzdFBhcnRpZXMg
b2JqZWN0RW51bWVyYXRvcl07CisgICAgICAgIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJz
dFBhcnR5ICpldmlsM0ZpcnN0UGFydHkxID0gW2V2aWwzRW51bWVyYXRvciBuZXh0T2JqZWN0XTsK
KyAgICAgICAgX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkgKmV2aWwzRmlyc3RQ
YXJ0eTIgPSBbZXZpbDNFbnVtZXJhdG9yIG5leHRPYmplY3RdOworICAgICAgICBfV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eSAqZXZpbDNGaXJzdFBhcnR5MyA9IFtldmlsM0VudW1l
cmF0b3IgbmV4dE9iamVjdF07CisKKyAgICAgICAgQVNTRVJUX1RSVUUoZXZpbDNGaXJzdFBhcnR5
MSAhPSBuaWwpOworICAgICAgICBBU1NFUlRfVFJVRShldmlsM0ZpcnN0UGFydHkyICE9IG5pbCk7
CisgICAgICAgIEFTU0VSVF9UUlVFKGV2aWwzRmlyc3RQYXJ0eTMgIT0gbmlsKTsKKworICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoZXZpbDNGaXJzdFBhcnR5MS5maXJzdFBhcnR5RG9tYWluLCBAIndl
YmtpdDIub3JnIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShldmlsM0ZpcnN0UGFydHkyLmZp
cnN0UGFydHlEb21haW4sIEAid2Via2l0My5vcmciKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KGV2aWwzRmlyc3RQYXJ0eTMuZmlyc3RQYXJ0eURvbWFpbiwgQCJ3ZWJraXQub3JnIik7CisKKyAg
ICAgICAgRVhQRUNUX0ZBTFNFKGV2aWwzRmlyc3RQYXJ0eTEudGhpcmRQYXJ0eVN0b3JhZ2VBY2Nl
c3NHcmFudGVkKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGV2aWwzRmlyc3RQYXJ0eTIudGhpcmRQ
YXJ0eVN0b3JhZ2VBY2Nlc3NHcmFudGVkKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGV2aWwzRmly
c3RQYXJ0eTMudGhpcmRQYXJ0eVN0b3JhZ2VBY2Nlc3NHcmFudGVkKTsKKworICAgICAgICAvLyBl
dmlsMQorICAgICAgICBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eSAqZXZpbDFU
aGlyZFBhcnR5ID0gW3RoaXJkUGFydHlEb21haW5zIG5leHRPYmplY3RdOworICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEoZXZpbDFUaGlyZFBhcnR5LnRoaXJkUGFydHlEb21haW4sIEAiZXZpbDEuY29t
Iik7CisKKyAgICAgICAgTlNFbnVtZXJhdG9yICpldmlsMUVudW1lcmF0b3IgPSBbZXZpbDFUaGly
ZFBhcnR5LnVuZGVyRmlyc3RQYXJ0aWVzIG9iamVjdEVudW1lcmF0b3JdOworICAgICAgICBfV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eSAqZXZpbDFGaXJzdFBhcnR5MT0gW2V2aWwx
RW51bWVyYXRvciBuZXh0T2JqZWN0XTsKKyAgICAgICAgX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0ZpcnN0UGFydHkgKmV2aWwxRmlyc3RQYXJ0eTIgPSBbZXZpbDFFbnVtZXJhdG9yIG5leHRPYmpl
Y3RdOworCisgICAgICAgIEFTU0VSVF9UUlVFKGV2aWwxRmlyc3RQYXJ0eTEgIT0gbmlsKTsKKyAg
ICAgICAgQVNTRVJUX1RSVUUoZXZpbDFGaXJzdFBhcnR5MiAhPSBuaWwpOworCisgICAgICAgIEVY
UEVDVF9XS19TVFJFUShldmlsMUZpcnN0UGFydHkxLmZpcnN0UGFydHlEb21haW4sIEAid2Via2l0
Mi5vcmciKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGV2aWwxRmlyc3RQYXJ0eTIuZmlyc3RQ
YXJ0eURvbWFpbiwgQCJ3ZWJraXQub3JnIik7CisKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGV2aWwx
Rmlyc3RQYXJ0eTEudGhpcmRQYXJ0eVN0b3JhZ2VBY2Nlc3NHcmFudGVkKTsKKyAgICAgICAgRVhQ
RUNUX0ZBTFNFKGV2aWwxRmlyc3RQYXJ0eTIudGhpcmRQYXJ0eVN0b3JhZ2VBY2Nlc3NHcmFudGVk
KTsKKworICAgICAgICAvLyBldmlsMgorICAgICAgICBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VGhpcmRQYXJ0eSAqZXZpbDJUaGlyZFBhcnR5ID0gW3RoaXJkUGFydHlEb21haW5zIG5leHRPYmpl
Y3RdOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXZpbDJUaGlyZFBhcnR5LnRoaXJkUGFydHlE
b21haW4sIEAiZXZpbDIuY29tIik7CisKKyAgICAgICAgTlNFbnVtZXJhdG9yICpldmlsMkVudW1l
cmF0b3IgPSBbZXZpbDJUaGlyZFBhcnR5LnVuZGVyRmlyc3RQYXJ0aWVzIG9iamVjdEVudW1lcmF0
b3JdOworICAgICAgICBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eSAqZXZpbDJG
aXJzdFBhcnR5MSA9IFtldmlsMkVudW1lcmF0b3IgbmV4dE9iamVjdF07CisKKyAgICAgICAgQVNT
RVJUX1RSVUUoZXZpbDJGaXJzdFBhcnR5MSAhPSBuaWwpOworCisgICAgICAgIEVYUEVDVF9XS19T
VFJFUShldmlsMkZpcnN0UGFydHkxLmZpcnN0UGFydHlEb21haW4sIEAid2Via2l0Lm9yZyIpOwor
ICAgICAgICBFWFBFQ1RfRkFMU0UoZXZpbDJGaXJzdFBhcnR5MS50aGlyZFBhcnR5U3RvcmFnZUFj
Y2Vzc0dyYW50ZWQpOworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385609</attachid>
            <date>2019-12-13 09:09:00 -0800</date>
            <delta_ts>2019-12-13 10:13:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204932-20191213090859.patch</filename>
            <type>text/plain</type>
            <size>78121</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGZlYjBkMzZhOTdmNWE1YjUw
YjE3Yjk5Y2Y2MmQ1NmVlM2FmMzIzYWIuLmQ3Y2Q1NGRmNzM1NGI0ZGNkOTFmMDAxZjhjNjJkM2Ez
NjY3OWUyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTktMTItMTMgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIFdlYktp
dCBBUEkgY2FsbHMgZm9yIElUUCBEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDQ5MzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3NjMyNzUz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uIAorCisgICAgICAgIFRo
aXMgcGF0Y2ggZXhwb3NlcyBJVFAgZGF0YSBjYXB0dXJlZCBpbiB0aGUgbmV0d29yayBwcm9jZXNz
IHRocm91Z2ggdGhlCisgICAgICAgIE9iamVjdGl2ZSBDIEFQSSB1c2luZyB0d28gbmV3IGNsYXNz
ZXM6IF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5CisgICAgICAgIGFuZCBfV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmVu
c3VyZVRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWluKToKKyAgICAgICAg
KFdlYktpdDo6Z2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKToK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjphZ2dy
ZWdhdGVkVGhpcmRQYXJ0eURhdGEgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoK
KyAgICAgICAgVXBkYXRlZCBtZW50aW9ucyBvZiBUaGlyZFBhcnR5RGF0YSB0byBpbmNsdWRlIHRo
ZQorICAgICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OiBjbGFzcyBzcGVjaWZp
ZXIgYWZ0ZXIgcmVsb2NhdGluZworICAgICAgICBUaGlyZFBhcnR5RGF0YS4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjph
Z2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgIFVwZGF0ZWQg
dGhlIGRhdGEgdG8gYmUgc2VudCB2aWEgY29tcGxldGlvbiBoYW5kbGVyIGZyb20KKyAgICAgICAg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIHNvIHRoYXQgY2FsbHMgdG8KKyAgICAgICAg
YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKCkgYXJlIGhhcHBlbmluZyBvbiBhIGJhY2tncm91bmQg
dGhyZWFkLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBT
aGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVj
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmly
c3RQYXJ0eS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVJlc291cmNlTG9h
ZFN0YXRpc3RpY3NUaGlyZFBhcnR5Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3Rv
cmUgX2dldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeTpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5
Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0ZpcnN0UGFydHkubW06IEFkZGVkLgorICAgICAgICAoLVtfV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRmlyc3RQYXJ0eSBkZWFsbG9jXSk6CisgICAgICAgICgtW19XS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5IGZpcnN0UGFydHlEb21haW5dKToKKyAgICAgICAgKC1b
X1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkgc3RvcmFnZUFjY2Vzc10pOgorICAg
ICAgICAoLVtfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eSBfYXBpT2JqZWN0XSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Rmlyc3RQYXJ0eUludGVybmFsLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkuaDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0
eS5tbTogQWRkZWQuCisgICAgICAgICgtW19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBh
cnR5IGRlYWxsb2NdKToKKyAgICAgICAgKC1bX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJk
UGFydHkgdGhpcmRQYXJ0eURvbWFpbl0pOgorICAgICAgICAoLVtfV0tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVGhpcmRQYXJ0eSB1bmRlckZpcnN0UGFydGllc10pOgorICAgICAgICAoLVtfV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eSBfYXBpT2JqZWN0XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUludGVy
bmFsLmg6IEFkZGVkLgorICAgICAgICBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0
eSBhbmQgX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkKKyAgICAgICAgcmVwcmVz
ZW50IGZpcnN0IGFuZCB0aGlyZCBwYXJ0eSBkb21haW5zIHJlc3BlY3RpdmVseSB3aGljaCBob2xk
IElUUAorICAgICAgICBkYXRhIGFuZCBhcmUgc3Ryb25nbHkgdHlwZWQgdG8gZW5zdXJlIHRoZSBj
b3JyZWN0IGRhdGEgaXMgYmVpbmcKKyAgICAgICAgZXhwb3NlZCB2aWEgQVBJLiBUaGUgZnVuY3Rp
b24gYW5kIHBhcmFtZXRlciBuYW1lcyBmb3Igc3RvcmFnZSBhY2Nlc3MKKyAgICAgICAgc3BlY2lm
eSAidGhpcmQgcGFydHkiIGJlY2F1c2UgZWFjaCBXS0lUUEZpcnN0UGFydHkgaG9sZHMgZGF0YSBy
ZWxldmVudAorICAgICAgICB0byBhIHNwZWNpZmljIHRoaXJkIHBhcnR5IGFuZCBzdG9yYWdlIGFj
Y2VzcyB3b3VsZCBub3QgbWFrZSBzZW5zZSBpbgorICAgICAgICBqdXN0IGEgZmlyc3QgcGFydHkg
Y29udGV4dC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhU3VtbWFyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFTdW1tYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpnZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisKIDIwMTktMTItMTMgIEppbSBNYXNvbiAgPGptYXNvbkBpYmlueC5jb20+
CiAKICAgICAgICAgW0dUS10gV2ViS2l0R1RLIGJ1aWxkIGhhbmdzIG9uIGctaXItc2Nhbm5lcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5j
cHAKaW5kZXggYmVkZWNiMjU0Y2M1MzQyNTI1NWFlMDI2MTA2NThkYjM1MDRiZmM4Yi4uYWU1ZjUx
ODhhYjcyM2NiZDdmNmNjOWQwYzYzMzJmY2ZhMTZjMzVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC03ODYsNyArNzg2
LDcgQEAgc3RhdGljIFNRTGl0ZVN0YXRlbWVudCBtYWtlTWVkaWFuV2l0aFVJUXVlcnkoU1FMaXRl
RGF0YWJhc2UmIGRhdGFiYXNlKQogICAgIHJldHVybiBTUUxpdGVTdGF0ZW1lbnQoZGF0YWJhc2Us
IG1ha2VTdHJpbmcoIlNFTEVDVCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSBGUk9NIE9i
c2VydmVkRG9tYWlucyBJTk5FUiBKT0lOIChTRUxFQ1QgIiwgam9pblN1YlN0YXRpc3RpY3NGb3JT
b3J0aW5nKCksICIpIGFzIHEgT04gT2JzZXJ2ZWREb21haW5zLmRvbWFpbklEID0gcS5kb21haW5J
RCBMSU1JVCAxIE9GRlNFVCA/IikpOwogfQogCi1WZWN0b3I8VGhpcmRQYXJ0eURhdGFGb3JTcGVj
aWZpY0ZpcnN0UGFydHk+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRU
aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnModW5zaWduZWQgdGhpcmRQ
YXJ0eURvbWFpbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdGhpcmRQYXJ0eURvbWFpbikg
Y29uc3QKK1ZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlE
YXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6Z2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHVuc2ln
bmVkIHRoaXJkUGFydHlEb21haW5JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRoaXJkUGFy
dHlEb21haW4pIGNvbnN0CiB7CiAgICAgaWYgKG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVu
dC5iaW5kSW50KDEsIHRoaXJkUGFydHlEb21haW5JRCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8
IG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudC5iaW5kSW50KDIsIHRoaXJkUGFydHlEb21h
aW5JRCkgIT0gU1FMSVRFX09LCkBAIC03OTQsMTAgKzc5NCwxMCBAQCBWZWN0b3I8VGhpcmRQYXJ0
eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOgogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJz
dFBhcnR5RG9tYWluLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31zIiwgbV9kYXRhYmFzZS5sYXN0
RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLSAgICBW
ZWN0b3I8VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IHRoaXJkUGFydHlEYXRh
Rm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWluczsKKyAgICBWZWN0b3I8V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4gdGhp
cmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zOwogICAgIHdoaWxlIChtX2dl
dEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQuc3RlcCgpID09IFNRTElURV9ST1cpIHsKICAgICAg
ICAgUmVnaXN0cmFibGVEb21haW4gZmlyc3RQYXJ0eURvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWlu
Ojp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoZ2V0RG9tYWluU3Ry
aW5nRnJvbURvbWFpbklEKG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudC5nZXRDb2x1bW5J
bnQoMCkpKTsKLSAgICAgICAgdGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21h
aW5zLmFwcGVuZElmTm90Q29udGFpbnMoVGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFy
dHkgeyBmaXJzdFBhcnR5RG9tYWluLCBoYXNTdG9yYWdlQWNjZXNzKGZpcnN0UGFydHlEb21haW4s
IHRoaXJkUGFydHlEb21haW4pIH0pOworICAgICAgICB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmlj
Rmlyc3RQYXJ0eURvbWFpbnMuYXBwZW5kSWZOb3RDb250YWlucyhXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5IHsgZmlyc3RQ
YXJ0eURvbWFpbiwgaGFzU3RvcmFnZUFjY2VzcyhmaXJzdFBhcnR5RG9tYWluLCB0aGlyZFBhcnR5
RG9tYWluKSB9KTsKICAgICB9CiAgICAgcmVzZXRTdGF0ZW1lbnQobV9nZXRBbGxTdWJTdGF0aXN0
aWNzU3RhdGVtZW50KTsKICAgICByZXR1cm4gdGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0
UGFydHlEb21haW5zOwpAQCAtODA4LDExICs4MDgsMTEgQEAgc3RhdGljIGJvb2wgaGFzQmVlblRo
aXJkUGFydHkodW5zaWduZWQgdGltZXNVbmRlckZpcnN0UGFydHkpCiAgICAgcmV0dXJuIHRpbWVz
VW5kZXJGaXJzdFBhcnR5ID4gMDsKIH0KIAotVmVjdG9yPFRoaXJkUGFydHlEYXRhPiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKCkg
Y29uc3QKK1ZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlE
YXRhPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWdncmVnYXRlZFRoaXJk
UGFydHlEYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAot
ICAgIFZlY3RvcjxUaGlyZFBhcnR5RGF0YT4gdGhpcmRQYXJ0eURhdGFMaXN0OworICAgIFZlY3Rv
cjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiB0aGlyZFBh
cnR5RGF0YUxpc3Q7CiAgICAgU1FMaXRlU3RhdGVtZW50IHNvcnRlZFN0YXRpc3RpY3MobV9kYXRh
YmFzZSwgbWFrZVN0cmluZygiU0VMRUNUICIsIGpvaW5TdWJTdGF0aXN0aWNzRm9yU29ydGluZygp
KSk7CiAgICAgaWYgKHNvcnRlZFN0YXRpc3RpY3MucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAg
ICAgICB8fCBzb3J0ZWRTdGF0aXN0aWNzLmJpbmRUZXh0KDEsICIlIikKQEAgLTgyNSw3ICs4MjUs
NyBAQCBWZWN0b3I8VGhpcmRQYXJ0eURhdGE+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjphZ2dyZWdhdGVkVGhpcmRQYXJ0eQogICAgICAgICBpZiAoaGFzQmVlblRoaXJkUGFy
dHkoc29ydGVkU3RhdGlzdGljcy5nZXRDb2x1bW5JbnQoMSkpKSB7CiAgICAgICAgICAgICBhdXRv
IHRoaXJkUGFydHlEb21haW5JRCA9IHNvcnRlZFN0YXRpc3RpY3MuZ2V0Q29sdW1uSW50KDApOwog
ICAgICAgICAgICAgYXV0byB0aGlyZFBhcnR5RG9tYWluID0gUmVnaXN0cmFibGVEb21haW46OnVu
Y2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhnZXREb21haW5TdHJpbmdG
cm9tRG9tYWluSUQodGhpcmRQYXJ0eURvbWFpbklEKSk7Ci0gICAgICAgICAgICB0aGlyZFBhcnR5
RGF0YUxpc3QuYXBwZW5kKFRoaXJkUGFydHlEYXRhIHsgdGhpcmRQYXJ0eURvbWFpbiwgZ2V0VGhp
cmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHRoaXJkUGFydHlEb21haW5J
RCwgdGhpcmRQYXJ0eURvbWFpbikgfSk7CisgICAgICAgICAgICB0aGlyZFBhcnR5RGF0YUxpc3Qu
YXBwZW5kKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGEgeyB0
aGlyZFBhcnR5RG9tYWluLCBnZXRUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURv
bWFpbnModGhpcmRQYXJ0eURvbWFpbklELCB0aGlyZFBhcnR5RG9tYWluKSB9KTsKICAgICAgICAg
fQogICAgIH0KICAgICByZXR1cm4gdGhpcmRQYXJ0eURhdGFMaXN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCA3YWQ4NjE1ZjVh
MjcyYzZmZmM1NmRlYWU1MmFlZjJiZTZlYTZkYjcxLi43N2U5ZjhmNzEzYTNlMzMxMDAzZWU5YmZh
YjgxYjkxYTY3NTU2OGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
bGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgVmVjdG9yPFRoaXJkUGFydHlEYXRhPiBhZ2dy
ZWdhdGVkVGhpcmRQYXJ0eURhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gYWdncmVnYXRlZFRoaXJk
UGFydHlEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVDb29raWVCbG9ja2lu
ZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjbGFz
c2lmeVByZXZhbGVudFJlc291cmNlcygpIG92ZXJyaWRlOwpAQCAtMTM5LDcgKzEzOSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBvcGVuSVRQRGF0YWJhc2UoKTsKICAgICBib29sIGlzQ29ycmVjdFRh
YmxlU2NoZW1hKCk7CiAgICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFRvcEZyYW1lRG9t
YWluJiwgY29uc3QgU3ViRnJhbWVEb21haW4mKSBjb25zdDsKLSAgICBWZWN0b3I8VGhpcmRQYXJ0
eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IGdldFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNG
aXJzdFBhcnR5RG9tYWlucyh1bnNpZ25lZCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25z
dDsKKyAgICBWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5
RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4gZ2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0Zp
cnN0UGFydHlEb21haW5zKHVuc2lnbmVkLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0
OwogICAgIHZvaWQgb3BlbkFuZERyb3BPbGREYXRhYmFzZUlmTmVjZXNzYXJ5KCk7CiAgICAgU3Ry
aW5nIGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRCh1bnNpZ25lZCkgY29uc3Q7CiAgICAgU3Ry
aW5nIGdldFN1YlN0YXRpc3RpY1N0YXRlbWVudChjb25zdCBTdHJpbmcmKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKaW5kZXgg
NzA5Nzk1ODE4NzhlZWUxN2I2MzMxNzdiNmMwMDU1MjY5NTVmNTRiMS4uNjE2NzFkNjhjZmMyOGJi
NjJlODA0ZWE0YTgzZGJhYTc3ZGYwMzRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAgLTEwMywxNSArMTAzLDE1IEBAIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpjYWxjdWxhdGVBbmRTdWJtaXRUZWxl
bWV0cnkoKSBjb25zdAogICAgICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5
OjpjYWxjdWxhdGVBbmRTdWJtaXQoKnRoaXMpOwogfQogCi1zdGF0aWMgdm9pZCBlbnN1cmVUaGly
ZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbihWZWN0b3I8VGhpcmRQYXJ0eURh
dGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+JiB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQ
YXJ0eURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIGJv
b2wgdGhpcmRQYXJ0eUhhc1N0b3JhZ2VBY2Nlc3MpCitzdGF0aWMgdm9pZCBlbnN1cmVUaGlyZFBh
cnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbihWZWN0b3I8V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4mIHRo
aXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWluLCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgYm9vbCB0aGlyZFBhcnR5SGFzU3RvcmFnZUFjY2Vz
cykKIHsKLSAgICBUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSB0aGlyZFBhcnR5
RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSB7IGZpcnN0UGFydHlEb21haW4sIHRoaXJkUGFydHlI
YXNTdG9yYWdlQWNjZXNzIH07CisgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpU
aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSB0aGlyZFBhcnR5RGF0YUZvclNwZWNp
ZmljRmlyc3RQYXJ0eSB7IGZpcnN0UGFydHlEb21haW4sIHRoaXJkUGFydHlIYXNTdG9yYWdlQWNj
ZXNzIH07CiAgICAgdGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW4uYXBw
ZW5kSWZOb3RDb250YWlucyh0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSk7CiB9
CiAKLXN0YXRpYyBWZWN0b3I8VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IGdl
dFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucyhjb25zdCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzJiB0aGlyZFBhcnR5U3RhdGlzdGljKQorc3RhdGljIFZlY3RvcjxXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJz
dFBhcnR5PiBnZXRUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnMoY29u
c3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgdGhpcmRQYXJ0eVN0YXRpc3RpYykKIHsKLSAgICBW
ZWN0b3I8VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IHRoaXJkUGFydHlEYXRh
Rm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWluczsKKyAgICBWZWN0b3I8V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4gdGhp
cmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zOwogCiAgICAgZm9yIChhdXRv
IGZpcnN0UGFydHlEb21haW4gOiB0aGlyZFBhcnR5U3RhdGlzdGljLnN1YmZyYW1lVW5kZXJUb3BG
cmFtZURvbWFpbnMpCiAgICAgICAgIGVuc3VyZVRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJz
dFBhcnR5RG9tYWluKHRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucywg
Zmlyc3RQYXJ0eURvbWFpbiwgdGhpcmRQYXJ0eVN0YXRpc3RpYy5zdG9yYWdlQWNjZXNzVW5kZXJU
b3BGcmFtZURvbWFpbnMuY29udGFpbnMoZmlyc3RQYXJ0eURvbWFpbikpOwpAQCAtMTMwLDE0ICsx
MzAsMTQgQEAgc3RhdGljIGJvb2wgaGFzQmVlblRoaXJkUGFydHkoY29uc3QgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyYgc3RhdGlzdGljKQogICAgICAgICB8fCAhc3RhdGlzdGljLnN1YnJlc291cmNl
VW5pcXVlUmVkaXJlY3RzVG8uaXNFbXB0eSgpOwogfQogCi1WZWN0b3I8VGhpcmRQYXJ0eURhdGE+
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHlE
YXRhKCkgY29uc3QKK1ZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJk
UGFydHlEYXRhPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmFnZ3JlZ2F0ZWRU
aGlyZFBhcnR5RGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CiAKLSAgICBWZWN0b3I8VGhpcmRQYXJ0eURhdGE+IHRoaXJkUGFydHlEYXRhTGlzdDsKKyAgICBW
ZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gdGhp
cmRQYXJ0eURhdGFMaXN0OwogICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogbV9yZXNvdXJjZVN0
YXRpc3RpY3NNYXAudmFsdWVzKCkpIHsKICAgICAgICAgaWYgKGhhc0JlZW5UaGlyZFBhcnR5KHN0
YXRpc3RpYykpCi0gICAgICAgICAgICB0aGlyZFBhcnR5RGF0YUxpc3QuYXBwZW5kKFRoaXJkUGFy
dHlEYXRhIHsgc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluLCBnZXRUaGlyZFBhcnR5RGF0YUZv
clNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnMoc3RhdGlzdGljKSB9KTsKKyAgICAgICAgICAgIHRo
aXJkUGFydHlEYXRhTGlzdC5hcHBlbmQoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpU
aGlyZFBhcnR5RGF0YSB7IHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbiwgZ2V0VGhpcmRQYXJ0
eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHN0YXRpc3RpYykgfSk7CiAgICAgfQog
ICAgIHN0ZDo6c29ydCh0aGlyZFBhcnR5RGF0YUxpc3QucmJlZ2luKCksIHRoaXJkUGFydHlEYXRh
TGlzdC5yZW5kKCkpOwogICAgIHJldHVybiB0aGlyZFBhcnR5RGF0YUxpc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggOWJjYTkwMzBj
NTZlN2RjMjMzMWQ5NjA5M2U3NDcxNTU3NjA4Njc3YS4uMGIwZTZkODA1NmRiMDZhMGM4YzU1NjE0
ODIwNzMxYjE1OTEzM2RjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVh
cihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgVmVjdG9yPFRoaXJkUGFydHlEYXRhPiBhZ2dyZWdh
dGVkVGhpcmRQYXJ0eURhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gYWdncmVnYXRlZFRoaXJkUGFy
dHlEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgSGFzaE1hcDxSZWdpc3RyYWJsZURv
bWFpbiwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc291cmNlU3RhdGlzdGljc01hcDsgfQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OktleWVkRW5jb2Rlcj4gY3JlYXRlRW5jb2RlckZyb21EYXRhKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggYWUzYzhlZWY4YTk5NTVk
NjYwMTc5OWM5YmFmMzljN2E0OGI2NzlkYi4uN2RhZGY0ZGI4ODczNTJhY2Y5ZTFlZjVmNDAwNzRm
YWVlYWMwM2E4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApA
QCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCBWZWN0b3I8VGhpcmRQYXJ0eURhdGE+IGFnZ3JlZ2F0ZWRU
aGlyZFBhcnR5RGF0YSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiBhZ2dyZWdhdGVkVGhpcmRQYXJ0
eURhdGEoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29va2llQmxvY2tp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CiAgICAgdm9pZCB1cGRhdGVDb29r
aWVCbG9ja2luZ0ZvckRvbWFpbnMoY29uc3QgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tp
ZXNGb3ImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBkNDU4NmQ1YTA4ODEwZGFjYTYz
NjAwNmRkMGIwYWQ0ZTliNmEyOGJjLi44MjM5ZDZkOWY1Zjk0MjUwYTgxMTVlMGUzNTE5ODI5Zjlk
ZGZkMTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcApAQCAtMTE1Miw5ICsxMTUyLDIyIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnCiAgICAg
ICAgIGNvbnN0X2Nhc3Q8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKj4odGhpcyktPm5l
dHdvcmtTZXNzaW9uKCktPm5vdGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQobnVt
YmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMsIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVz
ZXJJbnRlcmFjdGlvbiwgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVy
YWN0aW9uLCB0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VV
c2VySW50ZXJhY3Rpb24sIG1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblByZXZhbGVudFJl
c291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbiwgdG9wM051bWJlck9mUHJldmFsZW50UmVzb3VyY2Vz
V2l0aFVJLCB0b3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0VUksIHRvcDNNZWRpYW5TdWJSZXNvdXJj
ZVdpdGhvdXRVSSwgdG9wM01lZGlhblVuaXF1ZVJlZGlyZWN0c1dpdGhvdXRVSSwgdG9wM01lZGlh
bkRhdGFSZWNvcmRzUmVtb3ZlZFdpdGhvdXRVSSk7CiB9CiAKLVZlY3RvcjxUaGlyZFBhcnR5RGF0
YT4gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphZ2dyZWdhdGVkVGhpcmRQYXJ0eURh
dGEoKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmFnZ3JlZ2F0ZWRUaGly
ZFBhcnR5RGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICByZXR1cm4gbV9zdGF0aXN0aWNzU3RvcmUtPmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0
YSgpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBwb3N0VGFzayhbdGhp
cywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlICB7CisgICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3RvcmUpIHsKKyAgICAgICAgICAgIHBv
c3RUYXNrUmVwbHkoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IGF1dG8gdGhpcmRQYXJ0eURhdGEgPSBtX3N0YXRpc3RpY3NTdG9yZS0+YWdncmVnYXRlZFRoaXJk
UGFydHlEYXRhKCk7CisgICAgICAgIHBvc3RUYXNrUmVwbHkoW3RoaXJkUGFydHlEYXRhID0gV1RG
TW92ZSh0aGlyZFBhcnR5RGF0YSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKHRoaXJkUGFydHlEYXRhKSk7CisgICAgICAgIH0pOworICAgIH0pOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaAppbmRleCBjNTkxZmMyZTNjOTA4NmMyMDU4YWI0NzVjNmQyMzRhNjM0NGY5MTU3Li4w
ZGU5NTk0MWNmYjA4MTFjMzIwYjQxZjAzOWFjNmRlMTA4NGM0NTA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0yNyw2ICsyNyw5IEBACiAKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogCisjaW5jbHVkZSAiQXJndW1lbnRD
b2RlcnMuaCIKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiRW5jb2Rlci5oIgogI2lu
Y2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCkBAIC03OCw2ICs4MSwzMCBA
QCBzdHJ1Y3QgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgewogICAgIFJlZ2lz
dHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0
dXJuIHsgZG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLmlzb2xhdGVkQ29weSgpLCBk
b21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yLmlzb2xhdGVkQ29weSgpLCBkb21haW5zV2l0
aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eS5pc29sYXRlZENvcHkoKSB9OyB9CiB9OwogCitj
bGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgZmluYWwgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLCBXVEY6OkRlc3Ry
dWN0aW9uVGhyZWFkOjpNYWluPiB7CitwdWJsaWM6CisgICAgdXNpbmcgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M7CisgICAgdXNpbmcgUmVn
aXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKKyAgICB1c2luZyBU
b3BGcmFtZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOworICAgIHVzaW5nIFN1
YkZyYW1lRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CisgICAgdXNpbmcgU3Vi
UmVzb3VyY2VEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKKyAgICB1c2luZyBS
ZWRpcmVjdERvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOworICAgIHVzaW5nIFJl
ZGlyZWN0ZWRGcm9tRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CisgICAgdXNp
bmcgUmVkaXJlY3RlZFRvRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CisgICAg
dXNpbmcgTmF2aWdhdGVkRnJvbURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwor
ICAgIHVzaW5nIE5hdmlnYXRlZFRvRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47
CisgICAgdXNpbmcgRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzID0gV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW47CisgICAgdXNpbmcgT3BlbmVyRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW47CisgICAgdXNpbmcgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgPSBXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZDsKKyAgICB1c2luZyBTdG9yYWdlQWNjZXNzUHJvbXB0V2Fz
U2hvd24gPSBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd247CisKKyAgICBzdGF0
aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKE5ldHdvcmtTZXNz
aW9uJiBuZXR3b3JrU2Vzc2lvbiwgY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5LCBTaG91bGRJbmNsdWRlTG9jYWxob3N0IHNob3VsZEluY2x1ZGVMb2NhbGhvc3Qp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUobmV0d29ya1Nlc3Npb24sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnksIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpKTsKKyAgICB9CisKKyAgICB+V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlKCk7CisKIHN0cnVjdCBUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmlj
Rmlyc3RQYXJ0eSB7CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZmlyc3RQYXJ0eURv
bWFpbjsKICAgICBib29sIHN0b3JhZ2VBY2Nlc3NHcmFudGVkOwpAQCAtODcsNiArMTE0LDI3IEBA
IHN0cnVjdCBUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSB7CiAgICAgICAgIHJl
dHVybiBtYWtlU3RyaW5nKCJIYXMgYmVlbiBncmFudGVkIHN0b3JhZ2UgYWNjZXNzIHVuZGVyICIs
IGZpcnN0UGFydHlEb21haW4uc3RyaW5nKCksICI6ICIsIHN0b3JhZ2VBY2Nlc3NHcmFudGVkID8g
JzEnIDogJzAnKTsKICAgICB9CiAKKyAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGZpcnN0UGFydHlEb21haW47Cisg
ICAgICAgIGVuY29kZXIgPDwgc3RvcmFnZUFjY2Vzc0dyYW50ZWQ7CisgICAgfQorCisgICAgc3Rh
dGljIE9wdGlvbmFsPFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+IGRlY29kZWREb21haW47CisgICAgICAgIGRlY29kZXIgPj4gZGVj
b2RlZERvbWFpbjsKKyAgICAgICAgaWYgKCFkZWNvZGVkRG9tYWluKQorICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxib29sPiBkZWNvZGVkU3RvcmFn
ZUFjY2VzczsKKyAgICAgICAgZGVjb2RlciA+PiBkZWNvZGVkU3RvcmFnZUFjY2VzczsKKyAgICAg
ICAgaWYgKCFkZWNvZGVkU3RvcmFnZUFjY2VzcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7IFdURk1vdmUoKmRlY29kZWREb21haW4pLCBXVEZN
b3ZlKCpkZWNvZGVkU3RvcmFnZUFjY2VzcykgfX07CisgICAgfQorCiAgICAgYm9vbCBvcGVyYXRv
cj09KFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5IGNvbnN0IG90aGVyKSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIGZpcnN0UGFydHlEb21haW4gPT0gb3RoZXIuZmlyc3RQ
YXJ0eURvbWFpbiAmJiBzdG9yYWdlQWNjZXNzR3JhbnRlZCA9PSBvdGhlci5zdG9yYWdlQWNjZXNz
R3JhbnRlZDsKQEAgLTExMiwzNSArMTYwLDMyIEBAIHN0cnVjdCBUaGlyZFBhcnR5RGF0YSB7CiAg
ICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogCi0gICAgYm9v
bCBvcGVyYXRvcjwoY29uc3QgVGhpcmRQYXJ0eURhdGEgJm90aGVyKSBjb25zdAorICAgIHZvaWQg
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVy
biB1bmRlckZpcnN0UGFydGllcy5zaXplKCkgPCBvdGhlci51bmRlckZpcnN0UGFydGllcy5zaXpl
KCk7CisgICAgICAgIGVuY29kZXIgPDwgdGhpcmRQYXJ0eURvbWFpbjsKKyAgICAgICAgZW5jb2Rl
ciA8PCB1bmRlckZpcnN0UGFydGllczsKICAgICB9Ci19OwogCi1jbGFzcyBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWlu
PiB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFdlYkNvcmU6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3M7Ci0gICAgdXNpbmcgUmVnaXN0cmFibGVEb21haW4gPSBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBUb3BGcmFtZURvbWFpbiA9IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIFN1YkZyYW1lRG9tYWluID0gV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgU3ViUmVzb3VyY2VEb21haW4gPSBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBSZWRpcmVjdERvbWFpbiA9IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIFJlZGlyZWN0ZWRGcm9tRG9tYWlu
ID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgUmVkaXJlY3RlZFRvRG9t
YWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgTmF2aWdhdGVkRnJv
bURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIE5hdmlnYXRl
ZFRvRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgRG9tYWlu
SW5OZWVkT2ZTdG9yYWdlQWNjZXNzID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAg
dXNpbmcgT3BlbmVyRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNp
bmcgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgPSBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZDsKLSAgICB1c2luZyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gPSBXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd247Ci0KLSAgICBzdGF0aWMgUmVmPFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lv
biwgY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBTaG91bGRJ
bmNsdWRlTG9jYWxob3N0IHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpCisgICAgc3RhdGljIE9wdGlv
bmFsPFRoaXJkUGFydHlEYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlKG5ldHdvcmtTZXNzaW9uLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBzaG91
bGRJbmNsdWRlTG9jYWxob3N0KSk7CisgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPiBkZWNvZGVkRG9tYWluOworICAgICAgICBkZWNvZGVyID4+IGRlY29kZWREb21h
aW47CisgICAgICAgIGlmICghZGVjb2RlZERvbWFpbikKKyAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9yPFRoaXJkUGFydHlEYXRhRm9yU3Bl
Y2lmaWNGaXJzdFBhcnR5Pj4gZGVjb2RlZEZpcnN0UGFydGllczsKKyAgICAgICAgZGVjb2RlciA+
PiBkZWNvZGVkRmlyc3RQYXJ0aWVzOworICAgICAgICBpZiAoIWRlY29kZWRGaXJzdFBhcnRpZXMp
CisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7eyBX
VEZNb3ZlKCpkZWNvZGVkRG9tYWluKSwgV1RGTW92ZSgqZGVjb2RlZEZpcnN0UGFydGllcykgfX07
CiAgICAgfQogCi0gICAgfldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpOworICAgIGJv
b2wgb3BlcmF0b3I8KGNvbnN0IFRoaXJkUGFydHlEYXRhICZvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiB1bmRlckZpcnN0UGFydGllcy5zaXplKCkgPCBvdGhlci51bmRlckZpcnN0
UGFydGllcy5zaXplKCk7CisgICAgfQorfTsKIAogICAgIHZvaWQgZGlkRGVzdHJveU5ldHdvcmtT
ZXNzaW9uKCk7CiAKQEAgLTIzNSw3ICsyODAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc291
cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9t
YWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5l
cklELCBPcGVuZXJEb21haW4mJik7Ci0gICAgVmVjdG9yPFRoaXJkUGFydHlEYXRhPiBhZ2dyZWdh
dGVkVGhpcmRQYXJ0eURhdGEoKTsKKyAgICB2b2lkIGFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OlRoaXJkUGFydHlEYXRhPiYmKT4mJik7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKE5ldHdvcmtTZXNzaW9uJiwgY29uc3QgU3RyaW5n
JiwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDkwOWE0MjQ3NTI0OTJkNzI4YjU2NDE3ZGUx
YjdkYWE1ODViODc1ZDEuLmMzMjE0MWViYTgwMjVlZDc3YTc2N2U2NWYwMDc2YzRmOWU5YzA4ZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CkBAIC03NTIsNiArNzUyLDE5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklECiAgICAgfQogfQog
Cit2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1h
cnkoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlz
LT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
KSkKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmFnZ3JlZ2F0ZWRUaGlyZFBh
cnR5RGF0YShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAg
fQorfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1
ZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhp
cy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDhjOWRiNTg1Njc4NjM5ZGEwMDZiNjM0NGE1
M2U2MGM4MjA3MjRiNGYuLmNmMGVjNGRlNTY3YWVlZmE3Yjc4YzI5NWIwMzdlYjgyMDgxODhmOTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAg
LTIzMSw2ICsyMzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9y
UHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgcmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBBTDo6U2Vz
c2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVD
bGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCwgT3B0aW9uYWw8V2FsbFRp
bWU+IG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhU3VtbWFyeShQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4mJik+JiYpOwog
ICAgIHZvaWQgc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShQQUw6OlNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlU3RhdGlzdGljc0Fu
ZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeShQQUw6OlNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGVlMDg2YzBjZDE2
NzZlNTBkNzhlZGE5NjIwMWNjMzcxYWM0MmZjOGEuLjJhZDk4ODFmY2Y3ZWE4NDRkODJiYzc3ZmFj
MDdmNDkzZDdjNGRlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTEzLDYgKzExMyw3IEBAIG1lc3Nh
Z2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRDYWNoZU1heEFn
ZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY29u
ZHMgc2Vjb25kcykgLT4gKCkgQXN5bmMKICAgICBTZXRHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4s
IGJvb2wgaXNHcmFuZGZhdGhlcmVkKSAtPiAoKSBBc3luYwogICAgIFNldFVzZUlUUERhdGFiYXNl
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCB2YWx1ZSkgLT4gKCkgQXN5bmMKKyAgICBH
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKSAtPiAoVmVjdG9yPFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpU
aGlyZFBhcnR5RGF0YT4gdGhpcmRQYXJ0eURhdGEpIEFzeW5jCiAgICAgU2V0R3JhbmRmYXRoZXJp
bmdUaW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzKSAtPiAoKSBB
c3luYwogICAgIFNldE1heFN0YXRpc3RpY3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QgbWF4aW11bUVudHJ5Q291bnQpIC0+ICgpIEFzeW5jCiAgICAgU2V0TWluaW11
bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
U2Vjb25kcyBzZWNvbmRzKSAtPiAoKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVj
dC5oCmluZGV4IGI3Y2E5N2FmYTAwZDkzYzNiNDk2YjQxZDVjMDg2YWYxZTk4MjNhZjIuLmE2ZDA4
OGRlOTBjNmUzOTIzMjFjZGYxMDczNmE0MWUwNWJiYjI2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQVBJT2JqZWN0LmgKQEAgLTE1Myw2ICsxNTMsOCBAQCBwdWJsaWM6CiAgICAgICAgIFByZWZl
cmVuY2VzLAogICAgICAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm1SZXN1bHRMaXN0ZW5l
ciwKICAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLAorICAgICAgICBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eSwKKyAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1RoaXJkUGFydHksCiAgICAgICAgIFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFJlc3VsdExp
c3RlbmVyLAogICAgICAgICBSdW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5lciwKICAgICAg
ICAgUnVuSmF2YVNjcmlwdENvbmZpcm1SZXN1bHRMaXN0ZW5lciwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL0FQSU9iamVjdC5tbQppbmRleCAxNDNlYjA4OTFiOWYyYmFjNGIwMDFiMTE0NmViZDM4
Njc3NjU0ZmVjLi4yMThhYmU3MzQ4NDQzNTVjNDliYTA1ZmUzM2Y0MGZkY2UxOTY1OTNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCkBAIC04MCw2ICs4MCw4IEBACiAj
aW1wb3J0ICJfV0tJbnNwZWN0b3JJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSW50ZXJuYWxEZWJ1
Z0ZlYXR1cmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
SW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5
SW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5
SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5oIgogI2lt
cG9ydCAiX1dLVXNlckluaXRpYXRlZEFjdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tVc2Vy
U3R5bGVTaGVldEludGVybmFsLmgiCkBAIC0zMjUsNiArMzI3LDE0IEBAIHZvaWQqIE9iamVjdDo6
bmV3T2JqZWN0KHNpemVfdCBzaXplLCBUeXBlIHR5cGUpCiAgICAgICAgIHdyYXBwZXIgPSBbX1dL
Q3VzdG9tSGVhZGVyRmllbGRzIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFR5
cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5OgorICAgICAgICB3cmFwcGVyID0g
W19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5IGFsbG9jXTsKKyAgICAgICAgYnJl
YWs7CisKKyAgICBjYXNlIFR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Ogor
ICAgICAgICB3cmFwcGVyID0gW19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5IGFs
bG9jXTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIFR5cGU6OlVzZXJDb250ZW50V29ybGQ6
CiAgICAgICAgIHdyYXBwZXIgPSBbX1dLVXNlckNvbnRlbnRXb3JsZCBhbGxvY107CiAgICAgICAg
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVJlc291
cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYTEx
YzIzYzdhZjdlMmFlYTdiZjA1NTE0YTI5M2NkNTdkMTgwODYyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJz
dFBhcnR5LmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBB
UEkgeworCitjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eSBmaW5hbCA6IHB1
YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0
UGFydHk+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlc291cmNlTG9hZFN0YXRpc3RpY3NG
aXJzdFBhcnR5PiBjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5IGZpcnN0UGFydHlEYXRh
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0ZpcnN0UGFydHkoZmlyc3RQYXJ0eURhdGEpKTsKKyAgICB9CisKKyAgICBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRmlyc3RQYXJ0eShjb25zdCBXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHkgZmlyc3RQYXJ0
eURhdGEpCisgICAgICAgIDogbV9maXJzdFBhcnR5RGF0YShmaXJzdFBhcnR5RGF0YSkKKyAgICB7
CisgICAgfQorCisgICAgY29uc3QgV1RGOjpTdHJpbmcmIGZpcnN0UGFydHlEb21haW4oKSBjb25z
dCB7IHJldHVybiBtX2ZpcnN0UGFydHlEYXRhLmZpcnN0UGFydHlEb21haW4uc3RyaW5nKCk7IH0K
KyAgICBib29sIHN0b3JhZ2VBY2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0UGFydHlEYXRh
LnN0b3JhZ2VBY2Nlc3NHcmFudGVkOyB9CisKK3ByaXZhdGU6CisgICAgY29uc3QgV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNG
aXJzdFBhcnR5IG1fZmlyc3RQYXJ0eURhdGE7CisKK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVJlc291cmNlTG9hZFN0
YXRpc3RpY3NUaGlyZFBhcnR5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjU2NTgyNTVkY2Jl
NTFiMzIxM2RiNjU2MGIyMzdlOGFlYjNiMGUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5LmgK
QEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
QVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgi
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBBUEkgeworCitj
bGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eSBmaW5hbCA6IHB1YmxpYyBPYmpl
Y3RJbXBsPE9iamVjdDo6VHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHk+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5
PiBjcmVhdGUoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFy
dHlEYXRhJiYgdGhpcmRQYXJ0eURhdGEpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eShXVEZNb3ZlKHRoaXJkUGFydHlE
YXRhKSkpOworICAgIH0KKworICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5KFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YSYmIHRo
aXJkUGFydHlEYXRhKQorICAgICAgICA6IG1fdGhpcmRQYXJ0eURhdGEoV1RGTW92ZSh0aGlyZFBh
cnR5RGF0YSkpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IFdURjo6U3RyaW5nJiB0aGlyZFBh
cnR5RG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV90aGlyZFBhcnR5RGF0YS50aGlyZFBhcnR5RG9t
YWluLnN0cmluZygpOyB9CisgICAgY29uc3QgVmVjdG9yPFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4mIHVu
ZGVyRmlyc3RQYXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV90aGlyZFBhcnR5RGF0YS51bmRlckZp
cnN0UGFydGllczsgfQorCitwcml2YXRlOgorICAgIGNvbnN0IFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YSBtX3RoaXJkUGFydHlEYXRhOworfTsK
KworfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCA0ODQ2N2I3YTgzMzIxMGIy
OWEwYWVkMGVhYjQ0YTA4MDJmM2Y4ZTM2Li41MzgzNzNkMDY5YzE0MGQwMTU4MTlmMjFjYzE5Yzgx
ZDM5YTU1NmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQgIldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2ltcG9ydCAiV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1RlbGVtZXRyeS5oIgogI2ltcG9ydCAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5o
IgorI2ltcG9ydCAiX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlJbnRlcm5hbC5o
IgogI2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgog
I2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLmgiCiAjaW1wb3J0IDxXZWJDb3Jl
L0NyZWRlbnRpYWwuaD4KQEAgLTUxOCw2ICs1MTksMjEgQEAgLSAodm9pZClfY2xlYXJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogI2VuZGlm
CiB9CiAKKy0gKHZvaWQpX2dldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeToodm9p
ZCAoXikoTlNBcnJheTxfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eSAqPiAqKSlj
b21wbGV0aW9uSGFuZGxlcgoreworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPmdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3Vt
bWFyeShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIp
XSAoYXV0byYmIHRoaXJkUGFydHlEb21haW5zKSB7CisgICAgICAgIE5TTXV0YWJsZUFycmF5PF9X
S1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5ICo+ICphcGlUaGlyZFBhcnRpZXMgPSBb
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTp0aGlyZFBhcnR5RG9tYWlu
cy5zaXplKCldIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgZm9yIChhdXRvJiB0aGlyZFBhcnR5IDog
dGhpcmRQYXJ0eURvbWFpbnMpCisgICAgICAgICAgICBbYXBpVGhpcmRQYXJ0aWVzIGFkZE9iamVj
dDp3cmFwcGVyKEFQSTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHk6OmNyZWF0ZShX
VEZNb3ZlKHRoaXJkUGFydHkpKSldOworCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFwaVRo
aXJkUGFydGllcyk7CisgICAgfSk7CisjZWxzZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7
CisjZW5kaWYKK30KKwogLSAodm9pZClfaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyRmly
c3RQYXJ0eTooTlNVUkwgKilmaXJzdFBhcnR5VVJMIHRoaXJkUGFydHk6KE5TVVJMICopdGhpcmRQ
YXJ0eVVSTCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRs
ZXIKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmVQcml2YXRlLmgKaW5kZXggNzBmYzE0NjU3M2QyM2VhNGU1MGIzOWJlY2M1ODMyYjIyYTMyMDIy
ZC4uNDkxYjUyYzA2ODJjN2I4MWY2YTVkNjA2N2JhNTdkNTliYTAyNzg2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVN0b3JlUHJpdmF0ZS5oCkBAIC0yOSw2ICsyOSw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lO
CiAKIEBjbGFzcyBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjsKIEBjbGFzcyBXS1dl
YlZpZXc7CitAY2xhc3MgX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHk7CiAKIEBw
cm90b2NvbCBfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU7CiAKQEAgLTcxLDYgKzcyLDcgQEAg
dHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRjaE9w
dGlvbnMpIHsKIC0gKHZvaWQpX2xvZ1VzZXJJbnRlcmFjdGlvbjooTlNVUkwgKilkb21haW4gY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV9z
ZXRQcmV2YWxlbnREb21haW46KE5TVVJMICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1
KSwgaW9zKDEzLjApKTsKIC0gKHZvaWQpX2dldElzUHJldmFsZW50RG9tYWluOihOU1VSTCAqKWRv
bWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CistICh2b2lkKV9nZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnk6KHZvaWQgKF4pKE5TQXJyYXk8X1dLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkgKj4gKikpY29tcGxldGlvbkhhbmRsZXIgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CiAtICh2b2lkKV9jbGVhclBy
ZXZhbGVudERvbWFpbjooTlNVUkwgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV9jbGVhclJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV9pc1JlZ2lzdGVyZWRB
c1N1YnJlc291cmNlVW5kZXJGaXJzdFBhcnR5OihOU1VSTCAqKWZpcnN0UGFydHlVUkwgdGhpcmRQ
YXJ0eTooTlNVUkwgKil0aGlyZFBhcnR5VVJMIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShC
T09MKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0
UGFydHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kYTlmYTQ4MWIzNmU1OWYxYjM5MThhZDFjZTdlNDkxYTIyYzlh
ZTE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5LmgKQEAgLTAsMCArMSwzNSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0BpbnRlcmZhY2UgX1dLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkgOiBOU09iamVjdAorCitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpmaXJzdFBhcnR5RG9tYWluOworQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIHRoaXJkUGFydHlTdG9yYWdlQWNjZXNzR3JhbnRl
ZDsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQ
YXJ0eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xY2ZhYWM4YTMxNjBkM2Y1Y2Rk
MzNjNGM4YWZhMzliMmU0N2Q1YWI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5Lm1t
CkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIl9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SW50ZXJuYWwuaCIKKworQGlt
cGxlbWVudGF0aW9uIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5CisKKy0gKHZv
aWQpZGVhbGxvYworeworICAgIF9maXJzdFBhcnR5LT5BUEk6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NGaXJzdFBhcnR5Ojp+UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkoKTsKKyAgICBb
c3VwZXIgZGVhbGxvY107Cit9CisKKy0gKE5TU3RyaW5nICopZmlyc3RQYXJ0eURvbWFpbgorewor
ICAgIHJldHVybiBfZmlyc3RQYXJ0eS0+Zmlyc3RQYXJ0eURvbWFpbigpOworfQorCistIChCT09M
KXN0b3JhZ2VBY2Nlc3MKK3sKKyAgICByZXR1cm4gX2ZpcnN0UGFydHktPnN0b3JhZ2VBY2Nlc3Mo
KTsKK30KKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4gKl9maXJz
dFBhcnR5OworfQorCitAZW5kCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUludGVybmFsLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0ZpcnN0UGFydHlJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2NDAwZmNhYWVmNGZkOWI1MTQx
YWU0ZjJmOGUzZmZmMWFjYWU0ODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlJbnRl
cm5hbC5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lt
cG9ydCAiQVBJUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkuaCIKKyNpbXBvcnQgIldL
T2JqZWN0LmgiCisjaW1wb3J0ICJfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0
czxBUEk6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5PiB7CisgICAgdXNpbmcgV3Jh
cHBlckNsYXNzID0gX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHk7Cit9OworCit9
CisKK0BpbnRlcmZhY2UgX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkgKCkgPFdL
T2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5PiBfZmlyc3RQYXJ0eTsKK30KK0BlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVGhpcmRQYXJ0eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQzNjhlOWUy
NTc0MDRjZTc1ZjI3ZTlkNmY3ZDI4ZjdkZTIwNDgyMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhp
cmRQYXJ0eS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJfV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oIgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJ
TgorCitAaW50ZXJmYWNlIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5IDogTlNP
YmplY3QKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqdGhpcmRQ
YXJ0eURvbWFpbjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJheTxfV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eSAqPiAqdW5kZXJGaXJzdFBhcnRpZXM7CisK
K0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHku
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RoaXJkUGFydHkubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGRmOWY1ZmYxYWI2N2QxNDM5ZDk1ODY2
ZDgyMTBiNWViZWY2OTQ5NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5tbQpAQCAt
MCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJf
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUludGVybmFsLmgiCisKKyNpbXBvcnQg
IkFQSUFycmF5LmgiCisjaW1wb3J0ICJfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0
eS5oIgorCitAaW1wbGVtZW50YXRpb24gX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFy
dHkKKworLSAodm9pZClkZWFsbG9jCit7CisgICAgX3RoaXJkUGFydHktPkFQSTo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1RoaXJkUGFydHk6On5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0
eSgpOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAoTlNTdHJpbmcgKil0aGlyZFBhcnR5
RG9tYWluCit7CisgICAgcmV0dXJuIF90aGlyZFBhcnR5LT50aGlyZFBhcnR5RG9tYWluKCk7Cit9
CisKKy0gKE5TQXJyYXk8X1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkgKj4gKil1
bmRlckZpcnN0UGFydGllcworeworICAgIGF1dG8gYXBpRmlyc3RQYXJ0aWVzID0gX3RoaXJkUGFy
dHktPnVuZGVyRmlyc3RQYXJ0aWVzKCk7CisgICAgTlNNdXRhYmxlQXJyYXk8X1dLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0ZpcnN0UGFydHkgKj4gKmFwaVVuZGVyRmlyc3RQYXJ0aWVzID0gW05TTXV0
YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmFwaUZpcnN0UGFydGllcy5zaXplKCldOworICAg
IGZvciAoY29uc3QgYXV0byYgdGhpcmRQYXJ0eURhdGFVbmRlckZpcnN0UGFydHkgOiBhcGlGaXJz
dFBhcnRpZXMpCisgICAgICAgIFthcGlVbmRlckZpcnN0UGFydGllcyBhZGRPYmplY3Q6d3JhcHBl
cihBUEk6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5OjpjcmVhdGUodGhpcmRQYXJ0
eURhdGFVbmRlckZpcnN0UGFydHkpKV07CisKKyAgICByZXR1cm4gYXBpVW5kZXJGaXJzdFBhcnRp
ZXM7Cit9CisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfdGhp
cmRQYXJ0eTsKK30KKworCitAZW5kCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUludGVybmFs
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RoaXJkUGFydHlJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViZjYyNzM4Yjc5NzRiNWE0
MmU3MGYyZTVkNjhjNGRmMWM3OWZiNDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlJ
bnRlcm5hbC5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2ltcG9ydCAiQVBJUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkuaCIKKyNpbXBvcnQg
IldLT2JqZWN0LmgiCisjaW1wb3J0ICJfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0
eUludGVybmFsLmgiCisjaW1wb3J0ICJfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0
eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRy
YWl0czxBUEk6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5PiB7CisgICAgdXNpbmcg
V3JhcHBlckNsYXNzID0gX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHk7Cit9Owor
Cit9CisKK0BpbnRlcmZhY2UgX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkgKCkg
PFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5PiBfdGhpcmRQYXJ0eTsKK30KKworQGVuZAorCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCBhYTkxYWUwYjc0NjM3YmMzMjNlNjhmODIwMzc5ZDdjMjViNmU5Njky
Li4xMGI2OTJlZGQzMjg3ZjBmZjA4MmM0NWY4NDY1N2YwODJjZDA3N2QzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKQEAgLTgxNCw2ICs4MTQsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRBbGxT
dG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEMKICAgICBzZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHZXRBbGxTdG9yYWdlQWNj
ZXNzRW50cmllcyhzZXNzaW9uSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAK
K3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFT
dW1tYXJ5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkoc2Vzc2lvbklEKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldENhY2hlTWF4
QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vj
b25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDc2ZTgy
YTdiOTcxZDhlZDJjMjAzOGMxOTVhZmU5OWJlNTU3ZTFjYzkuLjkxZTA5NjQ2MGIyMjA1YWMxOTFj
ODE3ZmVhZDQ3OGViMTNiYmRmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xMzUsNiArMTM1LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGdl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeShQQUw6OlNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpU
aGlyZFBhcnR5RGF0YT4mJik+JiYpOwogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJp
ZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4g
ZG9tYWlucyk+JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3ViRnJh
bWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwogICAgIHZvaWQgcmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBBTDo6
U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApp
bmRleCBiMmY5ZmMyNDlmYTQ4ZWI1ZmRjM2Y2MzRhOWY1OTRjMTYzNjc2MDQzLi4xOTk1MTBlNDJl
ZDFlNDg0MTAxMDAwNGQ0MjRhNjA4NTQ4MTQyZmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTUx
MCw2ICsxNTEwLDE2IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVt
b3J5QW5kUGVyc2lzdGVudChXYWxsVGltZSBtb2RpZmllZFNpbmNlCiAgICAgfQogfQogCit2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OmdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OlRoaXJkUGFydHlEYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHBy
b2Nlc3NQb29scygpKSB7CisgICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wt
Pm5ldHdvcmtQcm9jZXNzKCkpCisgICAgICAgICAgICBwcm9jZXNzLT5nZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YVN1bW1hcnkobV9zZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICB9Cit9CisKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2NoZWR1bGVDbGVhcklu
TWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mgc2hvdWxkR3Jh
bmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDI3MGMy
Yzc4YThjOTM0NWJmMDgxNjYyZTRjYzU5ODgxMDBkZTkwODUuLmE3NWIxYWU2ZGNiN2E0YjMzYmY3
MGZlYTI4YjNkNmMzMjBjZGNhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldl
YkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmgiCiAjaW5j
bHVkZSAiV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0Nvb2tpZS5oPgpAQCAtMTYwLDYgKzE2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjaGVkdWxl
Q29va2llQmxvY2tpbmdVcGRhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2FsbFRpbWUgbW9kaWZpZWRT
aW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91
bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCBnZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBh
cnR5RGF0YT4mJik+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29y
ZHNQcm9jZXNzaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzdWJt
aXRUZWxlbWV0cnkoKTsKICAgICB2b2lkIHNldEdyYW5kZmF0aGVyZWQoY29uc3QgVVJMJiwgYm9v
bCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNiYjgxMjlmN2FlNzMzN2Q1N2NkOTQx
MmFjODZjMTY3OGU4MDM3ODEuLjRhZGYwMWI2Yzg0Y2U5MmM5NGUzNDVjNTJlMDkxYTRmZjE2ZDcx
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtOTMyLDYgKzkzMiwxNCBAQAogCQk0NkMzOTIyOTIzMTZFQzREMDA4RUVEOUIgLyogV2Vi
UGFnZVByb3h5SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZDMzkyMjgyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIuaCAqLzsgfTsKIAkJNDZERjA2M0MxRjM5MDVGODAwMTk4MEJCIC8qIE5ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlci5oICovOyB9OwogCQk0NkY5QjI2MzIzNTI2RUYzMDA2RkU1RkEgLyogV2ViQmFja0Zv
cndhcmRDYWNoZUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVu
dHJ5LmggKi87IH07CisJCTQ5QkNBMTkyMjNBMTc3NjYwMDI4QTgzNiAvKiBBUElSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDlCQ0ExOTEyM0ExNzc2NjAwMjhBODM2IC8qIEFQSVJlc291cmNlTG9h
ZFN0YXRpc3RpY3NGaXJzdFBhcnR5LmggKi87IH07CisJCTQ5QkNBMTk1MjNBMThDRkQwMDI4QTgz
NiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUludGVybmFsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUJDQTE5MDIzQTE3NTQ5
MDAyOEE4MzYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlJbnRlcm5hbC5o
ICovOyB9OworCQk0OUJDQTE5NzIzQTE5MzBEMDAyOEE4MzYgLyogQVBJUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RoaXJkUGFydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ5QkNBMTk2MjNBMThGNjIwMDI4QTgzNiAvKiBBUElSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVGhpcmRQYXJ0eS5oICovOyB9OworCQk0OUZCRUZGRDIzOUIwMTFEMDBCRDAzMkYgLyog
X1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUZCRUZGQzIzOUIwMTFEMDBCRDAzMkYgLyog
X1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkubW0gKi87IH07CisJCTQ5RkJFRkZG
MjM5QjAxMkYwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkJFRkZF
MjM5QjAxMkYwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5t
bSAqLzsgfTsKKwkJNDlGQkYwMDAyMzlCMUY3NTAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NUaGlyZFBhcnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0OUZCRUZGQTIzOUFEOTc4MDBCRDAzMkYgLyogX1dLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RoaXJkUGFydHkuaCAqLzsgfTsKKwkJNDlGQkYwMDEyMzlCMUY4RDAwQkQwMzJGIC8q
IF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUZCRUZGQjIzOUFEQjE4MDBCRDAzMkYgLyog
X1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkuaCAqLzsgfTsKKwkJNDlGQkYwMDky
MzlGMDhFMDAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5SW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5
RkJGMDA4MjM5RjA4RTAwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQ
YXJ0eUludGVybmFsLmggKi87IH07CiAJCTRBM0NDMThCMTlCMDY0MEYwMEQxNEFFRiAvKiBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGM0ExOUFGN0IwNDAwMkVCQUI1IC8qIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggKi87IH07CiAJCTRBM0NDMThE
MTlCMDY0MTkwMEQxNEFFRiAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEYzQzE5QUY3
QjA0MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oICovOyB9Owog
CQk0QTNDQzE4RjE5QjA3QjhBMDBEMTRBRUYgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0MTBG
MzYxOUFGN0FDMzAwMkVCQUI1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzM0Miw2ICsz
MzUwLDE0IEBACiAJCTQ2REYwNjM5MUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZsaWdo
dENoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZGOUIyNjIyMzUyNkVE
MDAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDlCQ0ExOTAyM0ExNzU0OTAwMjhBODM2IC8qIF9XS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0OUJDQTE5MTIzQTE3NzY2MDAyOEE4MzYgLyogQVBJUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0ZpcnN0UGFydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0ZpcnN0UGFydHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlCQ0Ex
OTYyM0ExOEY2MjAwMjhBODM2IC8qIEFQSVJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5RkJFRkZBMjM5QUQ5NzgwMEJEMDMyRiAv
KiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBf
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0OUZCRUZGQjIzOUFEQjE4MDBCRDAzMkYgLyogX1dLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0ZpcnN0UGFydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0ZpcnN0UGFydHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlGQkVGRkMy
MzlCMDExRDAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFy
dHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5RkJFRkZFMjM5QjAxMkYwMEJE
MDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OUZCRjAwODIzOUYwOEUwMDBCRDAzMkYgLyogX1dL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlJbnRlcm5hbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUludGVybmFsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNDEwRjM1MTlBRjdBQzMwMDJFQkFCNSAvKiBXS1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0QTQxMEYzNjE5QUY3QUMzMDAyRUJBQjUgLyogV0tVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRB
NDEwRjM5MTlBRjdCMDQwMDJFQkFCNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02NjEwLDYgKzY2MjYsMTIgQEAKIAkJCQlBNTVCQTgwQzFCQTEyQkUxMDA3Q0Qz
M0QgLyogX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCAqLywKIAkJCQlBNTVC
QTgwRDFCQTEyQkUxMDA3Q0QzM0QgLyogX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xs
ZXIubW0gKi8sCiAJCQkJOTkwRTFFMDgyMzg0QTg4QjAwNDYwMkRGIC8qIF9XS1JlbW90ZVdlYklu
c3BlY3RvclZpZXdDb250cm9sbGVyUHJpdmF0ZS5oICovLAorCQkJCTQ5RkJFRkZCMjM5QURCMTgw
MEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oICovLAorCQkJ
CTQ5RkJFRkZDMjM5QjAxMUQwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmly
c3RQYXJ0eS5tbSAqLywKKwkJCQk0OUJDQTE5MDIzQTE3NTQ5MDAyOEE4MzYgLyogX1dLUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlJbnRlcm5hbC5oICovLAorCQkJCTQ5RkJFRkZBMjM5
QUQ5NzgwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5oICov
LAorCQkJCTQ5RkJFRkZFMjM5QjAxMkYwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVGhpcmRQYXJ0eS5tbSAqLywKKwkJCQk0OUZCRjAwODIzOUYwOEUwMDBCRDAzMkYgLyogX1dL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlJbnRlcm5hbC5oICovLAogCQkJCTFBMDAy
RDNGMTk2QjMyOTQwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGUuaCAqLywKIAkJCQkxQTAwMkQz
RTE5NkIzMjk0MDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlLm1tICovLAogCQkJCTFBMDAyRDQy
MTk2QjMzNzAwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oICovLApAQCAtODI3
OCw2ICs4MzAwLDggQEAKIAkJCQkxQUZERDMxNDE4OTFCNTQwMDAxNTM5NzAgLyogQVBJUG9saWN5
Q2xpZW50LmggKi8sCiAJCQkJN0NFNEQyMUQxQTQ5MTRDQTAwQzdGMTUyIC8qIEFQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5jcHAgKi8sCiAJCQkJN0NFNEQyMUUxQTQ5MTRDQTAwQzdGMTUyIC8q
IEFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oICovLAorCQkJCTQ5QkNBMTkxMjNBMTc3NjYw
MDI4QTgzNiAvKiBBUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oICovLAorCQkJ
CTQ5QkNBMTk2MjNBMThGNjIwMDI4QTgzNiAvKiBBUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhp
cmRQYXJ0eS5oICovLAogCQkJCTFBRkRFNjVGMTk1NEU5QjEwMEM0OEZGQSAvKiBBUElTZXNzaW9u
U3RhdGUuY3BwICovLAogCQkJCTFBRkRFNjYwMTk1NEU5QjEwMEM0OEZGQSAvKiBBUElTZXNzaW9u
U3RhdGUuaCAqLywKIAkJCQkxQTRENjY0NzE4QTJEOTFBMDBEODJFMjEgLyogQVBJVUlDbGllbnQu
aCAqLywKQEAgLTk2MDksNiArOTYzMywxMCBAQAogCQkJCTk5MEUxRTA5MjM4NEFBNTcwMDQ2MDJE
RiAvKiBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlclByaXZhdGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTM3NzIxNkI4MUE0RTZCRTAwMERDQTcxOCAvKiBfV0tSZW5kZXJpbmdQcm9n
cmVzc0V2ZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUY2MDRCQUExODg5RkJCODAwRUUwMzk1
IC8qIF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQ5RkJGMDAxMjM5QjFGOEQwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Rmlyc3RQYXJ0eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDlCQ0ExOTUyM0ExOENGRDAwMjhBODM2
IC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQ5RkJGMDAwMjM5QjFGNzUwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVGhpcmRQYXJ0eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDlGQkYwMDkyMzlGMDhF
MDAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5SW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTM3NjMxMUZEMUEzRkI1RjcwMDVBMkU1MSAvKiBfV0tTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc2MzExRkUxQTNG
QjYwMDAwNUEyRTUxIC8qIF9XS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlSW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBMDAyRDQ0MTk2QjMzODkwMEI5QUQ0NCAvKiBfV0tTZXNzaW9u
U3RhdGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTcwMyw2ICs5NzMxLDggQEAKIAkJCQkxQUMxMzM2
QzE4NTY1QzdBMDBGM0VDMDUgLyogQVBJUGFnZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFGREQzMTUxODkxQjU0MDAwMTUzOTcwIC8qIEFQSVBvbGljeUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0NFNEQyMjAxQTQ5MTRDQTAwQzdGMTUyIC8qIEFQSVByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDlCQ0ExOTIyM0ExNzc2NjAwMjhBODM2IC8q
IEFQSVJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0OUJDQTE5NzIzQTE5MzBEMDAyOEE4MzYgLyogQVBJUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Ro
aXJkUGFydHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2MzQ0NDU2MTJBODg1QzgwMDA2MTJEOCAv
KiBBUElTZWN1cml0eU9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGREU2NjIxOTU0RTlC
MTAwQzQ4RkZBIC8qIEFQSVNlc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0RDY2
NDgxOEEyRDkxQTAwRDgyRTIxIC8qIEFQSVVJQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTEx
NjE4LDYgKzExNjQ4LDggQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlm
aWxlcyA9ICgKIAkJCQk1Q0JENTk1QzIyODBFREY0MDAyQjIyQUEgLyogX1dLQ3VzdG9tSGVhZGVy
RmllbGRzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDlGQkVGRkQyMzlCMDExRDAwQkQwMzJGIC8q
IF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5Lm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJNDlGQkVGRkYyMzlCMDEyRjAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NU
aGlyZFBhcnR5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTlFNzE4OUEyMUY3OUQ5RTAwNTVFOTc1
IC8qIF9XS1RvdWNoRXZlbnRHZW5lcmF0b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4
NDIxMkI2QUIxMDBGNDkzRkQgLyogQWN0aXZpdHlBc3NlcnRpb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkQ5MkE3N0IyMTJCNkE3MTAwRjQ5M0ZEIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDZkNDJiODJiMWNmZDU4Y2Y3OTIzMjI4ZDFkYWUyY2IxYzcwNGM3OGIuLjM2YjM4ZTdj
NjQzOTFmZmZlY2YzNmVlMTRhZjQ0NTZlNWFmOTY3MGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxOS0xMi0xMiAg
S2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBDcmVh
dGUgV2ViS2l0IEFQSSBjYWxscyBmb3IgSVRQIERhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDkzMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NTc2MzI3NTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4gCisKKyAg
ICAgICAgQWRkZWQgYSB0ZXN0IHRvIGNoZWNrIHRoYXQgdGhlIElUUCBkYXRhIHN1bW1hcnkgd2Fz
IGJlaW5nIHByb3Blcmx5CisgICAgICAgIGFnZ3JlZ2F0ZWQgYW5kIHNlbnQgdG8gdGhlIFVJUHJv
Y2VzcywgYW5kIHRvIG1ha2Ugc3VyZSB0aGUgQVBJIHdvcmtzCisgICAgICAgIGFzIGV4cGVjdGVk
LiBBZGRlZCBpbnRlcmZhY2UgZGVjbGFyYXRpb25zIHRvIHRoZSBmaWxlIHRvIGFsbG93IGZvcgor
ICAgICAgICB1c2Ugb2YgdGhlIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5IGFu
ZAorICAgICAgICBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eSBjbGFzc2VzIHdp
dGhvdXQgaGF2aW5nCisgICAgICAgIHRvIGltcG9ydCB0aGUgaGVhZGVyIGZpbGVzLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLm1tOgorICAgICAgICAoVEVTVCk6CisKIDIwMTktMTItMTMgIERldmluIFJvdXNzbyAgPGRy
b3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFByZWZpeCBDU1Mgc2VsZWN0b3JzIHdpdGggYWxs
IGFwcGxpY2FibGUgQ1NTIGdyb3VwaW5ncyB3aGVuIGdlbmVyYXRpbmcgYSBDaGFuZ2VMb2cKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbQppbmRleCA0ZmRjZGI1ZGI0ZjBmZjIwMmFjY2FiYzk4
ZDVkMDJjZjViODllMGFjLi5kNjg1MzM5ZmQ5OGYzNDJmMjQ2NjJjNzNkMDJlZTVjYjQ0NmM4OTA5
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tCkBAIC00MCw2ICs0MCwxNiBAQAogCiBz
dGF0aWMgYm9vbCBmaW5pc2hlZE5hdmlnYXRpb24gPSBmYWxzZTsKIAorQGludGVyZmFjZSBfV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eSA6IE5TT2JqZWN0CitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpmaXJzdFBhcnR5RG9tYWluOworQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIHRoaXJkUGFydHlTdG9yYWdlQWNjZXNzR3JhbnRl
ZDsKK0BlbmQKKworQGludGVyZmFjZSBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0
eSA6IE5TT2JqZWN0CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICp0
aGlyZFBhcnR5RG9tYWluOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5
PF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5ICo+ICp1bmRlckZpcnN0UGFydGll
czsKK0BlbmQKKwogQGludGVyZmFjZSBEaXNhYmxlSVRQRHVyaW5nTmF2aWdhdGlvbkRlbGVnYXRl
IDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgogQGVuZAogCkBAIC02NTAsMyArNjYw
LDE5NiBAQCBURVNUKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsIEZsdXNoT2JzZXJ2ZXJXaGVuV2Vi
UGFnZUlzQ2xvc2VkQnlKYXZhU2NyaXB0KQogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lRmxhZyk7CiB9CisKK1RFU1QoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgR2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFTdW1tYXJ5KQoreworICAgIGF1dG8gKnNoYXJlZFByb2Nlc3NQ
b29sID0gW1dLUHJvY2Vzc1Bvb2wgX3NoYXJlZFByb2Nlc3NQb29sXTsKKyAgICBhdXRvICpkYXRh
U3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdOworCisgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDogc2hhcmVkUHJvY2Vz
c1Bvb2xdOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IGRhdGFT
dG9yZTsKKworICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gd2ViVmlldzIgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gd2ViVmlldzMgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgW3dlYlZp
ZXcxIGxvYWRIVE1MU3RyaW5nOkAiV2ViS2l0IFRlc3QiIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdXTsKKyAgICBbd2ViVmlldzEgX3Rlc3Rfd2FpdEZv
ckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgIFt3ZWJWaWV3MiBsb2FkSFRNTFN0cmluZzpAIldl
YktpdCBUZXN0IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdDIu
b3JnIl1dOworICAgIFt3ZWJWaWV3MiBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07
CisgICAgW3dlYlZpZXczIGxvYWRIVE1MU3RyaW5nOkAiV2ViS2l0IFRlc3QiIGJhc2VVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0My5vcmciXV07CisgICAgW3dlYlZpZXcz
IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIFtkYXRhU3RvcmUgX3Nl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOllFU107CisKKyAgICBzdGF0aWMgYm9vbCBk
b25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX2NsZWFyUmVzb3VyY2VMb2FkU3RhdGlz
dGljczpeKHZvaWQpIHsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAg
c3RhdGljIGJvb2wgc3RhdGlzdGljc1VwZGF0ZWQgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9z
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOl4oV0tXZWJzaXRlRGF0YVN0
b3JlICosIE5TU3RyaW5nICptZXNzYWdlKSB7CisgICAgICAgIGlmICghW21lc3NhZ2UgaXNFcXVh
bFRvU3RyaW5nOkAiU3RhdGlzdGljcyBVcGRhdGVkIl0pCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIHN0YXRpc3RpY3NVcGRhdGVkID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcpOworCisgICAgLy8gU2VlZCB0ZXN0IGRhdGEgaW4g
dGhlIHdlYiBwcm9jZXNzJyBvYnNlcnZlci4KKworICAgIC8vIGV2aWwxCisgICAgZG9uZUZsYWcg
PSBmYWxzZTsKKyAgICBbc2hhcmVkUHJvY2Vzc1Bvb2wgX3NlZWRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRm9yVGVzdGluZ1dpdGhGaXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDov
L3dlYmtpdC5vcmciXSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2
aWwxLmNvbSJdIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uOk5PIGNvbXBsZXRpb25IYW5kbGVy
OiBeKCkgeworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAg
IFtzaGFyZWRQcm9jZXNzUG9vbCBfc2VlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JUZXN0aW5n
V2l0aEZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Mi5vcmci
XSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwxLmNvbSJdIHNo
b3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uOk5PIGNvbXBsZXRpb25IYW5kbGVyOiBeKCkgeworICAg
ICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lRmxhZyk7CisKKworICAgIC8vIGV2aWwyCisgICAgZG9uZUZsYWcgPSBmYWxzZTsK
KyAgICBbc2hhcmVkUHJvY2Vzc1Bvb2wgX3NlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVz
dGluZ1dpdGhGaXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5v
cmciXSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwyLmNvbSJd
IHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uOk5PIGNvbXBsZXRpb25IYW5kbGVyOiBeKCkgewor
ICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lRmxhZyk7CisKKworICAgIC8vIGV2aWwzCisgICAgZG9uZUZsYWcgPSBmYWxz
ZTsKKyAgICBbc2hhcmVkUHJvY2Vzc1Bvb2wgX3NlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9y
VGVzdGluZ1dpdGhGaXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtp
dC5vcmciXSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwzLmNv
bSJdIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uOk5PIGNvbXBsZXRpb25IYW5kbGVyOiBeKCkg
eworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lRmxhZyk7CisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbc2hhcmVk
UHJvY2Vzc1Bvb2wgX3NlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZ1dpdGhGaXJz
dFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdDIub3JnIl0gdGhpcmRQ
YXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsMy5jb20iXSBzaG91bGRTY2hl
ZHVsZU5vdGlmaWNhdGlvbjpOTyBjb21wbGV0aW9uSGFuZGxlcjogXigpIHsKKyAgICAgICAgZG9u
ZUZsYWcgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZUZsYWcpOworICAgIGRvbmVGbGFnID0gZmFsc2U7CisgICAgW3NoYXJlZFByb2Nlc3NQb29sIF9z
ZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmdXaXRoRmlyc3RQYXJ0eTpbTlNVUkwg
VVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQzLm9yZyJdIHRoaXJkUGFydHk6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJodHRwOi8vZXZpbDMuY29tIl0gc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRp
b246Tk8gY29tcGxldGlvbkhhbmRsZXI6IF4oKSB7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsK
KyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworICAg
IHN0YXRpc3RpY3NVcGRhdGVkID0gZmFsc2U7CisgICAgW3dlYlZpZXcxIGxvYWRIVE1MU3RyaW5n
OkAiPGJvZHk+PHNjcmlwdD5jbG9zZSgpOzwvc2NyaXB0PjwvYm9keT4iIGJhc2VVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdXTsKKyAgICBbd2ViVmlldzIgbG9h
ZEhUTUxTdHJpbmc6QCI8Ym9keT48c2NyaXB0PmNsb3NlKCk7PC9zY3JpcHQ+PC9ib2R5PiIgYmFz
ZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQyLm9yZyJdXTsKKyAgICBb
d2ViVmlldzMgbG9hZEhUTUxTdHJpbmc6QCI8Ym9keT48c2NyaXB0PmNsb3NlKCk7PC9zY3JpcHQ+
PC9ib2R5PiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQzLm9y
ZyJdXTsKKworICAgIC8vIFdhaXQgZm9yIHRoZSBzdGF0aXN0aWNzIHRvIGJlIHVwZGF0ZWQgaW4g
dGhlIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnN0YXRp
c3RpY3NVcGRhdGVkKTsKKworICAgIC8vIENoZWNrIHRoYXQgdGhlIHRoaXJkLXBhcnR5IGV2aWwx
IGlzIG5vdyByZWdpc3RlcmVkIGFzIHN1YnJlc291cmNlLgorICAgIGRvbmVGbGFnID0gZmFsc2U7
CisgICAgW2RhdGFTdG9yZSBfaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyRmlyc3RQYXJ0
eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnIl0gdGhpcmRQYXJ0eTpb
TlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsMS5jb20iXSBjb21wbGV0aW9uSGFuZGxl
cjogXihCT09MIGlzUmVnaXN0ZXJlZCkgeworICAgICAgICBFWFBFQ1RfVFJVRShpc1JlZ2lzdGVy
ZWQpOworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0
YVN0b3JlIF9pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXJGaXJzdFBhcnR5OltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdDIub3JnIl0gdGhpcmRQYXJ0eTpbTlNVUkwgVVJM
V2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsMS5jb20iXSBjb21wbGV0aW9uSGFuZGxlcjogXihCT09M
IGlzUmVnaXN0ZXJlZCkgeworICAgICAgICBFWFBFQ1RfVFJVRShpc1JlZ2lzdGVyZWQpOworICAg
ICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lRmxhZyk7CisKKworICAgIC8vIENoZWNrIHRoYXQgdGhlIHRoaXJkLXBhcnR5IGV2
aWwyIGlzIG5vdyByZWdpc3RlcmVkIGFzIHN1YnJlc291cmNlLgorICAgIGRvbmVGbGFnID0gZmFs
c2U7CisgICAgW2RhdGFTdG9yZSBfaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyRmlyc3RQ
YXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnIl0gdGhpcmRQYXJ0
eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsMi5jb20iXSBjb21wbGV0aW9uSGFu
ZGxlcjogXihCT09MIGlzUmVnaXN0ZXJlZCkgeworICAgICAgICBFWFBFQ1RfVFJVRShpc1JlZ2lz
dGVyZWQpOworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKworICAgIC8vIENoZWNrIHRoYXQgdGhlIHRo
aXJkLXBhcnR5IGV2aWwzIGlzIG5vdyByZWdpc3RlcmVkIGFzIHN1YnJlc291cmNlLgorICAgIGRv
bmVGbGFnID0gZmFsc2U7CisgICAgW2RhdGFTdG9yZSBfaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJj
ZVVuZGVyRmlyc3RQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3Jn
Il0gdGhpcmRQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsMy5jb20iXSBj
b21wbGV0aW9uSGFuZGxlcjogXihCT09MIGlzUmVnaXN0ZXJlZCkgeworICAgICAgICBFWFBFQ1Rf
VFJVRShpc1JlZ2lzdGVyZWQpOworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisgICAgZG9uZUZsYWcgPSBm
YWxzZTsKKyAgICBbZGF0YVN0b3JlIF9pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXJGaXJz
dFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdDIub3JnIl0gdGhpcmRQ
YXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsMy5jb20iXSBjb21wbGV0aW9u
SGFuZGxlcjogXihCT09MIGlzUmVnaXN0ZXJlZCkgeworICAgICAgICBFWFBFQ1RfVFJVRShpc1Jl
Z2lzdGVyZWQpOworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAg
ICBbZGF0YVN0b3JlIF9pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXJGaXJzdFBhcnR5OltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdDMub3JnIl0gdGhpcmRQYXJ0eTpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsMy5jb20iXSBjb21wbGV0aW9uSGFuZGxlcjog
XihCT09MIGlzUmVnaXN0ZXJlZCkgeworICAgICAgICBFWFBFQ1RfVFJVRShpc1JlZ2lzdGVyZWQp
OworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKworICAgIC8vIENvbGxlY3QgdGhlIElUUCBkYXRhIHN1
bW1hcnkgd2hpY2ggc2hvdWxkIGluY2x1ZGUgYWxsIHRoaXJkIHBhcnRpZXMgaW4gdGhlCisgICAg
Ly8gb3JkZXI6IFtldmlsMy5jb20sIGV2aWwxLmNvbSwgZXZpbDIuY29tXSBzb3J0ZWQgYnkgbnVt
YmVyIG9mIGZpcnN0IHBhcnRpZXMKKyAgICAvLyBpdCBhcHBlYXJzIHVuZGVyIG9yIHJlZGlyZWN0
cyB0bworICAgIGRvbmVGbGFnID0gZmFsc2U7CisgICAgW2RhdGFTdG9yZSBfZ2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFTdW1tYXJ5Ol52b2lkKE5TQXJyYXk8X1dLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RoaXJkUGFydHkgKj4gKnRoaXJkUGFydHlEYXRhKQorICAgIHsKKyAgICAgICAgTlNF
bnVtZXJhdG9yICp0aGlyZFBhcnR5RG9tYWlucyA9IFt0aGlyZFBhcnR5RGF0YSBvYmplY3RFbnVt
ZXJhdG9yXTsKKworICAgICAgICAvLyBldmlsMworICAgICAgICBfV0tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVGhpcmRQYXJ0eSAqZXZpbDNUaGlyZFBhcnR5ID0gW3RoaXJkUGFydHlEb21haW5zIG5l
eHRPYmplY3RdOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXZpbDNUaGlyZFBhcnR5LnRoaXJk
UGFydHlEb21haW4sIEAiZXZpbDMuY29tIik7CisKKyAgICAgICAgTlNFbnVtZXJhdG9yICpldmls
M0VudW1lcmF0b3IgPSBbZXZpbDNUaGlyZFBhcnR5LnVuZGVyRmlyc3RQYXJ0aWVzIG9iamVjdEVu
dW1lcmF0b3JdOworICAgICAgICBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eSAq
ZXZpbDNGaXJzdFBhcnR5MSA9IFtldmlsM0VudW1lcmF0b3IgbmV4dE9iamVjdF07CisgICAgICAg
IF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5ICpldmlsM0ZpcnN0UGFydHkyID0g
W2V2aWwzRW51bWVyYXRvciBuZXh0T2JqZWN0XTsKKyAgICAgICAgX1dLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0ZpcnN0UGFydHkgKmV2aWwzRmlyc3RQYXJ0eTMgPSBbZXZpbDNFbnVtZXJhdG9yIG5l
eHRPYmplY3RdOworCisgICAgICAgIEFTU0VSVF9UUlVFKGV2aWwzRmlyc3RQYXJ0eTEgIT0gbmls
KTsKKyAgICAgICAgQVNTRVJUX1RSVUUoZXZpbDNGaXJzdFBhcnR5MiAhPSBuaWwpOworICAgICAg
ICBBU1NFUlRfVFJVRShldmlsM0ZpcnN0UGFydHkzICE9IG5pbCk7CisKKyAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKGV2aWwzRmlyc3RQYXJ0eTEuZmlyc3RQYXJ0eURvbWFpbiwgQCJ3ZWJraXQyLm9y
ZyIpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXZpbDNGaXJzdFBhcnR5Mi5maXJzdFBhcnR5
RG9tYWluLCBAIndlYmtpdDMub3JnIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShldmlsM0Zp
cnN0UGFydHkzLmZpcnN0UGFydHlEb21haW4sIEAid2Via2l0Lm9yZyIpOworCisgICAgICAgIEVY
UEVDVF9GQUxTRShldmlsM0ZpcnN0UGFydHkxLnRoaXJkUGFydHlTdG9yYWdlQWNjZXNzR3JhbnRl
ZCk7CisgICAgICAgIEVYUEVDVF9GQUxTRShldmlsM0ZpcnN0UGFydHkyLnRoaXJkUGFydHlTdG9y
YWdlQWNjZXNzR3JhbnRlZCk7CisgICAgICAgIEVYUEVDVF9GQUxTRShldmlsM0ZpcnN0UGFydHkz
LnRoaXJkUGFydHlTdG9yYWdlQWNjZXNzR3JhbnRlZCk7CisKKyAgICAgICAgLy8gZXZpbDEKKyAg
ICAgICAgX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkgKmV2aWwxVGhpcmRQYXJ0
eSA9IFt0aGlyZFBhcnR5RG9tYWlucyBuZXh0T2JqZWN0XTsKKyAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKGV2aWwxVGhpcmRQYXJ0eS50aGlyZFBhcnR5RG9tYWluLCBAImV2aWwxLmNvbSIpOworCisg
ICAgICAgIE5TRW51bWVyYXRvciAqZXZpbDFFbnVtZXJhdG9yID0gW2V2aWwxVGhpcmRQYXJ0eS51
bmRlckZpcnN0UGFydGllcyBvYmplY3RFbnVtZXJhdG9yXTsKKyAgICAgICAgX1dLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0ZpcnN0UGFydHkgKmV2aWwxRmlyc3RQYXJ0eTE9IFtldmlsMUVudW1lcmF0
b3IgbmV4dE9iamVjdF07CisgICAgICAgIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBh
cnR5ICpldmlsMUZpcnN0UGFydHkyID0gW2V2aWwxRW51bWVyYXRvciBuZXh0T2JqZWN0XTsKKwor
ICAgICAgICBBU1NFUlRfVFJVRShldmlsMUZpcnN0UGFydHkxICE9IG5pbCk7CisgICAgICAgIEFT
U0VSVF9UUlVFKGV2aWwxRmlyc3RQYXJ0eTIgIT0gbmlsKTsKKworICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoZXZpbDFGaXJzdFBhcnR5MS5maXJzdFBhcnR5RG9tYWluLCBAIndlYmtpdDIub3JnIik7
CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShldmlsMUZpcnN0UGFydHkyLmZpcnN0UGFydHlEb21h
aW4sIEAid2Via2l0Lm9yZyIpOworCisgICAgICAgIEVYUEVDVF9GQUxTRShldmlsMUZpcnN0UGFy
dHkxLnRoaXJkUGFydHlTdG9yYWdlQWNjZXNzR3JhbnRlZCk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShldmlsMUZpcnN0UGFydHkyLnRoaXJkUGFydHlTdG9yYWdlQWNjZXNzR3JhbnRlZCk7CisKKyAg
ICAgICAgLy8gZXZpbDIKKyAgICAgICAgX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFy
dHkgKmV2aWwyVGhpcmRQYXJ0eSA9IFt0aGlyZFBhcnR5RG9tYWlucyBuZXh0T2JqZWN0XTsKKyAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKGV2aWwyVGhpcmRQYXJ0eS50aGlyZFBhcnR5RG9tYWluLCBA
ImV2aWwyLmNvbSIpOworCisgICAgICAgIE5TRW51bWVyYXRvciAqZXZpbDJFbnVtZXJhdG9yID0g
W2V2aWwyVGhpcmRQYXJ0eS51bmRlckZpcnN0UGFydGllcyBvYmplY3RFbnVtZXJhdG9yXTsKKyAg
ICAgICAgX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkgKmV2aWwyRmlyc3RQYXJ0
eTEgPSBbZXZpbDJFbnVtZXJhdG9yIG5leHRPYmplY3RdOworCisgICAgICAgIEFTU0VSVF9UUlVF
KGV2aWwyRmlyc3RQYXJ0eTEgIT0gbmlsKTsKKworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXZp
bDJGaXJzdFBhcnR5MS5maXJzdFBhcnR5RG9tYWluLCBAIndlYmtpdC5vcmciKTsKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKGV2aWwyRmlyc3RQYXJ0eTEudGhpcmRQYXJ0eVN0b3JhZ2VBY2Nlc3NHcmFu
dGVkKTsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>